{"version":3,"file":"component---src-templates-search-page-template-search-page-template-js-9c40112057ed225dc20c.js","mappings":"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","sources":["webpack://bluewave-energy/./node_modules/axios/index.js","webpack://bluewave-energy/./node_modules/axios/lib/adapters/xhr.js","webpack://bluewave-energy/./node_modules/axios/lib/axios.js","webpack://bluewave-energy/./node_modules/axios/lib/cancel/Cancel.js","webpack://bluewave-energy/./node_modules/axios/lib/cancel/CancelToken.js","webpack://bluewave-energy/./node_modules/axios/lib/cancel/isCancel.js","webpack://bluewave-energy/./node_modules/axios/lib/core/Axios.js","webpack://bluewave-energy/./node_modules/axios/lib/core/InterceptorManager.js","webpack://bluewave-energy/./node_modules/axios/lib/core/buildFullPath.js","webpack://bluewave-energy/./node_modules/axios/lib/core/createError.js","webpack://bluewave-energy/./node_modules/axios/lib/core/dispatchRequest.js","webpack://bluewave-energy/./node_modules/axios/lib/core/enhanceError.js","webpack://bluewave-energy/./node_modules/axios/lib/core/mergeConfig.js","webpack://bluewave-energy/./node_modules/axios/lib/core/settle.js","webpack://bluewave-energy/./node_modules/axios/lib/core/transformData.js","webpack://bluewave-energy/./node_modules/axios/lib/defaults.js","webpack://bluewave-energy/./node_modules/axios/lib/helpers/bind.js","webpack://bluewave-energy/./node_modules/axios/lib/helpers/buildURL.js","webpack://bluewave-energy/./node_modules/axios/lib/helpers/combineURLs.js","webpack://bluewave-energy/./node_modules/axios/lib/helpers/cookies.js","webpack://bluewave-energy/./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack://bluewave-energy/./node_modules/axios/lib/helpers/isAxiosError.js","webpack://bluewave-energy/./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack://bluewave-energy/./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack://bluewave-energy/./node_modules/axios/lib/helpers/parseHeaders.js","webpack://bluewave-energy/./node_modules/axios/lib/helpers/spread.js","webpack://bluewave-energy/./node_modules/axios/lib/helpers/validator.js","webpack://bluewave-energy/./node_modules/axios/lib/utils.js","webpack://bluewave-energy/./node_modules/lunr/lunr.js","webpack://bluewave-energy/./node_modules/paginator/index.js","webpack://bluewave-energy/./node_modules/react-highlight-words/dist/main.js","webpack://bluewave-energy/./node_modules/react-js-pagination/dist/Page.js","webpack://bluewave-energy/./node_modules/react-js-pagination/dist/Pagination.js","webpack://bluewave-energy/./src/templates/searchPageTemplate/searchPageTemplateStyle.js","webpack://bluewave-energy/./src/api/apiConfig.js","webpack://bluewave-energy/./src/api/searchApi.js","webpack://bluewave-energy/./src/templates/searchPageTemplate/SearchPage.js","webpack://bluewave-energy/./src/templates/searchPageTemplate/searchPageTemplate.js","webpack://bluewave-energy/./src/images/icon-view-locations.gif"],"sourcesContent":["module.exports = require('./lib/axios');","'use strict';\n\nvar utils = require('./../utils');\nvar settle = require('./../core/settle');\nvar cookies = require('./../helpers/cookies');\nvar buildURL = require('./../helpers/buildURL');\nvar buildFullPath = require('../core/buildFullPath');\nvar parseHeaders = require('./../helpers/parseHeaders');\nvar isURLSameOrigin = require('./../helpers/isURLSameOrigin');\nvar createError = require('../core/createError');\nmodule.exports = function xhrAdapter(config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n var requestData = config.data;\n var requestHeaders = config.headers;\n var responseType = config.responseType;\n if (utils.isFormData(requestData)) {\n delete requestHeaders['Content-Type']; // Let the browser set it\n }\n\n var request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n var username = config.auth.username || '';\n var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);\n }\n var fullPath = buildFullPath(config.baseURL, config.url);\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;\n var responseData = !responseType || responseType === 'text' || responseType === 'json' ? request.responseText : request.response;\n var response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config: config,\n request: request\n };\n settle(resolve, reject, response);\n\n // Clean up request\n request = null;\n }\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n reject(createError('Request aborted', config, 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(createError('Network Error', config, null, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n var timeoutErrorMessage = 'timeout of ' + config.timeout + 'ms exceeded';\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(timeoutErrorMessage, config, config.transitional && config.transitional.clarifyTimeoutError ? 'ETIMEDOUT' : 'ECONNABORTED', request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (utils.isStandardBrowserEnv()) {\n // Add xsrf header\n var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ? cookies.read(config.xsrfCookieName) : undefined;\n if (xsrfValue) {\n requestHeaders[config.xsrfHeaderName] = xsrfValue;\n }\n }\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders, function setRequestHeader(val, key) {\n if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {\n // Remove Content-Type if data is undefined\n delete requestHeaders[key];\n } else {\n // Otherwise add header to the request\n request.setRequestHeader(key, val);\n }\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', config.onDownloadProgress);\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', config.onUploadProgress);\n }\n if (config.cancelToken) {\n // Handle cancellation\n config.cancelToken.promise.then(function onCanceled(cancel) {\n if (!request) {\n return;\n }\n request.abort();\n reject(cancel);\n // Clean up request\n request = null;\n });\n }\n if (!requestData) {\n requestData = null;\n }\n\n // Send the request\n request.send(requestData);\n });\n};","'use strict';\n\nvar utils = require('./utils');\nvar bind = require('./helpers/bind');\nvar Axios = require('./core/Axios');\nvar mergeConfig = require('./core/mergeConfig');\nvar defaults = require('./defaults');\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n * @return {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n var context = new Axios(defaultConfig);\n var instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context);\n\n // Copy context to instance\n utils.extend(instance, context);\n return instance;\n}\n\n// Create the default instance to be exported\nvar axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Factory for creating new instances\naxios.create = function create(instanceConfig) {\n return createInstance(mergeConfig(axios.defaults, instanceConfig));\n};\n\n// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\naxios.spread = require('./helpers/spread');\n\n// Expose isAxiosError\naxios.isAxiosError = require('./helpers/isAxiosError');\nmodule.exports = axios;\n\n// Allow use of default import syntax in TypeScript\nmodule.exports.default = axios;","'use strict';\n\n/**\n * A `Cancel` is an object that is thrown when an operation is canceled.\n *\n * @class\n * @param {string=} message The message.\n */\nfunction Cancel(message) {\n this.message = message;\n}\nCancel.prototype.toString = function toString() {\n return 'Cancel' + (this.message ? ': ' + this.message : '');\n};\nCancel.prototype.__CANCEL__ = true;\nmodule.exports = Cancel;","'use strict';\n\nvar Cancel = require('./Cancel');\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @class\n * @param {Function} executor The executor function.\n */\nfunction CancelToken(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n var resolvePromise;\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n var token = this;\n executor(function cancel(message) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n token.reason = new Cancel(message);\n resolvePromise(token.reason);\n });\n}\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nCancelToken.prototype.throwIfRequested = function throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n};\n\n/**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\nCancelToken.source = function source() {\n var cancel;\n var token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token: token,\n cancel: cancel\n };\n};\nmodule.exports = CancelToken;","'use strict';\n\nmodule.exports = function isCancel(value) {\n return !!(value && value.__CANCEL__);\n};","'use strict';\n\nvar utils = require('./../utils');\nvar buildURL = require('../helpers/buildURL');\nvar InterceptorManager = require('./InterceptorManager');\nvar dispatchRequest = require('./dispatchRequest');\nvar mergeConfig = require('./mergeConfig');\nvar validator = require('../helpers/validator');\nvar validators = validator.validators;\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n */\nfunction Axios(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n}\n\n/**\n * Dispatch a request\n *\n * @param {Object} config The config specific for this request (merged with this.defaults)\n */\nAxios.prototype.request = function request(config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof config === 'string') {\n config = arguments[1] || {};\n config.url = arguments[0];\n } else {\n config = config || {};\n }\n config = mergeConfig(this.defaults, config);\n\n // Set config.method\n if (config.method) {\n config.method = config.method.toLowerCase();\n } else if (this.defaults.method) {\n config.method = this.defaults.method.toLowerCase();\n } else {\n config.method = 'get';\n }\n var transitional = config.transitional;\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n forcedJSONParsing: validators.transitional(validators.boolean, '1.0.0'),\n clarifyTimeoutError: validators.transitional(validators.boolean, '1.0.0')\n }, false);\n }\n\n // filter out skipped interceptors\n var requestInterceptorChain = [];\n var synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n var responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n var promise;\n if (!synchronousRequestInterceptors) {\n var chain = [dispatchRequest, undefined];\n Array.prototype.unshift.apply(chain, requestInterceptorChain);\n chain = chain.concat(responseInterceptorChain);\n promise = Promise.resolve(config);\n while (chain.length) {\n promise = promise.then(chain.shift(), chain.shift());\n }\n return promise;\n }\n var newConfig = config;\n while (requestInterceptorChain.length) {\n var onFulfilled = requestInterceptorChain.shift();\n var onRejected = requestInterceptorChain.shift();\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected(error);\n break;\n }\n }\n try {\n promise = dispatchRequest(newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n while (responseInterceptorChain.length) {\n promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());\n }\n return promise;\n};\nAxios.prototype.getUri = function getUri(config) {\n config = mergeConfig(this.defaults, config);\n return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\\?/, '');\n};\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function (url, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: (config || {}).data\n }));\n };\n});\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function (url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method: method,\n url: url,\n data: data\n }));\n };\n});\nmodule.exports = Axios;","'use strict';\n\nvar utils = require('./../utils');\nfunction InterceptorManager() {\n this.handlers = [];\n}\n\n/**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\nInterceptorManager.prototype.use = function use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled: fulfilled,\n rejected: rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n};\n\n/**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n */\nInterceptorManager.prototype.eject = function eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n};\n\n/**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n */\nInterceptorManager.prototype.forEach = function forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n};\nmodule.exports = InterceptorManager;","'use strict';\n\nvar isAbsoluteURL = require('../helpers/isAbsoluteURL');\nvar combineURLs = require('../helpers/combineURLs');\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n * @returns {string} The combined full path\n */\nmodule.exports = function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n};","'use strict';\n\nvar enhanceError = require('./enhanceError');\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The created error.\n */\nmodule.exports = function createError(message, config, code, request, response) {\n var error = new Error(message);\n return enhanceError(error, config, code, request, response);\n};","'use strict';\n\nvar utils = require('./../utils');\nvar transformData = require('./transformData');\nvar isCancel = require('../cancel/isCancel');\nvar defaults = require('../defaults');\n\n/**\n * Throws a `Cancel` if cancellation has been requested.\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n * @returns {Promise} The Promise to be fulfilled\n */\nmodule.exports = function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n // Ensure headers exist\n config.headers = config.headers || {};\n\n // Transform request data\n config.data = transformData.call(config, config.data, config.headers, config.transformRequest);\n\n // Flatten headers\n config.headers = utils.merge(config.headers.common || {}, config.headers[config.method] || {}, config.headers);\n utils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch', 'common'], function cleanHeaderConfig(method) {\n delete config.headers[method];\n });\n var adapter = config.adapter || defaults.adapter;\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(config, response.data, response.headers, config.transformResponse);\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(config, reason.response.data, reason.response.headers, config.transformResponse);\n }\n }\n return Promise.reject(reason);\n });\n};","'use strict';\n\n/**\n * Update an Error with the specified config, error code, and response.\n *\n * @param {Error} error The error to update.\n * @param {Object} config The config.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n * @returns {Error} The error.\n */\nmodule.exports = function enhanceError(error, config, code, request, response) {\n error.config = config;\n if (code) {\n error.code = code;\n }\n error.request = request;\n error.response = response;\n error.isAxiosError = true;\n error.toJSON = function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: this.config,\n code: this.code\n };\n };\n return error;\n};","'use strict';\n\nvar utils = require('../utils');\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n * @returns {Object} New object resulting from merging config2 to config1\n */\nmodule.exports = function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n var config = {};\n var valueFromConfig2Keys = ['url', 'method', 'data'];\n var mergeDeepPropertiesKeys = ['headers', 'auth', 'proxy', 'params'];\n var defaultToConfig2Keys = ['baseURL', 'transformRequest', 'transformResponse', 'paramsSerializer', 'timeout', 'timeoutMessage', 'withCredentials', 'adapter', 'responseType', 'xsrfCookieName', 'xsrfHeaderName', 'onUploadProgress', 'onDownloadProgress', 'decompress', 'maxContentLength', 'maxBodyLength', 'maxRedirects', 'transport', 'httpAgent', 'httpsAgent', 'cancelToken', 'socketPath', 'responseEncoding'];\n var directMergeKeys = ['validateStatus'];\n function getMergedValue(target, source) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge(target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n }\n utils.forEach(valueFromConfig2Keys, function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n }\n });\n utils.forEach(mergeDeepPropertiesKeys, mergeDeepProperties);\n utils.forEach(defaultToConfig2Keys, function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n config[prop] = getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n utils.forEach(directMergeKeys, function merge(prop) {\n if (prop in config2) {\n config[prop] = getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n config[prop] = getMergedValue(undefined, config1[prop]);\n }\n });\n var axiosKeys = valueFromConfig2Keys.concat(mergeDeepPropertiesKeys).concat(defaultToConfig2Keys).concat(directMergeKeys);\n var otherKeys = Object.keys(config1).concat(Object.keys(config2)).filter(function filterAxiosKeys(key) {\n return axiosKeys.indexOf(key) === -1;\n });\n utils.forEach(otherKeys, mergeDeepProperties);\n return config;\n};","'use strict';\n\nvar createError = require('./createError');\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n */\nmodule.exports = function settle(resolve, reject, response) {\n var validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(createError('Request failed with status code ' + response.status, response.config, null, response.request, response));\n }\n};","'use strict';\n\nvar utils = require('./../utils');\nvar defaults = require('./../defaults');\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Object|String} data The data to be transformed\n * @param {Array} headers The headers for the request or response\n * @param {Array|Function} fns A single function or Array of functions\n * @returns {*} The resulting transformed data\n */\nmodule.exports = function transformData(data, headers, fns) {\n var context = this || defaults;\n /*eslint no-param-reassign:0*/\n utils.forEach(fns, function transform(fn) {\n data = fn.call(context, data, headers);\n });\n return data;\n};","'use strict';\n\nvar utils = require('./utils');\nvar normalizeHeaderName = require('./helpers/normalizeHeaderName');\nvar enhanceError = require('./core/enhanceError');\nvar DEFAULT_CONTENT_TYPE = {\n 'Content-Type': 'application/x-www-form-urlencoded'\n};\nfunction setContentTypeIfUnset(headers, value) {\n if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {\n headers['Content-Type'] = value;\n }\n}\nfunction getDefaultAdapter() {\n var adapter;\n if (typeof XMLHttpRequest !== 'undefined') {\n // For browsers use XHR adapter\n adapter = require('./adapters/xhr');\n } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n // For node use HTTP adapter\n adapter = require('./adapters/http');\n }\n return adapter;\n}\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n return (encoder || JSON.stringify)(rawValue);\n}\nvar defaults = {\n transitional: {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n },\n adapter: getDefaultAdapter(),\n transformRequest: [function transformRequest(data, headers) {\n normalizeHeaderName(headers, 'Accept');\n normalizeHeaderName(headers, 'Content-Type');\n if (utils.isFormData(data) || utils.isArrayBuffer(data) || utils.isBuffer(data) || utils.isStream(data) || utils.isFile(data) || utils.isBlob(data)) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');\n return data.toString();\n }\n if (utils.isObject(data) || headers && headers['Content-Type'] === 'application/json') {\n setContentTypeIfUnset(headers, 'application/json');\n return stringifySafely(data);\n }\n return data;\n }],\n transformResponse: [function transformResponse(data) {\n var transitional = this.transitional;\n var silentJSONParsing = transitional && transitional.silentJSONParsing;\n var forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';\n if (strictJSONParsing || forcedJSONParsing && utils.isString(data) && data.length) {\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw enhanceError(e, this, 'E_JSON_PARSE');\n }\n throw e;\n }\n }\n }\n return data;\n }],\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n maxContentLength: -1,\n maxBodyLength: -1,\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n }\n};\ndefaults.headers = {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n};\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\nmodule.exports = defaults;","'use strict';\n\nmodule.exports = function bind(fn, thisArg) {\n return function wrap() {\n var args = new Array(arguments.length);\n for (var i = 0; i < args.length; i++) {\n args[i] = arguments[i];\n }\n return fn.apply(thisArg, args);\n };\n};","'use strict';\n\nvar utils = require('./../utils');\nfunction encode(val) {\n return encodeURIComponent(val).replace(/%3A/gi, ':').replace(/%24/g, '$').replace(/%2C/gi, ',').replace(/%20/g, '+').replace(/%5B/gi, '[').replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @returns {string} The formatted url\n */\nmodule.exports = function buildURL(url, params, paramsSerializer) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n var serializedParams;\n if (paramsSerializer) {\n serializedParams = paramsSerializer(params);\n } else if (utils.isURLSearchParams(params)) {\n serializedParams = params.toString();\n } else {\n var parts = [];\n utils.forEach(params, function serialize(val, key) {\n if (val === null || typeof val === 'undefined') {\n return;\n }\n if (utils.isArray(val)) {\n key = key + '[]';\n } else {\n val = [val];\n }\n utils.forEach(val, function parseValue(v) {\n if (utils.isDate(v)) {\n v = v.toISOString();\n } else if (utils.isObject(v)) {\n v = JSON.stringify(v);\n }\n parts.push(encode(key) + '=' + encode(v));\n });\n });\n serializedParams = parts.join('&');\n }\n if (serializedParams) {\n var hashmarkIndex = url.indexOf('#');\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n return url;\n};","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n * @returns {string} The combined URL\n */\nmodule.exports = function combineURLs(baseURL, relativeURL) {\n return relativeURL ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '') : baseURL;\n};","'use strict';\n\nvar utils = require('./../utils');\nmodule.exports = utils.isStandardBrowserEnv() ?\n// Standard browser envs support document.cookie\nfunction standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n var cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n if (secure === true) {\n cookie.push('secure');\n }\n document.cookie = cookie.join('; ');\n },\n read: function read(name) {\n var match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return match ? decodeURIComponent(match[3]) : null;\n },\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n}() :\n// Non standard browser env (web workers, react-native) lack needed support.\nfunction nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() {\n return null;\n },\n remove: function remove() {}\n };\n}();","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nmodule.exports = function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d\\+\\-\\.]*:)?\\/\\//i.test(url);\n};","'use strict';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nmodule.exports = function isAxiosError(payload) {\n return typeof payload === 'object' && payload.isAxiosError === true;\n};","'use strict';\n\nvar utils = require('./../utils');\nmodule.exports = utils.isStandardBrowserEnv() ?\n// Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\nfunction standardBrowserEnv() {\n var msie = /(msie|trident)/i.test(navigator.userAgent);\n var urlParsingNode = document.createElement('a');\n var originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n var href = url;\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: urlParsingNode.pathname.charAt(0) === '/' ? urlParsingNode.pathname : '/' + urlParsingNode.pathname\n };\n }\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n var parsed = utils.isString(requestURL) ? resolveURL(requestURL) : requestURL;\n return parsed.protocol === originURL.protocol && parsed.host === originURL.host;\n };\n}() :\n// Non standard browser envs (web workers, react-native) lack needed support.\nfunction nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n}();","'use strict';\n\nvar utils = require('../utils');\nmodule.exports = function normalizeHeaderName(headers, normalizedName) {\n utils.forEach(headers, function processHeader(value, name) {\n if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {\n headers[normalizedName] = value;\n delete headers[name];\n }\n });\n};","'use strict';\n\nvar utils = require('./../utils');\n\n// Headers whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nvar ignoreDuplicateOf = ['age', 'authorization', 'content-length', 'content-type', 'etag', 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since', 'last-modified', 'location', 'max-forwards', 'proxy-authorization', 'referer', 'retry-after', 'user-agent'];\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} headers Headers needing to be parsed\n * @returns {Object} Headers parsed into an object\n */\nmodule.exports = function parseHeaders(headers) {\n var parsed = {};\n var key;\n var val;\n var i;\n if (!headers) {\n return parsed;\n }\n utils.forEach(headers.split('\\n'), function parser(line) {\n i = line.indexOf(':');\n key = utils.trim(line.substr(0, i)).toLowerCase();\n val = utils.trim(line.substr(i + 1));\n if (key) {\n if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {\n return;\n }\n if (key === 'set-cookie') {\n parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n }\n });\n return parsed;\n};","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n * @returns {Function}\n */\nmodule.exports = function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n};","'use strict';\n\nvar pkg = require('./../../package.json');\nvar validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function (type, i) {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\nvar deprecatedWarnings = {};\nvar currentVerArr = pkg.version.split('.');\n\n/**\n * Compare package versions\n * @param {string} version\n * @param {string?} thanVersion\n * @returns {boolean}\n */\nfunction isOlderVersion(version, thanVersion) {\n var pkgVersionArr = thanVersion ? thanVersion.split('.') : currentVerArr;\n var destVer = version.split('.');\n for (var i = 0; i < 3; i++) {\n if (pkgVersionArr[i] > destVer[i]) {\n return true;\n } else if (pkgVersionArr[i] < destVer[i]) {\n return false;\n }\n }\n return false;\n}\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator\n * @param {string?} version\n * @param {string} message\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n var isDeprecated = version && isOlderVersion(version);\n function formatMessage(opt, desc) {\n return '[Axios v' + pkg.version + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return function (value, opt, opts) {\n if (validator === false) {\n throw new Error(formatMessage(opt, ' has been removed in ' + version));\n }\n if (isDeprecated && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(formatMessage(opt, ' has been deprecated since v' + version + ' and will be removed in the near future'));\n }\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new TypeError('options must be an object');\n }\n var keys = Object.keys(options);\n var i = keys.length;\n while (i-- > 0) {\n var opt = keys[i];\n var validator = schema[opt];\n if (validator) {\n var value = options[opt];\n var result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new TypeError('option ' + opt + ' must be ' + result);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw Error('Unknown option ' + opt);\n }\n }\n}\nmodule.exports = {\n isOlderVersion: isOlderVersion,\n assertOptions: assertOptions,\n validators: validators\n};","'use strict';\n\nvar bind = require('./helpers/bind');\n\n// utils is a library of generic helper functions non-specific to axios\n\nvar toString = Object.prototype.toString;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Array, otherwise false\n */\nfunction isArray(val) {\n return toString.call(val) === '[object Array]';\n}\n\n/**\n * Determine if a value is undefined\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nfunction isUndefined(val) {\n return typeof val === 'undefined';\n}\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor) && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nfunction isArrayBuffer(val) {\n return toString.call(val) === '[object ArrayBuffer]';\n}\n\n/**\n * Determine if a value is a FormData\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nfunction isFormData(val) {\n return typeof FormData !== 'undefined' && val instanceof FormData;\n}\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n var result;\n if (typeof ArrayBuffer !== 'undefined' && ArrayBuffer.isView) {\n result = ArrayBuffer.isView(val);\n } else {\n result = val && val.buffer && val.buffer instanceof ArrayBuffer;\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a String, otherwise false\n */\nfunction isString(val) {\n return typeof val === 'string';\n}\n\n/**\n * Determine if a value is a Number\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Number, otherwise false\n */\nfunction isNumber(val) {\n return typeof val === 'number';\n}\n\n/**\n * Determine if a value is an Object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is an Object, otherwise false\n */\nfunction isObject(val) {\n return val !== null && typeof val === 'object';\n}\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {Object} val The value to test\n * @return {boolean} True if value is a plain Object, otherwise false\n */\nfunction isPlainObject(val) {\n if (toString.call(val) !== '[object Object]') {\n return false;\n }\n var prototype = Object.getPrototypeOf(val);\n return prototype === null || prototype === Object.prototype;\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Date, otherwise false\n */\nfunction isDate(val) {\n return toString.call(val) === '[object Date]';\n}\n\n/**\n * Determine if a value is a File\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a File, otherwise false\n */\nfunction isFile(val) {\n return toString.call(val) === '[object File]';\n}\n\n/**\n * Determine if a value is a Blob\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nfunction isBlob(val) {\n return toString.call(val) === '[object Blob]';\n}\n\n/**\n * Determine if a value is a Function\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nfunction isFunction(val) {\n return toString.call(val) === '[object Function]';\n}\n\n/**\n * Determine if a value is a Stream\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nfunction isStream(val) {\n return isObject(val) && isFunction(val.pipe);\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {Object} val The value to test\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nfunction isURLSearchParams(val) {\n return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;\n}\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n * @returns {String} The String freed of excess whitespace\n */\nfunction trim(str) {\n return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g, '');\n}\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n */\nfunction isStandardBrowserEnv() {\n if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' || navigator.product === 'NativeScript' || navigator.product === 'NS')) {\n return false;\n }\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n}\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n */\nfunction forEach(obj, fn) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n if (isArray(obj)) {\n // Iterate over array values\n for (var i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n fn.call(null, obj[key], key, obj);\n }\n }\n }\n}\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n * @returns {Object} Result of all merge properties\n */\nfunction merge( /* obj1, obj2, obj3, ... */\n) {\n var result = {};\n function assignValue(val, key) {\n if (isPlainObject(result[key]) && isPlainObject(val)) {\n result[key] = merge(result[key], val);\n } else if (isPlainObject(val)) {\n result[key] = merge({}, val);\n } else if (isArray(val)) {\n result[key] = val.slice();\n } else {\n result[key] = val;\n }\n }\n for (var i = 0, l = arguments.length; i < l; i++) {\n forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n * @return {Object} The resulting value of object a\n */\nfunction extend(a, b, thisArg) {\n forEach(b, function assignValue(val, key) {\n if (thisArg && typeof val === 'function') {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n });\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n * @return {string} content value without BOM\n */\nfunction stripBOM(content) {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\nmodule.exports = {\n isArray: isArray,\n isArrayBuffer: isArrayBuffer,\n isBuffer: isBuffer,\n isFormData: isFormData,\n isArrayBufferView: isArrayBufferView,\n isString: isString,\n isNumber: isNumber,\n isObject: isObject,\n isPlainObject: isPlainObject,\n isUndefined: isUndefined,\n isDate: isDate,\n isFile: isFile,\n isBlob: isBlob,\n isFunction: isFunction,\n isStream: isStream,\n isURLSearchParams: isURLSearchParams,\n isStandardBrowserEnv: isStandardBrowserEnv,\n forEach: forEach,\n merge: merge,\n extend: extend,\n trim: trim,\n stripBOM: stripBOM\n};","/**\n * lunr - http://lunrjs.com - A bit like Solr, but much smaller and not as bright - 2.3.9\n * Copyright (C) 2020 Oliver Nightingale\n * @license MIT\n */\n\n;\n(function () {\n /**\n * A convenience function for configuring and constructing\n * a new lunr Index.\n *\n * A lunr.Builder instance is created and the pipeline setup\n * with a trimmer, stop word filter and stemmer.\n *\n * This builder object is yielded to the configuration function\n * that is passed as a parameter, allowing the list of fields\n * and other builder parameters to be customised.\n *\n * All documents _must_ be added within the passed config function.\n *\n * @example\n * var idx = lunr(function () {\n * this.field('title')\n * this.field('body')\n * this.ref('id')\n *\n * documents.forEach(function (doc) {\n * this.add(doc)\n * }, this)\n * })\n *\n * @see {@link lunr.Builder}\n * @see {@link lunr.Pipeline}\n * @see {@link lunr.trimmer}\n * @see {@link lunr.stopWordFilter}\n * @see {@link lunr.stemmer}\n * @namespace {function} lunr\n */\n var lunr = function lunr(config) {\n var builder = new lunr.Builder();\n builder.pipeline.add(lunr.trimmer, lunr.stopWordFilter, lunr.stemmer);\n builder.searchPipeline.add(lunr.stemmer);\n config.call(builder, builder);\n return builder.build();\n };\n lunr.version = \"2.3.9\";\n /*!\n * lunr.utils\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n /**\n * A namespace containing utils for the rest of the lunr library\n * @namespace lunr.utils\n */\n lunr.utils = {};\n\n /**\n * Print a warning message to the console.\n *\n * @param {String} message The message to be printed.\n * @memberOf lunr.utils\n * @function\n */\n lunr.utils.warn = function (global) {\n /* eslint-disable no-console */\n return function (message) {\n if (global.console && console.warn) {\n console.warn(message);\n }\n };\n /* eslint-enable no-console */\n }(this);\n\n /**\n * Convert an object to a string.\n *\n * In the case of `null` and `undefined` the function returns\n * the empty string, in all other cases the result of calling\n * `toString` on the passed object is returned.\n *\n * @param {Any} obj The object to convert to a string.\n * @return {String} string representation of the passed object.\n * @memberOf lunr.utils\n */\n lunr.utils.asString = function (obj) {\n if (obj === void 0 || obj === null) {\n return \"\";\n } else {\n return obj.toString();\n }\n };\n\n /**\n * Clones an object.\n *\n * Will create a copy of an existing object such that any mutations\n * on the copy cannot affect the original.\n *\n * Only shallow objects are supported, passing a nested object to this\n * function will cause a TypeError.\n *\n * Objects with primitives, and arrays of primitives are supported.\n *\n * @param {Object} obj The object to clone.\n * @return {Object} a clone of the passed object.\n * @throws {TypeError} when a nested object is passed.\n * @memberOf Utils\n */\n lunr.utils.clone = function (obj) {\n if (obj === null || obj === undefined) {\n return obj;\n }\n var clone = Object.create(null),\n keys = Object.keys(obj);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i],\n val = obj[key];\n if (Array.isArray(val)) {\n clone[key] = val.slice();\n continue;\n }\n if (typeof val === 'string' || typeof val === 'number' || typeof val === 'boolean') {\n clone[key] = val;\n continue;\n }\n throw new TypeError(\"clone is not deep and does not support nested objects\");\n }\n return clone;\n };\n lunr.FieldRef = function (docRef, fieldName, stringValue) {\n this.docRef = docRef;\n this.fieldName = fieldName;\n this._stringValue = stringValue;\n };\n lunr.FieldRef.joiner = \"/\";\n lunr.FieldRef.fromString = function (s) {\n var n = s.indexOf(lunr.FieldRef.joiner);\n if (n === -1) {\n throw \"malformed field ref string\";\n }\n var fieldRef = s.slice(0, n),\n docRef = s.slice(n + 1);\n return new lunr.FieldRef(docRef, fieldRef, s);\n };\n lunr.FieldRef.prototype.toString = function () {\n if (this._stringValue == undefined) {\n this._stringValue = this.fieldName + lunr.FieldRef.joiner + this.docRef;\n }\n return this._stringValue;\n };\n /*!\n * lunr.Set\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n /**\n * A lunr set.\n *\n * @constructor\n */\n lunr.Set = function (elements) {\n this.elements = Object.create(null);\n if (elements) {\n this.length = elements.length;\n for (var i = 0; i < this.length; i++) {\n this.elements[elements[i]] = true;\n }\n } else {\n this.length = 0;\n }\n };\n\n /**\n * A complete set that contains all elements.\n *\n * @static\n * @readonly\n * @type {lunr.Set}\n */\n lunr.Set.complete = {\n intersect: function intersect(other) {\n return other;\n },\n union: function union() {\n return this;\n },\n contains: function contains() {\n return true;\n }\n };\n\n /**\n * An empty set that contains no elements.\n *\n * @static\n * @readonly\n * @type {lunr.Set}\n */\n lunr.Set.empty = {\n intersect: function intersect() {\n return this;\n },\n union: function union(other) {\n return other;\n },\n contains: function contains() {\n return false;\n }\n };\n\n /**\n * Returns true if this set contains the specified object.\n *\n * @param {object} object - Object whose presence in this set is to be tested.\n * @returns {boolean} - True if this set contains the specified object.\n */\n lunr.Set.prototype.contains = function (object) {\n return !!this.elements[object];\n };\n\n /**\n * Returns a new set containing only the elements that are present in both\n * this set and the specified set.\n *\n * @param {lunr.Set} other - set to intersect with this set.\n * @returns {lunr.Set} a new set that is the intersection of this and the specified set.\n */\n\n lunr.Set.prototype.intersect = function (other) {\n var a,\n b,\n elements,\n intersection = [];\n if (other === lunr.Set.complete) {\n return this;\n }\n if (other === lunr.Set.empty) {\n return other;\n }\n if (this.length < other.length) {\n a = this;\n b = other;\n } else {\n a = other;\n b = this;\n }\n elements = Object.keys(a.elements);\n for (var i = 0; i < elements.length; i++) {\n var element = elements[i];\n if (element in b.elements) {\n intersection.push(element);\n }\n }\n return new lunr.Set(intersection);\n };\n\n /**\n * Returns a new set combining the elements of this and the specified set.\n *\n * @param {lunr.Set} other - set to union with this set.\n * @return {lunr.Set} a new set that is the union of this and the specified set.\n */\n\n lunr.Set.prototype.union = function (other) {\n if (other === lunr.Set.complete) {\n return lunr.Set.complete;\n }\n if (other === lunr.Set.empty) {\n return this;\n }\n return new lunr.Set(Object.keys(this.elements).concat(Object.keys(other.elements)));\n };\n /**\n * A function to calculate the inverse document frequency for\n * a posting. This is shared between the builder and the index\n *\n * @private\n * @param {object} posting - The posting for a given term\n * @param {number} documentCount - The total number of documents.\n */\n lunr.idf = function (posting, documentCount) {\n var documentsWithTerm = 0;\n for (var fieldName in posting) {\n if (fieldName == '_index') continue; // Ignore the term index, its not a field\n documentsWithTerm += Object.keys(posting[fieldName]).length;\n }\n var x = (documentCount - documentsWithTerm + 0.5) / (documentsWithTerm + 0.5);\n return Math.log(1 + Math.abs(x));\n };\n\n /**\n * A token wraps a string representation of a token\n * as it is passed through the text processing pipeline.\n *\n * @constructor\n * @param {string} [str=''] - The string token being wrapped.\n * @param {object} [metadata={}] - Metadata associated with this token.\n */\n lunr.Token = function (str, metadata) {\n this.str = str || \"\";\n this.metadata = metadata || {};\n };\n\n /**\n * Returns the token string that is being wrapped by this object.\n *\n * @returns {string}\n */\n lunr.Token.prototype.toString = function () {\n return this.str;\n };\n\n /**\n * A token update function is used when updating or optionally\n * when cloning a token.\n *\n * @callback lunr.Token~updateFunction\n * @param {string} str - The string representation of the token.\n * @param {Object} metadata - All metadata associated with this token.\n */\n\n /**\n * Applies the given function to the wrapped string token.\n *\n * @example\n * token.update(function (str, metadata) {\n * return str.toUpperCase()\n * })\n *\n * @param {lunr.Token~updateFunction} fn - A function to apply to the token string.\n * @returns {lunr.Token}\n */\n lunr.Token.prototype.update = function (fn) {\n this.str = fn(this.str, this.metadata);\n return this;\n };\n\n /**\n * Creates a clone of this token. Optionally a function can be\n * applied to the cloned token.\n *\n * @param {lunr.Token~updateFunction} [fn] - An optional function to apply to the cloned token.\n * @returns {lunr.Token}\n */\n lunr.Token.prototype.clone = function (fn) {\n fn = fn || function (s) {\n return s;\n };\n return new lunr.Token(fn(this.str, this.metadata), this.metadata);\n };\n /*!\n * lunr.tokenizer\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n /**\n * A function for splitting a string into tokens ready to be inserted into\n * the search index. Uses `lunr.tokenizer.separator` to split strings, change\n * the value of this property to change how strings are split into tokens.\n *\n * This tokenizer will convert its parameter to a string by calling `toString` and\n * then will split this string on the character in `lunr.tokenizer.separator`.\n * Arrays will have their elements converted to strings and wrapped in a lunr.Token.\n *\n * Optional metadata can be passed to the tokenizer, this metadata will be cloned and\n * added as metadata to every token that is created from the object to be tokenized.\n *\n * @static\n * @param {?(string|object|object[])} obj - The object to convert into tokens\n * @param {?object} metadata - Optional metadata to associate with every token\n * @returns {lunr.Token[]}\n * @see {@link lunr.Pipeline}\n */\n lunr.tokenizer = function (obj, metadata) {\n if (obj == null || obj == undefined) {\n return [];\n }\n if (Array.isArray(obj)) {\n return obj.map(function (t) {\n return new lunr.Token(lunr.utils.asString(t).toLowerCase(), lunr.utils.clone(metadata));\n });\n }\n var str = obj.toString().toLowerCase(),\n len = str.length,\n tokens = [];\n for (var sliceEnd = 0, sliceStart = 0; sliceEnd <= len; sliceEnd++) {\n var char = str.charAt(sliceEnd),\n sliceLength = sliceEnd - sliceStart;\n if (char.match(lunr.tokenizer.separator) || sliceEnd == len) {\n if (sliceLength > 0) {\n var tokenMetadata = lunr.utils.clone(metadata) || {};\n tokenMetadata[\"position\"] = [sliceStart, sliceLength];\n tokenMetadata[\"index\"] = tokens.length;\n tokens.push(new lunr.Token(str.slice(sliceStart, sliceEnd), tokenMetadata));\n }\n sliceStart = sliceEnd + 1;\n }\n }\n return tokens;\n };\n\n /**\n * The separator used to split a string into tokens. Override this property to change the behaviour of\n * `lunr.tokenizer` behaviour when tokenizing strings. By default this splits on whitespace and hyphens.\n *\n * @static\n * @see lunr.tokenizer\n */\n lunr.tokenizer.separator = /[\\s\\-]+/;\n /*!\n * lunr.Pipeline\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n /**\n * lunr.Pipelines maintain an ordered list of functions to be applied to all\n * tokens in documents entering the search index and queries being ran against\n * the index.\n *\n * An instance of lunr.Index created with the lunr shortcut will contain a\n * pipeline with a stop word filter and an English language stemmer. Extra\n * functions can be added before or after either of these functions or these\n * default functions can be removed.\n *\n * When run the pipeline will call each function in turn, passing a token, the\n * index of that token in the original list of all tokens and finally a list of\n * all the original tokens.\n *\n * The output of functions in the pipeline will be passed to the next function\n * in the pipeline. To exclude a token from entering the index the function\n * should return undefined, the rest of the pipeline will not be called with\n * this token.\n *\n * For serialisation of pipelines to work, all functions used in an instance of\n * a pipeline should be registered with lunr.Pipeline. Registered functions can\n * then be loaded. If trying to load a serialised pipeline that uses functions\n * that are not registered an error will be thrown.\n *\n * If not planning on serialising the pipeline then registering pipeline functions\n * is not necessary.\n *\n * @constructor\n */\n lunr.Pipeline = function () {\n this._stack = [];\n };\n lunr.Pipeline.registeredFunctions = Object.create(null);\n\n /**\n * A pipeline function maps lunr.Token to lunr.Token. A lunr.Token contains the token\n * string as well as all known metadata. A pipeline function can mutate the token string\n * or mutate (or add) metadata for a given token.\n *\n * A pipeline function can indicate that the passed token should be discarded by returning\n * null, undefined or an empty string. This token will not be passed to any downstream pipeline\n * functions and will not be added to the index.\n *\n * Multiple tokens can be returned by returning an array of tokens. Each token will be passed\n * to any downstream pipeline functions and all will returned tokens will be added to the index.\n *\n * Any number of pipeline functions may be chained together using a lunr.Pipeline.\n *\n * @interface lunr.PipelineFunction\n * @param {lunr.Token} token - A token from the document being processed.\n * @param {number} i - The index of this token in the complete list of tokens for this document/field.\n * @param {lunr.Token[]} tokens - All tokens for this document/field.\n * @returns {(?lunr.Token|lunr.Token[])}\n */\n\n /**\n * Register a function with the pipeline.\n *\n * Functions that are used in the pipeline should be registered if the pipeline\n * needs to be serialised, or a serialised pipeline needs to be loaded.\n *\n * Registering a function does not add it to a pipeline, functions must still be\n * added to instances of the pipeline for them to be used when running a pipeline.\n *\n * @param {lunr.PipelineFunction} fn - The function to check for.\n * @param {String} label - The label to register this function with\n */\n lunr.Pipeline.registerFunction = function (fn, label) {\n if (label in this.registeredFunctions) {\n lunr.utils.warn('Overwriting existing registered function: ' + label);\n }\n fn.label = label;\n lunr.Pipeline.registeredFunctions[fn.label] = fn;\n };\n\n /**\n * Warns if the function is not registered as a Pipeline function.\n *\n * @param {lunr.PipelineFunction} fn - The function to check for.\n * @private\n */\n lunr.Pipeline.warnIfFunctionNotRegistered = function (fn) {\n var isRegistered = fn.label && fn.label in this.registeredFunctions;\n if (!isRegistered) {\n lunr.utils.warn('Function is not registered with pipeline. This may cause problems when serialising the index.\\n', fn);\n }\n };\n\n /**\n * Loads a previously serialised pipeline.\n *\n * All functions to be loaded must already be registered with lunr.Pipeline.\n * If any function from the serialised data has not been registered then an\n * error will be thrown.\n *\n * @param {Object} serialised - The serialised pipeline to load.\n * @returns {lunr.Pipeline}\n */\n lunr.Pipeline.load = function (serialised) {\n var pipeline = new lunr.Pipeline();\n serialised.forEach(function (fnName) {\n var fn = lunr.Pipeline.registeredFunctions[fnName];\n if (fn) {\n pipeline.add(fn);\n } else {\n throw new Error('Cannot load unregistered function: ' + fnName);\n }\n });\n return pipeline;\n };\n\n /**\n * Adds new functions to the end of the pipeline.\n *\n * Logs a warning if the function has not been registered.\n *\n * @param {lunr.PipelineFunction[]} functions - Any number of functions to add to the pipeline.\n */\n lunr.Pipeline.prototype.add = function () {\n var fns = Array.prototype.slice.call(arguments);\n fns.forEach(function (fn) {\n lunr.Pipeline.warnIfFunctionNotRegistered(fn);\n this._stack.push(fn);\n }, this);\n };\n\n /**\n * Adds a single function after a function that already exists in the\n * pipeline.\n *\n * Logs a warning if the function has not been registered.\n *\n * @param {lunr.PipelineFunction} existingFn - A function that already exists in the pipeline.\n * @param {lunr.PipelineFunction} newFn - The new function to add to the pipeline.\n */\n lunr.Pipeline.prototype.after = function (existingFn, newFn) {\n lunr.Pipeline.warnIfFunctionNotRegistered(newFn);\n var pos = this._stack.indexOf(existingFn);\n if (pos == -1) {\n throw new Error('Cannot find existingFn');\n }\n pos = pos + 1;\n this._stack.splice(pos, 0, newFn);\n };\n\n /**\n * Adds a single function before a function that already exists in the\n * pipeline.\n *\n * Logs a warning if the function has not been registered.\n *\n * @param {lunr.PipelineFunction} existingFn - A function that already exists in the pipeline.\n * @param {lunr.PipelineFunction} newFn - The new function to add to the pipeline.\n */\n lunr.Pipeline.prototype.before = function (existingFn, newFn) {\n lunr.Pipeline.warnIfFunctionNotRegistered(newFn);\n var pos = this._stack.indexOf(existingFn);\n if (pos == -1) {\n throw new Error('Cannot find existingFn');\n }\n this._stack.splice(pos, 0, newFn);\n };\n\n /**\n * Removes a function from the pipeline.\n *\n * @param {lunr.PipelineFunction} fn The function to remove from the pipeline.\n */\n lunr.Pipeline.prototype.remove = function (fn) {\n var pos = this._stack.indexOf(fn);\n if (pos == -1) {\n return;\n }\n this._stack.splice(pos, 1);\n };\n\n /**\n * Runs the current list of functions that make up the pipeline against the\n * passed tokens.\n *\n * @param {Array} tokens The tokens to run through the pipeline.\n * @returns {Array}\n */\n lunr.Pipeline.prototype.run = function (tokens) {\n var stackLength = this._stack.length;\n for (var i = 0; i < stackLength; i++) {\n var fn = this._stack[i];\n var memo = [];\n for (var j = 0; j < tokens.length; j++) {\n var result = fn(tokens[j], j, tokens);\n if (result === null || result === void 0 || result === '') continue;\n if (Array.isArray(result)) {\n for (var k = 0; k < result.length; k++) {\n memo.push(result[k]);\n }\n } else {\n memo.push(result);\n }\n }\n tokens = memo;\n }\n return tokens;\n };\n\n /**\n * Convenience method for passing a string through a pipeline and getting\n * strings out. This method takes care of wrapping the passed string in a\n * token and mapping the resulting tokens back to strings.\n *\n * @param {string} str - The string to pass through the pipeline.\n * @param {?object} metadata - Optional metadata to associate with the token\n * passed to the pipeline.\n * @returns {string[]}\n */\n lunr.Pipeline.prototype.runString = function (str, metadata) {\n var token = new lunr.Token(str, metadata);\n return this.run([token]).map(function (t) {\n return t.toString();\n });\n };\n\n /**\n * Resets the pipeline by removing any existing processors.\n *\n */\n lunr.Pipeline.prototype.reset = function () {\n this._stack = [];\n };\n\n /**\n * Returns a representation of the pipeline ready for serialisation.\n *\n * Logs a warning if the function has not been registered.\n *\n * @returns {Array}\n */\n lunr.Pipeline.prototype.toJSON = function () {\n return this._stack.map(function (fn) {\n lunr.Pipeline.warnIfFunctionNotRegistered(fn);\n return fn.label;\n });\n };\n /*!\n * lunr.Vector\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n /**\n * A vector is used to construct the vector space of documents and queries. These\n * vectors support operations to determine the similarity between two documents or\n * a document and a query.\n *\n * Normally no parameters are required for initializing a vector, but in the case of\n * loading a previously dumped vector the raw elements can be provided to the constructor.\n *\n * For performance reasons vectors are implemented with a flat array, where an elements\n * index is immediately followed by its value. E.g. [index, value, index, value]. This\n * allows the underlying array to be as sparse as possible and still offer decent\n * performance when being used for vector calculations.\n *\n * @constructor\n * @param {Number[]} [elements] - The flat list of element index and element value pairs.\n */\n lunr.Vector = function (elements) {\n this._magnitude = 0;\n this.elements = elements || [];\n };\n\n /**\n * Calculates the position within the vector to insert a given index.\n *\n * This is used internally by insert and upsert. If there are duplicate indexes then\n * the position is returned as if the value for that index were to be updated, but it\n * is the callers responsibility to check whether there is a duplicate at that index\n *\n * @param {Number} insertIdx - The index at which the element should be inserted.\n * @returns {Number}\n */\n lunr.Vector.prototype.positionForIndex = function (index) {\n // For an empty vector the tuple can be inserted at the beginning\n if (this.elements.length == 0) {\n return 0;\n }\n var start = 0,\n end = this.elements.length / 2,\n sliceLength = end - start,\n pivotPoint = Math.floor(sliceLength / 2),\n pivotIndex = this.elements[pivotPoint * 2];\n while (sliceLength > 1) {\n if (pivotIndex < index) {\n start = pivotPoint;\n }\n if (pivotIndex > index) {\n end = pivotPoint;\n }\n if (pivotIndex == index) {\n break;\n }\n sliceLength = end - start;\n pivotPoint = start + Math.floor(sliceLength / 2);\n pivotIndex = this.elements[pivotPoint * 2];\n }\n if (pivotIndex == index) {\n return pivotPoint * 2;\n }\n if (pivotIndex > index) {\n return pivotPoint * 2;\n }\n if (pivotIndex < index) {\n return (pivotPoint + 1) * 2;\n }\n };\n\n /**\n * Inserts an element at an index within the vector.\n *\n * Does not allow duplicates, will throw an error if there is already an entry\n * for this index.\n *\n * @param {Number} insertIdx - The index at which the element should be inserted.\n * @param {Number} val - The value to be inserted into the vector.\n */\n lunr.Vector.prototype.insert = function (insertIdx, val) {\n this.upsert(insertIdx, val, function () {\n throw \"duplicate index\";\n });\n };\n\n /**\n * Inserts or updates an existing index within the vector.\n *\n * @param {Number} insertIdx - The index at which the element should be inserted.\n * @param {Number} val - The value to be inserted into the vector.\n * @param {function} fn - A function that is called for updates, the existing value and the\n * requested value are passed as arguments\n */\n lunr.Vector.prototype.upsert = function (insertIdx, val, fn) {\n this._magnitude = 0;\n var position = this.positionForIndex(insertIdx);\n if (this.elements[position] == insertIdx) {\n this.elements[position + 1] = fn(this.elements[position + 1], val);\n } else {\n this.elements.splice(position, 0, insertIdx, val);\n }\n };\n\n /**\n * Calculates the magnitude of this vector.\n *\n * @returns {Number}\n */\n lunr.Vector.prototype.magnitude = function () {\n if (this._magnitude) return this._magnitude;\n var sumOfSquares = 0,\n elementsLength = this.elements.length;\n for (var i = 1; i < elementsLength; i += 2) {\n var val = this.elements[i];\n sumOfSquares += val * val;\n }\n return this._magnitude = Math.sqrt(sumOfSquares);\n };\n\n /**\n * Calculates the dot product of this vector and another vector.\n *\n * @param {lunr.Vector} otherVector - The vector to compute the dot product with.\n * @returns {Number}\n */\n lunr.Vector.prototype.dot = function (otherVector) {\n var dotProduct = 0,\n a = this.elements,\n b = otherVector.elements,\n aLen = a.length,\n bLen = b.length,\n aVal = 0,\n bVal = 0,\n i = 0,\n j = 0;\n while (i < aLen && j < bLen) {\n aVal = a[i], bVal = b[j];\n if (aVal < bVal) {\n i += 2;\n } else if (aVal > bVal) {\n j += 2;\n } else if (aVal == bVal) {\n dotProduct += a[i + 1] * b[j + 1];\n i += 2;\n j += 2;\n }\n }\n return dotProduct;\n };\n\n /**\n * Calculates the similarity between this vector and another vector.\n *\n * @param {lunr.Vector} otherVector - The other vector to calculate the\n * similarity with.\n * @returns {Number}\n */\n lunr.Vector.prototype.similarity = function (otherVector) {\n return this.dot(otherVector) / this.magnitude() || 0;\n };\n\n /**\n * Converts the vector to an array of the elements within the vector.\n *\n * @returns {Number[]}\n */\n lunr.Vector.prototype.toArray = function () {\n var output = new Array(this.elements.length / 2);\n for (var i = 1, j = 0; i < this.elements.length; i += 2, j++) {\n output[j] = this.elements[i];\n }\n return output;\n };\n\n /**\n * A JSON serializable representation of the vector.\n *\n * @returns {Number[]}\n */\n lunr.Vector.prototype.toJSON = function () {\n return this.elements;\n };\n /* eslint-disable */\n /*!\n * lunr.stemmer\n * Copyright (C) 2020 Oliver Nightingale\n * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt\n */\n\n /**\n * lunr.stemmer is an english language stemmer, this is a JavaScript\n * implementation of the PorterStemmer taken from http://tartarus.org/~martin\n *\n * @static\n * @implements {lunr.PipelineFunction}\n * @param {lunr.Token} token - The string to stem\n * @returns {lunr.Token}\n * @see {@link lunr.Pipeline}\n * @function\n */\n lunr.stemmer = function () {\n var step2list = {\n \"ational\": \"ate\",\n \"tional\": \"tion\",\n \"enci\": \"ence\",\n \"anci\": \"ance\",\n \"izer\": \"ize\",\n \"bli\": \"ble\",\n \"alli\": \"al\",\n \"entli\": \"ent\",\n \"eli\": \"e\",\n \"ousli\": \"ous\",\n \"ization\": \"ize\",\n \"ation\": \"ate\",\n \"ator\": \"ate\",\n \"alism\": \"al\",\n \"iveness\": \"ive\",\n \"fulness\": \"ful\",\n \"ousness\": \"ous\",\n \"aliti\": \"al\",\n \"iviti\": \"ive\",\n \"biliti\": \"ble\",\n \"logi\": \"log\"\n },\n step3list = {\n \"icate\": \"ic\",\n \"ative\": \"\",\n \"alize\": \"al\",\n \"iciti\": \"ic\",\n \"ical\": \"ic\",\n \"ful\": \"\",\n \"ness\": \"\"\n },\n c = \"[^aeiou]\",\n // consonant\n v = \"[aeiouy]\",\n // vowel\n C = c + \"[^aeiouy]*\",\n // consonant sequence\n V = v + \"[aeiou]*\",\n // vowel sequence\n\n mgr0 = \"^(\" + C + \")?\" + V + C,\n // [C]VC... is m>0\n meq1 = \"^(\" + C + \")?\" + V + C + \"(\" + V + \")?$\",\n // [C]VC[V] is m=1\n mgr1 = \"^(\" + C + \")?\" + V + C + V + C,\n // [C]VCVC... is m>1\n s_v = \"^(\" + C + \")?\" + v; // vowel in stem\n\n var re_mgr0 = new RegExp(mgr0);\n var re_mgr1 = new RegExp(mgr1);\n var re_meq1 = new RegExp(meq1);\n var re_s_v = new RegExp(s_v);\n var re_1a = /^(.+?)(ss|i)es$/;\n var re2_1a = /^(.+?)([^s])s$/;\n var re_1b = /^(.+?)eed$/;\n var re2_1b = /^(.+?)(ed|ing)$/;\n var re_1b_2 = /.$/;\n var re2_1b_2 = /(at|bl|iz)$/;\n var re3_1b_2 = new RegExp(\"([^aeiouylsz])\\\\1$\");\n var re4_1b_2 = new RegExp(\"^\" + C + v + \"[^aeiouwxy]$\");\n var re_1c = /^(.+?[^aeiou])y$/;\n var re_2 = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/;\n var re_3 = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/;\n var re_4 = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/;\n var re2_4 = /^(.+?)(s|t)(ion)$/;\n var re_5 = /^(.+?)e$/;\n var re_5_1 = /ll$/;\n var re3_5 = new RegExp(\"^\" + C + v + \"[^aeiouwxy]$\");\n var porterStemmer = function porterStemmer(w) {\n var stem, suffix, firstch, re, re2, re3, re4;\n if (w.length < 3) {\n return w;\n }\n firstch = w.substr(0, 1);\n if (firstch == \"y\") {\n w = firstch.toUpperCase() + w.substr(1);\n }\n\n // Step 1a\n re = re_1a;\n re2 = re2_1a;\n if (re.test(w)) {\n w = w.replace(re, \"$1$2\");\n } else if (re2.test(w)) {\n w = w.replace(re2, \"$1$2\");\n }\n\n // Step 1b\n re = re_1b;\n re2 = re2_1b;\n if (re.test(w)) {\n var fp = re.exec(w);\n re = re_mgr0;\n if (re.test(fp[1])) {\n re = re_1b_2;\n w = w.replace(re, \"\");\n }\n } else if (re2.test(w)) {\n var fp = re2.exec(w);\n stem = fp[1];\n re2 = re_s_v;\n if (re2.test(stem)) {\n w = stem;\n re2 = re2_1b_2;\n re3 = re3_1b_2;\n re4 = re4_1b_2;\n if (re2.test(w)) {\n w = w + \"e\";\n } else if (re3.test(w)) {\n re = re_1b_2;\n w = w.replace(re, \"\");\n } else if (re4.test(w)) {\n w = w + \"e\";\n }\n }\n }\n\n // Step 1c - replace suffix y or Y by i if preceded by a non-vowel which is not the first letter of the word (so cry -> cri, by -> by, say -> say)\n re = re_1c;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n w = stem + \"i\";\n }\n\n // Step 2\n re = re_2;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n suffix = fp[2];\n re = re_mgr0;\n if (re.test(stem)) {\n w = stem + step2list[suffix];\n }\n }\n\n // Step 3\n re = re_3;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n suffix = fp[2];\n re = re_mgr0;\n if (re.test(stem)) {\n w = stem + step3list[suffix];\n }\n }\n\n // Step 4\n re = re_4;\n re2 = re2_4;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n re = re_mgr1;\n if (re.test(stem)) {\n w = stem;\n }\n } else if (re2.test(w)) {\n var fp = re2.exec(w);\n stem = fp[1] + fp[2];\n re2 = re_mgr1;\n if (re2.test(stem)) {\n w = stem;\n }\n }\n\n // Step 5\n re = re_5;\n if (re.test(w)) {\n var fp = re.exec(w);\n stem = fp[1];\n re = re_mgr1;\n re2 = re_meq1;\n re3 = re3_5;\n if (re.test(stem) || re2.test(stem) && !re3.test(stem)) {\n w = stem;\n }\n }\n re = re_5_1;\n re2 = re_mgr1;\n if (re.test(w) && re2.test(w)) {\n re = re_1b_2;\n w = w.replace(re, \"\");\n }\n\n // and turn initial Y back to y\n\n if (firstch == \"y\") {\n w = firstch.toLowerCase() + w.substr(1);\n }\n return w;\n };\n return function (token) {\n return token.update(porterStemmer);\n };\n }();\n lunr.Pipeline.registerFunction(lunr.stemmer, 'stemmer');\n /*!\n * lunr.stopWordFilter\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n /**\n * lunr.generateStopWordFilter builds a stopWordFilter function from the provided\n * list of stop words.\n *\n * The built in lunr.stopWordFilter is built using this generator and can be used\n * to generate custom stopWordFilters for applications or non English languages.\n *\n * @function\n * @param {Array} token The token to pass through the filter\n * @returns {lunr.PipelineFunction}\n * @see lunr.Pipeline\n * @see lunr.stopWordFilter\n */\n lunr.generateStopWordFilter = function (stopWords) {\n var words = stopWords.reduce(function (memo, stopWord) {\n memo[stopWord] = stopWord;\n return memo;\n }, {});\n return function (token) {\n if (token && words[token.toString()] !== token.toString()) return token;\n };\n };\n\n /**\n * lunr.stopWordFilter is an English language stop word list filter, any words\n * contained in the list will not be passed through the filter.\n *\n * This is intended to be used in the Pipeline. If the token does not pass the\n * filter then undefined will be returned.\n *\n * @function\n * @implements {lunr.PipelineFunction}\n * @params {lunr.Token} token - A token to check for being a stop word.\n * @returns {lunr.Token}\n * @see {@link lunr.Pipeline}\n */\n lunr.stopWordFilter = lunr.generateStopWordFilter(['a', 'able', 'about', 'across', 'after', 'all', 'almost', 'also', 'am', 'among', 'an', 'and', 'any', 'are', 'as', 'at', 'be', 'because', 'been', 'but', 'by', 'can', 'cannot', 'could', 'dear', 'did', 'do', 'does', 'either', 'else', 'ever', 'every', 'for', 'from', 'get', 'got', 'had', 'has', 'have', 'he', 'her', 'hers', 'him', 'his', 'how', 'however', 'i', 'if', 'in', 'into', 'is', 'it', 'its', 'just', 'least', 'let', 'like', 'likely', 'may', 'me', 'might', 'most', 'must', 'my', 'neither', 'no', 'nor', 'not', 'of', 'off', 'often', 'on', 'only', 'or', 'other', 'our', 'own', 'rather', 'said', 'say', 'says', 'she', 'should', 'since', 'so', 'some', 'than', 'that', 'the', 'their', 'them', 'then', 'there', 'these', 'they', 'this', 'tis', 'to', 'too', 'twas', 'us', 'wants', 'was', 'we', 'were', 'what', 'when', 'where', 'which', 'while', 'who', 'whom', 'why', 'will', 'with', 'would', 'yet', 'you', 'your']);\n lunr.Pipeline.registerFunction(lunr.stopWordFilter, 'stopWordFilter');\n /*!\n * lunr.trimmer\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n /**\n * lunr.trimmer is a pipeline function for trimming non word\n * characters from the beginning and end of tokens before they\n * enter the index.\n *\n * This implementation may not work correctly for non latin\n * characters and should either be removed or adapted for use\n * with languages with non-latin characters.\n *\n * @static\n * @implements {lunr.PipelineFunction}\n * @param {lunr.Token} token The token to pass through the filter\n * @returns {lunr.Token}\n * @see lunr.Pipeline\n */\n lunr.trimmer = function (token) {\n return token.update(function (s) {\n return s.replace(/^\\W+/, '').replace(/\\W+$/, '');\n });\n };\n lunr.Pipeline.registerFunction(lunr.trimmer, 'trimmer');\n /*!\n * lunr.TokenSet\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n /**\n * A token set is used to store the unique list of all tokens\n * within an index. Token sets are also used to represent an\n * incoming query to the index, this query token set and index\n * token set are then intersected to find which tokens to look\n * up in the inverted index.\n *\n * A token set can hold multiple tokens, as in the case of the\n * index token set, or it can hold a single token as in the\n * case of a simple query token set.\n *\n * Additionally token sets are used to perform wildcard matching.\n * Leading, contained and trailing wildcards are supported, and\n * from this edit distance matching can also be provided.\n *\n * Token sets are implemented as a minimal finite state automata,\n * where both common prefixes and suffixes are shared between tokens.\n * This helps to reduce the space used for storing the token set.\n *\n * @constructor\n */\n lunr.TokenSet = function () {\n this.final = false;\n this.edges = {};\n this.id = lunr.TokenSet._nextId;\n lunr.TokenSet._nextId += 1;\n };\n\n /**\n * Keeps track of the next, auto increment, identifier to assign\n * to a new tokenSet.\n *\n * TokenSets require a unique identifier to be correctly minimised.\n *\n * @private\n */\n lunr.TokenSet._nextId = 1;\n\n /**\n * Creates a TokenSet instance from the given sorted array of words.\n *\n * @param {String[]} arr - A sorted array of strings to create the set from.\n * @returns {lunr.TokenSet}\n * @throws Will throw an error if the input array is not sorted.\n */\n lunr.TokenSet.fromArray = function (arr) {\n var builder = new lunr.TokenSet.Builder();\n for (var i = 0, len = arr.length; i < len; i++) {\n builder.insert(arr[i]);\n }\n builder.finish();\n return builder.root;\n };\n\n /**\n * Creates a token set from a query clause.\n *\n * @private\n * @param {Object} clause - A single clause from lunr.Query.\n * @param {string} clause.term - The query clause term.\n * @param {number} [clause.editDistance] - The optional edit distance for the term.\n * @returns {lunr.TokenSet}\n */\n lunr.TokenSet.fromClause = function (clause) {\n if ('editDistance' in clause) {\n return lunr.TokenSet.fromFuzzyString(clause.term, clause.editDistance);\n } else {\n return lunr.TokenSet.fromString(clause.term);\n }\n };\n\n /**\n * Creates a token set representing a single string with a specified\n * edit distance.\n *\n * Insertions, deletions, substitutions and transpositions are each\n * treated as an edit distance of 1.\n *\n * Increasing the allowed edit distance will have a dramatic impact\n * on the performance of both creating and intersecting these TokenSets.\n * It is advised to keep the edit distance less than 3.\n *\n * @param {string} str - The string to create the token set from.\n * @param {number} editDistance - The allowed edit distance to match.\n * @returns {lunr.Vector}\n */\n lunr.TokenSet.fromFuzzyString = function (str, editDistance) {\n var root = new lunr.TokenSet();\n var stack = [{\n node: root,\n editsRemaining: editDistance,\n str: str\n }];\n while (stack.length) {\n var frame = stack.pop();\n\n // no edit\n if (frame.str.length > 0) {\n var char = frame.str.charAt(0),\n noEditNode;\n if (char in frame.node.edges) {\n noEditNode = frame.node.edges[char];\n } else {\n noEditNode = new lunr.TokenSet();\n frame.node.edges[char] = noEditNode;\n }\n if (frame.str.length == 1) {\n noEditNode.final = true;\n }\n stack.push({\n node: noEditNode,\n editsRemaining: frame.editsRemaining,\n str: frame.str.slice(1)\n });\n }\n if (frame.editsRemaining == 0) {\n continue;\n }\n\n // insertion\n if (\"*\" in frame.node.edges) {\n var insertionNode = frame.node.edges[\"*\"];\n } else {\n var insertionNode = new lunr.TokenSet();\n frame.node.edges[\"*\"] = insertionNode;\n }\n if (frame.str.length == 0) {\n insertionNode.final = true;\n }\n stack.push({\n node: insertionNode,\n editsRemaining: frame.editsRemaining - 1,\n str: frame.str\n });\n\n // deletion\n // can only do a deletion if we have enough edits remaining\n // and if there are characters left to delete in the string\n if (frame.str.length > 1) {\n stack.push({\n node: frame.node,\n editsRemaining: frame.editsRemaining - 1,\n str: frame.str.slice(1)\n });\n }\n\n // deletion\n // just removing the last character from the str\n if (frame.str.length == 1) {\n frame.node.final = true;\n }\n\n // substitution\n // can only do a substitution if we have enough edits remaining\n // and if there are characters left to substitute\n if (frame.str.length >= 1) {\n if (\"*\" in frame.node.edges) {\n var substitutionNode = frame.node.edges[\"*\"];\n } else {\n var substitutionNode = new lunr.TokenSet();\n frame.node.edges[\"*\"] = substitutionNode;\n }\n if (frame.str.length == 1) {\n substitutionNode.final = true;\n }\n stack.push({\n node: substitutionNode,\n editsRemaining: frame.editsRemaining - 1,\n str: frame.str.slice(1)\n });\n }\n\n // transposition\n // can only do a transposition if there are edits remaining\n // and there are enough characters to transpose\n if (frame.str.length > 1) {\n var charA = frame.str.charAt(0),\n charB = frame.str.charAt(1),\n transposeNode;\n if (charB in frame.node.edges) {\n transposeNode = frame.node.edges[charB];\n } else {\n transposeNode = new lunr.TokenSet();\n frame.node.edges[charB] = transposeNode;\n }\n if (frame.str.length == 1) {\n transposeNode.final = true;\n }\n stack.push({\n node: transposeNode,\n editsRemaining: frame.editsRemaining - 1,\n str: charA + frame.str.slice(2)\n });\n }\n }\n return root;\n };\n\n /**\n * Creates a TokenSet from a string.\n *\n * The string may contain one or more wildcard characters (*)\n * that will allow wildcard matching when intersecting with\n * another TokenSet.\n *\n * @param {string} str - The string to create a TokenSet from.\n * @returns {lunr.TokenSet}\n */\n lunr.TokenSet.fromString = function (str) {\n var node = new lunr.TokenSet(),\n root = node;\n\n /*\n * Iterates through all characters within the passed string\n * appending a node for each character.\n *\n * When a wildcard character is found then a self\n * referencing edge is introduced to continually match\n * any number of any characters.\n */\n for (var i = 0, len = str.length; i < len; i++) {\n var char = str[i],\n final = i == len - 1;\n if (char == \"*\") {\n node.edges[char] = node;\n node.final = final;\n } else {\n var next = new lunr.TokenSet();\n next.final = final;\n node.edges[char] = next;\n node = next;\n }\n }\n return root;\n };\n\n /**\n * Converts this TokenSet into an array of strings\n * contained within the TokenSet.\n *\n * This is not intended to be used on a TokenSet that\n * contains wildcards, in these cases the results are\n * undefined and are likely to cause an infinite loop.\n *\n * @returns {string[]}\n */\n lunr.TokenSet.prototype.toArray = function () {\n var words = [];\n var stack = [{\n prefix: \"\",\n node: this\n }];\n while (stack.length) {\n var frame = stack.pop(),\n edges = Object.keys(frame.node.edges),\n len = edges.length;\n if (frame.node.final) {\n /* In Safari, at this point the prefix is sometimes corrupted, see:\n * https://github.com/olivernn/lunr.js/issues/279 Calling any\n * String.prototype method forces Safari to \"cast\" this string to what\n * it's supposed to be, fixing the bug. */\n frame.prefix.charAt(0);\n words.push(frame.prefix);\n }\n for (var i = 0; i < len; i++) {\n var edge = edges[i];\n stack.push({\n prefix: frame.prefix.concat(edge),\n node: frame.node.edges[edge]\n });\n }\n }\n return words;\n };\n\n /**\n * Generates a string representation of a TokenSet.\n *\n * This is intended to allow TokenSets to be used as keys\n * in objects, largely to aid the construction and minimisation\n * of a TokenSet. As such it is not designed to be a human\n * friendly representation of the TokenSet.\n *\n * @returns {string}\n */\n lunr.TokenSet.prototype.toString = function () {\n // NOTE: Using Object.keys here as this.edges is very likely\n // to enter 'hash-mode' with many keys being added\n //\n // avoiding a for-in loop here as it leads to the function\n // being de-optimised (at least in V8). From some simple\n // benchmarks the performance is comparable, but allowing\n // V8 to optimize may mean easy performance wins in the future.\n\n if (this._str) {\n return this._str;\n }\n var str = this.final ? '1' : '0',\n labels = Object.keys(this.edges).sort(),\n len = labels.length;\n for (var i = 0; i < len; i++) {\n var label = labels[i],\n node = this.edges[label];\n str = str + label + node.id;\n }\n return str;\n };\n\n /**\n * Returns a new TokenSet that is the intersection of\n * this TokenSet and the passed TokenSet.\n *\n * This intersection will take into account any wildcards\n * contained within the TokenSet.\n *\n * @param {lunr.TokenSet} b - An other TokenSet to intersect with.\n * @returns {lunr.TokenSet}\n */\n lunr.TokenSet.prototype.intersect = function (b) {\n var output = new lunr.TokenSet(),\n frame = undefined;\n var stack = [{\n qNode: b,\n output: output,\n node: this\n }];\n while (stack.length) {\n frame = stack.pop();\n\n // NOTE: As with the #toString method, we are using\n // Object.keys and a for loop instead of a for-in loop\n // as both of these objects enter 'hash' mode, causing\n // the function to be de-optimised in V8\n var qEdges = Object.keys(frame.qNode.edges),\n qLen = qEdges.length,\n nEdges = Object.keys(frame.node.edges),\n nLen = nEdges.length;\n for (var q = 0; q < qLen; q++) {\n var qEdge = qEdges[q];\n for (var n = 0; n < nLen; n++) {\n var nEdge = nEdges[n];\n if (nEdge == qEdge || qEdge == '*') {\n var node = frame.node.edges[nEdge],\n qNode = frame.qNode.edges[qEdge],\n final = node.final && qNode.final,\n next = undefined;\n if (nEdge in frame.output.edges) {\n // an edge already exists for this character\n // no need to create a new node, just set the finality\n // bit unless this node is already final\n next = frame.output.edges[nEdge];\n next.final = next.final || final;\n } else {\n // no edge exists yet, must create one\n // set the finality bit and insert it\n // into the output\n next = new lunr.TokenSet();\n next.final = final;\n frame.output.edges[nEdge] = next;\n }\n stack.push({\n qNode: qNode,\n output: next,\n node: node\n });\n }\n }\n }\n }\n return output;\n };\n lunr.TokenSet.Builder = function () {\n this.previousWord = \"\";\n this.root = new lunr.TokenSet();\n this.uncheckedNodes = [];\n this.minimizedNodes = {};\n };\n lunr.TokenSet.Builder.prototype.insert = function (word) {\n var node,\n commonPrefix = 0;\n if (word < this.previousWord) {\n throw new Error(\"Out of order word insertion\");\n }\n for (var i = 0; i < word.length && i < this.previousWord.length; i++) {\n if (word[i] != this.previousWord[i]) break;\n commonPrefix++;\n }\n this.minimize(commonPrefix);\n if (this.uncheckedNodes.length == 0) {\n node = this.root;\n } else {\n node = this.uncheckedNodes[this.uncheckedNodes.length - 1].child;\n }\n for (var i = commonPrefix; i < word.length; i++) {\n var nextNode = new lunr.TokenSet(),\n char = word[i];\n node.edges[char] = nextNode;\n this.uncheckedNodes.push({\n parent: node,\n char: char,\n child: nextNode\n });\n node = nextNode;\n }\n node.final = true;\n this.previousWord = word;\n };\n lunr.TokenSet.Builder.prototype.finish = function () {\n this.minimize(0);\n };\n lunr.TokenSet.Builder.prototype.minimize = function (downTo) {\n for (var i = this.uncheckedNodes.length - 1; i >= downTo; i--) {\n var node = this.uncheckedNodes[i],\n childKey = node.child.toString();\n if (childKey in this.minimizedNodes) {\n node.parent.edges[node.char] = this.minimizedNodes[childKey];\n } else {\n // Cache the key for this node since\n // we know it can't change anymore\n node.child._str = childKey;\n this.minimizedNodes[childKey] = node.child;\n }\n this.uncheckedNodes.pop();\n }\n };\n /*!\n * lunr.Index\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n /**\n * An index contains the built index of all documents and provides a query interface\n * to the index.\n *\n * Usually instances of lunr.Index will not be created using this constructor, instead\n * lunr.Builder should be used to construct new indexes, or lunr.Index.load should be\n * used to load previously built and serialized indexes.\n *\n * @constructor\n * @param {Object} attrs - The attributes of the built search index.\n * @param {Object} attrs.invertedIndex - An index of term/field to document reference.\n * @param {Object} attrs.fieldVectors - Field vectors\n * @param {lunr.TokenSet} attrs.tokenSet - An set of all corpus tokens.\n * @param {string[]} attrs.fields - The names of indexed document fields.\n * @param {lunr.Pipeline} attrs.pipeline - The pipeline to use for search terms.\n */\n lunr.Index = function (attrs) {\n this.invertedIndex = attrs.invertedIndex;\n this.fieldVectors = attrs.fieldVectors;\n this.tokenSet = attrs.tokenSet;\n this.fields = attrs.fields;\n this.pipeline = attrs.pipeline;\n };\n\n /**\n * A result contains details of a document matching a search query.\n * @typedef {Object} lunr.Index~Result\n * @property {string} ref - The reference of the document this result represents.\n * @property {number} score - A number between 0 and 1 representing how similar this document is to the query.\n * @property {lunr.MatchData} matchData - Contains metadata about this match including which term(s) caused the match.\n */\n\n /**\n * Although lunr provides the ability to create queries using lunr.Query, it also provides a simple\n * query language which itself is parsed into an instance of lunr.Query.\n *\n * For programmatically building queries it is advised to directly use lunr.Query, the query language\n * is best used for human entered text rather than program generated text.\n *\n * At its simplest queries can just be a single term, e.g. `hello`, multiple terms are also supported\n * and will be combined with OR, e.g `hello world` will match documents that contain either 'hello'\n * or 'world', though those that contain both will rank higher in the results.\n *\n * Wildcards can be included in terms to match one or more unspecified characters, these wildcards can\n * be inserted anywhere within the term, and more than one wildcard can exist in a single term. Adding\n * wildcards will increase the number of documents that will be found but can also have a negative\n * impact on query performance, especially with wildcards at the beginning of a term.\n *\n * Terms can be restricted to specific fields, e.g. `title:hello`, only documents with the term\n * hello in the title field will match this query. Using a field not present in the index will lead\n * to an error being thrown.\n *\n * Modifiers can also be added to terms, lunr supports edit distance and boost modifiers on terms. A term\n * boost will make documents matching that term score higher, e.g. `foo^5`. Edit distance is also supported\n * to provide fuzzy matching, e.g. 'hello~2' will match documents with hello with an edit distance of 2.\n * Avoid large values for edit distance to improve query performance.\n *\n * Each term also supports a presence modifier. By default a term's presence in document is optional, however\n * this can be changed to either required or prohibited. For a term's presence to be required in a document the\n * term should be prefixed with a '+', e.g. `+foo bar` is a search for documents that must contain 'foo' and\n * optionally contain 'bar'. Conversely a leading '-' sets the terms presence to prohibited, i.e. it must not\n * appear in a document, e.g. `-foo bar` is a search for documents that do not contain 'foo' but may contain 'bar'.\n *\n * To escape special characters the backslash character '\\' can be used, this allows searches to include\n * characters that would normally be considered modifiers, e.g. `foo\\~2` will search for a term \"foo~2\" instead\n * of attempting to apply a boost of 2 to the search term \"foo\".\n *\n * @typedef {string} lunr.Index~QueryString\n * @example Simple single term query\n * hello\n * @example Multiple term query\n * hello world\n * @example term scoped to a field\n * title:hello\n * @example term with a boost of 10\n * hello^10\n * @example term with an edit distance of 2\n * hello~2\n * @example terms with presence modifiers\n * -foo +bar baz\n */\n\n /**\n * Performs a search against the index using lunr query syntax.\n *\n * Results will be returned sorted by their score, the most relevant results\n * will be returned first. For details on how the score is calculated, please see\n * the {@link https://lunrjs.com/guides/searching.html#scoring|guide}.\n *\n * For more programmatic querying use lunr.Index#query.\n *\n * @param {lunr.Index~QueryString} queryString - A string containing a lunr query.\n * @throws {lunr.QueryParseError} If the passed query string cannot be parsed.\n * @returns {lunr.Index~Result[]}\n */\n lunr.Index.prototype.search = function (queryString) {\n return this.query(function (query) {\n var parser = new lunr.QueryParser(queryString, query);\n parser.parse();\n });\n };\n\n /**\n * A query builder callback provides a query object to be used to express\n * the query to perform on the index.\n *\n * @callback lunr.Index~queryBuilder\n * @param {lunr.Query} query - The query object to build up.\n * @this lunr.Query\n */\n\n /**\n * Performs a query against the index using the yielded lunr.Query object.\n *\n * If performing programmatic queries against the index, this method is preferred\n * over lunr.Index#search so as to avoid the additional query parsing overhead.\n *\n * A query object is yielded to the supplied function which should be used to\n * express the query to be run against the index.\n *\n * Note that although this function takes a callback parameter it is _not_ an\n * asynchronous operation, the callback is just yielded a query object to be\n * customized.\n *\n * @param {lunr.Index~queryBuilder} fn - A function that is used to build the query.\n * @returns {lunr.Index~Result[]}\n */\n lunr.Index.prototype.query = function (fn) {\n // for each query clause\n // * process terms\n // * expand terms from token set\n // * find matching documents and metadata\n // * get document vectors\n // * score documents\n\n var query = new lunr.Query(this.fields),\n matchingFields = Object.create(null),\n queryVectors = Object.create(null),\n termFieldCache = Object.create(null),\n requiredMatches = Object.create(null),\n prohibitedMatches = Object.create(null);\n\n /*\n * To support field level boosts a query vector is created per\n * field. An empty vector is eagerly created to support negated\n * queries.\n */\n for (var i = 0; i < this.fields.length; i++) {\n queryVectors[this.fields[i]] = new lunr.Vector();\n }\n fn.call(query, query);\n for (var i = 0; i < query.clauses.length; i++) {\n /*\n * Unless the pipeline has been disabled for this term, which is\n * the case for terms with wildcards, we need to pass the clause\n * term through the search pipeline. A pipeline returns an array\n * of processed terms. Pipeline functions may expand the passed\n * term, which means we may end up performing multiple index lookups\n * for a single query term.\n */\n var clause = query.clauses[i],\n terms = null,\n clauseMatches = lunr.Set.empty;\n if (clause.usePipeline) {\n terms = this.pipeline.runString(clause.term, {\n fields: clause.fields\n });\n } else {\n terms = [clause.term];\n }\n for (var m = 0; m < terms.length; m++) {\n var term = terms[m];\n\n /*\n * Each term returned from the pipeline needs to use the same query\n * clause object, e.g. the same boost and or edit distance. The\n * simplest way to do this is to re-use the clause object but mutate\n * its term property.\n */\n clause.term = term;\n\n /*\n * From the term in the clause we create a token set which will then\n * be used to intersect the indexes token set to get a list of terms\n * to lookup in the inverted index\n */\n var termTokenSet = lunr.TokenSet.fromClause(clause),\n expandedTerms = this.tokenSet.intersect(termTokenSet).toArray();\n\n /*\n * If a term marked as required does not exist in the tokenSet it is\n * impossible for the search to return any matches. We set all the field\n * scoped required matches set to empty and stop examining any further\n * clauses.\n */\n if (expandedTerms.length === 0 && clause.presence === lunr.Query.presence.REQUIRED) {\n for (var k = 0; k < clause.fields.length; k++) {\n var field = clause.fields[k];\n requiredMatches[field] = lunr.Set.empty;\n }\n break;\n }\n for (var j = 0; j < expandedTerms.length; j++) {\n /*\n * For each term get the posting and termIndex, this is required for\n * building the query vector.\n */\n var expandedTerm = expandedTerms[j],\n posting = this.invertedIndex[expandedTerm],\n termIndex = posting._index;\n for (var k = 0; k < clause.fields.length; k++) {\n /*\n * For each field that this query term is scoped by (by default\n * all fields are in scope) we need to get all the document refs\n * that have this term in that field.\n *\n * The posting is the entry in the invertedIndex for the matching\n * term from above.\n */\n var field = clause.fields[k],\n fieldPosting = posting[field],\n matchingDocumentRefs = Object.keys(fieldPosting),\n termField = expandedTerm + \"/\" + field,\n matchingDocumentsSet = new lunr.Set(matchingDocumentRefs);\n\n /*\n * if the presence of this term is required ensure that the matching\n * documents are added to the set of required matches for this clause.\n *\n */\n if (clause.presence == lunr.Query.presence.REQUIRED) {\n clauseMatches = clauseMatches.union(matchingDocumentsSet);\n if (requiredMatches[field] === undefined) {\n requiredMatches[field] = lunr.Set.complete;\n }\n }\n\n /*\n * if the presence of this term is prohibited ensure that the matching\n * documents are added to the set of prohibited matches for this field,\n * creating that set if it does not yet exist.\n */\n if (clause.presence == lunr.Query.presence.PROHIBITED) {\n if (prohibitedMatches[field] === undefined) {\n prohibitedMatches[field] = lunr.Set.empty;\n }\n prohibitedMatches[field] = prohibitedMatches[field].union(matchingDocumentsSet);\n\n /*\n * Prohibited matches should not be part of the query vector used for\n * similarity scoring and no metadata should be extracted so we continue\n * to the next field\n */\n continue;\n }\n\n /*\n * The query field vector is populated using the termIndex found for\n * the term and a unit value with the appropriate boost applied.\n * Using upsert because there could already be an entry in the vector\n * for the term we are working with. In that case we just add the scores\n * together.\n */\n queryVectors[field].upsert(termIndex, clause.boost, function (a, b) {\n return a + b;\n });\n\n /**\n * If we've already seen this term, field combo then we've already collected\n * the matching documents and metadata, no need to go through all that again\n */\n if (termFieldCache[termField]) {\n continue;\n }\n for (var l = 0; l < matchingDocumentRefs.length; l++) {\n /*\n * All metadata for this term/field/document triple\n * are then extracted and collected into an instance\n * of lunr.MatchData ready to be returned in the query\n * results\n */\n var matchingDocumentRef = matchingDocumentRefs[l],\n matchingFieldRef = new lunr.FieldRef(matchingDocumentRef, field),\n metadata = fieldPosting[matchingDocumentRef],\n fieldMatch;\n if ((fieldMatch = matchingFields[matchingFieldRef]) === undefined) {\n matchingFields[matchingFieldRef] = new lunr.MatchData(expandedTerm, field, metadata);\n } else {\n fieldMatch.add(expandedTerm, field, metadata);\n }\n }\n termFieldCache[termField] = true;\n }\n }\n }\n\n /**\n * If the presence was required we need to update the requiredMatches field sets.\n * We do this after all fields for the term have collected their matches because\n * the clause terms presence is required in _any_ of the fields not _all_ of the\n * fields.\n */\n if (clause.presence === lunr.Query.presence.REQUIRED) {\n for (var k = 0; k < clause.fields.length; k++) {\n var field = clause.fields[k];\n requiredMatches[field] = requiredMatches[field].intersect(clauseMatches);\n }\n }\n }\n\n /**\n * Need to combine the field scoped required and prohibited\n * matching documents into a global set of required and prohibited\n * matches\n */\n var allRequiredMatches = lunr.Set.complete,\n allProhibitedMatches = lunr.Set.empty;\n for (var i = 0; i < this.fields.length; i++) {\n var field = this.fields[i];\n if (requiredMatches[field]) {\n allRequiredMatches = allRequiredMatches.intersect(requiredMatches[field]);\n }\n if (prohibitedMatches[field]) {\n allProhibitedMatches = allProhibitedMatches.union(prohibitedMatches[field]);\n }\n }\n var matchingFieldRefs = Object.keys(matchingFields),\n results = [],\n matches = Object.create(null);\n\n /*\n * If the query is negated (contains only prohibited terms)\n * we need to get _all_ fieldRefs currently existing in the\n * index. This is only done when we know that the query is\n * entirely prohibited terms to avoid any cost of getting all\n * fieldRefs unnecessarily.\n *\n * Additionally, blank MatchData must be created to correctly\n * populate the results.\n */\n if (query.isNegated()) {\n matchingFieldRefs = Object.keys(this.fieldVectors);\n for (var i = 0; i < matchingFieldRefs.length; i++) {\n var matchingFieldRef = matchingFieldRefs[i];\n var fieldRef = lunr.FieldRef.fromString(matchingFieldRef);\n matchingFields[matchingFieldRef] = new lunr.MatchData();\n }\n }\n for (var i = 0; i < matchingFieldRefs.length; i++) {\n /*\n * Currently we have document fields that match the query, but we\n * need to return documents. The matchData and scores are combined\n * from multiple fields belonging to the same document.\n *\n * Scores are calculated by field, using the query vectors created\n * above, and combined into a final document score using addition.\n */\n var fieldRef = lunr.FieldRef.fromString(matchingFieldRefs[i]),\n docRef = fieldRef.docRef;\n if (!allRequiredMatches.contains(docRef)) {\n continue;\n }\n if (allProhibitedMatches.contains(docRef)) {\n continue;\n }\n var fieldVector = this.fieldVectors[fieldRef],\n score = queryVectors[fieldRef.fieldName].similarity(fieldVector),\n docMatch;\n if ((docMatch = matches[docRef]) !== undefined) {\n docMatch.score += score;\n docMatch.matchData.combine(matchingFields[fieldRef]);\n } else {\n var match = {\n ref: docRef,\n score: score,\n matchData: matchingFields[fieldRef]\n };\n matches[docRef] = match;\n results.push(match);\n }\n }\n\n /*\n * Sort the results objects by score, highest first.\n */\n return results.sort(function (a, b) {\n return b.score - a.score;\n });\n };\n\n /**\n * Prepares the index for JSON serialization.\n *\n * The schema for this JSON blob will be described in a\n * separate JSON schema file.\n *\n * @returns {Object}\n */\n lunr.Index.prototype.toJSON = function () {\n var invertedIndex = Object.keys(this.invertedIndex).sort().map(function (term) {\n return [term, this.invertedIndex[term]];\n }, this);\n var fieldVectors = Object.keys(this.fieldVectors).map(function (ref) {\n return [ref, this.fieldVectors[ref].toJSON()];\n }, this);\n return {\n version: lunr.version,\n fields: this.fields,\n fieldVectors: fieldVectors,\n invertedIndex: invertedIndex,\n pipeline: this.pipeline.toJSON()\n };\n };\n\n /**\n * Loads a previously serialized lunr.Index\n *\n * @param {Object} serializedIndex - A previously serialized lunr.Index\n * @returns {lunr.Index}\n */\n lunr.Index.load = function (serializedIndex) {\n var attrs = {},\n fieldVectors = {},\n serializedVectors = serializedIndex.fieldVectors,\n invertedIndex = Object.create(null),\n serializedInvertedIndex = serializedIndex.invertedIndex,\n tokenSetBuilder = new lunr.TokenSet.Builder(),\n pipeline = lunr.Pipeline.load(serializedIndex.pipeline);\n if (serializedIndex.version != lunr.version) {\n lunr.utils.warn(\"Version mismatch when loading serialised index. Current version of lunr '\" + lunr.version + \"' does not match serialized index '\" + serializedIndex.version + \"'\");\n }\n for (var i = 0; i < serializedVectors.length; i++) {\n var tuple = serializedVectors[i],\n ref = tuple[0],\n elements = tuple[1];\n fieldVectors[ref] = new lunr.Vector(elements);\n }\n for (var i = 0; i < serializedInvertedIndex.length; i++) {\n var tuple = serializedInvertedIndex[i],\n term = tuple[0],\n posting = tuple[1];\n tokenSetBuilder.insert(term);\n invertedIndex[term] = posting;\n }\n tokenSetBuilder.finish();\n attrs.fields = serializedIndex.fields;\n attrs.fieldVectors = fieldVectors;\n attrs.invertedIndex = invertedIndex;\n attrs.tokenSet = tokenSetBuilder.root;\n attrs.pipeline = pipeline;\n return new lunr.Index(attrs);\n };\n /*!\n * lunr.Builder\n * Copyright (C) 2020 Oliver Nightingale\n */\n\n /**\n * lunr.Builder performs indexing on a set of documents and\n * returns instances of lunr.Index ready for querying.\n *\n * All configuration of the index is done via the builder, the\n * fields to index, the document reference, the text processing\n * pipeline and document scoring parameters are all set on the\n * builder before indexing.\n *\n * @constructor\n * @property {string} _ref - Internal reference to the document reference field.\n * @property {string[]} _fields - Internal reference to the document fields to index.\n * @property {object} invertedIndex - The inverted index maps terms to document fields.\n * @property {object} documentTermFrequencies - Keeps track of document term frequencies.\n * @property {object} documentLengths - Keeps track of the length of documents added to the index.\n * @property {lunr.tokenizer} tokenizer - Function for splitting strings into tokens for indexing.\n * @property {lunr.Pipeline} pipeline - The pipeline performs text processing on tokens before indexing.\n * @property {lunr.Pipeline} searchPipeline - A pipeline for processing search terms before querying the index.\n * @property {number} documentCount - Keeps track of the total number of documents indexed.\n * @property {number} _b - A parameter to control field length normalization, setting this to 0 disabled normalization, 1 fully normalizes field lengths, the default value is 0.75.\n * @property {number} _k1 - A parameter to control how quickly an increase in term frequency results in term frequency saturation, the default value is 1.2.\n * @property {number} termIndex - A counter incremented for each unique term, used to identify a terms position in the vector space.\n * @property {array} metadataWhitelist - A list of metadata keys that have been whitelisted for entry in the index.\n */\n lunr.Builder = function () {\n this._ref = \"id\";\n this._fields = Object.create(null);\n this._documents = Object.create(null);\n this.invertedIndex = Object.create(null);\n this.fieldTermFrequencies = {};\n this.fieldLengths = {};\n this.tokenizer = lunr.tokenizer;\n this.pipeline = new lunr.Pipeline();\n this.searchPipeline = new lunr.Pipeline();\n this.documentCount = 0;\n this._b = 0.75;\n this._k1 = 1.2;\n this.termIndex = 0;\n this.metadataWhitelist = [];\n };\n\n /**\n * Sets the document field used as the document reference. Every document must have this field.\n * The type of this field in the document should be a string, if it is not a string it will be\n * coerced into a string by calling toString.\n *\n * The default ref is 'id'.\n *\n * The ref should _not_ be changed during indexing, it should be set before any documents are\n * added to the index. Changing it during indexing can lead to inconsistent results.\n *\n * @param {string} ref - The name of the reference field in the document.\n */\n lunr.Builder.prototype.ref = function (ref) {\n this._ref = ref;\n };\n\n /**\n * A function that is used to extract a field from a document.\n *\n * Lunr expects a field to be at the top level of a document, if however the field\n * is deeply nested within a document an extractor function can be used to extract\n * the right field for indexing.\n *\n * @callback fieldExtractor\n * @param {object} doc - The document being added to the index.\n * @returns {?(string|object|object[])} obj - The object that will be indexed for this field.\n * @example Extracting a nested field\n * function (doc) { return doc.nested.field }\n */\n\n /**\n * Adds a field to the list of document fields that will be indexed. Every document being\n * indexed should have this field. Null values for this field in indexed documents will\n * not cause errors but will limit the chance of that document being retrieved by searches.\n *\n * All fields should be added before adding documents to the index. Adding fields after\n * a document has been indexed will have no effect on already indexed documents.\n *\n * Fields can be boosted at build time. This allows terms within that field to have more\n * importance when ranking search results. Use a field boost to specify that matches within\n * one field are more important than other fields.\n *\n * @param {string} fieldName - The name of a field to index in all documents.\n * @param {object} attributes - Optional attributes associated with this field.\n * @param {number} [attributes.boost=1] - Boost applied to all terms within this field.\n * @param {fieldExtractor} [attributes.extractor] - Function to extract a field from a document.\n * @throws {RangeError} fieldName cannot contain unsupported characters '/'\n */\n lunr.Builder.prototype.field = function (fieldName, attributes) {\n if (/\\//.test(fieldName)) {\n throw new RangeError(\"Field '\" + fieldName + \"' contains illegal character '/'\");\n }\n this._fields[fieldName] = attributes || {};\n };\n\n /**\n * A parameter to tune the amount of field length normalisation that is applied when\n * calculating relevance scores. A value of 0 will completely disable any normalisation\n * and a value of 1 will fully normalise field lengths. The default is 0.75. Values of b\n * will be clamped to the range 0 - 1.\n *\n * @param {number} number - The value to set for this tuning parameter.\n */\n lunr.Builder.prototype.b = function (number) {\n if (number < 0) {\n this._b = 0;\n } else if (number > 1) {\n this._b = 1;\n } else {\n this._b = number;\n }\n };\n\n /**\n * A parameter that controls the speed at which a rise in term frequency results in term\n * frequency saturation. The default value is 1.2. Setting this to a higher value will give\n * slower saturation levels, a lower value will result in quicker saturation.\n *\n * @param {number} number - The value to set for this tuning parameter.\n */\n lunr.Builder.prototype.k1 = function (number) {\n this._k1 = number;\n };\n\n /**\n * Adds a document to the index.\n *\n * Before adding fields to the index the index should have been fully setup, with the document\n * ref and all fields to index already having been specified.\n *\n * The document must have a field name as specified by the ref (by default this is 'id') and\n * it should have all fields defined for indexing, though null or undefined values will not\n * cause errors.\n *\n * Entire documents can be boosted at build time. Applying a boost to a document indicates that\n * this document should rank higher in search results than other documents.\n *\n * @param {object} doc - The document to add to the index.\n * @param {object} attributes - Optional attributes associated with this document.\n * @param {number} [attributes.boost=1] - Boost applied to all terms within this document.\n */\n lunr.Builder.prototype.add = function (doc, attributes) {\n var docRef = doc[this._ref],\n fields = Object.keys(this._fields);\n this._documents[docRef] = attributes || {};\n this.documentCount += 1;\n for (var i = 0; i < fields.length; i++) {\n var fieldName = fields[i],\n extractor = this._fields[fieldName].extractor,\n field = extractor ? extractor(doc) : doc[fieldName],\n tokens = this.tokenizer(field, {\n fields: [fieldName]\n }),\n terms = this.pipeline.run(tokens),\n fieldRef = new lunr.FieldRef(docRef, fieldName),\n fieldTerms = Object.create(null);\n this.fieldTermFrequencies[fieldRef] = fieldTerms;\n this.fieldLengths[fieldRef] = 0;\n\n // store the length of this field for this document\n this.fieldLengths[fieldRef] += terms.length;\n\n // calculate term frequencies for this field\n for (var j = 0; j < terms.length; j++) {\n var term = terms[j];\n if (fieldTerms[term] == undefined) {\n fieldTerms[term] = 0;\n }\n fieldTerms[term] += 1;\n\n // add to inverted index\n // create an initial posting if one doesn't exist\n if (this.invertedIndex[term] == undefined) {\n var posting = Object.create(null);\n posting[\"_index\"] = this.termIndex;\n this.termIndex += 1;\n for (var k = 0; k < fields.length; k++) {\n posting[fields[k]] = Object.create(null);\n }\n this.invertedIndex[term] = posting;\n }\n\n // add an entry for this term/fieldName/docRef to the invertedIndex\n if (this.invertedIndex[term][fieldName][docRef] == undefined) {\n this.invertedIndex[term][fieldName][docRef] = Object.create(null);\n }\n\n // store all whitelisted metadata about this token in the\n // inverted index\n for (var l = 0; l < this.metadataWhitelist.length; l++) {\n var metadataKey = this.metadataWhitelist[l],\n metadata = term.metadata[metadataKey];\n if (this.invertedIndex[term][fieldName][docRef][metadataKey] == undefined) {\n this.invertedIndex[term][fieldName][docRef][metadataKey] = [];\n }\n this.invertedIndex[term][fieldName][docRef][metadataKey].push(metadata);\n }\n }\n }\n };\n\n /**\n * Calculates the average document length for this index\n *\n * @private\n */\n lunr.Builder.prototype.calculateAverageFieldLengths = function () {\n var fieldRefs = Object.keys(this.fieldLengths),\n numberOfFields = fieldRefs.length,\n accumulator = {},\n documentsWithField = {};\n for (var i = 0; i < numberOfFields; i++) {\n var fieldRef = lunr.FieldRef.fromString(fieldRefs[i]),\n field = fieldRef.fieldName;\n documentsWithField[field] || (documentsWithField[field] = 0);\n documentsWithField[field] += 1;\n accumulator[field] || (accumulator[field] = 0);\n accumulator[field] += this.fieldLengths[fieldRef];\n }\n var fields = Object.keys(this._fields);\n for (var i = 0; i < fields.length; i++) {\n var fieldName = fields[i];\n accumulator[fieldName] = accumulator[fieldName] / documentsWithField[fieldName];\n }\n this.averageFieldLength = accumulator;\n };\n\n /**\n * Builds a vector space model of every document using lunr.Vector\n *\n * @private\n */\n lunr.Builder.prototype.createFieldVectors = function () {\n var fieldVectors = {},\n fieldRefs = Object.keys(this.fieldTermFrequencies),\n fieldRefsLength = fieldRefs.length,\n termIdfCache = Object.create(null);\n for (var i = 0; i < fieldRefsLength; i++) {\n var fieldRef = lunr.FieldRef.fromString(fieldRefs[i]),\n fieldName = fieldRef.fieldName,\n fieldLength = this.fieldLengths[fieldRef],\n fieldVector = new lunr.Vector(),\n termFrequencies = this.fieldTermFrequencies[fieldRef],\n terms = Object.keys(termFrequencies),\n termsLength = terms.length;\n var fieldBoost = this._fields[fieldName].boost || 1,\n docBoost = this._documents[fieldRef.docRef].boost || 1;\n for (var j = 0; j < termsLength; j++) {\n var term = terms[j],\n tf = termFrequencies[term],\n termIndex = this.invertedIndex[term]._index,\n idf,\n score,\n scoreWithPrecision;\n if (termIdfCache[term] === undefined) {\n idf = lunr.idf(this.invertedIndex[term], this.documentCount);\n termIdfCache[term] = idf;\n } else {\n idf = termIdfCache[term];\n }\n score = idf * ((this._k1 + 1) * tf) / (this._k1 * (1 - this._b + this._b * (fieldLength / this.averageFieldLength[fieldName])) + tf);\n score *= fieldBoost;\n score *= docBoost;\n scoreWithPrecision = Math.round(score * 1000) / 1000;\n // Converts 1.23456789 to 1.234.\n // Reducing the precision so that the vectors take up less\n // space when serialised. Doing it now so that they behave\n // the same before and after serialisation. Also, this is\n // the fastest approach to reducing a number's precision in\n // JavaScript.\n\n fieldVector.insert(termIndex, scoreWithPrecision);\n }\n fieldVectors[fieldRef] = fieldVector;\n }\n this.fieldVectors = fieldVectors;\n };\n\n /**\n * Creates a token set of all tokens in the index using lunr.TokenSet\n *\n * @private\n */\n lunr.Builder.prototype.createTokenSet = function () {\n this.tokenSet = lunr.TokenSet.fromArray(Object.keys(this.invertedIndex).sort());\n };\n\n /**\n * Builds the index, creating an instance of lunr.Index.\n *\n * This completes the indexing process and should only be called\n * once all documents have been added to the index.\n *\n * @returns {lunr.Index}\n */\n lunr.Builder.prototype.build = function () {\n this.calculateAverageFieldLengths();\n this.createFieldVectors();\n this.createTokenSet();\n return new lunr.Index({\n invertedIndex: this.invertedIndex,\n fieldVectors: this.fieldVectors,\n tokenSet: this.tokenSet,\n fields: Object.keys(this._fields),\n pipeline: this.searchPipeline\n });\n };\n\n /**\n * Applies a plugin to the index builder.\n *\n * A plugin is a function that is called with the index builder as its context.\n * Plugins can be used to customise or extend the behaviour of the index\n * in some way. A plugin is just a function, that encapsulated the custom\n * behaviour that should be applied when building the index.\n *\n * The plugin function will be called with the index builder as its argument, additional\n * arguments can also be passed when calling use. The function will be called\n * with the index builder as its context.\n *\n * @param {Function} plugin The plugin to apply.\n */\n lunr.Builder.prototype.use = function (fn) {\n var args = Array.prototype.slice.call(arguments, 1);\n args.unshift(this);\n fn.apply(this, args);\n };\n /**\n * Contains and collects metadata about a matching document.\n * A single instance of lunr.MatchData is returned as part of every\n * lunr.Index~Result.\n *\n * @constructor\n * @param {string} term - The term this match data is associated with\n * @param {string} field - The field in which the term was found\n * @param {object} metadata - The metadata recorded about this term in this field\n * @property {object} metadata - A cloned collection of metadata associated with this document.\n * @see {@link lunr.Index~Result}\n */\n lunr.MatchData = function (term, field, metadata) {\n var clonedMetadata = Object.create(null),\n metadataKeys = Object.keys(metadata || {});\n\n // Cloning the metadata to prevent the original\n // being mutated during match data combination.\n // Metadata is kept in an array within the inverted\n // index so cloning the data can be done with\n // Array#slice\n for (var i = 0; i < metadataKeys.length; i++) {\n var key = metadataKeys[i];\n clonedMetadata[key] = metadata[key].slice();\n }\n this.metadata = Object.create(null);\n if (term !== undefined) {\n this.metadata[term] = Object.create(null);\n this.metadata[term][field] = clonedMetadata;\n }\n };\n\n /**\n * An instance of lunr.MatchData will be created for every term that matches a\n * document. However only one instance is required in a lunr.Index~Result. This\n * method combines metadata from another instance of lunr.MatchData with this\n * objects metadata.\n *\n * @param {lunr.MatchData} otherMatchData - Another instance of match data to merge with this one.\n * @see {@link lunr.Index~Result}\n */\n lunr.MatchData.prototype.combine = function (otherMatchData) {\n var terms = Object.keys(otherMatchData.metadata);\n for (var i = 0; i < terms.length; i++) {\n var term = terms[i],\n fields = Object.keys(otherMatchData.metadata[term]);\n if (this.metadata[term] == undefined) {\n this.metadata[term] = Object.create(null);\n }\n for (var j = 0; j < fields.length; j++) {\n var field = fields[j],\n keys = Object.keys(otherMatchData.metadata[term][field]);\n if (this.metadata[term][field] == undefined) {\n this.metadata[term][field] = Object.create(null);\n }\n for (var k = 0; k < keys.length; k++) {\n var key = keys[k];\n if (this.metadata[term][field][key] == undefined) {\n this.metadata[term][field][key] = otherMatchData.metadata[term][field][key];\n } else {\n this.metadata[term][field][key] = this.metadata[term][field][key].concat(otherMatchData.metadata[term][field][key]);\n }\n }\n }\n }\n };\n\n /**\n * Add metadata for a term/field pair to this instance of match data.\n *\n * @param {string} term - The term this match data is associated with\n * @param {string} field - The field in which the term was found\n * @param {object} metadata - The metadata recorded about this term in this field\n */\n lunr.MatchData.prototype.add = function (term, field, metadata) {\n if (!(term in this.metadata)) {\n this.metadata[term] = Object.create(null);\n this.metadata[term][field] = metadata;\n return;\n }\n if (!(field in this.metadata[term])) {\n this.metadata[term][field] = metadata;\n return;\n }\n var metadataKeys = Object.keys(metadata);\n for (var i = 0; i < metadataKeys.length; i++) {\n var key = metadataKeys[i];\n if (key in this.metadata[term][field]) {\n this.metadata[term][field][key] = this.metadata[term][field][key].concat(metadata[key]);\n } else {\n this.metadata[term][field][key] = metadata[key];\n }\n }\n };\n /**\n * A lunr.Query provides a programmatic way of defining queries to be performed\n * against a {@link lunr.Index}.\n *\n * Prefer constructing a lunr.Query using the {@link lunr.Index#query} method\n * so the query object is pre-initialized with the right index fields.\n *\n * @constructor\n * @property {lunr.Query~Clause[]} clauses - An array of query clauses.\n * @property {string[]} allFields - An array of all available fields in a lunr.Index.\n */\n lunr.Query = function (allFields) {\n this.clauses = [];\n this.allFields = allFields;\n };\n\n /**\n * Constants for indicating what kind of automatic wildcard insertion will be used when constructing a query clause.\n *\n * This allows wildcards to be added to the beginning and end of a term without having to manually do any string\n * concatenation.\n *\n * The wildcard constants can be bitwise combined to select both leading and trailing wildcards.\n *\n * @constant\n * @default\n * @property {number} wildcard.NONE - The term will have no wildcards inserted, this is the default behaviour\n * @property {number} wildcard.LEADING - Prepend the term with a wildcard, unless a leading wildcard already exists\n * @property {number} wildcard.TRAILING - Append a wildcard to the term, unless a trailing wildcard already exists\n * @see lunr.Query~Clause\n * @see lunr.Query#clause\n * @see lunr.Query#term\n * @example query term with trailing wildcard\n * query.term('foo', { wildcard: lunr.Query.wildcard.TRAILING })\n * @example query term with leading and trailing wildcard\n * query.term('foo', {\n * wildcard: lunr.Query.wildcard.LEADING | lunr.Query.wildcard.TRAILING\n * })\n */\n\n lunr.Query.wildcard = new String(\"*\");\n lunr.Query.wildcard.NONE = 0;\n lunr.Query.wildcard.LEADING = 1;\n lunr.Query.wildcard.TRAILING = 2;\n\n /**\n * Constants for indicating what kind of presence a term must have in matching documents.\n *\n * @constant\n * @enum {number}\n * @see lunr.Query~Clause\n * @see lunr.Query#clause\n * @see lunr.Query#term\n * @example query term with required presence\n * query.term('foo', { presence: lunr.Query.presence.REQUIRED })\n */\n lunr.Query.presence = {\n /**\n * Term's presence in a document is optional, this is the default value.\n */\n OPTIONAL: 1,\n /**\n * Term's presence in a document is required, documents that do not contain\n * this term will not be returned.\n */\n REQUIRED: 2,\n /**\n * Term's presence in a document is prohibited, documents that do contain\n * this term will not be returned.\n */\n PROHIBITED: 3\n };\n\n /**\n * A single clause in a {@link lunr.Query} contains a term and details on how to\n * match that term against a {@link lunr.Index}.\n *\n * @typedef {Object} lunr.Query~Clause\n * @property {string[]} fields - The fields in an index this clause should be matched against.\n * @property {number} [boost=1] - Any boost that should be applied when matching this clause.\n * @property {number} [editDistance] - Whether the term should have fuzzy matching applied, and how fuzzy the match should be.\n * @property {boolean} [usePipeline] - Whether the term should be passed through the search pipeline.\n * @property {number} [wildcard=lunr.Query.wildcard.NONE] - Whether the term should have wildcards appended or prepended.\n * @property {number} [presence=lunr.Query.presence.OPTIONAL] - The terms presence in any matching documents.\n */\n\n /**\n * Adds a {@link lunr.Query~Clause} to this query.\n *\n * Unless the clause contains the fields to be matched all fields will be matched. In addition\n * a default boost of 1 is applied to the clause.\n *\n * @param {lunr.Query~Clause} clause - The clause to add to this query.\n * @see lunr.Query~Clause\n * @returns {lunr.Query}\n */\n lunr.Query.prototype.clause = function (clause) {\n if (!('fields' in clause)) {\n clause.fields = this.allFields;\n }\n if (!('boost' in clause)) {\n clause.boost = 1;\n }\n if (!('usePipeline' in clause)) {\n clause.usePipeline = true;\n }\n if (!('wildcard' in clause)) {\n clause.wildcard = lunr.Query.wildcard.NONE;\n }\n if (clause.wildcard & lunr.Query.wildcard.LEADING && clause.term.charAt(0) != lunr.Query.wildcard) {\n clause.term = \"*\" + clause.term;\n }\n if (clause.wildcard & lunr.Query.wildcard.TRAILING && clause.term.slice(-1) != lunr.Query.wildcard) {\n clause.term = \"\" + clause.term + \"*\";\n }\n if (!('presence' in clause)) {\n clause.presence = lunr.Query.presence.OPTIONAL;\n }\n this.clauses.push(clause);\n return this;\n };\n\n /**\n * A negated query is one in which every clause has a presence of\n * prohibited. These queries require some special processing to return\n * the expected results.\n *\n * @returns boolean\n */\n lunr.Query.prototype.isNegated = function () {\n for (var i = 0; i < this.clauses.length; i++) {\n if (this.clauses[i].presence != lunr.Query.presence.PROHIBITED) {\n return false;\n }\n }\n return true;\n };\n\n /**\n * Adds a term to the current query, under the covers this will create a {@link lunr.Query~Clause}\n * to the list of clauses that make up this query.\n *\n * The term is used as is, i.e. no tokenization will be performed by this method. Instead conversion\n * to a token or token-like string should be done before calling this method.\n *\n * The term will be converted to a string by calling `toString`. Multiple terms can be passed as an\n * array, each term in the array will share the same options.\n *\n * @param {object|object[]} term - The term(s) to add to the query.\n * @param {object} [options] - Any additional properties to add to the query clause.\n * @returns {lunr.Query}\n * @see lunr.Query#clause\n * @see lunr.Query~Clause\n * @example adding a single term to a query\n * query.term(\"foo\")\n * @example adding a single term to a query and specifying search fields, term boost and automatic trailing wildcard\n * query.term(\"foo\", {\n * fields: [\"title\"],\n * boost: 10,\n * wildcard: lunr.Query.wildcard.TRAILING\n * })\n * @example using lunr.tokenizer to convert a string to tokens before using them as terms\n * query.term(lunr.tokenizer(\"foo bar\"))\n */\n lunr.Query.prototype.term = function (term, options) {\n if (Array.isArray(term)) {\n term.forEach(function (t) {\n this.term(t, lunr.utils.clone(options));\n }, this);\n return this;\n }\n var clause = options || {};\n clause.term = term.toString();\n this.clause(clause);\n return this;\n };\n lunr.QueryParseError = function (message, start, end) {\n this.name = \"QueryParseError\";\n this.message = message;\n this.start = start;\n this.end = end;\n };\n lunr.QueryParseError.prototype = new Error();\n lunr.QueryLexer = function (str) {\n this.lexemes = [];\n this.str = str;\n this.length = str.length;\n this.pos = 0;\n this.start = 0;\n this.escapeCharPositions = [];\n };\n lunr.QueryLexer.prototype.run = function () {\n var state = lunr.QueryLexer.lexText;\n while (state) {\n state = state(this);\n }\n };\n lunr.QueryLexer.prototype.sliceString = function () {\n var subSlices = [],\n sliceStart = this.start,\n sliceEnd = this.pos;\n for (var i = 0; i < this.escapeCharPositions.length; i++) {\n sliceEnd = this.escapeCharPositions[i];\n subSlices.push(this.str.slice(sliceStart, sliceEnd));\n sliceStart = sliceEnd + 1;\n }\n subSlices.push(this.str.slice(sliceStart, this.pos));\n this.escapeCharPositions.length = 0;\n return subSlices.join('');\n };\n lunr.QueryLexer.prototype.emit = function (type) {\n this.lexemes.push({\n type: type,\n str: this.sliceString(),\n start: this.start,\n end: this.pos\n });\n this.start = this.pos;\n };\n lunr.QueryLexer.prototype.escapeCharacter = function () {\n this.escapeCharPositions.push(this.pos - 1);\n this.pos += 1;\n };\n lunr.QueryLexer.prototype.next = function () {\n if (this.pos >= this.length) {\n return lunr.QueryLexer.EOS;\n }\n var char = this.str.charAt(this.pos);\n this.pos += 1;\n return char;\n };\n lunr.QueryLexer.prototype.width = function () {\n return this.pos - this.start;\n };\n lunr.QueryLexer.prototype.ignore = function () {\n if (this.start == this.pos) {\n this.pos += 1;\n }\n this.start = this.pos;\n };\n lunr.QueryLexer.prototype.backup = function () {\n this.pos -= 1;\n };\n lunr.QueryLexer.prototype.acceptDigitRun = function () {\n var char, charCode;\n do {\n char = this.next();\n charCode = char.charCodeAt(0);\n } while (charCode > 47 && charCode < 58);\n if (char != lunr.QueryLexer.EOS) {\n this.backup();\n }\n };\n lunr.QueryLexer.prototype.more = function () {\n return this.pos < this.length;\n };\n lunr.QueryLexer.EOS = 'EOS';\n lunr.QueryLexer.FIELD = 'FIELD';\n lunr.QueryLexer.TERM = 'TERM';\n lunr.QueryLexer.EDIT_DISTANCE = 'EDIT_DISTANCE';\n lunr.QueryLexer.BOOST = 'BOOST';\n lunr.QueryLexer.PRESENCE = 'PRESENCE';\n lunr.QueryLexer.lexField = function (lexer) {\n lexer.backup();\n lexer.emit(lunr.QueryLexer.FIELD);\n lexer.ignore();\n return lunr.QueryLexer.lexText;\n };\n lunr.QueryLexer.lexTerm = function (lexer) {\n if (lexer.width() > 1) {\n lexer.backup();\n lexer.emit(lunr.QueryLexer.TERM);\n }\n lexer.ignore();\n if (lexer.more()) {\n return lunr.QueryLexer.lexText;\n }\n };\n lunr.QueryLexer.lexEditDistance = function (lexer) {\n lexer.ignore();\n lexer.acceptDigitRun();\n lexer.emit(lunr.QueryLexer.EDIT_DISTANCE);\n return lunr.QueryLexer.lexText;\n };\n lunr.QueryLexer.lexBoost = function (lexer) {\n lexer.ignore();\n lexer.acceptDigitRun();\n lexer.emit(lunr.QueryLexer.BOOST);\n return lunr.QueryLexer.lexText;\n };\n lunr.QueryLexer.lexEOS = function (lexer) {\n if (lexer.width() > 0) {\n lexer.emit(lunr.QueryLexer.TERM);\n }\n };\n\n // This matches the separator used when tokenising fields\n // within a document. These should match otherwise it is\n // not possible to search for some tokens within a document.\n //\n // It is possible for the user to change the separator on the\n // tokenizer so it _might_ clash with any other of the special\n // characters already used within the search string, e.g. :.\n //\n // This means that it is possible to change the separator in\n // such a way that makes some words unsearchable using a search\n // string.\n lunr.QueryLexer.termSeparator = lunr.tokenizer.separator;\n lunr.QueryLexer.lexText = function (lexer) {\n while (true) {\n var char = lexer.next();\n if (char == lunr.QueryLexer.EOS) {\n return lunr.QueryLexer.lexEOS;\n }\n\n // Escape character is '\\'\n if (char.charCodeAt(0) == 92) {\n lexer.escapeCharacter();\n continue;\n }\n if (char == \":\") {\n return lunr.QueryLexer.lexField;\n }\n if (char == \"~\") {\n lexer.backup();\n if (lexer.width() > 0) {\n lexer.emit(lunr.QueryLexer.TERM);\n }\n return lunr.QueryLexer.lexEditDistance;\n }\n if (char == \"^\") {\n lexer.backup();\n if (lexer.width() > 0) {\n lexer.emit(lunr.QueryLexer.TERM);\n }\n return lunr.QueryLexer.lexBoost;\n }\n\n // \"+\" indicates term presence is required\n // checking for length to ensure that only\n // leading \"+\" are considered\n if (char == \"+\" && lexer.width() === 1) {\n lexer.emit(lunr.QueryLexer.PRESENCE);\n return lunr.QueryLexer.lexText;\n }\n\n // \"-\" indicates term presence is prohibited\n // checking for length to ensure that only\n // leading \"-\" are considered\n if (char == \"-\" && lexer.width() === 1) {\n lexer.emit(lunr.QueryLexer.PRESENCE);\n return lunr.QueryLexer.lexText;\n }\n if (char.match(lunr.QueryLexer.termSeparator)) {\n return lunr.QueryLexer.lexTerm;\n }\n }\n };\n lunr.QueryParser = function (str, query) {\n this.lexer = new lunr.QueryLexer(str);\n this.query = query;\n this.currentClause = {};\n this.lexemeIdx = 0;\n };\n lunr.QueryParser.prototype.parse = function () {\n this.lexer.run();\n this.lexemes = this.lexer.lexemes;\n var state = lunr.QueryParser.parseClause;\n while (state) {\n state = state(this);\n }\n return this.query;\n };\n lunr.QueryParser.prototype.peekLexeme = function () {\n return this.lexemes[this.lexemeIdx];\n };\n lunr.QueryParser.prototype.consumeLexeme = function () {\n var lexeme = this.peekLexeme();\n this.lexemeIdx += 1;\n return lexeme;\n };\n lunr.QueryParser.prototype.nextClause = function () {\n var completedClause = this.currentClause;\n this.query.clause(completedClause);\n this.currentClause = {};\n };\n lunr.QueryParser.parseClause = function (parser) {\n var lexeme = parser.peekLexeme();\n if (lexeme == undefined) {\n return;\n }\n switch (lexeme.type) {\n case lunr.QueryLexer.PRESENCE:\n return lunr.QueryParser.parsePresence;\n case lunr.QueryLexer.FIELD:\n return lunr.QueryParser.parseField;\n case lunr.QueryLexer.TERM:\n return lunr.QueryParser.parseTerm;\n default:\n var errorMessage = \"expected either a field or a term, found \" + lexeme.type;\n if (lexeme.str.length >= 1) {\n errorMessage += \" with value '\" + lexeme.str + \"'\";\n }\n throw new lunr.QueryParseError(errorMessage, lexeme.start, lexeme.end);\n }\n };\n lunr.QueryParser.parsePresence = function (parser) {\n var lexeme = parser.consumeLexeme();\n if (lexeme == undefined) {\n return;\n }\n switch (lexeme.str) {\n case \"-\":\n parser.currentClause.presence = lunr.Query.presence.PROHIBITED;\n break;\n case \"+\":\n parser.currentClause.presence = lunr.Query.presence.REQUIRED;\n break;\n default:\n var errorMessage = \"unrecognised presence operator'\" + lexeme.str + \"'\";\n throw new lunr.QueryParseError(errorMessage, lexeme.start, lexeme.end);\n }\n var nextLexeme = parser.peekLexeme();\n if (nextLexeme == undefined) {\n var errorMessage = \"expecting term or field, found nothing\";\n throw new lunr.QueryParseError(errorMessage, lexeme.start, lexeme.end);\n }\n switch (nextLexeme.type) {\n case lunr.QueryLexer.FIELD:\n return lunr.QueryParser.parseField;\n case lunr.QueryLexer.TERM:\n return lunr.QueryParser.parseTerm;\n default:\n var errorMessage = \"expecting term or field, found '\" + nextLexeme.type + \"'\";\n throw new lunr.QueryParseError(errorMessage, nextLexeme.start, nextLexeme.end);\n }\n };\n lunr.QueryParser.parseField = function (parser) {\n var lexeme = parser.consumeLexeme();\n if (lexeme == undefined) {\n return;\n }\n if (parser.query.allFields.indexOf(lexeme.str) == -1) {\n var possibleFields = parser.query.allFields.map(function (f) {\n return \"'\" + f + \"'\";\n }).join(', '),\n errorMessage = \"unrecognised field '\" + lexeme.str + \"', possible fields: \" + possibleFields;\n throw new lunr.QueryParseError(errorMessage, lexeme.start, lexeme.end);\n }\n parser.currentClause.fields = [lexeme.str];\n var nextLexeme = parser.peekLexeme();\n if (nextLexeme == undefined) {\n var errorMessage = \"expecting term, found nothing\";\n throw new lunr.QueryParseError(errorMessage, lexeme.start, lexeme.end);\n }\n switch (nextLexeme.type) {\n case lunr.QueryLexer.TERM:\n return lunr.QueryParser.parseTerm;\n default:\n var errorMessage = \"expecting term, found '\" + nextLexeme.type + \"'\";\n throw new lunr.QueryParseError(errorMessage, nextLexeme.start, nextLexeme.end);\n }\n };\n lunr.QueryParser.parseTerm = function (parser) {\n var lexeme = parser.consumeLexeme();\n if (lexeme == undefined) {\n return;\n }\n parser.currentClause.term = lexeme.str.toLowerCase();\n if (lexeme.str.indexOf(\"*\") != -1) {\n parser.currentClause.usePipeline = false;\n }\n var nextLexeme = parser.peekLexeme();\n if (nextLexeme == undefined) {\n parser.nextClause();\n return;\n }\n switch (nextLexeme.type) {\n case lunr.QueryLexer.TERM:\n parser.nextClause();\n return lunr.QueryParser.parseTerm;\n case lunr.QueryLexer.FIELD:\n parser.nextClause();\n return lunr.QueryParser.parseField;\n case lunr.QueryLexer.EDIT_DISTANCE:\n return lunr.QueryParser.parseEditDistance;\n case lunr.QueryLexer.BOOST:\n return lunr.QueryParser.parseBoost;\n case lunr.QueryLexer.PRESENCE:\n parser.nextClause();\n return lunr.QueryParser.parsePresence;\n default:\n var errorMessage = \"Unexpected lexeme type '\" + nextLexeme.type + \"'\";\n throw new lunr.QueryParseError(errorMessage, nextLexeme.start, nextLexeme.end);\n }\n };\n lunr.QueryParser.parseEditDistance = function (parser) {\n var lexeme = parser.consumeLexeme();\n if (lexeme == undefined) {\n return;\n }\n var editDistance = parseInt(lexeme.str, 10);\n if (isNaN(editDistance)) {\n var errorMessage = \"edit distance must be numeric\";\n throw new lunr.QueryParseError(errorMessage, lexeme.start, lexeme.end);\n }\n parser.currentClause.editDistance = editDistance;\n var nextLexeme = parser.peekLexeme();\n if (nextLexeme == undefined) {\n parser.nextClause();\n return;\n }\n switch (nextLexeme.type) {\n case lunr.QueryLexer.TERM:\n parser.nextClause();\n return lunr.QueryParser.parseTerm;\n case lunr.QueryLexer.FIELD:\n parser.nextClause();\n return lunr.QueryParser.parseField;\n case lunr.QueryLexer.EDIT_DISTANCE:\n return lunr.QueryParser.parseEditDistance;\n case lunr.QueryLexer.BOOST:\n return lunr.QueryParser.parseBoost;\n case lunr.QueryLexer.PRESENCE:\n parser.nextClause();\n return lunr.QueryParser.parsePresence;\n default:\n var errorMessage = \"Unexpected lexeme type '\" + nextLexeme.type + \"'\";\n throw new lunr.QueryParseError(errorMessage, nextLexeme.start, nextLexeme.end);\n }\n };\n lunr.QueryParser.parseBoost = function (parser) {\n var lexeme = parser.consumeLexeme();\n if (lexeme == undefined) {\n return;\n }\n var boost = parseInt(lexeme.str, 10);\n if (isNaN(boost)) {\n var errorMessage = \"boost must be numeric\";\n throw new lunr.QueryParseError(errorMessage, lexeme.start, lexeme.end);\n }\n parser.currentClause.boost = boost;\n var nextLexeme = parser.peekLexeme();\n if (nextLexeme == undefined) {\n parser.nextClause();\n return;\n }\n switch (nextLexeme.type) {\n case lunr.QueryLexer.TERM:\n parser.nextClause();\n return lunr.QueryParser.parseTerm;\n case lunr.QueryLexer.FIELD:\n parser.nextClause();\n return lunr.QueryParser.parseField;\n case lunr.QueryLexer.EDIT_DISTANCE:\n return lunr.QueryParser.parseEditDistance;\n case lunr.QueryLexer.BOOST:\n return lunr.QueryParser.parseBoost;\n case lunr.QueryLexer.PRESENCE:\n parser.nextClause();\n return lunr.QueryParser.parsePresence;\n default:\n var errorMessage = \"Unexpected lexeme type '\" + nextLexeme.type + \"'\";\n throw new lunr.QueryParseError(errorMessage, nextLexeme.start, nextLexeme.end);\n }\n }\n\n /**\n * export the module via AMD, CommonJS or as a browser global\n * Export code from https://github.com/umdjs/umd/blob/master/returnExports.js\n */;\n (function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n // AMD. Register as an anonymous module.\n define(factory);\n } else if (typeof exports === 'object') {\n /**\n * Node. Does not work with strict CommonJS, but\n * only CommonJS-like enviroments that support module.exports,\n * like Node.\n */\n module.exports = factory();\n } else {\n // Browser globals (root is window)\n root.lunr = factory();\n }\n })(this, function () {\n /**\n * Just return a value to define the module export.\n * This example returns an object, but the module\n * can return a function as the exported value.\n */\n return lunr;\n });\n})();","module.exports = Paginator;\n\n// Paginator constructor\n//\n// `per_page` is the number of results per page, `length` is the number of\n// pages to display. They default to `25` and `10` respectively.\nfunction Paginator(per_page, length) {\n // You really should be calling this with `new Paginator`, but WHATEVER.\n if (!(this instanceof Paginator)) {\n return new Paginator(per_page, length);\n }\n\n // Woo, defaults!\n this.per_page = per_page || 25;\n this.length = length || 10;\n}\n\n// Build an object with all the necessary information for outputting pagination\n// controls.\n//\n// (new Paginator(paginator.build(100, 2)\nPaginator.prototype.build = function (total_results, current_page) {\n // We want the number of pages, rounded up to the nearest page.\n var total_pages = Math.ceil(total_results / this.per_page);\n\n // Ensure both total_results and current_page are treated as Numbers\n total_results = parseInt(total_results, 10);\n current_page = parseInt(current_page, 10) || 1;\n\n // Obviously we can't be on a negative or 0 page.\n if (current_page < 1) {\n current_page = 1;\n }\n // If the user has done something like /page/99999 we want to clamp that back\n // down.\n if (current_page > total_pages) {\n current_page = total_pages;\n }\n\n // This is the first page to be displayed as a numbered link.\n var first_page = Math.max(1, current_page - Math.floor(this.length / 2));\n\n // And here's the last page to be displayed specifically.\n var last_page = Math.min(total_pages, current_page + Math.floor(this.length / 2));\n\n // This is triggered if we're at or near one of the extremes; we won't have\n // enough page links. We need to adjust our bounds accordingly.\n if (last_page - first_page + 1 < this.length) {\n if (current_page < total_pages / 2) {\n last_page = Math.min(total_pages, last_page + (this.length - (last_page - first_page)));\n } else {\n first_page = Math.max(1, first_page - (this.length - (last_page - first_page)));\n }\n }\n\n // This can be triggered if the user wants an odd number of pages.\n if (last_page - first_page + 1 > this.length) {\n // We want to move towards whatever extreme we're closest to at the time.\n if (current_page > total_pages / 2) {\n first_page++;\n } else {\n last_page--;\n }\n }\n\n // First result on the page. This, along with the field below, can be used to\n // do \"showing x to y of z results\" style things.\n var first_result = this.per_page * (current_page - 1);\n if (first_result < 0) {\n first_result = 0;\n }\n\n // Last result on the page.\n var last_result = this.per_page * current_page - 1;\n if (last_result < 0) {\n last_result = 0;\n }\n if (last_result > Math.max(total_results - 1, 0)) {\n last_result = Math.max(total_results - 1, 0);\n }\n\n // GIMME THAT OBJECT\n return {\n total_pages: total_pages,\n pages: Math.min(last_page - first_page + 1, total_pages),\n current_page: current_page,\n first_page: first_page,\n last_page: last_page,\n previous_page: current_page - 1,\n next_page: current_page + 1,\n has_previous_page: current_page > 1,\n has_next_page: current_page < total_pages,\n total_results: total_results,\n results: Math.min(last_result - first_result + 1, total_results),\n first_result: first_result,\n last_result: last_result\n };\n};","module.exports = /******/function (modules) {\n // webpackBootstrap\n /******/ // The module cache\n /******/\n var installedModules = {};\n /******/\n /******/ // The require function\n /******/\n function __webpack_require__(moduleId) {\n /******/\n /******/ // Check if module is in cache\n /******/if (installedModules[moduleId]) /******/return installedModules[moduleId].exports;\n /******/\n /******/ // Create a new module (and put it into the cache)\n /******/\n var module = installedModules[moduleId] = {\n /******/exports: {},\n /******/id: moduleId,\n /******/loaded: false\n /******/\n };\n /******/\n /******/ // Execute the module function\n /******/\n modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n /******/\n /******/ // Flag the module as loaded\n /******/\n module.loaded = true;\n /******/\n /******/ // Return the exports of the module\n /******/\n return module.exports;\n /******/\n }\n /******/\n /******/\n /******/ // expose the modules object (__webpack_modules__)\n /******/\n __webpack_require__.m = modules;\n /******/\n /******/ // expose the module cache\n /******/\n __webpack_require__.c = installedModules;\n /******/\n /******/ // __webpack_public_path__\n /******/\n __webpack_require__.p = \"\";\n /******/\n /******/ // Load entry module and return exports\n /******/\n return __webpack_require__(0);\n /******/\n}\n/************************************************************************/\n/******/([/* 0 */\n/***/function (module, exports, __webpack_require__) {\n module.exports = __webpack_require__(1);\n\n /***/\n}, /* 1 */\n/***/function (module, exports, __webpack_require__) {\n 'use strict';\n\n Object.defineProperty(exports, '__esModule', {\n value: true\n });\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n 'default': obj\n };\n }\n var _Highlighter = __webpack_require__(2);\n var _Highlighter2 = _interopRequireDefault(_Highlighter);\n exports['default'] = _Highlighter2['default'];\n module.exports = exports['default'];\n\n /***/\n}, /* 2 */\n/***/function (module, exports, __webpack_require__) {\n 'use strict';\n\n Object.defineProperty(exports, '__esModule', {\n value: true\n });\n var _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n exports['default'] = Highlighter;\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n 'default': obj\n };\n }\n function _objectWithoutProperties(obj, keys) {\n var target = {};\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n return target;\n }\n var _highlightWordsCore = __webpack_require__(3);\n var _propTypes = __webpack_require__(4);\n var _propTypes2 = _interopRequireDefault(_propTypes);\n var _react = __webpack_require__(14);\n var _memoizeOne = __webpack_require__(15);\n var _memoizeOne2 = _interopRequireDefault(_memoizeOne);\n Highlighter.propTypes = {\n activeClassName: _propTypes2['default'].string,\n activeIndex: _propTypes2['default'].number,\n activeStyle: _propTypes2['default'].object,\n autoEscape: _propTypes2['default'].bool,\n className: _propTypes2['default'].string,\n findChunks: _propTypes2['default'].func,\n highlightClassName: _propTypes2['default'].oneOfType([_propTypes2['default'].object, _propTypes2['default'].string]),\n highlightStyle: _propTypes2['default'].object,\n highlightTag: _propTypes2['default'].oneOfType([_propTypes2['default'].node, _propTypes2['default'].func, _propTypes2['default'].string]),\n sanitize: _propTypes2['default'].func,\n searchWords: _propTypes2['default'].arrayOf(_propTypes2['default'].oneOfType([_propTypes2['default'].string, _propTypes2['default'].instanceOf(RegExp)])).isRequired,\n textToHighlight: _propTypes2['default'].string.isRequired,\n unhighlightClassName: _propTypes2['default'].string,\n unhighlightStyle: _propTypes2['default'].object\n };\n\n /**\r\n * Highlights all occurrences of search terms (searchText) within a string (textToHighlight).\r\n * This function returns an array of strings and s (wrapping highlighted words).\r\n */\n\n function Highlighter(_ref) {\n var _ref$activeClassName = _ref.activeClassName;\n var activeClassName = _ref$activeClassName === undefined ? '' : _ref$activeClassName;\n var _ref$activeIndex = _ref.activeIndex;\n var activeIndex = _ref$activeIndex === undefined ? -1 : _ref$activeIndex;\n var activeStyle = _ref.activeStyle;\n var autoEscape = _ref.autoEscape;\n var _ref$caseSensitive = _ref.caseSensitive;\n var caseSensitive = _ref$caseSensitive === undefined ? false : _ref$caseSensitive;\n var className = _ref.className;\n var findChunks = _ref.findChunks;\n var _ref$highlightClassName = _ref.highlightClassName;\n var highlightClassName = _ref$highlightClassName === undefined ? '' : _ref$highlightClassName;\n var _ref$highlightStyle = _ref.highlightStyle;\n var highlightStyle = _ref$highlightStyle === undefined ? {} : _ref$highlightStyle;\n var _ref$highlightTag = _ref.highlightTag;\n var highlightTag = _ref$highlightTag === undefined ? 'mark' : _ref$highlightTag;\n var sanitize = _ref.sanitize;\n var searchWords = _ref.searchWords;\n var textToHighlight = _ref.textToHighlight;\n var _ref$unhighlightClassName = _ref.unhighlightClassName;\n var unhighlightClassName = _ref$unhighlightClassName === undefined ? '' : _ref$unhighlightClassName;\n var unhighlightStyle = _ref.unhighlightStyle;\n var rest = _objectWithoutProperties(_ref, ['activeClassName', 'activeIndex', 'activeStyle', 'autoEscape', 'caseSensitive', 'className', 'findChunks', 'highlightClassName', 'highlightStyle', 'highlightTag', 'sanitize', 'searchWords', 'textToHighlight', 'unhighlightClassName', 'unhighlightStyle']);\n var chunks = (0, _highlightWordsCore.findAll)({\n autoEscape: autoEscape,\n caseSensitive: caseSensitive,\n findChunks: findChunks,\n sanitize: sanitize,\n searchWords: searchWords,\n textToHighlight: textToHighlight\n });\n var HighlightTag = highlightTag;\n var highlightIndex = -1;\n var highlightClassNames = '';\n var highlightStyles = undefined;\n var lowercaseProps = function lowercaseProps(object) {\n var mapped = {};\n for (var key in object) {\n mapped[key.toLowerCase()] = object[key];\n }\n return mapped;\n };\n var memoizedLowercaseProps = (0, _memoizeOne2['default'])(lowercaseProps);\n return (0, _react.createElement)('span', _extends({\n className: className\n }, rest, {\n children: chunks.map(function (chunk, index) {\n var text = textToHighlight.substr(chunk.start, chunk.end - chunk.start);\n if (chunk.highlight) {\n highlightIndex++;\n var highlightClass = undefined;\n if (typeof highlightClassName === 'object') {\n if (!caseSensitive) {\n highlightClassName = memoizedLowercaseProps(highlightClassName);\n highlightClass = highlightClassName[text.toLowerCase()];\n } else {\n highlightClass = highlightClassName[text];\n }\n } else {\n highlightClass = highlightClassName;\n }\n var isActive = highlightIndex === +activeIndex;\n highlightClassNames = highlightClass + ' ' + (isActive ? activeClassName : '');\n highlightStyles = isActive === true && activeStyle != null ? Object.assign({}, highlightStyle, activeStyle) : highlightStyle;\n var props = {\n children: text,\n className: highlightClassNames,\n key: index,\n style: highlightStyles\n };\n\n // Don't attach arbitrary props to DOM elements; this triggers React DEV warnings (https://fb.me/react-unknown-prop)\n // Only pass through the highlightIndex attribute for custom components.\n if (typeof HighlightTag !== 'string') {\n props.highlightIndex = highlightIndex;\n }\n return (0, _react.createElement)(HighlightTag, props);\n } else {\n return (0, _react.createElement)('span', {\n children: text,\n className: unhighlightClassName,\n key: index,\n style: unhighlightStyle\n });\n }\n })\n }));\n }\n module.exports = exports['default'];\n\n /***/\n}, /* 3 */\n/***/function (module, exports) {\n module.exports = /******/function (modules) {\n // webpackBootstrap\n /******/ // The module cache\n /******/\n var installedModules = {};\n /******/\n /******/ // The require function\n /******/\n function __webpack_require__(moduleId) {\n /******/\n /******/ // Check if module is in cache\n /******/if (installedModules[moduleId]) /******/return installedModules[moduleId].exports;\n /******/\n /******/ // Create a new module (and put it into the cache)\n /******/\n var module = installedModules[moduleId] = {\n /******/exports: {},\n /******/id: moduleId,\n /******/loaded: false\n /******/\n };\n /******/\n /******/ // Execute the module function\n /******/\n modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n /******/\n /******/ // Flag the module as loaded\n /******/\n module.loaded = true;\n /******/\n /******/ // Return the exports of the module\n /******/\n return module.exports;\n /******/\n }\n /******/\n /******/\n /******/ // expose the modules object (__webpack_modules__)\n /******/\n __webpack_require__.m = modules;\n /******/\n /******/ // expose the module cache\n /******/\n __webpack_require__.c = installedModules;\n /******/\n /******/ // __webpack_public_path__\n /******/\n __webpack_require__.p = \"\";\n /******/\n /******/ // Load entry module and return exports\n /******/\n return __webpack_require__(0);\n /******/\n }\n /************************************************************************/\n /******/([/* 0 */\n /***/function (module, exports, __webpack_require__) {\n module.exports = __webpack_require__(1);\n\n /***/\n }, /* 1 */\n /***/function (module, exports, __webpack_require__) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n var _utils = __webpack_require__(2);\n Object.defineProperty(exports, 'combineChunks', {\n enumerable: true,\n get: function get() {\n return _utils.combineChunks;\n }\n });\n Object.defineProperty(exports, 'fillInChunks', {\n enumerable: true,\n get: function get() {\n return _utils.fillInChunks;\n }\n });\n Object.defineProperty(exports, 'findAll', {\n enumerable: true,\n get: function get() {\n return _utils.findAll;\n }\n });\n Object.defineProperty(exports, 'findChunks', {\n enumerable: true,\n get: function get() {\n return _utils.findChunks;\n }\n });\n\n /***/\n }, /* 2 */\n /***/function (module, exports) {\n 'use strict';\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n /**\n * Creates an array of chunk objects representing both higlightable and non highlightable pieces of text that match each search word.\n * @return Array of \"chunks\" (where a Chunk is { start:number, end:number, highlight:boolean })\n */\n var findAll = exports.findAll = function findAll(_ref) {\n var autoEscape = _ref.autoEscape,\n _ref$caseSensitive = _ref.caseSensitive,\n caseSensitive = _ref$caseSensitive === undefined ? false : _ref$caseSensitive,\n _ref$findChunks = _ref.findChunks,\n findChunks = _ref$findChunks === undefined ? defaultFindChunks : _ref$findChunks,\n sanitize = _ref.sanitize,\n searchWords = _ref.searchWords,\n textToHighlight = _ref.textToHighlight;\n return fillInChunks({\n chunksToHighlight: combineChunks({\n chunks: findChunks({\n autoEscape: autoEscape,\n caseSensitive: caseSensitive,\n sanitize: sanitize,\n searchWords: searchWords,\n textToHighlight: textToHighlight\n })\n }),\n totalLength: textToHighlight ? textToHighlight.length : 0\n });\n };\n\n /**\n * Takes an array of {start:number, end:number} objects and combines chunks that overlap into single chunks.\n * @return {start:number, end:number}[]\n */\n var combineChunks = exports.combineChunks = function combineChunks(_ref2) {\n var chunks = _ref2.chunks;\n chunks = chunks.sort(function (first, second) {\n return first.start - second.start;\n }).reduce(function (processedChunks, nextChunk) {\n // First chunk just goes straight in the array...\n if (processedChunks.length === 0) {\n return [nextChunk];\n } else {\n // ... subsequent chunks get checked to see if they overlap...\n var prevChunk = processedChunks.pop();\n if (nextChunk.start <= prevChunk.end) {\n // It may be the case that prevChunk completely surrounds nextChunk, so take the\n // largest of the end indeces.\n var endIndex = Math.max(prevChunk.end, nextChunk.end);\n processedChunks.push({\n start: prevChunk.start,\n end: endIndex\n });\n } else {\n processedChunks.push(prevChunk, nextChunk);\n }\n return processedChunks;\n }\n }, []);\n return chunks;\n };\n\n /**\n * Examine text for any matches.\n * If we find matches, add them to the returned array as a \"chunk\" object ({start:number, end:number}).\n * @return {start:number, end:number}[]\n */\n var defaultFindChunks = function defaultFindChunks(_ref3) {\n var autoEscape = _ref3.autoEscape,\n caseSensitive = _ref3.caseSensitive,\n _ref3$sanitize = _ref3.sanitize,\n sanitize = _ref3$sanitize === undefined ? identity : _ref3$sanitize,\n searchWords = _ref3.searchWords,\n textToHighlight = _ref3.textToHighlight;\n textToHighlight = sanitize(textToHighlight);\n return searchWords.filter(function (searchWord) {\n return searchWord;\n }) // Remove empty words\n .reduce(function (chunks, searchWord) {\n searchWord = sanitize(searchWord);\n if (autoEscape) {\n searchWord = escapeRegExpFn(searchWord);\n }\n var regex = new RegExp(searchWord, caseSensitive ? 'g' : 'gi');\n var match = void 0;\n while (match = regex.exec(textToHighlight)) {\n var start = match.index;\n var end = regex.lastIndex;\n // We do not return zero-length matches\n if (end > start) {\n chunks.push({\n start: start,\n end: end\n });\n }\n\n // Prevent browsers like Firefox from getting stuck in an infinite loop\n // See http://www.regexguru.com/2008/04/watch-out-for-zero-length-matches/\n if (match.index == regex.lastIndex) {\n regex.lastIndex++;\n }\n }\n return chunks;\n }, []);\n };\n // Allow the findChunks to be overridden in findAll,\n // but for backwards compatibility we export as the old name\n exports.findChunks = defaultFindChunks;\n\n /**\n * Given a set of chunks to highlight, create an additional set of chunks\n * to represent the bits of text between the highlighted text.\n * @param chunksToHighlight {start:number, end:number}[]\n * @param totalLength number\n * @return {start:number, end:number, highlight:boolean}[]\n */\n\n var fillInChunks = exports.fillInChunks = function fillInChunks(_ref4) {\n var chunksToHighlight = _ref4.chunksToHighlight,\n totalLength = _ref4.totalLength;\n var allChunks = [];\n var append = function append(start, end, highlight) {\n if (end - start > 0) {\n allChunks.push({\n start: start,\n end: end,\n highlight: highlight\n });\n }\n };\n if (chunksToHighlight.length === 0) {\n append(0, totalLength, false);\n } else {\n var lastIndex = 0;\n chunksToHighlight.forEach(function (chunk) {\n append(lastIndex, chunk.start, false);\n append(chunk.start, chunk.end, true);\n lastIndex = chunk.end;\n });\n append(lastIndex, totalLength, false);\n }\n return allChunks;\n };\n function identity(value) {\n return value;\n }\n function escapeRegExpFn(str) {\n return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n }\n\n /***/\n }\n /******/]);\n\n /***/\n}, /* 4 */\n/***/function (module, exports, __webpack_require__) {\n /* WEBPACK VAR INJECTION */(function (process) {\n /**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n if (process.env.NODE_ENV !== 'production') {\n var REACT_ELEMENT_TYPE = typeof Symbol === 'function' && Symbol.for && Symbol.for('react.element') || 0xeac7;\n var isValidElement = function isValidElement(object) {\n return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;\n };\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = __webpack_require__(6)(isValidElement, throwOnDirectAccess);\n } else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = __webpack_require__(13)();\n }\n\n /* WEBPACK VAR INJECTION */\n }).call(exports, __webpack_require__(5));\n\n /***/\n}, /* 5 */\n/***/function (module, exports) {\n // shim for using process in browser\n var process = module.exports = {};\n\n // cached from whatever global is present so that test runners that stub it\n // don't break things. But we need to wrap it in a try catch in case it is\n // wrapped in strict mode code which doesn't define any globals. It's inside a\n // function because try/catches deoptimize in certain engines.\n\n var cachedSetTimeout;\n var cachedClearTimeout;\n function defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n }\n function defaultClearTimeout() {\n throw new Error('clearTimeout has not been defined');\n }\n (function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n })();\n function runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n }\n // if setTimeout wasn't available but was latter defined\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n }\n function runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n }\n // if clearTimeout wasn't available but was latter defined\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n }\n var queue = [];\n var draining = false;\n var currentQueue;\n var queueIndex = -1;\n function cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n draining = false;\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n if (queue.length) {\n drainQueue();\n }\n }\n function drainQueue() {\n if (draining) {\n return;\n }\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n var len = queue.length;\n while (len) {\n currentQueue = queue;\n queue = [];\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n queueIndex = -1;\n len = queue.length;\n }\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n }\n process.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n queue.push(new Item(fun, args));\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n };\n\n // v8 likes predictible objects\n function Item(fun, array) {\n this.fun = fun;\n this.array = array;\n }\n Item.prototype.run = function () {\n this.fun.apply(null, this.array);\n };\n process.title = 'browser';\n process.browser = true;\n process.env = {};\n process.argv = [];\n process.version = ''; // empty string to avoid regexp issues\n process.versions = {};\n function noop() {}\n process.on = noop;\n process.addListener = noop;\n process.once = noop;\n process.off = noop;\n process.removeListener = noop;\n process.removeAllListeners = noop;\n process.emit = noop;\n process.prependListener = noop;\n process.prependOnceListener = noop;\n process.listeners = function (name) {\n return [];\n };\n process.binding = function (name) {\n throw new Error('process.binding is not supported');\n };\n process.cwd = function () {\n return '/';\n };\n process.chdir = function (dir) {\n throw new Error('process.chdir is not supported');\n };\n process.umask = function () {\n return 0;\n };\n\n /***/\n}, /* 6 */\n/***/function (module, exports, __webpack_require__) {\n /* WEBPACK VAR INJECTION */(function (process) {\n /**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n 'use strict';\n\n var emptyFunction = __webpack_require__(7);\n var invariant = __webpack_require__(8);\n var warning = __webpack_require__(9);\n var assign = __webpack_require__(10);\n var ReactPropTypesSecret = __webpack_require__(11);\n var checkPropTypes = __webpack_require__(12);\n module.exports = function (isValidElement, throwOnDirectAccess) {\n /* global Symbol */\n var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;\n var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.\n\n /**\n * Returns the iterator method function contained on the iterable object.\n *\n * Be sure to invoke the function with the iterable as context:\n *\n * var iteratorFn = getIteratorFn(myIterable);\n * if (iteratorFn) {\n * var iterator = iteratorFn.call(myIterable);\n * ...\n * }\n *\n * @param {?object} maybeIterable\n * @return {?function}\n */\n function getIteratorFn(maybeIterable) {\n var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);\n if (typeof iteratorFn === 'function') {\n return iteratorFn;\n }\n }\n\n /**\n * Collection of methods that allow declaration and validation of props that are\n * supplied to React components. Example usage:\n *\n * var Props = require('ReactPropTypes');\n * var MyArticle = React.createClass({\n * propTypes: {\n * // An optional string prop named \"description\".\n * description: Props.string,\n *\n * // A required enum prop named \"category\".\n * category: Props.oneOf(['News','Photos']).isRequired,\n *\n * // A prop named \"dialog\" that requires an instance of Dialog.\n * dialog: Props.instanceOf(Dialog).isRequired\n * },\n * render: function() { ... }\n * });\n *\n * A more formal specification of how these methods are used:\n *\n * type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)\n * decl := ReactPropTypes.{type}(.isRequired)?\n *\n * Each and every declaration produces a function with the same signature. This\n * allows the creation of custom validation functions. For example:\n *\n * var MyLink = React.createClass({\n * propTypes: {\n * // An optional string or URI prop named \"href\".\n * href: function(props, propName, componentName) {\n * var propValue = props[propName];\n * if (propValue != null && typeof propValue !== 'string' &&\n * !(propValue instanceof URI)) {\n * return new Error(\n * 'Expected a string or an URI for ' + propName + ' in ' +\n * componentName\n * );\n * }\n * }\n * },\n * render: function() {...}\n * });\n *\n * @internal\n */\n\n var ANONYMOUS = '<>';\n\n // Important!\n // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.\n var ReactPropTypes = {\n array: createPrimitiveTypeChecker('array'),\n bool: createPrimitiveTypeChecker('boolean'),\n func: createPrimitiveTypeChecker('function'),\n number: createPrimitiveTypeChecker('number'),\n object: createPrimitiveTypeChecker('object'),\n string: createPrimitiveTypeChecker('string'),\n symbol: createPrimitiveTypeChecker('symbol'),\n any: createAnyTypeChecker(),\n arrayOf: createArrayOfTypeChecker,\n element: createElementTypeChecker(),\n instanceOf: createInstanceTypeChecker,\n node: createNodeChecker(),\n objectOf: createObjectOfTypeChecker,\n oneOf: createEnumTypeChecker,\n oneOfType: createUnionTypeChecker,\n shape: createShapeTypeChecker,\n exact: createStrictShapeTypeChecker\n };\n\n /**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n /*eslint-disable no-self-compare*/\n function is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y;\n }\n }\n /*eslint-enable no-self-compare*/\n\n /**\n * We use an Error-like object for backward compatibility as people may call\n * PropTypes directly and inspect their output. However, we don't use real\n * Errors anymore. We don't inspect their stack anyway, and creating them\n * is prohibitively expensive if they are created too often, such as what\n * happens in oneOfType() for any type before the one that matched.\n */\n function PropTypeError(message) {\n this.message = message;\n this.stack = '';\n }\n // Make `instanceof Error` still work for returned errors.\n PropTypeError.prototype = Error.prototype;\n function createChainableTypeChecker(validate) {\n if (process.env.NODE_ENV !== 'production') {\n var manualPropTypeCallCache = {};\n var manualPropTypeWarningCount = 0;\n }\n function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {\n componentName = componentName || ANONYMOUS;\n propFullName = propFullName || propName;\n if (secret !== ReactPropTypesSecret) {\n if (throwOnDirectAccess) {\n // New behavior only for users of `prop-types` package\n invariant(false, 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' + 'Use `PropTypes.checkPropTypes()` to call them. ' + 'Read more at http://fb.me/use-check-prop-types');\n } else if (process.env.NODE_ENV !== 'production' && typeof console !== 'undefined') {\n // Old behavior for people using React.PropTypes\n var cacheKey = componentName + ':' + propName;\n if (!manualPropTypeCallCache[cacheKey] &&\n // Avoid spamming the console because they are often not actionable except for lib authors\n manualPropTypeWarningCount < 3) {\n warning(false, 'You are manually calling a React.PropTypes validation ' + 'function for the `%s` prop on `%s`. This is deprecated ' + 'and will throw in the standalone `prop-types` package. ' + 'You may be seeing this warning due to a third-party PropTypes ' + 'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.', propFullName, componentName);\n manualPropTypeCallCache[cacheKey] = true;\n manualPropTypeWarningCount++;\n }\n }\n }\n if (props[propName] == null) {\n if (isRequired) {\n if (props[propName] === null) {\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));\n }\n return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));\n }\n return null;\n } else {\n return validate(props, propName, componentName, location, propFullName);\n }\n }\n var chainedCheckType = checkType.bind(null, false);\n chainedCheckType.isRequired = checkType.bind(null, true);\n return chainedCheckType;\n }\n function createPrimitiveTypeChecker(expectedType) {\n function validate(props, propName, componentName, location, propFullName, secret) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== expectedType) {\n // `propValue` being instance of, say, date/regexp, pass the 'object'\n // check, but we can offer a more precise error message here rather than\n // 'of type `object`'.\n var preciseType = getPreciseType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createAnyTypeChecker() {\n return createChainableTypeChecker(emptyFunction.thatReturnsNull);\n }\n function createArrayOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');\n }\n var propValue = props[propName];\n if (!Array.isArray(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));\n }\n for (var i = 0; i < propValue.length; i++) {\n var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createElementTypeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n if (!isValidElement(propValue)) {\n var propType = getPropType(propValue);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createInstanceTypeChecker(expectedClass) {\n function validate(props, propName, componentName, location, propFullName) {\n if (!(props[propName] instanceof expectedClass)) {\n var expectedClassName = expectedClass.name || ANONYMOUS;\n var actualClassName = getClassName(props[propName]);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createEnumTypeChecker(expectedValues) {\n if (!Array.isArray(expectedValues)) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOf, expected an instance of array.') : void 0;\n return emptyFunction.thatReturnsNull;\n }\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n for (var i = 0; i < expectedValues.length; i++) {\n if (is(propValue, expectedValues[i])) {\n return null;\n }\n }\n var valuesString = JSON.stringify(expectedValues);\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + propValue + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));\n }\n return createChainableTypeChecker(validate);\n }\n function createObjectOfTypeChecker(typeChecker) {\n function validate(props, propName, componentName, location, propFullName) {\n if (typeof typeChecker !== 'function') {\n return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');\n }\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));\n }\n for (var key in propValue) {\n if (propValue.hasOwnProperty(key)) {\n var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error instanceof Error) {\n return error;\n }\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createUnionTypeChecker(arrayOfTypeCheckers) {\n if (!Array.isArray(arrayOfTypeCheckers)) {\n process.env.NODE_ENV !== 'production' ? warning(false, 'Invalid argument supplied to oneOfType, expected an instance of array.') : void 0;\n return emptyFunction.thatReturnsNull;\n }\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (typeof checker !== 'function') {\n warning(false, 'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' + 'received %s at index %s.', getPostfixForTypeWarning(checker), i);\n return emptyFunction.thatReturnsNull;\n }\n }\n function validate(props, propName, componentName, location, propFullName) {\n for (var i = 0; i < arrayOfTypeCheckers.length; i++) {\n var checker = arrayOfTypeCheckers[i];\n if (checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret) == null) {\n return null;\n }\n }\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`.'));\n }\n return createChainableTypeChecker(validate);\n }\n function createNodeChecker() {\n function validate(props, propName, componentName, location, propFullName) {\n if (!isNode(props[propName])) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n for (var key in shapeTypes) {\n var checker = shapeTypes[key];\n if (!checker) {\n continue;\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function createStrictShapeTypeChecker(shapeTypes) {\n function validate(props, propName, componentName, location, propFullName) {\n var propValue = props[propName];\n var propType = getPropType(propValue);\n if (propType !== 'object') {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));\n }\n // We need to check all keys in case some are required but missing from\n // props.\n var allKeys = assign({}, props[propName], shapeTypes);\n for (var key in allKeys) {\n var checker = shapeTypes[key];\n if (!checker) {\n return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' + '\\nBad object: ' + JSON.stringify(props[propName], null, ' ') + '\\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, ' '));\n }\n var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);\n if (error) {\n return error;\n }\n }\n return null;\n }\n return createChainableTypeChecker(validate);\n }\n function isNode(propValue) {\n switch (typeof propValue) {\n case 'number':\n case 'string':\n case 'undefined':\n return true;\n case 'boolean':\n return !propValue;\n case 'object':\n if (Array.isArray(propValue)) {\n return propValue.every(isNode);\n }\n if (propValue === null || isValidElement(propValue)) {\n return true;\n }\n var iteratorFn = getIteratorFn(propValue);\n if (iteratorFn) {\n var iterator = iteratorFn.call(propValue);\n var step;\n if (iteratorFn !== propValue.entries) {\n while (!(step = iterator.next()).done) {\n if (!isNode(step.value)) {\n return false;\n }\n }\n } else {\n // Iterator will provide entry [k,v] tuples rather than values.\n while (!(step = iterator.next()).done) {\n var entry = step.value;\n if (entry) {\n if (!isNode(entry[1])) {\n return false;\n }\n }\n }\n }\n } else {\n return false;\n }\n return true;\n default:\n return false;\n }\n }\n function isSymbol(propType, propValue) {\n // Native Symbol.\n if (propType === 'symbol') {\n return true;\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue['@@toStringTag'] === 'Symbol') {\n return true;\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === 'function' && propValue instanceof Symbol) {\n return true;\n }\n return false;\n }\n\n // Equivalent of `typeof` but with special handling for array and regexp.\n function getPropType(propValue) {\n var propType = typeof propValue;\n if (Array.isArray(propValue)) {\n return 'array';\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return 'object';\n }\n if (isSymbol(propType, propValue)) {\n return 'symbol';\n }\n return propType;\n }\n\n // This handles more types than `getPropType`. Only used for error messages.\n // See `createPrimitiveTypeChecker`.\n function getPreciseType(propValue) {\n if (typeof propValue === 'undefined' || propValue === null) {\n return '' + propValue;\n }\n var propType = getPropType(propValue);\n if (propType === 'object') {\n if (propValue instanceof Date) {\n return 'date';\n } else if (propValue instanceof RegExp) {\n return 'regexp';\n }\n }\n return propType;\n }\n\n // Returns a string that is postfixed to a warning about an invalid type.\n // For example, \"undefined\" or \"of type array\"\n function getPostfixForTypeWarning(value) {\n var type = getPreciseType(value);\n switch (type) {\n case 'array':\n case 'object':\n return 'an ' + type;\n case 'boolean':\n case 'date':\n case 'regexp':\n return 'a ' + type;\n default:\n return type;\n }\n }\n\n // Returns class name of the object, if any.\n function getClassName(propValue) {\n if (!propValue.constructor || !propValue.constructor.name) {\n return ANONYMOUS;\n }\n return propValue.constructor.name;\n }\n ReactPropTypes.checkPropTypes = checkPropTypes;\n ReactPropTypes.PropTypes = ReactPropTypes;\n return ReactPropTypes;\n };\n\n /* WEBPACK VAR INJECTION */\n }).call(exports, __webpack_require__(5));\n\n /***/\n}, /* 7 */\n/***/function (module, exports) {\n \"use strict\";\n\n /**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * \n */\n function makeEmptyFunction(arg) {\n return function () {\n return arg;\n };\n }\n\n /**\n * This function accepts and discards inputs; it has no side effects. This is\n * primarily useful idiomatically for overridable function endpoints which\n * always need to be callable, since JS lacks a null-call idiom ala Cocoa.\n */\n var emptyFunction = function emptyFunction() {};\n emptyFunction.thatReturns = makeEmptyFunction;\n emptyFunction.thatReturnsFalse = makeEmptyFunction(false);\n emptyFunction.thatReturnsTrue = makeEmptyFunction(true);\n emptyFunction.thatReturnsNull = makeEmptyFunction(null);\n emptyFunction.thatReturnsThis = function () {\n return this;\n };\n emptyFunction.thatReturnsArgument = function (arg) {\n return arg;\n };\n module.exports = emptyFunction;\n\n /***/\n}, /* 8 */\n/***/function (module, exports, __webpack_require__) {\n /* WEBPACK VAR INJECTION */(function (process) {\n /**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n 'use strict';\n\n /**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n var validateFormat = function validateFormat(format) {};\n if (process.env.NODE_ENV !== 'production') {\n validateFormat = function validateFormat(format) {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n };\n }\n function invariant(condition, format, a, b, c, d, e, f) {\n validateFormat(format);\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error('Minified exception occurred; use the non-minified dev environment ' + 'for the full error message and additional helpful warnings.');\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(format.replace(/%s/g, function () {\n return args[argIndex++];\n }));\n error.name = 'Invariant Violation';\n }\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n }\n module.exports = invariant;\n /* WEBPACK VAR INJECTION */\n }).call(exports, __webpack_require__(5));\n\n /***/\n}, /* 9 */\n/***/function (module, exports, __webpack_require__) {\n /* WEBPACK VAR INJECTION */(function (process) {\n /**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n\n 'use strict';\n\n var emptyFunction = __webpack_require__(7);\n\n /**\n * Similar to invariant but only logs a warning if the condition is not met.\n * This can be used to log issues in development environments in critical\n * paths. Removing the logging code for production environments will keep the\n * same logic and follow the same code paths.\n */\n\n var warning = emptyFunction;\n if (process.env.NODE_ENV !== 'production') {\n var printWarning = function printWarning(format) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n var argIndex = 0;\n var message = 'Warning: ' + format.replace(/%s/g, function () {\n return args[argIndex++];\n });\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n warning = function warning(condition, format) {\n if (format === undefined) {\n throw new Error('`warning(condition, format, ...args)` requires a warning ' + 'message argument');\n }\n if (format.indexOf('Failed Composite propType: ') === 0) {\n return; // Ignore CompositeComponent proptype check.\n }\n\n if (!condition) {\n for (var _len2 = arguments.length, args = Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) {\n args[_key2 - 2] = arguments[_key2];\n }\n printWarning.apply(undefined, [format].concat(args));\n }\n };\n }\n module.exports = warning;\n /* WEBPACK VAR INJECTION */\n }).call(exports, __webpack_require__(5));\n\n /***/\n}, /* 10 */\n/***/function (module, exports) {\n /*\n object-assign\n (c) Sindre Sorhus\n @license MIT\n */\n\n 'use strict';\n\n /* eslint-disable no-unused-vars */\n var getOwnPropertySymbols = Object.getOwnPropertySymbols;\n var hasOwnProperty = Object.prototype.hasOwnProperty;\n var propIsEnumerable = Object.prototype.propertyIsEnumerable;\n function toObject(val) {\n if (val === null || val === undefined) {\n throw new TypeError('Object.assign cannot be called with null or undefined');\n }\n return Object(val);\n }\n function shouldUseNative() {\n try {\n if (!Object.assign) {\n return false;\n }\n\n // Detect buggy property enumeration order in older V8 versions.\n\n // https://bugs.chromium.org/p/v8/issues/detail?id=4118\n var test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n test1[5] = 'de';\n if (Object.getOwnPropertyNames(test1)[0] === '5') {\n return false;\n }\n\n // https://bugs.chromium.org/p/v8/issues/detail?id=3056\n var test2 = {};\n for (var i = 0; i < 10; i++) {\n test2['_' + String.fromCharCode(i)] = i;\n }\n var order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n return test2[n];\n });\n if (order2.join('') !== '0123456789') {\n return false;\n }\n\n // https://bugs.chromium.org/p/v8/issues/detail?id=3056\n var test3 = {};\n 'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n test3[letter] = letter;\n });\n if (Object.keys(Object.assign({}, test3)).join('') !== 'abcdefghijklmnopqrst') {\n return false;\n }\n return true;\n } catch (err) {\n // We don't expect any of the above to throw, but better to be safe.\n return false;\n }\n }\n module.exports = shouldUseNative() ? Object.assign : function (target, source) {\n var from;\n var to = toObject(target);\n var symbols;\n for (var s = 1; s < arguments.length; s++) {\n from = Object(arguments[s]);\n for (var key in from) {\n if (hasOwnProperty.call(from, key)) {\n to[key] = from[key];\n }\n }\n if (getOwnPropertySymbols) {\n symbols = getOwnPropertySymbols(from);\n for (var i = 0; i < symbols.length; i++) {\n if (propIsEnumerable.call(from, symbols[i])) {\n to[symbols[i]] = from[symbols[i]];\n }\n }\n }\n }\n return to;\n };\n\n /***/\n}, /* 11 */\n/***/function (module, exports) {\n /**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n 'use strict';\n\n var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n module.exports = ReactPropTypesSecret;\n\n /***/\n}, /* 12 */\n/***/function (module, exports, __webpack_require__) {\n /* WEBPACK VAR INJECTION */(function (process) {\n /**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n 'use strict';\n\n if (process.env.NODE_ENV !== 'production') {\n var invariant = __webpack_require__(8);\n var warning = __webpack_require__(9);\n var ReactPropTypesSecret = __webpack_require__(11);\n var loggedTypeFailures = {};\n }\n\n /**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\n function checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n if (process.env.NODE_ENV !== 'production') {\n for (var typeSpecName in typeSpecs) {\n if (typeSpecs.hasOwnProperty(typeSpecName)) {\n var error;\n // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n invariant(typeof typeSpecs[typeSpecName] === 'function', '%s: %s type `%s` is invalid; it must be a function, usually from ' + 'the `prop-types` package, but received `%s`.', componentName || 'React class', location, typeSpecName, typeof typeSpecs[typeSpecName]);\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n warning(!error || error instanceof Error, '%s: type specification of %s `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error);\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n var stack = getStack ? getStack() : '';\n warning(false, 'Failed %s type: %s%s', location, error.message, stack != null ? stack : '');\n }\n }\n }\n }\n }\n module.exports = checkPropTypes;\n\n /* WEBPACK VAR INJECTION */\n }).call(exports, __webpack_require__(5));\n\n /***/\n}, /* 13 */\n/***/function (module, exports, __webpack_require__) {\n /**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n 'use strict';\n\n var emptyFunction = __webpack_require__(7);\n var invariant = __webpack_require__(8);\n var ReactPropTypesSecret = __webpack_require__(11);\n module.exports = function () {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n invariant(false, 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' + 'Use PropTypes.checkPropTypes() to call them. ' + 'Read more at http://fb.me/use-check-prop-types');\n }\n ;\n shim.isRequired = shim;\n function getShim() {\n return shim;\n }\n ;\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n any: shim,\n arrayOf: getShim,\n element: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim\n };\n ReactPropTypes.checkPropTypes = emptyFunction;\n ReactPropTypes.PropTypes = ReactPropTypes;\n return ReactPropTypes;\n };\n\n /***/\n}, /* 14 */\n/***/function (module, exports) {\n module.exports = require(\"react\");\n\n /***/\n}, /* 15 */\n/***/function (module, exports) {\n 'use strict';\n\n var simpleIsEqual = function simpleIsEqual(a, b) {\n return a === b;\n };\n function index(resultFn) {\n var isEqual = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : simpleIsEqual;\n var lastThis = void 0;\n var lastArgs = [];\n var lastResult = void 0;\n var calledOnce = false;\n var isNewArgEqualToLast = function isNewArgEqualToLast(newArg, index) {\n return isEqual(newArg, lastArgs[index]);\n };\n var result = function result() {\n for (var _len = arguments.length, newArgs = Array(_len), _key = 0; _key < _len; _key++) {\n newArgs[_key] = arguments[_key];\n }\n if (calledOnce && lastThis === this && newArgs.length === lastArgs.length && newArgs.every(isNewArgEqualToLast)) {\n return lastResult;\n }\n calledOnce = true;\n lastThis = this;\n lastArgs = newArgs;\n lastResult = resultFn.apply(this, newArgs);\n return lastResult;\n };\n return result;\n }\n module.exports = index;\n\n /***/\n}\n/******/]);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\nvar _react = _interopRequireWildcard(require(\"react\"));\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nfunction _getRequireWildcardCache() {\n if (typeof WeakMap !== \"function\") return null;\n var cache = new WeakMap();\n _getRequireWildcardCache = function _getRequireWildcardCache() {\n return cache;\n };\n return cache;\n}\nfunction _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n }\n if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") {\n return {\n \"default\": obj\n };\n }\n var cache = _getRequireWildcardCache();\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n newObj[\"default\"] = obj;\n if (cache) {\n cache.set(obj, newObj);\n }\n return newObj;\n}\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n return _typeof(obj);\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n return _assertThisInitialized(self);\n}\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nvar Page = /*#__PURE__*/\nfunction (_Component) {\n _inherits(Page, _Component);\n function Page() {\n _classCallCheck(this, Page);\n return _possibleConstructorReturn(this, _getPrototypeOf(Page).apply(this, arguments));\n }\n _createClass(Page, [{\n key: \"handleClick\",\n value: function handleClick(e) {\n var _this$props = this.props,\n isDisabled = _this$props.isDisabled,\n pageNumber = _this$props.pageNumber;\n e.preventDefault();\n if (isDisabled) {\n return;\n }\n this.props.onClick(pageNumber);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _cx;\n var _this$props2 = this.props,\n pageText = _this$props2.pageText,\n pageNumber = _this$props2.pageNumber,\n activeClass = _this$props2.activeClass,\n itemClass = _this$props2.itemClass,\n linkClass = _this$props2.linkClass,\n activeLinkClass = _this$props2.activeLinkClass,\n disabledClass = _this$props2.disabledClass,\n isActive = _this$props2.isActive,\n isDisabled = _this$props2.isDisabled,\n href = _this$props2.href,\n ariaLabel = _this$props2.ariaLabel;\n var css = (0, _classnames[\"default\"])(itemClass, (_cx = {}, _defineProperty(_cx, activeClass, isActive), _defineProperty(_cx, disabledClass, isDisabled), _cx));\n var linkCss = (0, _classnames[\"default\"])(linkClass, _defineProperty({}, activeLinkClass, isActive));\n return _react[\"default\"].createElement(\"li\", {\n className: css,\n onClick: this.handleClick.bind(this)\n }, _react[\"default\"].createElement(\"a\", {\n className: linkCss,\n href: href,\n \"aria-label\": ariaLabel\n }, pageText));\n }\n }]);\n return Page;\n}(_react.Component);\nexports[\"default\"] = Page;\n_defineProperty(Page, \"propTypes\", {\n pageText: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].element]),\n pageNumber: _propTypes[\"default\"].number.isRequired,\n onClick: _propTypes[\"default\"].func.isRequired,\n isActive: _propTypes[\"default\"].bool.isRequired,\n isDisabled: _propTypes[\"default\"].bool,\n activeClass: _propTypes[\"default\"].string,\n activeLinkClass: _propTypes[\"default\"].string,\n itemClass: _propTypes[\"default\"].string,\n linkClass: _propTypes[\"default\"].string,\n disabledClass: _propTypes[\"default\"].string,\n href: _propTypes[\"default\"].string\n});\n_defineProperty(Page, \"defaultProps\", {\n activeClass: \"active\",\n disabledClass: \"disabled\",\n itemClass: undefined,\n linkClass: undefined,\n activeLinkCLass: undefined,\n isActive: false,\n isDisabled: false,\n href: \"#\"\n});","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\nvar _react = _interopRequireWildcard(require(\"react\"));\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\nvar _paginator = _interopRequireDefault(require(\"paginator\"));\nvar _Page = _interopRequireDefault(require(\"./Page\"));\nvar _classnames = _interopRequireDefault(require(\"classnames\"));\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nfunction _getRequireWildcardCache() {\n if (typeof WeakMap !== \"function\") return null;\n var cache = new WeakMap();\n _getRequireWildcardCache = function _getRequireWildcardCache() {\n return cache;\n };\n return cache;\n}\nfunction _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n }\n if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") {\n return {\n \"default\": obj\n };\n }\n var cache = _getRequireWildcardCache();\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n newObj[\"default\"] = obj;\n if (cache) {\n cache.set(obj, newObj);\n }\n return newObj;\n}\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n return _typeof(obj);\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n return _assertThisInitialized(self);\n}\nfunction _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n return _setPrototypeOf(o, p);\n}\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nvar Pagination = /*#__PURE__*/\nfunction (_React$Component) {\n _inherits(Pagination, _React$Component);\n function Pagination() {\n _classCallCheck(this, Pagination);\n return _possibleConstructorReturn(this, _getPrototypeOf(Pagination).apply(this, arguments));\n }\n _createClass(Pagination, [{\n key: \"isFirstPageVisible\",\n value: function isFirstPageVisible(has_previous_page) {\n var _this$props = this.props,\n hideDisabled = _this$props.hideDisabled,\n hideNavigation = _this$props.hideNavigation,\n hideFirstLastPages = _this$props.hideFirstLastPages;\n if (hideFirstLastPages || hideDisabled && !has_previous_page) return false;\n return true;\n }\n }, {\n key: \"isPrevPageVisible\",\n value: function isPrevPageVisible(has_previous_page) {\n var _this$props2 = this.props,\n hideDisabled = _this$props2.hideDisabled,\n hideNavigation = _this$props2.hideNavigation;\n if (hideNavigation || hideDisabled && !has_previous_page) return false;\n return true;\n }\n }, {\n key: \"isNextPageVisible\",\n value: function isNextPageVisible(has_next_page) {\n var _this$props3 = this.props,\n hideDisabled = _this$props3.hideDisabled,\n hideNavigation = _this$props3.hideNavigation;\n if (hideNavigation || hideDisabled && !has_next_page) return false;\n return true;\n }\n }, {\n key: \"isLastPageVisible\",\n value: function isLastPageVisible(has_next_page) {\n var _this$props4 = this.props,\n hideDisabled = _this$props4.hideDisabled,\n hideNavigation = _this$props4.hideNavigation,\n hideFirstLastPages = _this$props4.hideFirstLastPages;\n if (hideFirstLastPages || hideDisabled && !has_next_page) return false;\n return true;\n }\n }, {\n key: \"buildPages\",\n value: function buildPages() {\n var pages = [];\n var _this$props5 = this.props,\n itemsCountPerPage = _this$props5.itemsCountPerPage,\n pageRangeDisplayed = _this$props5.pageRangeDisplayed,\n activePage = _this$props5.activePage,\n prevPageText = _this$props5.prevPageText,\n nextPageText = _this$props5.nextPageText,\n firstPageText = _this$props5.firstPageText,\n lastPageText = _this$props5.lastPageText,\n totalItemsCount = _this$props5.totalItemsCount,\n onChange = _this$props5.onChange,\n activeClass = _this$props5.activeClass,\n itemClass = _this$props5.itemClass,\n itemClassFirst = _this$props5.itemClassFirst,\n itemClassPrev = _this$props5.itemClassPrev,\n itemClassNext = _this$props5.itemClassNext,\n itemClassLast = _this$props5.itemClassLast,\n activeLinkClass = _this$props5.activeLinkClass,\n disabledClass = _this$props5.disabledClass,\n hideDisabled = _this$props5.hideDisabled,\n hideNavigation = _this$props5.hideNavigation,\n linkClass = _this$props5.linkClass,\n linkClassFirst = _this$props5.linkClassFirst,\n linkClassPrev = _this$props5.linkClassPrev,\n linkClassNext = _this$props5.linkClassNext,\n linkClassLast = _this$props5.linkClassLast,\n hideFirstLastPages = _this$props5.hideFirstLastPages,\n getPageUrl = _this$props5.getPageUrl;\n var paginationInfo = new _paginator[\"default\"](itemsCountPerPage, pageRangeDisplayed).build(totalItemsCount, activePage);\n for (var i = paginationInfo.first_page; i <= paginationInfo.last_page; i++) {\n pages.push(_react[\"default\"].createElement(_Page[\"default\"], {\n isActive: i === activePage,\n key: i,\n href: getPageUrl(i),\n pageNumber: i,\n pageText: i + \"\",\n onClick: onChange,\n itemClass: itemClass,\n linkClass: linkClass,\n activeClass: activeClass,\n activeLinkClass: activeLinkClass,\n ariaLabel: \"Go to page number \".concat(i)\n }));\n }\n this.isPrevPageVisible(paginationInfo.has_previous_page) && pages.unshift(_react[\"default\"].createElement(_Page[\"default\"], {\n key: \"prev\" + paginationInfo.previous_page,\n href: getPageUrl(paginationInfo.previous_page),\n pageNumber: paginationInfo.previous_page,\n onClick: onChange,\n pageText: prevPageText,\n isDisabled: !paginationInfo.has_previous_page,\n itemClass: (0, _classnames[\"default\"])(itemClass, itemClassPrev),\n linkClass: (0, _classnames[\"default\"])(linkClass, linkClassPrev),\n disabledClass: disabledClass,\n ariaLabel: \"Go to previous page\"\n }));\n this.isFirstPageVisible(paginationInfo.has_previous_page) && pages.unshift(_react[\"default\"].createElement(_Page[\"default\"], {\n key: \"first\",\n href: getPageUrl(1),\n pageNumber: 1,\n onClick: onChange,\n pageText: firstPageText,\n isDisabled: !paginationInfo.has_previous_page,\n itemClass: (0, _classnames[\"default\"])(itemClass, itemClassFirst),\n linkClass: (0, _classnames[\"default\"])(linkClass, linkClassFirst),\n disabledClass: disabledClass,\n ariaLabel: \"Go to first page\"\n }));\n this.isNextPageVisible(paginationInfo.has_next_page) && pages.push(_react[\"default\"].createElement(_Page[\"default\"], {\n key: \"next\" + paginationInfo.next_page,\n href: getPageUrl(paginationInfo.next_page),\n pageNumber: paginationInfo.next_page,\n onClick: onChange,\n pageText: nextPageText,\n isDisabled: !paginationInfo.has_next_page,\n itemClass: (0, _classnames[\"default\"])(itemClass, itemClassNext),\n linkClass: (0, _classnames[\"default\"])(linkClass, linkClassNext),\n disabledClass: disabledClass,\n ariaLabel: \"Go to next page\"\n }));\n this.isLastPageVisible(paginationInfo.has_next_page) && pages.push(_react[\"default\"].createElement(_Page[\"default\"], {\n key: \"last\",\n href: getPageUrl(paginationInfo.total_pages),\n pageNumber: paginationInfo.total_pages,\n onClick: onChange,\n pageText: lastPageText,\n isDisabled: paginationInfo.current_page === paginationInfo.total_pages,\n itemClass: (0, _classnames[\"default\"])(itemClass, itemClassLast),\n linkClass: (0, _classnames[\"default\"])(linkClass, linkClassLast),\n disabledClass: disabledClass,\n ariaLabel: \"Go to last page\"\n }));\n return pages;\n }\n }, {\n key: \"render\",\n value: function render() {\n var pages = this.buildPages();\n return _react[\"default\"].createElement(\"ul\", {\n className: this.props.innerClass\n }, pages);\n }\n }]);\n return Pagination;\n}(_react[\"default\"].Component);\nexports[\"default\"] = Pagination;\n_defineProperty(Pagination, \"propTypes\", {\n totalItemsCount: _propTypes[\"default\"].number.isRequired,\n onChange: _propTypes[\"default\"].func.isRequired,\n activePage: _propTypes[\"default\"].number,\n itemsCountPerPage: _propTypes[\"default\"].number,\n pageRangeDisplayed: _propTypes[\"default\"].number,\n prevPageText: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].element]),\n nextPageText: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].element]),\n lastPageText: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].element]),\n firstPageText: _propTypes[\"default\"].oneOfType([_propTypes[\"default\"].string, _propTypes[\"default\"].element]),\n disabledClass: _propTypes[\"default\"].string,\n hideDisabled: _propTypes[\"default\"].bool,\n hideNavigation: _propTypes[\"default\"].bool,\n innerClass: _propTypes[\"default\"].string,\n itemClass: _propTypes[\"default\"].string,\n itemClassFirst: _propTypes[\"default\"].string,\n itemClassPrev: _propTypes[\"default\"].string,\n itemClassNext: _propTypes[\"default\"].string,\n itemClassLast: _propTypes[\"default\"].string,\n linkClass: _propTypes[\"default\"].string,\n activeClass: _propTypes[\"default\"].string,\n activeLinkClass: _propTypes[\"default\"].string,\n linkClassFirst: _propTypes[\"default\"].string,\n linkClassPrev: _propTypes[\"default\"].string,\n linkClassNext: _propTypes[\"default\"].string,\n linkClassLast: _propTypes[\"default\"].string,\n hideFirstLastPages: _propTypes[\"default\"].bool,\n getPageUrl: _propTypes[\"default\"].func\n});\n_defineProperty(Pagination, \"defaultProps\", {\n itemsCountPerPage: 10,\n pageRangeDisplayed: 5,\n activePage: 1,\n prevPageText: \"⟨\",\n firstPageText: \"«\",\n nextPageText: \"⟩\",\n lastPageText: \"»\",\n innerClass: \"pagination\",\n itemClass: undefined,\n linkClass: undefined,\n activeLinkClass: undefined,\n hideFirstLastPages: false,\n getPageUrl: function getPageUrl(i) {\n return \"#\";\n }\n});","import styled from 'styled-components';\nimport { Col, Row, Container, Navbar } from 'react-bootstrap';\nimport Highlighter from 'react-highlight-words';\nimport { Link } from 'gatsby';\n\nexport const AboutContainer = styled(Container)`\n width: 1200px !important;\n max-width: 1200px !important;\n @media (max-width: 1200px) {\n max-width: 960px !important;\n }\n @media (max-width: 992px) {\n max-width: 728px !important;\n }\n @media (max-width: 767px) {\n width: 100% !important;\n }\n @media print {\n margin: 0 !important;\n width: 100vw !important;\n max-width: 100vw !important;\n }\n`;\n\nexport const LeftContainer = styled(Col)`\n padding-top: 40px;\n padding-bottom: 40px;\n @media (min-width: 993px) {\n max-width: 280px !important;\n }\n @media (max-width: 992px) {\n position: absolute;\n right: 5%;\n padding: 25px 0 30px 0;\n }\n`;\n\nexport const RightContainer = styled(Col)`\n padding: 40px 0 40px 40px !important;\n\n @media (max-width: 992px) {\n padding: 25px !important;\n }\n`;\n\nexport const searchTitle = styled(Col)`\n margin: 0 0 35px 0;\n padding: 0;\n font-family: 'Figtree-Light', arial, sans-serif;\n font-weight: normal !important;\n color: #00457c;\n font-size: 45px;\n line-height: 50px;\n`;\n\nexport const inputSearch = styled.input`\n background: #ebf5fa;\n padding: 15px;\n border: none;\n font-family: 'Figtree-Regular', arial, sans-serif;\n font-size: 14px;\n line-height: 14px;\n color: #666;\n margin-right: 5px;\n outline: none;\n`;\n\nexport const inputSubmit = styled.input`\n background: #049fe1;\n padding: 16px;\n border: none;\n font-family: 'Figtree-Medium', arial, sans-serif;\n font-size: 14px;\n line-height: 14px;\n text-transform: uppercase;\n color: #fff;\n -webkit-appearance: none;\n -webkit-border-radius: 0;\n`;\n\nexport const link = styled.a`\n float: right;\n position: relative;\n padding: 6px 50px 0 0;\n margin: 0;\n text-align: right;\n color: #049de1;\n font-size: 18px;\n text-decoration: none;\n font-family: Figtree-Regular, arial, sans-serif;\n letter-spacing: 0.02em;\n line-height: 18px;\n @media (max-width: 767px) {\n margin: 20px 0 0 0;\n float: left;\n padding: 12px 0 0 50px;\n text-align: left;\n }\n`;\n\nexport const BreakTag = styled.br`\n @media (min-width: 1285px) {\n display: none;\n }\n`;\n\nexport const locationImage = styled.img`\n position: absolute;\n width: 31px;\n height: auto;\n top: 0;\n right: 0;\n @media (max-width: 767px) {\n top: 5px;\n left: 0;\n width: 31px !important;\n }\n`;\n\nexport const searchResult = styled.div`\n margin-bottom: 16px;\n margin-top: 24px;\n border-bottom: 1px solid #e5e5e5;\n`;\n\nexport const resultAnchor = styled.a`\n text-decoration: none !important;\n color: #9fb577;\n font-size: 26px;\n font-weight: 300 !important;\n font-family: 'Figtree-Light', arial, sans-serif;\n webkit-transition: color 0.15s ease-out;\n -moz-transition: color 0.15s ease-out;\n -o-transition: color 0.15s ease-out;\n -ms-transition: color 0.15s ease-out;\n transition: color 0.15s ease-out;\n`;\n\n\nexport const resultDesc = styled.p`\nmargin: 0px;\ncolor: rgb(102, 102, 102);\nfont-family: Figtree-Regular, arial, sans-serif;\nfont-size: 15px;\nline-height: 24px;\nletter-spacing: 0.02em;\n`;\n\nexport const pageLink = styled.a`\n text-decoration: none;\n font-size: 12px;\n color: #999;\n margin: 2px 0px 8px 0px;\n padding: 0px;\n display: block;\n font-size: 12px;\n color: #999;\n margin: 2px 0px 8px 0px;\n padding: 0px;\n display: block;\n`;\n\nexport const noResults = styled.div`\n margin: 0;\n padding: 0;\n font-weight: bold;\n background-position: top center;\n color: #666;\n font-family: 'Figtree-Regular', arial, sans-serif;\n font-size: 15px;\n line-height: 24px;\n letter-spacing: 0.02em;\n margin-top: 32px;\n`;\n\nexport const paginationDiv = styled.div`\n text-align: center;\n position: relative;\n`;\n\nexport const prev = styled.div`\n position: absolute;\n top: 0px;\n left: 0px;\n margin-right: 4px;\n cursor: pointer;\n`;\nexport const next = styled.div`\n position: absolute;\n top: 0px;\n right: 0px;\n margin-right: 0px !important;\n cursor: pointer;\n`;\nexport const SearchAnchor = styled.a`\n word-wrap: break-word;\n text-decoration: none;\n font-family: 'Figtree-Light',arial,sans-serif !important;\n font-size: 12px;\n color: rgb(153, 153, 153);\n margin: 2px 0px 8px;\n padding: 0px;\n display: block;\n\n`;\nexport const Subheader = styled.h1`\nfont-family: 'Figtree-Light',arial,sans-serif !important;\nfont-weight: normal !important;\ncolor: #00457c !important;\nfont-size: 26px;\nline-height: 1.5;\ntext-decoration: none !important;\n&:hover{\n color: #0a58ca !important;\n} \n`;\nexport const Mainanchor = styled.a`\nmargin: 0px;\npadding: 0px;\nbackground-repeat: no-repeat;\nbackground-position: center top;\ncolor: rgb(102, 102, 102);\nfont-family: Figtree-Regular, arial, sans-serif;\nfont-size: 15px;\nline-height: 24px;\nletter-spacing: 0.02em;\ntext-decoration: none;\ndisplay: inline-block;\n&:hover{\n color: #0a58ca;\n}\n`;\nexport const HighlighterHeader = styled(Highlighter)`\n.HighlighterHeader{\n background-color: #efe795;\n &:hover{\n color: #0a58ca;\n }\n}\n text-decoration: none;\n color: rgb(159, 181, 119);\n &:hover{\n color: #0a58ca;\n }\n`; \n","export const apiGatewayClient = {\n invokeUrl: process.env.GATSBY_AWS_INVOKE_URL,\n region: process.env.GATSBY_AWS_REGION\n };","import axios from \"axios\";\nimport { apiGatewayClient } from './apiConfig';\n\nexport const getSearchData = async (requestParams) => {\n const url = apiGatewayClient.invokeUrl;\n const additionalParams = {\n headers: {\n 'Strict-Transport-Security':\n 'max-age=63072000; includeSubDomains; preload',\n 'Content-Security-Policy': \"default-src 'self'\",\n \"Access-Control-Allow-Headers\" : \"Content-Type\",\n \"Access-Control-Allow-Origin\": \"https://www.bluewaveenergy.ca\",\n \"Access-Control-Allow-Methods\": \"OPTIONS,GET\"\n },\n queryParams: {\n q: `\"${requestParams}\"`,\n size: 10000,\n },\n };\n \n try {\n const response = await axios.get(url, \n {\n params: additionalParams.queryParams\n });\n return response;\n } catch (error) {\n console.error('Error:', error);\n throw error;\n }\n};\n","import React from 'react';\nimport { Index } from 'lunr';\nimport * as Styled from './searchPageTemplateStyle';\nimport Pagination from 'react-js-pagination';\nimport Highlighter from 'react-highlight-words';\nimport { addTrailingSlash } from '../../utils';\nimport { getSearchData } from '../../api/searchApi';\n\nconst SearchPage = ({ location }) => {\n const params = new URLSearchParams(location?.search);\n const q = params.get('q') || '';\n\n let itemsPerpage = 5;\n const [activePage, setActivePage] = React.useState(0);\n const [results, setResults] = React.useState([]);\n const [isError, setError] = React.useState(false);\n const [isLoading, setLoading] = React.useState(false);\n const [currentElement, setcurrentElement] = React.useState([]);\n\n const search = () => {\n getSearchData(q)\n .then(({ data }) => {\n const visitedSlugs = new Set();\n\n const filteredHit = data?.hits?.hit?.filter((obj) => {\n if (visitedSlugs?.has(obj?.fields?.slug)) {\n return false;\n } else {\n visitedSlugs.add(obj?.fields?.slug);\n return true;\n }\n });\n setResults(filteredHit);\n setLoading(false);\n setError(false);\n })\n .catch((err) => {\n console.log(err);\n setLoading(false);\n setError(true);\n });\n };\n\n React.useEffect(() => {\n if (q) {\n setLoading(true);\n setActivePage(0);\n search();\n }\n }, [location]);\n\n React.useEffect(() => {\n setcurrentElement(results?.slice(activePage, itemsPerpage));\n }, [results]);\n\n const handlePageChange = (pageNumber) => {\n setActivePage(pageNumber);\n setcurrentElement(paginate(results, itemsPerpage, pageNumber));\n };\n\n const paginate = (array, page_size, page_number) => {\n if (!array) {\n return [];\n }\n return array?.slice((page_number - 1) * page_size, page_number * page_size);\n };\n\n const getDataWithEllipsis = (content, content_length) => {\n const indexOfSearchInContent = content\n ?.toLowerCase()\n ?.indexOf(q?.toLowerCase());\n\n if (indexOfSearchInContent === -1) {\n return content\n ?.substr(0, content_length)\n .concat(content?.length > content_length ? '...' : '');\n }\n if (content.length - (indexOfSearchInContent + q.length) < content_length) {\n return content;\n }\n if (content.length - (indexOfSearchInContent + q.length) > content_length) {\n return indexOfSearchInContent > 3\n ? '...' +\n content?.substr(indexOfSearchInContent, content_length) +\n '...'\n : content?.substr(indexOfSearchInContent, content_length) + '...';\n }\n const data = content?.substr(\n Math.abs(indexOfSearchInContent),\n content_length + indexOfSearchInContent\n );\n\n return data;\n };\n return (\n <>\n {isError ? (\n \n Something went wrong Please try again\n \n ) : q ? (\n !isLoading ? (\n currentElement?.length > 0 ? (\n currentElement?.map(({ fields }, index) => (\n \n \n \n \n \n \n \n {fields?.content_header && (\n \n )}\n {fields?.content_subtext && (\n \n )}\n\n {fields?.metadata && (\n \n )}\n {fields?.content_raw && (\n \n )}\n \n \n \n \n
\n
\n ))\n ) : (\n \n There were no results found. Please try another keyword or phrase.\n \n )\n ) : (\n Loading...\n )\n ) : (\n Please Enter a keyword to search\n )}\n\n {results?.length && q ? (\n \n handlePageChange(e)}\n itemClass=\"itemClass\"\n itemClassPrev=\"first\"\n itemClassNext=\"last\"\n disabledClass=\"disabled\"\n linkClass=\"linkClass\"\n activeLinkClass=\"activeLinkClass\"\n linkClassFirst=\"linkClassFirst\"\n linkClassLast=\"linkClassLast\"\n />\n \n ) : null}\n \n );\n};\nexport default SearchPage;\n","import { graphql, Link, useStaticQuery } from 'gatsby';\nimport { Helmet } from 'react-helmet';\nimport { navigate } from 'gatsby';\nimport React, { useState, useRef, useEffect } from 'react';\nimport { Col, Row, Container, Navbar } from 'react-bootstrap';\nimport DefaultHeaderMenu from '../../components/defaultHeaderMenu/defaultHeaderMenu';\nimport BootstrapNavbar from '../../components/navigationBar/mainMenu/navigationBar';\nimport Footer from '../../components/footer/footer';\nimport TopBanner from '../../common/topBanner/topBanner';\nimport BreadcrumbsBlock from '../../common/breadcrumbsBlock/breadcrumbsBlock';\nimport constants, { menuItemsType } from '../../utils/utils';\nimport * as Styled from './searchPageTemplateStyle';\nimport SearchPage from './SearchPage';\nimport LocationsIcon from '../../images/icon-view-locations.gif';\nimport LogoOG from '../../images/logo-og.jpg';\n\nconst BreadcrumbsBlockData = {\n backgroundColor: '#049de1',\n borderTopColor: '#037ec4',\n title: 'Locations',\n};\n\nconst SearchPageTemplate = ({ data, location }) => {\n const params = new URLSearchParams(location.search.slice(1));\n const q = params.get('q') || '';\n const inputEl = useRef(null);\n const [query, setQuery] = React.useState(q);\n const [showMapLeftPanel, setShowMapLeftPanel] = useState(true);\n const locationsCommon = data.locationsCommonSection.sections;\n const topBannerData = locationsCommon?.filter(\n (section) => section.type === constants.LOCATION_BLUEWAVE.LOCATION_TOP_BAR\n )[0];\n\n const handleChange = (e) => {\n setQuery(e.target.value);\n };\n\n const handleSubmit = () => {\n // `inputEl.current` points to the mounted search input element\n const q = inputEl.current.value;\n if (q) {\n navigate(`/search/?q=${q}`);\n }\n };\n const handleKeyUp = (event) => {\n if (event.keyCode === 13 || event.key === 'Enter') {\n handleSubmit();\n }\n };\n\n useEffect(() => {\n setQuery(params.get('q') || '');\n }, [location]);\n\n return (\n <>\n \n \n {'Search | Bluewave Energy'}\n \n \n \n \n \n \n {\n setShowMapLeftPanel(!showMapLeftPanel);\n }}\n />\n\n \n \n \n \n Search\n \n \n \n \n \n \n \n Looking for a branch?\n \n  View our locations map\n \n \n \n \n \n \n \n \n