{"version":3,"file":"app-7f41e65dfe9e5b06e45f.js","mappings":"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","sources":["webpack://ivory-gatsby/./node_modules/@gatsbyjs/reach-router/lib/history.js","webpack://ivory-gatsby/./node_modules/@gatsbyjs/reach-router/lib/utils.js","webpack://ivory-gatsby/./node_modules/@mdx-js/react/dist/esm.js","webpack://ivory-gatsby/./node_modules/axios/index.js","webpack://ivory-gatsby/./node_modules/axios/lib/adapters/xhr.js","webpack://ivory-gatsby/./node_modules/axios/lib/axios.js","webpack://ivory-gatsby/./node_modules/axios/lib/cancel/Cancel.js","webpack://ivory-gatsby/./node_modules/axios/lib/cancel/CancelToken.js","webpack://ivory-gatsby/./node_modules/axios/lib/cancel/isCancel.js","webpack://ivory-gatsby/./node_modules/axios/lib/core/Axios.js","webpack://ivory-gatsby/./node_modules/axios/lib/core/InterceptorManager.js","webpack://ivory-gatsby/./node_modules/axios/lib/core/buildFullPath.js","webpack://ivory-gatsby/./node_modules/axios/lib/core/createError.js","webpack://ivory-gatsby/./node_modules/axios/lib/core/dispatchRequest.js","webpack://ivory-gatsby/./node_modules/axios/lib/core/enhanceError.js","webpack://ivory-gatsby/./node_modules/axios/lib/core/mergeConfig.js","webpack://ivory-gatsby/./node_modules/axios/lib/core/settle.js","webpack://ivory-gatsby/./node_modules/axios/lib/core/transformData.js","webpack://ivory-gatsby/./node_modules/axios/lib/defaults.js","webpack://ivory-gatsby/./node_modules/axios/lib/env/data.js","webpack://ivory-gatsby/./node_modules/axios/lib/helpers/bind.js","webpack://ivory-gatsby/./node_modules/axios/lib/helpers/buildURL.js","webpack://ivory-gatsby/./node_modules/axios/lib/helpers/combineURLs.js","webpack://ivory-gatsby/./node_modules/axios/lib/helpers/cookies.js","webpack://ivory-gatsby/./node_modules/axios/lib/helpers/isAbsoluteURL.js","webpack://ivory-gatsby/./node_modules/axios/lib/helpers/isAxiosError.js","webpack://ivory-gatsby/./node_modules/axios/lib/helpers/isURLSameOrigin.js","webpack://ivory-gatsby/./node_modules/axios/lib/helpers/normalizeHeaderName.js","webpack://ivory-gatsby/./node_modules/axios/lib/helpers/parseHeaders.js","webpack://ivory-gatsby/./node_modules/axios/lib/helpers/spread.js","webpack://ivory-gatsby/./node_modules/axios/lib/helpers/validator.js","webpack://ivory-gatsby/./node_modules/axios/lib/utils.js","webpack://ivory-gatsby/./node_modules/camelcase/index.js","webpack://ivory-gatsby/./node_modules/common-tags/es/TemplateTag/TemplateTag.js","webpack://ivory-gatsby/./node_modules/common-tags/es/inlineArrayTransformer/inlineArrayTransformer.js","webpack://ivory-gatsby/./node_modules/common-tags/es/stripIndentTransformer/stripIndentTransformer.js","webpack://ivory-gatsby/./node_modules/common-tags/es/trimResultTransformer/trimResultTransformer.js","webpack://ivory-gatsby/./node_modules/common-tags/es/splitStringTransformer/splitStringTransformer.js","webpack://ivory-gatsby/./node_modules/common-tags/es/commaLists/commaLists.js","webpack://ivory-gatsby/./node_modules/common-tags/es/commaListsAnd/commaListsAnd.js","webpack://ivory-gatsby/./node_modules/common-tags/es/commaListsOr/commaListsOr.js","webpack://ivory-gatsby/./node_modules/common-tags/es/removeNonPrintingValuesTransformer/removeNonPrintingValuesTransformer.js","webpack://ivory-gatsby/./node_modules/common-tags/es/replaceSubstitutionTransformer/replaceSubstitutionTransformer.js","webpack://ivory-gatsby/./node_modules/common-tags/es/html/html.js","webpack://ivory-gatsby/./node_modules/common-tags/es/replaceResultTransformer/replaceResultTransformer.js","webpack://ivory-gatsby/./node_modules/common-tags/es/safeHtml/safeHtml.js","webpack://ivory-gatsby/./node_modules/common-tags/es/oneLine/oneLine.js","webpack://ivory-gatsby/./node_modules/common-tags/es/oneLineTrim/oneLineTrim.js","webpack://ivory-gatsby/./node_modules/common-tags/es/oneLineCommaLists/oneLineCommaLists.js","webpack://ivory-gatsby/./node_modules/common-tags/es/oneLineCommaListsOr/oneLineCommaListsOr.js","webpack://ivory-gatsby/./node_modules/common-tags/es/oneLineCommaListsAnd/oneLineCommaListsAnd.js","webpack://ivory-gatsby/./node_modules/common-tags/es/inlineLists/inlineLists.js","webpack://ivory-gatsby/./node_modules/common-tags/es/oneLineInlineLists/oneLineInlineLists.js","webpack://ivory-gatsby/./node_modules/common-tags/es/stripIndent/stripIndent.js","webpack://ivory-gatsby/./node_modules/common-tags/es/stripIndents/stripIndents.js","webpack://ivory-gatsby/./node_modules/elasticlunr/elasticlunr.js","webpack://ivory-gatsby/./node_modules/gatsby/dist/internal-plugins/bundle-optimisations/polyfills/object-assign.js","webpack://ivory-gatsby/./node_modules/intersection-observer/intersection-observer.js","webpack://ivory-gatsby/./node_modules/react-fast-compare/index.js","webpack://ivory-gatsby/./node_modules/react-helmet/es/Helmet.js","webpack://ivory-gatsby/./node_modules/react-side-effect/lib/index.js","webpack://ivory-gatsby/./node_modules/sal.js/dist/sal.js","webpack://ivory-gatsby/./node_modules/gatsby-link/index.js","webpack://ivory-gatsby/./node_modules/gatsby-link/parse-path.js","webpack://ivory-gatsby/./node_modules/gatsby-react-router-scroll/index.js","webpack://ivory-gatsby/./node_modules/gatsby-react-router-scroll/scroll-handler.js","webpack://ivory-gatsby/./node_modules/gatsby-react-router-scroll/session-storage.js","webpack://ivory-gatsby/./node_modules/gatsby-react-router-scroll/use-scroll-restoration.js","webpack://ivory-gatsby/./.cache/_this_is_virtual_fs_path_/$virtual/async-requires.js","webpack://ivory-gatsby/./.cache/api-runner-browser-plugins.js","webpack://ivory-gatsby/./.cache/api-runner-browser.js","webpack://ivory-gatsby/./.cache/emitter.js","webpack://ivory-gatsby/./node_modules/mitt/dist/mitt.es.js","webpack://ivory-gatsby/./.cache/normalize-page-path.js","webpack://ivory-gatsby/./.cache/find-path.js","webpack://ivory-gatsby/./.cache/gatsby-browser-entry.js","webpack://ivory-gatsby/./.cache/prefetch.js","webpack://ivory-gatsby/./.cache/loader.js","webpack://ivory-gatsby/./.cache/page-renderer.js","webpack://ivory-gatsby/./.cache/route-announcer-props.js","webpack://ivory-gatsby/./.cache/navigation.js","webpack://ivory-gatsby/./node_modules/shallow-compare/es/index.js","webpack://ivory-gatsby/./.cache/ensure-resources.js","webpack://ivory-gatsby/./.cache/production-app.js","webpack://ivory-gatsby/./.cache/public-page-renderer-prod.js","webpack://ivory-gatsby/./.cache/public-page-renderer.js","webpack://ivory-gatsby/./.cache/react-lifecycles-compat.js","webpack://ivory-gatsby/./.cache/redirect-utils.js","webpack://ivory-gatsby/./.cache/register-service-worker.js","webpack://ivory-gatsby/./.cache/strip-prefix.js","webpack://ivory-gatsby/../src/image-utils.ts","webpack://ivory-gatsby/../src/components/hooks.ts","webpack://ivory-gatsby/../src/components/layout-wrapper.tsx","webpack://ivory-gatsby/../src/components/picture.tsx","webpack://ivory-gatsby/../src/components/placeholder.tsx","webpack://ivory-gatsby/../src/components/main-image.tsx","webpack://ivory-gatsby/../src/components/gatsby-image.server.tsx","webpack://ivory-gatsby/../src/components/gatsby-image.browser.tsx","webpack://ivory-gatsby/../src/components/static-image.server.tsx","webpack://ivory-gatsby/../src/components/static-image.tsx","webpack://ivory-gatsby/../src/components/later-hydrator.tsx","webpack://ivory-gatsby/./node_modules/gatsby-plugin-image/gatsby-browser.js","webpack://ivory-gatsby/./node_modules/gatsby-plugin-manifest/gatsby-browser.js","webpack://ivory-gatsby/./node_modules/gatsby-plugin-manifest/get-manifest-pathname.js","webpack://ivory-gatsby/./node_modules/gatsby-plugin-scroll-reveal/Wrapper.js","webpack://ivory-gatsby/./node_modules/gatsby-plugin-scroll-reveal/gatsby-browser.js","webpack://ivory-gatsby/./.cache/caches/gatsby-plugin-mdx/mdx-scopes-dir/e92f8988d65cf25c087d226e6c0ef06f.js","webpack://ivory-gatsby/./node_modules/gatsby-plugin-mdx/context.js","webpack://ivory-gatsby/./node_modules/gatsby-plugin-mdx/loaders/mdx-scopes.js","webpack://ivory-gatsby/./node_modules/gatsby-plugin-mdx/wrap-root-element.js","webpack://ivory-gatsby/./node_modules/gatsby-plugin-mdx/gatsby-browser.js","webpack://ivory-gatsby/./node_modules/gatsby-plugin-mdx/loaders/mdx-components.js","webpack://ivory-gatsby/./plugins/gatsby-plugin-top-layout/TopLayout.js","webpack://ivory-gatsby/./plugins/gatsby-plugin-top-layout/PageWrap.js","webpack://ivory-gatsby/./plugins/gatsby-plugin-top-layout/gatsby-browser.js","webpack://ivory-gatsby/./src/components/Column.js","webpack://ivory-gatsby/./src/components/Container.js","webpack://ivory-gatsby/./src/components/FormModal.js","webpack://ivory-gatsby/./src/components/Loader.js","webpack://ivory-gatsby/./src/images/spin-light.svg","webpack://ivory-gatsby/./src/images/spin-dark.svg","webpack://ivory-gatsby/./src/components/Modal.js","webpack://ivory-gatsby/./src/components/Row.js","webpack://ivory-gatsby/./src/components/auth-context.js","webpack://ivory-gatsby/./src/hooks/useAnalytics.js","webpack://ivory-gatsby/./src/components/Menu.js","webpack://ivory-gatsby/./src/components/Search.js","webpack://ivory-gatsby/./src/images/40th-logo.png","webpack://ivory-gatsby/./src/components/SiteHeader.js","webpack://ivory-gatsby/./src/components/SiteFooter.js","webpack://ivory-gatsby/./src/layouts/Main.js","webpack://ivory-gatsby/./src/util/isMobileOS.js","webpack://ivory-gatsby/./src/util/auth.js","webpack://ivory-gatsby/./src/util/http.js","webpack://ivory-gatsby/./src/util/pardotAnalytics.js","webpack://ivory-gatsby/./src/util/slugify.js","webpack://ivory-gatsby/./node_modules/@gatsbyjs/reach-router/es/lib/utils.js","webpack://ivory-gatsby/./node_modules/@gatsbyjs/reach-router/es/lib/history.js","webpack://ivory-gatsby/./node_modules/@gatsbyjs/reach-router/es/index.js","webpack://ivory-gatsby/./node_modules/invariant/browser.js","webpack://ivory-gatsby/./node_modules/lodash/_DataView.js","webpack://ivory-gatsby/./node_modules/lodash/_Map.js","webpack://ivory-gatsby/./node_modules/lodash/_Promise.js","webpack://ivory-gatsby/./node_modules/lodash/_Set.js","webpack://ivory-gatsby/./node_modules/lodash/_Symbol.js","webpack://ivory-gatsby/./node_modules/lodash/_WeakMap.js","webpack://ivory-gatsby/./node_modules/lodash/_baseGetTag.js","webpack://ivory-gatsby/./node_modules/lodash/_baseIsArguments.js","webpack://ivory-gatsby/./node_modules/lodash/_baseIsNative.js","webpack://ivory-gatsby/./node_modules/lodash/_baseIsTypedArray.js","webpack://ivory-gatsby/./node_modules/lodash/_baseKeys.js","webpack://ivory-gatsby/./node_modules/lodash/_baseUnary.js","webpack://ivory-gatsby/./node_modules/lodash/_coreJsData.js","webpack://ivory-gatsby/./node_modules/lodash/_freeGlobal.js","webpack://ivory-gatsby/./node_modules/lodash/_getNative.js","webpack://ivory-gatsby/./node_modules/lodash/_getRawTag.js","webpack://ivory-gatsby/./node_modules/lodash/_getTag.js","webpack://ivory-gatsby/./node_modules/lodash/_getValue.js","webpack://ivory-gatsby/./node_modules/lodash/_isMasked.js","webpack://ivory-gatsby/./node_modules/lodash/_isPrototype.js","webpack://ivory-gatsby/./node_modules/lodash/_nativeKeys.js","webpack://ivory-gatsby/./node_modules/lodash/_nodeUtil.js","webpack://ivory-gatsby/./node_modules/lodash/_objectToString.js","webpack://ivory-gatsby/./node_modules/lodash/_overArg.js","webpack://ivory-gatsby/./node_modules/lodash/_root.js","webpack://ivory-gatsby/./node_modules/lodash/_toSource.js","webpack://ivory-gatsby/./node_modules/lodash/isArguments.js","webpack://ivory-gatsby/./node_modules/lodash/isArray.js","webpack://ivory-gatsby/./node_modules/lodash/isArrayLike.js","webpack://ivory-gatsby/./node_modules/lodash/isBuffer.js","webpack://ivory-gatsby/./node_modules/lodash/isEmpty.js","webpack://ivory-gatsby/./node_modules/lodash/isFunction.js","webpack://ivory-gatsby/./node_modules/lodash/isLength.js","webpack://ivory-gatsby/./node_modules/lodash/isObject.js","webpack://ivory-gatsby/./node_modules/lodash/isObjectLike.js","webpack://ivory-gatsby/./node_modules/lodash/isTypedArray.js","webpack://ivory-gatsby/./node_modules/lodash/stubFalse.js","webpack://ivory-gatsby/./node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack://ivory-gatsby/./node_modules/@babel/runtime/helpers/extends.js","webpack://ivory-gatsby/./node_modules/@babel/runtime/helpers/inheritsLoose.js","webpack://ivory-gatsby/./node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack://ivory-gatsby/./node_modules/@babel/runtime/helpers/interopRequireWildcard.js","webpack://ivory-gatsby/./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","webpack://ivory-gatsby/./node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack://ivory-gatsby/./node_modules/@babel/runtime/helpers/typeof.js","webpack://ivory-gatsby/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://ivory-gatsby/./node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://ivory-gatsby/./node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://ivory-gatsby/./node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://ivory-gatsby/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://ivory-gatsby/./node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://ivory-gatsby/./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","webpack://ivory-gatsby/./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://ivory-gatsby/./node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","webpack://ivory-gatsby/./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","webpack://ivory-gatsby/./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","webpack://ivory-gatsby/./node_modules/@babel/runtime/helpers/esm/iterableToArray.js","webpack://ivory-gatsby/./node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","webpack://ivory-gatsby/./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js"],"sourcesContent":["\"use strict\";\n\nexports.__esModule = true;\nvar _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};\nvar getLocation = function getLocation(source) {\n var _source$location = source.location,\n search = _source$location.search,\n hash = _source$location.hash,\n href = _source$location.href,\n origin = _source$location.origin,\n protocol = _source$location.protocol,\n host = _source$location.host,\n hostname = _source$location.hostname,\n port = _source$location.port;\n var pathname = source.location.pathname;\n if (!pathname && href && canUseDOM) {\n var url = new URL(href);\n pathname = url.pathname;\n }\n return {\n pathname: encodeURI(decodeURI(pathname)),\n search: search,\n hash: hash,\n href: href,\n origin: origin,\n protocol: protocol,\n host: host,\n hostname: hostname,\n port: port,\n state: source.history.state,\n key: source.history.state && source.history.state.key || \"initial\"\n };\n};\nvar createHistory = function createHistory(source, options) {\n var listeners = [];\n var location = getLocation(source);\n var transitioning = false;\n var resolveTransition = function resolveTransition() {};\n return {\n get location() {\n return location;\n },\n get transitioning() {\n return transitioning;\n },\n _onTransitionComplete: function _onTransitionComplete() {\n transitioning = false;\n resolveTransition();\n },\n listen: function listen(listener) {\n listeners.push(listener);\n var popstateListener = function popstateListener() {\n location = getLocation(source);\n listener({\n location: location,\n action: \"POP\"\n });\n };\n source.addEventListener(\"popstate\", popstateListener);\n return function () {\n source.removeEventListener(\"popstate\", popstateListener);\n listeners = listeners.filter(function (fn) {\n return fn !== listener;\n });\n };\n },\n navigate: function navigate(to) {\n var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},\n state = _ref.state,\n _ref$replace = _ref.replace,\n replace = _ref$replace === undefined ? false : _ref$replace;\n if (typeof to === \"number\") {\n source.history.go(to);\n } else {\n state = _extends({}, state, {\n key: Date.now() + \"\"\n });\n // try...catch iOS Safari limits to 100 pushState calls\n try {\n if (transitioning || replace) {\n source.history.replaceState(state, null, to);\n } else {\n source.history.pushState(state, null, to);\n }\n } catch (e) {\n source.location[replace ? \"replace\" : \"assign\"](to);\n }\n }\n location = getLocation(source);\n transitioning = true;\n var transition = new Promise(function (res) {\n return resolveTransition = res;\n });\n listeners.forEach(function (listener) {\n return listener({\n location: location,\n action: \"PUSH\"\n });\n });\n return transition;\n }\n };\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Stores history entries in memory for testing or other platforms like Native\nvar createMemorySource = function createMemorySource() {\n var initialPath = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"/\";\n var searchIndex = initialPath.indexOf(\"?\");\n var initialLocation = {\n pathname: searchIndex > -1 ? initialPath.substr(0, searchIndex) : initialPath,\n search: searchIndex > -1 ? initialPath.substr(searchIndex) : \"\"\n };\n var index = 0;\n var stack = [initialLocation];\n var states = [null];\n return {\n get location() {\n return stack[index];\n },\n addEventListener: function addEventListener(name, fn) {},\n removeEventListener: function removeEventListener(name, fn) {},\n history: {\n get entries() {\n return stack;\n },\n get index() {\n return index;\n },\n get state() {\n return states[index];\n },\n pushState: function pushState(state, _, uri) {\n var _uri$split = uri.split(\"?\"),\n pathname = _uri$split[0],\n _uri$split$ = _uri$split[1],\n search = _uri$split$ === undefined ? \"\" : _uri$split$;\n index++;\n stack.push({\n pathname: pathname,\n search: search.length ? \"?\" + search : search\n });\n states.push(state);\n },\n replaceState: function replaceState(state, _, uri) {\n var _uri$split2 = uri.split(\"?\"),\n pathname = _uri$split2[0],\n _uri$split2$ = _uri$split2[1],\n search = _uri$split2$ === undefined ? \"\" : _uri$split2$;\n stack[index] = {\n pathname: pathname,\n search: search\n };\n states[index] = state;\n },\n go: function go(to) {\n var newIndex = index + to;\n if (newIndex < 0 || newIndex > states.length - 1) {\n return;\n }\n index = newIndex;\n }\n }\n };\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// global history - uses window.history as the source if available, otherwise a\n// memory history\nvar canUseDOM = !!(typeof window !== \"undefined\" && window.document && window.document.createElement);\nvar getSource = function getSource() {\n return canUseDOM ? window : createMemorySource();\n};\nvar globalHistory = createHistory(getSource());\nvar navigate = globalHistory.navigate;\n\n////////////////////////////////////////////////////////////////////////////////\n\nexports.globalHistory = globalHistory;\nexports.navigate = navigate;\nexports.createHistory = createHistory;\nexports.createMemorySource = createMemorySource;","\"use strict\";\n\nexports.__esModule = true;\nexports.shallowCompare = exports.validateRedirect = exports.insertParams = exports.resolve = exports.match = exports.pick = exports.startsWith = undefined;\nvar _invariant = require(\"invariant\");\nvar _invariant2 = _interopRequireDefault(_invariant);\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// startsWith(string, search) - Check if `string` starts with `search`\nvar startsWith = function startsWith(string, search) {\n return string.substr(0, search.length) === search;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// pick(routes, uri)\n//\n// Ranks and picks the best route to match. Each segment gets the highest\n// amount of points, then the type of segment gets an additional amount of\n// points where\n//\n// static > dynamic > splat > root\n//\n// This way we don't have to worry about the order of our routes, let the\n// computers do it.\n//\n// A route looks like this\n//\n// { path, default, value }\n//\n// And a returned match looks like:\n//\n// { route, params, uri }\n//\n// I know, I should use TypeScript not comments for these types.\nvar pick = function pick(routes, uri) {\n var match = void 0;\n var default_ = void 0;\n var _uri$split = uri.split(\"?\"),\n uriPathname = _uri$split[0];\n var uriSegments = segmentize(uriPathname);\n var isRootUri = uriSegments[0] === \"\";\n var ranked = rankRoutes(routes);\n for (var i = 0, l = ranked.length; i < l; i++) {\n var missed = false;\n var route = ranked[i].route;\n if (route.default) {\n default_ = {\n route: route,\n params: {},\n uri: uri\n };\n continue;\n }\n var routeSegments = segmentize(route.path);\n var params = {};\n var max = Math.max(uriSegments.length, routeSegments.length);\n var index = 0;\n for (; index < max; index++) {\n var routeSegment = routeSegments[index];\n var uriSegment = uriSegments[index];\n if (isSplat(routeSegment)) {\n // Hit a splat, just grab the rest, and return a match\n // uri: /files/documents/work\n // route: /files/*\n var param = routeSegment.slice(1) || \"*\";\n params[param] = uriSegments.slice(index).map(decodeURIComponent).join(\"/\");\n break;\n }\n if (uriSegment === undefined) {\n // URI is shorter than the route, no match\n // uri: /users\n // route: /users/:userId\n missed = true;\n break;\n }\n var dynamicMatch = paramRe.exec(routeSegment);\n if (dynamicMatch && !isRootUri) {\n var matchIsNotReserved = reservedNames.indexOf(dynamicMatch[1]) === -1;\n !matchIsNotReserved ? process.env.NODE_ENV !== \"production\" ? (0, _invariant2.default)(false, \" dynamic segment \\\"\" + dynamicMatch[1] + \"\\\" is a reserved name. Please use a different name in path \\\"\" + route.path + \"\\\".\") : (0, _invariant2.default)(false) : void 0;\n var value = decodeURIComponent(uriSegment);\n params[dynamicMatch[1]] = value;\n } else if (routeSegment !== uriSegment) {\n // Current segments don't match, not dynamic, not splat, so no match\n // uri: /users/123/settings\n // route: /users/:id/profile\n missed = true;\n break;\n }\n }\n if (!missed) {\n match = {\n route: route,\n params: params,\n uri: \"/\" + uriSegments.slice(0, index).join(\"/\")\n };\n break;\n }\n }\n return match || default_ || null;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// match(path, uri) - Matches just one path to a uri, also lol\nvar match = function match(path, uri) {\n return pick([{\n path: path\n }], uri);\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// resolve(to, basepath)\n//\n// Resolves URIs as though every path is a directory, no files. Relative URIs\n// in the browser can feel awkward because not only can you be \"in a directory\"\n// you can be \"at a file\", too. For example\n//\n// browserSpecResolve('foo', '/bar/') => /bar/foo\n// browserSpecResolve('foo', '/bar') => /foo\n//\n// But on the command line of a file system, it's not as complicated, you can't\n// `cd` from a file, only directories. This way, links have to know less about\n// their current path. To go deeper you can do this:\n//\n// \n// // instead of\n// \n//\n// Just like `cd`, if you want to go deeper from the command line, you do this:\n//\n// cd deeper\n// # not\n// cd $(pwd)/deeper\n//\n// By treating every path as a directory, linking to relative paths should\n// require less contextual information and (fingers crossed) be more intuitive.\nvar resolve = function resolve(to, base) {\n // /foo/bar, /baz/qux => /foo/bar\n if (startsWith(to, \"/\")) {\n return to;\n }\n var _to$split = to.split(\"?\"),\n toPathname = _to$split[0],\n toQuery = _to$split[1];\n var _base$split = base.split(\"?\"),\n basePathname = _base$split[0];\n var toSegments = segmentize(toPathname);\n var baseSegments = segmentize(basePathname);\n\n // ?a=b, /users?b=c => /users?a=b\n if (toSegments[0] === \"\") {\n return addQuery(basePathname, toQuery);\n }\n\n // profile, /users/789 => /users/789/profile\n if (!startsWith(toSegments[0], \".\")) {\n var pathname = baseSegments.concat(toSegments).join(\"/\");\n return addQuery((basePathname === \"/\" ? \"\" : \"/\") + pathname, toQuery);\n }\n\n // ./ /users/123 => /users/123\n // ../ /users/123 => /users\n // ../.. /users/123 => /\n // ../../one /a/b/c/d => /a/b/one\n // .././one /a/b/c/d => /a/b/c/one\n var allSegments = baseSegments.concat(toSegments);\n var segments = [];\n for (var i = 0, l = allSegments.length; i < l; i++) {\n var segment = allSegments[i];\n if (segment === \"..\") segments.pop();else if (segment !== \".\") segments.push(segment);\n }\n return addQuery(\"/\" + segments.join(\"/\"), toQuery);\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// insertParams(path, params)\n\nvar insertParams = function insertParams(path, params) {\n var _path$split = path.split(\"?\"),\n pathBase = _path$split[0],\n _path$split$ = _path$split[1],\n query = _path$split$ === undefined ? \"\" : _path$split$;\n var segments = segmentize(pathBase);\n var constructedPath = \"/\" + segments.map(function (segment) {\n var match = paramRe.exec(segment);\n return match ? params[match[1]] : segment;\n }).join(\"/\");\n var _params$location = params.location;\n _params$location = _params$location === undefined ? {} : _params$location;\n var _params$location$sear = _params$location.search,\n search = _params$location$sear === undefined ? \"\" : _params$location$sear;\n var searchSplit = search.split(\"?\")[1] || \"\";\n constructedPath = addQuery(constructedPath, query, searchSplit);\n return constructedPath;\n};\nvar validateRedirect = function validateRedirect(from, to) {\n var filter = function filter(segment) {\n return isDynamic(segment);\n };\n var fromString = segmentize(from).filter(filter).sort().join(\"/\");\n var toString = segmentize(to).filter(filter).sort().join(\"/\");\n return fromString === toString;\n};\n\n////////////////////////////////////////////////////////////////////////////////\n// Junk\nvar paramRe = /^:(.+)/;\nvar SEGMENT_POINTS = 4;\nvar STATIC_POINTS = 3;\nvar DYNAMIC_POINTS = 2;\nvar SPLAT_PENALTY = 1;\nvar ROOT_POINTS = 1;\nvar isRootSegment = function isRootSegment(segment) {\n return segment === \"\";\n};\nvar isDynamic = function isDynamic(segment) {\n return paramRe.test(segment);\n};\nvar isSplat = function isSplat(segment) {\n return segment && segment[0] === \"*\";\n};\nvar rankRoute = function rankRoute(route, index) {\n var score = route.default ? 0 : segmentize(route.path).reduce(function (score, segment) {\n score += SEGMENT_POINTS;\n if (isRootSegment(segment)) score += ROOT_POINTS;else if (isDynamic(segment)) score += DYNAMIC_POINTS;else if (isSplat(segment)) score -= SEGMENT_POINTS + SPLAT_PENALTY;else score += STATIC_POINTS;\n return score;\n }, 0);\n return {\n route: route,\n score: score,\n index: index\n };\n};\nvar rankRoutes = function rankRoutes(routes) {\n return routes.map(rankRoute).sort(function (a, b) {\n return a.score < b.score ? 1 : a.score > b.score ? -1 : a.index - b.index;\n });\n};\nvar segmentize = function segmentize(uri) {\n return uri\n // strip starting/ending slashes\n .replace(/(^\\/+|\\/+$)/g, \"\").split(\"/\");\n};\nvar addQuery = function addQuery(pathname) {\n for (var _len = arguments.length, query = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n query[_key - 1] = arguments[_key];\n }\n query = query.filter(function (q) {\n return q && q.length > 0;\n });\n return pathname + (query && query.length > 0 ? \"?\" + query.join(\"&\") : \"\");\n};\nvar reservedNames = [\"uri\", \"path\"];\n\n/**\n * Shallow compares two objects.\n * @param {Object} obj1 The first object to compare.\n * @param {Object} obj2 The second object to compare.\n */\nvar shallowCompare = function shallowCompare(obj1, obj2) {\n var obj1Keys = Object.keys(obj1);\n return obj1Keys.length === Object.keys(obj2).length && obj1Keys.every(function (key) {\n return obj2.hasOwnProperty(key) && obj1[key] === obj2[key];\n });\n};\n\n////////////////////////////////////////////////////////////////////////////////\nexports.startsWith = startsWith;\nexports.pick = pick;\nexports.match = match;\nexports.resolve = resolve;\nexports.insertParams = insertParams;\nexports.validateRedirect = validateRedirect;\nexports.shallowCompare = shallowCompare;","import React from 'react';\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}\nfunction _extends() {\n _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 return _extends.apply(this, arguments);\n}\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n if (enumerableOnly) symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n });\n keys.push.apply(keys, symbols);\n }\n return keys;\n}\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n if (i % 2) {\n ownKeys(Object(source), true).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n } else if (Object.getOwnPropertyDescriptors) {\n Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n } else {\n ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n }\n return target;\n}\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = _objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n return target;\n}\nvar isFunction = function isFunction(obj) {\n return typeof obj === 'function';\n};\nvar MDXContext = /*#__PURE__*/React.createContext({});\nvar withMDXComponents = function withMDXComponents(Component) {\n return function (props) {\n var allComponents = useMDXComponents(props.components);\n return /*#__PURE__*/React.createElement(Component, _extends({}, props, {\n components: allComponents\n }));\n };\n};\nvar useMDXComponents = function useMDXComponents(components) {\n var contextComponents = React.useContext(MDXContext);\n var allComponents = contextComponents;\n if (components) {\n allComponents = isFunction(components) ? components(contextComponents) : _objectSpread2(_objectSpread2({}, contextComponents), components);\n }\n return allComponents;\n};\nvar MDXProvider = function MDXProvider(props) {\n var allComponents = useMDXComponents(props.components);\n return /*#__PURE__*/React.createElement(MDXContext.Provider, {\n value: allComponents\n }, props.children);\n};\nvar TYPE_PROP_NAME = 'mdxType';\nvar DEFAULTS = {\n inlineCode: 'code',\n wrapper: function wrapper(_ref) {\n var children = _ref.children;\n return /*#__PURE__*/React.createElement(React.Fragment, {}, children);\n }\n};\nvar MDXCreateElement = /*#__PURE__*/React.forwardRef(function (props, ref) {\n var propComponents = props.components,\n mdxType = props.mdxType,\n originalType = props.originalType,\n parentName = props.parentName,\n etc = _objectWithoutProperties(props, [\"components\", \"mdxType\", \"originalType\", \"parentName\"]);\n var components = useMDXComponents(propComponents);\n var type = mdxType;\n var Component = components[\"\".concat(parentName, \".\").concat(type)] || components[type] || DEFAULTS[type] || originalType;\n if (propComponents) {\n return /*#__PURE__*/React.createElement(Component, _objectSpread2(_objectSpread2({\n ref: ref\n }, etc), {}, {\n components: propComponents\n }));\n }\n return /*#__PURE__*/React.createElement(Component, _objectSpread2({\n ref: ref\n }, etc));\n});\nMDXCreateElement.displayName = 'MDXCreateElement';\nfunction createElement(type, props) {\n var args = arguments;\n var mdxType = props && props.mdxType;\n if (typeof type === 'string' || mdxType) {\n var argsLength = args.length;\n var createElementArgArray = new Array(argsLength);\n createElementArgArray[0] = MDXCreateElement;\n var newProps = {};\n for (var key in props) {\n if (hasOwnProperty.call(props, key)) {\n newProps[key] = props[key];\n }\n }\n newProps.originalType = type;\n newProps[TYPE_PROP_NAME] = typeof type === 'string' ? type : mdxType;\n createElementArgArray[1] = newProps;\n for (var i = 2; i < argsLength; i++) {\n createElementArgArray[i] = args[i];\n }\n return React.createElement.apply(null, createElementArgArray);\n }\n return React.createElement.apply(null, args);\n}\nexport { MDXContext, MDXProvider, createElement as mdx, useMDXComponents, withMDXComponents };","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');\nvar defaults = require('../defaults');\nvar Cancel = require('../cancel/Cancel');\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 var onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\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(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, 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 = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n var transitional = config.transitional || defaults.transitional;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(createError(timeoutErrorMessage, 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 || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = function (cancel) {\n if (!request) {\n return;\n }\n reject(!cancel || cancel && cancel.type ? new Cancel('canceled') : cancel);\n request.abort();\n request = null;\n };\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\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\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\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// Expose Cancel & CancelToken\naxios.Cancel = require('./cancel/Cancel');\naxios.CancelToken = require('./cancel/CancelToken');\naxios.isCancel = require('./cancel/isCancel');\naxios.VERSION = require('./env/data').version;\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\n // eslint-disable-next-line func-names\n this.promise.then(function (cancel) {\n if (!token._listeners) return;\n var i;\n var l = token._listeners.length;\n for (i = 0; i < l; i++) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = function (onfulfilled) {\n var _resolve;\n // eslint-disable-next-line func-names\n var promise = new Promise(function (resolve) {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n return promise;\n };\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 * Subscribe to the cancel signal\n */\n\nCancelToken.prototype.subscribe = function subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n};\n\n/**\n * Unsubscribe from the cancel signal\n */\n\nCancelToken.prototype.unsubscribe = function unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n var index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\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),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\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');\nvar Cancel = require('../cancel/Cancel');\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 if (config.signal && config.signal.aborted) {\n throw new Cancel('canceled');\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 status: this.response && this.response.status ? this.response.status : null\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 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\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(prop) {\n if (!utils.isUndefined(config2[prop])) {\n return getMergedValue(undefined, config2[prop]);\n } else if (!utils.isUndefined(config1[prop])) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(prop) {\n if (prop in config2) {\n return getMergedValue(config1[prop], config2[prop]);\n } else if (prop in config1) {\n return getMergedValue(undefined, config1[prop]);\n }\n }\n var mergeMap = {\n 'url': valueFromConfig2,\n 'method': valueFromConfig2,\n 'data': valueFromConfig2,\n 'baseURL': defaultToConfig2,\n 'transformRequest': defaultToConfig2,\n 'transformResponse': defaultToConfig2,\n 'paramsSerializer': defaultToConfig2,\n 'timeout': defaultToConfig2,\n 'timeoutMessage': defaultToConfig2,\n 'withCredentials': defaultToConfig2,\n 'adapter': defaultToConfig2,\n 'responseType': defaultToConfig2,\n 'xsrfCookieName': defaultToConfig2,\n 'xsrfHeaderName': defaultToConfig2,\n 'onUploadProgress': defaultToConfig2,\n 'onDownloadProgress': defaultToConfig2,\n 'decompress': defaultToConfig2,\n 'maxContentLength': defaultToConfig2,\n 'maxBodyLength': defaultToConfig2,\n 'transport': defaultToConfig2,\n 'httpAgent': defaultToConfig2,\n 'httpsAgent': defaultToConfig2,\n 'cancelToken': defaultToConfig2,\n 'socketPath': defaultToConfig2,\n 'responseEncoding': defaultToConfig2,\n 'validateStatus': mergeDirectKeys\n };\n utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {\n var merge = mergeMap[prop] || mergeDeepProperties;\n var configValue = merge(prop);\n utils.isUndefined(configValue) && merge !== mergeDirectKeys || (config[prop] = configValue);\n });\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 || defaults.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 headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\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;","module.exports = {\n \"version\": \"0.24.0\"\n};","'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 VERSION = require('../env/data').version;\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 = {};\n\n/**\n * Transitional option validator\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + 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' + (version ? ' in ' + version : '')));\n }\n if (version && !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 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};","'use strict';\n\nconst preserveCamelCase = string => {\n let isLastCharLower = false;\n let isLastCharUpper = false;\n let isLastLastCharUpper = false;\n for (let i = 0; i < string.length; i++) {\n const character = string[i];\n if (isLastCharLower && /[a-zA-Z]/.test(character) && character.toUpperCase() === character) {\n string = string.slice(0, i) + '-' + string.slice(i);\n isLastCharLower = false;\n isLastLastCharUpper = isLastCharUpper;\n isLastCharUpper = true;\n i++;\n } else if (isLastCharUpper && isLastLastCharUpper && /[a-zA-Z]/.test(character) && character.toLowerCase() === character) {\n string = string.slice(0, i - 1) + '-' + string.slice(i - 1);\n isLastLastCharUpper = isLastCharUpper;\n isLastCharUpper = false;\n isLastCharLower = true;\n } else {\n isLastCharLower = character.toLowerCase() === character && character.toUpperCase() !== character;\n isLastLastCharUpper = isLastCharUpper;\n isLastCharUpper = character.toUpperCase() === character && character.toLowerCase() !== character;\n }\n }\n return string;\n};\nconst camelCase = (input, options) => {\n if (!(typeof input === 'string' || Array.isArray(input))) {\n throw new TypeError('Expected the input to be `string | string[]`');\n }\n options = Object.assign({\n pascalCase: false\n }, options);\n const postProcess = x => options.pascalCase ? x.charAt(0).toUpperCase() + x.slice(1) : x;\n if (Array.isArray(input)) {\n input = input.map(x => x.trim()).filter(x => x.length).join('-');\n } else {\n input = input.trim();\n }\n if (input.length === 0) {\n return '';\n }\n if (input.length === 1) {\n return options.pascalCase ? input.toUpperCase() : input.toLowerCase();\n }\n const hasUpperCase = input !== input.toLowerCase();\n if (hasUpperCase) {\n input = preserveCamelCase(input);\n }\n input = input.replace(/^[_.\\- ]+/, '').toLowerCase().replace(/[_.\\- ]+(\\w|$)/g, (_, p1) => p1.toUpperCase()).replace(/\\d+(\\w|$)/g, m => m.toUpperCase());\n return postProcess(input);\n};\nmodule.exports = camelCase;\n// TODO: Remove this for the next major release\nmodule.exports.default = camelCase;","var _createClass = function () {\n function 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 }\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\nvar _templateObject = _taggedTemplateLiteral(['', ''], ['', '']);\nfunction _taggedTemplateLiteral(strings, raw) {\n return Object.freeze(Object.defineProperties(strings, {\n raw: {\n value: Object.freeze(raw)\n }\n }));\n}\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\n/**\n * @class TemplateTag\n * @classdesc Consumes a pipeline of composable transformer plugins and produces a template tag.\n */\nvar TemplateTag = function () {\n /**\n * constructs a template tag\n * @constructs TemplateTag\n * @param {...Object} [...transformers] - an array or arguments list of transformers\n * @return {Function} - a template tag\n */\n function TemplateTag() {\n var _this = this;\n for (var _len = arguments.length, transformers = Array(_len), _key = 0; _key < _len; _key++) {\n transformers[_key] = arguments[_key];\n }\n _classCallCheck(this, TemplateTag);\n this.tag = function (strings) {\n for (var _len2 = arguments.length, expressions = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n expressions[_key2 - 1] = arguments[_key2];\n }\n if (typeof strings === 'function') {\n // if the first argument passed is a function, assume it is a template tag and return\n // an intermediary tag that processes the template using the aforementioned tag, passing the\n // result to our tag\n return _this.interimTag.bind(_this, strings);\n }\n if (typeof strings === 'string') {\n // if the first argument passed is a string, just transform it\n return _this.transformEndResult(strings);\n }\n\n // else, return a transformed end result of processing the template with our tag\n strings = strings.map(_this.transformString.bind(_this));\n return _this.transformEndResult(strings.reduce(_this.processSubstitutions.bind(_this, expressions)));\n };\n\n // if first argument is an array, extrude it as a list of transformers\n if (transformers.length > 0 && Array.isArray(transformers[0])) {\n transformers = transformers[0];\n }\n\n // if any transformers are functions, this means they are not initiated - automatically initiate them\n this.transformers = transformers.map(function (transformer) {\n return typeof transformer === 'function' ? transformer() : transformer;\n });\n\n // return an ES2015 template tag\n return this.tag;\n }\n\n /**\n * Applies all transformers to a template literal tagged with this method.\n * If a function is passed as the first argument, assumes the function is a template tag\n * and applies it to the template, returning a template tag.\n * @param {(Function|String|Array)} strings - Either a template tag or an array containing template strings separated by identifier\n * @param {...*} ...expressions - Optional list of substitution values.\n * @return {(String|Function)} - Either an intermediary tag function or the results of processing the template.\n */\n\n _createClass(TemplateTag, [{\n key: 'interimTag',\n /**\n * An intermediary template tag that receives a template tag and passes the result of calling the template with the received\n * template tag to our own template tag.\n * @param {Function} nextTag - the received template tag\n * @param {Array} template - the template to process\n * @param {...*} ...substitutions - `substitutions` is an array of all substitutions in the template\n * @return {*} - the final processed value\n */\n value: function interimTag(previousTag, template) {\n for (var _len3 = arguments.length, substitutions = Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {\n substitutions[_key3 - 2] = arguments[_key3];\n }\n return this.tag(_templateObject, previousTag.apply(undefined, [template].concat(substitutions)));\n }\n\n /**\n * Performs bulk processing on the tagged template, transforming each substitution and then\n * concatenating the resulting values into a string.\n * @param {Array<*>} substitutions - an array of all remaining substitutions present in this template\n * @param {String} resultSoFar - this iteration's result string so far\n * @param {String} remainingPart - the template chunk after the current substitution\n * @return {String} - the result of joining this iteration's processed substitution with the result\n */\n }, {\n key: 'processSubstitutions',\n value: function processSubstitutions(substitutions, resultSoFar, remainingPart) {\n var substitution = this.transformSubstitution(substitutions.shift(), resultSoFar);\n return ''.concat(resultSoFar, substitution, remainingPart);\n }\n\n /**\n * Iterate through each transformer, applying the transformer's `onString` method to the template\n * strings before all substitutions are processed.\n * @param {String} str - The input string\n * @return {String} - The final results of processing each transformer\n */\n }, {\n key: 'transformString',\n value: function transformString(str) {\n var cb = function cb(res, transform) {\n return transform.onString ? transform.onString(res) : res;\n };\n return this.transformers.reduce(cb, str);\n }\n\n /**\n * When a substitution is encountered, iterates through each transformer and applies the transformer's\n * `onSubstitution` method to the substitution.\n * @param {*} substitution - The current substitution\n * @param {String} resultSoFar - The result up to and excluding this substitution.\n * @return {*} - The final result of applying all substitution transformations.\n */\n }, {\n key: 'transformSubstitution',\n value: function transformSubstitution(substitution, resultSoFar) {\n var cb = function cb(res, transform) {\n return transform.onSubstitution ? transform.onSubstitution(res, resultSoFar) : res;\n };\n return this.transformers.reduce(cb, substitution);\n }\n\n /**\n * Iterates through each transformer, applying the transformer's `onEndResult` method to the\n * template literal after all substitutions have finished processing.\n * @param {String} endResult - The processed template, just before it is returned from the tag\n * @return {String} - The final results of processing each transformer\n */\n }, {\n key: 'transformEndResult',\n value: function transformEndResult(endResult) {\n var cb = function cb(res, transform) {\n return transform.onEndResult ? transform.onEndResult(res) : res;\n };\n return this.transformers.reduce(cb, endResult);\n }\n }]);\n return TemplateTag;\n}();\nexport default TemplateTag;","var defaults = {\n separator: '',\n conjunction: '',\n serial: false\n};\n\n/**\n * Converts an array substitution to a string containing a list\n * @param {String} [opts.separator = ''] - the character that separates each item\n * @param {String} [opts.conjunction = ''] - replace the last separator with this\n * @param {Boolean} [opts.serial = false] - include the separator before the conjunction? (Oxford comma use-case)\n *\n * @return {Object} - a TemplateTag transformer\n */\nvar inlineArrayTransformer = function inlineArrayTransformer() {\n var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaults;\n return {\n onSubstitution: function onSubstitution(substitution, resultSoFar) {\n // only operate on arrays\n if (Array.isArray(substitution)) {\n var arrayLength = substitution.length;\n var separator = opts.separator;\n var conjunction = opts.conjunction;\n var serial = opts.serial;\n // join each item in the array into a string where each item is separated by separator\n // be sure to maintain indentation\n var indent = resultSoFar.match(/(\\n?[^\\S\\n]+)$/);\n if (indent) {\n substitution = substitution.join(separator + indent[1]);\n } else {\n substitution = substitution.join(separator + ' ');\n }\n // if conjunction is set, replace the last separator with conjunction, but only if there is more than one substitution\n if (conjunction && arrayLength > 1) {\n var separatorIndex = substitution.lastIndexOf(separator);\n substitution = substitution.slice(0, separatorIndex) + (serial ? separator : '') + ' ' + conjunction + substitution.slice(separatorIndex + 1);\n }\n }\n return substitution;\n }\n };\n};\nexport default inlineArrayTransformer;","function _toConsumableArray(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n } else {\n return Array.from(arr);\n }\n}\n\n/**\n * strips indentation from a template literal\n * @param {String} type = 'initial' - whether to remove all indentation or just leading indentation. can be 'all' or 'initial'\n * @return {Object} - a TemplateTag transformer\n */\nvar stripIndentTransformer = function stripIndentTransformer() {\n var type = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'initial';\n return {\n onEndResult: function onEndResult(endResult) {\n if (type === 'initial') {\n // remove the shortest leading indentation from each line\n var match = endResult.match(/^[^\\S\\n]*(?=\\S)/gm);\n var indent = match && Math.min.apply(Math, _toConsumableArray(match.map(function (el) {\n return el.length;\n })));\n if (indent) {\n var regexp = new RegExp('^.{' + indent + '}', 'gm');\n return endResult.replace(regexp, '');\n }\n return endResult;\n }\n if (type === 'all') {\n // remove all indentation from each line\n return endResult.replace(/^[^\\S\\n]+/gm, '');\n }\n throw new Error('Unknown type: ' + type);\n }\n };\n};\nexport default stripIndentTransformer;","/**\n * TemplateTag transformer that trims whitespace on the end result of a tagged template\n * @param {String} side = '' - The side of the string to trim. Can be 'start' or 'end' (alternatively 'left' or 'right')\n * @return {Object} - a TemplateTag transformer\n */\nvar trimResultTransformer = function trimResultTransformer() {\n var side = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n return {\n onEndResult: function onEndResult(endResult) {\n if (side === '') {\n return endResult.trim();\n }\n side = side.toLowerCase();\n if (side === 'start' || side === 'left') {\n return endResult.replace(/^\\s*/, '');\n }\n if (side === 'end' || side === 'right') {\n return endResult.replace(/\\s*$/, '');\n }\n throw new Error('Side not supported: ' + side);\n }\n };\n};\nexport default trimResultTransformer;","var splitStringTransformer = function splitStringTransformer(splitBy) {\n return {\n onSubstitution: function onSubstitution(substitution, resultSoFar) {\n if (splitBy != null && typeof splitBy === 'string') {\n if (typeof substitution === 'string' && substitution.includes(splitBy)) {\n substitution = substitution.split(splitBy);\n }\n } else {\n throw new Error('You need to specify a string character to split by.');\n }\n return substitution;\n }\n };\n};\nexport default splitStringTransformer;","import TemplateTag from '../TemplateTag';\nimport stripIndentTransformer from '../stripIndentTransformer';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nvar commaLists = new TemplateTag(inlineArrayTransformer({\n separator: ','\n}), stripIndentTransformer, trimResultTransformer);\nexport default commaLists;","import TemplateTag from '../TemplateTag';\nimport stripIndentTransformer from '../stripIndentTransformer';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nvar commaListsAnd = new TemplateTag(inlineArrayTransformer({\n separator: ',',\n conjunction: 'and'\n}), stripIndentTransformer, trimResultTransformer);\nexport default commaListsAnd;","import TemplateTag from '../TemplateTag';\nimport stripIndentTransformer from '../stripIndentTransformer';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nvar commaListsOr = new TemplateTag(inlineArrayTransformer({\n separator: ',',\n conjunction: 'or'\n}), stripIndentTransformer, trimResultTransformer);\nexport default commaListsOr;","var isValidValue = function isValidValue(x) {\n return x != null && !Number.isNaN(x) && typeof x !== 'boolean';\n};\nvar removeNonPrintingValuesTransformer = function removeNonPrintingValuesTransformer() {\n return {\n onSubstitution: function onSubstitution(substitution) {\n if (Array.isArray(substitution)) {\n return substitution.filter(isValidValue);\n }\n if (isValidValue(substitution)) {\n return substitution;\n }\n return '';\n }\n };\n};\nexport default removeNonPrintingValuesTransformer;","var replaceSubstitutionTransformer = function replaceSubstitutionTransformer(replaceWhat, replaceWith) {\n return {\n onSubstitution: function onSubstitution(substitution, resultSoFar) {\n if (replaceWhat == null || replaceWith == null) {\n throw new Error('replaceSubstitutionTransformer requires at least 2 arguments.');\n }\n\n // Do not touch if null or undefined\n if (substitution == null) {\n return substitution;\n } else {\n return substitution.toString().replace(replaceWhat, replaceWith);\n }\n }\n };\n};\nexport default replaceSubstitutionTransformer;","import TemplateTag from '../TemplateTag';\nimport stripIndentTransformer from '../stripIndentTransformer';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nimport splitStringTransformer from '../splitStringTransformer';\nimport removeNonPrintingValuesTransformer from '../removeNonPrintingValuesTransformer';\nvar html = new TemplateTag(splitStringTransformer('\\n'), removeNonPrintingValuesTransformer, inlineArrayTransformer, stripIndentTransformer, trimResultTransformer);\nexport default html;","/**\n * Replaces tabs, newlines and spaces with the chosen value when they occur in sequences\n * @param {(String|RegExp)} replaceWhat - the value or pattern that should be replaced\n * @param {*} replaceWith - the replacement value\n * @return {Object} - a TemplateTag transformer\n */\nvar replaceResultTransformer = function replaceResultTransformer(replaceWhat, replaceWith) {\n return {\n onEndResult: function onEndResult(endResult) {\n if (replaceWhat == null || replaceWith == null) {\n throw new Error('replaceResultTransformer requires at least 2 arguments.');\n }\n return endResult.replace(replaceWhat, replaceWith);\n }\n };\n};\nexport default replaceResultTransformer;","import TemplateTag from '../TemplateTag';\nimport stripIndentTransformer from '../stripIndentTransformer';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nimport splitStringTransformer from '../splitStringTransformer';\nimport replaceSubstitutionTransformer from '../replaceSubstitutionTransformer';\nvar safeHtml = new TemplateTag(splitStringTransformer('\\n'), inlineArrayTransformer, stripIndentTransformer, trimResultTransformer, replaceSubstitutionTransformer(/&/g, '&'), replaceSubstitutionTransformer(//g, '>'), replaceSubstitutionTransformer(/\"/g, '"'), replaceSubstitutionTransformer(/'/g, '''), replaceSubstitutionTransformer(/`/g, '`'));\nexport default safeHtml;","import TemplateTag from '../TemplateTag';\nimport trimResultTransformer from '../trimResultTransformer';\nimport replaceResultTransformer from '../replaceResultTransformer';\nvar oneLine = new TemplateTag(replaceResultTransformer(/(?:\\n(?:\\s*))+/g, ' '), trimResultTransformer);\nexport default oneLine;","import TemplateTag from '../TemplateTag';\nimport trimResultTransformer from '../trimResultTransformer';\nimport replaceResultTransformer from '../replaceResultTransformer';\nvar oneLineTrim = new TemplateTag(replaceResultTransformer(/(?:\\n\\s*)/g, ''), trimResultTransformer);\nexport default oneLineTrim;","import TemplateTag from '../TemplateTag';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nimport replaceResultTransformer from '../replaceResultTransformer';\nvar oneLineCommaLists = new TemplateTag(inlineArrayTransformer({\n separator: ','\n}), replaceResultTransformer(/(?:\\s+)/g, ' '), trimResultTransformer);\nexport default oneLineCommaLists;","import TemplateTag from '../TemplateTag';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nimport replaceResultTransformer from '../replaceResultTransformer';\nvar oneLineCommaListsOr = new TemplateTag(inlineArrayTransformer({\n separator: ',',\n conjunction: 'or'\n}), replaceResultTransformer(/(?:\\s+)/g, ' '), trimResultTransformer);\nexport default oneLineCommaListsOr;","import TemplateTag from '../TemplateTag';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nimport replaceResultTransformer from '../replaceResultTransformer';\nvar oneLineCommaListsAnd = new TemplateTag(inlineArrayTransformer({\n separator: ',',\n conjunction: 'and'\n}), replaceResultTransformer(/(?:\\s+)/g, ' '), trimResultTransformer);\nexport default oneLineCommaListsAnd;","import TemplateTag from '../TemplateTag';\nimport stripIndentTransformer from '../stripIndentTransformer';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nvar inlineLists = new TemplateTag(inlineArrayTransformer, stripIndentTransformer, trimResultTransformer);\nexport default inlineLists;","import TemplateTag from '../TemplateTag';\nimport inlineArrayTransformer from '../inlineArrayTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nimport replaceResultTransformer from '../replaceResultTransformer';\nvar oneLineInlineLists = new TemplateTag(inlineArrayTransformer, replaceResultTransformer(/(?:\\s+)/g, ' '), trimResultTransformer);\nexport default oneLineInlineLists;","import TemplateTag from '../TemplateTag';\nimport stripIndentTransformer from '../stripIndentTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nvar stripIndent = new TemplateTag(stripIndentTransformer, trimResultTransformer);\nexport default stripIndent;","import TemplateTag from '../TemplateTag';\nimport stripIndentTransformer from '../stripIndentTransformer';\nimport trimResultTransformer from '../trimResultTransformer';\nvar stripIndents = new TemplateTag(stripIndentTransformer('all'), trimResultTransformer);\nexport default stripIndents;","/**\n * elasticlunr - http://weixsong.github.io\n * Lightweight full-text search engine in Javascript for browser search and offline search. - 0.9.5\n *\n * Copyright (C) 2016 Oliver Nightingale\n * Copyright (C) 2016 Wei Song\n * MIT Licensed\n * @license\n */\n\n(function () {\n /*!\n * elasticlunr.js\n * Copyright (C) 2016 Oliver Nightingale\n * Copyright (C) 2016 Wei Song\n */\n\n /**\n * Convenience function for instantiating a new elasticlunr index and configuring it\n * with the default pipeline functions and the passed config function.\n *\n * When using this convenience function a new index will be created with the\n * following functions already in the pipeline:\n * \n * 1. elasticlunr.trimmer - trim non-word character\n * 2. elasticlunr.StopWordFilter - filters out any stop words before they enter the\n * index\n * 3. elasticlunr.stemmer - stems the tokens before entering the index.\n *\n *\n * Example:\n *\n * var idx = elasticlunr(function () {\n * this.addField('id');\n * this.addField('title');\n * this.addField('body');\n * \n * //this.setRef('id'); // default ref is 'id'\n *\n * this.pipeline.add(function () {\n * // some custom pipeline function\n * });\n * });\n * \n * idx.addDoc({\n * id: 1, \n * title: 'Oracle released database 12g',\n * body: 'Yestaday, Oracle has released their latest database, named 12g, more robust. this product will increase Oracle profit.'\n * });\n * \n * idx.addDoc({\n * id: 2, \n * title: 'Oracle released annual profit report',\n * body: 'Yestaday, Oracle has released their annual profit report of 2015, total profit is 12.5 Billion.'\n * });\n * \n * # simple search\n * idx.search('oracle database');\n * \n * # search with query-time boosting\n * idx.search('oracle database', {fields: {title: {boost: 2}, body: {boost: 1}}});\n *\n * @param {Function} config A function that will be called with the new instance\n * of the elasticlunr.Index as both its context and first parameter. It can be used to\n * customize the instance of new elasticlunr.Index.\n * @namespace\n * @module\n * @return {elasticlunr.Index}\n *\n */\n var elasticlunr = function (config) {\n var idx = new elasticlunr.Index();\n idx.pipeline.add(elasticlunr.trimmer, elasticlunr.stopWordFilter, elasticlunr.stemmer);\n if (config) config.call(idx, idx);\n return idx;\n };\n elasticlunr.version = \"0.9.5\";\n\n // only used this to make elasticlunr.js compatible with lunr-languages\n // this is a trick to define a global alias of elasticlunr\n lunr = elasticlunr;\n\n /*!\n * elasticlunr.utils\n * Copyright (C) 2016 Oliver Nightingale\n * Copyright (C) 2016 Wei Song\n */\n\n /**\n * A namespace containing utils for the rest of the elasticlunr library\n */\n elasticlunr.utils = {};\n\n /**\n * Print a warning message to the console.\n *\n * @param {String} message The message to be printed.\n * @memberOf Utils\n */\n elasticlunr.utils.warn = function (global) {\n return function (message) {\n if (global.console && console.warn) {\n console.warn(message);\n }\n };\n }(this);\n\n /**\n * Convert an object to string.\n *\n * In the case of `null` and `undefined` the function returns\n * an empty string, in all other cases the result of calling\n * `toString` on the passed object is returned.\n *\n * @param {object} obj The object to convert to a string.\n * @return {String} string representation of the passed object.\n * @memberOf Utils\n */\n elasticlunr.utils.toString = function (obj) {\n if (obj === void 0 || obj === null) {\n return \"\";\n }\n return obj.toString();\n };\n /*!\n * elasticlunr.EventEmitter\n * Copyright (C) 2016 Oliver Nightingale\n * Copyright (C) 2016 Wei Song\n */\n\n /**\n * elasticlunr.EventEmitter is an event emitter for elasticlunr.\n * It manages adding and removing event handlers and triggering events and their handlers.\n *\n * Each event could has multiple corresponding functions,\n * these functions will be called as the sequence that they are added into the event.\n * \n * @constructor\n */\n elasticlunr.EventEmitter = function () {\n this.events = {};\n };\n\n /**\n * Binds a handler function to a specific event(s).\n *\n * Can bind a single function to many different events in one call.\n *\n * @param {String} [eventName] The name(s) of events to bind this function to.\n * @param {Function} fn The function to call when an event is fired.\n * @memberOf EventEmitter\n */\n elasticlunr.EventEmitter.prototype.addListener = function () {\n var args = Array.prototype.slice.call(arguments),\n fn = args.pop(),\n names = args;\n if (typeof fn !== \"function\") throw new TypeError(\"last argument must be a function\");\n names.forEach(function (name) {\n if (!this.hasHandler(name)) this.events[name] = [];\n this.events[name].push(fn);\n }, this);\n };\n\n /**\n * Removes a handler function from a specific event.\n *\n * @param {String} eventName The name of the event to remove this function from.\n * @param {Function} fn The function to remove from an event.\n * @memberOf EventEmitter\n */\n elasticlunr.EventEmitter.prototype.removeListener = function (name, fn) {\n if (!this.hasHandler(name)) return;\n var fnIndex = this.events[name].indexOf(fn);\n if (fnIndex === -1) return;\n this.events[name].splice(fnIndex, 1);\n if (this.events[name].length == 0) delete this.events[name];\n };\n\n /**\n * Call all functions that bounded to the given event.\n *\n * Additional data can be passed to the event handler as arguments to `emit`\n * after the event name.\n *\n * @param {String} eventName The name of the event to emit.\n * @memberOf EventEmitter\n */\n elasticlunr.EventEmitter.prototype.emit = function (name) {\n if (!this.hasHandler(name)) return;\n var args = Array.prototype.slice.call(arguments, 1);\n this.events[name].forEach(function (fn) {\n fn.apply(undefined, args);\n }, this);\n };\n\n /**\n * Checks whether a handler has ever been stored against an event.\n *\n * @param {String} eventName The name of the event to check.\n * @private\n * @memberOf EventEmitter\n */\n elasticlunr.EventEmitter.prototype.hasHandler = function (name) {\n return name in this.events;\n };\n /*!\n * elasticlunr.tokenizer\n * Copyright (C) 2016 Oliver Nightingale\n * Copyright (C) 2016 Wei Song\n */\n\n /**\n * A function for splitting a string into tokens.\n * Currently English is supported as default.\n * Uses `elasticlunr.tokenizer.seperator` to split strings, you could change\n * the value of this property to set how you want strings are split into tokens.\n * IMPORTANT: use elasticlunr.tokenizer.seperator carefully, if you are not familiar with\n * text process, then you'd better not change it.\n *\n * @module\n * @param {String} str The string that you want to tokenize.\n * @see elasticlunr.tokenizer.seperator\n * @return {Array}\n */\n elasticlunr.tokenizer = function (str) {\n if (!arguments.length || str === null || str === undefined) return [];\n if (Array.isArray(str)) {\n var arr = str.filter(function (token) {\n if (token === null || token === undefined) {\n return false;\n }\n return true;\n });\n arr = arr.map(function (t) {\n return elasticlunr.utils.toString(t).toLowerCase();\n });\n var out = [];\n arr.forEach(function (item) {\n var tokens = item.split(elasticlunr.tokenizer.seperator);\n out = out.concat(tokens);\n }, this);\n return out;\n }\n return str.toString().trim().toLowerCase().split(elasticlunr.tokenizer.seperator);\n };\n\n /**\n * Default string seperator.\n */\n elasticlunr.tokenizer.defaultSeperator = /[\\s\\-]+/;\n\n /**\n * The sperator used to split a string into tokens. Override this property to change the behaviour of\n * `elasticlunr.tokenizer` behaviour when tokenizing strings. By default this splits on whitespace and hyphens.\n *\n * @static\n * @see elasticlunr.tokenizer\n */\n elasticlunr.tokenizer.seperator = elasticlunr.tokenizer.defaultSeperator;\n\n /**\n * Set up customized string seperator\n *\n * @param {Object} sep The customized seperator that you want to use to tokenize a string.\n */\n elasticlunr.tokenizer.setSeperator = function (sep) {\n if (sep !== null && sep !== undefined && typeof sep === 'object') {\n elasticlunr.tokenizer.seperator = sep;\n }\n };\n\n /**\n * Reset string seperator\n *\n */\n elasticlunr.tokenizer.resetSeperator = function () {\n elasticlunr.tokenizer.seperator = elasticlunr.tokenizer.defaultSeperator;\n };\n\n /**\n * Get string seperator\n *\n */\n elasticlunr.tokenizer.getSeperator = function () {\n return elasticlunr.tokenizer.seperator;\n };\n /*!\n * elasticlunr.Pipeline\n * Copyright (C) 2016 Oliver Nightingale\n * Copyright (C) 2016 Wei Song\n */\n\n /**\n * elasticlunr.Pipelines maintain an ordered list of functions to be applied to \n * both documents tokens and query tokens.\n *\n * An instance of elasticlunr.Index will contain a pipeline\n * with a trimmer, a stop word filter, an English 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, it will call each function in turn.\n *\n * The output of the 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 elasticlunr.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 elasticlunr.Pipeline = function () {\n this._queue = [];\n };\n elasticlunr.Pipeline.registeredFunctions = {};\n\n /**\n * Register a function in 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 {Function} fn The function to register.\n * @param {String} label The label to register this function with\n * @memberOf Pipeline\n */\n elasticlunr.Pipeline.registerFunction = function (fn, label) {\n if (label in elasticlunr.Pipeline.registeredFunctions) {\n elasticlunr.utils.warn('Overwriting existing registered function: ' + label);\n }\n fn.label = label;\n elasticlunr.Pipeline.registeredFunctions[label] = fn;\n };\n\n /**\n * Get a registered function in the pipeline.\n *\n * @param {String} label The label of registered function.\n * @return {Function}\n * @memberOf Pipeline\n */\n elasticlunr.Pipeline.getRegisteredFunction = function (label) {\n if (label in elasticlunr.Pipeline.registeredFunctions !== true) {\n return null;\n }\n return elasticlunr.Pipeline.registeredFunctions[label];\n };\n\n /**\n * Warns if the function is not registered as a Pipeline function.\n *\n * @param {Function} fn The function to check for.\n * @private\n * @memberOf Pipeline\n */\n elasticlunr.Pipeline.warnIfFunctionNotRegistered = function (fn) {\n var isRegistered = fn.label && fn.label in this.registeredFunctions;\n if (!isRegistered) {\n elasticlunr.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 elasticlunr.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 * @return {elasticlunr.Pipeline}\n * @memberOf Pipeline\n */\n elasticlunr.Pipeline.load = function (serialised) {\n var pipeline = new elasticlunr.Pipeline();\n serialised.forEach(function (fnName) {\n var fn = elasticlunr.Pipeline.getRegisteredFunction(fnName);\n if (fn) {\n pipeline.add(fn);\n } else {\n throw new Error('Cannot load un-registered 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 {Function} functions Any number of functions to add to the pipeline.\n * @memberOf Pipeline\n */\n elasticlunr.Pipeline.prototype.add = function () {\n var fns = Array.prototype.slice.call(arguments);\n fns.forEach(function (fn) {\n elasticlunr.Pipeline.warnIfFunctionNotRegistered(fn);\n this._queue.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 * If existingFn is not found, throw an Exception.\n *\n * @param {Function} existingFn A function that already exists in the pipeline.\n * @param {Function} newFn The new function to add to the pipeline.\n * @memberOf Pipeline\n */\n elasticlunr.Pipeline.prototype.after = function (existingFn, newFn) {\n elasticlunr.Pipeline.warnIfFunctionNotRegistered(newFn);\n var pos = this._queue.indexOf(existingFn);\n if (pos === -1) {\n throw new Error('Cannot find existingFn');\n }\n this._queue.splice(pos + 1, 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 * If existingFn is not found, throw an Exception.\n *\n * @param {Function} existingFn A function that already exists in the pipeline.\n * @param {Function} newFn The new function to add to the pipeline.\n * @memberOf Pipeline\n */\n elasticlunr.Pipeline.prototype.before = function (existingFn, newFn) {\n elasticlunr.Pipeline.warnIfFunctionNotRegistered(newFn);\n var pos = this._queue.indexOf(existingFn);\n if (pos === -1) {\n throw new Error('Cannot find existingFn');\n }\n this._queue.splice(pos, 0, newFn);\n };\n\n /**\n * Removes a function from the pipeline.\n *\n * @param {Function} fn The function to remove from the pipeline.\n * @memberOf Pipeline\n */\n elasticlunr.Pipeline.prototype.remove = function (fn) {\n var pos = this._queue.indexOf(fn);\n if (pos === -1) {\n return;\n }\n this._queue.splice(pos, 1);\n };\n\n /**\n * Runs the current list of functions that registered in the pipeline against the\n * input tokens.\n *\n * @param {Array} tokens The tokens to run through the pipeline.\n * @return {Array}\n * @memberOf Pipeline\n */\n elasticlunr.Pipeline.prototype.run = function (tokens) {\n var out = [],\n tokenLength = tokens.length,\n pipelineLength = this._queue.length;\n for (var i = 0; i < tokenLength; i++) {\n var token = tokens[i];\n for (var j = 0; j < pipelineLength; j++) {\n token = this._queue[j](token, i, tokens);\n if (token === void 0 || token === null) break;\n }\n ;\n if (token !== void 0 && token !== null) out.push(token);\n }\n ;\n return out;\n };\n\n /**\n * Resets the pipeline by removing any existing processors.\n *\n * @memberOf Pipeline\n */\n elasticlunr.Pipeline.prototype.reset = function () {\n this._queue = [];\n };\n\n /**\n * Get the pipeline if user want to check the pipeline.\n *\n * @memberOf Pipeline\n */\n elasticlunr.Pipeline.prototype.get = function () {\n return this._queue;\n };\n\n /**\n * Returns a representation of the pipeline ready for serialisation.\n * Only serialize pipeline function's name. Not storing function, so when\n * loading the archived JSON index file, corresponding pipeline function is \n * added by registered function of elasticlunr.Pipeline.registeredFunctions\n *\n * Logs a warning if the function has not been registered.\n *\n * @return {Array}\n * @memberOf Pipeline\n */\n elasticlunr.Pipeline.prototype.toJSON = function () {\n return this._queue.map(function (fn) {\n elasticlunr.Pipeline.warnIfFunctionNotRegistered(fn);\n return fn.label;\n });\n };\n /*!\n * elasticlunr.Index\n * Copyright (C) 2016 Oliver Nightingale\n * Copyright (C) 2016 Wei Song\n */\n\n /**\n * elasticlunr.Index is object that manages a search index. It contains the indexes\n * and stores all the tokens and document lookups. It also provides the main\n * user facing API for the library.\n *\n * @constructor\n */\n elasticlunr.Index = function () {\n this._fields = [];\n this._ref = 'id';\n this.pipeline = new elasticlunr.Pipeline();\n this.documentStore = new elasticlunr.DocumentStore();\n this.index = {};\n this.eventEmitter = new elasticlunr.EventEmitter();\n this._idfCache = {};\n this.on('add', 'remove', 'update', function () {\n this._idfCache = {};\n }.bind(this));\n };\n\n /**\n * Bind a handler to events being emitted by the index.\n *\n * The handler can be bound to many events at the same time.\n *\n * @param {String} [eventName] The name(s) of events to bind the function to.\n * @param {Function} fn The serialised set to load.\n * @memberOf Index\n */\n elasticlunr.Index.prototype.on = function () {\n var args = Array.prototype.slice.call(arguments);\n return this.eventEmitter.addListener.apply(this.eventEmitter, args);\n };\n\n /**\n * Removes a handler from an event being emitted by the index.\n *\n * @param {String} eventName The name of events to remove the function from.\n * @param {Function} fn The serialised set to load.\n * @memberOf Index\n */\n elasticlunr.Index.prototype.off = function (name, fn) {\n return this.eventEmitter.removeListener(name, fn);\n };\n\n /**\n * Loads a previously serialised index.\n *\n * Issues a warning if the index being imported was serialised\n * by a different version of elasticlunr.\n *\n * @param {Object} serialisedData The serialised set to load.\n * @return {elasticlunr.Index}\n * @memberOf Index\n */\n elasticlunr.Index.load = function (serialisedData) {\n if (serialisedData.version !== elasticlunr.version) {\n elasticlunr.utils.warn('version mismatch: current ' + elasticlunr.version + ' importing ' + serialisedData.version);\n }\n var idx = new this();\n idx._fields = serialisedData.fields;\n idx._ref = serialisedData.ref;\n idx.documentStore = elasticlunr.DocumentStore.load(serialisedData.documentStore);\n idx.pipeline = elasticlunr.Pipeline.load(serialisedData.pipeline);\n idx.index = {};\n for (var field in serialisedData.index) {\n idx.index[field] = elasticlunr.InvertedIndex.load(serialisedData.index[field]);\n }\n return idx;\n };\n\n /**\n * Adds a field to the list of fields that will be searchable within documents in the index.\n *\n * Remember that inner index is build based on field, which means each field has one inverted index.\n *\n * Fields should be added before any documents are added to the index, fields\n * that are added after documents are added to the index will only apply to new\n * documents added to the index.\n *\n * @param {String} fieldName The name of the field within the document that should be indexed\n * @return {elasticlunr.Index}\n * @memberOf Index\n */\n elasticlunr.Index.prototype.addField = function (fieldName) {\n this._fields.push(fieldName);\n this.index[fieldName] = new elasticlunr.InvertedIndex();\n return this;\n };\n\n /**\n * Sets the property used to uniquely identify documents added to the index,\n * by default this property is 'id'.\n *\n * This should only be changed before adding documents to the index, changing\n * the ref property without resetting the index can lead to unexpected results.\n *\n * @param {String} refName The property to use to uniquely identify the\n * documents in the index.\n * @param {Boolean} emitEvent Whether to emit add events, defaults to true\n * @return {elasticlunr.Index}\n * @memberOf Index\n */\n elasticlunr.Index.prototype.setRef = function (refName) {\n this._ref = refName;\n return this;\n };\n\n /**\n *\n * Set if the JSON format original documents are save into elasticlunr.DocumentStore\n *\n * Defaultly save all the original JSON documents.\n *\n * @param {Boolean} save Whether to save the original JSON documents.\n * @return {elasticlunr.Index}\n * @memberOf Index\n */\n elasticlunr.Index.prototype.saveDocument = function (save) {\n this.documentStore = new elasticlunr.DocumentStore(save);\n return this;\n };\n\n /**\n * Add a JSON format document to the index.\n *\n * This is the way new documents enter the index, this function will run the\n * fields from the document through the index's pipeline and then add it to\n * the index, it will then show up in search results.\n *\n * An 'add' event is emitted with the document that has been added and the index\n * the document has been added to. This event can be silenced by passing false\n * as the second argument to add.\n *\n * @param {Object} doc The JSON format document to add to the index.\n * @param {Boolean} emitEvent Whether or not to emit events, default true.\n * @memberOf Index\n */\n elasticlunr.Index.prototype.addDoc = function (doc, emitEvent) {\n if (!doc) return;\n var emitEvent = emitEvent === undefined ? true : emitEvent;\n var docRef = doc[this._ref];\n this.documentStore.addDoc(docRef, doc);\n this._fields.forEach(function (field) {\n var fieldTokens = this.pipeline.run(elasticlunr.tokenizer(doc[field]));\n this.documentStore.addFieldLength(docRef, field, fieldTokens.length);\n var tokenCount = {};\n fieldTokens.forEach(function (token) {\n if (token in tokenCount) tokenCount[token] += 1;else tokenCount[token] = 1;\n }, this);\n for (var token in tokenCount) {\n var termFrequency = tokenCount[token];\n termFrequency = Math.sqrt(termFrequency);\n this.index[field].addToken(token, {\n ref: docRef,\n tf: termFrequency\n });\n }\n }, this);\n if (emitEvent) this.eventEmitter.emit('add', doc, this);\n };\n\n /**\n * Removes a document from the index by doc ref.\n *\n * To make sure documents no longer show up in search results they can be\n * removed from the index using this method.\n *\n * A 'remove' event is emitted with the document that has been removed and the index\n * the document has been removed from. This event can be silenced by passing false\n * as the second argument to remove.\n *\n * If user setting DocumentStore not storing the documents, then remove doc by docRef is not allowed.\n *\n * @param {String|Integer} docRef The document ref to remove from the index.\n * @param {Boolean} emitEvent Whether to emit remove events, defaults to true\n * @memberOf Index\n */\n elasticlunr.Index.prototype.removeDocByRef = function (docRef, emitEvent) {\n if (!docRef) return;\n if (this.documentStore.isDocStored() === false) {\n return;\n }\n if (!this.documentStore.hasDoc(docRef)) return;\n var doc = this.documentStore.getDoc(docRef);\n this.removeDoc(doc, false);\n };\n\n /**\n * Removes a document from the index.\n * This remove operation could work even the original doc is not store in the DocumentStore.\n *\n * To make sure documents no longer show up in search results they can be\n * removed from the index using this method.\n *\n * A 'remove' event is emitted with the document that has been removed and the index\n * the document has been removed from. This event can be silenced by passing false\n * as the second argument to remove.\n *\n *\n * @param {Object} doc The document ref to remove from the index.\n * @param {Boolean} emitEvent Whether to emit remove events, defaults to true\n * @memberOf Index\n */\n elasticlunr.Index.prototype.removeDoc = function (doc, emitEvent) {\n if (!doc) return;\n var emitEvent = emitEvent === undefined ? true : emitEvent;\n var docRef = doc[this._ref];\n if (!this.documentStore.hasDoc(docRef)) return;\n this.documentStore.removeDoc(docRef);\n this._fields.forEach(function (field) {\n var fieldTokens = this.pipeline.run(elasticlunr.tokenizer(doc[field]));\n fieldTokens.forEach(function (token) {\n this.index[field].removeToken(token, docRef);\n }, this);\n }, this);\n if (emitEvent) this.eventEmitter.emit('remove', doc, this);\n };\n\n /**\n * Updates a document in the index.\n *\n * When a document contained within the index gets updated, fields changed,\n * added or removed, to make sure it correctly matched against search queries,\n * it should be updated in the index.\n *\n * This method is just a wrapper around `remove` and `add`\n *\n * An 'update' event is emitted with the document that has been updated and the index.\n * This event can be silenced by passing false as the second argument to update. Only\n * an update event will be fired, the 'add' and 'remove' events of the underlying calls\n * are silenced.\n *\n * @param {Object} doc The document to update in the index.\n * @param {Boolean} emitEvent Whether to emit update events, defaults to true\n * @see Index.prototype.remove\n * @see Index.prototype.add\n * @memberOf Index\n */\n elasticlunr.Index.prototype.updateDoc = function (doc, emitEvent) {\n var emitEvent = emitEvent === undefined ? true : emitEvent;\n this.removeDocByRef(doc[this._ref], false);\n this.addDoc(doc, false);\n if (emitEvent) this.eventEmitter.emit('update', doc, this);\n };\n\n /**\n * Calculates the inverse document frequency for a token within the index of a field.\n *\n * @param {String} token The token to calculate the idf of.\n * @param {String} field The field to compute idf.\n * @see Index.prototype.idf\n * @private\n * @memberOf Index\n */\n elasticlunr.Index.prototype.idf = function (term, field) {\n var cacheKey = \"@\" + field + '/' + term;\n if (Object.prototype.hasOwnProperty.call(this._idfCache, cacheKey)) return this._idfCache[cacheKey];\n var df = this.index[field].getDocFreq(term);\n var idf = 1 + Math.log(this.documentStore.length / (df + 1));\n this._idfCache[cacheKey] = idf;\n return idf;\n };\n\n /**\n * get fields of current index instance\n *\n * @return {Array}\n */\n elasticlunr.Index.prototype.getFields = function () {\n return this._fields.slice();\n };\n\n /**\n * Searches the index using the passed query.\n * Queries should be a string, multiple words are allowed.\n *\n * If config is null, will search all fields defaultly, and lead to OR based query.\n * If config is specified, will search specified with query time boosting.\n *\n * All query tokens are passed through the same pipeline that document tokens\n * are passed through, so any language processing involved will be run on every\n * query term.\n *\n * Each query term is expanded, so that the term 'he' might be expanded to\n * 'hello' and 'help' if those terms were already included in the index.\n *\n * Matching documents are returned as an array of objects, each object contains\n * the matching document ref, as set for this index, and the similarity score\n * for this document against the query.\n *\n * @param {String} query The query to search the index with.\n * @param {JSON} userConfig The user query config, JSON format.\n * @return {Object}\n * @see Index.prototype.idf\n * @see Index.prototype.documentVector\n * @memberOf Index\n */\n elasticlunr.Index.prototype.search = function (query, userConfig) {\n if (!query) return [];\n var configStr = null;\n if (userConfig != null) {\n configStr = JSON.stringify(userConfig);\n }\n var config = new elasticlunr.Configuration(configStr, this.getFields()).get();\n var queryTokens = this.pipeline.run(elasticlunr.tokenizer(query));\n var queryResults = {};\n for (var field in config) {\n var fieldSearchResults = this.fieldSearch(queryTokens, field, config);\n var fieldBoost = config[field].boost;\n for (var docRef in fieldSearchResults) {\n fieldSearchResults[docRef] = fieldSearchResults[docRef] * fieldBoost;\n }\n for (var docRef in fieldSearchResults) {\n if (docRef in queryResults) {\n queryResults[docRef] += fieldSearchResults[docRef];\n } else {\n queryResults[docRef] = fieldSearchResults[docRef];\n }\n }\n }\n var results = [];\n for (var docRef in queryResults) {\n results.push({\n ref: docRef,\n score: queryResults[docRef]\n });\n }\n results.sort(function (a, b) {\n return b.score - a.score;\n });\n return results;\n };\n\n /**\n * search queryTokens in specified field.\n *\n * @param {Array} queryTokens The query tokens to query in this field.\n * @param {String} field Field to query in.\n * @param {elasticlunr.Configuration} config The user query config, JSON format.\n * @return {Object}\n */\n elasticlunr.Index.prototype.fieldSearch = function (queryTokens, fieldName, config) {\n var booleanType = config[fieldName].bool;\n var expand = config[fieldName].expand;\n var boost = config[fieldName].boost;\n var scores = null;\n var docTokens = {};\n\n // Do nothing if the boost is 0\n if (boost === 0) {\n return;\n }\n queryTokens.forEach(function (token) {\n var tokens = [token];\n if (expand == true) {\n tokens = this.index[fieldName].expandToken(token);\n }\n // Consider every query token in turn. If expanded, each query token\n // corresponds to a set of tokens, which is all tokens in the \n // index matching the pattern queryToken* .\n // For the set of tokens corresponding to a query token, find and score\n // all matching documents. Store those scores in queryTokenScores, \n // keyed by docRef.\n // Then, depending on the value of booleanType, combine the scores\n // for this query token with previous scores. If booleanType is OR,\n // then merge the scores by summing into the accumulated total, adding\n // new document scores are required (effectively a union operator). \n // If booleanType is AND, accumulate scores only if the document \n // has previously been scored by another query token (an intersection\n // operation0. \n // Furthermore, since when booleanType is AND, additional \n // query tokens can't add new documents to the result set, use the\n // current document set to limit the processing of each new query \n // token for efficiency (i.e., incremental intersection).\n\n var queryTokenScores = {};\n tokens.forEach(function (key) {\n var docs = this.index[fieldName].getDocs(key);\n var idf = this.idf(key, fieldName);\n if (scores && booleanType == 'AND') {\n // special case, we can rule out documents that have been\n // already been filtered out because they weren't scored\n // by previous query token passes.\n var filteredDocs = {};\n for (var docRef in scores) {\n if (docRef in docs) {\n filteredDocs[docRef] = docs[docRef];\n }\n }\n docs = filteredDocs;\n }\n // only record appeared token for retrieved documents for the\n // original token, not for expaned token.\n // beause for doing coordNorm for a retrieved document, coordNorm only care how many\n // query token appear in that document.\n // so expanded token should not be added into docTokens, if added, this will pollute the\n // coordNorm\n if (key == token) {\n this.fieldSearchStats(docTokens, key, docs);\n }\n for (var docRef in docs) {\n var tf = this.index[fieldName].getTermFrequency(key, docRef);\n var fieldLength = this.documentStore.getFieldLength(docRef, fieldName);\n var fieldLengthNorm = 1;\n if (fieldLength != 0) {\n fieldLengthNorm = 1 / Math.sqrt(fieldLength);\n }\n var penality = 1;\n if (key != token) {\n // currently I'm not sure if this penality is enough,\n // need to do verification\n penality = (1 - (key.length - token.length) / key.length) * 0.15;\n }\n var score = tf * idf * fieldLengthNorm * penality;\n if (docRef in queryTokenScores) {\n queryTokenScores[docRef] += score;\n } else {\n queryTokenScores[docRef] = score;\n }\n }\n }, this);\n scores = this.mergeScores(scores, queryTokenScores, booleanType);\n }, this);\n scores = this.coordNorm(scores, docTokens, queryTokens.length);\n return scores;\n };\n\n /**\n * Merge the scores from one set of tokens into an accumulated score table.\n * Exact operation depends on the op parameter. If op is 'AND', then only the\n * intersection of the two score lists is retained. Otherwise, the union of\n * the two score lists is returned. For internal use only.\n *\n * @param {Object} bool accumulated scores. Should be null on first call.\n * @param {String} scores new scores to merge into accumScores.\n * @param {Object} op merge operation (should be 'AND' or 'OR').\n *\n */\n\n elasticlunr.Index.prototype.mergeScores = function (accumScores, scores, op) {\n if (!accumScores) {\n return scores;\n }\n if (op == 'AND') {\n var intersection = {};\n for (var docRef in scores) {\n if (docRef in accumScores) {\n intersection[docRef] = accumScores[docRef] + scores[docRef];\n }\n }\n return intersection;\n } else {\n for (var docRef in scores) {\n if (docRef in accumScores) {\n accumScores[docRef] += scores[docRef];\n } else {\n accumScores[docRef] = scores[docRef];\n }\n }\n return accumScores;\n }\n };\n\n /**\n * Record the occuring query token of retrieved doc specified by doc field.\n * Only for inner user.\n *\n * @param {Object} docTokens a data structure stores which token appears in the retrieved doc.\n * @param {String} token query token\n * @param {Object} docs the retrieved documents of the query token\n *\n */\n elasticlunr.Index.prototype.fieldSearchStats = function (docTokens, token, docs) {\n for (var doc in docs) {\n if (doc in docTokens) {\n docTokens[doc].push(token);\n } else {\n docTokens[doc] = [token];\n }\n }\n };\n\n /**\n * coord norm the score of a doc.\n * if a doc contain more query tokens, then the score will larger than the doc\n * contains less query tokens.\n *\n * only for inner use.\n *\n * @param {Object} results first results\n * @param {Object} docs field search results of a token\n * @param {Integer} n query token number\n * @return {Object}\n */\n elasticlunr.Index.prototype.coordNorm = function (scores, docTokens, n) {\n for (var doc in scores) {\n if (!(doc in docTokens)) continue;\n var tokens = docTokens[doc].length;\n scores[doc] = scores[doc] * tokens / n;\n }\n return scores;\n };\n\n /**\n * Returns a representation of the index ready for serialisation.\n *\n * @return {Object}\n * @memberOf Index\n */\n elasticlunr.Index.prototype.toJSON = function () {\n var indexJson = {};\n this._fields.forEach(function (field) {\n indexJson[field] = this.index[field].toJSON();\n }, this);\n return {\n version: elasticlunr.version,\n fields: this._fields,\n ref: this._ref,\n documentStore: this.documentStore.toJSON(),\n index: indexJson,\n pipeline: this.pipeline.toJSON()\n };\n };\n\n /**\n * Applies a plugin to the current index.\n *\n * A plugin is a function that is called with the index as its context.\n * Plugins can be used to customise or extend the behaviour the index\n * in some way. A plugin is just a function, that encapsulated the custom\n * behaviour that should be applied to the index.\n *\n * The plugin function will be called with the index as its argument, additional\n * arguments can also be passed when calling use. The function will be called\n * with the index as its context.\n *\n * Example:\n *\n * var myPlugin = function (idx, arg1, arg2) {\n * // `this` is the index to be extended\n * // apply any extensions etc here.\n * }\n *\n * var idx = elasticlunr(function () {\n * this.use(myPlugin, 'arg1', 'arg2')\n * })\n *\n * @param {Function} plugin The plugin to apply.\n * @memberOf Index\n */\n elasticlunr.Index.prototype.use = function (plugin) {\n var args = Array.prototype.slice.call(arguments, 1);\n args.unshift(this);\n plugin.apply(this, args);\n };\n /*!\n * elasticlunr.DocumentStore\n * Copyright (C) 2016 Wei Song\n */\n\n /**\n * elasticlunr.DocumentStore is a simple key-value document store used for storing sets of tokens for\n * documents stored in index.\n *\n * elasticlunr.DocumentStore store original JSON format documents that you could build search snippet by this original JSON document.\n *\n * user could choose whether original JSON format document should be store, if no configuration then document will be stored defaultly.\n * If user care more about the index size, user could select not store JSON documents, then this will has some defects, such as user\n * could not use JSON document to generate snippets of search results.\n *\n * @param {Boolean} save If the original JSON document should be stored.\n * @constructor\n * @module\n */\n elasticlunr.DocumentStore = function (save) {\n if (save === null || save === undefined) {\n this._save = true;\n } else {\n this._save = save;\n }\n this.docs = {};\n this.docInfo = {};\n this.length = 0;\n };\n\n /**\n * Loads a previously serialised document store\n *\n * @param {Object} serialisedData The serialised document store to load.\n * @return {elasticlunr.DocumentStore}\n */\n elasticlunr.DocumentStore.load = function (serialisedData) {\n var store = new this();\n store.length = serialisedData.length;\n store.docs = serialisedData.docs;\n store.docInfo = serialisedData.docInfo;\n store._save = serialisedData.save;\n return store;\n };\n\n /**\n * check if current instance store the original doc\n *\n * @return {Boolean}\n */\n elasticlunr.DocumentStore.prototype.isDocStored = function () {\n return this._save;\n };\n\n /**\n * Stores the given doc in the document store against the given id.\n * If docRef already exist, then update doc.\n *\n * Document is store by original JSON format, then you could use original document to generate search snippets.\n *\n * @param {Integer|String} docRef The key used to store the JSON format doc.\n * @param {Object} doc The JSON format doc.\n */\n elasticlunr.DocumentStore.prototype.addDoc = function (docRef, doc) {\n if (!this.hasDoc(docRef)) this.length++;\n if (this._save === true) {\n this.docs[docRef] = clone(doc);\n } else {\n this.docs[docRef] = null;\n }\n };\n\n /**\n * Retrieves the JSON doc from the document store for a given key.\n *\n * If docRef not found, return null.\n * If user set not storing the documents, return null.\n *\n * @param {Integer|String} docRef The key to lookup and retrieve from the document store.\n * @return {Object}\n * @memberOf DocumentStore\n */\n elasticlunr.DocumentStore.prototype.getDoc = function (docRef) {\n if (this.hasDoc(docRef) === false) return null;\n return this.docs[docRef];\n };\n\n /**\n * Checks whether the document store contains a key (docRef).\n *\n * @param {Integer|String} docRef The id to look up in the document store.\n * @return {Boolean}\n * @memberOf DocumentStore\n */\n elasticlunr.DocumentStore.prototype.hasDoc = function (docRef) {\n return docRef in this.docs;\n };\n\n /**\n * Removes the value for a key in the document store.\n *\n * @param {Integer|String} docRef The id to remove from the document store.\n * @memberOf DocumentStore\n */\n elasticlunr.DocumentStore.prototype.removeDoc = function (docRef) {\n if (!this.hasDoc(docRef)) return;\n delete this.docs[docRef];\n delete this.docInfo[docRef];\n this.length--;\n };\n\n /**\n * Add field length of a document's field tokens from pipeline results.\n * The field length of a document is used to do field length normalization even without the original JSON document stored.\n *\n * @param {Integer|String} docRef document's id or reference\n * @param {String} fieldName field name\n * @param {Integer} length field length\n */\n elasticlunr.DocumentStore.prototype.addFieldLength = function (docRef, fieldName, length) {\n if (docRef === null || docRef === undefined) return;\n if (this.hasDoc(docRef) == false) return;\n if (!this.docInfo[docRef]) this.docInfo[docRef] = {};\n this.docInfo[docRef][fieldName] = length;\n };\n\n /**\n * Update field length of a document's field tokens from pipeline results.\n * The field length of a document is used to do field length normalization even without the original JSON document stored.\n *\n * @param {Integer|String} docRef document's id or reference\n * @param {String} fieldName field name\n * @param {Integer} length field length\n */\n elasticlunr.DocumentStore.prototype.updateFieldLength = function (docRef, fieldName, length) {\n if (docRef === null || docRef === undefined) return;\n if (this.hasDoc(docRef) == false) return;\n this.addFieldLength(docRef, fieldName, length);\n };\n\n /**\n * get field length of a document by docRef\n *\n * @param {Integer|String} docRef document id or reference\n * @param {String} fieldName field name\n * @return {Integer} field length\n */\n elasticlunr.DocumentStore.prototype.getFieldLength = function (docRef, fieldName) {\n if (docRef === null || docRef === undefined) return 0;\n if (!(docRef in this.docs)) return 0;\n if (!(fieldName in this.docInfo[docRef])) return 0;\n return this.docInfo[docRef][fieldName];\n };\n\n /**\n * Returns a JSON representation of the document store used for serialisation.\n *\n * @return {Object} JSON format\n * @memberOf DocumentStore\n */\n elasticlunr.DocumentStore.prototype.toJSON = function () {\n return {\n docs: this.docs,\n docInfo: this.docInfo,\n length: this.length,\n save: this._save\n };\n };\n\n /**\n * Cloning object\n *\n * @param {Object} object in JSON format\n * @return {Object} copied object\n */\n function clone(obj) {\n if (null === obj || \"object\" !== typeof obj) return obj;\n var copy = obj.constructor();\n for (var attr in obj) {\n if (obj.hasOwnProperty(attr)) copy[attr] = obj[attr];\n }\n return copy;\n }\n /*!\n * elasticlunr.stemmer\n * Copyright (C) 2016 Oliver Nightingale\n * Copyright (C) 2016 Wei Song\n * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt\n */\n\n /**\n * elasticlunr.stemmer is an english language stemmer, this is a JavaScript\n * implementation of the PorterStemmer taken from http://tartarus.org/~martin\n *\n * @module\n * @param {String} str The string to stem\n * @return {String}\n * @see elasticlunr.Pipeline\n */\n elasticlunr.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 porterStemmer;\n }();\n elasticlunr.Pipeline.registerFunction(elasticlunr.stemmer, 'stemmer');\n /*!\n * elasticlunr.stopWordFilter\n * Copyright (C) 2016 Oliver Nightingale\n * Copyright (C) 2016 Wei Song\n */\n\n /**\n * elasticlunr.stopWordFilter is an English language stop words filter, any words\n * contained in the stop word 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 * Currently this StopwordFilter using dictionary to do O(1) time complexity stop word filtering.\n *\n * @module\n * @param {String} token The token to pass through the filter\n * @return {String}\n * @see elasticlunr.Pipeline\n */\n elasticlunr.stopWordFilter = function (token) {\n if (token && elasticlunr.stopWordFilter.stopWords[token] !== true) {\n return token;\n }\n };\n\n /**\n * Remove predefined stop words\n * if user want to use customized stop words, user could use this function to delete\n * all predefined stopwords.\n *\n * @return {null}\n */\n elasticlunr.clearStopWords = function () {\n elasticlunr.stopWordFilter.stopWords = {};\n };\n\n /**\n * Add customized stop words\n * user could use this function to add customized stop words\n * \n * @params {Array} words customized stop words\n * @return {null}\n */\n elasticlunr.addStopWords = function (words) {\n if (words == null || Array.isArray(words) === false) return;\n words.forEach(function (word) {\n elasticlunr.stopWordFilter.stopWords[word] = true;\n }, this);\n };\n\n /**\n * Reset to default stop words\n * user could use this function to restore default stop words\n *\n * @return {null}\n */\n elasticlunr.resetStopWords = function () {\n elasticlunr.stopWordFilter.stopWords = elasticlunr.defaultStopWords;\n };\n elasticlunr.defaultStopWords = {\n \"\": true,\n \"a\": true,\n \"able\": true,\n \"about\": true,\n \"across\": true,\n \"after\": true,\n \"all\": true,\n \"almost\": true,\n \"also\": true,\n \"am\": true,\n \"among\": true,\n \"an\": true,\n \"and\": true,\n \"any\": true,\n \"are\": true,\n \"as\": true,\n \"at\": true,\n \"be\": true,\n \"because\": true,\n \"been\": true,\n \"but\": true,\n \"by\": true,\n \"can\": true,\n \"cannot\": true,\n \"could\": true,\n \"dear\": true,\n \"did\": true,\n \"do\": true,\n \"does\": true,\n \"either\": true,\n \"else\": true,\n \"ever\": true,\n \"every\": true,\n \"for\": true,\n \"from\": true,\n \"get\": true,\n \"got\": true,\n \"had\": true,\n \"has\": true,\n \"have\": true,\n \"he\": true,\n \"her\": true,\n \"hers\": true,\n \"him\": true,\n \"his\": true,\n \"how\": true,\n \"however\": true,\n \"i\": true,\n \"if\": true,\n \"in\": true,\n \"into\": true,\n \"is\": true,\n \"it\": true,\n \"its\": true,\n \"just\": true,\n \"least\": true,\n \"let\": true,\n \"like\": true,\n \"likely\": true,\n \"may\": true,\n \"me\": true,\n \"might\": true,\n \"most\": true,\n \"must\": true,\n \"my\": true,\n \"neither\": true,\n \"no\": true,\n \"nor\": true,\n \"not\": true,\n \"of\": true,\n \"off\": true,\n \"often\": true,\n \"on\": true,\n \"only\": true,\n \"or\": true,\n \"other\": true,\n \"our\": true,\n \"own\": true,\n \"rather\": true,\n \"said\": true,\n \"say\": true,\n \"says\": true,\n \"she\": true,\n \"should\": true,\n \"since\": true,\n \"so\": true,\n \"some\": true,\n \"than\": true,\n \"that\": true,\n \"the\": true,\n \"their\": true,\n \"them\": true,\n \"then\": true,\n \"there\": true,\n \"these\": true,\n \"they\": true,\n \"this\": true,\n \"tis\": true,\n \"to\": true,\n \"too\": true,\n \"twas\": true,\n \"us\": true,\n \"wants\": true,\n \"was\": true,\n \"we\": true,\n \"were\": true,\n \"what\": true,\n \"when\": true,\n \"where\": true,\n \"which\": true,\n \"while\": true,\n \"who\": true,\n \"whom\": true,\n \"why\": true,\n \"will\": true,\n \"with\": true,\n \"would\": true,\n \"yet\": true,\n \"you\": true,\n \"your\": true\n };\n elasticlunr.stopWordFilter.stopWords = elasticlunr.defaultStopWords;\n elasticlunr.Pipeline.registerFunction(elasticlunr.stopWordFilter, 'stopWordFilter');\n /*!\n * elasticlunr.trimmer\n * Copyright (C) 2016 Oliver Nightingale\n * Copyright (C) 2016 Wei Song\n */\n\n /**\n * elasticlunr.trimmer is a pipeline function for trimming non word\n * characters from the begining 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 * @module\n * @param {String} token The token to pass through the filter\n * @return {String}\n * @see elasticlunr.Pipeline\n */\n elasticlunr.trimmer = function (token) {\n if (token === null || token === undefined) {\n throw new Error('token should not be undefined');\n }\n return token.replace(/^\\W+/, '').replace(/\\W+$/, '');\n };\n elasticlunr.Pipeline.registerFunction(elasticlunr.trimmer, 'trimmer');\n /*!\n * elasticlunr.InvertedIndex\n * Copyright (C) 2016 Wei Song\n * Includes code from - http://tartarus.org/~martin/PorterStemmer/js.txt\n */\n\n /**\n * elasticlunr.InvertedIndex is used for efficiently storing and\n * lookup of documents that contain a given token.\n *\n * @constructor\n */\n elasticlunr.InvertedIndex = function () {\n this.root = {\n docs: {},\n df: 0\n };\n };\n\n /**\n * Loads a previously serialised inverted index.\n *\n * @param {Object} serialisedData The serialised inverted index to load.\n * @return {elasticlunr.InvertedIndex}\n */\n elasticlunr.InvertedIndex.load = function (serialisedData) {\n var idx = new this();\n idx.root = serialisedData.root;\n return idx;\n };\n\n /**\n * Adds a {token: tokenInfo} pair to the inverted index.\n * If the token already exist, then update the tokenInfo.\n *\n * tokenInfo format: { ref: 1, tf: 2}\n * tokenInfor should contains the document's ref and the tf(token frequency) of that token in\n * the document.\n *\n * By default this function starts at the root of the current inverted index, however\n * it can start at any node of the inverted index if required.\n *\n * @param {String} token \n * @param {Object} tokenInfo format: { ref: 1, tf: 2}\n * @param {Object} root An optional node at which to start looking for the\n * correct place to enter the doc, by default the root of this elasticlunr.InvertedIndex\n * is used.\n * @memberOf InvertedIndex\n */\n elasticlunr.InvertedIndex.prototype.addToken = function (token, tokenInfo, root) {\n var root = root || this.root,\n idx = 0;\n while (idx <= token.length - 1) {\n var key = token[idx];\n if (!(key in root)) root[key] = {\n docs: {},\n df: 0\n };\n idx += 1;\n root = root[key];\n }\n var docRef = tokenInfo.ref;\n if (!root.docs[docRef]) {\n // if this doc not exist, then add this doc\n root.docs[docRef] = {\n tf: tokenInfo.tf\n };\n root.df += 1;\n } else {\n // if this doc already exist, then update tokenInfo\n root.docs[docRef] = {\n tf: tokenInfo.tf\n };\n }\n };\n\n /**\n * Checks whether a token is in this elasticlunr.InvertedIndex.\n * \n *\n * @param {String} token The token to be checked\n * @return {Boolean}\n * @memberOf InvertedIndex\n */\n elasticlunr.InvertedIndex.prototype.hasToken = function (token) {\n if (!token) return false;\n var node = this.root;\n for (var i = 0; i < token.length; i++) {\n if (!node[token[i]]) return false;\n node = node[token[i]];\n }\n return true;\n };\n\n /**\n * Retrieve a node from the inverted index for a given token.\n * If token not found in this InvertedIndex, return null.\n * \n *\n * @param {String} token The token to get the node for.\n * @return {Object}\n * @see InvertedIndex.prototype.get\n * @memberOf InvertedIndex\n */\n elasticlunr.InvertedIndex.prototype.getNode = function (token) {\n if (!token) return null;\n var node = this.root;\n for (var i = 0; i < token.length; i++) {\n if (!node[token[i]]) return null;\n node = node[token[i]];\n }\n return node;\n };\n\n /**\n * Retrieve the documents of a given token.\n * If token not found, return {}.\n *\n *\n * @param {String} token The token to get the documents for.\n * @return {Object}\n * @memberOf InvertedIndex\n */\n elasticlunr.InvertedIndex.prototype.getDocs = function (token) {\n var node = this.getNode(token);\n if (node == null) {\n return {};\n }\n return node.docs;\n };\n\n /**\n * Retrieve term frequency of given token in given docRef.\n * If token or docRef not found, return 0.\n *\n *\n * @param {String} token The token to get the documents for.\n * @param {String|Integer} docRef\n * @return {Integer}\n * @memberOf InvertedIndex\n */\n elasticlunr.InvertedIndex.prototype.getTermFrequency = function (token, docRef) {\n var node = this.getNode(token);\n if (node == null) {\n return 0;\n }\n if (!(docRef in node.docs)) {\n return 0;\n }\n return node.docs[docRef].tf;\n };\n\n /**\n * Retrieve the document frequency of given token.\n * If token not found, return 0.\n *\n *\n * @param {String} token The token to get the documents for.\n * @return {Object}\n * @memberOf InvertedIndex\n */\n elasticlunr.InvertedIndex.prototype.getDocFreq = function (token) {\n var node = this.getNode(token);\n if (node == null) {\n return 0;\n }\n return node.df;\n };\n\n /**\n * Remove the document identified by document's ref from the token in the inverted index.\n *\n *\n * @param {String} token Remove the document from which token.\n * @param {String} ref The ref of the document to remove from given token.\n * @memberOf InvertedIndex\n */\n elasticlunr.InvertedIndex.prototype.removeToken = function (token, ref) {\n if (!token) return;\n var node = this.getNode(token);\n if (node == null) return;\n if (ref in node.docs) {\n delete node.docs[ref];\n node.df -= 1;\n }\n };\n\n /**\n * Find all the possible suffixes of given token using tokens currently in the inverted index.\n * If token not found, return empty Array.\n *\n * @param {String} token The token to expand.\n * @return {Array}\n * @memberOf InvertedIndex\n */\n elasticlunr.InvertedIndex.prototype.expandToken = function (token, memo, root) {\n if (token == null || token == '') return [];\n var memo = memo || [];\n if (root == void 0) {\n root = this.getNode(token);\n if (root == null) return memo;\n }\n if (root.df > 0) memo.push(token);\n for (var key in root) {\n if (key === 'docs') continue;\n if (key === 'df') continue;\n this.expandToken(token + key, memo, root[key]);\n }\n return memo;\n };\n\n /**\n * Returns a representation of the inverted index ready for serialisation.\n *\n * @return {Object}\n * @memberOf InvertedIndex\n */\n elasticlunr.InvertedIndex.prototype.toJSON = function () {\n return {\n root: this.root\n };\n };\n\n /*!\n * elasticlunr.Configuration\n * Copyright (C) 2016 Wei Song\n */\n\n /** \n * elasticlunr.Configuration is used to analyze the user search configuration.\n * \n * By elasticlunr.Configuration user could set query-time boosting, boolean model in each field.\n * \n * Currently configuration supports:\n * 1. query-time boosting, user could set how to boost each field.\n * 2. boolean model chosing, user could choose which boolean model to use for each field.\n * 3. token expandation, user could set token expand to True to improve Recall. Default is False.\n * \n * Query time boosting must be configured by field category, \"boolean\" model could be configured \n * by both field category or globally as the following example. Field configuration for \"boolean\"\n * will overwrite global configuration.\n * Token expand could be configured both by field category or golbally. Local field configuration will\n * overwrite global configuration.\n * \n * configuration example:\n * {\n * fields:{ \n * title: {boost: 2},\n * body: {boost: 1}\n * },\n * bool: \"OR\"\n * }\n * \n * \"bool\" field configuation overwrite global configuation example:\n * {\n * fields:{ \n * title: {boost: 2, bool: \"AND\"},\n * body: {boost: 1}\n * },\n * bool: \"OR\"\n * }\n * \n * \"expand\" example:\n * {\n * fields:{ \n * title: {boost: 2, bool: \"AND\"},\n * body: {boost: 1}\n * },\n * bool: \"OR\",\n * expand: true\n * }\n * \n * \"expand\" example for field category:\n * {\n * fields:{ \n * title: {boost: 2, bool: \"AND\", expand: true},\n * body: {boost: 1}\n * },\n * bool: \"OR\"\n * }\n * \n * setting the boost to 0 ignores the field (this will only search the title):\n * {\n * fields:{\n * title: {boost: 1},\n * body: {boost: 0}\n * }\n * }\n *\n * then, user could search with configuration to do query-time boosting.\n * idx.search('oracle database', {fields: {title: {boost: 2}, body: {boost: 1}}});\n * \n * \n * @constructor\n * \n * @param {String} config user configuration\n * @param {Array} fields fields of index instance\n * @module\n */\n elasticlunr.Configuration = function (config, fields) {\n var config = config || '';\n if (fields == undefined || fields == null) {\n throw new Error('fields should not be null');\n }\n this.config = {};\n var userConfig;\n try {\n userConfig = JSON.parse(config);\n this.buildUserConfig(userConfig, fields);\n } catch (error) {\n elasticlunr.utils.warn('user configuration parse failed, will use default configuration');\n this.buildDefaultConfig(fields);\n }\n };\n\n /**\n * Build default search configuration.\n * \n * @param {Array} fields fields of index instance\n */\n elasticlunr.Configuration.prototype.buildDefaultConfig = function (fields) {\n this.reset();\n fields.forEach(function (field) {\n this.config[field] = {\n boost: 1,\n bool: \"OR\",\n expand: false\n };\n }, this);\n };\n\n /**\n * Build user configuration.\n * \n * @param {JSON} config User JSON configuratoin\n * @param {Array} fields fields of index instance\n */\n elasticlunr.Configuration.prototype.buildUserConfig = function (config, fields) {\n var global_bool = \"OR\";\n var global_expand = false;\n this.reset();\n if ('bool' in config) {\n global_bool = config['bool'] || global_bool;\n }\n if ('expand' in config) {\n global_expand = config['expand'] || global_expand;\n }\n if ('fields' in config) {\n for (var field in config['fields']) {\n if (fields.indexOf(field) > -1) {\n var field_config = config['fields'][field];\n var field_expand = global_expand;\n if (field_config.expand != undefined) {\n field_expand = field_config.expand;\n }\n this.config[field] = {\n boost: field_config.boost || field_config.boost === 0 ? field_config.boost : 1,\n bool: field_config.bool || global_bool,\n expand: field_expand\n };\n } else {\n elasticlunr.utils.warn('field name in user configuration not found in index instance fields');\n }\n }\n } else {\n this.addAllFields2UserConfig(global_bool, global_expand, fields);\n }\n };\n\n /**\n * Add all fields to user search configuration.\n * \n * @param {String} bool Boolean model\n * @param {String} expand Expand model\n * @param {Array} fields fields of index instance\n */\n elasticlunr.Configuration.prototype.addAllFields2UserConfig = function (bool, expand, fields) {\n fields.forEach(function (field) {\n this.config[field] = {\n boost: 1,\n bool: bool,\n expand: expand\n };\n }, this);\n };\n\n /**\n * get current user configuration\n */\n elasticlunr.Configuration.prototype.get = function () {\n return this.config;\n };\n\n /**\n * reset user search configuration.\n */\n elasticlunr.Configuration.prototype.reset = function () {\n this.config = {};\n };\n /**\n * sorted_set.js is added only to make elasticlunr.js compatible with lunr-languages.\n * if elasticlunr.js support different languages by default, this will make elasticlunr.js\n * much bigger that not good for browser usage.\n *\n */\n\n /*!\n * lunr.SortedSet\n * Copyright (C) 2016 Oliver Nightingale\n */\n\n /**\n * lunr.SortedSets are used to maintain an array of uniq values in a sorted\n * order.\n *\n * @constructor\n */\n lunr.SortedSet = function () {\n this.length = 0;\n this.elements = [];\n };\n\n /**\n * Loads a previously serialised sorted set.\n *\n * @param {Array} serialisedData The serialised set to load.\n * @returns {lunr.SortedSet}\n * @memberOf SortedSet\n */\n lunr.SortedSet.load = function (serialisedData) {\n var set = new this();\n set.elements = serialisedData;\n set.length = serialisedData.length;\n return set;\n };\n\n /**\n * Inserts new items into the set in the correct position to maintain the\n * order.\n *\n * @param {Object} The objects to add to this set.\n * @memberOf SortedSet\n */\n lunr.SortedSet.prototype.add = function () {\n var i, element;\n for (i = 0; i < arguments.length; i++) {\n element = arguments[i];\n if (~this.indexOf(element)) continue;\n this.elements.splice(this.locationFor(element), 0, element);\n }\n this.length = this.elements.length;\n };\n\n /**\n * Converts this sorted set into an array.\n *\n * @returns {Array}\n * @memberOf SortedSet\n */\n lunr.SortedSet.prototype.toArray = function () {\n return this.elements.slice();\n };\n\n /**\n * Creates a new array with the results of calling a provided function on every\n * element in this sorted set.\n *\n * Delegates to Array.prototype.map and has the same signature.\n *\n * @param {Function} fn The function that is called on each element of the\n * set.\n * @param {Object} ctx An optional object that can be used as the context\n * for the function fn.\n * @returns {Array}\n * @memberOf SortedSet\n */\n lunr.SortedSet.prototype.map = function (fn, ctx) {\n return this.elements.map(fn, ctx);\n };\n\n /**\n * Executes a provided function once per sorted set element.\n *\n * Delegates to Array.prototype.forEach and has the same signature.\n *\n * @param {Function} fn The function that is called on each element of the\n * set.\n * @param {Object} ctx An optional object that can be used as the context\n * @memberOf SortedSet\n * for the function fn.\n */\n lunr.SortedSet.prototype.forEach = function (fn, ctx) {\n return this.elements.forEach(fn, ctx);\n };\n\n /**\n * Returns the index at which a given element can be found in the\n * sorted set, or -1 if it is not present.\n *\n * @param {Object} elem The object to locate in the sorted set.\n * @returns {Number}\n * @memberOf SortedSet\n */\n lunr.SortedSet.prototype.indexOf = function (elem) {\n var start = 0,\n end = this.elements.length,\n sectionLength = end - start,\n pivot = start + Math.floor(sectionLength / 2),\n pivotElem = this.elements[pivot];\n while (sectionLength > 1) {\n if (pivotElem === elem) return pivot;\n if (pivotElem < elem) start = pivot;\n if (pivotElem > elem) end = pivot;\n sectionLength = end - start;\n pivot = start + Math.floor(sectionLength / 2);\n pivotElem = this.elements[pivot];\n }\n if (pivotElem === elem) return pivot;\n return -1;\n };\n\n /**\n * Returns the position within the sorted set that an element should be\n * inserted at to maintain the current order of the set.\n *\n * This function assumes that the element to search for does not already exist\n * in the sorted set.\n *\n * @param {Object} elem The elem to find the position for in the set\n * @returns {Number}\n * @memberOf SortedSet\n */\n lunr.SortedSet.prototype.locationFor = function (elem) {\n var start = 0,\n end = this.elements.length,\n sectionLength = end - start,\n pivot = start + Math.floor(sectionLength / 2),\n pivotElem = this.elements[pivot];\n while (sectionLength > 1) {\n if (pivotElem < elem) start = pivot;\n if (pivotElem > elem) end = pivot;\n sectionLength = end - start;\n pivot = start + Math.floor(sectionLength / 2);\n pivotElem = this.elements[pivot];\n }\n if (pivotElem > elem) return pivot;\n if (pivotElem < elem) return pivot + 1;\n };\n\n /**\n * Creates a new lunr.SortedSet that contains the elements in the intersection\n * of this set and the passed set.\n *\n * @param {lunr.SortedSet} otherSet The set to intersect with this set.\n * @returns {lunr.SortedSet}\n * @memberOf SortedSet\n */\n lunr.SortedSet.prototype.intersect = function (otherSet) {\n var intersectSet = new lunr.SortedSet(),\n i = 0,\n j = 0,\n a_len = this.length,\n b_len = otherSet.length,\n a = this.elements,\n b = otherSet.elements;\n while (true) {\n if (i > a_len - 1 || j > b_len - 1) break;\n if (a[i] === b[j]) {\n intersectSet.add(a[i]);\n i++, j++;\n continue;\n }\n if (a[i] < b[j]) {\n i++;\n continue;\n }\n if (a[i] > b[j]) {\n j++;\n continue;\n }\n }\n ;\n return intersectSet;\n };\n\n /**\n * Makes a copy of this set\n *\n * @returns {lunr.SortedSet}\n * @memberOf SortedSet\n */\n lunr.SortedSet.prototype.clone = function () {\n var clone = new lunr.SortedSet();\n clone.elements = this.toArray();\n clone.length = clone.elements.length;\n return clone;\n };\n\n /**\n * Creates a new lunr.SortedSet that contains the elements in the union\n * of this set and the passed set.\n *\n * @param {lunr.SortedSet} otherSet The set to union with this set.\n * @returns {lunr.SortedSet}\n * @memberOf SortedSet\n */\n lunr.SortedSet.prototype.union = function (otherSet) {\n var longSet, shortSet, unionSet;\n if (this.length >= otherSet.length) {\n longSet = this, shortSet = otherSet;\n } else {\n longSet = otherSet, shortSet = this;\n }\n unionSet = longSet.clone();\n for (var i = 0, shortSetElements = shortSet.toArray(); i < shortSetElements.length; i++) {\n unionSet.add(shortSetElements[i]);\n }\n return unionSet;\n };\n\n /**\n * Returns a representation of the sorted set ready for serialisation.\n *\n * @returns {Array}\n * @memberOf SortedSet\n */\n lunr.SortedSet.prototype.toJSON = function () {\n return this.toArray();\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.elasticlunr = 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 elasticlunr;\n });\n})();","\"use strict\";\n\nmodule.exports = Object.assign;","/**\n * Copyright 2016 Google Inc. All Rights Reserved.\n *\n * Licensed under the W3C SOFTWARE AND DOCUMENT NOTICE AND LICENSE.\n *\n * https://www.w3.org/Consortium/Legal/2015/copyright-software-and-document\n *\n */\n(function () {\n 'use strict';\n\n // Exit early if we're not running in a browser.\n if (typeof window !== 'object') {\n return;\n }\n\n // Exit early if all IntersectionObserver and IntersectionObserverEntry\n // features are natively supported.\n if ('IntersectionObserver' in window && 'IntersectionObserverEntry' in window && 'intersectionRatio' in window.IntersectionObserverEntry.prototype) {\n // Minimal polyfill for Edge 15's lack of `isIntersecting`\n // See: https://github.com/w3c/IntersectionObserver/issues/211\n if (!('isIntersecting' in window.IntersectionObserverEntry.prototype)) {\n Object.defineProperty(window.IntersectionObserverEntry.prototype, 'isIntersecting', {\n get: function () {\n return this.intersectionRatio > 0;\n }\n });\n }\n return;\n }\n\n /**\n * A local reference to the document.\n */\n var document = window.document;\n\n /**\n * An IntersectionObserver registry. This registry exists to hold a strong\n * reference to IntersectionObserver instances currently observing a target\n * element. Without this registry, instances without another reference may be\n * garbage collected.\n */\n var registry = [];\n\n /**\n * Creates the global IntersectionObserverEntry constructor.\n * https://w3c.github.io/IntersectionObserver/#intersection-observer-entry\n * @param {Object} entry A dictionary of instance properties.\n * @constructor\n */\n function IntersectionObserverEntry(entry) {\n this.time = entry.time;\n this.target = entry.target;\n this.rootBounds = entry.rootBounds;\n this.boundingClientRect = entry.boundingClientRect;\n this.intersectionRect = entry.intersectionRect || getEmptyRect();\n this.isIntersecting = !!entry.intersectionRect;\n\n // Calculates the intersection ratio.\n var targetRect = this.boundingClientRect;\n var targetArea = targetRect.width * targetRect.height;\n var intersectionRect = this.intersectionRect;\n var intersectionArea = intersectionRect.width * intersectionRect.height;\n\n // Sets intersection ratio.\n if (targetArea) {\n // Round the intersection ratio to avoid floating point math issues:\n // https://github.com/w3c/IntersectionObserver/issues/324\n this.intersectionRatio = Number((intersectionArea / targetArea).toFixed(4));\n } else {\n // If area is zero and is intersecting, sets to 1, otherwise to 0\n this.intersectionRatio = this.isIntersecting ? 1 : 0;\n }\n }\n\n /**\n * Creates the global IntersectionObserver constructor.\n * https://w3c.github.io/IntersectionObserver/#intersection-observer-interface\n * @param {Function} callback The function to be invoked after intersection\n * changes have queued. The function is not invoked if the queue has\n * been emptied by calling the `takeRecords` method.\n * @param {Object=} opt_options Optional configuration options.\n * @constructor\n */\n function IntersectionObserver(callback, opt_options) {\n var options = opt_options || {};\n if (typeof callback != 'function') {\n throw new Error('callback must be a function');\n }\n if (options.root && options.root.nodeType != 1) {\n throw new Error('root must be an Element');\n }\n\n // Binds and throttles `this._checkForIntersections`.\n this._checkForIntersections = throttle(this._checkForIntersections.bind(this), this.THROTTLE_TIMEOUT);\n\n // Private properties.\n this._callback = callback;\n this._observationTargets = [];\n this._queuedEntries = [];\n this._rootMarginValues = this._parseRootMargin(options.rootMargin);\n\n // Public properties.\n this.thresholds = this._initThresholds(options.threshold);\n this.root = options.root || null;\n this.rootMargin = this._rootMarginValues.map(function (margin) {\n return margin.value + margin.unit;\n }).join(' ');\n }\n\n /**\n * The minimum interval within which the document will be checked for\n * intersection changes.\n */\n IntersectionObserver.prototype.THROTTLE_TIMEOUT = 100;\n\n /**\n * The frequency in which the polyfill polls for intersection changes.\n * this can be updated on a per instance basis and must be set prior to\n * calling `observe` on the first target.\n */\n IntersectionObserver.prototype.POLL_INTERVAL = null;\n\n /**\n * Use a mutation observer on the root element\n * to detect intersection changes.\n */\n IntersectionObserver.prototype.USE_MUTATION_OBSERVER = true;\n\n /**\n * Starts observing a target element for intersection changes based on\n * the thresholds values.\n * @param {Element} target The DOM element to observe.\n */\n IntersectionObserver.prototype.observe = function (target) {\n var isTargetAlreadyObserved = this._observationTargets.some(function (item) {\n return item.element == target;\n });\n if (isTargetAlreadyObserved) {\n return;\n }\n if (!(target && target.nodeType == 1)) {\n throw new Error('target must be an Element');\n }\n this._registerInstance();\n this._observationTargets.push({\n element: target,\n entry: null\n });\n this._monitorIntersections();\n this._checkForIntersections();\n };\n\n /**\n * Stops observing a target element for intersection changes.\n * @param {Element} target The DOM element to observe.\n */\n IntersectionObserver.prototype.unobserve = function (target) {\n this._observationTargets = this._observationTargets.filter(function (item) {\n return item.element != target;\n });\n if (!this._observationTargets.length) {\n this._unmonitorIntersections();\n this._unregisterInstance();\n }\n };\n\n /**\n * Stops observing all target elements for intersection changes.\n */\n IntersectionObserver.prototype.disconnect = function () {\n this._observationTargets = [];\n this._unmonitorIntersections();\n this._unregisterInstance();\n };\n\n /**\n * Returns any queue entries that have not yet been reported to the\n * callback and clears the queue. This can be used in conjunction with the\n * callback to obtain the absolute most up-to-date intersection information.\n * @return {Array} The currently queued entries.\n */\n IntersectionObserver.prototype.takeRecords = function () {\n var records = this._queuedEntries.slice();\n this._queuedEntries = [];\n return records;\n };\n\n /**\n * Accepts the threshold value from the user configuration object and\n * returns a sorted array of unique threshold values. If a value is not\n * between 0 and 1 and error is thrown.\n * @private\n * @param {Array|number=} opt_threshold An optional threshold value or\n * a list of threshold values, defaulting to [0].\n * @return {Array} A sorted list of unique and valid threshold values.\n */\n IntersectionObserver.prototype._initThresholds = function (opt_threshold) {\n var threshold = opt_threshold || [0];\n if (!Array.isArray(threshold)) threshold = [threshold];\n return threshold.sort().filter(function (t, i, a) {\n if (typeof t != 'number' || isNaN(t) || t < 0 || t > 1) {\n throw new Error('threshold must be a number between 0 and 1 inclusively');\n }\n return t !== a[i - 1];\n });\n };\n\n /**\n * Accepts the rootMargin value from the user configuration object\n * and returns an array of the four margin values as an object containing\n * the value and unit properties. If any of the values are not properly\n * formatted or use a unit other than px or %, and error is thrown.\n * @private\n * @param {string=} opt_rootMargin An optional rootMargin value,\n * defaulting to '0px'.\n * @return {Array} An array of margin objects with the keys\n * value and unit.\n */\n IntersectionObserver.prototype._parseRootMargin = function (opt_rootMargin) {\n var marginString = opt_rootMargin || '0px';\n var margins = marginString.split(/\\s+/).map(function (margin) {\n var parts = /^(-?\\d*\\.?\\d+)(px|%)$/.exec(margin);\n if (!parts) {\n throw new Error('rootMargin must be specified in pixels or percent');\n }\n return {\n value: parseFloat(parts[1]),\n unit: parts[2]\n };\n });\n\n // Handles shorthand.\n margins[1] = margins[1] || margins[0];\n margins[2] = margins[2] || margins[0];\n margins[3] = margins[3] || margins[1];\n return margins;\n };\n\n /**\n * Starts polling for intersection changes if the polling is not already\n * happening, and if the page's visibility state is visible.\n * @private\n */\n IntersectionObserver.prototype._monitorIntersections = function () {\n if (!this._monitoringIntersections) {\n this._monitoringIntersections = true;\n\n // If a poll interval is set, use polling instead of listening to\n // resize and scroll events or DOM mutations.\n if (this.POLL_INTERVAL) {\n this._monitoringInterval = setInterval(this._checkForIntersections, this.POLL_INTERVAL);\n } else {\n addEvent(window, 'resize', this._checkForIntersections, true);\n addEvent(document, 'scroll', this._checkForIntersections, true);\n if (this.USE_MUTATION_OBSERVER && 'MutationObserver' in window) {\n this._domObserver = new MutationObserver(this._checkForIntersections);\n this._domObserver.observe(document, {\n attributes: true,\n childList: true,\n characterData: true,\n subtree: true\n });\n }\n }\n }\n };\n\n /**\n * Stops polling for intersection changes.\n * @private\n */\n IntersectionObserver.prototype._unmonitorIntersections = function () {\n if (this._monitoringIntersections) {\n this._monitoringIntersections = false;\n clearInterval(this._monitoringInterval);\n this._monitoringInterval = null;\n removeEvent(window, 'resize', this._checkForIntersections, true);\n removeEvent(document, 'scroll', this._checkForIntersections, true);\n if (this._domObserver) {\n this._domObserver.disconnect();\n this._domObserver = null;\n }\n }\n };\n\n /**\n * Scans each observation target for intersection changes and adds them\n * to the internal entries queue. If new entries are found, it\n * schedules the callback to be invoked.\n * @private\n */\n IntersectionObserver.prototype._checkForIntersections = function () {\n var rootIsInDom = this._rootIsInDom();\n var rootRect = rootIsInDom ? this._getRootRect() : getEmptyRect();\n this._observationTargets.forEach(function (item) {\n var target = item.element;\n var targetRect = getBoundingClientRect(target);\n var rootContainsTarget = this._rootContainsTarget(target);\n var oldEntry = item.entry;\n var intersectionRect = rootIsInDom && rootContainsTarget && this._computeTargetAndRootIntersection(target, rootRect);\n var newEntry = item.entry = new IntersectionObserverEntry({\n time: now(),\n target: target,\n boundingClientRect: targetRect,\n rootBounds: rootRect,\n intersectionRect: intersectionRect\n });\n if (!oldEntry) {\n this._queuedEntries.push(newEntry);\n } else if (rootIsInDom && rootContainsTarget) {\n // If the new entry intersection ratio has crossed any of the\n // thresholds, add a new entry.\n if (this._hasCrossedThreshold(oldEntry, newEntry)) {\n this._queuedEntries.push(newEntry);\n }\n } else {\n // If the root is not in the DOM or target is not contained within\n // root but the previous entry for this target had an intersection,\n // add a new record indicating removal.\n if (oldEntry && oldEntry.isIntersecting) {\n this._queuedEntries.push(newEntry);\n }\n }\n }, this);\n if (this._queuedEntries.length) {\n this._callback(this.takeRecords(), this);\n }\n };\n\n /**\n * Accepts a target and root rect computes the intersection between then\n * following the algorithm in the spec.\n * TODO(philipwalton): at this time clip-path is not considered.\n * https://w3c.github.io/IntersectionObserver/#calculate-intersection-rect-algo\n * @param {Element} target The target DOM element\n * @param {Object} rootRect The bounding rect of the root after being\n * expanded by the rootMargin value.\n * @return {?Object} The final intersection rect object or undefined if no\n * intersection is found.\n * @private\n */\n IntersectionObserver.prototype._computeTargetAndRootIntersection = function (target, rootRect) {\n // If the element isn't displayed, an intersection can't happen.\n if (window.getComputedStyle(target).display == 'none') return;\n var targetRect = getBoundingClientRect(target);\n var intersectionRect = targetRect;\n var parent = getParentNode(target);\n var atRoot = false;\n while (!atRoot) {\n var parentRect = null;\n var parentComputedStyle = parent.nodeType == 1 ? window.getComputedStyle(parent) : {};\n\n // If the parent isn't displayed, an intersection can't happen.\n if (parentComputedStyle.display == 'none') return;\n if (parent == this.root || parent == document) {\n atRoot = true;\n parentRect = rootRect;\n } else {\n // If the element has a non-visible overflow, and it's not the \n // or element, update the intersection rect.\n // Note: and cannot be clipped to a rect that's not also\n // the document rect, so no need to compute a new intersection.\n if (parent != document.body && parent != document.documentElement && parentComputedStyle.overflow != 'visible') {\n parentRect = getBoundingClientRect(parent);\n }\n }\n\n // If either of the above conditionals set a new parentRect,\n // calculate new intersection data.\n if (parentRect) {\n intersectionRect = computeRectIntersection(parentRect, intersectionRect);\n if (!intersectionRect) break;\n }\n parent = getParentNode(parent);\n }\n return intersectionRect;\n };\n\n /**\n * Returns the root rect after being expanded by the rootMargin value.\n * @return {Object} The expanded root rect.\n * @private\n */\n IntersectionObserver.prototype._getRootRect = function () {\n var rootRect;\n if (this.root) {\n rootRect = getBoundingClientRect(this.root);\n } else {\n // Use / instead of window since scroll bars affect size.\n var html = document.documentElement;\n var body = document.body;\n rootRect = {\n top: 0,\n left: 0,\n right: html.clientWidth || body.clientWidth,\n width: html.clientWidth || body.clientWidth,\n bottom: html.clientHeight || body.clientHeight,\n height: html.clientHeight || body.clientHeight\n };\n }\n return this._expandRectByRootMargin(rootRect);\n };\n\n /**\n * Accepts a rect and expands it by the rootMargin value.\n * @param {Object} rect The rect object to expand.\n * @return {Object} The expanded rect.\n * @private\n */\n IntersectionObserver.prototype._expandRectByRootMargin = function (rect) {\n var margins = this._rootMarginValues.map(function (margin, i) {\n return margin.unit == 'px' ? margin.value : margin.value * (i % 2 ? rect.width : rect.height) / 100;\n });\n var newRect = {\n top: rect.top - margins[0],\n right: rect.right + margins[1],\n bottom: rect.bottom + margins[2],\n left: rect.left - margins[3]\n };\n newRect.width = newRect.right - newRect.left;\n newRect.height = newRect.bottom - newRect.top;\n return newRect;\n };\n\n /**\n * Accepts an old and new entry and returns true if at least one of the\n * threshold values has been crossed.\n * @param {?IntersectionObserverEntry} oldEntry The previous entry for a\n * particular target element or null if no previous entry exists.\n * @param {IntersectionObserverEntry} newEntry The current entry for a\n * particular target element.\n * @return {boolean} Returns true if a any threshold has been crossed.\n * @private\n */\n IntersectionObserver.prototype._hasCrossedThreshold = function (oldEntry, newEntry) {\n // To make comparing easier, an entry that has a ratio of 0\n // but does not actually intersect is given a value of -1\n var oldRatio = oldEntry && oldEntry.isIntersecting ? oldEntry.intersectionRatio || 0 : -1;\n var newRatio = newEntry.isIntersecting ? newEntry.intersectionRatio || 0 : -1;\n\n // Ignore unchanged ratios\n if (oldRatio === newRatio) return;\n for (var i = 0; i < this.thresholds.length; i++) {\n var threshold = this.thresholds[i];\n\n // Return true if an entry matches a threshold or if the new ratio\n // and the old ratio are on the opposite sides of a threshold.\n if (threshold == oldRatio || threshold == newRatio || threshold < oldRatio !== threshold < newRatio) {\n return true;\n }\n }\n };\n\n /**\n * Returns whether or not the root element is an element and is in the DOM.\n * @return {boolean} True if the root element is an element and is in the DOM.\n * @private\n */\n IntersectionObserver.prototype._rootIsInDom = function () {\n return !this.root || containsDeep(document, this.root);\n };\n\n /**\n * Returns whether or not the target element is a child of root.\n * @param {Element} target The target element to check.\n * @return {boolean} True if the target element is a child of root.\n * @private\n */\n IntersectionObserver.prototype._rootContainsTarget = function (target) {\n return containsDeep(this.root || document, target);\n };\n\n /**\n * Adds the instance to the global IntersectionObserver registry if it isn't\n * already present.\n * @private\n */\n IntersectionObserver.prototype._registerInstance = function () {\n if (registry.indexOf(this) < 0) {\n registry.push(this);\n }\n };\n\n /**\n * Removes the instance from the global IntersectionObserver registry.\n * @private\n */\n IntersectionObserver.prototype._unregisterInstance = function () {\n var index = registry.indexOf(this);\n if (index != -1) registry.splice(index, 1);\n };\n\n /**\n * Returns the result of the performance.now() method or null in browsers\n * that don't support the API.\n * @return {number} The elapsed time since the page was requested.\n */\n function now() {\n return window.performance && performance.now && performance.now();\n }\n\n /**\n * Throttles a function and delays its execution, so it's only called at most\n * once within a given time period.\n * @param {Function} fn The function to throttle.\n * @param {number} timeout The amount of time that must pass before the\n * function can be called again.\n * @return {Function} The throttled function.\n */\n function throttle(fn, timeout) {\n var timer = null;\n return function () {\n if (!timer) {\n timer = setTimeout(function () {\n fn();\n timer = null;\n }, timeout);\n }\n };\n }\n\n /**\n * Adds an event handler to a DOM node ensuring cross-browser compatibility.\n * @param {Node} node The DOM node to add the event handler to.\n * @param {string} event The event name.\n * @param {Function} fn The event handler to add.\n * @param {boolean} opt_useCapture Optionally adds the even to the capture\n * phase. Note: this only works in modern browsers.\n */\n function addEvent(node, event, fn, opt_useCapture) {\n if (typeof node.addEventListener == 'function') {\n node.addEventListener(event, fn, opt_useCapture || false);\n } else if (typeof node.attachEvent == 'function') {\n node.attachEvent('on' + event, fn);\n }\n }\n\n /**\n * Removes a previously added event handler from a DOM node.\n * @param {Node} node The DOM node to remove the event handler from.\n * @param {string} event The event name.\n * @param {Function} fn The event handler to remove.\n * @param {boolean} opt_useCapture If the event handler was added with this\n * flag set to true, it should be set to true here in order to remove it.\n */\n function removeEvent(node, event, fn, opt_useCapture) {\n if (typeof node.removeEventListener == 'function') {\n node.removeEventListener(event, fn, opt_useCapture || false);\n } else if (typeof node.detatchEvent == 'function') {\n node.detatchEvent('on' + event, fn);\n }\n }\n\n /**\n * Returns the intersection between two rect objects.\n * @param {Object} rect1 The first rect.\n * @param {Object} rect2 The second rect.\n * @return {?Object} The intersection rect or undefined if no intersection\n * is found.\n */\n function computeRectIntersection(rect1, rect2) {\n var top = Math.max(rect1.top, rect2.top);\n var bottom = Math.min(rect1.bottom, rect2.bottom);\n var left = Math.max(rect1.left, rect2.left);\n var right = Math.min(rect1.right, rect2.right);\n var width = right - left;\n var height = bottom - top;\n return width >= 0 && height >= 0 && {\n top: top,\n bottom: bottom,\n left: left,\n right: right,\n width: width,\n height: height\n };\n }\n\n /**\n * Shims the native getBoundingClientRect for compatibility with older IE.\n * @param {Element} el The element whose bounding rect to get.\n * @return {Object} The (possibly shimmed) rect of the element.\n */\n function getBoundingClientRect(el) {\n var rect;\n try {\n rect = el.getBoundingClientRect();\n } catch (err) {\n // Ignore Windows 7 IE11 \"Unspecified error\"\n // https://github.com/w3c/IntersectionObserver/pull/205\n }\n if (!rect) return getEmptyRect();\n\n // Older IE\n if (!(rect.width && rect.height)) {\n rect = {\n top: rect.top,\n right: rect.right,\n bottom: rect.bottom,\n left: rect.left,\n width: rect.right - rect.left,\n height: rect.bottom - rect.top\n };\n }\n return rect;\n }\n\n /**\n * Returns an empty rect object. An empty rect is returned when an element\n * is not in the DOM.\n * @return {Object} The empty rect.\n */\n function getEmptyRect() {\n return {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n width: 0,\n height: 0\n };\n }\n\n /**\n * Checks to see if a parent element contains a child element (including inside\n * shadow DOM).\n * @param {Node} parent The parent element.\n * @param {Node} child The child element.\n * @return {boolean} True if the parent node contains the child node.\n */\n function containsDeep(parent, child) {\n var node = child;\n while (node) {\n if (node == parent) return true;\n node = getParentNode(node);\n }\n return false;\n }\n\n /**\n * Gets the parent node of an element or its host element if the parent node\n * is a shadow root.\n * @param {Node} node The node whose parent to get.\n * @return {Node|null} The parent node or null if no parent exists.\n */\n function getParentNode(node) {\n var parent = node.parentNode;\n if (parent && parent.nodeType == 11 && parent.host) {\n // If the parent is a shadow root, return the host element.\n return parent.host;\n }\n if (parent && parent.assignedSlot) {\n // If the parent is distributed in a , return the parent of a slot.\n return parent.assignedSlot.parentNode;\n }\n return parent;\n }\n\n // Exposes the constructors globally.\n window.IntersectionObserver = IntersectionObserver;\n window.IntersectionObserverEntry = IntersectionObserverEntry;\n})();","/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */\n\nvar hasElementType = typeof Element !== 'undefined';\nvar hasMap = typeof Map === 'function';\nvar hasSet = typeof Set === 'function';\nvar hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView;\n\n// Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js\n\nfunction equal(a, b) {\n // START: fast-deep-equal es6/index.js 3.1.1\n if (a === b) return true;\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;) if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n // START: Modifications:\n // 1. Extra `has &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n var it;\n if (hasMap && a instanceof Map && b instanceof Map) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done) if (!b.has(i.value[0])) return false;\n it = a.entries();\n while (!(i = it.next()).done) if (!equal(i.value[1], b.get(i.value[0]))) return false;\n return true;\n }\n if (hasSet && a instanceof Set && b instanceof Set) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done) if (!b.has(i.value[0])) return false;\n return true;\n }\n // END: Modifications\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;) if (a[i] !== b[i]) return false;\n return true;\n }\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n for (i = length; i-- !== 0;) if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n // END: fast-deep-equal\n\n // START: react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element) return false;\n\n // custom handling for React/Preact\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n\n continue;\n }\n\n // all other properties should be traversed as usual\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n }\n // END: react-fast-compare\n\n // START: fast-deep-equal\n return true;\n }\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if ((error.message || '').match(/stack|recursion/i)) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};","import PropTypes from 'prop-types';\nimport withSideEffect from 'react-side-effect';\nimport isEqual from 'react-fast-compare';\nimport React from 'react';\nimport objectAssign from 'object-assign';\nvar ATTRIBUTE_NAMES = {\n BODY: \"bodyAttributes\",\n HTML: \"htmlAttributes\",\n TITLE: \"titleAttributes\"\n};\nvar TAG_NAMES = {\n BASE: \"base\",\n BODY: \"body\",\n HEAD: \"head\",\n HTML: \"html\",\n LINK: \"link\",\n META: \"meta\",\n NOSCRIPT: \"noscript\",\n SCRIPT: \"script\",\n STYLE: \"style\",\n TITLE: \"title\"\n};\nvar VALID_TAG_NAMES = Object.keys(TAG_NAMES).map(function (name) {\n return TAG_NAMES[name];\n});\nvar TAG_PROPERTIES = {\n CHARSET: \"charset\",\n CSS_TEXT: \"cssText\",\n HREF: \"href\",\n HTTPEQUIV: \"http-equiv\",\n INNER_HTML: \"innerHTML\",\n ITEM_PROP: \"itemprop\",\n NAME: \"name\",\n PROPERTY: \"property\",\n REL: \"rel\",\n SRC: \"src\",\n TARGET: \"target\"\n};\nvar REACT_TAG_MAP = {\n accesskey: \"accessKey\",\n charset: \"charSet\",\n class: \"className\",\n contenteditable: \"contentEditable\",\n contextmenu: \"contextMenu\",\n \"http-equiv\": \"httpEquiv\",\n itemprop: \"itemProp\",\n tabindex: \"tabIndex\"\n};\nvar HELMET_PROPS = {\n DEFAULT_TITLE: \"defaultTitle\",\n DEFER: \"defer\",\n ENCODE_SPECIAL_CHARACTERS: \"encodeSpecialCharacters\",\n ON_CHANGE_CLIENT_STATE: \"onChangeClientState\",\n TITLE_TEMPLATE: \"titleTemplate\"\n};\nvar HTML_TAG_MAP = Object.keys(REACT_TAG_MAP).reduce(function (obj, key) {\n obj[REACT_TAG_MAP[key]] = key;\n return obj;\n}, {});\nvar SELF_CLOSING_TAGS = [TAG_NAMES.NOSCRIPT, TAG_NAMES.SCRIPT, TAG_NAMES.STYLE];\nvar HELMET_ATTRIBUTE = \"data-react-helmet\";\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\nvar classCallCheck = function (instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\nvar createClass = function () {\n function 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 }\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\nvar _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};\nvar inherits = function (subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\nvar objectWithoutProperties = function (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};\nvar possibleConstructorReturn = function (self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\nvar encodeSpecialCharacters = function encodeSpecialCharacters(str) {\n var encode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n if (encode === false) {\n return String(str);\n }\n return String(str).replace(/&/g, \"&\").replace(//g, \">\").replace(/\"/g, \""\").replace(/'/g, \"'\");\n};\nvar getTitleFromPropsList = function getTitleFromPropsList(propsList) {\n var innermostTitle = getInnermostProperty(propsList, TAG_NAMES.TITLE);\n var innermostTemplate = getInnermostProperty(propsList, HELMET_PROPS.TITLE_TEMPLATE);\n if (innermostTemplate && innermostTitle) {\n // use function arg to avoid need to escape $ characters\n return innermostTemplate.replace(/%s/g, function () {\n return Array.isArray(innermostTitle) ? innermostTitle.join(\"\") : innermostTitle;\n });\n }\n var innermostDefaultTitle = getInnermostProperty(propsList, HELMET_PROPS.DEFAULT_TITLE);\n return innermostTitle || innermostDefaultTitle || undefined;\n};\nvar getOnChangeClientState = function getOnChangeClientState(propsList) {\n return getInnermostProperty(propsList, HELMET_PROPS.ON_CHANGE_CLIENT_STATE) || function () {};\n};\nvar getAttributesFromPropsList = function getAttributesFromPropsList(tagType, propsList) {\n return propsList.filter(function (props) {\n return typeof props[tagType] !== \"undefined\";\n }).map(function (props) {\n return props[tagType];\n }).reduce(function (tagAttrs, current) {\n return _extends({}, tagAttrs, current);\n }, {});\n};\nvar getBaseTagFromPropsList = function getBaseTagFromPropsList(primaryAttributes, propsList) {\n return propsList.filter(function (props) {\n return typeof props[TAG_NAMES.BASE] !== \"undefined\";\n }).map(function (props) {\n return props[TAG_NAMES.BASE];\n }).reverse().reduce(function (innermostBaseTag, tag) {\n if (!innermostBaseTag.length) {\n var keys = Object.keys(tag);\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var lowerCaseAttributeKey = attributeKey.toLowerCase();\n if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && tag[lowerCaseAttributeKey]) {\n return innermostBaseTag.concat(tag);\n }\n }\n }\n return innermostBaseTag;\n }, []);\n};\nvar getTagsFromPropsList = function getTagsFromPropsList(tagName, primaryAttributes, propsList) {\n // Calculate list of tags, giving priority innermost component (end of the propslist)\n var approvedSeenTags = {};\n return propsList.filter(function (props) {\n if (Array.isArray(props[tagName])) {\n return true;\n }\n if (typeof props[tagName] !== \"undefined\") {\n warn(\"Helmet: \" + tagName + \" should be of type \\\"Array\\\". Instead found type \\\"\" + _typeof(props[tagName]) + \"\\\"\");\n }\n return false;\n }).map(function (props) {\n return props[tagName];\n }).reverse().reduce(function (approvedTags, instanceTags) {\n var instanceSeenTags = {};\n instanceTags.filter(function (tag) {\n var primaryAttributeKey = void 0;\n var keys = Object.keys(tag);\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var lowerCaseAttributeKey = attributeKey.toLowerCase();\n\n // Special rule with link tags, since rel and href are both primary tags, rel takes priority\n if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && !(primaryAttributeKey === TAG_PROPERTIES.REL && tag[primaryAttributeKey].toLowerCase() === \"canonical\") && !(lowerCaseAttributeKey === TAG_PROPERTIES.REL && tag[lowerCaseAttributeKey].toLowerCase() === \"stylesheet\")) {\n primaryAttributeKey = lowerCaseAttributeKey;\n }\n // Special case for innerHTML which doesn't work lowercased\n if (primaryAttributes.indexOf(attributeKey) !== -1 && (attributeKey === TAG_PROPERTIES.INNER_HTML || attributeKey === TAG_PROPERTIES.CSS_TEXT || attributeKey === TAG_PROPERTIES.ITEM_PROP)) {\n primaryAttributeKey = attributeKey;\n }\n }\n if (!primaryAttributeKey || !tag[primaryAttributeKey]) {\n return false;\n }\n var value = tag[primaryAttributeKey].toLowerCase();\n if (!approvedSeenTags[primaryAttributeKey]) {\n approvedSeenTags[primaryAttributeKey] = {};\n }\n if (!instanceSeenTags[primaryAttributeKey]) {\n instanceSeenTags[primaryAttributeKey] = {};\n }\n if (!approvedSeenTags[primaryAttributeKey][value]) {\n instanceSeenTags[primaryAttributeKey][value] = true;\n return true;\n }\n return false;\n }).reverse().forEach(function (tag) {\n return approvedTags.push(tag);\n });\n\n // Update seen tags with tags from this instance\n var keys = Object.keys(instanceSeenTags);\n for (var i = 0; i < keys.length; i++) {\n var attributeKey = keys[i];\n var tagUnion = objectAssign({}, approvedSeenTags[attributeKey], instanceSeenTags[attributeKey]);\n approvedSeenTags[attributeKey] = tagUnion;\n }\n return approvedTags;\n }, []).reverse();\n};\nvar getInnermostProperty = function getInnermostProperty(propsList, property) {\n for (var i = propsList.length - 1; i >= 0; i--) {\n var props = propsList[i];\n if (props.hasOwnProperty(property)) {\n return props[property];\n }\n }\n return null;\n};\nvar reducePropsToState = function reducePropsToState(propsList) {\n return {\n baseTag: getBaseTagFromPropsList([TAG_PROPERTIES.HREF, TAG_PROPERTIES.TARGET], propsList),\n bodyAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.BODY, propsList),\n defer: getInnermostProperty(propsList, HELMET_PROPS.DEFER),\n encode: getInnermostProperty(propsList, HELMET_PROPS.ENCODE_SPECIAL_CHARACTERS),\n htmlAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.HTML, propsList),\n linkTags: getTagsFromPropsList(TAG_NAMES.LINK, [TAG_PROPERTIES.REL, TAG_PROPERTIES.HREF], propsList),\n metaTags: getTagsFromPropsList(TAG_NAMES.META, [TAG_PROPERTIES.NAME, TAG_PROPERTIES.CHARSET, TAG_PROPERTIES.HTTPEQUIV, TAG_PROPERTIES.PROPERTY, TAG_PROPERTIES.ITEM_PROP], propsList),\n noscriptTags: getTagsFromPropsList(TAG_NAMES.NOSCRIPT, [TAG_PROPERTIES.INNER_HTML], propsList),\n onChangeClientState: getOnChangeClientState(propsList),\n scriptTags: getTagsFromPropsList(TAG_NAMES.SCRIPT, [TAG_PROPERTIES.SRC, TAG_PROPERTIES.INNER_HTML], propsList),\n styleTags: getTagsFromPropsList(TAG_NAMES.STYLE, [TAG_PROPERTIES.CSS_TEXT], propsList),\n title: getTitleFromPropsList(propsList),\n titleAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.TITLE, propsList)\n };\n};\nvar rafPolyfill = function () {\n var clock = Date.now();\n return function (callback) {\n var currentTime = Date.now();\n if (currentTime - clock > 16) {\n clock = currentTime;\n callback(currentTime);\n } else {\n setTimeout(function () {\n rafPolyfill(callback);\n }, 0);\n }\n };\n}();\nvar cafPolyfill = function cafPolyfill(id) {\n return clearTimeout(id);\n};\nvar requestAnimationFrame = typeof window !== \"undefined\" ? window.requestAnimationFrame && window.requestAnimationFrame.bind(window) || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || rafPolyfill : global.requestAnimationFrame || rafPolyfill;\nvar cancelAnimationFrame = typeof window !== \"undefined\" ? window.cancelAnimationFrame || window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || cafPolyfill : global.cancelAnimationFrame || cafPolyfill;\nvar warn = function warn(msg) {\n return console && typeof console.warn === \"function\" && console.warn(msg);\n};\nvar _helmetCallback = null;\nvar handleClientStateChange = function handleClientStateChange(newState) {\n if (_helmetCallback) {\n cancelAnimationFrame(_helmetCallback);\n }\n if (newState.defer) {\n _helmetCallback = requestAnimationFrame(function () {\n commitTagChanges(newState, function () {\n _helmetCallback = null;\n });\n });\n } else {\n commitTagChanges(newState);\n _helmetCallback = null;\n }\n};\nvar commitTagChanges = function commitTagChanges(newState, cb) {\n var baseTag = newState.baseTag,\n bodyAttributes = newState.bodyAttributes,\n htmlAttributes = newState.htmlAttributes,\n linkTags = newState.linkTags,\n metaTags = newState.metaTags,\n noscriptTags = newState.noscriptTags,\n onChangeClientState = newState.onChangeClientState,\n scriptTags = newState.scriptTags,\n styleTags = newState.styleTags,\n title = newState.title,\n titleAttributes = newState.titleAttributes;\n updateAttributes(TAG_NAMES.BODY, bodyAttributes);\n updateAttributes(TAG_NAMES.HTML, htmlAttributes);\n updateTitle(title, titleAttributes);\n var tagUpdates = {\n baseTag: updateTags(TAG_NAMES.BASE, baseTag),\n linkTags: updateTags(TAG_NAMES.LINK, linkTags),\n metaTags: updateTags(TAG_NAMES.META, metaTags),\n noscriptTags: updateTags(TAG_NAMES.NOSCRIPT, noscriptTags),\n scriptTags: updateTags(TAG_NAMES.SCRIPT, scriptTags),\n styleTags: updateTags(TAG_NAMES.STYLE, styleTags)\n };\n var addedTags = {};\n var removedTags = {};\n Object.keys(tagUpdates).forEach(function (tagType) {\n var _tagUpdates$tagType = tagUpdates[tagType],\n newTags = _tagUpdates$tagType.newTags,\n oldTags = _tagUpdates$tagType.oldTags;\n if (newTags.length) {\n addedTags[tagType] = newTags;\n }\n if (oldTags.length) {\n removedTags[tagType] = tagUpdates[tagType].oldTags;\n }\n });\n cb && cb();\n onChangeClientState(newState, addedTags, removedTags);\n};\nvar flattenArray = function flattenArray(possibleArray) {\n return Array.isArray(possibleArray) ? possibleArray.join(\"\") : possibleArray;\n};\nvar updateTitle = function updateTitle(title, attributes) {\n if (typeof title !== \"undefined\" && document.title !== title) {\n document.title = flattenArray(title);\n }\n updateAttributes(TAG_NAMES.TITLE, attributes);\n};\nvar updateAttributes = function updateAttributes(tagName, attributes) {\n var elementTag = document.getElementsByTagName(tagName)[0];\n if (!elementTag) {\n return;\n }\n var helmetAttributeString = elementTag.getAttribute(HELMET_ATTRIBUTE);\n var helmetAttributes = helmetAttributeString ? helmetAttributeString.split(\",\") : [];\n var attributesToRemove = [].concat(helmetAttributes);\n var attributeKeys = Object.keys(attributes);\n for (var i = 0; i < attributeKeys.length; i++) {\n var attribute = attributeKeys[i];\n var value = attributes[attribute] || \"\";\n if (elementTag.getAttribute(attribute) !== value) {\n elementTag.setAttribute(attribute, value);\n }\n if (helmetAttributes.indexOf(attribute) === -1) {\n helmetAttributes.push(attribute);\n }\n var indexToSave = attributesToRemove.indexOf(attribute);\n if (indexToSave !== -1) {\n attributesToRemove.splice(indexToSave, 1);\n }\n }\n for (var _i = attributesToRemove.length - 1; _i >= 0; _i--) {\n elementTag.removeAttribute(attributesToRemove[_i]);\n }\n if (helmetAttributes.length === attributesToRemove.length) {\n elementTag.removeAttribute(HELMET_ATTRIBUTE);\n } else if (elementTag.getAttribute(HELMET_ATTRIBUTE) !== attributeKeys.join(\",\")) {\n elementTag.setAttribute(HELMET_ATTRIBUTE, attributeKeys.join(\",\"));\n }\n};\nvar updateTags = function updateTags(type, tags) {\n var headElement = document.head || document.querySelector(TAG_NAMES.HEAD);\n var tagNodes = headElement.querySelectorAll(type + \"[\" + HELMET_ATTRIBUTE + \"]\");\n var oldTags = Array.prototype.slice.call(tagNodes);\n var newTags = [];\n var indexToDelete = void 0;\n if (tags && tags.length) {\n tags.forEach(function (tag) {\n var newElement = document.createElement(type);\n for (var attribute in tag) {\n if (tag.hasOwnProperty(attribute)) {\n if (attribute === TAG_PROPERTIES.INNER_HTML) {\n newElement.innerHTML = tag.innerHTML;\n } else if (attribute === TAG_PROPERTIES.CSS_TEXT) {\n if (newElement.styleSheet) {\n newElement.styleSheet.cssText = tag.cssText;\n } else {\n newElement.appendChild(document.createTextNode(tag.cssText));\n }\n } else {\n var value = typeof tag[attribute] === \"undefined\" ? \"\" : tag[attribute];\n newElement.setAttribute(attribute, value);\n }\n }\n }\n newElement.setAttribute(HELMET_ATTRIBUTE, \"true\");\n\n // Remove a duplicate tag from domTagstoRemove, so it isn't cleared.\n if (oldTags.some(function (existingTag, index) {\n indexToDelete = index;\n return newElement.isEqualNode(existingTag);\n })) {\n oldTags.splice(indexToDelete, 1);\n } else {\n newTags.push(newElement);\n }\n });\n }\n oldTags.forEach(function (tag) {\n return tag.parentNode.removeChild(tag);\n });\n newTags.forEach(function (tag) {\n return headElement.appendChild(tag);\n });\n return {\n oldTags: oldTags,\n newTags: newTags\n };\n};\nvar generateElementAttributesAsString = function generateElementAttributesAsString(attributes) {\n return Object.keys(attributes).reduce(function (str, key) {\n var attr = typeof attributes[key] !== \"undefined\" ? key + \"=\\\"\" + attributes[key] + \"\\\"\" : \"\" + key;\n return str ? str + \" \" + attr : attr;\n }, \"\");\n};\nvar generateTitleAsString = function generateTitleAsString(type, title, attributes, encode) {\n var attributeString = generateElementAttributesAsString(attributes);\n var flattenedTitle = flattenArray(title);\n return attributeString ? \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeString + \">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"\" : \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\">\" + encodeSpecialCharacters(flattenedTitle, encode) + \"\";\n};\nvar generateTagsAsString = function generateTagsAsString(type, tags, encode) {\n return tags.reduce(function (str, tag) {\n var attributeHtml = Object.keys(tag).filter(function (attribute) {\n return !(attribute === TAG_PROPERTIES.INNER_HTML || attribute === TAG_PROPERTIES.CSS_TEXT);\n }).reduce(function (string, attribute) {\n var attr = typeof tag[attribute] === \"undefined\" ? attribute : attribute + \"=\\\"\" + encodeSpecialCharacters(tag[attribute], encode) + \"\\\"\";\n return string ? string + \" \" + attr : attr;\n }, \"\");\n var tagContent = tag.innerHTML || tag.cssText || \"\";\n var isSelfClosing = SELF_CLOSING_TAGS.indexOf(type) === -1;\n return str + \"<\" + type + \" \" + HELMET_ATTRIBUTE + \"=\\\"true\\\" \" + attributeHtml + (isSelfClosing ? \"/>\" : \">\" + tagContent + \"\");\n }, \"\");\n};\nvar convertElementAttributestoReactProps = function convertElementAttributestoReactProps(attributes) {\n var initProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return Object.keys(attributes).reduce(function (obj, key) {\n obj[REACT_TAG_MAP[key] || key] = attributes[key];\n return obj;\n }, initProps);\n};\nvar convertReactPropstoHtmlAttributes = function convertReactPropstoHtmlAttributes(props) {\n var initAttributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return Object.keys(props).reduce(function (obj, key) {\n obj[HTML_TAG_MAP[key] || key] = props[key];\n return obj;\n }, initAttributes);\n};\nvar generateTitleAsReactComponent = function generateTitleAsReactComponent(type, title, attributes) {\n var _initProps;\n\n // assigning into an array to define toString function on it\n var initProps = (_initProps = {\n key: title\n }, _initProps[HELMET_ATTRIBUTE] = true, _initProps);\n var props = convertElementAttributestoReactProps(attributes, initProps);\n return [React.createElement(TAG_NAMES.TITLE, props, title)];\n};\nvar generateTagsAsReactComponent = function generateTagsAsReactComponent(type, tags) {\n return tags.map(function (tag, i) {\n var _mappedTag;\n var mappedTag = (_mappedTag = {\n key: i\n }, _mappedTag[HELMET_ATTRIBUTE] = true, _mappedTag);\n Object.keys(tag).forEach(function (attribute) {\n var mappedAttribute = REACT_TAG_MAP[attribute] || attribute;\n if (mappedAttribute === TAG_PROPERTIES.INNER_HTML || mappedAttribute === TAG_PROPERTIES.CSS_TEXT) {\n var content = tag.innerHTML || tag.cssText;\n mappedTag.dangerouslySetInnerHTML = {\n __html: content\n };\n } else {\n mappedTag[mappedAttribute] = tag[attribute];\n }\n });\n return React.createElement(type, mappedTag);\n });\n};\nvar getMethodsForTag = function getMethodsForTag(type, tags, encode) {\n switch (type) {\n case TAG_NAMES.TITLE:\n return {\n toComponent: function toComponent() {\n return generateTitleAsReactComponent(type, tags.title, tags.titleAttributes, encode);\n },\n toString: function toString() {\n return generateTitleAsString(type, tags.title, tags.titleAttributes, encode);\n }\n };\n case ATTRIBUTE_NAMES.BODY:\n case ATTRIBUTE_NAMES.HTML:\n return {\n toComponent: function toComponent() {\n return convertElementAttributestoReactProps(tags);\n },\n toString: function toString() {\n return generateElementAttributesAsString(tags);\n }\n };\n default:\n return {\n toComponent: function toComponent() {\n return generateTagsAsReactComponent(type, tags);\n },\n toString: function toString() {\n return generateTagsAsString(type, tags, encode);\n }\n };\n }\n};\nvar mapStateOnServer = function mapStateOnServer(_ref) {\n var baseTag = _ref.baseTag,\n bodyAttributes = _ref.bodyAttributes,\n encode = _ref.encode,\n htmlAttributes = _ref.htmlAttributes,\n linkTags = _ref.linkTags,\n metaTags = _ref.metaTags,\n noscriptTags = _ref.noscriptTags,\n scriptTags = _ref.scriptTags,\n styleTags = _ref.styleTags,\n _ref$title = _ref.title,\n title = _ref$title === undefined ? \"\" : _ref$title,\n titleAttributes = _ref.titleAttributes;\n return {\n base: getMethodsForTag(TAG_NAMES.BASE, baseTag, encode),\n bodyAttributes: getMethodsForTag(ATTRIBUTE_NAMES.BODY, bodyAttributes, encode),\n htmlAttributes: getMethodsForTag(ATTRIBUTE_NAMES.HTML, htmlAttributes, encode),\n link: getMethodsForTag(TAG_NAMES.LINK, linkTags, encode),\n meta: getMethodsForTag(TAG_NAMES.META, metaTags, encode),\n noscript: getMethodsForTag(TAG_NAMES.NOSCRIPT, noscriptTags, encode),\n script: getMethodsForTag(TAG_NAMES.SCRIPT, scriptTags, encode),\n style: getMethodsForTag(TAG_NAMES.STYLE, styleTags, encode),\n title: getMethodsForTag(TAG_NAMES.TITLE, {\n title: title,\n titleAttributes: titleAttributes\n }, encode)\n };\n};\nvar Helmet = function Helmet(Component) {\n var _class, _temp;\n return _temp = _class = function (_React$Component) {\n inherits(HelmetWrapper, _React$Component);\n function HelmetWrapper() {\n classCallCheck(this, HelmetWrapper);\n return possibleConstructorReturn(this, _React$Component.apply(this, arguments));\n }\n HelmetWrapper.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n return !isEqual(this.props, nextProps);\n };\n HelmetWrapper.prototype.mapNestedChildrenToProps = function mapNestedChildrenToProps(child, nestedChildren) {\n if (!nestedChildren) {\n return null;\n }\n switch (child.type) {\n case TAG_NAMES.SCRIPT:\n case TAG_NAMES.NOSCRIPT:\n return {\n innerHTML: nestedChildren\n };\n case TAG_NAMES.STYLE:\n return {\n cssText: nestedChildren\n };\n }\n throw new Error(\"<\" + child.type + \" /> elements are self-closing and can not contain children. Refer to our API for more information.\");\n };\n HelmetWrapper.prototype.flattenArrayTypeChildren = function flattenArrayTypeChildren(_ref) {\n var _babelHelpers$extends;\n var child = _ref.child,\n arrayTypeChildren = _ref.arrayTypeChildren,\n newChildProps = _ref.newChildProps,\n nestedChildren = _ref.nestedChildren;\n return _extends({}, arrayTypeChildren, (_babelHelpers$extends = {}, _babelHelpers$extends[child.type] = [].concat(arrayTypeChildren[child.type] || [], [_extends({}, newChildProps, this.mapNestedChildrenToProps(child, nestedChildren))]), _babelHelpers$extends));\n };\n HelmetWrapper.prototype.mapObjectTypeChildren = function mapObjectTypeChildren(_ref2) {\n var _babelHelpers$extends2, _babelHelpers$extends3;\n var child = _ref2.child,\n newProps = _ref2.newProps,\n newChildProps = _ref2.newChildProps,\n nestedChildren = _ref2.nestedChildren;\n switch (child.type) {\n case TAG_NAMES.TITLE:\n return _extends({}, newProps, (_babelHelpers$extends2 = {}, _babelHelpers$extends2[child.type] = nestedChildren, _babelHelpers$extends2.titleAttributes = _extends({}, newChildProps), _babelHelpers$extends2));\n case TAG_NAMES.BODY:\n return _extends({}, newProps, {\n bodyAttributes: _extends({}, newChildProps)\n });\n case TAG_NAMES.HTML:\n return _extends({}, newProps, {\n htmlAttributes: _extends({}, newChildProps)\n });\n }\n return _extends({}, newProps, (_babelHelpers$extends3 = {}, _babelHelpers$extends3[child.type] = _extends({}, newChildProps), _babelHelpers$extends3));\n };\n HelmetWrapper.prototype.mapArrayTypeChildrenToProps = function mapArrayTypeChildrenToProps(arrayTypeChildren, newProps) {\n var newFlattenedProps = _extends({}, newProps);\n Object.keys(arrayTypeChildren).forEach(function (arrayChildName) {\n var _babelHelpers$extends4;\n newFlattenedProps = _extends({}, newFlattenedProps, (_babelHelpers$extends4 = {}, _babelHelpers$extends4[arrayChildName] = arrayTypeChildren[arrayChildName], _babelHelpers$extends4));\n });\n return newFlattenedProps;\n };\n HelmetWrapper.prototype.warnOnInvalidChildren = function warnOnInvalidChildren(child, nestedChildren) {\n if (process.env.NODE_ENV !== \"production\") {\n if (!VALID_TAG_NAMES.some(function (name) {\n return child.type === name;\n })) {\n if (typeof child.type === \"function\") {\n return warn(\"You may be attempting to nest components within each other, which is not allowed. Refer to our API for more information.\");\n }\n return warn(\"Only elements types \" + VALID_TAG_NAMES.join(\", \") + \" are allowed. Helmet does not support rendering <\" + child.type + \"> elements. Refer to our API for more information.\");\n }\n if (nestedChildren && typeof nestedChildren !== \"string\" && (!Array.isArray(nestedChildren) || nestedChildren.some(function (nestedChild) {\n return typeof nestedChild !== \"string\";\n }))) {\n throw new Error(\"Helmet expects a string as a child of <\" + child.type + \">. Did you forget to wrap your children in braces? ( <\" + child.type + \">{``} ) Refer to our API for more information.\");\n }\n }\n return true;\n };\n HelmetWrapper.prototype.mapChildrenToProps = function mapChildrenToProps(children, newProps) {\n var _this2 = this;\n var arrayTypeChildren = {};\n React.Children.forEach(children, function (child) {\n if (!child || !child.props) {\n return;\n }\n var _child$props = child.props,\n nestedChildren = _child$props.children,\n childProps = objectWithoutProperties(_child$props, [\"children\"]);\n var newChildProps = convertReactPropstoHtmlAttributes(childProps);\n _this2.warnOnInvalidChildren(child, nestedChildren);\n switch (child.type) {\n case TAG_NAMES.LINK:\n case TAG_NAMES.META:\n case TAG_NAMES.NOSCRIPT:\n case TAG_NAMES.SCRIPT:\n case TAG_NAMES.STYLE:\n arrayTypeChildren = _this2.flattenArrayTypeChildren({\n child: child,\n arrayTypeChildren: arrayTypeChildren,\n newChildProps: newChildProps,\n nestedChildren: nestedChildren\n });\n break;\n default:\n newProps = _this2.mapObjectTypeChildren({\n child: child,\n newProps: newProps,\n newChildProps: newChildProps,\n nestedChildren: nestedChildren\n });\n break;\n }\n });\n newProps = this.mapArrayTypeChildrenToProps(arrayTypeChildren, newProps);\n return newProps;\n };\n HelmetWrapper.prototype.render = function render() {\n var _props = this.props,\n children = _props.children,\n props = objectWithoutProperties(_props, [\"children\"]);\n var newProps = _extends({}, props);\n if (children) {\n newProps = this.mapChildrenToProps(children, newProps);\n }\n return React.createElement(Component, newProps);\n };\n createClass(HelmetWrapper, null, [{\n key: \"canUseDOM\",\n // Component.peek comes from react-side-effect:\n // For testing, you may use a static peek() method available on the returned component.\n // It lets you get the current state without resetting the mounted instance stack.\n // Don’t use it for anything other than testing.\n\n /**\n * @param {Object} base: {\"target\": \"_blank\", \"href\": \"http://mysite.com/\"}\n * @param {Object} bodyAttributes: {\"className\": \"root\"}\n * @param {String} defaultTitle: \"Default Title\"\n * @param {Boolean} defer: true\n * @param {Boolean} encodeSpecialCharacters: true\n * @param {Object} htmlAttributes: {\"lang\": \"en\", \"amp\": undefined}\n * @param {Array} link: [{\"rel\": \"canonical\", \"href\": \"http://mysite.com/example\"}]\n * @param {Array} meta: [{\"name\": \"description\", \"content\": \"Test description\"}]\n * @param {Array} noscript: [{\"innerHTML\": \" console.log(newState)\"\n * @param {Array} script: [{\"type\": \"text/javascript\", \"src\": \"http://mysite.com/js/test.js\"}]\n * @param {Array} style: [{\"type\": \"text/css\", \"cssText\": \"div { display: block; color: blue; }\"}]\n * @param {String} title: \"Title\"\n * @param {Object} titleAttributes: {\"itemprop\": \"name\"}\n * @param {String} titleTemplate: \"MySite.com - %s\"\n */\n set: function set$$1(canUseDOM) {\n Component.canUseDOM = canUseDOM;\n }\n }]);\n return HelmetWrapper;\n }(React.Component), _class.propTypes = {\n base: PropTypes.object,\n bodyAttributes: PropTypes.object,\n children: PropTypes.oneOfType([PropTypes.arrayOf(PropTypes.node), PropTypes.node]),\n defaultTitle: PropTypes.string,\n defer: PropTypes.bool,\n encodeSpecialCharacters: PropTypes.bool,\n htmlAttributes: PropTypes.object,\n link: PropTypes.arrayOf(PropTypes.object),\n meta: PropTypes.arrayOf(PropTypes.object),\n noscript: PropTypes.arrayOf(PropTypes.object),\n onChangeClientState: PropTypes.func,\n script: PropTypes.arrayOf(PropTypes.object),\n style: PropTypes.arrayOf(PropTypes.object),\n title: PropTypes.string,\n titleAttributes: PropTypes.object,\n titleTemplate: PropTypes.string\n }, _class.defaultProps = {\n defer: true,\n encodeSpecialCharacters: true\n }, _class.peek = Component.peek, _class.rewind = function () {\n var mappedState = Component.rewind();\n if (!mappedState) {\n // provide fallback if mappedState is undefined\n mappedState = mapStateOnServer({\n baseTag: [],\n bodyAttributes: {},\n encodeSpecialCharacters: true,\n htmlAttributes: {},\n linkTags: [],\n metaTags: [],\n noscriptTags: [],\n scriptTags: [],\n styleTags: [],\n title: \"\",\n titleAttributes: {}\n });\n }\n return mappedState;\n }, _temp;\n};\nvar NullComponent = function NullComponent() {\n return null;\n};\nvar HelmetSideEffects = withSideEffect(reducePropsToState, handleClientStateChange, mapStateOnServer)(NullComponent);\nvar HelmetExport = Helmet(HelmetSideEffects);\nHelmetExport.renderStatic = HelmetExport.rewind;\nexport default HelmetExport;\nexport { HelmetExport as Helmet };","'use strict';\n\nfunction _interopDefault(ex) {\n return ex && typeof ex === 'object' && 'default' in ex ? ex['default'] : ex;\n}\nvar React = require('react');\nvar React__default = _interopDefault(React);\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}\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction withSideEffect(reducePropsToState, handleStateChangeOnClient, mapStateOnServer) {\n if (typeof reducePropsToState !== 'function') {\n throw new Error('Expected reducePropsToState to be a function.');\n }\n if (typeof handleStateChangeOnClient !== 'function') {\n throw new Error('Expected handleStateChangeOnClient to be a function.');\n }\n if (typeof mapStateOnServer !== 'undefined' && typeof mapStateOnServer !== 'function') {\n throw new Error('Expected mapStateOnServer to either be undefined or a function.');\n }\n function getDisplayName(WrappedComponent) {\n return WrappedComponent.displayName || WrappedComponent.name || 'Component';\n }\n return function wrap(WrappedComponent) {\n if (typeof WrappedComponent !== 'function') {\n throw new Error('Expected WrappedComponent to be a React component.');\n }\n var mountedInstances = [];\n var state;\n function emitChange() {\n state = reducePropsToState(mountedInstances.map(function (instance) {\n return instance.props;\n }));\n if (SideEffect.canUseDOM) {\n handleStateChangeOnClient(state);\n } else if (mapStateOnServer) {\n state = mapStateOnServer(state);\n }\n }\n var SideEffect = /*#__PURE__*/\n function (_PureComponent) {\n _inheritsLoose(SideEffect, _PureComponent);\n function SideEffect() {\n return _PureComponent.apply(this, arguments) || this;\n }\n\n // Try to use displayName of wrapped component\n // Expose canUseDOM so tests can monkeypatch it\n SideEffect.peek = function peek() {\n return state;\n };\n SideEffect.rewind = function rewind() {\n if (SideEffect.canUseDOM) {\n throw new Error('You may only call rewind() on the server. Call peek() to read the current state.');\n }\n var recordedState = state;\n state = undefined;\n mountedInstances = [];\n return recordedState;\n };\n var _proto = SideEffect.prototype;\n _proto.UNSAFE_componentWillMount = function UNSAFE_componentWillMount() {\n mountedInstances.push(this);\n emitChange();\n };\n _proto.componentDidUpdate = function componentDidUpdate() {\n emitChange();\n };\n _proto.componentWillUnmount = function componentWillUnmount() {\n var index = mountedInstances.indexOf(this);\n mountedInstances.splice(index, 1);\n emitChange();\n };\n _proto.render = function render() {\n return React__default.createElement(WrappedComponent, this.props);\n };\n return SideEffect;\n }(React.PureComponent);\n _defineProperty(SideEffect, \"displayName\", \"SideEffect(\" + getDisplayName(WrappedComponent) + \")\");\n _defineProperty(SideEffect, \"canUseDOM\", canUseDOM);\n return SideEffect;\n };\n}\nmodule.exports = withSideEffect;","!function (e, t) {\n \"object\" == typeof exports && \"object\" == typeof module ? module.exports = t() : \"function\" == typeof define && define.amd ? define([], t) : \"object\" == typeof exports ? exports.sal = t() : e.sal = t();\n}(this, function () {\n return function (e) {\n var t = {};\n function n(r) {\n if (t[r]) return t[r].exports;\n var o = t[r] = {\n i: r,\n l: !1,\n exports: {}\n };\n return e[r].call(o.exports, o, o.exports, n), o.l = !0, o.exports;\n }\n return n.m = e, n.c = t, n.d = function (e, t, r) {\n n.o(e, t) || Object.defineProperty(e, t, {\n enumerable: !0,\n get: r\n });\n }, n.r = function (e) {\n \"undefined\" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, {\n value: \"Module\"\n }), Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n }, n.t = function (e, t) {\n if (1 & t && (e = n(e)), 8 & t) return e;\n if (4 & t && \"object\" == typeof e && e && e.__esModule) return e;\n var r = Object.create(null);\n if (n.r(r), Object.defineProperty(r, \"default\", {\n enumerable: !0,\n value: e\n }), 2 & t && \"string\" != typeof e) for (var o in e) n.d(r, o, function (t) {\n return e[t];\n }.bind(null, o));\n return r;\n }, n.n = function (e) {\n var t = e && e.__esModule ? function () {\n return e.default;\n } : function () {\n return e;\n };\n return n.d(t, \"a\", t), t;\n }, n.o = function (e, t) {\n return Object.prototype.hasOwnProperty.call(e, t);\n }, n.p = \"dist/\", n(n.s = 0);\n }([function (e, t, n) {\n \"use strict\";\n\n n.r(t);\n n(1);\n function r(e, t) {\n var n = Object.keys(e);\n if (Object.getOwnPropertySymbols) {\n var r = Object.getOwnPropertySymbols(e);\n t && (r = r.filter(function (t) {\n return Object.getOwnPropertyDescriptor(e, t).enumerable;\n })), n.push.apply(n, r);\n }\n return n;\n }\n function o(e) {\n for (var t = 1; t < arguments.length; t++) {\n var n = null != arguments[t] ? arguments[t] : {};\n t % 2 ? r(n, !0).forEach(function (t) {\n i(e, t, n[t]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(n)) : r(n).forEach(function (t) {\n Object.defineProperty(e, t, Object.getOwnPropertyDescriptor(n, t));\n });\n }\n return e;\n }\n function i(e, t, n) {\n return t in e ? Object.defineProperty(e, t, {\n value: n,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }) : e[t] = n, e;\n }\n var a = \"Sal was not initialised! Probably it is used in SSR.\",\n s = \"Your browser does not support IntersectionObserver!\\nGet a polyfill from here:\\nhttps://github.com/w3c/IntersectionObserver/tree/master/polyfill\",\n l = {\n rootMargin: \"0% 50%\",\n threshold: .5,\n animateClassName: \"sal-animate\",\n disabledClassName: \"sal-disabled\",\n enterEventName: \"sal:in\",\n exitEventName: \"sal:out\",\n selector: \"[data-sal]\",\n once: !0,\n disabled: !1\n },\n u = [],\n c = null,\n f = function (e, t) {\n var n = new CustomEvent(e, {\n bubbles: !0,\n detail: t\n });\n t.target.dispatchEvent(n);\n },\n d = function () {\n document.body.classList.add(l.disabledClassName);\n },\n b = function () {\n return l.disabled || \"function\" == typeof l.disabled && l.disabled();\n },\n p = function (e, t) {\n e.forEach(function (e) {\n e.intersectionRatio >= l.threshold ? (!function (e) {\n e.target.classList.add(l.animateClassName), f(l.enterEventName, e);\n }(e), l.once && t.unobserve(e.target)) : l.once || function (e) {\n e.target.classList.remove(l.animateClassName), f(l.exitEventName, e);\n }(e);\n });\n },\n m = function () {\n d(), c.disconnect(), c = null;\n },\n y = function () {\n document.body.classList.remove(l.disabledClassName), c = new IntersectionObserver(p, {\n rootMargin: l.rootMargin,\n threshold: l.threshold\n }), (u = [].filter.call(document.querySelectorAll(l.selector), function (e) {\n return !function (e) {\n return e.classList.contains(l.animateClassName);\n }(e, l.animateClassName);\n })).forEach(function (e) {\n return c.observe(e);\n });\n };\n t.default = function () {\n var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : l;\n if (e !== l && (l = o({}, l, {}, e)), \"undefined\" == typeof window) return console.warn(a), {\n elements: u,\n disable: m,\n enable: y\n };\n if (!window.IntersectionObserver) throw d(), Error(s);\n return b() ? d() : y(), {\n elements: u,\n disable: m,\n enable: y\n };\n };\n }, function (e, t, n) {}]).default;\n});","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.withPrefix = withPrefix;\nexports.withAssetPrefix = withAssetPrefix;\nexports.navigate = exports.default = void 0;\n\nvar _objectWithoutPropertiesLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutPropertiesLoose\"));\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inheritsLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inheritsLoose\"));\n\nvar _extends2 = _interopRequireDefault(require(\"@babel/runtime/helpers/extends\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _react = _interopRequireDefault(require(\"react\"));\n\nvar _reachRouter = require(\"@gatsbyjs/reach-router\");\n\nvar _utils = require(\"@gatsbyjs/reach-router/lib/utils\");\n\nvar _parsePath = require(\"./parse-path\");\n\nexports.parsePath = _parsePath.parsePath;\nvar _excluded = [\"to\", \"getProps\", \"onClick\", \"onMouseEnter\", \"activeClassName\", \"activeStyle\", \"innerRef\", \"partiallyActive\", \"state\", \"replace\", \"_location\"];\n\nvar isAbsolutePath = function isAbsolutePath(path) {\n return path === null || path === void 0 ? void 0 : path.startsWith(\"/\");\n};\n\nfunction withPrefix(path, prefix) {\n var _ref, _prefix;\n\n if (prefix === void 0) {\n prefix = getGlobalBasePrefix();\n }\n\n if (!isLocalLink(path)) {\n return path;\n }\n\n if (path.startsWith(\"./\") || path.startsWith(\"../\")) {\n return path;\n }\n\n var base = (_ref = (_prefix = prefix) !== null && _prefix !== void 0 ? _prefix : getGlobalPathPrefix()) !== null && _ref !== void 0 ? _ref : \"/\";\n return \"\" + (base !== null && base !== void 0 && base.endsWith(\"/\") ? base.slice(0, -1) : base) + (path.startsWith(\"/\") ? path : \"/\" + path);\n} // These global values are wrapped in typeof clauses to ensure the values exist.\n// This is especially problematic in unit testing of this component.\n\n\nvar getGlobalPathPrefix = function getGlobalPathPrefix() {\n return process.env.NODE_ENV !== \"production\" ? typeof __PATH_PREFIX__ !== \"undefined\" ? __PATH_PREFIX__ : undefined : __PATH_PREFIX__;\n};\n\nvar getGlobalBasePrefix = function getGlobalBasePrefix() {\n return process.env.NODE_ENV !== \"production\" ? typeof __BASE_PATH__ !== \"undefined\" ? __BASE_PATH__ : undefined : __BASE_PATH__;\n};\n\nvar isLocalLink = function isLocalLink(path) {\n return path && !path.startsWith(\"http://\") && !path.startsWith(\"https://\") && !path.startsWith(\"//\");\n};\n\nfunction withAssetPrefix(path) {\n return withPrefix(path, getGlobalPathPrefix());\n}\n\nfunction absolutify(path, current) {\n // If it's already absolute, return as-is\n if (isAbsolutePath(path)) {\n return path;\n }\n\n return (0, _utils.resolve)(path, current);\n}\n\nvar rewriteLinkPath = function rewriteLinkPath(path, relativeTo) {\n if (typeof path === \"number\") {\n return path;\n }\n\n if (!isLocalLink(path)) {\n return path;\n }\n\n return isAbsolutePath(path) ? withPrefix(path) : absolutify(path, relativeTo);\n};\n\nvar NavLinkPropTypes = {\n activeClassName: _propTypes.default.string,\n activeStyle: _propTypes.default.object,\n partiallyActive: _propTypes.default.bool\n}; // Set up IntersectionObserver\n\nvar createIntersectionObserver = function createIntersectionObserver(el, cb) {\n var io = new window.IntersectionObserver(function (entries) {\n entries.forEach(function (entry) {\n if (el === entry.target) {\n // Check if element is within viewport, remove listener, destroy observer, and run link callback.\n // MSEdge doesn't currently support isIntersecting, so also test for an intersectionRatio > 0\n if (entry.isIntersecting || entry.intersectionRatio > 0) {\n io.unobserve(el);\n io.disconnect();\n cb();\n }\n }\n });\n }); // Add element to the observer\n\n io.observe(el);\n return {\n instance: io,\n el: el\n };\n};\n\nfunction GatsbyLinkLocationWrapper(props) {\n return /*#__PURE__*/_react.default.createElement(_reachRouter.Location, null, function (_ref2) {\n var location = _ref2.location;\n return /*#__PURE__*/_react.default.createElement(GatsbyLink, (0, _extends2.default)({}, props, {\n _location: location\n }));\n });\n}\n\nvar GatsbyLink = /*#__PURE__*/function (_React$Component) {\n (0, _inheritsLoose2.default)(GatsbyLink, _React$Component);\n\n function GatsbyLink(props) {\n var _this;\n\n _this = _React$Component.call(this, props) || this; // Default to no support for IntersectionObserver\n\n _this.defaultGetProps = function (_ref3) {\n var isPartiallyCurrent = _ref3.isPartiallyCurrent,\n isCurrent = _ref3.isCurrent;\n\n if (_this.props.partiallyActive ? isPartiallyCurrent : isCurrent) {\n return {\n className: [_this.props.className, _this.props.activeClassName].filter(Boolean).join(\" \"),\n style: (0, _extends2.default)({}, _this.props.style, _this.props.activeStyle)\n };\n }\n\n return null;\n };\n\n var IOSupported = false;\n\n if (typeof window !== \"undefined\" && window.IntersectionObserver) {\n IOSupported = true;\n }\n\n _this.state = {\n IOSupported: IOSupported\n };\n _this.handleRef = _this.handleRef.bind((0, _assertThisInitialized2.default)(_this));\n return _this;\n }\n\n var _proto = GatsbyLink.prototype;\n\n _proto._prefetch = function _prefetch() {\n var currentPath = window.location.pathname; // reach router should have the correct state\n\n if (this.props._location && this.props._location.pathname) {\n currentPath = this.props._location.pathname;\n }\n\n var rewrittenPath = rewriteLinkPath(this.props.to, currentPath);\n var newPathName = (0, _parsePath.parsePath)(rewrittenPath).pathname; // Prefech is used to speed up next navigations. When you use it on the current navigation,\n // there could be a race-condition where Chrome uses the stale data instead of waiting for the network to complete\n\n if (currentPath !== newPathName) {\n ___loader.enqueue(newPathName);\n }\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps, prevState) {\n // Preserve non IO functionality if no support\n if (this.props.to !== prevProps.to && !this.state.IOSupported) {\n this._prefetch();\n }\n };\n\n _proto.componentDidMount = function componentDidMount() {\n // Preserve non IO functionality if no support\n if (!this.state.IOSupported) {\n this._prefetch();\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n if (!this.io) {\n return;\n }\n\n var _this$io = this.io,\n instance = _this$io.instance,\n el = _this$io.el;\n instance.unobserve(el);\n instance.disconnect();\n };\n\n _proto.handleRef = function handleRef(ref) {\n var _this2 = this;\n\n if (this.props.innerRef && this.props.innerRef.hasOwnProperty(\"current\")) {\n this.props.innerRef.current = ref;\n } else if (this.props.innerRef) {\n this.props.innerRef(ref);\n }\n\n if (this.state.IOSupported && ref) {\n // If IO supported and element reference found, setup Observer functionality\n this.io = createIntersectionObserver(ref, function () {\n _this2._prefetch();\n });\n }\n };\n\n _proto.render = function render() {\n var _this3 = this;\n\n var _this$props = this.props,\n to = _this$props.to,\n _this$props$getProps = _this$props.getProps,\n getProps = _this$props$getProps === void 0 ? this.defaultGetProps : _this$props$getProps,\n _onClick = _this$props.onClick,\n _onMouseEnter = _this$props.onMouseEnter,\n $activeClassName = _this$props.activeClassName,\n $activeStyle = _this$props.activeStyle,\n $innerRef = _this$props.innerRef,\n partiallyActive = _this$props.partiallyActive,\n state = _this$props.state,\n replace = _this$props.replace,\n _location = _this$props._location,\n rest = (0, _objectWithoutPropertiesLoose2.default)(_this$props, _excluded);\n\n if (process.env.NODE_ENV !== \"production\" && !isLocalLink(to)) {\n console.warn(\"External link \" + to + \" was detected in a Link component. Use the Link component only for internal links. See: https://gatsby.dev/internal-links\");\n }\n\n var prefixedTo = rewriteLinkPath(to, _location.pathname);\n\n if (!isLocalLink(prefixedTo)) {\n return /*#__PURE__*/_react.default.createElement(\"a\", (0, _extends2.default)({\n href: prefixedTo\n }, rest));\n }\n\n return /*#__PURE__*/_react.default.createElement(_reachRouter.Link, (0, _extends2.default)({\n to: prefixedTo,\n state: state,\n getProps: getProps,\n innerRef: this.handleRef,\n onMouseEnter: function onMouseEnter(e) {\n if (_onMouseEnter) {\n _onMouseEnter(e);\n }\n\n ___loader.hovering((0, _parsePath.parsePath)(prefixedTo).pathname);\n },\n onClick: function onClick(e) {\n if (_onClick) {\n _onClick(e);\n }\n\n if (e.button === 0 && // ignore right clicks\n !_this3.props.target && // let browser handle \"target=_blank\"\n !e.defaultPrevented && // onClick prevented default\n !e.metaKey && // ignore clicks with modifier keys...\n !e.altKey && !e.ctrlKey && !e.shiftKey) {\n e.preventDefault();\n var shouldReplace = replace;\n\n var isCurrent = encodeURI(prefixedTo) === _location.pathname;\n\n if (typeof replace !== \"boolean\" && isCurrent) {\n shouldReplace = true;\n } // Make sure the necessary scripts and data are\n // loaded before continuing.\n\n\n window.___navigate(prefixedTo, {\n state: state,\n replace: shouldReplace\n });\n }\n\n return true;\n }\n }, rest));\n };\n\n return GatsbyLink;\n}(_react.default.Component);\n\nGatsbyLink.propTypes = (0, _extends2.default)({}, NavLinkPropTypes, {\n onClick: _propTypes.default.func,\n to: _propTypes.default.string.isRequired,\n replace: _propTypes.default.bool,\n state: _propTypes.default.object\n});\n\nvar _default = /*#__PURE__*/_react.default.forwardRef(function (props, ref) {\n return /*#__PURE__*/_react.default.createElement(GatsbyLinkLocationWrapper, (0, _extends2.default)({\n innerRef: ref\n }, props));\n});\n\nexports.default = _default;\n\nvar navigate = function navigate(to, options) {\n window.___navigate(rewriteLinkPath(to, window.location.pathname), options);\n};\n\nexports.navigate = navigate;","\"use strict\";\n\nexports.__esModule = true;\nexports.parsePath = parsePath;\n\nfunction parsePath(path) {\n var pathname = path || \"/\";\n var search = \"\";\n var hash = \"\";\n var hashIndex = pathname.indexOf(\"#\");\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf(\"?\");\n\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === \"?\" ? \"\" : search,\n hash: hash === \"#\" ? \"\" : hash\n };\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.useScrollRestoration = exports.ScrollContext = void 0;\n\nvar _scrollHandler = require(\"./scroll-handler\");\n\nexports.ScrollContext = _scrollHandler.ScrollHandler;\n\nvar _useScrollRestoration = require(\"./use-scroll-restoration\");\n\nexports.useScrollRestoration = _useScrollRestoration.useScrollRestoration;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nexports.__esModule = true;\nexports.ScrollHandler = exports.ScrollContext = void 0;\n\nvar _assertThisInitialized2 = _interopRequireDefault(require(\"@babel/runtime/helpers/assertThisInitialized\"));\n\nvar _inheritsLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/inheritsLoose\"));\n\nvar React = _interopRequireWildcard(require(\"react\"));\n\nvar _propTypes = _interopRequireDefault(require(\"prop-types\"));\n\nvar _sessionStorage = require(\"./session-storage\");\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nvar ScrollContext = /*#__PURE__*/React.createContext(new _sessionStorage.SessionStorage());\nexports.ScrollContext = ScrollContext;\nScrollContext.displayName = \"GatsbyScrollContext\";\n\nvar ScrollHandler = /*#__PURE__*/function (_React$Component) {\n (0, _inheritsLoose2.default)(ScrollHandler, _React$Component);\n\n function ScrollHandler() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this._stateStorage = new _sessionStorage.SessionStorage();\n _this._isTicking = false;\n _this._latestKnownScrollY = 0;\n\n _this.scrollListener = function () {\n _this._latestKnownScrollY = window.scrollY;\n\n if (!_this._isTicking) {\n _this._isTicking = true;\n requestAnimationFrame(_this._saveScroll.bind((0, _assertThisInitialized2.default)(_this)));\n }\n };\n\n _this.windowScroll = function (position, prevProps) {\n if (_this.shouldUpdateScroll(prevProps, _this.props)) {\n window.scrollTo(0, position);\n }\n };\n\n _this.scrollToHash = function (hash, prevProps) {\n var node = document.getElementById(hash.substring(1));\n\n if (node && _this.shouldUpdateScroll(prevProps, _this.props)) {\n node.scrollIntoView();\n }\n };\n\n _this.shouldUpdateScroll = function (prevRouterProps, routerProps) {\n var shouldUpdateScroll = _this.props.shouldUpdateScroll;\n\n if (!shouldUpdateScroll) {\n return true;\n } // Hack to allow accessing this._stateStorage.\n\n\n return shouldUpdateScroll.call((0, _assertThisInitialized2.default)(_this), prevRouterProps, routerProps);\n };\n\n return _this;\n }\n\n var _proto = ScrollHandler.prototype;\n\n _proto._saveScroll = function _saveScroll() {\n var key = this.props.location.key || null;\n\n if (key) {\n this._stateStorage.save(this.props.location, key, this._latestKnownScrollY);\n }\n\n this._isTicking = false;\n };\n\n _proto.componentDidMount = function componentDidMount() {\n window.addEventListener(\"scroll\", this.scrollListener);\n var scrollPosition;\n var _this$props$location = this.props.location,\n key = _this$props$location.key,\n hash = _this$props$location.hash;\n\n if (key) {\n scrollPosition = this._stateStorage.read(this.props.location, key);\n }\n\n if (scrollPosition) {\n this.windowScroll(scrollPosition, undefined);\n } else if (hash) {\n this.scrollToHash(decodeURI(hash), undefined);\n }\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n window.removeEventListener(\"scroll\", this.scrollListener);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var _this$props$location2 = this.props.location,\n hash = _this$props$location2.hash,\n key = _this$props$location2.key;\n var scrollPosition;\n\n if (key) {\n scrollPosition = this._stateStorage.read(this.props.location, key);\n }\n /** There are two pieces of state: the browser url and\n * history state which keeps track of scroll position\n * Native behaviour prescribes that we ought to restore scroll position\n * when a user navigates back in their browser (this is the `POP` action)\n * Currently, reach router has a bug that prevents this at https://github.com/reach/router/issues/228\n * So we _always_ stick to the url as a source of truth — if the url\n * contains a hash, we scroll to it\n */\n\n\n if (hash) {\n this.scrollToHash(decodeURI(hash), prevProps);\n } else {\n this.windowScroll(scrollPosition, prevProps);\n }\n };\n\n _proto.render = function render() {\n return /*#__PURE__*/React.createElement(ScrollContext.Provider, {\n value: this._stateStorage\n }, this.props.children);\n };\n\n return ScrollHandler;\n}(React.Component);\n\nexports.ScrollHandler = ScrollHandler;\nScrollHandler.propTypes = {\n shouldUpdateScroll: _propTypes.default.func,\n children: _propTypes.default.element.isRequired,\n location: _propTypes.default.object.isRequired\n};","\"use strict\";\n\nexports.__esModule = true;\nexports.SessionStorage = void 0;\nvar STATE_KEY_PREFIX = \"@@scroll|\";\nvar GATSBY_ROUTER_SCROLL_STATE = \"___GATSBY_REACT_ROUTER_SCROLL\";\n\nvar SessionStorage = /*#__PURE__*/function () {\n function SessionStorage() {}\n\n var _proto = SessionStorage.prototype;\n\n _proto.read = function read(location, key) {\n var stateKey = this.getStateKey(location, key);\n\n try {\n var value = window.sessionStorage.getItem(stateKey);\n return value ? JSON.parse(value) : 0;\n } catch (e) {\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(\"[gatsby-react-router-scroll] Unable to access sessionStorage; sessionStorage is not available.\");\n }\n\n if (window && window[GATSBY_ROUTER_SCROLL_STATE] && window[GATSBY_ROUTER_SCROLL_STATE][stateKey]) {\n return window[GATSBY_ROUTER_SCROLL_STATE][stateKey];\n }\n\n return 0;\n }\n };\n\n _proto.save = function save(location, key, value) {\n var stateKey = this.getStateKey(location, key);\n var storedValue = JSON.stringify(value);\n\n try {\n window.sessionStorage.setItem(stateKey, storedValue);\n } catch (e) {\n if (window && window[GATSBY_ROUTER_SCROLL_STATE]) {\n window[GATSBY_ROUTER_SCROLL_STATE][stateKey] = JSON.parse(storedValue);\n } else {\n window[GATSBY_ROUTER_SCROLL_STATE] = {};\n window[GATSBY_ROUTER_SCROLL_STATE][stateKey] = JSON.parse(storedValue);\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n console.warn(\"[gatsby-react-router-scroll] Unable to save state in sessionStorage; sessionStorage is not available.\");\n }\n }\n };\n\n _proto.getStateKey = function getStateKey(location, key) {\n var stateKeyBase = \"\" + STATE_KEY_PREFIX + location.pathname;\n return key === null || typeof key === \"undefined\" ? stateKeyBase : stateKeyBase + \"|\" + key;\n };\n\n return SessionStorage;\n}();\n\nexports.SessionStorage = SessionStorage;","\"use strict\";\n\nexports.__esModule = true;\nexports.useScrollRestoration = useScrollRestoration;\n\nvar _scrollHandler = require(\"./scroll-handler\");\n\nvar _react = require(\"react\");\n\nvar _reachRouter = require(\"@gatsbyjs/reach-router\");\n\nfunction useScrollRestoration(identifier) {\n var location = (0, _reachRouter.useLocation)();\n var state = (0, _react.useContext)(_scrollHandler.ScrollContext);\n var ref = (0, _react.useRef)(null);\n (0, _react.useLayoutEffect)(function () {\n if (ref.current) {\n var position = state.read(location, identifier);\n ref.current.scrollTo(0, position || 0);\n }\n }, [location.key]);\n return {\n ref: ref,\n onScroll: function onScroll() {\n if (ref.current) {\n state.save(location, identifier, ref.current.scrollTop);\n }\n }\n };\n}","// prefer default export if available\nconst preferDefault = m => (m && m.default) || m\n\nexports.components = {\n \"component---src-pages-404-js\": () => import(\"./../../../src/pages/404.js\" /* webpackChunkName: \"component---src-pages-404-js\" */),\n \"component---src-pages-app-js\": () => import(\"./../../../src/pages/app.js\" /* webpackChunkName: \"component---src-pages-app-js\" */),\n \"component---src-pages-reset-password-js\": () => import(\"./../../../src/pages/reset-password.js\" /* webpackChunkName: \"component---src-pages-reset-password-js\" */),\n \"component---src-templates-news-js\": () => import(\"./../../../src/templates/news.js\" /* webpackChunkName: \"component---src-templates-news-js\" */),\n \"component---src-templates-page-js\": () => import(\"./../../../src/templates/page.js\" /* webpackChunkName: \"component---src-templates-page-js\" */),\n \"component---src-templates-resources-js\": () => import(\"./../../../src/templates/resources.js\" /* webpackChunkName: \"component---src-templates-resources-js\" */)\n}\n\n","module.exports = [{\n plugin: require('../plugins/gatsby-plugin-top-layout/gatsby-browser.js'),\n options: {\"plugins\":[]},\n },{\n plugin: require('../node_modules/gatsby-plugin-image/gatsby-browser.js'),\n options: {\"plugins\":[]},\n },{\n plugin: require('../node_modules/gatsby-plugin-manifest/gatsby-browser.js'),\n options: {\"plugins\":[],\"icon\":\"src/images/icon.png\",\"legacy\":true,\"theme_color_in_head\":true,\"cache_busting_mode\":\"query\",\"crossOrigin\":\"anonymous\",\"include_favicon\":true,\"cacheDigest\":\"ac15557c9e3ae80f8a734cabb9cc91be\"},\n },{\n plugin: require('../node_modules/gatsby-plugin-mdx/gatsby-browser.js'),\n options: {\"plugins\":[],\"extensions\":[\".mdx\"],\"defaultLayouts\":{},\"gatsbyRemarkPlugins\":[],\"lessBabel\":false,\"remarkPlugins\":[],\"rehypePlugins\":[],\"mediaTypes\":[\"text/markdown\",\"text/x-markdown\"],\"root\":\"/codebuild/output/src2431224849/src/ivorycc-website/frontend\",\"JSFrontmatterEngine\":false,\"engines\":{}},\n },{\n plugin: require('../node_modules/gatsby-plugin-scroll-reveal/gatsby-browser.js'),\n options: {\"plugins\":[],\"threshold\":0.4,\"once\":true,\"disable\":false,\"selector\":\"[data-sal]\",\"animateClassName\":\"sal-animate\",\"disabledClassName\":\"sal-disabled\",\"rootMargin\":\"0% 50%\",\"enterEventName\":\"sal:in\",\"exitEventName\":\"sal:out\"},\n }]\n","const plugins = require(`./api-runner-browser-plugins`)\nconst { getResourceURLsForPathname, loadPage, loadPageSync } =\n require(`./loader`).publicLoader\n\nexports.apiRunner = (api, args = {}, defaultReturn, argTransform) => {\n // Hooks for gatsby-cypress's API handler\n if (process.env.CYPRESS_SUPPORT) {\n if (window.___apiHandler) {\n window.___apiHandler(api)\n } else if (window.___resolvedAPIs) {\n window.___resolvedAPIs.push(api)\n } else {\n window.___resolvedAPIs = [api]\n }\n }\n\n let results = plugins.map(plugin => {\n if (!plugin.plugin[api]) {\n return undefined\n }\n\n args.getResourceURLsForPathname = getResourceURLsForPathname\n args.loadPage = loadPage\n args.loadPageSync = loadPageSync\n\n const result = plugin.plugin[api](args, plugin.options)\n if (result && argTransform) {\n args = argTransform({ args, result, plugin })\n }\n return result\n })\n\n // Filter out undefined results.\n results = results.filter(result => typeof result !== `undefined`)\n\n if (results.length > 0) {\n return results\n } else if (defaultReturn) {\n return [defaultReturn]\n } else {\n return []\n }\n}\n\nexports.apiRunnerAsync = (api, args, defaultReturn) =>\n plugins.reduce(\n (previous, next) =>\n next.plugin[api]\n ? previous.then(() => next.plugin[api](args, next.options))\n : previous,\n Promise.resolve()\n )\n","import mitt from \"mitt\"\n\nconst emitter = mitt()\nexport default emitter\n","// \n// An event handler can take an optional event argument\n// and should not return a value\n \n \n\n// An array of all currently registered event handlers for a type\n \n \n// A map of event types and their corresponding event handlers.\n \n \n \n \n\n/** Mitt: Tiny (~200b) functional event emitter / pubsub.\n * @name mitt\n * @returns {Mitt}\n */\nfunction mitt(all ) {\n\tall = all || Object.create(null);\n\n\treturn {\n\t\t/**\n\t\t * Register an event handler for the given type.\n\t\t *\n\t\t * @param {String} type\tType of event to listen for, or `\"*\"` for all events\n\t\t * @param {Function} handler Function to call in response to given event\n\t\t * @memberOf mitt\n\t\t */\n\t\ton: function on(type , handler ) {\n\t\t\t(all[type] || (all[type] = [])).push(handler);\n\t\t},\n\n\t\t/**\n\t\t * Remove an event handler for the given type.\n\t\t *\n\t\t * @param {String} type\tType of event to unregister `handler` from, or `\"*\"`\n\t\t * @param {Function} handler Handler function to remove\n\t\t * @memberOf mitt\n\t\t */\n\t\toff: function off(type , handler ) {\n\t\t\tif (all[type]) {\n\t\t\t\tall[type].splice(all[type].indexOf(handler) >>> 0, 1);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Invoke all handlers for the given type.\n\t\t * If present, `\"*\"` handlers are invoked after type-matched handlers.\n\t\t *\n\t\t * @param {String} type The event type to invoke\n\t\t * @param {Any} [evt] Any value (object is recommended and powerful), passed to each handler\n\t\t * @memberOf mitt\n\t\t */\n\t\temit: function emit(type , evt ) {\n\t\t\t(all[type] || []).slice().map(function (handler) { handler(evt); });\n\t\t\t(all['*'] || []).slice().map(function (handler) { handler(type, evt); });\n\t\t}\n\t};\n}\n\nexport default mitt;\n//# sourceMappingURL=mitt.es.js.map\n","export default path => {\n if (path === undefined) {\n return path\n }\n if (path === `/`) {\n return `/`\n }\n if (path.charAt(path.length - 1) === `/`) {\n return path.slice(0, -1)\n }\n return path\n}\n","import { pick } from \"@gatsbyjs/reach-router/lib/utils\"\nimport stripPrefix from \"./strip-prefix\"\nimport normalizePagePath from \"./normalize-page-path\"\nimport { maybeGetBrowserRedirect } from \"./redirect-utils.js\"\n\nconst pathCache = new Map()\nlet matchPaths = []\n\nconst trimPathname = rawPathname => {\n const pathname = decodeURIComponent(rawPathname)\n // Remove the pathPrefix from the pathname.\n const trimmedPathname = stripPrefix(\n pathname,\n decodeURIComponent(__BASE_PATH__)\n )\n // Remove any hashfragment\n .split(`#`)[0]\n // Remove search query\n .split(`?`)[0]\n\n return trimmedPathname\n}\n\nfunction absolutify(path) {\n // If it's already absolute, return as-is\n if (\n path.startsWith(`/`) ||\n path.startsWith(`https://`) ||\n path.startsWith(`http://`)\n ) {\n return path\n }\n // Calculate path relative to current location, adding a trailing slash to\n // match behavior of @reach/router\n return new URL(\n path,\n window.location.href + (window.location.href.endsWith(`/`) ? `` : `/`)\n ).pathname\n}\n\n/**\n * Set list of matchPaths\n *\n * @param {Array<{path: string, matchPath: string}>} value collection of matchPaths\n */\nexport const setMatchPaths = value => {\n matchPaths = value\n}\n\n/**\n * Return a matchpath url\n * if `match-paths.json` contains `{ \"/foo*\": \"/page1\", ...}`, then\n * `/foo?bar=far` => `/page1`\n *\n * @param {string} rawPathname A raw pathname\n * @return {string|null}\n */\nexport const findMatchPath = rawPathname => {\n const trimmedPathname = cleanPath(rawPathname)\n\n const pickPaths = matchPaths.map(({ path, matchPath }) => {\n return {\n path: matchPath,\n originalPath: path,\n }\n })\n\n const path = pick(pickPaths, trimmedPathname)\n\n if (path) {\n return normalizePagePath(path.route.originalPath)\n }\n\n return null\n}\n\n/**\n * Return a matchpath params from reach/router rules\n * if `match-paths.json` contains `{ \":bar/*foo\" }`, and the path is /baz/zaz/zoo\n * then it returns\n * { bar: baz, foo: zaz/zoo }\n *\n * @param {string} rawPathname A raw pathname\n * @return {object}\n */\nexport const grabMatchParams = rawPathname => {\n const trimmedPathname = cleanPath(rawPathname)\n\n const pickPaths = matchPaths.map(({ path, matchPath }) => {\n return {\n path: matchPath,\n originalPath: path,\n }\n })\n\n const path = pick(pickPaths, trimmedPathname)\n\n if (path) {\n return path.params\n }\n\n return {}\n}\n\n// Given a raw URL path, returns the cleaned version of it (trim off\n// `#` and query params), or if it matches an entry in\n// `match-paths.json`, its matched path is returned\n//\n// E.g. `/foo?bar=far` => `/foo`\n//\n// Or if `match-paths.json` contains `{ \"/foo*\": \"/page1\", ...}`, then\n// `/foo?bar=far` => `/page1`\nexport const findPath = rawPathname => {\n const trimmedPathname = trimPathname(absolutify(rawPathname))\n if (pathCache.has(trimmedPathname)) {\n return pathCache.get(trimmedPathname)\n }\n\n const redirect = maybeGetBrowserRedirect(rawPathname)\n if (redirect) {\n return findPath(redirect.toPath)\n }\n\n let foundPath = findMatchPath(trimmedPathname)\n\n if (!foundPath) {\n foundPath = cleanPath(rawPathname)\n }\n\n pathCache.set(trimmedPathname, foundPath)\n\n return foundPath\n}\n\n/**\n * Clean a url and converts /index.html => /\n * E.g. `/foo?bar=far` => `/foo`\n *\n * @param {string} rawPathname A raw pathname\n * @return {string}\n */\nexport const cleanPath = rawPathname => {\n const trimmedPathname = trimPathname(absolutify(rawPathname))\n\n let foundPath = trimmedPathname\n if (foundPath === `/index.html`) {\n foundPath = `/`\n }\n\n foundPath = normalizePagePath(foundPath)\n\n return foundPath\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport Link, {\n withPrefix,\n withAssetPrefix,\n navigate,\n push,\n replace,\n navigateTo,\n parsePath,\n} from \"gatsby-link\"\nimport { useScrollRestoration } from \"gatsby-react-router-scroll\"\nimport PageRenderer from \"./public-page-renderer\"\nimport loader from \"./loader\"\n\nconst prefetchPathname = loader.enqueue\n\nconst StaticQueryContext = React.createContext({})\n\nfunction StaticQueryDataRenderer({ staticQueryData, data, query, render }) {\n const finalData = data\n ? data.data\n : staticQueryData[query] && staticQueryData[query].data\n\n return (\n \n {finalData && render(finalData)}\n {!finalData &&
Loading (StaticQuery)
}\n
\n )\n}\n\nconst StaticQuery = props => {\n const { data, query, render, children } = props\n\n return (\n \n {staticQueryData => (\n \n )}\n \n )\n}\n\nconst useStaticQuery = query => {\n if (\n typeof React.useContext !== `function` &&\n process.env.NODE_ENV === `development`\n ) {\n throw new Error(\n `You're likely using a version of React that doesn't support Hooks\\n` +\n `Please update React and ReactDOM to 16.8.0 or later to use the useStaticQuery hook.`\n )\n }\n const context = React.useContext(StaticQueryContext)\n\n // query is a stringified number like `3303882` when wrapped with graphql, If a user forgets\n // to wrap the query in a grqphql, then casting it to a Number results in `NaN` allowing us to\n // catch the misuse of the API and give proper direction\n if (isNaN(Number(query))) {\n throw new Error(`useStaticQuery was called with a string but expects to be called using \\`graphql\\`. Try this:\n\nimport { useStaticQuery, graphql } from 'gatsby';\n\nuseStaticQuery(graphql\\`${query}\\`);\n`)\n }\n\n if (context[query]?.data) {\n return context[query].data\n } else {\n throw new Error(\n `The result of this StaticQuery could not be fetched.\\n\\n` +\n `This is likely a bug in Gatsby and if refreshing the page does not fix it, ` +\n `please open an issue in https://github.com/gatsbyjs/gatsby/issues`\n )\n }\n}\n\nStaticQuery.propTypes = {\n data: PropTypes.object,\n query: PropTypes.string.isRequired,\n render: PropTypes.func,\n children: PropTypes.func,\n}\n\nfunction graphql() {\n throw new Error(\n `It appears like Gatsby is misconfigured. Gatsby related \\`graphql\\` calls ` +\n `are supposed to only be evaluated at compile time, and then compiled away. ` +\n `Unfortunately, something went wrong and the query was left in the compiled code.\\n\\n` +\n `Unless your site has a complex or custom babel/Gatsby configuration this is likely a bug in Gatsby.`\n )\n}\n\nexport {\n Link,\n withAssetPrefix,\n withPrefix,\n graphql,\n parsePath,\n navigate,\n useScrollRestoration,\n StaticQueryContext,\n StaticQuery,\n PageRenderer,\n useStaticQuery,\n prefetchPathname,\n}\n","const support = function (feature) {\n if (typeof document === `undefined`) {\n return false\n }\n const fakeLink = document.createElement(`link`)\n try {\n if (fakeLink.relList && typeof fakeLink.relList.supports === `function`) {\n return fakeLink.relList.supports(feature)\n }\n } catch (err) {\n return false\n }\n return false\n}\n\nconst linkPrefetchStrategy = function (url, options) {\n return new Promise((resolve, reject) => {\n if (typeof document === `undefined`) {\n reject()\n return\n }\n\n const link = document.createElement(`link`)\n link.setAttribute(`rel`, `prefetch`)\n link.setAttribute(`href`, url)\n\n Object.keys(options).forEach(key => {\n link.setAttribute(key, options[key])\n })\n\n link.onload = resolve\n link.onerror = reject\n\n const parentElement =\n document.getElementsByTagName(`head`)[0] ||\n document.getElementsByName(`script`)[0].parentNode\n parentElement.appendChild(link)\n })\n}\n\nconst xhrPrefetchStrategy = function (url) {\n return new Promise((resolve, reject) => {\n const req = new XMLHttpRequest()\n req.open(`GET`, url, true)\n\n req.onload = () => {\n if (req.status === 200) {\n resolve()\n } else {\n reject()\n }\n }\n\n req.send(null)\n })\n}\n\nconst supportedPrefetchStrategy = support(`prefetch`)\n ? linkPrefetchStrategy\n : xhrPrefetchStrategy\n\nconst preFetched = {}\n\nconst prefetch = function (url, options) {\n return new Promise(resolve => {\n if (preFetched[url]) {\n resolve()\n return\n }\n\n supportedPrefetchStrategy(url, options)\n .then(() => {\n resolve()\n preFetched[url] = true\n })\n .catch(() => {}) // 404s are logged to the console anyway\n })\n}\n\nexport default prefetch\n","import prefetchHelper from \"./prefetch\"\nimport emitter from \"./emitter\"\nimport { setMatchPaths, findPath, findMatchPath } from \"./find-path\"\n\n/**\n * Available resource loading statuses\n */\nexport const PageResourceStatus = {\n /**\n * At least one of critical resources failed to load\n */\n Error: `error`,\n /**\n * Resources loaded successfully\n */\n Success: `success`,\n}\n\nconst preferDefault = m => (m && m.default) || m\n\nconst stripSurroundingSlashes = s => {\n s = s[0] === `/` ? s.slice(1) : s\n s = s.endsWith(`/`) ? s.slice(0, -1) : s\n return s\n}\n\nconst createPageDataUrl = path => {\n const fixedPath = path === `/` ? `index` : stripSurroundingSlashes(path)\n return `${__PATH_PREFIX__}/page-data/${fixedPath}/page-data.json`\n}\n\nfunction doFetch(url, method = `GET`) {\n return new Promise((resolve, reject) => {\n const req = new XMLHttpRequest()\n req.open(method, url, true)\n req.onreadystatechange = () => {\n if (req.readyState == 4) {\n resolve(req)\n }\n }\n req.send(null)\n })\n}\n\nconst doesConnectionSupportPrefetch = () => {\n if (\n `connection` in navigator &&\n typeof navigator.connection !== `undefined`\n ) {\n if ((navigator.connection.effectiveType || ``).includes(`2g`)) {\n return false\n }\n if (navigator.connection.saveData) {\n return false\n }\n }\n return true\n}\n\nconst toPageResources = (pageData, component = null) => {\n const page = {\n componentChunkName: pageData.componentChunkName,\n path: pageData.path,\n webpackCompilationHash: pageData.webpackCompilationHash,\n matchPath: pageData.matchPath,\n staticQueryHashes: pageData.staticQueryHashes,\n }\n\n return {\n component,\n json: pageData.result,\n page,\n }\n}\n\nexport class BaseLoader {\n constructor(loadComponent, matchPaths) {\n // Map of pagePath -> Page. Where Page is an object with: {\n // status: PageResourceStatus.Success || PageResourceStatus.Error,\n // payload: PageResources, // undefined if PageResourceStatus.Error\n // }\n // PageResources is {\n // component,\n // json: pageData.result,\n // page: {\n // componentChunkName,\n // path,\n // webpackCompilationHash,\n // staticQueryHashes\n // },\n // staticQueryResults\n // }\n this.pageDb = new Map()\n this.inFlightDb = new Map()\n this.staticQueryDb = {}\n this.pageDataDb = new Map()\n this.prefetchTriggered = new Set()\n this.prefetchCompleted = new Set()\n this.loadComponent = loadComponent\n setMatchPaths(matchPaths)\n }\n\n inFlightNetworkRequests = new Map()\n\n memoizedGet(url) {\n let inFlightPromise = this.inFlightNetworkRequests.get(url)\n\n if (!inFlightPromise) {\n inFlightPromise = doFetch(url, `GET`)\n this.inFlightNetworkRequests.set(url, inFlightPromise)\n }\n\n // Prefer duplication with then + catch over .finally to prevent problems in ie11 + firefox\n return inFlightPromise\n .then(response => {\n this.inFlightNetworkRequests.delete(url)\n return response\n })\n .catch(err => {\n this.inFlightNetworkRequests.delete(url)\n throw err\n })\n }\n\n setApiRunner(apiRunner) {\n this.apiRunner = apiRunner\n this.prefetchDisabled = apiRunner(`disableCorePrefetching`).some(a => a)\n }\n\n fetchPageDataJson(loadObj) {\n const { pagePath, retries = 0 } = loadObj\n const url = createPageDataUrl(pagePath)\n return this.memoizedGet(url).then(req => {\n const { status, responseText } = req\n\n // Handle 200\n if (status === 200) {\n try {\n const jsonPayload = JSON.parse(responseText)\n if (jsonPayload.path === undefined) {\n throw new Error(`not a valid pageData response`)\n }\n\n return Object.assign(loadObj, {\n status: PageResourceStatus.Success,\n payload: jsonPayload,\n })\n } catch (err) {\n // continue regardless of error\n }\n }\n\n // Handle 404\n if (status === 404 || status === 200) {\n // If the request was for a 404 page and it doesn't exist, we're done\n if (pagePath === `/404.html`) {\n return Object.assign(loadObj, {\n status: PageResourceStatus.Error,\n })\n }\n\n // Need some code here to cache the 404 request. In case\n // multiple loadPageDataJsons result in 404s\n return this.fetchPageDataJson(\n Object.assign(loadObj, { pagePath: `/404.html`, notFound: true })\n )\n }\n\n // handle 500 response (Unrecoverable)\n if (status === 500) {\n return Object.assign(loadObj, {\n status: PageResourceStatus.Error,\n })\n }\n\n // Handle everything else, including status === 0, and 503s. Should retry\n if (retries < 3) {\n return this.fetchPageDataJson(\n Object.assign(loadObj, { retries: retries + 1 })\n )\n }\n\n // Retried 3 times already, result is an error.\n return Object.assign(loadObj, {\n status: PageResourceStatus.Error,\n })\n })\n }\n\n loadPageDataJson(rawPath) {\n const pagePath = findPath(rawPath)\n if (this.pageDataDb.has(pagePath)) {\n const pageData = this.pageDataDb.get(pagePath)\n if (process.env.BUILD_STAGE !== `develop` || !pageData.stale) {\n return Promise.resolve(pageData)\n }\n }\n\n return this.fetchPageDataJson({ pagePath }).then(pageData => {\n this.pageDataDb.set(pagePath, pageData)\n\n return pageData\n })\n }\n\n findMatchPath(rawPath) {\n return findMatchPath(rawPath)\n }\n\n // TODO check all uses of this and whether they use undefined for page resources not exist\n loadPage(rawPath) {\n const pagePath = findPath(rawPath)\n if (this.pageDb.has(pagePath)) {\n const page = this.pageDb.get(pagePath)\n if (process.env.BUILD_STAGE !== `develop` || !page.payload.stale) {\n if (page.error) {\n return {\n error: page.error,\n status: page.status,\n }\n }\n\n return Promise.resolve(page.payload)\n }\n }\n\n if (this.inFlightDb.has(pagePath)) {\n return this.inFlightDb.get(pagePath)\n }\n\n const inFlightPromise = Promise.all([\n this.loadAppData(),\n this.loadPageDataJson(pagePath),\n ]).then(allData => {\n const result = allData[1]\n if (result.status === PageResourceStatus.Error) {\n return {\n status: PageResourceStatus.Error,\n }\n }\n\n let pageData = result.payload\n const { componentChunkName, staticQueryHashes = [] } = pageData\n\n const finalResult = {}\n\n const componentChunkPromise = this.loadComponent(componentChunkName).then(\n component => {\n finalResult.createdAt = new Date()\n let pageResources\n if (!component || component instanceof Error) {\n finalResult.status = PageResourceStatus.Error\n finalResult.error = component\n } else {\n finalResult.status = PageResourceStatus.Success\n if (result.notFound === true) {\n finalResult.notFound = true\n }\n pageData = Object.assign(pageData, {\n webpackCompilationHash: allData[0]\n ? allData[0].webpackCompilationHash\n : ``,\n })\n pageResources = toPageResources(pageData, component)\n }\n // undefined if final result is an error\n return pageResources\n }\n )\n\n const staticQueryBatchPromise = Promise.all(\n staticQueryHashes.map(staticQueryHash => {\n // Check for cache in case this static query result has already been loaded\n if (this.staticQueryDb[staticQueryHash]) {\n const jsonPayload = this.staticQueryDb[staticQueryHash]\n return { staticQueryHash, jsonPayload }\n }\n\n return this.memoizedGet(\n `${__PATH_PREFIX__}/page-data/sq/d/${staticQueryHash}.json`\n )\n .then(req => {\n const jsonPayload = JSON.parse(req.responseText)\n return { staticQueryHash, jsonPayload }\n })\n .catch(() => {\n throw new Error(\n `We couldn't load \"${__PATH_PREFIX__}/page-data/sq/d/${staticQueryHash}.json\"`\n )\n })\n })\n ).then(staticQueryResults => {\n const staticQueryResultsMap = {}\n\n staticQueryResults.forEach(({ staticQueryHash, jsonPayload }) => {\n staticQueryResultsMap[staticQueryHash] = jsonPayload\n this.staticQueryDb[staticQueryHash] = jsonPayload\n })\n\n return staticQueryResultsMap\n })\n\n return (\n Promise.all([componentChunkPromise, staticQueryBatchPromise])\n .then(([pageResources, staticQueryResults]) => {\n let payload\n if (pageResources) {\n payload = { ...pageResources, staticQueryResults }\n finalResult.payload = payload\n emitter.emit(`onPostLoadPageResources`, {\n page: payload,\n pageResources: payload,\n })\n }\n\n this.pageDb.set(pagePath, finalResult)\n\n if (finalResult.error) {\n return {\n error: finalResult.error,\n status: finalResult.status,\n }\n }\n\n return payload\n })\n // when static-query fail to load we throw a better error\n .catch(err => {\n return {\n error: err,\n status: PageResourceStatus.Error,\n }\n })\n )\n })\n\n inFlightPromise\n .then(() => {\n this.inFlightDb.delete(pagePath)\n })\n .catch(error => {\n this.inFlightDb.delete(pagePath)\n throw error\n })\n\n this.inFlightDb.set(pagePath, inFlightPromise)\n\n return inFlightPromise\n }\n\n // returns undefined if the page does not exists in cache\n loadPageSync(rawPath, options = {}) {\n const pagePath = findPath(rawPath)\n if (this.pageDb.has(pagePath)) {\n const pageData = this.pageDb.get(pagePath)\n\n if (pageData.payload) {\n return pageData.payload\n }\n\n if (options?.withErrorDetails) {\n return {\n error: pageData.error,\n status: pageData.status,\n }\n }\n }\n return undefined\n }\n\n shouldPrefetch(pagePath) {\n // Skip prefetching if we know user is on slow or constrained connection\n if (!doesConnectionSupportPrefetch()) {\n return false\n }\n\n // Check if the page exists.\n if (this.pageDb.has(pagePath)) {\n return false\n }\n\n return true\n }\n\n prefetch(pagePath) {\n if (!this.shouldPrefetch(pagePath)) {\n return false\n }\n\n // Tell plugins with custom prefetching logic that they should start\n // prefetching this path.\n if (!this.prefetchTriggered.has(pagePath)) {\n this.apiRunner(`onPrefetchPathname`, { pathname: pagePath })\n this.prefetchTriggered.add(pagePath)\n }\n\n // If a plugin has disabled core prefetching, stop now.\n if (this.prefetchDisabled) {\n return false\n }\n\n const realPath = findPath(pagePath)\n // Todo make doPrefetch logic cacheable\n // eslint-disable-next-line consistent-return\n this.doPrefetch(realPath).then(() => {\n if (!this.prefetchCompleted.has(pagePath)) {\n this.apiRunner(`onPostPrefetchPathname`, { pathname: pagePath })\n this.prefetchCompleted.add(pagePath)\n }\n })\n\n return true\n }\n\n doPrefetch(pagePath) {\n const pageDataUrl = createPageDataUrl(pagePath)\n return prefetchHelper(pageDataUrl, {\n crossOrigin: `anonymous`,\n as: `fetch`,\n }).then(() =>\n // This was just prefetched, so will return a response from\n // the cache instead of making another request to the server\n this.loadPageDataJson(pagePath)\n )\n }\n\n hovering(rawPath) {\n this.loadPage(rawPath)\n }\n\n getResourceURLsForPathname(rawPath) {\n const pagePath = findPath(rawPath)\n const page = this.pageDataDb.get(pagePath)\n if (page) {\n const pageResources = toPageResources(page.payload)\n\n return [\n ...createComponentUrls(pageResources.page.componentChunkName),\n createPageDataUrl(pagePath),\n ]\n } else {\n return null\n }\n }\n\n isPageNotFound(rawPath) {\n const pagePath = findPath(rawPath)\n const page = this.pageDb.get(pagePath)\n return !page || page.notFound\n }\n\n loadAppData(retries = 0) {\n return this.memoizedGet(`${__PATH_PREFIX__}/page-data/app-data.json`).then(\n req => {\n const { status, responseText } = req\n\n let appData\n\n if (status !== 200 && retries < 3) {\n // Retry 3 times incase of non-200 responses\n return this.loadAppData(retries + 1)\n }\n\n // Handle 200\n if (status === 200) {\n try {\n const jsonPayload = JSON.parse(responseText)\n if (jsonPayload.webpackCompilationHash === undefined) {\n throw new Error(`not a valid app-data response`)\n }\n\n appData = jsonPayload\n } catch (err) {\n // continue regardless of error\n }\n }\n\n return appData\n }\n )\n }\n}\n\nconst createComponentUrls = componentChunkName =>\n (window.___chunkMapping[componentChunkName] || []).map(\n chunk => __PATH_PREFIX__ + chunk\n )\n\nexport class ProdLoader extends BaseLoader {\n constructor(asyncRequires, matchPaths, pageData) {\n const loadComponent = chunkName => {\n if (!asyncRequires.components[chunkName]) {\n throw new Error(\n `We couldn't find the correct component chunk with the name ${chunkName}`\n )\n }\n\n return (\n asyncRequires.components[chunkName]()\n .then(preferDefault)\n // loader will handle the case when component is error\n .catch(err => err)\n )\n }\n\n super(loadComponent, matchPaths)\n\n if (pageData) {\n this.pageDataDb.set(pageData.path, {\n pagePath: pageData.path,\n payload: pageData,\n status: `success`,\n })\n }\n }\n\n doPrefetch(pagePath) {\n return super.doPrefetch(pagePath).then(result => {\n if (result.status !== PageResourceStatus.Success) {\n return Promise.resolve()\n }\n const pageData = result.payload\n const chunkName = pageData.componentChunkName\n const componentUrls = createComponentUrls(chunkName)\n return Promise.all(componentUrls.map(prefetchHelper)).then(() => pageData)\n })\n }\n\n loadPageDataJson(rawPath) {\n return super.loadPageDataJson(rawPath).then(data => {\n if (data.notFound) {\n // check if html file exist using HEAD request:\n // if it does we should navigate to it instead of showing 404\n return doFetch(rawPath, `HEAD`).then(req => {\n if (req.status === 200) {\n // page (.html file) actually exist (or we asked for 404 )\n // returning page resources status as errored to trigger\n // regular browser navigation to given page\n return {\n status: PageResourceStatus.Error,\n }\n }\n\n // if HEAD request wasn't 200, return notFound result\n // and show 404 page\n return data\n })\n }\n return data\n })\n }\n}\n\nlet instance\n\nexport const setLoader = _loader => {\n instance = _loader\n}\n\nexport const publicLoader = {\n enqueue: rawPath => instance.prefetch(rawPath),\n\n // Real methods\n getResourceURLsForPathname: rawPath =>\n instance.getResourceURLsForPathname(rawPath),\n loadPage: rawPath => instance.loadPage(rawPath),\n // TODO add deprecation to v4 so people use withErrorDetails and then we can remove in v5 and change default behaviour\n loadPageSync: (rawPath, options = {}) =>\n instance.loadPageSync(rawPath, options),\n prefetch: rawPath => instance.prefetch(rawPath),\n isPageNotFound: rawPath => instance.isPageNotFound(rawPath),\n hovering: rawPath => instance.hovering(rawPath),\n loadAppData: () => instance.loadAppData(),\n}\n\nexport default publicLoader\n\nexport function getStaticQueryResults() {\n if (instance) {\n return instance.staticQueryDb\n } else {\n return {}\n }\n}\n","import React, { createElement } from \"react\"\nimport PropTypes from \"prop-types\"\nimport { apiRunner } from \"./api-runner-browser\"\nimport { grabMatchParams } from \"./find-path\"\n\n// Renders page\nclass PageRenderer extends React.Component {\n render() {\n const props = {\n ...this.props,\n params: {\n ...grabMatchParams(this.props.location.pathname),\n ...this.props.pageResources.json.pageContext.__params,\n },\n }\n\n const pageElement = createElement(this.props.pageResources.component, {\n ...props,\n key: this.props.path || this.props.pageResources.page.path,\n })\n\n const wrappedPage = apiRunner(\n `wrapPageElement`,\n { element: pageElement, props },\n pageElement,\n ({ result }) => {\n return { element: result, props }\n }\n ).pop()\n\n return wrappedPage\n }\n}\n\nPageRenderer.propTypes = {\n location: PropTypes.object.isRequired,\n pageResources: PropTypes.object.isRequired,\n data: PropTypes.object,\n pageContext: PropTypes.object.isRequired,\n}\n\nexport default PageRenderer\n","// This is extracted to separate module because it's shared\n// between browser and SSR code\nexport const RouteAnnouncerProps = {\n id: `gatsby-announcer`,\n style: {\n position: `absolute`,\n top: 0,\n width: 1,\n height: 1,\n padding: 0,\n overflow: `hidden`,\n clip: `rect(0, 0, 0, 0)`,\n whiteSpace: `nowrap`,\n border: 0,\n },\n \"aria-live\": `assertive`,\n \"aria-atomic\": `true`,\n}\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\nimport loader, { PageResourceStatus } from \"./loader\"\nimport { maybeGetBrowserRedirect } from \"./redirect-utils.js\"\nimport { apiRunner } from \"./api-runner-browser\"\nimport emitter from \"./emitter\"\nimport { RouteAnnouncerProps } from \"./route-announcer-props\"\nimport { navigate as reachNavigate } from \"@gatsbyjs/reach-router\"\nimport { globalHistory } from \"@gatsbyjs/reach-router/lib/history\"\nimport { parsePath } from \"gatsby-link\"\n\nfunction maybeRedirect(pathname) {\n const redirect = maybeGetBrowserRedirect(pathname)\n const { hash, search } = window.location\n\n if (redirect != null) {\n window.___replace(redirect.toPath + search + hash)\n return true\n } else {\n return false\n }\n}\n\n// Catch unhandled chunk loading errors and force a restart of the app.\nlet nextRoute = ``\n\nwindow.addEventListener(`unhandledrejection`, event => {\n if (/loading chunk \\d* failed./i.test(event.reason)) {\n if (nextRoute) {\n window.location.pathname = nextRoute\n }\n }\n})\n\nconst onPreRouteUpdate = (location, prevLocation) => {\n if (!maybeRedirect(location.pathname)) {\n nextRoute = location.pathname\n apiRunner(`onPreRouteUpdate`, { location, prevLocation })\n }\n}\n\nconst onRouteUpdate = (location, prevLocation) => {\n if (!maybeRedirect(location.pathname)) {\n apiRunner(`onRouteUpdate`, { location, prevLocation })\n if (\n process.env.GATSBY_EXPERIMENTAL_QUERY_ON_DEMAND &&\n process.env.GATSBY_QUERY_ON_DEMAND_LOADING_INDICATOR === `true`\n ) {\n emitter.emit(`onRouteUpdate`, { location, prevLocation })\n }\n }\n}\n\nconst navigate = (to, options = {}) => {\n // Support forward/backward navigation with numbers\n // navigate(-2) (jumps back 2 history steps)\n // navigate(2) (jumps forward 2 history steps)\n if (typeof to === `number`) {\n globalHistory.navigate(to)\n return\n }\n\n const { pathname, search, hash } = parsePath(to)\n const redirect = maybeGetBrowserRedirect(pathname)\n\n // If we're redirecting, just replace the passed in pathname\n // to the one we want to redirect to.\n if (redirect) {\n to = redirect.toPath + search + hash\n }\n\n // If we had a service worker update, no matter the path, reload window and\n // reset the pathname whitelist\n if (window.___swUpdated) {\n window.location = pathname + search + hash\n return\n }\n\n // Start a timer to wait for a second before transitioning and showing a\n // loader in case resources aren't around yet.\n const timeoutId = setTimeout(() => {\n emitter.emit(`onDelayedLoadPageResources`, { pathname })\n apiRunner(`onRouteUpdateDelayed`, {\n location: window.location,\n })\n }, 1000)\n\n loader.loadPage(pathname).then(pageResources => {\n // If no page resources, then refresh the page\n // Do this, rather than simply `window.location.reload()`, so that\n // pressing the back/forward buttons work - otherwise when pressing\n // back, the browser will just change the URL and expect JS to handle\n // the change, which won't always work since it might not be a Gatsby\n // page.\n if (!pageResources || pageResources.status === PageResourceStatus.Error) {\n window.history.replaceState({}, ``, location.href)\n window.location = pathname\n clearTimeout(timeoutId)\n return\n }\n\n // If the loaded page has a different compilation hash to the\n // window, then a rebuild has occurred on the server. Reload.\n if (process.env.NODE_ENV === `production` && pageResources) {\n // window.___webpackCompilationHash gets set in production-app.js after navigationInit() is called\n // So on a direct visit of a page with a browser redirect this check is truthy and thus the codepath is hit\n // While the resource actually exists, but only too late\n // TODO: This should probably be fixed by setting ___webpackCompilationHash before navigationInit() is called\n if (\n pageResources.page.webpackCompilationHash !==\n window.___webpackCompilationHash\n ) {\n // Purge plugin-offline cache\n if (\n `serviceWorker` in navigator &&\n navigator.serviceWorker.controller !== null &&\n navigator.serviceWorker.controller.state === `activated`\n ) {\n navigator.serviceWorker.controller.postMessage({\n gatsbyApi: `clearPathResources`,\n })\n }\n\n window.location = pathname + search + hash\n }\n }\n reachNavigate(to, options)\n clearTimeout(timeoutId)\n })\n}\n\nfunction shouldUpdateScroll(prevRouterProps, { location }) {\n const { pathname, hash } = location\n const results = apiRunner(`shouldUpdateScroll`, {\n prevRouterProps,\n // `pathname` for backwards compatibility\n pathname,\n routerProps: { location },\n getSavedScrollPosition: args => [\n 0,\n // FIXME this is actually a big code smell, we should fix this\n // eslint-disable-next-line @babel/no-invalid-this\n this._stateStorage.read(args, args.key),\n ],\n })\n if (results.length > 0) {\n // Use the latest registered shouldUpdateScroll result, this allows users to override plugin's configuration\n // @see https://github.com/gatsbyjs/gatsby/issues/12038\n return results[results.length - 1]\n }\n\n if (prevRouterProps) {\n const {\n location: { pathname: oldPathname },\n } = prevRouterProps\n if (oldPathname === pathname) {\n // Scroll to element if it exists, if it doesn't, or no hash is provided,\n // scroll to top.\n return hash ? decodeURI(hash.slice(1)) : [0, 0]\n }\n }\n return true\n}\n\nfunction init() {\n // The \"scroll-behavior\" package expects the \"action\" to be on the location\n // object so let's copy it over.\n globalHistory.listen(args => {\n args.location.action = args.action\n })\n\n window.___push = to => navigate(to, { replace: false })\n window.___replace = to => navigate(to, { replace: true })\n window.___navigate = (to, options) => navigate(to, options)\n\n // Check for initial page-load redirect\n maybeRedirect(window.location.pathname)\n}\n\nclass RouteAnnouncer extends React.Component {\n constructor(props) {\n super(props)\n this.announcementRef = React.createRef()\n }\n\n componentDidUpdate(prevProps, nextProps) {\n requestAnimationFrame(() => {\n let pageName = `new page at ${this.props.location.pathname}`\n if (document.title) {\n pageName = document.title\n }\n const pageHeadings = document.querySelectorAll(`#gatsby-focus-wrapper h1`)\n if (pageHeadings && pageHeadings.length) {\n pageName = pageHeadings[0].textContent\n }\n const newAnnouncement = `Navigated to ${pageName}`\n if (this.announcementRef.current) {\n const oldAnnouncement = this.announcementRef.current.innerText\n if (oldAnnouncement !== newAnnouncement) {\n this.announcementRef.current.innerText = newAnnouncement\n }\n }\n })\n }\n\n render() {\n return
\n }\n}\n\nconst compareLocationProps = (prevLocation, nextLocation) => {\n if (prevLocation.href !== nextLocation.href) {\n return true\n }\n\n if (prevLocation?.state?.key !== nextLocation?.state?.key) {\n return true\n }\n\n return false\n}\n\n// Fire on(Pre)RouteUpdate APIs\nclass RouteUpdates extends React.Component {\n constructor(props) {\n super(props)\n onPreRouteUpdate(props.location, null)\n }\n\n componentDidMount() {\n onRouteUpdate(this.props.location, null)\n }\n\n shouldComponentUpdate(prevProps) {\n if (compareLocationProps(prevProps.location, this.props.location)) {\n onPreRouteUpdate(this.props.location, prevProps.location)\n return true\n }\n return false\n }\n\n componentDidUpdate(prevProps) {\n if (compareLocationProps(prevProps.location, this.props.location)) {\n onRouteUpdate(this.props.location, prevProps.location)\n }\n }\n\n render() {\n return (\n \n {this.props.children}\n \n \n )\n }\n}\n\nRouteUpdates.propTypes = {\n location: PropTypes.object.isRequired,\n}\n\nexport { init, shouldUpdateScroll, RouteUpdates, maybeGetBrowserRedirect }\n","// Pulled from react-compat\n// https://github.com/developit/preact-compat/blob/7c5de00e7c85e2ffd011bf3af02899b63f699d3a/src/index.js#L349\nfunction shallowDiffers(a, b) {\n for (var i in a) {\n if (!(i in b)) return true;\n }for (var _i in b) {\n if (a[_i] !== b[_i]) return true;\n }return false;\n}\n\nexport default (function (instance, nextProps, nextState) {\n return shallowDiffers(instance.props, nextProps) || shallowDiffers(instance.state, nextState);\n});","import React from \"react\"\nimport loader, { PageResourceStatus } from \"./loader\"\nimport shallowCompare from \"shallow-compare\"\n\nclass EnsureResources extends React.Component {\n constructor(props) {\n super()\n const { location, pageResources } = props\n this.state = {\n location: { ...location },\n pageResources:\n pageResources ||\n loader.loadPageSync(location.pathname, { withErrorDetails: true }),\n }\n }\n\n static getDerivedStateFromProps({ location }, prevState) {\n if (prevState.location.href !== location.href) {\n const pageResources = loader.loadPageSync(location.pathname, {\n withErrorDetails: true,\n })\n\n return {\n pageResources,\n location: { ...location },\n }\n }\n\n return {\n location: { ...location },\n }\n }\n\n loadResources(rawPath) {\n loader.loadPage(rawPath).then(pageResources => {\n if (pageResources && pageResources.status !== PageResourceStatus.Error) {\n this.setState({\n location: { ...window.location },\n pageResources,\n })\n } else {\n window.history.replaceState({}, ``, location.href)\n window.location = rawPath\n }\n })\n }\n\n shouldComponentUpdate(nextProps, nextState) {\n // Always return false if we're missing resources.\n if (!nextState.pageResources) {\n this.loadResources(nextProps.location.pathname)\n return false\n }\n\n if (\n process.env.BUILD_STAGE === `develop` &&\n nextState.pageResources.stale\n ) {\n this.loadResources(nextProps.location.pathname)\n return false\n }\n\n // Check if the component or json have changed.\n if (this.state.pageResources !== nextState.pageResources) {\n return true\n }\n if (\n this.state.pageResources.component !== nextState.pageResources.component\n ) {\n return true\n }\n\n if (this.state.pageResources.json !== nextState.pageResources.json) {\n return true\n }\n // Check if location has changed on a page using internal routing\n // via matchPath configuration.\n if (\n this.state.location.key !== nextState.location.key &&\n nextState.pageResources.page &&\n (nextState.pageResources.page.matchPath ||\n nextState.pageResources.page.path)\n ) {\n return true\n }\n return shallowCompare(this, nextProps, nextState)\n }\n\n render() {\n if (\n process.env.NODE_ENV !== `production` &&\n (!this.state.pageResources ||\n this.state.pageResources.status === PageResourceStatus.Error)\n ) {\n const message = `EnsureResources was not able to find resources for path: \"${this.props.location.pathname}\"\nThis typically means that an issue occurred building components for that path.\nRun \\`gatsby clean\\` to remove any cached elements.`\n if (this.state.pageResources?.error) {\n console.error(message)\n throw this.state.pageResources.error\n }\n\n throw new Error(message)\n }\n\n return this.props.children(this.state)\n }\n}\n\nexport default EnsureResources\n","import { apiRunner, apiRunnerAsync } from \"./api-runner-browser\"\nimport React from \"react\"\nimport ReactDOM from \"react-dom\"\nimport { Router, navigate, Location, BaseContext } from \"@gatsbyjs/reach-router\"\nimport { ScrollContext } from \"gatsby-react-router-scroll\"\nimport { StaticQueryContext } from \"gatsby\"\nimport {\n shouldUpdateScroll,\n init as navigationInit,\n RouteUpdates,\n} from \"./navigation\"\nimport emitter from \"./emitter\"\nimport PageRenderer from \"./page-renderer\"\nimport asyncRequires from \"$virtual/async-requires\"\nimport {\n setLoader,\n ProdLoader,\n publicLoader,\n PageResourceStatus,\n getStaticQueryResults,\n} from \"./loader\"\nimport EnsureResources from \"./ensure-resources\"\nimport stripPrefix from \"./strip-prefix\"\n\n// Generated during bootstrap\nimport matchPaths from \"$virtual/match-paths.json\"\n\nconst loader = new ProdLoader(asyncRequires, matchPaths, window.pageData)\nsetLoader(loader)\nloader.setApiRunner(apiRunner)\n\nwindow.asyncRequires = asyncRequires\nwindow.___emitter = emitter\nwindow.___loader = publicLoader\n\nnavigationInit()\n\napiRunnerAsync(`onClientEntry`).then(() => {\n // Let plugins register a service worker. The plugin just needs\n // to return true.\n if (apiRunner(`registerServiceWorker`).filter(Boolean).length > 0) {\n require(`./register-service-worker`)\n }\n\n // In gatsby v2 if Router is used in page using matchPaths\n // paths need to contain full path.\n // For example:\n // - page have `/app/*` matchPath\n // - inside template user needs to use `/app/xyz` as path\n // Resetting `basepath`/`baseuri` keeps current behaviour\n // to not introduce breaking change.\n // Remove this in v3\n const RouteHandler = props => (\n \n \n \n )\n\n const DataContext = React.createContext({})\n\n class GatsbyRoot extends React.Component {\n render() {\n const { children } = this.props\n return (\n \n {({ location }) => (\n \n {({ pageResources, location }) => {\n const staticQueryResults = getStaticQueryResults()\n return (\n \n \n {children}\n \n \n )\n }}\n \n )}\n \n )\n }\n }\n\n class LocationHandler extends React.Component {\n render() {\n return (\n \n {({ pageResources, location }) => (\n \n \n \n \n \n \n \n )}\n \n )\n }\n }\n\n const { pagePath, location: browserLoc } = window\n\n // Explicitly call navigate if the canonical path (window.pagePath)\n // is different to the browser path (window.location.pathname). But\n // only if NONE of the following conditions hold:\n //\n // - The url matches a client side route (page.matchPath)\n // - it's a 404 page\n // - it's the offline plugin shell (/offline-plugin-app-shell-fallback/)\n if (\n pagePath &&\n __BASE_PATH__ + pagePath !== browserLoc.pathname &&\n !(\n loader.findMatchPath(stripPrefix(browserLoc.pathname, __BASE_PATH__)) ||\n pagePath === `/404.html` ||\n pagePath.match(/^\\/404\\/?$/) ||\n pagePath.match(/^\\/offline-plugin-app-shell-fallback\\/?$/)\n )\n ) {\n navigate(__BASE_PATH__ + pagePath + browserLoc.search + browserLoc.hash, {\n replace: true,\n })\n }\n\n publicLoader.loadPage(browserLoc.pathname).then(page => {\n if (!page || page.status === PageResourceStatus.Error) {\n const message = `page resources for ${browserLoc.pathname} not found. Not rendering React`\n\n // if the chunk throws an error we want to capture the real error\n // This should help with https://github.com/gatsbyjs/gatsby/issues/19618\n if (page && page.error) {\n console.error(message)\n throw page.error\n }\n\n throw new Error(message)\n }\n\n window.___webpackCompilationHash = page.page.webpackCompilationHash\n\n const SiteRoot = apiRunner(\n `wrapRootElement`,\n { element: },\n ,\n ({ result }) => {\n return { element: result }\n }\n ).pop()\n\n const App = function App() {\n const onClientEntryRanRef = React.useRef(false)\n\n React.useEffect(() => {\n if (!onClientEntryRanRef.current) {\n onClientEntryRanRef.current = true\n if (performance.mark) {\n performance.mark(`onInitialClientRender`)\n }\n\n apiRunner(`onInitialClientRender`)\n }\n }, [])\n\n return {SiteRoot}\n }\n\n const renderer = apiRunner(\n `replaceHydrateFunction`,\n undefined,\n ReactDOM.hydrateRoot ? ReactDOM.hydrateRoot : ReactDOM.hydrate\n )[0]\n\n function runRender() {\n const rootElement =\n typeof window !== `undefined`\n ? document.getElementById(`___gatsby`)\n : null\n\n if (renderer === ReactDOM.hydrateRoot) {\n renderer(rootElement, )\n } else {\n renderer(, rootElement)\n }\n }\n\n // https://github.com/madrobby/zepto/blob/b5ed8d607f67724788ec9ff492be297f64d47dfc/src/zepto.js#L439-L450\n // TODO remove IE 10 support\n const doc = document\n if (\n doc.readyState === `complete` ||\n (doc.readyState !== `loading` && !doc.documentElement.doScroll)\n ) {\n setTimeout(function () {\n runRender()\n }, 0)\n } else {\n const handler = function () {\n doc.removeEventListener(`DOMContentLoaded`, handler, false)\n window.removeEventListener(`load`, handler, false)\n\n runRender()\n }\n\n doc.addEventListener(`DOMContentLoaded`, handler, false)\n window.addEventListener(`load`, handler, false)\n }\n })\n})\n","import React from \"react\"\nimport PropTypes from \"prop-types\"\n\nimport loader from \"./loader\"\nimport InternalPageRenderer from \"./page-renderer\"\n\nconst ProdPageRenderer = ({ location }) => {\n const pageResources = loader.loadPageSync(location.pathname)\n if (!pageResources) {\n return null\n }\n return React.createElement(InternalPageRenderer, {\n location,\n pageResources,\n ...pageResources.json,\n })\n}\n\nProdPageRenderer.propTypes = {\n location: PropTypes.shape({\n pathname: PropTypes.string.isRequired,\n }).isRequired,\n}\n\nexport default ProdPageRenderer\n","const preferDefault = m => (m && m.default) || m\n\nif (process.env.BUILD_STAGE === `develop`) {\n module.exports = preferDefault(require(`./public-page-renderer-dev`))\n} else if (process.env.BUILD_STAGE === `build-javascript`) {\n module.exports = preferDefault(require(`./public-page-renderer-prod`))\n} else {\n module.exports = () => null\n}\n","exports.polyfill = Component => Component\n","import redirects from \"./redirects.json\"\n\n// Convert to a map for faster lookup in maybeRedirect()\n\nconst redirectMap = new Map()\nconst redirectIgnoreCaseMap = new Map()\n\nredirects.forEach(redirect => {\n if (redirect.ignoreCase) {\n redirectIgnoreCaseMap.set(redirect.fromPath, redirect)\n } else {\n redirectMap.set(redirect.fromPath, redirect)\n }\n})\n\nexport function maybeGetBrowserRedirect(pathname) {\n let redirect = redirectMap.get(pathname)\n if (!redirect) {\n redirect = redirectIgnoreCaseMap.get(pathname.toLowerCase())\n }\n return redirect\n}\n","import { apiRunner } from \"./api-runner-browser\"\n\nif (\n window.location.protocol !== `https:` &&\n window.location.hostname !== `localhost`\n) {\n console.error(\n `Service workers can only be used over HTTPS, or on localhost for development`\n )\n} else if (`serviceWorker` in navigator) {\n navigator.serviceWorker\n .register(`${__BASE_PATH__}/sw.js`)\n .then(function (reg) {\n reg.addEventListener(`updatefound`, () => {\n apiRunner(`onServiceWorkerUpdateFound`, { serviceWorker: reg })\n // The updatefound event implies that reg.installing is set; see\n // https://w3c.github.io/ServiceWorker/#service-worker-registration-updatefound-event\n const installingWorker = reg.installing\n console.log(`installingWorker`, installingWorker)\n installingWorker.addEventListener(`statechange`, () => {\n switch (installingWorker.state) {\n case `installed`:\n if (navigator.serviceWorker.controller) {\n // At this point, the old content will have been purged and the fresh content will\n // have been added to the cache.\n\n // We set a flag so Gatsby Link knows to refresh the page on next navigation attempt\n window.___swUpdated = true\n // We call the onServiceWorkerUpdateReady API so users can show update prompts.\n apiRunner(`onServiceWorkerUpdateReady`, { serviceWorker: reg })\n\n // If resources failed for the current page, reload.\n if (window.___failedResources) {\n console.log(`resources failed, SW updated - reloading`)\n window.location.reload()\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a \"Content is cached for offline use.\" message.\n console.log(`Content is now available offline!`)\n\n // Post to service worker that install is complete.\n // Delay to allow time for the event listener to be added --\n // otherwise fetch is called too soon and resources aren't cached.\n apiRunner(`onServiceWorkerInstalled`, { serviceWorker: reg })\n }\n break\n\n case `redundant`:\n console.error(`The installing service worker became redundant.`)\n apiRunner(`onServiceWorkerRedundant`, { serviceWorker: reg })\n break\n\n case `activated`:\n apiRunner(`onServiceWorkerActive`, { serviceWorker: reg })\n break\n }\n })\n })\n })\n .catch(function (e) {\n console.error(`Error during service worker registration:`, e)\n })\n}\n","/**\n * Remove a prefix from a string. Return the input string if the given prefix\n * isn't found.\n */\n\nexport default function stripPrefix(str, prefix = ``) {\n if (!prefix) {\n return str\n }\n\n if (str === prefix) {\n return `/`\n }\n\n if (str.startsWith(`${prefix}/`)) {\n return str.slice(prefix.length)\n }\n\n return str\n}\n","/* eslint-disable no-unused-expressions */\nimport { stripIndent } from \"common-tags\"\nimport camelCase from \"camelcase\"\nimport { IGatsbyImageData } from \".\"\n\nconst DEFAULT_PIXEL_DENSITIES = [0.25, 0.5, 1, 2]\nexport const DEFAULT_BREAKPOINTS = [750, 1080, 1366, 1920]\nexport const EVERY_BREAKPOINT = [\n 320, 654, 768, 1024, 1366, 1600, 1920, 2048, 2560, 3440, 3840, 4096,\n]\nconst DEFAULT_FLUID_WIDTH = 800\nconst DEFAULT_FIXED_WIDTH = 800\nconst DEFAULT_ASPECT_RATIO = 4 / 3\n\nexport type Fit = \"cover\" | \"fill\" | \"inside\" | \"outside\" | \"contain\"\n\nexport type Layout = \"fixed\" | \"fullWidth\" | \"constrained\"\nexport type ImageFormat = \"jpg\" | \"png\" | \"webp\" | \"avif\" | \"auto\" | \"\"\n\n/**\n * The minimal required reporter, as we don't want to import it from gatsby-cli\n */\nexport interface IReporter {\n warn(message: string): void\n}\n\nexport interface ISharpGatsbyImageArgs {\n layout?: Layout\n formats?: Array\n placeholder?: \"tracedSVG\" | \"dominantColor\" | \"blurred\" | \"none\"\n tracedSVGOptions?: Record\n width?: number\n height?: number\n aspectRatio?: number\n sizes?: string\n quality?: number\n transformOptions?: {\n fit?: Fit\n cropFocus?: number | string\n duotone?: {\n highlight: string\n shadow: string\n opacity?: number\n }\n grayscale?: boolean\n rotate?: number\n trim?: number\n }\n jpgOptions?: Record\n pngOptions?: Record\n webpOptions?: Record\n avifOptions?: Record\n blurredOptions?: { width?: number; toFormat?: ImageFormat }\n breakpoints?: Array\n backgroundColor?: string\n}\n\nexport interface IImageSizeArgs {\n width?: number\n height?: number\n layout?: Layout\n filename: string\n outputPixelDensities?: Array\n breakpoints?: Array\n fit?: Fit\n reporter?: IReporter\n sourceMetadata: { width: number; height: number }\n}\n\nexport interface IImageSizes {\n sizes: Array\n presentationWidth: number\n presentationHeight: number\n aspectRatio: number\n unscaledWidth: number\n}\n\nexport interface IImage {\n src: string\n width: number\n height: number\n format: ImageFormat\n}\n\nexport interface IGatsbyImageHelperArgs {\n pluginName: string\n generateImageSource: (\n filename: string,\n width: number,\n height: number,\n format: ImageFormat,\n fit?: Fit,\n options?: Record\n ) => IImage\n layout?: Layout\n formats?: Array\n filename: string\n placeholderURL?: string\n width?: number\n height?: number\n sizes?: string\n reporter?: IReporter\n sourceMetadata?: { width: number; height: number; format: ImageFormat }\n fit?: Fit\n options?: Record\n breakpoints?: Array\n backgroundColor?: string\n aspectRatio?: number\n}\n\nconst warn = (message: string): void => console.warn(message)\n\nconst sortNumeric = (a: number, b: number): number => a - b\n\nexport const getSizes = (width: number, layout: Layout): string | undefined => {\n switch (layout) {\n // If screen is wider than the max size, image width is the max size,\n // otherwise it's the width of the screen\n case `constrained`:\n return `(min-width: ${width}px) ${width}px, 100vw`\n\n // Image is always the same width, whatever the size of the screen\n case `fixed`:\n return `${width}px`\n\n // Image is always the width of the screen\n case `fullWidth`:\n return `100vw`\n\n default:\n return undefined\n }\n}\n\nexport const getSrcSet = (images: Array): string =>\n images.map(image => `${image.src} ${image.width}w`).join(`,\\n`)\n\nexport function formatFromFilename(filename: string): ImageFormat | undefined {\n const dot = filename.lastIndexOf(`.`)\n if (dot !== -1) {\n const ext = filename.substr(dot + 1)\n if (ext === `jpeg`) {\n return `jpg`\n }\n if (ext.length === 3 || ext.length === 4) {\n return ext as ImageFormat\n }\n }\n return undefined\n}\n\nexport function setDefaultDimensions(\n args: IGatsbyImageHelperArgs\n): IGatsbyImageHelperArgs {\n let {\n layout = `constrained`,\n width,\n height,\n sourceMetadata,\n breakpoints,\n aspectRatio,\n formats = [`auto`, `webp`],\n } = args\n formats = formats.map(format => format.toLowerCase() as ImageFormat)\n layout = camelCase(layout) as Layout\n\n if (width && height) {\n return { ...args, formats, layout, aspectRatio: width / height }\n }\n if (sourceMetadata.width && sourceMetadata.height && !aspectRatio) {\n aspectRatio = sourceMetadata.width / sourceMetadata.height\n }\n\n if (layout === `fullWidth`) {\n width = width || sourceMetadata.width || breakpoints[breakpoints.length - 1]\n height = height || Math.round(width / (aspectRatio || DEFAULT_ASPECT_RATIO))\n } else {\n if (!width) {\n if (height && aspectRatio) {\n width = height * aspectRatio\n } else if (sourceMetadata.width) {\n width = sourceMetadata.width\n } else if (height) {\n width = Math.round(height / DEFAULT_ASPECT_RATIO)\n } else {\n width = DEFAULT_FIXED_WIDTH\n }\n }\n\n if (aspectRatio && !height) {\n height = Math.round(width / aspectRatio)\n } else if (!aspectRatio) {\n aspectRatio = width / height\n }\n }\n return { ...args, width, height, aspectRatio, layout, formats }\n}\n\n/**\n * Use this for getting an image for the blurred placeholder. This ensures the\n * aspect ratio and crop match the main image\n */\nexport function getLowResolutionImageURL(\n args: IGatsbyImageHelperArgs,\n width = 20\n): string {\n args = setDefaultDimensions(args)\n const { generateImageSource, filename, aspectRatio } = args\n return generateImageSource(\n filename,\n width,\n Math.round(width / aspectRatio),\n args.sourceMetadata.format || `jpg`,\n args.fit,\n args.options\n )?.src\n}\n\nexport function generateImageData(\n args: IGatsbyImageHelperArgs\n): IGatsbyImageData {\n args = setDefaultDimensions(args)\n\n let {\n pluginName,\n sourceMetadata,\n generateImageSource,\n layout,\n fit,\n options,\n width,\n height,\n filename,\n reporter = { warn },\n backgroundColor,\n placeholderURL,\n } = args\n\n if (!pluginName) {\n reporter.warn(\n `[gatsby-plugin-image] \"generateImageData\" was not passed a plugin name`\n )\n }\n\n if (typeof generateImageSource !== `function`) {\n throw new Error(`generateImageSource must be a function`)\n }\n\n if (!sourceMetadata || (!sourceMetadata.width && !sourceMetadata.height)) {\n // No metadata means we let the CDN handle max size etc, aspect ratio etc\n sourceMetadata = {\n width,\n height,\n format: sourceMetadata?.format || formatFromFilename(filename) || `auto`,\n }\n } else if (!sourceMetadata.format) {\n sourceMetadata.format = formatFromFilename(filename)\n }\n\n const formats = new Set(args.formats)\n\n if (formats.size === 0 || formats.has(`auto`) || formats.has(``)) {\n formats.delete(`auto`)\n formats.delete(``)\n formats.add(sourceMetadata.format)\n }\n\n if (formats.has(`jpg`) && formats.has(`png`)) {\n reporter.warn(\n `[${pluginName}] Specifying both 'jpg' and 'png' formats is not supported. Using 'auto' instead`\n )\n if (sourceMetadata.format === `jpg`) {\n formats.delete(`png`)\n } else {\n formats.delete(`jpg`)\n }\n }\n\n const imageSizes = calculateImageSizes({ ...args, sourceMetadata })\n\n const result: IGatsbyImageData[\"images\"] = {\n sources: [],\n }\n\n let sizes = args.sizes\n if (!sizes) {\n sizes = getSizes(imageSizes.presentationWidth, layout)\n }\n\n formats.forEach(format => {\n const images = imageSizes.sizes\n .map(size => {\n const imageSrc = generateImageSource(\n filename,\n size,\n Math.round(size / imageSizes.aspectRatio),\n format,\n fit,\n options\n )\n if (\n !imageSrc?.width ||\n !imageSrc.height ||\n !imageSrc.src ||\n !imageSrc.format\n ) {\n reporter.warn(\n `[${pluginName}] The resolver for image ${filename} returned an invalid value.`\n )\n return undefined\n }\n return imageSrc\n })\n .filter(Boolean)\n\n if (format === `jpg` || format === `png` || format === `auto`) {\n const unscaled =\n images.find(img => img.width === imageSizes.unscaledWidth) || images[0]\n\n if (unscaled) {\n result.fallback = {\n src: unscaled.src,\n srcSet: getSrcSet(images),\n sizes,\n }\n }\n } else {\n result.sources?.push({\n srcSet: getSrcSet(images),\n sizes,\n type: `image/${format}`,\n })\n }\n })\n\n const imageProps: Partial = {\n images: result,\n layout,\n backgroundColor,\n }\n\n if (placeholderURL) {\n imageProps.placeholder = { fallback: placeholderURL }\n }\n\n switch (layout) {\n case `fixed`:\n imageProps.width = imageSizes.presentationWidth\n imageProps.height = imageSizes.presentationHeight\n break\n\n case `fullWidth`:\n imageProps.width = 1\n imageProps.height = 1 / imageSizes.aspectRatio\n break\n\n case `constrained`:\n imageProps.width = args.width || imageSizes.presentationWidth || 1\n imageProps.height = (imageProps.width || 1) / imageSizes.aspectRatio\n }\n\n return imageProps as IGatsbyImageData\n}\n\nconst dedupeAndSortDensities = (values: Array): Array =>\n Array.from(new Set([1, ...values])).sort(sortNumeric)\n\nexport function calculateImageSizes(args: IImageSizeArgs): IImageSizes {\n const {\n width,\n height,\n filename,\n layout = `constrained`,\n sourceMetadata: imgDimensions,\n reporter = { warn },\n breakpoints = DEFAULT_BREAKPOINTS,\n } = args\n\n // check that all dimensions provided are positive\n const userDimensions = { width, height }\n const erroneousUserDimensions = Object.entries(userDimensions).filter(\n ([_, size]) => typeof size === `number` && size < 1\n )\n if (erroneousUserDimensions.length) {\n throw new Error(\n `Specified dimensions for images must be positive numbers (> 0). Problem dimensions you have are ${erroneousUserDimensions\n .map(dim => dim.join(`: `))\n .join(`, `)}`\n )\n }\n\n if (layout === `fixed`) {\n return fixedImageSizes(args)\n } else if (layout === `constrained`) {\n return responsiveImageSizes(args)\n } else if (layout === `fullWidth`) {\n return responsiveImageSizes({ breakpoints, ...args })\n } else {\n reporter.warn(\n `No valid layout was provided for the image at ${filename}. Valid image layouts are fixed, fullWidth, and constrained. Found ${layout}`\n )\n return {\n sizes: [imgDimensions.width],\n presentationWidth: imgDimensions.width,\n presentationHeight: imgDimensions.height,\n aspectRatio: imgDimensions.width / imgDimensions.height,\n unscaledWidth: imgDimensions.width,\n }\n }\n}\nexport function fixedImageSizes({\n filename,\n sourceMetadata: imgDimensions,\n width,\n height,\n fit = `cover`,\n outputPixelDensities = DEFAULT_PIXEL_DENSITIES,\n reporter = { warn },\n}: IImageSizeArgs): IImageSizes {\n let aspectRatio = imgDimensions.width / imgDimensions.height\n // Sort, dedupe and ensure there's a 1\n const densities = dedupeAndSortDensities(outputPixelDensities)\n\n // If both are provided then we need to check the fit\n if (width && height) {\n const calculated = getDimensionsAndAspectRatio(imgDimensions, {\n width,\n height,\n fit,\n })\n width = calculated.width\n height = calculated.height\n aspectRatio = calculated.aspectRatio\n }\n\n if (!width) {\n if (!height) {\n width = DEFAULT_FIXED_WIDTH\n } else {\n width = Math.round(height * aspectRatio)\n }\n } else if (!height) {\n height = Math.round(width / aspectRatio)\n }\n\n const originalWidth = width // will use this for presentationWidth, don't want to lose it\n const isTopSizeOverriden =\n imgDimensions.width < width || imgDimensions.height < (height as number)\n\n // If the image is smaller than requested, warn the user that it's being processed as such\n // print out this message with the necessary information before we overwrite it for sizing\n if (isTopSizeOverriden) {\n const fixedDimension = imgDimensions.width < width ? `width` : `height`\n reporter.warn(stripIndent`\n The requested ${fixedDimension} \"${\n fixedDimension === `width` ? width : height\n }px\" for the image ${filename} was larger than the actual image ${fixedDimension} of ${\n imgDimensions[fixedDimension]\n }px. If possible, replace the current image with a larger one.`)\n\n if (fixedDimension === `width`) {\n width = imgDimensions.width\n height = Math.round(width / aspectRatio)\n } else {\n height = imgDimensions.height\n width = height * aspectRatio\n }\n }\n\n const sizes = densities\n .filter(size => size >= 1) // remove smaller densities because fixed images don't need them\n .map(density => Math.round(density * (width as number)))\n .filter(size => size <= imgDimensions.width)\n\n return {\n sizes,\n aspectRatio,\n presentationWidth: originalWidth,\n presentationHeight: Math.round(originalWidth / aspectRatio),\n unscaledWidth: width,\n }\n}\n\nexport function responsiveImageSizes({\n sourceMetadata: imgDimensions,\n width,\n height,\n fit = `cover`,\n outputPixelDensities = DEFAULT_PIXEL_DENSITIES,\n breakpoints,\n layout,\n}: IImageSizeArgs): IImageSizes {\n let sizes\n let aspectRatio = imgDimensions.width / imgDimensions.height\n // Sort, dedupe and ensure there's a 1\n const densities = dedupeAndSortDensities(outputPixelDensities)\n\n // If both are provided then we need to check the fit\n if (width && height) {\n const calculated = getDimensionsAndAspectRatio(imgDimensions, {\n width,\n height,\n fit,\n })\n width = calculated.width\n height = calculated.height\n aspectRatio = calculated.aspectRatio\n }\n\n // Case 1: width of height were passed in, make sure it isn't larger than the actual image\n width = width && Math.min(width, imgDimensions.width)\n height = height && Math.min(height, imgDimensions.height)\n\n // Case 2: neither width or height were passed in, use default size\n if (!width && !height) {\n width = Math.min(DEFAULT_FLUID_WIDTH, imgDimensions.width)\n height = width / aspectRatio\n }\n\n // if it still hasn't been found, calculate width from the derived height.\n // TS isn't smart enough to realise the type for height has been narrowed here\n if (!width) {\n width = (height as number) * aspectRatio\n }\n\n const originalWidth = width\n const isTopSizeOverriden =\n imgDimensions.width < width || imgDimensions.height < (height as number)\n if (isTopSizeOverriden) {\n width = imgDimensions.width\n height = imgDimensions.height\n }\n\n width = Math.round(width)\n\n if (breakpoints?.length > 0) {\n sizes = breakpoints.filter(size => size <= imgDimensions.width)\n\n // If a larger breakpoint has been filtered-out, add the actual image width instead\n if (\n sizes.length < breakpoints.length &&\n !sizes.includes(imgDimensions.width)\n ) {\n sizes.push(imgDimensions.width)\n }\n } else {\n sizes = densities.map(density => Math.round(density * (width as number)))\n sizes = sizes.filter(size => size <= imgDimensions.width)\n }\n\n // ensure that the size passed in is included in the final output\n if (layout === `constrained` && !sizes.includes(width)) {\n sizes.push(width)\n }\n sizes = sizes.sort(sortNumeric)\n return {\n sizes,\n aspectRatio,\n presentationWidth: originalWidth,\n presentationHeight: Math.round(originalWidth / aspectRatio),\n unscaledWidth: width,\n }\n}\n\nexport function getDimensionsAndAspectRatio(\n dimensions,\n options\n): { width: number; height: number; aspectRatio: number } {\n // Calculate the eventual width/height of the image.\n const imageAspectRatio = dimensions.width / dimensions.height\n\n let width = options.width\n let height = options.height\n\n switch (options.fit) {\n case `fill`: {\n width = options.width ? options.width : dimensions.width\n height = options.height ? options.height : dimensions.height\n break\n }\n case `inside`: {\n const widthOption = options.width\n ? options.width\n : Number.MAX_SAFE_INTEGER\n const heightOption = options.height\n ? options.height\n : Number.MAX_SAFE_INTEGER\n\n width = Math.min(widthOption, Math.round(heightOption * imageAspectRatio))\n height = Math.min(\n heightOption,\n Math.round(widthOption / imageAspectRatio)\n )\n break\n }\n case `outside`: {\n const widthOption = options.width ? options.width : 0\n const heightOption = options.height ? options.height : 0\n\n width = Math.max(widthOption, Math.round(heightOption * imageAspectRatio))\n height = Math.max(\n heightOption,\n Math.round(widthOption / imageAspectRatio)\n )\n break\n }\n\n default: {\n if (options.width && !options.height) {\n width = options.width\n height = Math.round(options.width / imageAspectRatio)\n }\n\n if (options.height && !options.width) {\n width = Math.round(options.height * imageAspectRatio)\n height = options.height\n }\n }\n }\n\n return {\n width,\n height,\n aspectRatio: width / height,\n }\n}\n","/* eslint-disable no-unused-expressions */\nimport {\n useState,\n CSSProperties,\n useEffect,\n HTMLAttributes,\n ImgHTMLAttributes,\n ReactEventHandler,\n SetStateAction,\n Dispatch,\n RefObject,\n} from \"react\"\nimport { Node } from \"gatsby\"\nimport { PlaceholderProps } from \"./placeholder\"\nimport { MainImageProps } from \"./main-image\"\nimport type { IGatsbyImageData } from \"./gatsby-image.browser\"\nimport {\n IGatsbyImageHelperArgs,\n generateImageData,\n Layout,\n EVERY_BREAKPOINT,\n IImage,\n ImageFormat,\n} from \"../image-utils\"\nconst imageCache = new Set()\n\n// Native lazy-loading support: https://addyosmani.com/blog/lazy-loading/\nexport const hasNativeLazyLoadSupport = (): boolean =>\n typeof HTMLImageElement !== `undefined` &&\n `loading` in HTMLImageElement.prototype\n\nexport function gatsbyImageIsInstalled(): boolean {\n return typeof GATSBY___IMAGE !== `undefined` && GATSBY___IMAGE\n}\n\nexport function storeImageloaded(cacheKey?: string): void {\n if (cacheKey) {\n imageCache.add(cacheKey)\n }\n}\n\nexport function hasImageLoaded(cacheKey: string): boolean {\n return imageCache.has(cacheKey)\n}\nexport type IGatsbyImageDataParent = T & {\n gatsbyImageData: IGatsbyImageData\n}\nexport type FileNode = Node & {\n childImageSharp?: IGatsbyImageDataParent\n}\n\nconst isGatsbyImageData = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n node: IGatsbyImageData | any\n): node is IGatsbyImageData =>\n // 🦆 check for a deep prop to be sure this is a valid gatsbyImageData object\n Boolean(node?.images?.fallback?.src)\n\nconst isGatsbyImageDataParent = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n node: IGatsbyImageDataParent | any\n): node is IGatsbyImageDataParent => Boolean(node?.gatsbyImageData)\n\nexport type ImageDataLike = FileNode | IGatsbyImageDataParent | IGatsbyImageData\nexport const getImage = (node: ImageDataLike): IGatsbyImageData | undefined => {\n if (isGatsbyImageData(node)) {\n return node\n }\n if (isGatsbyImageDataParent(node)) {\n return node.gatsbyImageData\n }\n return node?.childImageSharp?.gatsbyImageData\n}\n\nexport const getSrc = (node: ImageDataLike): string | undefined =>\n getImage(node)?.images?.fallback?.src\n\nexport const getSrcSet = (node: ImageDataLike): string | undefined =>\n getImage(node)?.images?.fallback?.srcSet\n\nexport function getWrapperProps(\n width: number,\n height: number,\n layout: Layout\n): Pick, \"className\" | \"style\"> & {\n \"data-gatsby-image-wrapper\": string\n} {\n const wrapperStyle: CSSProperties = {}\n\n let className = `gatsby-image-wrapper`\n\n // If the plugin isn't installed we need to apply the styles inline\n if (!gatsbyImageIsInstalled()) {\n wrapperStyle.position = `relative`\n wrapperStyle.overflow = `hidden`\n }\n\n if (layout === `fixed`) {\n wrapperStyle.width = width\n wrapperStyle.height = height\n } else if (layout === `constrained`) {\n if (!gatsbyImageIsInstalled()) {\n wrapperStyle.display = `inline-block`\n wrapperStyle.verticalAlign = `top`\n }\n className = `gatsby-image-wrapper gatsby-image-wrapper-constrained`\n }\n\n return {\n className,\n \"data-gatsby-image-wrapper\": ``,\n style: wrapperStyle,\n }\n}\n\nexport async function applyPolyfill(\n ref: RefObject\n): Promise {\n if (!(`objectFitPolyfill` in window)) {\n await import(\n // @ts-ignore typescript can't find the module for some reason ¯\\_(ツ)_/¯\n /* webpackChunkName: \"gatsby-plugin-image-objectfit-polyfill\" */ `objectFitPolyfill`\n )\n }\n ;(window as any).objectFitPolyfill(ref.current)\n}\n\nexport interface IUrlBuilderArgs {\n width: number\n height: number\n baseUrl: string\n format: ImageFormat\n options: OptionsType\n}\nexport interface IGetImageDataArgs> {\n baseUrl: string\n /**\n * For constrained and fixed images, the size of the image element\n */\n width?: number\n height?: number\n /**\n * If available, pass the source image width and height\n */\n sourceWidth?: number\n sourceHeight?: number\n /**\n * If only one dimension is passed, then this will be used to calculate the other.\n */\n aspectRatio?: number\n layout?: Layout\n /**\n * Returns a URL based on the passed arguments. Should be a pure function\n */\n urlBuilder: (args: IUrlBuilderArgs) => string\n\n /**\n * Should be a data URI\n */\n placeholderURL?: string\n backgroundColor?: string\n /**\n * Used in error messages etc\n */\n pluginName?: string\n\n /**\n * If you do not support auto-format, pass an array of image types here\n */\n formats?: Array\n\n breakpoints?: Array\n\n /**\n * Passed to the urlBuilder function\n */\n options?: OptionsType\n}\n\n/**\n * Use this hook to generate gatsby-plugin-image data in the browser.\n */\nexport function getImageData({\n baseUrl,\n urlBuilder,\n sourceWidth,\n sourceHeight,\n pluginName = `getImageData`,\n formats = [`auto`],\n breakpoints,\n options,\n ...props\n}: IGetImageDataArgs): IGatsbyImageData {\n if (\n !breakpoints?.length &&\n (props.layout === `fullWidth` || (props.layout as string) === `FULL_WIDTH`)\n ) {\n breakpoints = EVERY_BREAKPOINT\n }\n const generateImageSource = (\n baseUrl: string,\n width: number,\n height?: number,\n format?: ImageFormat\n ): IImage => {\n return {\n width,\n height,\n format,\n src: urlBuilder({ baseUrl, width, height, options, format }),\n }\n }\n\n const sourceMetadata: IGatsbyImageHelperArgs[\"sourceMetadata\"] = {\n width: sourceWidth,\n height: sourceHeight,\n format: `auto`,\n }\n\n const args: IGatsbyImageHelperArgs = {\n ...props,\n pluginName,\n generateImageSource,\n filename: baseUrl,\n formats,\n breakpoints,\n sourceMetadata,\n }\n return generateImageData(args)\n}\n\nexport function getMainProps(\n isLoading: boolean,\n isLoaded: boolean,\n images: IGatsbyImageData[\"images\"],\n loading?: \"eager\" | \"lazy\",\n toggleLoaded?: (loaded: boolean) => void,\n cacheKey?: string,\n ref?: RefObject,\n style: CSSProperties = {}\n): Partial {\n const onLoad: ReactEventHandler = function (e) {\n if (isLoaded) {\n return\n }\n\n storeImageloaded(cacheKey)\n\n const target = e.currentTarget\n const img = new Image()\n img.src = target.currentSrc\n\n if (img.decode) {\n // Decode the image through javascript to support our transition\n img\n .decode()\n .catch(() => {\n // ignore error, we just go forward\n })\n .then(() => {\n toggleLoaded(true)\n })\n } else {\n toggleLoaded(true)\n }\n }\n\n // Polyfill \"object-fit\" if unsupported (mostly IE)\n if (ref?.current && !(`objectFit` in document.documentElement.style)) {\n ref.current.dataset.objectFit = style.objectFit ?? `cover`\n ref.current.dataset.objectPosition = `${style.objectPosition ?? `50% 50%`}`\n applyPolyfill(ref)\n }\n\n // fallback when it's not configured in gatsby-config.\n if (!gatsbyImageIsInstalled()) {\n style = {\n height: `100%`,\n left: 0,\n position: `absolute`,\n top: 0,\n transform: `translateZ(0)`,\n transition: `opacity 250ms linear`,\n width: `100%`,\n willChange: `opacity`,\n ...style,\n }\n }\n\n const result = {\n ...images,\n loading,\n shouldLoad: isLoading,\n \"data-main-image\": ``,\n style: {\n ...style,\n opacity: isLoaded ? 1 : 0,\n },\n onLoad,\n ref,\n }\n\n return result\n}\n\nexport type PlaceholderImageAttrs = ImgHTMLAttributes &\n Pick & {\n \"data-placeholder-image\"?: string\n }\n\nexport function getPlaceholderProps(\n placeholder: PlaceholderImageAttrs | undefined,\n isLoaded: boolean,\n layout: Layout,\n width?: number,\n height?: number,\n backgroundColor?: string,\n objectFit?: CSSProperties[\"objectFit\"],\n objectPosition?: CSSProperties[\"objectPosition\"]\n): PlaceholderImageAttrs {\n const wrapperStyle: CSSProperties = {}\n\n if (backgroundColor) {\n wrapperStyle.backgroundColor = backgroundColor\n\n if (layout === `fixed`) {\n wrapperStyle.width = width\n wrapperStyle.height = height\n wrapperStyle.backgroundColor = backgroundColor\n wrapperStyle.position = `relative`\n } else if (layout === `constrained`) {\n wrapperStyle.position = `absolute`\n wrapperStyle.top = 0\n wrapperStyle.left = 0\n wrapperStyle.bottom = 0\n wrapperStyle.right = 0\n } else if (layout === `fullWidth`) {\n wrapperStyle.position = `absolute`\n wrapperStyle.top = 0\n wrapperStyle.left = 0\n wrapperStyle.bottom = 0\n wrapperStyle.right = 0\n }\n }\n\n if (objectFit) {\n wrapperStyle.objectFit = objectFit\n }\n\n if (objectPosition) {\n wrapperStyle.objectPosition = objectPosition\n }\n const result: PlaceholderImageAttrs = {\n ...placeholder,\n \"aria-hidden\": true,\n \"data-placeholder-image\": ``,\n style: {\n opacity: isLoaded ? 0 : 1,\n transition: `opacity 500ms linear`,\n ...wrapperStyle,\n },\n }\n\n // fallback when it's not configured in gatsby-config.\n if (!gatsbyImageIsInstalled()) {\n result.style = {\n height: `100%`,\n left: 0,\n position: `absolute`,\n top: 0,\n width: `100%`,\n }\n }\n\n return result\n}\n\nexport function useImageLoaded(\n cacheKey: string,\n loading: \"lazy\" | \"eager\",\n ref: any\n): {\n isLoaded: boolean\n isLoading: boolean\n toggleLoaded: Dispatch>\n} {\n const [isLoaded, toggleLoaded] = useState(false)\n const [isLoading, toggleIsLoading] = useState(loading === `eager`)\n\n const rAF =\n typeof window !== `undefined` && `requestAnimationFrame` in window\n ? requestAnimationFrame\n : function (cb: TimerHandler): number {\n return setTimeout(cb, 16)\n }\n const cRAF =\n typeof window !== `undefined` && `cancelAnimationFrame` in window\n ? cancelAnimationFrame\n : clearTimeout\n\n useEffect(() => {\n let interval: number\n // @see https://stackoverflow.com/questions/44074747/componentdidmount-called-before-ref-callback/50019873#50019873\n function toggleIfRefExists(): void {\n if (ref.current) {\n if (loading === `eager` && ref.current.complete) {\n storeImageloaded(cacheKey)\n toggleLoaded(true)\n } else {\n toggleIsLoading(true)\n }\n } else {\n interval = rAF(toggleIfRefExists)\n }\n }\n toggleIfRefExists()\n\n return (): void => {\n cRAF(interval)\n }\n }, [])\n\n return {\n isLoading,\n isLoaded,\n toggleLoaded,\n }\n}\n\nexport interface IArtDirectedImage {\n media: string\n image: IGatsbyImageData\n}\n\n/**\n * Generate a Gatsby image data object with multiple, art-directed images that display at different\n * resolutions.\n *\n * @param defaultImage The image displayed when no media query matches.\n * It is also used for all other settings applied to the image, such as width, height and layout.\n * You should pass a className to the component with media queries to adjust the size of the container,\n * as this cannot be adjusted automatically.\n * @param artDirected Array of objects which each contains a `media` string which is a media query\n * such as `(min-width: 320px)`, and the image object to use when that query matches.\n */\nexport function withArtDirection(\n defaultImage: IGatsbyImageData,\n artDirected: Array\n): IGatsbyImageData {\n const { images, placeholder, ...props } = defaultImage\n const output: IGatsbyImageData = {\n ...props,\n images: {\n ...images,\n sources: [],\n },\n placeholder: placeholder && {\n ...placeholder,\n sources: [],\n },\n }\n\n artDirected.forEach(({ media, image }) => {\n if (!media) {\n if (process.env.NODE_ENV === `development`) {\n console.warn(\n \"[gatsby-plugin-image] All art-directed images passed to must have a value set for `media`. Skipping.\"\n )\n }\n return\n }\n\n if (\n image.layout !== defaultImage.layout &&\n process.env.NODE_ENV === `development`\n ) {\n console.warn(\n `[gatsby-plugin-image] Mismatched image layout: expected \"${defaultImage.layout}\" but received \"${image.layout}\". All art-directed images use the same layout as the default image`\n )\n }\n\n output.images.sources.push(\n ...image.images.sources.map(source => {\n return { ...source, media }\n }),\n {\n media,\n srcSet: image.images.fallback.srcSet,\n }\n )\n\n if (!output.placeholder) {\n return\n }\n\n output.placeholder.sources.push({\n media,\n srcSet: image.placeholder.fallback,\n })\n })\n output.images.sources.push(...images.sources)\n if (placeholder?.sources) {\n output.placeholder?.sources.push(...placeholder.sources)\n }\n return output\n}\n","// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \n\nimport React, { Fragment, FunctionComponent } from \"react\"\nimport terserMacro from \"../../macros/terser.macro\"\nimport { Layout } from \"../image-utils\"\n\nexport interface ILayoutWrapperProps {\n layout: Layout\n width: number\n height: number\n}\n\nconst NativeScriptLoading: FunctionComponent = () => (\n \n)\n\nexport function getSizer(\n layout: Layout,\n width: number,\n height: number\n): string {\n let sizer: string | null = null\n if (layout === `fullWidth`) {\n sizer = `
`\n }\n if (layout === `constrained`) {\n sizer = `
\"\"
`\n }\n return sizer\n}\n\nconst Sizer: FunctionComponent = function Sizer({\n layout,\n width,\n height,\n}) {\n if (layout === `fullWidth`) {\n return (\n
\n )\n }\n if (layout === `constrained`) {\n return (\n
\n \n
\n )\n }\n\n return null\n}\n\nexport const LayoutWrapper: FunctionComponent =\n function LayoutWrapper({ children, ...props }) {\n return (\n \n \n {children}\n\n {\n // eslint-disable-next-line no-undef\n SERVER && \n }\n \n )\n }\n","/* eslint-disable filenames/match-regex */\nimport React, {\n FunctionComponent,\n ImgHTMLAttributes,\n forwardRef,\n LegacyRef,\n} from \"react\"\nimport * as PropTypes from \"prop-types\"\n\nexport interface IResponsiveImageProps {\n sizes?: string\n srcSet: string\n}\n\nexport type SourceProps = IResponsiveImageProps &\n (\n | {\n media: string\n type?: string\n }\n | {\n media?: string\n type: string\n }\n )\n\ntype FallbackProps = { src: string } & Partial\n\ntype ImageProps = ImgHTMLAttributes & {\n src: string\n alt: string\n shouldLoad: boolean\n innerRef: LegacyRef\n}\n\nexport type PictureProps = ImgHTMLAttributes & {\n fallback?: FallbackProps\n sources?: Array\n alt: string\n shouldLoad?: boolean\n}\n\nconst Image: FunctionComponent = function Image({\n src,\n srcSet,\n loading,\n alt = ``,\n shouldLoad,\n innerRef,\n ...props\n}) {\n return (\n \n )\n}\n\nexport const Picture = forwardRef(\n function Picture(\n { fallback, sources = [], shouldLoad = true, ...props },\n ref\n ) {\n const sizes = props.sizes || fallback?.sizes\n const fallbackImage = (\n \n )\n\n if (!sources.length) {\n return fallbackImage\n }\n\n return (\n \n {sources.map(({ media, srcSet, type }) => (\n \n ))}\n {fallbackImage}\n \n )\n }\n)\n\nImage.propTypes = {\n src: PropTypes.string.isRequired,\n alt: PropTypes.string.isRequired,\n sizes: PropTypes.string,\n srcSet: PropTypes.string,\n shouldLoad: PropTypes.bool,\n}\n\nPicture.displayName = `Picture`\nPicture.propTypes = {\n alt: PropTypes.string.isRequired,\n shouldLoad: PropTypes.bool,\n fallback: PropTypes.exact({\n src: PropTypes.string.isRequired,\n srcSet: PropTypes.string,\n sizes: PropTypes.string,\n }),\n sources: PropTypes.arrayOf(\n PropTypes.oneOfType([\n PropTypes.exact({\n media: PropTypes.string.isRequired,\n type: PropTypes.string,\n sizes: PropTypes.string,\n srcSet: PropTypes.string.isRequired,\n }),\n PropTypes.exact({\n media: PropTypes.string,\n type: PropTypes.string.isRequired,\n sizes: PropTypes.string,\n srcSet: PropTypes.string.isRequired,\n }),\n ])\n ),\n}\n","import React, { FunctionComponent, ImgHTMLAttributes } from \"react\"\nimport * as PropTypes from \"prop-types\"\nimport { Picture, SourceProps } from \"./picture\"\n\nexport type PlaceholderProps = ImgHTMLAttributes & {\n fallback?: string\n sources?: Array\n}\n\nexport const Placeholder: FunctionComponent =\n function Placeholder({ fallback, ...props }) {\n if (fallback) {\n return (\n \n )\n } else {\n return
\n }\n }\n\nPlaceholder.displayName = `Placeholder`\nPlaceholder.propTypes = {\n fallback: PropTypes.string,\n sources: Picture.propTypes?.sources,\n alt: function (props, propName, componentName): Error | null {\n if (!props[propName]) {\n return null\n }\n return new Error(\n `Invalid prop \\`${propName}\\` supplied to \\`${componentName}\\`. Validation failed.`\n )\n },\n}\n","import React, { forwardRef } from \"react\"\nimport { Picture, PictureProps } from \"./picture\"\n\nexport type MainImageProps = PictureProps\n\nexport const MainImage = forwardRef(\n function MainImage(props, ref) {\n return (\n <>\n \n \n \n )\n }\n)\n\nMainImage.displayName = `MainImage`\nMainImage.propTypes = Picture.propTypes\n","import React, {\n ElementType,\n FunctionComponent,\n CSSProperties,\n WeakValidationMap,\n} from \"react\"\nimport { GatsbyImageProps, IGatsbyImageData } from \"./gatsby-image.browser\"\nimport { getWrapperProps, getMainProps, getPlaceholderProps } from \"./hooks\"\nimport { Placeholder } from \"./placeholder\"\nimport { MainImage, MainImageProps } from \"./main-image\"\nimport { LayoutWrapper } from \"./layout-wrapper\"\nimport PropTypes from \"prop-types\"\n\nconst removeNewLines = (str: string): string => str.replace(/\\n/g, ``)\n\nexport const GatsbyImageHydrator: FunctionComponent<{\n as?: ElementType\n style?: CSSProperties\n className?: string\n}> = function GatsbyImageHydrator({ as: Type = `div`, children, ...props }) {\n return {children}\n}\n\nexport const GatsbyImage: FunctionComponent =\n function GatsbyImage({\n as,\n className,\n class: preactClass,\n style,\n image,\n loading = `lazy`,\n imgClassName,\n imgStyle,\n backgroundColor,\n objectFit,\n objectPosition,\n ...props\n }) {\n if (!image) {\n console.warn(`[gatsby-plugin-image] Missing image prop`)\n return null\n }\n if (preactClass) {\n className = preactClass\n }\n imgStyle = {\n objectFit,\n objectPosition,\n backgroundColor,\n ...imgStyle,\n }\n\n const {\n width,\n height,\n layout,\n images,\n placeholder,\n backgroundColor: placeholderBackgroundColor,\n } = image\n\n const {\n style: wStyle,\n className: wClass,\n ...wrapperProps\n } = getWrapperProps(width, height, layout)\n\n const cleanedImages: IGatsbyImageData[\"images\"] = {\n fallback: undefined,\n sources: [],\n }\n if (images.fallback) {\n cleanedImages.fallback = {\n ...images.fallback,\n srcSet: images.fallback.srcSet\n ? removeNewLines(images.fallback.srcSet)\n : undefined,\n }\n }\n\n if (images.sources) {\n cleanedImages.sources = images.sources.map(source => {\n return {\n ...source,\n srcSet: removeNewLines(source.srcSet),\n }\n })\n }\n\n return (\n \n \n \n\n )}\n // When eager is set we want to start the isLoading state on true (we want to load the img without react)\n {...getMainProps(\n loading === `eager`,\n false,\n cleanedImages,\n loading,\n undefined,\n undefined,\n undefined,\n imgStyle\n )}\n />\n \n \n )\n }\n\nexport const altValidator: PropTypes.Validator = (\n props: GatsbyImageProps,\n propName,\n componentName,\n ...rest\n): Error | undefined => {\n if (!props.alt && props.alt !== ``) {\n return new Error(\n `The \"alt\" prop is required in ${componentName}. If the image is purely presentational then pass an empty string: e.g. alt=\"\". Learn more: https://a11y-style-guide.com/style-guide/section-media.html`\n )\n }\n return PropTypes.string(props, propName, componentName, ...rest)\n}\nexport const propTypes = {\n image: PropTypes.object.isRequired,\n alt: altValidator,\n} as WeakValidationMap\n","/* eslint-disable no-unused-expressions */\nimport React, {\n Component,\n ElementType,\n createRef,\n MutableRefObject,\n FunctionComponent,\n ImgHTMLAttributes,\n RefObject,\n CSSProperties,\n} from \"react\"\nimport {\n getWrapperProps,\n hasNativeLazyLoadSupport,\n storeImageloaded,\n hasImageLoaded,\n gatsbyImageIsInstalled,\n} from \"./hooks\"\nimport { PlaceholderProps } from \"./placeholder\"\nimport { MainImageProps } from \"./main-image\"\nimport { Layout } from \"../image-utils\"\nimport { getSizer } from \"./layout-wrapper\"\nimport { propTypes } from \"./gatsby-image.server\"\nimport { Unobserver } from \"./intersection-observer\"\nimport { render } from \"react-dom\"\n\n// eslint-disable-next-line @typescript-eslint/naming-convention\nexport interface GatsbyImageProps\n extends Omit<\n ImgHTMLAttributes,\n \"placeholder\" | \"onLoad\" | \"src\" | \"srcSet\" | \"width\" | \"height\"\n > {\n alt: string\n as?: ElementType\n className?: string\n class?: string\n imgClassName?: string\n image: IGatsbyImageData\n imgStyle?: CSSProperties\n backgroundColor?: string\n objectFit?: CSSProperties[\"objectFit\"]\n objectPosition?: CSSProperties[\"objectPosition\"]\n onLoad?: () => void\n onError?: () => void\n onStartLoad?: (props: { wasCached?: boolean }) => void\n}\n\nexport interface IGatsbyImageData {\n layout: Layout\n width: number\n height: number\n backgroundColor?: string\n images: Pick\n placeholder?: Pick\n}\n\nclass GatsbyImageHydrator extends Component<\n GatsbyImageProps,\n { isLoading: boolean; isLoaded: boolean }\n> {\n root: RefObject = createRef<\n HTMLImageElement | undefined\n >()\n hydrated: MutableRefObject = { current: false }\n forceRender: MutableRefObject = {\n // In dev we use render not hydrate, to avoid hydration warnings\n current: process.env.NODE_ENV === `development`,\n }\n lazyHydrator: () => void | null = null\n ref = createRef()\n unobserveRef: Unobserver\n\n constructor(props) {\n super(props)\n\n this.state = {\n isLoading: hasNativeLazyLoadSupport(),\n isLoaded: false,\n }\n }\n\n _lazyHydrate(props, state): Promise {\n const hasSSRHtml = this.root.current.querySelector(\n `[data-gatsby-image-ssr]`\n )\n // On first server hydration do nothing\n if (hasNativeLazyLoadSupport() && hasSSRHtml && !this.hydrated.current) {\n this.hydrated.current = true\n return Promise.resolve()\n }\n\n return import(`./lazy-hydrate`).then(({ lazyHydrate }) => {\n const cacheKey = JSON.stringify(this.props.image.images)\n this.lazyHydrator = lazyHydrate(\n {\n image: props.image.images,\n isLoading: state.isLoading || hasImageLoaded(cacheKey),\n isLoaded: state.isLoaded || hasImageLoaded(cacheKey),\n toggleIsLoaded: () => {\n props.onLoad?.()\n\n this.setState({\n isLoaded: true,\n })\n },\n ref: this.ref,\n ...props,\n },\n this.root,\n this.hydrated,\n this.forceRender\n )\n })\n }\n\n /**\n * Choose if setupIntersectionObserver should use the image cache or not.\n */\n _setupIntersectionObserver(useCache = true): void {\n import(`./intersection-observer`).then(({ createIntersectionObserver }) => {\n const intersectionObserver = createIntersectionObserver(() => {\n if (this.root.current) {\n const cacheKey = JSON.stringify(this.props.image.images)\n this.props.onStartLoad?.({\n wasCached: useCache && hasImageLoaded(cacheKey),\n })\n this.setState({\n isLoading: true,\n isLoaded: useCache && hasImageLoaded(cacheKey),\n })\n }\n })\n\n if (this.root.current) {\n this.unobserveRef = intersectionObserver(this.root)\n }\n })\n }\n\n shouldComponentUpdate(nextProps, nextState): boolean {\n let hasChanged = false\n if (!this.state.isLoading && nextState.isLoading && !nextState.isLoaded) {\n // Props have changed between SSR and hydration, so we need to force render instead of hydrate\n this.forceRender.current = true\n }\n // this check mostly means people do not have the correct ref checks in place, we want to reset some state to suppport loading effects\n if (this.props.image.images !== nextProps.image.images) {\n // reset state, we'll rely on intersection observer to reload\n if (this.unobserveRef) {\n // unregister intersectionObserver\n this.unobserveRef()\n\n // // on unmount, make sure we cleanup\n if (this.hydrated.current && this.lazyHydrator) {\n render(null, this.root.current)\n }\n }\n\n this.setState(\n {\n isLoading: false,\n isLoaded: false,\n },\n () => {\n this._setupIntersectionObserver(false)\n }\n )\n\n hasChanged = true\n }\n\n if (this.root.current && !hasChanged) {\n this._lazyHydrate(nextProps, nextState)\n }\n\n return false\n }\n\n componentDidMount(): void {\n if (this.root.current) {\n const ssrElement = this.root.current.querySelector(\n `[data-gatsby-image-ssr]`\n ) as HTMLImageElement\n const cacheKey = JSON.stringify(this.props.image.images)\n\n // when SSR and native lazyload is supported we'll do nothing ;)\n if (\n hasNativeLazyLoadSupport() &&\n ssrElement &&\n gatsbyImageIsInstalled()\n ) {\n this.props.onStartLoad?.({ wasCached: false })\n\n // When the image is already loaded before we have hydrated, we trigger onLoad and cache the item\n if (ssrElement.complete) {\n this.props.onLoad?.()\n storeImageloaded(cacheKey)\n } else {\n // We need the current class context (this) inside our named onLoad function\n // The named function is necessary to easily remove the listener afterward.\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const _this = this\n // add an onLoad to the image\n ssrElement.addEventListener(`load`, function onLoad() {\n ssrElement.removeEventListener(`load`, onLoad)\n\n _this.props.onLoad?.()\n storeImageloaded(cacheKey)\n })\n }\n\n return\n }\n\n // Fallback to custom lazy loading (intersection observer)\n this._setupIntersectionObserver(true)\n }\n }\n\n componentWillUnmount(): void {\n // Cleanup when onmount happens\n if (this.unobserveRef) {\n // unregister intersectionObserver\n this.unobserveRef()\n\n // on unmount, make sure we cleanup\n if (this.hydrated.current && this.lazyHydrator) {\n this.lazyHydrator()\n }\n }\n\n return\n }\n\n render(): JSX.Element {\n const Type = this.props.as || `div`\n const { width, height, layout } = this.props.image\n const {\n style: wStyle,\n className: wClass,\n ...wrapperProps\n } = getWrapperProps(width, height, layout)\n\n let className = this.props.className\n // preact class\n if (this.props.class) {\n className = this.props.class\n }\n\n const sizer = getSizer(layout, width, height)\n\n return (\n \n )\n }\n}\n\nexport const GatsbyImage: FunctionComponent =\n function GatsbyImage(props) {\n if (!props.image) {\n if (process.env.NODE_ENV === `development`) {\n console.warn(`[gatsby-plugin-image] Missing image prop`)\n }\n return null\n }\n\n if (!gatsbyImageIsInstalled() && process.env.NODE_ENV === `development`) {\n console.warn(\n `[gatsby-plugin-image] You're missing out on some cool performance features. Please add \"gatsby-plugin-image\" to your gatsby-config.js`\n )\n }\n const { className, class: classSafe, backgroundColor, image } = props\n const { width, height, layout } = image\n const propsKey = JSON.stringify([\n width,\n height,\n layout,\n className,\n classSafe,\n backgroundColor,\n ])\n return \n }\n\nGatsbyImage.propTypes = propTypes\n\nGatsbyImage.displayName = `GatsbyImage`\n","import React, { FunctionComponent, ReactElement } from \"react\"\nimport {\n altValidator,\n GatsbyImage as GatsbyImageServer,\n} from \"./gatsby-image.server\"\nimport { GatsbyImageProps, IGatsbyImageData } from \"./gatsby-image.browser\"\nimport PropTypes from \"prop-types\"\nimport { ISharpGatsbyImageArgs } from \"../image-utils\"\n\nexport interface IStaticImageProps\n extends Omit,\n Omit {\n src: string\n}\n\n// These values are added by Babel. Do not add them manually\ninterface IPrivateProps {\n __imageData?: IGatsbyImageData\n __error?: string\n}\n\nexport function _getStaticImage(\n GatsbyImage: FunctionComponent\n): React.FC {\n return function StaticImage({\n src,\n __imageData: imageData,\n __error,\n // We extract these because they're not meant to be passed-down to GatsbyImage\n /* eslint-disable @typescript-eslint/no-unused-vars */\n width,\n height,\n aspectRatio,\n tracedSVGOptions,\n placeholder,\n formats,\n quality,\n transformOptions,\n jpgOptions,\n pngOptions,\n webpOptions,\n avifOptions,\n blurredOptions,\n /* eslint-enable @typescript-eslint/no-unused-vars */\n ...props\n }): ReactElement {\n if (__error) {\n console.warn(__error)\n }\n\n if (imageData) {\n return \n }\n console.warn(`Image not loaded`, src)\n if (!__error && process.env.NODE_ENV === `development`) {\n console.warn(\n `Please ensure that \"gatsby-plugin-image\" is included in the plugins array in gatsby-config.js, and that your version of gatsby is at least 2.24.78`\n )\n }\n return null\n }\n}\n\nconst StaticImage: React.FC =\n _getStaticImage(GatsbyImageServer)\n\nconst checkDimensionProps: PropTypes.Validator = (\n props: IStaticImageProps & IPrivateProps,\n propName: keyof IStaticImageProps & IPrivateProps,\n ...rest\n) => {\n if (\n props.layout === `fullWidth` &&\n (propName === `width` || propName === `height`) &&\n props[propName]\n ) {\n return new Error(\n `\"${propName}\" ${props[propName]} may not be passed when layout is fullWidth.`\n )\n }\n return PropTypes.number(props, propName, ...rest)\n}\n\nconst validLayouts = new Set([`fixed`, `fullWidth`, `constrained`])\n\nexport const propTypes = {\n src: PropTypes.string.isRequired,\n alt: altValidator,\n width: checkDimensionProps,\n height: checkDimensionProps,\n sizes: PropTypes.string,\n layout: (props: IStaticImageProps & IPrivateProps): Error | undefined => {\n if (props.layout === undefined) {\n return undefined\n }\n if (validLayouts.has(props.layout)) {\n return undefined\n }\n\n return new Error(\n `Invalid value ${props.layout}\" provided for prop \"layout\". Defaulting to \"constrained\". Valid values are \"fixed\", \"fullWidth\" or \"constrained\".`\n )\n },\n}\n\nStaticImage.displayName = `StaticImage`\nStaticImage.propTypes = propTypes\n\nexport { StaticImage }\n","import {\n GatsbyImage as GatsbyImageBrowser,\n IGatsbyImageData,\n} from \"./gatsby-image.browser\"\nimport React from \"react\"\nimport {\n _getStaticImage,\n propTypes,\n IStaticImageProps,\n} from \"./static-image.server\"\n// These values are added by Babel. Do not add them manually\ninterface IPrivateProps {\n __imageData?: IGatsbyImageData\n __error?: string\n}\n\nconst StaticImage: React.FC =\n _getStaticImage(GatsbyImageBrowser)\n\nStaticImage.displayName = `StaticImage`\nStaticImage.propTypes = propTypes\n\nexport { StaticImage }\n","import * as React from \"react\"\nexport function LaterHydrator({\n children,\n}: React.PropsWithChildren>): React.ReactNode {\n React.useEffect(() => {\n // eslint-disable-next-line no-unused-expressions\n import(`./lazy-hydrate`)\n }, [])\n\n return children\n}\n","import React from \"react\"\nimport { LaterHydrator } from \".\"\n\nexport function wrapRootElement({ element }) {\n return {element}\n}\n","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _gatsby = require(\"gatsby\");\n\nvar _getManifestPathname = _interopRequireDefault(require(\"./get-manifest-pathname\"));\n\n/* global __MANIFEST_PLUGIN_HAS_LOCALISATION__ */\n// when we don't have localisation in our manifest, we tree shake everything away\nif (__MANIFEST_PLUGIN_HAS_LOCALISATION__) {\n exports.onRouteUpdate = function (_ref, pluginOptions) {\n var location = _ref.location;\n var localize = pluginOptions.localize;\n var manifestFilename = (0, _getManifestPathname.default)(location.pathname, localize);\n var manifestEl = document.head.querySelector(\"link[rel=\\\"manifest\\\"]\");\n\n if (manifestEl) {\n manifestEl.setAttribute(\"href\", (0, _gatsby.withPrefix)(manifestFilename));\n }\n };\n}","\"use strict\";\n\nexports.__esModule = true;\nexports.default = void 0;\n\n/**\n * Get a manifest filename depending on localized pathname\n *\n * @param {string} pathname\n * @param {Array<{start_url: string, lang: string}>} localizedManifests\n * @return string\n */\nvar _default = function _default(pathname, localizedManifests) {\n var defaultFilename = \"manifest.webmanifest\";\n\n if (!Array.isArray(localizedManifests)) {\n return defaultFilename;\n }\n\n var localizedManifest = localizedManifests.find(function (app) {\n return pathname.startsWith(app.start_url);\n });\n\n if (!localizedManifest) {\n return defaultFilename;\n }\n\n return \"manifest_\" + localizedManifest.lang + \".webmanifest\";\n};\n\nexports.default = _default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _interopRequireWildcard = require(\"@babel/runtime/helpers/interopRequireWildcard\");\n\nexports.__esModule = true;\nexports.default = Wrapper;\n\nvar _react = _interopRequireWildcard(require(\"react\"));\n\nvar _sal = _interopRequireDefault(require(\"sal.js\"));\n\nfunction Wrapper(_ref) {\n var children = _ref.children,\n path = _ref.path,\n options = _ref.options;\n (0, _react.useEffect)(function () {\n (0, _sal.default)(options);\n }, [path]);\n return children;\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\");\n\nvar _objectWithoutPropertiesLoose2 = _interopRequireDefault(require(\"@babel/runtime/helpers/objectWithoutPropertiesLoose\"));\n\nrequire('sal.js/dist/sal.css');\n\nrequire('intersection-observer');\n\nvar React = require(\"react\");\n\nvar Wrapper = require('./Wrapper').default;\n\nexports.wrapPageElement = function (_ref, _ref2) {\n var element = _ref.element,\n props = _ref.props;\n var plugins = _ref2.plugins,\n options = (0, _objectWithoutPropertiesLoose2.default)(_ref2, [\"plugins\"]);\n return (\n /*#__PURE__*/\n React.createElement(Wrapper, {\n options: options,\n path: props.path\n }, element)\n );\n};","import * as React from 'react';\nexport default {\n React\n};","import React, { createContext, useContext } from \"react\"\n\nconst GatsbyMDXScopeContext = createContext({})\n\nexport const useMDXScope = scope => {\n const contextScope = useContext(GatsbyMDXScopeContext)\n return scope || contextScope\n}\n\nexport const MDXScopeProvider = ({ __mdxScope, children }) =>\n React.createElement(\n GatsbyMDXScopeContext.Provider,\n { value: __mdxScope },\n children\n )\n","var scope_0 = require('/codebuild/output/src2431224849/src/ivorycc-website/frontend/.cache/caches/gatsby-plugin-mdx/mdx-scopes-dir/e92f8988d65cf25c087d226e6c0ef06f.js').default;export default\n Object.assign({}, scope_0 )\n ","import React from \"react\"\nimport { MDXProvider, withMDXComponents } from \"@mdx-js/react\"\nimport { MDXScopeProvider } from \"./context\"\n\n/**\n * so, this import is weird right?\n *\n * # What it looks like:\n * we're importing a webpack loader directly into our runtime bundle\n *\n * # What it's actually doing:\n * We configure the `mdx-components` loader in gatsby-node's\n * `onCreateWebpackConfig`. The configuration sets the loader to handle its\n * own file, so if we import `./loaders/mdx-components`, the `mdx-components`\n * loader handles loading itself.\n *\n * # Why does this work?\n * The loader doesn't use the file argument to itself and instead returns\n * a generated file that includes the `gatsby-config` mdxPlugins wrapped in\n * require() statements. This results in the `mdxPlugins` being required\n * and available to the code after this import.\n *\n * # Have a better solution to this?\n * Submit a PR\n */\nimport { plugins as mdxPlugins } from \"./loaders/mdx-components\"\nimport scopeContexts from \"./loaders/mdx-scopes\"\n\nconst componentsAndGuards = {}\n\nconst componentFromGuards = arr =>\n function GatsbyMDXComponentFinder(props) {\n const { Component } = arr.find(({ guard }) => (guard ? guard(props) : true))\n return \n }\n\nmdxPlugins.forEach(({ guards = {}, components }) => {\n Object.entries(components).forEach(([componentName, Component]) => {\n if (componentsAndGuards[componentName]) {\n componentsAndGuards.push({ guard: guards[componentName], Component })\n } else {\n componentsAndGuards[componentName] = [\n { guard: guards[componentName], Component },\n ]\n }\n })\n})\n\nconst components = Object.entries(componentsAndGuards)\n .map(([name, arr]) => {\n return {\n [name]: componentFromGuards(\n arr.concat({ guard: undefined, Component: name })\n ),\n }\n })\n .reduce((acc, obj) => {\n return { ...acc, ...obj }\n }, {})\n\n// merge any components in wrapRootElement above this wrapRoot\nconst MDXConsumer = withMDXComponents(\n ({ components: componentsFromContext, children }) => (\n \n \n {children}\n \n \n )\n)\n\nconst WrapRootElement = ({ element }) => {element}\n\nexport default WrapRootElement\n","import wrap from \"./wrap-root-element\"\nexport const wrapRootElement = wrap\n","module.exports = {plugins: []}","import React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { Helmet } from \"react-helmet\";\n\nexport default function TopLayout(props) {\n return (\n \n \n \n \n \n \n {/* Per google docs, run the gtag before consent */}\n */}\n \n \n\n \n {props.children}\n \n );\n}\n\nTopLayout.propTypes = {\n children: PropTypes.node,\n};\n","import React from \"react\";\nimport Main from \"../../src/layouts/Main\";\nimport { Helmet } from \"react-helmet\";\n\nfunction PageWrap({ element, data, props }) {\n let meta_data;\n if (data?.mdx?.frontmatter) {\n meta_data = [];\n const meta_title = data.mdx.frontmatter.meta_title\n ? data.mdx.frontmatter.meta_title\n : data.mdx.frontmatter.title;\n meta_data.push(\n {meta_title},\n ,\n \n );\n\n const meta_description = data.mdx.frontmatter.meta_description\n ? data.mdx.frontmatter.meta_description\n : data.mdx.frontmatter.excerpt;\n\n if (meta_description) {\n meta_data.push(\n ,\n ,\n \n );\n }\n\n if (data.mdx.frontmatter.meta_image) {\n meta_data.push(\n ,\n \n );\n } else {\n meta_data.push(\n ,\n \n );\n }\n }\n\n return (\n <>\n {meta_data && {meta_data}}\n
{element}
\n \n );\n}\n\nexport default PageWrap;\n","/* eslint-disable import/prefer-default-export, react/prop-types */\nimport \"../../src/styles/index.scss\";\nimport React from \"react\";\nimport TopLayout from \"./TopLayout\";\nimport PageWrap from \"./PageWrap\";\n\nexport const wrapRootElement = (props) => {\n return {props.element};\n};\n\nexport const wrapPageElement = ({ element, props }) => {\n return ;\n};\n","import React from \"react\";\n\nfunction Column({ children, size, className= '' }) {\n return
{children}
;\n}\n\nexport default Column;\n","import React from \"react\";\n\nfunction Container({ size = \"lg\", className, children, ...props }) {\n return (\n
\n {children}\n
\n );\n}\n\nexport default Container;\n","import React from \"react\";\nimport {SiteContext} from '../layouts/Main'\n\nfunction FormModal({\n src,\n buttonType = \"solid\",\n buttonLabel = \"Launch Form\",\n height = 550,\n}) {\n\n const siteContext = React.useContext(SiteContext)\n\n React.useEffect(() => {\n if (siteContext.modalShow) {\n document.body.classList.add(\"modal-open\");\n } else {\n document.body.classList.remove(\"modal-open\");\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [siteContext.modalShow]);\n\n if (!src) return <>;\n return (\n <>\n {\n e.preventDefault();\n siteContext.setModalHeight(height);\n siteContext.setModalSrc(src);\n siteContext.setModalShow(true);\n }}\n >\n {buttonLabel}\n \n \n );\n}\n\nexport default FormModal;\n","import React, { createContext, useState } from \"react\";\nimport loading from \"../images/spin-light.svg\";\nimport darkLoading from \"../images/spin-dark.svg\";\nexport const Spinner = () => (\n <>\n
\n
\n
\n
\n
\n \n \n \n
\n
\n Loading...\n
\n
\n
\n \n);\n\nexport const InlineSpinner = ({ theme }) => (\n \n \"loading\n \n);\n\nexport const LoaderContext = createContext({\n loading: false,\n showLoader: () => {},\n hideLoader: () => {},\n});\n\nexport const LoaderProvider = ({ children }) => {\n const showLoader = () => {\n handleLoading((prev) => ({\n ...prev,\n loading: true,\n }));\n };\n const hideLoader = () => {\n handleLoading((prev) => ({\n ...prev,\n loading: false,\n }));\n };\n\n const [loadingContext, handleLoading] = useState({\n loading: false,\n showLoader,\n hideLoader,\n });\n return (\n \n {loadingContext.loading ? : null}\n {children}\n \n );\n};\n","export default \"data:image/svg+xml;base64,PCEtLSBCeSBTYW0gSGVyYmVydCAoQHNoZXJiKSwgZm9yIGV2ZXJ5b25lLiBNb3JlIEAgaHR0cDovL2dvby5nbC83QUp6YkwgLS0+Cjxzdmcgd2lkdGg9IjM4IiBoZWlnaHQ9IjM4IiB2aWV3Qm94PSIwIDAgMzggMzgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgICA8ZGVmcz4KICAgICAgICA8bGluZWFyR3JhZGllbnQgeDE9IjguMDQyJSIgeTE9IjAlIiB4Mj0iNjUuNjgyJSIgeTI9IjIzLjg2NSUiIGlkPSJhIj4KICAgICAgICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iI2ZmZiIgc3RvcC1vcGFjaXR5PSIwIiBvZmZzZXQ9IjAlIi8+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiNmZmYiIHN0b3Atb3BhY2l0eT0iLjYzMSIgb2Zmc2V0PSI2My4xNDYlIi8+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiNmZmYiIG9mZnNldD0iMTAwJSIvPgogICAgICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICA8L2RlZnM+CiAgICA8ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEgMSkiPgogICAgICAgICAgICA8cGF0aCBkPSJNMzYgMThjMC05Ljk0LTguMDYtMTgtMTgtMTgiIGlkPSJPdmFsLTIiIHN0cm9rZT0idXJsKCNhKSIgc3Ryb2tlLXdpZHRoPSIyIj4KICAgICAgICAgICAgICAgIDxhbmltYXRlVHJhbnNmb3JtCiAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIgogICAgICAgICAgICAgICAgICAgIHR5cGU9InJvdGF0ZSIKICAgICAgICAgICAgICAgICAgICBmcm9tPSIwIDE4IDE4IgogICAgICAgICAgICAgICAgICAgIHRvPSIzNjAgMTggMTgiCiAgICAgICAgICAgICAgICAgICAgZHVyPSIwLjlzIgogICAgICAgICAgICAgICAgICAgIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiAvPgogICAgICAgICAgICA8L3BhdGg+CiAgICAgICAgICAgIDxjaXJjbGUgZmlsbD0iI2ZmZiIgY3g9IjM2IiBjeT0iMTgiIHI9IjEiPgogICAgICAgICAgICAgICAgPGFuaW1hdGVUcmFuc2Zvcm0KICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVOYW1lPSJ0cmFuc2Zvcm0iCiAgICAgICAgICAgICAgICAgICAgdHlwZT0icm90YXRlIgogICAgICAgICAgICAgICAgICAgIGZyb209IjAgMTggMTgiCiAgICAgICAgICAgICAgICAgICAgdG89IjM2MCAxOCAxOCIKICAgICAgICAgICAgICAgICAgICBkdXI9IjAuOXMiCiAgICAgICAgICAgICAgICAgICAgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIC8+CiAgICAgICAgICAgIDwvY2lyY2xlPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+Cg==\"","export default \"data:image/svg+xml;base64,PCEtLSBCeSBTYW0gSGVyYmVydCAoQHNoZXJiKSwgZm9yIGV2ZXJ5b25lLiBNb3JlIEAgaHR0cDovL2dvby5nbC83QUp6YkwgLS0+Cjxzdmcgd2lkdGg9IjM4IiBoZWlnaHQ9IjM4IiB2aWV3Qm94PSIwIDAgMzggMzgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgICA8ZGVmcz4KICAgICAgICA8bGluZWFyR3JhZGllbnQgeDE9IjguMDQyJSIgeTE9IjAlIiB4Mj0iNjUuNjgyJSIgeTI9IjIzLjg2NSUiIGlkPSJhIj4KICAgICAgICAgICAgPHN0b3Agc3RvcC1jb2xvcj0iIzAwMCIgc3RvcC1vcGFjaXR5PSIwIiBvZmZzZXQ9IjAlIi8+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMwMDAiIHN0b3Atb3BhY2l0eT0iLjYzMSIgb2Zmc2V0PSI2My4xNDYlIi8+CiAgICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMwMDAiIG9mZnNldD0iMTAwJSIvPgogICAgICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICA8L2RlZnM+CiAgICA8ZyBmaWxsPSJub25lIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPgogICAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEgMSkiPgogICAgICAgICAgICA8cGF0aCBkPSJNMzYgMThjMC05Ljk0LTguMDYtMTgtMTgtMTgiIGlkPSJPdmFsLTIiIHN0cm9rZT0idXJsKCNhKSIgc3Ryb2tlLXdpZHRoPSIyIj4KICAgICAgICAgICAgICAgIDxhbmltYXRlVHJhbnNmb3JtCiAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlTmFtZT0idHJhbnNmb3JtIgogICAgICAgICAgICAgICAgICAgIHR5cGU9InJvdGF0ZSIKICAgICAgICAgICAgICAgICAgICBmcm9tPSIwIDE4IDE4IgogICAgICAgICAgICAgICAgICAgIHRvPSIzNjAgMTggMTgiCiAgICAgICAgICAgICAgICAgICAgZHVyPSIwLjlzIgogICAgICAgICAgICAgICAgICAgIHJlcGVhdENvdW50PSJpbmRlZmluaXRlIiAvPgogICAgICAgICAgICA8L3BhdGg+CiAgICAgICAgICAgIDxjaXJjbGUgZmlsbD0iIzAwMCIgY3g9IjM2IiBjeT0iMTgiIHI9IjEiPgogICAgICAgICAgICAgICAgPGFuaW1hdGVUcmFuc2Zvcm0KICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVOYW1lPSJ0cmFuc2Zvcm0iCiAgICAgICAgICAgICAgICAgICAgdHlwZT0icm90YXRlIgogICAgICAgICAgICAgICAgICAgIGZyb209IjAgMTggMTgiCiAgICAgICAgICAgICAgICAgICAgdG89IjM2MCAxOCAxOCIKICAgICAgICAgICAgICAgICAgICBkdXI9IjAuOXMiCiAgICAgICAgICAgICAgICAgICAgcmVwZWF0Q291bnQ9ImluZGVmaW5pdGUiIC8+CiAgICAgICAgICAgIDwvY2lyY2xlPgogICAgICAgIDwvZz4KICAgIDwvZz4KPC9zdmc+Cg==\"","import React from \"react\";\n\nfunction Modal({ setModalShow, children, type = \"video\" }) {\n return (\n
\n
\n
\n setModalShow(false)}\n id=\"close\"\n aria-label=\"close\"\n >\n \n \n {children}\n
\n
\n \n
\n );\n}\n\nexport default Modal;\n","import React from \"react\";\n\nfunction Row({ children, gutter = \"md\", valign = \"top\" }) {\n return
{children}
;\n}\n\nexport default Row;\n","import React, { useContext, useEffect, useState } from \"react\";\nimport { getCurrentUser, logout } from \"../util/auth\";\n\nexport const AuthContext = React.createContext();\n\nexport const AuthContextProvider = ({ children }) => {\n const [state, setState] = useState(null);\n const [isLoading, setIsLoading] = useState(true);\n useEffect(() => {\n const user = getCurrentUser();\n if (user) {\n setState(user);\n setIsLoading(false);\n return;\n }\n setIsLoading(false);\n }, []);\n\n const syncLogout = React.useCallback((e) => {\n if (e.key === \"authUser\" && e.oldValue && !e.newValue) {\n logout();\n setState(null);\n }\n }, []);\n // syncing auth state on different tabs\n useEffect(() => {\n window.addEventListener(\"storage\", syncLogout);\n return () => window.removeEventListener(\"storage\", syncLogout);\n }, [syncLogout]);\n\n return (\n \n {children}\n \n );\n};\n\nexport const useAuth = () => useContext(AuthContext);\n","import { useEffect } from \"react\";\nconst useAnalytics = (children) => {\n\n const isBrowser = typeof window !== \"undefined\"\n const href = isBrowser ? window.location.href : undefined;\n useEffect(() => {\n if(window?.OnetrustActiveGroups !== undefined){\n let pardotConsent = (window?.OnetrustActiveGroups?.indexOf('V1') !== -1 ) || ((window?.OnetrustActiveGroups?.indexOf('C0002') !== -1) && (window?.OnetrustActiveGroups?.indexOf('C0004') !== -1));\n window.pdt('hideConsentBanner', pardotConsent);\n if (pardotConsent){\n window?.pdt('sendPageView');\n }\n }\n function gtag() { window?.dataLayer?.push(arguments); }\n typeof gtag == 'function' && gtag('set', 'page_path', window?.location.pathname);\n typeof gtag == 'function' && gtag('event', 'page_view');\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [href]);\n // // An example site function that returns the visitor opt in preference\n // // from a third party consent manager getConsentStatus();\n // let thirdPartyConsentStatus = getConsentStatus();\n\n // // Update Account Engagement analytics opt in status to match\n // window?.pdt('setOptIn', thirdPartyConsentStatus);\n};\nexport default useAnalytics;\n","import React from \"react\";\nimport { Link } from \"gatsby\";\nimport Modal from \"./Modal\";\nimport slugify from \"../util/slugify\";\n\nfunction Menu({ title, ariaLabel, items, description, setMenuOpen }) {\n const attrs = ariaLabel ? { \"aria-label\": ariaLabel } : {};\n const [activeSubmenu, setActiveSubmenu] = React.useState(null);\n const [modalShow, setModalShow] = React.useState(false);\n const [height, setHeight] = React.useState(500);\n return (\n <>\n \n {modalShow && (\n \n