{"mappings":"A,C,SiCGI,EAgBA,EAqDA,E,S,E,C,C,C,C,C,C,C,E,O,c,C,E,E,C,I,E,I,E,W,C,E,a,C,C,E,C,IuGlDqC,EACnC,EACA,EACA,EXDwB,EAAK,E+BQc,E,E,W,S,E,C,E,O,G,E,U,C,E,O,C,C,C,I,E,C,E,E,C,E,E,E,iB,A,O,I,A,C,E,S,C,E,G,K,E,O,C,C,E,C,O,C,G,K,E,C,I,E,C,C,E,A,Q,C,C,E,C,I,E,C,G,E,Q,C,C,E,O,C,C,E,C,E,E,I,C,E,O,C,E,E,O,E,E,O,A,C,I,E,A,M,uB,E,I,O,E,I,C,mB,C,C,E,Q,C,S,C,C,C,E,C,C,E,C,C,E,E,iB,C,G,I,E,E,Q,C,E,Q,S,C,C,C,E,E,E,O,C,U,I,I,E,E,O,C,iB,I,I,E,E,O,C,M,I,I,E,E,O,C,O,I,I,E,E,O,C,gB,I,I,E,E,O,C,kB,I,I,E,E,O,C,M,I,I,E,E,O,C,iB,I,I,E,E,O,C,Y,I,I,E,E,O,C,I,I,I,E,E,O,C,S,I,I,E,E,O,C,sB,I,I,E,E,O,C,qB,I,I,E,E,O,C,iB,I,I,E,E,O,C,gB,I,I,I,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S,E,E,S3JtBjD,SAAS,EAAU,CAAM,CAAE,CAAc,EAAI,IAAI,EAAO,OAAO,IAAI,CAAC,GAAS,GAAI,OAAO,qBAAqB,CAAE,CAAE,IAAI,EAAU,OAAO,qBAAqB,CAAC,EAAS,CAAA,GAAmB,CAAA,EAAU,EAAQ,MAAM,CAAC,SAAU,CAAG,EAAI,OAAO,OAAO,wBAAwB,CAAC,EAAQ,GAAK,UAAU,AAAE,EAAA,EAAK,EAAK,IAAI,CAAC,KAAK,CAAC,EAAM,EAAU,CAAE,OAAO,CAAM,CACtV,SAAS,EAAgB,CAAM,EAAI,IAAK,IAAI,EAAI,EAAG,EAAI,UAAU,MAAM,CAAE,IAAK,CAAE,IAAI,EAAS,MAAQ,SAAS,CAAC,EAAE,CAAG,SAAS,CAAC,EAAE,CAAG,CAAC,CAAG,CAAA,EAAI,EAAI,EAAU,OAAO,GAAS,CAAC,GAAG,OAAO,CAAC,SAAU,CAAG,EAAI,AAAA,CAAA,EAAA,EAAA,OAAc,AAAd,EAAgB,EAAQ,EAAK,CA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","sources":["<anon>","node_modules/i18next/dist/esm/i18next.js","node_modules/@babel/runtime/helpers/esm/typeof.js","node_modules/@babel/runtime/helpers/esm/classCallCheck.js","node_modules/@babel/runtime/helpers/esm/createClass.js","node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","node_modules/@babel/runtime/helpers/esm/toPrimitive.js","node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","node_modules/@babel/runtime/helpers/esm/inherits.js","node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","node_modules/@babel/runtime/helpers/esm/defineProperty.js","node_modules/@babel/runtime/helpers/esm/toArray.js","node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","node_modules/@babel/runtime/helpers/esm/iterableToArray.js","node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","node_modules/lazysizes/lazysizes.js","node_modules/algoliasearch-helper/src/version.js","node_modules/hogan.js/lib/template.js","parcel/main.js","parcel/js/i18n.js","parcel/js/config.js","parcel/js/index.js","node_modules/alpinejs/dist/module.esm.js","node_modules/@alpinejs/persist/dist/module.esm.js","node_modules/@ryangjchandler/alpine-clipboard/src/index.js","node_modules/prismjs/prism.js","node_modules/prismjs/components/prism-bash.js","node_modules/prismjs/plugins/line-numbers/prism-line-numbers.js","node_modules/swiper/swiper.mjs","node_modules/swiper/shared/swiper-core.mjs","node_modules/swiper/shared/ssr-window.esm.mjs","node_modules/swiper/shared/utils.mjs","node_modules/swiper/modules/index.mjs","node_modules/swiper/modules/virtual.mjs","node_modules/swiper/modules/keyboard.mjs","node_modules/swiper/modules/mousewheel.mjs","node_modules/swiper/modules/navigation.mjs","node_modules/swiper/shared/create-element-if-not-defined.mjs","node_modules/swiper/modules/pagination.mjs","node_modules/swiper/shared/classes-to-selector.mjs","node_modules/swiper/modules/scrollbar.mjs","node_modules/swiper/modules/parallax.mjs","node_modules/swiper/modules/zoom.mjs","node_modules/swiper/modules/controller.mjs","node_modules/swiper/modules/a11y.mjs","node_modules/swiper/modules/history.mjs","node_modules/swiper/modules/hash-navigation.mjs","node_modules/swiper/modules/autoplay.mjs","node_modules/swiper/modules/thumbs.mjs","node_modules/swiper/modules/free-mode.mjs","node_modules/swiper/modules/grid.mjs","node_modules/swiper/modules/manipulation.mjs","node_modules/swiper/modules/effect-fade.mjs","node_modules/swiper/shared/effect-init.mjs","node_modules/swiper/shared/effect-target.mjs","node_modules/swiper/shared/effect-virtual-transition-end.mjs","node_modules/swiper/modules/effect-cube.mjs","node_modules/swiper/modules/effect-flip.mjs","node_modules/swiper/shared/create-shadow.mjs","node_modules/swiper/modules/effect-coverflow.mjs","node_modules/swiper/modules/effect-creative.mjs","node_modules/swiper/modules/effect-cards.mjs","node_modules/lazysizes/plugins/parent-fit/ls.parent-fit.js","node_modules/medium-zoom/dist/medium-zoom.esm.js","parcel/js/algolia.js","node_modules/instantsearch.js/es/widgets/configure/configure.js","node_modules/instantsearch.js/es/connectors/configure/connectConfigure.js","node_modules/algoliasearch-helper/index.js","node_modules/algoliasearch-helper/src/algoliasearch.helper.js","node_modules/algoliasearch-helper/src/SearchParameters/index.js","node_modules/algoliasearch-helper/src/functions/merge.js","node_modules/algoliasearch-helper/src/functions/defaultsPure.js","node_modules/algoliasearch-helper/src/functions/intersection.js","node_modules/algoliasearch-helper/src/functions/find.js","node_modules/algoliasearch-helper/src/functions/valToNumber.js","node_modules/algoliasearch-helper/src/functions/omit.js","node_modules/algoliasearch-helper/src/functions/objectHasKeys.js","node_modules/algoliasearch-helper/src/utils/isValidUserToken.js","node_modules/algoliasearch-helper/src/SearchParameters/RefinementList.js","node_modules/algoliasearch-helper/src/SearchResults/index.js","node_modules/algoliasearch-helper/src/functions/orderBy.js","node_modules/algoliasearch-helper/src/functions/compact.js","node_modules/algoliasearch-helper/src/functions/findIndex.js","node_modules/algoliasearch-helper/src/functions/formatSort.js","node_modules/algoliasearch-helper/src/functions/escapeFacetValue.js","node_modules/algoliasearch-helper/src/SearchResults/generate-hierarchical-tree.js","node_modules/algoliasearch-helper/src/DerivedHelper/index.js","node_modules/@algolia/events/events.js","node_modules/algoliasearch-helper/src/functions/inherits.js","node_modules/algoliasearch-helper/src/requestBuilder.js","node_modules/instantsearch.js/es/lib/utils/documentation.js","node_modules/instantsearch.js/es/lib/utils/isPlainObject.js","node_modules/instantsearch.js/es/lib/utils/mergeSearchParameters.js","node_modules/instantsearch.js/es/lib/utils/findIndex.js","node_modules/instantsearch.js/es/lib/utils/uniq.js","node_modules/instantsearch.js/es/lib/utils/noop.js","node_modules/instantsearch.js/es/widgets/hits/hits.js","node_modules/preact/dist/preact.module.js","node_modules/preact/src/util.js","node_modules/preact/src/options.js","node_modules/preact/src/create-element.js","node_modules/preact/src/component.js","node_modules/preact/src/create-context.js","node_modules/preact/src/constants.js","node_modules/preact/src/diff/children.js","node_modules/preact/src/diff/props.js","node_modules/preact/src/diff/index.js","node_modules/preact/src/render.js","node_modules/preact/src/clone-element.js","node_modules/preact/src/diff/catch-error.js","node_modules/classnames/index.js","node_modules/instantsearch.js/es/connectors/hits/connectHits.js","node_modules/instantsearch.js/es/lib/utils/hits-absolute-position.js","node_modules/instantsearch.js/es/lib/utils/hits-query-id.js","node_modules/instantsearch.js/es/lib/utils/checkRendering.js","node_modules/instantsearch.js/es/lib/utils/getObjectType.js","node_modules/instantsearch.js/es/lib/utils/createSendEventForHits.js","node_modules/instantsearch.js/es/lib/utils/serializer.js","node_modules/instantsearch.js/es/lib/utils/escape-highlight.js","node_modules/instantsearch.js/es/lib/utils/escape-html.js","node_modules/instantsearch.js/es/components/Hits/Hits.js","node_modules/instantsearch.js/es/components/Template/Template.js","node_modules/instantsearch.js/es/lib/utils/isEqual.js","node_modules/instantsearch.js/es/lib/templating/renderTemplate.js","node_modules/hogan.js/lib/hogan.js","node_modules/hogan.js/lib/compiler.js","node_modules/htm/preact/index.module.js","node_modules/htm/dist/htm.module.js","node_modules/instantsearch.js/es/helpers/components/Highlight.js","node_modules/instantsearch.js/es/components/Highlight/Highlight.js","node_modules/@algolia/ui-components-shared/dist/esm/cx.js","node_modules/instantsearch.js/es/components/InternalHighlight/InternalHighlight.js","node_modules/@algolia/ui-components-highlight-vdom/dist/esm/Highlight.js","node_modules/@babel/runtime/helpers/extends.js","node_modules/@babel/runtime/helpers/objectWithoutProperties.js","node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","node_modules/instantsearch.js/es/lib/utils/getHighlightedParts.js","node_modules/instantsearch.js/es/lib/utils/getPropertyByPath.js","node_modules/instantsearch.js/es/lib/utils/toArray.js","node_modules/instantsearch.js/es/helpers/components/ReverseHighlight.js","node_modules/instantsearch.js/es/components/ReverseHighlight/ReverseHighlight.js","node_modules/instantsearch.js/es/helpers/components/ReverseSnippet.js","node_modules/instantsearch.js/es/components/ReverseSnippet/ReverseSnippet.js","node_modules/instantsearch.js/es/helpers/components/Snippet.js","node_modules/instantsearch.js/es/components/Snippet/Snippet.js","node_modules/instantsearch.js/es/widgets/hits/defaultTemplates.js","node_modules/instantsearch.js/es/lib/utils/getContainerNode.js","node_modules/instantsearch.js/es/lib/utils/isDomElement.js","node_modules/instantsearch.js/es/lib/templating/prepareTemplateProps.js","node_modules/instantsearch.js/es/lib/suit.js","node_modules/instantsearch.js/es/lib/insights/client.js","node_modules/instantsearch.js/es/lib/utils/find.js","node_modules/instantsearch.js/es/lib/insights/listener.js","node_modules/instantsearch.js/es/helpers/insights.js","node_modules/instantsearch.js/es/widgets/menu/menu.js","node_modules/instantsearch.js/es/components/RefinementList/RefinementList.js","node_modules/instantsearch.js/es/lib/utils/isSpecialClick.js","node_modules/instantsearch.js/es/components/RefinementList/RefinementListItem.js","node_modules/instantsearch.js/es/components/SearchBox/SearchBox.js","node_modules/instantsearch.js/es/connectors/menu/connectMenu.js","node_modules/instantsearch.js/es/lib/utils/createSendEventForFacet.js","node_modules/instantsearch.js/es/lib/utils/isFacetRefined.js","node_modules/instantsearch.js/es/widgets/menu/defaultTemplates.js","node_modules/instantsearch.js/es/lib/formatNumber.js","node_modules/instantsearch.js/es/lib/utils/cx.js","node_modules/instantsearch.js/es/widgets/pagination/pagination.js","node_modules/instantsearch.js/es/components/Pagination/Pagination.js","node_modules/instantsearch.js/es/connectors/pagination/connectPagination.js","node_modules/instantsearch.js/es/connectors/pagination/Paginator.js","node_modules/instantsearch.js/es/lib/utils/range.js","node_modules/instantsearch.js/es/widgets/search-box/search-box.js","node_modules/instantsearch.js/es/connectors/search-box/connectSearchBox.js","node_modules/instantsearch.js/es/widgets/search-box/defaultTemplates.js","node_modules/algoliasearch/dist/algoliasearch-lite.umd.js","node_modules/instantsearch.js/es/index.js","node_modules/instantsearch.js/es/lib/InstantSearch.js","node_modules/instantsearch.js/es/widgets/index/index.js","node_modules/instantsearch.js/es/lib/utils/isIndexWidget.js","node_modules/instantsearch.js/es/lib/utils/resolveSearchParameters.js","node_modules/instantsearch.js/es/lib/version.js","node_modules/instantsearch.js/es/lib/createHelpers.js","node_modules/instantsearch.js/es/helpers/highlight.js","node_modules/instantsearch.js/es/helpers/reverseHighlight.js","node_modules/instantsearch.js/es/lib/utils/concatHighlightedParts.js","node_modules/instantsearch.js/es/lib/utils/reverseHighlightedParts.js","node_modules/instantsearch.js/es/lib/utils/getHighlightFromSiblings.js","node_modules/instantsearch.js/es/helpers/reverseSnippet.js","node_modules/instantsearch.js/es/helpers/snippet.js","node_modules/instantsearch.js/es/lib/utils/defer.js","node_modules/instantsearch.js/es/lib/utils/setIndexHelperState.js","node_modules/instantsearch.js/es/middlewares/createRouterMiddleware.js","node_modules/instantsearch.js/es/lib/stateMappings/simple.js","node_modules/instantsearch.js/es/lib/routers/history.js","node_modules/qs/lib/index.js","node_modules/qs/lib/stringify.js","node_modules/qs/lib/utils.js","node_modules/qs/lib/formats.js","node_modules/qs/lib/parse.js","node_modules/instantsearch.js/es/lib/utils/safelyRunOnBrowser.js","node_modules/instantsearch.js/es/middlewares/createMetadataMiddleware.js","node_modules/instantsearch.js/es/helpers/get-insights-anonymous-user-token.js","node_modules/instantsearch.js/es/lib/infiniteHitsCache/sessionStorage.js","node_modules/instantsearch.js/es/lib/utils/logger.js","parcel/js/event.js"],"sourcesContent":["(() => {\n\nfunction $parcel$export(e, n, v, s) {\n  Object.defineProperty(e, n, {get: v, set: s, enumerable: true, configurable: true});\n}\n\n      var $parcel$global = globalThis;\n    \nfunction $parcel$interopDefault(a) {\n  return a && a.__esModule ? a.default : a;\n}\n\nvar $parcel$modules = {};\nvar $parcel$inits = {};\n\nvar parcelRequire = $parcel$global[\"parcelRequirececb\"];\n\nif (parcelRequire == null) {\n  parcelRequire = function(id) {\n    if (id in $parcel$modules) {\n      return $parcel$modules[id].exports;\n    }\n    if (id in $parcel$inits) {\n      var init = $parcel$inits[id];\n      delete $parcel$inits[id];\n      var module = {id: id, exports: {}};\n      $parcel$modules[id] = module;\n      init.call(module.exports, module, module.exports);\n      return module.exports;\n    }\n    var err = new Error(\"Cannot find module '\" + id + \"'\");\n    err.code = 'MODULE_NOT_FOUND';\n    throw err;\n  };\n\n  parcelRequire.register = function register(id, init) {\n    $parcel$inits[id] = init;\n  };\n\n  $parcel$global[\"parcelRequirececb\"] = parcelRequire;\n}\n\nvar parcelRegister = parcelRequire.register;\nparcelRegister(\"l5cY7\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", () => instance);\n$parcel$export(module.exports, \"createInstance\", () => createInstance);\n$parcel$export(module.exports, \"dir\", () => dir);\n$parcel$export(module.exports, \"init\", () => init);\n$parcel$export(module.exports, \"loadResources\", () => loadResources);\n$parcel$export(module.exports, \"reloadResources\", () => reloadResources);\n$parcel$export(module.exports, \"use\", () => use);\n$parcel$export(module.exports, \"changeLanguage\", () => changeLanguage);\n$parcel$export(module.exports, \"getFixedT\", () => getFixedT);\n$parcel$export(module.exports, \"t\", () => t);\n$parcel$export(module.exports, \"exists\", () => exists);\n$parcel$export(module.exports, \"setDefaultNamespace\", () => setDefaultNamespace);\n$parcel$export(module.exports, \"hasLoadedNamespace\", () => hasLoadedNamespace);\n$parcel$export(module.exports, \"loadNamespaces\", () => loadNamespaces);\n$parcel$export(module.exports, \"loadLanguages\", () => loadLanguages);\n\nvar $jOMXy = parcelRequire(\"jOMXy\");\n\nvar $dM0Cr = parcelRequire(\"dM0Cr\");\n\nvar $lRfe8 = parcelRequire(\"lRfe8\");\n\nvar $1oVxX = parcelRequire(\"1oVxX\");\n\nvar $1UPzg = parcelRequire(\"1UPzg\");\n\nvar $aEHZE = parcelRequire(\"aEHZE\");\n\nvar $aKKvr = parcelRequire(\"aKKvr\");\n\nvar $2qeFG = parcelRequire(\"2qeFG\");\n\nvar $ALbeL = parcelRequire(\"ALbeL\");\nfunction ownKeys$6(object, enumerableOnly) {\n    var keys = Object.keys(object);\n    if (Object.getOwnPropertySymbols) {\n        var symbols = Object.getOwnPropertySymbols(object);\n        enumerableOnly && (symbols = symbols.filter(function(sym) {\n            return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n        })), keys.push.apply(keys, symbols);\n    }\n    return keys;\n}\nfunction _objectSpread$6(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = null != arguments[i] ? arguments[i] : {};\n        i % 2 ? ownKeys$6(Object(source), !0).forEach(function(key) {\n            (0, $2qeFG.default)(target, key, source[key]);\n        }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$6(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nvar consoleLogger = {\n    type: \"logger\",\n    log: function log(args) {\n        this.output(\"log\", args);\n    },\n    warn: function warn(args) {\n        this.output(\"warn\", args);\n    },\n    error: function error(args) {\n        this.output(\"error\", args);\n    },\n    output: function output(type, args) {\n        if (console && console[type]) console[type].apply(console, args);\n    }\n};\nvar Logger = function() {\n    function Logger(concreteLogger) {\n        var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n        (0, $dM0Cr.default)(this, Logger);\n        this.init(concreteLogger, options);\n    }\n    (0, $lRfe8.default)(Logger, [\n        {\n            key: \"init\",\n            value: function init(concreteLogger) {\n                var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n                this.prefix = options.prefix || \"i18next:\";\n                this.logger = concreteLogger || consoleLogger;\n                this.options = options;\n                this.debug = options.debug;\n            }\n        },\n        {\n            key: \"setDebug\",\n            value: function setDebug(bool) {\n                this.debug = bool;\n            }\n        },\n        {\n            key: \"log\",\n            value: function log() {\n                for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++)args[_key] = arguments[_key];\n                return this.forward(args, \"log\", \"\", true);\n            }\n        },\n        {\n            key: \"warn\",\n            value: function warn() {\n                for(var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++)args[_key2] = arguments[_key2];\n                return this.forward(args, \"warn\", \"\", true);\n            }\n        },\n        {\n            key: \"error\",\n            value: function error() {\n                for(var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++)args[_key3] = arguments[_key3];\n                return this.forward(args, \"error\", \"\");\n            }\n        },\n        {\n            key: \"deprecate\",\n            value: function deprecate() {\n                for(var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++)args[_key4] = arguments[_key4];\n                return this.forward(args, \"warn\", \"WARNING DEPRECATED: \", true);\n            }\n        },\n        {\n            key: \"forward\",\n            value: function forward(args, lvl, prefix, debugOnly) {\n                if (debugOnly && !this.debug) return null;\n                if (typeof args[0] === \"string\") args[0] = \"\".concat(prefix).concat(this.prefix, \" \").concat(args[0]);\n                return this.logger[lvl](args);\n            }\n        },\n        {\n            key: \"create\",\n            value: function create(moduleName) {\n                return new Logger(this.logger, _objectSpread$6(_objectSpread$6({}, {\n                    prefix: \"\".concat(this.prefix, \":\").concat(moduleName, \":\")\n                }), this.options));\n            }\n        },\n        {\n            key: \"clone\",\n            value: function clone(options) {\n                options = options || this.options;\n                options.prefix = options.prefix || this.prefix;\n                return new Logger(this.logger, options);\n            }\n        }\n    ]);\n    return Logger;\n}();\nvar baseLogger = new Logger();\nvar EventEmitter = function() {\n    function EventEmitter() {\n        (0, $dM0Cr.default)(this, EventEmitter);\n        this.observers = {};\n    }\n    (0, $lRfe8.default)(EventEmitter, [\n        {\n            key: \"on\",\n            value: function on(events, listener) {\n                var _this = this;\n                events.split(\" \").forEach(function(event) {\n                    _this.observers[event] = _this.observers[event] || [];\n                    _this.observers[event].push(listener);\n                });\n                return this;\n            }\n        },\n        {\n            key: \"off\",\n            value: function off(event, listener) {\n                if (!this.observers[event]) return;\n                if (!listener) {\n                    delete this.observers[event];\n                    return;\n                }\n                this.observers[event] = this.observers[event].filter(function(l) {\n                    return l !== listener;\n                });\n            }\n        },\n        {\n            key: \"emit\",\n            value: function emit(event) {\n                for(var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++)args[_key - 1] = arguments[_key];\n                if (this.observers[event]) {\n                    var cloned = [].concat(this.observers[event]);\n                    cloned.forEach(function(observer) {\n                        observer.apply(void 0, args);\n                    });\n                }\n                if (this.observers[\"*\"]) {\n                    var _cloned = [].concat(this.observers[\"*\"]);\n                    _cloned.forEach(function(observer) {\n                        observer.apply(observer, [\n                            event\n                        ].concat(args));\n                    });\n                }\n            }\n        }\n    ]);\n    return EventEmitter;\n}();\nfunction defer() {\n    var res;\n    var rej;\n    var promise = new Promise(function(resolve, reject) {\n        res = resolve;\n        rej = reject;\n    });\n    promise.resolve = res;\n    promise.reject = rej;\n    return promise;\n}\nfunction makeString(object) {\n    if (object == null) return \"\";\n    return \"\" + object;\n}\nfunction copy(a, s, t) {\n    a.forEach(function(m) {\n        if (s[m]) t[m] = s[m];\n    });\n}\nfunction getLastOfPath(object, path, Empty) {\n    function cleanKey(key) {\n        return key && key.indexOf(\"###\") > -1 ? key.replace(/###/g, \".\") : key;\n    }\n    function canNotTraverseDeeper() {\n        return !object || typeof object === \"string\";\n    }\n    var stack = typeof path !== \"string\" ? [].concat(path) : path.split(\".\");\n    while(stack.length > 1){\n        if (canNotTraverseDeeper()) return {};\n        var key = cleanKey(stack.shift());\n        if (!object[key] && Empty) object[key] = new Empty();\n        if (Object.prototype.hasOwnProperty.call(object, key)) object = object[key];\n        else object = {};\n    }\n    if (canNotTraverseDeeper()) return {};\n    return {\n        obj: object,\n        k: cleanKey(stack.shift())\n    };\n}\nfunction setPath(object, path, newValue) {\n    var _getLastOfPath = getLastOfPath(object, path, Object), obj = _getLastOfPath.obj, k = _getLastOfPath.k;\n    obj[k] = newValue;\n}\nfunction pushPath(object, path, newValue, concat) {\n    var _getLastOfPath2 = getLastOfPath(object, path, Object), obj = _getLastOfPath2.obj, k = _getLastOfPath2.k;\n    obj[k] = obj[k] || [];\n    if (concat) obj[k] = obj[k].concat(newValue);\n    if (!concat) obj[k].push(newValue);\n}\nfunction getPath(object, path) {\n    var _getLastOfPath3 = getLastOfPath(object, path), obj = _getLastOfPath3.obj, k = _getLastOfPath3.k;\n    if (!obj) return undefined;\n    return obj[k];\n}\nfunction getPathWithDefaults(data, defaultData, key) {\n    var value = getPath(data, key);\n    if (value !== undefined) return value;\n    return getPath(defaultData, key);\n}\nfunction deepExtend(target, source, overwrite) {\n    for(var prop in source)if (prop !== \"__proto__\" && prop !== \"constructor\") {\n        if (prop in target) {\n            if (typeof target[prop] === \"string\" || target[prop] instanceof String || typeof source[prop] === \"string\" || source[prop] instanceof String) {\n                if (overwrite) target[prop] = source[prop];\n            } else deepExtend(target[prop], source[prop], overwrite);\n        } else target[prop] = source[prop];\n    }\n    return target;\n}\nfunction regexEscape(str) {\n    return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, \"\\\\$&\");\n}\nvar _entityMap = {\n    \"&\": \"&amp;\",\n    \"<\": \"&lt;\",\n    \">\": \"&gt;\",\n    '\"': \"&quot;\",\n    \"'\": \"&#39;\",\n    \"/\": \"&#x2F;\"\n};\nfunction escape(data) {\n    if (typeof data === \"string\") return data.replace(/[&<>\"'\\/]/g, function(s) {\n        return _entityMap[s];\n    });\n    return data;\n}\nvar isIE10 = typeof window !== \"undefined\" && window.navigator && typeof window.navigator.userAgentData === \"undefined\" && window.navigator.userAgent && window.navigator.userAgent.indexOf(\"MSIE\") > -1;\nvar chars = [\n    \" \",\n    \",\",\n    \"?\",\n    \"!\",\n    \";\"\n];\nfunction looksLikeObjectPath(key, nsSeparator, keySeparator) {\n    nsSeparator = nsSeparator || \"\";\n    keySeparator = keySeparator || \"\";\n    var possibleChars = chars.filter(function(c) {\n        return nsSeparator.indexOf(c) < 0 && keySeparator.indexOf(c) < 0;\n    });\n    if (possibleChars.length === 0) return true;\n    var r = new RegExp(\"(\".concat(possibleChars.map(function(c) {\n        return c === \"?\" ? \"\\\\?\" : c;\n    }).join(\"|\"), \")\"));\n    var matched = !r.test(key);\n    if (!matched) {\n        var ki = key.indexOf(keySeparator);\n        if (ki > 0 && !r.test(key.substring(0, ki))) matched = true;\n    }\n    return matched;\n}\nfunction deepFind(obj, path) {\n    var keySeparator = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : \".\";\n    if (!obj) return undefined;\n    if (obj[path]) return obj[path];\n    var paths = path.split(keySeparator);\n    var current = obj;\n    for(var i = 0; i < paths.length; ++i){\n        if (!current) return undefined;\n        if (typeof current[paths[i]] === \"string\" && i + 1 < paths.length) return undefined;\n        if (current[paths[i]] === undefined) {\n            var j = 2;\n            var p = paths.slice(i, i + j).join(keySeparator);\n            var mix = current[p];\n            while(mix === undefined && paths.length > i + j){\n                j++;\n                p = paths.slice(i, i + j).join(keySeparator);\n                mix = current[p];\n            }\n            if (mix === undefined) return undefined;\n            if (mix === null) return null;\n            if (path.endsWith(p)) {\n                if (typeof mix === \"string\") return mix;\n                if (p && typeof mix[p] === \"string\") return mix[p];\n            }\n            var joinedPath = paths.slice(i + j).join(keySeparator);\n            if (joinedPath) return deepFind(mix, joinedPath, keySeparator);\n            return undefined;\n        }\n        current = current[paths[i]];\n    }\n    return current;\n}\nfunction ownKeys$5(object, enumerableOnly) {\n    var keys = Object.keys(object);\n    if (Object.getOwnPropertySymbols) {\n        var symbols = Object.getOwnPropertySymbols(object);\n        enumerableOnly && (symbols = symbols.filter(function(sym) {\n            return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n        })), keys.push.apply(keys, symbols);\n    }\n    return keys;\n}\nfunction _objectSpread$5(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = null != arguments[i] ? arguments[i] : {};\n        i % 2 ? ownKeys$5(Object(source), !0).forEach(function(key) {\n            (0, $2qeFG.default)(target, key, source[key]);\n        }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$5(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nfunction _createSuper$3(Derived) {\n    var hasNativeReflectConstruct = _isNativeReflectConstruct$3();\n    return function _createSuperInternal() {\n        var Super = (0, $aKKvr.default)(Derived), result;\n        if (hasNativeReflectConstruct) {\n            var NewTarget = (0, $aKKvr.default)(this).constructor;\n            result = Reflect.construct(Super, arguments, NewTarget);\n        } else result = Super.apply(this, arguments);\n        return (0, $aEHZE.default)(this, result);\n    };\n}\nfunction _isNativeReflectConstruct$3() {\n    if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n    if (Reflect.construct.sham) return false;\n    if (typeof Proxy === \"function\") return true;\n    try {\n        Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n        return true;\n    } catch (e) {\n        return false;\n    }\n}\nvar ResourceStore = function(_EventEmitter) {\n    (0, $1UPzg.default)(ResourceStore, _EventEmitter);\n    var _super = _createSuper$3(ResourceStore);\n    function ResourceStore(data) {\n        var _this;\n        var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n            ns: [\n                \"translation\"\n            ],\n            defaultNS: \"translation\"\n        };\n        (0, $dM0Cr.default)(this, ResourceStore);\n        _this = _super.call(this);\n        if (isIE10) EventEmitter.call((0, $1oVxX.default)(_this));\n        _this.data = data || {};\n        _this.options = options;\n        if (_this.options.keySeparator === undefined) _this.options.keySeparator = \".\";\n        if (_this.options.ignoreJSONStructure === undefined) _this.options.ignoreJSONStructure = true;\n        return _this;\n    }\n    (0, $lRfe8.default)(ResourceStore, [\n        {\n            key: \"addNamespaces\",\n            value: function addNamespaces(ns) {\n                if (this.options.ns.indexOf(ns) < 0) this.options.ns.push(ns);\n            }\n        },\n        {\n            key: \"removeNamespaces\",\n            value: function removeNamespaces(ns) {\n                var index = this.options.ns.indexOf(ns);\n                if (index > -1) this.options.ns.splice(index, 1);\n            }\n        },\n        {\n            key: \"getResource\",\n            value: function getResource(lng, ns, key) {\n                var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n                var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n                var ignoreJSONStructure = options.ignoreJSONStructure !== undefined ? options.ignoreJSONStructure : this.options.ignoreJSONStructure;\n                var path = [\n                    lng,\n                    ns\n                ];\n                if (key && typeof key !== \"string\") path = path.concat(key);\n                if (key && typeof key === \"string\") path = path.concat(keySeparator ? key.split(keySeparator) : key);\n                if (lng.indexOf(\".\") > -1) path = lng.split(\".\");\n                var result = getPath(this.data, path);\n                if (result || !ignoreJSONStructure || typeof key !== \"string\") return result;\n                return deepFind(this.data && this.data[lng] && this.data[lng][ns], key, keySeparator);\n            }\n        },\n        {\n            key: \"addResource\",\n            value: function addResource(lng, ns, key, value) {\n                var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n                    silent: false\n                };\n                var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n                var path = [\n                    lng,\n                    ns\n                ];\n                if (key) path = path.concat(keySeparator ? key.split(keySeparator) : key);\n                if (lng.indexOf(\".\") > -1) {\n                    path = lng.split(\".\");\n                    value = ns;\n                    ns = path[1];\n                }\n                this.addNamespaces(ns);\n                setPath(this.data, path, value);\n                if (!options.silent) this.emit(\"added\", lng, ns, key, value);\n            }\n        },\n        {\n            key: \"addResources\",\n            value: function addResources(lng, ns, resources) {\n                var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {\n                    silent: false\n                };\n                for(var m in resources)if (typeof resources[m] === \"string\" || Object.prototype.toString.apply(resources[m]) === \"[object Array]\") this.addResource(lng, ns, m, resources[m], {\n                    silent: true\n                });\n                if (!options.silent) this.emit(\"added\", lng, ns, resources);\n            }\n        },\n        {\n            key: \"addResourceBundle\",\n            value: function addResourceBundle(lng, ns, resources, deep, overwrite) {\n                var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {\n                    silent: false\n                };\n                var path = [\n                    lng,\n                    ns\n                ];\n                if (lng.indexOf(\".\") > -1) {\n                    path = lng.split(\".\");\n                    deep = resources;\n                    resources = ns;\n                    ns = path[1];\n                }\n                this.addNamespaces(ns);\n                var pack = getPath(this.data, path) || {};\n                if (deep) deepExtend(pack, resources, overwrite);\n                else pack = _objectSpread$5(_objectSpread$5({}, pack), resources);\n                setPath(this.data, path, pack);\n                if (!options.silent) this.emit(\"added\", lng, ns, resources);\n            }\n        },\n        {\n            key: \"removeResourceBundle\",\n            value: function removeResourceBundle(lng, ns) {\n                if (this.hasResourceBundle(lng, ns)) delete this.data[lng][ns];\n                this.removeNamespaces(ns);\n                this.emit(\"removed\", lng, ns);\n            }\n        },\n        {\n            key: \"hasResourceBundle\",\n            value: function hasResourceBundle(lng, ns) {\n                return this.getResource(lng, ns) !== undefined;\n            }\n        },\n        {\n            key: \"getResourceBundle\",\n            value: function getResourceBundle(lng, ns) {\n                if (!ns) ns = this.options.defaultNS;\n                if (this.options.compatibilityAPI === \"v1\") return _objectSpread$5(_objectSpread$5({}, {}), this.getResource(lng, ns));\n                return this.getResource(lng, ns);\n            }\n        },\n        {\n            key: \"getDataByLanguage\",\n            value: function getDataByLanguage(lng) {\n                return this.data[lng];\n            }\n        },\n        {\n            key: \"hasLanguageSomeTranslations\",\n            value: function hasLanguageSomeTranslations(lng) {\n                var data = this.getDataByLanguage(lng);\n                var n = data && Object.keys(data) || [];\n                return !!n.find(function(v) {\n                    return data[v] && Object.keys(data[v]).length > 0;\n                });\n            }\n        },\n        {\n            key: \"toJSON\",\n            value: function toJSON() {\n                return this.data;\n            }\n        }\n    ]);\n    return ResourceStore;\n}(EventEmitter);\nvar postProcessor = {\n    processors: {},\n    addPostProcessor: function addPostProcessor(module) {\n        this.processors[module.name] = module;\n    },\n    handle: function handle(processors, value, key, options, translator) {\n        var _this = this;\n        processors.forEach(function(processor) {\n            if (_this.processors[processor]) value = _this.processors[processor].process(value, key, options, translator);\n        });\n        return value;\n    }\n};\nfunction ownKeys$4(object, enumerableOnly) {\n    var keys = Object.keys(object);\n    if (Object.getOwnPropertySymbols) {\n        var symbols = Object.getOwnPropertySymbols(object);\n        enumerableOnly && (symbols = symbols.filter(function(sym) {\n            return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n        })), keys.push.apply(keys, symbols);\n    }\n    return keys;\n}\nfunction _objectSpread$4(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = null != arguments[i] ? arguments[i] : {};\n        i % 2 ? ownKeys$4(Object(source), !0).forEach(function(key) {\n            (0, $2qeFG.default)(target, key, source[key]);\n        }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$4(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nfunction _createSuper$2(Derived) {\n    var hasNativeReflectConstruct = _isNativeReflectConstruct$2();\n    return function _createSuperInternal() {\n        var Super = (0, $aKKvr.default)(Derived), result;\n        if (hasNativeReflectConstruct) {\n            var NewTarget = (0, $aKKvr.default)(this).constructor;\n            result = Reflect.construct(Super, arguments, NewTarget);\n        } else result = Super.apply(this, arguments);\n        return (0, $aEHZE.default)(this, result);\n    };\n}\nfunction _isNativeReflectConstruct$2() {\n    if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n    if (Reflect.construct.sham) return false;\n    if (typeof Proxy === \"function\") return true;\n    try {\n        Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n        return true;\n    } catch (e) {\n        return false;\n    }\n}\nvar checkedLoadedFor = {};\nvar Translator = function(_EventEmitter) {\n    (0, $1UPzg.default)(Translator, _EventEmitter);\n    var _super = _createSuper$2(Translator);\n    function Translator(services) {\n        var _this;\n        var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n        (0, $dM0Cr.default)(this, Translator);\n        _this = _super.call(this);\n        if (isIE10) EventEmitter.call((0, $1oVxX.default)(_this));\n        copy([\n            \"resourceStore\",\n            \"languageUtils\",\n            \"pluralResolver\",\n            \"interpolator\",\n            \"backendConnector\",\n            \"i18nFormat\",\n            \"utils\"\n        ], services, (0, $1oVxX.default)(_this));\n        _this.options = options;\n        if (_this.options.keySeparator === undefined) _this.options.keySeparator = \".\";\n        _this.logger = baseLogger.create(\"translator\");\n        return _this;\n    }\n    (0, $lRfe8.default)(Translator, [\n        {\n            key: \"changeLanguage\",\n            value: function changeLanguage(lng) {\n                if (lng) this.language = lng;\n            }\n        },\n        {\n            key: \"exists\",\n            value: function exists(key) {\n                var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n                    interpolation: {}\n                };\n                if (key === undefined || key === null) return false;\n                var resolved = this.resolve(key, options);\n                return resolved && resolved.res !== undefined;\n            }\n        },\n        {\n            key: \"extractFromKey\",\n            value: function extractFromKey(key, options) {\n                var nsSeparator = options.nsSeparator !== undefined ? options.nsSeparator : this.options.nsSeparator;\n                if (nsSeparator === undefined) nsSeparator = \":\";\n                var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n                var namespaces = options.ns || this.options.defaultNS || [];\n                var wouldCheckForNsInKey = nsSeparator && key.indexOf(nsSeparator) > -1;\n                var seemsNaturalLanguage = !this.options.userDefinedKeySeparator && !options.keySeparator && !this.options.userDefinedNsSeparator && !options.nsSeparator && !looksLikeObjectPath(key, nsSeparator, keySeparator);\n                if (wouldCheckForNsInKey && !seemsNaturalLanguage) {\n                    var m = key.match(this.interpolator.nestingRegexp);\n                    if (m && m.length > 0) return {\n                        key: key,\n                        namespaces: namespaces\n                    };\n                    var parts = key.split(nsSeparator);\n                    if (nsSeparator !== keySeparator || nsSeparator === keySeparator && this.options.ns.indexOf(parts[0]) > -1) namespaces = parts.shift();\n                    key = parts.join(keySeparator);\n                }\n                if (typeof namespaces === \"string\") namespaces = [\n                    namespaces\n                ];\n                return {\n                    key: key,\n                    namespaces: namespaces\n                };\n            }\n        },\n        {\n            key: \"translate\",\n            value: function translate(keys, options, lastKey) {\n                var _this2 = this;\n                if ((0, $jOMXy.default)(options) !== \"object\" && this.options.overloadTranslationOptionHandler) options = this.options.overloadTranslationOptionHandler(arguments);\n                if ((0, $jOMXy.default)(options) === \"object\") options = _objectSpread$4({}, options);\n                if (!options) options = {};\n                if (keys === undefined || keys === null) return \"\";\n                if (!Array.isArray(keys)) keys = [\n                    String(keys)\n                ];\n                var returnDetails = options.returnDetails !== undefined ? options.returnDetails : this.options.returnDetails;\n                var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n                var _this$extractFromKey = this.extractFromKey(keys[keys.length - 1], options), key = _this$extractFromKey.key, namespaces = _this$extractFromKey.namespaces;\n                var namespace = namespaces[namespaces.length - 1];\n                var lng = options.lng || this.language;\n                var appendNamespaceToCIMode = options.appendNamespaceToCIMode || this.options.appendNamespaceToCIMode;\n                if (lng && lng.toLowerCase() === \"cimode\") {\n                    if (appendNamespaceToCIMode) {\n                        var nsSeparator = options.nsSeparator || this.options.nsSeparator;\n                        if (returnDetails) return {\n                            res: \"\".concat(namespace).concat(nsSeparator).concat(key),\n                            usedKey: key,\n                            exactUsedKey: key,\n                            usedLng: lng,\n                            usedNS: namespace\n                        };\n                        return \"\".concat(namespace).concat(nsSeparator).concat(key);\n                    }\n                    if (returnDetails) return {\n                        res: key,\n                        usedKey: key,\n                        exactUsedKey: key,\n                        usedLng: lng,\n                        usedNS: namespace\n                    };\n                    return key;\n                }\n                var resolved = this.resolve(keys, options);\n                var res = resolved && resolved.res;\n                var resUsedKey = resolved && resolved.usedKey || key;\n                var resExactUsedKey = resolved && resolved.exactUsedKey || key;\n                var resType = Object.prototype.toString.apply(res);\n                var noObject = [\n                    \"[object Number]\",\n                    \"[object Function]\",\n                    \"[object RegExp]\"\n                ];\n                var joinArrays = options.joinArrays !== undefined ? options.joinArrays : this.options.joinArrays;\n                var handleAsObjectInI18nFormat = !this.i18nFormat || this.i18nFormat.handleAsObject;\n                var handleAsObject = typeof res !== \"string\" && typeof res !== \"boolean\" && typeof res !== \"number\";\n                if (handleAsObjectInI18nFormat && res && handleAsObject && noObject.indexOf(resType) < 0 && !(typeof joinArrays === \"string\" && resType === \"[object Array]\")) {\n                    if (!options.returnObjects && !this.options.returnObjects) {\n                        if (!this.options.returnedObjectHandler) this.logger.warn(\"accessing an object - but returnObjects options is not enabled!\");\n                        var r = this.options.returnedObjectHandler ? this.options.returnedObjectHandler(resUsedKey, res, _objectSpread$4(_objectSpread$4({}, options), {}, {\n                            ns: namespaces\n                        })) : \"key '\".concat(key, \" (\").concat(this.language, \")' returned an object instead of string.\");\n                        if (returnDetails) {\n                            resolved.res = r;\n                            return resolved;\n                        }\n                        return r;\n                    }\n                    if (keySeparator) {\n                        var resTypeIsArray = resType === \"[object Array]\";\n                        var copy = resTypeIsArray ? [] : {};\n                        var newKeyToUse = resTypeIsArray ? resExactUsedKey : resUsedKey;\n                        for(var m in res)if (Object.prototype.hasOwnProperty.call(res, m)) {\n                            var deepKey = \"\".concat(newKeyToUse).concat(keySeparator).concat(m);\n                            copy[m] = this.translate(deepKey, _objectSpread$4(_objectSpread$4({}, options), {\n                                joinArrays: false,\n                                ns: namespaces\n                            }));\n                            if (copy[m] === deepKey) copy[m] = res[m];\n                        }\n                        res = copy;\n                    }\n                } else if (handleAsObjectInI18nFormat && typeof joinArrays === \"string\" && resType === \"[object Array]\") {\n                    res = res.join(joinArrays);\n                    if (res) res = this.extendTranslation(res, keys, options, lastKey);\n                } else {\n                    var usedDefault = false;\n                    var usedKey = false;\n                    var needsPluralHandling = options.count !== undefined && typeof options.count !== \"string\";\n                    var hasDefaultValue = Translator.hasDefaultValue(options);\n                    var defaultValueSuffix = needsPluralHandling ? this.pluralResolver.getSuffix(lng, options.count, options) : \"\";\n                    var defaultValue = options[\"defaultValue\".concat(defaultValueSuffix)] || options.defaultValue;\n                    if (!this.isValidLookup(res) && hasDefaultValue) {\n                        usedDefault = true;\n                        res = defaultValue;\n                    }\n                    if (!this.isValidLookup(res)) {\n                        usedKey = true;\n                        res = key;\n                    }\n                    var missingKeyNoValueFallbackToKey = options.missingKeyNoValueFallbackToKey || this.options.missingKeyNoValueFallbackToKey;\n                    var resForMissing = missingKeyNoValueFallbackToKey && usedKey ? undefined : res;\n                    var updateMissing = hasDefaultValue && defaultValue !== res && this.options.updateMissing;\n                    if (usedKey || usedDefault || updateMissing) {\n                        this.logger.log(updateMissing ? \"updateKey\" : \"missingKey\", lng, namespace, key, updateMissing ? defaultValue : res);\n                        if (keySeparator) {\n                            var fk = this.resolve(key, _objectSpread$4(_objectSpread$4({}, options), {}, {\n                                keySeparator: false\n                            }));\n                            if (fk && fk.res) this.logger.warn(\"Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.\");\n                        }\n                        var lngs = [];\n                        var fallbackLngs = this.languageUtils.getFallbackCodes(this.options.fallbackLng, options.lng || this.language);\n                        if (this.options.saveMissingTo === \"fallback\" && fallbackLngs && fallbackLngs[0]) for(var i = 0; i < fallbackLngs.length; i++)lngs.push(fallbackLngs[i]);\n                        else if (this.options.saveMissingTo === \"all\") lngs = this.languageUtils.toResolveHierarchy(options.lng || this.language);\n                        else lngs.push(options.lng || this.language);\n                        var send = function send(l, k, specificDefaultValue) {\n                            var defaultForMissing = hasDefaultValue && specificDefaultValue !== res ? specificDefaultValue : resForMissing;\n                            if (_this2.options.missingKeyHandler) _this2.options.missingKeyHandler(l, namespace, k, defaultForMissing, updateMissing, options);\n                            else if (_this2.backendConnector && _this2.backendConnector.saveMissing) _this2.backendConnector.saveMissing(l, namespace, k, defaultForMissing, updateMissing, options);\n                            _this2.emit(\"missingKey\", l, namespace, k, res);\n                        };\n                        if (this.options.saveMissing) {\n                            if (this.options.saveMissingPlurals && needsPluralHandling) lngs.forEach(function(language) {\n                                _this2.pluralResolver.getSuffixes(language, options).forEach(function(suffix) {\n                                    send([\n                                        language\n                                    ], key + suffix, options[\"defaultValue\".concat(suffix)] || defaultValue);\n                                });\n                            });\n                            else send(lngs, key, defaultValue);\n                        }\n                    }\n                    res = this.extendTranslation(res, keys, options, resolved, lastKey);\n                    if (usedKey && res === key && this.options.appendNamespaceToMissingKey) res = \"\".concat(namespace, \":\").concat(key);\n                    if ((usedKey || usedDefault) && this.options.parseMissingKeyHandler) {\n                        if (this.options.compatibilityAPI !== \"v1\") res = this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey ? \"\".concat(namespace, \":\").concat(key) : key, usedDefault ? res : undefined);\n                        else res = this.options.parseMissingKeyHandler(res);\n                    }\n                }\n                if (returnDetails) {\n                    resolved.res = res;\n                    return resolved;\n                }\n                return res;\n            }\n        },\n        {\n            key: \"extendTranslation\",\n            value: function extendTranslation(res, key, options, resolved, lastKey) {\n                var _this3 = this;\n                if (this.i18nFormat && this.i18nFormat.parse) res = this.i18nFormat.parse(res, _objectSpread$4(_objectSpread$4({}, this.options.interpolation.defaultVariables), options), resolved.usedLng, resolved.usedNS, resolved.usedKey, {\n                    resolved: resolved\n                });\n                else if (!options.skipInterpolation) {\n                    if (options.interpolation) this.interpolator.init(_objectSpread$4(_objectSpread$4({}, options), {\n                        interpolation: _objectSpread$4(_objectSpread$4({}, this.options.interpolation), options.interpolation)\n                    }));\n                    var skipOnVariables = typeof res === \"string\" && (options && options.interpolation && options.interpolation.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables);\n                    var nestBef;\n                    if (skipOnVariables) {\n                        var nb = res.match(this.interpolator.nestingRegexp);\n                        nestBef = nb && nb.length;\n                    }\n                    var data = options.replace && typeof options.replace !== \"string\" ? options.replace : options;\n                    if (this.options.interpolation.defaultVariables) data = _objectSpread$4(_objectSpread$4({}, this.options.interpolation.defaultVariables), data);\n                    res = this.interpolator.interpolate(res, data, options.lng || this.language, options);\n                    if (skipOnVariables) {\n                        var na = res.match(this.interpolator.nestingRegexp);\n                        var nestAft = na && na.length;\n                        if (nestBef < nestAft) options.nest = false;\n                    }\n                    if (!options.lng && this.options.compatibilityAPI !== \"v1\" && resolved && resolved.res) options.lng = resolved.usedLng;\n                    if (options.nest !== false) res = this.interpolator.nest(res, function() {\n                        for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++)args[_key] = arguments[_key];\n                        if (lastKey && lastKey[0] === args[0] && !options.context) {\n                            _this3.logger.warn(\"It seems you are nesting recursively key: \".concat(args[0], \" in key: \").concat(key[0]));\n                            return null;\n                        }\n                        return _this3.translate.apply(_this3, args.concat([\n                            key\n                        ]));\n                    }, options);\n                    if (options.interpolation) this.interpolator.reset();\n                }\n                var postProcess = options.postProcess || this.options.postProcess;\n                var postProcessorNames = typeof postProcess === \"string\" ? [\n                    postProcess\n                ] : postProcess;\n                if (res !== undefined && res !== null && postProcessorNames && postProcessorNames.length && options.applyPostProcessor !== false) res = postProcessor.handle(postProcessorNames, res, key, this.options && this.options.postProcessPassResolved ? _objectSpread$4({\n                    i18nResolved: resolved\n                }, options) : options, this);\n                return res;\n            }\n        },\n        {\n            key: \"resolve\",\n            value: function resolve(keys) {\n                var _this4 = this;\n                var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n                var found;\n                var usedKey;\n                var exactUsedKey;\n                var usedLng;\n                var usedNS;\n                if (typeof keys === \"string\") keys = [\n                    keys\n                ];\n                keys.forEach(function(k) {\n                    if (_this4.isValidLookup(found)) return;\n                    var extracted = _this4.extractFromKey(k, options);\n                    var key = extracted.key;\n                    usedKey = key;\n                    var namespaces = extracted.namespaces;\n                    if (_this4.options.fallbackNS) namespaces = namespaces.concat(_this4.options.fallbackNS);\n                    var needsPluralHandling = options.count !== undefined && typeof options.count !== \"string\";\n                    var needsZeroSuffixLookup = needsPluralHandling && !options.ordinal && options.count === 0 && _this4.pluralResolver.shouldUseIntlApi();\n                    var needsContextHandling = options.context !== undefined && (typeof options.context === \"string\" || typeof options.context === \"number\") && options.context !== \"\";\n                    var codes = options.lngs ? options.lngs : _this4.languageUtils.toResolveHierarchy(options.lng || _this4.language, options.fallbackLng);\n                    namespaces.forEach(function(ns) {\n                        if (_this4.isValidLookup(found)) return;\n                        usedNS = ns;\n                        if (!checkedLoadedFor[\"\".concat(codes[0], \"-\").concat(ns)] && _this4.utils && _this4.utils.hasLoadedNamespace && !_this4.utils.hasLoadedNamespace(usedNS)) {\n                            checkedLoadedFor[\"\".concat(codes[0], \"-\").concat(ns)] = true;\n                            _this4.logger.warn('key \"'.concat(usedKey, '\" for languages \"').concat(codes.join(\", \"), '\" won\\'t get resolved as namespace \"').concat(usedNS, '\" was not yet loaded'), \"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!\");\n                        }\n                        codes.forEach(function(code) {\n                            if (_this4.isValidLookup(found)) return;\n                            usedLng = code;\n                            var finalKeys = [\n                                key\n                            ];\n                            if (_this4.i18nFormat && _this4.i18nFormat.addLookupKeys) _this4.i18nFormat.addLookupKeys(finalKeys, key, code, ns, options);\n                            else {\n                                var pluralSuffix;\n                                if (needsPluralHandling) pluralSuffix = _this4.pluralResolver.getSuffix(code, options.count, options);\n                                var zeroSuffix = \"\".concat(_this4.options.pluralSeparator, \"zero\");\n                                if (needsPluralHandling) {\n                                    finalKeys.push(key + pluralSuffix);\n                                    if (needsZeroSuffixLookup) finalKeys.push(key + zeroSuffix);\n                                }\n                                if (needsContextHandling) {\n                                    var contextKey = \"\".concat(key).concat(_this4.options.contextSeparator).concat(options.context);\n                                    finalKeys.push(contextKey);\n                                    if (needsPluralHandling) {\n                                        finalKeys.push(contextKey + pluralSuffix);\n                                        if (needsZeroSuffixLookup) finalKeys.push(contextKey + zeroSuffix);\n                                    }\n                                }\n                            }\n                            var possibleKey;\n                            while(possibleKey = finalKeys.pop())if (!_this4.isValidLookup(found)) {\n                                exactUsedKey = possibleKey;\n                                found = _this4.getResource(code, ns, possibleKey, options);\n                            }\n                        });\n                    });\n                });\n                return {\n                    res: found,\n                    usedKey: usedKey,\n                    exactUsedKey: exactUsedKey,\n                    usedLng: usedLng,\n                    usedNS: usedNS\n                };\n            }\n        },\n        {\n            key: \"isValidLookup\",\n            value: function isValidLookup(res) {\n                return res !== undefined && !(!this.options.returnNull && res === null) && !(!this.options.returnEmptyString && res === \"\");\n            }\n        },\n        {\n            key: \"getResource\",\n            value: function getResource(code, ns, key) {\n                var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n                if (this.i18nFormat && this.i18nFormat.getResource) return this.i18nFormat.getResource(code, ns, key, options);\n                return this.resourceStore.getResource(code, ns, key, options);\n            }\n        }\n    ], [\n        {\n            key: \"hasDefaultValue\",\n            value: function hasDefaultValue(options) {\n                var prefix = \"defaultValue\";\n                for(var option in options){\n                    if (Object.prototype.hasOwnProperty.call(options, option) && prefix === option.substring(0, prefix.length) && undefined !== options[option]) return true;\n                }\n                return false;\n            }\n        }\n    ]);\n    return Translator;\n}(EventEmitter);\nfunction capitalize(string) {\n    return string.charAt(0).toUpperCase() + string.slice(1);\n}\nvar LanguageUtil = function() {\n    function LanguageUtil(options) {\n        (0, $dM0Cr.default)(this, LanguageUtil);\n        this.options = options;\n        this.supportedLngs = this.options.supportedLngs || false;\n        this.logger = baseLogger.create(\"languageUtils\");\n    }\n    (0, $lRfe8.default)(LanguageUtil, [\n        {\n            key: \"getScriptPartFromCode\",\n            value: function getScriptPartFromCode(code) {\n                if (!code || code.indexOf(\"-\") < 0) return null;\n                var p = code.split(\"-\");\n                if (p.length === 2) return null;\n                p.pop();\n                if (p[p.length - 1].toLowerCase() === \"x\") return null;\n                return this.formatLanguageCode(p.join(\"-\"));\n            }\n        },\n        {\n            key: \"getLanguagePartFromCode\",\n            value: function getLanguagePartFromCode(code) {\n                if (!code || code.indexOf(\"-\") < 0) return code;\n                var p = code.split(\"-\");\n                return this.formatLanguageCode(p[0]);\n            }\n        },\n        {\n            key: \"formatLanguageCode\",\n            value: function formatLanguageCode(code) {\n                if (typeof code === \"string\" && code.indexOf(\"-\") > -1) {\n                    var specialCases = [\n                        \"hans\",\n                        \"hant\",\n                        \"latn\",\n                        \"cyrl\",\n                        \"cans\",\n                        \"mong\",\n                        \"arab\"\n                    ];\n                    var p = code.split(\"-\");\n                    if (this.options.lowerCaseLng) p = p.map(function(part) {\n                        return part.toLowerCase();\n                    });\n                    else if (p.length === 2) {\n                        p[0] = p[0].toLowerCase();\n                        p[1] = p[1].toUpperCase();\n                        if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n                    } else if (p.length === 3) {\n                        p[0] = p[0].toLowerCase();\n                        if (p[1].length === 2) p[1] = p[1].toUpperCase();\n                        if (p[0] !== \"sgn\" && p[2].length === 2) p[2] = p[2].toUpperCase();\n                        if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n                        if (specialCases.indexOf(p[2].toLowerCase()) > -1) p[2] = capitalize(p[2].toLowerCase());\n                    }\n                    return p.join(\"-\");\n                }\n                return this.options.cleanCode || this.options.lowerCaseLng ? code.toLowerCase() : code;\n            }\n        },\n        {\n            key: \"isSupportedCode\",\n            value: function isSupportedCode(code) {\n                if (this.options.load === \"languageOnly\" || this.options.nonExplicitSupportedLngs) code = this.getLanguagePartFromCode(code);\n                return !this.supportedLngs || !this.supportedLngs.length || this.supportedLngs.indexOf(code) > -1;\n            }\n        },\n        {\n            key: \"getBestMatchFromCodes\",\n            value: function getBestMatchFromCodes(codes) {\n                var _this = this;\n                if (!codes) return null;\n                var found;\n                codes.forEach(function(code) {\n                    if (found) return;\n                    var cleanedLng = _this.formatLanguageCode(code);\n                    if (!_this.options.supportedLngs || _this.isSupportedCode(cleanedLng)) found = cleanedLng;\n                });\n                if (!found && this.options.supportedLngs) codes.forEach(function(code) {\n                    if (found) return;\n                    var lngOnly = _this.getLanguagePartFromCode(code);\n                    if (_this.isSupportedCode(lngOnly)) return found = lngOnly;\n                    found = _this.options.supportedLngs.find(function(supportedLng) {\n                        if (supportedLng === lngOnly) return supportedLng;\n                        if (supportedLng.indexOf(\"-\") < 0 && lngOnly.indexOf(\"-\") < 0) return;\n                        if (supportedLng.indexOf(lngOnly) === 0) return supportedLng;\n                    });\n                });\n                if (!found) found = this.getFallbackCodes(this.options.fallbackLng)[0];\n                return found;\n            }\n        },\n        {\n            key: \"getFallbackCodes\",\n            value: function getFallbackCodes(fallbacks, code) {\n                if (!fallbacks) return [];\n                if (typeof fallbacks === \"function\") fallbacks = fallbacks(code);\n                if (typeof fallbacks === \"string\") fallbacks = [\n                    fallbacks\n                ];\n                if (Object.prototype.toString.apply(fallbacks) === \"[object Array]\") return fallbacks;\n                if (!code) return fallbacks[\"default\"] || [];\n                var found = fallbacks[code];\n                if (!found) found = fallbacks[this.getScriptPartFromCode(code)];\n                if (!found) found = fallbacks[this.formatLanguageCode(code)];\n                if (!found) found = fallbacks[this.getLanguagePartFromCode(code)];\n                if (!found) found = fallbacks[\"default\"];\n                return found || [];\n            }\n        },\n        {\n            key: \"toResolveHierarchy\",\n            value: function toResolveHierarchy(code, fallbackCode) {\n                var _this2 = this;\n                var fallbackCodes = this.getFallbackCodes(fallbackCode || this.options.fallbackLng || [], code);\n                var codes = [];\n                var addCode = function addCode(c) {\n                    if (!c) return;\n                    if (_this2.isSupportedCode(c)) codes.push(c);\n                    else _this2.logger.warn(\"rejecting language code not found in supportedLngs: \".concat(c));\n                };\n                if (typeof code === \"string\" && code.indexOf(\"-\") > -1) {\n                    if (this.options.load !== \"languageOnly\") addCode(this.formatLanguageCode(code));\n                    if (this.options.load !== \"languageOnly\" && this.options.load !== \"currentOnly\") addCode(this.getScriptPartFromCode(code));\n                    if (this.options.load !== \"currentOnly\") addCode(this.getLanguagePartFromCode(code));\n                } else if (typeof code === \"string\") addCode(this.formatLanguageCode(code));\n                fallbackCodes.forEach(function(fc) {\n                    if (codes.indexOf(fc) < 0) addCode(_this2.formatLanguageCode(fc));\n                });\n                return codes;\n            }\n        }\n    ]);\n    return LanguageUtil;\n}();\nvar sets = [\n    {\n        lngs: [\n            \"ach\",\n            \"ak\",\n            \"am\",\n            \"arn\",\n            \"br\",\n            \"fil\",\n            \"gun\",\n            \"ln\",\n            \"mfe\",\n            \"mg\",\n            \"mi\",\n            \"oc\",\n            \"pt\",\n            \"pt-BR\",\n            \"tg\",\n            \"tl\",\n            \"ti\",\n            \"tr\",\n            \"uz\",\n            \"wa\"\n        ],\n        nr: [\n            1,\n            2\n        ],\n        fc: 1\n    },\n    {\n        lngs: [\n            \"af\",\n            \"an\",\n            \"ast\",\n            \"az\",\n            \"bg\",\n            \"bn\",\n            \"ca\",\n            \"da\",\n            \"de\",\n            \"dev\",\n            \"el\",\n            \"en\",\n            \"eo\",\n            \"es\",\n            \"et\",\n            \"eu\",\n            \"fi\",\n            \"fo\",\n            \"fur\",\n            \"fy\",\n            \"gl\",\n            \"gu\",\n            \"ha\",\n            \"hi\",\n            \"hu\",\n            \"hy\",\n            \"ia\",\n            \"it\",\n            \"kk\",\n            \"kn\",\n            \"ku\",\n            \"lb\",\n            \"mai\",\n            \"ml\",\n            \"mn\",\n            \"mr\",\n            \"nah\",\n            \"nap\",\n            \"nb\",\n            \"ne\",\n            \"nl\",\n            \"nn\",\n            \"no\",\n            \"nso\",\n            \"pa\",\n            \"pap\",\n            \"pms\",\n            \"ps\",\n            \"pt-PT\",\n            \"rm\",\n            \"sco\",\n            \"se\",\n            \"si\",\n            \"so\",\n            \"son\",\n            \"sq\",\n            \"sv\",\n            \"sw\",\n            \"ta\",\n            \"te\",\n            \"tk\",\n            \"ur\",\n            \"yo\"\n        ],\n        nr: [\n            1,\n            2\n        ],\n        fc: 2\n    },\n    {\n        lngs: [\n            \"ay\",\n            \"bo\",\n            \"cgg\",\n            \"fa\",\n            \"ht\",\n            \"id\",\n            \"ja\",\n            \"jbo\",\n            \"ka\",\n            \"km\",\n            \"ko\",\n            \"ky\",\n            \"lo\",\n            \"ms\",\n            \"sah\",\n            \"su\",\n            \"th\",\n            \"tt\",\n            \"ug\",\n            \"vi\",\n            \"wo\",\n            \"zh\"\n        ],\n        nr: [\n            1\n        ],\n        fc: 3\n    },\n    {\n        lngs: [\n            \"be\",\n            \"bs\",\n            \"cnr\",\n            \"dz\",\n            \"hr\",\n            \"ru\",\n            \"sr\",\n            \"uk\"\n        ],\n        nr: [\n            1,\n            2,\n            5\n        ],\n        fc: 4\n    },\n    {\n        lngs: [\n            \"ar\"\n        ],\n        nr: [\n            0,\n            1,\n            2,\n            3,\n            11,\n            100\n        ],\n        fc: 5\n    },\n    {\n        lngs: [\n            \"cs\",\n            \"sk\"\n        ],\n        nr: [\n            1,\n            2,\n            5\n        ],\n        fc: 6\n    },\n    {\n        lngs: [\n            \"csb\",\n            \"pl\"\n        ],\n        nr: [\n            1,\n            2,\n            5\n        ],\n        fc: 7\n    },\n    {\n        lngs: [\n            \"cy\"\n        ],\n        nr: [\n            1,\n            2,\n            3,\n            8\n        ],\n        fc: 8\n    },\n    {\n        lngs: [\n            \"fr\"\n        ],\n        nr: [\n            1,\n            2\n        ],\n        fc: 9\n    },\n    {\n        lngs: [\n            \"ga\"\n        ],\n        nr: [\n            1,\n            2,\n            3,\n            7,\n            11\n        ],\n        fc: 10\n    },\n    {\n        lngs: [\n            \"gd\"\n        ],\n        nr: [\n            1,\n            2,\n            3,\n            20\n        ],\n        fc: 11\n    },\n    {\n        lngs: [\n            \"is\"\n        ],\n        nr: [\n            1,\n            2\n        ],\n        fc: 12\n    },\n    {\n        lngs: [\n            \"jv\"\n        ],\n        nr: [\n            0,\n            1\n        ],\n        fc: 13\n    },\n    {\n        lngs: [\n            \"kw\"\n        ],\n        nr: [\n            1,\n            2,\n            3,\n            4\n        ],\n        fc: 14\n    },\n    {\n        lngs: [\n            \"lt\"\n        ],\n        nr: [\n            1,\n            2,\n            10\n        ],\n        fc: 15\n    },\n    {\n        lngs: [\n            \"lv\"\n        ],\n        nr: [\n            1,\n            2,\n            0\n        ],\n        fc: 16\n    },\n    {\n        lngs: [\n            \"mk\"\n        ],\n        nr: [\n            1,\n            2\n        ],\n        fc: 17\n    },\n    {\n        lngs: [\n            \"mnk\"\n        ],\n        nr: [\n            0,\n            1,\n            2\n        ],\n        fc: 18\n    },\n    {\n        lngs: [\n            \"mt\"\n        ],\n        nr: [\n            1,\n            2,\n            11,\n            20\n        ],\n        fc: 19\n    },\n    {\n        lngs: [\n            \"or\"\n        ],\n        nr: [\n            2,\n            1\n        ],\n        fc: 2\n    },\n    {\n        lngs: [\n            \"ro\"\n        ],\n        nr: [\n            1,\n            2,\n            20\n        ],\n        fc: 20\n    },\n    {\n        lngs: [\n            \"sl\"\n        ],\n        nr: [\n            5,\n            1,\n            2,\n            3\n        ],\n        fc: 21\n    },\n    {\n        lngs: [\n            \"he\",\n            \"iw\"\n        ],\n        nr: [\n            1,\n            2,\n            20,\n            21\n        ],\n        fc: 22\n    }\n];\nvar _rulesPluralsTypes = {\n    1: function _(n) {\n        return Number(n > 1);\n    },\n    2: function _(n) {\n        return Number(n != 1);\n    },\n    3: function _(n) {\n        return 0;\n    },\n    4: function _(n) {\n        return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n    },\n    5: function _(n) {\n        return Number(n == 0 ? 0 : n == 1 ? 1 : n == 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5);\n    },\n    6: function _(n) {\n        return Number(n == 1 ? 0 : n >= 2 && n <= 4 ? 1 : 2);\n    },\n    7: function _(n) {\n        return Number(n == 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n    },\n    8: function _(n) {\n        return Number(n == 1 ? 0 : n == 2 ? 1 : n != 8 && n != 11 ? 2 : 3);\n    },\n    9: function _(n) {\n        return Number(n >= 2);\n    },\n    10: function _(n) {\n        return Number(n == 1 ? 0 : n == 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4);\n    },\n    11: function _(n) {\n        return Number(n == 1 || n == 11 ? 0 : n == 2 || n == 12 ? 1 : n > 2 && n < 20 ? 2 : 3);\n    },\n    12: function _(n) {\n        return Number(n % 10 != 1 || n % 100 == 11);\n    },\n    13: function _(n) {\n        return Number(n !== 0);\n    },\n    14: function _(n) {\n        return Number(n == 1 ? 0 : n == 2 ? 1 : n == 3 ? 2 : 3);\n    },\n    15: function _(n) {\n        return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n    },\n    16: function _(n) {\n        return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n !== 0 ? 1 : 2);\n    },\n    17: function _(n) {\n        return Number(n == 1 || n % 10 == 1 && n % 100 != 11 ? 0 : 1);\n    },\n    18: function _(n) {\n        return Number(n == 0 ? 0 : n == 1 ? 1 : 2);\n    },\n    19: function _(n) {\n        return Number(n == 1 ? 0 : n == 0 || n % 100 > 1 && n % 100 < 11 ? 1 : n % 100 > 10 && n % 100 < 20 ? 2 : 3);\n    },\n    20: function _(n) {\n        return Number(n == 1 ? 0 : n == 0 || n % 100 > 0 && n % 100 < 20 ? 1 : 2);\n    },\n    21: function _(n) {\n        return Number(n % 100 == 1 ? 1 : n % 100 == 2 ? 2 : n % 100 == 3 || n % 100 == 4 ? 3 : 0);\n    },\n    22: function _(n) {\n        return Number(n == 1 ? 0 : n == 2 ? 1 : (n < 0 || n > 10) && n % 10 == 0 ? 2 : 3);\n    }\n};\nvar deprecatedJsonVersions = [\n    \"v1\",\n    \"v2\",\n    \"v3\"\n];\nvar suffixesOrder = {\n    zero: 0,\n    one: 1,\n    two: 2,\n    few: 3,\n    many: 4,\n    other: 5\n};\nfunction createRules() {\n    var rules = {};\n    sets.forEach(function(set) {\n        set.lngs.forEach(function(l) {\n            rules[l] = {\n                numbers: set.nr,\n                plurals: _rulesPluralsTypes[set.fc]\n            };\n        });\n    });\n    return rules;\n}\nvar PluralResolver = function() {\n    function PluralResolver(languageUtils) {\n        var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n        (0, $dM0Cr.default)(this, PluralResolver);\n        this.languageUtils = languageUtils;\n        this.options = options;\n        this.logger = baseLogger.create(\"pluralResolver\");\n        if ((!this.options.compatibilityJSON || this.options.compatibilityJSON === \"v4\") && (typeof Intl === \"undefined\" || !Intl.PluralRules)) {\n            this.options.compatibilityJSON = \"v3\";\n            this.logger.error(\"Your environment seems not to be Intl API compatible, use an Intl.PluralRules polyfill. Will fallback to the compatibilityJSON v3 format handling.\");\n        }\n        this.rules = createRules();\n    }\n    (0, $lRfe8.default)(PluralResolver, [\n        {\n            key: \"addRule\",\n            value: function addRule(lng, obj) {\n                this.rules[lng] = obj;\n            }\n        },\n        {\n            key: \"getRule\",\n            value: function getRule(code) {\n                var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n                if (this.shouldUseIntlApi()) try {\n                    return new Intl.PluralRules(code, {\n                        type: options.ordinal ? \"ordinal\" : \"cardinal\"\n                    });\n                } catch (_unused) {\n                    return;\n                }\n                return this.rules[code] || this.rules[this.languageUtils.getLanguagePartFromCode(code)];\n            }\n        },\n        {\n            key: \"needsPlural\",\n            value: function needsPlural(code) {\n                var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n                var rule = this.getRule(code, options);\n                if (this.shouldUseIntlApi()) return rule && rule.resolvedOptions().pluralCategories.length > 1;\n                return rule && rule.numbers.length > 1;\n            }\n        },\n        {\n            key: \"getPluralFormsOfKey\",\n            value: function getPluralFormsOfKey(code, key) {\n                var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n                return this.getSuffixes(code, options).map(function(suffix) {\n                    return \"\".concat(key).concat(suffix);\n                });\n            }\n        },\n        {\n            key: \"getSuffixes\",\n            value: function getSuffixes(code) {\n                var _this = this;\n                var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n                var rule = this.getRule(code, options);\n                if (!rule) return [];\n                if (this.shouldUseIntlApi()) return rule.resolvedOptions().pluralCategories.sort(function(pluralCategory1, pluralCategory2) {\n                    return suffixesOrder[pluralCategory1] - suffixesOrder[pluralCategory2];\n                }).map(function(pluralCategory) {\n                    return \"\".concat(_this.options.prepend).concat(pluralCategory);\n                });\n                return rule.numbers.map(function(number) {\n                    return _this.getSuffix(code, number, options);\n                });\n            }\n        },\n        {\n            key: \"getSuffix\",\n            value: function getSuffix(code, count) {\n                var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n                var rule = this.getRule(code, options);\n                if (rule) {\n                    if (this.shouldUseIntlApi()) return \"\".concat(this.options.prepend).concat(rule.select(count));\n                    return this.getSuffixRetroCompatible(rule, count);\n                }\n                this.logger.warn(\"no plural rule found for: \".concat(code));\n                return \"\";\n            }\n        },\n        {\n            key: \"getSuffixRetroCompatible\",\n            value: function getSuffixRetroCompatible(rule, count) {\n                var _this2 = this;\n                var idx = rule.noAbs ? rule.plurals(count) : rule.plurals(Math.abs(count));\n                var suffix = rule.numbers[idx];\n                if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n                    if (suffix === 2) suffix = \"plural\";\n                    else if (suffix === 1) suffix = \"\";\n                }\n                var returnSuffix = function returnSuffix() {\n                    return _this2.options.prepend && suffix.toString() ? _this2.options.prepend + suffix.toString() : suffix.toString();\n                };\n                if (this.options.compatibilityJSON === \"v1\") {\n                    if (suffix === 1) return \"\";\n                    if (typeof suffix === \"number\") return \"_plural_\".concat(suffix.toString());\n                    return returnSuffix();\n                } else if (this.options.compatibilityJSON === \"v2\") return returnSuffix();\n                else if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) return returnSuffix();\n                return this.options.prepend && idx.toString() ? this.options.prepend + idx.toString() : idx.toString();\n            }\n        },\n        {\n            key: \"shouldUseIntlApi\",\n            value: function shouldUseIntlApi() {\n                return !deprecatedJsonVersions.includes(this.options.compatibilityJSON);\n            }\n        }\n    ]);\n    return PluralResolver;\n}();\nfunction ownKeys$3(object, enumerableOnly) {\n    var keys = Object.keys(object);\n    if (Object.getOwnPropertySymbols) {\n        var symbols = Object.getOwnPropertySymbols(object);\n        enumerableOnly && (symbols = symbols.filter(function(sym) {\n            return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n        })), keys.push.apply(keys, symbols);\n    }\n    return keys;\n}\nfunction _objectSpread$3(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = null != arguments[i] ? arguments[i] : {};\n        i % 2 ? ownKeys$3(Object(source), !0).forEach(function(key) {\n            (0, $2qeFG.default)(target, key, source[key]);\n        }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$3(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nfunction deepFindWithDefaults(data, defaultData, key) {\n    var keySeparator = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : \".\";\n    var ignoreJSONStructure = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n    var path = getPathWithDefaults(data, defaultData, key);\n    if (!path && ignoreJSONStructure && typeof key === \"string\") {\n        path = deepFind(data, key, keySeparator);\n        if (path === undefined) path = deepFind(defaultData, key, keySeparator);\n    }\n    return path;\n}\nvar Interpolator = function() {\n    function Interpolator() {\n        var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n        (0, $dM0Cr.default)(this, Interpolator);\n        this.logger = baseLogger.create(\"interpolator\");\n        this.options = options;\n        this.format = options.interpolation && options.interpolation.format || function(value) {\n            return value;\n        };\n        this.init(options);\n    }\n    (0, $lRfe8.default)(Interpolator, [\n        {\n            key: \"init\",\n            value: function init() {\n                var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n                if (!options.interpolation) options.interpolation = {\n                    escapeValue: true\n                };\n                var iOpts = options.interpolation;\n                this.escape = iOpts.escape !== undefined ? iOpts.escape : escape;\n                this.escapeValue = iOpts.escapeValue !== undefined ? iOpts.escapeValue : true;\n                this.useRawValueToEscape = iOpts.useRawValueToEscape !== undefined ? iOpts.useRawValueToEscape : false;\n                this.prefix = iOpts.prefix ? regexEscape(iOpts.prefix) : iOpts.prefixEscaped || \"{{\";\n                this.suffix = iOpts.suffix ? regexEscape(iOpts.suffix) : iOpts.suffixEscaped || \"}}\";\n                this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || \",\";\n                this.unescapePrefix = iOpts.unescapeSuffix ? \"\" : iOpts.unescapePrefix || \"-\";\n                this.unescapeSuffix = this.unescapePrefix ? \"\" : iOpts.unescapeSuffix || \"\";\n                this.nestingPrefix = iOpts.nestingPrefix ? regexEscape(iOpts.nestingPrefix) : iOpts.nestingPrefixEscaped || regexEscape(\"$t(\");\n                this.nestingSuffix = iOpts.nestingSuffix ? regexEscape(iOpts.nestingSuffix) : iOpts.nestingSuffixEscaped || regexEscape(\")\");\n                this.nestingOptionsSeparator = iOpts.nestingOptionsSeparator ? iOpts.nestingOptionsSeparator : iOpts.nestingOptionsSeparator || \",\";\n                this.maxReplaces = iOpts.maxReplaces ? iOpts.maxReplaces : 1000;\n                this.alwaysFormat = iOpts.alwaysFormat !== undefined ? iOpts.alwaysFormat : false;\n                this.resetRegExp();\n            }\n        },\n        {\n            key: \"reset\",\n            value: function reset() {\n                if (this.options) this.init(this.options);\n            }\n        },\n        {\n            key: \"resetRegExp\",\n            value: function resetRegExp() {\n                var regexpStr = \"\".concat(this.prefix, \"(.+?)\").concat(this.suffix);\n                this.regexp = new RegExp(regexpStr, \"g\");\n                var regexpUnescapeStr = \"\".concat(this.prefix).concat(this.unescapePrefix, \"(.+?)\").concat(this.unescapeSuffix).concat(this.suffix);\n                this.regexpUnescape = new RegExp(regexpUnescapeStr, \"g\");\n                var nestingRegexpStr = \"\".concat(this.nestingPrefix, \"(.+?)\").concat(this.nestingSuffix);\n                this.nestingRegexp = new RegExp(nestingRegexpStr, \"g\");\n            }\n        },\n        {\n            key: \"interpolate\",\n            value: function interpolate(str, data, lng, options) {\n                var _this = this;\n                var match;\n                var value;\n                var replaces;\n                var defaultData = this.options && this.options.interpolation && this.options.interpolation.defaultVariables || {};\n                function regexSafe(val) {\n                    return val.replace(/\\$/g, \"$$$$\");\n                }\n                var handleFormat = function handleFormat(key) {\n                    if (key.indexOf(_this.formatSeparator) < 0) {\n                        var path = deepFindWithDefaults(data, defaultData, key, _this.options.keySeparator, _this.options.ignoreJSONStructure);\n                        return _this.alwaysFormat ? _this.format(path, undefined, lng, _objectSpread$3(_objectSpread$3(_objectSpread$3({}, options), data), {}, {\n                            interpolationkey: key\n                        })) : path;\n                    }\n                    var p = key.split(_this.formatSeparator);\n                    var k = p.shift().trim();\n                    var f = p.join(_this.formatSeparator).trim();\n                    return _this.format(deepFindWithDefaults(data, defaultData, k, _this.options.keySeparator, _this.options.ignoreJSONStructure), f, lng, _objectSpread$3(_objectSpread$3(_objectSpread$3({}, options), data), {}, {\n                        interpolationkey: k\n                    }));\n                };\n                this.resetRegExp();\n                var missingInterpolationHandler = options && options.missingInterpolationHandler || this.options.missingInterpolationHandler;\n                var skipOnVariables = options && options.interpolation && options.interpolation.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables;\n                var todos = [\n                    {\n                        regex: this.regexpUnescape,\n                        safeValue: function safeValue(val) {\n                            return regexSafe(val);\n                        }\n                    },\n                    {\n                        regex: this.regexp,\n                        safeValue: function safeValue(val) {\n                            return _this.escapeValue ? regexSafe(_this.escape(val)) : regexSafe(val);\n                        }\n                    }\n                ];\n                todos.forEach(function(todo) {\n                    replaces = 0;\n                    while(match = todo.regex.exec(str)){\n                        var matchedVar = match[1].trim();\n                        value = handleFormat(matchedVar);\n                        if (value === undefined) {\n                            if (typeof missingInterpolationHandler === \"function\") {\n                                var temp = missingInterpolationHandler(str, match, options);\n                                value = typeof temp === \"string\" ? temp : \"\";\n                            } else if (options && Object.prototype.hasOwnProperty.call(options, matchedVar)) value = \"\";\n                            else if (skipOnVariables) {\n                                value = match[0];\n                                continue;\n                            } else {\n                                _this.logger.warn(\"missed to pass in variable \".concat(matchedVar, \" for interpolating \").concat(str));\n                                value = \"\";\n                            }\n                        } else if (typeof value !== \"string\" && !_this.useRawValueToEscape) value = makeString(value);\n                        var safeValue = todo.safeValue(value);\n                        str = str.replace(match[0], safeValue);\n                        if (skipOnVariables) {\n                            todo.regex.lastIndex += value.length;\n                            todo.regex.lastIndex -= match[0].length;\n                        } else todo.regex.lastIndex = 0;\n                        replaces++;\n                        if (replaces >= _this.maxReplaces) break;\n                    }\n                });\n                return str;\n            }\n        },\n        {\n            key: \"nest\",\n            value: function nest(str, fc) {\n                var _this2 = this;\n                var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n                var match;\n                var value;\n                var clonedOptions;\n                function handleHasOptions(key, inheritedOptions) {\n                    var sep = this.nestingOptionsSeparator;\n                    if (key.indexOf(sep) < 0) return key;\n                    var c = key.split(new RegExp(\"\".concat(sep, \"[ ]*{\")));\n                    var optionsString = \"{\".concat(c[1]);\n                    key = c[0];\n                    optionsString = this.interpolate(optionsString, clonedOptions);\n                    var matchedSingleQuotes = optionsString.match(/'/g);\n                    var matchedDoubleQuotes = optionsString.match(/\"/g);\n                    if (matchedSingleQuotes && matchedSingleQuotes.length % 2 === 0 && !matchedDoubleQuotes || matchedDoubleQuotes.length % 2 !== 0) optionsString = optionsString.replace(/'/g, '\"');\n                    try {\n                        clonedOptions = JSON.parse(optionsString);\n                        if (inheritedOptions) clonedOptions = _objectSpread$3(_objectSpread$3({}, inheritedOptions), clonedOptions);\n                    } catch (e) {\n                        this.logger.warn(\"failed parsing options string in nesting for key \".concat(key), e);\n                        return \"\".concat(key).concat(sep).concat(optionsString);\n                    }\n                    delete clonedOptions.defaultValue;\n                    return key;\n                }\n                while(match = this.nestingRegexp.exec(str)){\n                    var formatters = [];\n                    clonedOptions = _objectSpread$3({}, options);\n                    clonedOptions = clonedOptions.replace && typeof clonedOptions.replace !== \"string\" ? clonedOptions.replace : clonedOptions;\n                    clonedOptions.applyPostProcessor = false;\n                    delete clonedOptions.defaultValue;\n                    var doReduce = false;\n                    if (match[0].indexOf(this.formatSeparator) !== -1 && !/{.*}/.test(match[1])) {\n                        var r = match[1].split(this.formatSeparator).map(function(elem) {\n                            return elem.trim();\n                        });\n                        match[1] = r.shift();\n                        formatters = r;\n                        doReduce = true;\n                    }\n                    value = fc(handleHasOptions.call(this, match[1].trim(), clonedOptions), clonedOptions);\n                    if (value && match[0] === str && typeof value !== \"string\") return value;\n                    if (typeof value !== \"string\") value = makeString(value);\n                    if (!value) {\n                        this.logger.warn(\"missed to resolve \".concat(match[1], \" for nesting \").concat(str));\n                        value = \"\";\n                    }\n                    if (doReduce) value = formatters.reduce(function(v, f) {\n                        return _this2.format(v, f, options.lng, _objectSpread$3(_objectSpread$3({}, options), {}, {\n                            interpolationkey: match[1].trim()\n                        }));\n                    }, value.trim());\n                    str = str.replace(match[0], value);\n                    this.regexp.lastIndex = 0;\n                }\n                return str;\n            }\n        }\n    ]);\n    return Interpolator;\n}();\nfunction ownKeys$2(object, enumerableOnly) {\n    var keys = Object.keys(object);\n    if (Object.getOwnPropertySymbols) {\n        var symbols = Object.getOwnPropertySymbols(object);\n        enumerableOnly && (symbols = symbols.filter(function(sym) {\n            return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n        })), keys.push.apply(keys, symbols);\n    }\n    return keys;\n}\nfunction _objectSpread$2(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = null != arguments[i] ? arguments[i] : {};\n        i % 2 ? ownKeys$2(Object(source), !0).forEach(function(key) {\n            (0, $2qeFG.default)(target, key, source[key]);\n        }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$2(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nfunction parseFormatStr(formatStr) {\n    var formatName = formatStr.toLowerCase().trim();\n    var formatOptions = {};\n    if (formatStr.indexOf(\"(\") > -1) {\n        var p = formatStr.split(\"(\");\n        formatName = p[0].toLowerCase().trim();\n        var optStr = p[1].substring(0, p[1].length - 1);\n        if (formatName === \"currency\" && optStr.indexOf(\":\") < 0) {\n            if (!formatOptions.currency) formatOptions.currency = optStr.trim();\n        } else if (formatName === \"relativetime\" && optStr.indexOf(\":\") < 0) {\n            if (!formatOptions.range) formatOptions.range = optStr.trim();\n        } else {\n            var opts = optStr.split(\";\");\n            opts.forEach(function(opt) {\n                if (!opt) return;\n                var _opt$split = opt.split(\":\"), _opt$split2 = (0, $ALbeL.default)(_opt$split), key = _opt$split2[0], rest = _opt$split2.slice(1);\n                var val = rest.join(\":\").trim().replace(/^'+|'+$/g, \"\");\n                if (!formatOptions[key.trim()]) formatOptions[key.trim()] = val;\n                if (val === \"false\") formatOptions[key.trim()] = false;\n                if (val === \"true\") formatOptions[key.trim()] = true;\n                if (!isNaN(val)) formatOptions[key.trim()] = parseInt(val, 10);\n            });\n        }\n    }\n    return {\n        formatName: formatName,\n        formatOptions: formatOptions\n    };\n}\nfunction createCachedFormatter(fn) {\n    var cache = {};\n    return function invokeFormatter(val, lng, options) {\n        var key = lng + JSON.stringify(options);\n        var formatter = cache[key];\n        if (!formatter) {\n            formatter = fn(lng, options);\n            cache[key] = formatter;\n        }\n        return formatter(val);\n    };\n}\nvar Formatter = function() {\n    function Formatter() {\n        var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n        (0, $dM0Cr.default)(this, Formatter);\n        this.logger = baseLogger.create(\"formatter\");\n        this.options = options;\n        this.formats = {\n            number: createCachedFormatter(function(lng, opt) {\n                var formatter = new Intl.NumberFormat(lng, _objectSpread$2({}, opt));\n                return function(val) {\n                    return formatter.format(val);\n                };\n            }),\n            currency: createCachedFormatter(function(lng, opt) {\n                var formatter = new Intl.NumberFormat(lng, _objectSpread$2(_objectSpread$2({}, opt), {}, {\n                    style: \"currency\"\n                }));\n                return function(val) {\n                    return formatter.format(val);\n                };\n            }),\n            datetime: createCachedFormatter(function(lng, opt) {\n                var formatter = new Intl.DateTimeFormat(lng, _objectSpread$2({}, opt));\n                return function(val) {\n                    return formatter.format(val);\n                };\n            }),\n            relativetime: createCachedFormatter(function(lng, opt) {\n                var formatter = new Intl.RelativeTimeFormat(lng, _objectSpread$2({}, opt));\n                return function(val) {\n                    return formatter.format(val, opt.range || \"day\");\n                };\n            }),\n            list: createCachedFormatter(function(lng, opt) {\n                var formatter = new Intl.ListFormat(lng, _objectSpread$2({}, opt));\n                return function(val) {\n                    return formatter.format(val);\n                };\n            })\n        };\n        this.init(options);\n    }\n    (0, $lRfe8.default)(Formatter, [\n        {\n            key: \"init\",\n            value: function init(services) {\n                var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n                    interpolation: {}\n                };\n                var iOpts = options.interpolation;\n                this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || \",\";\n            }\n        },\n        {\n            key: \"add\",\n            value: function add(name, fc) {\n                this.formats[name.toLowerCase().trim()] = fc;\n            }\n        },\n        {\n            key: \"addCached\",\n            value: function addCached(name, fc) {\n                this.formats[name.toLowerCase().trim()] = createCachedFormatter(fc);\n            }\n        },\n        {\n            key: \"format\",\n            value: function format(value, _format, lng) {\n                var _this = this;\n                var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n                var formats = _format.split(this.formatSeparator);\n                var result = formats.reduce(function(mem, f) {\n                    var _parseFormatStr = parseFormatStr(f), formatName = _parseFormatStr.formatName, formatOptions = _parseFormatStr.formatOptions;\n                    if (_this.formats[formatName]) {\n                        var formatted = mem;\n                        try {\n                            var valOptions = options && options.formatParams && options.formatParams[options.interpolationkey] || {};\n                            var l = valOptions.locale || valOptions.lng || options.locale || options.lng || lng;\n                            formatted = _this.formats[formatName](mem, l, _objectSpread$2(_objectSpread$2(_objectSpread$2({}, formatOptions), options), valOptions));\n                        } catch (error) {\n                            _this.logger.warn(error);\n                        }\n                        return formatted;\n                    } else _this.logger.warn(\"there was no format function for \".concat(formatName));\n                    return mem;\n                }, value);\n                return result;\n            }\n        }\n    ]);\n    return Formatter;\n}();\nfunction ownKeys$1(object, enumerableOnly) {\n    var keys = Object.keys(object);\n    if (Object.getOwnPropertySymbols) {\n        var symbols = Object.getOwnPropertySymbols(object);\n        enumerableOnly && (symbols = symbols.filter(function(sym) {\n            return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n        })), keys.push.apply(keys, symbols);\n    }\n    return keys;\n}\nfunction _objectSpread$1(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = null != arguments[i] ? arguments[i] : {};\n        i % 2 ? ownKeys$1(Object(source), !0).forEach(function(key) {\n            (0, $2qeFG.default)(target, key, source[key]);\n        }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$1(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nfunction _createSuper$1(Derived) {\n    var hasNativeReflectConstruct = _isNativeReflectConstruct$1();\n    return function _createSuperInternal() {\n        var Super = (0, $aKKvr.default)(Derived), result;\n        if (hasNativeReflectConstruct) {\n            var NewTarget = (0, $aKKvr.default)(this).constructor;\n            result = Reflect.construct(Super, arguments, NewTarget);\n        } else result = Super.apply(this, arguments);\n        return (0, $aEHZE.default)(this, result);\n    };\n}\nfunction _isNativeReflectConstruct$1() {\n    if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n    if (Reflect.construct.sham) return false;\n    if (typeof Proxy === \"function\") return true;\n    try {\n        Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n        return true;\n    } catch (e) {\n        return false;\n    }\n}\nfunction removePending(q, name) {\n    if (q.pending[name] !== undefined) {\n        delete q.pending[name];\n        q.pendingCount--;\n    }\n}\nvar Connector = function(_EventEmitter) {\n    (0, $1UPzg.default)(Connector, _EventEmitter);\n    var _super = _createSuper$1(Connector);\n    function Connector(backend, store, services) {\n        var _this;\n        var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n        (0, $dM0Cr.default)(this, Connector);\n        _this = _super.call(this);\n        if (isIE10) EventEmitter.call((0, $1oVxX.default)(_this));\n        _this.backend = backend;\n        _this.store = store;\n        _this.services = services;\n        _this.languageUtils = services.languageUtils;\n        _this.options = options;\n        _this.logger = baseLogger.create(\"backendConnector\");\n        _this.waitingReads = [];\n        _this.maxParallelReads = options.maxParallelReads || 10;\n        _this.readingCalls = 0;\n        _this.maxRetries = options.maxRetries >= 0 ? options.maxRetries : 5;\n        _this.retryTimeout = options.retryTimeout >= 1 ? options.retryTimeout : 350;\n        _this.state = {};\n        _this.queue = [];\n        if (_this.backend && _this.backend.init) _this.backend.init(services, options.backend, options);\n        return _this;\n    }\n    (0, $lRfe8.default)(Connector, [\n        {\n            key: \"queueLoad\",\n            value: function queueLoad(languages, namespaces, options, callback) {\n                var _this2 = this;\n                var toLoad = {};\n                var pending = {};\n                var toLoadLanguages = {};\n                var toLoadNamespaces = {};\n                languages.forEach(function(lng) {\n                    var hasAllNamespaces = true;\n                    namespaces.forEach(function(ns) {\n                        var name = \"\".concat(lng, \"|\").concat(ns);\n                        if (!options.reload && _this2.store.hasResourceBundle(lng, ns)) _this2.state[name] = 2;\n                        else if (_this2.state[name] < 0) ;\n                        else if (_this2.state[name] === 1) {\n                            if (pending[name] === undefined) pending[name] = true;\n                        } else {\n                            _this2.state[name] = 1;\n                            hasAllNamespaces = false;\n                            if (pending[name] === undefined) pending[name] = true;\n                            if (toLoad[name] === undefined) toLoad[name] = true;\n                            if (toLoadNamespaces[ns] === undefined) toLoadNamespaces[ns] = true;\n                        }\n                    });\n                    if (!hasAllNamespaces) toLoadLanguages[lng] = true;\n                });\n                if (Object.keys(toLoad).length || Object.keys(pending).length) this.queue.push({\n                    pending: pending,\n                    pendingCount: Object.keys(pending).length,\n                    loaded: {},\n                    errors: [],\n                    callback: callback\n                });\n                return {\n                    toLoad: Object.keys(toLoad),\n                    pending: Object.keys(pending),\n                    toLoadLanguages: Object.keys(toLoadLanguages),\n                    toLoadNamespaces: Object.keys(toLoadNamespaces)\n                };\n            }\n        },\n        {\n            key: \"loaded\",\n            value: function loaded(name, err, data) {\n                var s = name.split(\"|\");\n                var lng = s[0];\n                var ns = s[1];\n                if (err) this.emit(\"failedLoading\", lng, ns, err);\n                if (data) this.store.addResourceBundle(lng, ns, data);\n                this.state[name] = err ? -1 : 2;\n                var loaded = {};\n                this.queue.forEach(function(q) {\n                    pushPath(q.loaded, [\n                        lng\n                    ], ns);\n                    removePending(q, name);\n                    if (err) q.errors.push(err);\n                    if (q.pendingCount === 0 && !q.done) {\n                        Object.keys(q.loaded).forEach(function(l) {\n                            if (!loaded[l]) loaded[l] = {};\n                            var loadedKeys = q.loaded[l];\n                            if (loadedKeys.length) loadedKeys.forEach(function(n) {\n                                if (loaded[l][n] === undefined) loaded[l][n] = true;\n                            });\n                        });\n                        q.done = true;\n                        if (q.errors.length) q.callback(q.errors);\n                        else q.callback();\n                    }\n                });\n                this.emit(\"loaded\", loaded);\n                this.queue = this.queue.filter(function(q) {\n                    return !q.done;\n                });\n            }\n        },\n        {\n            key: \"read\",\n            value: function read(lng, ns, fcName) {\n                var _this3 = this;\n                var tried = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n                var wait = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : this.retryTimeout;\n                var callback = arguments.length > 5 ? arguments[5] : undefined;\n                if (!lng.length) return callback(null, {});\n                if (this.readingCalls >= this.maxParallelReads) {\n                    this.waitingReads.push({\n                        lng: lng,\n                        ns: ns,\n                        fcName: fcName,\n                        tried: tried,\n                        wait: wait,\n                        callback: callback\n                    });\n                    return;\n                }\n                this.readingCalls++;\n                var resolver = function resolver(err, data) {\n                    _this3.readingCalls--;\n                    if (_this3.waitingReads.length > 0) {\n                        var next = _this3.waitingReads.shift();\n                        _this3.read(next.lng, next.ns, next.fcName, next.tried, next.wait, next.callback);\n                    }\n                    if (err && data && tried < _this3.maxRetries) {\n                        setTimeout(function() {\n                            _this3.read.call(_this3, lng, ns, fcName, tried + 1, wait * 2, callback);\n                        }, wait);\n                        return;\n                    }\n                    callback(err, data);\n                };\n                var fc = this.backend[fcName].bind(this.backend);\n                if (fc.length === 2) {\n                    try {\n                        var r = fc(lng, ns);\n                        if (r && typeof r.then === \"function\") r.then(function(data) {\n                            return resolver(null, data);\n                        })[\"catch\"](resolver);\n                        else resolver(null, r);\n                    } catch (err) {\n                        resolver(err);\n                    }\n                    return;\n                }\n                return fc(lng, ns, resolver);\n            }\n        },\n        {\n            key: \"prepareLoading\",\n            value: function prepareLoading(languages, namespaces) {\n                var _this4 = this;\n                var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n                var callback = arguments.length > 3 ? arguments[3] : undefined;\n                if (!this.backend) {\n                    this.logger.warn(\"No backend was added via i18next.use. Will not load resources.\");\n                    return callback && callback();\n                }\n                if (typeof languages === \"string\") languages = this.languageUtils.toResolveHierarchy(languages);\n                if (typeof namespaces === \"string\") namespaces = [\n                    namespaces\n                ];\n                var toLoad = this.queueLoad(languages, namespaces, options, callback);\n                if (!toLoad.toLoad.length) {\n                    if (!toLoad.pending.length) callback();\n                    return null;\n                }\n                toLoad.toLoad.forEach(function(name) {\n                    _this4.loadOne(name);\n                });\n            }\n        },\n        {\n            key: \"load\",\n            value: function load(languages, namespaces, callback) {\n                this.prepareLoading(languages, namespaces, {}, callback);\n            }\n        },\n        {\n            key: \"reload\",\n            value: function reload(languages, namespaces, callback) {\n                this.prepareLoading(languages, namespaces, {\n                    reload: true\n                }, callback);\n            }\n        },\n        {\n            key: \"loadOne\",\n            value: function loadOne(name) {\n                var _this5 = this;\n                var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"\";\n                var s = name.split(\"|\");\n                var lng = s[0];\n                var ns = s[1];\n                this.read(lng, ns, \"read\", undefined, undefined, function(err, data) {\n                    if (err) _this5.logger.warn(\"\".concat(prefix, \"loading namespace \").concat(ns, \" for language \").concat(lng, \" failed\"), err);\n                    if (!err && data) _this5.logger.log(\"\".concat(prefix, \"loaded namespace \").concat(ns, \" for language \").concat(lng), data);\n                    _this5.loaded(name, err, data);\n                });\n            }\n        },\n        {\n            key: \"saveMissing\",\n            value: function saveMissing(languages, namespace, key, fallbackValue, isUpdate) {\n                var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n                var clb = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : function() {};\n                if (this.services.utils && this.services.utils.hasLoadedNamespace && !this.services.utils.hasLoadedNamespace(namespace)) {\n                    this.logger.warn('did not save key \"'.concat(key, '\" as the namespace \"').concat(namespace, '\" was not yet loaded'), \"This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!\");\n                    return;\n                }\n                if (key === undefined || key === null || key === \"\") return;\n                if (this.backend && this.backend.create) {\n                    var opts = _objectSpread$1(_objectSpread$1({}, options), {}, {\n                        isUpdate: isUpdate\n                    });\n                    var fc = this.backend.create.bind(this.backend);\n                    if (fc.length < 6) try {\n                        var r;\n                        if (fc.length === 5) r = fc(languages, namespace, key, fallbackValue, opts);\n                        else r = fc(languages, namespace, key, fallbackValue);\n                        if (r && typeof r.then === \"function\") r.then(function(data) {\n                            return clb(null, data);\n                        })[\"catch\"](clb);\n                        else clb(null, r);\n                    } catch (err) {\n                        clb(err);\n                    }\n                    else fc(languages, namespace, key, fallbackValue, clb, opts);\n                }\n                if (!languages || !languages[0]) return;\n                this.store.addResource(languages[0], namespace, key, fallbackValue);\n            }\n        }\n    ]);\n    return Connector;\n}(EventEmitter);\nfunction get() {\n    return {\n        debug: false,\n        initImmediate: true,\n        ns: [\n            \"translation\"\n        ],\n        defaultNS: [\n            \"translation\"\n        ],\n        fallbackLng: [\n            \"dev\"\n        ],\n        fallbackNS: false,\n        supportedLngs: false,\n        nonExplicitSupportedLngs: false,\n        load: \"all\",\n        preload: false,\n        simplifyPluralSuffix: true,\n        keySeparator: \".\",\n        nsSeparator: \":\",\n        pluralSeparator: \"_\",\n        contextSeparator: \"_\",\n        partialBundledLanguages: false,\n        saveMissing: false,\n        updateMissing: false,\n        saveMissingTo: \"fallback\",\n        saveMissingPlurals: true,\n        missingKeyHandler: false,\n        missingInterpolationHandler: false,\n        postProcess: false,\n        postProcessPassResolved: false,\n        returnNull: true,\n        returnEmptyString: true,\n        returnObjects: false,\n        joinArrays: false,\n        returnedObjectHandler: false,\n        parseMissingKeyHandler: false,\n        appendNamespaceToMissingKey: false,\n        appendNamespaceToCIMode: false,\n        overloadTranslationOptionHandler: function handle(args) {\n            var ret = {};\n            if ((0, $jOMXy.default)(args[1]) === \"object\") ret = args[1];\n            if (typeof args[1] === \"string\") ret.defaultValue = args[1];\n            if (typeof args[2] === \"string\") ret.tDescription = args[2];\n            if ((0, $jOMXy.default)(args[2]) === \"object\" || (0, $jOMXy.default)(args[3]) === \"object\") {\n                var options = args[3] || args[2];\n                Object.keys(options).forEach(function(key) {\n                    ret[key] = options[key];\n                });\n            }\n            return ret;\n        },\n        interpolation: {\n            escapeValue: true,\n            format: function format(value, _format, lng, options) {\n                return value;\n            },\n            prefix: \"{{\",\n            suffix: \"}}\",\n            formatSeparator: \",\",\n            unescapePrefix: \"-\",\n            nestingPrefix: \"$t(\",\n            nestingSuffix: \")\",\n            nestingOptionsSeparator: \",\",\n            maxReplaces: 1000,\n            skipOnVariables: true\n        }\n    };\n}\nfunction transformOptions(options) {\n    if (typeof options.ns === \"string\") options.ns = [\n        options.ns\n    ];\n    if (typeof options.fallbackLng === \"string\") options.fallbackLng = [\n        options.fallbackLng\n    ];\n    if (typeof options.fallbackNS === \"string\") options.fallbackNS = [\n        options.fallbackNS\n    ];\n    if (options.supportedLngs && options.supportedLngs.indexOf(\"cimode\") < 0) options.supportedLngs = options.supportedLngs.concat([\n        \"cimode\"\n    ]);\n    return options;\n}\nfunction ownKeys(object, enumerableOnly) {\n    var keys = Object.keys(object);\n    if (Object.getOwnPropertySymbols) {\n        var symbols = Object.getOwnPropertySymbols(object);\n        enumerableOnly && (symbols = symbols.filter(function(sym) {\n            return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n        })), keys.push.apply(keys, symbols);\n    }\n    return keys;\n}\nfunction _objectSpread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = null != arguments[i] ? arguments[i] : {};\n        i % 2 ? ownKeys(Object(source), !0).forEach(function(key) {\n            (0, $2qeFG.default)(target, key, source[key]);\n        }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nfunction _createSuper(Derived) {\n    var hasNativeReflectConstruct = _isNativeReflectConstruct();\n    return function _createSuperInternal() {\n        var Super = (0, $aKKvr.default)(Derived), result;\n        if (hasNativeReflectConstruct) {\n            var NewTarget = (0, $aKKvr.default)(this).constructor;\n            result = Reflect.construct(Super, arguments, NewTarget);\n        } else result = Super.apply(this, arguments);\n        return (0, $aEHZE.default)(this, result);\n    };\n}\nfunction _isNativeReflectConstruct() {\n    if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n    if (Reflect.construct.sham) return false;\n    if (typeof Proxy === \"function\") return true;\n    try {\n        Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function() {}));\n        return true;\n    } catch (e) {\n        return false;\n    }\n}\nfunction noop() {}\nfunction bindMemberFunctions(inst) {\n    var mems = Object.getOwnPropertyNames(Object.getPrototypeOf(inst));\n    mems.forEach(function(mem) {\n        if (typeof inst[mem] === \"function\") inst[mem] = inst[mem].bind(inst);\n    });\n}\nvar I18n = function(_EventEmitter) {\n    (0, $1UPzg.default)(I18n, _EventEmitter);\n    var _super = _createSuper(I18n);\n    function I18n() {\n        var _this;\n        var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n        var callback = arguments.length > 1 ? arguments[1] : undefined;\n        (0, $dM0Cr.default)(this, I18n);\n        _this = _super.call(this);\n        if (isIE10) EventEmitter.call((0, $1oVxX.default)(_this));\n        _this.options = transformOptions(options);\n        _this.services = {};\n        _this.logger = baseLogger;\n        _this.modules = {\n            external: []\n        };\n        bindMemberFunctions((0, $1oVxX.default)(_this));\n        if (callback && !_this.isInitialized && !options.isClone) {\n            if (!_this.options.initImmediate) {\n                _this.init(options, callback);\n                return (0, $aEHZE.default)(_this, (0, $1oVxX.default)(_this));\n            }\n            setTimeout(function() {\n                _this.init(options, callback);\n            }, 0);\n        }\n        return _this;\n    }\n    (0, $lRfe8.default)(I18n, [\n        {\n            key: \"init\",\n            value: function init() {\n                var _this2 = this;\n                var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n                var callback = arguments.length > 1 ? arguments[1] : undefined;\n                if (typeof options === \"function\") {\n                    callback = options;\n                    options = {};\n                }\n                if (!options.defaultNS && options.defaultNS !== false && options.ns) {\n                    if (typeof options.ns === \"string\") options.defaultNS = options.ns;\n                    else if (options.ns.indexOf(\"translation\") < 0) options.defaultNS = options.ns[0];\n                }\n                var defOpts = get();\n                this.options = _objectSpread(_objectSpread(_objectSpread({}, defOpts), this.options), transformOptions(options));\n                if (this.options.compatibilityAPI !== \"v1\") this.options.interpolation = _objectSpread(_objectSpread({}, defOpts.interpolation), this.options.interpolation);\n                if (options.keySeparator !== undefined) this.options.userDefinedKeySeparator = options.keySeparator;\n                if (options.nsSeparator !== undefined) this.options.userDefinedNsSeparator = options.nsSeparator;\n                function createClassOnDemand(ClassOrObject) {\n                    if (!ClassOrObject) return null;\n                    if (typeof ClassOrObject === \"function\") return new ClassOrObject();\n                    return ClassOrObject;\n                }\n                if (!this.options.isClone) {\n                    if (this.modules.logger) baseLogger.init(createClassOnDemand(this.modules.logger), this.options);\n                    else baseLogger.init(null, this.options);\n                    var formatter;\n                    if (this.modules.formatter) formatter = this.modules.formatter;\n                    else if (typeof Intl !== \"undefined\") formatter = Formatter;\n                    var lu = new LanguageUtil(this.options);\n                    this.store = new ResourceStore(this.options.resources, this.options);\n                    var s = this.services;\n                    s.logger = baseLogger;\n                    s.resourceStore = this.store;\n                    s.languageUtils = lu;\n                    s.pluralResolver = new PluralResolver(lu, {\n                        prepend: this.options.pluralSeparator,\n                        compatibilityJSON: this.options.compatibilityJSON,\n                        simplifyPluralSuffix: this.options.simplifyPluralSuffix\n                    });\n                    if (formatter && (!this.options.interpolation.format || this.options.interpolation.format === defOpts.interpolation.format)) {\n                        s.formatter = createClassOnDemand(formatter);\n                        s.formatter.init(s, this.options);\n                        this.options.interpolation.format = s.formatter.format.bind(s.formatter);\n                    }\n                    s.interpolator = new Interpolator(this.options);\n                    s.utils = {\n                        hasLoadedNamespace: this.hasLoadedNamespace.bind(this)\n                    };\n                    s.backendConnector = new Connector(createClassOnDemand(this.modules.backend), s.resourceStore, s, this.options);\n                    s.backendConnector.on(\"*\", function(event) {\n                        for(var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++)args[_key - 1] = arguments[_key];\n                        _this2.emit.apply(_this2, [\n                            event\n                        ].concat(args));\n                    });\n                    if (this.modules.languageDetector) {\n                        s.languageDetector = createClassOnDemand(this.modules.languageDetector);\n                        if (s.languageDetector.init) s.languageDetector.init(s, this.options.detection, this.options);\n                    }\n                    if (this.modules.i18nFormat) {\n                        s.i18nFormat = createClassOnDemand(this.modules.i18nFormat);\n                        if (s.i18nFormat.init) s.i18nFormat.init(this);\n                    }\n                    this.translator = new Translator(this.services, this.options);\n                    this.translator.on(\"*\", function(event) {\n                        for(var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++)args[_key2 - 1] = arguments[_key2];\n                        _this2.emit.apply(_this2, [\n                            event\n                        ].concat(args));\n                    });\n                    this.modules.external.forEach(function(m) {\n                        if (m.init) m.init(_this2);\n                    });\n                }\n                this.format = this.options.interpolation.format;\n                if (!callback) callback = noop;\n                if (this.options.fallbackLng && !this.services.languageDetector && !this.options.lng) {\n                    var codes = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n                    if (codes.length > 0 && codes[0] !== \"dev\") this.options.lng = codes[0];\n                }\n                if (!this.services.languageDetector && !this.options.lng) this.logger.warn(\"init: no languageDetector is used and no lng is defined\");\n                var storeApi = [\n                    \"getResource\",\n                    \"hasResourceBundle\",\n                    \"getResourceBundle\",\n                    \"getDataByLanguage\"\n                ];\n                storeApi.forEach(function(fcName) {\n                    _this2[fcName] = function() {\n                        var _this2$store;\n                        return (_this2$store = _this2.store)[fcName].apply(_this2$store, arguments);\n                    };\n                });\n                var storeApiChained = [\n                    \"addResource\",\n                    \"addResources\",\n                    \"addResourceBundle\",\n                    \"removeResourceBundle\"\n                ];\n                storeApiChained.forEach(function(fcName) {\n                    _this2[fcName] = function() {\n                        var _this2$store2;\n                        (_this2$store2 = _this2.store)[fcName].apply(_this2$store2, arguments);\n                        return _this2;\n                    };\n                });\n                var deferred = defer();\n                var load = function load() {\n                    var finish = function finish(err, t) {\n                        if (_this2.isInitialized && !_this2.initializedStoreOnce) _this2.logger.warn(\"init: i18next is already initialized. You should call init just once!\");\n                        _this2.isInitialized = true;\n                        if (!_this2.options.isClone) _this2.logger.log(\"initialized\", _this2.options);\n                        _this2.emit(\"initialized\", _this2.options);\n                        deferred.resolve(t);\n                        callback(err, t);\n                    };\n                    if (_this2.languages && _this2.options.compatibilityAPI !== \"v1\" && !_this2.isInitialized) return finish(null, _this2.t.bind(_this2));\n                    _this2.changeLanguage(_this2.options.lng, finish);\n                };\n                if (this.options.resources || !this.options.initImmediate) load();\n                else setTimeout(load, 0);\n                return deferred;\n            }\n        },\n        {\n            key: \"loadResources\",\n            value: function loadResources(language) {\n                var _this3 = this;\n                var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n                var usedCallback = callback;\n                var usedLng = typeof language === \"string\" ? language : this.language;\n                if (typeof language === \"function\") usedCallback = language;\n                if (!this.options.resources || this.options.partialBundledLanguages) {\n                    if (usedLng && usedLng.toLowerCase() === \"cimode\") return usedCallback();\n                    var toLoad = [];\n                    var append = function append(lng) {\n                        if (!lng) return;\n                        var lngs = _this3.services.languageUtils.toResolveHierarchy(lng);\n                        lngs.forEach(function(l) {\n                            if (toLoad.indexOf(l) < 0) toLoad.push(l);\n                        });\n                    };\n                    if (!usedLng) {\n                        var fallbacks = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n                        fallbacks.forEach(function(l) {\n                            return append(l);\n                        });\n                    } else append(usedLng);\n                    if (this.options.preload) this.options.preload.forEach(function(l) {\n                        return append(l);\n                    });\n                    this.services.backendConnector.load(toLoad, this.options.ns, function(e) {\n                        if (!e && !_this3.resolvedLanguage && _this3.language) _this3.setResolvedLanguage(_this3.language);\n                        usedCallback(e);\n                    });\n                } else usedCallback(null);\n            }\n        },\n        {\n            key: \"reloadResources\",\n            value: function reloadResources(lngs, ns, callback) {\n                var deferred = defer();\n                if (!lngs) lngs = this.languages;\n                if (!ns) ns = this.options.ns;\n                if (!callback) callback = noop;\n                this.services.backendConnector.reload(lngs, ns, function(err) {\n                    deferred.resolve();\n                    callback(err);\n                });\n                return deferred;\n            }\n        },\n        {\n            key: \"use\",\n            value: function use(module) {\n                if (!module) throw new Error(\"You are passing an undefined module! Please check the object you are passing to i18next.use()\");\n                if (!module.type) throw new Error(\"You are passing a wrong module! Please check the object you are passing to i18next.use()\");\n                if (module.type === \"backend\") this.modules.backend = module;\n                if (module.type === \"logger\" || module.log && module.warn && module.error) this.modules.logger = module;\n                if (module.type === \"languageDetector\") this.modules.languageDetector = module;\n                if (module.type === \"i18nFormat\") this.modules.i18nFormat = module;\n                if (module.type === \"postProcessor\") postProcessor.addPostProcessor(module);\n                if (module.type === \"formatter\") this.modules.formatter = module;\n                if (module.type === \"3rdParty\") this.modules.external.push(module);\n                return this;\n            }\n        },\n        {\n            key: \"setResolvedLanguage\",\n            value: function setResolvedLanguage(l) {\n                if (!l || !this.languages) return;\n                if ([\n                    \"cimode\",\n                    \"dev\"\n                ].indexOf(l) > -1) return;\n                for(var li = 0; li < this.languages.length; li++){\n                    var lngInLngs = this.languages[li];\n                    if ([\n                        \"cimode\",\n                        \"dev\"\n                    ].indexOf(lngInLngs) > -1) continue;\n                    if (this.store.hasLanguageSomeTranslations(lngInLngs)) {\n                        this.resolvedLanguage = lngInLngs;\n                        break;\n                    }\n                }\n            }\n        },\n        {\n            key: \"changeLanguage\",\n            value: function changeLanguage(lng, callback) {\n                var _this4 = this;\n                this.isLanguageChangingTo = lng;\n                var deferred = defer();\n                this.emit(\"languageChanging\", lng);\n                var setLngProps = function setLngProps(l) {\n                    _this4.language = l;\n                    _this4.languages = _this4.services.languageUtils.toResolveHierarchy(l);\n                    _this4.resolvedLanguage = undefined;\n                    _this4.setResolvedLanguage(l);\n                };\n                var done = function done(err, l) {\n                    if (l) {\n                        setLngProps(l);\n                        _this4.translator.changeLanguage(l);\n                        _this4.isLanguageChangingTo = undefined;\n                        _this4.emit(\"languageChanged\", l);\n                        _this4.logger.log(\"languageChanged\", l);\n                    } else _this4.isLanguageChangingTo = undefined;\n                    deferred.resolve(function() {\n                        return _this4.t.apply(_this4, arguments);\n                    });\n                    if (callback) callback(err, function() {\n                        return _this4.t.apply(_this4, arguments);\n                    });\n                };\n                var setLng = function setLng(lngs) {\n                    if (!lng && !lngs && _this4.services.languageDetector) lngs = [];\n                    var l = typeof lngs === \"string\" ? lngs : _this4.services.languageUtils.getBestMatchFromCodes(lngs);\n                    if (l) {\n                        if (!_this4.language) setLngProps(l);\n                        if (!_this4.translator.language) _this4.translator.changeLanguage(l);\n                        if (_this4.services.languageDetector && _this4.services.languageDetector.cacheUserLanguage) _this4.services.languageDetector.cacheUserLanguage(l);\n                    }\n                    _this4.loadResources(l, function(err) {\n                        done(err, l);\n                    });\n                };\n                if (!lng && this.services.languageDetector && !this.services.languageDetector.async) setLng(this.services.languageDetector.detect());\n                else if (!lng && this.services.languageDetector && this.services.languageDetector.async) {\n                    if (this.services.languageDetector.detect.length === 0) this.services.languageDetector.detect().then(setLng);\n                    else this.services.languageDetector.detect(setLng);\n                } else setLng(lng);\n                return deferred;\n            }\n        },\n        {\n            key: \"getFixedT\",\n            value: function getFixedT(lng, ns, keyPrefix) {\n                var _this5 = this;\n                var fixedT = function fixedT(key, opts) {\n                    var options;\n                    if ((0, $jOMXy.default)(opts) !== \"object\") {\n                        for(var _len3 = arguments.length, rest = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++)rest[_key3 - 2] = arguments[_key3];\n                        options = _this5.options.overloadTranslationOptionHandler([\n                            key,\n                            opts\n                        ].concat(rest));\n                    } else options = _objectSpread({}, opts);\n                    options.lng = options.lng || fixedT.lng;\n                    options.lngs = options.lngs || fixedT.lngs;\n                    options.ns = options.ns || fixedT.ns;\n                    options.keyPrefix = options.keyPrefix || keyPrefix || fixedT.keyPrefix;\n                    var keySeparator = _this5.options.keySeparator || \".\";\n                    var resultKey;\n                    if (options.keyPrefix && Array.isArray(key)) resultKey = key.map(function(k) {\n                        return \"\".concat(options.keyPrefix).concat(keySeparator).concat(k);\n                    });\n                    else resultKey = options.keyPrefix ? \"\".concat(options.keyPrefix).concat(keySeparator).concat(key) : key;\n                    return _this5.t(resultKey, options);\n                };\n                if (typeof lng === \"string\") fixedT.lng = lng;\n                else fixedT.lngs = lng;\n                fixedT.ns = ns;\n                fixedT.keyPrefix = keyPrefix;\n                return fixedT;\n            }\n        },\n        {\n            key: \"t\",\n            value: function t() {\n                var _this$translator;\n                return this.translator && (_this$translator = this.translator).translate.apply(_this$translator, arguments);\n            }\n        },\n        {\n            key: \"exists\",\n            value: function exists() {\n                var _this$translator2;\n                return this.translator && (_this$translator2 = this.translator).exists.apply(_this$translator2, arguments);\n            }\n        },\n        {\n            key: \"setDefaultNamespace\",\n            value: function setDefaultNamespace(ns) {\n                this.options.defaultNS = ns;\n            }\n        },\n        {\n            key: \"hasLoadedNamespace\",\n            value: function hasLoadedNamespace(ns) {\n                var _this6 = this;\n                var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n                if (!this.isInitialized) {\n                    this.logger.warn(\"hasLoadedNamespace: i18next was not initialized\", this.languages);\n                    return false;\n                }\n                if (!this.languages || !this.languages.length) {\n                    this.logger.warn(\"hasLoadedNamespace: i18n.languages were undefined or empty\", this.languages);\n                    return false;\n                }\n                var lng = options.lng || this.resolvedLanguage || this.languages[0];\n                var fallbackLng = this.options ? this.options.fallbackLng : false;\n                var lastLng = this.languages[this.languages.length - 1];\n                if (lng.toLowerCase() === \"cimode\") return true;\n                var loadNotPending = function loadNotPending(l, n) {\n                    var loadState = _this6.services.backendConnector.state[\"\".concat(l, \"|\").concat(n)];\n                    return loadState === -1 || loadState === 2;\n                };\n                if (options.precheck) {\n                    var preResult = options.precheck(this, loadNotPending);\n                    if (preResult !== undefined) return preResult;\n                }\n                if (this.hasResourceBundle(lng, ns)) return true;\n                if (!this.services.backendConnector.backend || this.options.resources && !this.options.partialBundledLanguages) return true;\n                if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n                return false;\n            }\n        },\n        {\n            key: \"loadNamespaces\",\n            value: function loadNamespaces(ns, callback) {\n                var _this7 = this;\n                var deferred = defer();\n                if (!this.options.ns) {\n                    if (callback) callback();\n                    return Promise.resolve();\n                }\n                if (typeof ns === \"string\") ns = [\n                    ns\n                ];\n                ns.forEach(function(n) {\n                    if (_this7.options.ns.indexOf(n) < 0) _this7.options.ns.push(n);\n                });\n                this.loadResources(function(err) {\n                    deferred.resolve();\n                    if (callback) callback(err);\n                });\n                return deferred;\n            }\n        },\n        {\n            key: \"loadLanguages\",\n            value: function loadLanguages(lngs, callback) {\n                var deferred = defer();\n                if (typeof lngs === \"string\") lngs = [\n                    lngs\n                ];\n                var preloaded = this.options.preload || [];\n                var newLngs = lngs.filter(function(lng) {\n                    return preloaded.indexOf(lng) < 0;\n                });\n                if (!newLngs.length) {\n                    if (callback) callback();\n                    return Promise.resolve();\n                }\n                this.options.preload = preloaded.concat(newLngs);\n                this.loadResources(function(err) {\n                    deferred.resolve();\n                    if (callback) callback(err);\n                });\n                return deferred;\n            }\n        },\n        {\n            key: \"dir\",\n            value: function dir(lng) {\n                if (!lng) lng = this.resolvedLanguage || (this.languages && this.languages.length > 0 ? this.languages[0] : this.language);\n                if (!lng) return \"rtl\";\n                var rtlLngs = [\n                    \"ar\",\n                    \"shu\",\n                    \"sqr\",\n                    \"ssh\",\n                    \"xaa\",\n                    \"yhd\",\n                    \"yud\",\n                    \"aao\",\n                    \"abh\",\n                    \"abv\",\n                    \"acm\",\n                    \"acq\",\n                    \"acw\",\n                    \"acx\",\n                    \"acy\",\n                    \"adf\",\n                    \"ads\",\n                    \"aeb\",\n                    \"aec\",\n                    \"afb\",\n                    \"ajp\",\n                    \"apc\",\n                    \"apd\",\n                    \"arb\",\n                    \"arq\",\n                    \"ars\",\n                    \"ary\",\n                    \"arz\",\n                    \"auz\",\n                    \"avl\",\n                    \"ayh\",\n                    \"ayl\",\n                    \"ayn\",\n                    \"ayp\",\n                    \"bbz\",\n                    \"pga\",\n                    \"he\",\n                    \"iw\",\n                    \"ps\",\n                    \"pbt\",\n                    \"pbu\",\n                    \"pst\",\n                    \"prp\",\n                    \"prd\",\n                    \"ug\",\n                    \"ur\",\n                    \"ydd\",\n                    \"yds\",\n                    \"yih\",\n                    \"ji\",\n                    \"yi\",\n                    \"hbo\",\n                    \"men\",\n                    \"xmn\",\n                    \"fa\",\n                    \"jpr\",\n                    \"peo\",\n                    \"pes\",\n                    \"prs\",\n                    \"dv\",\n                    \"sam\",\n                    \"ckb\"\n                ];\n                var languageUtils = this.services && this.services.languageUtils || new LanguageUtil(get());\n                return rtlLngs.indexOf(languageUtils.getLanguagePartFromCode(lng)) > -1 || lng.toLowerCase().indexOf(\"-arab\") > 1 ? \"rtl\" : \"ltr\";\n            }\n        },\n        {\n            key: \"cloneInstance\",\n            value: function cloneInstance() {\n                var _this8 = this;\n                var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n                var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n                var mergedOptions = _objectSpread(_objectSpread(_objectSpread({}, this.options), options), {\n                    isClone: true\n                });\n                var clone = new I18n(mergedOptions);\n                if (options.debug !== undefined || options.prefix !== undefined) clone.logger = clone.logger.clone(options);\n                var membersToCopy = [\n                    \"store\",\n                    \"services\",\n                    \"language\"\n                ];\n                membersToCopy.forEach(function(m) {\n                    clone[m] = _this8[m];\n                });\n                clone.services = _objectSpread({}, this.services);\n                clone.services.utils = {\n                    hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n                };\n                clone.translator = new Translator(clone.services, clone.options);\n                clone.translator.on(\"*\", function(event) {\n                    for(var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++)args[_key4 - 1] = arguments[_key4];\n                    clone.emit.apply(clone, [\n                        event\n                    ].concat(args));\n                });\n                clone.init(mergedOptions, callback);\n                clone.translator.options = clone.options;\n                clone.translator.backendConnector.services.utils = {\n                    hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n                };\n                return clone;\n            }\n        },\n        {\n            key: \"toJSON\",\n            value: function toJSON() {\n                return {\n                    options: this.options,\n                    store: this.store,\n                    language: this.language,\n                    languages: this.languages,\n                    resolvedLanguage: this.resolvedLanguage\n                };\n            }\n        }\n    ]);\n    return I18n;\n}(EventEmitter);\n(0, $2qeFG.default)(I18n, \"createInstance\", function() {\n    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    var callback = arguments.length > 1 ? arguments[1] : undefined;\n    return new I18n(options, callback);\n});\nvar instance = I18n.createInstance();\ninstance.createInstance = I18n.createInstance;\nvar createInstance = instance.createInstance;\nvar dir = instance.dir;\nvar init = instance.init;\nvar loadResources = instance.loadResources;\nvar reloadResources = instance.reloadResources;\nvar use = instance.use;\nvar changeLanguage = instance.changeLanguage;\nvar getFixedT = instance.getFixedT;\nvar t = instance.t;\nvar exists = instance.exists;\nvar setDefaultNamespace = instance.setDefaultNamespace;\nvar hasLoadedNamespace = instance.hasLoadedNamespace;\nvar loadNamespaces = instance.loadNamespaces;\nvar loadLanguages = instance.loadLanguages;\n\n});\nparcelRegister(\"jOMXy\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", () => $e6d8aa307cfbe8b4$export$2e2bcd8739ae039);\nfunction $e6d8aa307cfbe8b4$export$2e2bcd8739ae039(obj) {\n    \"@babel/helpers - typeof\";\n    return $e6d8aa307cfbe8b4$export$2e2bcd8739ae039 = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function(obj) {\n        return typeof obj;\n    } : function(obj) {\n        return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    }, $e6d8aa307cfbe8b4$export$2e2bcd8739ae039(obj);\n}\n\n});\n\nparcelRegister(\"dM0Cr\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", () => $a0703d0085fc4fb2$export$2e2bcd8739ae039);\nfunction $a0703d0085fc4fb2$export$2e2bcd8739ae039(instance, Constructor) {\n    if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\n\n});\n\nparcelRegister(\"lRfe8\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", () => $fe9a5bf59b39de5a$export$2e2bcd8739ae039);\n\nvar $k2Kke = parcelRequire(\"k2Kke\");\nfunction $fe9a5bf59b39de5a$var$_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, (0, $k2Kke.default)(descriptor.key), descriptor);\n    }\n}\nfunction $fe9a5bf59b39de5a$export$2e2bcd8739ae039(Constructor, protoProps, staticProps) {\n    if (protoProps) $fe9a5bf59b39de5a$var$_defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) $fe9a5bf59b39de5a$var$_defineProperties(Constructor, staticProps);\n    Object.defineProperty(Constructor, \"prototype\", {\n        writable: false\n    });\n    return Constructor;\n}\n\n});\nparcelRegister(\"k2Kke\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", () => $e977edce0f75b0db$export$2e2bcd8739ae039);\n\nvar $jOMXy = parcelRequire(\"jOMXy\");\n\nvar $fEskS = parcelRequire(\"fEskS\");\nfunction $e977edce0f75b0db$export$2e2bcd8739ae039(arg) {\n    var key = (0, $fEskS.default)(arg, \"string\");\n    return (0, $jOMXy.default)(key) === \"symbol\" ? key : String(key);\n}\n\n});\nparcelRegister(\"fEskS\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", () => $b650924e9996270c$export$2e2bcd8739ae039);\n\nvar $jOMXy = parcelRequire(\"jOMXy\");\nfunction $b650924e9996270c$export$2e2bcd8739ae039(input, hint) {\n    if ((0, $jOMXy.default)(input) !== \"object\" || input === null) return input;\n    var prim = input[Symbol.toPrimitive];\n    if (prim !== undefined) {\n        var res = prim.call(input, hint || \"default\");\n        if ((0, $jOMXy.default)(res) !== \"object\") return res;\n        throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n    }\n    return (hint === \"string\" ? String : Number)(input);\n}\n\n});\n\n\n\nparcelRegister(\"1oVxX\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", () => $1054abeafa6bc7e1$export$2e2bcd8739ae039);\nfunction $1054abeafa6bc7e1$export$2e2bcd8739ae039(self) {\n    if (self === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n    return self;\n}\n\n});\n\nparcelRegister(\"1UPzg\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", () => $165305ab584beb18$export$2e2bcd8739ae039);\n\nvar $5zL6F = parcelRequire(\"5zL6F\");\nfunction $165305ab584beb18$export$2e2bcd8739ae039(subClass, superClass) {\n    if (typeof superClass !== \"function\" && superClass !== null) throw new TypeError(\"Super expression must either be null or a function\");\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\n        constructor: {\n            value: subClass,\n            writable: true,\n            configurable: true\n        }\n    });\n    Object.defineProperty(subClass, \"prototype\", {\n        writable: false\n    });\n    if (superClass) (0, $5zL6F.default)(subClass, superClass);\n}\n\n});\nparcelRegister(\"5zL6F\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", () => $40f4c2feb843f2da$export$2e2bcd8739ae039);\nfunction $40f4c2feb843f2da$export$2e2bcd8739ae039(o, p) {\n    $40f4c2feb843f2da$export$2e2bcd8739ae039 = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n        o.__proto__ = p;\n        return o;\n    };\n    return $40f4c2feb843f2da$export$2e2bcd8739ae039(o, p);\n}\n\n});\n\n\nparcelRegister(\"aEHZE\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", () => $7c1fc3fad5a369a2$export$2e2bcd8739ae039);\n\nvar $jOMXy = parcelRequire(\"jOMXy\");\n\nvar $1oVxX = parcelRequire(\"1oVxX\");\nfunction $7c1fc3fad5a369a2$export$2e2bcd8739ae039(self, call) {\n    if (call && ((0, $jOMXy.default)(call) === \"object\" || typeof call === \"function\")) return call;\n    else if (call !== void 0) throw new TypeError(\"Derived constructors may only return object or undefined\");\n    return (0, $1oVxX.default)(self);\n}\n\n});\n\nparcelRegister(\"aKKvr\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", () => $7d424663944f7a08$export$2e2bcd8739ae039);\nfunction $7d424663944f7a08$export$2e2bcd8739ae039(o) {\n    $7d424663944f7a08$export$2e2bcd8739ae039 = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n        return o.__proto__ || Object.getPrototypeOf(o);\n    };\n    return $7d424663944f7a08$export$2e2bcd8739ae039(o);\n}\n\n});\n\nparcelRegister(\"2qeFG\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", () => $1c3963e2ec4676f7$export$2e2bcd8739ae039);\n\nvar $k2Kke = parcelRequire(\"k2Kke\");\nfunction $1c3963e2ec4676f7$export$2e2bcd8739ae039(obj, key, value) {\n    key = (0, $k2Kke.default)(key);\n    if (key in obj) Object.defineProperty(obj, key, {\n        value: value,\n        enumerable: true,\n        configurable: true,\n        writable: true\n    });\n    else obj[key] = value;\n    return obj;\n}\n\n});\n\nparcelRegister(\"ALbeL\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", () => $06e7f5ebe1552031$export$2e2bcd8739ae039);\n\nvar $56R8K = parcelRequire(\"56R8K\");\n\nvar $cZGos = parcelRequire(\"cZGos\");\n\nvar $eXIWw = parcelRequire(\"eXIWw\");\n\nvar $cpFa1 = parcelRequire(\"cpFa1\");\nfunction $06e7f5ebe1552031$export$2e2bcd8739ae039(arr) {\n    return (0, $56R8K.default)(arr) || (0, $cZGos.default)(arr) || (0, $eXIWw.default)(arr) || (0, $cpFa1.default)();\n}\n\n});\nparcelRegister(\"56R8K\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", () => $3b86bbcb24b44a1d$export$2e2bcd8739ae039);\nfunction $3b86bbcb24b44a1d$export$2e2bcd8739ae039(arr) {\n    if (Array.isArray(arr)) return arr;\n}\n\n});\n\nparcelRegister(\"cZGos\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", () => $975c10fa3ca03dc7$export$2e2bcd8739ae039);\nfunction $975c10fa3ca03dc7$export$2e2bcd8739ae039(iter) {\n    if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\n});\n\nparcelRegister(\"eXIWw\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", () => $ae4970148ece50ad$export$2e2bcd8739ae039);\n\nvar $3MxnJ = parcelRequire(\"3MxnJ\");\nfunction $ae4970148ece50ad$export$2e2bcd8739ae039(o, minLen) {\n    if (!o) return;\n    if (typeof o === \"string\") return (0, $3MxnJ.default)(o, minLen);\n    var n = Object.prototype.toString.call(o).slice(8, -1);\n    if (n === \"Object\" && o.constructor) n = o.constructor.name;\n    if (n === \"Map\" || n === \"Set\") return Array.from(o);\n    if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return (0, $3MxnJ.default)(o, minLen);\n}\n\n});\nparcelRegister(\"3MxnJ\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", () => $2c0fbfb5c55051c8$export$2e2bcd8739ae039);\nfunction $2c0fbfb5c55051c8$export$2e2bcd8739ae039(arr, len) {\n    if (len == null || len > arr.length) len = arr.length;\n    for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n    return arr2;\n}\n\n});\n\n\nparcelRegister(\"cpFa1\", function(module, exports) {\n\n$parcel$export(module.exports, \"default\", () => $02550737ba08c18f$export$2e2bcd8739ae039);\nfunction $02550737ba08c18f$export$2e2bcd8739ae039() {\n    throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\n});\n\n\n\nparcelRegister(\"hvxhK\", function(module, exports) {\n(function(window1, factory) {\n    var lazySizes = factory(window1, window1.document, Date);\n    window1.lazySizes = lazySizes;\n    if (0, module.exports) module.exports = lazySizes;\n})(typeof window != \"undefined\" ? window : {}, /**\n * import(\"./types/global\")\n * @typedef { import(\"./types/lazysizes-config\").LazySizesConfigPartial } LazySizesConfigPartial\n */ function l(window1, document, Date1) {\n    \"use strict\";\n    /*jshint eqnull:true */ var lazysizes, /**\n\t\t * @type { LazySizesConfigPartial }\n\t\t */ lazySizesCfg;\n    (function() {\n        var prop;\n        var lazySizesDefaults = {\n            lazyClass: \"lazyload\",\n            loadedClass: \"lazyloaded\",\n            loadingClass: \"lazyloading\",\n            preloadClass: \"lazypreload\",\n            errorClass: \"lazyerror\",\n            //strictClass: 'lazystrict',\n            autosizesClass: \"lazyautosizes\",\n            fastLoadedClass: \"ls-is-cached\",\n            iframeLoadMode: 0,\n            srcAttr: \"data-src\",\n            srcsetAttr: \"data-srcset\",\n            sizesAttr: \"data-sizes\",\n            //preloadAfterLoad: false,\n            minSize: 40,\n            customMedia: {},\n            init: true,\n            expFactor: 1.5,\n            hFac: 0.8,\n            loadMode: 2,\n            loadHidden: true,\n            ricTimeout: 0,\n            throttleDelay: 125\n        };\n        lazySizesCfg = window1.lazySizesConfig || window1.lazysizesConfig || {};\n        for(prop in lazySizesDefaults)if (!(prop in lazySizesCfg)) lazySizesCfg[prop] = lazySizesDefaults[prop];\n    })();\n    if (!document || !document.getElementsByClassName) return {\n        init: function() {},\n        /**\n\t\t\t * @type { LazySizesConfigPartial }\n\t\t\t */ cfg: lazySizesCfg,\n        /**\n\t\t\t * @type { true }\n\t\t\t */ noSupport: true\n    };\n    var docElem = document.documentElement;\n    var supportPicture = window1.HTMLPictureElement;\n    var _addEventListener = \"addEventListener\";\n    var _getAttribute = \"getAttribute\";\n    /**\n\t * Update to bind to window because 'this' becomes null during SSR\n\t * builds.\n\t */ var addEventListener = window1[_addEventListener].bind(window1);\n    var setTimeout = window1.setTimeout;\n    var requestAnimationFrame = window1.requestAnimationFrame || setTimeout;\n    var requestIdleCallback = window1.requestIdleCallback;\n    var regPicture = /^picture$/i;\n    var loadEvents = [\n        \"load\",\n        \"error\",\n        \"lazyincluded\",\n        \"_lazyloaded\"\n    ];\n    var regClassCache = {};\n    var forEach = Array.prototype.forEach;\n    /**\n\t * @param ele {Element}\n\t * @param cls {string}\n\t */ var hasClass = function(ele, cls) {\n        if (!regClassCache[cls]) regClassCache[cls] = new RegExp(\"(\\\\s|^)\" + cls + \"(\\\\s|$)\");\n        return regClassCache[cls].test(ele[_getAttribute](\"class\") || \"\") && regClassCache[cls];\n    };\n    /**\n\t * @param ele {Element}\n\t * @param cls {string}\n\t */ var addClass = function(ele, cls) {\n        if (!hasClass(ele, cls)) ele.setAttribute(\"class\", (ele[_getAttribute](\"class\") || \"\").trim() + \" \" + cls);\n    };\n    /**\n\t * @param ele {Element}\n\t * @param cls {string}\n\t */ var removeClass = function(ele, cls) {\n        var reg;\n        if (reg = hasClass(ele, cls)) ele.setAttribute(\"class\", (ele[_getAttribute](\"class\") || \"\").replace(reg, \" \"));\n    };\n    var addRemoveLoadEvents = function(dom, fn, add) {\n        var action = add ? _addEventListener : \"removeEventListener\";\n        if (add) addRemoveLoadEvents(dom, fn);\n        loadEvents.forEach(function(evt) {\n            dom[action](evt, fn);\n        });\n    };\n    /**\n\t * @param elem { Element }\n\t * @param name { string }\n\t * @param detail { any }\n\t * @param noBubbles { boolean }\n\t * @param noCancelable { boolean }\n\t * @returns { CustomEvent }\n\t */ var triggerEvent = function(elem, name, detail, noBubbles, noCancelable) {\n        var event = document.createEvent(\"Event\");\n        if (!detail) detail = {};\n        detail.instance = lazysizes;\n        event.initEvent(name, !noBubbles, !noCancelable);\n        event.detail = detail;\n        elem.dispatchEvent(event);\n        return event;\n    };\n    var updatePolyfill = function(el, full) {\n        var polyfill;\n        if (!supportPicture && (polyfill = window1.picturefill || lazySizesCfg.pf)) {\n            if (full && full.src && !el[_getAttribute](\"srcset\")) el.setAttribute(\"srcset\", full.src);\n            polyfill({\n                reevaluate: true,\n                elements: [\n                    el\n                ]\n            });\n        } else if (full && full.src) el.src = full.src;\n    };\n    var getCSS = function(elem, style) {\n        return (getComputedStyle(elem, null) || {})[style];\n    };\n    /**\n\t *\n\t * @param elem { Element }\n\t * @param parent { Element }\n\t * @param [width] {number}\n\t * @returns {number}\n\t */ var getWidth = function(elem, parent, width) {\n        width = width || elem.offsetWidth;\n        while(width < lazySizesCfg.minSize && parent && !elem._lazysizesWidth){\n            width = parent.offsetWidth;\n            parent = parent.parentNode;\n        }\n        return width;\n    };\n    var rAF = function() {\n        var running, waiting;\n        var firstFns = [];\n        var secondFns = [];\n        var fns = firstFns;\n        var run = function() {\n            var runFns = fns;\n            fns = firstFns.length ? secondFns : firstFns;\n            running = true;\n            waiting = false;\n            while(runFns.length)runFns.shift()();\n            running = false;\n        };\n        var rafBatch = function(fn, queue) {\n            if (running && !queue) fn.apply(this, arguments);\n            else {\n                fns.push(fn);\n                if (!waiting) {\n                    waiting = true;\n                    (document.hidden ? setTimeout : requestAnimationFrame)(run);\n                }\n            }\n        };\n        rafBatch._lsFlush = run;\n        return rafBatch;\n    }();\n    var rAFIt = function(fn, simple) {\n        return simple ? function() {\n            rAF(fn);\n        } : function() {\n            var that = this;\n            var args = arguments;\n            rAF(function() {\n                fn.apply(that, args);\n            });\n        };\n    };\n    var throttle = function(fn) {\n        var running;\n        var lastTime = 0;\n        var gDelay = lazySizesCfg.throttleDelay;\n        var rICTimeout = lazySizesCfg.ricTimeout;\n        var run = function() {\n            running = false;\n            lastTime = Date1.now();\n            fn();\n        };\n        var idleCallback = requestIdleCallback && rICTimeout > 49 ? function() {\n            requestIdleCallback(run, {\n                timeout: rICTimeout\n            });\n            if (rICTimeout !== lazySizesCfg.ricTimeout) rICTimeout = lazySizesCfg.ricTimeout;\n        } : rAFIt(function() {\n            setTimeout(run);\n        }, true);\n        return function(isPriority) {\n            var delay;\n            if (isPriority = isPriority === true) rICTimeout = 33;\n            if (running) return;\n            running = true;\n            delay = gDelay - (Date1.now() - lastTime);\n            if (delay < 0) delay = 0;\n            if (isPriority || delay < 9) idleCallback();\n            else setTimeout(idleCallback, delay);\n        };\n    };\n    //based on http://modernjavascript.blogspot.de/2013/08/building-better-debounce.html\n    var debounce = function(func) {\n        var timeout, timestamp;\n        var wait = 99;\n        var run = function() {\n            timeout = null;\n            func();\n        };\n        var later = function() {\n            var last = Date1.now() - timestamp;\n            if (last < wait) setTimeout(later, wait - last);\n            else (requestIdleCallback || run)(run);\n        };\n        return function() {\n            timestamp = Date1.now();\n            if (!timeout) timeout = setTimeout(later, wait);\n        };\n    };\n    var loader = function() {\n        var preloadElems, isCompleted, resetPreloadingTimer, loadMode, started;\n        var eLvW, elvH, eLtop, eLleft, eLright, eLbottom, isBodyHidden;\n        var regImg = /^img$/i;\n        var regIframe = /^iframe$/i;\n        var supportScroll = \"onscroll\" in window1 && !/(gle|ing)bot/.test(navigator.userAgent);\n        var shrinkExpand = 0;\n        var currentExpand = 0;\n        var isLoading = 0;\n        var lowRuns = -1;\n        var resetPreloading = function(e) {\n            isLoading--;\n            if (!e || isLoading < 0 || !e.target) isLoading = 0;\n        };\n        var isVisible = function(elem) {\n            if (isBodyHidden == null) isBodyHidden = getCSS(document.body, \"visibility\") == \"hidden\";\n            return isBodyHidden || !(getCSS(elem.parentNode, \"visibility\") == \"hidden\" && getCSS(elem, \"visibility\") == \"hidden\");\n        };\n        var isNestedVisible = function(elem, elemExpand) {\n            var outerRect;\n            var parent = elem;\n            var visible = isVisible(elem);\n            eLtop -= elemExpand;\n            eLbottom += elemExpand;\n            eLleft -= elemExpand;\n            eLright += elemExpand;\n            while(visible && (parent = parent.offsetParent) && parent != document.body && parent != docElem){\n                visible = (getCSS(parent, \"opacity\") || 1) > 0;\n                if (visible && getCSS(parent, \"overflow\") != \"visible\") {\n                    outerRect = parent.getBoundingClientRect();\n                    visible = eLright > outerRect.left && eLleft < outerRect.right && eLbottom > outerRect.top - 1 && eLtop < outerRect.bottom + 1;\n                }\n            }\n            return visible;\n        };\n        var checkElements = function() {\n            var eLlen, i, rect, autoLoadElem, loadedSomething, elemExpand, elemNegativeExpand, elemExpandVal, beforeExpandVal, defaultExpand, preloadExpand, hFac;\n            var lazyloadElems = lazysizes.elements;\n            if ((loadMode = lazySizesCfg.loadMode) && isLoading < 8 && (eLlen = lazyloadElems.length)) {\n                i = 0;\n                lowRuns++;\n                for(; i < eLlen; i++){\n                    if (!lazyloadElems[i] || lazyloadElems[i]._lazyRace) continue;\n                    if (!supportScroll || lazysizes.prematureUnveil && lazysizes.prematureUnveil(lazyloadElems[i])) {\n                        unveilElement(lazyloadElems[i]);\n                        continue;\n                    }\n                    if (!(elemExpandVal = lazyloadElems[i][_getAttribute](\"data-expand\")) || !(elemExpand = elemExpandVal * 1)) elemExpand = currentExpand;\n                    if (!defaultExpand) {\n                        defaultExpand = !lazySizesCfg.expand || lazySizesCfg.expand < 1 ? docElem.clientHeight > 500 && docElem.clientWidth > 500 ? 500 : 370 : lazySizesCfg.expand;\n                        lazysizes._defEx = defaultExpand;\n                        preloadExpand = defaultExpand * lazySizesCfg.expFactor;\n                        hFac = lazySizesCfg.hFac;\n                        isBodyHidden = null;\n                        if (currentExpand < preloadExpand && isLoading < 1 && lowRuns > 2 && loadMode > 2 && !document.hidden) {\n                            currentExpand = preloadExpand;\n                            lowRuns = 0;\n                        } else if (loadMode > 1 && lowRuns > 1 && isLoading < 6) currentExpand = defaultExpand;\n                        else currentExpand = shrinkExpand;\n                    }\n                    if (beforeExpandVal !== elemExpand) {\n                        eLvW = innerWidth + elemExpand * hFac;\n                        elvH = innerHeight + elemExpand;\n                        elemNegativeExpand = elemExpand * -1;\n                        beforeExpandVal = elemExpand;\n                    }\n                    rect = lazyloadElems[i].getBoundingClientRect();\n                    if ((eLbottom = rect.bottom) >= elemNegativeExpand && (eLtop = rect.top) <= elvH && (eLright = rect.right) >= elemNegativeExpand * hFac && (eLleft = rect.left) <= eLvW && (eLbottom || eLright || eLleft || eLtop) && (lazySizesCfg.loadHidden || isVisible(lazyloadElems[i])) && (isCompleted && isLoading < 3 && !elemExpandVal && (loadMode < 3 || lowRuns < 4) || isNestedVisible(lazyloadElems[i], elemExpand))) {\n                        unveilElement(lazyloadElems[i]);\n                        loadedSomething = true;\n                        if (isLoading > 9) break;\n                    } else if (!loadedSomething && isCompleted && !autoLoadElem && isLoading < 4 && lowRuns < 4 && loadMode > 2 && (preloadElems[0] || lazySizesCfg.preloadAfterLoad) && (preloadElems[0] || !elemExpandVal && (eLbottom || eLright || eLleft || eLtop || lazyloadElems[i][_getAttribute](lazySizesCfg.sizesAttr) != \"auto\"))) autoLoadElem = preloadElems[0] || lazyloadElems[i];\n                }\n                if (autoLoadElem && !loadedSomething) unveilElement(autoLoadElem);\n            }\n        };\n        var throttledCheckElements = throttle(checkElements);\n        var switchLoadingClass = function(e) {\n            var elem = e.target;\n            if (elem._lazyCache) {\n                delete elem._lazyCache;\n                return;\n            }\n            resetPreloading(e);\n            addClass(elem, lazySizesCfg.loadedClass);\n            removeClass(elem, lazySizesCfg.loadingClass);\n            addRemoveLoadEvents(elem, rafSwitchLoadingClass);\n            triggerEvent(elem, \"lazyloaded\");\n        };\n        var rafedSwitchLoadingClass = rAFIt(switchLoadingClass);\n        var rafSwitchLoadingClass = function(e) {\n            rafedSwitchLoadingClass({\n                target: e.target\n            });\n        };\n        var changeIframeSrc = function(elem, src) {\n            var loadMode = elem.getAttribute(\"data-load-mode\") || lazySizesCfg.iframeLoadMode;\n            // loadMode can be also a string!\n            if (loadMode == 0) elem.contentWindow.location.replace(src);\n            else if (loadMode == 1) elem.src = src;\n        };\n        var handleSources = function(source) {\n            var customMedia;\n            var sourceSrcset = source[_getAttribute](lazySizesCfg.srcsetAttr);\n            if (customMedia = lazySizesCfg.customMedia[source[_getAttribute](\"data-media\") || source[_getAttribute](\"media\")]) source.setAttribute(\"media\", customMedia);\n            if (sourceSrcset) source.setAttribute(\"srcset\", sourceSrcset);\n        };\n        var lazyUnveil = rAFIt(function(elem, detail, isAuto, sizes, isImg) {\n            var src, srcset, parent, isPicture, event, firesLoad;\n            if (!(event = triggerEvent(elem, \"lazybeforeunveil\", detail)).defaultPrevented) {\n                if (sizes) {\n                    if (isAuto) addClass(elem, lazySizesCfg.autosizesClass);\n                    else elem.setAttribute(\"sizes\", sizes);\n                }\n                srcset = elem[_getAttribute](lazySizesCfg.srcsetAttr);\n                src = elem[_getAttribute](lazySizesCfg.srcAttr);\n                if (isImg) {\n                    parent = elem.parentNode;\n                    isPicture = parent && regPicture.test(parent.nodeName || \"\");\n                }\n                firesLoad = detail.firesLoad || \"src\" in elem && (srcset || src || isPicture);\n                event = {\n                    target: elem\n                };\n                addClass(elem, lazySizesCfg.loadingClass);\n                if (firesLoad) {\n                    clearTimeout(resetPreloadingTimer);\n                    resetPreloadingTimer = setTimeout(resetPreloading, 2500);\n                    addRemoveLoadEvents(elem, rafSwitchLoadingClass, true);\n                }\n                if (isPicture) forEach.call(parent.getElementsByTagName(\"source\"), handleSources);\n                if (srcset) elem.setAttribute(\"srcset\", srcset);\n                else if (src && !isPicture) {\n                    if (regIframe.test(elem.nodeName)) changeIframeSrc(elem, src);\n                    else elem.src = src;\n                }\n                if (isImg && (srcset || isPicture)) updatePolyfill(elem, {\n                    src: src\n                });\n            }\n            if (elem._lazyRace) delete elem._lazyRace;\n            removeClass(elem, lazySizesCfg.lazyClass);\n            rAF(function() {\n                // Part of this can be removed as soon as this fix is older: https://bugs.chromium.org/p/chromium/issues/detail?id=7731 (2015)\n                var isLoaded = elem.complete && elem.naturalWidth > 1;\n                if (!firesLoad || isLoaded) {\n                    if (isLoaded) addClass(elem, lazySizesCfg.fastLoadedClass);\n                    switchLoadingClass(event);\n                    elem._lazyCache = true;\n                    setTimeout(function() {\n                        if (\"_lazyCache\" in elem) delete elem._lazyCache;\n                    }, 9);\n                }\n                if (elem.loading == \"lazy\") isLoading--;\n            }, true);\n        });\n        /**\n\t\t *\n\t\t * @param elem { Element }\n\t\t */ var unveilElement = function(elem) {\n            if (elem._lazyRace) return;\n            var detail;\n            var isImg = regImg.test(elem.nodeName);\n            //allow using sizes=\"auto\", but don't use. it's invalid. Use data-sizes=\"auto\" or a valid value for sizes instead (i.e.: sizes=\"80vw\")\n            var sizes = isImg && (elem[_getAttribute](lazySizesCfg.sizesAttr) || elem[_getAttribute](\"sizes\"));\n            var isAuto = sizes == \"auto\";\n            if ((isAuto || !isCompleted) && isImg && (elem[_getAttribute](\"src\") || elem.srcset) && !elem.complete && !hasClass(elem, lazySizesCfg.errorClass) && hasClass(elem, lazySizesCfg.lazyClass)) return;\n            detail = triggerEvent(elem, \"lazyunveilread\").detail;\n            if (isAuto) autoSizer.updateElem(elem, true, elem.offsetWidth);\n            elem._lazyRace = true;\n            isLoading++;\n            lazyUnveil(elem, detail, isAuto, sizes, isImg);\n        };\n        var afterScroll = debounce(function() {\n            lazySizesCfg.loadMode = 3;\n            throttledCheckElements();\n        });\n        var altLoadmodeScrollListner = function() {\n            if (lazySizesCfg.loadMode == 3) lazySizesCfg.loadMode = 2;\n            afterScroll();\n        };\n        var onload = function() {\n            if (isCompleted) return;\n            if (Date1.now() - started < 999) {\n                setTimeout(onload, 999);\n                return;\n            }\n            isCompleted = true;\n            lazySizesCfg.loadMode = 3;\n            throttledCheckElements();\n            addEventListener(\"scroll\", altLoadmodeScrollListner, true);\n        };\n        return {\n            _: function() {\n                started = Date1.now();\n                lazysizes.elements = document.getElementsByClassName(lazySizesCfg.lazyClass);\n                preloadElems = document.getElementsByClassName(lazySizesCfg.lazyClass + \" \" + lazySizesCfg.preloadClass);\n                addEventListener(\"scroll\", throttledCheckElements, true);\n                addEventListener(\"resize\", throttledCheckElements, true);\n                addEventListener(\"pageshow\", function(e) {\n                    if (e.persisted) {\n                        var loadingElements = document.querySelectorAll(\".\" + lazySizesCfg.loadingClass);\n                        if (loadingElements.length && loadingElements.forEach) requestAnimationFrame(function() {\n                            loadingElements.forEach(function(img) {\n                                if (img.complete) unveilElement(img);\n                            });\n                        });\n                    }\n                });\n                if (window1.MutationObserver) new MutationObserver(throttledCheckElements).observe(docElem, {\n                    childList: true,\n                    subtree: true,\n                    attributes: true\n                });\n                else {\n                    docElem[_addEventListener](\"DOMNodeInserted\", throttledCheckElements, true);\n                    docElem[_addEventListener](\"DOMAttrModified\", throttledCheckElements, true);\n                    setInterval(throttledCheckElements, 999);\n                }\n                addEventListener(\"hashchange\", throttledCheckElements, true);\n                //, 'fullscreenchange'\n                [\n                    \"focus\",\n                    \"mouseover\",\n                    \"click\",\n                    \"load\",\n                    \"transitionend\",\n                    \"animationend\"\n                ].forEach(function(name) {\n                    document[_addEventListener](name, throttledCheckElements, true);\n                });\n                if (/d$|^c/.test(document.readyState)) onload();\n                else {\n                    addEventListener(\"load\", onload);\n                    document[_addEventListener](\"DOMContentLoaded\", throttledCheckElements);\n                    setTimeout(onload, 20000);\n                }\n                if (lazysizes.elements.length) {\n                    checkElements();\n                    rAF._lsFlush();\n                } else throttledCheckElements();\n            },\n            checkElems: throttledCheckElements,\n            unveil: unveilElement,\n            _aLSL: altLoadmodeScrollListner\n        };\n    }();\n    var autoSizer = function() {\n        var autosizesElems;\n        var sizeElement = rAFIt(function(elem, parent, event, width) {\n            var sources, i, len;\n            elem._lazysizesWidth = width;\n            width += \"px\";\n            elem.setAttribute(\"sizes\", width);\n            if (regPicture.test(parent.nodeName || \"\")) {\n                sources = parent.getElementsByTagName(\"source\");\n                for(i = 0, len = sources.length; i < len; i++)sources[i].setAttribute(\"sizes\", width);\n            }\n            if (!event.detail.dataAttr) updatePolyfill(elem, event.detail);\n        });\n        /**\n\t\t *\n\t\t * @param elem {Element}\n\t\t * @param dataAttr\n\t\t * @param [width] { number }\n\t\t */ var getSizeElement = function(elem, dataAttr, width) {\n            var event;\n            var parent = elem.parentNode;\n            if (parent) {\n                width = getWidth(elem, parent, width);\n                event = triggerEvent(elem, \"lazybeforesizes\", {\n                    width: width,\n                    dataAttr: !!dataAttr\n                });\n                if (!event.defaultPrevented) {\n                    width = event.detail.width;\n                    if (width && width !== elem._lazysizesWidth) sizeElement(elem, parent, event, width);\n                }\n            }\n        };\n        var updateElementsSizes = function() {\n            var i;\n            var len = autosizesElems.length;\n            if (len) {\n                i = 0;\n                for(; i < len; i++)getSizeElement(autosizesElems[i]);\n            }\n        };\n        var debouncedUpdateElementsSizes = debounce(updateElementsSizes);\n        return {\n            _: function() {\n                autosizesElems = document.getElementsByClassName(lazySizesCfg.autosizesClass);\n                addEventListener(\"resize\", debouncedUpdateElementsSizes);\n            },\n            checkElems: debouncedUpdateElementsSizes,\n            updateElem: getSizeElement\n        };\n    }();\n    var init = function() {\n        if (!init.i && document.getElementsByClassName) {\n            init.i = true;\n            autoSizer._();\n            loader._();\n        }\n    };\n    setTimeout(function() {\n        if (lazySizesCfg.init) init();\n    });\n    lazysizes = {\n        /**\n\t\t * @type { LazySizesConfigPartial }\n\t\t */ cfg: lazySizesCfg,\n        autoSizer: autoSizer,\n        loader: loader,\n        init: init,\n        uP: updatePolyfill,\n        aC: addClass,\n        rC: removeClass,\n        hC: hasClass,\n        fire: triggerEvent,\n        gW: getWidth,\n        rAF: rAF\n    };\n    return lazysizes;\n});\n\n});\n\nparcelRegister(\"hUnSM\", function(module, exports) {\n\"use strict\";\nmodule.exports = \"3.11.1\";\n\n});\n\nparcelRegister(\"9w6zV\", function(module, exports) {\n/*\n *  Copyright 2011 Twitter, Inc.\n *  Licensed under the Apache License, Version 2.0 (the \"License\");\n *  you may not use this file except in compliance with the License.\n *  You may obtain a copy of the License at\n *\n *  http://www.apache.org/licenses/LICENSE-2.0\n *\n *  Unless required by applicable law or agreed to in writing, software\n *  distributed under the License is distributed on an \"AS IS\" BASIS,\n *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *  See the License for the specific language governing permissions and\n *  limitations under the License.\n */ var $6edc348f0c32ccf9$var$Hogan = {};\n(function(Hogan) {\n    Hogan.Template = function(codeObj, text, compiler, options) {\n        codeObj = codeObj || {};\n        this.r = codeObj.code || this.r;\n        this.c = compiler;\n        this.options = options || {};\n        this.text = text || \"\";\n        this.partials = codeObj.partials || {};\n        this.subs = codeObj.subs || {};\n        this.buf = \"\";\n    };\n    Hogan.Template.prototype = {\n        // render: replaced by generated code.\n        r: function(context, partials, indent) {\n            return \"\";\n        },\n        // variable escaping\n        v: hoganEscape,\n        // triple stache\n        t: coerceToString,\n        render: function render(context, partials, indent) {\n            return this.ri([\n                context\n            ], partials || {}, indent);\n        },\n        // render internal -- a hook for overrides that catches partials too\n        ri: function(context, partials, indent) {\n            return this.r(context, partials, indent);\n        },\n        // ensurePartial\n        ep: function(symbol, partials) {\n            var partial = this.partials[symbol];\n            // check to see that if we've instantiated this partial before\n            var template = partials[partial.name];\n            if (partial.instance && partial.base == template) return partial.instance;\n            if (typeof template == \"string\") {\n                if (!this.c) throw new Error(\"No compiler available.\");\n                template = this.c.compile(template, this.options);\n            }\n            if (!template) return null;\n            // We use this to check whether the partials dictionary has changed\n            this.partials[symbol].base = template;\n            if (partial.subs) {\n                // Make sure we consider parent template now\n                if (!partials.stackText) partials.stackText = {};\n                for(key in partial.subs)if (!partials.stackText[key]) partials.stackText[key] = this.activeSub !== undefined && partials.stackText[this.activeSub] ? partials.stackText[this.activeSub] : this.text;\n                template = createSpecializedPartial(template, partial.subs, partial.partials, this.stackSubs, this.stackPartials, partials.stackText);\n            }\n            this.partials[symbol].instance = template;\n            return template;\n        },\n        // tries to find a partial in the current scope and render it\n        rp: function(symbol, context, partials, indent) {\n            var partial = this.ep(symbol, partials);\n            if (!partial) return \"\";\n            return partial.ri(context, partials, indent);\n        },\n        // render a section\n        rs: function(context, partials, section) {\n            var tail = context[context.length - 1];\n            if (!isArray(tail)) {\n                section(context, partials, this);\n                return;\n            }\n            for(var i = 0; i < tail.length; i++){\n                context.push(tail[i]);\n                section(context, partials, this);\n                context.pop();\n            }\n        },\n        // maybe start a section\n        s: function(val, ctx, partials, inverted, start, end, tags) {\n            var pass;\n            if (isArray(val) && val.length === 0) return false;\n            if (typeof val == \"function\") val = this.ms(val, ctx, partials, inverted, start, end, tags);\n            pass = !!val;\n            if (!inverted && pass && ctx) ctx.push(typeof val == \"object\" ? val : ctx[ctx.length - 1]);\n            return pass;\n        },\n        // find values with dotted names\n        d: function(key1, ctx, partials, returnFound) {\n            var found, names = key1.split(\".\"), val = this.f(names[0], ctx, partials, returnFound), doModelGet = this.options.modelGet, cx = null;\n            if (key1 === \".\" && isArray(ctx[ctx.length - 2])) val = ctx[ctx.length - 1];\n            else for(var i = 1; i < names.length; i++){\n                found = findInScope(names[i], val, doModelGet);\n                if (found !== undefined) {\n                    cx = val;\n                    val = found;\n                } else val = \"\";\n            }\n            if (returnFound && !val) return false;\n            if (!returnFound && typeof val == \"function\") {\n                ctx.push(cx);\n                val = this.mv(val, ctx, partials);\n                ctx.pop();\n            }\n            return val;\n        },\n        // find values with normal names\n        f: function(key1, ctx, partials, returnFound) {\n            var val = false, v = null, found = false, doModelGet = this.options.modelGet;\n            for(var i = ctx.length - 1; i >= 0; i--){\n                v = ctx[i];\n                val = findInScope(key1, v, doModelGet);\n                if (val !== undefined) {\n                    found = true;\n                    break;\n                }\n            }\n            if (!found) return returnFound ? false : \"\";\n            if (!returnFound && typeof val == \"function\") val = this.mv(val, ctx, partials);\n            return val;\n        },\n        // higher order templates\n        ls: function(func, cx, partials, text, tags) {\n            var oldTags = this.options.delimiters;\n            this.options.delimiters = tags;\n            this.b(this.ct(coerceToString(func.call(cx, text)), cx, partials));\n            this.options.delimiters = oldTags;\n            return false;\n        },\n        // compile text\n        ct: function(text, cx, partials) {\n            if (this.options.disableLambda) throw new Error(\"Lambda features disabled.\");\n            return this.c.compile(text, this.options).render(cx, partials);\n        },\n        // template result buffering\n        b: function(s) {\n            this.buf += s;\n        },\n        fl: function() {\n            var r = this.buf;\n            this.buf = \"\";\n            return r;\n        },\n        // method replace section\n        ms: function(func, ctx, partials, inverted, start, end, tags) {\n            var textSource, cx = ctx[ctx.length - 1], result = func.call(cx);\n            if (typeof result == \"function\") {\n                if (inverted) return true;\n                else {\n                    textSource = this.activeSub && this.subsText && this.subsText[this.activeSub] ? this.subsText[this.activeSub] : this.text;\n                    return this.ls(result, cx, partials, textSource.substring(start, end), tags);\n                }\n            }\n            return result;\n        },\n        // method replace variable\n        mv: function(func, ctx, partials) {\n            var cx = ctx[ctx.length - 1];\n            var result = func.call(cx);\n            if (typeof result == \"function\") return this.ct(coerceToString(result.call(cx)), cx, partials);\n            return result;\n        },\n        sub: function(name, context, partials, indent) {\n            var f = this.subs[name];\n            if (f) {\n                this.activeSub = name;\n                f(context, partials, this, indent);\n                this.activeSub = false;\n            }\n        }\n    };\n    //Find a key in an object\n    function findInScope(key1, scope, doModelGet) {\n        var val;\n        if (scope && typeof scope == \"object\") {\n            if (scope[key1] !== undefined) val = scope[key1];\n            else if (doModelGet && scope.get && typeof scope.get == \"function\") val = scope.get(key1);\n        }\n        return val;\n    }\n    function createSpecializedPartial(instance, subs, partials, stackSubs, stackPartials, stackText) {\n        function PartialTemplate() {}\n        PartialTemplate.prototype = instance;\n        function Substitutions() {}\n        Substitutions.prototype = instance.subs;\n        var key1;\n        var partial = new PartialTemplate();\n        partial.subs = new Substitutions();\n        partial.subsText = {}; //hehe. substext.\n        partial.buf = \"\";\n        stackSubs = stackSubs || {};\n        partial.stackSubs = stackSubs;\n        partial.subsText = stackText;\n        for(key1 in subs)if (!stackSubs[key1]) stackSubs[key1] = subs[key1];\n        for(key1 in stackSubs)partial.subs[key1] = stackSubs[key1];\n        stackPartials = stackPartials || {};\n        partial.stackPartials = stackPartials;\n        for(key1 in partials)if (!stackPartials[key1]) stackPartials[key1] = partials[key1];\n        for(key1 in stackPartials)partial.partials[key1] = stackPartials[key1];\n        return partial;\n    }\n    var rAmp = /&/g, rLt = /</g, rGt = />/g, rApos = /\\'/g, rQuot = /\\\"/g, hChars = /[&<>\\\"\\']/;\n    function coerceToString(val) {\n        return String(val === null || val === undefined ? \"\" : val);\n    }\n    function hoganEscape(str) {\n        str = coerceToString(str);\n        return hChars.test(str) ? str.replace(rAmp, \"&amp;\").replace(rLt, \"&lt;\").replace(rGt, \"&gt;\").replace(rApos, \"&#39;\").replace(rQuot, \"&quot;\") : str;\n    }\n    var isArray = Array.isArray || function(a) {\n        return Object.prototype.toString.call(a) === \"[object Array]\";\n    };\n})(module.exports);\n\n});\n\n\nvar $l5cY7 = parcelRequire(\"l5cY7\");\nconst $6be2e2cc6d146902$var$developmentConfig = {\n    debug: true,\n    algolia: {\n        appId: \"M57LS4K164\",\n        apiKey: \"2cb201d46a984c7888cfd7be5a9de5f9\",\n        indexName: \"juicefs_cms_dev\"\n    }\n};\nconst $6be2e2cc6d146902$var$productionConfig = {\n    debug: false,\n    algolia: {\n        appId: \"M57LS4K164\",\n        apiKey: \"2cb201d46a984c7888cfd7be5a9de5f9\",\n        indexName: \"juicefs_cms_prod\"\n    }\n};\n// Refer to https://parceljs.org/features/production/#development-branch-removal\nconst $6be2e2cc6d146902$var$config = $6be2e2cc6d146902$var$productionConfig;\nvar $6be2e2cc6d146902$export$2e2bcd8739ae039 = $6be2e2cc6d146902$var$config;\n\n\nconst $c09122dc9682058c$var$enTranslations = {\n    search: {\n        box: {\n            placeholder: \"Search all\",\n            submitButtonTitle: \"Submit the search query\",\n            resetButtonTitle: \"Clear the search query\",\n            tips: '\\uD83D\\uDCD6 Want to search for documentation? Please visit here: <a href=\"https://juicefs.com/docs/search\" target=\"_blank\">Search Documentation</a>'\n        },\n        menuLabel: {\n            blog: \"Blog\",\n            customer_story: \"Customer Story\",\n            event: \"Event\",\n            solution: \"Solution\"\n        },\n        noResultsText: \"No results have been found for: \"\n    }\n};\nconst $c09122dc9682058c$var$zhCNTranslations = {\n    search: {\n        box: {\n            placeholder: \"\\u641C\\u7D22\\u6240\\u6709\\u5185\\u5BB9\",\n            submitButtonTitle: \"\\u63D0\\u4EA4\\u67E5\\u8BE2\",\n            resetButtonTitle: \"\\u6E05\\u7A7A\\u67E5\\u8BE2\",\n            tips: '\\uD83D\\uDCD6 \\u60F3\\u8981\\u641C\\u7D22\\u6587\\u6863\\uFF1F\\u8BF7\\u8BBF\\u95EE\\u8FD9\\u91CC\\uFF1A<a href=\"https://juicefs.com/docs/zh/search\" target=\"_blank\">\\u6587\\u6863\\u641C\\u7D22</a>'\n        },\n        menuLabel: {\n            blog: \"\\u535A\\u5BA2\",\n            customer_story: \"\\u5BA2\\u6237\\u6848\\u4F8B\",\n            event: \"\\u6D3B\\u52A8\",\n            solution: \"\\u89E3\\u51B3\\u65B9\\u6848\"\n        },\n        noResultsText: \"\\u6CA1\\u6709\\u641C\\u7D22\\u7ED3\\u679C\\uFF1A\"\n    }\n};\nfunction $c09122dc9682058c$var$getLocale() {\n    const path = window.location.pathname;\n    return path.split(\"/\")[1];\n}\n// Refer to https://www.i18next.com/how-to/faq#how-should-the-language-codes-be-formatted\nfunction $c09122dc9682058c$var$getLanguageCode() {\n    switch($c09122dc9682058c$var$getLocale()){\n        case \"en\":\n            return \"en-US\";\n        case \"zh-cn\":\n            return \"zh-CN\";\n        default:\n            return \"en-US\";\n    }\n}\n(0, $l5cY7.default).init({\n    debug: (0, $6be2e2cc6d146902$export$2e2bcd8739ae039).debug,\n    lng: $c09122dc9682058c$var$getLanguageCode(),\n    resources: {\n        en: {\n            translation: $c09122dc9682058c$var$enTranslations\n        },\n        \"zh-CN\": {\n            translation: $c09122dc9682058c$var$zhCNTranslations\n        }\n    }\n});\nvar $c09122dc9682058c$export$2e2bcd8739ae039 = {\n    getLocale: $c09122dc9682058c$var$getLocale\n};\n\n\n// packages/alpinejs/src/scheduler.js\nvar $f347e48613385d9c$var$flushPending = false;\nvar $f347e48613385d9c$var$flushing = false;\nvar $f347e48613385d9c$var$queue = [];\nfunction $f347e48613385d9c$var$scheduler(callback) {\n    $f347e48613385d9c$var$queueJob(callback);\n}\nfunction $f347e48613385d9c$var$queueJob(job) {\n    if (!$f347e48613385d9c$var$queue.includes(job)) $f347e48613385d9c$var$queue.push(job);\n    $f347e48613385d9c$var$queueFlush();\n}\nfunction $f347e48613385d9c$var$dequeueJob(job) {\n    let index = $f347e48613385d9c$var$queue.indexOf(job);\n    if (index !== -1) $f347e48613385d9c$var$queue.splice(index, 1);\n}\nfunction $f347e48613385d9c$var$queueFlush() {\n    if (!$f347e48613385d9c$var$flushing && !$f347e48613385d9c$var$flushPending) {\n        $f347e48613385d9c$var$flushPending = true;\n        queueMicrotask($f347e48613385d9c$var$flushJobs);\n    }\n}\nfunction $f347e48613385d9c$var$flushJobs() {\n    $f347e48613385d9c$var$flushPending = false;\n    $f347e48613385d9c$var$flushing = true;\n    for(let i = 0; i < $f347e48613385d9c$var$queue.length; i++)$f347e48613385d9c$var$queue[i]();\n    $f347e48613385d9c$var$queue.length = 0;\n    $f347e48613385d9c$var$flushing = false;\n}\n// packages/alpinejs/src/reactivity.js\nvar $f347e48613385d9c$var$reactive;\nvar $f347e48613385d9c$var$effect;\nvar $f347e48613385d9c$var$release;\nvar $f347e48613385d9c$var$raw;\nvar $f347e48613385d9c$var$shouldSchedule = true;\nfunction $f347e48613385d9c$var$disableEffectScheduling(callback) {\n    $f347e48613385d9c$var$shouldSchedule = false;\n    callback();\n    $f347e48613385d9c$var$shouldSchedule = true;\n}\nfunction $f347e48613385d9c$var$setReactivityEngine(engine) {\n    $f347e48613385d9c$var$reactive = engine.reactive;\n    $f347e48613385d9c$var$release = engine.release;\n    $f347e48613385d9c$var$effect = (callback)=>engine.effect(callback, {\n            scheduler: (task)=>{\n                if ($f347e48613385d9c$var$shouldSchedule) $f347e48613385d9c$var$scheduler(task);\n                else task();\n            }\n        });\n    $f347e48613385d9c$var$raw = engine.raw;\n}\nfunction $f347e48613385d9c$var$overrideEffect(override) {\n    $f347e48613385d9c$var$effect = override;\n}\nfunction $f347e48613385d9c$var$elementBoundEffect(el) {\n    let cleanup2 = ()=>{};\n    let wrappedEffect = (callback)=>{\n        let effectReference = $f347e48613385d9c$var$effect(callback);\n        if (!el._x_effects) {\n            el._x_effects = new Set();\n            el._x_runEffects = ()=>{\n                el._x_effects.forEach((i)=>i());\n            };\n        }\n        el._x_effects.add(effectReference);\n        cleanup2 = ()=>{\n            if (effectReference === void 0) return;\n            el._x_effects.delete(effectReference);\n            $f347e48613385d9c$var$release(effectReference);\n        };\n        return effectReference;\n    };\n    return [\n        wrappedEffect,\n        ()=>{\n            cleanup2();\n        }\n    ];\n}\n// packages/alpinejs/src/mutation.js\nvar $f347e48613385d9c$var$onAttributeAddeds = [];\nvar $f347e48613385d9c$var$onElRemoveds = [];\nvar $f347e48613385d9c$var$onElAddeds = [];\nfunction $f347e48613385d9c$var$onElAdded(callback) {\n    $f347e48613385d9c$var$onElAddeds.push(callback);\n}\nfunction $f347e48613385d9c$var$onElRemoved(el, callback) {\n    if (typeof callback === \"function\") {\n        if (!el._x_cleanups) el._x_cleanups = [];\n        el._x_cleanups.push(callback);\n    } else {\n        callback = el;\n        $f347e48613385d9c$var$onElRemoveds.push(callback);\n    }\n}\nfunction $f347e48613385d9c$var$onAttributesAdded(callback) {\n    $f347e48613385d9c$var$onAttributeAddeds.push(callback);\n}\nfunction $f347e48613385d9c$var$onAttributeRemoved(el, name, callback) {\n    if (!el._x_attributeCleanups) el._x_attributeCleanups = {};\n    if (!el._x_attributeCleanups[name]) el._x_attributeCleanups[name] = [];\n    el._x_attributeCleanups[name].push(callback);\n}\nfunction $f347e48613385d9c$var$cleanupAttributes(el, names) {\n    if (!el._x_attributeCleanups) return;\n    Object.entries(el._x_attributeCleanups).forEach(([name, value])=>{\n        if (names === void 0 || names.includes(name)) {\n            value.forEach((i)=>i());\n            delete el._x_attributeCleanups[name];\n        }\n    });\n}\nvar $f347e48613385d9c$var$observer = new MutationObserver($f347e48613385d9c$var$onMutate);\nvar $f347e48613385d9c$var$currentlyObserving = false;\nfunction $f347e48613385d9c$var$startObservingMutations() {\n    $f347e48613385d9c$var$observer.observe(document, {\n        subtree: true,\n        childList: true,\n        attributes: true,\n        attributeOldValue: true\n    });\n    $f347e48613385d9c$var$currentlyObserving = true;\n}\nfunction $f347e48613385d9c$var$stopObservingMutations() {\n    $f347e48613385d9c$var$flushObserver();\n    $f347e48613385d9c$var$observer.disconnect();\n    $f347e48613385d9c$var$currentlyObserving = false;\n}\nvar $f347e48613385d9c$var$recordQueue = [];\nvar $f347e48613385d9c$var$willProcessRecordQueue = false;\nfunction $f347e48613385d9c$var$flushObserver() {\n    $f347e48613385d9c$var$recordQueue = $f347e48613385d9c$var$recordQueue.concat($f347e48613385d9c$var$observer.takeRecords());\n    if ($f347e48613385d9c$var$recordQueue.length && !$f347e48613385d9c$var$willProcessRecordQueue) {\n        $f347e48613385d9c$var$willProcessRecordQueue = true;\n        queueMicrotask(()=>{\n            $f347e48613385d9c$var$processRecordQueue();\n            $f347e48613385d9c$var$willProcessRecordQueue = false;\n        });\n    }\n}\nfunction $f347e48613385d9c$var$processRecordQueue() {\n    $f347e48613385d9c$var$onMutate($f347e48613385d9c$var$recordQueue);\n    $f347e48613385d9c$var$recordQueue.length = 0;\n}\nfunction $f347e48613385d9c$var$mutateDom(callback) {\n    if (!$f347e48613385d9c$var$currentlyObserving) return callback();\n    $f347e48613385d9c$var$stopObservingMutations();\n    let result = callback();\n    $f347e48613385d9c$var$startObservingMutations();\n    return result;\n}\nvar $f347e48613385d9c$var$isCollecting = false;\nvar $f347e48613385d9c$var$deferredMutations = [];\nfunction $f347e48613385d9c$var$deferMutations() {\n    $f347e48613385d9c$var$isCollecting = true;\n}\nfunction $f347e48613385d9c$var$flushAndStopDeferringMutations() {\n    $f347e48613385d9c$var$isCollecting = false;\n    $f347e48613385d9c$var$onMutate($f347e48613385d9c$var$deferredMutations);\n    $f347e48613385d9c$var$deferredMutations = [];\n}\nfunction $f347e48613385d9c$var$onMutate(mutations) {\n    if ($f347e48613385d9c$var$isCollecting) {\n        $f347e48613385d9c$var$deferredMutations = $f347e48613385d9c$var$deferredMutations.concat(mutations);\n        return;\n    }\n    let addedNodes = [];\n    let removedNodes = [];\n    let addedAttributes = new Map();\n    let removedAttributes = new Map();\n    for(let i = 0; i < mutations.length; i++){\n        if (mutations[i].target._x_ignoreMutationObserver) continue;\n        if (mutations[i].type === \"childList\") {\n            mutations[i].addedNodes.forEach((node)=>node.nodeType === 1 && addedNodes.push(node));\n            mutations[i].removedNodes.forEach((node)=>node.nodeType === 1 && removedNodes.push(node));\n        }\n        if (mutations[i].type === \"attributes\") {\n            let el = mutations[i].target;\n            let name = mutations[i].attributeName;\n            let oldValue = mutations[i].oldValue;\n            let add2 = ()=>{\n                if (!addedAttributes.has(el)) addedAttributes.set(el, []);\n                addedAttributes.get(el).push({\n                    name: name,\n                    value: el.getAttribute(name)\n                });\n            };\n            let remove = ()=>{\n                if (!removedAttributes.has(el)) removedAttributes.set(el, []);\n                removedAttributes.get(el).push(name);\n            };\n            if (el.hasAttribute(name) && oldValue === null) add2();\n            else if (el.hasAttribute(name)) {\n                remove();\n                add2();\n            } else remove();\n        }\n    }\n    removedAttributes.forEach((attrs, el)=>{\n        $f347e48613385d9c$var$cleanupAttributes(el, attrs);\n    });\n    addedAttributes.forEach((attrs, el)=>{\n        $f347e48613385d9c$var$onAttributeAddeds.forEach((i)=>i(el, attrs));\n    });\n    for (let node of removedNodes){\n        if (addedNodes.includes(node)) continue;\n        $f347e48613385d9c$var$onElRemoveds.forEach((i)=>i(node));\n        if (node._x_cleanups) while(node._x_cleanups.length)node._x_cleanups.pop()();\n    }\n    addedNodes.forEach((node)=>{\n        node._x_ignoreSelf = true;\n        node._x_ignore = true;\n    });\n    for (let node of addedNodes){\n        if (removedNodes.includes(node)) continue;\n        if (!node.isConnected) continue;\n        delete node._x_ignoreSelf;\n        delete node._x_ignore;\n        $f347e48613385d9c$var$onElAddeds.forEach((i)=>i(node));\n        node._x_ignore = true;\n        node._x_ignoreSelf = true;\n    }\n    addedNodes.forEach((node)=>{\n        delete node._x_ignoreSelf;\n        delete node._x_ignore;\n    });\n    addedNodes = null;\n    removedNodes = null;\n    addedAttributes = null;\n    removedAttributes = null;\n}\n// packages/alpinejs/src/scope.js\nfunction $f347e48613385d9c$var$scope(node) {\n    return $f347e48613385d9c$var$mergeProxies($f347e48613385d9c$var$closestDataStack(node));\n}\nfunction $f347e48613385d9c$var$addScopeToNode(node, data2, referenceNode) {\n    node._x_dataStack = [\n        data2,\n        ...$f347e48613385d9c$var$closestDataStack(referenceNode || node)\n    ];\n    return ()=>{\n        node._x_dataStack = node._x_dataStack.filter((i)=>i !== data2);\n    };\n}\nfunction $f347e48613385d9c$var$refreshScope(element, scope2) {\n    let existingScope = element._x_dataStack[0];\n    Object.entries(scope2).forEach(([key, value])=>{\n        existingScope[key] = value;\n    });\n}\nfunction $f347e48613385d9c$var$closestDataStack(node) {\n    if (node._x_dataStack) return node._x_dataStack;\n    if (typeof ShadowRoot === \"function\" && node instanceof ShadowRoot) return $f347e48613385d9c$var$closestDataStack(node.host);\n    if (!node.parentNode) return [];\n    return $f347e48613385d9c$var$closestDataStack(node.parentNode);\n}\nfunction $f347e48613385d9c$var$mergeProxies(objects) {\n    let thisProxy = new Proxy({}, {\n        ownKeys: ()=>{\n            return Array.from(new Set(objects.flatMap((i)=>Object.keys(i))));\n        },\n        has: (target, name)=>{\n            return objects.some((obj)=>obj.hasOwnProperty(name));\n        },\n        get: (target, name)=>{\n            return (objects.find((obj)=>{\n                if (obj.hasOwnProperty(name)) {\n                    let descriptor = Object.getOwnPropertyDescriptor(obj, name);\n                    if (descriptor.get && descriptor.get._x_alreadyBound || descriptor.set && descriptor.set._x_alreadyBound) return true;\n                    if ((descriptor.get || descriptor.set) && descriptor.enumerable) {\n                        let getter = descriptor.get;\n                        let setter = descriptor.set;\n                        let property = descriptor;\n                        getter = getter && getter.bind(thisProxy);\n                        setter = setter && setter.bind(thisProxy);\n                        if (getter) getter._x_alreadyBound = true;\n                        if (setter) setter._x_alreadyBound = true;\n                        Object.defineProperty(obj, name, {\n                            ...property,\n                            get: getter,\n                            set: setter\n                        });\n                    }\n                    return true;\n                }\n                return false;\n            }) || {})[name];\n        },\n        set: (target, name, value)=>{\n            let closestObjectWithKey = objects.find((obj)=>obj.hasOwnProperty(name));\n            if (closestObjectWithKey) closestObjectWithKey[name] = value;\n            else objects[objects.length - 1][name] = value;\n            return true;\n        }\n    });\n    return thisProxy;\n}\n// packages/alpinejs/src/interceptor.js\nfunction $f347e48613385d9c$var$initInterceptors(data2) {\n    let isObject2 = (val)=>typeof val === \"object\" && !Array.isArray(val) && val !== null;\n    let recurse = (obj, basePath = \"\")=>{\n        Object.entries(Object.getOwnPropertyDescriptors(obj)).forEach(([key, { value: value, enumerable: enumerable }])=>{\n            if (enumerable === false || value === void 0) return;\n            let path = basePath === \"\" ? key : `${basePath}.${key}`;\n            if (typeof value === \"object\" && value !== null && value._x_interceptor) obj[key] = value.initialize(data2, path, key);\n            else if (isObject2(value) && value !== obj && !(value instanceof Element)) recurse(value, path);\n        });\n    };\n    return recurse(data2);\n}\nfunction $f347e48613385d9c$var$interceptor(callback, mutateObj = ()=>{}) {\n    let obj = {\n        initialValue: void 0,\n        _x_interceptor: true,\n        initialize (data2, path, key) {\n            return callback(this.initialValue, ()=>$f347e48613385d9c$var$get(data2, path), (value)=>$f347e48613385d9c$var$set(data2, path, value), path, key);\n        }\n    };\n    mutateObj(obj);\n    return (initialValue)=>{\n        if (typeof initialValue === \"object\" && initialValue !== null && initialValue._x_interceptor) {\n            let initialize = obj.initialize.bind(obj);\n            obj.initialize = (data2, path, key)=>{\n                let innerValue = initialValue.initialize(data2, path, key);\n                obj.initialValue = innerValue;\n                return initialize(data2, path, key);\n            };\n        } else obj.initialValue = initialValue;\n        return obj;\n    };\n}\nfunction $f347e48613385d9c$var$get(obj, path) {\n    return path.split(\".\").reduce((carry, segment)=>carry[segment], obj);\n}\nfunction $f347e48613385d9c$var$set(obj, path, value) {\n    if (typeof path === \"string\") path = path.split(\".\");\n    if (path.length === 1) obj[path[0]] = value;\n    else if (path.length === 0) throw error;\n    else {\n        if (obj[path[0]]) return $f347e48613385d9c$var$set(obj[path[0]], path.slice(1), value);\n        else {\n            obj[path[0]] = {};\n            return $f347e48613385d9c$var$set(obj[path[0]], path.slice(1), value);\n        }\n    }\n}\n// packages/alpinejs/src/magics.js\nvar $f347e48613385d9c$var$magics = {};\nfunction $f347e48613385d9c$var$magic(name, callback) {\n    $f347e48613385d9c$var$magics[name] = callback;\n}\nfunction $f347e48613385d9c$var$injectMagics(obj, el) {\n    Object.entries($f347e48613385d9c$var$magics).forEach(([name, callback])=>{\n        Object.defineProperty(obj, `$${name}`, {\n            get () {\n                let [utilities, cleanup2] = $f347e48613385d9c$var$getElementBoundUtilities(el);\n                utilities = {\n                    interceptor: $f347e48613385d9c$var$interceptor,\n                    ...utilities\n                };\n                $f347e48613385d9c$var$onElRemoved(el, cleanup2);\n                return callback(el, utilities);\n            },\n            enumerable: false\n        });\n    });\n    return obj;\n}\n// packages/alpinejs/src/utils/error.js\nfunction $f347e48613385d9c$var$tryCatch(el, expression, callback, ...args) {\n    try {\n        return callback(...args);\n    } catch (e) {\n        $f347e48613385d9c$var$handleError(e, el, expression);\n    }\n}\nfunction $f347e48613385d9c$var$handleError(error2, el, expression) {\n    Object.assign(error2, {\n        el: el,\n        expression: expression\n    });\n    console.warn(`Alpine Expression Error: ${error2.message}\n\n${expression ? 'Expression: \"' + expression + '\"\\n\\n' : \"\"}`, el);\n    setTimeout(()=>{\n        throw error2;\n    }, 0);\n}\n// packages/alpinejs/src/evaluator.js\nvar $f347e48613385d9c$var$shouldAutoEvaluateFunctions = true;\nfunction $f347e48613385d9c$var$dontAutoEvaluateFunctions(callback) {\n    let cache = $f347e48613385d9c$var$shouldAutoEvaluateFunctions;\n    $f347e48613385d9c$var$shouldAutoEvaluateFunctions = false;\n    callback();\n    $f347e48613385d9c$var$shouldAutoEvaluateFunctions = cache;\n}\nfunction $f347e48613385d9c$var$evaluate(el, expression, extras = {}) {\n    let result;\n    $f347e48613385d9c$var$evaluateLater(el, expression)((value)=>result = value, extras);\n    return result;\n}\nfunction $f347e48613385d9c$var$evaluateLater(...args) {\n    return $f347e48613385d9c$var$theEvaluatorFunction(...args);\n}\nvar $f347e48613385d9c$var$theEvaluatorFunction = $f347e48613385d9c$var$normalEvaluator;\nfunction $f347e48613385d9c$var$setEvaluator(newEvaluator) {\n    $f347e48613385d9c$var$theEvaluatorFunction = newEvaluator;\n}\nfunction $f347e48613385d9c$var$normalEvaluator(el, expression) {\n    let overriddenMagics = {};\n    $f347e48613385d9c$var$injectMagics(overriddenMagics, el);\n    let dataStack = [\n        overriddenMagics,\n        ...$f347e48613385d9c$var$closestDataStack(el)\n    ];\n    if (typeof expression === \"function\") return $f347e48613385d9c$var$generateEvaluatorFromFunction(dataStack, expression);\n    let evaluator = $f347e48613385d9c$var$generateEvaluatorFromString(dataStack, expression, el);\n    return $f347e48613385d9c$var$tryCatch.bind(null, el, expression, evaluator);\n}\nfunction $f347e48613385d9c$var$generateEvaluatorFromFunction(dataStack, func) {\n    return (receiver = ()=>{}, { scope: scope2 = {}, params: params = [] } = {})=>{\n        let result = func.apply($f347e48613385d9c$var$mergeProxies([\n            scope2,\n            ...dataStack\n        ]), params);\n        $f347e48613385d9c$var$runIfTypeOfFunction(receiver, result);\n    };\n}\nvar $f347e48613385d9c$var$evaluatorMemo = {};\nfunction $f347e48613385d9c$var$generateFunctionFromString(expression, el) {\n    if ($f347e48613385d9c$var$evaluatorMemo[expression]) return $f347e48613385d9c$var$evaluatorMemo[expression];\n    let AsyncFunction = Object.getPrototypeOf(async function() {}).constructor;\n    let rightSideSafeExpression = /^[\\n\\s]*if.*\\(.*\\)/.test(expression) || /^(let|const)\\s/.test(expression) ? `(() => { ${expression} })()` : expression;\n    const safeAsyncFunction = ()=>{\n        try {\n            return new AsyncFunction([\n                \"__self\",\n                \"scope\"\n            ], `with (scope) { __self.result = ${rightSideSafeExpression} }; __self.finished = true; return __self.result;`);\n        } catch (error2) {\n            $f347e48613385d9c$var$handleError(error2, el, expression);\n            return Promise.resolve();\n        }\n    };\n    let func = safeAsyncFunction();\n    $f347e48613385d9c$var$evaluatorMemo[expression] = func;\n    return func;\n}\nfunction $f347e48613385d9c$var$generateEvaluatorFromString(dataStack, expression, el) {\n    let func = $f347e48613385d9c$var$generateFunctionFromString(expression, el);\n    return (receiver = ()=>{}, { scope: scope2 = {}, params: params = [] } = {})=>{\n        func.result = void 0;\n        func.finished = false;\n        let completeScope = $f347e48613385d9c$var$mergeProxies([\n            scope2,\n            ...dataStack\n        ]);\n        if (typeof func === \"function\") {\n            let promise = func(func, completeScope).catch((error2)=>$f347e48613385d9c$var$handleError(error2, el, expression));\n            if (func.finished) {\n                $f347e48613385d9c$var$runIfTypeOfFunction(receiver, func.result, completeScope, params, el);\n                func.result = void 0;\n            } else promise.then((result)=>{\n                $f347e48613385d9c$var$runIfTypeOfFunction(receiver, result, completeScope, params, el);\n            }).catch((error2)=>$f347e48613385d9c$var$handleError(error2, el, expression)).finally(()=>func.result = void 0);\n        }\n    };\n}\nfunction $f347e48613385d9c$var$runIfTypeOfFunction(receiver, value, scope2, params, el) {\n    if ($f347e48613385d9c$var$shouldAutoEvaluateFunctions && typeof value === \"function\") {\n        let result = value.apply(scope2, params);\n        if (result instanceof Promise) result.then((i)=>$f347e48613385d9c$var$runIfTypeOfFunction(receiver, i, scope2, params)).catch((error2)=>$f347e48613385d9c$var$handleError(error2, el, value));\n        else receiver(result);\n    } else receiver(value);\n}\n// packages/alpinejs/src/directives.js\nvar $f347e48613385d9c$var$prefixAsString = \"x-\";\nfunction $f347e48613385d9c$var$prefix(subject = \"\") {\n    return $f347e48613385d9c$var$prefixAsString + subject;\n}\nfunction $f347e48613385d9c$var$setPrefix(newPrefix) {\n    $f347e48613385d9c$var$prefixAsString = newPrefix;\n}\nvar $f347e48613385d9c$var$directiveHandlers = {};\nfunction $f347e48613385d9c$var$directive(name, callback) {\n    $f347e48613385d9c$var$directiveHandlers[name] = callback;\n}\nfunction $f347e48613385d9c$var$directives(el, attributes, originalAttributeOverride) {\n    attributes = Array.from(attributes);\n    if (el._x_virtualDirectives) {\n        let vAttributes = Object.entries(el._x_virtualDirectives).map(([name, value])=>({\n                name: name,\n                value: value\n            }));\n        let staticAttributes = $f347e48613385d9c$var$attributesOnly(vAttributes);\n        vAttributes = vAttributes.map((attribute)=>{\n            if (staticAttributes.find((attr)=>attr.name === attribute.name)) return {\n                name: `x-bind:${attribute.name}`,\n                value: `\"${attribute.value}\"`\n            };\n            return attribute;\n        });\n        attributes = attributes.concat(vAttributes);\n    }\n    let transformedAttributeMap = {};\n    let directives2 = attributes.map($f347e48613385d9c$var$toTransformedAttributes((newName, oldName)=>transformedAttributeMap[newName] = oldName)).filter($f347e48613385d9c$var$outNonAlpineAttributes).map($f347e48613385d9c$var$toParsedDirectives(transformedAttributeMap, originalAttributeOverride)).sort($f347e48613385d9c$var$byPriority);\n    return directives2.map((directive2)=>{\n        return $f347e48613385d9c$var$getDirectiveHandler(el, directive2);\n    });\n}\nfunction $f347e48613385d9c$var$attributesOnly(attributes) {\n    return Array.from(attributes).map($f347e48613385d9c$var$toTransformedAttributes()).filter((attr)=>!$f347e48613385d9c$var$outNonAlpineAttributes(attr));\n}\nvar $f347e48613385d9c$var$isDeferringHandlers = false;\nvar $f347e48613385d9c$var$directiveHandlerStacks = new Map();\nvar $f347e48613385d9c$var$currentHandlerStackKey = Symbol();\nfunction $f347e48613385d9c$var$deferHandlingDirectives(callback) {\n    $f347e48613385d9c$var$isDeferringHandlers = true;\n    let key = Symbol();\n    $f347e48613385d9c$var$currentHandlerStackKey = key;\n    $f347e48613385d9c$var$directiveHandlerStacks.set(key, []);\n    let flushHandlers = ()=>{\n        while($f347e48613385d9c$var$directiveHandlerStacks.get(key).length)$f347e48613385d9c$var$directiveHandlerStacks.get(key).shift()();\n        $f347e48613385d9c$var$directiveHandlerStacks.delete(key);\n    };\n    let stopDeferring = ()=>{\n        $f347e48613385d9c$var$isDeferringHandlers = false;\n        flushHandlers();\n    };\n    callback(flushHandlers);\n    stopDeferring();\n}\nfunction $f347e48613385d9c$var$getElementBoundUtilities(el) {\n    let cleanups = [];\n    let cleanup2 = (callback)=>cleanups.push(callback);\n    let [effect3, cleanupEffect] = $f347e48613385d9c$var$elementBoundEffect(el);\n    cleanups.push(cleanupEffect);\n    let utilities = {\n        Alpine: $f347e48613385d9c$var$alpine_default,\n        effect: effect3,\n        cleanup: cleanup2,\n        evaluateLater: $f347e48613385d9c$var$evaluateLater.bind($f347e48613385d9c$var$evaluateLater, el),\n        evaluate: $f347e48613385d9c$var$evaluate.bind($f347e48613385d9c$var$evaluate, el)\n    };\n    let doCleanup = ()=>cleanups.forEach((i)=>i());\n    return [\n        utilities,\n        doCleanup\n    ];\n}\nfunction $f347e48613385d9c$var$getDirectiveHandler(el, directive2) {\n    let noop = ()=>{};\n    let handler3 = $f347e48613385d9c$var$directiveHandlers[directive2.type] || noop;\n    let [utilities, cleanup2] = $f347e48613385d9c$var$getElementBoundUtilities(el);\n    $f347e48613385d9c$var$onAttributeRemoved(el, directive2.original, cleanup2);\n    let fullHandler = ()=>{\n        if (el._x_ignore || el._x_ignoreSelf) return;\n        handler3.inline && handler3.inline(el, directive2, utilities);\n        handler3 = handler3.bind(handler3, el, directive2, utilities);\n        $f347e48613385d9c$var$isDeferringHandlers ? $f347e48613385d9c$var$directiveHandlerStacks.get($f347e48613385d9c$var$currentHandlerStackKey).push(handler3) : handler3();\n    };\n    fullHandler.runCleanups = cleanup2;\n    return fullHandler;\n}\nvar $f347e48613385d9c$var$startingWith = (subject, replacement)=>({ name: name, value: value })=>{\n        if (name.startsWith(subject)) name = name.replace(subject, replacement);\n        return {\n            name: name,\n            value: value\n        };\n    };\nvar $f347e48613385d9c$var$into = (i)=>i;\nfunction $f347e48613385d9c$var$toTransformedAttributes(callback = ()=>{}) {\n    return ({ name: name, value: value })=>{\n        let { name: newName, value: newValue } = $f347e48613385d9c$var$attributeTransformers.reduce((carry, transform)=>{\n            return transform(carry);\n        }, {\n            name: name,\n            value: value\n        });\n        if (newName !== name) callback(newName, name);\n        return {\n            name: newName,\n            value: newValue\n        };\n    };\n}\nvar $f347e48613385d9c$var$attributeTransformers = [];\nfunction $f347e48613385d9c$var$mapAttributes(callback) {\n    $f347e48613385d9c$var$attributeTransformers.push(callback);\n}\nfunction $f347e48613385d9c$var$outNonAlpineAttributes({ name: name }) {\n    return $f347e48613385d9c$var$alpineAttributeRegex().test(name);\n}\nvar $f347e48613385d9c$var$alpineAttributeRegex = ()=>new RegExp(`^${$f347e48613385d9c$var$prefixAsString}([^:^.]+)\\\\b`);\nfunction $f347e48613385d9c$var$toParsedDirectives(transformedAttributeMap, originalAttributeOverride) {\n    return ({ name: name, value: value })=>{\n        let typeMatch = name.match($f347e48613385d9c$var$alpineAttributeRegex());\n        let valueMatch = name.match(/:([a-zA-Z0-9\\-:]+)/);\n        let modifiers = name.match(/\\.[^.\\]]+(?=[^\\]]*$)/g) || [];\n        let original = originalAttributeOverride || transformedAttributeMap[name] || name;\n        return {\n            type: typeMatch ? typeMatch[1] : null,\n            value: valueMatch ? valueMatch[1] : null,\n            modifiers: modifiers.map((i)=>i.replace(\".\", \"\")),\n            expression: value,\n            original: original\n        };\n    };\n}\nvar $f347e48613385d9c$var$DEFAULT = \"DEFAULT\";\nvar $f347e48613385d9c$var$directiveOrder = [\n    \"ignore\",\n    \"ref\",\n    \"data\",\n    \"id\",\n    \"bind\",\n    \"init\",\n    \"for\",\n    \"mask\",\n    \"model\",\n    \"modelable\",\n    \"transition\",\n    \"show\",\n    \"if\",\n    $f347e48613385d9c$var$DEFAULT,\n    \"teleport\"\n];\nfunction $f347e48613385d9c$var$byPriority(a, b) {\n    let typeA = $f347e48613385d9c$var$directiveOrder.indexOf(a.type) === -1 ? $f347e48613385d9c$var$DEFAULT : a.type;\n    let typeB = $f347e48613385d9c$var$directiveOrder.indexOf(b.type) === -1 ? $f347e48613385d9c$var$DEFAULT : b.type;\n    return $f347e48613385d9c$var$directiveOrder.indexOf(typeA) - $f347e48613385d9c$var$directiveOrder.indexOf(typeB);\n}\n// packages/alpinejs/src/utils/dispatch.js\nfunction $f347e48613385d9c$var$dispatch(el, name, detail = {}) {\n    el.dispatchEvent(new CustomEvent(name, {\n        detail: detail,\n        bubbles: true,\n        composed: true,\n        cancelable: true\n    }));\n}\n// packages/alpinejs/src/nextTick.js\nvar $f347e48613385d9c$var$tickStack = [];\nvar $f347e48613385d9c$var$isHolding = false;\nfunction $f347e48613385d9c$var$nextTick(callback = ()=>{}) {\n    queueMicrotask(()=>{\n        $f347e48613385d9c$var$isHolding || setTimeout(()=>{\n            $f347e48613385d9c$var$releaseNextTicks();\n        });\n    });\n    return new Promise((res)=>{\n        $f347e48613385d9c$var$tickStack.push(()=>{\n            callback();\n            res();\n        });\n    });\n}\nfunction $f347e48613385d9c$var$releaseNextTicks() {\n    $f347e48613385d9c$var$isHolding = false;\n    while($f347e48613385d9c$var$tickStack.length)$f347e48613385d9c$var$tickStack.shift()();\n}\nfunction $f347e48613385d9c$var$holdNextTicks() {\n    $f347e48613385d9c$var$isHolding = true;\n}\n// packages/alpinejs/src/utils/walk.js\nfunction $f347e48613385d9c$var$walk(el, callback) {\n    if (typeof ShadowRoot === \"function\" && el instanceof ShadowRoot) {\n        Array.from(el.children).forEach((el2)=>$f347e48613385d9c$var$walk(el2, callback));\n        return;\n    }\n    let skip = false;\n    callback(el, ()=>skip = true);\n    if (skip) return;\n    let node = el.firstElementChild;\n    while(node){\n        $f347e48613385d9c$var$walk(node, callback, false);\n        node = node.nextElementSibling;\n    }\n}\n// packages/alpinejs/src/utils/warn.js\nfunction $f347e48613385d9c$var$warn(message, ...args) {\n    console.warn(`Alpine Warning: ${message}`, ...args);\n}\n// packages/alpinejs/src/lifecycle.js\nfunction $f347e48613385d9c$var$start() {\n    if (!document.body) $f347e48613385d9c$var$warn(\"Unable to initialize. Trying to load Alpine before `<body>` is available. Did you forget to add `defer` in Alpine's `<script>` tag?\");\n    $f347e48613385d9c$var$dispatch(document, \"alpine:init\");\n    $f347e48613385d9c$var$dispatch(document, \"alpine:initializing\");\n    $f347e48613385d9c$var$startObservingMutations();\n    $f347e48613385d9c$var$onElAdded((el)=>$f347e48613385d9c$var$initTree(el, $f347e48613385d9c$var$walk));\n    $f347e48613385d9c$var$onElRemoved((el)=>$f347e48613385d9c$var$destroyTree(el));\n    $f347e48613385d9c$var$onAttributesAdded((el, attrs)=>{\n        $f347e48613385d9c$var$directives(el, attrs).forEach((handle)=>handle());\n    });\n    let outNestedComponents = (el)=>!$f347e48613385d9c$var$closestRoot(el.parentElement, true);\n    Array.from(document.querySelectorAll($f347e48613385d9c$var$allSelectors())).filter(outNestedComponents).forEach((el)=>{\n        $f347e48613385d9c$var$initTree(el);\n    });\n    $f347e48613385d9c$var$dispatch(document, \"alpine:initialized\");\n}\nvar $f347e48613385d9c$var$rootSelectorCallbacks = [];\nvar $f347e48613385d9c$var$initSelectorCallbacks = [];\nfunction $f347e48613385d9c$var$rootSelectors() {\n    return $f347e48613385d9c$var$rootSelectorCallbacks.map((fn)=>fn());\n}\nfunction $f347e48613385d9c$var$allSelectors() {\n    return $f347e48613385d9c$var$rootSelectorCallbacks.concat($f347e48613385d9c$var$initSelectorCallbacks).map((fn)=>fn());\n}\nfunction $f347e48613385d9c$var$addRootSelector(selectorCallback) {\n    $f347e48613385d9c$var$rootSelectorCallbacks.push(selectorCallback);\n}\nfunction $f347e48613385d9c$var$addInitSelector(selectorCallback) {\n    $f347e48613385d9c$var$initSelectorCallbacks.push(selectorCallback);\n}\nfunction $f347e48613385d9c$var$closestRoot(el, includeInitSelectors = false) {\n    return $f347e48613385d9c$var$findClosest(el, (element)=>{\n        const selectors = includeInitSelectors ? $f347e48613385d9c$var$allSelectors() : $f347e48613385d9c$var$rootSelectors();\n        if (selectors.some((selector)=>element.matches(selector))) return true;\n    });\n}\nfunction $f347e48613385d9c$var$findClosest(el, callback) {\n    if (!el) return;\n    if (callback(el)) return el;\n    if (el._x_teleportBack) el = el._x_teleportBack;\n    if (!el.parentElement) return;\n    return $f347e48613385d9c$var$findClosest(el.parentElement, callback);\n}\nfunction $f347e48613385d9c$var$isRoot(el) {\n    return $f347e48613385d9c$var$rootSelectors().some((selector)=>el.matches(selector));\n}\nfunction $f347e48613385d9c$var$initTree(el, walker = $f347e48613385d9c$var$walk) {\n    $f347e48613385d9c$var$deferHandlingDirectives(()=>{\n        walker(el, (el2, skip)=>{\n            $f347e48613385d9c$var$directives(el2, el2.attributes).forEach((handle)=>handle());\n            el2._x_ignore && skip();\n        });\n    });\n}\nfunction $f347e48613385d9c$var$destroyTree(root) {\n    $f347e48613385d9c$var$walk(root, (el)=>$f347e48613385d9c$var$cleanupAttributes(el));\n}\n// packages/alpinejs/src/utils/classes.js\nfunction $f347e48613385d9c$var$setClasses(el, value) {\n    if (Array.isArray(value)) return $f347e48613385d9c$var$setClassesFromString(el, value.join(\" \"));\n    else if (typeof value === \"object\" && value !== null) return $f347e48613385d9c$var$setClassesFromObject(el, value);\n    else if (typeof value === \"function\") return $f347e48613385d9c$var$setClasses(el, value());\n    return $f347e48613385d9c$var$setClassesFromString(el, value);\n}\nfunction $f347e48613385d9c$var$setClassesFromString(el, classString) {\n    let split = (classString2)=>classString2.split(\" \").filter(Boolean);\n    let missingClasses = (classString2)=>classString2.split(\" \").filter((i)=>!el.classList.contains(i)).filter(Boolean);\n    let addClassesAndReturnUndo = (classes)=>{\n        el.classList.add(...classes);\n        return ()=>{\n            el.classList.remove(...classes);\n        };\n    };\n    classString = classString === true ? classString = \"\" : classString || \"\";\n    return addClassesAndReturnUndo(missingClasses(classString));\n}\nfunction $f347e48613385d9c$var$setClassesFromObject(el, classObject) {\n    let split = (classString)=>classString.split(\" \").filter(Boolean);\n    let forAdd = Object.entries(classObject).flatMap(([classString, bool])=>bool ? split(classString) : false).filter(Boolean);\n    let forRemove = Object.entries(classObject).flatMap(([classString, bool])=>!bool ? split(classString) : false).filter(Boolean);\n    let added = [];\n    let removed = [];\n    forRemove.forEach((i)=>{\n        if (el.classList.contains(i)) {\n            el.classList.remove(i);\n            removed.push(i);\n        }\n    });\n    forAdd.forEach((i)=>{\n        if (!el.classList.contains(i)) {\n            el.classList.add(i);\n            added.push(i);\n        }\n    });\n    return ()=>{\n        removed.forEach((i)=>el.classList.add(i));\n        added.forEach((i)=>el.classList.remove(i));\n    };\n}\n// packages/alpinejs/src/utils/styles.js\nfunction $f347e48613385d9c$var$setStyles(el, value) {\n    if (typeof value === \"object\" && value !== null) return $f347e48613385d9c$var$setStylesFromObject(el, value);\n    return $f347e48613385d9c$var$setStylesFromString(el, value);\n}\nfunction $f347e48613385d9c$var$setStylesFromObject(el, value) {\n    let previousStyles = {};\n    Object.entries(value).forEach(([key, value2])=>{\n        previousStyles[key] = el.style[key];\n        if (!key.startsWith(\"--\")) key = $f347e48613385d9c$var$kebabCase(key);\n        el.style.setProperty(key, value2);\n    });\n    setTimeout(()=>{\n        if (el.style.length === 0) el.removeAttribute(\"style\");\n    });\n    return ()=>{\n        $f347e48613385d9c$var$setStyles(el, previousStyles);\n    };\n}\nfunction $f347e48613385d9c$var$setStylesFromString(el, value) {\n    let cache = el.getAttribute(\"style\", value);\n    el.setAttribute(\"style\", value);\n    return ()=>{\n        el.setAttribute(\"style\", cache || \"\");\n    };\n}\nfunction $f347e48613385d9c$var$kebabCase(subject) {\n    return subject.replace(/([a-z])([A-Z])/g, \"$1-$2\").toLowerCase();\n}\n// packages/alpinejs/src/utils/once.js\nfunction $f347e48613385d9c$var$once(callback, fallback = ()=>{}) {\n    let called = false;\n    return function() {\n        if (!called) {\n            called = true;\n            callback.apply(this, arguments);\n        } else fallback.apply(this, arguments);\n    };\n}\n// packages/alpinejs/src/directives/x-transition.js\n$f347e48613385d9c$var$directive(\"transition\", (el, { value: value, modifiers: modifiers, expression: expression }, { evaluate: evaluate2 })=>{\n    if (typeof expression === \"function\") expression = evaluate2(expression);\n    if (!expression) $f347e48613385d9c$var$registerTransitionsFromHelper(el, modifiers, value);\n    else $f347e48613385d9c$var$registerTransitionsFromClassString(el, expression, value);\n});\nfunction $f347e48613385d9c$var$registerTransitionsFromClassString(el, classString, stage) {\n    $f347e48613385d9c$var$registerTransitionObject(el, $f347e48613385d9c$var$setClasses, \"\");\n    let directiveStorageMap = {\n        enter: (classes)=>{\n            el._x_transition.enter.during = classes;\n        },\n        \"enter-start\": (classes)=>{\n            el._x_transition.enter.start = classes;\n        },\n        \"enter-end\": (classes)=>{\n            el._x_transition.enter.end = classes;\n        },\n        leave: (classes)=>{\n            el._x_transition.leave.during = classes;\n        },\n        \"leave-start\": (classes)=>{\n            el._x_transition.leave.start = classes;\n        },\n        \"leave-end\": (classes)=>{\n            el._x_transition.leave.end = classes;\n        }\n    };\n    directiveStorageMap[stage](classString);\n}\nfunction $f347e48613385d9c$var$registerTransitionsFromHelper(el, modifiers, stage) {\n    $f347e48613385d9c$var$registerTransitionObject(el, $f347e48613385d9c$var$setStyles);\n    let doesntSpecify = !modifiers.includes(\"in\") && !modifiers.includes(\"out\") && !stage;\n    let transitioningIn = doesntSpecify || modifiers.includes(\"in\") || [\n        \"enter\"\n    ].includes(stage);\n    let transitioningOut = doesntSpecify || modifiers.includes(\"out\") || [\n        \"leave\"\n    ].includes(stage);\n    if (modifiers.includes(\"in\") && !doesntSpecify) modifiers = modifiers.filter((i, index)=>index < modifiers.indexOf(\"out\"));\n    if (modifiers.includes(\"out\") && !doesntSpecify) modifiers = modifiers.filter((i, index)=>index > modifiers.indexOf(\"out\"));\n    let wantsAll = !modifiers.includes(\"opacity\") && !modifiers.includes(\"scale\");\n    let wantsOpacity = wantsAll || modifiers.includes(\"opacity\");\n    let wantsScale = wantsAll || modifiers.includes(\"scale\");\n    let opacityValue = wantsOpacity ? 0 : 1;\n    let scaleValue = wantsScale ? $f347e48613385d9c$var$modifierValue(modifiers, \"scale\", 95) / 100 : 1;\n    let delay = $f347e48613385d9c$var$modifierValue(modifiers, \"delay\", 0);\n    let origin = $f347e48613385d9c$var$modifierValue(modifiers, \"origin\", \"center\");\n    let property = \"opacity, transform\";\n    let durationIn = $f347e48613385d9c$var$modifierValue(modifiers, \"duration\", 150) / 1e3;\n    let durationOut = $f347e48613385d9c$var$modifierValue(modifiers, \"duration\", 75) / 1e3;\n    let easing = `cubic-bezier(0.4, 0.0, 0.2, 1)`;\n    if (transitioningIn) {\n        el._x_transition.enter.during = {\n            transformOrigin: origin,\n            transitionDelay: delay,\n            transitionProperty: property,\n            transitionDuration: `${durationIn}s`,\n            transitionTimingFunction: easing\n        };\n        el._x_transition.enter.start = {\n            opacity: opacityValue,\n            transform: `scale(${scaleValue})`\n        };\n        el._x_transition.enter.end = {\n            opacity: 1,\n            transform: `scale(1)`\n        };\n    }\n    if (transitioningOut) {\n        el._x_transition.leave.during = {\n            transformOrigin: origin,\n            transitionDelay: delay,\n            transitionProperty: property,\n            transitionDuration: `${durationOut}s`,\n            transitionTimingFunction: easing\n        };\n        el._x_transition.leave.start = {\n            opacity: 1,\n            transform: `scale(1)`\n        };\n        el._x_transition.leave.end = {\n            opacity: opacityValue,\n            transform: `scale(${scaleValue})`\n        };\n    }\n}\nfunction $f347e48613385d9c$var$registerTransitionObject(el, setFunction, defaultValue = {}) {\n    if (!el._x_transition) el._x_transition = {\n        enter: {\n            during: defaultValue,\n            start: defaultValue,\n            end: defaultValue\n        },\n        leave: {\n            during: defaultValue,\n            start: defaultValue,\n            end: defaultValue\n        },\n        in (before = ()=>{}, after = ()=>{}) {\n            $f347e48613385d9c$var$transition(el, setFunction, {\n                during: this.enter.during,\n                start: this.enter.start,\n                end: this.enter.end\n            }, before, after);\n        },\n        out (before = ()=>{}, after = ()=>{}) {\n            $f347e48613385d9c$var$transition(el, setFunction, {\n                during: this.leave.during,\n                start: this.leave.start,\n                end: this.leave.end\n            }, before, after);\n        }\n    };\n}\nwindow.Element.prototype._x_toggleAndCascadeWithTransitions = function(el, value, show, hide) {\n    const nextTick2 = document.visibilityState === \"visible\" ? requestAnimationFrame : setTimeout;\n    let clickAwayCompatibleShow = ()=>nextTick2(show);\n    if (value) {\n        if (el._x_transition && (el._x_transition.enter || el._x_transition.leave)) el._x_transition.enter && (Object.entries(el._x_transition.enter.during).length || Object.entries(el._x_transition.enter.start).length || Object.entries(el._x_transition.enter.end).length) ? el._x_transition.in(show) : clickAwayCompatibleShow();\n        else el._x_transition ? el._x_transition.in(show) : clickAwayCompatibleShow();\n        return;\n    }\n    el._x_hidePromise = el._x_transition ? new Promise((resolve, reject)=>{\n        el._x_transition.out(()=>{}, ()=>resolve(hide));\n        el._x_transitioning.beforeCancel(()=>reject({\n                isFromCancelledTransition: true\n            }));\n    }) : Promise.resolve(hide);\n    queueMicrotask(()=>{\n        let closest = $f347e48613385d9c$var$closestHide(el);\n        if (closest) {\n            if (!closest._x_hideChildren) closest._x_hideChildren = [];\n            closest._x_hideChildren.push(el);\n        } else nextTick2(()=>{\n            let hideAfterChildren = (el2)=>{\n                let carry = Promise.all([\n                    el2._x_hidePromise,\n                    ...(el2._x_hideChildren || []).map(hideAfterChildren)\n                ]).then(([i])=>i());\n                delete el2._x_hidePromise;\n                delete el2._x_hideChildren;\n                return carry;\n            };\n            hideAfterChildren(el).catch((e)=>{\n                if (!e.isFromCancelledTransition) throw e;\n            });\n        });\n    });\n};\nfunction $f347e48613385d9c$var$closestHide(el) {\n    let parent = el.parentNode;\n    if (!parent) return;\n    return parent._x_hidePromise ? parent : $f347e48613385d9c$var$closestHide(parent);\n}\nfunction $f347e48613385d9c$var$transition(el, setFunction, { during: during, start: start2, end: end } = {}, before = ()=>{}, after = ()=>{}) {\n    if (el._x_transitioning) el._x_transitioning.cancel();\n    if (Object.keys(during).length === 0 && Object.keys(start2).length === 0 && Object.keys(end).length === 0) {\n        before();\n        after();\n        return;\n    }\n    let undoStart, undoDuring, undoEnd;\n    $f347e48613385d9c$var$performTransition(el, {\n        start () {\n            undoStart = setFunction(el, start2);\n        },\n        during () {\n            undoDuring = setFunction(el, during);\n        },\n        before: before,\n        end () {\n            undoStart();\n            undoEnd = setFunction(el, end);\n        },\n        after: after,\n        cleanup () {\n            undoDuring();\n            undoEnd();\n        }\n    });\n}\nfunction $f347e48613385d9c$var$performTransition(el, stages) {\n    let interrupted, reachedBefore, reachedEnd;\n    let finish = $f347e48613385d9c$var$once(()=>{\n        $f347e48613385d9c$var$mutateDom(()=>{\n            interrupted = true;\n            if (!reachedBefore) stages.before();\n            if (!reachedEnd) {\n                stages.end();\n                $f347e48613385d9c$var$releaseNextTicks();\n            }\n            stages.after();\n            if (el.isConnected) stages.cleanup();\n            delete el._x_transitioning;\n        });\n    });\n    el._x_transitioning = {\n        beforeCancels: [],\n        beforeCancel (callback) {\n            this.beforeCancels.push(callback);\n        },\n        cancel: $f347e48613385d9c$var$once(function() {\n            while(this.beforeCancels.length)this.beforeCancels.shift()();\n            finish();\n        }),\n        finish: finish\n    };\n    $f347e48613385d9c$var$mutateDom(()=>{\n        stages.start();\n        stages.during();\n    });\n    $f347e48613385d9c$var$holdNextTicks();\n    requestAnimationFrame(()=>{\n        if (interrupted) return;\n        let duration = Number(getComputedStyle(el).transitionDuration.replace(/,.*/, \"\").replace(\"s\", \"\")) * 1e3;\n        let delay = Number(getComputedStyle(el).transitionDelay.replace(/,.*/, \"\").replace(\"s\", \"\")) * 1e3;\n        if (duration === 0) duration = Number(getComputedStyle(el).animationDuration.replace(\"s\", \"\")) * 1e3;\n        $f347e48613385d9c$var$mutateDom(()=>{\n            stages.before();\n        });\n        reachedBefore = true;\n        requestAnimationFrame(()=>{\n            if (interrupted) return;\n            $f347e48613385d9c$var$mutateDom(()=>{\n                stages.end();\n            });\n            $f347e48613385d9c$var$releaseNextTicks();\n            setTimeout(el._x_transitioning.finish, duration + delay);\n            reachedEnd = true;\n        });\n    });\n}\nfunction $f347e48613385d9c$var$modifierValue(modifiers, key, fallback) {\n    if (modifiers.indexOf(key) === -1) return fallback;\n    const rawValue = modifiers[modifiers.indexOf(key) + 1];\n    if (!rawValue) return fallback;\n    if (key === \"scale\") {\n        if (isNaN(rawValue)) return fallback;\n    }\n    if (key === \"duration\") {\n        let match = rawValue.match(/([0-9]+)ms/);\n        if (match) return match[1];\n    }\n    if (key === \"origin\") {\n        if ([\n            \"top\",\n            \"right\",\n            \"left\",\n            \"center\",\n            \"bottom\"\n        ].includes(modifiers[modifiers.indexOf(key) + 2])) return [\n            rawValue,\n            modifiers[modifiers.indexOf(key) + 2]\n        ].join(\" \");\n    }\n    return rawValue;\n}\n// packages/alpinejs/src/clone.js\nvar $f347e48613385d9c$var$isCloning = false;\nfunction $f347e48613385d9c$var$skipDuringClone(callback, fallback = ()=>{}) {\n    return (...args)=>$f347e48613385d9c$var$isCloning ? fallback(...args) : callback(...args);\n}\nfunction $f347e48613385d9c$var$clone(oldEl, newEl) {\n    if (!newEl._x_dataStack) newEl._x_dataStack = oldEl._x_dataStack;\n    $f347e48613385d9c$var$isCloning = true;\n    $f347e48613385d9c$var$dontRegisterReactiveSideEffects(()=>{\n        $f347e48613385d9c$var$cloneTree(newEl);\n    });\n    $f347e48613385d9c$var$isCloning = false;\n}\nfunction $f347e48613385d9c$var$cloneTree(el) {\n    let hasRunThroughFirstEl = false;\n    let shallowWalker = (el2, callback)=>{\n        $f347e48613385d9c$var$walk(el2, (el3, skip)=>{\n            if (hasRunThroughFirstEl && $f347e48613385d9c$var$isRoot(el3)) return skip();\n            hasRunThroughFirstEl = true;\n            callback(el3, skip);\n        });\n    };\n    $f347e48613385d9c$var$initTree(el, shallowWalker);\n}\nfunction $f347e48613385d9c$var$dontRegisterReactiveSideEffects(callback) {\n    let cache = $f347e48613385d9c$var$effect;\n    $f347e48613385d9c$var$overrideEffect((callback2, el)=>{\n        let storedEffect = cache(callback2);\n        $f347e48613385d9c$var$release(storedEffect);\n        return ()=>{};\n    });\n    callback();\n    $f347e48613385d9c$var$overrideEffect(cache);\n}\n// packages/alpinejs/src/utils/bind.js\nfunction $f347e48613385d9c$var$bind(el, name, value, modifiers = []) {\n    if (!el._x_bindings) el._x_bindings = $f347e48613385d9c$var$reactive({});\n    el._x_bindings[name] = value;\n    name = modifiers.includes(\"camel\") ? $f347e48613385d9c$var$camelCase(name) : name;\n    switch(name){\n        case \"value\":\n            $f347e48613385d9c$var$bindInputValue(el, value);\n            break;\n        case \"style\":\n            $f347e48613385d9c$var$bindStyles(el, value);\n            break;\n        case \"class\":\n            $f347e48613385d9c$var$bindClasses(el, value);\n            break;\n        default:\n            $f347e48613385d9c$var$bindAttribute(el, name, value);\n            break;\n    }\n}\nfunction $f347e48613385d9c$var$bindInputValue(el, value) {\n    if (el.type === \"radio\") {\n        if (el.attributes.value === void 0) el.value = value;\n        if (window.fromModel) el.checked = $f347e48613385d9c$var$checkedAttrLooseCompare(el.value, value);\n    } else if (el.type === \"checkbox\") {\n        if (Number.isInteger(value)) el.value = value;\n        else if (!Number.isInteger(value) && !Array.isArray(value) && typeof value !== \"boolean\" && ![\n            null,\n            void 0\n        ].includes(value)) el.value = String(value);\n        else if (Array.isArray(value)) el.checked = value.some((val)=>$f347e48613385d9c$var$checkedAttrLooseCompare(val, el.value));\n        else el.checked = !!value;\n    } else if (el.tagName === \"SELECT\") $f347e48613385d9c$var$updateSelect(el, value);\n    else {\n        if (el.value === value) return;\n        el.value = value;\n    }\n}\nfunction $f347e48613385d9c$var$bindClasses(el, value) {\n    if (el._x_undoAddedClasses) el._x_undoAddedClasses();\n    el._x_undoAddedClasses = $f347e48613385d9c$var$setClasses(el, value);\n}\nfunction $f347e48613385d9c$var$bindStyles(el, value) {\n    if (el._x_undoAddedStyles) el._x_undoAddedStyles();\n    el._x_undoAddedStyles = $f347e48613385d9c$var$setStyles(el, value);\n}\nfunction $f347e48613385d9c$var$bindAttribute(el, name, value) {\n    if ([\n        null,\n        void 0,\n        false\n    ].includes(value) && $f347e48613385d9c$var$attributeShouldntBePreservedIfFalsy(name)) el.removeAttribute(name);\n    else {\n        if ($f347e48613385d9c$var$isBooleanAttr(name)) value = name;\n        $f347e48613385d9c$var$setIfChanged(el, name, value);\n    }\n}\nfunction $f347e48613385d9c$var$setIfChanged(el, attrName, value) {\n    if (el.getAttribute(attrName) != value) el.setAttribute(attrName, value);\n}\nfunction $f347e48613385d9c$var$updateSelect(el, value) {\n    const arrayWrappedValue = [].concat(value).map((value2)=>{\n        return value2 + \"\";\n    });\n    Array.from(el.options).forEach((option)=>{\n        option.selected = arrayWrappedValue.includes(option.value);\n    });\n}\nfunction $f347e48613385d9c$var$camelCase(subject) {\n    return subject.toLowerCase().replace(/-(\\w)/g, (match, char)=>char.toUpperCase());\n}\nfunction $f347e48613385d9c$var$checkedAttrLooseCompare(valueA, valueB) {\n    return valueA == valueB;\n}\nfunction $f347e48613385d9c$var$isBooleanAttr(attrName) {\n    const booleanAttributes = [\n        \"disabled\",\n        \"checked\",\n        \"required\",\n        \"readonly\",\n        \"hidden\",\n        \"open\",\n        \"selected\",\n        \"autofocus\",\n        \"itemscope\",\n        \"multiple\",\n        \"novalidate\",\n        \"allowfullscreen\",\n        \"allowpaymentrequest\",\n        \"formnovalidate\",\n        \"autoplay\",\n        \"controls\",\n        \"loop\",\n        \"muted\",\n        \"playsinline\",\n        \"default\",\n        \"ismap\",\n        \"reversed\",\n        \"async\",\n        \"defer\",\n        \"nomodule\"\n    ];\n    return booleanAttributes.includes(attrName);\n}\nfunction $f347e48613385d9c$var$attributeShouldntBePreservedIfFalsy(name) {\n    return ![\n        \"aria-pressed\",\n        \"aria-checked\",\n        \"aria-expanded\",\n        \"aria-selected\"\n    ].includes(name);\n}\nfunction $f347e48613385d9c$var$getBinding(el, name, fallback) {\n    if (el._x_bindings && el._x_bindings[name] !== void 0) return el._x_bindings[name];\n    let attr = el.getAttribute(name);\n    if (attr === null) return typeof fallback === \"function\" ? fallback() : fallback;\n    if ($f347e48613385d9c$var$isBooleanAttr(name)) return !![\n        name,\n        \"true\"\n    ].includes(attr);\n    if (attr === \"\") return true;\n    return attr;\n}\n// packages/alpinejs/src/utils/debounce.js\nfunction $f347e48613385d9c$var$debounce(func, wait) {\n    var timeout;\n    return function() {\n        var context = this, args = arguments;\n        var later = function() {\n            timeout = null;\n            func.apply(context, args);\n        };\n        clearTimeout(timeout);\n        timeout = setTimeout(later, wait);\n    };\n}\n// packages/alpinejs/src/utils/throttle.js\nfunction $f347e48613385d9c$var$throttle(func, limit) {\n    let inThrottle;\n    return function() {\n        let context = this, args = arguments;\n        if (!inThrottle) {\n            func.apply(context, args);\n            inThrottle = true;\n            setTimeout(()=>inThrottle = false, limit);\n        }\n    };\n}\n// packages/alpinejs/src/plugin.js\nfunction $f347e48613385d9c$var$plugin(callback) {\n    callback($f347e48613385d9c$var$alpine_default);\n}\n// packages/alpinejs/src/store.js\nvar $f347e48613385d9c$var$stores = {};\nvar $f347e48613385d9c$var$isReactive = false;\nfunction $f347e48613385d9c$var$store(name, value) {\n    if (!$f347e48613385d9c$var$isReactive) {\n        $f347e48613385d9c$var$stores = $f347e48613385d9c$var$reactive($f347e48613385d9c$var$stores);\n        $f347e48613385d9c$var$isReactive = true;\n    }\n    if (value === void 0) return $f347e48613385d9c$var$stores[name];\n    $f347e48613385d9c$var$stores[name] = value;\n    if (typeof value === \"object\" && value !== null && value.hasOwnProperty(\"init\") && typeof value.init === \"function\") $f347e48613385d9c$var$stores[name].init();\n    $f347e48613385d9c$var$initInterceptors($f347e48613385d9c$var$stores[name]);\n}\nfunction $f347e48613385d9c$var$getStores() {\n    return $f347e48613385d9c$var$stores;\n}\n// packages/alpinejs/src/binds.js\nvar $f347e48613385d9c$var$binds = {};\nfunction $f347e48613385d9c$var$bind2(name, bindings) {\n    let getBindings = typeof bindings !== \"function\" ? ()=>bindings : bindings;\n    if (name instanceof Element) $f347e48613385d9c$var$applyBindingsObject(name, getBindings());\n    else $f347e48613385d9c$var$binds[name] = getBindings;\n}\nfunction $f347e48613385d9c$var$injectBindingProviders(obj) {\n    Object.entries($f347e48613385d9c$var$binds).forEach(([name, callback])=>{\n        Object.defineProperty(obj, name, {\n            get () {\n                return (...args)=>{\n                    return callback(...args);\n                };\n            }\n        });\n    });\n    return obj;\n}\nfunction $f347e48613385d9c$var$applyBindingsObject(el, obj, original) {\n    let cleanupRunners = [];\n    while(cleanupRunners.length)cleanupRunners.pop()();\n    let attributes = Object.entries(obj).map(([name, value])=>({\n            name: name,\n            value: value\n        }));\n    let staticAttributes = $f347e48613385d9c$var$attributesOnly(attributes);\n    attributes = attributes.map((attribute)=>{\n        if (staticAttributes.find((attr)=>attr.name === attribute.name)) return {\n            name: `x-bind:${attribute.name}`,\n            value: `\"${attribute.value}\"`\n        };\n        return attribute;\n    });\n    $f347e48613385d9c$var$directives(el, attributes, original).map((handle)=>{\n        cleanupRunners.push(handle.runCleanups);\n        handle();\n    });\n}\n// packages/alpinejs/src/datas.js\nvar $f347e48613385d9c$var$datas = {};\nfunction $f347e48613385d9c$var$data(name, callback) {\n    $f347e48613385d9c$var$datas[name] = callback;\n}\nfunction $f347e48613385d9c$var$injectDataProviders(obj, context) {\n    Object.entries($f347e48613385d9c$var$datas).forEach(([name, callback])=>{\n        Object.defineProperty(obj, name, {\n            get () {\n                return (...args)=>{\n                    return callback.bind(context)(...args);\n                };\n            },\n            enumerable: false\n        });\n    });\n    return obj;\n}\n// packages/alpinejs/src/alpine.js\nvar $f347e48613385d9c$var$Alpine = {\n    get reactive () {\n        return $f347e48613385d9c$var$reactive;\n    },\n    get release () {\n        return $f347e48613385d9c$var$release;\n    },\n    get effect () {\n        return $f347e48613385d9c$var$effect;\n    },\n    get raw () {\n        return $f347e48613385d9c$var$raw;\n    },\n    version: \"3.10.3\",\n    flushAndStopDeferringMutations: $f347e48613385d9c$var$flushAndStopDeferringMutations,\n    dontAutoEvaluateFunctions: $f347e48613385d9c$var$dontAutoEvaluateFunctions,\n    disableEffectScheduling: $f347e48613385d9c$var$disableEffectScheduling,\n    setReactivityEngine: $f347e48613385d9c$var$setReactivityEngine,\n    closestDataStack: $f347e48613385d9c$var$closestDataStack,\n    skipDuringClone: $f347e48613385d9c$var$skipDuringClone,\n    addRootSelector: $f347e48613385d9c$var$addRootSelector,\n    addInitSelector: $f347e48613385d9c$var$addInitSelector,\n    addScopeToNode: $f347e48613385d9c$var$addScopeToNode,\n    deferMutations: $f347e48613385d9c$var$deferMutations,\n    mapAttributes: $f347e48613385d9c$var$mapAttributes,\n    evaluateLater: $f347e48613385d9c$var$evaluateLater,\n    setEvaluator: $f347e48613385d9c$var$setEvaluator,\n    mergeProxies: $f347e48613385d9c$var$mergeProxies,\n    findClosest: $f347e48613385d9c$var$findClosest,\n    closestRoot: $f347e48613385d9c$var$closestRoot,\n    interceptor: $f347e48613385d9c$var$interceptor,\n    transition: $f347e48613385d9c$var$transition,\n    setStyles: $f347e48613385d9c$var$setStyles,\n    mutateDom: $f347e48613385d9c$var$mutateDom,\n    directive: $f347e48613385d9c$var$directive,\n    throttle: $f347e48613385d9c$var$throttle,\n    debounce: $f347e48613385d9c$var$debounce,\n    evaluate: $f347e48613385d9c$var$evaluate,\n    initTree: $f347e48613385d9c$var$initTree,\n    nextTick: $f347e48613385d9c$var$nextTick,\n    prefixed: $f347e48613385d9c$var$prefix,\n    prefix: $f347e48613385d9c$var$setPrefix,\n    plugin: $f347e48613385d9c$var$plugin,\n    magic: $f347e48613385d9c$var$magic,\n    store: $f347e48613385d9c$var$store,\n    start: $f347e48613385d9c$var$start,\n    clone: $f347e48613385d9c$var$clone,\n    bound: $f347e48613385d9c$var$getBinding,\n    $data: $f347e48613385d9c$var$scope,\n    data: $f347e48613385d9c$var$data,\n    bind: $f347e48613385d9c$var$bind2\n};\nvar $f347e48613385d9c$var$alpine_default = $f347e48613385d9c$var$Alpine;\n// node_modules/@vue/shared/dist/shared.esm-bundler.js\nfunction $f347e48613385d9c$var$makeMap(str, expectsLowerCase) {\n    const map = Object.create(null);\n    const list = str.split(\",\");\n    for(let i = 0; i < list.length; i++)map[list[i]] = true;\n    return expectsLowerCase ? (val)=>!!map[val.toLowerCase()] : (val)=>!!map[val];\n}\nvar $f347e48613385d9c$var$PatchFlagNames = {\n    [1]: `TEXT`,\n    [2]: `CLASS`,\n    [4]: `STYLE`,\n    [8]: `PROPS`,\n    [16]: `FULL_PROPS`,\n    [32]: `HYDRATE_EVENTS`,\n    [64]: `STABLE_FRAGMENT`,\n    [128]: `KEYED_FRAGMENT`,\n    [256]: `UNKEYED_FRAGMENT`,\n    [512]: `NEED_PATCH`,\n    [1024]: `DYNAMIC_SLOTS`,\n    [2048]: `DEV_ROOT_FRAGMENT`,\n    [-1]: `HOISTED`,\n    [-2]: `BAIL`\n};\nvar $f347e48613385d9c$var$slotFlagsText = {\n    [1]: \"STABLE\",\n    [2]: \"DYNAMIC\",\n    [3]: \"FORWARDED\"\n};\nvar $f347e48613385d9c$var$specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;\nvar $f347e48613385d9c$var$isBooleanAttr2 = /* @__PURE__ */ $f347e48613385d9c$var$makeMap($f347e48613385d9c$var$specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected`);\nvar $f347e48613385d9c$var$EMPTY_OBJ = Object.freeze({});\nvar $f347e48613385d9c$var$EMPTY_ARR = Object.freeze([]);\nvar $f347e48613385d9c$var$extend = Object.assign;\nvar $f347e48613385d9c$var$hasOwnProperty = Object.prototype.hasOwnProperty;\nvar $f347e48613385d9c$var$hasOwn = (val, key)=>$f347e48613385d9c$var$hasOwnProperty.call(val, key);\nvar $f347e48613385d9c$var$isArray = Array.isArray;\nvar $f347e48613385d9c$var$isMap = (val)=>$f347e48613385d9c$var$toTypeString(val) === \"[object Map]\";\nvar $f347e48613385d9c$var$isString = (val)=>typeof val === \"string\";\nvar $f347e48613385d9c$var$isSymbol = (val)=>typeof val === \"symbol\";\nvar $f347e48613385d9c$var$isObject = (val)=>val !== null && typeof val === \"object\";\nvar $f347e48613385d9c$var$objectToString = Object.prototype.toString;\nvar $f347e48613385d9c$var$toTypeString = (value)=>$f347e48613385d9c$var$objectToString.call(value);\nvar $f347e48613385d9c$var$toRawType = (value)=>{\n    return $f347e48613385d9c$var$toTypeString(value).slice(8, -1);\n};\nvar $f347e48613385d9c$var$isIntegerKey = (key)=>$f347e48613385d9c$var$isString(key) && key !== \"NaN\" && key[0] !== \"-\" && \"\" + parseInt(key, 10) === key;\nvar $f347e48613385d9c$var$cacheStringFunction = (fn)=>{\n    const cache = Object.create(null);\n    return (str)=>{\n        const hit = cache[str];\n        return hit || (cache[str] = fn(str));\n    };\n};\nvar $f347e48613385d9c$var$camelizeRE = /-(\\w)/g;\nvar $f347e48613385d9c$var$camelize = $f347e48613385d9c$var$cacheStringFunction((str)=>{\n    return str.replace($f347e48613385d9c$var$camelizeRE, (_, c)=>c ? c.toUpperCase() : \"\");\n});\nvar $f347e48613385d9c$var$hyphenateRE = /\\B([A-Z])/g;\nvar $f347e48613385d9c$var$hyphenate = $f347e48613385d9c$var$cacheStringFunction((str)=>str.replace($f347e48613385d9c$var$hyphenateRE, \"-$1\").toLowerCase());\nvar $f347e48613385d9c$var$capitalize = $f347e48613385d9c$var$cacheStringFunction((str)=>str.charAt(0).toUpperCase() + str.slice(1));\nvar $f347e48613385d9c$var$toHandlerKey = $f347e48613385d9c$var$cacheStringFunction((str)=>str ? `on${$f347e48613385d9c$var$capitalize(str)}` : ``);\nvar $f347e48613385d9c$var$hasChanged = (value, oldValue)=>value !== oldValue && (value === value || oldValue === oldValue);\n// node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js\nvar $f347e48613385d9c$var$targetMap = new WeakMap();\nvar $f347e48613385d9c$var$effectStack = [];\nvar $f347e48613385d9c$var$activeEffect;\nvar $f347e48613385d9c$var$ITERATE_KEY = Symbol(\"iterate\");\nvar $f347e48613385d9c$var$MAP_KEY_ITERATE_KEY = Symbol(\"Map key iterate\");\nfunction $f347e48613385d9c$var$isEffect(fn) {\n    return fn && fn._isEffect === true;\n}\nfunction $f347e48613385d9c$var$effect2(fn, options = $f347e48613385d9c$var$EMPTY_OBJ) {\n    if ($f347e48613385d9c$var$isEffect(fn)) fn = fn.raw;\n    const effect3 = $f347e48613385d9c$var$createReactiveEffect(fn, options);\n    if (!options.lazy) effect3();\n    return effect3;\n}\nfunction $f347e48613385d9c$var$stop(effect3) {\n    if (effect3.active) {\n        $f347e48613385d9c$var$cleanup(effect3);\n        if (effect3.options.onStop) effect3.options.onStop();\n        effect3.active = false;\n    }\n}\nvar $f347e48613385d9c$var$uid = 0;\nfunction $f347e48613385d9c$var$createReactiveEffect(fn, options) {\n    const effect3 = function reactiveEffect() {\n        if (!effect3.active) return fn();\n        if (!$f347e48613385d9c$var$effectStack.includes(effect3)) {\n            $f347e48613385d9c$var$cleanup(effect3);\n            try {\n                $f347e48613385d9c$var$enableTracking();\n                $f347e48613385d9c$var$effectStack.push(effect3);\n                $f347e48613385d9c$var$activeEffect = effect3;\n                return fn();\n            } finally{\n                $f347e48613385d9c$var$effectStack.pop();\n                $f347e48613385d9c$var$resetTracking();\n                $f347e48613385d9c$var$activeEffect = $f347e48613385d9c$var$effectStack[$f347e48613385d9c$var$effectStack.length - 1];\n            }\n        }\n    };\n    effect3.id = $f347e48613385d9c$var$uid++;\n    effect3.allowRecurse = !!options.allowRecurse;\n    effect3._isEffect = true;\n    effect3.active = true;\n    effect3.raw = fn;\n    effect3.deps = [];\n    effect3.options = options;\n    return effect3;\n}\nfunction $f347e48613385d9c$var$cleanup(effect3) {\n    const { deps: deps } = effect3;\n    if (deps.length) {\n        for(let i = 0; i < deps.length; i++)deps[i].delete(effect3);\n        deps.length = 0;\n    }\n}\nvar $f347e48613385d9c$var$shouldTrack = true;\nvar $f347e48613385d9c$var$trackStack = [];\nfunction $f347e48613385d9c$var$pauseTracking() {\n    $f347e48613385d9c$var$trackStack.push($f347e48613385d9c$var$shouldTrack);\n    $f347e48613385d9c$var$shouldTrack = false;\n}\nfunction $f347e48613385d9c$var$enableTracking() {\n    $f347e48613385d9c$var$trackStack.push($f347e48613385d9c$var$shouldTrack);\n    $f347e48613385d9c$var$shouldTrack = true;\n}\nfunction $f347e48613385d9c$var$resetTracking() {\n    const last = $f347e48613385d9c$var$trackStack.pop();\n    $f347e48613385d9c$var$shouldTrack = last === void 0 ? true : last;\n}\nfunction $f347e48613385d9c$var$track(target, type, key) {\n    if (!$f347e48613385d9c$var$shouldTrack || $f347e48613385d9c$var$activeEffect === void 0) return;\n    let depsMap = $f347e48613385d9c$var$targetMap.get(target);\n    if (!depsMap) $f347e48613385d9c$var$targetMap.set(target, depsMap = new Map());\n    let dep = depsMap.get(key);\n    if (!dep) depsMap.set(key, dep = new Set());\n    if (!dep.has($f347e48613385d9c$var$activeEffect)) {\n        dep.add($f347e48613385d9c$var$activeEffect);\n        $f347e48613385d9c$var$activeEffect.deps.push(dep);\n        if ($f347e48613385d9c$var$activeEffect.options.onTrack) $f347e48613385d9c$var$activeEffect.options.onTrack({\n            effect: $f347e48613385d9c$var$activeEffect,\n            target: target,\n            type: type,\n            key: key\n        });\n    }\n}\nfunction $f347e48613385d9c$var$trigger(target, type, key, newValue, oldValue, oldTarget) {\n    const depsMap = $f347e48613385d9c$var$targetMap.get(target);\n    if (!depsMap) return;\n    const effects = new Set();\n    const add2 = (effectsToAdd)=>{\n        if (effectsToAdd) effectsToAdd.forEach((effect3)=>{\n            if (effect3 !== $f347e48613385d9c$var$activeEffect || effect3.allowRecurse) effects.add(effect3);\n        });\n    };\n    if (type === \"clear\") depsMap.forEach(add2);\n    else if (key === \"length\" && $f347e48613385d9c$var$isArray(target)) depsMap.forEach((dep, key2)=>{\n        if (key2 === \"length\" || key2 >= newValue) add2(dep);\n    });\n    else {\n        if (key !== void 0) add2(depsMap.get(key));\n        switch(type){\n            case \"add\":\n                if (!$f347e48613385d9c$var$isArray(target)) {\n                    add2(depsMap.get($f347e48613385d9c$var$ITERATE_KEY));\n                    if ($f347e48613385d9c$var$isMap(target)) add2(depsMap.get($f347e48613385d9c$var$MAP_KEY_ITERATE_KEY));\n                } else if ($f347e48613385d9c$var$isIntegerKey(key)) add2(depsMap.get(\"length\"));\n                break;\n            case \"delete\":\n                if (!$f347e48613385d9c$var$isArray(target)) {\n                    add2(depsMap.get($f347e48613385d9c$var$ITERATE_KEY));\n                    if ($f347e48613385d9c$var$isMap(target)) add2(depsMap.get($f347e48613385d9c$var$MAP_KEY_ITERATE_KEY));\n                }\n                break;\n            case \"set\":\n                if ($f347e48613385d9c$var$isMap(target)) add2(depsMap.get($f347e48613385d9c$var$ITERATE_KEY));\n                break;\n        }\n    }\n    const run = (effect3)=>{\n        if (effect3.options.onTrigger) effect3.options.onTrigger({\n            effect: effect3,\n            target: target,\n            key: key,\n            type: type,\n            newValue: newValue,\n            oldValue: oldValue,\n            oldTarget: oldTarget\n        });\n        if (effect3.options.scheduler) effect3.options.scheduler(effect3);\n        else effect3();\n    };\n    effects.forEach(run);\n}\nvar $f347e48613385d9c$var$isNonTrackableKeys = /* @__PURE__ */ $f347e48613385d9c$var$makeMap(`__proto__,__v_isRef,__isVue`);\nvar $f347e48613385d9c$var$builtInSymbols = new Set(Object.getOwnPropertyNames(Symbol).map((key)=>Symbol[key]).filter($f347e48613385d9c$var$isSymbol));\nvar $f347e48613385d9c$var$get2 = /* @__PURE__ */ $f347e48613385d9c$var$createGetter();\nvar $f347e48613385d9c$var$shallowGet = /* @__PURE__ */ $f347e48613385d9c$var$createGetter(false, true);\nvar $f347e48613385d9c$var$readonlyGet = /* @__PURE__ */ $f347e48613385d9c$var$createGetter(true);\nvar $f347e48613385d9c$var$shallowReadonlyGet = /* @__PURE__ */ $f347e48613385d9c$var$createGetter(true, true);\nvar $f347e48613385d9c$var$arrayInstrumentations = {};\n[\n    \"includes\",\n    \"indexOf\",\n    \"lastIndexOf\"\n].forEach((key)=>{\n    const method = Array.prototype[key];\n    $f347e48613385d9c$var$arrayInstrumentations[key] = function(...args) {\n        const arr = $f347e48613385d9c$var$toRaw(this);\n        for(let i = 0, l = this.length; i < l; i++)$f347e48613385d9c$var$track(arr, \"get\", i + \"\");\n        const res = method.apply(arr, args);\n        if (res === -1 || res === false) return method.apply(arr, args.map($f347e48613385d9c$var$toRaw));\n        else return res;\n    };\n});\n[\n    \"push\",\n    \"pop\",\n    \"shift\",\n    \"unshift\",\n    \"splice\"\n].forEach((key)=>{\n    const method = Array.prototype[key];\n    $f347e48613385d9c$var$arrayInstrumentations[key] = function(...args) {\n        $f347e48613385d9c$var$pauseTracking();\n        const res = method.apply(this, args);\n        $f347e48613385d9c$var$resetTracking();\n        return res;\n    };\n});\nfunction $f347e48613385d9c$var$createGetter(isReadonly = false, shallow = false) {\n    return function get3(target, key, receiver) {\n        if (key === \"__v_isReactive\") return !isReadonly;\n        else if (key === \"__v_isReadonly\") return isReadonly;\n        else if (key === \"__v_raw\" && receiver === (isReadonly ? shallow ? $f347e48613385d9c$var$shallowReadonlyMap : $f347e48613385d9c$var$readonlyMap : shallow ? $f347e48613385d9c$var$shallowReactiveMap : $f347e48613385d9c$var$reactiveMap).get(target)) return target;\n        const targetIsArray = $f347e48613385d9c$var$isArray(target);\n        if (!isReadonly && targetIsArray && $f347e48613385d9c$var$hasOwn($f347e48613385d9c$var$arrayInstrumentations, key)) return Reflect.get($f347e48613385d9c$var$arrayInstrumentations, key, receiver);\n        const res = Reflect.get(target, key, receiver);\n        if ($f347e48613385d9c$var$isSymbol(key) ? $f347e48613385d9c$var$builtInSymbols.has(key) : $f347e48613385d9c$var$isNonTrackableKeys(key)) return res;\n        if (!isReadonly) $f347e48613385d9c$var$track(target, \"get\", key);\n        if (shallow) return res;\n        if ($f347e48613385d9c$var$isRef(res)) {\n            const shouldUnwrap = !targetIsArray || !$f347e48613385d9c$var$isIntegerKey(key);\n            return shouldUnwrap ? res.value : res;\n        }\n        if ($f347e48613385d9c$var$isObject(res)) return isReadonly ? $f347e48613385d9c$var$readonly(res) : $f347e48613385d9c$var$reactive2(res);\n        return res;\n    };\n}\nvar $f347e48613385d9c$var$set2 = /* @__PURE__ */ $f347e48613385d9c$var$createSetter();\nvar $f347e48613385d9c$var$shallowSet = /* @__PURE__ */ $f347e48613385d9c$var$createSetter(true);\nfunction $f347e48613385d9c$var$createSetter(shallow = false) {\n    return function set3(target, key, value, receiver) {\n        let oldValue = target[key];\n        if (!shallow) {\n            value = $f347e48613385d9c$var$toRaw(value);\n            oldValue = $f347e48613385d9c$var$toRaw(oldValue);\n            if (!$f347e48613385d9c$var$isArray(target) && $f347e48613385d9c$var$isRef(oldValue) && !$f347e48613385d9c$var$isRef(value)) {\n                oldValue.value = value;\n                return true;\n            }\n        }\n        const hadKey = $f347e48613385d9c$var$isArray(target) && $f347e48613385d9c$var$isIntegerKey(key) ? Number(key) < target.length : $f347e48613385d9c$var$hasOwn(target, key);\n        const result = Reflect.set(target, key, value, receiver);\n        if (target === $f347e48613385d9c$var$toRaw(receiver)) {\n            if (!hadKey) $f347e48613385d9c$var$trigger(target, \"add\", key, value);\n            else if ($f347e48613385d9c$var$hasChanged(value, oldValue)) $f347e48613385d9c$var$trigger(target, \"set\", key, value, oldValue);\n        }\n        return result;\n    };\n}\nfunction $f347e48613385d9c$var$deleteProperty(target, key) {\n    const hadKey = $f347e48613385d9c$var$hasOwn(target, key);\n    const oldValue = target[key];\n    const result = Reflect.deleteProperty(target, key);\n    if (result && hadKey) $f347e48613385d9c$var$trigger(target, \"delete\", key, void 0, oldValue);\n    return result;\n}\nfunction $f347e48613385d9c$var$has(target, key) {\n    const result = Reflect.has(target, key);\n    if (!$f347e48613385d9c$var$isSymbol(key) || !$f347e48613385d9c$var$builtInSymbols.has(key)) $f347e48613385d9c$var$track(target, \"has\", key);\n    return result;\n}\nfunction $f347e48613385d9c$var$ownKeys(target) {\n    $f347e48613385d9c$var$track(target, \"iterate\", $f347e48613385d9c$var$isArray(target) ? \"length\" : $f347e48613385d9c$var$ITERATE_KEY);\n    return Reflect.ownKeys(target);\n}\nvar $f347e48613385d9c$var$mutableHandlers = {\n    get: $f347e48613385d9c$var$get2,\n    set: $f347e48613385d9c$var$set2,\n    deleteProperty: $f347e48613385d9c$var$deleteProperty,\n    has: $f347e48613385d9c$var$has,\n    ownKeys: $f347e48613385d9c$var$ownKeys\n};\nvar $f347e48613385d9c$var$readonlyHandlers = {\n    get: $f347e48613385d9c$var$readonlyGet,\n    set (target, key) {\n        console.warn(`Set operation on key \"${String(key)}\" failed: target is readonly.`, target);\n        return true;\n    },\n    deleteProperty (target, key) {\n        console.warn(`Delete operation on key \"${String(key)}\" failed: target is readonly.`, target);\n        return true;\n    }\n};\nvar $f347e48613385d9c$var$shallowReactiveHandlers = $f347e48613385d9c$var$extend({}, $f347e48613385d9c$var$mutableHandlers, {\n    get: $f347e48613385d9c$var$shallowGet,\n    set: $f347e48613385d9c$var$shallowSet\n});\nvar $f347e48613385d9c$var$shallowReadonlyHandlers = $f347e48613385d9c$var$extend({}, $f347e48613385d9c$var$readonlyHandlers, {\n    get: $f347e48613385d9c$var$shallowReadonlyGet\n});\nvar $f347e48613385d9c$var$toReactive = (value)=>$f347e48613385d9c$var$isObject(value) ? $f347e48613385d9c$var$reactive2(value) : value;\nvar $f347e48613385d9c$var$toReadonly = (value)=>$f347e48613385d9c$var$isObject(value) ? $f347e48613385d9c$var$readonly(value) : value;\nvar $f347e48613385d9c$var$toShallow = (value)=>value;\nvar $f347e48613385d9c$var$getProto = (v)=>Reflect.getPrototypeOf(v);\nfunction $f347e48613385d9c$var$get$1(target, key, isReadonly = false, isShallow = false) {\n    target = target[\"__v_raw\"];\n    const rawTarget = $f347e48613385d9c$var$toRaw(target);\n    const rawKey = $f347e48613385d9c$var$toRaw(key);\n    if (key !== rawKey) !isReadonly && $f347e48613385d9c$var$track(rawTarget, \"get\", key);\n    !isReadonly && $f347e48613385d9c$var$track(rawTarget, \"get\", rawKey);\n    const { has: has2 } = $f347e48613385d9c$var$getProto(rawTarget);\n    const wrap = isShallow ? $f347e48613385d9c$var$toShallow : isReadonly ? $f347e48613385d9c$var$toReadonly : $f347e48613385d9c$var$toReactive;\n    if (has2.call(rawTarget, key)) return wrap(target.get(key));\n    else if (has2.call(rawTarget, rawKey)) return wrap(target.get(rawKey));\n    else if (target !== rawTarget) target.get(key);\n}\nfunction $f347e48613385d9c$var$has$1(key, isReadonly = false) {\n    const target = this[\"__v_raw\"];\n    const rawTarget = $f347e48613385d9c$var$toRaw(target);\n    const rawKey = $f347e48613385d9c$var$toRaw(key);\n    if (key !== rawKey) !isReadonly && $f347e48613385d9c$var$track(rawTarget, \"has\", key);\n    !isReadonly && $f347e48613385d9c$var$track(rawTarget, \"has\", rawKey);\n    return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey);\n}\nfunction $f347e48613385d9c$var$size(target, isReadonly = false) {\n    target = target[\"__v_raw\"];\n    !isReadonly && $f347e48613385d9c$var$track($f347e48613385d9c$var$toRaw(target), \"iterate\", $f347e48613385d9c$var$ITERATE_KEY);\n    return Reflect.get(target, \"size\", target);\n}\nfunction $f347e48613385d9c$var$add(value) {\n    value = $f347e48613385d9c$var$toRaw(value);\n    const target = $f347e48613385d9c$var$toRaw(this);\n    const proto = $f347e48613385d9c$var$getProto(target);\n    const hadKey = proto.has.call(target, value);\n    if (!hadKey) {\n        target.add(value);\n        $f347e48613385d9c$var$trigger(target, \"add\", value, value);\n    }\n    return this;\n}\nfunction $f347e48613385d9c$var$set$1(key, value) {\n    value = $f347e48613385d9c$var$toRaw(value);\n    const target = $f347e48613385d9c$var$toRaw(this);\n    const { has: has2, get: get3 } = $f347e48613385d9c$var$getProto(target);\n    let hadKey = has2.call(target, key);\n    if (!hadKey) {\n        key = $f347e48613385d9c$var$toRaw(key);\n        hadKey = has2.call(target, key);\n    } else $f347e48613385d9c$var$checkIdentityKeys(target, has2, key);\n    const oldValue = get3.call(target, key);\n    target.set(key, value);\n    if (!hadKey) $f347e48613385d9c$var$trigger(target, \"add\", key, value);\n    else if ($f347e48613385d9c$var$hasChanged(value, oldValue)) $f347e48613385d9c$var$trigger(target, \"set\", key, value, oldValue);\n    return this;\n}\nfunction $f347e48613385d9c$var$deleteEntry(key) {\n    const target = $f347e48613385d9c$var$toRaw(this);\n    const { has: has2, get: get3 } = $f347e48613385d9c$var$getProto(target);\n    let hadKey = has2.call(target, key);\n    if (!hadKey) {\n        key = $f347e48613385d9c$var$toRaw(key);\n        hadKey = has2.call(target, key);\n    } else $f347e48613385d9c$var$checkIdentityKeys(target, has2, key);\n    const oldValue = get3 ? get3.call(target, key) : void 0;\n    const result = target.delete(key);\n    if (hadKey) $f347e48613385d9c$var$trigger(target, \"delete\", key, void 0, oldValue);\n    return result;\n}\nfunction $f347e48613385d9c$var$clear() {\n    const target = $f347e48613385d9c$var$toRaw(this);\n    const hadItems = target.size !== 0;\n    const oldTarget = $f347e48613385d9c$var$isMap(target) ? new Map(target) : new Set(target);\n    const result = target.clear();\n    if (hadItems) $f347e48613385d9c$var$trigger(target, \"clear\", void 0, void 0, oldTarget);\n    return result;\n}\nfunction $f347e48613385d9c$var$createForEach(isReadonly, isShallow) {\n    return function forEach(callback, thisArg) {\n        const observed = this;\n        const target = observed[\"__v_raw\"];\n        const rawTarget = $f347e48613385d9c$var$toRaw(target);\n        const wrap = isShallow ? $f347e48613385d9c$var$toShallow : isReadonly ? $f347e48613385d9c$var$toReadonly : $f347e48613385d9c$var$toReactive;\n        !isReadonly && $f347e48613385d9c$var$track(rawTarget, \"iterate\", $f347e48613385d9c$var$ITERATE_KEY);\n        return target.forEach((value, key)=>{\n            return callback.call(thisArg, wrap(value), wrap(key), observed);\n        });\n    };\n}\nfunction $f347e48613385d9c$var$createIterableMethod(method, isReadonly, isShallow) {\n    return function(...args) {\n        const target = this[\"__v_raw\"];\n        const rawTarget = $f347e48613385d9c$var$toRaw(target);\n        const targetIsMap = $f347e48613385d9c$var$isMap(rawTarget);\n        const isPair = method === \"entries\" || method === Symbol.iterator && targetIsMap;\n        const isKeyOnly = method === \"keys\" && targetIsMap;\n        const innerIterator = target[method](...args);\n        const wrap = isShallow ? $f347e48613385d9c$var$toShallow : isReadonly ? $f347e48613385d9c$var$toReadonly : $f347e48613385d9c$var$toReactive;\n        !isReadonly && $f347e48613385d9c$var$track(rawTarget, \"iterate\", isKeyOnly ? $f347e48613385d9c$var$MAP_KEY_ITERATE_KEY : $f347e48613385d9c$var$ITERATE_KEY);\n        return {\n            next () {\n                const { value: value, done: done } = innerIterator.next();\n                return done ? {\n                    value: value,\n                    done: done\n                } : {\n                    value: isPair ? [\n                        wrap(value[0]),\n                        wrap(value[1])\n                    ] : wrap(value),\n                    done: done\n                };\n            },\n            [Symbol.iterator] () {\n                return this;\n            }\n        };\n    };\n}\nfunction $f347e48613385d9c$var$createReadonlyMethod(type) {\n    return function(...args) {\n        {\n            const key = args[0] ? `on key \"${args[0]}\" ` : ``;\n            console.warn(`${$f347e48613385d9c$var$capitalize(type)} operation ${key}failed: target is readonly.`, $f347e48613385d9c$var$toRaw(this));\n        }\n        return type === \"delete\" ? false : this;\n    };\n}\nvar $f347e48613385d9c$var$mutableInstrumentations = {\n    get (key) {\n        return $f347e48613385d9c$var$get$1(this, key);\n    },\n    get size () {\n        return $f347e48613385d9c$var$size(this);\n    },\n    has: $f347e48613385d9c$var$has$1,\n    add: $f347e48613385d9c$var$add,\n    set: $f347e48613385d9c$var$set$1,\n    delete: $f347e48613385d9c$var$deleteEntry,\n    clear: $f347e48613385d9c$var$clear,\n    forEach: $f347e48613385d9c$var$createForEach(false, false)\n};\nvar $f347e48613385d9c$var$shallowInstrumentations = {\n    get (key) {\n        return $f347e48613385d9c$var$get$1(this, key, false, true);\n    },\n    get size () {\n        return $f347e48613385d9c$var$size(this);\n    },\n    has: $f347e48613385d9c$var$has$1,\n    add: $f347e48613385d9c$var$add,\n    set: $f347e48613385d9c$var$set$1,\n    delete: $f347e48613385d9c$var$deleteEntry,\n    clear: $f347e48613385d9c$var$clear,\n    forEach: $f347e48613385d9c$var$createForEach(false, true)\n};\nvar $f347e48613385d9c$var$readonlyInstrumentations = {\n    get (key) {\n        return $f347e48613385d9c$var$get$1(this, key, true);\n    },\n    get size () {\n        return $f347e48613385d9c$var$size(this, true);\n    },\n    has (key) {\n        return $f347e48613385d9c$var$has$1.call(this, key, true);\n    },\n    add: $f347e48613385d9c$var$createReadonlyMethod(\"add\"),\n    set: $f347e48613385d9c$var$createReadonlyMethod(\"set\"),\n    delete: $f347e48613385d9c$var$createReadonlyMethod(\"delete\"),\n    clear: $f347e48613385d9c$var$createReadonlyMethod(\"clear\"),\n    forEach: $f347e48613385d9c$var$createForEach(true, false)\n};\nvar $f347e48613385d9c$var$shallowReadonlyInstrumentations = {\n    get (key) {\n        return $f347e48613385d9c$var$get$1(this, key, true, true);\n    },\n    get size () {\n        return $f347e48613385d9c$var$size(this, true);\n    },\n    has (key) {\n        return $f347e48613385d9c$var$has$1.call(this, key, true);\n    },\n    add: $f347e48613385d9c$var$createReadonlyMethod(\"add\"),\n    set: $f347e48613385d9c$var$createReadonlyMethod(\"set\"),\n    delete: $f347e48613385d9c$var$createReadonlyMethod(\"delete\"),\n    clear: $f347e48613385d9c$var$createReadonlyMethod(\"clear\"),\n    forEach: $f347e48613385d9c$var$createForEach(true, true)\n};\nvar $f347e48613385d9c$var$iteratorMethods = [\n    \"keys\",\n    \"values\",\n    \"entries\",\n    Symbol.iterator\n];\n$f347e48613385d9c$var$iteratorMethods.forEach((method)=>{\n    $f347e48613385d9c$var$mutableInstrumentations[method] = $f347e48613385d9c$var$createIterableMethod(method, false, false);\n    $f347e48613385d9c$var$readonlyInstrumentations[method] = $f347e48613385d9c$var$createIterableMethod(method, true, false);\n    $f347e48613385d9c$var$shallowInstrumentations[method] = $f347e48613385d9c$var$createIterableMethod(method, false, true);\n    $f347e48613385d9c$var$shallowReadonlyInstrumentations[method] = $f347e48613385d9c$var$createIterableMethod(method, true, true);\n});\nfunction $f347e48613385d9c$var$createInstrumentationGetter(isReadonly, shallow) {\n    const instrumentations = shallow ? isReadonly ? $f347e48613385d9c$var$shallowReadonlyInstrumentations : $f347e48613385d9c$var$shallowInstrumentations : isReadonly ? $f347e48613385d9c$var$readonlyInstrumentations : $f347e48613385d9c$var$mutableInstrumentations;\n    return (target, key, receiver)=>{\n        if (key === \"__v_isReactive\") return !isReadonly;\n        else if (key === \"__v_isReadonly\") return isReadonly;\n        else if (key === \"__v_raw\") return target;\n        return Reflect.get($f347e48613385d9c$var$hasOwn(instrumentations, key) && key in target ? instrumentations : target, key, receiver);\n    };\n}\nvar $f347e48613385d9c$var$mutableCollectionHandlers = {\n    get: $f347e48613385d9c$var$createInstrumentationGetter(false, false)\n};\nvar $f347e48613385d9c$var$shallowCollectionHandlers = {\n    get: $f347e48613385d9c$var$createInstrumentationGetter(false, true)\n};\nvar $f347e48613385d9c$var$readonlyCollectionHandlers = {\n    get: $f347e48613385d9c$var$createInstrumentationGetter(true, false)\n};\nvar $f347e48613385d9c$var$shallowReadonlyCollectionHandlers = {\n    get: $f347e48613385d9c$var$createInstrumentationGetter(true, true)\n};\nfunction $f347e48613385d9c$var$checkIdentityKeys(target, has2, key) {\n    const rawKey = $f347e48613385d9c$var$toRaw(key);\n    if (rawKey !== key && has2.call(target, rawKey)) {\n        const type = $f347e48613385d9c$var$toRawType(target);\n        console.warn(`Reactive ${type} contains both the raw and reactive versions of the same object${type === `Map` ? ` as keys` : ``}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.`);\n    }\n}\nvar $f347e48613385d9c$var$reactiveMap = new WeakMap();\nvar $f347e48613385d9c$var$shallowReactiveMap = new WeakMap();\nvar $f347e48613385d9c$var$readonlyMap = new WeakMap();\nvar $f347e48613385d9c$var$shallowReadonlyMap = new WeakMap();\nfunction $f347e48613385d9c$var$targetTypeMap(rawType) {\n    switch(rawType){\n        case \"Object\":\n        case \"Array\":\n            return 1;\n        case \"Map\":\n        case \"Set\":\n        case \"WeakMap\":\n        case \"WeakSet\":\n            return 2;\n        default:\n            return 0;\n    }\n}\nfunction $f347e48613385d9c$var$getTargetType(value) {\n    return value[\"__v_skip\"] || !Object.isExtensible(value) ? 0 : $f347e48613385d9c$var$targetTypeMap($f347e48613385d9c$var$toRawType(value));\n}\nfunction $f347e48613385d9c$var$reactive2(target) {\n    if (target && target[\"__v_isReadonly\"]) return target;\n    return $f347e48613385d9c$var$createReactiveObject(target, false, $f347e48613385d9c$var$mutableHandlers, $f347e48613385d9c$var$mutableCollectionHandlers, $f347e48613385d9c$var$reactiveMap);\n}\nfunction $f347e48613385d9c$var$readonly(target) {\n    return $f347e48613385d9c$var$createReactiveObject(target, true, $f347e48613385d9c$var$readonlyHandlers, $f347e48613385d9c$var$readonlyCollectionHandlers, $f347e48613385d9c$var$readonlyMap);\n}\nfunction $f347e48613385d9c$var$createReactiveObject(target, isReadonly, baseHandlers, collectionHandlers, proxyMap) {\n    if (!$f347e48613385d9c$var$isObject(target)) {\n        console.warn(`value cannot be made reactive: ${String(target)}`);\n        return target;\n    }\n    if (target[\"__v_raw\"] && !(isReadonly && target[\"__v_isReactive\"])) return target;\n    const existingProxy = proxyMap.get(target);\n    if (existingProxy) return existingProxy;\n    const targetType = $f347e48613385d9c$var$getTargetType(target);\n    if (targetType === 0) return target;\n    const proxy = new Proxy(target, targetType === 2 ? collectionHandlers : baseHandlers);\n    proxyMap.set(target, proxy);\n    return proxy;\n}\nfunction $f347e48613385d9c$var$toRaw(observed) {\n    return observed && $f347e48613385d9c$var$toRaw(observed[\"__v_raw\"]) || observed;\n}\nfunction $f347e48613385d9c$var$isRef(r) {\n    return Boolean(r && r.__v_isRef === true);\n}\n// packages/alpinejs/src/magics/$nextTick.js\n$f347e48613385d9c$var$magic(\"nextTick\", ()=>$f347e48613385d9c$var$nextTick);\n// packages/alpinejs/src/magics/$dispatch.js\n$f347e48613385d9c$var$magic(\"dispatch\", (el)=>$f347e48613385d9c$var$dispatch.bind($f347e48613385d9c$var$dispatch, el));\n// packages/alpinejs/src/magics/$watch.js\n$f347e48613385d9c$var$magic(\"watch\", (el, { evaluateLater: evaluateLater2, effect: effect3 })=>(key, callback)=>{\n        let evaluate2 = evaluateLater2(key);\n        let firstTime = true;\n        let oldValue;\n        let effectReference = effect3(()=>evaluate2((value)=>{\n                JSON.stringify(value);\n                if (!firstTime) queueMicrotask(()=>{\n                    callback(value, oldValue);\n                    oldValue = value;\n                });\n                else oldValue = value;\n                firstTime = false;\n            }));\n        el._x_effects.delete(effectReference);\n    });\n// packages/alpinejs/src/magics/$store.js\n$f347e48613385d9c$var$magic(\"store\", $f347e48613385d9c$var$getStores);\n// packages/alpinejs/src/magics/$data.js\n$f347e48613385d9c$var$magic(\"data\", (el)=>$f347e48613385d9c$var$scope(el));\n// packages/alpinejs/src/magics/$root.js\n$f347e48613385d9c$var$magic(\"root\", (el)=>$f347e48613385d9c$var$closestRoot(el));\n// packages/alpinejs/src/magics/$refs.js\n$f347e48613385d9c$var$magic(\"refs\", (el)=>{\n    if (el._x_refs_proxy) return el._x_refs_proxy;\n    el._x_refs_proxy = $f347e48613385d9c$var$mergeProxies($f347e48613385d9c$var$getArrayOfRefObject(el));\n    return el._x_refs_proxy;\n});\nfunction $f347e48613385d9c$var$getArrayOfRefObject(el) {\n    let refObjects = [];\n    let currentEl = el;\n    while(currentEl){\n        if (currentEl._x_refs) refObjects.push(currentEl._x_refs);\n        currentEl = currentEl.parentNode;\n    }\n    return refObjects;\n}\n// packages/alpinejs/src/ids.js\nvar $f347e48613385d9c$var$globalIdMemo = {};\nfunction $f347e48613385d9c$var$findAndIncrementId(name) {\n    if (!$f347e48613385d9c$var$globalIdMemo[name]) $f347e48613385d9c$var$globalIdMemo[name] = 0;\n    return ++$f347e48613385d9c$var$globalIdMemo[name];\n}\nfunction $f347e48613385d9c$var$closestIdRoot(el, name) {\n    return $f347e48613385d9c$var$findClosest(el, (element)=>{\n        if (element._x_ids && element._x_ids[name]) return true;\n    });\n}\nfunction $f347e48613385d9c$var$setIdRoot(el, name) {\n    if (!el._x_ids) el._x_ids = {};\n    if (!el._x_ids[name]) el._x_ids[name] = $f347e48613385d9c$var$findAndIncrementId(name);\n}\n// packages/alpinejs/src/magics/$id.js\n$f347e48613385d9c$var$magic(\"id\", (el)=>(name, key = null)=>{\n        let root = $f347e48613385d9c$var$closestIdRoot(el, name);\n        let id = root ? root._x_ids[name] : $f347e48613385d9c$var$findAndIncrementId(name);\n        return key ? `${name}-${id}-${key}` : `${name}-${id}`;\n    });\n// packages/alpinejs/src/magics/$el.js\n$f347e48613385d9c$var$magic(\"el\", (el)=>el);\n// packages/alpinejs/src/magics/index.js\n$f347e48613385d9c$var$warnMissingPluginMagic(\"Focus\", \"focus\", \"focus\");\n$f347e48613385d9c$var$warnMissingPluginMagic(\"Persist\", \"persist\", \"persist\");\nfunction $f347e48613385d9c$var$warnMissingPluginMagic(name, magicName, slug) {\n    $f347e48613385d9c$var$magic(magicName, (el)=>$f347e48613385d9c$var$warn(`You can't use [$${directiveName}] without first installing the \"${name}\" plugin here: https://alpinejs.dev/plugins/${slug}`, el));\n}\n// packages/alpinejs/src/directives/x-modelable.js\n$f347e48613385d9c$var$directive(\"modelable\", (el, { expression: expression }, { effect: effect3, evaluateLater: evaluateLater2 })=>{\n    let func = evaluateLater2(expression);\n    let innerGet = ()=>{\n        let result;\n        func((i)=>result = i);\n        return result;\n    };\n    let evaluateInnerSet = evaluateLater2(`${expression} = __placeholder`);\n    let innerSet = (val)=>evaluateInnerSet(()=>{}, {\n            scope: {\n                __placeholder: val\n            }\n        });\n    let initialValue = innerGet();\n    innerSet(initialValue);\n    queueMicrotask(()=>{\n        if (!el._x_model) return;\n        el._x_removeModelListeners[\"default\"]();\n        let outerGet = el._x_model.get;\n        let outerSet = el._x_model.set;\n        effect3(()=>innerSet(outerGet()));\n        effect3(()=>outerSet(innerGet()));\n    });\n});\n// packages/alpinejs/src/directives/x-teleport.js\n$f347e48613385d9c$var$directive(\"teleport\", (el, { expression: expression }, { cleanup: cleanup2 })=>{\n    if (el.tagName.toLowerCase() !== \"template\") $f347e48613385d9c$var$warn(\"x-teleport can only be used on a <template> tag\", el);\n    let target = document.querySelector(expression);\n    if (!target) $f347e48613385d9c$var$warn(`Cannot find x-teleport element for selector: \"${expression}\"`);\n    let clone2 = el.content.cloneNode(true).firstElementChild;\n    el._x_teleport = clone2;\n    clone2._x_teleportBack = el;\n    if (el._x_forwardEvents) el._x_forwardEvents.forEach((eventName)=>{\n        clone2.addEventListener(eventName, (e)=>{\n            e.stopPropagation();\n            el.dispatchEvent(new e.constructor(e.type, e));\n        });\n    });\n    $f347e48613385d9c$var$addScopeToNode(clone2, {}, el);\n    $f347e48613385d9c$var$mutateDom(()=>{\n        target.appendChild(clone2);\n        $f347e48613385d9c$var$initTree(clone2);\n        clone2._x_ignore = true;\n    });\n    cleanup2(()=>clone2.remove());\n});\n// packages/alpinejs/src/directives/x-ignore.js\nvar $f347e48613385d9c$var$handler = ()=>{};\n$f347e48613385d9c$var$handler.inline = (el, { modifiers: modifiers }, { cleanup: cleanup2 })=>{\n    modifiers.includes(\"self\") ? el._x_ignoreSelf = true : el._x_ignore = true;\n    cleanup2(()=>{\n        modifiers.includes(\"self\") ? delete el._x_ignoreSelf : delete el._x_ignore;\n    });\n};\n$f347e48613385d9c$var$directive(\"ignore\", $f347e48613385d9c$var$handler);\n// packages/alpinejs/src/directives/x-effect.js\n$f347e48613385d9c$var$directive(\"effect\", (el, { expression: expression }, { effect: effect3 })=>effect3($f347e48613385d9c$var$evaluateLater(el, expression)));\n// packages/alpinejs/src/utils/on.js\nfunction $f347e48613385d9c$var$on(el, event, modifiers, callback) {\n    let listenerTarget = el;\n    let handler3 = (e)=>callback(e);\n    let options = {};\n    let wrapHandler = (callback2, wrapper)=>(e)=>wrapper(callback2, e);\n    if (modifiers.includes(\"dot\")) event = $f347e48613385d9c$var$dotSyntax(event);\n    if (modifiers.includes(\"camel\")) event = $f347e48613385d9c$var$camelCase2(event);\n    if (modifiers.includes(\"passive\")) options.passive = true;\n    if (modifiers.includes(\"capture\")) options.capture = true;\n    if (modifiers.includes(\"window\")) listenerTarget = window;\n    if (modifiers.includes(\"document\")) listenerTarget = document;\n    if (modifiers.includes(\"prevent\")) handler3 = wrapHandler(handler3, (next, e)=>{\n        e.preventDefault();\n        next(e);\n    });\n    if (modifiers.includes(\"stop\")) handler3 = wrapHandler(handler3, (next, e)=>{\n        e.stopPropagation();\n        next(e);\n    });\n    if (modifiers.includes(\"self\")) handler3 = wrapHandler(handler3, (next, e)=>{\n        e.target === el && next(e);\n    });\n    if (modifiers.includes(\"away\") || modifiers.includes(\"outside\")) {\n        listenerTarget = document;\n        handler3 = wrapHandler(handler3, (next, e)=>{\n            if (el.contains(e.target)) return;\n            if (e.target.isConnected === false) return;\n            if (el.offsetWidth < 1 && el.offsetHeight < 1) return;\n            if (el._x_isShown === false) return;\n            next(e);\n        });\n    }\n    if (modifiers.includes(\"once\")) handler3 = wrapHandler(handler3, (next, e)=>{\n        next(e);\n        listenerTarget.removeEventListener(event, handler3, options);\n    });\n    handler3 = wrapHandler(handler3, (next, e)=>{\n        if ($f347e48613385d9c$var$isKeyEvent(event)) {\n            if ($f347e48613385d9c$var$isListeningForASpecificKeyThatHasntBeenPressed(e, modifiers)) return;\n        }\n        next(e);\n    });\n    if (modifiers.includes(\"debounce\")) {\n        let nextModifier = modifiers[modifiers.indexOf(\"debounce\") + 1] || \"invalid-wait\";\n        let wait = $f347e48613385d9c$var$isNumeric(nextModifier.split(\"ms\")[0]) ? Number(nextModifier.split(\"ms\")[0]) : 250;\n        handler3 = $f347e48613385d9c$var$debounce(handler3, wait);\n    }\n    if (modifiers.includes(\"throttle\")) {\n        let nextModifier = modifiers[modifiers.indexOf(\"throttle\") + 1] || \"invalid-wait\";\n        let wait = $f347e48613385d9c$var$isNumeric(nextModifier.split(\"ms\")[0]) ? Number(nextModifier.split(\"ms\")[0]) : 250;\n        handler3 = $f347e48613385d9c$var$throttle(handler3, wait);\n    }\n    listenerTarget.addEventListener(event, handler3, options);\n    return ()=>{\n        listenerTarget.removeEventListener(event, handler3, options);\n    };\n}\nfunction $f347e48613385d9c$var$dotSyntax(subject) {\n    return subject.replace(/-/g, \".\");\n}\nfunction $f347e48613385d9c$var$camelCase2(subject) {\n    return subject.toLowerCase().replace(/-(\\w)/g, (match, char)=>char.toUpperCase());\n}\nfunction $f347e48613385d9c$var$isNumeric(subject) {\n    return !Array.isArray(subject) && !isNaN(subject);\n}\nfunction $f347e48613385d9c$var$kebabCase2(subject) {\n    return subject.replace(/([a-z])([A-Z])/g, \"$1-$2\").replace(/[_\\s]/, \"-\").toLowerCase();\n}\nfunction $f347e48613385d9c$var$isKeyEvent(event) {\n    return [\n        \"keydown\",\n        \"keyup\"\n    ].includes(event);\n}\nfunction $f347e48613385d9c$var$isListeningForASpecificKeyThatHasntBeenPressed(e, modifiers) {\n    let keyModifiers = modifiers.filter((i)=>{\n        return ![\n            \"window\",\n            \"document\",\n            \"prevent\",\n            \"stop\",\n            \"once\"\n        ].includes(i);\n    });\n    if (keyModifiers.includes(\"debounce\")) {\n        let debounceIndex = keyModifiers.indexOf(\"debounce\");\n        keyModifiers.splice(debounceIndex, $f347e48613385d9c$var$isNumeric((keyModifiers[debounceIndex + 1] || \"invalid-wait\").split(\"ms\")[0]) ? 2 : 1);\n    }\n    if (keyModifiers.length === 0) return false;\n    if (keyModifiers.length === 1 && $f347e48613385d9c$var$keyToModifiers(e.key).includes(keyModifiers[0])) return false;\n    const systemKeyModifiers = [\n        \"ctrl\",\n        \"shift\",\n        \"alt\",\n        \"meta\",\n        \"cmd\",\n        \"super\"\n    ];\n    const selectedSystemKeyModifiers = systemKeyModifiers.filter((modifier)=>keyModifiers.includes(modifier));\n    keyModifiers = keyModifiers.filter((i)=>!selectedSystemKeyModifiers.includes(i));\n    if (selectedSystemKeyModifiers.length > 0) {\n        const activelyPressedKeyModifiers = selectedSystemKeyModifiers.filter((modifier)=>{\n            if (modifier === \"cmd\" || modifier === \"super\") modifier = \"meta\";\n            return e[`${modifier}Key`];\n        });\n        if (activelyPressedKeyModifiers.length === selectedSystemKeyModifiers.length) {\n            if ($f347e48613385d9c$var$keyToModifiers(e.key).includes(keyModifiers[0])) return false;\n        }\n    }\n    return true;\n}\nfunction $f347e48613385d9c$var$keyToModifiers(key) {\n    if (!key) return [];\n    key = $f347e48613385d9c$var$kebabCase2(key);\n    let modifierToKeyMap = {\n        ctrl: \"control\",\n        slash: \"/\",\n        space: \"-\",\n        spacebar: \"-\",\n        cmd: \"meta\",\n        esc: \"escape\",\n        up: \"arrow-up\",\n        down: \"arrow-down\",\n        left: \"arrow-left\",\n        right: \"arrow-right\",\n        period: \".\",\n        equal: \"=\"\n    };\n    modifierToKeyMap[key] = key;\n    return Object.keys(modifierToKeyMap).map((modifier)=>{\n        if (modifierToKeyMap[modifier] === key) return modifier;\n    }).filter((modifier)=>modifier);\n}\n// packages/alpinejs/src/directives/x-model.js\n$f347e48613385d9c$var$directive(\"model\", (el, { modifiers: modifiers, expression: expression }, { effect: effect3, cleanup: cleanup2 })=>{\n    let evaluate2 = $f347e48613385d9c$var$evaluateLater(el, expression);\n    let assignmentExpression = `${expression} = rightSideOfExpression($event, ${expression})`;\n    let evaluateAssignment = $f347e48613385d9c$var$evaluateLater(el, assignmentExpression);\n    var event = el.tagName.toLowerCase() === \"select\" || [\n        \"checkbox\",\n        \"radio\"\n    ].includes(el.type) || modifiers.includes(\"lazy\") ? \"change\" : \"input\";\n    let assigmentFunction = $f347e48613385d9c$var$generateAssignmentFunction(el, modifiers, expression);\n    let removeListener = $f347e48613385d9c$var$on(el, event, modifiers, (e)=>{\n        evaluateAssignment(()=>{}, {\n            scope: {\n                $event: e,\n                rightSideOfExpression: assigmentFunction\n            }\n        });\n    });\n    if (!el._x_removeModelListeners) el._x_removeModelListeners = {};\n    el._x_removeModelListeners[\"default\"] = removeListener;\n    cleanup2(()=>el._x_removeModelListeners[\"default\"]());\n    let evaluateSetModel = $f347e48613385d9c$var$evaluateLater(el, `${expression} = __placeholder`);\n    el._x_model = {\n        get () {\n            let result;\n            evaluate2((value)=>result = value);\n            return result;\n        },\n        set (value) {\n            evaluateSetModel(()=>{}, {\n                scope: {\n                    __placeholder: value\n                }\n            });\n        }\n    };\n    el._x_forceModelUpdate = ()=>{\n        evaluate2((value)=>{\n            if (value === void 0 && expression.match(/\\./)) value = \"\";\n            window.fromModel = true;\n            $f347e48613385d9c$var$mutateDom(()=>$f347e48613385d9c$var$bind(el, \"value\", value));\n            delete window.fromModel;\n        });\n    };\n    effect3(()=>{\n        if (modifiers.includes(\"unintrusive\") && document.activeElement.isSameNode(el)) return;\n        el._x_forceModelUpdate();\n    });\n});\nfunction $f347e48613385d9c$var$generateAssignmentFunction(el, modifiers, expression) {\n    if (el.type === \"radio\") $f347e48613385d9c$var$mutateDom(()=>{\n        if (!el.hasAttribute(\"name\")) el.setAttribute(\"name\", expression);\n    });\n    return (event, currentValue)=>{\n        return $f347e48613385d9c$var$mutateDom(()=>{\n            if (event instanceof CustomEvent && event.detail !== void 0) return event.detail || event.target.value;\n            else if (el.type === \"checkbox\") {\n                if (Array.isArray(currentValue)) {\n                    let newValue = modifiers.includes(\"number\") ? $f347e48613385d9c$var$safeParseNumber(event.target.value) : event.target.value;\n                    return event.target.checked ? currentValue.concat([\n                        newValue\n                    ]) : currentValue.filter((el2)=>!$f347e48613385d9c$var$checkedAttrLooseCompare2(el2, newValue));\n                } else return event.target.checked;\n            } else if (el.tagName.toLowerCase() === \"select\" && el.multiple) return modifiers.includes(\"number\") ? Array.from(event.target.selectedOptions).map((option)=>{\n                let rawValue = option.value || option.text;\n                return $f347e48613385d9c$var$safeParseNumber(rawValue);\n            }) : Array.from(event.target.selectedOptions).map((option)=>{\n                return option.value || option.text;\n            });\n            else {\n                let rawValue = event.target.value;\n                return modifiers.includes(\"number\") ? $f347e48613385d9c$var$safeParseNumber(rawValue) : modifiers.includes(\"trim\") ? rawValue.trim() : rawValue;\n            }\n        });\n    };\n}\nfunction $f347e48613385d9c$var$safeParseNumber(rawValue) {\n    let number = rawValue ? parseFloat(rawValue) : null;\n    return $f347e48613385d9c$var$isNumeric2(number) ? number : rawValue;\n}\nfunction $f347e48613385d9c$var$checkedAttrLooseCompare2(valueA, valueB) {\n    return valueA == valueB;\n}\nfunction $f347e48613385d9c$var$isNumeric2(subject) {\n    return !Array.isArray(subject) && !isNaN(subject);\n}\n// packages/alpinejs/src/directives/x-cloak.js\n$f347e48613385d9c$var$directive(\"cloak\", (el)=>queueMicrotask(()=>$f347e48613385d9c$var$mutateDom(()=>el.removeAttribute($f347e48613385d9c$var$prefix(\"cloak\")))));\n// packages/alpinejs/src/directives/x-init.js\n$f347e48613385d9c$var$addInitSelector(()=>`[${$f347e48613385d9c$var$prefix(\"init\")}]`);\n$f347e48613385d9c$var$directive(\"init\", $f347e48613385d9c$var$skipDuringClone((el, { expression: expression }, { evaluate: evaluate2 })=>{\n    if (typeof expression === \"string\") return !!expression.trim() && evaluate2(expression, {}, false);\n    return evaluate2(expression, {}, false);\n}));\n// packages/alpinejs/src/directives/x-text.js\n$f347e48613385d9c$var$directive(\"text\", (el, { expression: expression }, { effect: effect3, evaluateLater: evaluateLater2 })=>{\n    let evaluate2 = evaluateLater2(expression);\n    effect3(()=>{\n        evaluate2((value)=>{\n            $f347e48613385d9c$var$mutateDom(()=>{\n                el.textContent = value;\n            });\n        });\n    });\n});\n// packages/alpinejs/src/directives/x-html.js\n$f347e48613385d9c$var$directive(\"html\", (el, { expression: expression }, { effect: effect3, evaluateLater: evaluateLater2 })=>{\n    let evaluate2 = evaluateLater2(expression);\n    effect3(()=>{\n        evaluate2((value)=>{\n            $f347e48613385d9c$var$mutateDom(()=>{\n                el.innerHTML = value;\n                el._x_ignoreSelf = true;\n                $f347e48613385d9c$var$initTree(el);\n                delete el._x_ignoreSelf;\n            });\n        });\n    });\n});\n// packages/alpinejs/src/directives/x-bind.js\n$f347e48613385d9c$var$mapAttributes($f347e48613385d9c$var$startingWith(\":\", $f347e48613385d9c$var$into($f347e48613385d9c$var$prefix(\"bind:\"))));\n$f347e48613385d9c$var$directive(\"bind\", (el, { value: value, modifiers: modifiers, expression: expression, original: original }, { effect: effect3 })=>{\n    if (!value) {\n        let bindingProviders = {};\n        $f347e48613385d9c$var$injectBindingProviders(bindingProviders);\n        let getBindings = $f347e48613385d9c$var$evaluateLater(el, expression);\n        getBindings((bindings)=>{\n            $f347e48613385d9c$var$applyBindingsObject(el, bindings, original);\n        }, {\n            scope: bindingProviders\n        });\n        return;\n    }\n    if (value === \"key\") return $f347e48613385d9c$var$storeKeyForXFor(el, expression);\n    let evaluate2 = $f347e48613385d9c$var$evaluateLater(el, expression);\n    effect3(()=>evaluate2((result)=>{\n            if (result === void 0 && expression.match(/\\./)) result = \"\";\n            $f347e48613385d9c$var$mutateDom(()=>$f347e48613385d9c$var$bind(el, value, result, modifiers));\n        }));\n});\nfunction $f347e48613385d9c$var$storeKeyForXFor(el, expression) {\n    el._x_keyExpression = expression;\n}\n// packages/alpinejs/src/directives/x-data.js\n$f347e48613385d9c$var$addRootSelector(()=>`[${$f347e48613385d9c$var$prefix(\"data\")}]`);\n$f347e48613385d9c$var$directive(\"data\", $f347e48613385d9c$var$skipDuringClone((el, { expression: expression }, { cleanup: cleanup2 })=>{\n    expression = expression === \"\" ? \"{}\" : expression;\n    let magicContext = {};\n    $f347e48613385d9c$var$injectMagics(magicContext, el);\n    let dataProviderContext = {};\n    $f347e48613385d9c$var$injectDataProviders(dataProviderContext, magicContext);\n    let data2 = $f347e48613385d9c$var$evaluate(el, expression, {\n        scope: dataProviderContext\n    });\n    if (data2 === void 0) data2 = {};\n    $f347e48613385d9c$var$injectMagics(data2, el);\n    let reactiveData = $f347e48613385d9c$var$reactive(data2);\n    $f347e48613385d9c$var$initInterceptors(reactiveData);\n    let undo = $f347e48613385d9c$var$addScopeToNode(el, reactiveData);\n    reactiveData[\"init\"] && $f347e48613385d9c$var$evaluate(el, reactiveData[\"init\"]);\n    cleanup2(()=>{\n        reactiveData[\"destroy\"] && $f347e48613385d9c$var$evaluate(el, reactiveData[\"destroy\"]);\n        undo();\n    });\n}));\n// packages/alpinejs/src/directives/x-show.js\n$f347e48613385d9c$var$directive(\"show\", (el, { modifiers: modifiers, expression: expression }, { effect: effect3 })=>{\n    let evaluate2 = $f347e48613385d9c$var$evaluateLater(el, expression);\n    if (!el._x_doHide) el._x_doHide = ()=>{\n        $f347e48613385d9c$var$mutateDom(()=>{\n            el.style.setProperty(\"display\", \"none\", modifiers.includes(\"important\") ? \"important\" : void 0);\n        });\n    };\n    if (!el._x_doShow) el._x_doShow = ()=>{\n        $f347e48613385d9c$var$mutateDom(()=>{\n            if (el.style.length === 1 && el.style.display === \"none\") el.removeAttribute(\"style\");\n            else el.style.removeProperty(\"display\");\n        });\n    };\n    let hide = ()=>{\n        el._x_doHide();\n        el._x_isShown = false;\n    };\n    let show = ()=>{\n        el._x_doShow();\n        el._x_isShown = true;\n    };\n    let clickAwayCompatibleShow = ()=>setTimeout(show);\n    let toggle = $f347e48613385d9c$var$once((value)=>value ? show() : hide(), (value)=>{\n        if (typeof el._x_toggleAndCascadeWithTransitions === \"function\") el._x_toggleAndCascadeWithTransitions(el, value, show, hide);\n        else value ? clickAwayCompatibleShow() : hide();\n    });\n    let oldValue;\n    let firstTime = true;\n    effect3(()=>evaluate2((value)=>{\n            if (!firstTime && value === oldValue) return;\n            if (modifiers.includes(\"immediate\")) value ? clickAwayCompatibleShow() : hide();\n            toggle(value);\n            oldValue = value;\n            firstTime = false;\n        }));\n});\n// packages/alpinejs/src/directives/x-for.js\n$f347e48613385d9c$var$directive(\"for\", (el, { expression: expression }, { effect: effect3, cleanup: cleanup2 })=>{\n    let iteratorNames = $f347e48613385d9c$var$parseForExpression(expression);\n    let evaluateItems = $f347e48613385d9c$var$evaluateLater(el, iteratorNames.items);\n    let evaluateKey = $f347e48613385d9c$var$evaluateLater(el, el._x_keyExpression || \"index\");\n    el._x_prevKeys = [];\n    el._x_lookup = {};\n    effect3(()=>$f347e48613385d9c$var$loop(el, iteratorNames, evaluateItems, evaluateKey));\n    cleanup2(()=>{\n        Object.values(el._x_lookup).forEach((el2)=>el2.remove());\n        delete el._x_prevKeys;\n        delete el._x_lookup;\n    });\n});\nfunction $f347e48613385d9c$var$loop(el, iteratorNames, evaluateItems, evaluateKey) {\n    let isObject2 = (i)=>typeof i === \"object\" && !Array.isArray(i);\n    let templateEl = el;\n    evaluateItems((items)=>{\n        if ($f347e48613385d9c$var$isNumeric3(items) && items >= 0) items = Array.from(Array(items).keys(), (i)=>i + 1);\n        if (items === void 0) items = [];\n        let lookup = el._x_lookup;\n        let prevKeys = el._x_prevKeys;\n        let scopes = [];\n        let keys = [];\n        if (isObject2(items)) items = Object.entries(items).map(([key, value])=>{\n            let scope2 = $f347e48613385d9c$var$getIterationScopeVariables(iteratorNames, value, key, items);\n            evaluateKey((value2)=>keys.push(value2), {\n                scope: {\n                    index: key,\n                    ...scope2\n                }\n            });\n            scopes.push(scope2);\n        });\n        else for(let i = 0; i < items.length; i++){\n            let scope2 = $f347e48613385d9c$var$getIterationScopeVariables(iteratorNames, items[i], i, items);\n            evaluateKey((value)=>keys.push(value), {\n                scope: {\n                    index: i,\n                    ...scope2\n                }\n            });\n            scopes.push(scope2);\n        }\n        let adds = [];\n        let moves = [];\n        let removes = [];\n        let sames = [];\n        for(let i = 0; i < prevKeys.length; i++){\n            let key = prevKeys[i];\n            if (keys.indexOf(key) === -1) removes.push(key);\n        }\n        prevKeys = prevKeys.filter((key)=>!removes.includes(key));\n        let lastKey = \"template\";\n        for(let i = 0; i < keys.length; i++){\n            let key = keys[i];\n            let prevIndex = prevKeys.indexOf(key);\n            if (prevIndex === -1) {\n                prevKeys.splice(i, 0, key);\n                adds.push([\n                    lastKey,\n                    i\n                ]);\n            } else if (prevIndex !== i) {\n                let keyInSpot = prevKeys.splice(i, 1)[0];\n                let keyForSpot = prevKeys.splice(prevIndex - 1, 1)[0];\n                prevKeys.splice(i, 0, keyForSpot);\n                prevKeys.splice(prevIndex, 0, keyInSpot);\n                moves.push([\n                    keyInSpot,\n                    keyForSpot\n                ]);\n            } else sames.push(key);\n            lastKey = key;\n        }\n        for(let i = 0; i < removes.length; i++){\n            let key = removes[i];\n            if (!!lookup[key]._x_effects) lookup[key]._x_effects.forEach($f347e48613385d9c$var$dequeueJob);\n            lookup[key].remove();\n            lookup[key] = null;\n            delete lookup[key];\n        }\n        for(let i = 0; i < moves.length; i++){\n            let [keyInSpot, keyForSpot] = moves[i];\n            let elInSpot = lookup[keyInSpot];\n            let elForSpot = lookup[keyForSpot];\n            let marker = document.createElement(\"div\");\n            $f347e48613385d9c$var$mutateDom(()=>{\n                elForSpot.after(marker);\n                elInSpot.after(elForSpot);\n                elForSpot._x_currentIfEl && elForSpot.after(elForSpot._x_currentIfEl);\n                marker.before(elInSpot);\n                elInSpot._x_currentIfEl && elInSpot.after(elInSpot._x_currentIfEl);\n                marker.remove();\n            });\n            $f347e48613385d9c$var$refreshScope(elForSpot, scopes[keys.indexOf(keyForSpot)]);\n        }\n        for(let i = 0; i < adds.length; i++){\n            let [lastKey2, index] = adds[i];\n            let lastEl = lastKey2 === \"template\" ? templateEl : lookup[lastKey2];\n            if (lastEl._x_currentIfEl) lastEl = lastEl._x_currentIfEl;\n            let scope2 = scopes[index];\n            let key = keys[index];\n            let clone2 = document.importNode(templateEl.content, true).firstElementChild;\n            $f347e48613385d9c$var$addScopeToNode(clone2, $f347e48613385d9c$var$reactive(scope2), templateEl);\n            $f347e48613385d9c$var$mutateDom(()=>{\n                lastEl.after(clone2);\n                $f347e48613385d9c$var$initTree(clone2);\n            });\n            if (typeof key === \"object\") $f347e48613385d9c$var$warn(\"x-for key cannot be an object, it must be a string or an integer\", templateEl);\n            lookup[key] = clone2;\n        }\n        for(let i = 0; i < sames.length; i++)$f347e48613385d9c$var$refreshScope(lookup[sames[i]], scopes[keys.indexOf(sames[i])]);\n        templateEl._x_prevKeys = keys;\n    });\n}\nfunction $f347e48613385d9c$var$parseForExpression(expression) {\n    let forIteratorRE = /,([^,\\}\\]]*)(?:,([^,\\}\\]]*))?$/;\n    let stripParensRE = /^\\s*\\(|\\)\\s*$/g;\n    let forAliasRE = /([\\s\\S]*?)\\s+(?:in|of)\\s+([\\s\\S]*)/;\n    let inMatch = expression.match(forAliasRE);\n    if (!inMatch) return;\n    let res = {};\n    res.items = inMatch[2].trim();\n    let item = inMatch[1].replace(stripParensRE, \"\").trim();\n    let iteratorMatch = item.match(forIteratorRE);\n    if (iteratorMatch) {\n        res.item = item.replace(forIteratorRE, \"\").trim();\n        res.index = iteratorMatch[1].trim();\n        if (iteratorMatch[2]) res.collection = iteratorMatch[2].trim();\n    } else res.item = item;\n    return res;\n}\nfunction $f347e48613385d9c$var$getIterationScopeVariables(iteratorNames, item, index, items) {\n    let scopeVariables = {};\n    if (/^\\[.*\\]$/.test(iteratorNames.item) && Array.isArray(item)) {\n        let names = iteratorNames.item.replace(\"[\", \"\").replace(\"]\", \"\").split(\",\").map((i)=>i.trim());\n        names.forEach((name, i)=>{\n            scopeVariables[name] = item[i];\n        });\n    } else if (/^\\{.*\\}$/.test(iteratorNames.item) && !Array.isArray(item) && typeof item === \"object\") {\n        let names = iteratorNames.item.replace(\"{\", \"\").replace(\"}\", \"\").split(\",\").map((i)=>i.trim());\n        names.forEach((name)=>{\n            scopeVariables[name] = item[name];\n        });\n    } else scopeVariables[iteratorNames.item] = item;\n    if (iteratorNames.index) scopeVariables[iteratorNames.index] = index;\n    if (iteratorNames.collection) scopeVariables[iteratorNames.collection] = items;\n    return scopeVariables;\n}\nfunction $f347e48613385d9c$var$isNumeric3(subject) {\n    return !Array.isArray(subject) && !isNaN(subject);\n}\n// packages/alpinejs/src/directives/x-ref.js\nfunction $f347e48613385d9c$var$handler2() {}\n$f347e48613385d9c$var$handler2.inline = (el, { expression: expression }, { cleanup: cleanup2 })=>{\n    let root = $f347e48613385d9c$var$closestRoot(el);\n    if (!root._x_refs) root._x_refs = {};\n    root._x_refs[expression] = el;\n    cleanup2(()=>delete root._x_refs[expression]);\n};\n$f347e48613385d9c$var$directive(\"ref\", $f347e48613385d9c$var$handler2);\n// packages/alpinejs/src/directives/x-if.js\n$f347e48613385d9c$var$directive(\"if\", (el, { expression: expression }, { effect: effect3, cleanup: cleanup2 })=>{\n    let evaluate2 = $f347e48613385d9c$var$evaluateLater(el, expression);\n    let show = ()=>{\n        if (el._x_currentIfEl) return el._x_currentIfEl;\n        let clone2 = el.content.cloneNode(true).firstElementChild;\n        $f347e48613385d9c$var$addScopeToNode(clone2, {}, el);\n        $f347e48613385d9c$var$mutateDom(()=>{\n            el.after(clone2);\n            $f347e48613385d9c$var$initTree(clone2);\n        });\n        el._x_currentIfEl = clone2;\n        el._x_undoIf = ()=>{\n            $f347e48613385d9c$var$walk(clone2, (node)=>{\n                if (!!node._x_effects) node._x_effects.forEach($f347e48613385d9c$var$dequeueJob);\n            });\n            clone2.remove();\n            delete el._x_currentIfEl;\n        };\n        return clone2;\n    };\n    let hide = ()=>{\n        if (!el._x_undoIf) return;\n        el._x_undoIf();\n        delete el._x_undoIf;\n    };\n    effect3(()=>evaluate2((value)=>{\n            value ? show() : hide();\n        }));\n    cleanup2(()=>el._x_undoIf && el._x_undoIf());\n});\n// packages/alpinejs/src/directives/x-id.js\n$f347e48613385d9c$var$directive(\"id\", (el, { expression: expression }, { evaluate: evaluate2 })=>{\n    let names = evaluate2(expression);\n    names.forEach((name)=>$f347e48613385d9c$var$setIdRoot(el, name));\n});\n// packages/alpinejs/src/directives/x-on.js\n$f347e48613385d9c$var$mapAttributes($f347e48613385d9c$var$startingWith(\"@\", $f347e48613385d9c$var$into($f347e48613385d9c$var$prefix(\"on:\"))));\n$f347e48613385d9c$var$directive(\"on\", $f347e48613385d9c$var$skipDuringClone((el, { value: value, modifiers: modifiers, expression: expression }, { cleanup: cleanup2 })=>{\n    let evaluate2 = expression ? $f347e48613385d9c$var$evaluateLater(el, expression) : ()=>{};\n    if (el.tagName.toLowerCase() === \"template\") {\n        if (!el._x_forwardEvents) el._x_forwardEvents = [];\n        if (!el._x_forwardEvents.includes(value)) el._x_forwardEvents.push(value);\n    }\n    let removeListener = $f347e48613385d9c$var$on(el, value, modifiers, (e)=>{\n        evaluate2(()=>{}, {\n            scope: {\n                $event: e\n            },\n            params: [\n                e\n            ]\n        });\n    });\n    cleanup2(()=>removeListener());\n}));\n// packages/alpinejs/src/directives/index.js\n$f347e48613385d9c$var$warnMissingPluginDirective(\"Collapse\", \"collapse\", \"collapse\");\n$f347e48613385d9c$var$warnMissingPluginDirective(\"Intersect\", \"intersect\", \"intersect\");\n$f347e48613385d9c$var$warnMissingPluginDirective(\"Focus\", \"trap\", \"focus\");\n$f347e48613385d9c$var$warnMissingPluginDirective(\"Mask\", \"mask\", \"mask\");\nfunction $f347e48613385d9c$var$warnMissingPluginDirective(name, directiveName2, slug) {\n    $f347e48613385d9c$var$directive(directiveName2, (el)=>$f347e48613385d9c$var$warn(`You can't use [x-${directiveName2}] without first installing the \"${name}\" plugin here: https://alpinejs.dev/plugins/${slug}`, el));\n}\n// packages/alpinejs/src/index.js\n$f347e48613385d9c$var$alpine_default.setEvaluator($f347e48613385d9c$var$normalEvaluator);\n$f347e48613385d9c$var$alpine_default.setReactivityEngine({\n    reactive: $f347e48613385d9c$var$reactive2,\n    effect: $f347e48613385d9c$var$effect2,\n    release: $f347e48613385d9c$var$stop,\n    raw: $f347e48613385d9c$var$toRaw\n});\nvar $f347e48613385d9c$var$src_default = $f347e48613385d9c$var$alpine_default;\n// packages/alpinejs/builds/module.js\nvar $f347e48613385d9c$export$2e2bcd8739ae039 = $f347e48613385d9c$var$src_default;\n\n\n// packages/persist/src/index.js\nfunction $dc5e95bf63b2a32e$var$src_default(Alpine) {\n    let persist = ()=>{\n        let alias;\n        let storage = localStorage;\n        return Alpine.interceptor((initialValue, getter, setter, path, key)=>{\n            let lookup = alias || `_x_${path}`;\n            let initial = $dc5e95bf63b2a32e$var$storageHas(lookup, storage) ? $dc5e95bf63b2a32e$var$storageGet(lookup, storage) : initialValue;\n            setter(initial);\n            Alpine.effect(()=>{\n                let value = getter();\n                $dc5e95bf63b2a32e$var$storageSet(lookup, value, storage);\n                setter(value);\n            });\n            return initial;\n        }, (func)=>{\n            func.as = (key)=>{\n                alias = key;\n                return func;\n            }, func.using = (target)=>{\n                storage = target;\n                return func;\n            };\n        });\n    };\n    Object.defineProperty(Alpine, \"$persist\", {\n        get: ()=>persist()\n    });\n    Alpine.magic(\"persist\", persist);\n}\nfunction $dc5e95bf63b2a32e$var$storageHas(key, storage) {\n    return storage.getItem(key) !== null;\n}\nfunction $dc5e95bf63b2a32e$var$storageGet(key, storage) {\n    return JSON.parse(storage.getItem(key, storage));\n}\nfunction $dc5e95bf63b2a32e$var$storageSet(key, value, storage) {\n    storage.setItem(key, JSON.stringify(value));\n}\n// packages/persist/builds/module.js\nvar $dc5e95bf63b2a32e$export$2e2bcd8739ae039 = $dc5e95bf63b2a32e$var$src_default;\n\n\nlet $87debed29d531a5f$var$onCopy = ()=>{};\nconst $87debed29d531a5f$var$copy = (target)=>{\n    if (typeof target === \"function\") target = target();\n    if (typeof target === \"object\") target = JSON.stringify(target);\n    return window.navigator.clipboard.writeText(target).then($87debed29d531a5f$var$onCopy);\n};\nfunction $87debed29d531a5f$var$Clipboard(Alpine) {\n    Alpine.magic(\"clipboard\", ()=>{\n        return $87debed29d531a5f$var$copy;\n    });\n    Alpine.directive(\"clipboard\", (el, { modifiers: modifiers, expression: expression }, { evaluateLater: evaluateLater, cleanup: cleanup })=>{\n        const getCopyContent = modifiers.includes(\"raw\") ? (c)=>c(expression) : evaluateLater(expression);\n        const clickHandler = ()=>getCopyContent($87debed29d531a5f$var$copy);\n        el.addEventListener(\"click\", clickHandler);\n        cleanup(()=>{\n            el.removeEventListener(\"click\", clickHandler);\n        });\n    });\n}\n$87debed29d531a5f$var$Clipboard.configure = (config)=>{\n    if (config.hasOwnProperty(\"onCopy\") && typeof config.onCopy === \"function\") $87debed29d531a5f$var$onCopy = config.onCopy;\n    return $87debed29d531a5f$var$Clipboard;\n};\nvar $87debed29d531a5f$export$2e2bcd8739ae039 = $87debed29d531a5f$var$Clipboard;\n\n\n\n\nvar $1feffb77eb3cfa15$exports = {};\n/* **********************************************\n     Begin prism-core.js\n********************************************** */ /// <reference lib=\"WebWorker\"/>\nvar $1feffb77eb3cfa15$var$_self = typeof window !== \"undefined\" ? window // if in browser\n : typeof WorkerGlobalScope !== \"undefined\" && self instanceof WorkerGlobalScope ? self // if in worker\n : {} // if in node js\n;\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n *\n * @license MIT <https://opensource.org/licenses/MIT>\n * @author Lea Verou <https://lea.verou.me>\n * @namespace\n * @public\n */ var $1feffb77eb3cfa15$var$Prism = function(_self) {\n    // Private helper vars\n    var lang = /(?:^|\\s)lang(?:uage)?-([\\w-]+)(?=\\s|$)/i;\n    var uniqueId = 0;\n    // The grammar object for plaintext\n    var plainTextGrammar = {};\n    var _ = {\n        /**\n\t\t * By default, Prism will attempt to highlight all code elements (by calling {@link Prism.highlightAll}) on the\n\t\t * current page after the page finished loading. This might be a problem if e.g. you wanted to asynchronously load\n\t\t * additional languages or plugins yourself.\n\t\t *\n\t\t * By setting this value to `true`, Prism will not automatically highlight all code elements on the page.\n\t\t *\n\t\t * You obviously have to change this value before the automatic highlighting started. To do this, you can add an\n\t\t * empty Prism object into the global scope before loading the Prism script like this:\n\t\t *\n\t\t * ```js\n\t\t * window.Prism = window.Prism || {};\n\t\t * Prism.manual = true;\n\t\t * // add a new <script> to load Prism's script\n\t\t * ```\n\t\t *\n\t\t * @default false\n\t\t * @type {boolean}\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */ manual: _self.Prism && _self.Prism.manual,\n        /**\n\t\t * By default, if Prism is in a web worker, it assumes that it is in a worker it created itself, so it uses\n\t\t * `addEventListener` to communicate with its parent instance. However, if you're using Prism manually in your\n\t\t * own worker, you don't want it to do this.\n\t\t *\n\t\t * By setting this value to `true`, Prism will not add its own listeners to the worker.\n\t\t *\n\t\t * You obviously have to change this value before Prism executes. To do this, you can add an\n\t\t * empty Prism object into the global scope before loading the Prism script like this:\n\t\t *\n\t\t * ```js\n\t\t * window.Prism = window.Prism || {};\n\t\t * Prism.disableWorkerMessageHandler = true;\n\t\t * // Load Prism's script\n\t\t * ```\n\t\t *\n\t\t * @default false\n\t\t * @type {boolean}\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */ disableWorkerMessageHandler: _self.Prism && _self.Prism.disableWorkerMessageHandler,\n        /**\n\t\t * A namespace for utility methods.\n\t\t *\n\t\t * All function in this namespace that are not explicitly marked as _public_ are for __internal use only__ and may\n\t\t * change or disappear at any time.\n\t\t *\n\t\t * @namespace\n\t\t * @memberof Prism\n\t\t */ util: {\n            encode: function encode(tokens) {\n                if (tokens instanceof Token) return new Token(tokens.type, encode(tokens.content), tokens.alias);\n                else if (Array.isArray(tokens)) return tokens.map(encode);\n                else return tokens.replace(/&/g, \"&amp;\").replace(/</g, \"&lt;\").replace(/\\u00a0/g, \" \");\n            },\n            /**\n\t\t\t * Returns the name of the type of the given value.\n\t\t\t *\n\t\t\t * @param {any} o\n\t\t\t * @returns {string}\n\t\t\t * @example\n\t\t\t * type(null)      === 'Null'\n\t\t\t * type(undefined) === 'Undefined'\n\t\t\t * type(123)       === 'Number'\n\t\t\t * type('foo')     === 'String'\n\t\t\t * type(true)      === 'Boolean'\n\t\t\t * type([1, 2])    === 'Array'\n\t\t\t * type({})        === 'Object'\n\t\t\t * type(String)    === 'Function'\n\t\t\t * type(/abc+/)    === 'RegExp'\n\t\t\t */ type: function(o) {\n                return Object.prototype.toString.call(o).slice(8, -1);\n            },\n            /**\n\t\t\t * Returns a unique number for the given object. Later calls will still return the same number.\n\t\t\t *\n\t\t\t * @param {Object} obj\n\t\t\t * @returns {number}\n\t\t\t */ objId: function(obj) {\n                if (!obj[\"__id\"]) Object.defineProperty(obj, \"__id\", {\n                    value: ++uniqueId\n                });\n                return obj[\"__id\"];\n            },\n            /**\n\t\t\t * Creates a deep clone of the given object.\n\t\t\t *\n\t\t\t * The main intended use of this function is to clone language definitions.\n\t\t\t *\n\t\t\t * @param {T} o\n\t\t\t * @param {Record<number, any>} [visited]\n\t\t\t * @returns {T}\n\t\t\t * @template T\n\t\t\t */ clone: function deepClone(o, visited) {\n                visited = visited || {};\n                var clone;\n                var id;\n                switch(_.util.type(o)){\n                    case \"Object\":\n                        id = _.util.objId(o);\n                        if (visited[id]) return visited[id];\n                        clone = /** @type {Record<string, any>} */ {};\n                        visited[id] = clone;\n                        for(var key in o)if (o.hasOwnProperty(key)) clone[key] = deepClone(o[key], visited);\n                        return /** @type {any} */ clone;\n                    case \"Array\":\n                        id = _.util.objId(o);\n                        if (visited[id]) return visited[id];\n                        clone = [];\n                        visited[id] = clone;\n                        /** @type {any} */ o.forEach(function(v, i) {\n                            clone[i] = deepClone(v, visited);\n                        });\n                        return /** @type {any} */ clone;\n                    default:\n                        return o;\n                }\n            },\n            /**\n\t\t\t * Returns the Prism language of the given element set by a `language-xxxx` or `lang-xxxx` class.\n\t\t\t *\n\t\t\t * If no language is set for the element or the element is `null` or `undefined`, `none` will be returned.\n\t\t\t *\n\t\t\t * @param {Element} element\n\t\t\t * @returns {string}\n\t\t\t */ getLanguage: function(element) {\n                while(element){\n                    var m = lang.exec(element.className);\n                    if (m) return m[1].toLowerCase();\n                    element = element.parentElement;\n                }\n                return \"none\";\n            },\n            /**\n\t\t\t * Sets the Prism `language-xxxx` class of the given element.\n\t\t\t *\n\t\t\t * @param {Element} element\n\t\t\t * @param {string} language\n\t\t\t * @returns {void}\n\t\t\t */ setLanguage: function(element, language) {\n                // remove all `language-xxxx` classes\n                // (this might leave behind a leading space)\n                element.className = element.className.replace(RegExp(lang, \"gi\"), \"\");\n                // add the new `language-xxxx` class\n                // (using `classList` will automatically clean up spaces for us)\n                element.classList.add(\"language-\" + language);\n            },\n            /**\n\t\t\t * Returns the script element that is currently executing.\n\t\t\t *\n\t\t\t * This does __not__ work for line script element.\n\t\t\t *\n\t\t\t * @returns {HTMLScriptElement | null}\n\t\t\t */ currentScript: function() {\n                if (typeof document === \"undefined\") return null;\n                if (\"currentScript\" in document && true /* hack to trip TS' flow analysis */ ) return /** @type {any} */ document.currentScript;\n                // IE11 workaround\n                // we'll get the src of the current script by parsing IE11's error stack trace\n                // this will not work for inline scripts\n                try {\n                    throw new Error();\n                } catch (err) {\n                    // Get file src url from stack. Specifically works with the format of stack traces in IE.\n                    // A stack will look like this:\n                    //\n                    // Error\n                    //    at _.util.currentScript (http://localhost/components/prism-core.js:119:5)\n                    //    at Global code (http://localhost/components/prism-core.js:606:1)\n                    var src = (/at [^(\\r\\n]*\\((.*):[^:]+:[^:]+\\)$/i.exec(err.stack) || [])[1];\n                    if (src) {\n                        var scripts = document.getElementsByTagName(\"script\");\n                        for(var i in scripts){\n                            if (scripts[i].src == src) return scripts[i];\n                        }\n                    }\n                    return null;\n                }\n            },\n            /**\n\t\t\t * Returns whether a given class is active for `element`.\n\t\t\t *\n\t\t\t * The class can be activated if `element` or one of its ancestors has the given class and it can be deactivated\n\t\t\t * if `element` or one of its ancestors has the negated version of the given class. The _negated version_ of the\n\t\t\t * given class is just the given class with a `no-` prefix.\n\t\t\t *\n\t\t\t * Whether the class is active is determined by the closest ancestor of `element` (where `element` itself is\n\t\t\t * closest ancestor) that has the given class or the negated version of it. If neither `element` nor any of its\n\t\t\t * ancestors have the given class or the negated version of it, then the default activation will be returned.\n\t\t\t *\n\t\t\t * In the paradoxical situation where the closest ancestor contains __both__ the given class and the negated\n\t\t\t * version of it, the class is considered active.\n\t\t\t *\n\t\t\t * @param {Element} element\n\t\t\t * @param {string} className\n\t\t\t * @param {boolean} [defaultActivation=false]\n\t\t\t * @returns {boolean}\n\t\t\t */ isActive: function(element, className, defaultActivation) {\n                var no = \"no-\" + className;\n                while(element){\n                    var classList = element.classList;\n                    if (classList.contains(className)) return true;\n                    if (classList.contains(no)) return false;\n                    element = element.parentElement;\n                }\n                return !!defaultActivation;\n            }\n        },\n        /**\n\t\t * This namespace contains all currently loaded languages and the some helper functions to create and modify languages.\n\t\t *\n\t\t * @namespace\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */ languages: {\n            /**\n\t\t\t * The grammar for plain, unformatted text.\n\t\t\t */ plain: plainTextGrammar,\n            plaintext: plainTextGrammar,\n            text: plainTextGrammar,\n            txt: plainTextGrammar,\n            /**\n\t\t\t * Creates a deep copy of the language with the given id and appends the given tokens.\n\t\t\t *\n\t\t\t * If a token in `redef` also appears in the copied language, then the existing token in the copied language\n\t\t\t * will be overwritten at its original position.\n\t\t\t *\n\t\t\t * ## Best practices\n\t\t\t *\n\t\t\t * Since the position of overwriting tokens (token in `redef` that overwrite tokens in the copied language)\n\t\t\t * doesn't matter, they can technically be in any order. However, this can be confusing to others that trying to\n\t\t\t * understand the language definition because, normally, the order of tokens matters in Prism grammars.\n\t\t\t *\n\t\t\t * Therefore, it is encouraged to order overwriting tokens according to the positions of the overwritten tokens.\n\t\t\t * Furthermore, all non-overwriting tokens should be placed after the overwriting ones.\n\t\t\t *\n\t\t\t * @param {string} id The id of the language to extend. This has to be a key in `Prism.languages`.\n\t\t\t * @param {Grammar} redef The new tokens to append.\n\t\t\t * @returns {Grammar} The new language created.\n\t\t\t * @public\n\t\t\t * @example\n\t\t\t * Prism.languages['css-with-colors'] = Prism.languages.extend('css', {\n\t\t\t *     // Prism.languages.css already has a 'comment' token, so this token will overwrite CSS' 'comment' token\n\t\t\t *     // at its original position\n\t\t\t *     'comment': { ... },\n\t\t\t *     // CSS doesn't have a 'color' token, so this token will be appended\n\t\t\t *     'color': /\\b(?:red|green|blue)\\b/\n\t\t\t * });\n\t\t\t */ extend: function(id, redef) {\n                var lang = _.util.clone(_.languages[id]);\n                for(var key in redef)lang[key] = redef[key];\n                return lang;\n            },\n            /**\n\t\t\t * Inserts tokens _before_ another token in a language definition or any other grammar.\n\t\t\t *\n\t\t\t * ## Usage\n\t\t\t *\n\t\t\t * This helper method makes it easy to modify existing languages. For example, the CSS language definition\n\t\t\t * not only defines CSS highlighting for CSS documents, but also needs to define highlighting for CSS embedded\n\t\t\t * in HTML through `<style>` elements. To do this, it needs to modify `Prism.languages.markup` and add the\n\t\t\t * appropriate tokens. However, `Prism.languages.markup` is a regular JavaScript object literal, so if you do\n\t\t\t * this:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * Prism.languages.markup.style = {\n\t\t\t *     // token\n\t\t\t * };\n\t\t\t * ```\n\t\t\t *\n\t\t\t * then the `style` token will be added (and processed) at the end. `insertBefore` allows you to insert tokens\n\t\t\t * before existing tokens. For the CSS example above, you would use it like this:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * Prism.languages.insertBefore('markup', 'cdata', {\n\t\t\t *     'style': {\n\t\t\t *         // token\n\t\t\t *     }\n\t\t\t * });\n\t\t\t * ```\n\t\t\t *\n\t\t\t * ## Special cases\n\t\t\t *\n\t\t\t * If the grammars of `inside` and `insert` have tokens with the same name, the tokens in `inside`'s grammar\n\t\t\t * will be ignored.\n\t\t\t *\n\t\t\t * This behavior can be used to insert tokens after `before`:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * Prism.languages.insertBefore('markup', 'comment', {\n\t\t\t *     'comment': Prism.languages.markup.comment,\n\t\t\t *     // tokens after 'comment'\n\t\t\t * });\n\t\t\t * ```\n\t\t\t *\n\t\t\t * ## Limitations\n\t\t\t *\n\t\t\t * The main problem `insertBefore` has to solve is iteration order. Since ES2015, the iteration order for object\n\t\t\t * properties is guaranteed to be the insertion order (except for integer keys) but some browsers behave\n\t\t\t * differently when keys are deleted and re-inserted. So `insertBefore` can't be implemented by temporarily\n\t\t\t * deleting properties which is necessary to insert at arbitrary positions.\n\t\t\t *\n\t\t\t * To solve this problem, `insertBefore` doesn't actually insert the given tokens into the target object.\n\t\t\t * Instead, it will create a new object and replace all references to the target object with the new one. This\n\t\t\t * can be done without temporarily deleting properties, so the iteration order is well-defined.\n\t\t\t *\n\t\t\t * However, only references that can be reached from `Prism.languages` or `insert` will be replaced. I.e. if\n\t\t\t * you hold the target object in a variable, then the value of the variable will not change.\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * var oldMarkup = Prism.languages.markup;\n\t\t\t * var newMarkup = Prism.languages.insertBefore('markup', 'comment', { ... });\n\t\t\t *\n\t\t\t * assert(oldMarkup !== Prism.languages.markup);\n\t\t\t * assert(newMarkup === Prism.languages.markup);\n\t\t\t * ```\n\t\t\t *\n\t\t\t * @param {string} inside The property of `root` (e.g. a language id in `Prism.languages`) that contains the\n\t\t\t * object to be modified.\n\t\t\t * @param {string} before The key to insert before.\n\t\t\t * @param {Grammar} insert An object containing the key-value pairs to be inserted.\n\t\t\t * @param {Object<string, any>} [root] The object containing `inside`, i.e. the object that contains the\n\t\t\t * object to be modified.\n\t\t\t *\n\t\t\t * Defaults to `Prism.languages`.\n\t\t\t * @returns {Grammar} The new grammar object.\n\t\t\t * @public\n\t\t\t */ insertBefore: function(inside, before, insert, root) {\n                root = root || /** @type {any} */ _.languages;\n                var grammar = root[inside];\n                /** @type {Grammar} */ var ret = {};\n                for(var token in grammar)if (grammar.hasOwnProperty(token)) {\n                    if (token == before) {\n                        for(var newToken in insert)if (insert.hasOwnProperty(newToken)) ret[newToken] = insert[newToken];\n                    }\n                    // Do not insert token which also occur in insert. See #1525\n                    if (!insert.hasOwnProperty(token)) ret[token] = grammar[token];\n                }\n                var old = root[inside];\n                root[inside] = ret;\n                // Update references in other language definitions\n                _.languages.DFS(_.languages, function(key, value) {\n                    if (value === old && key != inside) this[key] = ret;\n                });\n                return ret;\n            },\n            // Traverse a language definition with Depth First Search\n            DFS: function DFS(o, callback, type, visited) {\n                visited = visited || {};\n                var objId = _.util.objId;\n                for(var i in o)if (o.hasOwnProperty(i)) {\n                    callback.call(o, i, o[i], type || i);\n                    var property = o[i];\n                    var propertyType = _.util.type(property);\n                    if (propertyType === \"Object\" && !visited[objId(property)]) {\n                        visited[objId(property)] = true;\n                        DFS(property, callback, null, visited);\n                    } else if (propertyType === \"Array\" && !visited[objId(property)]) {\n                        visited[objId(property)] = true;\n                        DFS(property, callback, i, visited);\n                    }\n                }\n            }\n        },\n        plugins: {},\n        /**\n\t\t * This is the most high-level function in Prism’s API.\n\t\t * It fetches all the elements that have a `.language-xxxx` class and then calls {@link Prism.highlightElement} on\n\t\t * each one of them.\n\t\t *\n\t\t * This is equivalent to `Prism.highlightAllUnder(document, async, callback)`.\n\t\t *\n\t\t * @param {boolean} [async=false] Same as in {@link Prism.highlightAllUnder}.\n\t\t * @param {HighlightCallback} [callback] Same as in {@link Prism.highlightAllUnder}.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */ highlightAll: function(async, callback) {\n            _.highlightAllUnder(document, async, callback);\n        },\n        /**\n\t\t * Fetches all the descendants of `container` that have a `.language-xxxx` class and then calls\n\t\t * {@link Prism.highlightElement} on each one of them.\n\t\t *\n\t\t * The following hooks will be run:\n\t\t * 1. `before-highlightall`\n\t\t * 2. `before-all-elements-highlight`\n\t\t * 3. All hooks of {@link Prism.highlightElement} for each element.\n\t\t *\n\t\t * @param {ParentNode} container The root element, whose descendants that have a `.language-xxxx` class will be highlighted.\n\t\t * @param {boolean} [async=false] Whether each element is to be highlighted asynchronously using Web Workers.\n\t\t * @param {HighlightCallback} [callback] An optional callback to be invoked on each element after its highlighting is done.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */ highlightAllUnder: function(container, async, callback) {\n            var env = {\n                callback: callback,\n                container: container,\n                selector: 'code[class*=\"language-\"], [class*=\"language-\"] code, code[class*=\"lang-\"], [class*=\"lang-\"] code'\n            };\n            _.hooks.run(\"before-highlightall\", env);\n            env.elements = Array.prototype.slice.apply(env.container.querySelectorAll(env.selector));\n            _.hooks.run(\"before-all-elements-highlight\", env);\n            for(var i = 0, element; element = env.elements[i++];)_.highlightElement(element, async === true, env.callback);\n        },\n        /**\n\t\t * Highlights the code inside a single element.\n\t\t *\n\t\t * The following hooks will be run:\n\t\t * 1. `before-sanity-check`\n\t\t * 2. `before-highlight`\n\t\t * 3. All hooks of {@link Prism.highlight}. These hooks will be run by an asynchronous worker if `async` is `true`.\n\t\t * 4. `before-insert`\n\t\t * 5. `after-highlight`\n\t\t * 6. `complete`\n\t\t *\n\t\t * Some the above hooks will be skipped if the element doesn't contain any text or there is no grammar loaded for\n\t\t * the element's language.\n\t\t *\n\t\t * @param {Element} element The element containing the code.\n\t\t * It must have a class of `language-xxxx` to be processed, where `xxxx` is a valid language identifier.\n\t\t * @param {boolean} [async=false] Whether the element is to be highlighted asynchronously using Web Workers\n\t\t * to improve performance and avoid blocking the UI when highlighting very large chunks of code. This option is\n\t\t * [disabled by default](https://prismjs.com/faq.html#why-is-asynchronous-highlighting-disabled-by-default).\n\t\t *\n\t\t * Note: All language definitions required to highlight the code must be included in the main `prism.js` file for\n\t\t * asynchronous highlighting to work. You can build your own bundle on the\n\t\t * [Download page](https://prismjs.com/download.html).\n\t\t * @param {HighlightCallback} [callback] An optional callback to be invoked after the highlighting is done.\n\t\t * Mostly useful when `async` is `true`, since in that case, the highlighting is done asynchronously.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */ highlightElement: function(element, async, callback) {\n            // Find language\n            var language = _.util.getLanguage(element);\n            var grammar = _.languages[language];\n            // Set language on the element, if not present\n            _.util.setLanguage(element, language);\n            // Set language on the parent, for styling\n            var parent = element.parentElement;\n            if (parent && parent.nodeName.toLowerCase() === \"pre\") _.util.setLanguage(parent, language);\n            var code = element.textContent;\n            var env = {\n                element: element,\n                language: language,\n                grammar: grammar,\n                code: code\n            };\n            function insertHighlightedCode(highlightedCode) {\n                env.highlightedCode = highlightedCode;\n                _.hooks.run(\"before-insert\", env);\n                env.element.innerHTML = env.highlightedCode;\n                _.hooks.run(\"after-highlight\", env);\n                _.hooks.run(\"complete\", env);\n                callback && callback.call(env.element);\n            }\n            _.hooks.run(\"before-sanity-check\", env);\n            // plugins may change/add the parent/element\n            parent = env.element.parentElement;\n            if (parent && parent.nodeName.toLowerCase() === \"pre\" && !parent.hasAttribute(\"tabindex\")) parent.setAttribute(\"tabindex\", \"0\");\n            if (!env.code) {\n                _.hooks.run(\"complete\", env);\n                callback && callback.call(env.element);\n                return;\n            }\n            _.hooks.run(\"before-highlight\", env);\n            if (!env.grammar) {\n                insertHighlightedCode(_.util.encode(env.code));\n                return;\n            }\n            if (async && _self.Worker) {\n                var worker = new Worker(_.filename);\n                worker.onmessage = function(evt) {\n                    insertHighlightedCode(evt.data);\n                };\n                worker.postMessage(JSON.stringify({\n                    language: env.language,\n                    code: env.code,\n                    immediateClose: true\n                }));\n            } else insertHighlightedCode(_.highlight(env.code, env.grammar, env.language));\n        },\n        /**\n\t\t * Low-level function, only use if you know what you’re doing. It accepts a string of text as input\n\t\t * and the language definitions to use, and returns a string with the HTML produced.\n\t\t *\n\t\t * The following hooks will be run:\n\t\t * 1. `before-tokenize`\n\t\t * 2. `after-tokenize`\n\t\t * 3. `wrap`: On each {@link Token}.\n\t\t *\n\t\t * @param {string} text A string with the code to be highlighted.\n\t\t * @param {Grammar} grammar An object containing the tokens to use.\n\t\t *\n\t\t * Usually a language definition like `Prism.languages.markup`.\n\t\t * @param {string} language The name of the language definition passed to `grammar`.\n\t\t * @returns {string} The highlighted HTML.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t * @example\n\t\t * Prism.highlight('var foo = true;', Prism.languages.javascript, 'javascript');\n\t\t */ highlight: function(text, grammar, language) {\n            var env = {\n                code: text,\n                grammar: grammar,\n                language: language\n            };\n            _.hooks.run(\"before-tokenize\", env);\n            if (!env.grammar) throw new Error('The language \"' + env.language + '\" has no grammar.');\n            env.tokens = _.tokenize(env.code, env.grammar);\n            _.hooks.run(\"after-tokenize\", env);\n            return Token.stringify(_.util.encode(env.tokens), env.language);\n        },\n        /**\n\t\t * This is the heart of Prism, and the most low-level function you can use. It accepts a string of text as input\n\t\t * and the language definitions to use, and returns an array with the tokenized code.\n\t\t *\n\t\t * When the language definition includes nested tokens, the function is called recursively on each of these tokens.\n\t\t *\n\t\t * This method could be useful in other contexts as well, as a very crude parser.\n\t\t *\n\t\t * @param {string} text A string with the code to be highlighted.\n\t\t * @param {Grammar} grammar An object containing the tokens to use.\n\t\t *\n\t\t * Usually a language definition like `Prism.languages.markup`.\n\t\t * @returns {TokenStream} An array of strings and tokens, a token stream.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t * @example\n\t\t * let code = `var foo = 0;`;\n\t\t * let tokens = Prism.tokenize(code, Prism.languages.javascript);\n\t\t * tokens.forEach(token => {\n\t\t *     if (token instanceof Prism.Token && token.type === 'number') {\n\t\t *         console.log(`Found numeric literal: ${token.content}`);\n\t\t *     }\n\t\t * });\n\t\t */ tokenize: function(text, grammar) {\n            var rest = grammar.rest;\n            if (rest) {\n                for(var token in rest)grammar[token] = rest[token];\n                delete grammar.rest;\n            }\n            var tokenList = new LinkedList();\n            addAfter(tokenList, tokenList.head, text);\n            matchGrammar(text, tokenList, grammar, tokenList.head, 0);\n            return toArray(tokenList);\n        },\n        /**\n\t\t * @namespace\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */ hooks: {\n            all: {},\n            /**\n\t\t\t * Adds the given callback to the list of callbacks for the given hook.\n\t\t\t *\n\t\t\t * The callback will be invoked when the hook it is registered for is run.\n\t\t\t * Hooks are usually directly run by a highlight function but you can also run hooks yourself.\n\t\t\t *\n\t\t\t * One callback function can be registered to multiple hooks and the same hook multiple times.\n\t\t\t *\n\t\t\t * @param {string} name The name of the hook.\n\t\t\t * @param {HookCallback} callback The callback function which is given environment variables.\n\t\t\t * @public\n\t\t\t */ add: function(name, callback) {\n                var hooks = _.hooks.all;\n                hooks[name] = hooks[name] || [];\n                hooks[name].push(callback);\n            },\n            /**\n\t\t\t * Runs a hook invoking all registered callbacks with the given environment variables.\n\t\t\t *\n\t\t\t * Callbacks will be invoked synchronously and in the order in which they were registered.\n\t\t\t *\n\t\t\t * @param {string} name The name of the hook.\n\t\t\t * @param {Object<string, any>} env The environment variables of the hook passed to all callbacks registered.\n\t\t\t * @public\n\t\t\t */ run: function(name, env) {\n                var callbacks = _.hooks.all[name];\n                if (!callbacks || !callbacks.length) return;\n                for(var i = 0, callback; callback = callbacks[i++];)callback(env);\n            }\n        },\n        Token: Token\n    };\n    _self.Prism = _;\n    // Typescript note:\n    // The following can be used to import the Token type in JSDoc:\n    //\n    //   @typedef {InstanceType<import(\"./prism-core\")[\"Token\"]>} Token\n    /**\n\t * Creates a new token.\n\t *\n\t * @param {string} type See {@link Token#type type}\n\t * @param {string | TokenStream} content See {@link Token#content content}\n\t * @param {string|string[]} [alias] The alias(es) of the token.\n\t * @param {string} [matchedStr=\"\"] A copy of the full string this token was created from.\n\t * @class\n\t * @global\n\t * @public\n\t */ function Token(type, content, alias, matchedStr) {\n        /**\n\t\t * The type of the token.\n\t\t *\n\t\t * This is usually the key of a pattern in a {@link Grammar}.\n\t\t *\n\t\t * @type {string}\n\t\t * @see GrammarToken\n\t\t * @public\n\t\t */ this.type = type;\n        /**\n\t\t * The strings or tokens contained by this token.\n\t\t *\n\t\t * This will be a token stream if the pattern matched also defined an `inside` grammar.\n\t\t *\n\t\t * @type {string | TokenStream}\n\t\t * @public\n\t\t */ this.content = content;\n        /**\n\t\t * The alias(es) of the token.\n\t\t *\n\t\t * @type {string|string[]}\n\t\t * @see GrammarToken\n\t\t * @public\n\t\t */ this.alias = alias;\n        // Copy of the full string this token was created from\n        this.length = (matchedStr || \"\").length | 0;\n    }\n    /**\n\t * A token stream is an array of strings and {@link Token Token} objects.\n\t *\n\t * Token streams have to fulfill a few properties that are assumed by most functions (mostly internal ones) that process\n\t * them.\n\t *\n\t * 1. No adjacent strings.\n\t * 2. No empty strings.\n\t *\n\t *    The only exception here is the token stream that only contains the empty string and nothing else.\n\t *\n\t * @typedef {Array<string | Token>} TokenStream\n\t * @global\n\t * @public\n\t */ /**\n\t * Converts the given token or token stream to an HTML representation.\n\t *\n\t * The following hooks will be run:\n\t * 1. `wrap`: On each {@link Token}.\n\t *\n\t * @param {string | Token | TokenStream} o The token or token stream to be converted.\n\t * @param {string} language The name of current language.\n\t * @returns {string} The HTML representation of the token or token stream.\n\t * @memberof Token\n\t * @static\n\t */ Token.stringify = function stringify(o, language) {\n        if (typeof o == \"string\") return o;\n        if (Array.isArray(o)) {\n            var s = \"\";\n            o.forEach(function(e) {\n                s += stringify(e, language);\n            });\n            return s;\n        }\n        var env = {\n            type: o.type,\n            content: stringify(o.content, language),\n            tag: \"span\",\n            classes: [\n                \"token\",\n                o.type\n            ],\n            attributes: {},\n            language: language\n        };\n        var aliases = o.alias;\n        if (aliases) {\n            if (Array.isArray(aliases)) Array.prototype.push.apply(env.classes, aliases);\n            else env.classes.push(aliases);\n        }\n        _.hooks.run(\"wrap\", env);\n        var attributes = \"\";\n        for(var name in env.attributes)attributes += \" \" + name + '=\"' + (env.attributes[name] || \"\").replace(/\"/g, \"&quot;\") + '\"';\n        return \"<\" + env.tag + ' class=\"' + env.classes.join(\" \") + '\"' + attributes + \">\" + env.content + \"</\" + env.tag + \">\";\n    };\n    /**\n\t * @param {RegExp} pattern\n\t * @param {number} pos\n\t * @param {string} text\n\t * @param {boolean} lookbehind\n\t * @returns {RegExpExecArray | null}\n\t */ function matchPattern(pattern, pos, text, lookbehind) {\n        pattern.lastIndex = pos;\n        var match = pattern.exec(text);\n        if (match && lookbehind && match[1]) {\n            // change the match to remove the text matched by the Prism lookbehind group\n            var lookbehindLength = match[1].length;\n            match.index += lookbehindLength;\n            match[0] = match[0].slice(lookbehindLength);\n        }\n        return match;\n    }\n    /**\n\t * @param {string} text\n\t * @param {LinkedList<string | Token>} tokenList\n\t * @param {any} grammar\n\t * @param {LinkedListNode<string | Token>} startNode\n\t * @param {number} startPos\n\t * @param {RematchOptions} [rematch]\n\t * @returns {void}\n\t * @private\n\t *\n\t * @typedef RematchOptions\n\t * @property {string} cause\n\t * @property {number} reach\n\t */ function matchGrammar(text, tokenList, grammar, startNode, startPos, rematch) {\n        for(var token in grammar){\n            if (!grammar.hasOwnProperty(token) || !grammar[token]) continue;\n            var patterns = grammar[token];\n            patterns = Array.isArray(patterns) ? patterns : [\n                patterns\n            ];\n            for(var j = 0; j < patterns.length; ++j){\n                if (rematch && rematch.cause == token + \",\" + j) return;\n                var patternObj = patterns[j];\n                var inside = patternObj.inside;\n                var lookbehind = !!patternObj.lookbehind;\n                var greedy = !!patternObj.greedy;\n                var alias = patternObj.alias;\n                if (greedy && !patternObj.pattern.global) {\n                    // Without the global flag, lastIndex won't work\n                    var flags = patternObj.pattern.toString().match(/[imsuy]*$/)[0];\n                    patternObj.pattern = RegExp(patternObj.pattern.source, flags + \"g\");\n                }\n                /** @type {RegExp} */ var pattern = patternObj.pattern || patternObj;\n                for(var currentNode = startNode.next, pos = startPos; currentNode !== tokenList.tail; pos += currentNode.value.length, currentNode = currentNode.next){\n                    if (rematch && pos >= rematch.reach) break;\n                    var str = currentNode.value;\n                    if (tokenList.length > text.length) // Something went terribly wrong, ABORT, ABORT!\n                    return;\n                    if (str instanceof Token) continue;\n                    var removeCount = 1; // this is the to parameter of removeBetween\n                    var match;\n                    if (greedy) {\n                        match = matchPattern(pattern, pos, text, lookbehind);\n                        if (!match || match.index >= text.length) break;\n                        var from = match.index;\n                        var to = match.index + match[0].length;\n                        var p = pos;\n                        // find the node that contains the match\n                        p += currentNode.value.length;\n                        while(from >= p){\n                            currentNode = currentNode.next;\n                            p += currentNode.value.length;\n                        }\n                        // adjust pos (and p)\n                        p -= currentNode.value.length;\n                        pos = p;\n                        // the current node is a Token, then the match starts inside another Token, which is invalid\n                        if (currentNode.value instanceof Token) continue;\n                        // find the last node which is affected by this match\n                        for(var k = currentNode; k !== tokenList.tail && (p < to || typeof k.value === \"string\"); k = k.next){\n                            removeCount++;\n                            p += k.value.length;\n                        }\n                        removeCount--;\n                        // replace with the new match\n                        str = text.slice(pos, p);\n                        match.index -= pos;\n                    } else {\n                        match = matchPattern(pattern, 0, str, lookbehind);\n                        if (!match) continue;\n                    }\n                    // eslint-disable-next-line no-redeclare\n                    var from = match.index;\n                    var matchStr = match[0];\n                    var before = str.slice(0, from);\n                    var after = str.slice(from + matchStr.length);\n                    var reach = pos + str.length;\n                    if (rematch && reach > rematch.reach) rematch.reach = reach;\n                    var removeFrom = currentNode.prev;\n                    if (before) {\n                        removeFrom = addAfter(tokenList, removeFrom, before);\n                        pos += before.length;\n                    }\n                    removeRange(tokenList, removeFrom, removeCount);\n                    var wrapped = new Token(token, inside ? _.tokenize(matchStr, inside) : matchStr, alias, matchStr);\n                    currentNode = addAfter(tokenList, removeFrom, wrapped);\n                    if (after) addAfter(tokenList, currentNode, after);\n                    if (removeCount > 1) {\n                        // at least one Token object was removed, so we have to do some rematching\n                        // this can only happen if the current pattern is greedy\n                        /** @type {RematchOptions} */ var nestedRematch = {\n                            cause: token + \",\" + j,\n                            reach: reach\n                        };\n                        matchGrammar(text, tokenList, grammar, currentNode.prev, pos, nestedRematch);\n                        // the reach might have been extended because of the rematching\n                        if (rematch && nestedRematch.reach > rematch.reach) rematch.reach = nestedRematch.reach;\n                    }\n                }\n            }\n        }\n    }\n    /**\n\t * @typedef LinkedListNode\n\t * @property {T} value\n\t * @property {LinkedListNode<T> | null} prev The previous node.\n\t * @property {LinkedListNode<T> | null} next The next node.\n\t * @template T\n\t * @private\n\t */ /**\n\t * @template T\n\t * @private\n\t */ function LinkedList() {\n        /** @type {LinkedListNode<T>} */ var head = {\n            value: null,\n            prev: null,\n            next: null\n        };\n        /** @type {LinkedListNode<T>} */ var tail = {\n            value: null,\n            prev: head,\n            next: null\n        };\n        head.next = tail;\n        /** @type {LinkedListNode<T>} */ this.head = head;\n        /** @type {LinkedListNode<T>} */ this.tail = tail;\n        this.length = 0;\n    }\n    /**\n\t * Adds a new node with the given value to the list.\n\t *\n\t * @param {LinkedList<T>} list\n\t * @param {LinkedListNode<T>} node\n\t * @param {T} value\n\t * @returns {LinkedListNode<T>} The added node.\n\t * @template T\n\t */ function addAfter(list, node, value) {\n        // assumes that node != list.tail && values.length >= 0\n        var next = node.next;\n        var newNode = {\n            value: value,\n            prev: node,\n            next: next\n        };\n        node.next = newNode;\n        next.prev = newNode;\n        list.length++;\n        return newNode;\n    }\n    /**\n\t * Removes `count` nodes after the given node. The given node will not be removed.\n\t *\n\t * @param {LinkedList<T>} list\n\t * @param {LinkedListNode<T>} node\n\t * @param {number} count\n\t * @template T\n\t */ function removeRange(list, node, count) {\n        var next = node.next;\n        for(var i = 0; i < count && next !== list.tail; i++)next = next.next;\n        node.next = next;\n        next.prev = node;\n        list.length -= i;\n    }\n    /**\n\t * @param {LinkedList<T>} list\n\t * @returns {T[]}\n\t * @template T\n\t */ function toArray(list) {\n        var array = [];\n        var node = list.head.next;\n        while(node !== list.tail){\n            array.push(node.value);\n            node = node.next;\n        }\n        return array;\n    }\n    if (!_self.document) {\n        if (!_self.addEventListener) // in Node.js\n        return _;\n        if (!_.disableWorkerMessageHandler) // In worker\n        _self.addEventListener(\"message\", function(evt) {\n            var message = JSON.parse(evt.data);\n            var lang = message.language;\n            var code = message.code;\n            var immediateClose = message.immediateClose;\n            _self.postMessage(_.highlight(code, _.languages[lang], lang));\n            if (immediateClose) _self.close();\n        }, false);\n        return _;\n    }\n    // Get current script and highlight\n    var script = _.util.currentScript();\n    if (script) {\n        _.filename = script.src;\n        if (script.hasAttribute(\"data-manual\")) _.manual = true;\n    }\n    function highlightAutomaticallyCallback() {\n        if (!_.manual) _.highlightAll();\n    }\n    if (!_.manual) {\n        // If the document state is \"loading\", then we'll use DOMContentLoaded.\n        // If the document state is \"interactive\" and the prism.js script is deferred, then we'll also use the\n        // DOMContentLoaded event because there might be some plugins or languages which have also been deferred and they\n        // might take longer one animation frame to execute which can create a race condition where only some plugins have\n        // been loaded when Prism.highlightAll() is executed, depending on how fast resources are loaded.\n        // See https://github.com/PrismJS/prism/issues/2102\n        var readyState = document.readyState;\n        if (readyState === \"loading\" || readyState === \"interactive\" && script && script.defer) document.addEventListener(\"DOMContentLoaded\", highlightAutomaticallyCallback);\n        else if (window.requestAnimationFrame) window.requestAnimationFrame(highlightAutomaticallyCallback);\n        else window.setTimeout(highlightAutomaticallyCallback, 16);\n    }\n    return _;\n}($1feffb77eb3cfa15$var$_self);\nif (0, $1feffb77eb3cfa15$exports) $1feffb77eb3cfa15$exports = $1feffb77eb3cfa15$var$Prism;\n// hack for components to work correctly in node.js\nif (typeof $parcel$global !== \"undefined\") $parcel$global.Prism = $1feffb77eb3cfa15$var$Prism;\n// some additional documentation/types\n/**\n * The expansion of a simple `RegExp` literal to support additional properties.\n *\n * @typedef GrammarToken\n * @property {RegExp} pattern The regular expression of the token.\n * @property {boolean} [lookbehind=false] If `true`, then the first capturing group of `pattern` will (effectively)\n * behave as a lookbehind group meaning that the captured text will not be part of the matched text of the new token.\n * @property {boolean} [greedy=false] Whether the token is greedy.\n * @property {string|string[]} [alias] An optional alias or list of aliases.\n * @property {Grammar} [inside] The nested grammar of this token.\n *\n * The `inside` grammar will be used to tokenize the text value of each token of this kind.\n *\n * This can be used to make nested and even recursive language definitions.\n *\n * Note: This can cause infinite recursion. Be careful when you embed different languages or even the same language into\n * each another.\n * @global\n * @public\n */ /**\n * @typedef Grammar\n * @type {Object<string, RegExp | GrammarToken | Array<RegExp | GrammarToken>>}\n * @property {Grammar} [rest] An optional grammar object that will be appended to this grammar.\n * @global\n * @public\n */ /**\n * A function which will invoked after an element was successfully highlighted.\n *\n * @callback HighlightCallback\n * @param {Element} element The element successfully highlighted.\n * @returns {void}\n * @global\n * @public\n */ /**\n * @callback HookCallback\n * @param {Object<string, any>} env The environment variables of the hook.\n * @returns {void}\n * @global\n * @public\n */ /* **********************************************\n     Begin prism-markup.js\n********************************************** */ $1feffb77eb3cfa15$var$Prism.languages.markup = {\n    \"comment\": {\n        pattern: /<!--(?:(?!<!--)[\\s\\S])*?-->/,\n        greedy: true\n    },\n    \"prolog\": {\n        pattern: /<\\?[\\s\\S]+?\\?>/,\n        greedy: true\n    },\n    \"doctype\": {\n        // https://www.w3.org/TR/xml/#NT-doctypedecl\n        pattern: /<!DOCTYPE(?:[^>\"'[\\]]|\"[^\"]*\"|'[^']*')+(?:\\[(?:[^<\"'\\]]|\"[^\"]*\"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\\]\\s*)?>/i,\n        greedy: true,\n        inside: {\n            \"internal-subset\": {\n                pattern: /(^[^\\[]*\\[)[\\s\\S]+(?=\\]>$)/,\n                lookbehind: true,\n                greedy: true,\n                inside: null // see below\n            },\n            \"string\": {\n                pattern: /\"[^\"]*\"|'[^']*'/,\n                greedy: true\n            },\n            \"punctuation\": /^<!|>$|[[\\]]/,\n            \"doctype-tag\": /^DOCTYPE/i,\n            \"name\": /[^\\s<>'\"]+/\n        }\n    },\n    \"cdata\": {\n        pattern: /<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,\n        greedy: true\n    },\n    \"tag\": {\n        pattern: /<\\/?(?!\\d)[^\\s>\\/=$<%]+(?:\\s(?:\\s*[^\\s>\\/=]+(?:\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))|(?=[\\s/>])))+)?\\s*\\/?>/,\n        greedy: true,\n        inside: {\n            \"tag\": {\n                pattern: /^<\\/?[^\\s>\\/]+/,\n                inside: {\n                    \"punctuation\": /^<\\/?/,\n                    \"namespace\": /^[^\\s>\\/:]+:/\n                }\n            },\n            \"special-attr\": [],\n            \"attr-value\": {\n                pattern: /=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+)/,\n                inside: {\n                    \"punctuation\": [\n                        {\n                            pattern: /^=/,\n                            alias: \"attr-equals\"\n                        },\n                        {\n                            pattern: /^(\\s*)[\"']|[\"']$/,\n                            lookbehind: true\n                        }\n                    ]\n                }\n            },\n            \"punctuation\": /\\/?>/,\n            \"attr-name\": {\n                pattern: /[^\\s>\\/]+/,\n                inside: {\n                    \"namespace\": /^[^\\s>\\/:]+:/\n                }\n            }\n        }\n    },\n    \"entity\": [\n        {\n            pattern: /&[\\da-z]{1,8};/i,\n            alias: \"named-entity\"\n        },\n        /&#x?[\\da-f]{1,8};/i\n    ]\n};\n$1feffb77eb3cfa15$var$Prism.languages.markup[\"tag\"].inside[\"attr-value\"].inside[\"entity\"] = $1feffb77eb3cfa15$var$Prism.languages.markup[\"entity\"];\n$1feffb77eb3cfa15$var$Prism.languages.markup[\"doctype\"].inside[\"internal-subset\"].inside = $1feffb77eb3cfa15$var$Prism.languages.markup;\n// Plugin to make entity title show the real entity, idea by Roman Komarov\n$1feffb77eb3cfa15$var$Prism.hooks.add(\"wrap\", function(env) {\n    if (env.type === \"entity\") env.attributes[\"title\"] = env.content.replace(/&amp;/, \"&\");\n});\nObject.defineProperty($1feffb77eb3cfa15$var$Prism.languages.markup.tag, \"addInlined\", {\n    /**\n\t * Adds an inlined language to markup.\n\t *\n\t * An example of an inlined language is CSS with `<style>` tags.\n\t *\n\t * @param {string} tagName The name of the tag that contains the inlined language. This name will be treated as\n\t * case insensitive.\n\t * @param {string} lang The language key.\n\t * @example\n\t * addInlined('style', 'css');\n\t */ value: function addInlined(tagName, lang) {\n        var includedCdataInside = {};\n        includedCdataInside[\"language-\" + lang] = {\n            pattern: /(^<!\\[CDATA\\[)[\\s\\S]+?(?=\\]\\]>$)/i,\n            lookbehind: true,\n            inside: $1feffb77eb3cfa15$var$Prism.languages[lang]\n        };\n        includedCdataInside[\"cdata\"] = /^<!\\[CDATA\\[|\\]\\]>$/i;\n        var inside = {\n            \"included-cdata\": {\n                pattern: /<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,\n                inside: includedCdataInside\n            }\n        };\n        inside[\"language-\" + lang] = {\n            pattern: /[\\s\\S]+/,\n            inside: $1feffb77eb3cfa15$var$Prism.languages[lang]\n        };\n        var def = {};\n        def[tagName] = {\n            pattern: RegExp(/(<__[^>]*>)(?:<!\\[CDATA\\[(?:[^\\]]|\\](?!\\]>))*\\]\\]>|(?!<!\\[CDATA\\[)[\\s\\S])*?(?=<\\/__>)/.source.replace(/__/g, function() {\n                return tagName;\n            }), \"i\"),\n            lookbehind: true,\n            greedy: true,\n            inside: inside\n        };\n        $1feffb77eb3cfa15$var$Prism.languages.insertBefore(\"markup\", \"cdata\", def);\n    }\n});\nObject.defineProperty($1feffb77eb3cfa15$var$Prism.languages.markup.tag, \"addAttribute\", {\n    /**\n\t * Adds an pattern to highlight languages embedded in HTML attributes.\n\t *\n\t * An example of an inlined language is CSS with `style` attributes.\n\t *\n\t * @param {string} attrName The name of the tag that contains the inlined language. This name will be treated as\n\t * case insensitive.\n\t * @param {string} lang The language key.\n\t * @example\n\t * addAttribute('style', 'css');\n\t */ value: function(attrName, lang) {\n        $1feffb77eb3cfa15$var$Prism.languages.markup.tag.inside[\"special-attr\"].push({\n            pattern: RegExp(/(^|[\"'\\s])/.source + \"(?:\" + attrName + \")\" + /\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))/.source, \"i\"),\n            lookbehind: true,\n            inside: {\n                \"attr-name\": /^[^\\s=]+/,\n                \"attr-value\": {\n                    pattern: /=[\\s\\S]+/,\n                    inside: {\n                        \"value\": {\n                            pattern: /(^=\\s*([\"']|(?![\"'])))\\S[\\s\\S]*(?=\\2$)/,\n                            lookbehind: true,\n                            alias: [\n                                lang,\n                                \"language-\" + lang\n                            ],\n                            inside: $1feffb77eb3cfa15$var$Prism.languages[lang]\n                        },\n                        \"punctuation\": [\n                            {\n                                pattern: /^=/,\n                                alias: \"attr-equals\"\n                            },\n                            /\"|'/\n                        ]\n                    }\n                }\n            }\n        });\n    }\n});\n$1feffb77eb3cfa15$var$Prism.languages.html = $1feffb77eb3cfa15$var$Prism.languages.markup;\n$1feffb77eb3cfa15$var$Prism.languages.mathml = $1feffb77eb3cfa15$var$Prism.languages.markup;\n$1feffb77eb3cfa15$var$Prism.languages.svg = $1feffb77eb3cfa15$var$Prism.languages.markup;\n$1feffb77eb3cfa15$var$Prism.languages.xml = $1feffb77eb3cfa15$var$Prism.languages.extend(\"markup\", {});\n$1feffb77eb3cfa15$var$Prism.languages.ssml = $1feffb77eb3cfa15$var$Prism.languages.xml;\n$1feffb77eb3cfa15$var$Prism.languages.atom = $1feffb77eb3cfa15$var$Prism.languages.xml;\n$1feffb77eb3cfa15$var$Prism.languages.rss = $1feffb77eb3cfa15$var$Prism.languages.xml;\n/* **********************************************\n     Begin prism-css.js\n********************************************** */ (function(Prism) {\n    var string = /(?:\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"|'(?:\\\\(?:\\r\\n|[\\s\\S])|[^'\\\\\\r\\n])*')/;\n    Prism.languages.css = {\n        \"comment\": /\\/\\*[\\s\\S]*?\\*\\//,\n        \"atrule\": {\n            pattern: RegExp(\"@[\\\\w-](?:\" + /[^;{\\s\"']|\\s+(?!\\s)/.source + \"|\" + string.source + \")*?\" + /(?:;|(?=\\s*\\{))/.source),\n            inside: {\n                \"rule\": /^@[\\w-]+/,\n                \"selector-function-argument\": {\n                    pattern: /(\\bselector\\s*\\(\\s*(?![\\s)]))(?:[^()\\s]|\\s+(?![\\s)])|\\((?:[^()]|\\([^()]*\\))*\\))+(?=\\s*\\))/,\n                    lookbehind: true,\n                    alias: \"selector\"\n                },\n                \"keyword\": {\n                    pattern: /(^|[^\\w-])(?:and|not|only|or)(?![\\w-])/,\n                    lookbehind: true\n                }\n            }\n        },\n        \"url\": {\n            // https://drafts.csswg.org/css-values-3/#urls\n            pattern: RegExp(\"\\\\burl\\\\((?:\" + string.source + \"|\" + /(?:[^\\\\\\r\\n()\"']|\\\\[\\s\\S])*/.source + \")\\\\)\", \"i\"),\n            greedy: true,\n            inside: {\n                \"function\": /^url/i,\n                \"punctuation\": /^\\(|\\)$/,\n                \"string\": {\n                    pattern: RegExp(\"^\" + string.source + \"$\"),\n                    alias: \"url\"\n                }\n            }\n        },\n        \"selector\": {\n            pattern: RegExp(\"(^|[{}\\\\s])[^{}\\\\s](?:[^{};\\\"'\\\\s]|\\\\s+(?![\\\\s{])|\" + string.source + \")*(?=\\\\s*\\\\{)\"),\n            lookbehind: true\n        },\n        \"string\": {\n            pattern: string,\n            greedy: true\n        },\n        \"property\": {\n            pattern: /(^|[^-\\w\\xA0-\\uFFFF])(?!\\s)[-_a-z\\xA0-\\uFFFF](?:(?!\\s)[-\\w\\xA0-\\uFFFF])*(?=\\s*:)/i,\n            lookbehind: true\n        },\n        \"important\": /!important\\b/i,\n        \"function\": {\n            pattern: /(^|[^-a-z0-9])[-a-z0-9]+(?=\\()/i,\n            lookbehind: true\n        },\n        \"punctuation\": /[(){};:,]/\n    };\n    Prism.languages.css[\"atrule\"].inside.rest = Prism.languages.css;\n    var markup = Prism.languages.markup;\n    if (markup) {\n        markup.tag.addInlined(\"style\", \"css\");\n        markup.tag.addAttribute(\"style\", \"css\");\n    }\n})($1feffb77eb3cfa15$var$Prism);\n/* **********************************************\n     Begin prism-clike.js\n********************************************** */ $1feffb77eb3cfa15$var$Prism.languages.clike = {\n    \"comment\": [\n        {\n            pattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n            lookbehind: true,\n            greedy: true\n        },\n        {\n            pattern: /(^|[^\\\\:])\\/\\/.*/,\n            lookbehind: true,\n            greedy: true\n        }\n    ],\n    \"string\": {\n        pattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n        greedy: true\n    },\n    \"class-name\": {\n        pattern: /(\\b(?:class|extends|implements|instanceof|interface|new|trait)\\s+|\\bcatch\\s+\\()[\\w.\\\\]+/i,\n        lookbehind: true,\n        inside: {\n            \"punctuation\": /[.\\\\]/\n        }\n    },\n    \"keyword\": /\\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\\b/,\n    \"boolean\": /\\b(?:false|true)\\b/,\n    \"function\": /\\b\\w+(?=\\()/,\n    \"number\": /\\b0x[\\da-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?/i,\n    \"operator\": /[<>]=?|[!=]=?=?|--?|\\+\\+?|&&?|\\|\\|?|[?*/~^%]/,\n    \"punctuation\": /[{}[\\];(),.:]/\n};\n/* **********************************************\n     Begin prism-javascript.js\n********************************************** */ $1feffb77eb3cfa15$var$Prism.languages.javascript = $1feffb77eb3cfa15$var$Prism.languages.extend(\"clike\", {\n    \"class-name\": [\n        $1feffb77eb3cfa15$var$Prism.languages.clike[\"class-name\"],\n        {\n            pattern: /(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$A-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\.(?:constructor|prototype))/,\n            lookbehind: true\n        }\n    ],\n    \"keyword\": [\n        {\n            pattern: /((?:^|\\})\\s*)catch\\b/,\n            lookbehind: true\n        },\n        {\n            pattern: /(^|[^.]|\\.\\.\\.\\s*)\\b(?:as|assert(?=\\s*\\{)|async(?=\\s*(?:function\\b|\\(|[$\\w\\xA0-\\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\\s*(?:\\{|$))|for|from(?=\\s*(?:['\"]|$))|function|(?:get|set)(?=\\s*(?:[#\\[$\\w\\xA0-\\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\\b/,\n            lookbehind: true\n        }\n    ],\n    // Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n    \"function\": /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*(?:\\.\\s*(?:apply|bind|call)\\s*)?\\()/,\n    \"number\": {\n        pattern: RegExp(/(^|[^\\w$])/.source + \"(?:\" + // constant\n        (/NaN|Infinity/.source + \"|\" + // binary integer\n        /0[bB][01]+(?:_[01]+)*n?/.source + \"|\" + // octal integer\n        /0[oO][0-7]+(?:_[0-7]+)*n?/.source + \"|\" + // hexadecimal integer\n        /0[xX][\\dA-Fa-f]+(?:_[\\dA-Fa-f]+)*n?/.source + \"|\" + // decimal bigint\n        /\\d+(?:_\\d+)*n/.source + \"|\" + // decimal number (integer or float) but no bigint\n        /(?:\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\.\\d+(?:_\\d+)*)(?:[Ee][+-]?\\d+(?:_\\d+)*)?/.source) + \")\" + /(?![\\w$])/.source),\n        lookbehind: true\n    },\n    \"operator\": /--|\\+\\+|\\*\\*=?|=>|&&=?|\\|\\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\\.{3}|\\?\\?=?|\\?\\.?|[~:]/\n});\n$1feffb77eb3cfa15$var$Prism.languages.javascript[\"class-name\"][0].pattern = /(\\b(?:class|extends|implements|instanceof|interface|new)\\s+)[\\w.\\\\]+/;\n$1feffb77eb3cfa15$var$Prism.languages.insertBefore(\"javascript\", \"keyword\", {\n    \"regex\": {\n        pattern: RegExp(// lookbehind\n        // eslint-disable-next-line regexp/no-dupe-characters-character-class\n        /((?:^|[^$\\w\\xA0-\\uFFFF.\"'\\])\\s]|\\b(?:return|yield))\\s*)/.source + // Regex pattern:\n        // There are 2 regex patterns here. The RegExp set notation proposal added support for nested character\n        // classes if the `v` flag is present. Unfortunately, nested CCs are both context-free and incompatible\n        // with the only syntax, so we have to define 2 different regex patterns.\n        /\\//.source + \"(?:\" + /(?:\\[(?:[^\\]\\\\\\r\\n]|\\\\.)*\\]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[dgimyus]{0,7}/.source + \"|\" + // `v` flag syntax. This supports 3 levels of nested character classes.\n        /(?:\\[(?:[^[\\]\\\\\\r\\n]|\\\\.|\\[(?:[^[\\]\\\\\\r\\n]|\\\\.|\\[(?:[^[\\]\\\\\\r\\n]|\\\\.)*\\])*\\])*\\]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source + \")\" + // lookahead\n        /(?=(?:\\s|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/)*(?:$|[\\r\\n,.;:})\\]]|\\/\\/))/.source),\n        lookbehind: true,\n        greedy: true,\n        inside: {\n            \"regex-source\": {\n                pattern: /^(\\/)[\\s\\S]+(?=\\/[a-z]*$)/,\n                lookbehind: true,\n                alias: \"language-regex\",\n                inside: $1feffb77eb3cfa15$var$Prism.languages.regex\n            },\n            \"regex-delimiter\": /^\\/|\\/$/,\n            \"regex-flags\": /^[a-z]+$/\n        }\n    },\n    // This must be declared before keyword because we use \"function\" inside the look-forward\n    \"function-variable\": {\n        pattern: /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*[=:]\\s*(?:async\\s*)?(?:\\bfunction\\b|(?:\\((?:[^()]|\\([^()]*\\))*\\)|(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)\\s*=>))/,\n        alias: \"function\"\n    },\n    \"parameter\": [\n        {\n            pattern: /(function(?:\\s+(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)?\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\))/,\n            lookbehind: true,\n            inside: $1feffb77eb3cfa15$var$Prism.languages.javascript\n        },\n        {\n            pattern: /(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$a-z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*=>)/i,\n            lookbehind: true,\n            inside: $1feffb77eb3cfa15$var$Prism.languages.javascript\n        },\n        {\n            pattern: /(\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*=>)/,\n            lookbehind: true,\n            inside: $1feffb77eb3cfa15$var$Prism.languages.javascript\n        },\n        {\n            pattern: /((?:\\b|\\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\\w\\xA0-\\uFFFF]))(?:(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*\\s*)\\(\\s*|\\]\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*\\{)/,\n            lookbehind: true,\n            inside: $1feffb77eb3cfa15$var$Prism.languages.javascript\n        }\n    ],\n    \"constant\": /\\b[A-Z](?:[A-Z_]|\\dx?)*\\b/\n});\n$1feffb77eb3cfa15$var$Prism.languages.insertBefore(\"javascript\", \"string\", {\n    \"hashbang\": {\n        pattern: /^#!.*/,\n        greedy: true,\n        alias: \"comment\"\n    },\n    \"template-string\": {\n        pattern: /`(?:\\\\[\\s\\S]|\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}|(?!\\$\\{)[^\\\\`])*`/,\n        greedy: true,\n        inside: {\n            \"template-punctuation\": {\n                pattern: /^`|`$/,\n                alias: \"string\"\n            },\n            \"interpolation\": {\n                pattern: /((?:^|[^\\\\])(?:\\\\{2})*)\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}/,\n                lookbehind: true,\n                inside: {\n                    \"interpolation-punctuation\": {\n                        pattern: /^\\$\\{|\\}$/,\n                        alias: \"punctuation\"\n                    },\n                    rest: $1feffb77eb3cfa15$var$Prism.languages.javascript\n                }\n            },\n            \"string\": /[\\s\\S]+/\n        }\n    },\n    \"string-property\": {\n        pattern: /((?:^|[,{])[ \\t]*)([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\2)[^\\\\\\r\\n])*\\2(?=\\s*:)/m,\n        lookbehind: true,\n        greedy: true,\n        alias: \"property\"\n    }\n});\n$1feffb77eb3cfa15$var$Prism.languages.insertBefore(\"javascript\", \"operator\", {\n    \"literal-property\": {\n        pattern: /((?:^|[,{])[ \\t]*)(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*:)/m,\n        lookbehind: true,\n        alias: \"property\"\n    }\n});\nif ($1feffb77eb3cfa15$var$Prism.languages.markup) {\n    $1feffb77eb3cfa15$var$Prism.languages.markup.tag.addInlined(\"script\", \"javascript\");\n    // add attribute support for all DOM events.\n    // https://developer.mozilla.org/en-US/docs/Web/Events#Standard_events\n    $1feffb77eb3cfa15$var$Prism.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source, \"javascript\");\n}\n$1feffb77eb3cfa15$var$Prism.languages.js = $1feffb77eb3cfa15$var$Prism.languages.javascript;\n/* **********************************************\n     Begin prism-file-highlight.js\n********************************************** */ (function() {\n    if (typeof $1feffb77eb3cfa15$var$Prism === \"undefined\" || typeof document === \"undefined\") return;\n    // https://developer.mozilla.org/en-US/docs/Web/API/Element/matches#Polyfill\n    if (!Element.prototype.matches) Element.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\n    var LOADING_MESSAGE = \"Loading\\u2026\";\n    var FAILURE_MESSAGE = function(status, message) {\n        return \"\\u2716 Error \" + status + \" while fetching file: \" + message;\n    };\n    var FAILURE_EMPTY_MESSAGE = \"\\u2716 Error: File does not exist or is empty\";\n    var EXTENSIONS = {\n        \"js\": \"javascript\",\n        \"py\": \"python\",\n        \"rb\": \"ruby\",\n        \"ps1\": \"powershell\",\n        \"psm1\": \"powershell\",\n        \"sh\": \"bash\",\n        \"bat\": \"batch\",\n        \"h\": \"c\",\n        \"tex\": \"latex\"\n    };\n    var STATUS_ATTR = \"data-src-status\";\n    var STATUS_LOADING = \"loading\";\n    var STATUS_LOADED = \"loaded\";\n    var STATUS_FAILED = \"failed\";\n    var SELECTOR = \"pre[data-src]:not([\" + STATUS_ATTR + '=\"' + STATUS_LOADED + '\"])' + \":not([\" + STATUS_ATTR + '=\"' + STATUS_LOADING + '\"])';\n    /**\n\t * Loads the given file.\n\t *\n\t * @param {string} src The URL or path of the source file to load.\n\t * @param {(result: string) => void} success\n\t * @param {(reason: string) => void} error\n\t */ function loadFile(src, success, error) {\n        var xhr = new XMLHttpRequest();\n        xhr.open(\"GET\", src, true);\n        xhr.onreadystatechange = function() {\n            if (xhr.readyState == 4) {\n                if (xhr.status < 400 && xhr.responseText) success(xhr.responseText);\n                else if (xhr.status >= 400) error(FAILURE_MESSAGE(xhr.status, xhr.statusText));\n                else error(FAILURE_EMPTY_MESSAGE);\n            }\n        };\n        xhr.send(null);\n    }\n    /**\n\t * Parses the given range.\n\t *\n\t * This returns a range with inclusive ends.\n\t *\n\t * @param {string | null | undefined} range\n\t * @returns {[number, number | undefined] | undefined}\n\t */ function parseRange(range) {\n        var m = /^\\s*(\\d+)\\s*(?:(,)\\s*(?:(\\d+)\\s*)?)?$/.exec(range || \"\");\n        if (m) {\n            var start = Number(m[1]);\n            var comma = m[2];\n            var end = m[3];\n            if (!comma) return [\n                start,\n                start\n            ];\n            if (!end) return [\n                start,\n                undefined\n            ];\n            return [\n                start,\n                Number(end)\n            ];\n        }\n        return undefined;\n    }\n    $1feffb77eb3cfa15$var$Prism.hooks.add(\"before-highlightall\", function(env) {\n        env.selector += \", \" + SELECTOR;\n    });\n    $1feffb77eb3cfa15$var$Prism.hooks.add(\"before-sanity-check\", function(env) {\n        var pre = /** @type {HTMLPreElement} */ env.element;\n        if (pre.matches(SELECTOR)) {\n            env.code = \"\"; // fast-path the whole thing and go to complete\n            pre.setAttribute(STATUS_ATTR, STATUS_LOADING); // mark as loading\n            // add code element with loading message\n            var code = pre.appendChild(document.createElement(\"CODE\"));\n            code.textContent = LOADING_MESSAGE;\n            var src = pre.getAttribute(\"data-src\");\n            var language = env.language;\n            if (language === \"none\") {\n                // the language might be 'none' because there is no language set;\n                // in this case, we want to use the extension as the language\n                var extension = (/\\.(\\w+)$/.exec(src) || [\n                    ,\n                    \"none\"\n                ])[1];\n                language = EXTENSIONS[extension] || extension;\n            }\n            // set language classes\n            $1feffb77eb3cfa15$var$Prism.util.setLanguage(code, language);\n            $1feffb77eb3cfa15$var$Prism.util.setLanguage(pre, language);\n            // preload the language\n            var autoloader = $1feffb77eb3cfa15$var$Prism.plugins.autoloader;\n            if (autoloader) autoloader.loadLanguages(language);\n            // load file\n            loadFile(src, function(text) {\n                // mark as loaded\n                pre.setAttribute(STATUS_ATTR, STATUS_LOADED);\n                // handle data-range\n                var range = parseRange(pre.getAttribute(\"data-range\"));\n                if (range) {\n                    var lines = text.split(/\\r\\n?|\\n/g);\n                    // the range is one-based and inclusive on both ends\n                    var start = range[0];\n                    var end = range[1] == null ? lines.length : range[1];\n                    if (start < 0) start += lines.length;\n                    start = Math.max(0, Math.min(start - 1, lines.length));\n                    if (end < 0) end += lines.length;\n                    end = Math.max(0, Math.min(end, lines.length));\n                    text = lines.slice(start, end).join(\"\\n\");\n                    // add data-start for line numbers\n                    if (!pre.hasAttribute(\"data-start\")) pre.setAttribute(\"data-start\", String(start + 1));\n                }\n                // highlight code\n                code.textContent = text;\n                $1feffb77eb3cfa15$var$Prism.highlightElement(code);\n            }, function(error) {\n                // mark as failed\n                pre.setAttribute(STATUS_ATTR, STATUS_FAILED);\n                code.textContent = error;\n            });\n        }\n    });\n    $1feffb77eb3cfa15$var$Prism.plugins.fileHighlight = {\n        /**\n\t\t * Executes the File Highlight plugin for all matching `pre` elements under the given container.\n\t\t *\n\t\t * Note: Elements which are already loaded or currently loading will not be touched by this method.\n\t\t *\n\t\t * @param {ParentNode} [container=document]\n\t\t */ highlight: function highlight(container) {\n            var elements = (container || document).querySelectorAll(SELECTOR);\n            for(var i = 0, element; element = elements[i++];)$1feffb77eb3cfa15$var$Prism.highlightElement(element);\n        }\n    };\n    var logged = false;\n    /** @deprecated Use `Prism.plugins.fileHighlight.highlight` instead. */ $1feffb77eb3cfa15$var$Prism.fileHighlight = function() {\n        if (!logged) {\n            console.warn(\"Prism.fileHighlight is deprecated. Use `Prism.plugins.fileHighlight.highlight` instead.\");\n            logged = true;\n        }\n        $1feffb77eb3cfa15$var$Prism.plugins.fileHighlight.highlight.apply(this, arguments);\n    };\n})();\n\n\n(function(Prism1) {\n    // $ set | grep '^[A-Z][^[:space:]]*=' | cut -d= -f1 | tr '\\n' '|'\n    // + LC_ALL, RANDOM, REPLY, SECONDS.\n    // + make sure PS1..4 are here as they are not always set,\n    // - some useless things.\n    var envVars = \"\\\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\\\b\";\n    var commandAfterHeredoc = {\n        pattern: /(^([\"']?)\\w+\\2)[ \\t]+\\S.*/,\n        lookbehind: true,\n        alias: \"punctuation\",\n        inside: null // see below\n    };\n    var insideString = {\n        \"bash\": commandAfterHeredoc,\n        \"environment\": {\n            pattern: RegExp(\"\\\\$\" + envVars),\n            alias: \"constant\"\n        },\n        \"variable\": [\n            // [0]: Arithmetic Environment\n            {\n                pattern: /\\$?\\(\\([\\s\\S]+?\\)\\)/,\n                greedy: true,\n                inside: {\n                    // If there is a $ sign at the beginning highlight $(( and )) as variable\n                    \"variable\": [\n                        {\n                            pattern: /(^\\$\\(\\([\\s\\S]+)\\)\\)/,\n                            lookbehind: true\n                        },\n                        /^\\$\\(\\(/\n                    ],\n                    \"number\": /\\b0x[\\dA-Fa-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:[Ee]-?\\d+)?/,\n                    // Operators according to https://www.gnu.org/software/bash/manual/bashref.html#Shell-Arithmetic\n                    \"operator\": /--|\\+\\+|\\*\\*=?|<<=?|>>=?|&&|\\|\\||[=!+\\-*/%<>^&|]=?|[?~:]/,\n                    // If there is no $ sign at the beginning highlight (( and )) as punctuation\n                    \"punctuation\": /\\(\\(?|\\)\\)?|,|;/\n                }\n            },\n            // [1]: Command Substitution\n            {\n                pattern: /\\$\\((?:\\([^)]+\\)|[^()])+\\)|`[^`]+`/,\n                greedy: true,\n                inside: {\n                    \"variable\": /^\\$\\(|^`|\\)$|`$/\n                }\n            },\n            // [2]: Brace expansion\n            {\n                pattern: /\\$\\{[^}]+\\}/,\n                greedy: true,\n                inside: {\n                    \"operator\": /:[-=?+]?|[!\\/]|##?|%%?|\\^\\^?|,,?/,\n                    \"punctuation\": /[\\[\\]]/,\n                    \"environment\": {\n                        pattern: RegExp(\"(\\\\{)\" + envVars),\n                        lookbehind: true,\n                        alias: \"constant\"\n                    }\n                }\n            },\n            /\\$(?:\\w+|[#?*!@$])/\n        ],\n        // Escape sequences from echo and printf's manuals, and escaped quotes.\n        \"entity\": /\\\\(?:[abceEfnrtv\\\\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/\n    };\n    Prism1.languages.bash = {\n        \"shebang\": {\n            pattern: /^#!\\s*\\/.*/,\n            alias: \"important\"\n        },\n        \"comment\": {\n            pattern: /(^|[^\"{\\\\$])#.*/,\n            lookbehind: true\n        },\n        \"function-name\": [\n            // a) function foo {\n            // b) foo() {\n            // c) function foo() {\n            // but not “foo {”\n            {\n                // a) and c)\n                pattern: /(\\bfunction\\s+)[\\w-]+(?=(?:\\s*\\(?:\\s*\\))?\\s*\\{)/,\n                lookbehind: true,\n                alias: \"function\"\n            },\n            {\n                // b)\n                pattern: /\\b[\\w-]+(?=\\s*\\(\\s*\\)\\s*\\{)/,\n                alias: \"function\"\n            }\n        ],\n        // Highlight variable names as variables in for and select beginnings.\n        \"for-or-select\": {\n            pattern: /(\\b(?:for|select)\\s+)\\w+(?=\\s+in\\s)/,\n            alias: \"variable\",\n            lookbehind: true\n        },\n        // Highlight variable names as variables in the left-hand part\n        // of assignments (“=” and “+=”).\n        \"assign-left\": {\n            pattern: /(^|[\\s;|&]|[<>]\\()\\w+(?:\\.\\w+)*(?=\\+?=)/,\n            inside: {\n                \"environment\": {\n                    pattern: RegExp(\"(^|[\\\\s;|&]|[<>]\\\\()\" + envVars),\n                    lookbehind: true,\n                    alias: \"constant\"\n                }\n            },\n            alias: \"variable\",\n            lookbehind: true\n        },\n        // Highlight parameter names as variables\n        \"parameter\": {\n            pattern: /(^|\\s)-{1,2}(?:\\w+:[+-]?)?\\w+(?:\\.\\w+)*(?=[=\\s]|$)/,\n            alias: \"variable\",\n            lookbehind: true\n        },\n        \"string\": [\n            // Support for Here-documents https://en.wikipedia.org/wiki/Here_document\n            {\n                pattern: /((?:^|[^<])<<-?\\s*)(\\w+)\\s[\\s\\S]*?(?:\\r?\\n|\\r)\\2/,\n                lookbehind: true,\n                greedy: true,\n                inside: insideString\n            },\n            // Here-document with quotes around the tag\n            // → No expansion (so no “inside”).\n            {\n                pattern: /((?:^|[^<])<<-?\\s*)([\"'])(\\w+)\\2\\s[\\s\\S]*?(?:\\r?\\n|\\r)\\3/,\n                lookbehind: true,\n                greedy: true,\n                inside: {\n                    \"bash\": commandAfterHeredoc\n                }\n            },\n            // “Normal” string\n            {\n                // https://www.gnu.org/software/bash/manual/html_node/Double-Quotes.html\n                pattern: /(^|[^\\\\](?:\\\\\\\\)*)\"(?:\\\\[\\s\\S]|\\$\\([^)]+\\)|\\$(?!\\()|`[^`]+`|[^\"\\\\`$])*\"/,\n                lookbehind: true,\n                greedy: true,\n                inside: insideString\n            },\n            {\n                // https://www.gnu.org/software/bash/manual/html_node/Single-Quotes.html\n                pattern: /(^|[^$\\\\])'[^']*'/,\n                lookbehind: true,\n                greedy: true\n            },\n            {\n                // https://www.gnu.org/software/bash/manual/html_node/ANSI_002dC-Quoting.html\n                pattern: /\\$'(?:[^'\\\\]|\\\\[\\s\\S])*'/,\n                greedy: true,\n                inside: {\n                    \"entity\": insideString.entity\n                }\n            }\n        ],\n        \"environment\": {\n            pattern: RegExp(\"\\\\$?\" + envVars),\n            alias: \"constant\"\n        },\n        \"variable\": insideString.variable,\n        \"function\": {\n            pattern: /(^|[\\s;|&]|[<>]\\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cargo|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|java|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|sysctl|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\\s;|&])/,\n            lookbehind: true\n        },\n        \"keyword\": {\n            pattern: /(^|[\\s;|&]|[<>]\\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\\s;|&])/,\n            lookbehind: true\n        },\n        // https://www.gnu.org/software/bash/manual/html_node/Shell-Builtin-Commands.html\n        \"builtin\": {\n            pattern: /(^|[\\s;|&]|[<>]\\()(?:\\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\\s;|&])/,\n            lookbehind: true,\n            // Alias added to make those easier to distinguish from strings.\n            alias: \"class-name\"\n        },\n        \"boolean\": {\n            pattern: /(^|[\\s;|&]|[<>]\\()(?:false|true)(?=$|[)\\s;|&])/,\n            lookbehind: true\n        },\n        \"file-descriptor\": {\n            pattern: /\\B&\\d\\b/,\n            alias: \"important\"\n        },\n        \"operator\": {\n            // Lots of redirections here, but not just that.\n            pattern: /\\d?<>|>\\||\\+=|=[=~]?|!=?|<<[<-]?|[&\\d]?>>|\\d[<>]&?|[<>][&=]?|&[>&]?|\\|[&|]?/,\n            inside: {\n                \"file-descriptor\": {\n                    pattern: /^\\d/,\n                    alias: \"important\"\n                }\n            }\n        },\n        \"punctuation\": /\\$?\\(\\(?|\\)\\)?|\\.\\.|[{}[\\];\\\\]/,\n        \"number\": {\n            pattern: /(^|\\s)(?:[1-9]\\d*|0)(?:[.,]\\d+)?\\b/,\n            lookbehind: true\n        }\n    };\n    commandAfterHeredoc.inside = Prism1.languages.bash;\n    /* Patterns in command substitution. */ var toBeCopied = [\n        \"comment\",\n        \"function-name\",\n        \"for-or-select\",\n        \"assign-left\",\n        \"parameter\",\n        \"string\",\n        \"environment\",\n        \"function\",\n        \"keyword\",\n        \"builtin\",\n        \"boolean\",\n        \"file-descriptor\",\n        \"operator\",\n        \"punctuation\",\n        \"number\"\n    ];\n    var inside = insideString.variable[1].inside;\n    for(var i = 0; i < toBeCopied.length; i++)inside[toBeCopied[i]] = Prism1.languages.bash[toBeCopied[i]];\n    Prism1.languages.sh = Prism1.languages.bash;\n    Prism1.languages.shell = Prism1.languages.bash;\n})(Prism);\n\n\n(function() {\n    if (typeof Prism === \"undefined\" || typeof document === \"undefined\") return;\n    /**\n\t * Plugin name which is used as a class name for <pre> which is activating the plugin\n\t *\n\t * @type {string}\n\t */ var PLUGIN_NAME = \"line-numbers\";\n    /**\n\t * Regular expression used for determining line breaks\n\t *\n\t * @type {RegExp}\n\t */ var NEW_LINE_EXP = /\\n(?!$)/g;\n    /**\n\t * Global exports\n\t */ var config = Prism.plugins.lineNumbers = {\n        /**\n\t\t * Get node for provided line number\n\t\t *\n\t\t * @param {Element} element pre element\n\t\t * @param {number} number line number\n\t\t * @returns {Element|undefined}\n\t\t */ getLine: function(element, number) {\n            if (element.tagName !== \"PRE\" || !element.classList.contains(PLUGIN_NAME)) return;\n            var lineNumberRows = element.querySelector(\".line-numbers-rows\");\n            if (!lineNumberRows) return;\n            var lineNumberStart = parseInt(element.getAttribute(\"data-start\"), 10) || 1;\n            var lineNumberEnd = lineNumberStart + (lineNumberRows.children.length - 1);\n            if (number < lineNumberStart) number = lineNumberStart;\n            if (number > lineNumberEnd) number = lineNumberEnd;\n            var lineIndex = number - lineNumberStart;\n            return lineNumberRows.children[lineIndex];\n        },\n        /**\n\t\t * Resizes the line numbers of the given element.\n\t\t *\n\t\t * This function will not add line numbers. It will only resize existing ones.\n\t\t *\n\t\t * @param {HTMLElement} element A `<pre>` element with line numbers.\n\t\t * @returns {void}\n\t\t */ resize: function(element) {\n            resizeElements([\n                element\n            ]);\n        },\n        /**\n\t\t * Whether the plugin can assume that the units font sizes and margins are not depended on the size of\n\t\t * the current viewport.\n\t\t *\n\t\t * Setting this to `true` will allow the plugin to do certain optimizations for better performance.\n\t\t *\n\t\t * Set this to `false` if you use any of the following CSS units: `vh`, `vw`, `vmin`, `vmax`.\n\t\t *\n\t\t * @type {boolean}\n\t\t */ assumeViewportIndependence: true\n    };\n    /**\n\t * Resizes the given elements.\n\t *\n\t * @param {HTMLElement[]} elements\n\t */ function resizeElements(elements) {\n        elements = elements.filter(function(e) {\n            var codeStyles = getStyles(e);\n            var whiteSpace = codeStyles[\"white-space\"];\n            return whiteSpace === \"pre-wrap\" || whiteSpace === \"pre-line\";\n        });\n        if (elements.length == 0) return;\n        var infos = elements.map(function(element) {\n            var codeElement = element.querySelector(\"code\");\n            var lineNumbersWrapper = element.querySelector(\".line-numbers-rows\");\n            if (!codeElement || !lineNumbersWrapper) return undefined;\n            /** @type {HTMLElement} */ var lineNumberSizer = element.querySelector(\".line-numbers-sizer\");\n            var codeLines = codeElement.textContent.split(NEW_LINE_EXP);\n            if (!lineNumberSizer) {\n                lineNumberSizer = document.createElement(\"span\");\n                lineNumberSizer.className = \"line-numbers-sizer\";\n                codeElement.appendChild(lineNumberSizer);\n            }\n            lineNumberSizer.innerHTML = \"0\";\n            lineNumberSizer.style.display = \"block\";\n            var oneLinerHeight = lineNumberSizer.getBoundingClientRect().height;\n            lineNumberSizer.innerHTML = \"\";\n            return {\n                element: element,\n                lines: codeLines,\n                lineHeights: [],\n                oneLinerHeight: oneLinerHeight,\n                sizer: lineNumberSizer\n            };\n        }).filter(Boolean);\n        infos.forEach(function(info) {\n            var lineNumberSizer = info.sizer;\n            var lines = info.lines;\n            var lineHeights = info.lineHeights;\n            var oneLinerHeight = info.oneLinerHeight;\n            lineHeights[lines.length - 1] = undefined;\n            lines.forEach(function(line, index) {\n                if (line && line.length > 1) {\n                    var e = lineNumberSizer.appendChild(document.createElement(\"span\"));\n                    e.style.display = \"block\";\n                    e.textContent = line;\n                } else lineHeights[index] = oneLinerHeight;\n            });\n        });\n        infos.forEach(function(info) {\n            var lineNumberSizer = info.sizer;\n            var lineHeights = info.lineHeights;\n            var childIndex = 0;\n            for(var i = 0; i < lineHeights.length; i++)if (lineHeights[i] === undefined) lineHeights[i] = lineNumberSizer.children[childIndex++].getBoundingClientRect().height;\n        });\n        infos.forEach(function(info) {\n            var lineNumberSizer = info.sizer;\n            var wrapper = info.element.querySelector(\".line-numbers-rows\");\n            lineNumberSizer.style.display = \"none\";\n            lineNumberSizer.innerHTML = \"\";\n            info.lineHeights.forEach(function(height, lineNumber) {\n                wrapper.children[lineNumber].style.height = height + \"px\";\n            });\n        });\n    }\n    /**\n\t * Returns style declarations for the element\n\t *\n\t * @param {Element} element\n\t */ function getStyles(element) {\n        if (!element) return null;\n        return window.getComputedStyle ? getComputedStyle(element) : element.currentStyle || null;\n    }\n    var lastWidth = undefined;\n    window.addEventListener(\"resize\", function() {\n        if (config.assumeViewportIndependence && lastWidth === window.innerWidth) return;\n        lastWidth = window.innerWidth;\n        resizeElements(Array.prototype.slice.call(document.querySelectorAll(\"pre.\" + PLUGIN_NAME)));\n    });\n    Prism.hooks.add(\"complete\", function(env) {\n        if (!env.code) return;\n        var code = /** @type {Element} */ env.element;\n        var pre = /** @type {HTMLElement} */ code.parentNode;\n        // works only for <code> wrapped inside <pre> (not inline)\n        if (!pre || !/pre/i.test(pre.nodeName)) return;\n        // Abort if line numbers already exists\n        if (code.querySelector(\".line-numbers-rows\")) return;\n        // only add line numbers if <code> or one of its ancestors has the `line-numbers` class\n        if (!Prism.util.isActive(code, PLUGIN_NAME)) return;\n        // Remove the class 'line-numbers' from the <code>\n        code.classList.remove(PLUGIN_NAME);\n        // Add the class 'line-numbers' to the <pre>\n        pre.classList.add(PLUGIN_NAME);\n        var match = env.code.match(NEW_LINE_EXP);\n        var linesNum = match ? match.length + 1 : 1;\n        var lineNumbersWrapper;\n        var lines = new Array(linesNum + 1).join(\"<span></span>\");\n        lineNumbersWrapper = document.createElement(\"span\");\n        lineNumbersWrapper.setAttribute(\"aria-hidden\", \"true\");\n        lineNumbersWrapper.className = \"line-numbers-rows\";\n        lineNumbersWrapper.innerHTML = lines;\n        if (pre.hasAttribute(\"data-start\")) pre.style.counterReset = \"linenumber \" + (parseInt(pre.getAttribute(\"data-start\"), 10) - 1);\n        env.element.appendChild(lineNumbersWrapper);\n        resizeElements([\n            pre\n        ]);\n        Prism.hooks.run(\"line-numbers\", env);\n    });\n    Prism.hooks.add(\"line-numbers\", function(env) {\n        env.plugins = env.plugins || {};\n        env.plugins.lineNumbers = true;\n    });\n})();\n\n\n/**\n * Swiper 10.1.0\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2023 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: August 1, 2023\n */ /**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */ /* eslint-disable no-param-reassign */ function $768c2f4c151a0363$var$isObject(obj) {\n    return obj !== null && typeof obj === \"object\" && \"constructor\" in obj && obj.constructor === Object;\n}\nfunction $768c2f4c151a0363$var$extend(target, src) {\n    if (target === void 0) target = {};\n    if (src === void 0) src = {};\n    Object.keys(src).forEach((key)=>{\n        if (typeof target[key] === \"undefined\") target[key] = src[key];\n        else if ($768c2f4c151a0363$var$isObject(src[key]) && $768c2f4c151a0363$var$isObject(target[key]) && Object.keys(src[key]).length > 0) $768c2f4c151a0363$var$extend(target[key], src[key]);\n    });\n}\nconst $768c2f4c151a0363$var$ssrDocument = {\n    body: {},\n    addEventListener () {},\n    removeEventListener () {},\n    activeElement: {\n        blur () {},\n        nodeName: \"\"\n    },\n    querySelector () {\n        return null;\n    },\n    querySelectorAll () {\n        return [];\n    },\n    getElementById () {\n        return null;\n    },\n    createEvent () {\n        return {\n            initEvent () {}\n        };\n    },\n    createElement () {\n        return {\n            children: [],\n            childNodes: [],\n            style: {},\n            setAttribute () {},\n            getElementsByTagName () {\n                return [];\n            }\n        };\n    },\n    createElementNS () {\n        return {};\n    },\n    importNode () {\n        return null;\n    },\n    location: {\n        hash: \"\",\n        host: \"\",\n        hostname: \"\",\n        href: \"\",\n        origin: \"\",\n        pathname: \"\",\n        protocol: \"\",\n        search: \"\"\n    }\n};\nfunction $768c2f4c151a0363$export$39b482c5e57630a8() {\n    const doc = typeof document !== \"undefined\" ? document : {};\n    $768c2f4c151a0363$var$extend(doc, $768c2f4c151a0363$var$ssrDocument);\n    return doc;\n}\nconst $768c2f4c151a0363$var$ssrWindow = {\n    document: $768c2f4c151a0363$var$ssrDocument,\n    navigator: {\n        userAgent: \"\"\n    },\n    location: {\n        hash: \"\",\n        host: \"\",\n        hostname: \"\",\n        href: \"\",\n        origin: \"\",\n        pathname: \"\",\n        protocol: \"\",\n        search: \"\"\n    },\n    history: {\n        replaceState () {},\n        pushState () {},\n        go () {},\n        back () {}\n    },\n    CustomEvent: function CustomEvent() {\n        return this;\n    },\n    addEventListener () {},\n    removeEventListener () {},\n    getComputedStyle () {\n        return {\n            getPropertyValue () {\n                return \"\";\n            }\n        };\n    },\n    Image () {},\n    Date () {},\n    screen: {},\n    setTimeout () {},\n    clearTimeout () {},\n    matchMedia () {\n        return {};\n    },\n    requestAnimationFrame (callback) {\n        if (typeof setTimeout === \"undefined\") {\n            callback();\n            return null;\n        }\n        return setTimeout(callback, 0);\n    },\n    cancelAnimationFrame (id) {\n        if (typeof setTimeout === \"undefined\") return;\n        clearTimeout(id);\n    }\n};\nfunction $768c2f4c151a0363$export$407448d2b89b1813() {\n    const win = typeof window !== \"undefined\" ? window : {};\n    $768c2f4c151a0363$var$extend(win, $768c2f4c151a0363$var$ssrWindow);\n    return win;\n}\n\n\n\nfunction $3e0e2b092da8f124$export$43caf9889c228507(obj) {\n    const object = obj;\n    Object.keys(object).forEach((key)=>{\n        try {\n            object[key] = null;\n        } catch (e) {\n        // no getter for object\n        }\n        try {\n            delete object[key];\n        } catch (e) {\n        // something got wrong\n        }\n    });\n}\nfunction $3e0e2b092da8f124$export$7ccc53e8f1e7dfc5(callback, delay) {\n    if (delay === void 0) delay = 0;\n    return setTimeout(callback, delay);\n}\nfunction $3e0e2b092da8f124$export$4368d992c4eafac0() {\n    return Date.now();\n}\nfunction $3e0e2b092da8f124$var$getComputedStyle(el) {\n    const window1 = (0, $768c2f4c151a0363$export$407448d2b89b1813)();\n    let style;\n    if (window1.getComputedStyle) style = window1.getComputedStyle(el, null);\n    if (!style && el.currentStyle) style = el.currentStyle;\n    if (!style) style = el.style;\n    return style;\n}\nfunction $3e0e2b092da8f124$export$dda1d9f60106f0e9(el, axis) {\n    if (axis === void 0) axis = \"x\";\n    const window1 = (0, $768c2f4c151a0363$export$407448d2b89b1813)();\n    let matrix;\n    let curTransform;\n    let transformMatrix;\n    const curStyle = $3e0e2b092da8f124$var$getComputedStyle(el);\n    if (window1.WebKitCSSMatrix) {\n        curTransform = curStyle.transform || curStyle.webkitTransform;\n        if (curTransform.split(\",\").length > 6) curTransform = curTransform.split(\", \").map((a)=>a.replace(\",\", \".\")).join(\", \");\n        // Some old versions of Webkit choke when 'none' is passed; pass\n        // empty string instead in this case\n        transformMatrix = new window1.WebKitCSSMatrix(curTransform === \"none\" ? \"\" : curTransform);\n    } else {\n        transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue(\"transform\").replace(\"translate(\", \"matrix(1, 0, 0, 1,\");\n        matrix = transformMatrix.toString().split(\",\");\n    }\n    if (axis === \"x\") {\n        // Latest Chrome and webkits Fix\n        if (window1.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n        else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n        else curTransform = parseFloat(matrix[4]);\n    }\n    if (axis === \"y\") {\n        // Latest Chrome and webkits Fix\n        if (window1.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n        else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n        else curTransform = parseFloat(matrix[5]);\n    }\n    return curTransform || 0;\n}\nfunction $3e0e2b092da8f124$export$35e795649ee09318(o) {\n    return typeof o === \"object\" && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === \"Object\";\n}\nfunction $3e0e2b092da8f124$var$isNode(node) {\n    // eslint-disable-next-line\n    if (typeof window !== \"undefined\" && typeof window.HTMLElement !== \"undefined\") return node instanceof HTMLElement;\n    return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction $3e0e2b092da8f124$export$9e5f44173e64f162() {\n    const to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n    const noExtend = [\n        \"__proto__\",\n        \"constructor\",\n        \"prototype\"\n    ];\n    for(let i = 1; i < arguments.length; i += 1){\n        const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\n        if (nextSource !== undefined && nextSource !== null && !$3e0e2b092da8f124$var$isNode(nextSource)) {\n            const keysArray = Object.keys(Object(nextSource)).filter((key)=>noExtend.indexOf(key) < 0);\n            for(let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1){\n                const nextKey = keysArray[nextIndex];\n                const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n                if (desc !== undefined && desc.enumerable) {\n                    if ($3e0e2b092da8f124$export$35e795649ee09318(to[nextKey]) && $3e0e2b092da8f124$export$35e795649ee09318(nextSource[nextKey])) {\n                        if (nextSource[nextKey].__swiper__) to[nextKey] = nextSource[nextKey];\n                        else $3e0e2b092da8f124$export$9e5f44173e64f162(to[nextKey], nextSource[nextKey]);\n                    } else if (!$3e0e2b092da8f124$export$35e795649ee09318(to[nextKey]) && $3e0e2b092da8f124$export$35e795649ee09318(nextSource[nextKey])) {\n                        to[nextKey] = {};\n                        if (nextSource[nextKey].__swiper__) to[nextKey] = nextSource[nextKey];\n                        else $3e0e2b092da8f124$export$9e5f44173e64f162(to[nextKey], nextSource[nextKey]);\n                    } else to[nextKey] = nextSource[nextKey];\n                }\n            }\n        }\n    }\n    return to;\n}\nfunction $3e0e2b092da8f124$export$2408f22a0fab9ae5(el, varName, varValue) {\n    el.style.setProperty(varName, varValue);\n}\nfunction $3e0e2b092da8f124$export$ffb5f4729a158638(_ref) {\n    let { swiper: swiper, targetPosition: targetPosition, side: side } = _ref;\n    const window1 = (0, $768c2f4c151a0363$export$407448d2b89b1813)();\n    const startPosition = -swiper.translate;\n    let startTime = null;\n    let time;\n    const duration = swiper.params.speed;\n    swiper.wrapperEl.style.scrollSnapType = \"none\";\n    window1.cancelAnimationFrame(swiper.cssModeFrameID);\n    const dir = targetPosition > startPosition ? \"next\" : \"prev\";\n    const isOutOfBound = (current, target)=>{\n        return dir === \"next\" && current >= target || dir === \"prev\" && current <= target;\n    };\n    const animate = ()=>{\n        time = new Date().getTime();\n        if (startTime === null) startTime = time;\n        const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n        const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n        let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n        if (isOutOfBound(currentPosition, targetPosition)) currentPosition = targetPosition;\n        swiper.wrapperEl.scrollTo({\n            [side]: currentPosition\n        });\n        if (isOutOfBound(currentPosition, targetPosition)) {\n            swiper.wrapperEl.style.overflow = \"hidden\";\n            swiper.wrapperEl.style.scrollSnapType = \"\";\n            setTimeout(()=>{\n                swiper.wrapperEl.style.overflow = \"\";\n                swiper.wrapperEl.scrollTo({\n                    [side]: currentPosition\n                });\n            });\n            window1.cancelAnimationFrame(swiper.cssModeFrameID);\n            return;\n        }\n        swiper.cssModeFrameID = window1.requestAnimationFrame(animate);\n    };\n    animate();\n}\nfunction $3e0e2b092da8f124$export$342063e11d6c3cad(slideEl) {\n    return slideEl.querySelector(\".swiper-slide-transform\") || slideEl.shadowRoot && slideEl.shadowRoot.querySelector(\".swiper-slide-transform\") || slideEl;\n}\nfunction $3e0e2b092da8f124$export$f1e1789686576879(element, selector) {\n    if (selector === void 0) selector = \"\";\n    return [\n        ...element.children\n    ].filter((el)=>el.matches(selector));\n}\nfunction $3e0e2b092da8f124$export$db3b6bfb95261072(tag, classes) {\n    if (classes === void 0) classes = [];\n    const el = document.createElement(tag);\n    el.classList.add(...Array.isArray(classes) ? classes : [\n        classes\n    ]);\n    return el;\n}\nfunction $3e0e2b092da8f124$export$8b22cf2602fb60ce(el) {\n    const window1 = (0, $768c2f4c151a0363$export$407448d2b89b1813)();\n    const document1 = (0, $768c2f4c151a0363$export$39b482c5e57630a8)();\n    const box = el.getBoundingClientRect();\n    const body = document1.body;\n    const clientTop = el.clientTop || body.clientTop || 0;\n    const clientLeft = el.clientLeft || body.clientLeft || 0;\n    const scrollTop = el === window1 ? window1.scrollY : el.scrollTop;\n    const scrollLeft = el === window1 ? window1.scrollX : el.scrollLeft;\n    return {\n        top: box.top + scrollTop - clientTop,\n        left: box.left + scrollLeft - clientLeft\n    };\n}\nfunction $3e0e2b092da8f124$export$ae1af26003f05816(el, selector) {\n    const prevEls = [];\n    while(el.previousElementSibling){\n        const prev = el.previousElementSibling; // eslint-disable-line\n        if (selector) {\n            if (prev.matches(selector)) prevEls.push(prev);\n        } else prevEls.push(prev);\n        el = prev;\n    }\n    return prevEls;\n}\nfunction $3e0e2b092da8f124$export$953cecd6e717a553(el, selector) {\n    const nextEls = [];\n    while(el.nextElementSibling){\n        const next = el.nextElementSibling; // eslint-disable-line\n        if (selector) {\n            if (next.matches(selector)) nextEls.push(next);\n        } else nextEls.push(next);\n        el = next;\n    }\n    return nextEls;\n}\nfunction $3e0e2b092da8f124$export$882b5998b3b9117c(el, prop) {\n    const window1 = (0, $768c2f4c151a0363$export$407448d2b89b1813)();\n    return window1.getComputedStyle(el, null).getPropertyValue(prop);\n}\nfunction $3e0e2b092da8f124$export$39b482c5e57630a8(el) {\n    let child = el;\n    let i;\n    if (child) {\n        i = 0;\n        // eslint-disable-next-line\n        while((child = child.previousSibling) !== null)if (child.nodeType === 1) i += 1;\n        return i;\n    }\n    return undefined;\n}\nfunction $3e0e2b092da8f124$export$407448d2b89b1813(el, selector) {\n    const parents = []; // eslint-disable-line\n    let parent = el.parentElement; // eslint-disable-line\n    while(parent){\n        if (selector) {\n            if (parent.matches(selector)) parents.push(parent);\n        } else parents.push(parent);\n        parent = parent.parentElement;\n    }\n    return parents;\n}\nfunction $3e0e2b092da8f124$export$23f2a1d2818174ef(el, callback) {\n    function fireCallBack(e) {\n        if (e.target !== el) return;\n        callback.call(el, e);\n        el.removeEventListener(\"transitionend\", fireCallBack);\n    }\n    if (callback) el.addEventListener(\"transitionend\", fireCallBack);\n}\nfunction $3e0e2b092da8f124$export$2d1720544b23b823(el, size, includeMargins) {\n    const window1 = (0, $768c2f4c151a0363$export$407448d2b89b1813)();\n    if (includeMargins) return el[size === \"width\" ? \"offsetWidth\" : \"offsetHeight\"] + parseFloat(window1.getComputedStyle(el, null).getPropertyValue(size === \"width\" ? \"margin-right\" : \"margin-top\")) + parseFloat(window1.getComputedStyle(el, null).getPropertyValue(size === \"width\" ? \"margin-left\" : \"margin-bottom\"));\n    return el.offsetWidth;\n}\n\n\nlet $6946bfb4689eabba$var$support;\nfunction $6946bfb4689eabba$var$calcSupport() {\n    const window1 = (0, $768c2f4c151a0363$export$407448d2b89b1813)();\n    const document1 = (0, $768c2f4c151a0363$export$39b482c5e57630a8)();\n    return {\n        smoothScroll: document1.documentElement && document1.documentElement.style && \"scrollBehavior\" in document1.documentElement.style,\n        touch: !!(\"ontouchstart\" in window1 || window1.DocumentTouch && document1 instanceof window1.DocumentTouch)\n    };\n}\nfunction $6946bfb4689eabba$var$getSupport() {\n    if (!$6946bfb4689eabba$var$support) $6946bfb4689eabba$var$support = $6946bfb4689eabba$var$calcSupport();\n    return $6946bfb4689eabba$var$support;\n}\nlet $6946bfb4689eabba$var$deviceCached;\nfunction $6946bfb4689eabba$var$calcDevice(_temp) {\n    let { userAgent: userAgent } = _temp === void 0 ? {} : _temp;\n    const support = $6946bfb4689eabba$var$getSupport();\n    const window1 = (0, $768c2f4c151a0363$export$407448d2b89b1813)();\n    const platform = window1.navigator.platform;\n    const ua = userAgent || window1.navigator.userAgent;\n    const device = {\n        ios: false,\n        android: false\n    };\n    const screenWidth = window1.screen.width;\n    const screenHeight = window1.screen.height;\n    const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n    let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n    const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n    const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n    const windows = platform === \"Win32\";\n    let macos = platform === \"MacIntel\";\n    // iPadOs 13 fix\n    const iPadScreens = [\n        \"1024x1366\",\n        \"1366x1024\",\n        \"834x1194\",\n        \"1194x834\",\n        \"834x1112\",\n        \"1112x834\",\n        \"768x1024\",\n        \"1024x768\",\n        \"820x1180\",\n        \"1180x820\",\n        \"810x1080\",\n        \"1080x810\"\n    ];\n    if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n        ipad = ua.match(/(Version)\\/([\\d.]+)/);\n        if (!ipad) ipad = [\n            0,\n            1,\n            \"13_0_0\"\n        ];\n        macos = false;\n    }\n    // Android\n    if (android && !windows) {\n        device.os = \"android\";\n        device.android = true;\n    }\n    if (ipad || iphone || ipod) {\n        device.os = \"ios\";\n        device.ios = true;\n    }\n    // Export object\n    return device;\n}\nfunction $6946bfb4689eabba$var$getDevice(overrides) {\n    if (overrides === void 0) overrides = {};\n    if (!$6946bfb4689eabba$var$deviceCached) $6946bfb4689eabba$var$deviceCached = $6946bfb4689eabba$var$calcDevice(overrides);\n    return $6946bfb4689eabba$var$deviceCached;\n}\nlet $6946bfb4689eabba$var$browser;\nfunction $6946bfb4689eabba$var$calcBrowser() {\n    const window1 = (0, $768c2f4c151a0363$export$407448d2b89b1813)();\n    let needPerspectiveFix = false;\n    function isSafari() {\n        const ua = window1.navigator.userAgent.toLowerCase();\n        return ua.indexOf(\"safari\") >= 0 && ua.indexOf(\"chrome\") < 0 && ua.indexOf(\"android\") < 0;\n    }\n    if (isSafari()) {\n        const ua = String(window1.navigator.userAgent);\n        if (ua.includes(\"Version/\")) {\n            const [major, minor] = ua.split(\"Version/\")[1].split(\" \")[0].split(\".\").map((num)=>Number(num));\n            needPerspectiveFix = major < 16 || major === 16 && minor < 2;\n        }\n    }\n    return {\n        isSafari: needPerspectiveFix || isSafari(),\n        needPerspectiveFix: needPerspectiveFix,\n        isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window1.navigator.userAgent)\n    };\n}\nfunction $6946bfb4689eabba$var$getBrowser() {\n    if (!$6946bfb4689eabba$var$browser) $6946bfb4689eabba$var$browser = $6946bfb4689eabba$var$calcBrowser();\n    return $6946bfb4689eabba$var$browser;\n}\nfunction $6946bfb4689eabba$var$Resize(_ref) {\n    let { swiper: swiper, on: on, emit: emit } = _ref;\n    const window1 = (0, $768c2f4c151a0363$export$407448d2b89b1813)();\n    let observer = null;\n    let animationFrame = null;\n    const resizeHandler = ()=>{\n        if (!swiper || swiper.destroyed || !swiper.initialized) return;\n        emit(\"beforeResize\");\n        emit(\"resize\");\n    };\n    const createObserver = ()=>{\n        if (!swiper || swiper.destroyed || !swiper.initialized) return;\n        observer = new ResizeObserver((entries)=>{\n            animationFrame = window1.requestAnimationFrame(()=>{\n                const { width: width, height: height } = swiper;\n                let newWidth = width;\n                let newHeight = height;\n                entries.forEach((_ref2)=>{\n                    let { contentBoxSize: contentBoxSize, contentRect: contentRect, target: target } = _ref2;\n                    if (target && target !== swiper.el) return;\n                    newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n                    newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n                });\n                if (newWidth !== width || newHeight !== height) resizeHandler();\n            });\n        });\n        observer.observe(swiper.el);\n    };\n    const removeObserver = ()=>{\n        if (animationFrame) window1.cancelAnimationFrame(animationFrame);\n        if (observer && observer.unobserve && swiper.el) {\n            observer.unobserve(swiper.el);\n            observer = null;\n        }\n    };\n    const orientationChangeHandler = ()=>{\n        if (!swiper || swiper.destroyed || !swiper.initialized) return;\n        emit(\"orientationchange\");\n    };\n    on(\"init\", ()=>{\n        if (swiper.params.resizeObserver && typeof window1.ResizeObserver !== \"undefined\") {\n            createObserver();\n            return;\n        }\n        window1.addEventListener(\"resize\", resizeHandler);\n        window1.addEventListener(\"orientationchange\", orientationChangeHandler);\n    });\n    on(\"destroy\", ()=>{\n        removeObserver();\n        window1.removeEventListener(\"resize\", resizeHandler);\n        window1.removeEventListener(\"orientationchange\", orientationChangeHandler);\n    });\n}\nfunction $6946bfb4689eabba$var$Observer(_ref) {\n    let { swiper: swiper, extendParams: extendParams, on: on, emit: emit } = _ref;\n    const observers = [];\n    const window1 = (0, $768c2f4c151a0363$export$407448d2b89b1813)();\n    const attach = function(target, options) {\n        if (options === void 0) options = {};\n        const ObserverFunc = window1.MutationObserver || window1.WebkitMutationObserver;\n        const observer = new ObserverFunc((mutations)=>{\n            // The observerUpdate event should only be triggered\n            // once despite the number of mutations.  Additional\n            // triggers are redundant and are very costly\n            if (swiper.__preventObserver__) return;\n            if (mutations.length === 1) {\n                emit(\"observerUpdate\", mutations[0]);\n                return;\n            }\n            const observerUpdate = function observerUpdate() {\n                emit(\"observerUpdate\", mutations[0]);\n            };\n            if (window1.requestAnimationFrame) window1.requestAnimationFrame(observerUpdate);\n            else window1.setTimeout(observerUpdate, 0);\n        });\n        observer.observe(target, {\n            attributes: typeof options.attributes === \"undefined\" ? true : options.attributes,\n            childList: typeof options.childList === \"undefined\" ? true : options.childList,\n            characterData: typeof options.characterData === \"undefined\" ? true : options.characterData\n        });\n        observers.push(observer);\n    };\n    const init = ()=>{\n        if (!swiper.params.observer) return;\n        if (swiper.params.observeParents) {\n            const containerParents = (0, $3e0e2b092da8f124$export$407448d2b89b1813)(swiper.hostEl);\n            for(let i = 0; i < containerParents.length; i += 1)attach(containerParents[i]);\n        }\n        // Observe container\n        attach(swiper.hostEl, {\n            childList: swiper.params.observeSlideChildren\n        });\n        // Observe wrapper\n        attach(swiper.wrapperEl, {\n            attributes: false\n        });\n    };\n    const destroy = ()=>{\n        observers.forEach((observer)=>{\n            observer.disconnect();\n        });\n        observers.splice(0, observers.length);\n    };\n    extendParams({\n        observer: false,\n        observeParents: false,\n        observeSlideChildren: false\n    });\n    on(\"init\", init);\n    on(\"destroy\", destroy);\n}\n/* eslint-disable no-underscore-dangle */ var $6946bfb4689eabba$var$eventsEmitter = {\n    on (events, handler, priority) {\n        const self = this;\n        if (!self.eventsListeners || self.destroyed) return self;\n        if (typeof handler !== \"function\") return self;\n        const method = priority ? \"unshift\" : \"push\";\n        events.split(\" \").forEach((event)=>{\n            if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n            self.eventsListeners[event][method](handler);\n        });\n        return self;\n    },\n    once (events, handler, priority) {\n        const self = this;\n        if (!self.eventsListeners || self.destroyed) return self;\n        if (typeof handler !== \"function\") return self;\n        function onceHandler() {\n            self.off(events, onceHandler);\n            if (onceHandler.__emitterProxy) delete onceHandler.__emitterProxy;\n            for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++)args[_key] = arguments[_key];\n            handler.apply(self, args);\n        }\n        onceHandler.__emitterProxy = handler;\n        return self.on(events, onceHandler, priority);\n    },\n    onAny (handler, priority) {\n        const self = this;\n        if (!self.eventsListeners || self.destroyed) return self;\n        if (typeof handler !== \"function\") return self;\n        const method = priority ? \"unshift\" : \"push\";\n        if (self.eventsAnyListeners.indexOf(handler) < 0) self.eventsAnyListeners[method](handler);\n        return self;\n    },\n    offAny (handler) {\n        const self = this;\n        if (!self.eventsListeners || self.destroyed) return self;\n        if (!self.eventsAnyListeners) return self;\n        const index = self.eventsAnyListeners.indexOf(handler);\n        if (index >= 0) self.eventsAnyListeners.splice(index, 1);\n        return self;\n    },\n    off (events, handler) {\n        const self = this;\n        if (!self.eventsListeners || self.destroyed) return self;\n        if (!self.eventsListeners) return self;\n        events.split(\" \").forEach((event)=>{\n            if (typeof handler === \"undefined\") self.eventsListeners[event] = [];\n            else if (self.eventsListeners[event]) self.eventsListeners[event].forEach((eventHandler, index)=>{\n                if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) self.eventsListeners[event].splice(index, 1);\n            });\n        });\n        return self;\n    },\n    emit () {\n        const self = this;\n        if (!self.eventsListeners || self.destroyed) return self;\n        if (!self.eventsListeners) return self;\n        let events;\n        let data;\n        let context;\n        for(var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++)args[_key2] = arguments[_key2];\n        if (typeof args[0] === \"string\" || Array.isArray(args[0])) {\n            events = args[0];\n            data = args.slice(1, args.length);\n            context = self;\n        } else {\n            events = args[0].events;\n            data = args[0].data;\n            context = args[0].context || self;\n        }\n        data.unshift(context);\n        const eventsArray = Array.isArray(events) ? events : events.split(\" \");\n        eventsArray.forEach((event)=>{\n            if (self.eventsAnyListeners && self.eventsAnyListeners.length) self.eventsAnyListeners.forEach((eventHandler)=>{\n                eventHandler.apply(context, [\n                    event,\n                    ...data\n                ]);\n            });\n            if (self.eventsListeners && self.eventsListeners[event]) self.eventsListeners[event].forEach((eventHandler)=>{\n                eventHandler.apply(context, data);\n            });\n        });\n        return self;\n    }\n};\nfunction $6946bfb4689eabba$var$updateSize() {\n    const swiper = this;\n    let width;\n    let height;\n    const el = swiper.el;\n    if (typeof swiper.params.width !== \"undefined\" && swiper.params.width !== null) width = swiper.params.width;\n    else width = el.clientWidth;\n    if (typeof swiper.params.height !== \"undefined\" && swiper.params.height !== null) height = swiper.params.height;\n    else height = el.clientHeight;\n    if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) return;\n    // Subtract paddings\n    width = width - parseInt((0, $3e0e2b092da8f124$export$882b5998b3b9117c)(el, \"padding-left\") || 0, 10) - parseInt((0, $3e0e2b092da8f124$export$882b5998b3b9117c)(el, \"padding-right\") || 0, 10);\n    height = height - parseInt((0, $3e0e2b092da8f124$export$882b5998b3b9117c)(el, \"padding-top\") || 0, 10) - parseInt((0, $3e0e2b092da8f124$export$882b5998b3b9117c)(el, \"padding-bottom\") || 0, 10);\n    if (Number.isNaN(width)) width = 0;\n    if (Number.isNaN(height)) height = 0;\n    Object.assign(swiper, {\n        width: width,\n        height: height,\n        size: swiper.isHorizontal() ? width : height\n    });\n}\nfunction $6946bfb4689eabba$var$updateSlides() {\n    const swiper = this;\n    function getDirectionLabel(property) {\n        if (swiper.isHorizontal()) return property;\n        // prettier-ignore\n        return ({\n            \"width\": \"height\",\n            \"margin-top\": \"margin-left\",\n            \"margin-bottom \": \"margin-right\",\n            \"margin-left\": \"margin-top\",\n            \"margin-right\": \"margin-bottom\",\n            \"padding-left\": \"padding-top\",\n            \"padding-right\": \"padding-bottom\",\n            \"marginRight\": \"marginBottom\"\n        })[property];\n    }\n    function getDirectionPropertyValue(node, label) {\n        return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n    }\n    const params = swiper.params;\n    const { wrapperEl: wrapperEl, slidesEl: slidesEl, size: swiperSize, rtlTranslate: rtl, wrongRTL: wrongRTL } = swiper;\n    const isVirtual = swiper.virtual && params.virtual.enabled;\n    const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n    const slides = (0, $3e0e2b092da8f124$export$f1e1789686576879)(slidesEl, `.${swiper.params.slideClass}, swiper-slide`);\n    const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n    let snapGrid = [];\n    const slidesGrid = [];\n    const slidesSizesGrid = [];\n    let offsetBefore = params.slidesOffsetBefore;\n    if (typeof offsetBefore === \"function\") offsetBefore = params.slidesOffsetBefore.call(swiper);\n    let offsetAfter = params.slidesOffsetAfter;\n    if (typeof offsetAfter === \"function\") offsetAfter = params.slidesOffsetAfter.call(swiper);\n    const previousSnapGridLength = swiper.snapGrid.length;\n    const previousSlidesGridLength = swiper.slidesGrid.length;\n    let spaceBetween = params.spaceBetween;\n    let slidePosition = -offsetBefore;\n    let prevSlideSize = 0;\n    let index = 0;\n    if (typeof swiperSize === \"undefined\") return;\n    if (typeof spaceBetween === \"string\" && spaceBetween.indexOf(\"%\") >= 0) spaceBetween = parseFloat(spaceBetween.replace(\"%\", \"\")) / 100 * swiperSize;\n    else if (typeof spaceBetween === \"string\") spaceBetween = parseFloat(spaceBetween);\n    swiper.virtualSize = -spaceBetween;\n    // reset margins\n    slides.forEach((slideEl)=>{\n        if (rtl) slideEl.style.marginLeft = \"\";\n        else slideEl.style.marginRight = \"\";\n        slideEl.style.marginBottom = \"\";\n        slideEl.style.marginTop = \"\";\n    });\n    // reset cssMode offsets\n    if (params.centeredSlides && params.cssMode) {\n        (0, $3e0e2b092da8f124$export$2408f22a0fab9ae5)(wrapperEl, \"--swiper-centered-offset-before\", \"\");\n        (0, $3e0e2b092da8f124$export$2408f22a0fab9ae5)(wrapperEl, \"--swiper-centered-offset-after\", \"\");\n    }\n    const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n    if (gridEnabled) swiper.grid.initSlides(slidesLength);\n    // Calc slides\n    let slideSize;\n    const shouldResetSlideSize = params.slidesPerView === \"auto\" && params.breakpoints && Object.keys(params.breakpoints).filter((key)=>{\n        return typeof params.breakpoints[key].slidesPerView !== \"undefined\";\n    }).length > 0;\n    for(let i = 0; i < slidesLength; i += 1){\n        slideSize = 0;\n        let slide;\n        if (slides[i]) slide = slides[i];\n        if (gridEnabled) swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\n        if (slides[i] && (0, $3e0e2b092da8f124$export$882b5998b3b9117c)(slide, \"display\") === \"none\") continue; // eslint-disable-line\n        if (params.slidesPerView === \"auto\") {\n            if (shouldResetSlideSize) slides[i].style[getDirectionLabel(\"width\")] = ``;\n            const slideStyles = getComputedStyle(slide);\n            const currentTransform = slide.style.transform;\n            const currentWebKitTransform = slide.style.webkitTransform;\n            if (currentTransform) slide.style.transform = \"none\";\n            if (currentWebKitTransform) slide.style.webkitTransform = \"none\";\n            if (params.roundLengths) slideSize = swiper.isHorizontal() ? (0, $3e0e2b092da8f124$export$2d1720544b23b823)(slide, \"width\", true) : (0, $3e0e2b092da8f124$export$2d1720544b23b823)(slide, \"height\", true);\n            else {\n                // eslint-disable-next-line\n                const width = getDirectionPropertyValue(slideStyles, \"width\");\n                const paddingLeft = getDirectionPropertyValue(slideStyles, \"padding-left\");\n                const paddingRight = getDirectionPropertyValue(slideStyles, \"padding-right\");\n                const marginLeft = getDirectionPropertyValue(slideStyles, \"margin-left\");\n                const marginRight = getDirectionPropertyValue(slideStyles, \"margin-right\");\n                const boxSizing = slideStyles.getPropertyValue(\"box-sizing\");\n                if (boxSizing && boxSizing === \"border-box\") slideSize = width + marginLeft + marginRight;\n                else {\n                    const { clientWidth: clientWidth, offsetWidth: offsetWidth } = slide;\n                    slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n                }\n            }\n            if (currentTransform) slide.style.transform = currentTransform;\n            if (currentWebKitTransform) slide.style.webkitTransform = currentWebKitTransform;\n            if (params.roundLengths) slideSize = Math.floor(slideSize);\n        } else {\n            slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n            if (params.roundLengths) slideSize = Math.floor(slideSize);\n            if (slides[i]) slides[i].style[getDirectionLabel(\"width\")] = `${slideSize}px`;\n        }\n        if (slides[i]) slides[i].swiperSlideSize = slideSize;\n        slidesSizesGrid.push(slideSize);\n        if (params.centeredSlides) {\n            slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n            if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n            if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n            if (Math.abs(slidePosition) < 0.001) slidePosition = 0;\n            if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n            if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n            slidesGrid.push(slidePosition);\n        } else {\n            if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n            if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n            slidesGrid.push(slidePosition);\n            slidePosition = slidePosition + slideSize + spaceBetween;\n        }\n        swiper.virtualSize += slideSize + spaceBetween;\n        prevSlideSize = slideSize;\n        index += 1;\n    }\n    swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n    if (rtl && wrongRTL && (params.effect === \"slide\" || params.effect === \"coverflow\")) wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`;\n    if (params.setWrapperSize) wrapperEl.style[getDirectionLabel(\"width\")] = `${swiper.virtualSize + spaceBetween}px`;\n    if (gridEnabled) swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\n    // Remove last grid elements depending on width\n    if (!params.centeredSlides) {\n        const newSlidesGrid = [];\n        for(let i = 0; i < snapGrid.length; i += 1){\n            let slidesGridItem = snapGrid[i];\n            if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n            if (snapGrid[i] <= swiper.virtualSize - swiperSize) newSlidesGrid.push(slidesGridItem);\n        }\n        snapGrid = newSlidesGrid;\n        if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) snapGrid.push(swiper.virtualSize - swiperSize);\n    }\n    if (isVirtual && params.loop) {\n        const size = slidesSizesGrid[0] + spaceBetween;\n        if (params.slidesPerGroup > 1) {\n            const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup);\n            const groupSize = size * params.slidesPerGroup;\n            for(let i = 0; i < groups; i += 1)snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize);\n        }\n        for(let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1){\n            if (params.slidesPerGroup === 1) snapGrid.push(snapGrid[snapGrid.length - 1] + size);\n            slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size);\n            swiper.virtualSize += size;\n        }\n    }\n    if (snapGrid.length === 0) snapGrid = [\n        0\n    ];\n    if (spaceBetween !== 0) {\n        const key = swiper.isHorizontal() && rtl ? \"marginLeft\" : getDirectionLabel(\"marginRight\");\n        slides.filter((_, slideIndex)=>{\n            if (!params.cssMode || params.loop) return true;\n            if (slideIndex === slides.length - 1) return false;\n            return true;\n        }).forEach((slideEl)=>{\n            slideEl.style[key] = `${spaceBetween}px`;\n        });\n    }\n    if (params.centeredSlides && params.centeredSlidesBounds) {\n        let allSlidesSize = 0;\n        slidesSizesGrid.forEach((slideSizeValue)=>{\n            allSlidesSize += slideSizeValue + (spaceBetween || 0);\n        });\n        allSlidesSize -= spaceBetween;\n        const maxSnap = allSlidesSize - swiperSize;\n        snapGrid = snapGrid.map((snap)=>{\n            if (snap <= 0) return -offsetBefore;\n            if (snap > maxSnap) return maxSnap + offsetAfter;\n            return snap;\n        });\n    }\n    if (params.centerInsufficientSlides) {\n        let allSlidesSize = 0;\n        slidesSizesGrid.forEach((slideSizeValue)=>{\n            allSlidesSize += slideSizeValue + (spaceBetween || 0);\n        });\n        allSlidesSize -= spaceBetween;\n        if (allSlidesSize < swiperSize) {\n            const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n            snapGrid.forEach((snap, snapIndex)=>{\n                snapGrid[snapIndex] = snap - allSlidesOffset;\n            });\n            slidesGrid.forEach((snap, snapIndex)=>{\n                slidesGrid[snapIndex] = snap + allSlidesOffset;\n            });\n        }\n    }\n    Object.assign(swiper, {\n        slides: slides,\n        snapGrid: snapGrid,\n        slidesGrid: slidesGrid,\n        slidesSizesGrid: slidesSizesGrid\n    });\n    if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n        (0, $3e0e2b092da8f124$export$2408f22a0fab9ae5)(wrapperEl, \"--swiper-centered-offset-before\", `${-snapGrid[0]}px`);\n        (0, $3e0e2b092da8f124$export$2408f22a0fab9ae5)(wrapperEl, \"--swiper-centered-offset-after\", `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n        const addToSnapGrid = -swiper.snapGrid[0];\n        const addToSlidesGrid = -swiper.slidesGrid[0];\n        swiper.snapGrid = swiper.snapGrid.map((v)=>v + addToSnapGrid);\n        swiper.slidesGrid = swiper.slidesGrid.map((v)=>v + addToSlidesGrid);\n    }\n    if (slidesLength !== previousSlidesLength) swiper.emit(\"slidesLengthChange\");\n    if (snapGrid.length !== previousSnapGridLength) {\n        if (swiper.params.watchOverflow) swiper.checkOverflow();\n        swiper.emit(\"snapGridLengthChange\");\n    }\n    if (slidesGrid.length !== previousSlidesGridLength) swiper.emit(\"slidesGridLengthChange\");\n    if (params.watchSlidesProgress) swiper.updateSlidesOffset();\n    if (!isVirtual && !params.cssMode && (params.effect === \"slide\" || params.effect === \"fade\")) {\n        const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n        const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass);\n        if (slidesLength <= params.maxBackfaceHiddenSlides) {\n            if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass);\n        } else if (hasClassBackfaceClassAdded) swiper.el.classList.remove(backFaceHiddenClass);\n    }\n}\nfunction $6946bfb4689eabba$var$updateAutoHeight(speed) {\n    const swiper = this;\n    const activeSlides = [];\n    const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n    let newHeight = 0;\n    let i;\n    if (typeof speed === \"number\") swiper.setTransition(speed);\n    else if (speed === true) swiper.setTransition(swiper.params.speed);\n    const getSlideByIndex = (index)=>{\n        if (isVirtual) return swiper.slides[swiper.getSlideIndexByData(index)];\n        return swiper.slides[index];\n    };\n    // Find slides currently in view\n    if (swiper.params.slidesPerView !== \"auto\" && swiper.params.slidesPerView > 1) {\n        if (swiper.params.centeredSlides) (swiper.visibleSlides || []).forEach((slide)=>{\n            activeSlides.push(slide);\n        });\n        else for(i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1){\n            const index = swiper.activeIndex + i;\n            if (index > swiper.slides.length && !isVirtual) break;\n            activeSlides.push(getSlideByIndex(index));\n        }\n    } else activeSlides.push(getSlideByIndex(swiper.activeIndex));\n    // Find new height from highest slide in view\n    for(i = 0; i < activeSlides.length; i += 1)if (typeof activeSlides[i] !== \"undefined\") {\n        const height = activeSlides[i].offsetHeight;\n        newHeight = height > newHeight ? height : newHeight;\n    }\n    // Update Height\n    if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`;\n}\nfunction $6946bfb4689eabba$var$updateSlidesOffset() {\n    const swiper = this;\n    const slides = swiper.slides;\n    // eslint-disable-next-line\n    const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0;\n    for(let i = 0; i < slides.length; i += 1)slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment();\n}\nfunction $6946bfb4689eabba$var$updateSlidesProgress(translate) {\n    if (translate === void 0) translate = this && this.translate || 0;\n    const swiper = this;\n    const params = swiper.params;\n    const { slides: slides, rtlTranslate: rtl, snapGrid: snapGrid } = swiper;\n    if (slides.length === 0) return;\n    if (typeof slides[0].swiperSlideOffset === \"undefined\") swiper.updateSlidesOffset();\n    let offsetCenter = -translate;\n    if (rtl) offsetCenter = translate;\n    // Visible Slides\n    slides.forEach((slideEl)=>{\n        slideEl.classList.remove(params.slideVisibleClass);\n    });\n    swiper.visibleSlidesIndexes = [];\n    swiper.visibleSlides = [];\n    let spaceBetween = params.spaceBetween;\n    if (typeof spaceBetween === \"string\" && spaceBetween.indexOf(\"%\") >= 0) spaceBetween = parseFloat(spaceBetween.replace(\"%\", \"\")) / 100 * swiper.size;\n    else if (typeof spaceBetween === \"string\") spaceBetween = parseFloat(spaceBetween);\n    for(let i = 0; i < slides.length; i += 1){\n        const slide = slides[i];\n        let slideOffset = slide.swiperSlideOffset;\n        if (params.cssMode && params.centeredSlides) slideOffset -= slides[0].swiperSlideOffset;\n        const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n        const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n        const slideBefore = -(offsetCenter - slideOffset);\n        const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n        const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n        if (isVisible) {\n            swiper.visibleSlides.push(slide);\n            swiper.visibleSlidesIndexes.push(i);\n            slides[i].classList.add(params.slideVisibleClass);\n        }\n        slide.progress = rtl ? -slideProgress : slideProgress;\n        slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n    }\n}\nfunction $6946bfb4689eabba$var$updateProgress(translate) {\n    const swiper = this;\n    if (typeof translate === \"undefined\") {\n        const multiplier = swiper.rtlTranslate ? -1 : 1;\n        // eslint-disable-next-line\n        translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n    }\n    const params = swiper.params;\n    const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n    let { progress: progress, isBeginning: isBeginning, isEnd: isEnd, progressLoop: progressLoop } = swiper;\n    const wasBeginning = isBeginning;\n    const wasEnd = isEnd;\n    if (translatesDiff === 0) {\n        progress = 0;\n        isBeginning = true;\n        isEnd = true;\n    } else {\n        progress = (translate - swiper.minTranslate()) / translatesDiff;\n        const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1;\n        const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1;\n        isBeginning = isBeginningRounded || progress <= 0;\n        isEnd = isEndRounded || progress >= 1;\n        if (isBeginningRounded) progress = 0;\n        if (isEndRounded) progress = 1;\n    }\n    if (params.loop) {\n        const firstSlideIndex = swiper.getSlideIndexByData(0);\n        const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1);\n        const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex];\n        const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex];\n        const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1];\n        const translateAbs = Math.abs(translate);\n        if (translateAbs >= firstSlideTranslate) progressLoop = (translateAbs - firstSlideTranslate) / translateMax;\n        else progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax;\n        if (progressLoop > 1) progressLoop -= 1;\n    }\n    Object.assign(swiper, {\n        progress: progress,\n        progressLoop: progressLoop,\n        isBeginning: isBeginning,\n        isEnd: isEnd\n    });\n    if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n    if (isBeginning && !wasBeginning) swiper.emit(\"reachBeginning toEdge\");\n    if (isEnd && !wasEnd) swiper.emit(\"reachEnd toEdge\");\n    if (wasBeginning && !isBeginning || wasEnd && !isEnd) swiper.emit(\"fromEdge\");\n    swiper.emit(\"progress\", progress);\n}\nfunction $6946bfb4689eabba$var$updateSlidesClasses() {\n    const swiper = this;\n    const { slides: slides, params: params, slidesEl: slidesEl, activeIndex: activeIndex } = swiper;\n    const isVirtual = swiper.virtual && params.virtual.enabled;\n    const getFilteredSlide = (selector)=>{\n        return (0, $3e0e2b092da8f124$export$f1e1789686576879)(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0];\n    };\n    slides.forEach((slideEl)=>{\n        slideEl.classList.remove(params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n    });\n    let activeSlide;\n    if (isVirtual) {\n        if (params.loop) {\n            let slideIndex = activeIndex - swiper.virtual.slidesBefore;\n            if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex;\n            if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length;\n            activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${slideIndex}\"]`);\n        } else activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${activeIndex}\"]`);\n    } else activeSlide = slides[activeIndex];\n    if (activeSlide) {\n        // Active classes\n        activeSlide.classList.add(params.slideActiveClass);\n        // Next Slide\n        let nextSlide = (0, $3e0e2b092da8f124$export$953cecd6e717a553)(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n        if (params.loop && !nextSlide) nextSlide = slides[0];\n        if (nextSlide) nextSlide.classList.add(params.slideNextClass);\n        // Prev Slide\n        let prevSlide = (0, $3e0e2b092da8f124$export$ae1af26003f05816)(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n        params.loop;\n        if (prevSlide) prevSlide.classList.add(params.slidePrevClass);\n    }\n    swiper.emitSlidesClasses();\n}\nconst $6946bfb4689eabba$var$processLazyPreloader = (swiper, imageEl)=>{\n    if (!swiper || swiper.destroyed || !swiper.params) return;\n    const slideSelector = ()=>swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n    const slideEl = imageEl.closest(slideSelector());\n    if (slideEl) {\n        const lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n        if (lazyEl) lazyEl.remove();\n    }\n};\nconst $6946bfb4689eabba$var$unlazy = (swiper, index)=>{\n    if (!swiper.slides[index]) return;\n    const imageEl = swiper.slides[index].querySelector('[loading=\"lazy\"]');\n    if (imageEl) imageEl.removeAttribute(\"loading\");\n};\nconst $6946bfb4689eabba$var$preload = (swiper)=>{\n    if (!swiper || swiper.destroyed || !swiper.params) return;\n    let amount = swiper.params.lazyPreloadPrevNext;\n    const len = swiper.slides.length;\n    if (!len || !amount || amount < 0) return;\n    amount = Math.min(amount, len);\n    const slidesPerView = swiper.params.slidesPerView === \"auto\" ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView);\n    const activeIndex = swiper.activeIndex;\n    if (swiper.params.grid && swiper.params.grid.rows > 1) {\n        const activeColumn = activeIndex;\n        const preloadColumns = [\n            activeColumn - amount\n        ];\n        preloadColumns.push(...Array.from({\n            length: amount\n        }).map((_, i)=>{\n            return activeColumn + slidesPerView + i;\n        }));\n        swiper.slides.forEach((slideEl, i)=>{\n            if (preloadColumns.includes(slideEl.column)) $6946bfb4689eabba$var$unlazy(swiper, i);\n        });\n        return;\n    }\n    const slideIndexLastInView = activeIndex + slidesPerView - 1;\n    if (swiper.params.rewind || swiper.params.loop) for(let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1){\n        const realIndex = (i % len + len) % len;\n        if (realIndex < activeIndex || realIndex > slideIndexLastInView) $6946bfb4689eabba$var$unlazy(swiper, realIndex);\n    }\n    else {\n        for(let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1)if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) $6946bfb4689eabba$var$unlazy(swiper, i);\n    }\n};\nfunction $6946bfb4689eabba$var$getActiveIndexByTranslate(swiper) {\n    const { slidesGrid: slidesGrid, params: params } = swiper;\n    const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n    let activeIndex;\n    for(let i = 0; i < slidesGrid.length; i += 1){\n        if (typeof slidesGrid[i + 1] !== \"undefined\") {\n            if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) activeIndex = i;\n            else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) activeIndex = i + 1;\n        } else if (translate >= slidesGrid[i]) activeIndex = i;\n    }\n    // Normalize slideIndex\n    if (params.normalizeSlideIndex) {\n        if (activeIndex < 0 || typeof activeIndex === \"undefined\") activeIndex = 0;\n    }\n    return activeIndex;\n}\nfunction $6946bfb4689eabba$var$updateActiveIndex(newActiveIndex) {\n    const swiper = this;\n    const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n    const { snapGrid: snapGrid, params: params, activeIndex: previousIndex, realIndex: previousRealIndex, snapIndex: previousSnapIndex } = swiper;\n    let activeIndex = newActiveIndex;\n    let snapIndex;\n    const getVirtualRealIndex = (aIndex)=>{\n        let realIndex = aIndex - swiper.virtual.slidesBefore;\n        if (realIndex < 0) realIndex = swiper.virtual.slides.length + realIndex;\n        if (realIndex >= swiper.virtual.slides.length) realIndex -= swiper.virtual.slides.length;\n        return realIndex;\n    };\n    if (typeof activeIndex === \"undefined\") activeIndex = $6946bfb4689eabba$var$getActiveIndexByTranslate(swiper);\n    if (snapGrid.indexOf(translate) >= 0) snapIndex = snapGrid.indexOf(translate);\n    else {\n        const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n        snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n    }\n    if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n    if (activeIndex === previousIndex) {\n        if (snapIndex !== previousSnapIndex) {\n            swiper.snapIndex = snapIndex;\n            swiper.emit(\"snapIndexChange\");\n        }\n        if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) swiper.realIndex = getVirtualRealIndex(activeIndex);\n        return;\n    }\n    // Get real index\n    let realIndex;\n    if (swiper.virtual && params.virtual.enabled && params.loop) realIndex = getVirtualRealIndex(activeIndex);\n    else if (swiper.slides[activeIndex]) realIndex = parseInt(swiper.slides[activeIndex].getAttribute(\"data-swiper-slide-index\") || activeIndex, 10);\n    else realIndex = activeIndex;\n    Object.assign(swiper, {\n        previousSnapIndex: previousSnapIndex,\n        snapIndex: snapIndex,\n        previousRealIndex: previousRealIndex,\n        realIndex: realIndex,\n        previousIndex: previousIndex,\n        activeIndex: activeIndex\n    });\n    if (swiper.initialized) $6946bfb4689eabba$var$preload(swiper);\n    swiper.emit(\"activeIndexChange\");\n    swiper.emit(\"snapIndexChange\");\n    if (previousRealIndex !== realIndex) swiper.emit(\"realIndexChange\");\n    if (swiper.initialized || swiper.params.runCallbacksOnInit) swiper.emit(\"slideChange\");\n}\nfunction $6946bfb4689eabba$var$updateClickedSlide(e) {\n    const swiper = this;\n    const params = swiper.params;\n    const slide = e.closest(`.${params.slideClass}, swiper-slide`);\n    let slideFound = false;\n    let slideIndex;\n    if (slide) {\n        for(let i = 0; i < swiper.slides.length; i += 1)if (swiper.slides[i] === slide) {\n            slideFound = true;\n            slideIndex = i;\n            break;\n        }\n    }\n    if (slide && slideFound) {\n        swiper.clickedSlide = slide;\n        if (swiper.virtual && swiper.params.virtual.enabled) swiper.clickedIndex = parseInt(slide.getAttribute(\"data-swiper-slide-index\"), 10);\n        else swiper.clickedIndex = slideIndex;\n    } else {\n        swiper.clickedSlide = undefined;\n        swiper.clickedIndex = undefined;\n        return;\n    }\n    if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) swiper.slideToClickedSlide();\n}\nvar $6946bfb4689eabba$var$update = {\n    updateSize: $6946bfb4689eabba$var$updateSize,\n    updateSlides: $6946bfb4689eabba$var$updateSlides,\n    updateAutoHeight: $6946bfb4689eabba$var$updateAutoHeight,\n    updateSlidesOffset: $6946bfb4689eabba$var$updateSlidesOffset,\n    updateSlidesProgress: $6946bfb4689eabba$var$updateSlidesProgress,\n    updateProgress: $6946bfb4689eabba$var$updateProgress,\n    updateSlidesClasses: $6946bfb4689eabba$var$updateSlidesClasses,\n    updateActiveIndex: $6946bfb4689eabba$var$updateActiveIndex,\n    updateClickedSlide: $6946bfb4689eabba$var$updateClickedSlide\n};\nfunction $6946bfb4689eabba$var$getSwiperTranslate(axis) {\n    if (axis === void 0) axis = this.isHorizontal() ? \"x\" : \"y\";\n    const swiper = this;\n    const { params: params, rtlTranslate: rtl, translate: translate, wrapperEl: wrapperEl } = swiper;\n    if (params.virtualTranslate) return rtl ? -translate : translate;\n    if (params.cssMode) return translate;\n    let currentTranslate = (0, $3e0e2b092da8f124$export$dda1d9f60106f0e9)(wrapperEl, axis);\n    currentTranslate += swiper.cssOverflowAdjustment();\n    if (rtl) currentTranslate = -currentTranslate;\n    return currentTranslate || 0;\n}\nfunction $6946bfb4689eabba$var$setTranslate(translate, byController) {\n    const swiper = this;\n    const { rtlTranslate: rtl, params: params, wrapperEl: wrapperEl, progress: progress } = swiper;\n    let x = 0;\n    let y = 0;\n    const z = 0;\n    if (swiper.isHorizontal()) x = rtl ? -translate : translate;\n    else y = translate;\n    if (params.roundLengths) {\n        x = Math.floor(x);\n        y = Math.floor(y);\n    }\n    swiper.previousTranslate = swiper.translate;\n    swiper.translate = swiper.isHorizontal() ? x : y;\n    if (params.cssMode) wrapperEl[swiper.isHorizontal() ? \"scrollLeft\" : \"scrollTop\"] = swiper.isHorizontal() ? -x : -y;\n    else if (!params.virtualTranslate) {\n        if (swiper.isHorizontal()) x -= swiper.cssOverflowAdjustment();\n        else y -= swiper.cssOverflowAdjustment();\n        wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;\n    }\n    // Check if we need to update progress\n    let newProgress;\n    const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n    if (translatesDiff === 0) newProgress = 0;\n    else newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n    if (newProgress !== progress) swiper.updateProgress(translate);\n    swiper.emit(\"setTranslate\", swiper.translate, byController);\n}\nfunction $6946bfb4689eabba$var$minTranslate() {\n    return -this.snapGrid[0];\n}\nfunction $6946bfb4689eabba$var$maxTranslate() {\n    return -this.snapGrid[this.snapGrid.length - 1];\n}\nfunction $6946bfb4689eabba$var$translateTo(translate, speed, runCallbacks, translateBounds, internal) {\n    if (translate === void 0) translate = 0;\n    if (speed === void 0) speed = this.params.speed;\n    if (runCallbacks === void 0) runCallbacks = true;\n    if (translateBounds === void 0) translateBounds = true;\n    const swiper = this;\n    const { params: params, wrapperEl: wrapperEl } = swiper;\n    if (swiper.animating && params.preventInteractionOnTransition) return false;\n    const minTranslate = swiper.minTranslate();\n    const maxTranslate = swiper.maxTranslate();\n    let newTranslate;\n    if (translateBounds && translate > minTranslate) newTranslate = minTranslate;\n    else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;\n    else newTranslate = translate;\n    // Update progress\n    swiper.updateProgress(newTranslate);\n    if (params.cssMode) {\n        const isH = swiper.isHorizontal();\n        if (speed === 0) wrapperEl[isH ? \"scrollLeft\" : \"scrollTop\"] = -newTranslate;\n        else {\n            if (!swiper.support.smoothScroll) {\n                (0, $3e0e2b092da8f124$export$ffb5f4729a158638)({\n                    swiper: swiper,\n                    targetPosition: -newTranslate,\n                    side: isH ? \"left\" : \"top\"\n                });\n                return true;\n            }\n            wrapperEl.scrollTo({\n                [isH ? \"left\" : \"top\"]: -newTranslate,\n                behavior: \"smooth\"\n            });\n        }\n        return true;\n    }\n    if (speed === 0) {\n        swiper.setTransition(0);\n        swiper.setTranslate(newTranslate);\n        if (runCallbacks) {\n            swiper.emit(\"beforeTransitionStart\", speed, internal);\n            swiper.emit(\"transitionEnd\");\n        }\n    } else {\n        swiper.setTransition(speed);\n        swiper.setTranslate(newTranslate);\n        if (runCallbacks) {\n            swiper.emit(\"beforeTransitionStart\", speed, internal);\n            swiper.emit(\"transitionStart\");\n        }\n        if (!swiper.animating) {\n            swiper.animating = true;\n            if (!swiper.onTranslateToWrapperTransitionEnd) swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n                if (!swiper || swiper.destroyed) return;\n                if (e.target !== this) return;\n                swiper.wrapperEl.removeEventListener(\"transitionend\", swiper.onTranslateToWrapperTransitionEnd);\n                swiper.onTranslateToWrapperTransitionEnd = null;\n                delete swiper.onTranslateToWrapperTransitionEnd;\n                if (runCallbacks) swiper.emit(\"transitionEnd\");\n            };\n            swiper.wrapperEl.addEventListener(\"transitionend\", swiper.onTranslateToWrapperTransitionEnd);\n        }\n    }\n    return true;\n}\nvar $6946bfb4689eabba$var$translate = {\n    getTranslate: $6946bfb4689eabba$var$getSwiperTranslate,\n    setTranslate: $6946bfb4689eabba$var$setTranslate,\n    minTranslate: $6946bfb4689eabba$var$minTranslate,\n    maxTranslate: $6946bfb4689eabba$var$maxTranslate,\n    translateTo: $6946bfb4689eabba$var$translateTo\n};\nfunction $6946bfb4689eabba$var$setTransition(duration, byController) {\n    const swiper = this;\n    if (!swiper.params.cssMode) swiper.wrapperEl.style.transitionDuration = `${duration}ms`;\n    swiper.emit(\"setTransition\", duration, byController);\n}\nfunction $6946bfb4689eabba$var$transitionEmit(_ref) {\n    let { swiper: swiper, runCallbacks: runCallbacks, direction: direction, step: step } = _ref;\n    const { activeIndex: activeIndex, previousIndex: previousIndex } = swiper;\n    let dir = direction;\n    if (!dir) {\n        if (activeIndex > previousIndex) dir = \"next\";\n        else if (activeIndex < previousIndex) dir = \"prev\";\n        else dir = \"reset\";\n    }\n    swiper.emit(`transition${step}`);\n    if (runCallbacks && activeIndex !== previousIndex) {\n        if (dir === \"reset\") {\n            swiper.emit(`slideResetTransition${step}`);\n            return;\n        }\n        swiper.emit(`slideChangeTransition${step}`);\n        if (dir === \"next\") swiper.emit(`slideNextTransition${step}`);\n        else swiper.emit(`slidePrevTransition${step}`);\n    }\n}\nfunction $6946bfb4689eabba$var$transitionStart(runCallbacks, direction) {\n    if (runCallbacks === void 0) runCallbacks = true;\n    const swiper = this;\n    const { params: params } = swiper;\n    if (params.cssMode) return;\n    if (params.autoHeight) swiper.updateAutoHeight();\n    $6946bfb4689eabba$var$transitionEmit({\n        swiper: swiper,\n        runCallbacks: runCallbacks,\n        direction: direction,\n        step: \"Start\"\n    });\n}\nfunction $6946bfb4689eabba$var$transitionEnd(runCallbacks, direction) {\n    if (runCallbacks === void 0) runCallbacks = true;\n    const swiper = this;\n    const { params: params } = swiper;\n    swiper.animating = false;\n    if (params.cssMode) return;\n    swiper.setTransition(0);\n    $6946bfb4689eabba$var$transitionEmit({\n        swiper: swiper,\n        runCallbacks: runCallbacks,\n        direction: direction,\n        step: \"End\"\n    });\n}\nvar $6946bfb4689eabba$var$transition = {\n    setTransition: $6946bfb4689eabba$var$setTransition,\n    transitionStart: $6946bfb4689eabba$var$transitionStart,\n    transitionEnd: $6946bfb4689eabba$var$transitionEnd\n};\nfunction $6946bfb4689eabba$var$slideTo(index, speed, runCallbacks, internal, initial) {\n    if (index === void 0) index = 0;\n    if (speed === void 0) speed = this.params.speed;\n    if (runCallbacks === void 0) runCallbacks = true;\n    if (typeof index === \"string\") index = parseInt(index, 10);\n    const swiper = this;\n    let slideIndex = index;\n    if (slideIndex < 0) slideIndex = 0;\n    const { params: params, snapGrid: snapGrid, slidesGrid: slidesGrid, previousIndex: previousIndex, activeIndex: activeIndex, rtlTranslate: rtl, wrapperEl: wrapperEl, enabled: enabled } = swiper;\n    if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) return false;\n    const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n    let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n    if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n    const translate = -snapGrid[snapIndex];\n    // Normalize slideIndex\n    if (params.normalizeSlideIndex) for(let i = 0; i < slidesGrid.length; i += 1){\n        const normalizedTranslate = -Math.floor(translate * 100);\n        const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n        const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n        if (typeof slidesGrid[i + 1] !== \"undefined\") {\n            if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) slideIndex = i;\n            else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) slideIndex = i + 1;\n        } else if (normalizedTranslate >= normalizedGrid) slideIndex = i;\n    }\n    // Directions locks\n    if (swiper.initialized && slideIndex !== activeIndex) {\n        if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) return false;\n        if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n            if ((activeIndex || 0) !== slideIndex) return false;\n        }\n    }\n    if (slideIndex !== (previousIndex || 0) && runCallbacks) swiper.emit(\"beforeSlideChangeStart\");\n    // Update progress\n    swiper.updateProgress(translate);\n    let direction;\n    if (slideIndex > activeIndex) direction = \"next\";\n    else if (slideIndex < activeIndex) direction = \"prev\";\n    else direction = \"reset\";\n    // Update Index\n    if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n        swiper.updateActiveIndex(slideIndex);\n        // Update Height\n        if (params.autoHeight) swiper.updateAutoHeight();\n        swiper.updateSlidesClasses();\n        if (params.effect !== \"slide\") swiper.setTranslate(translate);\n        if (direction !== \"reset\") {\n            swiper.transitionStart(runCallbacks, direction);\n            swiper.transitionEnd(runCallbacks, direction);\n        }\n        return false;\n    }\n    if (params.cssMode) {\n        const isH = swiper.isHorizontal();\n        const t = rtl ? translate : -translate;\n        if (speed === 0) {\n            const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n            if (isVirtual) {\n                swiper.wrapperEl.style.scrollSnapType = \"none\";\n                swiper._immediateVirtual = true;\n            }\n            if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) {\n                swiper._cssModeVirtualInitialSet = true;\n                requestAnimationFrame(()=>{\n                    wrapperEl[isH ? \"scrollLeft\" : \"scrollTop\"] = t;\n                });\n            } else wrapperEl[isH ? \"scrollLeft\" : \"scrollTop\"] = t;\n            if (isVirtual) requestAnimationFrame(()=>{\n                swiper.wrapperEl.style.scrollSnapType = \"\";\n                swiper._immediateVirtual = false;\n            });\n        } else {\n            if (!swiper.support.smoothScroll) {\n                (0, $3e0e2b092da8f124$export$ffb5f4729a158638)({\n                    swiper: swiper,\n                    targetPosition: t,\n                    side: isH ? \"left\" : \"top\"\n                });\n                return true;\n            }\n            wrapperEl.scrollTo({\n                [isH ? \"left\" : \"top\"]: t,\n                behavior: \"smooth\"\n            });\n        }\n        return true;\n    }\n    swiper.setTransition(speed);\n    swiper.setTranslate(translate);\n    swiper.updateActiveIndex(slideIndex);\n    swiper.updateSlidesClasses();\n    swiper.emit(\"beforeTransitionStart\", speed, internal);\n    swiper.transitionStart(runCallbacks, direction);\n    if (speed === 0) swiper.transitionEnd(runCallbacks, direction);\n    else if (!swiper.animating) {\n        swiper.animating = true;\n        if (!swiper.onSlideToWrapperTransitionEnd) swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n            if (!swiper || swiper.destroyed) return;\n            if (e.target !== this) return;\n            swiper.wrapperEl.removeEventListener(\"transitionend\", swiper.onSlideToWrapperTransitionEnd);\n            swiper.onSlideToWrapperTransitionEnd = null;\n            delete swiper.onSlideToWrapperTransitionEnd;\n            swiper.transitionEnd(runCallbacks, direction);\n        };\n        swiper.wrapperEl.addEventListener(\"transitionend\", swiper.onSlideToWrapperTransitionEnd);\n    }\n    return true;\n}\nfunction $6946bfb4689eabba$var$slideToLoop(index, speed, runCallbacks, internal) {\n    if (index === void 0) index = 0;\n    if (speed === void 0) speed = this.params.speed;\n    if (runCallbacks === void 0) runCallbacks = true;\n    if (typeof index === \"string\") {\n        const indexAsNumber = parseInt(index, 10);\n        index = indexAsNumber;\n    }\n    const swiper = this;\n    let newIndex = index;\n    if (swiper.params.loop) {\n        if (swiper.virtual && swiper.params.virtual.enabled) // eslint-disable-next-line\n        newIndex = newIndex + swiper.virtual.slidesBefore;\n        else newIndex = swiper.getSlideIndexByData(newIndex);\n    }\n    return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}\n/* eslint no-unused-vars: \"off\" */ function $6946bfb4689eabba$var$slideNext(speed, runCallbacks, internal) {\n    if (speed === void 0) speed = this.params.speed;\n    if (runCallbacks === void 0) runCallbacks = true;\n    const swiper = this;\n    const { enabled: enabled, params: params, animating: animating } = swiper;\n    if (!enabled) return swiper;\n    let perGroup = params.slidesPerGroup;\n    if (params.slidesPerView === \"auto\" && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) perGroup = Math.max(swiper.slidesPerViewDynamic(\"current\", true), 1);\n    const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n    const isVirtual = swiper.virtual && params.virtual.enabled;\n    if (params.loop) {\n        if (animating && !isVirtual && params.loopPreventsSliding) return false;\n        swiper.loopFix({\n            direction: \"next\"\n        });\n        // eslint-disable-next-line\n        swiper._clientLeft = swiper.wrapperEl.clientLeft;\n    }\n    if (params.rewind && swiper.isEnd) return swiper.slideTo(0, speed, runCallbacks, internal);\n    return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n/* eslint no-unused-vars: \"off\" */ function $6946bfb4689eabba$var$slidePrev(speed, runCallbacks, internal) {\n    if (speed === void 0) speed = this.params.speed;\n    if (runCallbacks === void 0) runCallbacks = true;\n    const swiper = this;\n    const { params: params, snapGrid: snapGrid, slidesGrid: slidesGrid, rtlTranslate: rtlTranslate, enabled: enabled, animating: animating } = swiper;\n    if (!enabled) return swiper;\n    const isVirtual = swiper.virtual && params.virtual.enabled;\n    if (params.loop) {\n        if (animating && !isVirtual && params.loopPreventsSliding) return false;\n        swiper.loopFix({\n            direction: \"prev\"\n        });\n        // eslint-disable-next-line\n        swiper._clientLeft = swiper.wrapperEl.clientLeft;\n    }\n    const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n    function normalize(val) {\n        if (val < 0) return -Math.floor(Math.abs(val));\n        return Math.floor(val);\n    }\n    const normalizedTranslate = normalize(translate);\n    const normalizedSnapGrid = snapGrid.map((val)=>normalize(val));\n    let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n    if (typeof prevSnap === \"undefined\" && params.cssMode) {\n        let prevSnapIndex;\n        snapGrid.forEach((snap, snapIndex)=>{\n            if (normalizedTranslate >= snap) // prevSnap = snap;\n            prevSnapIndex = snapIndex;\n        });\n        if (typeof prevSnapIndex !== \"undefined\") prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n    }\n    let prevIndex = 0;\n    if (typeof prevSnap !== \"undefined\") {\n        prevIndex = slidesGrid.indexOf(prevSnap);\n        if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n        if (params.slidesPerView === \"auto\" && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n            prevIndex = prevIndex - swiper.slidesPerViewDynamic(\"previous\", true) + 1;\n            prevIndex = Math.max(prevIndex, 0);\n        }\n    }\n    if (params.rewind && swiper.isBeginning) {\n        const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n        return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n    }\n    return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n/* eslint no-unused-vars: \"off\" */ function $6946bfb4689eabba$var$slideReset(speed, runCallbacks, internal) {\n    if (speed === void 0) speed = this.params.speed;\n    if (runCallbacks === void 0) runCallbacks = true;\n    const swiper = this;\n    return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n/* eslint no-unused-vars: \"off\" */ function $6946bfb4689eabba$var$slideToClosest(speed, runCallbacks, internal, threshold) {\n    if (speed === void 0) speed = this.params.speed;\n    if (runCallbacks === void 0) runCallbacks = true;\n    if (threshold === void 0) threshold = 0.5;\n    const swiper = this;\n    let index = swiper.activeIndex;\n    const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n    const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n    const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n    if (translate >= swiper.snapGrid[snapIndex]) {\n        // The current translate is on or after the current snap index, so the choice\n        // is between the current index and the one after it.\n        const currentSnap = swiper.snapGrid[snapIndex];\n        const nextSnap = swiper.snapGrid[snapIndex + 1];\n        if (translate - currentSnap > (nextSnap - currentSnap) * threshold) index += swiper.params.slidesPerGroup;\n    } else {\n        // The current translate is before the current snap index, so the choice\n        // is between the current index and the one before it.\n        const prevSnap = swiper.snapGrid[snapIndex - 1];\n        const currentSnap = swiper.snapGrid[snapIndex];\n        if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) index -= swiper.params.slidesPerGroup;\n    }\n    index = Math.max(index, 0);\n    index = Math.min(index, swiper.slidesGrid.length - 1);\n    return swiper.slideTo(index, speed, runCallbacks, internal);\n}\nfunction $6946bfb4689eabba$var$slideToClickedSlide() {\n    const swiper = this;\n    const { params: params, slidesEl: slidesEl } = swiper;\n    const slidesPerView = params.slidesPerView === \"auto\" ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n    let slideToIndex = swiper.clickedIndex;\n    let realIndex;\n    const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`;\n    if (params.loop) {\n        if (swiper.animating) return;\n        realIndex = parseInt(swiper.clickedSlide.getAttribute(\"data-swiper-slide-index\"), 10);\n        if (params.centeredSlides) {\n            if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n                swiper.loopFix();\n                slideToIndex = swiper.getSlideIndex((0, $3e0e2b092da8f124$export$f1e1789686576879)(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n                (0, $3e0e2b092da8f124$export$7ccc53e8f1e7dfc5)(()=>{\n                    swiper.slideTo(slideToIndex);\n                });\n            } else swiper.slideTo(slideToIndex);\n        } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n            swiper.loopFix();\n            slideToIndex = swiper.getSlideIndex((0, $3e0e2b092da8f124$export$f1e1789686576879)(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n            (0, $3e0e2b092da8f124$export$7ccc53e8f1e7dfc5)(()=>{\n                swiper.slideTo(slideToIndex);\n            });\n        } else swiper.slideTo(slideToIndex);\n    } else swiper.slideTo(slideToIndex);\n}\nvar $6946bfb4689eabba$var$slide = {\n    slideTo: $6946bfb4689eabba$var$slideTo,\n    slideToLoop: $6946bfb4689eabba$var$slideToLoop,\n    slideNext: $6946bfb4689eabba$var$slideNext,\n    slidePrev: $6946bfb4689eabba$var$slidePrev,\n    slideReset: $6946bfb4689eabba$var$slideReset,\n    slideToClosest: $6946bfb4689eabba$var$slideToClosest,\n    slideToClickedSlide: $6946bfb4689eabba$var$slideToClickedSlide\n};\nfunction $6946bfb4689eabba$var$loopCreate(slideRealIndex) {\n    const swiper = this;\n    const { params: params, slidesEl: slidesEl } = swiper;\n    if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n    const slides = (0, $3e0e2b092da8f124$export$f1e1789686576879)(slidesEl, `.${params.slideClass}, swiper-slide`);\n    slides.forEach((el, index)=>{\n        el.setAttribute(\"data-swiper-slide-index\", index);\n    });\n    swiper.loopFix({\n        slideRealIndex: slideRealIndex,\n        direction: params.centeredSlides ? undefined : \"next\"\n    });\n}\nfunction $6946bfb4689eabba$var$loopFix(_temp) {\n    let { slideRealIndex: slideRealIndex, slideTo: slideTo = true, direction: direction, setTranslate: setTranslate, activeSlideIndex: activeSlideIndex, byController: byController, byMousewheel: byMousewheel } = _temp === void 0 ? {} : _temp;\n    const swiper = this;\n    if (!swiper.params.loop) return;\n    swiper.emit(\"beforeLoopFix\");\n    const { slides: slides, allowSlidePrev: allowSlidePrev, allowSlideNext: allowSlideNext, slidesEl: slidesEl, params: params } = swiper;\n    swiper.allowSlidePrev = true;\n    swiper.allowSlideNext = true;\n    if (swiper.virtual && params.virtual.enabled) {\n        if (slideTo) {\n            if (!params.centeredSlides && swiper.snapIndex === 0) swiper.slideTo(swiper.virtual.slides.length, 0, false, true);\n            else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true);\n            else if (swiper.snapIndex === swiper.snapGrid.length - 1) swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true);\n        }\n        swiper.allowSlidePrev = allowSlidePrev;\n        swiper.allowSlideNext = allowSlideNext;\n        swiper.emit(\"loopFix\");\n        return;\n    }\n    const slidesPerView = params.slidesPerView === \"auto\" ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10));\n    let loopedSlides = params.loopedSlides || slidesPerView;\n    if (loopedSlides % params.slidesPerGroup !== 0) loopedSlides += params.slidesPerGroup - loopedSlides % params.slidesPerGroup;\n    swiper.loopedSlides = loopedSlides;\n    const prependSlidesIndexes = [];\n    const appendSlidesIndexes = [];\n    let activeIndex = swiper.activeIndex;\n    if (typeof activeSlideIndex === \"undefined\") activeSlideIndex = swiper.getSlideIndex(swiper.slides.filter((el)=>el.classList.contains(params.slideActiveClass))[0]);\n    else activeIndex = activeSlideIndex;\n    const isNext = direction === \"next\" || !direction;\n    const isPrev = direction === \"prev\" || !direction;\n    let slidesPrepended = 0;\n    let slidesAppended = 0;\n    // prepend last slides before start\n    if (activeSlideIndex < loopedSlides) {\n        slidesPrepended = Math.max(loopedSlides - activeSlideIndex, params.slidesPerGroup);\n        for(let i = 0; i < loopedSlides - activeSlideIndex; i += 1){\n            const index = i - Math.floor(i / slides.length) * slides.length;\n            prependSlidesIndexes.push(slides.length - index - 1);\n        }\n    } else if (activeSlideIndex /* + slidesPerView */  > swiper.slides.length - loopedSlides * 2) {\n        slidesAppended = Math.max(activeSlideIndex - (swiper.slides.length - loopedSlides * 2), params.slidesPerGroup);\n        for(let i = 0; i < slidesAppended; i += 1){\n            const index = i - Math.floor(i / slides.length) * slides.length;\n            appendSlidesIndexes.push(index);\n        }\n    }\n    if (isPrev) prependSlidesIndexes.forEach((index)=>{\n        swiper.slides[index].swiperLoopMoveDOM = true;\n        slidesEl.prepend(swiper.slides[index]);\n        swiper.slides[index].swiperLoopMoveDOM = false;\n    });\n    if (isNext) appendSlidesIndexes.forEach((index)=>{\n        swiper.slides[index].swiperLoopMoveDOM = true;\n        slidesEl.append(swiper.slides[index]);\n        swiper.slides[index].swiperLoopMoveDOM = false;\n    });\n    swiper.recalcSlides();\n    if (params.slidesPerView === \"auto\") swiper.updateSlides();\n    if (params.watchSlidesProgress) swiper.updateSlidesOffset();\n    if (slideTo) {\n        if (prependSlidesIndexes.length > 0 && isPrev) {\n            if (typeof slideRealIndex === \"undefined\") {\n                const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n                const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended];\n                const diff = newSlideTranslate - currentSlideTranslate;\n                if (byMousewheel) swiper.setTranslate(swiper.translate - diff);\n                else {\n                    swiper.slideTo(activeIndex + slidesPrepended, 0, false, true);\n                    if (setTranslate) {\n                        swiper.touches[swiper.isHorizontal() ? \"startX\" : \"startY\"] += diff;\n                        swiper.touchEventsData.currentTranslate = swiper.translate;\n                    }\n                }\n            } else if (setTranslate) {\n                swiper.slideToLoop(slideRealIndex, 0, false, true);\n                swiper.touchEventsData.currentTranslate = swiper.translate;\n            }\n        } else if (appendSlidesIndexes.length > 0 && isNext) {\n            if (typeof slideRealIndex === \"undefined\") {\n                const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n                const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended];\n                const diff = newSlideTranslate - currentSlideTranslate;\n                if (byMousewheel) swiper.setTranslate(swiper.translate - diff);\n                else {\n                    swiper.slideTo(activeIndex - slidesAppended, 0, false, true);\n                    if (setTranslate) {\n                        swiper.touches[swiper.isHorizontal() ? \"startX\" : \"startY\"] += diff;\n                        swiper.touchEventsData.currentTranslate = swiper.translate;\n                    }\n                }\n            } else swiper.slideToLoop(slideRealIndex, 0, false, true);\n        }\n    }\n    swiper.allowSlidePrev = allowSlidePrev;\n    swiper.allowSlideNext = allowSlideNext;\n    if (swiper.controller && swiper.controller.control && !byController) {\n        const loopParams = {\n            slideRealIndex: slideRealIndex,\n            slideTo: false,\n            direction: direction,\n            setTranslate: setTranslate,\n            activeSlideIndex: activeSlideIndex,\n            byController: true\n        };\n        if (Array.isArray(swiper.controller.control)) swiper.controller.control.forEach((c)=>{\n            if (!c.destroyed && c.params.loop) c.loopFix(loopParams);\n        });\n        else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) swiper.controller.control.loopFix(loopParams);\n    }\n    swiper.emit(\"loopFix\");\n}\nfunction $6946bfb4689eabba$var$loopDestroy() {\n    const swiper = this;\n    const { params: params, slidesEl: slidesEl } = swiper;\n    if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n    swiper.recalcSlides();\n    const newSlidesOrder = [];\n    swiper.slides.forEach((slideEl)=>{\n        const index = typeof slideEl.swiperSlideIndex === \"undefined\" ? slideEl.getAttribute(\"data-swiper-slide-index\") * 1 : slideEl.swiperSlideIndex;\n        newSlidesOrder[index] = slideEl;\n    });\n    swiper.slides.forEach((slideEl)=>{\n        slideEl.removeAttribute(\"data-swiper-slide-index\");\n    });\n    newSlidesOrder.forEach((slideEl)=>{\n        slidesEl.append(slideEl);\n    });\n    swiper.recalcSlides();\n    swiper.slideTo(swiper.realIndex, 0);\n}\nvar $6946bfb4689eabba$var$loop = {\n    loopCreate: $6946bfb4689eabba$var$loopCreate,\n    loopFix: $6946bfb4689eabba$var$loopFix,\n    loopDestroy: $6946bfb4689eabba$var$loopDestroy\n};\nfunction $6946bfb4689eabba$var$setGrabCursor(moving) {\n    const swiper = this;\n    if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n    const el = swiper.params.touchEventsTarget === \"container\" ? swiper.el : swiper.wrapperEl;\n    if (swiper.isElement) swiper.__preventObserver__ = true;\n    el.style.cursor = \"move\";\n    el.style.cursor = moving ? \"grabbing\" : \"grab\";\n    if (swiper.isElement) requestAnimationFrame(()=>{\n        swiper.__preventObserver__ = false;\n    });\n}\nfunction $6946bfb4689eabba$var$unsetGrabCursor() {\n    const swiper = this;\n    if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n    if (swiper.isElement) swiper.__preventObserver__ = true;\n    swiper[swiper.params.touchEventsTarget === \"container\" ? \"el\" : \"wrapperEl\"].style.cursor = \"\";\n    if (swiper.isElement) requestAnimationFrame(()=>{\n        swiper.__preventObserver__ = false;\n    });\n}\nvar $6946bfb4689eabba$var$grabCursor = {\n    setGrabCursor: $6946bfb4689eabba$var$setGrabCursor,\n    unsetGrabCursor: $6946bfb4689eabba$var$unsetGrabCursor\n};\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\nfunction $6946bfb4689eabba$var$closestElement(selector, base) {\n    if (base === void 0) base = this;\n    function __closestFrom(el) {\n        if (!el || el === (0, $768c2f4c151a0363$export$39b482c5e57630a8)() || el === (0, $768c2f4c151a0363$export$407448d2b89b1813)()) return null;\n        if (el.assignedSlot) el = el.assignedSlot;\n        const found = el.closest(selector);\n        if (!found && !el.getRootNode) return null;\n        return found || __closestFrom(el.getRootNode().host);\n    }\n    return __closestFrom(base);\n}\nfunction $6946bfb4689eabba$var$onTouchStart(event) {\n    const swiper = this;\n    const document1 = (0, $768c2f4c151a0363$export$39b482c5e57630a8)();\n    const window1 = (0, $768c2f4c151a0363$export$407448d2b89b1813)();\n    const data = swiper.touchEventsData;\n    data.evCache.push(event);\n    const { params: params, touches: touches, enabled: enabled } = swiper;\n    if (!enabled) return;\n    if (!params.simulateTouch && event.pointerType === \"mouse\") return;\n    if (swiper.animating && params.preventInteractionOnTransition) return;\n    if (!swiper.animating && params.cssMode && params.loop) swiper.loopFix();\n    let e = event;\n    if (e.originalEvent) e = e.originalEvent;\n    let targetEl = e.target;\n    if (params.touchEventsTarget === \"wrapper\") {\n        if (!swiper.wrapperEl.contains(targetEl)) return;\n    }\n    if (\"which\" in e && e.which === 3) return;\n    if (\"button\" in e && e.button > 0) return;\n    if (data.isTouched && data.isMoved) return;\n    // change target el for shadow root component\n    const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== \"\";\n    // eslint-disable-next-line\n    const eventPath = event.composedPath ? event.composedPath() : event.path;\n    if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) targetEl = eventPath[0];\n    const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n    const isTargetShadow = !!(e.target && e.target.shadowRoot);\n    // use closestElement for shadow root element to get the actual closest for nested shadow root element\n    if (params.noSwiping && (isTargetShadow ? $6946bfb4689eabba$var$closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) {\n        swiper.allowClick = true;\n        return;\n    }\n    if (params.swipeHandler) {\n        if (!targetEl.closest(params.swipeHandler)) return;\n    }\n    touches.currentX = e.pageX;\n    touches.currentY = e.pageY;\n    const startX = touches.currentX;\n    const startY = touches.currentY;\n    // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n    const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n    const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n    if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window1.innerWidth - edgeSwipeThreshold)) {\n        if (edgeSwipeDetection === \"prevent\") event.preventDefault();\n        else return;\n    }\n    Object.assign(data, {\n        isTouched: true,\n        isMoved: false,\n        allowTouchCallbacks: true,\n        isScrolling: undefined,\n        startMoving: undefined\n    });\n    touches.startX = startX;\n    touches.startY = startY;\n    data.touchStartTime = (0, $3e0e2b092da8f124$export$4368d992c4eafac0)();\n    swiper.allowClick = true;\n    swiper.updateSize();\n    swiper.swipeDirection = undefined;\n    if (params.threshold > 0) data.allowThresholdMove = false;\n    let preventDefault = true;\n    if (targetEl.matches(data.focusableElements)) {\n        preventDefault = false;\n        if (targetEl.nodeName === \"SELECT\") data.isTouched = false;\n    }\n    if (document1.activeElement && document1.activeElement.matches(data.focusableElements) && document1.activeElement !== targetEl) document1.activeElement.blur();\n    const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n    if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) e.preventDefault();\n    if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) swiper.freeMode.onTouchStart();\n    swiper.emit(\"touchStart\", e);\n}\nfunction $6946bfb4689eabba$var$onTouchMove(event) {\n    const document1 = (0, $768c2f4c151a0363$export$39b482c5e57630a8)();\n    const swiper = this;\n    const data = swiper.touchEventsData;\n    const { params: params, touches: touches, rtlTranslate: rtl, enabled: enabled } = swiper;\n    if (!enabled) return;\n    if (!params.simulateTouch && event.pointerType === \"mouse\") return;\n    let e = event;\n    if (e.originalEvent) e = e.originalEvent;\n    if (!data.isTouched) {\n        if (data.startMoving && data.isScrolling) swiper.emit(\"touchMoveOpposite\", e);\n        return;\n    }\n    const pointerIndex = data.evCache.findIndex((cachedEv)=>cachedEv.pointerId === e.pointerId);\n    if (pointerIndex >= 0) data.evCache[pointerIndex] = e;\n    const targetTouch = data.evCache.length > 1 ? data.evCache[0] : e;\n    const pageX = targetTouch.pageX;\n    const pageY = targetTouch.pageY;\n    if (e.preventedByNestedSwiper) {\n        touches.startX = pageX;\n        touches.startY = pageY;\n        return;\n    }\n    if (!swiper.allowTouchMove) {\n        if (!e.target.matches(data.focusableElements)) swiper.allowClick = false;\n        if (data.isTouched) {\n            Object.assign(touches, {\n                startX: pageX,\n                startY: pageY,\n                prevX: swiper.touches.currentX,\n                prevY: swiper.touches.currentY,\n                currentX: pageX,\n                currentY: pageY\n            });\n            data.touchStartTime = (0, $3e0e2b092da8f124$export$4368d992c4eafac0)();\n        }\n        return;\n    }\n    if (params.touchReleaseOnEdges && !params.loop) {\n        if (swiper.isVertical()) // Vertical\n        {\n            if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n                data.isTouched = false;\n                data.isMoved = false;\n                return;\n            }\n        } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) return;\n    }\n    if (document1.activeElement) {\n        if (e.target === document1.activeElement && e.target.matches(data.focusableElements)) {\n            data.isMoved = true;\n            swiper.allowClick = false;\n            return;\n        }\n    }\n    if (data.allowTouchCallbacks) swiper.emit(\"touchMove\", e);\n    if (e.targetTouches && e.targetTouches.length > 1) return;\n    touches.currentX = pageX;\n    touches.currentY = pageY;\n    const diffX = touches.currentX - touches.startX;\n    const diffY = touches.currentY - touches.startY;\n    if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n    if (typeof data.isScrolling === \"undefined\") {\n        let touchAngle;\n        if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) data.isScrolling = false;\n        else // eslint-disable-next-line\n        if (diffX * diffX + diffY * diffY >= 25) {\n            touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n            data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n        }\n    }\n    if (data.isScrolling) swiper.emit(\"touchMoveOpposite\", e);\n    if (typeof data.startMoving === \"undefined\") {\n        if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) data.startMoving = true;\n    }\n    if (data.isScrolling || swiper.zoom && swiper.params.zoom && swiper.params.zoom.enabled && data.evCache.length > 1) {\n        data.isTouched = false;\n        return;\n    }\n    if (!data.startMoving) return;\n    swiper.allowClick = false;\n    if (!params.cssMode && e.cancelable) e.preventDefault();\n    if (params.touchMoveStopPropagation && !params.nested) e.stopPropagation();\n    let diff = swiper.isHorizontal() ? diffX : diffY;\n    let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY;\n    if (params.oneWayMovement) {\n        diff = Math.abs(diff) * (rtl ? 1 : -1);\n        touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1);\n    }\n    touches.diff = diff;\n    diff *= params.touchRatio;\n    if (rtl) {\n        diff = -diff;\n        touchesDiff = -touchesDiff;\n    }\n    const prevTouchesDirection = swiper.touchesDirection;\n    swiper.swipeDirection = diff > 0 ? \"prev\" : \"next\";\n    swiper.touchesDirection = touchesDiff > 0 ? \"prev\" : \"next\";\n    const isLoop = swiper.params.loop && !params.cssMode;\n    if (!data.isMoved) {\n        if (isLoop) swiper.loopFix({\n            direction: swiper.swipeDirection\n        });\n        data.startTranslate = swiper.getTranslate();\n        swiper.setTransition(0);\n        if (swiper.animating) {\n            const evt = new window.CustomEvent(\"transitionend\", {\n                bubbles: true,\n                cancelable: true\n            });\n            swiper.wrapperEl.dispatchEvent(evt);\n        }\n        data.allowMomentumBounce = false;\n        // Grab Cursor\n        if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) swiper.setGrabCursor(true);\n        swiper.emit(\"sliderFirstMove\", e);\n    }\n    let loopFixed;\n    if (data.isMoved && prevTouchesDirection !== swiper.touchesDirection && isLoop && Math.abs(diff) >= 1) {\n        // need another loop fix\n        swiper.loopFix({\n            direction: swiper.swipeDirection,\n            setTranslate: true\n        });\n        loopFixed = true;\n    }\n    swiper.emit(\"sliderMove\", e);\n    data.isMoved = true;\n    data.currentTranslate = diff + data.startTranslate;\n    let disableParentSwiper = true;\n    let resistanceRatio = params.resistanceRatio;\n    if (params.touchReleaseOnEdges) resistanceRatio = 0;\n    if (diff > 0) {\n        if (isLoop && !loopFixed && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.size / 2 : swiper.minTranslate())) swiper.loopFix({\n            direction: \"prev\",\n            setTranslate: true,\n            activeSlideIndex: 0\n        });\n        if (data.currentTranslate > swiper.minTranslate()) {\n            disableParentSwiper = false;\n            if (params.resistance) data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n        }\n    } else if (diff < 0) {\n        if (isLoop && !loopFixed && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.size / 2 : swiper.maxTranslate())) swiper.loopFix({\n            direction: \"next\",\n            setTranslate: true,\n            activeSlideIndex: swiper.slides.length - (params.slidesPerView === \"auto\" ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10)))\n        });\n        if (data.currentTranslate < swiper.maxTranslate()) {\n            disableParentSwiper = false;\n            if (params.resistance) data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n        }\n    }\n    if (disableParentSwiper) e.preventedByNestedSwiper = true;\n    // Directions locks\n    if (!swiper.allowSlideNext && swiper.swipeDirection === \"next\" && data.currentTranslate < data.startTranslate) data.currentTranslate = data.startTranslate;\n    if (!swiper.allowSlidePrev && swiper.swipeDirection === \"prev\" && data.currentTranslate > data.startTranslate) data.currentTranslate = data.startTranslate;\n    if (!swiper.allowSlidePrev && !swiper.allowSlideNext) data.currentTranslate = data.startTranslate;\n    // Threshold\n    if (params.threshold > 0) {\n        if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n            if (!data.allowThresholdMove) {\n                data.allowThresholdMove = true;\n                touches.startX = touches.currentX;\n                touches.startY = touches.currentY;\n                data.currentTranslate = data.startTranslate;\n                touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n                return;\n            }\n        } else {\n            data.currentTranslate = data.startTranslate;\n            return;\n        }\n    }\n    if (!params.followFinger || params.cssMode) return;\n    // Update active index in free mode\n    if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n        swiper.updateActiveIndex();\n        swiper.updateSlidesClasses();\n    }\n    if (params.freeMode && params.freeMode.enabled && swiper.freeMode) swiper.freeMode.onTouchMove();\n    // Update progress\n    swiper.updateProgress(data.currentTranslate);\n    // Update translate\n    swiper.setTranslate(data.currentTranslate);\n}\nfunction $6946bfb4689eabba$var$onTouchEnd(event) {\n    const swiper = this;\n    const data = swiper.touchEventsData;\n    const pointerIndex = data.evCache.findIndex((cachedEv)=>cachedEv.pointerId === event.pointerId);\n    if (pointerIndex >= 0) data.evCache.splice(pointerIndex, 1);\n    if ([\n        \"pointercancel\",\n        \"pointerout\",\n        \"pointerleave\"\n    ].includes(event.type)) {\n        const proceed = event.type === \"pointercancel\" && (swiper.browser.isSafari || swiper.browser.isWebView);\n        if (!proceed) return;\n    }\n    const { params: params, touches: touches, rtlTranslate: rtl, slidesGrid: slidesGrid, enabled: enabled } = swiper;\n    if (!enabled) return;\n    if (!params.simulateTouch && event.pointerType === \"mouse\") return;\n    let e = event;\n    if (e.originalEvent) e = e.originalEvent;\n    if (data.allowTouchCallbacks) swiper.emit(\"touchEnd\", e);\n    data.allowTouchCallbacks = false;\n    if (!data.isTouched) {\n        if (data.isMoved && params.grabCursor) swiper.setGrabCursor(false);\n        data.isMoved = false;\n        data.startMoving = false;\n        return;\n    }\n    // Return Grab Cursor\n    if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) swiper.setGrabCursor(false);\n    // Time diff\n    const touchEndTime = (0, $3e0e2b092da8f124$export$4368d992c4eafac0)();\n    const timeDiff = touchEndTime - data.touchStartTime;\n    // Tap, doubleTap, Click\n    if (swiper.allowClick) {\n        const pathTree = e.path || e.composedPath && e.composedPath();\n        swiper.updateClickedSlide(pathTree && pathTree[0] || e.target);\n        swiper.emit(\"tap click\", e);\n        if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) swiper.emit(\"doubleTap doubleClick\", e);\n    }\n    data.lastClickTime = (0, $3e0e2b092da8f124$export$4368d992c4eafac0)();\n    (0, $3e0e2b092da8f124$export$7ccc53e8f1e7dfc5)(()=>{\n        if (!swiper.destroyed) swiper.allowClick = true;\n    });\n    if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n        data.isTouched = false;\n        data.isMoved = false;\n        data.startMoving = false;\n        return;\n    }\n    data.isTouched = false;\n    data.isMoved = false;\n    data.startMoving = false;\n    let currentPos;\n    if (params.followFinger) currentPos = rtl ? swiper.translate : -swiper.translate;\n    else currentPos = -data.currentTranslate;\n    if (params.cssMode) return;\n    if (params.freeMode && params.freeMode.enabled) {\n        swiper.freeMode.onTouchEnd({\n            currentPos: currentPos\n        });\n        return;\n    }\n    // Find current slide\n    let stopIndex = 0;\n    let groupSize = swiper.slidesSizesGrid[0];\n    for(let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup){\n        const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n        if (typeof slidesGrid[i + increment] !== \"undefined\") {\n            if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n                stopIndex = i;\n                groupSize = slidesGrid[i + increment] - slidesGrid[i];\n            }\n        } else if (currentPos >= slidesGrid[i]) {\n            stopIndex = i;\n            groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n        }\n    }\n    let rewindFirstIndex = null;\n    let rewindLastIndex = null;\n    if (params.rewind) {\n        if (swiper.isBeginning) rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n        else if (swiper.isEnd) rewindFirstIndex = 0;\n    }\n    // Find current slide size\n    const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n    const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n    if (timeDiff > params.longSwipesMs) {\n        // Long touches\n        if (!params.longSwipes) {\n            swiper.slideTo(swiper.activeIndex);\n            return;\n        }\n        if (swiper.swipeDirection === \"next\") {\n            if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);\n            else swiper.slideTo(stopIndex);\n        }\n        if (swiper.swipeDirection === \"prev\") {\n            if (ratio > 1 - params.longSwipesRatio) swiper.slideTo(stopIndex + increment);\n            else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) swiper.slideTo(rewindLastIndex);\n            else swiper.slideTo(stopIndex);\n        }\n    } else {\n        // Short swipes\n        if (!params.shortSwipes) {\n            swiper.slideTo(swiper.activeIndex);\n            return;\n        }\n        const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n        if (!isNavButtonTarget) {\n            if (swiper.swipeDirection === \"next\") swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n            if (swiper.swipeDirection === \"prev\") swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n        } else if (e.target === swiper.navigation.nextEl) swiper.slideTo(stopIndex + increment);\n        else swiper.slideTo(stopIndex);\n    }\n}\nfunction $6946bfb4689eabba$var$onResize() {\n    const swiper = this;\n    const { params: params, el: el } = swiper;\n    if (el && el.offsetWidth === 0) return;\n    // Breakpoints\n    if (params.breakpoints) swiper.setBreakpoint();\n    // Save locks\n    const { allowSlideNext: allowSlideNext, allowSlidePrev: allowSlidePrev, snapGrid: snapGrid } = swiper;\n    const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n    // Disable locks on resize\n    swiper.allowSlideNext = true;\n    swiper.allowSlidePrev = true;\n    swiper.updateSize();\n    swiper.updateSlides();\n    swiper.updateSlidesClasses();\n    const isVirtualLoop = isVirtual && params.loop;\n    if ((params.slidesPerView === \"auto\" || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n    else if (swiper.params.loop && !isVirtual) swiper.slideToLoop(swiper.realIndex, 0, false, true);\n    else swiper.slideTo(swiper.activeIndex, 0, false, true);\n    if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n        clearTimeout(swiper.autoplay.resizeTimeout);\n        swiper.autoplay.resizeTimeout = setTimeout(()=>{\n            if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) swiper.autoplay.resume();\n        }, 500);\n    }\n    // Return locks after resize\n    swiper.allowSlidePrev = allowSlidePrev;\n    swiper.allowSlideNext = allowSlideNext;\n    if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) swiper.checkOverflow();\n}\nfunction $6946bfb4689eabba$var$onClick(e) {\n    const swiper = this;\n    if (!swiper.enabled) return;\n    if (!swiper.allowClick) {\n        if (swiper.params.preventClicks) e.preventDefault();\n        if (swiper.params.preventClicksPropagation && swiper.animating) {\n            e.stopPropagation();\n            e.stopImmediatePropagation();\n        }\n    }\n}\nfunction $6946bfb4689eabba$var$onScroll() {\n    const swiper = this;\n    const { wrapperEl: wrapperEl, rtlTranslate: rtlTranslate, enabled: enabled } = swiper;\n    if (!enabled) return;\n    swiper.previousTranslate = swiper.translate;\n    if (swiper.isHorizontal()) swiper.translate = -wrapperEl.scrollLeft;\n    else swiper.translate = -wrapperEl.scrollTop;\n    // eslint-disable-next-line\n    if (swiper.translate === 0) swiper.translate = 0;\n    swiper.updateActiveIndex();\n    swiper.updateSlidesClasses();\n    let newProgress;\n    const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n    if (translatesDiff === 0) newProgress = 0;\n    else newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n    if (newProgress !== swiper.progress) swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n    swiper.emit(\"setTranslate\", swiper.translate, false);\n}\nfunction $6946bfb4689eabba$var$onLoad(e) {\n    const swiper = this;\n    $6946bfb4689eabba$var$processLazyPreloader(swiper, e.target);\n    if (swiper.params.cssMode || swiper.params.slidesPerView !== \"auto\" && !swiper.params.autoHeight) return;\n    swiper.update();\n}\nlet $6946bfb4689eabba$var$dummyEventAttached = false;\nfunction $6946bfb4689eabba$var$dummyEventListener() {}\nconst $6946bfb4689eabba$var$events = (swiper, method)=>{\n    const document1 = (0, $768c2f4c151a0363$export$39b482c5e57630a8)();\n    const { params: params, el: el, wrapperEl: wrapperEl, device: device } = swiper;\n    const capture = !!params.nested;\n    const domMethod = method === \"on\" ? \"addEventListener\" : \"removeEventListener\";\n    const swiperMethod = method;\n    // Touch Events\n    el[domMethod](\"pointerdown\", swiper.onTouchStart, {\n        passive: false\n    });\n    document1[domMethod](\"pointermove\", swiper.onTouchMove, {\n        passive: false,\n        capture: capture\n    });\n    document1[domMethod](\"pointerup\", swiper.onTouchEnd, {\n        passive: true\n    });\n    document1[domMethod](\"pointercancel\", swiper.onTouchEnd, {\n        passive: true\n    });\n    document1[domMethod](\"pointerout\", swiper.onTouchEnd, {\n        passive: true\n    });\n    document1[domMethod](\"pointerleave\", swiper.onTouchEnd, {\n        passive: true\n    });\n    // Prevent Links Clicks\n    if (params.preventClicks || params.preventClicksPropagation) el[domMethod](\"click\", swiper.onClick, true);\n    if (params.cssMode) wrapperEl[domMethod](\"scroll\", swiper.onScroll);\n    // Resize handler\n    if (params.updateOnWindowResize) swiper[swiperMethod](device.ios || device.android ? \"resize orientationchange observerUpdate\" : \"resize observerUpdate\", $6946bfb4689eabba$var$onResize, true);\n    else swiper[swiperMethod](\"observerUpdate\", $6946bfb4689eabba$var$onResize, true);\n    // Images loader\n    el[domMethod](\"load\", swiper.onLoad, {\n        capture: true\n    });\n};\nfunction $6946bfb4689eabba$var$attachEvents() {\n    const swiper = this;\n    const document1 = (0, $768c2f4c151a0363$export$39b482c5e57630a8)();\n    const { params: params } = swiper;\n    swiper.onTouchStart = $6946bfb4689eabba$var$onTouchStart.bind(swiper);\n    swiper.onTouchMove = $6946bfb4689eabba$var$onTouchMove.bind(swiper);\n    swiper.onTouchEnd = $6946bfb4689eabba$var$onTouchEnd.bind(swiper);\n    if (params.cssMode) swiper.onScroll = $6946bfb4689eabba$var$onScroll.bind(swiper);\n    swiper.onClick = $6946bfb4689eabba$var$onClick.bind(swiper);\n    swiper.onLoad = $6946bfb4689eabba$var$onLoad.bind(swiper);\n    if (!$6946bfb4689eabba$var$dummyEventAttached) {\n        document1.addEventListener(\"touchstart\", $6946bfb4689eabba$var$dummyEventListener);\n        $6946bfb4689eabba$var$dummyEventAttached = true;\n    }\n    $6946bfb4689eabba$var$events(swiper, \"on\");\n}\nfunction $6946bfb4689eabba$var$detachEvents() {\n    const swiper = this;\n    $6946bfb4689eabba$var$events(swiper, \"off\");\n}\nvar $6946bfb4689eabba$var$events$1 = {\n    attachEvents: $6946bfb4689eabba$var$attachEvents,\n    detachEvents: $6946bfb4689eabba$var$detachEvents\n};\nconst $6946bfb4689eabba$var$isGridEnabled = (swiper, params)=>{\n    return swiper.grid && params.grid && params.grid.rows > 1;\n};\nfunction $6946bfb4689eabba$var$setBreakpoint() {\n    const swiper = this;\n    const { realIndex: realIndex, initialized: initialized, params: params, el: el } = swiper;\n    const breakpoints = params.breakpoints;\n    if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return;\n    // Get breakpoint for window width and update parameters\n    const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n    if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n    const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n    const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n    const wasMultiRow = $6946bfb4689eabba$var$isGridEnabled(swiper, params);\n    const isMultiRow = $6946bfb4689eabba$var$isGridEnabled(swiper, breakpointParams);\n    const wasEnabled = params.enabled;\n    if (wasMultiRow && !isMultiRow) {\n        el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n        swiper.emitContainerClasses();\n    } else if (!wasMultiRow && isMultiRow) {\n        el.classList.add(`${params.containerModifierClass}grid`);\n        if (breakpointParams.grid.fill && breakpointParams.grid.fill === \"column\" || !breakpointParams.grid.fill && params.grid.fill === \"column\") el.classList.add(`${params.containerModifierClass}grid-column`);\n        swiper.emitContainerClasses();\n    }\n    // Toggle navigation, pagination, scrollbar\n    [\n        \"navigation\",\n        \"pagination\",\n        \"scrollbar\"\n    ].forEach((prop)=>{\n        if (typeof breakpointParams[prop] === \"undefined\") return;\n        const wasModuleEnabled = params[prop] && params[prop].enabled;\n        const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n        if (wasModuleEnabled && !isModuleEnabled) swiper[prop].disable();\n        if (!wasModuleEnabled && isModuleEnabled) swiper[prop].enable();\n    });\n    const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n    const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n    if (directionChanged && initialized) swiper.changeDirection();\n    (0, $3e0e2b092da8f124$export$9e5f44173e64f162)(swiper.params, breakpointParams);\n    const isEnabled = swiper.params.enabled;\n    Object.assign(swiper, {\n        allowTouchMove: swiper.params.allowTouchMove,\n        allowSlideNext: swiper.params.allowSlideNext,\n        allowSlidePrev: swiper.params.allowSlidePrev\n    });\n    if (wasEnabled && !isEnabled) swiper.disable();\n    else if (!wasEnabled && isEnabled) swiper.enable();\n    swiper.currentBreakpoint = breakpoint;\n    swiper.emit(\"_beforeBreakpoint\", breakpointParams);\n    if (needsReLoop && initialized) {\n        swiper.loopDestroy();\n        swiper.loopCreate(realIndex);\n        swiper.updateSlides();\n    }\n    swiper.emit(\"breakpoint\", breakpointParams);\n}\nfunction $6946bfb4689eabba$var$getBreakpoint(breakpoints, base, containerEl) {\n    if (base === void 0) base = \"window\";\n    if (!breakpoints || base === \"container\" && !containerEl) return undefined;\n    let breakpoint = false;\n    const window1 = (0, $768c2f4c151a0363$export$407448d2b89b1813)();\n    const currentHeight = base === \"window\" ? window1.innerHeight : containerEl.clientHeight;\n    const points = Object.keys(breakpoints).map((point)=>{\n        if (typeof point === \"string\" && point.indexOf(\"@\") === 0) {\n            const minRatio = parseFloat(point.substr(1));\n            const value = currentHeight * minRatio;\n            return {\n                value: value,\n                point: point\n            };\n        }\n        return {\n            value: point,\n            point: point\n        };\n    });\n    points.sort((a, b)=>parseInt(a.value, 10) - parseInt(b.value, 10));\n    for(let i = 0; i < points.length; i += 1){\n        const { point: point, value: value } = points[i];\n        if (base === \"window\") {\n            if (window1.matchMedia(`(min-width: ${value}px)`).matches) breakpoint = point;\n        } else if (value <= containerEl.clientWidth) breakpoint = point;\n    }\n    return breakpoint || \"max\";\n}\nvar $6946bfb4689eabba$var$breakpoints = {\n    setBreakpoint: $6946bfb4689eabba$var$setBreakpoint,\n    getBreakpoint: $6946bfb4689eabba$var$getBreakpoint\n};\nfunction $6946bfb4689eabba$var$prepareClasses(entries, prefix) {\n    const resultClasses = [];\n    entries.forEach((item)=>{\n        if (typeof item === \"object\") Object.keys(item).forEach((classNames)=>{\n            if (item[classNames]) resultClasses.push(prefix + classNames);\n        });\n        else if (typeof item === \"string\") resultClasses.push(prefix + item);\n    });\n    return resultClasses;\n}\nfunction $6946bfb4689eabba$var$addClasses() {\n    const swiper = this;\n    const { classNames: classNames, params: params, rtl: rtl, el: el, device: device } = swiper;\n    // prettier-ignore\n    const suffixes = $6946bfb4689eabba$var$prepareClasses([\n        \"initialized\",\n        params.direction,\n        {\n            \"free-mode\": swiper.params.freeMode && params.freeMode.enabled\n        },\n        {\n            \"autoheight\": params.autoHeight\n        },\n        {\n            \"rtl\": rtl\n        },\n        {\n            \"grid\": params.grid && params.grid.rows > 1\n        },\n        {\n            \"grid-column\": params.grid && params.grid.rows > 1 && params.grid.fill === \"column\"\n        },\n        {\n            \"android\": device.android\n        },\n        {\n            \"ios\": device.ios\n        },\n        {\n            \"css-mode\": params.cssMode\n        },\n        {\n            \"centered\": params.cssMode && params.centeredSlides\n        },\n        {\n            \"watch-progress\": params.watchSlidesProgress\n        }\n    ], params.containerModifierClass);\n    classNames.push(...suffixes);\n    el.classList.add(...classNames);\n    swiper.emitContainerClasses();\n}\nfunction $6946bfb4689eabba$var$removeClasses() {\n    const swiper = this;\n    const { el: el, classNames: classNames } = swiper;\n    el.classList.remove(...classNames);\n    swiper.emitContainerClasses();\n}\nvar $6946bfb4689eabba$var$classes = {\n    addClasses: $6946bfb4689eabba$var$addClasses,\n    removeClasses: $6946bfb4689eabba$var$removeClasses\n};\nfunction $6946bfb4689eabba$var$checkOverflow() {\n    const swiper = this;\n    const { isLocked: wasLocked, params: params } = swiper;\n    const { slidesOffsetBefore: slidesOffsetBefore } = params;\n    if (slidesOffsetBefore) {\n        const lastSlideIndex = swiper.slides.length - 1;\n        const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n        swiper.isLocked = swiper.size > lastSlideRightEdge;\n    } else swiper.isLocked = swiper.snapGrid.length === 1;\n    if (params.allowSlideNext === true) swiper.allowSlideNext = !swiper.isLocked;\n    if (params.allowSlidePrev === true) swiper.allowSlidePrev = !swiper.isLocked;\n    if (wasLocked && wasLocked !== swiper.isLocked) swiper.isEnd = false;\n    if (wasLocked !== swiper.isLocked) swiper.emit(swiper.isLocked ? \"lock\" : \"unlock\");\n}\nvar $6946bfb4689eabba$var$checkOverflow$1 = {\n    checkOverflow: $6946bfb4689eabba$var$checkOverflow\n};\nvar $6946bfb4689eabba$export$4368d992c4eafac0 = {\n    init: true,\n    direction: \"horizontal\",\n    oneWayMovement: false,\n    touchEventsTarget: \"wrapper\",\n    initialSlide: 0,\n    speed: 300,\n    cssMode: false,\n    updateOnWindowResize: true,\n    resizeObserver: true,\n    nested: false,\n    createElements: false,\n    enabled: true,\n    focusableElements: \"input, select, option, textarea, button, video, label\",\n    // Overrides\n    width: null,\n    height: null,\n    //\n    preventInteractionOnTransition: false,\n    // ssr\n    userAgent: null,\n    url: null,\n    // To support iOS's swipe-to-go-back gesture (when being used in-app).\n    edgeSwipeDetection: false,\n    edgeSwipeThreshold: 20,\n    // Autoheight\n    autoHeight: false,\n    // Set wrapper width\n    setWrapperSize: false,\n    // Virtual Translate\n    virtualTranslate: false,\n    // Effects\n    effect: \"slide\",\n    // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n    // Breakpoints\n    breakpoints: undefined,\n    breakpointsBase: \"window\",\n    // Slides grid\n    spaceBetween: 0,\n    slidesPerView: 1,\n    slidesPerGroup: 1,\n    slidesPerGroupSkip: 0,\n    slidesPerGroupAuto: false,\n    centeredSlides: false,\n    centeredSlidesBounds: false,\n    slidesOffsetBefore: 0,\n    // in px\n    slidesOffsetAfter: 0,\n    // in px\n    normalizeSlideIndex: true,\n    centerInsufficientSlides: false,\n    // Disable swiper and hide navigation when container not overflow\n    watchOverflow: true,\n    // Round length\n    roundLengths: false,\n    // Touches\n    touchRatio: 1,\n    touchAngle: 45,\n    simulateTouch: true,\n    shortSwipes: true,\n    longSwipes: true,\n    longSwipesRatio: 0.5,\n    longSwipesMs: 300,\n    followFinger: true,\n    allowTouchMove: true,\n    threshold: 5,\n    touchMoveStopPropagation: false,\n    touchStartPreventDefault: true,\n    touchStartForcePreventDefault: false,\n    touchReleaseOnEdges: false,\n    // Unique Navigation Elements\n    uniqueNavElements: true,\n    // Resistance\n    resistance: true,\n    resistanceRatio: 0.85,\n    // Progress\n    watchSlidesProgress: false,\n    // Cursor\n    grabCursor: false,\n    // Clicks\n    preventClicks: true,\n    preventClicksPropagation: true,\n    slideToClickedSlide: false,\n    // loop\n    loop: false,\n    loopedSlides: null,\n    loopPreventsSliding: true,\n    // rewind\n    rewind: false,\n    // Swiping/no swiping\n    allowSlidePrev: true,\n    allowSlideNext: true,\n    swipeHandler: null,\n    // '.swipe-handler',\n    noSwiping: true,\n    noSwipingClass: \"swiper-no-swiping\",\n    noSwipingSelector: null,\n    // Passive Listeners\n    passiveListeners: true,\n    maxBackfaceHiddenSlides: 10,\n    // NS\n    containerModifierClass: \"swiper-\",\n    // NEW\n    slideClass: \"swiper-slide\",\n    slideActiveClass: \"swiper-slide-active\",\n    slideVisibleClass: \"swiper-slide-visible\",\n    slideNextClass: \"swiper-slide-next\",\n    slidePrevClass: \"swiper-slide-prev\",\n    wrapperClass: \"swiper-wrapper\",\n    lazyPreloaderClass: \"swiper-lazy-preloader\",\n    lazyPreloadPrevNext: 0,\n    // Callbacks\n    runCallbacksOnInit: true,\n    // Internals\n    _emitClasses: false\n};\nfunction $6946bfb4689eabba$var$moduleExtendParams(params, allModulesParams) {\n    return function extendParams(obj) {\n        if (obj === void 0) obj = {};\n        const moduleParamName = Object.keys(obj)[0];\n        const moduleParams = obj[moduleParamName];\n        if (typeof moduleParams !== \"object\" || moduleParams === null) {\n            (0, $3e0e2b092da8f124$export$9e5f44173e64f162)(allModulesParams, obj);\n            return;\n        }\n        if ([\n            \"navigation\",\n            \"pagination\",\n            \"scrollbar\"\n        ].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) params[moduleParamName] = {\n            auto: true\n        };\n        if (!(moduleParamName in params && \"enabled\" in moduleParams)) {\n            (0, $3e0e2b092da8f124$export$9e5f44173e64f162)(allModulesParams, obj);\n            return;\n        }\n        if (params[moduleParamName] === true) params[moduleParamName] = {\n            enabled: true\n        };\n        if (typeof params[moduleParamName] === \"object\" && !(\"enabled\" in params[moduleParamName])) params[moduleParamName].enabled = true;\n        if (!params[moduleParamName]) params[moduleParamName] = {\n            enabled: false\n        };\n        (0, $3e0e2b092da8f124$export$9e5f44173e64f162)(allModulesParams, obj);\n    };\n}\n/* eslint no-param-reassign: \"off\" */ const $6946bfb4689eabba$var$prototypes = {\n    eventsEmitter: $6946bfb4689eabba$var$eventsEmitter,\n    update: $6946bfb4689eabba$var$update,\n    translate: $6946bfb4689eabba$var$translate,\n    transition: $6946bfb4689eabba$var$transition,\n    slide: $6946bfb4689eabba$var$slide,\n    loop: $6946bfb4689eabba$var$loop,\n    grabCursor: $6946bfb4689eabba$var$grabCursor,\n    events: $6946bfb4689eabba$var$events$1,\n    breakpoints: $6946bfb4689eabba$var$breakpoints,\n    checkOverflow: $6946bfb4689eabba$var$checkOverflow$1,\n    classes: $6946bfb4689eabba$var$classes\n};\nconst $6946bfb4689eabba$var$extendedDefaults = {};\nclass $6946bfb4689eabba$export$25ce5a424b770e84 {\n    constructor(){\n        let el;\n        let params;\n        for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++)args[_key] = arguments[_key];\n        if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === \"Object\") params = args[0];\n        else [el, params] = args;\n        if (!params) params = {};\n        params = (0, $3e0e2b092da8f124$export$9e5f44173e64f162)({}, params);\n        if (el && !params.el) params.el = el;\n        const document1 = (0, $768c2f4c151a0363$export$39b482c5e57630a8)();\n        if (params.el && typeof params.el === \"string\" && document1.querySelectorAll(params.el).length > 1) {\n            const swipers = [];\n            document1.querySelectorAll(params.el).forEach((containerEl)=>{\n                const newParams = (0, $3e0e2b092da8f124$export$9e5f44173e64f162)({}, params, {\n                    el: containerEl\n                });\n                swipers.push(new $6946bfb4689eabba$export$25ce5a424b770e84(newParams));\n            });\n            // eslint-disable-next-line no-constructor-return\n            return swipers;\n        }\n        // Swiper Instance\n        const swiper = this;\n        swiper.__swiper__ = true;\n        swiper.support = $6946bfb4689eabba$var$getSupport();\n        swiper.device = $6946bfb4689eabba$var$getDevice({\n            userAgent: params.userAgent\n        });\n        swiper.browser = $6946bfb4689eabba$var$getBrowser();\n        swiper.eventsListeners = {};\n        swiper.eventsAnyListeners = [];\n        swiper.modules = [\n            ...swiper.__modules__\n        ];\n        if (params.modules && Array.isArray(params.modules)) swiper.modules.push(...params.modules);\n        const allModulesParams = {};\n        swiper.modules.forEach((mod)=>{\n            mod({\n                params: params,\n                swiper: swiper,\n                extendParams: $6946bfb4689eabba$var$moduleExtendParams(params, allModulesParams),\n                on: swiper.on.bind(swiper),\n                once: swiper.once.bind(swiper),\n                off: swiper.off.bind(swiper),\n                emit: swiper.emit.bind(swiper)\n            });\n        });\n        // Extend defaults with modules params\n        const swiperParams = (0, $3e0e2b092da8f124$export$9e5f44173e64f162)({}, $6946bfb4689eabba$export$4368d992c4eafac0, allModulesParams);\n        // Extend defaults with passed params\n        swiper.params = (0, $3e0e2b092da8f124$export$9e5f44173e64f162)({}, swiperParams, $6946bfb4689eabba$var$extendedDefaults, params);\n        swiper.originalParams = (0, $3e0e2b092da8f124$export$9e5f44173e64f162)({}, swiper.params);\n        swiper.passedParams = (0, $3e0e2b092da8f124$export$9e5f44173e64f162)({}, params);\n        // add event listeners\n        if (swiper.params && swiper.params.on) Object.keys(swiper.params.on).forEach((eventName)=>{\n            swiper.on(eventName, swiper.params.on[eventName]);\n        });\n        if (swiper.params && swiper.params.onAny) swiper.onAny(swiper.params.onAny);\n        // Extend Swiper\n        Object.assign(swiper, {\n            enabled: swiper.params.enabled,\n            el: el,\n            // Classes\n            classNames: [],\n            // Slides\n            slides: [],\n            slidesGrid: [],\n            snapGrid: [],\n            slidesSizesGrid: [],\n            // isDirection\n            isHorizontal () {\n                return swiper.params.direction === \"horizontal\";\n            },\n            isVertical () {\n                return swiper.params.direction === \"vertical\";\n            },\n            // Indexes\n            activeIndex: 0,\n            realIndex: 0,\n            //\n            isBeginning: true,\n            isEnd: false,\n            // Props\n            translate: 0,\n            previousTranslate: 0,\n            progress: 0,\n            velocity: 0,\n            animating: false,\n            cssOverflowAdjustment () {\n                // Returns 0 unless `translate` is > 2**23\n                // Should be subtracted from css values to prevent overflow\n                return Math.trunc(this.translate / 2 ** 23) * 2 ** 23;\n            },\n            // Locks\n            allowSlideNext: swiper.params.allowSlideNext,\n            allowSlidePrev: swiper.params.allowSlidePrev,\n            // Touch Events\n            touchEventsData: {\n                isTouched: undefined,\n                isMoved: undefined,\n                allowTouchCallbacks: undefined,\n                touchStartTime: undefined,\n                isScrolling: undefined,\n                currentTranslate: undefined,\n                startTranslate: undefined,\n                allowThresholdMove: undefined,\n                // Form elements to match\n                focusableElements: swiper.params.focusableElements,\n                // Last click time\n                lastClickTime: 0,\n                clickTimeout: undefined,\n                // Velocities\n                velocities: [],\n                allowMomentumBounce: undefined,\n                startMoving: undefined,\n                evCache: []\n            },\n            // Clicks\n            allowClick: true,\n            // Touches\n            allowTouchMove: swiper.params.allowTouchMove,\n            touches: {\n                startX: 0,\n                startY: 0,\n                currentX: 0,\n                currentY: 0,\n                diff: 0\n            },\n            // Images\n            imagesToLoad: [],\n            imagesLoaded: 0\n        });\n        swiper.emit(\"_swiper\");\n        // Init\n        if (swiper.params.init) swiper.init();\n        // Return app instance\n        // eslint-disable-next-line no-constructor-return\n        return swiper;\n    }\n    getSlideIndex(slideEl) {\n        const { slidesEl: slidesEl, params: params } = this;\n        const slides = (0, $3e0e2b092da8f124$export$f1e1789686576879)(slidesEl, `.${params.slideClass}, swiper-slide`);\n        const firstSlideIndex = (0, $3e0e2b092da8f124$export$39b482c5e57630a8)(slides[0]);\n        return (0, $3e0e2b092da8f124$export$39b482c5e57630a8)(slideEl) - firstSlideIndex;\n    }\n    getSlideIndexByData(index) {\n        return this.getSlideIndex(this.slides.filter((slideEl)=>slideEl.getAttribute(\"data-swiper-slide-index\") * 1 === index)[0]);\n    }\n    recalcSlides() {\n        const swiper = this;\n        const { slidesEl: slidesEl, params: params } = swiper;\n        swiper.slides = (0, $3e0e2b092da8f124$export$f1e1789686576879)(slidesEl, `.${params.slideClass}, swiper-slide`);\n    }\n    enable() {\n        const swiper = this;\n        if (swiper.enabled) return;\n        swiper.enabled = true;\n        if (swiper.params.grabCursor) swiper.setGrabCursor();\n        swiper.emit(\"enable\");\n    }\n    disable() {\n        const swiper = this;\n        if (!swiper.enabled) return;\n        swiper.enabled = false;\n        if (swiper.params.grabCursor) swiper.unsetGrabCursor();\n        swiper.emit(\"disable\");\n    }\n    setProgress(progress, speed) {\n        const swiper = this;\n        progress = Math.min(Math.max(progress, 0), 1);\n        const min = swiper.minTranslate();\n        const max = swiper.maxTranslate();\n        const current = (max - min) * progress + min;\n        swiper.translateTo(current, typeof speed === \"undefined\" ? 0 : speed);\n        swiper.updateActiveIndex();\n        swiper.updateSlidesClasses();\n    }\n    emitContainerClasses() {\n        const swiper = this;\n        if (!swiper.params._emitClasses || !swiper.el) return;\n        const cls = swiper.el.className.split(\" \").filter((className)=>{\n            return className.indexOf(\"swiper\") === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n        });\n        swiper.emit(\"_containerClasses\", cls.join(\" \"));\n    }\n    getSlideClasses(slideEl) {\n        const swiper = this;\n        if (swiper.destroyed) return \"\";\n        return slideEl.className.split(\" \").filter((className)=>{\n            return className.indexOf(\"swiper-slide\") === 0 || className.indexOf(swiper.params.slideClass) === 0;\n        }).join(\" \");\n    }\n    emitSlidesClasses() {\n        const swiper = this;\n        if (!swiper.params._emitClasses || !swiper.el) return;\n        const updates = [];\n        swiper.slides.forEach((slideEl)=>{\n            const classNames = swiper.getSlideClasses(slideEl);\n            updates.push({\n                slideEl: slideEl,\n                classNames: classNames\n            });\n            swiper.emit(\"_slideClass\", slideEl, classNames);\n        });\n        swiper.emit(\"_slideClasses\", updates);\n    }\n    slidesPerViewDynamic(view, exact) {\n        if (view === void 0) view = \"current\";\n        if (exact === void 0) exact = false;\n        const swiper = this;\n        const { params: params, slides: slides, slidesGrid: slidesGrid, slidesSizesGrid: slidesSizesGrid, size: swiperSize, activeIndex: activeIndex } = swiper;\n        let spv = 1;\n        if (params.centeredSlides) {\n            let slideSize = slides[activeIndex] ? slides[activeIndex].swiperSlideSize : 0;\n            let breakLoop;\n            for(let i = activeIndex + 1; i < slides.length; i += 1)if (slides[i] && !breakLoop) {\n                slideSize += slides[i].swiperSlideSize;\n                spv += 1;\n                if (slideSize > swiperSize) breakLoop = true;\n            }\n            for(let i = activeIndex - 1; i >= 0; i -= 1)if (slides[i] && !breakLoop) {\n                slideSize += slides[i].swiperSlideSize;\n                spv += 1;\n                if (slideSize > swiperSize) breakLoop = true;\n            }\n        } else {\n            // eslint-disable-next-line\n            if (view === \"current\") for(let i = activeIndex + 1; i < slides.length; i += 1){\n                const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n                if (slideInView) spv += 1;\n            }\n            else // previous\n            for(let i = activeIndex - 1; i >= 0; i -= 1){\n                const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n                if (slideInView) spv += 1;\n            }\n        }\n        return spv;\n    }\n    update() {\n        const swiper = this;\n        if (!swiper || swiper.destroyed) return;\n        const { snapGrid: snapGrid, params: params } = swiper;\n        // Breakpoints\n        if (params.breakpoints) swiper.setBreakpoint();\n        [\n            ...swiper.el.querySelectorAll('[loading=\"lazy\"]')\n        ].forEach((imageEl)=>{\n            if (imageEl.complete) $6946bfb4689eabba$var$processLazyPreloader(swiper, imageEl);\n        });\n        swiper.updateSize();\n        swiper.updateSlides();\n        swiper.updateProgress();\n        swiper.updateSlidesClasses();\n        function setTranslate() {\n            const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n            const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n            swiper.setTranslate(newTranslate);\n            swiper.updateActiveIndex();\n            swiper.updateSlidesClasses();\n        }\n        let translated;\n        if (params.freeMode && params.freeMode.enabled && !params.cssMode) {\n            setTranslate();\n            if (params.autoHeight) swiper.updateAutoHeight();\n        } else {\n            if ((params.slidesPerView === \"auto\" || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) {\n                const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides;\n                translated = swiper.slideTo(slides.length - 1, 0, false, true);\n            } else translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n            if (!translated) setTranslate();\n        }\n        if (params.watchOverflow && snapGrid !== swiper.snapGrid) swiper.checkOverflow();\n        swiper.emit(\"update\");\n    }\n    changeDirection(newDirection, needUpdate) {\n        if (needUpdate === void 0) needUpdate = true;\n        const swiper = this;\n        const currentDirection = swiper.params.direction;\n        if (!newDirection) // eslint-disable-next-line\n        newDirection = currentDirection === \"horizontal\" ? \"vertical\" : \"horizontal\";\n        if (newDirection === currentDirection || newDirection !== \"horizontal\" && newDirection !== \"vertical\") return swiper;\n        swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`);\n        swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`);\n        swiper.emitContainerClasses();\n        swiper.params.direction = newDirection;\n        swiper.slides.forEach((slideEl)=>{\n            if (newDirection === \"vertical\") slideEl.style.width = \"\";\n            else slideEl.style.height = \"\";\n        });\n        swiper.emit(\"changeDirection\");\n        if (needUpdate) swiper.update();\n        return swiper;\n    }\n    changeLanguageDirection(direction) {\n        const swiper = this;\n        if (swiper.rtl && direction === \"rtl\" || !swiper.rtl && direction === \"ltr\") return;\n        swiper.rtl = direction === \"rtl\";\n        swiper.rtlTranslate = swiper.params.direction === \"horizontal\" && swiper.rtl;\n        if (swiper.rtl) {\n            swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`);\n            swiper.el.dir = \"rtl\";\n        } else {\n            swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`);\n            swiper.el.dir = \"ltr\";\n        }\n        swiper.update();\n    }\n    mount(element) {\n        const swiper = this;\n        if (swiper.mounted) return true;\n        // Find el\n        let el = element || swiper.params.el;\n        if (typeof el === \"string\") el = document.querySelector(el);\n        if (!el) return false;\n        el.swiper = swiper;\n        if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === \"SWIPER-CONTAINER\") swiper.isElement = true;\n        const getWrapperSelector = ()=>{\n            return `.${(swiper.params.wrapperClass || \"\").trim().split(\" \").join(\".\")}`;\n        };\n        const getWrapper = ()=>{\n            if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n                const res = el.shadowRoot.querySelector(getWrapperSelector());\n                // Children needs to return slot items\n                return res;\n            }\n            return (0, $3e0e2b092da8f124$export$f1e1789686576879)(el, getWrapperSelector())[0];\n        };\n        // Find Wrapper\n        let wrapperEl = getWrapper();\n        if (!wrapperEl && swiper.params.createElements) {\n            wrapperEl = (0, $3e0e2b092da8f124$export$db3b6bfb95261072)(\"div\", swiper.params.wrapperClass);\n            el.append(wrapperEl);\n            (0, $3e0e2b092da8f124$export$f1e1789686576879)(el, `.${swiper.params.slideClass}`).forEach((slideEl)=>{\n                wrapperEl.append(slideEl);\n            });\n        }\n        Object.assign(swiper, {\n            el: el,\n            wrapperEl: wrapperEl,\n            slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl,\n            hostEl: swiper.isElement ? el.parentNode.host : el,\n            mounted: true,\n            // RTL\n            rtl: el.dir.toLowerCase() === \"rtl\" || (0, $3e0e2b092da8f124$export$882b5998b3b9117c)(el, \"direction\") === \"rtl\",\n            rtlTranslate: swiper.params.direction === \"horizontal\" && (el.dir.toLowerCase() === \"rtl\" || (0, $3e0e2b092da8f124$export$882b5998b3b9117c)(el, \"direction\") === \"rtl\"),\n            wrongRTL: (0, $3e0e2b092da8f124$export$882b5998b3b9117c)(wrapperEl, \"display\") === \"-webkit-box\"\n        });\n        return true;\n    }\n    init(el) {\n        const swiper = this;\n        if (swiper.initialized) return swiper;\n        const mounted = swiper.mount(el);\n        if (mounted === false) return swiper;\n        swiper.emit(\"beforeInit\");\n        // Set breakpoint\n        if (swiper.params.breakpoints) swiper.setBreakpoint();\n        // Add Classes\n        swiper.addClasses();\n        // Update size\n        swiper.updateSize();\n        // Update slides\n        swiper.updateSlides();\n        if (swiper.params.watchOverflow) swiper.checkOverflow();\n        // Set Grab Cursor\n        if (swiper.params.grabCursor && swiper.enabled) swiper.setGrabCursor();\n        // Slide To Initial Slide\n        if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true);\n        else swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n        // Create loop\n        if (swiper.params.loop) swiper.loopCreate();\n        // Attach events\n        swiper.attachEvents();\n        [\n            ...swiper.el.querySelectorAll('[loading=\"lazy\"]')\n        ].forEach((imageEl)=>{\n            if (imageEl.complete) $6946bfb4689eabba$var$processLazyPreloader(swiper, imageEl);\n            else imageEl.addEventListener(\"load\", (e)=>{\n                $6946bfb4689eabba$var$processLazyPreloader(swiper, e.target);\n            });\n        });\n        $6946bfb4689eabba$var$preload(swiper);\n        // Init Flag\n        swiper.initialized = true;\n        $6946bfb4689eabba$var$preload(swiper);\n        // Emit\n        swiper.emit(\"init\");\n        swiper.emit(\"afterInit\");\n        return swiper;\n    }\n    destroy(deleteInstance, cleanStyles) {\n        if (deleteInstance === void 0) deleteInstance = true;\n        if (cleanStyles === void 0) cleanStyles = true;\n        const swiper = this;\n        const { params: params, el: el, wrapperEl: wrapperEl, slides: slides } = swiper;\n        if (typeof swiper.params === \"undefined\" || swiper.destroyed) return null;\n        swiper.emit(\"beforeDestroy\");\n        // Init Flag\n        swiper.initialized = false;\n        // Detach events\n        swiper.detachEvents();\n        // Destroy loop\n        if (params.loop) swiper.loopDestroy();\n        // Cleanup styles\n        if (cleanStyles) {\n            swiper.removeClasses();\n            el.removeAttribute(\"style\");\n            wrapperEl.removeAttribute(\"style\");\n            if (slides && slides.length) slides.forEach((slideEl)=>{\n                slideEl.classList.remove(params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n                slideEl.removeAttribute(\"style\");\n                slideEl.removeAttribute(\"data-swiper-slide-index\");\n            });\n        }\n        swiper.emit(\"destroy\");\n        // Detach emitter events\n        Object.keys(swiper.eventsListeners).forEach((eventName)=>{\n            swiper.off(eventName);\n        });\n        if (deleteInstance !== false) {\n            swiper.el.swiper = null;\n            (0, $3e0e2b092da8f124$export$43caf9889c228507)(swiper);\n        }\n        swiper.destroyed = true;\n        return null;\n    }\n    static extendDefaults(newDefaults) {\n        (0, $3e0e2b092da8f124$export$9e5f44173e64f162)($6946bfb4689eabba$var$extendedDefaults, newDefaults);\n    }\n    static get extendedDefaults() {\n        return $6946bfb4689eabba$var$extendedDefaults;\n    }\n    static get defaults() {\n        return $6946bfb4689eabba$export$4368d992c4eafac0;\n    }\n    static installModule(mod) {\n        if (!$6946bfb4689eabba$export$25ce5a424b770e84.prototype.__modules__) $6946bfb4689eabba$export$25ce5a424b770e84.prototype.__modules__ = [];\n        const modules = $6946bfb4689eabba$export$25ce5a424b770e84.prototype.__modules__;\n        if (typeof mod === \"function\" && modules.indexOf(mod) < 0) modules.push(mod);\n    }\n    static use(module) {\n        if (Array.isArray(module)) {\n            module.forEach((m)=>$6946bfb4689eabba$export$25ce5a424b770e84.installModule(m));\n            return $6946bfb4689eabba$export$25ce5a424b770e84;\n        }\n        $6946bfb4689eabba$export$25ce5a424b770e84.installModule(module);\n        return $6946bfb4689eabba$export$25ce5a424b770e84;\n    }\n}\nObject.keys($6946bfb4689eabba$var$prototypes).forEach((prototypeGroup)=>{\n    Object.keys($6946bfb4689eabba$var$prototypes[prototypeGroup]).forEach((protoMethod)=>{\n        $6946bfb4689eabba$export$25ce5a424b770e84.prototype[protoMethod] = $6946bfb4689eabba$var$prototypes[prototypeGroup][protoMethod];\n    });\n});\n$6946bfb4689eabba$export$25ce5a424b770e84.use([\n    $6946bfb4689eabba$var$Resize,\n    $6946bfb4689eabba$var$Observer\n]);\n\n\n\n\n\n\nfunction $46fa7b324a069045$export$2e2bcd8739ae039(_ref) {\n    let { swiper: swiper, extendParams: extendParams, on: on, emit: emit } = _ref;\n    extendParams({\n        virtual: {\n            enabled: false,\n            slides: [],\n            cache: true,\n            renderSlide: null,\n            renderExternal: null,\n            renderExternalUpdate: true,\n            addSlidesBefore: 0,\n            addSlidesAfter: 0\n        }\n    });\n    let cssModeTimeout;\n    const document = (0, $768c2f4c151a0363$export$39b482c5e57630a8)();\n    swiper.virtual = {\n        cache: {},\n        from: undefined,\n        to: undefined,\n        slides: [],\n        offset: 0,\n        slidesGrid: []\n    };\n    const tempDOM = document.createElement(\"div\");\n    function renderSlide(slide, index) {\n        const params = swiper.params.virtual;\n        if (params.cache && swiper.virtual.cache[index]) return swiper.virtual.cache[index];\n        // eslint-disable-next-line\n        let slideEl;\n        if (params.renderSlide) {\n            slideEl = params.renderSlide.call(swiper, slide, index);\n            if (typeof slideEl === \"string\") {\n                tempDOM.innerHTML = slideEl;\n                slideEl = tempDOM.children[0];\n            }\n        } else if (swiper.isElement) slideEl = (0, $3e0e2b092da8f124$export$db3b6bfb95261072)(\"swiper-slide\");\n        else slideEl = (0, $3e0e2b092da8f124$export$db3b6bfb95261072)(\"div\", swiper.params.slideClass);\n        slideEl.setAttribute(\"data-swiper-slide-index\", index);\n        if (!params.renderSlide) slideEl.innerHTML = slide;\n        if (params.cache) swiper.virtual.cache[index] = slideEl;\n        return slideEl;\n    }\n    function update(force) {\n        const { slidesPerView: slidesPerView, slidesPerGroup: slidesPerGroup, centeredSlides: centeredSlides, loop: isLoop } = swiper.params;\n        const { addSlidesBefore: addSlidesBefore, addSlidesAfter: addSlidesAfter } = swiper.params.virtual;\n        const { from: previousFrom, to: previousTo, slides: slides, slidesGrid: previousSlidesGrid, offset: previousOffset } = swiper.virtual;\n        if (!swiper.params.cssMode) swiper.updateActiveIndex();\n        const activeIndex = swiper.activeIndex || 0;\n        let offsetProp;\n        if (swiper.rtlTranslate) offsetProp = \"right\";\n        else offsetProp = swiper.isHorizontal() ? \"left\" : \"top\";\n        let slidesAfter;\n        let slidesBefore;\n        if (centeredSlides) {\n            slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n            slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n        } else {\n            slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;\n            slidesBefore = (isLoop ? slidesPerView : slidesPerGroup) + addSlidesBefore;\n        }\n        let from = activeIndex - slidesBefore;\n        let to = activeIndex + slidesAfter;\n        if (!isLoop) {\n            from = Math.max(from, 0);\n            to = Math.min(to, slides.length - 1);\n        }\n        let offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n        if (isLoop && activeIndex >= slidesBefore) {\n            from -= slidesBefore;\n            if (!centeredSlides) offset += swiper.slidesGrid[0];\n        } else if (isLoop && activeIndex < slidesBefore) {\n            from = -slidesBefore;\n            if (centeredSlides) offset += swiper.slidesGrid[0];\n        }\n        Object.assign(swiper.virtual, {\n            from: from,\n            to: to,\n            offset: offset,\n            slidesGrid: swiper.slidesGrid,\n            slidesBefore: slidesBefore,\n            slidesAfter: slidesAfter\n        });\n        function onRendered() {\n            swiper.updateSlides();\n            swiper.updateProgress();\n            swiper.updateSlidesClasses();\n            emit(\"virtualUpdate\");\n        }\n        if (previousFrom === from && previousTo === to && !force) {\n            if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) swiper.slides.forEach((slideEl)=>{\n                slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;\n            });\n            swiper.updateProgress();\n            emit(\"virtualUpdate\");\n            return;\n        }\n        if (swiper.params.virtual.renderExternal) {\n            swiper.params.virtual.renderExternal.call(swiper, {\n                offset: offset,\n                from: from,\n                to: to,\n                slides: function getSlides() {\n                    const slidesToRender = [];\n                    for(let i = from; i <= to; i += 1)slidesToRender.push(slides[i]);\n                    return slidesToRender;\n                }()\n            });\n            if (swiper.params.virtual.renderExternalUpdate) onRendered();\n            else emit(\"virtualUpdate\");\n            return;\n        }\n        const prependIndexes = [];\n        const appendIndexes = [];\n        const getSlideIndex = (index)=>{\n            let slideIndex = index;\n            if (index < 0) slideIndex = slides.length + index;\n            else if (slideIndex >= slides.length) // eslint-disable-next-line\n            slideIndex = slideIndex - slides.length;\n            return slideIndex;\n        };\n        if (force) swiper.slidesEl.querySelectorAll(`.${swiper.params.slideClass}, swiper-slide`).forEach((slideEl)=>{\n            slideEl.remove();\n        });\n        else {\n            for(let i = previousFrom; i <= previousTo; i += 1)if (i < from || i > to) {\n                const slideIndex = getSlideIndex(i);\n                swiper.slidesEl.querySelectorAll(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${slideIndex}\"], swiper-slide[data-swiper-slide-index=\"${slideIndex}\"]`).forEach((slideEl)=>{\n                    slideEl.remove();\n                });\n            }\n        }\n        const loopFrom = isLoop ? -slides.length : 0;\n        const loopTo = isLoop ? slides.length * 2 : slides.length;\n        for(let i = loopFrom; i < loopTo; i += 1)if (i >= from && i <= to) {\n            const slideIndex = getSlideIndex(i);\n            if (typeof previousTo === \"undefined\" || force) appendIndexes.push(slideIndex);\n            else {\n                if (i > previousTo) appendIndexes.push(slideIndex);\n                if (i < previousFrom) prependIndexes.push(slideIndex);\n            }\n        }\n        appendIndexes.forEach((index)=>{\n            swiper.slidesEl.append(renderSlide(slides[index], index));\n        });\n        if (isLoop) for(let i = prependIndexes.length - 1; i >= 0; i -= 1){\n            const index = prependIndexes[i];\n            swiper.slidesEl.prepend(renderSlide(slides[index], index));\n        }\n        else {\n            prependIndexes.sort((a, b)=>b - a);\n            prependIndexes.forEach((index)=>{\n                swiper.slidesEl.prepend(renderSlide(slides[index], index));\n            });\n        }\n        (0, $3e0e2b092da8f124$export$f1e1789686576879)(swiper.slidesEl, \".swiper-slide, swiper-slide\").forEach((slideEl)=>{\n            slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;\n        });\n        onRendered();\n    }\n    function appendSlide(slides) {\n        if (typeof slides === \"object\" && \"length\" in slides) {\n            for(let i = 0; i < slides.length; i += 1)if (slides[i]) swiper.virtual.slides.push(slides[i]);\n        } else swiper.virtual.slides.push(slides);\n        update(true);\n    }\n    function prependSlide(slides) {\n        const activeIndex = swiper.activeIndex;\n        let newActiveIndex = activeIndex + 1;\n        let numberOfNewSlides = 1;\n        if (Array.isArray(slides)) {\n            for(let i = 0; i < slides.length; i += 1)if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n            newActiveIndex = activeIndex + slides.length;\n            numberOfNewSlides = slides.length;\n        } else swiper.virtual.slides.unshift(slides);\n        if (swiper.params.virtual.cache) {\n            const cache = swiper.virtual.cache;\n            const newCache = {};\n            Object.keys(cache).forEach((cachedIndex)=>{\n                const cachedEl = cache[cachedIndex];\n                const cachedElIndex = cachedEl.getAttribute(\"data-swiper-slide-index\");\n                if (cachedElIndex) cachedEl.setAttribute(\"data-swiper-slide-index\", parseInt(cachedElIndex, 10) + numberOfNewSlides);\n                newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cachedEl;\n            });\n            swiper.virtual.cache = newCache;\n        }\n        update(true);\n        swiper.slideTo(newActiveIndex, 0);\n    }\n    function removeSlide(slidesIndexes) {\n        if (typeof slidesIndexes === \"undefined\" || slidesIndexes === null) return;\n        let activeIndex = swiper.activeIndex;\n        if (Array.isArray(slidesIndexes)) for(let i = slidesIndexes.length - 1; i >= 0; i -= 1){\n            swiper.virtual.slides.splice(slidesIndexes[i], 1);\n            if (swiper.params.virtual.cache) delete swiper.virtual.cache[slidesIndexes[i]];\n            if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n            activeIndex = Math.max(activeIndex, 0);\n        }\n        else {\n            swiper.virtual.slides.splice(slidesIndexes, 1);\n            if (swiper.params.virtual.cache) delete swiper.virtual.cache[slidesIndexes];\n            if (slidesIndexes < activeIndex) activeIndex -= 1;\n            activeIndex = Math.max(activeIndex, 0);\n        }\n        update(true);\n        swiper.slideTo(activeIndex, 0);\n    }\n    function removeAllSlides() {\n        swiper.virtual.slides = [];\n        if (swiper.params.virtual.cache) swiper.virtual.cache = {};\n        update(true);\n        swiper.slideTo(0, 0);\n    }\n    on(\"beforeInit\", ()=>{\n        if (!swiper.params.virtual.enabled) return;\n        let domSlidesAssigned;\n        if (typeof swiper.passedParams.virtual.slides === \"undefined\") {\n            const slides = [\n                ...swiper.slidesEl.children\n            ].filter((el)=>el.matches(`.${swiper.params.slideClass}, swiper-slide`));\n            if (slides && slides.length) {\n                swiper.virtual.slides = [\n                    ...slides\n                ];\n                domSlidesAssigned = true;\n                slides.forEach((slideEl, slideIndex)=>{\n                    slideEl.setAttribute(\"data-swiper-slide-index\", slideIndex);\n                    swiper.virtual.cache[slideIndex] = slideEl;\n                    slideEl.remove();\n                });\n            }\n        }\n        if (!domSlidesAssigned) swiper.virtual.slides = swiper.params.virtual.slides;\n        swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n        swiper.params.watchSlidesProgress = true;\n        swiper.originalParams.watchSlidesProgress = true;\n        if (!swiper.params.initialSlide) update();\n    });\n    on(\"setTranslate\", ()=>{\n        if (!swiper.params.virtual.enabled) return;\n        if (swiper.params.cssMode && !swiper._immediateVirtual) {\n            clearTimeout(cssModeTimeout);\n            cssModeTimeout = setTimeout(()=>{\n                update();\n            }, 100);\n        } else update();\n    });\n    on(\"init update resize\", ()=>{\n        if (!swiper.params.virtual.enabled) return;\n        if (swiper.params.cssMode) (0, $3e0e2b092da8f124$export$2408f22a0fab9ae5)(swiper.wrapperEl, \"--swiper-virtual-size\", `${swiper.virtualSize}px`);\n    });\n    Object.assign(swiper.virtual, {\n        appendSlide: appendSlide,\n        prependSlide: prependSlide,\n        removeSlide: removeSlide,\n        removeAllSlides: removeAllSlides,\n        update: update\n    });\n}\n\n\n\n\n/* eslint-disable consistent-return */ function $398e6017151607ad$export$2e2bcd8739ae039(_ref) {\n    let { swiper: swiper, extendParams: extendParams, on: on, emit: emit } = _ref;\n    const document = (0, $768c2f4c151a0363$export$39b482c5e57630a8)();\n    const window = (0, $768c2f4c151a0363$export$407448d2b89b1813)();\n    swiper.keyboard = {\n        enabled: false\n    };\n    extendParams({\n        keyboard: {\n            enabled: false,\n            onlyInViewport: true,\n            pageUpDown: true\n        }\n    });\n    function handle(event) {\n        if (!swiper.enabled) return;\n        const { rtlTranslate: rtl } = swiper;\n        let e = event;\n        if (e.originalEvent) e = e.originalEvent; // jquery fix\n        const kc = e.keyCode || e.charCode;\n        const pageUpDown = swiper.params.keyboard.pageUpDown;\n        const isPageUp = pageUpDown && kc === 33;\n        const isPageDown = pageUpDown && kc === 34;\n        const isArrowLeft = kc === 37;\n        const isArrowRight = kc === 39;\n        const isArrowUp = kc === 38;\n        const isArrowDown = kc === 40;\n        // Directions locks\n        if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) return false;\n        if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) return false;\n        if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) return undefined;\n        if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === \"input\" || document.activeElement.nodeName.toLowerCase() === \"textarea\")) return undefined;\n        if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {\n            let inView = false;\n            // Check that swiper should be inside of visible area of window\n            if ((0, $3e0e2b092da8f124$export$407448d2b89b1813)(swiper.el, `.${swiper.params.slideClass}, swiper-slide`).length > 0 && (0, $3e0e2b092da8f124$export$407448d2b89b1813)(swiper.el, `.${swiper.params.slideActiveClass}`).length === 0) return undefined;\n            const el = swiper.el;\n            const swiperWidth = el.clientWidth;\n            const swiperHeight = el.clientHeight;\n            const windowWidth = window.innerWidth;\n            const windowHeight = window.innerHeight;\n            const swiperOffset = (0, $3e0e2b092da8f124$export$8b22cf2602fb60ce)(el);\n            if (rtl) swiperOffset.left -= el.scrollLeft;\n            const swiperCoord = [\n                [\n                    swiperOffset.left,\n                    swiperOffset.top\n                ],\n                [\n                    swiperOffset.left + swiperWidth,\n                    swiperOffset.top\n                ],\n                [\n                    swiperOffset.left,\n                    swiperOffset.top + swiperHeight\n                ],\n                [\n                    swiperOffset.left + swiperWidth,\n                    swiperOffset.top + swiperHeight\n                ]\n            ];\n            for(let i = 0; i < swiperCoord.length; i += 1){\n                const point = swiperCoord[i];\n                if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\n                    if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n                    inView = true;\n                }\n            }\n            if (!inView) return undefined;\n        }\n        if (swiper.isHorizontal()) {\n            if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n                if (e.preventDefault) e.preventDefault();\n                else e.returnValue = false;\n            }\n            if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();\n            if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();\n        } else {\n            if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n                if (e.preventDefault) e.preventDefault();\n                else e.returnValue = false;\n            }\n            if (isPageDown || isArrowDown) swiper.slideNext();\n            if (isPageUp || isArrowUp) swiper.slidePrev();\n        }\n        emit(\"keyPress\", kc);\n        return undefined;\n    }\n    function enable() {\n        if (swiper.keyboard.enabled) return;\n        document.addEventListener(\"keydown\", handle);\n        swiper.keyboard.enabled = true;\n    }\n    function disable() {\n        if (!swiper.keyboard.enabled) return;\n        document.removeEventListener(\"keydown\", handle);\n        swiper.keyboard.enabled = false;\n    }\n    on(\"init\", ()=>{\n        if (swiper.params.keyboard.enabled) enable();\n    });\n    on(\"destroy\", ()=>{\n        if (swiper.keyboard.enabled) disable();\n    });\n    Object.assign(swiper.keyboard, {\n        enable: enable,\n        disable: disable\n    });\n}\n\n\n\n\n/* eslint-disable consistent-return */ function $343d866400a2e3c2$export$2e2bcd8739ae039(_ref) {\n    let { swiper: swiper, extendParams: extendParams, on: on, emit: emit } = _ref;\n    const window = (0, $768c2f4c151a0363$export$407448d2b89b1813)();\n    extendParams({\n        mousewheel: {\n            enabled: false,\n            releaseOnEdges: false,\n            invert: false,\n            forceToAxis: false,\n            sensitivity: 1,\n            eventsTarget: \"container\",\n            thresholdDelta: null,\n            thresholdTime: null,\n            noMousewheelClass: \"swiper-no-mousewheel\"\n        }\n    });\n    swiper.mousewheel = {\n        enabled: false\n    };\n    let timeout;\n    let lastScrollTime = (0, $3e0e2b092da8f124$export$4368d992c4eafac0)();\n    let lastEventBeforeSnap;\n    const recentWheelEvents = [];\n    function normalize(e) {\n        // Reasonable defaults\n        const PIXEL_STEP = 10;\n        const LINE_HEIGHT = 40;\n        const PAGE_HEIGHT = 800;\n        let sX = 0;\n        let sY = 0; // spinX, spinY\n        let pX = 0;\n        let pY = 0; // pixelX, pixelY\n        // Legacy\n        if (\"detail\" in e) sY = e.detail;\n        if (\"wheelDelta\" in e) sY = -e.wheelDelta / 120;\n        if (\"wheelDeltaY\" in e) sY = -e.wheelDeltaY / 120;\n        if (\"wheelDeltaX\" in e) sX = -e.wheelDeltaX / 120;\n        // side scrolling on FF with DOMMouseScroll\n        if (\"axis\" in e && e.axis === e.HORIZONTAL_AXIS) {\n            sX = sY;\n            sY = 0;\n        }\n        pX = sX * PIXEL_STEP;\n        pY = sY * PIXEL_STEP;\n        if (\"deltaY\" in e) pY = e.deltaY;\n        if (\"deltaX\" in e) pX = e.deltaX;\n        if (e.shiftKey && !pX) {\n            // if user scrolls with shift he wants horizontal scroll\n            pX = pY;\n            pY = 0;\n        }\n        if ((pX || pY) && e.deltaMode) {\n            if (e.deltaMode === 1) {\n                // delta in LINE units\n                pX *= LINE_HEIGHT;\n                pY *= LINE_HEIGHT;\n            } else {\n                // delta in PAGE units\n                pX *= PAGE_HEIGHT;\n                pY *= PAGE_HEIGHT;\n            }\n        }\n        // Fall-back if spin cannot be determined\n        if (pX && !sX) sX = pX < 1 ? -1 : 1;\n        if (pY && !sY) sY = pY < 1 ? -1 : 1;\n        return {\n            spinX: sX,\n            spinY: sY,\n            pixelX: pX,\n            pixelY: pY\n        };\n    }\n    function handleMouseEnter() {\n        if (!swiper.enabled) return;\n        swiper.mouseEntered = true;\n    }\n    function handleMouseLeave() {\n        if (!swiper.enabled) return;\n        swiper.mouseEntered = false;\n    }\n    function animateSlider(newEvent) {\n        if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) // Prevent if delta of wheel scroll delta is below configured threshold\n        return false;\n        if (swiper.params.mousewheel.thresholdTime && (0, $3e0e2b092da8f124$export$4368d992c4eafac0)() - lastScrollTime < swiper.params.mousewheel.thresholdTime) // Prevent if time between scrolls is below configured threshold\n        return false;\n        // If the movement is NOT big enough and\n        // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n        //   Don't go any further (avoid insignificant scroll movement).\n        if (newEvent.delta >= 6 && (0, $3e0e2b092da8f124$export$4368d992c4eafac0)() - lastScrollTime < 60) // Return false as a default\n        return true;\n        // If user is scrolling towards the end:\n        //   If the slider hasn't hit the latest slide or\n        //   if the slider is a loop and\n        //   if the slider isn't moving right now:\n        //     Go to next slide and\n        //     emit a scroll event.\n        // Else (the user is scrolling towards the beginning) and\n        // if the slider hasn't hit the first slide or\n        // if the slider is a loop and\n        // if the slider isn't moving right now:\n        //   Go to prev slide and\n        //   emit a scroll event.\n        if (newEvent.direction < 0) {\n            if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n                swiper.slideNext();\n                emit(\"scroll\", newEvent.raw);\n            }\n        } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n            swiper.slidePrev();\n            emit(\"scroll\", newEvent.raw);\n        }\n        // If you got here is because an animation has been triggered so store the current time\n        lastScrollTime = new window.Date().getTime();\n        // Return false as a default\n        return false;\n    }\n    function releaseScroll(newEvent) {\n        const params = swiper.params.mousewheel;\n        if (newEvent.direction < 0) {\n            if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) // Return true to animate scroll on edges\n            return true;\n        } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) // Return true to animate scroll on edges\n        return true;\n        return false;\n    }\n    function handle(event1) {\n        let e = event1;\n        let disableParentSwiper = true;\n        if (!swiper.enabled) return;\n        // Ignore event if the target or its parents have the swiper-no-mousewheel class\n        if (event1.target.closest(`.${swiper.params.mousewheel.noMousewheelClass}`)) return;\n        const params = swiper.params.mousewheel;\n        if (swiper.params.cssMode) e.preventDefault();\n        let targetEl = swiper.el;\n        if (swiper.params.mousewheel.eventsTarget !== \"container\") targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);\n        const targetElContainsTarget = targetEl && targetEl.contains(e.target);\n        if (!swiper.mouseEntered && !targetElContainsTarget && !params.releaseOnEdges) return true;\n        if (e.originalEvent) e = e.originalEvent; // jquery fix\n        let delta = 0;\n        const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n        const data = normalize(e);\n        if (params.forceToAxis) {\n            if (swiper.isHorizontal()) {\n                if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;\n                else return true;\n            } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;\n            else return true;\n        } else delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n        if (delta === 0) return true;\n        if (params.invert) delta = -delta;\n        // Get the scroll positions\n        let positions = swiper.getTranslate() + delta * params.sensitivity;\n        if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();\n        if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate();\n        // When loop is true:\n        //     the disableParentSwiper will be true.\n        // When loop is false:\n        //     if the scroll positions is not on edge,\n        //     then the disableParentSwiper will be true.\n        //     if the scroll on edge positions,\n        //     then the disableParentSwiper will be false.\n        disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());\n        if (disableParentSwiper && swiper.params.nested) e.stopPropagation();\n        if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {\n            // Register the new event in a variable which stores the relevant data\n            const newEvent = {\n                time: (0, $3e0e2b092da8f124$export$4368d992c4eafac0)(),\n                delta: Math.abs(delta),\n                direction: Math.sign(delta),\n                raw: event1\n            };\n            // Keep the most recent events\n            if (recentWheelEvents.length >= 2) recentWheelEvents.shift(); // only store the last N events\n            const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n            recentWheelEvents.push(newEvent);\n            // If there is at least one previous recorded event:\n            //   If direction has changed or\n            //   if the scroll is quicker than the previous one:\n            //     Animate the slider.\n            // Else (this is the first time the wheel is moved):\n            //     Animate the slider.\n            if (prevEvent) {\n                if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) animateSlider(newEvent);\n            } else animateSlider(newEvent);\n            // If it's time to release the scroll:\n            //   Return now so you don't hit the preventDefault.\n            if (releaseScroll(newEvent)) return true;\n        } else {\n            // Freemode or scrollContainer:\n            // If we recently snapped after a momentum scroll, then ignore wheel events\n            // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n            // or if it's a new scroll (larger delta or inverse sign as last event before\n            // an end-of-momentum snap).\n            const newEvent = {\n                time: (0, $3e0e2b092da8f124$export$4368d992c4eafac0)(),\n                delta: Math.abs(delta),\n                direction: Math.sign(delta)\n            };\n            const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction;\n            if (!ignoreWheelEvents) {\n                lastEventBeforeSnap = undefined;\n                let position = swiper.getTranslate() + delta * params.sensitivity;\n                const wasBeginning = swiper.isBeginning;\n                const wasEnd = swiper.isEnd;\n                if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n                if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n                swiper.setTransition(0);\n                swiper.setTranslate(position);\n                swiper.updateProgress();\n                swiper.updateActiveIndex();\n                swiper.updateSlidesClasses();\n                if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) swiper.updateSlidesClasses();\n                if (swiper.params.loop) swiper.loopFix({\n                    direction: newEvent.direction < 0 ? \"next\" : \"prev\",\n                    byMousewheel: true\n                });\n                if (swiper.params.freeMode.sticky) {\n                    // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n                    // the end of a momentum scroll by storing recent (N=15?) wheel events.\n                    // 1. do all N events have decreasing or same (absolute value) delta?\n                    // 2. did all N events arrive in the last M (M=500?) msecs?\n                    // 3. does the earliest event have an (absolute value) delta that's\n                    //    at least P (P=1?) larger than the most recent event's delta?\n                    // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n                    // If 1-4 are \"yes\" then we're near the end of a momentum scroll deceleration.\n                    // Snap immediately and ignore remaining wheel events in this scroll.\n                    // See comment above for \"remaining wheel events in this scroll\" determination.\n                    // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n                    clearTimeout(timeout);\n                    timeout = undefined;\n                    if (recentWheelEvents.length >= 15) recentWheelEvents.shift(); // only store the last N events\n                    const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n                    const firstEvent = recentWheelEvents[0];\n                    recentWheelEvents.push(newEvent);\n                    if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n                    recentWheelEvents.splice(0);\n                    else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) {\n                        // We're at the end of the deceleration of a momentum scroll, so there's no need\n                        // to wait for more events. Snap ASAP on the next tick.\n                        // Also, because there's some remaining momentum we'll bias the snap in the\n                        // direction of the ongoing scroll because it's better UX for the scroll to snap\n                        // in the same direction as the scroll instead of reversing to snap.  Therefore,\n                        // if it's already scrolled more than 20% in the current direction, keep going.\n                        const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n                        lastEventBeforeSnap = newEvent;\n                        recentWheelEvents.splice(0);\n                        timeout = (0, $3e0e2b092da8f124$export$7ccc53e8f1e7dfc5)(()=>{\n                            swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n                        }, 0); // no delay; move on next tick\n                    }\n                    if (!timeout) // if we get here, then we haven't detected the end of a momentum scroll, so\n                    // we'll consider a scroll \"complete\" when there haven't been any wheel events\n                    // for 500ms.\n                    timeout = (0, $3e0e2b092da8f124$export$7ccc53e8f1e7dfc5)(()=>{\n                        const snapToThreshold = 0.5;\n                        lastEventBeforeSnap = newEvent;\n                        recentWheelEvents.splice(0);\n                        swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n                    }, 500);\n                }\n                // Emit event\n                if (!ignoreWheelEvents) emit(\"scroll\", e);\n                // Stop autoplay\n                if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop();\n                // Return page scroll on edge positions\n                if (params.releaseOnEdges && (position === swiper.minTranslate() || position === swiper.maxTranslate())) return true;\n            }\n        }\n        if (e.preventDefault) e.preventDefault();\n        else e.returnValue = false;\n        return false;\n    }\n    function events(method) {\n        let targetEl = swiper.el;\n        if (swiper.params.mousewheel.eventsTarget !== \"container\") targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);\n        targetEl[method](\"mouseenter\", handleMouseEnter);\n        targetEl[method](\"mouseleave\", handleMouseLeave);\n        targetEl[method](\"wheel\", handle);\n    }\n    function enable() {\n        if (swiper.params.cssMode) {\n            swiper.wrapperEl.removeEventListener(\"wheel\", handle);\n            return true;\n        }\n        if (swiper.mousewheel.enabled) return false;\n        events(\"addEventListener\");\n        swiper.mousewheel.enabled = true;\n        return true;\n    }\n    function disable() {\n        if (swiper.params.cssMode) {\n            swiper.wrapperEl.addEventListener(event, handle);\n            return true;\n        }\n        if (!swiper.mousewheel.enabled) return false;\n        events(\"removeEventListener\");\n        swiper.mousewheel.enabled = false;\n        return true;\n    }\n    on(\"init\", ()=>{\n        if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) disable();\n        if (swiper.params.mousewheel.enabled) enable();\n    });\n    on(\"destroy\", ()=>{\n        if (swiper.params.cssMode) enable();\n        if (swiper.mousewheel.enabled) disable();\n    });\n    Object.assign(swiper.mousewheel, {\n        enable: enable,\n        disable: disable\n    });\n}\n\n\n\nfunction $d6f86baea06bd282$export$db3b6bfb95261072(swiper, originalParams, params, checkProps) {\n    if (swiper.params.createElements) Object.keys(checkProps).forEach((key)=>{\n        if (!params[key] && params.auto === true) {\n            let element = (0, $3e0e2b092da8f124$export$f1e1789686576879)(swiper.el, `.${checkProps[key]}`)[0];\n            if (!element) {\n                element = (0, $3e0e2b092da8f124$export$db3b6bfb95261072)(\"div\", checkProps[key]);\n                element.className = checkProps[key];\n                swiper.el.append(element);\n            }\n            params[key] = element;\n            originalParams[key] = element;\n        }\n    });\n    return params;\n}\n\n\nfunction $ad56a2ca63fb5863$export$2e2bcd8739ae039(_ref) {\n    let { swiper: swiper, extendParams: extendParams, on: on, emit: emit } = _ref;\n    extendParams({\n        navigation: {\n            nextEl: null,\n            prevEl: null,\n            hideOnClick: false,\n            disabledClass: \"swiper-button-disabled\",\n            hiddenClass: \"swiper-button-hidden\",\n            lockClass: \"swiper-button-lock\",\n            navigationDisabledClass: \"swiper-navigation-disabled\"\n        }\n    });\n    swiper.navigation = {\n        nextEl: null,\n        prevEl: null\n    };\n    const makeElementsArray = (el)=>(Array.isArray(el) ? el : [\n            el\n        ]).filter((e)=>!!e);\n    function getEl(el) {\n        let res;\n        if (el && typeof el === \"string\" && swiper.isElement) {\n            res = swiper.el.querySelector(el);\n            if (res) return res;\n        }\n        if (el) {\n            if (typeof el === \"string\") res = [\n                ...document.querySelectorAll(el)\n            ];\n            if (swiper.params.uniqueNavElements && typeof el === \"string\" && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) res = swiper.el.querySelector(el);\n        }\n        if (el && !res) return el;\n        // if (Array.isArray(res) && res.length === 1) res = res[0];\n        return res;\n    }\n    function toggleEl(el, disabled) {\n        const params = swiper.params.navigation;\n        el = makeElementsArray(el);\n        el.forEach((subEl)=>{\n            if (subEl) {\n                subEl.classList[disabled ? \"add\" : \"remove\"](...params.disabledClass.split(\" \"));\n                if (subEl.tagName === \"BUTTON\") subEl.disabled = disabled;\n                if (swiper.params.watchOverflow && swiper.enabled) subEl.classList[swiper.isLocked ? \"add\" : \"remove\"](params.lockClass);\n            }\n        });\n    }\n    function update() {\n        // Update Navigation Buttons\n        const { nextEl: nextEl, prevEl: prevEl } = swiper.navigation;\n        if (swiper.params.loop) {\n            toggleEl(prevEl, false);\n            toggleEl(nextEl, false);\n            return;\n        }\n        toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind);\n        toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind);\n    }\n    function onPrevClick(e) {\n        e.preventDefault();\n        if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n        swiper.slidePrev();\n        emit(\"navigationPrev\");\n    }\n    function onNextClick(e) {\n        e.preventDefault();\n        if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n        swiper.slideNext();\n        emit(\"navigationNext\");\n    }\n    function init() {\n        const params = swiper.params.navigation;\n        swiper.params.navigation = (0, $d6f86baea06bd282$export$db3b6bfb95261072)(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n            nextEl: \"swiper-button-next\",\n            prevEl: \"swiper-button-prev\"\n        });\n        if (!(params.nextEl || params.prevEl)) return;\n        let nextEl = getEl(params.nextEl);\n        let prevEl = getEl(params.prevEl);\n        Object.assign(swiper.navigation, {\n            nextEl: nextEl,\n            prevEl: prevEl\n        });\n        nextEl = makeElementsArray(nextEl);\n        prevEl = makeElementsArray(prevEl);\n        const initButton = (el, dir)=>{\n            if (el) el.addEventListener(\"click\", dir === \"next\" ? onNextClick : onPrevClick);\n            if (!swiper.enabled && el) el.classList.add(...params.lockClass.split(\" \"));\n        };\n        nextEl.forEach((el)=>initButton(el, \"next\"));\n        prevEl.forEach((el)=>initButton(el, \"prev\"));\n    }\n    function destroy() {\n        let { nextEl: nextEl, prevEl: prevEl } = swiper.navigation;\n        nextEl = makeElementsArray(nextEl);\n        prevEl = makeElementsArray(prevEl);\n        const destroyButton = (el, dir)=>{\n            el.removeEventListener(\"click\", dir === \"next\" ? onNextClick : onPrevClick);\n            el.classList.remove(...swiper.params.navigation.disabledClass.split(\" \"));\n        };\n        nextEl.forEach((el)=>destroyButton(el, \"next\"));\n        prevEl.forEach((el)=>destroyButton(el, \"prev\"));\n    }\n    on(\"init\", ()=>{\n        if (swiper.params.navigation.enabled === false) // eslint-disable-next-line\n        disable();\n        else {\n            init();\n            update();\n        }\n    });\n    on(\"toEdge fromEdge lock unlock\", ()=>{\n        update();\n    });\n    on(\"destroy\", ()=>{\n        destroy();\n    });\n    on(\"enable disable\", ()=>{\n        let { nextEl: nextEl, prevEl: prevEl } = swiper.navigation;\n        nextEl = makeElementsArray(nextEl);\n        prevEl = makeElementsArray(prevEl);\n        [\n            ...nextEl,\n            ...prevEl\n        ].filter((el)=>!!el).forEach((el)=>el.classList[swiper.enabled ? \"remove\" : \"add\"](swiper.params.navigation.lockClass));\n    });\n    on(\"click\", (_s, e)=>{\n        let { nextEl: nextEl, prevEl: prevEl } = swiper.navigation;\n        nextEl = makeElementsArray(nextEl);\n        prevEl = makeElementsArray(prevEl);\n        const targetEl = e.target;\n        if (swiper.params.navigation.hideOnClick && !prevEl.includes(targetEl) && !nextEl.includes(targetEl)) {\n            if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n            let isHidden;\n            if (nextEl.length) isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n            else if (prevEl.length) isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n            if (isHidden === true) emit(\"navigationShow\");\n            else emit(\"navigationHide\");\n            [\n                ...nextEl,\n                ...prevEl\n            ].filter((el)=>!!el).forEach((el)=>el.classList.toggle(swiper.params.navigation.hiddenClass));\n        }\n    });\n    const enable = ()=>{\n        swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(\" \"));\n        init();\n        update();\n    };\n    const disable = ()=>{\n        swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(\" \"));\n        destroy();\n    };\n    Object.assign(swiper.navigation, {\n        enable: enable,\n        disable: disable,\n        update: update,\n        init: init,\n        destroy: destroy\n    });\n}\n\n\nfunction $452edee79264d178$export$db3b6bfb95261072(classes) {\n    if (classes === void 0) classes = \"\";\n    return `.${classes.trim().replace(/([\\.:!+\\/])/g, \"\\\\$1\") // eslint-disable-line\n    .replace(/ /g, \".\")}`;\n}\n\n\n\n\nfunction $4b9f6507912f3e92$export$2e2bcd8739ae039(_ref) {\n    let { swiper: swiper, extendParams: extendParams, on: on, emit: emit } = _ref;\n    const pfx = \"swiper-pagination\";\n    extendParams({\n        pagination: {\n            el: null,\n            bulletElement: \"span\",\n            clickable: false,\n            hideOnClick: false,\n            renderBullet: null,\n            renderProgressbar: null,\n            renderFraction: null,\n            renderCustom: null,\n            progressbarOpposite: false,\n            type: \"bullets\",\n            // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n            dynamicBullets: false,\n            dynamicMainBullets: 1,\n            formatFractionCurrent: (number)=>number,\n            formatFractionTotal: (number)=>number,\n            bulletClass: `${pfx}-bullet`,\n            bulletActiveClass: `${pfx}-bullet-active`,\n            modifierClass: `${pfx}-`,\n            currentClass: `${pfx}-current`,\n            totalClass: `${pfx}-total`,\n            hiddenClass: `${pfx}-hidden`,\n            progressbarFillClass: `${pfx}-progressbar-fill`,\n            progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n            clickableClass: `${pfx}-clickable`,\n            lockClass: `${pfx}-lock`,\n            horizontalClass: `${pfx}-horizontal`,\n            verticalClass: `${pfx}-vertical`,\n            paginationDisabledClass: `${pfx}-disabled`\n        }\n    });\n    swiper.pagination = {\n        el: null,\n        bullets: []\n    };\n    let bulletSize;\n    let dynamicBulletIndex = 0;\n    const makeElementsArray = (el)=>(Array.isArray(el) ? el : [\n            el\n        ]).filter((e)=>!!e);\n    function isPaginationDisabled() {\n        return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0;\n    }\n    function setSideBullets(bulletEl, position) {\n        const { bulletActiveClass: bulletActiveClass } = swiper.params.pagination;\n        if (!bulletEl) return;\n        bulletEl = bulletEl[`${position === \"prev\" ? \"previous\" : \"next\"}ElementSibling`];\n        if (bulletEl) {\n            bulletEl.classList.add(`${bulletActiveClass}-${position}`);\n            bulletEl = bulletEl[`${position === \"prev\" ? \"previous\" : \"next\"}ElementSibling`];\n            if (bulletEl) bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`);\n        }\n    }\n    function onBulletClick(e) {\n        const bulletEl = e.target.closest((0, $452edee79264d178$export$db3b6bfb95261072)(swiper.params.pagination.bulletClass));\n        if (!bulletEl) return;\n        e.preventDefault();\n        const index = (0, $3e0e2b092da8f124$export$39b482c5e57630a8)(bulletEl) * swiper.params.slidesPerGroup;\n        if (swiper.params.loop) {\n            if (swiper.realIndex === index) return;\n            const newSlideIndex = swiper.getSlideIndexByData(index);\n            const currentSlideIndex = swiper.getSlideIndexByData(swiper.realIndex);\n            if (newSlideIndex > swiper.slides.length - swiper.loopedSlides) swiper.loopFix({\n                direction: newSlideIndex > currentSlideIndex ? \"next\" : \"prev\",\n                activeSlideIndex: newSlideIndex,\n                slideTo: false\n            });\n            swiper.slideToLoop(index);\n        } else swiper.slideTo(index);\n    }\n    function update() {\n        // Render || Update Pagination bullets/items\n        const rtl = swiper.rtl;\n        const params = swiper.params.pagination;\n        if (isPaginationDisabled()) return;\n        let el = swiper.pagination.el;\n        el = makeElementsArray(el);\n        // Current/Total\n        let current;\n        let previousIndex;\n        const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n        const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n        if (swiper.params.loop) {\n            previousIndex = swiper.previousRealIndex || 0;\n            current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex;\n        } else if (typeof swiper.snapIndex !== \"undefined\") {\n            current = swiper.snapIndex;\n            previousIndex = swiper.previousSnapIndex;\n        } else {\n            previousIndex = swiper.previousIndex || 0;\n            current = swiper.activeIndex || 0;\n        }\n        // Types\n        if (params.type === \"bullets\" && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n            const bullets = swiper.pagination.bullets;\n            let firstIndex;\n            let lastIndex;\n            let midIndex;\n            if (params.dynamicBullets) {\n                bulletSize = (0, $3e0e2b092da8f124$export$2d1720544b23b823)(bullets[0], swiper.isHorizontal() ? \"width\" : \"height\", true);\n                el.forEach((subEl)=>{\n                    subEl.style[swiper.isHorizontal() ? \"width\" : \"height\"] = `${bulletSize * (params.dynamicMainBullets + 4)}px`;\n                });\n                if (params.dynamicMainBullets > 1 && previousIndex !== undefined) {\n                    dynamicBulletIndex += current - (previousIndex || 0);\n                    if (dynamicBulletIndex > params.dynamicMainBullets - 1) dynamicBulletIndex = params.dynamicMainBullets - 1;\n                    else if (dynamicBulletIndex < 0) dynamicBulletIndex = 0;\n                }\n                firstIndex = Math.max(current - dynamicBulletIndex, 0);\n                lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n                midIndex = (lastIndex + firstIndex) / 2;\n            }\n            bullets.forEach((bulletEl)=>{\n                const classesToRemove = [\n                    ...[\n                        \"\",\n                        \"-next\",\n                        \"-next-next\",\n                        \"-prev\",\n                        \"-prev-prev\",\n                        \"-main\"\n                    ].map((suffix)=>`${params.bulletActiveClass}${suffix}`)\n                ].map((s)=>typeof s === \"string\" && s.includes(\" \") ? s.split(\" \") : s).flat();\n                bulletEl.classList.remove(...classesToRemove);\n            });\n            if (el.length > 1) bullets.forEach((bullet)=>{\n                const bulletIndex = (0, $3e0e2b092da8f124$export$39b482c5e57630a8)(bullet);\n                if (bulletIndex === current) bullet.classList.add(...params.bulletActiveClass.split(\" \"));\n                else if (swiper.isElement) bullet.setAttribute(\"part\", \"bullet\");\n                if (params.dynamicBullets) {\n                    if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) bullet.classList.add(...`${params.bulletActiveClass}-main`.split(\" \"));\n                    if (bulletIndex === firstIndex) setSideBullets(bullet, \"prev\");\n                    if (bulletIndex === lastIndex) setSideBullets(bullet, \"next\");\n                }\n            });\n            else {\n                const bullet = bullets[current];\n                if (bullet) bullet.classList.add(...params.bulletActiveClass.split(\" \"));\n                if (swiper.isElement) bullets.forEach((bulletEl, bulletIndex)=>{\n                    bulletEl.setAttribute(\"part\", bulletIndex === current ? \"bullet-active\" : \"bullet\");\n                });\n                if (params.dynamicBullets) {\n                    const firstDisplayedBullet = bullets[firstIndex];\n                    const lastDisplayedBullet = bullets[lastIndex];\n                    for(let i = firstIndex; i <= lastIndex; i += 1)if (bullets[i]) bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(\" \"));\n                    setSideBullets(firstDisplayedBullet, \"prev\");\n                    setSideBullets(lastDisplayedBullet, \"next\");\n                }\n            }\n            if (params.dynamicBullets) {\n                const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n                const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n                const offsetProp = rtl ? \"right\" : \"left\";\n                bullets.forEach((bullet)=>{\n                    bullet.style[swiper.isHorizontal() ? offsetProp : \"top\"] = `${bulletsOffset}px`;\n                });\n            }\n        }\n        el.forEach((subEl, subElIndex)=>{\n            if (params.type === \"fraction\") {\n                subEl.querySelectorAll((0, $452edee79264d178$export$db3b6bfb95261072)(params.currentClass)).forEach((fractionEl)=>{\n                    fractionEl.textContent = params.formatFractionCurrent(current + 1);\n                });\n                subEl.querySelectorAll((0, $452edee79264d178$export$db3b6bfb95261072)(params.totalClass)).forEach((totalEl)=>{\n                    totalEl.textContent = params.formatFractionTotal(total);\n                });\n            }\n            if (params.type === \"progressbar\") {\n                let progressbarDirection;\n                if (params.progressbarOpposite) progressbarDirection = swiper.isHorizontal() ? \"vertical\" : \"horizontal\";\n                else progressbarDirection = swiper.isHorizontal() ? \"horizontal\" : \"vertical\";\n                const scale = (current + 1) / total;\n                let scaleX = 1;\n                let scaleY = 1;\n                if (progressbarDirection === \"horizontal\") scaleX = scale;\n                else scaleY = scale;\n                subEl.querySelectorAll((0, $452edee79264d178$export$db3b6bfb95261072)(params.progressbarFillClass)).forEach((progressEl)=>{\n                    progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`;\n                    progressEl.style.transitionDuration = `${swiper.params.speed}ms`;\n                });\n            }\n            if (params.type === \"custom\" && params.renderCustom) {\n                subEl.innerHTML = params.renderCustom(swiper, current + 1, total);\n                if (subElIndex === 0) emit(\"paginationRender\", subEl);\n            } else {\n                if (subElIndex === 0) emit(\"paginationRender\", subEl);\n                emit(\"paginationUpdate\", subEl);\n            }\n            if (swiper.params.watchOverflow && swiper.enabled) subEl.classList[swiper.isLocked ? \"add\" : \"remove\"](params.lockClass);\n        });\n    }\n    function render() {\n        // Render Container\n        const params = swiper.params.pagination;\n        if (isPaginationDisabled()) return;\n        const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n        let el = swiper.pagination.el;\n        el = makeElementsArray(el);\n        let paginationHTML = \"\";\n        if (params.type === \"bullets\") {\n            let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n            if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) numberOfBullets = slidesLength;\n            for(let i = 0; i < numberOfBullets; i += 1)if (params.renderBullet) paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n            else // prettier-ignore\n            paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part=\"bullet\"' : \"\"} class=\"${params.bulletClass}\"></${params.bulletElement}>`;\n        }\n        if (params.type === \"fraction\") {\n            if (params.renderFraction) paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n            else paginationHTML = `<span class=\"${params.currentClass}\"></span>` + \" / \" + `<span class=\"${params.totalClass}\"></span>`;\n        }\n        if (params.type === \"progressbar\") {\n            if (params.renderProgressbar) paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n            else paginationHTML = `<span class=\"${params.progressbarFillClass}\"></span>`;\n        }\n        swiper.pagination.bullets = [];\n        el.forEach((subEl)=>{\n            if (params.type !== \"custom\") subEl.innerHTML = paginationHTML || \"\";\n            if (params.type === \"bullets\") swiper.pagination.bullets.push(...subEl.querySelectorAll((0, $452edee79264d178$export$db3b6bfb95261072)(params.bulletClass)));\n        });\n        if (params.type !== \"custom\") emit(\"paginationRender\", el[0]);\n    }\n    function init() {\n        swiper.params.pagination = (0, $d6f86baea06bd282$export$db3b6bfb95261072)(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n            el: \"swiper-pagination\"\n        });\n        const params = swiper.params.pagination;\n        if (!params.el) return;\n        let el;\n        if (typeof params.el === \"string\" && swiper.isElement) el = swiper.el.querySelector(params.el);\n        if (!el && typeof params.el === \"string\") el = [\n            ...document.querySelectorAll(params.el)\n        ];\n        if (!el) el = params.el;\n        if (!el || el.length === 0) return;\n        if (swiper.params.uniqueNavElements && typeof params.el === \"string\" && Array.isArray(el) && el.length > 1) {\n            el = [\n                ...swiper.el.querySelectorAll(params.el)\n            ];\n            // check if it belongs to another nested Swiper\n            if (el.length > 1) el = el.filter((subEl)=>{\n                if ((0, $3e0e2b092da8f124$export$407448d2b89b1813)(subEl, \".swiper\")[0] !== swiper.el) return false;\n                return true;\n            })[0];\n        }\n        if (Array.isArray(el) && el.length === 1) el = el[0];\n        Object.assign(swiper.pagination, {\n            el: el\n        });\n        el = makeElementsArray(el);\n        el.forEach((subEl)=>{\n            if (params.type === \"bullets\" && params.clickable) subEl.classList.add(params.clickableClass);\n            subEl.classList.add(params.modifierClass + params.type);\n            subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n            if (params.type === \"bullets\" && params.dynamicBullets) {\n                subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`);\n                dynamicBulletIndex = 0;\n                if (params.dynamicMainBullets < 1) params.dynamicMainBullets = 1;\n            }\n            if (params.type === \"progressbar\" && params.progressbarOpposite) subEl.classList.add(params.progressbarOppositeClass);\n            if (params.clickable) subEl.addEventListener(\"click\", onBulletClick);\n            if (!swiper.enabled) subEl.classList.add(params.lockClass);\n        });\n    }\n    function destroy() {\n        const params = swiper.params.pagination;\n        if (isPaginationDisabled()) return;\n        let el = swiper.pagination.el;\n        if (el) {\n            el = makeElementsArray(el);\n            el.forEach((subEl)=>{\n                subEl.classList.remove(params.hiddenClass);\n                subEl.classList.remove(params.modifierClass + params.type);\n                subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n                if (params.clickable) subEl.removeEventListener(\"click\", onBulletClick);\n            });\n        }\n        if (swiper.pagination.bullets) swiper.pagination.bullets.forEach((subEl)=>subEl.classList.remove(...params.bulletActiveClass.split(\" \")));\n    }\n    on(\"changeDirection\", ()=>{\n        if (!swiper.pagination || !swiper.pagination.el) return;\n        const params = swiper.params.pagination;\n        let { el: el } = swiper.pagination;\n        el = makeElementsArray(el);\n        el.forEach((subEl)=>{\n            subEl.classList.remove(params.horizontalClass, params.verticalClass);\n            subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n        });\n    });\n    on(\"init\", ()=>{\n        if (swiper.params.pagination.enabled === false) // eslint-disable-next-line\n        disable();\n        else {\n            init();\n            render();\n            update();\n        }\n    });\n    on(\"activeIndexChange\", ()=>{\n        if (typeof swiper.snapIndex === \"undefined\") update();\n    });\n    on(\"snapIndexChange\", ()=>{\n        update();\n    });\n    on(\"snapGridLengthChange\", ()=>{\n        render();\n        update();\n    });\n    on(\"destroy\", ()=>{\n        destroy();\n    });\n    on(\"enable disable\", ()=>{\n        let { el: el } = swiper.pagination;\n        if (el) {\n            el = makeElementsArray(el);\n            el.forEach((subEl)=>subEl.classList[swiper.enabled ? \"remove\" : \"add\"](swiper.params.pagination.lockClass));\n        }\n    });\n    on(\"lock unlock\", ()=>{\n        update();\n    });\n    on(\"click\", (_s, e)=>{\n        const targetEl = e.target;\n        const el = makeElementsArray(swiper.pagination.el);\n        if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) {\n            if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n            const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass);\n            if (isHidden === true) emit(\"paginationShow\");\n            else emit(\"paginationHide\");\n            el.forEach((subEl)=>subEl.classList.toggle(swiper.params.pagination.hiddenClass));\n        }\n    });\n    const enable = ()=>{\n        swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass);\n        let { el: el } = swiper.pagination;\n        if (el) {\n            el = makeElementsArray(el);\n            el.forEach((subEl)=>subEl.classList.remove(swiper.params.pagination.paginationDisabledClass));\n        }\n        init();\n        render();\n        update();\n    };\n    const disable = ()=>{\n        swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass);\n        let { el: el } = swiper.pagination;\n        if (el) {\n            el = makeElementsArray(el);\n            el.forEach((subEl)=>subEl.classList.add(swiper.params.pagination.paginationDisabledClass));\n        }\n        destroy();\n    };\n    Object.assign(swiper.pagination, {\n        enable: enable,\n        disable: disable,\n        render: render,\n        update: update,\n        init: init,\n        destroy: destroy\n    });\n}\n\n\n\n\n\nfunction $86d9ada396b8d520$export$2e2bcd8739ae039(_ref) {\n    let { swiper: swiper, extendParams: extendParams, on: on, emit: emit } = _ref;\n    const document = (0, $768c2f4c151a0363$export$39b482c5e57630a8)();\n    let isTouched = false;\n    let timeout = null;\n    let dragTimeout = null;\n    let dragStartPos;\n    let dragSize;\n    let trackSize;\n    let divider;\n    extendParams({\n        scrollbar: {\n            el: null,\n            dragSize: \"auto\",\n            hide: false,\n            draggable: false,\n            snapOnRelease: true,\n            lockClass: \"swiper-scrollbar-lock\",\n            dragClass: \"swiper-scrollbar-drag\",\n            scrollbarDisabledClass: \"swiper-scrollbar-disabled\",\n            horizontalClass: `swiper-scrollbar-horizontal`,\n            verticalClass: `swiper-scrollbar-vertical`\n        }\n    });\n    swiper.scrollbar = {\n        el: null,\n        dragEl: null\n    };\n    function setTranslate() {\n        if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n        const { scrollbar: scrollbar, rtlTranslate: rtl } = swiper;\n        const { dragEl: dragEl, el: el } = scrollbar;\n        const params = swiper.params.scrollbar;\n        const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress;\n        let newSize = dragSize;\n        let newPos = (trackSize - dragSize) * progress;\n        if (rtl) {\n            newPos = -newPos;\n            if (newPos > 0) {\n                newSize = dragSize - newPos;\n                newPos = 0;\n            } else if (-newPos + dragSize > trackSize) newSize = trackSize + newPos;\n        } else if (newPos < 0) {\n            newSize = dragSize + newPos;\n            newPos = 0;\n        } else if (newPos + dragSize > trackSize) newSize = trackSize - newPos;\n        if (swiper.isHorizontal()) {\n            dragEl.style.transform = `translate3d(${newPos}px, 0, 0)`;\n            dragEl.style.width = `${newSize}px`;\n        } else {\n            dragEl.style.transform = `translate3d(0px, ${newPos}px, 0)`;\n            dragEl.style.height = `${newSize}px`;\n        }\n        if (params.hide) {\n            clearTimeout(timeout);\n            el.style.opacity = 1;\n            timeout = setTimeout(()=>{\n                el.style.opacity = 0;\n                el.style.transitionDuration = \"400ms\";\n            }, 1000);\n        }\n    }\n    function setTransition(duration) {\n        if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n        swiper.scrollbar.dragEl.style.transitionDuration = `${duration}ms`;\n    }\n    function updateSize() {\n        if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n        const { scrollbar: scrollbar } = swiper;\n        const { dragEl: dragEl, el: el } = scrollbar;\n        dragEl.style.width = \"\";\n        dragEl.style.height = \"\";\n        trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight;\n        divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\n        if (swiper.params.scrollbar.dragSize === \"auto\") dragSize = trackSize * divider;\n        else dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n        if (swiper.isHorizontal()) dragEl.style.width = `${dragSize}px`;\n        else dragEl.style.height = `${dragSize}px`;\n        if (divider >= 1) el.style.display = \"none\";\n        else el.style.display = \"\";\n        if (swiper.params.scrollbar.hide) el.style.opacity = 0;\n        if (swiper.params.watchOverflow && swiper.enabled) scrollbar.el.classList[swiper.isLocked ? \"add\" : \"remove\"](swiper.params.scrollbar.lockClass);\n    }\n    function getPointerPosition(e) {\n        return swiper.isHorizontal() ? e.clientX : e.clientY;\n    }\n    function setDragPosition(e) {\n        const { scrollbar: scrollbar, rtlTranslate: rtl } = swiper;\n        const { el: el } = scrollbar;\n        let positionRatio;\n        positionRatio = (getPointerPosition(e) - (0, $3e0e2b092da8f124$export$8b22cf2602fb60ce)(el)[swiper.isHorizontal() ? \"left\" : \"top\"] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n        positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n        if (rtl) positionRatio = 1 - positionRatio;\n        const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n        swiper.updateProgress(position);\n        swiper.setTranslate(position);\n        swiper.updateActiveIndex();\n        swiper.updateSlidesClasses();\n    }\n    function onDragStart(e) {\n        const params = swiper.params.scrollbar;\n        const { scrollbar: scrollbar, wrapperEl: wrapperEl } = swiper;\n        const { el: el, dragEl: dragEl } = scrollbar;\n        isTouched = true;\n        dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? \"left\" : \"top\"] : null;\n        e.preventDefault();\n        e.stopPropagation();\n        wrapperEl.style.transitionDuration = \"100ms\";\n        dragEl.style.transitionDuration = \"100ms\";\n        setDragPosition(e);\n        clearTimeout(dragTimeout);\n        el.style.transitionDuration = \"0ms\";\n        if (params.hide) el.style.opacity = 1;\n        if (swiper.params.cssMode) swiper.wrapperEl.style[\"scroll-snap-type\"] = \"none\";\n        emit(\"scrollbarDragStart\", e);\n    }\n    function onDragMove(e) {\n        const { scrollbar: scrollbar, wrapperEl: wrapperEl } = swiper;\n        const { el: el, dragEl: dragEl } = scrollbar;\n        if (!isTouched) return;\n        if (e.preventDefault) e.preventDefault();\n        else e.returnValue = false;\n        setDragPosition(e);\n        wrapperEl.style.transitionDuration = \"0ms\";\n        el.style.transitionDuration = \"0ms\";\n        dragEl.style.transitionDuration = \"0ms\";\n        emit(\"scrollbarDragMove\", e);\n    }\n    function onDragEnd(e) {\n        const params = swiper.params.scrollbar;\n        const { scrollbar: scrollbar, wrapperEl: wrapperEl } = swiper;\n        const { el: el } = scrollbar;\n        if (!isTouched) return;\n        isTouched = false;\n        if (swiper.params.cssMode) {\n            swiper.wrapperEl.style[\"scroll-snap-type\"] = \"\";\n            wrapperEl.style.transitionDuration = \"\";\n        }\n        if (params.hide) {\n            clearTimeout(dragTimeout);\n            dragTimeout = (0, $3e0e2b092da8f124$export$7ccc53e8f1e7dfc5)(()=>{\n                el.style.opacity = 0;\n                el.style.transitionDuration = \"400ms\";\n            }, 1000);\n        }\n        emit(\"scrollbarDragEnd\", e);\n        if (params.snapOnRelease) swiper.slideToClosest();\n    }\n    function events(method) {\n        const { scrollbar: scrollbar, params: params } = swiper;\n        const el = scrollbar.el;\n        if (!el) return;\n        const target = el;\n        const activeListener = params.passiveListeners ? {\n            passive: false,\n            capture: false\n        } : false;\n        const passiveListener = params.passiveListeners ? {\n            passive: true,\n            capture: false\n        } : false;\n        if (!target) return;\n        const eventMethod = method === \"on\" ? \"addEventListener\" : \"removeEventListener\";\n        target[eventMethod](\"pointerdown\", onDragStart, activeListener);\n        document[eventMethod](\"pointermove\", onDragMove, activeListener);\n        document[eventMethod](\"pointerup\", onDragEnd, passiveListener);\n    }\n    function enableDraggable() {\n        if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n        events(\"on\");\n    }\n    function disableDraggable() {\n        if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n        events(\"off\");\n    }\n    function init() {\n        const { scrollbar: scrollbar, el: swiperEl } = swiper;\n        swiper.params.scrollbar = (0, $d6f86baea06bd282$export$db3b6bfb95261072)(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, {\n            el: \"swiper-scrollbar\"\n        });\n        const params = swiper.params.scrollbar;\n        if (!params.el) return;\n        let el;\n        if (typeof params.el === \"string\" && swiper.isElement) el = swiper.el.querySelector(params.el);\n        if (!el && typeof params.el === \"string\") el = document.querySelectorAll(params.el);\n        else if (!el) el = params.el;\n        if (swiper.params.uniqueNavElements && typeof params.el === \"string\" && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) el = swiperEl.querySelector(params.el);\n        if (el.length > 0) el = el[0];\n        el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n        let dragEl;\n        if (el) {\n            dragEl = el.querySelector(`.${swiper.params.scrollbar.dragClass}`);\n            if (!dragEl) {\n                dragEl = (0, $3e0e2b092da8f124$export$db3b6bfb95261072)(\"div\", swiper.params.scrollbar.dragClass);\n                el.append(dragEl);\n            }\n        }\n        Object.assign(scrollbar, {\n            el: el,\n            dragEl: dragEl\n        });\n        if (params.draggable) enableDraggable();\n        if (el) el.classList[swiper.enabled ? \"remove\" : \"add\"](swiper.params.scrollbar.lockClass);\n    }\n    function destroy() {\n        const params = swiper.params.scrollbar;\n        const el = swiper.scrollbar.el;\n        if (el) el.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n        disableDraggable();\n    }\n    on(\"init\", ()=>{\n        if (swiper.params.scrollbar.enabled === false) // eslint-disable-next-line\n        disable();\n        else {\n            init();\n            updateSize();\n            setTranslate();\n        }\n    });\n    on(\"update resize observerUpdate lock unlock\", ()=>{\n        updateSize();\n    });\n    on(\"setTranslate\", ()=>{\n        setTranslate();\n    });\n    on(\"setTransition\", (_s, duration)=>{\n        setTransition(duration);\n    });\n    on(\"enable disable\", ()=>{\n        const { el: el } = swiper.scrollbar;\n        if (el) el.classList[swiper.enabled ? \"remove\" : \"add\"](swiper.params.scrollbar.lockClass);\n    });\n    on(\"destroy\", ()=>{\n        destroy();\n    });\n    const enable = ()=>{\n        swiper.el.classList.remove(swiper.params.scrollbar.scrollbarDisabledClass);\n        if (swiper.scrollbar.el) swiper.scrollbar.el.classList.remove(swiper.params.scrollbar.scrollbarDisabledClass);\n        init();\n        updateSize();\n        setTranslate();\n    };\n    const disable = ()=>{\n        swiper.el.classList.add(swiper.params.scrollbar.scrollbarDisabledClass);\n        if (swiper.scrollbar.el) swiper.scrollbar.el.classList.add(swiper.params.scrollbar.scrollbarDisabledClass);\n        destroy();\n    };\n    Object.assign(swiper.scrollbar, {\n        enable: enable,\n        disable: disable,\n        updateSize: updateSize,\n        setTranslate: setTranslate,\n        init: init,\n        destroy: destroy\n    });\n}\n\n\n\nfunction $9a5a5dc98a39a784$export$2e2bcd8739ae039(_ref) {\n    let { swiper: swiper, extendParams: extendParams, on: on } = _ref;\n    extendParams({\n        parallax: {\n            enabled: false\n        }\n    });\n    const setTransform = (el, progress)=>{\n        const { rtl: rtl } = swiper;\n        const rtlFactor = rtl ? -1 : 1;\n        const p = el.getAttribute(\"data-swiper-parallax\") || \"0\";\n        let x = el.getAttribute(\"data-swiper-parallax-x\");\n        let y = el.getAttribute(\"data-swiper-parallax-y\");\n        const scale = el.getAttribute(\"data-swiper-parallax-scale\");\n        const opacity = el.getAttribute(\"data-swiper-parallax-opacity\");\n        const rotate = el.getAttribute(\"data-swiper-parallax-rotate\");\n        if (x || y) {\n            x = x || \"0\";\n            y = y || \"0\";\n        } else if (swiper.isHorizontal()) {\n            x = p;\n            y = \"0\";\n        } else {\n            y = p;\n            x = \"0\";\n        }\n        if (x.indexOf(\"%\") >= 0) x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n        else x = `${x * progress * rtlFactor}px`;\n        if (y.indexOf(\"%\") >= 0) y = `${parseInt(y, 10) * progress}%`;\n        else y = `${y * progress}px`;\n        if (typeof opacity !== \"undefined\" && opacity !== null) {\n            const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));\n            el.style.opacity = currentOpacity;\n        }\n        let transform = `translate3d(${x}, ${y}, 0px)`;\n        if (typeof scale !== \"undefined\" && scale !== null) {\n            const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));\n            transform += ` scale(${currentScale})`;\n        }\n        if (rotate && typeof rotate !== \"undefined\" && rotate !== null) {\n            const currentRotate = rotate * progress * -1;\n            transform += ` rotate(${currentRotate}deg)`;\n        }\n        el.style.transform = transform;\n    };\n    const setTranslate = ()=>{\n        const { el: el, slides: slides, progress: progress, snapGrid: snapGrid } = swiper;\n        (0, $3e0e2b092da8f124$export$f1e1789686576879)(el, \"[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]\").forEach((subEl)=>{\n            setTransform(subEl, progress);\n        });\n        slides.forEach((slideEl, slideIndex)=>{\n            let slideProgress = slideEl.progress;\n            if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== \"auto\") slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);\n            slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n            slideEl.querySelectorAll(\"[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale], [data-swiper-parallax-rotate]\").forEach((subEl)=>{\n                setTransform(subEl, slideProgress);\n            });\n        });\n    };\n    const setTransition = function(duration) {\n        if (duration === void 0) duration = swiper.params.speed;\n        const { el: el } = swiper;\n        el.querySelectorAll(\"[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]\").forEach((parallaxEl)=>{\n            let parallaxDuration = parseInt(parallaxEl.getAttribute(\"data-swiper-parallax-duration\"), 10) || duration;\n            if (duration === 0) parallaxDuration = 0;\n            parallaxEl.style.transitionDuration = `${parallaxDuration}ms`;\n        });\n    };\n    on(\"beforeInit\", ()=>{\n        if (!swiper.params.parallax.enabled) return;\n        swiper.params.watchSlidesProgress = true;\n        swiper.originalParams.watchSlidesProgress = true;\n    });\n    on(\"init\", ()=>{\n        if (!swiper.params.parallax.enabled) return;\n        setTranslate();\n    });\n    on(\"setTranslate\", ()=>{\n        if (!swiper.params.parallax.enabled) return;\n        setTranslate();\n    });\n    on(\"setTransition\", (_swiper, duration)=>{\n        if (!swiper.params.parallax.enabled) return;\n        setTransition(duration);\n    });\n}\n\n\n\n\nfunction $902ac29743f68e69$export$2e2bcd8739ae039(_ref) {\n    let { swiper: swiper, extendParams: extendParams, on: on, emit: emit } = _ref;\n    const window = (0, $768c2f4c151a0363$export$407448d2b89b1813)();\n    extendParams({\n        zoom: {\n            enabled: false,\n            maxRatio: 3,\n            minRatio: 1,\n            toggle: true,\n            containerClass: \"swiper-zoom-container\",\n            zoomedSlideClass: \"swiper-slide-zoomed\"\n        }\n    });\n    swiper.zoom = {\n        enabled: false\n    };\n    let currentScale = 1;\n    let isScaling = false;\n    let fakeGestureTouched;\n    let fakeGestureMoved;\n    const evCache = [];\n    const gesture = {\n        originX: 0,\n        originY: 0,\n        slideEl: undefined,\n        slideWidth: undefined,\n        slideHeight: undefined,\n        imageEl: undefined,\n        imageWrapEl: undefined,\n        maxRatio: 3\n    };\n    const image = {\n        isTouched: undefined,\n        isMoved: undefined,\n        currentX: undefined,\n        currentY: undefined,\n        minX: undefined,\n        minY: undefined,\n        maxX: undefined,\n        maxY: undefined,\n        width: undefined,\n        height: undefined,\n        startX: undefined,\n        startY: undefined,\n        touchesStart: {},\n        touchesCurrent: {}\n    };\n    const velocity = {\n        x: undefined,\n        y: undefined,\n        prevPositionX: undefined,\n        prevPositionY: undefined,\n        prevTime: undefined\n    };\n    let scale = 1;\n    Object.defineProperty(swiper.zoom, \"scale\", {\n        get () {\n            return scale;\n        },\n        set (value) {\n            if (scale !== value) {\n                const imageEl = gesture.imageEl;\n                const slideEl = gesture.slideEl;\n                emit(\"zoomChange\", value, imageEl, slideEl);\n            }\n            scale = value;\n        }\n    });\n    function getDistanceBetweenTouches() {\n        if (evCache.length < 2) return 1;\n        const x1 = evCache[0].pageX;\n        const y1 = evCache[0].pageY;\n        const x2 = evCache[1].pageX;\n        const y2 = evCache[1].pageY;\n        const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n        return distance;\n    }\n    function getScaleOrigin() {\n        if (evCache.length < 2) return {\n            x: null,\n            y: null\n        };\n        const box = gesture.imageEl.getBoundingClientRect();\n        return [\n            (evCache[0].pageX + (evCache[1].pageX - evCache[0].pageX) / 2 - box.x) / currentScale,\n            (evCache[0].pageY + (evCache[1].pageY - evCache[0].pageY) / 2 - box.y) / currentScale\n        ];\n    }\n    function getSlideSelector() {\n        return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n    }\n    function eventWithinSlide(e) {\n        const slideSelector = getSlideSelector();\n        if (e.target.matches(slideSelector)) return true;\n        if (swiper.slides.filter((slideEl)=>slideEl.contains(e.target)).length > 0) return true;\n        return false;\n    }\n    function eventWithinZoomContainer(e) {\n        const selector = `.${swiper.params.zoom.containerClass}`;\n        if (e.target.matches(selector)) return true;\n        if ([\n            ...swiper.hostEl.querySelectorAll(selector)\n        ].filter((containerEl)=>containerEl.contains(e.target)).length > 0) return true;\n        return false;\n    }\n    // Events\n    function onGestureStart(e) {\n        if (e.pointerType === \"mouse\") evCache.splice(0, evCache.length);\n        if (!eventWithinSlide(e)) return;\n        const params = swiper.params.zoom;\n        fakeGestureTouched = false;\n        fakeGestureMoved = false;\n        evCache.push(e);\n        if (evCache.length < 2) return;\n        fakeGestureTouched = true;\n        gesture.scaleStart = getDistanceBetweenTouches();\n        if (!gesture.slideEl) {\n            gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n            if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex];\n            let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n            if (imageEl) imageEl = imageEl.querySelectorAll(\"picture, img, svg, canvas, .swiper-zoom-target\")[0];\n            gesture.imageEl = imageEl;\n            if (imageEl) gesture.imageWrapEl = (0, $3e0e2b092da8f124$export$407448d2b89b1813)(gesture.imageEl, `.${params.containerClass}`)[0];\n            else gesture.imageWrapEl = undefined;\n            if (!gesture.imageWrapEl) {\n                gesture.imageEl = undefined;\n                return;\n            }\n            gesture.maxRatio = gesture.imageWrapEl.getAttribute(\"data-swiper-zoom\") || params.maxRatio;\n        }\n        if (gesture.imageEl) {\n            const [originX, originY] = getScaleOrigin();\n            gesture.originX = originX;\n            gesture.originY = originY;\n            gesture.imageEl.style.transitionDuration = \"0ms\";\n        }\n        isScaling = true;\n    }\n    function onGestureChange(e) {\n        if (!eventWithinSlide(e)) return;\n        const params = swiper.params.zoom;\n        const zoom = swiper.zoom;\n        const pointerIndex = evCache.findIndex((cachedEv)=>cachedEv.pointerId === e.pointerId);\n        if (pointerIndex >= 0) evCache[pointerIndex] = e;\n        if (evCache.length < 2) return;\n        fakeGestureMoved = true;\n        gesture.scaleMove = getDistanceBetweenTouches();\n        if (!gesture.imageEl) return;\n        zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale;\n        if (zoom.scale > gesture.maxRatio) zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;\n        if (zoom.scale < params.minRatio) zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;\n        gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n    }\n    function onGestureEnd(e) {\n        if (!eventWithinSlide(e)) return;\n        if (e.pointerType === \"mouse\" && e.type === \"pointerout\") return;\n        const params = swiper.params.zoom;\n        const zoom = swiper.zoom;\n        const pointerIndex = evCache.findIndex((cachedEv)=>cachedEv.pointerId === e.pointerId);\n        if (pointerIndex >= 0) evCache.splice(pointerIndex, 1);\n        if (!fakeGestureTouched || !fakeGestureMoved) return;\n        fakeGestureTouched = false;\n        fakeGestureMoved = false;\n        if (!gesture.imageEl) return;\n        zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n        gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`;\n        gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n        currentScale = zoom.scale;\n        isScaling = false;\n        if (zoom.scale > 1 && gesture.slideEl) gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);\n        else if (zoom.scale <= 1 && gesture.slideEl) gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);\n        if (zoom.scale === 1) {\n            gesture.originX = 0;\n            gesture.originY = 0;\n            gesture.slideEl = undefined;\n        }\n    }\n    function onTouchStart(e) {\n        const device = swiper.device;\n        if (!gesture.imageEl) return;\n        if (image.isTouched) return;\n        if (device.android && e.cancelable) e.preventDefault();\n        image.isTouched = true;\n        const event = evCache.length > 0 ? evCache[0] : e;\n        image.touchesStart.x = event.pageX;\n        image.touchesStart.y = event.pageY;\n    }\n    function onTouchMove(e) {\n        if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) return;\n        const zoom = swiper.zoom;\n        if (!gesture.imageEl) return;\n        if (!image.isTouched || !gesture.slideEl) return;\n        if (!image.isMoved) {\n            image.width = gesture.imageEl.offsetWidth;\n            image.height = gesture.imageEl.offsetHeight;\n            image.startX = (0, $3e0e2b092da8f124$export$dda1d9f60106f0e9)(gesture.imageWrapEl, \"x\") || 0;\n            image.startY = (0, $3e0e2b092da8f124$export$dda1d9f60106f0e9)(gesture.imageWrapEl, \"y\") || 0;\n            gesture.slideWidth = gesture.slideEl.offsetWidth;\n            gesture.slideHeight = gesture.slideEl.offsetHeight;\n            gesture.imageWrapEl.style.transitionDuration = \"0ms\";\n        }\n        // Define if we need image drag\n        const scaledWidth = image.width * zoom.scale;\n        const scaledHeight = image.height * zoom.scale;\n        if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n        image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n        image.maxX = -image.minX;\n        image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n        image.maxY = -image.minY;\n        image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX;\n        image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY;\n        const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y));\n        if (touchesDiff > 5) swiper.allowClick = false;\n        if (!image.isMoved && !isScaling) {\n            if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) {\n                image.isTouched = false;\n                return;\n            }\n            if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) {\n                image.isTouched = false;\n                return;\n            }\n        }\n        if (e.cancelable) e.preventDefault();\n        e.stopPropagation();\n        image.isMoved = true;\n        const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio);\n        const { originX: originX, originY: originY } = gesture;\n        image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2);\n        image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2);\n        if (image.currentX < image.minX) image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;\n        if (image.currentX > image.maxX) image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;\n        if (image.currentY < image.minY) image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;\n        if (image.currentY > image.maxY) image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;\n        // Velocity\n        if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n        if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n        if (!velocity.prevTime) velocity.prevTime = Date.now();\n        velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n        velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n        if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n        if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n        velocity.prevPositionX = image.touchesCurrent.x;\n        velocity.prevPositionY = image.touchesCurrent.y;\n        velocity.prevTime = Date.now();\n        gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;\n    }\n    function onTouchEnd() {\n        const zoom = swiper.zoom;\n        if (!gesture.imageEl) return;\n        if (!image.isTouched || !image.isMoved) {\n            image.isTouched = false;\n            image.isMoved = false;\n            return;\n        }\n        image.isTouched = false;\n        image.isMoved = false;\n        let momentumDurationX = 300;\n        let momentumDurationY = 300;\n        const momentumDistanceX = velocity.x * momentumDurationX;\n        const newPositionX = image.currentX + momentumDistanceX;\n        const momentumDistanceY = velocity.y * momentumDurationY;\n        const newPositionY = image.currentY + momentumDistanceY;\n        // Fix duration\n        if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n        if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n        const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n        image.currentX = newPositionX;\n        image.currentY = newPositionY;\n        // Define if we need image drag\n        const scaledWidth = image.width * zoom.scale;\n        const scaledHeight = image.height * zoom.scale;\n        image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n        image.maxX = -image.minX;\n        image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n        image.maxY = -image.minY;\n        image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n        image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n        gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`;\n        gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;\n    }\n    function onTransitionEnd() {\n        const zoom = swiper.zoom;\n        if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) {\n            if (gesture.imageEl) gesture.imageEl.style.transform = \"translate3d(0,0,0) scale(1)\";\n            if (gesture.imageWrapEl) gesture.imageWrapEl.style.transform = \"translate3d(0,0,0)\";\n            gesture.slideEl.classList.remove(`${swiper.params.zoom.zoomedSlideClass}`);\n            zoom.scale = 1;\n            currentScale = 1;\n            gesture.slideEl = undefined;\n            gesture.imageEl = undefined;\n            gesture.imageWrapEl = undefined;\n            gesture.originX = 0;\n            gesture.originY = 0;\n        }\n    }\n    function zoomIn(e) {\n        const zoom = swiper.zoom;\n        const params = swiper.params.zoom;\n        if (!gesture.slideEl) {\n            if (e && e.target) gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n            if (!gesture.slideEl) {\n                if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) gesture.slideEl = (0, $3e0e2b092da8f124$export$f1e1789686576879)(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];\n                else gesture.slideEl = swiper.slides[swiper.activeIndex];\n            }\n            let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n            if (imageEl) imageEl = imageEl.querySelectorAll(\"picture, img, svg, canvas, .swiper-zoom-target\")[0];\n            gesture.imageEl = imageEl;\n            if (imageEl) gesture.imageWrapEl = (0, $3e0e2b092da8f124$export$407448d2b89b1813)(gesture.imageEl, `.${params.containerClass}`)[0];\n            else gesture.imageWrapEl = undefined;\n        }\n        if (!gesture.imageEl || !gesture.imageWrapEl) return;\n        if (swiper.params.cssMode) {\n            swiper.wrapperEl.style.overflow = \"hidden\";\n            swiper.wrapperEl.style.touchAction = \"none\";\n        }\n        gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);\n        let touchX;\n        let touchY;\n        let offsetX;\n        let offsetY;\n        let diffX;\n        let diffY;\n        let translateX;\n        let translateY;\n        let imageWidth;\n        let imageHeight;\n        let scaledWidth;\n        let scaledHeight;\n        let translateMinX;\n        let translateMinY;\n        let translateMaxX;\n        let translateMaxY;\n        let slideWidth;\n        let slideHeight;\n        if (typeof image.touchesStart.x === \"undefined\" && e) {\n            touchX = e.pageX;\n            touchY = e.pageY;\n        } else {\n            touchX = image.touchesStart.x;\n            touchY = image.touchesStart.y;\n        }\n        const forceZoomRatio = typeof e === \"number\" ? e : null;\n        if (currentScale === 1 && forceZoomRatio) {\n            touchX = undefined;\n            touchY = undefined;\n        }\n        zoom.scale = forceZoomRatio || gesture.imageWrapEl.getAttribute(\"data-swiper-zoom\") || params.maxRatio;\n        currentScale = forceZoomRatio || gesture.imageWrapEl.getAttribute(\"data-swiper-zoom\") || params.maxRatio;\n        if (e && !(currentScale === 1 && forceZoomRatio)) {\n            slideWidth = gesture.slideEl.offsetWidth;\n            slideHeight = gesture.slideEl.offsetHeight;\n            offsetX = (0, $3e0e2b092da8f124$export$8b22cf2602fb60ce)(gesture.slideEl).left + window.scrollX;\n            offsetY = (0, $3e0e2b092da8f124$export$8b22cf2602fb60ce)(gesture.slideEl).top + window.scrollY;\n            diffX = offsetX + slideWidth / 2 - touchX;\n            diffY = offsetY + slideHeight / 2 - touchY;\n            imageWidth = gesture.imageEl.offsetWidth;\n            imageHeight = gesture.imageEl.offsetHeight;\n            scaledWidth = imageWidth * zoom.scale;\n            scaledHeight = imageHeight * zoom.scale;\n            translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n            translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n            translateMaxX = -translateMinX;\n            translateMaxY = -translateMinY;\n            translateX = diffX * zoom.scale;\n            translateY = diffY * zoom.scale;\n            if (translateX < translateMinX) translateX = translateMinX;\n            if (translateX > translateMaxX) translateX = translateMaxX;\n            if (translateY < translateMinY) translateY = translateMinY;\n            if (translateY > translateMaxY) translateY = translateMaxY;\n        } else {\n            translateX = 0;\n            translateY = 0;\n        }\n        if (forceZoomRatio && zoom.scale === 1) {\n            gesture.originX = 0;\n            gesture.originY = 0;\n        }\n        gesture.imageWrapEl.style.transitionDuration = \"300ms\";\n        gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`;\n        gesture.imageEl.style.transitionDuration = \"300ms\";\n        gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n    }\n    function zoomOut() {\n        const zoom = swiper.zoom;\n        const params = swiper.params.zoom;\n        if (!gesture.slideEl) {\n            if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) gesture.slideEl = (0, $3e0e2b092da8f124$export$f1e1789686576879)(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];\n            else gesture.slideEl = swiper.slides[swiper.activeIndex];\n            let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n            if (imageEl) imageEl = imageEl.querySelectorAll(\"picture, img, svg, canvas, .swiper-zoom-target\")[0];\n            gesture.imageEl = imageEl;\n            if (imageEl) gesture.imageWrapEl = (0, $3e0e2b092da8f124$export$407448d2b89b1813)(gesture.imageEl, `.${params.containerClass}`)[0];\n            else gesture.imageWrapEl = undefined;\n        }\n        if (!gesture.imageEl || !gesture.imageWrapEl) return;\n        if (swiper.params.cssMode) {\n            swiper.wrapperEl.style.overflow = \"\";\n            swiper.wrapperEl.style.touchAction = \"\";\n        }\n        zoom.scale = 1;\n        currentScale = 1;\n        gesture.imageWrapEl.style.transitionDuration = \"300ms\";\n        gesture.imageWrapEl.style.transform = \"translate3d(0,0,0)\";\n        gesture.imageEl.style.transitionDuration = \"300ms\";\n        gesture.imageEl.style.transform = \"translate3d(0,0,0) scale(1)\";\n        gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);\n        gesture.slideEl = undefined;\n        gesture.originX = 0;\n        gesture.originY = 0;\n    }\n    // Toggle Zoom\n    function zoomToggle(e) {\n        const zoom = swiper.zoom;\n        if (zoom.scale && zoom.scale !== 1) // Zoom Out\n        zoomOut();\n        else // Zoom In\n        zoomIn(e);\n    }\n    function getListeners() {\n        const passiveListener = swiper.params.passiveListeners ? {\n            passive: true,\n            capture: false\n        } : false;\n        const activeListenerWithCapture = swiper.params.passiveListeners ? {\n            passive: false,\n            capture: true\n        } : true;\n        return {\n            passiveListener: passiveListener,\n            activeListenerWithCapture: activeListenerWithCapture\n        };\n    }\n    // Attach/Detach Events\n    function enable() {\n        const zoom = swiper.zoom;\n        if (zoom.enabled) return;\n        zoom.enabled = true;\n        const { passiveListener: passiveListener, activeListenerWithCapture: activeListenerWithCapture } = getListeners();\n        // Scale image\n        swiper.wrapperEl.addEventListener(\"pointerdown\", onGestureStart, passiveListener);\n        swiper.wrapperEl.addEventListener(\"pointermove\", onGestureChange, activeListenerWithCapture);\n        [\n            \"pointerup\",\n            \"pointercancel\",\n            \"pointerout\"\n        ].forEach((eventName)=>{\n            swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener);\n        });\n        // Move image\n        swiper.wrapperEl.addEventListener(\"pointermove\", onTouchMove, activeListenerWithCapture);\n    }\n    function disable() {\n        const zoom = swiper.zoom;\n        if (!zoom.enabled) return;\n        zoom.enabled = false;\n        const { passiveListener: passiveListener, activeListenerWithCapture: activeListenerWithCapture } = getListeners();\n        // Scale image\n        swiper.wrapperEl.removeEventListener(\"pointerdown\", onGestureStart, passiveListener);\n        swiper.wrapperEl.removeEventListener(\"pointermove\", onGestureChange, activeListenerWithCapture);\n        [\n            \"pointerup\",\n            \"pointercancel\",\n            \"pointerout\"\n        ].forEach((eventName)=>{\n            swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener);\n        });\n        // Move image\n        swiper.wrapperEl.removeEventListener(\"pointermove\", onTouchMove, activeListenerWithCapture);\n    }\n    on(\"init\", ()=>{\n        if (swiper.params.zoom.enabled) enable();\n    });\n    on(\"destroy\", ()=>{\n        disable();\n    });\n    on(\"touchStart\", (_s, e)=>{\n        if (!swiper.zoom.enabled) return;\n        onTouchStart(e);\n    });\n    on(\"touchEnd\", (_s, e)=>{\n        if (!swiper.zoom.enabled) return;\n        onTouchEnd();\n    });\n    on(\"doubleTap\", (_s, e)=>{\n        if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) zoomToggle(e);\n    });\n    on(\"transitionEnd\", ()=>{\n        if (swiper.zoom.enabled && swiper.params.zoom.enabled) onTransitionEnd();\n    });\n    on(\"slideChange\", ()=>{\n        if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) onTransitionEnd();\n    });\n    Object.assign(swiper.zoom, {\n        enable: enable,\n        disable: disable,\n        in: zoomIn,\n        out: zoomOut,\n        toggle: zoomToggle\n    });\n}\n\n\n\n/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */ function $8ad27336c27f2357$export$2e2bcd8739ae039(_ref) {\n    let { swiper: swiper, extendParams: extendParams, on: on } = _ref;\n    extendParams({\n        controller: {\n            control: undefined,\n            inverse: false,\n            by: \"slide\" // or 'container'\n        }\n    });\n    swiper.controller = {\n        control: undefined\n    };\n    function LinearSpline(x, y) {\n        const binarySearch = function search() {\n            let maxIndex;\n            let minIndex;\n            let guess;\n            return (array, val)=>{\n                minIndex = -1;\n                maxIndex = array.length;\n                while(maxIndex - minIndex > 1){\n                    guess = maxIndex + minIndex >> 1;\n                    if (array[guess] <= val) minIndex = guess;\n                    else maxIndex = guess;\n                }\n                return maxIndex;\n            };\n        }();\n        this.x = x;\n        this.y = y;\n        this.lastIndex = x.length - 1;\n        // Given an x value (x2), return the expected y2 value:\n        // (x1,y1) is the known point before given value,\n        // (x3,y3) is the known point after given value.\n        let i1;\n        let i3;\n        this.interpolate = function interpolate(x2) {\n            if (!x2) return 0;\n            // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n            i3 = binarySearch(this.x, x2);\n            i1 = i3 - 1;\n            // We have our indexes i1 & i3, so we can calculate already:\n            // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n            return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];\n        };\n        return this;\n    }\n    function getInterpolateFunction(c) {\n        swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid);\n    }\n    function setTranslate(_t, byController) {\n        const controlled = swiper.controller.control;\n        let multiplier;\n        let controlledTranslate;\n        const Swiper = swiper.constructor;\n        function setControlledTranslate(c) {\n            if (c.destroyed) return;\n            // this will create an Interpolate function based on the snapGrids\n            // x is the Grid of the scrolled scroller and y will be the controlled scroller\n            // it makes sense to create this only once and recall it for the interpolation\n            // the function does a lot of value caching for performance\n            const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n            if (swiper.params.controller.by === \"slide\") {\n                getInterpolateFunction(c);\n                // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n                // but it did not work out\n                controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n            }\n            if (!controlledTranslate || swiper.params.controller.by === \"container\") {\n                multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n                if (Number.isNaN(multiplier) || !Number.isFinite(multiplier)) multiplier = 1;\n                controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\n            }\n            if (swiper.params.controller.inverse) controlledTranslate = c.maxTranslate() - controlledTranslate;\n            c.updateProgress(controlledTranslate);\n            c.setTranslate(controlledTranslate, swiper);\n            c.updateActiveIndex();\n            c.updateSlidesClasses();\n        }\n        if (Array.isArray(controlled)) {\n            for(let i = 0; i < controlled.length; i += 1)if (controlled[i] !== byController && controlled[i] instanceof Swiper) setControlledTranslate(controlled[i]);\n        } else if (controlled instanceof Swiper && byController !== controlled) setControlledTranslate(controlled);\n    }\n    function setTransition(duration, byController) {\n        const Swiper = swiper.constructor;\n        const controlled = swiper.controller.control;\n        let i;\n        function setControlledTransition(c) {\n            if (c.destroyed) return;\n            c.setTransition(duration, swiper);\n            if (duration !== 0) {\n                c.transitionStart();\n                if (c.params.autoHeight) (0, $3e0e2b092da8f124$export$7ccc53e8f1e7dfc5)(()=>{\n                    c.updateAutoHeight();\n                });\n                (0, $3e0e2b092da8f124$export$23f2a1d2818174ef)(c.wrapperEl, ()=>{\n                    if (!controlled) return;\n                    c.transitionEnd();\n                });\n            }\n        }\n        if (Array.isArray(controlled)) {\n            for(i = 0; i < controlled.length; i += 1)if (controlled[i] !== byController && controlled[i] instanceof Swiper) setControlledTransition(controlled[i]);\n        } else if (controlled instanceof Swiper && byController !== controlled) setControlledTransition(controlled);\n    }\n    function removeSpline() {\n        if (!swiper.controller.control) return;\n        if (swiper.controller.spline) {\n            swiper.controller.spline = undefined;\n            delete swiper.controller.spline;\n        }\n    }\n    on(\"beforeInit\", ()=>{\n        if (typeof window !== \"undefined\" && // eslint-disable-line\n        (typeof swiper.params.controller.control === \"string\" || swiper.params.controller.control instanceof HTMLElement)) {\n            const controlElement = document.querySelector(swiper.params.controller.control);\n            if (controlElement && controlElement.swiper) swiper.controller.control = controlElement.swiper;\n            else if (controlElement) {\n                const onControllerSwiper = (e)=>{\n                    swiper.controller.control = e.detail[0];\n                    swiper.update();\n                    controlElement.removeEventListener(\"init\", onControllerSwiper);\n                };\n                controlElement.addEventListener(\"init\", onControllerSwiper);\n            }\n            return;\n        }\n        swiper.controller.control = swiper.params.controller.control;\n    });\n    on(\"update\", ()=>{\n        removeSpline();\n    });\n    on(\"resize\", ()=>{\n        removeSpline();\n    });\n    on(\"observerUpdate\", ()=>{\n        removeSpline();\n    });\n    on(\"setTranslate\", (_s, translate, byController)=>{\n        if (!swiper.controller.control || swiper.controller.control.destroyed) return;\n        swiper.controller.setTranslate(translate, byController);\n    });\n    on(\"setTransition\", (_s, duration, byController)=>{\n        if (!swiper.controller.control || swiper.controller.control.destroyed) return;\n        swiper.controller.setTransition(duration, byController);\n    });\n    Object.assign(swiper.controller, {\n        setTranslate: setTranslate,\n        setTransition: setTransition\n    });\n}\n\n\n\n\nfunction $f036f37c54b3aa6f$export$2e2bcd8739ae039(_ref) {\n    let { swiper: swiper, extendParams: extendParams, on: on } = _ref;\n    extendParams({\n        a11y: {\n            enabled: true,\n            notificationClass: \"swiper-notification\",\n            prevSlideMessage: \"Previous slide\",\n            nextSlideMessage: \"Next slide\",\n            firstSlideMessage: \"This is the first slide\",\n            lastSlideMessage: \"This is the last slide\",\n            paginationBulletMessage: \"Go to slide {{index}}\",\n            slideLabelMessage: \"{{index}} / {{slidesLength}}\",\n            containerMessage: null,\n            containerRoleDescriptionMessage: null,\n            itemRoleDescriptionMessage: null,\n            slideRole: \"group\",\n            id: null\n        }\n    });\n    swiper.a11y = {\n        clicked: false\n    };\n    let liveRegion = null;\n    function notify(message) {\n        const notification = liveRegion;\n        if (notification.length === 0) return;\n        notification.innerHTML = \"\";\n        notification.innerHTML = message;\n    }\n    const makeElementsArray = (el)=>(Array.isArray(el) ? el : [\n            el\n        ]).filter((e)=>!!e);\n    function getRandomNumber(size) {\n        if (size === void 0) size = 16;\n        const randomChar = ()=>Math.round(16 * Math.random()).toString(16);\n        return \"x\".repeat(size).replace(/x/g, randomChar);\n    }\n    function makeElFocusable(el) {\n        el = makeElementsArray(el);\n        el.forEach((subEl)=>{\n            subEl.setAttribute(\"tabIndex\", \"0\");\n        });\n    }\n    function makeElNotFocusable(el) {\n        el = makeElementsArray(el);\n        el.forEach((subEl)=>{\n            subEl.setAttribute(\"tabIndex\", \"-1\");\n        });\n    }\n    function addElRole(el, role) {\n        el = makeElementsArray(el);\n        el.forEach((subEl)=>{\n            subEl.setAttribute(\"role\", role);\n        });\n    }\n    function addElRoleDescription(el, description) {\n        el = makeElementsArray(el);\n        el.forEach((subEl)=>{\n            subEl.setAttribute(\"aria-roledescription\", description);\n        });\n    }\n    function addElControls(el, controls) {\n        el = makeElementsArray(el);\n        el.forEach((subEl)=>{\n            subEl.setAttribute(\"aria-controls\", controls);\n        });\n    }\n    function addElLabel(el, label) {\n        el = makeElementsArray(el);\n        el.forEach((subEl)=>{\n            subEl.setAttribute(\"aria-label\", label);\n        });\n    }\n    function addElId(el, id) {\n        el = makeElementsArray(el);\n        el.forEach((subEl)=>{\n            subEl.setAttribute(\"id\", id);\n        });\n    }\n    function addElLive(el, live) {\n        el = makeElementsArray(el);\n        el.forEach((subEl)=>{\n            subEl.setAttribute(\"aria-live\", live);\n        });\n    }\n    function disableEl(el) {\n        el = makeElementsArray(el);\n        el.forEach((subEl)=>{\n            subEl.setAttribute(\"aria-disabled\", true);\n        });\n    }\n    function enableEl(el) {\n        el = makeElementsArray(el);\n        el.forEach((subEl)=>{\n            subEl.setAttribute(\"aria-disabled\", false);\n        });\n    }\n    function onEnterOrSpaceKey(e) {\n        if (e.keyCode !== 13 && e.keyCode !== 32) return;\n        const params = swiper.params.a11y;\n        const targetEl = e.target;\n        if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) {\n            if (!e.target.matches((0, $452edee79264d178$export$db3b6bfb95261072)(swiper.params.pagination.bulletClass))) return;\n        }\n        if (swiper.navigation && swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl) {\n            if (!(swiper.isEnd && !swiper.params.loop)) swiper.slideNext();\n            if (swiper.isEnd) notify(params.lastSlideMessage);\n            else notify(params.nextSlideMessage);\n        }\n        if (swiper.navigation && swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl) {\n            if (!(swiper.isBeginning && !swiper.params.loop)) swiper.slidePrev();\n            if (swiper.isBeginning) notify(params.firstSlideMessage);\n            else notify(params.prevSlideMessage);\n        }\n        if (swiper.pagination && targetEl.matches((0, $452edee79264d178$export$db3b6bfb95261072)(swiper.params.pagination.bulletClass))) targetEl.click();\n    }\n    function updateNavigation() {\n        if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return;\n        const { nextEl: nextEl, prevEl: prevEl } = swiper.navigation;\n        if (prevEl) {\n            if (swiper.isBeginning) {\n                disableEl(prevEl);\n                makeElNotFocusable(prevEl);\n            } else {\n                enableEl(prevEl);\n                makeElFocusable(prevEl);\n            }\n        }\n        if (nextEl) {\n            if (swiper.isEnd) {\n                disableEl(nextEl);\n                makeElNotFocusable(nextEl);\n            } else {\n                enableEl(nextEl);\n                makeElFocusable(nextEl);\n            }\n        }\n    }\n    function hasPagination() {\n        return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length;\n    }\n    function hasClickablePagination() {\n        return hasPagination() && swiper.params.pagination.clickable;\n    }\n    function updatePagination() {\n        const params = swiper.params.a11y;\n        if (!hasPagination()) return;\n        swiper.pagination.bullets.forEach((bulletEl)=>{\n            if (swiper.params.pagination.clickable) {\n                makeElFocusable(bulletEl);\n                if (!swiper.params.pagination.renderBullet) {\n                    addElRole(bulletEl, \"button\");\n                    addElLabel(bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, (0, $3e0e2b092da8f124$export$39b482c5e57630a8)(bulletEl) + 1));\n                }\n            }\n            if (bulletEl.matches((0, $452edee79264d178$export$db3b6bfb95261072)(swiper.params.pagination.bulletActiveClass))) bulletEl.setAttribute(\"aria-current\", \"true\");\n            else bulletEl.removeAttribute(\"aria-current\");\n        });\n    }\n    const initNavEl = (el, wrapperId, message)=>{\n        makeElFocusable(el);\n        if (el.tagName !== \"BUTTON\") {\n            addElRole(el, \"button\");\n            el.addEventListener(\"keydown\", onEnterOrSpaceKey);\n        }\n        addElLabel(el, message);\n        addElControls(el, wrapperId);\n    };\n    const handlePointerDown = ()=>{\n        swiper.a11y.clicked = true;\n    };\n    const handlePointerUp = ()=>{\n        requestAnimationFrame(()=>{\n            requestAnimationFrame(()=>{\n                if (!swiper.destroyed) swiper.a11y.clicked = false;\n            });\n        });\n    };\n    const handleFocus = (e)=>{\n        if (swiper.a11y.clicked) return;\n        const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n        if (!slideEl || !swiper.slides.includes(slideEl)) return;\n        const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex;\n        const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl);\n        if (isActive || isVisible) return;\n        if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return;\n        if (swiper.isHorizontal()) swiper.el.scrollLeft = 0;\n        else swiper.el.scrollTop = 0;\n        swiper.slideTo(swiper.slides.indexOf(slideEl), 0);\n    };\n    const initSlides = ()=>{\n        const params = swiper.params.a11y;\n        if (params.itemRoleDescriptionMessage) addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage);\n        if (params.slideRole) addElRole(swiper.slides, params.slideRole);\n        const slidesLength = swiper.slides.length;\n        if (params.slideLabelMessage) swiper.slides.forEach((slideEl, index)=>{\n            const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute(\"data-swiper-slide-index\"), 10) : index;\n            const ariaLabelMessage = params.slideLabelMessage.replace(/\\{\\{index\\}\\}/, slideIndex + 1).replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\n            addElLabel(slideEl, ariaLabelMessage);\n        });\n    };\n    const init = ()=>{\n        const params = swiper.params.a11y;\n        swiper.el.append(liveRegion);\n        // Container\n        const containerEl = swiper.el;\n        if (params.containerRoleDescriptionMessage) addElRoleDescription(containerEl, params.containerRoleDescriptionMessage);\n        if (params.containerMessage) addElLabel(containerEl, params.containerMessage);\n        // Wrapper\n        const wrapperEl = swiper.wrapperEl;\n        const wrapperId = params.id || wrapperEl.getAttribute(\"id\") || `swiper-wrapper-${getRandomNumber(16)}`;\n        const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? \"off\" : \"polite\";\n        addElId(wrapperEl, wrapperId);\n        addElLive(wrapperEl, live);\n        // Slide\n        initSlides();\n        // Navigation\n        let { nextEl: nextEl, prevEl: prevEl } = swiper.navigation ? swiper.navigation : {};\n        nextEl = makeElementsArray(nextEl);\n        prevEl = makeElementsArray(prevEl);\n        if (nextEl) nextEl.forEach((el)=>initNavEl(el, wrapperId, params.nextSlideMessage));\n        if (prevEl) prevEl.forEach((el)=>initNavEl(el, wrapperId, params.prevSlideMessage));\n        // Pagination\n        if (hasClickablePagination()) {\n            const paginationEl = Array.isArray(swiper.pagination.el) ? swiper.pagination.el : [\n                swiper.pagination.el\n            ];\n            paginationEl.forEach((el)=>{\n                el.addEventListener(\"keydown\", onEnterOrSpaceKey);\n            });\n        }\n        // Tab focus\n        swiper.el.addEventListener(\"focus\", handleFocus, true);\n        swiper.el.addEventListener(\"pointerdown\", handlePointerDown, true);\n        swiper.el.addEventListener(\"pointerup\", handlePointerUp, true);\n    };\n    function destroy() {\n        if (liveRegion) liveRegion.remove();\n        let { nextEl: nextEl, prevEl: prevEl } = swiper.navigation ? swiper.navigation : {};\n        nextEl = makeElementsArray(nextEl);\n        prevEl = makeElementsArray(prevEl);\n        if (nextEl) nextEl.forEach((el)=>el.removeEventListener(\"keydown\", onEnterOrSpaceKey));\n        if (prevEl) prevEl.forEach((el)=>el.removeEventListener(\"keydown\", onEnterOrSpaceKey));\n        // Pagination\n        if (hasClickablePagination()) {\n            const paginationEl = Array.isArray(swiper.pagination.el) ? swiper.pagination.el : [\n                swiper.pagination.el\n            ];\n            paginationEl.forEach((el)=>{\n                el.removeEventListener(\"keydown\", onEnterOrSpaceKey);\n            });\n        }\n        // Tab focus\n        swiper.el.removeEventListener(\"focus\", handleFocus, true);\n        swiper.el.removeEventListener(\"pointerdown\", handlePointerDown, true);\n        swiper.el.removeEventListener(\"pointerup\", handlePointerUp, true);\n    }\n    on(\"beforeInit\", ()=>{\n        liveRegion = (0, $3e0e2b092da8f124$export$db3b6bfb95261072)(\"span\", swiper.params.a11y.notificationClass);\n        liveRegion.setAttribute(\"aria-live\", \"assertive\");\n        liveRegion.setAttribute(\"aria-atomic\", \"true\");\n    });\n    on(\"afterInit\", ()=>{\n        if (!swiper.params.a11y.enabled) return;\n        init();\n    });\n    on(\"slidesLengthChange snapGridLengthChange slidesGridLengthChange\", ()=>{\n        if (!swiper.params.a11y.enabled) return;\n        initSlides();\n    });\n    on(\"fromEdge toEdge afterInit lock unlock\", ()=>{\n        if (!swiper.params.a11y.enabled) return;\n        updateNavigation();\n    });\n    on(\"paginationUpdate\", ()=>{\n        if (!swiper.params.a11y.enabled) return;\n        updatePagination();\n    });\n    on(\"destroy\", ()=>{\n        if (!swiper.params.a11y.enabled) return;\n        destroy();\n    });\n}\n\n\n\nfunction $0ce99a47f98448f9$export$2e2bcd8739ae039(_ref) {\n    let { swiper: swiper, extendParams: extendParams, on: on } = _ref;\n    extendParams({\n        history: {\n            enabled: false,\n            root: \"\",\n            replaceState: false,\n            key: \"slides\",\n            keepQuery: false\n        }\n    });\n    let initialized = false;\n    let paths = {};\n    const slugify = (text)=>{\n        return text.toString().replace(/\\s+/g, \"-\").replace(/[^\\w-]+/g, \"\").replace(/--+/g, \"-\").replace(/^-+/, \"\").replace(/-+$/, \"\");\n    };\n    const getPathValues = (urlOverride)=>{\n        const window = (0, $768c2f4c151a0363$export$407448d2b89b1813)();\n        let location;\n        if (urlOverride) location = new URL(urlOverride);\n        else location = window.location;\n        const pathArray = location.pathname.slice(1).split(\"/\").filter((part)=>part !== \"\");\n        const total = pathArray.length;\n        const key = pathArray[total - 2];\n        const value = pathArray[total - 1];\n        return {\n            key: key,\n            value: value\n        };\n    };\n    const setHistory = (key, index)=>{\n        const window = (0, $768c2f4c151a0363$export$407448d2b89b1813)();\n        if (!initialized || !swiper.params.history.enabled) return;\n        let location;\n        if (swiper.params.url) location = new URL(swiper.params.url);\n        else location = window.location;\n        const slide = swiper.slides[index];\n        let value = slugify(slide.getAttribute(\"data-history\"));\n        if (swiper.params.history.root.length > 0) {\n            let root = swiper.params.history.root;\n            if (root[root.length - 1] === \"/\") root = root.slice(0, root.length - 1);\n            value = `${root}/${key ? `${key}/` : \"\"}${value}`;\n        } else if (!location.pathname.includes(key)) value = `${key ? `${key}/` : \"\"}${value}`;\n        if (swiper.params.history.keepQuery) value += location.search;\n        const currentState = window.history.state;\n        if (currentState && currentState.value === value) return;\n        if (swiper.params.history.replaceState) window.history.replaceState({\n            value: value\n        }, null, value);\n        else window.history.pushState({\n            value: value\n        }, null, value);\n    };\n    const scrollToSlide = (speed, value, runCallbacks)=>{\n        if (value) for(let i = 0, length = swiper.slides.length; i < length; i += 1){\n            const slide = swiper.slides[i];\n            const slideHistory = slugify(slide.getAttribute(\"data-history\"));\n            if (slideHistory === value) {\n                const index = swiper.getSlideIndex(slide);\n                swiper.slideTo(index, speed, runCallbacks);\n            }\n        }\n        else swiper.slideTo(0, speed, runCallbacks);\n    };\n    const setHistoryPopState = ()=>{\n        paths = getPathValues(swiper.params.url);\n        scrollToSlide(swiper.params.speed, paths.value, false);\n    };\n    const init = ()=>{\n        const window = (0, $768c2f4c151a0363$export$407448d2b89b1813)();\n        if (!swiper.params.history) return;\n        if (!window.history || !window.history.pushState) {\n            swiper.params.history.enabled = false;\n            swiper.params.hashNavigation.enabled = true;\n            return;\n        }\n        initialized = true;\n        paths = getPathValues(swiper.params.url);\n        if (!paths.key && !paths.value) {\n            if (!swiper.params.history.replaceState) window.addEventListener(\"popstate\", setHistoryPopState);\n            return;\n        }\n        scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);\n        if (!swiper.params.history.replaceState) window.addEventListener(\"popstate\", setHistoryPopState);\n    };\n    const destroy = ()=>{\n        const window = (0, $768c2f4c151a0363$export$407448d2b89b1813)();\n        if (!swiper.params.history.replaceState) window.removeEventListener(\"popstate\", setHistoryPopState);\n    };\n    on(\"init\", ()=>{\n        if (swiper.params.history.enabled) init();\n    });\n    on(\"destroy\", ()=>{\n        if (swiper.params.history.enabled) destroy();\n    });\n    on(\"transitionEnd _freeModeNoMomentumRelease\", ()=>{\n        if (initialized) setHistory(swiper.params.history.key, swiper.activeIndex);\n    });\n    on(\"slideChange\", ()=>{\n        if (initialized && swiper.params.cssMode) setHistory(swiper.params.history.key, swiper.activeIndex);\n    });\n}\n\n\n\n\nfunction $749dc992af967f35$export$2e2bcd8739ae039(_ref) {\n    let { swiper: swiper, extendParams: extendParams, emit: emit, on: on } = _ref;\n    let initialized = false;\n    const document = (0, $768c2f4c151a0363$export$39b482c5e57630a8)();\n    const window = (0, $768c2f4c151a0363$export$407448d2b89b1813)();\n    extendParams({\n        hashNavigation: {\n            enabled: false,\n            replaceState: false,\n            watchState: false,\n            getSlideIndex (_s, hash) {\n                if (swiper.virtual && swiper.params.virtual.enabled) {\n                    const slideWithHash = swiper.slides.filter((slideEl)=>slideEl.getAttribute(\"data-hash\") === hash)[0];\n                    if (!slideWithHash) return 0;\n                    const index = parseInt(slideWithHash.getAttribute(\"data-swiper-slide-index\"), 10);\n                    return index;\n                }\n                return swiper.getSlideIndex((0, $3e0e2b092da8f124$export$f1e1789686576879)(swiper.slidesEl, `.${swiper.params.slideClass}[data-hash=\"${hash}\"], swiper-slide[data-hash=\"${hash}\"]`)[0]);\n            }\n        }\n    });\n    const onHashChange = ()=>{\n        emit(\"hashChange\");\n        const newHash = document.location.hash.replace(\"#\", \"\");\n        const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${swiper.activeIndex}\"]`) : swiper.slides[swiper.activeIndex];\n        const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute(\"data-hash\") : \"\";\n        if (newHash !== activeSlideHash) {\n            const newIndex = swiper.params.hashNavigation.getSlideIndex(swiper, newHash);\n            if (typeof newIndex === \"undefined\" || Number.isNaN(newIndex)) return;\n            swiper.slideTo(newIndex);\n        }\n    };\n    const setHash = ()=>{\n        if (!initialized || !swiper.params.hashNavigation.enabled) return;\n        const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${swiper.activeIndex}\"]`) : swiper.slides[swiper.activeIndex];\n        const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute(\"data-hash\") || activeSlideEl.getAttribute(\"data-history\") : \"\";\n        if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {\n            window.history.replaceState(null, null, `#${activeSlideHash}` || \"\");\n            emit(\"hashSet\");\n        } else {\n            document.location.hash = activeSlideHash || \"\";\n            emit(\"hashSet\");\n        }\n    };\n    const init = ()=>{\n        if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;\n        initialized = true;\n        const hash = document.location.hash.replace(\"#\", \"\");\n        if (hash) {\n            const speed = 0;\n            const index = swiper.params.hashNavigation.getSlideIndex(swiper, hash);\n            swiper.slideTo(index || 0, speed, swiper.params.runCallbacksOnInit, true);\n        }\n        if (swiper.params.hashNavigation.watchState) window.addEventListener(\"hashchange\", onHashChange);\n    };\n    const destroy = ()=>{\n        if (swiper.params.hashNavigation.watchState) window.removeEventListener(\"hashchange\", onHashChange);\n    };\n    on(\"init\", ()=>{\n        if (swiper.params.hashNavigation.enabled) init();\n    });\n    on(\"destroy\", ()=>{\n        if (swiper.params.hashNavigation.enabled) destroy();\n    });\n    on(\"transitionEnd _freeModeNoMomentumRelease\", ()=>{\n        if (initialized) setHash();\n    });\n    on(\"slideChange\", ()=>{\n        if (initialized && swiper.params.cssMode) setHash();\n    });\n}\n\n\n\n/* eslint no-underscore-dangle: \"off\" */ /* eslint no-use-before-define: \"off\" */ function $41ae6f5a5ccdab5c$export$2e2bcd8739ae039(_ref) {\n    let { swiper: swiper, extendParams: extendParams, on: on, emit: emit, params: params } = _ref;\n    swiper.autoplay = {\n        running: false,\n        paused: false,\n        timeLeft: 0\n    };\n    extendParams({\n        autoplay: {\n            enabled: false,\n            delay: 3000,\n            waitForTransition: true,\n            disableOnInteraction: true,\n            stopOnLastSlide: false,\n            reverseDirection: false,\n            pauseOnMouseEnter: false\n        }\n    });\n    let timeout;\n    let raf;\n    let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000;\n    let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000;\n    let autoplayTimeLeft;\n    let autoplayStartTime = new Date().getTime;\n    let wasPaused;\n    let isTouched;\n    let pausedByTouch;\n    let touchStartTimeout;\n    let slideChanged;\n    let pausedByInteraction;\n    function onTransitionEnd(e) {\n        if (!swiper || swiper.destroyed || !swiper.wrapperEl) return;\n        if (e.target !== swiper.wrapperEl) return;\n        swiper.wrapperEl.removeEventListener(\"transitionend\", onTransitionEnd);\n        resume();\n    }\n    const calcTimeLeft = ()=>{\n        if (swiper.destroyed || !swiper.autoplay.running) return;\n        if (swiper.autoplay.paused) wasPaused = true;\n        else if (wasPaused) {\n            autoplayDelayCurrent = autoplayTimeLeft;\n            wasPaused = false;\n        }\n        const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime();\n        swiper.autoplay.timeLeft = timeLeft;\n        emit(\"autoplayTimeLeft\", timeLeft, timeLeft / autoplayDelayTotal);\n        raf = requestAnimationFrame(()=>{\n            calcTimeLeft();\n        });\n    };\n    const getSlideDelay = ()=>{\n        let activeSlideEl;\n        if (swiper.virtual && swiper.params.virtual.enabled) activeSlideEl = swiper.slides.filter((slideEl)=>slideEl.classList.contains(\"swiper-slide-active\"))[0];\n        else activeSlideEl = swiper.slides[swiper.activeIndex];\n        if (!activeSlideEl) return undefined;\n        const currentSlideDelay = parseInt(activeSlideEl.getAttribute(\"data-swiper-autoplay\"), 10);\n        return currentSlideDelay;\n    };\n    const run = (delayForce)=>{\n        if (swiper.destroyed || !swiper.autoplay.running) return;\n        cancelAnimationFrame(raf);\n        calcTimeLeft();\n        let delay = typeof delayForce === \"undefined\" ? swiper.params.autoplay.delay : delayForce;\n        autoplayDelayTotal = swiper.params.autoplay.delay;\n        autoplayDelayCurrent = swiper.params.autoplay.delay;\n        const currentSlideDelay = getSlideDelay();\n        if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === \"undefined\") {\n            delay = currentSlideDelay;\n            autoplayDelayTotal = currentSlideDelay;\n            autoplayDelayCurrent = currentSlideDelay;\n        }\n        autoplayTimeLeft = delay;\n        const speed = swiper.params.speed;\n        const proceed = ()=>{\n            if (!swiper || swiper.destroyed) return;\n            if (swiper.params.autoplay.reverseDirection) {\n                if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) {\n                    swiper.slidePrev(speed, true, true);\n                    emit(\"autoplay\");\n                } else if (!swiper.params.autoplay.stopOnLastSlide) {\n                    swiper.slideTo(swiper.slides.length - 1, speed, true, true);\n                    emit(\"autoplay\");\n                }\n            } else {\n                if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) {\n                    swiper.slideNext(speed, true, true);\n                    emit(\"autoplay\");\n                } else if (!swiper.params.autoplay.stopOnLastSlide) {\n                    swiper.slideTo(0, speed, true, true);\n                    emit(\"autoplay\");\n                }\n            }\n            if (swiper.params.cssMode) {\n                autoplayStartTime = new Date().getTime();\n                requestAnimationFrame(()=>{\n                    run();\n                });\n            }\n        };\n        if (delay > 0) {\n            clearTimeout(timeout);\n            timeout = setTimeout(()=>{\n                proceed();\n            }, delay);\n        } else requestAnimationFrame(()=>{\n            proceed();\n        });\n        // eslint-disable-next-line\n        return delay;\n    };\n    const start = ()=>{\n        swiper.autoplay.running = true;\n        run();\n        emit(\"autoplayStart\");\n    };\n    const stop = ()=>{\n        swiper.autoplay.running = false;\n        clearTimeout(timeout);\n        cancelAnimationFrame(raf);\n        emit(\"autoplayStop\");\n    };\n    const pause = (internal, reset)=>{\n        if (swiper.destroyed || !swiper.autoplay.running) return;\n        clearTimeout(timeout);\n        if (!internal) pausedByInteraction = true;\n        const proceed = ()=>{\n            emit(\"autoplayPause\");\n            if (swiper.params.autoplay.waitForTransition) swiper.wrapperEl.addEventListener(\"transitionend\", onTransitionEnd);\n            else resume();\n        };\n        swiper.autoplay.paused = true;\n        if (reset) {\n            if (slideChanged) autoplayTimeLeft = swiper.params.autoplay.delay;\n            slideChanged = false;\n            proceed();\n            return;\n        }\n        const delay = autoplayTimeLeft || swiper.params.autoplay.delay;\n        autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime);\n        if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return;\n        if (autoplayTimeLeft < 0) autoplayTimeLeft = 0;\n        proceed();\n    };\n    const resume = ()=>{\n        if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return;\n        autoplayStartTime = new Date().getTime();\n        if (pausedByInteraction) {\n            pausedByInteraction = false;\n            run(autoplayTimeLeft);\n        } else run();\n        swiper.autoplay.paused = false;\n        emit(\"autoplayResume\");\n    };\n    const onVisibilityChange = ()=>{\n        if (swiper.destroyed || !swiper.autoplay.running) return;\n        const document = (0, $768c2f4c151a0363$export$39b482c5e57630a8)();\n        if (document.visibilityState === \"hidden\") {\n            pausedByInteraction = true;\n            pause(true);\n        }\n        if (document.visibilityState === \"visible\") resume();\n    };\n    const onPointerEnter = (e)=>{\n        if (e.pointerType !== \"mouse\") return;\n        pausedByInteraction = true;\n        pause(true);\n    };\n    const onPointerLeave = (e)=>{\n        if (e.pointerType !== \"mouse\") return;\n        if (swiper.autoplay.paused) resume();\n    };\n    const attachMouseEvents = ()=>{\n        if (swiper.params.autoplay.pauseOnMouseEnter) {\n            swiper.el.addEventListener(\"pointerenter\", onPointerEnter);\n            swiper.el.addEventListener(\"pointerleave\", onPointerLeave);\n        }\n    };\n    const detachMouseEvents = ()=>{\n        swiper.el.removeEventListener(\"pointerenter\", onPointerEnter);\n        swiper.el.removeEventListener(\"pointerleave\", onPointerLeave);\n    };\n    const attachDocumentEvents = ()=>{\n        const document = (0, $768c2f4c151a0363$export$39b482c5e57630a8)();\n        document.addEventListener(\"visibilitychange\", onVisibilityChange);\n    };\n    const detachDocumentEvents = ()=>{\n        const document = (0, $768c2f4c151a0363$export$39b482c5e57630a8)();\n        document.removeEventListener(\"visibilitychange\", onVisibilityChange);\n    };\n    on(\"init\", ()=>{\n        if (swiper.params.autoplay.enabled) {\n            attachMouseEvents();\n            attachDocumentEvents();\n            autoplayStartTime = new Date().getTime();\n            start();\n        }\n    });\n    on(\"destroy\", ()=>{\n        detachMouseEvents();\n        detachDocumentEvents();\n        if (swiper.autoplay.running) stop();\n    });\n    on(\"beforeTransitionStart\", (_s, speed, internal)=>{\n        if (swiper.destroyed || !swiper.autoplay.running) return;\n        if (internal || !swiper.params.autoplay.disableOnInteraction) pause(true, true);\n        else stop();\n    });\n    on(\"sliderFirstMove\", ()=>{\n        if (swiper.destroyed || !swiper.autoplay.running) return;\n        if (swiper.params.autoplay.disableOnInteraction) {\n            stop();\n            return;\n        }\n        isTouched = true;\n        pausedByTouch = false;\n        pausedByInteraction = false;\n        touchStartTimeout = setTimeout(()=>{\n            pausedByInteraction = true;\n            pausedByTouch = true;\n            pause(true);\n        }, 200);\n    });\n    on(\"touchEnd\", ()=>{\n        if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return;\n        clearTimeout(touchStartTimeout);\n        clearTimeout(timeout);\n        if (swiper.params.autoplay.disableOnInteraction) {\n            pausedByTouch = false;\n            isTouched = false;\n            return;\n        }\n        if (pausedByTouch && swiper.params.cssMode) resume();\n        pausedByTouch = false;\n        isTouched = false;\n    });\n    on(\"slideChange\", ()=>{\n        if (swiper.destroyed || !swiper.autoplay.running) return;\n        slideChanged = true;\n    });\n    Object.assign(swiper.autoplay, {\n        start: start,\n        stop: stop,\n        pause: pause,\n        resume: resume\n    });\n}\n\n\n\n\nfunction $1664cd01e0f13904$export$2e2bcd8739ae039(_ref) {\n    let { swiper: swiper, extendParams: extendParams, on: on } = _ref;\n    extendParams({\n        thumbs: {\n            swiper: null,\n            multipleActiveThumbs: true,\n            autoScrollOffset: 0,\n            slideThumbActiveClass: \"swiper-slide-thumb-active\",\n            thumbsContainerClass: \"swiper-thumbs\"\n        }\n    });\n    let initialized = false;\n    let swiperCreated = false;\n    swiper.thumbs = {\n        swiper: null\n    };\n    function onThumbClick() {\n        const thumbsSwiper = swiper.thumbs.swiper;\n        if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n        const clickedIndex = thumbsSwiper.clickedIndex;\n        const clickedSlide = thumbsSwiper.clickedSlide;\n        if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return;\n        if (typeof clickedIndex === \"undefined\" || clickedIndex === null) return;\n        let slideToIndex;\n        if (thumbsSwiper.params.loop) slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute(\"data-swiper-slide-index\"), 10);\n        else slideToIndex = clickedIndex;\n        if (swiper.params.loop) swiper.slideToLoop(slideToIndex);\n        else swiper.slideTo(slideToIndex);\n    }\n    function init() {\n        const { thumbs: thumbsParams } = swiper.params;\n        if (initialized) return false;\n        initialized = true;\n        const SwiperClass = swiper.constructor;\n        if (thumbsParams.swiper instanceof SwiperClass) {\n            swiper.thumbs.swiper = thumbsParams.swiper;\n            Object.assign(swiper.thumbs.swiper.originalParams, {\n                watchSlidesProgress: true,\n                slideToClickedSlide: false\n            });\n            Object.assign(swiper.thumbs.swiper.params, {\n                watchSlidesProgress: true,\n                slideToClickedSlide: false\n            });\n            swiper.thumbs.swiper.update();\n        } else if ((0, $3e0e2b092da8f124$export$35e795649ee09318)(thumbsParams.swiper)) {\n            const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\n            Object.assign(thumbsSwiperParams, {\n                watchSlidesProgress: true,\n                slideToClickedSlide: false\n            });\n            swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\n            swiperCreated = true;\n        }\n        swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass);\n        swiper.thumbs.swiper.on(\"tap\", onThumbClick);\n        return true;\n    }\n    function update(initial) {\n        const thumbsSwiper = swiper.thumbs.swiper;\n        if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n        const slidesPerView = thumbsSwiper.params.slidesPerView === \"auto\" ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;\n        // Activate thumbs\n        let thumbsToActivate = 1;\n        const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n        if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) thumbsToActivate = swiper.params.slidesPerView;\n        if (!swiper.params.thumbs.multipleActiveThumbs) thumbsToActivate = 1;\n        thumbsToActivate = Math.floor(thumbsToActivate);\n        thumbsSwiper.slides.forEach((slideEl)=>slideEl.classList.remove(thumbActiveClass));\n        if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) for(let i = 0; i < thumbsToActivate; i += 1)(0, $3e0e2b092da8f124$export$f1e1789686576879)(thumbsSwiper.slidesEl, `[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).forEach((slideEl)=>{\n            slideEl.classList.add(thumbActiveClass);\n        });\n        else {\n            for(let i = 0; i < thumbsToActivate; i += 1)if (thumbsSwiper.slides[swiper.realIndex + i]) thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass);\n        }\n        const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n        const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n        if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n            const currentThumbsIndex = thumbsSwiper.activeIndex;\n            let newThumbsIndex;\n            let direction;\n            if (thumbsSwiper.params.loop) {\n                const newThumbsSlide = thumbsSwiper.slides.filter((slideEl)=>slideEl.getAttribute(\"data-swiper-slide-index\") === `${swiper.realIndex}`)[0];\n                newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide);\n                direction = swiper.activeIndex > swiper.previousIndex ? \"next\" : \"prev\";\n            } else {\n                newThumbsIndex = swiper.realIndex;\n                direction = newThumbsIndex > swiper.previousIndex ? \"next\" : \"prev\";\n            }\n            if (useOffset) newThumbsIndex += direction === \"next\" ? autoScrollOffset : -1 * autoScrollOffset;\n            if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n                if (thumbsSwiper.params.centeredSlides) {\n                    if (newThumbsIndex > currentThumbsIndex) newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n                    else newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n                } else newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup;\n                thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n            }\n        }\n    }\n    on(\"beforeInit\", ()=>{\n        const { thumbs: thumbs } = swiper.params;\n        if (!thumbs || !thumbs.swiper) return;\n        if (typeof thumbs.swiper === \"string\" || thumbs.swiper instanceof HTMLElement) {\n            const document = (0, $768c2f4c151a0363$export$39b482c5e57630a8)();\n            const getThumbsElementAndInit = ()=>{\n                const thumbsElement = typeof thumbs.swiper === \"string\" ? document.querySelector(thumbs.swiper) : thumbs.swiper;\n                if (thumbsElement && thumbsElement.swiper) {\n                    thumbs.swiper = thumbsElement.swiper;\n                    init();\n                    update(true);\n                } else if (thumbsElement) {\n                    const onThumbsSwiper = (e)=>{\n                        thumbs.swiper = e.detail[0];\n                        thumbsElement.removeEventListener(\"init\", onThumbsSwiper);\n                        init();\n                        update(true);\n                        thumbs.swiper.update();\n                        swiper.update();\n                    };\n                    thumbsElement.addEventListener(\"init\", onThumbsSwiper);\n                }\n                return thumbsElement;\n            };\n            const watchForThumbsToAppear = ()=>{\n                if (swiper.destroyed) return;\n                const thumbsElement = getThumbsElementAndInit();\n                if (!thumbsElement) requestAnimationFrame(watchForThumbsToAppear);\n            };\n            requestAnimationFrame(watchForThumbsToAppear);\n        } else {\n            init();\n            update(true);\n        }\n    });\n    on(\"slideChange update resize observerUpdate\", ()=>{\n        update();\n    });\n    on(\"setTransition\", (_s, duration)=>{\n        const thumbsSwiper = swiper.thumbs.swiper;\n        if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n        thumbsSwiper.setTransition(duration);\n    });\n    on(\"beforeDestroy\", ()=>{\n        const thumbsSwiper = swiper.thumbs.swiper;\n        if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n        if (swiperCreated) thumbsSwiper.destroy();\n    });\n    Object.assign(swiper.thumbs, {\n        init: init,\n        update: update\n    });\n}\n\n\n\nfunction $661f7d385acf36a7$export$2e2bcd8739ae039(_ref) {\n    let { swiper: swiper, extendParams: extendParams, emit: emit, once: once } = _ref;\n    extendParams({\n        freeMode: {\n            enabled: false,\n            momentum: true,\n            momentumRatio: 1,\n            momentumBounce: true,\n            momentumBounceRatio: 1,\n            momentumVelocityRatio: 1,\n            sticky: false,\n            minimumVelocity: 0.02\n        }\n    });\n    function onTouchStart() {\n        if (swiper.params.cssMode) return;\n        const translate = swiper.getTranslate();\n        swiper.setTranslate(translate);\n        swiper.setTransition(0);\n        swiper.touchEventsData.velocities.length = 0;\n        swiper.freeMode.onTouchEnd({\n            currentPos: swiper.rtl ? swiper.translate : -swiper.translate\n        });\n    }\n    function onTouchMove() {\n        if (swiper.params.cssMode) return;\n        const { touchEventsData: data, touches: touches } = swiper;\n        // Velocity\n        if (data.velocities.length === 0) data.velocities.push({\n            position: touches[swiper.isHorizontal() ? \"startX\" : \"startY\"],\n            time: data.touchStartTime\n        });\n        data.velocities.push({\n            position: touches[swiper.isHorizontal() ? \"currentX\" : \"currentY\"],\n            time: (0, $3e0e2b092da8f124$export$4368d992c4eafac0)()\n        });\n    }\n    function onTouchEnd(_ref2) {\n        let { currentPos: currentPos } = _ref2;\n        if (swiper.params.cssMode) return;\n        const { params: params, wrapperEl: wrapperEl, rtlTranslate: rtl, snapGrid: snapGrid, touchEventsData: data } = swiper;\n        // Time diff\n        const touchEndTime = (0, $3e0e2b092da8f124$export$4368d992c4eafac0)();\n        const timeDiff = touchEndTime - data.touchStartTime;\n        if (currentPos < -swiper.minTranslate()) {\n            swiper.slideTo(swiper.activeIndex);\n            return;\n        }\n        if (currentPos > -swiper.maxTranslate()) {\n            if (swiper.slides.length < snapGrid.length) swiper.slideTo(snapGrid.length - 1);\n            else swiper.slideTo(swiper.slides.length - 1);\n            return;\n        }\n        if (params.freeMode.momentum) {\n            if (data.velocities.length > 1) {\n                const lastMoveEvent = data.velocities.pop();\n                const velocityEvent = data.velocities.pop();\n                const distance = lastMoveEvent.position - velocityEvent.position;\n                const time = lastMoveEvent.time - velocityEvent.time;\n                swiper.velocity = distance / time;\n                swiper.velocity /= 2;\n                if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) swiper.velocity = 0;\n                // this implies that the user stopped moving a finger then released.\n                // There would be no events with distance zero, so the last event is stale.\n                if (time > 150 || (0, $3e0e2b092da8f124$export$4368d992c4eafac0)() - lastMoveEvent.time > 300) swiper.velocity = 0;\n            } else swiper.velocity = 0;\n            swiper.velocity *= params.freeMode.momentumVelocityRatio;\n            data.velocities.length = 0;\n            let momentumDuration = 1000 * params.freeMode.momentumRatio;\n            const momentumDistance = swiper.velocity * momentumDuration;\n            let newPosition = swiper.translate + momentumDistance;\n            if (rtl) newPosition = -newPosition;\n            let doBounce = false;\n            let afterBouncePosition;\n            const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;\n            let needsLoopFix;\n            if (newPosition < swiper.maxTranslate()) {\n                if (params.freeMode.momentumBounce) {\n                    if (newPosition + swiper.maxTranslate() < -bounceAmount) newPosition = swiper.maxTranslate() - bounceAmount;\n                    afterBouncePosition = swiper.maxTranslate();\n                    doBounce = true;\n                    data.allowMomentumBounce = true;\n                } else newPosition = swiper.maxTranslate();\n                if (params.loop && params.centeredSlides) needsLoopFix = true;\n            } else if (newPosition > swiper.minTranslate()) {\n                if (params.freeMode.momentumBounce) {\n                    if (newPosition - swiper.minTranslate() > bounceAmount) newPosition = swiper.minTranslate() + bounceAmount;\n                    afterBouncePosition = swiper.minTranslate();\n                    doBounce = true;\n                    data.allowMomentumBounce = true;\n                } else newPosition = swiper.minTranslate();\n                if (params.loop && params.centeredSlides) needsLoopFix = true;\n            } else if (params.freeMode.sticky) {\n                let nextSlide;\n                for(let j = 0; j < snapGrid.length; j += 1)if (snapGrid[j] > -newPosition) {\n                    nextSlide = j;\n                    break;\n                }\n                if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === \"next\") newPosition = snapGrid[nextSlide];\n                else newPosition = snapGrid[nextSlide - 1];\n                newPosition = -newPosition;\n            }\n            if (needsLoopFix) once(\"transitionEnd\", ()=>{\n                swiper.loopFix();\n            });\n            // Fix duration\n            if (swiper.velocity !== 0) {\n                if (rtl) momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n                else momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n                if (params.freeMode.sticky) {\n                    // If freeMode.sticky is active and the user ends a swipe with a slow-velocity\n                    // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n                    // It's easy to see this when simulating touch with mouse events. To fix this,\n                    // limit single-slide swipes to the default slide duration. This also has the\n                    // nice side effect of matching slide speed if the user stopped moving before\n                    // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n                    // For faster swipes, also apply limits (albeit higher ones).\n                    const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n                    const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n                    if (moveDistance < currentSlideSize) momentumDuration = params.speed;\n                    else if (moveDistance < 2 * currentSlideSize) momentumDuration = params.speed * 1.5;\n                    else momentumDuration = params.speed * 2.5;\n                }\n            } else if (params.freeMode.sticky) {\n                swiper.slideToClosest();\n                return;\n            }\n            if (params.freeMode.momentumBounce && doBounce) {\n                swiper.updateProgress(afterBouncePosition);\n                swiper.setTransition(momentumDuration);\n                swiper.setTranslate(newPosition);\n                swiper.transitionStart(true, swiper.swipeDirection);\n                swiper.animating = true;\n                (0, $3e0e2b092da8f124$export$23f2a1d2818174ef)(wrapperEl, ()=>{\n                    if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n                    emit(\"momentumBounce\");\n                    swiper.setTransition(params.speed);\n                    setTimeout(()=>{\n                        swiper.setTranslate(afterBouncePosition);\n                        (0, $3e0e2b092da8f124$export$23f2a1d2818174ef)(wrapperEl, ()=>{\n                            if (!swiper || swiper.destroyed) return;\n                            swiper.transitionEnd();\n                        });\n                    }, 0);\n                });\n            } else if (swiper.velocity) {\n                emit(\"_freeModeNoMomentumRelease\");\n                swiper.updateProgress(newPosition);\n                swiper.setTransition(momentumDuration);\n                swiper.setTranslate(newPosition);\n                swiper.transitionStart(true, swiper.swipeDirection);\n                if (!swiper.animating) {\n                    swiper.animating = true;\n                    (0, $3e0e2b092da8f124$export$23f2a1d2818174ef)(wrapperEl, ()=>{\n                        if (!swiper || swiper.destroyed) return;\n                        swiper.transitionEnd();\n                    });\n                }\n            } else swiper.updateProgress(newPosition);\n            swiper.updateActiveIndex();\n            swiper.updateSlidesClasses();\n        } else if (params.freeMode.sticky) {\n            swiper.slideToClosest();\n            return;\n        } else if (params.freeMode) emit(\"_freeModeNoMomentumRelease\");\n        if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {\n            swiper.updateProgress();\n            swiper.updateActiveIndex();\n            swiper.updateSlidesClasses();\n        }\n    }\n    Object.assign(swiper, {\n        freeMode: {\n            onTouchStart: onTouchStart,\n            onTouchMove: onTouchMove,\n            onTouchEnd: onTouchEnd\n        }\n    });\n}\n\n\nfunction $3767883c93014eb9$export$2e2bcd8739ae039(_ref) {\n    let { swiper: swiper, extendParams: extendParams } = _ref;\n    extendParams({\n        grid: {\n            rows: 1,\n            fill: \"column\"\n        }\n    });\n    let slidesNumberEvenToRows;\n    let slidesPerRow;\n    let numFullColumns;\n    const getSpaceBetween = ()=>{\n        let spaceBetween = swiper.params.spaceBetween;\n        if (typeof spaceBetween === \"string\" && spaceBetween.indexOf(\"%\") >= 0) spaceBetween = parseFloat(spaceBetween.replace(\"%\", \"\")) / 100 * swiper.size;\n        else if (typeof spaceBetween === \"string\") spaceBetween = parseFloat(spaceBetween);\n        return spaceBetween;\n    };\n    const initSlides = (slidesLength)=>{\n        const { slidesPerView: slidesPerView } = swiper.params;\n        const { rows: rows, fill: fill } = swiper.params.grid;\n        numFullColumns = Math.floor(slidesLength / rows);\n        if (Math.floor(slidesLength / rows) === slidesLength / rows) slidesNumberEvenToRows = slidesLength;\n        else slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;\n        if (slidesPerView !== \"auto\" && fill === \"row\") slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);\n        slidesPerRow = slidesNumberEvenToRows / rows;\n    };\n    const updateSlide = (i, slide, slidesLength, getDirectionLabel)=>{\n        const { slidesPerGroup: slidesPerGroup } = swiper.params;\n        const spaceBetween = getSpaceBetween();\n        const { rows: rows, fill: fill } = swiper.params.grid;\n        // Set slides order\n        let newSlideOrderIndex;\n        let column;\n        let row;\n        if (fill === \"row\" && slidesPerGroup > 1) {\n            const groupIndex = Math.floor(i / (slidesPerGroup * rows));\n            const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;\n            const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup);\n            row = Math.floor(slideIndexInGroup / columnsInGroup);\n            column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;\n            newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows;\n            slide.style.order = newSlideOrderIndex;\n        } else if (fill === \"column\") {\n            column = Math.floor(i / rows);\n            row = i - column * rows;\n            if (column > numFullColumns || column === numFullColumns && row === rows - 1) {\n                row += 1;\n                if (row >= rows) {\n                    row = 0;\n                    column += 1;\n                }\n            }\n        } else {\n            row = Math.floor(i / slidesPerRow);\n            column = i - row * slidesPerRow;\n        }\n        slide.row = row;\n        slide.column = column;\n        slide.style[getDirectionLabel(\"margin-top\")] = row !== 0 ? spaceBetween && `${spaceBetween}px` : \"\";\n    };\n    const updateWrapperSize = (slideSize, snapGrid, getDirectionLabel)=>{\n        const { centeredSlides: centeredSlides, roundLengths: roundLengths } = swiper.params;\n        const spaceBetween = getSpaceBetween();\n        const { rows: rows } = swiper.params.grid;\n        swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;\n        swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;\n        swiper.wrapperEl.style[getDirectionLabel(\"width\")] = `${swiper.virtualSize + spaceBetween}px`;\n        if (centeredSlides) {\n            const newSlidesGrid = [];\n            for(let i = 0; i < snapGrid.length; i += 1){\n                let slidesGridItem = snapGrid[i];\n                if (roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n                if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n            }\n            snapGrid.splice(0, snapGrid.length);\n            snapGrid.push(...newSlidesGrid);\n        }\n    };\n    swiper.grid = {\n        initSlides: initSlides,\n        updateSlide: updateSlide,\n        updateWrapperSize: updateWrapperSize\n    };\n}\n\n\nfunction $e8eb9c2e5c926b2c$var$appendSlide(slides) {\n    const swiper = this;\n    const { params: params, slidesEl: slidesEl } = swiper;\n    if (params.loop) swiper.loopDestroy();\n    const appendElement = (slideEl)=>{\n        if (typeof slideEl === \"string\") {\n            const tempDOM = document.createElement(\"div\");\n            tempDOM.innerHTML = slideEl;\n            slidesEl.append(tempDOM.children[0]);\n            tempDOM.innerHTML = \"\";\n        } else slidesEl.append(slideEl);\n    };\n    if (typeof slides === \"object\" && \"length\" in slides) {\n        for(let i = 0; i < slides.length; i += 1)if (slides[i]) appendElement(slides[i]);\n    } else appendElement(slides);\n    swiper.recalcSlides();\n    if (params.loop) swiper.loopCreate();\n    if (!params.observer || swiper.isElement) swiper.update();\n}\nfunction $e8eb9c2e5c926b2c$var$prependSlide(slides) {\n    const swiper = this;\n    const { params: params, activeIndex: activeIndex, slidesEl: slidesEl } = swiper;\n    if (params.loop) swiper.loopDestroy();\n    let newActiveIndex = activeIndex + 1;\n    const prependElement = (slideEl)=>{\n        if (typeof slideEl === \"string\") {\n            const tempDOM = document.createElement(\"div\");\n            tempDOM.innerHTML = slideEl;\n            slidesEl.prepend(tempDOM.children[0]);\n            tempDOM.innerHTML = \"\";\n        } else slidesEl.prepend(slideEl);\n    };\n    if (typeof slides === \"object\" && \"length\" in slides) {\n        for(let i = 0; i < slides.length; i += 1)if (slides[i]) prependElement(slides[i]);\n        newActiveIndex = activeIndex + slides.length;\n    } else prependElement(slides);\n    swiper.recalcSlides();\n    if (params.loop) swiper.loopCreate();\n    if (!params.observer || swiper.isElement) swiper.update();\n    swiper.slideTo(newActiveIndex, 0, false);\n}\nfunction $e8eb9c2e5c926b2c$var$addSlide(index, slides) {\n    const swiper = this;\n    const { params: params, activeIndex: activeIndex, slidesEl: slidesEl } = swiper;\n    let activeIndexBuffer = activeIndex;\n    if (params.loop) {\n        activeIndexBuffer -= swiper.loopedSlides;\n        swiper.loopDestroy();\n        swiper.recalcSlides();\n    }\n    const baseLength = swiper.slides.length;\n    if (index <= 0) {\n        swiper.prependSlide(slides);\n        return;\n    }\n    if (index >= baseLength) {\n        swiper.appendSlide(slides);\n        return;\n    }\n    let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n    const slidesBuffer = [];\n    for(let i = baseLength - 1; i >= index; i -= 1){\n        const currentSlide = swiper.slides[i];\n        currentSlide.remove();\n        slidesBuffer.unshift(currentSlide);\n    }\n    if (typeof slides === \"object\" && \"length\" in slides) {\n        for(let i = 0; i < slides.length; i += 1)if (slides[i]) slidesEl.append(slides[i]);\n        newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n    } else slidesEl.append(slides);\n    for(let i = 0; i < slidesBuffer.length; i += 1)slidesEl.append(slidesBuffer[i]);\n    swiper.recalcSlides();\n    if (params.loop) swiper.loopCreate();\n    if (!params.observer || swiper.isElement) swiper.update();\n    if (params.loop) swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n    else swiper.slideTo(newActiveIndex, 0, false);\n}\nfunction $e8eb9c2e5c926b2c$var$removeSlide(slidesIndexes) {\n    const swiper = this;\n    const { params: params, activeIndex: activeIndex } = swiper;\n    let activeIndexBuffer = activeIndex;\n    if (params.loop) {\n        activeIndexBuffer -= swiper.loopedSlides;\n        swiper.loopDestroy();\n    }\n    let newActiveIndex = activeIndexBuffer;\n    let indexToRemove;\n    if (typeof slidesIndexes === \"object\" && \"length\" in slidesIndexes) {\n        for(let i = 0; i < slidesIndexes.length; i += 1){\n            indexToRemove = slidesIndexes[i];\n            if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove();\n            if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n        }\n        newActiveIndex = Math.max(newActiveIndex, 0);\n    } else {\n        indexToRemove = slidesIndexes;\n        if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove();\n        if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n        newActiveIndex = Math.max(newActiveIndex, 0);\n    }\n    swiper.recalcSlides();\n    if (params.loop) swiper.loopCreate();\n    if (!params.observer || swiper.isElement) swiper.update();\n    if (params.loop) swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n    else swiper.slideTo(newActiveIndex, 0, false);\n}\nfunction $e8eb9c2e5c926b2c$var$removeAllSlides() {\n    const swiper = this;\n    const slidesIndexes = [];\n    for(let i = 0; i < swiper.slides.length; i += 1)slidesIndexes.push(i);\n    swiper.removeSlide(slidesIndexes);\n}\nfunction $e8eb9c2e5c926b2c$export$2e2bcd8739ae039(_ref) {\n    let { swiper: swiper } = _ref;\n    Object.assign(swiper, {\n        appendSlide: $e8eb9c2e5c926b2c$var$appendSlide.bind(swiper),\n        prependSlide: $e8eb9c2e5c926b2c$var$prependSlide.bind(swiper),\n        addSlide: $e8eb9c2e5c926b2c$var$addSlide.bind(swiper),\n        removeSlide: $e8eb9c2e5c926b2c$var$removeSlide.bind(swiper),\n        removeAllSlides: $e8eb9c2e5c926b2c$var$removeAllSlides.bind(swiper)\n    });\n}\n\n\nfunction $ce39167a9c5549e3$export$f1e1789686576879(params) {\n    const { effect: effect, swiper: swiper, on: on, setTranslate: setTranslate, setTransition: setTransition, overwriteParams: overwriteParams, perspective: perspective, recreateShadows: recreateShadows, getEffectParams: getEffectParams } = params;\n    on(\"beforeInit\", ()=>{\n        if (swiper.params.effect !== effect) return;\n        swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);\n        if (perspective && perspective()) swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n        const overwriteParamsResult = overwriteParams ? overwriteParams() : {};\n        Object.assign(swiper.params, overwriteParamsResult);\n        Object.assign(swiper.originalParams, overwriteParamsResult);\n    });\n    on(\"setTranslate\", ()=>{\n        if (swiper.params.effect !== effect) return;\n        setTranslate();\n    });\n    on(\"setTransition\", (_s, duration)=>{\n        if (swiper.params.effect !== effect) return;\n        setTransition(duration);\n    });\n    on(\"transitionEnd\", ()=>{\n        if (swiper.params.effect !== effect) return;\n        if (recreateShadows) {\n            if (!getEffectParams || !getEffectParams().slideShadows) return;\n            // remove shadows\n            swiper.slides.forEach((slideEl)=>{\n                slideEl.querySelectorAll(\".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left\").forEach((shadowEl)=>shadowEl.remove());\n            });\n            // create new one\n            recreateShadows();\n        }\n    });\n    let requireUpdateOnVirtual;\n    on(\"virtualUpdate\", ()=>{\n        if (swiper.params.effect !== effect) return;\n        if (!swiper.slides.length) requireUpdateOnVirtual = true;\n        requestAnimationFrame(()=>{\n            if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) {\n                setTranslate();\n                requireUpdateOnVirtual = false;\n            }\n        });\n    });\n}\n\n\n\nfunction $1edc75782959477e$export$f1e1789686576879(effectParams, slideEl) {\n    const transformEl = (0, $3e0e2b092da8f124$export$342063e11d6c3cad)(slideEl);\n    if (transformEl !== slideEl) {\n        transformEl.style.backfaceVisibility = \"hidden\";\n        transformEl.style[\"-webkit-backface-visibility\"] = \"hidden\";\n    }\n    return transformEl;\n}\n\n\n\nfunction $3ea27eb365069d23$export$f1e1789686576879(_ref) {\n    let { swiper: swiper, duration: duration, transformElements: transformElements, allSlides: allSlides } = _ref;\n    const { activeIndex: activeIndex } = swiper;\n    const getSlide = (el)=>{\n        if (!el.parentElement) {\n            // assume shadow root\n            const slide = swiper.slides.filter((slideEl)=>slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode)[0];\n            return slide;\n        }\n        return el.parentElement;\n    };\n    if (swiper.params.virtualTranslate && duration !== 0) {\n        let eventTriggered = false;\n        let transitionEndTarget;\n        if (allSlides) transitionEndTarget = transformElements;\n        else transitionEndTarget = transformElements.filter((transformEl)=>{\n            const el = transformEl.classList.contains(\"swiper-slide-transform\") ? getSlide(transformEl) : transformEl;\n            return swiper.getSlideIndex(el) === activeIndex;\n        });\n        transitionEndTarget.forEach((el)=>{\n            (0, $3e0e2b092da8f124$export$23f2a1d2818174ef)(el, ()=>{\n                if (eventTriggered) return;\n                if (!swiper || swiper.destroyed) return;\n                eventTriggered = true;\n                swiper.animating = false;\n                const evt = new window.CustomEvent(\"transitionend\", {\n                    bubbles: true,\n                    cancelable: true\n                });\n                swiper.wrapperEl.dispatchEvent(evt);\n            });\n        });\n    }\n}\n\n\n\nfunction $ed89a1cd6005d986$export$2e2bcd8739ae039(_ref) {\n    let { swiper: swiper, extendParams: extendParams, on: on } = _ref;\n    extendParams({\n        fadeEffect: {\n            crossFade: false\n        }\n    });\n    const setTranslate = ()=>{\n        const { slides: slides } = swiper;\n        const params = swiper.params.fadeEffect;\n        for(let i = 0; i < slides.length; i += 1){\n            const slideEl = swiper.slides[i];\n            const offset = slideEl.swiperSlideOffset;\n            let tx = -offset;\n            if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n            let ty = 0;\n            if (!swiper.isHorizontal()) {\n                ty = tx;\n                tx = 0;\n            }\n            const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0);\n            const targetEl = (0, $1edc75782959477e$export$f1e1789686576879)(params, slideEl);\n            targetEl.style.opacity = slideOpacity;\n            targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`;\n        }\n    };\n    const setTransition = (duration)=>{\n        const transformElements = swiper.slides.map((slideEl)=>(0, $3e0e2b092da8f124$export$342063e11d6c3cad)(slideEl));\n        transformElements.forEach((el)=>{\n            el.style.transitionDuration = `${duration}ms`;\n        });\n        (0, $3ea27eb365069d23$export$f1e1789686576879)({\n            swiper: swiper,\n            duration: duration,\n            transformElements: transformElements,\n            allSlides: true\n        });\n    };\n    (0, $ce39167a9c5549e3$export$f1e1789686576879)({\n        effect: \"fade\",\n        swiper: swiper,\n        on: on,\n        setTranslate: setTranslate,\n        setTransition: setTransition,\n        overwriteParams: ()=>({\n                slidesPerView: 1,\n                slidesPerGroup: 1,\n                watchSlidesProgress: true,\n                spaceBetween: 0,\n                virtualTranslate: !swiper.params.cssMode\n            })\n    });\n}\n\n\n\n\nfunction $75984ef6f5fe27b6$export$2e2bcd8739ae039(_ref) {\n    let { swiper: swiper, extendParams: extendParams, on: on } = _ref;\n    extendParams({\n        cubeEffect: {\n            slideShadows: true,\n            shadow: true,\n            shadowOffset: 20,\n            shadowScale: 0.94\n        }\n    });\n    const createSlideShadows = (slideEl, progress, isHorizontal)=>{\n        let shadowBefore = isHorizontal ? slideEl.querySelector(\".swiper-slide-shadow-left\") : slideEl.querySelector(\".swiper-slide-shadow-top\");\n        let shadowAfter = isHorizontal ? slideEl.querySelector(\".swiper-slide-shadow-right\") : slideEl.querySelector(\".swiper-slide-shadow-bottom\");\n        if (!shadowBefore) {\n            shadowBefore = (0, $3e0e2b092da8f124$export$db3b6bfb95261072)(\"div\", `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? \"left\" : \"top\"}`.split(\" \"));\n            slideEl.append(shadowBefore);\n        }\n        if (!shadowAfter) {\n            shadowAfter = (0, $3e0e2b092da8f124$export$db3b6bfb95261072)(\"div\", `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? \"right\" : \"bottom\"}`.split(\" \"));\n            slideEl.append(shadowAfter);\n        }\n        if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);\n        if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);\n    };\n    const recreateShadows = ()=>{\n        // create new ones\n        const isHorizontal = swiper.isHorizontal();\n        swiper.slides.forEach((slideEl)=>{\n            const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n            createSlideShadows(slideEl, progress, isHorizontal);\n        });\n    };\n    const setTranslate = ()=>{\n        const { el: el, wrapperEl: wrapperEl, slides: slides, width: swiperWidth, height: swiperHeight, rtlTranslate: rtl, size: swiperSize, browser: browser } = swiper;\n        const params = swiper.params.cubeEffect;\n        const isHorizontal = swiper.isHorizontal();\n        const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n        let wrapperRotate = 0;\n        let cubeShadowEl;\n        if (params.shadow) {\n            if (isHorizontal) {\n                cubeShadowEl = swiper.wrapperEl.querySelector(\".swiper-cube-shadow\");\n                if (!cubeShadowEl) {\n                    cubeShadowEl = (0, $3e0e2b092da8f124$export$db3b6bfb95261072)(\"div\", \"swiper-cube-shadow\");\n                    swiper.wrapperEl.append(cubeShadowEl);\n                }\n                cubeShadowEl.style.height = `${swiperWidth}px`;\n            } else {\n                cubeShadowEl = el.querySelector(\".swiper-cube-shadow\");\n                if (!cubeShadowEl) {\n                    cubeShadowEl = (0, $3e0e2b092da8f124$export$db3b6bfb95261072)(\"div\", \"swiper-cube-shadow\");\n                    el.append(cubeShadowEl);\n                }\n            }\n        }\n        for(let i = 0; i < slides.length; i += 1){\n            const slideEl = slides[i];\n            let slideIndex = i;\n            if (isVirtual) slideIndex = parseInt(slideEl.getAttribute(\"data-swiper-slide-index\"), 10);\n            let slideAngle = slideIndex * 90;\n            let round = Math.floor(slideAngle / 360);\n            if (rtl) {\n                slideAngle = -slideAngle;\n                round = Math.floor(-slideAngle / 360);\n            }\n            const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n            let tx = 0;\n            let ty = 0;\n            let tz = 0;\n            if (slideIndex % 4 === 0) {\n                tx = -round * 4 * swiperSize;\n                tz = 0;\n            } else if ((slideIndex - 1) % 4 === 0) {\n                tx = 0;\n                tz = -round * 4 * swiperSize;\n            } else if ((slideIndex - 2) % 4 === 0) {\n                tx = swiperSize + round * 4 * swiperSize;\n                tz = swiperSize;\n            } else if ((slideIndex - 3) % 4 === 0) {\n                tx = -swiperSize;\n                tz = 3 * swiperSize + swiperSize * 4 * round;\n            }\n            if (rtl) tx = -tx;\n            if (!isHorizontal) {\n                ty = tx;\n                tx = 0;\n            }\n            const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n            if (progress <= 1 && progress > -1) {\n                wrapperRotate = slideIndex * 90 + progress * 90;\n                if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;\n            }\n            slideEl.style.transform = transform;\n            if (params.slideShadows) createSlideShadows(slideEl, progress, isHorizontal);\n        }\n        wrapperEl.style.transformOrigin = `50% 50% -${swiperSize / 2}px`;\n        wrapperEl.style[\"-webkit-transform-origin\"] = `50% 50% -${swiperSize / 2}px`;\n        if (params.shadow) {\n            if (isHorizontal) cubeShadowEl.style.transform = `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`;\n            else {\n                const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n                const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);\n                const scale1 = params.shadowScale;\n                const scale2 = params.shadowScale / multiplier;\n                const offset = params.shadowOffset;\n                cubeShadowEl.style.transform = `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`;\n            }\n        }\n        const zFactor = (browser.isSafari || browser.isWebView) && browser.needPerspectiveFix ? -swiperSize / 2 : 0;\n        wrapperEl.style.transform = `translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`;\n        wrapperEl.style.setProperty(\"--swiper-cube-translate-z\", `${zFactor}px`);\n    };\n    const setTransition = (duration)=>{\n        const { el: el, slides: slides } = swiper;\n        slides.forEach((slideEl)=>{\n            slideEl.style.transitionDuration = `${duration}ms`;\n            slideEl.querySelectorAll(\".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left\").forEach((subEl)=>{\n                subEl.style.transitionDuration = `${duration}ms`;\n            });\n        });\n        if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n            const shadowEl = el.querySelector(\".swiper-cube-shadow\");\n            if (shadowEl) shadowEl.style.transitionDuration = `${duration}ms`;\n        }\n    };\n    (0, $ce39167a9c5549e3$export$f1e1789686576879)({\n        effect: \"cube\",\n        swiper: swiper,\n        on: on,\n        setTranslate: setTranslate,\n        setTransition: setTransition,\n        recreateShadows: recreateShadows,\n        getEffectParams: ()=>swiper.params.cubeEffect,\n        perspective: ()=>true,\n        overwriteParams: ()=>({\n                slidesPerView: 1,\n                slidesPerGroup: 1,\n                watchSlidesProgress: true,\n                resistanceRatio: 0,\n                spaceBetween: 0,\n                centeredSlides: false,\n                virtualTranslate: true\n            })\n    });\n}\n\n\n\nfunction $4dfb92d69cb8a433$export$db3b6bfb95261072(suffix, slideEl, side) {\n    const shadowClass = `swiper-slide-shadow${side ? `-${side}` : \"\"}${suffix ? ` swiper-slide-shadow-${suffix}` : \"\"}`;\n    const shadowContainer = (0, $3e0e2b092da8f124$export$342063e11d6c3cad)(slideEl);\n    let shadowEl = shadowContainer.querySelector(`.${shadowClass.split(\" \").join(\".\")}`);\n    if (!shadowEl) {\n        shadowEl = (0, $3e0e2b092da8f124$export$db3b6bfb95261072)(\"div\", shadowClass.split(\" \"));\n        shadowContainer.append(shadowEl);\n    }\n    return shadowEl;\n}\n\n\n\n\n\n\nfunction $7a3c30fafac582ff$export$2e2bcd8739ae039(_ref) {\n    let { swiper: swiper, extendParams: extendParams, on: on } = _ref;\n    extendParams({\n        flipEffect: {\n            slideShadows: true,\n            limitRotation: true\n        }\n    });\n    const createSlideShadows = (slideEl, progress)=>{\n        let shadowBefore = swiper.isHorizontal() ? slideEl.querySelector(\".swiper-slide-shadow-left\") : slideEl.querySelector(\".swiper-slide-shadow-top\");\n        let shadowAfter = swiper.isHorizontal() ? slideEl.querySelector(\".swiper-slide-shadow-right\") : slideEl.querySelector(\".swiper-slide-shadow-bottom\");\n        if (!shadowBefore) shadowBefore = (0, $4dfb92d69cb8a433$export$db3b6bfb95261072)(\"flip\", slideEl, swiper.isHorizontal() ? \"left\" : \"top\");\n        if (!shadowAfter) shadowAfter = (0, $4dfb92d69cb8a433$export$db3b6bfb95261072)(\"flip\", slideEl, swiper.isHorizontal() ? \"right\" : \"bottom\");\n        if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);\n        if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);\n    };\n    const recreateShadows = ()=>{\n        // Set shadows\n        swiper.params.flipEffect;\n        swiper.slides.forEach((slideEl)=>{\n            let progress = slideEl.progress;\n            if (swiper.params.flipEffect.limitRotation) progress = Math.max(Math.min(slideEl.progress, 1), -1);\n            createSlideShadows(slideEl, progress);\n        });\n    };\n    const setTranslate = ()=>{\n        const { slides: slides, rtlTranslate: rtl } = swiper;\n        const params = swiper.params.flipEffect;\n        for(let i = 0; i < slides.length; i += 1){\n            const slideEl = slides[i];\n            let progress = slideEl.progress;\n            if (swiper.params.flipEffect.limitRotation) progress = Math.max(Math.min(slideEl.progress, 1), -1);\n            const offset = slideEl.swiperSlideOffset;\n            const rotate = -180 * progress;\n            let rotateY = rotate;\n            let rotateX = 0;\n            let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n            let ty = 0;\n            if (!swiper.isHorizontal()) {\n                ty = tx;\n                tx = 0;\n                rotateX = -rotateY;\n                rotateY = 0;\n            } else if (rtl) rotateY = -rotateY;\n            slideEl.style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n            if (params.slideShadows) createSlideShadows(slideEl, progress);\n            const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;\n            const targetEl = (0, $1edc75782959477e$export$f1e1789686576879)(params, slideEl);\n            targetEl.style.transform = transform;\n        }\n    };\n    const setTransition = (duration)=>{\n        const transformElements = swiper.slides.map((slideEl)=>(0, $3e0e2b092da8f124$export$342063e11d6c3cad)(slideEl));\n        transformElements.forEach((el)=>{\n            el.style.transitionDuration = `${duration}ms`;\n            el.querySelectorAll(\".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left\").forEach((shadowEl)=>{\n                shadowEl.style.transitionDuration = `${duration}ms`;\n            });\n        });\n        (0, $3ea27eb365069d23$export$f1e1789686576879)({\n            swiper: swiper,\n            duration: duration,\n            transformElements: transformElements\n        });\n    };\n    (0, $ce39167a9c5549e3$export$f1e1789686576879)({\n        effect: \"flip\",\n        swiper: swiper,\n        on: on,\n        setTranslate: setTranslate,\n        setTransition: setTransition,\n        recreateShadows: recreateShadows,\n        getEffectParams: ()=>swiper.params.flipEffect,\n        perspective: ()=>true,\n        overwriteParams: ()=>({\n                slidesPerView: 1,\n                slidesPerGroup: 1,\n                watchSlidesProgress: true,\n                spaceBetween: 0,\n                virtualTranslate: !swiper.params.cssMode\n            })\n    });\n}\n\n\n\n\n\n\nfunction $8b7378894c192c44$export$2e2bcd8739ae039(_ref) {\n    let { swiper: swiper, extendParams: extendParams, on: on } = _ref;\n    extendParams({\n        coverflowEffect: {\n            rotate: 50,\n            stretch: 0,\n            depth: 100,\n            scale: 1,\n            modifier: 1,\n            slideShadows: true\n        }\n    });\n    const setTranslate = ()=>{\n        const { width: swiperWidth, height: swiperHeight, slides: slides, slidesSizesGrid: slidesSizesGrid } = swiper;\n        const params = swiper.params.coverflowEffect;\n        const isHorizontal = swiper.isHorizontal();\n        const transform = swiper.translate;\n        const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;\n        const rotate = isHorizontal ? params.rotate : -params.rotate;\n        const translate = params.depth;\n        // Each slide offset from center\n        for(let i = 0, length = slides.length; i < length; i += 1){\n            const slideEl = slides[i];\n            const slideSize = slidesSizesGrid[i];\n            const slideOffset = slideEl.swiperSlideOffset;\n            const centerOffset = (center - slideOffset - slideSize / 2) / slideSize;\n            const offsetMultiplier = typeof params.modifier === \"function\" ? params.modifier(centerOffset) : centerOffset * params.modifier;\n            let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n            let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n            // var rotateZ = 0\n            let translateZ = -translate * Math.abs(offsetMultiplier);\n            let stretch = params.stretch;\n            // Allow percentage to make a relative stretch for responsive sliders\n            if (typeof stretch === \"string\" && stretch.indexOf(\"%\") !== -1) stretch = parseFloat(params.stretch) / 100 * slideSize;\n            let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n            let translateX = isHorizontal ? stretch * offsetMultiplier : 0;\n            let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier);\n            // Fix for ultra small values\n            if (Math.abs(translateX) < 0.001) translateX = 0;\n            if (Math.abs(translateY) < 0.001) translateY = 0;\n            if (Math.abs(translateZ) < 0.001) translateZ = 0;\n            if (Math.abs(rotateY) < 0.001) rotateY = 0;\n            if (Math.abs(rotateX) < 0.001) rotateX = 0;\n            if (Math.abs(scale) < 0.001) scale = 0;\n            const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px)  rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`;\n            const targetEl = (0, $1edc75782959477e$export$f1e1789686576879)(params, slideEl);\n            targetEl.style.transform = slideTransform;\n            slideEl.style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n            if (params.slideShadows) {\n                // Set shadows\n                let shadowBeforeEl = isHorizontal ? slideEl.querySelector(\".swiper-slide-shadow-left\") : slideEl.querySelector(\".swiper-slide-shadow-top\");\n                let shadowAfterEl = isHorizontal ? slideEl.querySelector(\".swiper-slide-shadow-right\") : slideEl.querySelector(\".swiper-slide-shadow-bottom\");\n                if (!shadowBeforeEl) shadowBeforeEl = (0, $4dfb92d69cb8a433$export$db3b6bfb95261072)(\"coverflow\", slideEl, isHorizontal ? \"left\" : \"top\");\n                if (!shadowAfterEl) shadowAfterEl = (0, $4dfb92d69cb8a433$export$db3b6bfb95261072)(\"coverflow\", slideEl, isHorizontal ? \"right\" : \"bottom\");\n                if (shadowBeforeEl) shadowBeforeEl.style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n                if (shadowAfterEl) shadowAfterEl.style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\n            }\n        }\n    };\n    const setTransition = (duration)=>{\n        const transformElements = swiper.slides.map((slideEl)=>(0, $3e0e2b092da8f124$export$342063e11d6c3cad)(slideEl));\n        transformElements.forEach((el)=>{\n            el.style.transitionDuration = `${duration}ms`;\n            el.querySelectorAll(\".swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left\").forEach((shadowEl)=>{\n                shadowEl.style.transitionDuration = `${duration}ms`;\n            });\n        });\n    };\n    (0, $ce39167a9c5549e3$export$f1e1789686576879)({\n        effect: \"coverflow\",\n        swiper: swiper,\n        on: on,\n        setTranslate: setTranslate,\n        setTransition: setTransition,\n        perspective: ()=>true,\n        overwriteParams: ()=>({\n                watchSlidesProgress: true\n            })\n    });\n}\n\n\n\n\n\n\n\nfunction $9406c03f7fbaac7d$export$2e2bcd8739ae039(_ref) {\n    let { swiper: swiper, extendParams: extendParams, on: on } = _ref;\n    extendParams({\n        creativeEffect: {\n            limitProgress: 1,\n            shadowPerProgress: false,\n            progressMultiplier: 1,\n            perspective: true,\n            prev: {\n                translate: [\n                    0,\n                    0,\n                    0\n                ],\n                rotate: [\n                    0,\n                    0,\n                    0\n                ],\n                opacity: 1,\n                scale: 1\n            },\n            next: {\n                translate: [\n                    0,\n                    0,\n                    0\n                ],\n                rotate: [\n                    0,\n                    0,\n                    0\n                ],\n                opacity: 1,\n                scale: 1\n            }\n        }\n    });\n    const getTranslateValue = (value)=>{\n        if (typeof value === \"string\") return value;\n        return `${value}px`;\n    };\n    const setTranslate = ()=>{\n        const { slides: slides, wrapperEl: wrapperEl, slidesSizesGrid: slidesSizesGrid } = swiper;\n        const params = swiper.params.creativeEffect;\n        const { progressMultiplier: multiplier } = params;\n        const isCenteredSlides = swiper.params.centeredSlides;\n        if (isCenteredSlides) {\n            const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;\n            wrapperEl.style.transform = `translateX(calc(50% - ${margin}px))`;\n        }\n        for(let i = 0; i < slides.length; i += 1){\n            const slideEl = slides[i];\n            const slideProgress = slideEl.progress;\n            const progress = Math.min(Math.max(slideEl.progress, -params.limitProgress), params.limitProgress);\n            let originalProgress = progress;\n            if (!isCenteredSlides) originalProgress = Math.min(Math.max(slideEl.originalProgress, -params.limitProgress), params.limitProgress);\n            const offset = slideEl.swiperSlideOffset;\n            const t = [\n                swiper.params.cssMode ? -offset - swiper.translate : -offset,\n                0,\n                0\n            ];\n            const r = [\n                0,\n                0,\n                0\n            ];\n            let custom = false;\n            if (!swiper.isHorizontal()) {\n                t[1] = t[0];\n                t[0] = 0;\n            }\n            let data = {\n                translate: [\n                    0,\n                    0,\n                    0\n                ],\n                rotate: [\n                    0,\n                    0,\n                    0\n                ],\n                scale: 1,\n                opacity: 1\n            };\n            if (progress < 0) {\n                data = params.next;\n                custom = true;\n            } else if (progress > 0) {\n                data = params.prev;\n                custom = true;\n            }\n            // set translate\n            t.forEach((value, index)=>{\n                t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`;\n            });\n            // set rotates\n            r.forEach((value, index)=>{\n                r[index] = data.rotate[index] * Math.abs(progress * multiplier);\n            });\n            slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n            const translateString = t.join(\", \");\n            const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${r[2]}deg)`;\n            const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;\n            const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier;\n            const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`;\n            // Set shadows\n            if (custom && data.shadow || !custom) {\n                let shadowEl = slideEl.querySelector(\".swiper-slide-shadow\");\n                if (!shadowEl && data.shadow) shadowEl = (0, $4dfb92d69cb8a433$export$db3b6bfb95261072)(\"creative\", slideEl);\n                if (shadowEl) {\n                    const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress;\n                    shadowEl.style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);\n                }\n            }\n            const targetEl = (0, $1edc75782959477e$export$f1e1789686576879)(params, slideEl);\n            targetEl.style.transform = transform;\n            targetEl.style.opacity = opacityString;\n            if (data.origin) targetEl.style.transformOrigin = data.origin;\n        }\n    };\n    const setTransition = (duration)=>{\n        const transformElements = swiper.slides.map((slideEl)=>(0, $3e0e2b092da8f124$export$342063e11d6c3cad)(slideEl));\n        transformElements.forEach((el)=>{\n            el.style.transitionDuration = `${duration}ms`;\n            el.querySelectorAll(\".swiper-slide-shadow\").forEach((shadowEl)=>{\n                shadowEl.style.transitionDuration = `${duration}ms`;\n            });\n        });\n        (0, $3ea27eb365069d23$export$f1e1789686576879)({\n            swiper: swiper,\n            duration: duration,\n            transformElements: transformElements,\n            allSlides: true\n        });\n    };\n    (0, $ce39167a9c5549e3$export$f1e1789686576879)({\n        effect: \"creative\",\n        swiper: swiper,\n        on: on,\n        setTranslate: setTranslate,\n        setTransition: setTransition,\n        perspective: ()=>swiper.params.creativeEffect.perspective,\n        overwriteParams: ()=>({\n                watchSlidesProgress: true,\n                virtualTranslate: !swiper.params.cssMode\n            })\n    });\n}\n\n\n\n\n\n\n\nfunction $ccd0a7134d1e48e4$export$2e2bcd8739ae039(_ref) {\n    let { swiper: swiper, extendParams: extendParams, on: on } = _ref;\n    extendParams({\n        cardsEffect: {\n            slideShadows: true,\n            rotate: true,\n            perSlideRotate: 2,\n            perSlideOffset: 8\n        }\n    });\n    const setTranslate = ()=>{\n        const { slides: slides, activeIndex: activeIndex, rtlTranslate: rtl } = swiper;\n        const params = swiper.params.cardsEffect;\n        const { startTranslate: startTranslate, isTouched: isTouched } = swiper.touchEventsData;\n        const currentTranslate = rtl ? -swiper.translate : swiper.translate;\n        for(let i = 0; i < slides.length; i += 1){\n            const slideEl = slides[i];\n            const slideProgress = slideEl.progress;\n            const progress = Math.min(Math.max(slideProgress, -4), 4);\n            let offset = slideEl.swiperSlideOffset;\n            if (swiper.params.centeredSlides && !swiper.params.cssMode) swiper.wrapperEl.style.transform = `translateX(${swiper.minTranslate()}px)`;\n            if (swiper.params.centeredSlides && swiper.params.cssMode) offset -= slides[0].swiperSlideOffset;\n            let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n            let tY = 0;\n            const tZ = -100 * Math.abs(progress);\n            let scale = 1;\n            let rotate = -params.perSlideRotate * progress;\n            let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75;\n            const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i;\n            const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate;\n            const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate;\n            if (isSwipeToNext || isSwipeToPrev) {\n                const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;\n                rotate += -28 * progress * subProgress;\n                scale += -0.5 * subProgress;\n                tXAdd += 96 * subProgress;\n                tY = `${-25 * subProgress * Math.abs(progress)}%`;\n            }\n            if (progress < 0) // next\n            tX = `calc(${tX}px ${rtl ? \"-\" : \"+\"} (${tXAdd * Math.abs(progress)}%))`;\n            else if (progress > 0) // prev\n            tX = `calc(${tX}px ${rtl ? \"-\" : \"+\"} (-${tXAdd * Math.abs(progress)}%))`;\n            else tX = `${tX}px`;\n            if (!swiper.isHorizontal()) {\n                const prevY = tY;\n                tY = tX;\n                tX = prevY;\n            }\n            const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;\n            /* eslint-disable */ const transform = `\n        translate3d(${tX}, ${tY}, ${tZ}px)\n        rotateZ(${params.rotate ? rtl ? -rotate : rotate : 0}deg)\n        scale(${scaleString})\n      `;\n            /* eslint-enable */ if (params.slideShadows) {\n                // Set shadows\n                let shadowEl = slideEl.querySelector(\".swiper-slide-shadow\");\n                if (!shadowEl) shadowEl = (0, $4dfb92d69cb8a433$export$db3b6bfb95261072)(\"cards\", slideEl);\n                if (shadowEl) shadowEl.style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);\n            }\n            slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n            const targetEl = (0, $1edc75782959477e$export$f1e1789686576879)(params, slideEl);\n            targetEl.style.transform = transform;\n        }\n    };\n    const setTransition = (duration)=>{\n        const transformElements = swiper.slides.map((slideEl)=>(0, $3e0e2b092da8f124$export$342063e11d6c3cad)(slideEl));\n        transformElements.forEach((el)=>{\n            el.style.transitionDuration = `${duration}ms`;\n            el.querySelectorAll(\".swiper-slide-shadow\").forEach((shadowEl)=>{\n                shadowEl.style.transitionDuration = `${duration}ms`;\n            });\n        });\n        (0, $3ea27eb365069d23$export$f1e1789686576879)({\n            swiper: swiper,\n            duration: duration,\n            transformElements: transformElements\n        });\n    };\n    (0, $ce39167a9c5549e3$export$f1e1789686576879)({\n        effect: \"cards\",\n        swiper: swiper,\n        on: on,\n        setTranslate: setTranslate,\n        setTransition: setTransition,\n        perspective: ()=>true,\n        overwriteParams: ()=>({\n                watchSlidesProgress: true,\n                virtualTranslate: !swiper.params.cssMode\n            })\n    });\n}\n\n\n\n\nparcelRequire(\"hvxhK\");\nvar $55f027b5fdc6d312$exports = {};\n\n(function(window1, factory) {\n    if (!window1) return;\n    var globalInstall = function() {\n        factory(window1.lazySizes);\n        window1.removeEventListener(\"lazyunveilread\", globalInstall, true);\n    };\n    factory = factory.bind(null, window1, window1.document);\n    if (0, $55f027b5fdc6d312$exports) factory((parcelRequire(\"hvxhK\")));\n    else if (typeof define == \"function\" && define.amd) define([\n        \"lazysizes\"\n    ], factory);\n    else if (window1.lazySizes) globalInstall();\n    else window1.addEventListener(\"lazyunveilread\", globalInstall, true);\n})(typeof window != \"undefined\" ? window : 0, function(window1, document, lazySizes) {\n    \"use strict\";\n    if (!window1.addEventListener) return;\n    var regDescriptors = /\\s+(\\d+)(w|h)\\s+(\\d+)(w|h)/;\n    var regCssFit = /parent-fit[\"']*\\s*:\\s*[\"']*(contain|cover|width)/;\n    var regCssObject = /parent-container[\"']*\\s*:\\s*[\"']*(.+?)(?=(\\s|$|,|'|\"|;))/;\n    var regPicture = /^picture$/i;\n    var cfg = lazySizes.cfg;\n    var getCSS = function(elem) {\n        return getComputedStyle(elem, null) || {};\n    };\n    var parentFit = {\n        getParent: function(element, parentSel) {\n            var parent = element;\n            var parentNode = element.parentNode;\n            if ((!parentSel || parentSel == \"prev\") && parentNode && regPicture.test(parentNode.nodeName || \"\")) parentNode = parentNode.parentNode;\n            if (parentSel != \"self\") {\n                if (parentSel == \"prev\") parent = element.previousElementSibling;\n                else if (parentSel && (parentNode.closest || window1.jQuery)) parent = (parentNode.closest ? parentNode.closest(parentSel) : jQuery(parentNode).closest(parentSel)[0]) || parentNode;\n                else parent = parentNode;\n            }\n            return parent;\n        },\n        getFit: function(element) {\n            var tmpMatch, parentObj;\n            var css = getCSS(element);\n            var content = css.content || css.fontFamily;\n            var obj = {\n                fit: element._lazysizesParentFit || element.getAttribute(\"data-parent-fit\")\n            };\n            if (!obj.fit && content && (tmpMatch = content.match(regCssFit))) obj.fit = tmpMatch[1];\n            if (obj.fit) {\n                parentObj = element._lazysizesParentContainer || element.getAttribute(\"data-parent-container\");\n                if (!parentObj && content && (tmpMatch = content.match(regCssObject))) parentObj = tmpMatch[1];\n                obj.parent = parentFit.getParent(element, parentObj);\n            } else obj.fit = css.objectFit;\n            return obj;\n        },\n        getImageRatio: function(element) {\n            var i, srcset, media, ratio, match, width, height;\n            var parent = element.parentNode;\n            var elements = parent && regPicture.test(parent.nodeName || \"\") ? parent.querySelectorAll(\"source, img\") : [\n                element\n            ];\n            for(i = 0; i < elements.length; i++){\n                element = elements[i];\n                srcset = element.getAttribute(cfg.srcsetAttr) || element.getAttribute(\"srcset\") || element.getAttribute(\"data-pfsrcset\") || element.getAttribute(\"data-risrcset\") || \"\";\n                media = element._lsMedia || element.getAttribute(\"media\");\n                media = cfg.customMedia[element.getAttribute(\"data-media\") || media] || media;\n                if (srcset && (!media || (window1.matchMedia && matchMedia(media) || {}).matches)) {\n                    ratio = parseFloat(element.getAttribute(\"data-aspectratio\"));\n                    if (!ratio) {\n                        match = srcset.match(regDescriptors);\n                        if (match) {\n                            if (match[2] == \"w\") {\n                                width = match[1];\n                                height = match[3];\n                            } else {\n                                width = match[3];\n                                height = match[1];\n                            }\n                        } else {\n                            width = element.getAttribute(\"width\");\n                            height = element.getAttribute(\"height\");\n                        }\n                        ratio = width / height;\n                    }\n                    break;\n                }\n            }\n            return ratio;\n        },\n        calculateSize: function(element, width) {\n            var displayRatio, height, imageRatio, retWidth;\n            var fitObj = this.getFit(element);\n            var fit = fitObj.fit;\n            var fitElem = fitObj.parent;\n            if (fit != \"width\" && (fit != \"contain\" && fit != \"cover\" || !(imageRatio = this.getImageRatio(element)))) return width;\n            if (fitElem) width = fitElem.clientWidth;\n            else fitElem = element;\n            retWidth = width;\n            if (fit == \"width\") retWidth = width;\n            else {\n                height = fitElem.clientHeight;\n                if ((displayRatio = width / height) && (fit == \"cover\" && displayRatio < imageRatio || fit == \"contain\" && displayRatio > imageRatio)) retWidth = width * (imageRatio / displayRatio);\n            }\n            return retWidth;\n        }\n    };\n    lazySizes.parentFit = parentFit;\n    document.addEventListener(\"lazybeforesizes\", function(e) {\n        if (e.defaultPrevented || e.detail.instance != lazySizes) return;\n        var element = e.target;\n        e.detail.width = parentFit.calculateSize(element, e.detail.width);\n    });\n});\n\n\n/*! medium-zoom 1.1.0 | MIT License | https://github.com/francoischalifour/medium-zoom */ var $3dc78591d6474e19$var$_extends = Object.assign || function(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i];\n        for(var key in source)if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];\n    }\n    return target;\n};\nvar $3dc78591d6474e19$var$isSupported = function isSupported(node) {\n    return node.tagName === \"IMG\";\n};\n/* eslint-disable-next-line no-prototype-builtins */ var $3dc78591d6474e19$var$isNodeList = function isNodeList(selector) {\n    return NodeList.prototype.isPrototypeOf(selector);\n};\nvar $3dc78591d6474e19$var$isNode = function isNode(selector) {\n    return selector && selector.nodeType === 1;\n};\nvar $3dc78591d6474e19$var$isSvg = function isSvg(image) {\n    var source = image.currentSrc || image.src;\n    return source.substr(-4).toLowerCase() === \".svg\";\n};\nvar $3dc78591d6474e19$var$getImagesFromSelector = function getImagesFromSelector(selector) {\n    try {\n        if (Array.isArray(selector)) return selector.filter($3dc78591d6474e19$var$isSupported);\n        if ($3dc78591d6474e19$var$isNodeList(selector)) // Do not use spread operator or Array.from() for IE support\n        return [].slice.call(selector).filter($3dc78591d6474e19$var$isSupported);\n        if ($3dc78591d6474e19$var$isNode(selector)) return [\n            selector\n        ].filter($3dc78591d6474e19$var$isSupported);\n        if (typeof selector === \"string\") // Do not use spread operator or Array.from() for IE support\n        return [].slice.call(document.querySelectorAll(selector)).filter($3dc78591d6474e19$var$isSupported);\n        return [];\n    } catch (err) {\n        throw new TypeError(\"The provided selector is invalid.\\nExpects a CSS selector, a Node element, a NodeList or an array.\\nSee: https://github.com/francoischalifour/medium-zoom\");\n    }\n};\nvar $3dc78591d6474e19$var$createOverlay = function createOverlay(background) {\n    var overlay = document.createElement(\"div\");\n    overlay.classList.add(\"medium-zoom-overlay\");\n    overlay.style.background = background;\n    return overlay;\n};\nvar $3dc78591d6474e19$var$cloneTarget = function cloneTarget(template) {\n    var _template$getBounding = template.getBoundingClientRect(), top = _template$getBounding.top, left = _template$getBounding.left, width = _template$getBounding.width, height = _template$getBounding.height;\n    var clone = template.cloneNode();\n    var scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;\n    var scrollLeft = window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0;\n    clone.removeAttribute(\"id\");\n    clone.style.position = \"absolute\";\n    clone.style.top = top + scrollTop + \"px\";\n    clone.style.left = left + scrollLeft + \"px\";\n    clone.style.width = width + \"px\";\n    clone.style.height = height + \"px\";\n    clone.style.transform = \"\";\n    return clone;\n};\nvar $3dc78591d6474e19$var$createCustomEvent = function createCustomEvent(type, params) {\n    var eventParams = $3dc78591d6474e19$var$_extends({\n        bubbles: false,\n        cancelable: false,\n        detail: undefined\n    }, params);\n    if (typeof window.CustomEvent === \"function\") return new CustomEvent(type, eventParams);\n    var customEvent = document.createEvent(\"CustomEvent\");\n    customEvent.initCustomEvent(type, eventParams.bubbles, eventParams.cancelable, eventParams.detail);\n    return customEvent;\n};\nvar $3dc78591d6474e19$var$mediumZoom = function mediumZoom(selector) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    /**\n   * Ensure the compatibility with IE11 if no Promise polyfill are used.\n   */ var Promise = window.Promise || function Promise(fn) {\n        function noop() {}\n        fn(noop, noop);\n    };\n    var _handleClick = function _handleClick(event) {\n        var target = event.target;\n        if (target === overlay) {\n            close();\n            return;\n        }\n        if (images.indexOf(target) === -1) return;\n        toggle({\n            target: target\n        });\n    };\n    var _handleScroll = function _handleScroll() {\n        if (isAnimating || !active.original) return;\n        var currentScroll = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;\n        if (Math.abs(scrollTop - currentScroll) > zoomOptions.scrollOffset) setTimeout(close, 150);\n    };\n    var _handleKeyUp = function _handleKeyUp(event) {\n        var key = event.key || event.keyCode;\n        // Close if escape key is pressed\n        if (key === \"Escape\" || key === \"Esc\" || key === 27) close();\n    };\n    var update = function update() {\n        var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n        var newOptions = options;\n        if (options.background) overlay.style.background = options.background;\n        if (options.container && options.container instanceof Object) newOptions.container = $3dc78591d6474e19$var$_extends({}, zoomOptions.container, options.container);\n        if (options.template) {\n            var template = $3dc78591d6474e19$var$isNode(options.template) ? options.template : document.querySelector(options.template);\n            newOptions.template = template;\n        }\n        zoomOptions = $3dc78591d6474e19$var$_extends({}, zoomOptions, newOptions);\n        images.forEach(function(image) {\n            image.dispatchEvent($3dc78591d6474e19$var$createCustomEvent(\"medium-zoom:update\", {\n                detail: {\n                    zoom: zoom\n                }\n            }));\n        });\n        return zoom;\n    };\n    var clone = function clone() {\n        var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n        return mediumZoom($3dc78591d6474e19$var$_extends({}, zoomOptions, options));\n    };\n    var attach = function attach() {\n        for(var _len = arguments.length, selectors = Array(_len), _key = 0; _key < _len; _key++)selectors[_key] = arguments[_key];\n        var newImages = selectors.reduce(function(imagesAccumulator, currentSelector) {\n            return [].concat(imagesAccumulator, $3dc78591d6474e19$var$getImagesFromSelector(currentSelector));\n        }, []);\n        newImages.filter(function(newImage) {\n            return images.indexOf(newImage) === -1;\n        }).forEach(function(newImage) {\n            images.push(newImage);\n            newImage.classList.add(\"medium-zoom-image\");\n        });\n        eventListeners.forEach(function(_ref) {\n            var type = _ref.type, listener = _ref.listener, options = _ref.options;\n            newImages.forEach(function(image) {\n                image.addEventListener(type, listener, options);\n            });\n        });\n        return zoom;\n    };\n    var detach = function detach() {\n        for(var _len2 = arguments.length, selectors = Array(_len2), _key2 = 0; _key2 < _len2; _key2++)selectors[_key2] = arguments[_key2];\n        if (active.zoomed) close();\n        var imagesToDetach = selectors.length > 0 ? selectors.reduce(function(imagesAccumulator, currentSelector) {\n            return [].concat(imagesAccumulator, $3dc78591d6474e19$var$getImagesFromSelector(currentSelector));\n        }, []) : images;\n        imagesToDetach.forEach(function(image) {\n            image.classList.remove(\"medium-zoom-image\");\n            image.dispatchEvent($3dc78591d6474e19$var$createCustomEvent(\"medium-zoom:detach\", {\n                detail: {\n                    zoom: zoom\n                }\n            }));\n        });\n        images = images.filter(function(image) {\n            return imagesToDetach.indexOf(image) === -1;\n        });\n        return zoom;\n    };\n    var on = function on(type, listener) {\n        var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n        images.forEach(function(image) {\n            image.addEventListener(\"medium-zoom:\" + type, listener, options);\n        });\n        eventListeners.push({\n            type: \"medium-zoom:\" + type,\n            listener: listener,\n            options: options\n        });\n        return zoom;\n    };\n    var off = function off(type, listener) {\n        var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n        images.forEach(function(image) {\n            image.removeEventListener(\"medium-zoom:\" + type, listener, options);\n        });\n        eventListeners = eventListeners.filter(function(eventListener) {\n            return !(eventListener.type === \"medium-zoom:\" + type && eventListener.listener.toString() === listener.toString());\n        });\n        return zoom;\n    };\n    var open = function open() {\n        var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, target = _ref2.target;\n        var _animate = function _animate() {\n            var container = {\n                width: document.documentElement.clientWidth,\n                height: document.documentElement.clientHeight,\n                left: 0,\n                top: 0,\n                right: 0,\n                bottom: 0\n            };\n            var viewportWidth = void 0;\n            var viewportHeight = void 0;\n            if (zoomOptions.container) {\n                if (zoomOptions.container instanceof Object) {\n                    // The container is given as an object with properties like width, height, left, top\n                    container = $3dc78591d6474e19$var$_extends({}, container, zoomOptions.container);\n                    // We need to adjust custom options like container.right or container.bottom\n                    viewportWidth = container.width - container.left - container.right - zoomOptions.margin * 2;\n                    viewportHeight = container.height - container.top - container.bottom - zoomOptions.margin * 2;\n                } else {\n                    // The container is given as an element\n                    var zoomContainer = $3dc78591d6474e19$var$isNode(zoomOptions.container) ? zoomOptions.container : document.querySelector(zoomOptions.container);\n                    var _zoomContainer$getBou = zoomContainer.getBoundingClientRect(), _width = _zoomContainer$getBou.width, _height = _zoomContainer$getBou.height, _left = _zoomContainer$getBou.left, _top = _zoomContainer$getBou.top;\n                    container = $3dc78591d6474e19$var$_extends({}, container, {\n                        width: _width,\n                        height: _height,\n                        left: _left,\n                        top: _top\n                    });\n                }\n            }\n            viewportWidth = viewportWidth || container.width - zoomOptions.margin * 2;\n            viewportHeight = viewportHeight || container.height - zoomOptions.margin * 2;\n            var zoomTarget = active.zoomedHd || active.original;\n            var naturalWidth = $3dc78591d6474e19$var$isSvg(zoomTarget) ? viewportWidth : zoomTarget.naturalWidth || viewportWidth;\n            var naturalHeight = $3dc78591d6474e19$var$isSvg(zoomTarget) ? viewportHeight : zoomTarget.naturalHeight || viewportHeight;\n            var _zoomTarget$getBoundi = zoomTarget.getBoundingClientRect(), top = _zoomTarget$getBoundi.top, left = _zoomTarget$getBoundi.left, width = _zoomTarget$getBoundi.width, height = _zoomTarget$getBoundi.height;\n            var scaleX = Math.min(Math.max(width, naturalWidth), viewportWidth) / width;\n            var scaleY = Math.min(Math.max(height, naturalHeight), viewportHeight) / height;\n            var scale = Math.min(scaleX, scaleY);\n            var translateX = (-left + (viewportWidth - width) / 2 + zoomOptions.margin + container.left) / scale;\n            var translateY = (-top + (viewportHeight - height) / 2 + zoomOptions.margin + container.top) / scale;\n            var transform = \"scale(\" + scale + \") translate3d(\" + translateX + \"px, \" + translateY + \"px, 0)\";\n            active.zoomed.style.transform = transform;\n            if (active.zoomedHd) active.zoomedHd.style.transform = transform;\n        };\n        return new Promise(function(resolve) {\n            if (target && images.indexOf(target) === -1) {\n                resolve(zoom);\n                return;\n            }\n            var _handleOpenEnd = function _handleOpenEnd() {\n                isAnimating = false;\n                active.zoomed.removeEventListener(\"transitionend\", _handleOpenEnd);\n                active.original.dispatchEvent($3dc78591d6474e19$var$createCustomEvent(\"medium-zoom:opened\", {\n                    detail: {\n                        zoom: zoom\n                    }\n                }));\n                resolve(zoom);\n            };\n            if (active.zoomed) {\n                resolve(zoom);\n                return;\n            }\n            if (target) // The zoom was triggered manually via a click\n            active.original = target;\n            else if (images.length > 0) {\n                var _images = images;\n                active.original = _images[0];\n            } else {\n                resolve(zoom);\n                return;\n            }\n            active.original.dispatchEvent($3dc78591d6474e19$var$createCustomEvent(\"medium-zoom:open\", {\n                detail: {\n                    zoom: zoom\n                }\n            }));\n            scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;\n            isAnimating = true;\n            active.zoomed = $3dc78591d6474e19$var$cloneTarget(active.original);\n            document.body.appendChild(overlay);\n            if (zoomOptions.template) {\n                var template = $3dc78591d6474e19$var$isNode(zoomOptions.template) ? zoomOptions.template : document.querySelector(zoomOptions.template);\n                active.template = document.createElement(\"div\");\n                active.template.appendChild(template.content.cloneNode(true));\n                document.body.appendChild(active.template);\n            }\n            // If the selected <img> tag is inside a <picture> tag, set the\n            // currently-applied source as the cloned `src=` attribute.\n            // (as these might differ, or src= might be unset in some cases)\n            if (active.original.parentElement && active.original.parentElement.tagName === \"PICTURE\" && active.original.currentSrc) active.zoomed.src = active.original.currentSrc;\n            document.body.appendChild(active.zoomed);\n            window.requestAnimationFrame(function() {\n                document.body.classList.add(\"medium-zoom--opened\");\n            });\n            active.original.classList.add(\"medium-zoom-image--hidden\");\n            active.zoomed.classList.add(\"medium-zoom-image--opened\");\n            active.zoomed.addEventListener(\"click\", close);\n            active.zoomed.addEventListener(\"transitionend\", _handleOpenEnd);\n            if (active.original.getAttribute(\"data-zoom-src\")) {\n                active.zoomedHd = active.zoomed.cloneNode();\n                // Reset the `scrset` property or the HD image won't load.\n                active.zoomedHd.removeAttribute(\"srcset\");\n                active.zoomedHd.removeAttribute(\"sizes\");\n                // Remove loading attribute so the browser can load the image normally\n                active.zoomedHd.removeAttribute(\"loading\");\n                active.zoomedHd.src = active.zoomed.getAttribute(\"data-zoom-src\");\n                active.zoomedHd.onerror = function() {\n                    clearInterval(getZoomTargetSize);\n                    console.warn(\"Unable to reach the zoom image target \" + active.zoomedHd.src);\n                    active.zoomedHd = null;\n                    _animate();\n                };\n                // We need to access the natural size of the full HD\n                // target as fast as possible to compute the animation.\n                var getZoomTargetSize = setInterval(function() {\n                    if (active.zoomedHd.complete) {\n                        clearInterval(getZoomTargetSize);\n                        active.zoomedHd.classList.add(\"medium-zoom-image--opened\");\n                        active.zoomedHd.addEventListener(\"click\", close);\n                        document.body.appendChild(active.zoomedHd);\n                        _animate();\n                    }\n                }, 10);\n            } else if (active.original.hasAttribute(\"srcset\")) {\n                // If an image has a `srcset` attribuet, we don't know the dimensions of the\n                // zoomed (HD) image (like when `data-zoom-src` is specified).\n                // Therefore the approach is quite similar.\n                active.zoomedHd = active.zoomed.cloneNode();\n                // Resetting the sizes attribute tells the browser to load the\n                // image best fitting the current viewport size, respecting the `srcset`.\n                active.zoomedHd.removeAttribute(\"sizes\");\n                // In Firefox, the `loading` attribute needs to be set to `eager` (default\n                // value) for the load event to be fired.\n                active.zoomedHd.removeAttribute(\"loading\");\n                // Wait for the load event of the hd image. This will fire if the image\n                // is already cached.\n                var loadEventListener = active.zoomedHd.addEventListener(\"load\", function() {\n                    active.zoomedHd.removeEventListener(\"load\", loadEventListener);\n                    active.zoomedHd.classList.add(\"medium-zoom-image--opened\");\n                    active.zoomedHd.addEventListener(\"click\", close);\n                    document.body.appendChild(active.zoomedHd);\n                    _animate();\n                });\n            } else _animate();\n        });\n    };\n    var close = function close() {\n        return new Promise(function(resolve) {\n            if (isAnimating || !active.original) {\n                resolve(zoom);\n                return;\n            }\n            var _handleCloseEnd = function _handleCloseEnd() {\n                active.original.classList.remove(\"medium-zoom-image--hidden\");\n                document.body.removeChild(active.zoomed);\n                if (active.zoomedHd) document.body.removeChild(active.zoomedHd);\n                document.body.removeChild(overlay);\n                active.zoomed.classList.remove(\"medium-zoom-image--opened\");\n                if (active.template) document.body.removeChild(active.template);\n                isAnimating = false;\n                active.zoomed.removeEventListener(\"transitionend\", _handleCloseEnd);\n                active.original.dispatchEvent($3dc78591d6474e19$var$createCustomEvent(\"medium-zoom:closed\", {\n                    detail: {\n                        zoom: zoom\n                    }\n                }));\n                active.original = null;\n                active.zoomed = null;\n                active.zoomedHd = null;\n                active.template = null;\n                resolve(zoom);\n            };\n            isAnimating = true;\n            document.body.classList.remove(\"medium-zoom--opened\");\n            active.zoomed.style.transform = \"\";\n            if (active.zoomedHd) active.zoomedHd.style.transform = \"\";\n            // Fade out the template so it's not too abrupt\n            if (active.template) {\n                active.template.style.transition = \"opacity 150ms\";\n                active.template.style.opacity = 0;\n            }\n            active.original.dispatchEvent($3dc78591d6474e19$var$createCustomEvent(\"medium-zoom:close\", {\n                detail: {\n                    zoom: zoom\n                }\n            }));\n            active.zoomed.addEventListener(\"transitionend\", _handleCloseEnd);\n        });\n    };\n    var toggle = function toggle() {\n        var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, target = _ref3.target;\n        if (active.original) return close();\n        return open({\n            target: target\n        });\n    };\n    var getOptions = function getOptions() {\n        return zoomOptions;\n    };\n    var getImages = function getImages() {\n        return images;\n    };\n    var getZoomedImage = function getZoomedImage() {\n        return active.original;\n    };\n    var images = [];\n    var eventListeners = [];\n    var isAnimating = false;\n    var scrollTop = 0;\n    var zoomOptions = options;\n    var active = {\n        original: null,\n        zoomed: null,\n        zoomedHd: null,\n        template: null\n    };\n    if (Object.prototype.toString.call(selector) === \"[object Object]\") zoomOptions = selector;\n    else if (selector || typeof selector === \"string\" // to process empty string as a selector\n    ) attach(selector);\n    // Apply the default option values\n    zoomOptions = $3dc78591d6474e19$var$_extends({\n        margin: 0,\n        background: \"#fff\",\n        scrollOffset: 40,\n        container: null,\n        template: null\n    }, zoomOptions);\n    var overlay = $3dc78591d6474e19$var$createOverlay(zoomOptions.background);\n    document.addEventListener(\"click\", _handleClick);\n    document.addEventListener(\"keyup\", _handleKeyUp);\n    document.addEventListener(\"scroll\", _handleScroll);\n    window.addEventListener(\"resize\", close);\n    var zoom = {\n        open: open,\n        close: close,\n        toggle: toggle,\n        update: update,\n        clone: clone,\n        attach: attach,\n        detach: detach,\n        on: on,\n        off: off,\n        getOptions: getOptions,\n        getImages: getImages,\n        getZoomedImage: getZoomedImage\n    };\n    return zoom;\n};\nfunction $3dc78591d6474e19$var$styleInject(css, ref) {\n    if (ref === void 0) ref = {};\n    var insertAt = ref.insertAt;\n    if (!css || typeof document === \"undefined\") return;\n    var head = document.head || document.getElementsByTagName(\"head\")[0];\n    var style = document.createElement(\"style\");\n    style.type = \"text/css\";\n    if (insertAt === \"top\") {\n        if (head.firstChild) head.insertBefore(style, head.firstChild);\n        else head.appendChild(style);\n    } else head.appendChild(style);\n    if (style.styleSheet) style.styleSheet.cssText = css;\n    else style.appendChild(document.createTextNode(css));\n}\nvar $3dc78591d6474e19$var$css = \".medium-zoom-overlay{position:fixed;top:0;right:0;bottom:0;left:0;opacity:0;transition:opacity .3s;will-change:opacity}.medium-zoom--opened .medium-zoom-overlay{cursor:pointer;cursor:zoom-out;opacity:1}.medium-zoom-image{cursor:pointer;cursor:zoom-in;transition:transform .3s cubic-bezier(.2,0,.2,1)!important}.medium-zoom-image--hidden{visibility:hidden}.medium-zoom-image--opened{position:relative;cursor:pointer;cursor:zoom-out;will-change:transform}\";\n$3dc78591d6474e19$var$styleInject($3dc78591d6474e19$var$css);\nvar $3dc78591d6474e19$export$2e2bcd8739ae039 = $3dc78591d6474e19$var$mediumZoom;\n\n\n(0, $3dc78591d6474e19$export$2e2bcd8739ae039)(document.querySelectorAll(\".blog .entry figure img\"));\nconst $7ee4f357cfa6f257$var$swiper = new (0, $6946bfb4689eabba$export$25ce5a424b770e84)(\".swiper\", {\n    modules: [\n        (0, $ad56a2ca63fb5863$export$2e2bcd8739ae039),\n        (0, $41ae6f5a5ccdab5c$export$2e2bcd8739ae039),\n        (0, $4b9f6507912f3e92$export$2e2bcd8739ae039)\n    ],\n    // Optional parameters\n    loop: true,\n    // autoplay: {\n    //     delay: 3500,\n    //     disableOnInteraction: false\n    // },\n    // If we need pagination\n    pagination: {\n        el: \".swiper-pagination\",\n        clickable: true\n    },\n    // Navigation arrows\n    navigation: {\n        nextEl: \".swiper-button-next\",\n        prevEl: \".swiper-button-prev\"\n    },\n    // And if we need scrollbar\n    scrollbar: {\n        el: \".swiper-scrollbar\"\n    }\n});\n// 初始化 cookie 存储\nwindow.cookieStorage = {\n    getItem (key) {\n        let cookies = document.cookie.split(\";\");\n        for(let i = 0; i < cookies.length; i++){\n            let cookie = cookies[i].split(\"=\");\n            if (key == cookie[0].trim()) return decodeURIComponent(cookie[1]);\n        }\n        return null;\n    },\n    setItem (key, value) {\n        document.cookie = key + \" = \" + encodeURIComponent(value);\n    }\n};\ndocument.addEventListener(\"alpine:init\", ()=>{\n    (0, $f347e48613385d9c$export$2e2bcd8739ae039).data(\"userState\", ()=>({\n            state: [],\n            async init () {\n                try {\n                    this.state = await fetch(\"/user_state\").then((res)=>res.json());\n                } catch (err) {\n                    console.log(\"Read user state failed\", err);\n                }\n            }\n        }));\n});\n(0, $f347e48613385d9c$export$2e2bcd8739ae039).plugin((0, $87debed29d531a5f$export$2e2bcd8739ae039));\n(0, $f347e48613385d9c$export$2e2bcd8739ae039).plugin((0, $dc5e95bf63b2a32e$export$2e2bcd8739ae039));\n(0, $f347e48613385d9c$export$2e2bcd8739ae039).start();\n\n\nvar $6c359160e6887998$exports = {};\n\"use strict\";\nvar $ab905b70bbf6a740$exports = {};\n\"use strict\";\nvar $b98b552440c412c7$exports = {};\n\"use strict\";\nvar $5223709f7c606ea7$exports = {};\n\"use strict\";\nfunction $5223709f7c606ea7$var$clone(value) {\n    if (typeof value === \"object\" && value !== null) return $5223709f7c606ea7$var$_merge(Array.isArray(value) ? [] : {}, value);\n    return value;\n}\nfunction $5223709f7c606ea7$var$isObjectOrArrayOrFunction(value) {\n    return typeof value === \"function\" || Array.isArray(value) || Object.prototype.toString.call(value) === \"[object Object]\";\n}\nfunction $5223709f7c606ea7$var$_merge(target, source) {\n    if (target === source) return target;\n    for(var key in source){\n        if (!Object.prototype.hasOwnProperty.call(source, key) || key === \"__proto__\") continue;\n        var sourceVal = source[key];\n        var targetVal = target[key];\n        if (typeof targetVal !== \"undefined\" && typeof sourceVal === \"undefined\") continue;\n        if ($5223709f7c606ea7$var$isObjectOrArrayOrFunction(targetVal) && $5223709f7c606ea7$var$isObjectOrArrayOrFunction(sourceVal)) target[key] = $5223709f7c606ea7$var$_merge(targetVal, sourceVal);\n        else target[key] = $5223709f7c606ea7$var$clone(sourceVal);\n    }\n    return target;\n}\n/**\n * This method is like Object.assign, but recursively merges own and inherited\n * enumerable keyed properties of source objects into the destination object.\n *\n * NOTE: this behaves like lodash/merge, but:\n * - does mutate functions if they are a source\n * - treats non-plain objects as plain\n * - does not work for circular objects\n * - treats sparse arrays as sparse\n * - does not convert Array-like objects (Arguments, NodeLists, etc.) to arrays\n *\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n */ function $5223709f7c606ea7$var$merge(target) {\n    if (!$5223709f7c606ea7$var$isObjectOrArrayOrFunction(target)) target = {};\n    for(var i = 1, l = arguments.length; i < l; i++){\n        var source = arguments[i];\n        if ($5223709f7c606ea7$var$isObjectOrArrayOrFunction(source)) $5223709f7c606ea7$var$_merge(target, source);\n    }\n    return target;\n}\n$5223709f7c606ea7$exports = $5223709f7c606ea7$var$merge;\n\n\nvar $835decef46f26c5e$exports = {};\n\"use strict\";\n// NOTE: this behaves like lodash/defaults, but doesn't mutate the target\n// it also preserve keys order\n$835decef46f26c5e$exports = function defaultsPure() {\n    var sources = Array.prototype.slice.call(arguments);\n    return sources.reduceRight(function(acc, source) {\n        Object.keys(Object(source)).forEach(function(key) {\n            if (source[key] === undefined) return;\n            if (acc[key] !== undefined) // remove if already added, so that we can add it in correct order\n            delete acc[key];\n            acc[key] = source[key];\n        });\n        return acc;\n    }, {});\n};\n\n\nvar $1f358bf4e51305f6$exports = {};\n\"use strict\";\nfunction $1f358bf4e51305f6$var$intersection(arr1, arr2) {\n    return arr1.filter(function(value, index) {\n        return arr2.indexOf(value) > -1 && arr1.indexOf(value) === index /* skips duplicates */ ;\n    });\n}\n$1f358bf4e51305f6$exports = $1f358bf4e51305f6$var$intersection;\n\n\nvar $18a18427f3d6914e$exports = {};\n\"use strict\";\n// @MAJOR can be replaced by native Array#find when we change support\n$18a18427f3d6914e$exports = function find(array, comparator) {\n    if (!Array.isArray(array)) return undefined;\n    for(var i = 0; i < array.length; i++){\n        if (comparator(array[i])) return array[i];\n    }\n};\n\n\nvar $0012e4ff1c99fe7e$exports = {};\n\"use strict\";\nfunction $0012e4ff1c99fe7e$var$valToNumber(v) {\n    if (typeof v === \"number\") return v;\n    else if (typeof v === \"string\") return parseFloat(v);\n    else if (Array.isArray(v)) return v.map($0012e4ff1c99fe7e$var$valToNumber);\n    throw new Error(\"The value should be a number, a parsable string or an array of those.\");\n}\n$0012e4ff1c99fe7e$exports = $0012e4ff1c99fe7e$var$valToNumber;\n\n\nvar $d5a032e94ef65cbb$exports = {};\n\"use strict\";\n// https://github.com/babel/babel/blob/3aaafae053fa75febb3aa45d45b6f00646e30ba4/packages/babel-helpers/src/helpers.js#L604-L620\nfunction $d5a032e94ef65cbb$var$_objectWithoutPropertiesLoose(source, excluded) {\n    if (source === null) return {};\n    var target = {};\n    var sourceKeys = Object.keys(source);\n    var key;\n    var 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}\n$d5a032e94ef65cbb$exports = $d5a032e94ef65cbb$var$_objectWithoutPropertiesLoose;\n\n\nvar $c0c10d49c54a249b$exports = {};\n\"use strict\";\nfunction $c0c10d49c54a249b$var$objectHasKeys(obj) {\n    return obj && Object.keys(obj).length > 0;\n}\n$c0c10d49c54a249b$exports = $c0c10d49c54a249b$var$objectHasKeys;\n\n\nvar $c0e6e601e5d1a93f$exports = {};\n\"use strict\";\n$c0e6e601e5d1a93f$exports = function isValidUserToken(userToken) {\n    if (userToken === null) return false;\n    return /^[a-zA-Z0-9_-]{1,64}$/.test(userToken);\n};\n\n\nvar $285f5e4df955497a$exports = {};\n\"use strict\";\n\n\n\nvar $285f5e4df955497a$var$lib = {\n    /**\n   * Adds a refinement to a RefinementList\n   * @param {RefinementList} refinementList the initial list\n   * @param {string} attribute the attribute to refine\n   * @param {string} value the value of the refinement, if the value is not a string it will be converted\n   * @return {RefinementList} a new and updated refinement list\n   */ addRefinement: function addRefinement(refinementList, attribute, value) {\n        if ($285f5e4df955497a$var$lib.isRefined(refinementList, attribute, value)) return refinementList;\n        var valueAsString = \"\" + value;\n        var facetRefinement = !refinementList[attribute] ? [\n            valueAsString\n        ] : refinementList[attribute].concat(valueAsString);\n        var mod = {};\n        mod[attribute] = facetRefinement;\n        return $835decef46f26c5e$exports({}, mod, refinementList);\n    },\n    /**\n   * Removes refinement(s) for an attribute:\n   *  - if the value is specified removes the refinement for the value on the attribute\n   *  - if no value is specified removes all the refinements for this attribute\n   * @param {RefinementList} refinementList the initial list\n   * @param {string} attribute the attribute to refine\n   * @param {string} [value] the value of the refinement\n   * @return {RefinementList} a new and updated refinement lst\n   */ removeRefinement: function removeRefinement(refinementList, attribute, value) {\n        if (value === undefined) // we use the \"filter\" form of clearRefinement, since it leaves empty values as-is\n        // the form with a string will remove the attribute completely\n        return $285f5e4df955497a$var$lib.clearRefinement(refinementList, function(v, f) {\n            return attribute === f;\n        });\n        var valueAsString = \"\" + value;\n        return $285f5e4df955497a$var$lib.clearRefinement(refinementList, function(v, f) {\n            return attribute === f && valueAsString === v;\n        });\n    },\n    /**\n   * Toggles the refinement value for an attribute.\n   * @param {RefinementList} refinementList the initial list\n   * @param {string} attribute the attribute to refine\n   * @param {string} value the value of the refinement\n   * @return {RefinementList} a new and updated list\n   */ toggleRefinement: function toggleRefinement(refinementList, attribute, value) {\n        if (value === undefined) throw new Error(\"toggleRefinement should be used with a value\");\n        if ($285f5e4df955497a$var$lib.isRefined(refinementList, attribute, value)) return $285f5e4df955497a$var$lib.removeRefinement(refinementList, attribute, value);\n        return $285f5e4df955497a$var$lib.addRefinement(refinementList, attribute, value);\n    },\n    /**\n   * Clear all or parts of a RefinementList. Depending on the arguments, three\n   * kinds of behavior can happen:\n   *  - if no attribute is provided: clears the whole list\n   *  - if an attribute is provided as a string: clears the list for the specific attribute\n   *  - if an attribute is provided as a function: discards the elements for which the function returns true\n   * @param {RefinementList} refinementList the initial list\n   * @param {string} [attribute] the attribute or function to discard\n   * @param {string} [refinementType] optional parameter to give more context to the attribute function\n   * @return {RefinementList} a new and updated refinement list\n   */ clearRefinement: function clearRefinement(refinementList, attribute, refinementType) {\n        if (attribute === undefined) {\n            if (!$c0c10d49c54a249b$exports(refinementList)) return refinementList;\n            return {};\n        } else if (typeof attribute === \"string\") return $d5a032e94ef65cbb$exports(refinementList, [\n            attribute\n        ]);\n        else if (typeof attribute === \"function\") {\n            var hasChanged = false;\n            var newRefinementList = Object.keys(refinementList).reduce(function(memo, key) {\n                var values = refinementList[key] || [];\n                var facetList = values.filter(function(value) {\n                    return !attribute(value, key, refinementType);\n                });\n                if (facetList.length !== values.length) hasChanged = true;\n                memo[key] = facetList;\n                return memo;\n            }, {});\n            if (hasChanged) return newRefinementList;\n            return refinementList;\n        }\n    },\n    /**\n   * Test if the refinement value is used for the attribute. If no refinement value\n   * is provided, test if the refinementList contains any refinement for the\n   * given attribute.\n   * @param {RefinementList} refinementList the list of refinement\n   * @param {string} attribute name of the attribute\n   * @param {string} [refinementValue] value of the filter/refinement\n   * @return {boolean}\n   */ isRefined: function isRefined(refinementList, attribute, refinementValue) {\n        var containsRefinements = !!refinementList[attribute] && refinementList[attribute].length > 0;\n        if (refinementValue === undefined || !containsRefinements) return containsRefinements;\n        var refinementValueAsString = \"\" + refinementValue;\n        return refinementList[attribute].indexOf(refinementValueAsString) !== -1;\n    }\n};\n$285f5e4df955497a$exports = $285f5e4df955497a$var$lib;\n\n\n/**\n * isEqual, but only for numeric refinement values, possible values:\n * - 5\n * - [5]\n * - [[5]]\n * - [[5,5],[4]]\n */ function $b98b552440c412c7$var$isEqualNumericRefinement(a, b) {\n    if (Array.isArray(a) && Array.isArray(b)) return a.length === b.length && a.every(function(el, i) {\n        return $b98b552440c412c7$var$isEqualNumericRefinement(b[i], el);\n    });\n    return a === b;\n}\n/**\n * like _.find but using deep equality to be able to use it\n * to find arrays.\n * @private\n * @param {any[]} array array to search into (elements are base or array of base)\n * @param {any} searchedValue the value we're looking for (base or array of base)\n * @return {any} the searched value or undefined\n */ function $b98b552440c412c7$var$findArray(array, searchedValue) {\n    return $18a18427f3d6914e$exports(array, function(currentValue) {\n        return $b98b552440c412c7$var$isEqualNumericRefinement(currentValue, searchedValue);\n    });\n}\n/**\n * The facet list is the structure used to store the list of values used to\n * filter a single attribute.\n * @typedef {string[]} SearchParameters.FacetList\n */ /**\n * Structure to store numeric filters with the operator as the key. The supported operators\n * are `=`, `>`, `<`, `>=`, `<=` and `!=`.\n * @typedef {Object.<string, Array.<number|number[]>>} SearchParameters.OperatorList\n */ /**\n * SearchParameters is the data structure that contains all the information\n * usable for making a search to Algolia API. It doesn't do the search itself,\n * nor does it contains logic about the parameters.\n * It is an immutable object, therefore it has been created in a way that each\n * changes does not change the object itself but returns a copy with the\n * modification.\n * This object should probably not be instantiated outside of the helper. It will\n * be provided when needed. This object is documented for reference as you'll\n * get it from events generated by the {@link AlgoliaSearchHelper}.\n * If need be, instantiate the Helper from the factory function {@link SearchParameters.make}\n * @constructor\n * @classdesc contains all the parameters of a search\n * @param {object|SearchParameters} newParameters existing parameters or partial object\n * for the properties of a new SearchParameters\n * @see SearchParameters.make\n * @example <caption>SearchParameters of the first query in\n *   <a href=\"http://demos.algolia.com/instant-search-demo/\">the instant search demo</a></caption>\n{\n   \"query\": \"\",\n   \"disjunctiveFacets\": [\n      \"customerReviewCount\",\n      \"category\",\n      \"salePrice_range\",\n      \"manufacturer\"\n  ],\n   \"maxValuesPerFacet\": 30,\n   \"page\": 0,\n   \"hitsPerPage\": 10,\n   \"facets\": [\n      \"type\",\n      \"shipping\"\n  ]\n}\n */ function $b98b552440c412c7$var$SearchParameters(newParameters) {\n    var params = newParameters ? $b98b552440c412c7$var$SearchParameters._parseNumbers(newParameters) : {};\n    if (params.userToken !== undefined && !$c0e6e601e5d1a93f$exports(params.userToken)) console.warn(\"[algoliasearch-helper] The `userToken` parameter is invalid. This can lead to wrong analytics.\\n  - Format: [a-zA-Z0-9_-]{1,64}\");\n    /**\n   * This attribute contains the list of all the conjunctive facets\n   * used. This list will be added to requested facets in the\n   * [facets attribute](https://www.algolia.com/doc/rest-api/search#param-facets) sent to algolia.\n   * @member {string[]}\n   */ this.facets = params.facets || [];\n    /**\n   * This attribute contains the list of all the disjunctive facets\n   * used. This list will be added to requested facets in the\n   * [facets attribute](https://www.algolia.com/doc/rest-api/search#param-facets) sent to algolia.\n   * @member {string[]}\n   */ this.disjunctiveFacets = params.disjunctiveFacets || [];\n    /**\n   * This attribute contains the list of all the hierarchical facets\n   * used. This list will be added to requested facets in the\n   * [facets attribute](https://www.algolia.com/doc/rest-api/search#param-facets) sent to algolia.\n   * Hierarchical facets are a sub type of disjunctive facets that\n   * let you filter faceted attributes hierarchically.\n   * @member {string[]|object[]}\n   */ this.hierarchicalFacets = params.hierarchicalFacets || [];\n    // Refinements\n    /**\n   * This attribute contains all the filters that need to be\n   * applied on the conjunctive facets. Each facet must be properly\n   * defined in the `facets` attribute.\n   *\n   * The key is the name of the facet, and the `FacetList` contains all\n   * filters selected for the associated facet name.\n   *\n   * When querying algolia, the values stored in this attribute will\n   * be translated into the `facetFilters` attribute.\n   * @member {Object.<string, SearchParameters.FacetList>}\n   */ this.facetsRefinements = params.facetsRefinements || {};\n    /**\n   * This attribute contains all the filters that need to be\n   * excluded from the conjunctive facets. Each facet must be properly\n   * defined in the `facets` attribute.\n   *\n   * The key is the name of the facet, and the `FacetList` contains all\n   * filters excluded for the associated facet name.\n   *\n   * When querying algolia, the values stored in this attribute will\n   * be translated into the `facetFilters` attribute.\n   * @member {Object.<string, SearchParameters.FacetList>}\n   */ this.facetsExcludes = params.facetsExcludes || {};\n    /**\n   * This attribute contains all the filters that need to be\n   * applied on the disjunctive facets. Each facet must be properly\n   * defined in the `disjunctiveFacets` attribute.\n   *\n   * The key is the name of the facet, and the `FacetList` contains all\n   * filters selected for the associated facet name.\n   *\n   * When querying algolia, the values stored in this attribute will\n   * be translated into the `facetFilters` attribute.\n   * @member {Object.<string, SearchParameters.FacetList>}\n   */ this.disjunctiveFacetsRefinements = params.disjunctiveFacetsRefinements || {};\n    /**\n   * This attribute contains all the filters that need to be\n   * applied on the numeric attributes.\n   *\n   * The key is the name of the attribute, and the value is the\n   * filters to apply to this attribute.\n   *\n   * When querying algolia, the values stored in this attribute will\n   * be translated into the `numericFilters` attribute.\n   * @member {Object.<string, SearchParameters.OperatorList>}\n   */ this.numericRefinements = params.numericRefinements || {};\n    /**\n   * This attribute contains all the tags used to refine the query.\n   *\n   * When querying algolia, the values stored in this attribute will\n   * be translated into the `tagFilters` attribute.\n   * @member {string[]}\n   */ this.tagRefinements = params.tagRefinements || [];\n    /**\n   * This attribute contains all the filters that need to be\n   * applied on the hierarchical facets. Each facet must be properly\n   * defined in the `hierarchicalFacets` attribute.\n   *\n   * The key is the name of the facet, and the `FacetList` contains all\n   * filters selected for the associated facet name. The FacetList values\n   * are structured as a string that contain the values for each level\n   * separated by the configured separator.\n   *\n   * When querying algolia, the values stored in this attribute will\n   * be translated into the `facetFilters` attribute.\n   * @member {Object.<string, SearchParameters.FacetList>}\n   */ this.hierarchicalFacetsRefinements = params.hierarchicalFacetsRefinements || {};\n    var self = this;\n    Object.keys(params).forEach(function(paramName) {\n        var isKeyKnown = $b98b552440c412c7$var$SearchParameters.PARAMETERS.indexOf(paramName) !== -1;\n        var isValueDefined = params[paramName] !== undefined;\n        if (!isKeyKnown && isValueDefined) self[paramName] = params[paramName];\n    });\n}\n/**\n * List all the properties in SearchParameters and therefore all the known Algolia properties\n * This doesn't contain any beta/hidden features.\n * @private\n */ $b98b552440c412c7$var$SearchParameters.PARAMETERS = Object.keys(new $b98b552440c412c7$var$SearchParameters());\n/**\n * @private\n * @param {object} partialState full or part of a state\n * @return {object} a new object with the number keys as number\n */ $b98b552440c412c7$var$SearchParameters._parseNumbers = function(partialState) {\n    // Do not reparse numbers in SearchParameters, they ought to be parsed already\n    if (partialState instanceof $b98b552440c412c7$var$SearchParameters) return partialState;\n    var numbers = {};\n    var numberKeys = [\n        \"aroundPrecision\",\n        \"aroundRadius\",\n        \"getRankingInfo\",\n        \"minWordSizefor2Typos\",\n        \"minWordSizefor1Typo\",\n        \"page\",\n        \"maxValuesPerFacet\",\n        \"distinct\",\n        \"minimumAroundRadius\",\n        \"hitsPerPage\",\n        \"minProximity\"\n    ];\n    numberKeys.forEach(function(k) {\n        var value = partialState[k];\n        if (typeof value === \"string\") {\n            var parsedValue = parseFloat(value);\n            // global isNaN is ok to use here, value is only number or NaN\n            numbers[k] = isNaN(parsedValue) ? value : parsedValue;\n        }\n    });\n    // there's two formats of insideBoundingBox, we need to parse\n    // the one which is an array of float geo rectangles\n    if (Array.isArray(partialState.insideBoundingBox)) numbers.insideBoundingBox = partialState.insideBoundingBox.map(function(geoRect) {\n        if (Array.isArray(geoRect)) return geoRect.map(function(value) {\n            return parseFloat(value);\n        });\n        return geoRect;\n    });\n    if (partialState.numericRefinements) {\n        var numericRefinements = {};\n        Object.keys(partialState.numericRefinements).forEach(function(attribute) {\n            var operators = partialState.numericRefinements[attribute] || {};\n            numericRefinements[attribute] = {};\n            Object.keys(operators).forEach(function(operator) {\n                var values = operators[operator];\n                var parsedValues = values.map(function(v) {\n                    if (Array.isArray(v)) return v.map(function(vPrime) {\n                        if (typeof vPrime === \"string\") return parseFloat(vPrime);\n                        return vPrime;\n                    });\n                    else if (typeof v === \"string\") return parseFloat(v);\n                    return v;\n                });\n                numericRefinements[attribute][operator] = parsedValues;\n            });\n        });\n        numbers.numericRefinements = numericRefinements;\n    }\n    return $5223709f7c606ea7$exports({}, partialState, numbers);\n};\n/**\n * Factory for SearchParameters\n * @param {object|SearchParameters} newParameters existing parameters or partial\n * object for the properties of a new SearchParameters\n * @return {SearchParameters} frozen instance of SearchParameters\n */ $b98b552440c412c7$var$SearchParameters.make = function makeSearchParameters(newParameters) {\n    var instance = new $b98b552440c412c7$var$SearchParameters(newParameters);\n    var hierarchicalFacets = newParameters.hierarchicalFacets || [];\n    hierarchicalFacets.forEach(function(facet) {\n        if (facet.rootPath) {\n            var currentRefinement = instance.getHierarchicalRefinement(facet.name);\n            if (currentRefinement.length > 0 && currentRefinement[0].indexOf(facet.rootPath) !== 0) instance = instance.clearRefinements(facet.name);\n            // get it again in case it has been cleared\n            currentRefinement = instance.getHierarchicalRefinement(facet.name);\n            if (currentRefinement.length === 0) instance = instance.toggleHierarchicalFacetRefinement(facet.name, facet.rootPath);\n        }\n    });\n    return instance;\n};\n/**\n * Validates the new parameters based on the previous state\n * @param {SearchParameters} currentState the current state\n * @param {object|SearchParameters} parameters the new parameters to set\n * @return {Error|null} Error if the modification is invalid, null otherwise\n */ $b98b552440c412c7$var$SearchParameters.validate = function(currentState, parameters) {\n    var params = parameters || {};\n    if (currentState.tagFilters && params.tagRefinements && params.tagRefinements.length > 0) return new Error(\"[Tags] Cannot switch from the managed tag API to the advanced API. It is probably an error, if it is really what you want, you should first clear the tags with clearTags method.\");\n    if (currentState.tagRefinements.length > 0 && params.tagFilters) return new Error(\"[Tags] Cannot switch from the advanced tag API to the managed API. It is probably an error, if it is not, you should first clear the tags with clearTags method.\");\n    if (currentState.numericFilters && params.numericRefinements && $c0c10d49c54a249b$exports(params.numericRefinements)) return new Error(\"[Numeric filters] Can't switch from the advanced to the managed API. It is probably an error, if this is really what you want, you have to first clear the numeric filters.\");\n    if ($c0c10d49c54a249b$exports(currentState.numericRefinements) && params.numericFilters) return new Error(\"[Numeric filters] Can't switch from the managed API to the advanced. It is probably an error, if this is really what you want, you have to first clear the numeric filters.\");\n    return null;\n};\n$b98b552440c412c7$var$SearchParameters.prototype = {\n    constructor: $b98b552440c412c7$var$SearchParameters,\n    /**\n   * Remove all refinements (disjunctive + conjunctive + excludes + numeric filters)\n   * @method\n   * @param {undefined|string|SearchParameters.clearCallback} [attribute] optional string or function\n   * - If not given, means to clear all the filters.\n   * - If `string`, means to clear all refinements for the `attribute` named filter.\n   * - If `function`, means to clear all the refinements that return truthy values.\n   * @return {SearchParameters}\n   */ clearRefinements: function clearRefinements(attribute) {\n        var patch = {\n            numericRefinements: this._clearNumericRefinements(attribute),\n            facetsRefinements: $285f5e4df955497a$exports.clearRefinement(this.facetsRefinements, attribute, \"conjunctiveFacet\"),\n            facetsExcludes: $285f5e4df955497a$exports.clearRefinement(this.facetsExcludes, attribute, \"exclude\"),\n            disjunctiveFacetsRefinements: $285f5e4df955497a$exports.clearRefinement(this.disjunctiveFacetsRefinements, attribute, \"disjunctiveFacet\"),\n            hierarchicalFacetsRefinements: $285f5e4df955497a$exports.clearRefinement(this.hierarchicalFacetsRefinements, attribute, \"hierarchicalFacet\")\n        };\n        if (patch.numericRefinements === this.numericRefinements && patch.facetsRefinements === this.facetsRefinements && patch.facetsExcludes === this.facetsExcludes && patch.disjunctiveFacetsRefinements === this.disjunctiveFacetsRefinements && patch.hierarchicalFacetsRefinements === this.hierarchicalFacetsRefinements) return this;\n        return this.setQueryParameters(patch);\n    },\n    /**\n   * Remove all the refined tags from the SearchParameters\n   * @method\n   * @return {SearchParameters}\n   */ clearTags: function clearTags() {\n        if (this.tagFilters === undefined && this.tagRefinements.length === 0) return this;\n        return this.setQueryParameters({\n            tagFilters: undefined,\n            tagRefinements: []\n        });\n    },\n    /**\n   * Set the index.\n   * @method\n   * @param {string} index the index name\n   * @return {SearchParameters}\n   */ setIndex: function setIndex(index) {\n        if (index === this.index) return this;\n        return this.setQueryParameters({\n            index: index\n        });\n    },\n    /**\n   * Query setter\n   * @method\n   * @param {string} newQuery value for the new query\n   * @return {SearchParameters}\n   */ setQuery: function setQuery(newQuery) {\n        if (newQuery === this.query) return this;\n        return this.setQueryParameters({\n            query: newQuery\n        });\n    },\n    /**\n   * Page setter\n   * @method\n   * @param {number} newPage new page number\n   * @return {SearchParameters}\n   */ setPage: function setPage(newPage) {\n        if (newPage === this.page) return this;\n        return this.setQueryParameters({\n            page: newPage\n        });\n    },\n    /**\n   * Facets setter\n   * The facets are the simple facets, used for conjunctive (and) faceting.\n   * @method\n   * @param {string[]} facets all the attributes of the algolia records used for conjunctive faceting\n   * @return {SearchParameters}\n   */ setFacets: function setFacets(facets) {\n        return this.setQueryParameters({\n            facets: facets\n        });\n    },\n    /**\n   * Disjunctive facets setter\n   * Change the list of disjunctive (or) facets the helper chan handle.\n   * @method\n   * @param {string[]} facets all the attributes of the algolia records used for disjunctive faceting\n   * @return {SearchParameters}\n   */ setDisjunctiveFacets: function setDisjunctiveFacets(facets) {\n        return this.setQueryParameters({\n            disjunctiveFacets: facets\n        });\n    },\n    /**\n   * HitsPerPage setter\n   * Hits per page represents the number of hits retrieved for this query\n   * @method\n   * @param {number} n number of hits retrieved per page of results\n   * @return {SearchParameters}\n   */ setHitsPerPage: function setHitsPerPage(n) {\n        if (this.hitsPerPage === n) return this;\n        return this.setQueryParameters({\n            hitsPerPage: n\n        });\n    },\n    /**\n   * typoTolerance setter\n   * Set the value of typoTolerance\n   * @method\n   * @param {string} typoTolerance new value of typoTolerance (\"true\", \"false\", \"min\" or \"strict\")\n   * @return {SearchParameters}\n   */ setTypoTolerance: function setTypoTolerance(typoTolerance) {\n        if (this.typoTolerance === typoTolerance) return this;\n        return this.setQueryParameters({\n            typoTolerance: typoTolerance\n        });\n    },\n    /**\n   * Add a numeric filter for a given attribute\n   * When value is an array, they are combined with OR\n   * When value is a single value, it will combined with AND\n   * @method\n   * @param {string} attribute attribute to set the filter on\n   * @param {string} operator operator of the filter (possible values: =, >, >=, <, <=, !=)\n   * @param {number | number[]} value value of the filter\n   * @return {SearchParameters}\n   * @example\n   * // for price = 50 or 40\n   * searchparameter.addNumericRefinement('price', '=', [50, 40]);\n   * @example\n   * // for size = 38 and 40\n   * searchparameter.addNumericRefinement('size', '=', 38);\n   * searchparameter.addNumericRefinement('size', '=', 40);\n   */ addNumericRefinement: function(attribute, operator, v) {\n        var value = $0012e4ff1c99fe7e$exports(v);\n        if (this.isNumericRefined(attribute, operator, value)) return this;\n        var mod = $5223709f7c606ea7$exports({}, this.numericRefinements);\n        mod[attribute] = $5223709f7c606ea7$exports({}, mod[attribute]);\n        if (mod[attribute][operator]) {\n            // Array copy\n            mod[attribute][operator] = mod[attribute][operator].slice();\n            // Add the element. Concat can't be used here because value can be an array.\n            mod[attribute][operator].push(value);\n        } else mod[attribute][operator] = [\n            value\n        ];\n        return this.setQueryParameters({\n            numericRefinements: mod\n        });\n    },\n    /**\n   * Get the list of conjunctive refinements for a single facet\n   * @param {string} facetName name of the attribute used for faceting\n   * @return {string[]} list of refinements\n   */ getConjunctiveRefinements: function(facetName) {\n        if (!this.isConjunctiveFacet(facetName)) return [];\n        return this.facetsRefinements[facetName] || [];\n    },\n    /**\n   * Get the list of disjunctive refinements for a single facet\n   * @param {string} facetName name of the attribute used for faceting\n   * @return {string[]} list of refinements\n   */ getDisjunctiveRefinements: function(facetName) {\n        if (!this.isDisjunctiveFacet(facetName)) return [];\n        return this.disjunctiveFacetsRefinements[facetName] || [];\n    },\n    /**\n   * Get the list of hierarchical refinements for a single facet\n   * @param {string} facetName name of the attribute used for faceting\n   * @return {string[]} list of refinements\n   */ getHierarchicalRefinement: function(facetName) {\n        // we send an array but we currently do not support multiple\n        // hierarchicalRefinements for a hierarchicalFacet\n        return this.hierarchicalFacetsRefinements[facetName] || [];\n    },\n    /**\n   * Get the list of exclude refinements for a single facet\n   * @param {string} facetName name of the attribute used for faceting\n   * @return {string[]} list of refinements\n   */ getExcludeRefinements: function(facetName) {\n        if (!this.isConjunctiveFacet(facetName)) return [];\n        return this.facetsExcludes[facetName] || [];\n    },\n    /**\n   * Remove all the numeric filter for a given (attribute, operator)\n   * @method\n   * @param {string} attribute attribute to set the filter on\n   * @param {string} [operator] operator of the filter (possible values: =, >, >=, <, <=, !=)\n   * @param {number} [number] the value to be removed\n   * @return {SearchParameters}\n   */ removeNumericRefinement: function(attribute, operator, paramValue) {\n        if (paramValue !== undefined) {\n            if (!this.isNumericRefined(attribute, operator, paramValue)) return this;\n            return this.setQueryParameters({\n                numericRefinements: this._clearNumericRefinements(function(value, key) {\n                    return key === attribute && value.op === operator && $b98b552440c412c7$var$isEqualNumericRefinement(value.val, $0012e4ff1c99fe7e$exports(paramValue));\n                })\n            });\n        } else if (operator !== undefined) {\n            if (!this.isNumericRefined(attribute, operator)) return this;\n            return this.setQueryParameters({\n                numericRefinements: this._clearNumericRefinements(function(value, key) {\n                    return key === attribute && value.op === operator;\n                })\n            });\n        }\n        if (!this.isNumericRefined(attribute)) return this;\n        return this.setQueryParameters({\n            numericRefinements: this._clearNumericRefinements(function(value, key) {\n                return key === attribute;\n            })\n        });\n    },\n    /**\n   * Get the list of numeric refinements for a single facet\n   * @param {string} facetName name of the attribute used for faceting\n   * @return {SearchParameters.OperatorList} list of refinements\n   */ getNumericRefinements: function(facetName) {\n        return this.numericRefinements[facetName] || {};\n    },\n    /**\n   * Return the current refinement for the (attribute, operator)\n   * @param {string} attribute attribute in the record\n   * @param {string} operator operator applied on the refined values\n   * @return {Array.<number|number[]>} refined values\n   */ getNumericRefinement: function(attribute, operator) {\n        return this.numericRefinements[attribute] && this.numericRefinements[attribute][operator];\n    },\n    /**\n   * Clear numeric filters.\n   * @method\n   * @private\n   * @param {string|SearchParameters.clearCallback} [attribute] optional string or function\n   * - If not given, means to clear all the filters.\n   * - If `string`, means to clear all refinements for the `attribute` named filter.\n   * - If `function`, means to clear all the refinements that return truthy values.\n   * @return {Object.<string, OperatorList>}\n   */ _clearNumericRefinements: function _clearNumericRefinements(attribute) {\n        if (attribute === undefined) {\n            if (!$c0c10d49c54a249b$exports(this.numericRefinements)) return this.numericRefinements;\n            return {};\n        } else if (typeof attribute === \"string\") return $d5a032e94ef65cbb$exports(this.numericRefinements, [\n            attribute\n        ]);\n        else if (typeof attribute === \"function\") {\n            var hasChanged = false;\n            var numericRefinements = this.numericRefinements;\n            var newNumericRefinements = Object.keys(numericRefinements).reduce(function(memo, key) {\n                var operators = numericRefinements[key];\n                var operatorList = {};\n                operators = operators || {};\n                Object.keys(operators).forEach(function(operator) {\n                    var values = operators[operator] || [];\n                    var outValues = [];\n                    values.forEach(function(value) {\n                        var predicateResult = attribute({\n                            val: value,\n                            op: operator\n                        }, key, \"numeric\");\n                        if (!predicateResult) outValues.push(value);\n                    });\n                    if (outValues.length !== values.length) hasChanged = true;\n                    operatorList[operator] = outValues;\n                });\n                memo[key] = operatorList;\n                return memo;\n            }, {});\n            if (hasChanged) return newNumericRefinements;\n            return this.numericRefinements;\n        }\n    },\n    /**\n   * Add a facet to the facets attribute of the helper configuration, if it\n   * isn't already present.\n   * @method\n   * @param {string} facet facet name to add\n   * @return {SearchParameters}\n   */ addFacet: function addFacet(facet) {\n        if (this.isConjunctiveFacet(facet)) return this;\n        return this.setQueryParameters({\n            facets: this.facets.concat([\n                facet\n            ])\n        });\n    },\n    /**\n   * Add a disjunctive facet to the disjunctiveFacets attribute of the helper\n   * configuration, if it isn't already present.\n   * @method\n   * @param {string} facet disjunctive facet name to add\n   * @return {SearchParameters}\n   */ addDisjunctiveFacet: function addDisjunctiveFacet(facet) {\n        if (this.isDisjunctiveFacet(facet)) return this;\n        return this.setQueryParameters({\n            disjunctiveFacets: this.disjunctiveFacets.concat([\n                facet\n            ])\n        });\n    },\n    /**\n   * Add a hierarchical facet to the hierarchicalFacets attribute of the helper\n   * configuration.\n   * @method\n   * @param {object} hierarchicalFacet hierarchical facet to add\n   * @return {SearchParameters}\n   * @throws will throw an error if a hierarchical facet with the same name was already declared\n   */ addHierarchicalFacet: function addHierarchicalFacet(hierarchicalFacet) {\n        if (this.isHierarchicalFacet(hierarchicalFacet.name)) throw new Error(\"Cannot declare two hierarchical facets with the same name: `\" + hierarchicalFacet.name + \"`\");\n        return this.setQueryParameters({\n            hierarchicalFacets: this.hierarchicalFacets.concat([\n                hierarchicalFacet\n            ])\n        });\n    },\n    /**\n   * Add a refinement on a \"normal\" facet\n   * @method\n   * @param {string} facet attribute to apply the faceting on\n   * @param {string} value value of the attribute (will be converted to string)\n   * @return {SearchParameters}\n   */ addFacetRefinement: function addFacetRefinement(facet, value) {\n        if (!this.isConjunctiveFacet(facet)) throw new Error(facet + \" is not defined in the facets attribute of the helper configuration\");\n        if ($285f5e4df955497a$exports.isRefined(this.facetsRefinements, facet, value)) return this;\n        return this.setQueryParameters({\n            facetsRefinements: $285f5e4df955497a$exports.addRefinement(this.facetsRefinements, facet, value)\n        });\n    },\n    /**\n   * Exclude a value from a \"normal\" facet\n   * @method\n   * @param {string} facet attribute to apply the exclusion on\n   * @param {string} value value of the attribute (will be converted to string)\n   * @return {SearchParameters}\n   */ addExcludeRefinement: function addExcludeRefinement(facet, value) {\n        if (!this.isConjunctiveFacet(facet)) throw new Error(facet + \" is not defined in the facets attribute of the helper configuration\");\n        if ($285f5e4df955497a$exports.isRefined(this.facetsExcludes, facet, value)) return this;\n        return this.setQueryParameters({\n            facetsExcludes: $285f5e4df955497a$exports.addRefinement(this.facetsExcludes, facet, value)\n        });\n    },\n    /**\n   * Adds a refinement on a disjunctive facet.\n   * @method\n   * @param {string} facet attribute to apply the faceting on\n   * @param {string} value value of the attribute (will be converted to string)\n   * @return {SearchParameters}\n   */ addDisjunctiveFacetRefinement: function addDisjunctiveFacetRefinement(facet, value) {\n        if (!this.isDisjunctiveFacet(facet)) throw new Error(facet + \" is not defined in the disjunctiveFacets attribute of the helper configuration\");\n        if ($285f5e4df955497a$exports.isRefined(this.disjunctiveFacetsRefinements, facet, value)) return this;\n        return this.setQueryParameters({\n            disjunctiveFacetsRefinements: $285f5e4df955497a$exports.addRefinement(this.disjunctiveFacetsRefinements, facet, value)\n        });\n    },\n    /**\n   * addTagRefinement adds a tag to the list used to filter the results\n   * @param {string} tag tag to be added\n   * @return {SearchParameters}\n   */ addTagRefinement: function addTagRefinement(tag) {\n        if (this.isTagRefined(tag)) return this;\n        var modification = {\n            tagRefinements: this.tagRefinements.concat(tag)\n        };\n        return this.setQueryParameters(modification);\n    },\n    /**\n   * Remove a facet from the facets attribute of the helper configuration, if it\n   * is present.\n   * @method\n   * @param {string} facet facet name to remove\n   * @return {SearchParameters}\n   */ removeFacet: function removeFacet(facet) {\n        if (!this.isConjunctiveFacet(facet)) return this;\n        return this.clearRefinements(facet).setQueryParameters({\n            facets: this.facets.filter(function(f) {\n                return f !== facet;\n            })\n        });\n    },\n    /**\n   * Remove a disjunctive facet from the disjunctiveFacets attribute of the\n   * helper configuration, if it is present.\n   * @method\n   * @param {string} facet disjunctive facet name to remove\n   * @return {SearchParameters}\n   */ removeDisjunctiveFacet: function removeDisjunctiveFacet(facet) {\n        if (!this.isDisjunctiveFacet(facet)) return this;\n        return this.clearRefinements(facet).setQueryParameters({\n            disjunctiveFacets: this.disjunctiveFacets.filter(function(f) {\n                return f !== facet;\n            })\n        });\n    },\n    /**\n   * Remove a hierarchical facet from the hierarchicalFacets attribute of the\n   * helper configuration, if it is present.\n   * @method\n   * @param {string} facet hierarchical facet name to remove\n   * @return {SearchParameters}\n   */ removeHierarchicalFacet: function removeHierarchicalFacet(facet) {\n        if (!this.isHierarchicalFacet(facet)) return this;\n        return this.clearRefinements(facet).setQueryParameters({\n            hierarchicalFacets: this.hierarchicalFacets.filter(function(f) {\n                return f.name !== facet;\n            })\n        });\n    },\n    /**\n   * Remove a refinement set on facet. If a value is provided, it will clear the\n   * refinement for the given value, otherwise it will clear all the refinement\n   * values for the faceted attribute.\n   * @method\n   * @param {string} facet name of the attribute used for faceting\n   * @param {string} [value] value used to filter\n   * @return {SearchParameters}\n   */ removeFacetRefinement: function removeFacetRefinement(facet, value) {\n        if (!this.isConjunctiveFacet(facet)) throw new Error(facet + \" is not defined in the facets attribute of the helper configuration\");\n        if (!$285f5e4df955497a$exports.isRefined(this.facetsRefinements, facet, value)) return this;\n        return this.setQueryParameters({\n            facetsRefinements: $285f5e4df955497a$exports.removeRefinement(this.facetsRefinements, facet, value)\n        });\n    },\n    /**\n   * Remove a negative refinement on a facet\n   * @method\n   * @param {string} facet name of the attribute used for faceting\n   * @param {string} value value used to filter\n   * @return {SearchParameters}\n   */ removeExcludeRefinement: function removeExcludeRefinement(facet, value) {\n        if (!this.isConjunctiveFacet(facet)) throw new Error(facet + \" is not defined in the facets attribute of the helper configuration\");\n        if (!$285f5e4df955497a$exports.isRefined(this.facetsExcludes, facet, value)) return this;\n        return this.setQueryParameters({\n            facetsExcludes: $285f5e4df955497a$exports.removeRefinement(this.facetsExcludes, facet, value)\n        });\n    },\n    /**\n   * Remove a refinement on a disjunctive facet\n   * @method\n   * @param {string} facet name of the attribute used for faceting\n   * @param {string} value value used to filter\n   * @return {SearchParameters}\n   */ removeDisjunctiveFacetRefinement: function removeDisjunctiveFacetRefinement(facet, value) {\n        if (!this.isDisjunctiveFacet(facet)) throw new Error(facet + \" is not defined in the disjunctiveFacets attribute of the helper configuration\");\n        if (!$285f5e4df955497a$exports.isRefined(this.disjunctiveFacetsRefinements, facet, value)) return this;\n        return this.setQueryParameters({\n            disjunctiveFacetsRefinements: $285f5e4df955497a$exports.removeRefinement(this.disjunctiveFacetsRefinements, facet, value)\n        });\n    },\n    /**\n   * Remove a tag from the list of tag refinements\n   * @method\n   * @param {string} tag the tag to remove\n   * @return {SearchParameters}\n   */ removeTagRefinement: function removeTagRefinement(tag) {\n        if (!this.isTagRefined(tag)) return this;\n        var modification = {\n            tagRefinements: this.tagRefinements.filter(function(t) {\n                return t !== tag;\n            })\n        };\n        return this.setQueryParameters(modification);\n    },\n    /**\n   * Generic toggle refinement method to use with facet, disjunctive facets\n   * and hierarchical facets\n   * @param  {string} facet the facet to refine\n   * @param  {string} value the associated value\n   * @return {SearchParameters}\n   * @throws will throw an error if the facet is not declared in the settings of the helper\n   * @deprecated since version 2.19.0, see {@link SearchParameters#toggleFacetRefinement}\n   */ toggleRefinement: function toggleRefinement(facet, value) {\n        return this.toggleFacetRefinement(facet, value);\n    },\n    /**\n   * Generic toggle refinement method to use with facet, disjunctive facets\n   * and hierarchical facets\n   * @param  {string} facet the facet to refine\n   * @param  {string} value the associated value\n   * @return {SearchParameters}\n   * @throws will throw an error if the facet is not declared in the settings of the helper\n   */ toggleFacetRefinement: function toggleFacetRefinement(facet, value) {\n        if (this.isHierarchicalFacet(facet)) return this.toggleHierarchicalFacetRefinement(facet, value);\n        else if (this.isConjunctiveFacet(facet)) return this.toggleConjunctiveFacetRefinement(facet, value);\n        else if (this.isDisjunctiveFacet(facet)) return this.toggleDisjunctiveFacetRefinement(facet, value);\n        throw new Error(\"Cannot refine the undeclared facet \" + facet + \"; it should be added to the helper options facets, disjunctiveFacets or hierarchicalFacets\");\n    },\n    /**\n   * Switch the refinement applied over a facet/value\n   * @method\n   * @param {string} facet name of the attribute used for faceting\n   * @param {value} value value used for filtering\n   * @return {SearchParameters}\n   */ toggleConjunctiveFacetRefinement: function toggleConjunctiveFacetRefinement(facet, value) {\n        if (!this.isConjunctiveFacet(facet)) throw new Error(facet + \" is not defined in the facets attribute of the helper configuration\");\n        return this.setQueryParameters({\n            facetsRefinements: $285f5e4df955497a$exports.toggleRefinement(this.facetsRefinements, facet, value)\n        });\n    },\n    /**\n   * Switch the refinement applied over a facet/value\n   * @method\n   * @param {string} facet name of the attribute used for faceting\n   * @param {value} value value used for filtering\n   * @return {SearchParameters}\n   */ toggleExcludeFacetRefinement: function toggleExcludeFacetRefinement(facet, value) {\n        if (!this.isConjunctiveFacet(facet)) throw new Error(facet + \" is not defined in the facets attribute of the helper configuration\");\n        return this.setQueryParameters({\n            facetsExcludes: $285f5e4df955497a$exports.toggleRefinement(this.facetsExcludes, facet, value)\n        });\n    },\n    /**\n   * Switch the refinement applied over a facet/value\n   * @method\n   * @param {string} facet name of the attribute used for faceting\n   * @param {value} value value used for filtering\n   * @return {SearchParameters}\n   */ toggleDisjunctiveFacetRefinement: function toggleDisjunctiveFacetRefinement(facet, value) {\n        if (!this.isDisjunctiveFacet(facet)) throw new Error(facet + \" is not defined in the disjunctiveFacets attribute of the helper configuration\");\n        return this.setQueryParameters({\n            disjunctiveFacetsRefinements: $285f5e4df955497a$exports.toggleRefinement(this.disjunctiveFacetsRefinements, facet, value)\n        });\n    },\n    /**\n   * Switch the refinement applied over a facet/value\n   * @method\n   * @param {string} facet name of the attribute used for faceting\n   * @param {value} value value used for filtering\n   * @return {SearchParameters}\n   */ toggleHierarchicalFacetRefinement: function toggleHierarchicalFacetRefinement(facet, value) {\n        if (!this.isHierarchicalFacet(facet)) throw new Error(facet + \" is not defined in the hierarchicalFacets attribute of the helper configuration\");\n        var separator = this._getHierarchicalFacetSeparator(this.getHierarchicalFacetByName(facet));\n        var mod = {};\n        var upOneOrMultipleLevel = this.hierarchicalFacetsRefinements[facet] !== undefined && this.hierarchicalFacetsRefinements[facet].length > 0 && // remove current refinement:\n        // refinement was 'beer > IPA', call is toggleRefine('beer > IPA'), refinement should be `beer`\n        (this.hierarchicalFacetsRefinements[facet][0] === value || // remove a parent refinement of the current refinement:\n        //  - refinement was 'beer > IPA > Flying dog'\n        //  - call is toggleRefine('beer > IPA')\n        //  - refinement should be `beer`\n        this.hierarchicalFacetsRefinements[facet][0].indexOf(value + separator) === 0);\n        if (upOneOrMultipleLevel) {\n            if (value.indexOf(separator) === -1) // go back to root level\n            mod[facet] = [];\n            else mod[facet] = [\n                value.slice(0, value.lastIndexOf(separator))\n            ];\n        } else mod[facet] = [\n            value\n        ];\n        return this.setQueryParameters({\n            hierarchicalFacetsRefinements: $835decef46f26c5e$exports({}, mod, this.hierarchicalFacetsRefinements)\n        });\n    },\n    /**\n   * Adds a refinement on a hierarchical facet.\n   * @param {string} facet the facet name\n   * @param {string} path the hierarchical facet path\n   * @return {SearchParameter} the new state\n   * @throws Error if the facet is not defined or if the facet is refined\n   */ addHierarchicalFacetRefinement: function(facet, path) {\n        if (this.isHierarchicalFacetRefined(facet)) throw new Error(facet + \" is already refined.\");\n        if (!this.isHierarchicalFacet(facet)) throw new Error(facet + \" is not defined in the hierarchicalFacets attribute of the helper configuration.\");\n        var mod = {};\n        mod[facet] = [\n            path\n        ];\n        return this.setQueryParameters({\n            hierarchicalFacetsRefinements: $835decef46f26c5e$exports({}, mod, this.hierarchicalFacetsRefinements)\n        });\n    },\n    /**\n   * Removes the refinement set on a hierarchical facet.\n   * @param {string} facet the facet name\n   * @return {SearchParameter} the new state\n   * @throws Error if the facet is not defined or if the facet is not refined\n   */ removeHierarchicalFacetRefinement: function(facet) {\n        if (!this.isHierarchicalFacetRefined(facet)) return this;\n        var mod = {};\n        mod[facet] = [];\n        return this.setQueryParameters({\n            hierarchicalFacetsRefinements: $835decef46f26c5e$exports({}, mod, this.hierarchicalFacetsRefinements)\n        });\n    },\n    /**\n   * Switch the tag refinement\n   * @method\n   * @param {string} tag the tag to remove or add\n   * @return {SearchParameters}\n   */ toggleTagRefinement: function toggleTagRefinement(tag) {\n        if (this.isTagRefined(tag)) return this.removeTagRefinement(tag);\n        return this.addTagRefinement(tag);\n    },\n    /**\n   * Test if the facet name is from one of the disjunctive facets\n   * @method\n   * @param {string} facet facet name to test\n   * @return {boolean}\n   */ isDisjunctiveFacet: function(facet) {\n        return this.disjunctiveFacets.indexOf(facet) > -1;\n    },\n    /**\n   * Test if the facet name is from one of the hierarchical facets\n   * @method\n   * @param {string} facetName facet name to test\n   * @return {boolean}\n   */ isHierarchicalFacet: function(facetName) {\n        return this.getHierarchicalFacetByName(facetName) !== undefined;\n    },\n    /**\n   * Test if the facet name is from one of the conjunctive/normal facets\n   * @method\n   * @param {string} facet facet name to test\n   * @return {boolean}\n   */ isConjunctiveFacet: function(facet) {\n        return this.facets.indexOf(facet) > -1;\n    },\n    /**\n   * Returns true if the facet is refined, either for a specific value or in\n   * general.\n   * @method\n   * @param {string} facet name of the attribute for used for faceting\n   * @param {string} value, optional value. If passed will test that this value\n   * is filtering the given facet.\n   * @return {boolean} returns true if refined\n   */ isFacetRefined: function isFacetRefined(facet, value) {\n        if (!this.isConjunctiveFacet(facet)) return false;\n        return $285f5e4df955497a$exports.isRefined(this.facetsRefinements, facet, value);\n    },\n    /**\n   * Returns true if the facet contains exclusions or if a specific value is\n   * excluded.\n   *\n   * @method\n   * @param {string} facet name of the attribute for used for faceting\n   * @param {string} [value] optional value. If passed will test that this value\n   * is filtering the given facet.\n   * @return {boolean} returns true if refined\n   */ isExcludeRefined: function isExcludeRefined(facet, value) {\n        if (!this.isConjunctiveFacet(facet)) return false;\n        return $285f5e4df955497a$exports.isRefined(this.facetsExcludes, facet, value);\n    },\n    /**\n   * Returns true if the facet contains a refinement, or if a value passed is a\n   * refinement for the facet.\n   * @method\n   * @param {string} facet name of the attribute for used for faceting\n   * @param {string} value optional, will test if the value is used for refinement\n   * if there is one, otherwise will test if the facet contains any refinement\n   * @return {boolean}\n   */ isDisjunctiveFacetRefined: function isDisjunctiveFacetRefined(facet, value) {\n        if (!this.isDisjunctiveFacet(facet)) return false;\n        return $285f5e4df955497a$exports.isRefined(this.disjunctiveFacetsRefinements, facet, value);\n    },\n    /**\n   * Returns true if the facet contains a refinement, or if a value passed is a\n   * refinement for the facet.\n   * @method\n   * @param {string} facet name of the attribute for used for faceting\n   * @param {string} value optional, will test if the value is used for refinement\n   * if there is one, otherwise will test if the facet contains any refinement\n   * @return {boolean}\n   */ isHierarchicalFacetRefined: function isHierarchicalFacetRefined(facet, value) {\n        if (!this.isHierarchicalFacet(facet)) return false;\n        var refinements = this.getHierarchicalRefinement(facet);\n        if (!value) return refinements.length > 0;\n        return refinements.indexOf(value) !== -1;\n    },\n    /**\n   * Test if the triple (attribute, operator, value) is already refined.\n   * If only the attribute and the operator are provided, it tests if the\n   * contains any refinement value.\n   * @method\n   * @param {string} attribute attribute for which the refinement is applied\n   * @param {string} [operator] operator of the refinement\n   * @param {string} [value] value of the refinement\n   * @return {boolean} true if it is refined\n   */ isNumericRefined: function isNumericRefined(attribute, operator, value) {\n        if (value === undefined && operator === undefined) return !!this.numericRefinements[attribute];\n        var isOperatorDefined = this.numericRefinements[attribute] && this.numericRefinements[attribute][operator] !== undefined;\n        if (value === undefined || !isOperatorDefined) return isOperatorDefined;\n        var parsedValue = $0012e4ff1c99fe7e$exports(value);\n        var isAttributeValueDefined = $b98b552440c412c7$var$findArray(this.numericRefinements[attribute][operator], parsedValue) !== undefined;\n        return isOperatorDefined && isAttributeValueDefined;\n    },\n    /**\n   * Returns true if the tag refined, false otherwise\n   * @method\n   * @param {string} tag the tag to check\n   * @return {boolean}\n   */ isTagRefined: function isTagRefined(tag) {\n        return this.tagRefinements.indexOf(tag) !== -1;\n    },\n    /**\n   * Returns the list of all disjunctive facets refined\n   * @method\n   * @param {string} facet name of the attribute used for faceting\n   * @param {value} value value used for filtering\n   * @return {string[]}\n   */ getRefinedDisjunctiveFacets: function getRefinedDisjunctiveFacets() {\n        var self = this;\n        // attributes used for numeric filter can also be disjunctive\n        var disjunctiveNumericRefinedFacets = $1f358bf4e51305f6$exports(Object.keys(this.numericRefinements).filter(function(facet) {\n            return Object.keys(self.numericRefinements[facet]).length > 0;\n        }), this.disjunctiveFacets);\n        return Object.keys(this.disjunctiveFacetsRefinements).filter(function(facet) {\n            return self.disjunctiveFacetsRefinements[facet].length > 0;\n        }).concat(disjunctiveNumericRefinedFacets).concat(this.getRefinedHierarchicalFacets());\n    },\n    /**\n   * Returns the list of all disjunctive facets refined\n   * @method\n   * @param {string} facet name of the attribute used for faceting\n   * @param {value} value value used for filtering\n   * @return {string[]}\n   */ getRefinedHierarchicalFacets: function getRefinedHierarchicalFacets() {\n        var self = this;\n        return $1f358bf4e51305f6$exports(// enforce the order between the two arrays,\n        // so that refinement name index === hierarchical facet index\n        this.hierarchicalFacets.map(function(facet) {\n            return facet.name;\n        }), Object.keys(this.hierarchicalFacetsRefinements).filter(function(facet) {\n            return self.hierarchicalFacetsRefinements[facet].length > 0;\n        }));\n    },\n    /**\n   * Returned the list of all disjunctive facets not refined\n   * @method\n   * @return {string[]}\n   */ getUnrefinedDisjunctiveFacets: function() {\n        var refinedFacets = this.getRefinedDisjunctiveFacets();\n        return this.disjunctiveFacets.filter(function(f) {\n            return refinedFacets.indexOf(f) === -1;\n        });\n    },\n    managedParameters: [\n        \"index\",\n        \"facets\",\n        \"disjunctiveFacets\",\n        \"facetsRefinements\",\n        \"hierarchicalFacets\",\n        \"facetsExcludes\",\n        \"disjunctiveFacetsRefinements\",\n        \"numericRefinements\",\n        \"tagRefinements\",\n        \"hierarchicalFacetsRefinements\"\n    ],\n    getQueryParams: function getQueryParams() {\n        var managedParameters = this.managedParameters;\n        var queryParams = {};\n        var self = this;\n        Object.keys(this).forEach(function(paramName) {\n            var paramValue = self[paramName];\n            if (managedParameters.indexOf(paramName) === -1 && paramValue !== undefined) queryParams[paramName] = paramValue;\n        });\n        return queryParams;\n    },\n    /**\n   * Let the user set a specific value for a given parameter. Will return the\n   * same instance if the parameter is invalid or if the value is the same as the\n   * previous one.\n   * @method\n   * @param {string} parameter the parameter name\n   * @param {any} value the value to be set, must be compliant with the definition\n   * of the attribute on the object\n   * @return {SearchParameters} the updated state\n   */ setQueryParameter: function setParameter(parameter, value) {\n        if (this[parameter] === value) return this;\n        var modification = {};\n        modification[parameter] = value;\n        return this.setQueryParameters(modification);\n    },\n    /**\n   * Let the user set any of the parameters with a plain object.\n   * @method\n   * @param {object} params all the keys and the values to be updated\n   * @return {SearchParameters} a new updated instance\n   */ setQueryParameters: function setQueryParameters(params) {\n        if (!params) return this;\n        var error = $b98b552440c412c7$var$SearchParameters.validate(this, params);\n        if (error) throw error;\n        var self = this;\n        var nextWithNumbers = $b98b552440c412c7$var$SearchParameters._parseNumbers(params);\n        var previousPlainObject = Object.keys(this).reduce(function(acc, key) {\n            acc[key] = self[key];\n            return acc;\n        }, {});\n        var nextPlainObject = Object.keys(nextWithNumbers).reduce(function(previous, key) {\n            var isPreviousValueDefined = previous[key] !== undefined;\n            var isNextValueDefined = nextWithNumbers[key] !== undefined;\n            if (isPreviousValueDefined && !isNextValueDefined) return $d5a032e94ef65cbb$exports(previous, [\n                key\n            ]);\n            if (isNextValueDefined) previous[key] = nextWithNumbers[key];\n            return previous;\n        }, previousPlainObject);\n        return new this.constructor(nextPlainObject);\n    },\n    /**\n   * Returns a new instance with the page reset. Two scenarios possible:\n   * the page is omitted -> return the given instance\n   * the page is set -> return a new instance with a page of 0\n   * @return {SearchParameters} a new updated instance\n   */ resetPage: function() {\n        if (this.page === undefined) return this;\n        return this.setPage(0);\n    },\n    /**\n   * Helper function to get the hierarchicalFacet separator or the default one (`>`)\n   * @param  {object} hierarchicalFacet\n   * @return {string} returns the hierarchicalFacet.separator or `>` as default\n   */ _getHierarchicalFacetSortBy: function(hierarchicalFacet) {\n        return hierarchicalFacet.sortBy || [\n            \"isRefined:desc\",\n            \"name:asc\"\n        ];\n    },\n    /**\n   * Helper function to get the hierarchicalFacet separator or the default one (`>`)\n   * @private\n   * @param  {object} hierarchicalFacet\n   * @return {string} returns the hierarchicalFacet.separator or `>` as default\n   */ _getHierarchicalFacetSeparator: function(hierarchicalFacet) {\n        return hierarchicalFacet.separator || \" > \";\n    },\n    /**\n   * Helper function to get the hierarchicalFacet prefix path or null\n   * @private\n   * @param  {object} hierarchicalFacet\n   * @return {string} returns the hierarchicalFacet.rootPath or null as default\n   */ _getHierarchicalRootPath: function(hierarchicalFacet) {\n        return hierarchicalFacet.rootPath || null;\n    },\n    /**\n   * Helper function to check if we show the parent level of the hierarchicalFacet\n   * @private\n   * @param  {object} hierarchicalFacet\n   * @return {string} returns the hierarchicalFacet.showParentLevel or true as default\n   */ _getHierarchicalShowParentLevel: function(hierarchicalFacet) {\n        if (typeof hierarchicalFacet.showParentLevel === \"boolean\") return hierarchicalFacet.showParentLevel;\n        return true;\n    },\n    /**\n   * Helper function to get the hierarchicalFacet by it's name\n   * @param  {string} hierarchicalFacetName\n   * @return {object} a hierarchicalFacet\n   */ getHierarchicalFacetByName: function(hierarchicalFacetName) {\n        return $18a18427f3d6914e$exports(this.hierarchicalFacets, function(f) {\n            return f.name === hierarchicalFacetName;\n        });\n    },\n    /**\n   * Get the current breadcrumb for a hierarchical facet, as an array\n   * @param  {string} facetName Hierarchical facet name\n   * @return {array.<string>} the path as an array of string\n   */ getHierarchicalFacetBreadcrumb: function(facetName) {\n        if (!this.isHierarchicalFacet(facetName)) return [];\n        var refinement = this.getHierarchicalRefinement(facetName)[0];\n        if (!refinement) return [];\n        var separator = this._getHierarchicalFacetSeparator(this.getHierarchicalFacetByName(facetName));\n        var path = refinement.split(separator);\n        return path.map(function(part) {\n            return part.trim();\n        });\n    },\n    toString: function() {\n        return JSON.stringify(this, null, 2);\n    }\n};\n/**\n * Callback used for clearRefinement method\n * @callback SearchParameters.clearCallback\n * @param {OperatorList|FacetList} value the value of the filter\n * @param {string} key the current attribute name\n * @param {string} type `numeric`, `disjunctiveFacet`, `conjunctiveFacet`, `hierarchicalFacet` or `exclude`\n * depending on the type of facet\n * @return {boolean} `true` if the element should be removed. `false` otherwise.\n */ $b98b552440c412c7$exports = $b98b552440c412c7$var$SearchParameters;\n\n\nvar $b9a4763f536f329f$exports = {};\n\"use strict\";\n\n\nvar $e49c9a312dceb9b5$exports = {};\n\"use strict\";\nfunction $e49c9a312dceb9b5$var$compareAscending(value, other) {\n    if (value !== other) {\n        var valIsDefined = value !== undefined;\n        var valIsNull = value === null;\n        var othIsDefined = other !== undefined;\n        var othIsNull = other === null;\n        if (!othIsNull && value > other || valIsNull && othIsDefined || !valIsDefined) return 1;\n        if (!valIsNull && value < other || othIsNull && valIsDefined || !othIsDefined) return -1;\n    }\n    return 0;\n}\n/**\n * @param {Array<object>} collection object with keys in attributes\n * @param {Array<string>} iteratees attributes\n * @param {Array<string>} orders asc | desc\n */ function $e49c9a312dceb9b5$var$orderBy(collection, iteratees, orders) {\n    if (!Array.isArray(collection)) return [];\n    if (!Array.isArray(orders)) orders = [];\n    var result = collection.map(function(value, index) {\n        return {\n            criteria: iteratees.map(function(iteratee) {\n                return value[iteratee];\n            }),\n            index: index,\n            value: value\n        };\n    });\n    result.sort(function comparer(object, other) {\n        var index = -1;\n        while(++index < object.criteria.length){\n            var res = $e49c9a312dceb9b5$var$compareAscending(object.criteria[index], other.criteria[index]);\n            if (res) {\n                if (index >= orders.length) return res;\n                if (orders[index] === \"desc\") return -res;\n                return res;\n            }\n        }\n        // This ensures a stable sort in V8 and other engines.\n        // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n        return object.index - other.index;\n    });\n    return result.map(function(res) {\n        return res.value;\n    });\n}\n$e49c9a312dceb9b5$exports = $e49c9a312dceb9b5$var$orderBy;\n\n\nvar $75eb274710432a4f$exports = {};\n\"use strict\";\n$75eb274710432a4f$exports = function compact(array) {\n    if (!Array.isArray(array)) return [];\n    return array.filter(Boolean);\n};\n\n\n\nvar $d38a2c9c99bdf9ed$exports = {};\n\"use strict\";\n// @MAJOR can be replaced by native Array#findIndex when we change support\n$d38a2c9c99bdf9ed$exports = function find(array, comparator) {\n    if (!Array.isArray(array)) return -1;\n    for(var i = 0; i < array.length; i++){\n        if (comparator(array[i])) return i;\n    }\n    return -1;\n};\n\n\nvar $42d739a744cbfc0c$exports = {};\n\"use strict\";\n\n/**\n * Transform sort format from user friendly notation to lodash format\n * @param {string[]} sortBy array of predicate of the form \"attribute:order\"\n * @param {string[]} [defaults] array of predicate of the form \"attribute:order\"\n * @return {array.<string[]>} array containing 2 elements : attributes, orders\n */ $42d739a744cbfc0c$exports = function formatSort(sortBy, defaults) {\n    var defaultInstructions = (defaults || []).map(function(sort) {\n        return sort.split(\":\");\n    });\n    return sortBy.reduce(function preparePredicate(out, sort) {\n        var sortInstruction = sort.split(\":\");\n        var matchingDefault = $18a18427f3d6914e$exports(defaultInstructions, function(defaultInstruction) {\n            return defaultInstruction[0] === sortInstruction[0];\n        });\n        if (sortInstruction.length > 1 || !matchingDefault) {\n            out[0].push(sortInstruction[0]);\n            out[1].push(sortInstruction[1]);\n            return out;\n        }\n        out[0].push(matchingDefault[0]);\n        out[1].push(matchingDefault[1]);\n        return out;\n    }, [\n        [],\n        []\n    ]);\n};\n\n\nvar $aaf73120eb76b950$exports = {};\n\"use strict\";\n/**\n * Replaces a leading - with \\-\n * @private\n * @param {any} value the facet value to replace\n * @returns any\n */ function $aaf73120eb76b950$var$escapeFacetValue(value) {\n    if (typeof value !== \"string\") return value;\n    return String(value).replace(/^-/, \"\\\\-\");\n}\n/**\n * Replaces a leading \\- with -\n * @private\n * @param {any} value the escaped facet value\n * @returns any\n */ function $aaf73120eb76b950$var$unescapeFacetValue(value) {\n    if (typeof value !== \"string\") return value;\n    return value.replace(/^\\\\-/, \"-\");\n}\n$aaf73120eb76b950$exports = {\n    escapeFacetValue: $aaf73120eb76b950$var$escapeFacetValue,\n    unescapeFacetValue: $aaf73120eb76b950$var$unescapeFacetValue\n};\n\n\nvar $b9a4763f536f329f$var$escapeFacetValue = $aaf73120eb76b950$exports.escapeFacetValue;\nvar $b9a4763f536f329f$var$unescapeFacetValue = $aaf73120eb76b950$exports.unescapeFacetValue;\nvar $6b16ac2b1f94f8b3$exports = {};\n\"use strict\";\n$6b16ac2b1f94f8b3$exports = $6b16ac2b1f94f8b3$var$generateTrees;\n\n\n\n\nvar $6b16ac2b1f94f8b3$var$escapeFacetValue = $aaf73120eb76b950$exports.escapeFacetValue;\nvar $6b16ac2b1f94f8b3$var$unescapeFacetValue = $aaf73120eb76b950$exports.unescapeFacetValue;\nfunction $6b16ac2b1f94f8b3$var$generateTrees(state) {\n    return function generate(hierarchicalFacetResult, hierarchicalFacetIndex) {\n        var hierarchicalFacet = state.hierarchicalFacets[hierarchicalFacetIndex];\n        var hierarchicalFacetRefinement = state.hierarchicalFacetsRefinements[hierarchicalFacet.name] && state.hierarchicalFacetsRefinements[hierarchicalFacet.name][0] || \"\";\n        var hierarchicalSeparator = state._getHierarchicalFacetSeparator(hierarchicalFacet);\n        var hierarchicalRootPath = state._getHierarchicalRootPath(hierarchicalFacet);\n        var hierarchicalShowParentLevel = state._getHierarchicalShowParentLevel(hierarchicalFacet);\n        var sortBy = $42d739a744cbfc0c$exports(state._getHierarchicalFacetSortBy(hierarchicalFacet));\n        var rootExhaustive = hierarchicalFacetResult.every(function(facetResult) {\n            return facetResult.exhaustive;\n        });\n        var generateTreeFn = $6b16ac2b1f94f8b3$var$generateHierarchicalTree(sortBy, hierarchicalSeparator, hierarchicalRootPath, hierarchicalShowParentLevel, hierarchicalFacetRefinement);\n        var results = hierarchicalFacetResult;\n        if (hierarchicalRootPath) results = hierarchicalFacetResult.slice(hierarchicalRootPath.split(hierarchicalSeparator).length);\n        return results.reduce(generateTreeFn, {\n            name: state.hierarchicalFacets[hierarchicalFacetIndex].name,\n            count: null,\n            isRefined: true,\n            path: null,\n            escapedValue: null,\n            exhaustive: rootExhaustive,\n            data: null\n        });\n    };\n}\nfunction $6b16ac2b1f94f8b3$var$generateHierarchicalTree(sortBy, hierarchicalSeparator, hierarchicalRootPath, hierarchicalShowParentLevel, currentRefinement) {\n    return function generateTree(hierarchicalTree, hierarchicalFacetResult, currentHierarchicalLevel) {\n        var parent = hierarchicalTree;\n        if (currentHierarchicalLevel > 0) {\n            var level = 0;\n            parent = hierarchicalTree;\n            while(level < currentHierarchicalLevel){\n                /**\n         * @type {object[]]} hierarchical data\n         */ var data = parent && Array.isArray(parent.data) ? parent.data : [];\n                parent = $18a18427f3d6914e$exports(data, function(subtree) {\n                    return subtree.isRefined;\n                });\n                level++;\n            }\n        }\n        // we found a refined parent, let's add current level data under it\n        if (parent) {\n            // filter values in case an object has multiple categories:\n            //   {\n            //     categories: {\n            //       level0: ['beers', 'bières'],\n            //       level1: ['beers > IPA', 'bières > Belges']\n            //     }\n            //   }\n            //\n            // If parent refinement is `beers`, then we do not want to have `bières > Belges`\n            // showing up\n            var picked = Object.keys(hierarchicalFacetResult.data).map(function(facetValue) {\n                return [\n                    facetValue,\n                    hierarchicalFacetResult.data[facetValue]\n                ];\n            }).filter(function(tuple) {\n                var facetValue = tuple[0];\n                return $6b16ac2b1f94f8b3$var$onlyMatchingTree(facetValue, parent.path || hierarchicalRootPath, currentRefinement, hierarchicalSeparator, hierarchicalRootPath, hierarchicalShowParentLevel);\n            });\n            parent.data = $e49c9a312dceb9b5$exports(picked.map(function(tuple) {\n                var facetValue = tuple[0];\n                var facetCount = tuple[1];\n                return $6b16ac2b1f94f8b3$var$format(facetCount, facetValue, hierarchicalSeparator, $6b16ac2b1f94f8b3$var$unescapeFacetValue(currentRefinement), hierarchicalFacetResult.exhaustive);\n            }), sortBy[0], sortBy[1]);\n        }\n        return hierarchicalTree;\n    };\n}\nfunction $6b16ac2b1f94f8b3$var$onlyMatchingTree(facetValue, parentPath, currentRefinement, hierarchicalSeparator, hierarchicalRootPath, hierarchicalShowParentLevel) {\n    // we want the facetValue is a child of hierarchicalRootPath\n    if (hierarchicalRootPath && (facetValue.indexOf(hierarchicalRootPath) !== 0 || hierarchicalRootPath === facetValue)) return false;\n    // we always want root levels (only when there is no prefix path)\n    return !hierarchicalRootPath && facetValue.indexOf(hierarchicalSeparator) === -1 || // if there is a rootPath, being root level mean 1 level under rootPath\n    hierarchicalRootPath && facetValue.split(hierarchicalSeparator).length - hierarchicalRootPath.split(hierarchicalSeparator).length === 1 || // if current refinement is a root level and current facetValue is a root level,\n    // keep the facetValue\n    facetValue.indexOf(hierarchicalSeparator) === -1 && currentRefinement.indexOf(hierarchicalSeparator) === -1 || // currentRefinement is a child of the facet value\n    currentRefinement.indexOf(facetValue) === 0 || // facetValue is a child of the current parent, add it\n    facetValue.indexOf(parentPath + hierarchicalSeparator) === 0 && (hierarchicalShowParentLevel || facetValue.indexOf(currentRefinement) === 0);\n}\nfunction $6b16ac2b1f94f8b3$var$format(facetCount, facetValue, hierarchicalSeparator, currentRefinement, exhaustive) {\n    var parts = facetValue.split(hierarchicalSeparator);\n    return {\n        name: parts[parts.length - 1].trim(),\n        path: facetValue,\n        escapedValue: $6b16ac2b1f94f8b3$var$escapeFacetValue(facetValue),\n        count: facetCount,\n        isRefined: currentRefinement === facetValue || currentRefinement.indexOf(facetValue + hierarchicalSeparator) === 0,\n        exhaustive: exhaustive,\n        data: null\n    };\n}\n\n\n/**\n * @typedef SearchResults.Facet\n * @type {object}\n * @property {string} name name of the attribute in the record\n * @property {object} data the faceting data: value, number of entries\n * @property {object} stats undefined unless facet_stats is retrieved from algolia\n */ /**\n * @typedef SearchResults.HierarchicalFacet\n * @type {object}\n * @property {string} name name of the current value given the hierarchical level, trimmed.\n * If root node, you get the facet name\n * @property {number} count number of objects matching this hierarchical value\n * @property {string} path the current hierarchical value full path\n * @property {boolean} isRefined `true` if the current value was refined, `false` otherwise\n * @property {HierarchicalFacet[]} data sub values for the current level\n */ /**\n * @typedef SearchResults.FacetValue\n * @type {object}\n * @property {string} name the facet value itself\n * @property {number} count times this facet appears in the results\n * @property {boolean} isRefined is the facet currently selected\n * @property {boolean} isExcluded is the facet currently excluded (only for conjunctive facets)\n */ /**\n * @typedef Refinement\n * @type {object}\n * @property {string} type the type of filter used:\n * `numeric`, `facet`, `exclude`, `disjunctive`, `hierarchical`\n * @property {string} attributeName name of the attribute used for filtering\n * @property {string} name the value of the filter\n * @property {number} numericValue the value as a number. Only for numeric filters.\n * @property {string} operator the operator used. Only for numeric filters.\n * @property {number} count the number of computed hits for this filter. Only on facets.\n * @property {boolean} exhaustive if the count is exhaustive\n */ /**\n * @param {string[]} attributes\n */ function $b9a4763f536f329f$var$getIndices(attributes) {\n    var indices = {};\n    attributes.forEach(function(val, idx) {\n        indices[val] = idx;\n    });\n    return indices;\n}\nfunction $b9a4763f536f329f$var$assignFacetStats(dest, facetStats, key) {\n    if (facetStats && facetStats[key]) dest.stats = facetStats[key];\n}\n/**\n * @typedef {Object} HierarchicalFacet\n * @property {string} name\n * @property {string[]} attributes\n */ /**\n * @param {HierarchicalFacet[]} hierarchicalFacets\n * @param {string} hierarchicalAttributeName\n */ function $b9a4763f536f329f$var$findMatchingHierarchicalFacetFromAttributeName(hierarchicalFacets, hierarchicalAttributeName) {\n    return $18a18427f3d6914e$exports(hierarchicalFacets, function facetKeyMatchesAttribute(hierarchicalFacet) {\n        var facetNames = hierarchicalFacet.attributes || [];\n        return facetNames.indexOf(hierarchicalAttributeName) > -1;\n    });\n}\n/*eslint-disable */ /**\n * Constructor for SearchResults\n * @class\n * @classdesc SearchResults contains the results of a query to Algolia using the\n * {@link AlgoliaSearchHelper}.\n * @param {SearchParameters} state state that led to the response\n * @param {array.<object>} results the results from algolia client\n * @example <caption>SearchResults of the first query in\n * <a href=\"http://demos.algolia.com/instant-search-demo\">the instant search demo</a></caption>\n{\n   \"hitsPerPage\": 10,\n   \"processingTimeMS\": 2,\n   \"facets\": [\n      {\n         \"name\": \"type\",\n         \"data\": {\n            \"HardGood\": 6627,\n            \"BlackTie\": 550,\n            \"Music\": 665,\n            \"Software\": 131,\n            \"Game\": 456,\n            \"Movie\": 1571\n         },\n         \"exhaustive\": false\n      },\n      {\n         \"exhaustive\": false,\n         \"data\": {\n            \"Free shipping\": 5507\n         },\n         \"name\": \"shipping\"\n      }\n  ],\n   \"hits\": [\n      {\n         \"thumbnailImage\": \"http://img.bbystatic.com/BestBuy_US/images/products/1688/1688832_54x108_s.gif\",\n         \"_highlightResult\": {\n            \"shortDescription\": {\n               \"matchLevel\": \"none\",\n               \"value\": \"Safeguard your PC, Mac, Android and iOS devices with comprehensive Internet protection\",\n               \"matchedWords\": []\n            },\n            \"category\": {\n               \"matchLevel\": \"none\",\n               \"value\": \"Computer Security Software\",\n               \"matchedWords\": []\n            },\n            \"manufacturer\": {\n               \"matchedWords\": [],\n               \"value\": \"Webroot\",\n               \"matchLevel\": \"none\"\n            },\n            \"name\": {\n               \"value\": \"Webroot SecureAnywhere Internet Security (3-Device) (1-Year Subscription) - Mac/Windows\",\n               \"matchedWords\": [],\n               \"matchLevel\": \"none\"\n            }\n         },\n         \"image\": \"http://img.bbystatic.com/BestBuy_US/images/products/1688/1688832_105x210_sc.jpg\",\n         \"shipping\": \"Free shipping\",\n         \"bestSellingRank\": 4,\n         \"shortDescription\": \"Safeguard your PC, Mac, Android and iOS devices with comprehensive Internet protection\",\n         \"url\": \"http://www.bestbuy.com/site/webroot-secureanywhere-internet-security-3-devi…d=1219060687969&skuId=1688832&cmp=RMX&ky=2d3GfEmNIzjA0vkzveHdZEBgpPCyMnLTJ\",\n         \"name\": \"Webroot SecureAnywhere Internet Security (3-Device) (1-Year Subscription) - Mac/Windows\",\n         \"category\": \"Computer Security Software\",\n         \"salePrice_range\": \"1 - 50\",\n         \"objectID\": \"1688832\",\n         \"type\": \"Software\",\n         \"customerReviewCount\": 5980,\n         \"salePrice\": 49.99,\n         \"manufacturer\": \"Webroot\"\n      },\n      ....\n  ],\n   \"nbHits\": 10000,\n   \"disjunctiveFacets\": [\n      {\n         \"exhaustive\": false,\n         \"data\": {\n            \"5\": 183,\n            \"12\": 112,\n            \"7\": 149,\n            ...\n         },\n         \"name\": \"customerReviewCount\",\n         \"stats\": {\n            \"max\": 7461,\n            \"avg\": 157.939,\n            \"min\": 1\n         }\n      },\n      {\n         \"data\": {\n            \"Printer Ink\": 142,\n            \"Wireless Speakers\": 60,\n            \"Point & Shoot Cameras\": 48,\n            ...\n         },\n         \"name\": \"category\",\n         \"exhaustive\": false\n      },\n      {\n         \"exhaustive\": false,\n         \"data\": {\n            \"> 5000\": 2,\n            \"1 - 50\": 6524,\n            \"501 - 2000\": 566,\n            \"201 - 500\": 1501,\n            \"101 - 200\": 1360,\n            \"2001 - 5000\": 47\n         },\n         \"name\": \"salePrice_range\"\n      },\n      {\n         \"data\": {\n            \"Dynex™\": 202,\n            \"Insignia™\": 230,\n            \"PNY\": 72,\n            ...\n         },\n         \"name\": \"manufacturer\",\n         \"exhaustive\": false\n      }\n  ],\n   \"query\": \"\",\n   \"nbPages\": 100,\n   \"page\": 0,\n   \"index\": \"bestbuy\"\n}\n **/ /*eslint-enable */ function $b9a4763f536f329f$var$SearchResults(state, results, options) {\n    var mainSubResponse = results[0];\n    this._rawResults = results;\n    var self = this;\n    // https://www.algolia.com/doc/api-reference/api-methods/search/#response\n    Object.keys(mainSubResponse).forEach(function(key) {\n        self[key] = mainSubResponse[key];\n    });\n    // Make every key of the result options reachable from the instance\n    Object.keys(options || {}).forEach(function(key) {\n        self[key] = options[key];\n    });\n    /**\n   * query used to generate the results\n   * @name query\n   * @member {string}\n   * @memberof SearchResults\n   * @instance\n   */ /**\n   * The query as parsed by the engine given all the rules.\n   * @name parsedQuery\n   * @member {string}\n   * @memberof SearchResults\n   * @instance\n   */ /**\n   * all the records that match the search parameters. Each record is\n   * augmented with a new attribute `_highlightResult`\n   * which is an object keyed by attribute and with the following properties:\n   *  - `value` : the value of the facet highlighted (html)\n   *  - `matchLevel`: full, partial or none depending on how the query terms match\n   * @name hits\n   * @member {object[]}\n   * @memberof SearchResults\n   * @instance\n   */ /**\n   * index where the results come from\n   * @name index\n   * @member {string}\n   * @memberof SearchResults\n   * @instance\n   */ /**\n   * number of hits per page requested\n   * @name hitsPerPage\n   * @member {number}\n   * @memberof SearchResults\n   * @instance\n   */ /**\n   * total number of hits of this query on the index\n   * @name nbHits\n   * @member {number}\n   * @memberof SearchResults\n   * @instance\n   */ /**\n   * total number of pages with respect to the number of hits per page and the total number of hits\n   * @name nbPages\n   * @member {number}\n   * @memberof SearchResults\n   * @instance\n   */ /**\n   * current page\n   * @name page\n   * @member {number}\n   * @memberof SearchResults\n   * @instance\n   */ /**\n   * The position if the position was guessed by IP.\n   * @name aroundLatLng\n   * @member {string}\n   * @memberof SearchResults\n   * @instance\n   * @example \"48.8637,2.3615\",\n   */ /**\n   * The radius computed by Algolia.\n   * @name automaticRadius\n   * @member {string}\n   * @memberof SearchResults\n   * @instance\n   * @example \"126792922\",\n   */ /**\n   * String identifying the server used to serve this request.\n   *\n   * getRankingInfo needs to be set to `true` for this to be returned\n   *\n   * @name serverUsed\n   * @member {string}\n   * @memberof SearchResults\n   * @instance\n   * @example \"c7-use-2.algolia.net\",\n   */ /**\n   * Boolean that indicates if the computation of the counts did time out.\n   * @deprecated\n   * @name timeoutCounts\n   * @member {boolean}\n   * @memberof SearchResults\n   * @instance\n   */ /**\n   * Boolean that indicates if the computation of the hits did time out.\n   * @deprecated\n   * @name timeoutHits\n   * @member {boolean}\n   * @memberof SearchResults\n   * @instance\n   */ /**\n   * True if the counts of the facets is exhaustive\n   * @name exhaustiveFacetsCount\n   * @member {boolean}\n   * @memberof SearchResults\n   * @instance\n   */ /**\n   * True if the number of hits is exhaustive\n   * @name exhaustiveNbHits\n   * @member {boolean}\n   * @memberof SearchResults\n   * @instance\n   */ /**\n   * Contains the userData if they are set by a [query rule](https://www.algolia.com/doc/guides/query-rules/query-rules-overview/).\n   * @name userData\n   * @member {object[]}\n   * @memberof SearchResults\n   * @instance\n   */ /**\n   * queryID is the unique identifier of the query used to generate the current search results.\n   * This value is only available if the `clickAnalytics` search parameter is set to `true`.\n   * @name queryID\n   * @member {string}\n   * @memberof SearchResults\n   * @instance\n   */ /**\n   * sum of the processing time of all the queries\n   * @member {number}\n   */ this.processingTimeMS = results.reduce(function(sum, result) {\n        return result.processingTimeMS === undefined ? sum : sum + result.processingTimeMS;\n    }, 0);\n    /**\n   * disjunctive facets results\n   * @member {SearchResults.Facet[]}\n   */ this.disjunctiveFacets = [];\n    /**\n   * disjunctive facets results\n   * @member {SearchResults.HierarchicalFacet[]}\n   */ this.hierarchicalFacets = state.hierarchicalFacets.map(function initFutureTree() {\n        return [];\n    });\n    /**\n   * other facets results\n   * @member {SearchResults.Facet[]}\n   */ this.facets = [];\n    var disjunctiveFacets = state.getRefinedDisjunctiveFacets();\n    var facetsIndices = $b9a4763f536f329f$var$getIndices(state.facets);\n    var disjunctiveFacetsIndices = $b9a4763f536f329f$var$getIndices(state.disjunctiveFacets);\n    var nextDisjunctiveResult = 1;\n    // Since we send request only for disjunctive facets that have been refined,\n    // we get the facets information from the first, general, response.\n    var mainFacets = mainSubResponse.facets || {};\n    Object.keys(mainFacets).forEach(function(facetKey) {\n        var facetValueObject = mainFacets[facetKey];\n        var hierarchicalFacet = $b9a4763f536f329f$var$findMatchingHierarchicalFacetFromAttributeName(state.hierarchicalFacets, facetKey);\n        if (hierarchicalFacet) {\n            // Place the hierarchicalFacet data at the correct index depending on\n            // the attributes order that was defined at the helper initialization\n            var facetIndex = hierarchicalFacet.attributes.indexOf(facetKey);\n            var idxAttributeName = $d38a2c9c99bdf9ed$exports(state.hierarchicalFacets, function(f) {\n                return f.name === hierarchicalFacet.name;\n            });\n            self.hierarchicalFacets[idxAttributeName][facetIndex] = {\n                attribute: facetKey,\n                data: facetValueObject,\n                exhaustive: mainSubResponse.exhaustiveFacetsCount\n            };\n        } else {\n            var isFacetDisjunctive = state.disjunctiveFacets.indexOf(facetKey) !== -1;\n            var isFacetConjunctive = state.facets.indexOf(facetKey) !== -1;\n            var position;\n            if (isFacetDisjunctive) {\n                position = disjunctiveFacetsIndices[facetKey];\n                self.disjunctiveFacets[position] = {\n                    name: facetKey,\n                    data: facetValueObject,\n                    exhaustive: mainSubResponse.exhaustiveFacetsCount\n                };\n                $b9a4763f536f329f$var$assignFacetStats(self.disjunctiveFacets[position], mainSubResponse.facets_stats, facetKey);\n            }\n            if (isFacetConjunctive) {\n                position = facetsIndices[facetKey];\n                self.facets[position] = {\n                    name: facetKey,\n                    data: facetValueObject,\n                    exhaustive: mainSubResponse.exhaustiveFacetsCount\n                };\n                $b9a4763f536f329f$var$assignFacetStats(self.facets[position], mainSubResponse.facets_stats, facetKey);\n            }\n        }\n    });\n    // Make sure we do not keep holes within the hierarchical facets\n    this.hierarchicalFacets = $75eb274710432a4f$exports(this.hierarchicalFacets);\n    // aggregate the refined disjunctive facets\n    disjunctiveFacets.forEach(function(disjunctiveFacet) {\n        var result = results[nextDisjunctiveResult];\n        var facets = result && result.facets ? result.facets : {};\n        var hierarchicalFacet = state.getHierarchicalFacetByName(disjunctiveFacet);\n        // There should be only item in facets.\n        Object.keys(facets).forEach(function(dfacet) {\n            var facetResults = facets[dfacet];\n            var position;\n            if (hierarchicalFacet) {\n                position = $d38a2c9c99bdf9ed$exports(state.hierarchicalFacets, function(f) {\n                    return f.name === hierarchicalFacet.name;\n                });\n                var attributeIndex = $d38a2c9c99bdf9ed$exports(self.hierarchicalFacets[position], function(f) {\n                    return f.attribute === dfacet;\n                });\n                // previous refinements and no results so not able to find it\n                if (attributeIndex === -1) return;\n                self.hierarchicalFacets[position][attributeIndex].data = $5223709f7c606ea7$exports({}, self.hierarchicalFacets[position][attributeIndex].data, facetResults);\n            } else {\n                position = disjunctiveFacetsIndices[dfacet];\n                var dataFromMainRequest = mainSubResponse.facets && mainSubResponse.facets[dfacet] || {};\n                self.disjunctiveFacets[position] = {\n                    name: dfacet,\n                    data: $835decef46f26c5e$exports({}, facetResults, dataFromMainRequest),\n                    exhaustive: result.exhaustiveFacetsCount\n                };\n                $b9a4763f536f329f$var$assignFacetStats(self.disjunctiveFacets[position], result.facets_stats, dfacet);\n                if (state.disjunctiveFacetsRefinements[dfacet]) state.disjunctiveFacetsRefinements[dfacet].forEach(function(refinementValue) {\n                    // add the disjunctive refinements if it is no more retrieved\n                    if (!self.disjunctiveFacets[position].data[refinementValue] && state.disjunctiveFacetsRefinements[dfacet].indexOf($b9a4763f536f329f$var$unescapeFacetValue(refinementValue)) > -1) self.disjunctiveFacets[position].data[refinementValue] = 0;\n                });\n            }\n        });\n        nextDisjunctiveResult++;\n    });\n    // if we have some parent level values for hierarchical facets, merge them\n    state.getRefinedHierarchicalFacets().forEach(function(refinedFacet) {\n        var hierarchicalFacet = state.getHierarchicalFacetByName(refinedFacet);\n        var separator = state._getHierarchicalFacetSeparator(hierarchicalFacet);\n        var currentRefinement = state.getHierarchicalRefinement(refinedFacet);\n        // if we are already at a root refinement (or no refinement at all), there is no\n        // root level values request\n        if (currentRefinement.length === 0 || currentRefinement[0].split(separator).length < 2) return;\n        results.slice(nextDisjunctiveResult).forEach(function(result) {\n            var facets = result && result.facets ? result.facets : {};\n            Object.keys(facets).forEach(function(dfacet) {\n                var facetResults = facets[dfacet];\n                var position = $d38a2c9c99bdf9ed$exports(state.hierarchicalFacets, function(f) {\n                    return f.name === hierarchicalFacet.name;\n                });\n                var attributeIndex = $d38a2c9c99bdf9ed$exports(self.hierarchicalFacets[position], function(f) {\n                    return f.attribute === dfacet;\n                });\n                // previous refinements and no results so not able to find it\n                if (attributeIndex === -1) return;\n                // when we always get root levels, if the hits refinement is `beers > IPA` (count: 5),\n                // then the disjunctive values will be `beers` (count: 100),\n                // but we do not want to display\n                //   | beers (100)\n                //     > IPA (5)\n                // We want\n                //   | beers (5)\n                //     > IPA (5)\n                var defaultData = {};\n                if (currentRefinement.length > 0) {\n                    var root = currentRefinement[0].split(separator)[0];\n                    defaultData[root] = self.hierarchicalFacets[position][attributeIndex].data[root];\n                }\n                self.hierarchicalFacets[position][attributeIndex].data = $835decef46f26c5e$exports(defaultData, facetResults, self.hierarchicalFacets[position][attributeIndex].data);\n            });\n            nextDisjunctiveResult++;\n        });\n    });\n    // add the excludes\n    Object.keys(state.facetsExcludes).forEach(function(facetName) {\n        var excludes = state.facetsExcludes[facetName];\n        var position = facetsIndices[facetName];\n        self.facets[position] = {\n            name: facetName,\n            data: mainSubResponse.facets[facetName],\n            exhaustive: mainSubResponse.exhaustiveFacetsCount\n        };\n        excludes.forEach(function(facetValue) {\n            self.facets[position] = self.facets[position] || {\n                name: facetName\n            };\n            self.facets[position].data = self.facets[position].data || {};\n            self.facets[position].data[facetValue] = 0;\n        });\n    });\n    /**\n   * @type {Array}\n   */ this.hierarchicalFacets = this.hierarchicalFacets.map($6b16ac2b1f94f8b3$exports(state));\n    /**\n   * @type {Array}\n   */ this.facets = $75eb274710432a4f$exports(this.facets);\n    /**\n   * @type {Array}\n   */ this.disjunctiveFacets = $75eb274710432a4f$exports(this.disjunctiveFacets);\n    this._state = state;\n}\n/**\n * Get a facet object with its name\n * @deprecated\n * @param {string} name name of the faceted attribute\n * @return {SearchResults.Facet} the facet object\n */ $b9a4763f536f329f$var$SearchResults.prototype.getFacetByName = function(name) {\n    function predicate(facet) {\n        return facet.name === name;\n    }\n    return $18a18427f3d6914e$exports(this.facets, predicate) || $18a18427f3d6914e$exports(this.disjunctiveFacets, predicate) || $18a18427f3d6914e$exports(this.hierarchicalFacets, predicate);\n};\n/**\n * Get the facet values of a specified attribute from a SearchResults object.\n * @private\n * @param {SearchResults} results the search results to search in\n * @param {string} attribute name of the faceted attribute to search for\n * @return {array|object} facet values. For the hierarchical facets it is an object.\n */ function $b9a4763f536f329f$var$extractNormalizedFacetValues(results, attribute) {\n    function predicate(facet) {\n        return facet.name === attribute;\n    }\n    if (results._state.isConjunctiveFacet(attribute)) {\n        var facet = $18a18427f3d6914e$exports(results.facets, predicate);\n        if (!facet) return [];\n        return Object.keys(facet.data).map(function(name) {\n            var value = $b9a4763f536f329f$var$escapeFacetValue(name);\n            return {\n                name: name,\n                escapedValue: value,\n                count: facet.data[name],\n                isRefined: results._state.isFacetRefined(attribute, value),\n                isExcluded: results._state.isExcludeRefined(attribute, name)\n            };\n        });\n    } else if (results._state.isDisjunctiveFacet(attribute)) {\n        var disjunctiveFacet = $18a18427f3d6914e$exports(results.disjunctiveFacets, predicate);\n        if (!disjunctiveFacet) return [];\n        return Object.keys(disjunctiveFacet.data).map(function(name) {\n            var value = $b9a4763f536f329f$var$escapeFacetValue(name);\n            return {\n                name: name,\n                escapedValue: value,\n                count: disjunctiveFacet.data[name],\n                isRefined: results._state.isDisjunctiveFacetRefined(attribute, value)\n            };\n        });\n    } else if (results._state.isHierarchicalFacet(attribute)) return $18a18427f3d6914e$exports(results.hierarchicalFacets, predicate);\n}\n/**\n * Sort nodes of a hierarchical or disjunctive facet results\n * @private\n * @param {function} sortFn\n * @param {HierarchicalFacet|Array} node node upon which we want to apply the sort\n * @param {string[]} names attribute names\n * @param {number} [level=0] current index in the names array\n */ function $b9a4763f536f329f$var$recSort(sortFn, node, names, level) {\n    level = level || 0;\n    if (Array.isArray(node)) return sortFn(node, names[level]);\n    if (!node.data || node.data.length === 0) return node;\n    var children = node.data.map(function(childNode) {\n        return $b9a4763f536f329f$var$recSort(sortFn, childNode, names, level + 1);\n    });\n    var sortedChildren = sortFn(children, names[level]);\n    var newNode = $835decef46f26c5e$exports({\n        data: sortedChildren\n    }, node);\n    return newNode;\n}\n$b9a4763f536f329f$var$SearchResults.DEFAULT_SORT = [\n    \"isRefined:desc\",\n    \"count:desc\",\n    \"name:asc\"\n];\nfunction $b9a4763f536f329f$var$vanillaSortFn(order, data) {\n    return data.sort(order);\n}\n/**\n * @typedef FacetOrdering\n * @type {Object}\n * @property {string[]} [order]\n * @property {'count' | 'alpha' | 'hidden'} [sortRemainingBy]\n */ /**\n * Sorts facet arrays via their facet ordering\n * @param {Array} facetValues the values\n * @param {FacetOrdering} facetOrdering the ordering\n * @returns {Array}\n */ function $b9a4763f536f329f$var$sortViaFacetOrdering(facetValues, facetOrdering) {\n    var orderedFacets = [];\n    var remainingFacets = [];\n    var order = facetOrdering.order || [];\n    /**\n   * an object with the keys being the values in order, the values their index:\n   * ['one', 'two'] -> { one: 0, two: 1 }\n   */ var reverseOrder = order.reduce(function(acc, name, i) {\n        acc[name] = i;\n        return acc;\n    }, {});\n    facetValues.forEach(function(item) {\n        // hierarchical facets get sorted using their raw name\n        var name = item.path || item.name;\n        if (reverseOrder[name] !== undefined) orderedFacets[reverseOrder[name]] = item;\n        else remainingFacets.push(item);\n    });\n    orderedFacets = orderedFacets.filter(function(facet) {\n        return facet;\n    });\n    var sortRemainingBy = facetOrdering.sortRemainingBy;\n    var ordering;\n    if (sortRemainingBy === \"hidden\") return orderedFacets;\n    else if (sortRemainingBy === \"alpha\") ordering = [\n        [\n            \"path\",\n            \"name\"\n        ],\n        [\n            \"asc\",\n            \"asc\"\n        ]\n    ];\n    else ordering = [\n        [\n            \"count\"\n        ],\n        [\n            \"desc\"\n        ]\n    ];\n    return orderedFacets.concat($e49c9a312dceb9b5$exports(remainingFacets, ordering[0], ordering[1]));\n}\n/**\n * @param {SearchResults} results the search results class\n * @param {string} attribute the attribute to retrieve ordering of\n * @returns {FacetOrdering=}\n */ function $b9a4763f536f329f$var$getFacetOrdering(results, attribute) {\n    return results.renderingContent && results.renderingContent.facetOrdering && results.renderingContent.facetOrdering.values && results.renderingContent.facetOrdering.values[attribute];\n}\n/**\n * Get a the list of values for a given facet attribute. Those values are sorted\n * refinement first, descending count (bigger value on top), and name ascending\n * (alphabetical order). The sort formula can overridden using either string based\n * predicates or a function.\n *\n * This method will return all the values returned by the Algolia engine plus all\n * the values already refined. This means that it can happen that the\n * `maxValuesPerFacet` [configuration](https://www.algolia.com/doc/rest-api/search#param-maxValuesPerFacet)\n * might not be respected if you have facet values that are already refined.\n * @param {string} attribute attribute name\n * @param {object} opts configuration options.\n * @param {boolean} [opts.facetOrdering]\n * Force the use of facetOrdering from the result if a sortBy is present. If\n * sortBy isn't present, facetOrdering will be used automatically.\n * @param {Array.<string> | function} opts.sortBy\n * When using strings, it consists of\n * the name of the [FacetValue](#SearchResults.FacetValue) or the\n * [HierarchicalFacet](#SearchResults.HierarchicalFacet) attributes with the\n * order (`asc` or `desc`). For example to order the value by count, the\n * argument would be `['count:asc']`.\n *\n * If only the attribute name is specified, the ordering defaults to the one\n * specified in the default value for this attribute.\n *\n * When not specified, the order is\n * ascending.  This parameter can also be a function which takes two facet\n * values and should return a number, 0 if equal, 1 if the first argument is\n * bigger or -1 otherwise.\n *\n * The default value for this attribute `['isRefined:desc', 'count:desc', 'name:asc']`\n * @return {FacetValue[]|HierarchicalFacet|undefined} depending on the type of facet of\n * the attribute requested (hierarchical, disjunctive or conjunctive)\n * @example\n * helper.on('result', function(event){\n *   //get values ordered only by name ascending using the string predicate\n *   event.results.getFacetValues('city', {sortBy: ['name:asc']});\n *   //get values  ordered only by count ascending using a function\n *   event.results.getFacetValues('city', {\n *     // this is equivalent to ['count:asc']\n *     sortBy: function(a, b) {\n *       if (a.count === b.count) return 0;\n *       if (a.count > b.count)   return 1;\n *       if (b.count > a.count)   return -1;\n *     }\n *   });\n * });\n */ $b9a4763f536f329f$var$SearchResults.prototype.getFacetValues = function(attribute, opts) {\n    var facetValues = $b9a4763f536f329f$var$extractNormalizedFacetValues(this, attribute);\n    if (!facetValues) return undefined;\n    var options = $835decef46f26c5e$exports({}, opts, {\n        sortBy: $b9a4763f536f329f$var$SearchResults.DEFAULT_SORT,\n        // if no sortBy is given, attempt to sort based on facetOrdering\n        // if it is given, we still allow to sort via facet ordering first\n        facetOrdering: !(opts && opts.sortBy)\n    });\n    var results = this;\n    var attributes;\n    if (Array.isArray(facetValues)) attributes = [\n        attribute\n    ];\n    else {\n        var config = results._state.getHierarchicalFacetByName(facetValues.name);\n        attributes = config.attributes;\n    }\n    return $b9a4763f536f329f$var$recSort(function(data, facetName) {\n        if (options.facetOrdering) {\n            var facetOrdering = $b9a4763f536f329f$var$getFacetOrdering(results, facetName);\n            if (Boolean(facetOrdering)) return $b9a4763f536f329f$var$sortViaFacetOrdering(data, facetOrdering);\n        }\n        if (Array.isArray(options.sortBy)) {\n            var order = $42d739a744cbfc0c$exports(options.sortBy, $b9a4763f536f329f$var$SearchResults.DEFAULT_SORT);\n            return $e49c9a312dceb9b5$exports(data, order[0], order[1]);\n        } else if (typeof options.sortBy === \"function\") return $b9a4763f536f329f$var$vanillaSortFn(options.sortBy, data);\n        throw new Error(\"options.sortBy is optional but if defined it must be either an array of string (predicates) or a sorting function\");\n    }, facetValues, attributes);\n};\n/**\n * Returns the facet stats if attribute is defined and the facet contains some.\n * Otherwise returns undefined.\n * @param {string} attribute name of the faceted attribute\n * @return {object} The stats of the facet\n */ $b9a4763f536f329f$var$SearchResults.prototype.getFacetStats = function(attribute) {\n    if (this._state.isConjunctiveFacet(attribute)) return $b9a4763f536f329f$var$getFacetStatsIfAvailable(this.facets, attribute);\n    else if (this._state.isDisjunctiveFacet(attribute)) return $b9a4763f536f329f$var$getFacetStatsIfAvailable(this.disjunctiveFacets, attribute);\n    return undefined;\n};\n/**\n * @typedef {Object} FacetListItem\n * @property {string} name\n */ /**\n * @param {FacetListItem[]} facetList (has more items, but enough for here)\n * @param {string} facetName\n */ function $b9a4763f536f329f$var$getFacetStatsIfAvailable(facetList, facetName) {\n    var data = $18a18427f3d6914e$exports(facetList, function(facet) {\n        return facet.name === facetName;\n    });\n    return data && data.stats;\n}\n/**\n * Returns all refinements for all filters + tags. It also provides\n * additional information: count and exhaustiveness for each filter.\n *\n * See the [refinement type](#Refinement) for an exhaustive view of the available\n * data.\n *\n * Note that for a numeric refinement, results are grouped per operator, this\n * means that it will return responses for operators which are empty.\n *\n * @return {Array.<Refinement>} all the refinements\n */ $b9a4763f536f329f$var$SearchResults.prototype.getRefinements = function() {\n    var state = this._state;\n    var results = this;\n    var res = [];\n    Object.keys(state.facetsRefinements).forEach(function(attributeName) {\n        state.facetsRefinements[attributeName].forEach(function(name) {\n            res.push($b9a4763f536f329f$var$getRefinement(state, \"facet\", attributeName, name, results.facets));\n        });\n    });\n    Object.keys(state.facetsExcludes).forEach(function(attributeName) {\n        state.facetsExcludes[attributeName].forEach(function(name) {\n            res.push($b9a4763f536f329f$var$getRefinement(state, \"exclude\", attributeName, name, results.facets));\n        });\n    });\n    Object.keys(state.disjunctiveFacetsRefinements).forEach(function(attributeName) {\n        state.disjunctiveFacetsRefinements[attributeName].forEach(function(name) {\n            res.push($b9a4763f536f329f$var$getRefinement(state, \"disjunctive\", attributeName, name, results.disjunctiveFacets));\n        });\n    });\n    Object.keys(state.hierarchicalFacetsRefinements).forEach(function(attributeName) {\n        state.hierarchicalFacetsRefinements[attributeName].forEach(function(name) {\n            res.push($b9a4763f536f329f$var$getHierarchicalRefinement(state, attributeName, name, results.hierarchicalFacets));\n        });\n    });\n    Object.keys(state.numericRefinements).forEach(function(attributeName) {\n        var operators = state.numericRefinements[attributeName];\n        Object.keys(operators).forEach(function(operator) {\n            operators[operator].forEach(function(value) {\n                res.push({\n                    type: \"numeric\",\n                    attributeName: attributeName,\n                    name: value,\n                    numericValue: value,\n                    operator: operator\n                });\n            });\n        });\n    });\n    state.tagRefinements.forEach(function(name) {\n        res.push({\n            type: \"tag\",\n            attributeName: \"_tags\",\n            name: name\n        });\n    });\n    return res;\n};\n/**\n * @typedef {Object} Facet\n * @property {string} name\n * @property {Object} data\n * @property {boolean} exhaustive\n */ /**\n * @param {*} state\n * @param {*} type\n * @param {string} attributeName\n * @param {*} name\n * @param {Facet[]} resultsFacets\n */ function $b9a4763f536f329f$var$getRefinement(state, type, attributeName, name, resultsFacets) {\n    var facet = $18a18427f3d6914e$exports(resultsFacets, function(f) {\n        return f.name === attributeName;\n    });\n    var count = facet && facet.data && facet.data[name] ? facet.data[name] : 0;\n    var exhaustive = facet && facet.exhaustive || false;\n    return {\n        type: type,\n        attributeName: attributeName,\n        name: name,\n        count: count,\n        exhaustive: exhaustive\n    };\n}\n/**\n * @param {*} state\n * @param {string} attributeName\n * @param {*} name\n * @param {Facet[]} resultsFacets\n */ function $b9a4763f536f329f$var$getHierarchicalRefinement(state, attributeName, name, resultsFacets) {\n    var facetDeclaration = state.getHierarchicalFacetByName(attributeName);\n    var separator = state._getHierarchicalFacetSeparator(facetDeclaration);\n    var split = name.split(separator);\n    var rootFacet = $18a18427f3d6914e$exports(resultsFacets, function(facet) {\n        return facet.name === attributeName;\n    });\n    var facet = split.reduce(function(intermediateFacet, part) {\n        var newFacet = intermediateFacet && $18a18427f3d6914e$exports(intermediateFacet.data, function(f) {\n            return f.name === part;\n        });\n        return newFacet !== undefined ? newFacet : intermediateFacet;\n    }, rootFacet);\n    var count = facet && facet.count || 0;\n    var exhaustive = facet && facet.exhaustive || false;\n    var path = facet && facet.path || \"\";\n    return {\n        type: \"hierarchical\",\n        attributeName: attributeName,\n        name: path,\n        count: count,\n        exhaustive: exhaustive\n    };\n}\n$b9a4763f536f329f$exports = $b9a4763f536f329f$var$SearchResults;\n\n\nvar $b57af9a08b47e48e$exports = {};\n\"use strict\";\nvar $d2f3ec49777c2f55$exports = {};\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\nfunction $d2f3ec49777c2f55$var$EventEmitter() {\n    this._events = this._events || {};\n    this._maxListeners = this._maxListeners || undefined;\n}\n$d2f3ec49777c2f55$exports = $d2f3ec49777c2f55$var$EventEmitter;\n// Backwards-compat with node 0.10.x\n// EventEmitter.EventEmitter = EventEmitter;\n$d2f3ec49777c2f55$var$EventEmitter.prototype._events = undefined;\n$d2f3ec49777c2f55$var$EventEmitter.prototype._maxListeners = undefined;\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\n$d2f3ec49777c2f55$var$EventEmitter.defaultMaxListeners = 10;\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\n$d2f3ec49777c2f55$var$EventEmitter.prototype.setMaxListeners = function(n) {\n    if (!$d2f3ec49777c2f55$var$isNumber(n) || n < 0 || isNaN(n)) throw TypeError(\"n must be a positive number\");\n    this._maxListeners = n;\n    return this;\n};\n$d2f3ec49777c2f55$var$EventEmitter.prototype.emit = function(type) {\n    var er, handler, len, args, i, listeners;\n    if (!this._events) this._events = {};\n    // If there is no 'error' event listener then throw.\n    if (type === \"error\") {\n        if (!this._events.error || $d2f3ec49777c2f55$var$isObject(this._events.error) && !this._events.error.length) {\n            er = arguments[1];\n            if (er instanceof Error) throw er; // Unhandled 'error' event\n            else {\n                // At least give some kind of context to the user\n                var err = new Error('Uncaught, unspecified \"error\" event. (' + er + \")\");\n                err.context = er;\n                throw err;\n            }\n        }\n    }\n    handler = this._events[type];\n    if ($d2f3ec49777c2f55$var$isUndefined(handler)) return false;\n    if ($d2f3ec49777c2f55$var$isFunction(handler)) switch(arguments.length){\n        // fast cases\n        case 1:\n            handler.call(this);\n            break;\n        case 2:\n            handler.call(this, arguments[1]);\n            break;\n        case 3:\n            handler.call(this, arguments[1], arguments[2]);\n            break;\n        // slower\n        default:\n            args = Array.prototype.slice.call(arguments, 1);\n            handler.apply(this, args);\n    }\n    else if ($d2f3ec49777c2f55$var$isObject(handler)) {\n        args = Array.prototype.slice.call(arguments, 1);\n        listeners = handler.slice();\n        len = listeners.length;\n        for(i = 0; i < len; i++)listeners[i].apply(this, args);\n    }\n    return true;\n};\n$d2f3ec49777c2f55$var$EventEmitter.prototype.addListener = function(type, listener) {\n    var m;\n    if (!$d2f3ec49777c2f55$var$isFunction(listener)) throw TypeError(\"listener must be a function\");\n    if (!this._events) this._events = {};\n    // To avoid recursion in the case that type === \"newListener\"! Before\n    // adding it to the listeners, first emit \"newListener\".\n    if (this._events.newListener) this.emit(\"newListener\", type, $d2f3ec49777c2f55$var$isFunction(listener.listener) ? listener.listener : listener);\n    if (!this._events[type]) // Optimize the case of one listener. Don't need the extra array object.\n    this._events[type] = listener;\n    else if ($d2f3ec49777c2f55$var$isObject(this._events[type])) // If we've already got an array, just append.\n    this._events[type].push(listener);\n    else // Adding the second element, need to change to array.\n    this._events[type] = [\n        this._events[type],\n        listener\n    ];\n    // Check for listener leak\n    if ($d2f3ec49777c2f55$var$isObject(this._events[type]) && !this._events[type].warned) {\n        if (!$d2f3ec49777c2f55$var$isUndefined(this._maxListeners)) m = this._maxListeners;\n        else m = $d2f3ec49777c2f55$var$EventEmitter.defaultMaxListeners;\n        if (m && m > 0 && this._events[type].length > m) {\n            this._events[type].warned = true;\n            console.error(\"(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.\", this._events[type].length);\n            if (typeof console.trace === \"function\") // not supported in IE 10\n            console.trace();\n        }\n    }\n    return this;\n};\n$d2f3ec49777c2f55$var$EventEmitter.prototype.on = $d2f3ec49777c2f55$var$EventEmitter.prototype.addListener;\n$d2f3ec49777c2f55$var$EventEmitter.prototype.once = function(type, listener) {\n    if (!$d2f3ec49777c2f55$var$isFunction(listener)) throw TypeError(\"listener must be a function\");\n    var fired = false;\n    function g() {\n        this.removeListener(type, g);\n        if (!fired) {\n            fired = true;\n            listener.apply(this, arguments);\n        }\n    }\n    g.listener = listener;\n    this.on(type, g);\n    return this;\n};\n// emits a 'removeListener' event iff the listener was removed\n$d2f3ec49777c2f55$var$EventEmitter.prototype.removeListener = function(type, listener) {\n    var list, position, length, i;\n    if (!$d2f3ec49777c2f55$var$isFunction(listener)) throw TypeError(\"listener must be a function\");\n    if (!this._events || !this._events[type]) return this;\n    list = this._events[type];\n    length = list.length;\n    position = -1;\n    if (list === listener || $d2f3ec49777c2f55$var$isFunction(list.listener) && list.listener === listener) {\n        delete this._events[type];\n        if (this._events.removeListener) this.emit(\"removeListener\", type, listener);\n    } else if ($d2f3ec49777c2f55$var$isObject(list)) {\n        for(i = length; i-- > 0;)if (list[i] === listener || list[i].listener && list[i].listener === listener) {\n            position = i;\n            break;\n        }\n        if (position < 0) return this;\n        if (list.length === 1) {\n            list.length = 0;\n            delete this._events[type];\n        } else list.splice(position, 1);\n        if (this._events.removeListener) this.emit(\"removeListener\", type, listener);\n    }\n    return this;\n};\n$d2f3ec49777c2f55$var$EventEmitter.prototype.removeAllListeners = function(type) {\n    var key, listeners;\n    if (!this._events) return this;\n    // not listening for removeListener, no need to emit\n    if (!this._events.removeListener) {\n        if (arguments.length === 0) this._events = {};\n        else if (this._events[type]) delete this._events[type];\n        return this;\n    }\n    // emit removeListener for all listeners on all events\n    if (arguments.length === 0) {\n        for(key in this._events){\n            if (key === \"removeListener\") continue;\n            this.removeAllListeners(key);\n        }\n        this.removeAllListeners(\"removeListener\");\n        this._events = {};\n        return this;\n    }\n    listeners = this._events[type];\n    if ($d2f3ec49777c2f55$var$isFunction(listeners)) this.removeListener(type, listeners);\n    else if (listeners) // LIFO order\n    while(listeners.length)this.removeListener(type, listeners[listeners.length - 1]);\n    delete this._events[type];\n    return this;\n};\n$d2f3ec49777c2f55$var$EventEmitter.prototype.listeners = function(type) {\n    var ret;\n    if (!this._events || !this._events[type]) ret = [];\n    else if ($d2f3ec49777c2f55$var$isFunction(this._events[type])) ret = [\n        this._events[type]\n    ];\n    else ret = this._events[type].slice();\n    return ret;\n};\n$d2f3ec49777c2f55$var$EventEmitter.prototype.listenerCount = function(type) {\n    if (this._events) {\n        var evlistener = this._events[type];\n        if ($d2f3ec49777c2f55$var$isFunction(evlistener)) return 1;\n        else if (evlistener) return evlistener.length;\n    }\n    return 0;\n};\n$d2f3ec49777c2f55$var$EventEmitter.listenerCount = function(emitter, type) {\n    return emitter.listenerCount(type);\n};\nfunction $d2f3ec49777c2f55$var$isFunction(arg) {\n    return typeof arg === \"function\";\n}\nfunction $d2f3ec49777c2f55$var$isNumber(arg) {\n    return typeof arg === \"number\";\n}\nfunction $d2f3ec49777c2f55$var$isObject(arg) {\n    return typeof arg === \"object\" && arg !== null;\n}\nfunction $d2f3ec49777c2f55$var$isUndefined(arg) {\n    return arg === void 0;\n}\n\n\nvar $6c0c921167d16aa0$exports = {};\n\"use strict\";\nfunction $6c0c921167d16aa0$var$inherits(ctor, superCtor) {\n    ctor.prototype = Object.create(superCtor.prototype, {\n        constructor: {\n            value: ctor,\n            enumerable: false,\n            writable: true,\n            configurable: true\n        }\n    });\n}\n$6c0c921167d16aa0$exports = $6c0c921167d16aa0$var$inherits;\n\n\n/**\n * A DerivedHelper is a way to create sub requests to\n * Algolia from a main helper.\n * @class\n * @classdesc The DerivedHelper provides an event based interface for search callbacks:\n *  - search: when a search is triggered using the `search()` method.\n *  - result: when the response is retrieved from Algolia and is processed.\n *    This event contains a {@link SearchResults} object and the\n *    {@link SearchParameters} corresponding to this answer.\n */ function $b57af9a08b47e48e$var$DerivedHelper(mainHelper, fn) {\n    this.main = mainHelper;\n    this.fn = fn;\n    this.lastResults = null;\n}\n$6c0c921167d16aa0$exports($b57af9a08b47e48e$var$DerivedHelper, $d2f3ec49777c2f55$exports);\n/**\n * Detach this helper from the main helper\n * @return {undefined}\n * @throws Error if the derived helper is already detached\n */ $b57af9a08b47e48e$var$DerivedHelper.prototype.detach = function() {\n    this.removeAllListeners();\n    this.main.detachDerivedHelper(this);\n};\n$b57af9a08b47e48e$var$DerivedHelper.prototype.getModifiedState = function(parameters) {\n    return this.fn(parameters);\n};\n$b57af9a08b47e48e$exports = $b57af9a08b47e48e$var$DerivedHelper;\n\n\nvar $c2fb9d98022cd5ed$exports = {};\n\"use strict\";\n\nfunction $c2fb9d98022cd5ed$var$sortObject(obj) {\n    return Object.keys(obj).sort(function(a, b) {\n        return a.localeCompare(b);\n    }).reduce(function(acc, curr) {\n        acc[curr] = obj[curr];\n        return acc;\n    }, {});\n}\nvar $c2fb9d98022cd5ed$var$requestBuilder = {\n    /**\n   * Get all the queries to send to the client, those queries can used directly\n   * with the Algolia client.\n   * @private\n   * @return {object[]} The queries\n   */ _getQueries: function getQueries(index, state) {\n        var queries = [];\n        // One query for the hits\n        queries.push({\n            indexName: index,\n            params: $c2fb9d98022cd5ed$var$requestBuilder._getHitsSearchParams(state)\n        });\n        // One for each disjunctive facets\n        state.getRefinedDisjunctiveFacets().forEach(function(refinedFacet) {\n            queries.push({\n                indexName: index,\n                params: $c2fb9d98022cd5ed$var$requestBuilder._getDisjunctiveFacetSearchParams(state, refinedFacet)\n            });\n        });\n        // More to get the parent levels of the hierarchical facets when refined\n        state.getRefinedHierarchicalFacets().forEach(function(refinedFacet) {\n            var hierarchicalFacet = state.getHierarchicalFacetByName(refinedFacet);\n            var currentRefinement = state.getHierarchicalRefinement(refinedFacet);\n            var separator = state._getHierarchicalFacetSeparator(hierarchicalFacet);\n            // If we are deeper than level 0 (starting from `beer > IPA`)\n            // we want to get all parent values\n            if (currentRefinement.length > 0 && currentRefinement[0].split(separator).length > 1) {\n                // We generate a map of the filters we will use for our facet values queries\n                var filtersMap = currentRefinement[0].split(separator).slice(0, -1).reduce(function createFiltersMap(map, segment, level) {\n                    return map.concat({\n                        attribute: hierarchicalFacet.attributes[level],\n                        value: level === 0 ? segment : [\n                            map[map.length - 1].value,\n                            segment\n                        ].join(separator)\n                    });\n                }, []);\n                filtersMap.forEach(function(filter, level) {\n                    var params = $c2fb9d98022cd5ed$var$requestBuilder._getDisjunctiveFacetSearchParams(state, filter.attribute, level === 0);\n                    // Keep facet filters unrelated to current hierarchical attributes\n                    function hasHierarchicalFacetFilter(value) {\n                        return hierarchicalFacet.attributes.some(function(attribute) {\n                            return attribute === value.split(\":\")[0];\n                        });\n                    }\n                    var filteredFacetFilters = (params.facetFilters || []).reduce(function(acc, facetFilter) {\n                        if (Array.isArray(facetFilter)) {\n                            var filtered = facetFilter.filter(function(filterValue) {\n                                return !hasHierarchicalFacetFilter(filterValue);\n                            });\n                            if (filtered.length > 0) acc.push(filtered);\n                        }\n                        if (typeof facetFilter === \"string\" && !hasHierarchicalFacetFilter(facetFilter)) acc.push(facetFilter);\n                        return acc;\n                    }, []);\n                    var parent = filtersMap[level - 1];\n                    if (level > 0) params.facetFilters = filteredFacetFilters.concat(parent.attribute + \":\" + parent.value);\n                    else params.facetFilters = filteredFacetFilters.length > 0 ? filteredFacetFilters : undefined;\n                    queries.push({\n                        indexName: index,\n                        params: params\n                    });\n                });\n            }\n        });\n        return queries;\n    },\n    /**\n   * Build search parameters used to fetch hits\n   * @private\n   * @return {object.<string, any>}\n   */ _getHitsSearchParams: function(state) {\n        var facets = state.facets.concat(state.disjunctiveFacets).concat($c2fb9d98022cd5ed$var$requestBuilder._getHitsHierarchicalFacetsAttributes(state));\n        var facetFilters = $c2fb9d98022cd5ed$var$requestBuilder._getFacetFilters(state);\n        var numericFilters = $c2fb9d98022cd5ed$var$requestBuilder._getNumericFilters(state);\n        var tagFilters = $c2fb9d98022cd5ed$var$requestBuilder._getTagFilters(state);\n        var additionalParams = {\n            facets: facets.indexOf(\"*\") > -1 ? [\n                \"*\"\n            ] : facets,\n            tagFilters: tagFilters\n        };\n        if (facetFilters.length > 0) additionalParams.facetFilters = facetFilters;\n        if (numericFilters.length > 0) additionalParams.numericFilters = numericFilters;\n        return $c2fb9d98022cd5ed$var$sortObject($5223709f7c606ea7$exports({}, state.getQueryParams(), additionalParams));\n    },\n    /**\n   * Build search parameters used to fetch a disjunctive facet\n   * @private\n   * @param  {string} facet the associated facet name\n   * @param  {boolean} hierarchicalRootLevel ?? FIXME\n   * @return {object}\n   */ _getDisjunctiveFacetSearchParams: function(state, facet, hierarchicalRootLevel) {\n        var facetFilters = $c2fb9d98022cd5ed$var$requestBuilder._getFacetFilters(state, facet, hierarchicalRootLevel);\n        var numericFilters = $c2fb9d98022cd5ed$var$requestBuilder._getNumericFilters(state, facet);\n        var tagFilters = $c2fb9d98022cd5ed$var$requestBuilder._getTagFilters(state);\n        var additionalParams = {\n            hitsPerPage: 0,\n            page: 0,\n            analytics: false,\n            clickAnalytics: false\n        };\n        if (tagFilters.length > 0) additionalParams.tagFilters = tagFilters;\n        var hierarchicalFacet = state.getHierarchicalFacetByName(facet);\n        if (hierarchicalFacet) additionalParams.facets = $c2fb9d98022cd5ed$var$requestBuilder._getDisjunctiveHierarchicalFacetAttribute(state, hierarchicalFacet, hierarchicalRootLevel);\n        else additionalParams.facets = facet;\n        if (numericFilters.length > 0) additionalParams.numericFilters = numericFilters;\n        if (facetFilters.length > 0) additionalParams.facetFilters = facetFilters;\n        return $c2fb9d98022cd5ed$var$sortObject($5223709f7c606ea7$exports({}, state.getQueryParams(), additionalParams));\n    },\n    /**\n   * Return the numeric filters in an algolia request fashion\n   * @private\n   * @param {string} [facetName] the name of the attribute for which the filters should be excluded\n   * @return {string[]} the numeric filters in the algolia format\n   */ _getNumericFilters: function(state, facetName) {\n        if (state.numericFilters) return state.numericFilters;\n        var numericFilters = [];\n        Object.keys(state.numericRefinements).forEach(function(attribute) {\n            var operators = state.numericRefinements[attribute] || {};\n            Object.keys(operators).forEach(function(operator) {\n                var values = operators[operator] || [];\n                if (facetName !== attribute) values.forEach(function(value) {\n                    if (Array.isArray(value)) {\n                        var vs = value.map(function(v) {\n                            return attribute + operator + v;\n                        });\n                        numericFilters.push(vs);\n                    } else numericFilters.push(attribute + operator + value);\n                });\n            });\n        });\n        return numericFilters;\n    },\n    /**\n   * Return the tags filters depending\n   * @private\n   * @return {string}\n   */ _getTagFilters: function(state) {\n        if (state.tagFilters) return state.tagFilters;\n        return state.tagRefinements.join(\",\");\n    },\n    /**\n   * Build facetFilters parameter based on current refinements. The array returned\n   * contains strings representing the facet filters in the algolia format.\n   * @private\n   * @param  {string} [facet] if set, the current disjunctive facet\n   * @return {array.<string>}\n   */ _getFacetFilters: function(state, facet, hierarchicalRootLevel) {\n        var facetFilters = [];\n        var facetsRefinements = state.facetsRefinements || {};\n        Object.keys(facetsRefinements).forEach(function(facetName) {\n            var facetValues = facetsRefinements[facetName] || [];\n            facetValues.forEach(function(facetValue) {\n                facetFilters.push(facetName + \":\" + facetValue);\n            });\n        });\n        var facetsExcludes = state.facetsExcludes || {};\n        Object.keys(facetsExcludes).forEach(function(facetName) {\n            var facetValues = facetsExcludes[facetName] || [];\n            facetValues.forEach(function(facetValue) {\n                facetFilters.push(facetName + \":-\" + facetValue);\n            });\n        });\n        var disjunctiveFacetsRefinements = state.disjunctiveFacetsRefinements || {};\n        Object.keys(disjunctiveFacetsRefinements).forEach(function(facetName) {\n            var facetValues = disjunctiveFacetsRefinements[facetName] || [];\n            if (facetName === facet || !facetValues || facetValues.length === 0) return;\n            var orFilters = [];\n            facetValues.forEach(function(facetValue) {\n                orFilters.push(facetName + \":\" + facetValue);\n            });\n            facetFilters.push(orFilters);\n        });\n        var hierarchicalFacetsRefinements = state.hierarchicalFacetsRefinements || {};\n        Object.keys(hierarchicalFacetsRefinements).forEach(function(facetName) {\n            var facetValues = hierarchicalFacetsRefinements[facetName] || [];\n            var facetValue = facetValues[0];\n            if (facetValue === undefined) return;\n            var hierarchicalFacet = state.getHierarchicalFacetByName(facetName);\n            var separator = state._getHierarchicalFacetSeparator(hierarchicalFacet);\n            var rootPath = state._getHierarchicalRootPath(hierarchicalFacet);\n            var attributeToRefine;\n            var attributesIndex;\n            // we ask for parent facet values only when the `facet` is the current hierarchical facet\n            if (facet === facetName) {\n                // if we are at the root level already, no need to ask for facet values, we get them from\n                // the hits query\n                if (facetValue.indexOf(separator) === -1 || !rootPath && hierarchicalRootLevel === true || rootPath && rootPath.split(separator).length === facetValue.split(separator).length) return;\n                if (!rootPath) {\n                    attributesIndex = facetValue.split(separator).length - 2;\n                    facetValue = facetValue.slice(0, facetValue.lastIndexOf(separator));\n                } else {\n                    attributesIndex = rootPath.split(separator).length - 1;\n                    facetValue = rootPath;\n                }\n                attributeToRefine = hierarchicalFacet.attributes[attributesIndex];\n            } else {\n                attributesIndex = facetValue.split(separator).length - 1;\n                attributeToRefine = hierarchicalFacet.attributes[attributesIndex];\n            }\n            if (attributeToRefine) facetFilters.push([\n                attributeToRefine + \":\" + facetValue\n            ]);\n        });\n        return facetFilters;\n    },\n    _getHitsHierarchicalFacetsAttributes: function(state) {\n        var out = [];\n        return state.hierarchicalFacets.reduce(// ask for as much levels as there's hierarchical refinements\n        function getHitsAttributesForHierarchicalFacet(allAttributes, hierarchicalFacet) {\n            var hierarchicalRefinement = state.getHierarchicalRefinement(hierarchicalFacet.name)[0];\n            // if no refinement, ask for root level\n            if (!hierarchicalRefinement) {\n                allAttributes.push(hierarchicalFacet.attributes[0]);\n                return allAttributes;\n            }\n            var separator = state._getHierarchicalFacetSeparator(hierarchicalFacet);\n            var level = hierarchicalRefinement.split(separator).length;\n            var newAttributes = hierarchicalFacet.attributes.slice(0, level + 1);\n            return allAttributes.concat(newAttributes);\n        }, out);\n    },\n    _getDisjunctiveHierarchicalFacetAttribute: function(state, hierarchicalFacet, rootLevel) {\n        var separator = state._getHierarchicalFacetSeparator(hierarchicalFacet);\n        if (rootLevel === true) {\n            var rootPath = state._getHierarchicalRootPath(hierarchicalFacet);\n            var attributeIndex = 0;\n            if (rootPath) attributeIndex = rootPath.split(separator).length;\n            return [\n                hierarchicalFacet.attributes[attributeIndex]\n            ];\n        }\n        var hierarchicalRefinement = state.getHierarchicalRefinement(hierarchicalFacet.name)[0] || \"\";\n        // if refinement is 'beers > IPA > Flying dog',\n        // then we want `facets: ['beers > IPA']` as disjunctive facet (parent level values)\n        var parentLevel = hierarchicalRefinement.split(separator).length - 1;\n        return hierarchicalFacet.attributes.slice(0, parentLevel + 1);\n    },\n    getSearchForFacetQuery: function(facetName, query, maxFacetHits, state) {\n        var stateForSearchForFacetValues = state.isDisjunctiveFacet(facetName) ? state.clearRefinements(facetName) : state;\n        var searchForFacetSearchParameters = {\n            facetQuery: query,\n            facetName: facetName\n        };\n        if (typeof maxFacetHits === \"number\") searchForFacetSearchParameters.maxFacetHits = maxFacetHits;\n        return $c2fb9d98022cd5ed$var$sortObject($5223709f7c606ea7$exports({}, $c2fb9d98022cd5ed$var$requestBuilder._getHitsSearchParams(stateForSearchForFacetValues), searchForFacetSearchParameters));\n    }\n};\n$c2fb9d98022cd5ed$exports = $c2fb9d98022cd5ed$var$requestBuilder;\n\n\n\n\n\n\n\n\nvar $hUnSM = parcelRequire(\"hUnSM\");\n\nvar $ab905b70bbf6a740$require$escapeFacetValue = $aaf73120eb76b950$exports.escapeFacetValue;\n/**\n * Event triggered when a parameter is set or updated\n * @event AlgoliaSearchHelper#event:change\n * @property {object} event\n * @property {SearchParameters} event.state the current parameters with the latest changes applied\n * @property {SearchResults} event.results the previous results received from Algolia. `null` before the first request\n * @example\n * helper.on('change', function(event) {\n *   console.log('The parameters have changed');\n * });\n */ /**\n * Event triggered when a main search is sent to Algolia\n * @event AlgoliaSearchHelper#event:search\n * @property {object} event\n * @property {SearchParameters} event.state the parameters used for this search\n * @property {SearchResults} event.results the results from the previous search. `null` if it is the first search.\n * @example\n * helper.on('search', function(event) {\n *   console.log('Search sent');\n * });\n */ /**\n * Event triggered when a search using `searchForFacetValues` is sent to Algolia\n * @event AlgoliaSearchHelper#event:searchForFacetValues\n * @property {object} event\n * @property {SearchParameters} event.state the parameters used for this search it is the first search.\n * @property {string} event.facet the facet searched into\n * @property {string} event.query the query used to search in the facets\n * @example\n * helper.on('searchForFacetValues', function(event) {\n *   console.log('searchForFacetValues sent');\n * });\n */ /**\n * Event triggered when a search using `searchOnce` is sent to Algolia\n * @event AlgoliaSearchHelper#event:searchOnce\n * @property {object} event\n * @property {SearchParameters} event.state the parameters used for this search it is the first search.\n * @example\n * helper.on('searchOnce', function(event) {\n *   console.log('searchOnce sent');\n * });\n */ /**\n * Event triggered when the results are retrieved from Algolia\n * @event AlgoliaSearchHelper#event:result\n * @property {object} event\n * @property {SearchResults} event.results the results received from Algolia\n * @property {SearchParameters} event.state the parameters used to query Algolia. Those might be different from the one in the helper instance (for example if the network is unreliable).\n * @example\n * helper.on('result', function(event) {\n *   console.log('Search results received');\n * });\n */ /**\n * Event triggered when Algolia sends back an error. For example, if an unknown parameter is\n * used, the error can be caught using this event.\n * @event AlgoliaSearchHelper#event:error\n * @property {object} event\n * @property {Error} event.error the error returned by the Algolia.\n * @example\n * helper.on('error', function(event) {\n *   console.log('Houston we got a problem.');\n * });\n */ /**\n * Event triggered when the queue of queries have been depleted (with any result or outdated queries)\n * @event AlgoliaSearchHelper#event:searchQueueEmpty\n * @example\n * helper.on('searchQueueEmpty', function() {\n *   console.log('No more search pending');\n *   // This is received before the result event if we're not expecting new results\n * });\n *\n * helper.search();\n */ /**\n * Initialize a new AlgoliaSearchHelper\n * @class\n * @classdesc The AlgoliaSearchHelper is a class that ease the management of the\n * search. It provides an event based interface for search callbacks:\n *  - change: when the internal search state is changed.\n *    This event contains a {@link SearchParameters} object and the\n *    {@link SearchResults} of the last result if any.\n *  - search: when a search is triggered using the `search()` method.\n *  - result: when the response is retrieved from Algolia and is processed.\n *    This event contains a {@link SearchResults} object and the\n *    {@link SearchParameters} corresponding to this answer.\n *  - error: when the response is an error. This event contains the error returned by the server.\n * @param  {AlgoliaSearch} client an AlgoliaSearch client\n * @param  {string} index the index name to query\n * @param  {SearchParameters | object} options an object defining the initial\n * config of the search. It doesn't have to be a {SearchParameters},\n * just an object containing the properties you need from it.\n */ function $ab905b70bbf6a740$var$AlgoliaSearchHelper(client, index, options) {\n    if (typeof client.addAlgoliaAgent === \"function\") client.addAlgoliaAgent(\"JS Helper (\" + $hUnSM + \")\");\n    this.setClient(client);\n    var opts = options || {};\n    opts.index = index;\n    this.state = $b98b552440c412c7$exports.make(opts);\n    this.lastResults = null;\n    this._queryId = 0;\n    this._lastQueryIdReceived = -1;\n    this.derivedHelpers = [];\n    this._currentNbQueries = 0;\n}\n$6c0c921167d16aa0$exports($ab905b70bbf6a740$var$AlgoliaSearchHelper, $d2f3ec49777c2f55$exports);\n/**\n * Start the search with the parameters set in the state. When the\n * method is called, it triggers a `search` event. The results will\n * be available through the `result` event. If an error occurs, an\n * `error` will be fired instead.\n * @return {AlgoliaSearchHelper}\n * @fires search\n * @fires result\n * @fires error\n * @chainable\n */ $ab905b70bbf6a740$var$AlgoliaSearchHelper.prototype.search = function() {\n    this._search({\n        onlyWithDerivedHelpers: false\n    });\n    return this;\n};\n$ab905b70bbf6a740$var$AlgoliaSearchHelper.prototype.searchOnlyWithDerivedHelpers = function() {\n    this._search({\n        onlyWithDerivedHelpers: true\n    });\n    return this;\n};\n/**\n * Gets the search query parameters that would be sent to the Algolia Client\n * for the hits\n * @return {object} Query Parameters\n */ $ab905b70bbf6a740$var$AlgoliaSearchHelper.prototype.getQuery = function() {\n    var state = this.state;\n    return $c2fb9d98022cd5ed$exports._getHitsSearchParams(state);\n};\n/**\n * Start a search using a modified version of the current state. This method does\n * not trigger the helper lifecycle and does not modify the state kept internally\n * by the helper. This second aspect means that the next search call will be the\n * same as a search call before calling searchOnce.\n * @param {object} options can contain all the parameters that can be set to SearchParameters\n * plus the index\n * @param {function} [callback] optional callback executed when the response from the\n * server is back.\n * @return {promise|undefined} if a callback is passed the method returns undefined\n * otherwise it returns a promise containing an object with two keys :\n *  - content with a SearchResults\n *  - state with the state used for the query as a SearchParameters\n * @example\n * // Changing the number of records returned per page to 1\n * // This example uses the callback API\n * var state = helper.searchOnce({hitsPerPage: 1},\n *   function(error, content, state) {\n *     // if an error occurred it will be passed in error, otherwise its value is null\n *     // content contains the results formatted as a SearchResults\n *     // state is the instance of SearchParameters used for this search\n *   });\n * @example\n * // Changing the number of records returned per page to 1\n * // This example uses the promise API\n * var state1 = helper.searchOnce({hitsPerPage: 1})\n *                 .then(promiseHandler);\n *\n * function promiseHandler(res) {\n *   // res contains\n *   // {\n *   //   content : SearchResults\n *   //   state   : SearchParameters (the one used for this specific search)\n *   // }\n * }\n */ $ab905b70bbf6a740$var$AlgoliaSearchHelper.prototype.searchOnce = function(options, cb) {\n    var tempState = !options ? this.state : this.state.setQueryParameters(options);\n    var queries = $c2fb9d98022cd5ed$exports._getQueries(tempState.index, tempState);\n    var self = this;\n    this._currentNbQueries++;\n    this.emit(\"searchOnce\", {\n        state: tempState\n    });\n    if (cb) {\n        this.client.search(queries).then(function(content) {\n            self._currentNbQueries--;\n            if (self._currentNbQueries === 0) self.emit(\"searchQueueEmpty\");\n            cb(null, new $b9a4763f536f329f$exports(tempState, content.results), tempState);\n        }).catch(function(err) {\n            self._currentNbQueries--;\n            if (self._currentNbQueries === 0) self.emit(\"searchQueueEmpty\");\n            cb(err, null, tempState);\n        });\n        return undefined;\n    }\n    return this.client.search(queries).then(function(content) {\n        self._currentNbQueries--;\n        if (self._currentNbQueries === 0) self.emit(\"searchQueueEmpty\");\n        return {\n            content: new $b9a4763f536f329f$exports(tempState, content.results),\n            state: tempState,\n            _originalResponse: content\n        };\n    }, function(e) {\n        self._currentNbQueries--;\n        if (self._currentNbQueries === 0) self.emit(\"searchQueueEmpty\");\n        throw e;\n    });\n};\n/**\n * Start the search for answers with the parameters set in the state.\n * This method returns a promise.\n * @param {Object} options - the options for answers API call\n * @param {string[]} options.attributesForPrediction - Attributes to use for predictions. If empty, `searchableAttributes` is used instead.\n * @param {string[]} options.queryLanguages - The languages in the query. Currently only supports ['en'].\n * @param {number} options.nbHits - Maximum number of answers to retrieve from the Answers Engine. Cannot be greater than 1000.\n *\n * @return {promise} the answer results\n */ $ab905b70bbf6a740$var$AlgoliaSearchHelper.prototype.findAnswers = function(options) {\n    var state = this.state;\n    var derivedHelper = this.derivedHelpers[0];\n    if (!derivedHelper) return Promise.resolve([]);\n    var derivedState = derivedHelper.getModifiedState(state);\n    var data = $5223709f7c606ea7$exports({\n        attributesForPrediction: options.attributesForPrediction,\n        nbHits: options.nbHits\n    }, {\n        params: $d5a032e94ef65cbb$exports($c2fb9d98022cd5ed$exports._getHitsSearchParams(derivedState), [\n            \"attributesToSnippet\",\n            \"hitsPerPage\",\n            \"restrictSearchableAttributes\",\n            \"snippetEllipsisText\" // FIXME remove this line once the engine is fixed.\n        ])\n    });\n    var errorMessage = \"search for answers was called, but this client does not have a function client.initIndex(index).findAnswers\";\n    if (typeof this.client.initIndex !== \"function\") throw new Error(errorMessage);\n    var index = this.client.initIndex(derivedState.index);\n    if (typeof index.findAnswers !== \"function\") throw new Error(errorMessage);\n    return index.findAnswers(derivedState.query, options.queryLanguages, data);\n};\n/**\n * Structure of each result when using\n * [`searchForFacetValues()`](reference.html#AlgoliaSearchHelper#searchForFacetValues)\n * @typedef FacetSearchHit\n * @type {object}\n * @property {string} value the facet value\n * @property {string} highlighted the facet value highlighted with the query string\n * @property {number} count number of occurrence of this facet value\n * @property {boolean} isRefined true if the value is already refined\n */ /**\n * Structure of the data resolved by the\n * [`searchForFacetValues()`](reference.html#AlgoliaSearchHelper#searchForFacetValues)\n * promise.\n * @typedef FacetSearchResult\n * @type {object}\n * @property {FacetSearchHit} facetHits the results for this search for facet values\n * @property {number} processingTimeMS time taken by the query inside the engine\n */ /**\n * Search for facet values based on an query and the name of a faceted attribute. This\n * triggers a search and will return a promise. On top of using the query, it also sends\n * the parameters from the state so that the search is narrowed down to only the possible values.\n *\n * See the description of [FacetSearchResult](reference.html#FacetSearchResult)\n * @param {string} facet the name of the faceted attribute\n * @param {string} query the string query for the search\n * @param {number} [maxFacetHits] the maximum number values returned. Should be > 0 and <= 100\n * @param {object} [userState] the set of custom parameters to use on top of the current state. Setting a property to `undefined` removes\n * it in the generated query.\n * @return {promise.<FacetSearchResult>} the results of the search\n */ $ab905b70bbf6a740$var$AlgoliaSearchHelper.prototype.searchForFacetValues = function(facet, query, maxFacetHits, userState) {\n    var clientHasSFFV = typeof this.client.searchForFacetValues === \"function\";\n    var clientHasInitIndex = typeof this.client.initIndex === \"function\";\n    if (!clientHasSFFV && !clientHasInitIndex && typeof this.client.search !== \"function\") throw new Error(\"search for facet values (searchable) was called, but this client does not have a function client.searchForFacetValues or client.initIndex(index).searchForFacetValues\");\n    var state = this.state.setQueryParameters(userState || {});\n    var isDisjunctive = state.isDisjunctiveFacet(facet);\n    var algoliaQuery = $c2fb9d98022cd5ed$exports.getSearchForFacetQuery(facet, query, maxFacetHits, state);\n    this._currentNbQueries++;\n    var self = this;\n    var searchForFacetValuesPromise;\n    // newer algoliasearch ^3.27.1 - ~4.0.0\n    if (clientHasSFFV) searchForFacetValuesPromise = this.client.searchForFacetValues([\n        {\n            indexName: state.index,\n            params: algoliaQuery\n        }\n    ]);\n    else if (clientHasInitIndex) searchForFacetValuesPromise = this.client.initIndex(state.index).searchForFacetValues(algoliaQuery);\n    else {\n        // @MAJOR only use client.search\n        delete algoliaQuery.facetName;\n        searchForFacetValuesPromise = this.client.search([\n            {\n                type: \"facet\",\n                facet: facet,\n                indexName: state.index,\n                params: algoliaQuery\n            }\n        ]).then(function processResponse(response) {\n            return response.results[0];\n        });\n    }\n    this.emit(\"searchForFacetValues\", {\n        state: state,\n        facet: facet,\n        query: query\n    });\n    return searchForFacetValuesPromise.then(function addIsRefined(content) {\n        self._currentNbQueries--;\n        if (self._currentNbQueries === 0) self.emit(\"searchQueueEmpty\");\n        content = Array.isArray(content) ? content[0] : content;\n        content.facetHits.forEach(function(f) {\n            f.escapedValue = $ab905b70bbf6a740$require$escapeFacetValue(f.value);\n            f.isRefined = isDisjunctive ? state.isDisjunctiveFacetRefined(facet, f.escapedValue) : state.isFacetRefined(facet, f.escapedValue);\n        });\n        return content;\n    }, function(e) {\n        self._currentNbQueries--;\n        if (self._currentNbQueries === 0) self.emit(\"searchQueueEmpty\");\n        throw e;\n    });\n};\n/**\n * Sets the text query used for the search.\n *\n * This method resets the current page to 0.\n * @param  {string} q the user query\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */ $ab905b70bbf6a740$var$AlgoliaSearchHelper.prototype.setQuery = function(q) {\n    this._change({\n        state: this.state.resetPage().setQuery(q),\n        isPageReset: true\n    });\n    return this;\n};\n/**\n * Remove all the types of refinements except tags. A string can be provided to remove\n * only the refinements of a specific attribute. For more advanced use case, you can\n * provide a function instead. This function should follow the\n * [clearCallback definition](#SearchParameters.clearCallback).\n *\n * This method resets the current page to 0.\n * @param {string} [name] optional name of the facet / attribute on which we want to remove all refinements\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n * @example\n * // Removing all the refinements\n * helper.clearRefinements().search();\n * @example\n * // Removing all the filters on a the category attribute.\n * helper.clearRefinements('category').search();\n * @example\n * // Removing only the exclude filters on the category facet.\n * helper.clearRefinements(function(value, attribute, type) {\n *   return type === 'exclude' && attribute === 'category';\n * }).search();\n */ $ab905b70bbf6a740$var$AlgoliaSearchHelper.prototype.clearRefinements = function(name) {\n    this._change({\n        state: this.state.resetPage().clearRefinements(name),\n        isPageReset: true\n    });\n    return this;\n};\n/**\n * Remove all the tag filters.\n *\n * This method resets the current page to 0.\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */ $ab905b70bbf6a740$var$AlgoliaSearchHelper.prototype.clearTags = function() {\n    this._change({\n        state: this.state.resetPage().clearTags(),\n        isPageReset: true\n    });\n    return this;\n};\n/**\n * Adds a disjunctive filter to a faceted attribute with the `value` provided. If the\n * filter is already set, it doesn't change the filters.\n *\n * This method resets the current page to 0.\n * @param  {string} facet the facet to refine\n * @param  {string} value the associated value (will be converted to string)\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */ $ab905b70bbf6a740$var$AlgoliaSearchHelper.prototype.addDisjunctiveFacetRefinement = function(facet, value) {\n    this._change({\n        state: this.state.resetPage().addDisjunctiveFacetRefinement(facet, value),\n        isPageReset: true\n    });\n    return this;\n};\n/**\n * @deprecated since version 2.4.0, see {@link AlgoliaSearchHelper#addDisjunctiveFacetRefinement}\n */ $ab905b70bbf6a740$var$AlgoliaSearchHelper.prototype.addDisjunctiveRefine = function() {\n    return this.addDisjunctiveFacetRefinement.apply(this, arguments);\n};\n/**\n * Adds a refinement on a hierarchical facet. It will throw\n * an exception if the facet is not defined or if the facet\n * is already refined.\n *\n * This method resets the current page to 0.\n * @param {string} facet the facet name\n * @param {string} path the hierarchical facet path\n * @return {AlgoliaSearchHelper}\n * @throws Error if the facet is not defined or if the facet is refined\n * @chainable\n * @fires change\n */ $ab905b70bbf6a740$var$AlgoliaSearchHelper.prototype.addHierarchicalFacetRefinement = function(facet, value) {\n    this._change({\n        state: this.state.resetPage().addHierarchicalFacetRefinement(facet, value),\n        isPageReset: true\n    });\n    return this;\n};\n/**\n * Adds a an numeric filter to an attribute with the `operator` and `value` provided. If the\n * filter is already set, it doesn't change the filters.\n *\n * This method resets the current page to 0.\n * @param  {string} attribute the attribute on which the numeric filter applies\n * @param  {string} operator the operator of the filter\n * @param  {number} value the value of the filter\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */ $ab905b70bbf6a740$var$AlgoliaSearchHelper.prototype.addNumericRefinement = function(attribute, operator, value) {\n    this._change({\n        state: this.state.resetPage().addNumericRefinement(attribute, operator, value),\n        isPageReset: true\n    });\n    return this;\n};\n/**\n * Adds a filter to a faceted attribute with the `value` provided. If the\n * filter is already set, it doesn't change the filters.\n *\n * This method resets the current page to 0.\n * @param  {string} facet the facet to refine\n * @param  {string} value the associated value (will be converted to string)\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */ $ab905b70bbf6a740$var$AlgoliaSearchHelper.prototype.addFacetRefinement = function(facet, value) {\n    this._change({\n        state: this.state.resetPage().addFacetRefinement(facet, value),\n        isPageReset: true\n    });\n    return this;\n};\n/**\n * @deprecated since version 2.4.0, see {@link AlgoliaSearchHelper#addFacetRefinement}\n */ $ab905b70bbf6a740$var$AlgoliaSearchHelper.prototype.addRefine = function() {\n    return this.addFacetRefinement.apply(this, arguments);\n};\n/**\n * Adds a an exclusion filter to a faceted attribute with the `value` provided. If the\n * filter is already set, it doesn't change the filters.\n *\n * This method resets the current page to 0.\n * @param  {string} facet the facet to refine\n * @param  {string} value the associated value (will be converted to string)\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */ $ab905b70bbf6a740$var$AlgoliaSearchHelper.prototype.addFacetExclusion = function(facet, value) {\n    this._change({\n        state: this.state.resetPage().addExcludeRefinement(facet, value),\n        isPageReset: true\n    });\n    return this;\n};\n/**\n * @deprecated since version 2.4.0, see {@link AlgoliaSearchHelper#addFacetExclusion}\n */ $ab905b70bbf6a740$var$AlgoliaSearchHelper.prototype.addExclude = function() {\n    return this.addFacetExclusion.apply(this, arguments);\n};\n/**\n * Adds a tag filter with the `tag` provided. If the\n * filter is already set, it doesn't change the filters.\n *\n * This method resets the current page to 0.\n * @param {string} tag the tag to add to the filter\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */ $ab905b70bbf6a740$var$AlgoliaSearchHelper.prototype.addTag = function(tag) {\n    this._change({\n        state: this.state.resetPage().addTagRefinement(tag),\n        isPageReset: true\n    });\n    return this;\n};\n/**\n * Removes an numeric filter to an attribute with the `operator` and `value` provided. If the\n * filter is not set, it doesn't change the filters.\n *\n * Some parameters are optional, triggering different behavior:\n *  - if the value is not provided, then all the numeric value will be removed for the\n *  specified attribute/operator couple.\n *  - if the operator is not provided either, then all the numeric filter on this attribute\n *  will be removed.\n *\n * This method resets the current page to 0.\n * @param  {string} attribute the attribute on which the numeric filter applies\n * @param  {string} [operator] the operator of the filter\n * @param  {number} [value] the value of the filter\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */ $ab905b70bbf6a740$var$AlgoliaSearchHelper.prototype.removeNumericRefinement = function(attribute, operator, value) {\n    this._change({\n        state: this.state.resetPage().removeNumericRefinement(attribute, operator, value),\n        isPageReset: true\n    });\n    return this;\n};\n/**\n * Removes a disjunctive filter to a faceted attribute with the `value` provided. If the\n * filter is not set, it doesn't change the filters.\n *\n * If the value is omitted, then this method will remove all the filters for the\n * attribute.\n *\n * This method resets the current page to 0.\n * @param  {string} facet the facet to refine\n * @param  {string} [value] the associated value\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */ $ab905b70bbf6a740$var$AlgoliaSearchHelper.prototype.removeDisjunctiveFacetRefinement = function(facet, value) {\n    this._change({\n        state: this.state.resetPage().removeDisjunctiveFacetRefinement(facet, value),\n        isPageReset: true\n    });\n    return this;\n};\n/**\n * @deprecated since version 2.4.0, see {@link AlgoliaSearchHelper#removeDisjunctiveFacetRefinement}\n */ $ab905b70bbf6a740$var$AlgoliaSearchHelper.prototype.removeDisjunctiveRefine = function() {\n    return this.removeDisjunctiveFacetRefinement.apply(this, arguments);\n};\n/**\n * Removes the refinement set on a hierarchical facet.\n * @param {string} facet the facet name\n * @return {AlgoliaSearchHelper}\n * @throws Error if the facet is not defined or if the facet is not refined\n * @fires change\n * @chainable\n */ $ab905b70bbf6a740$var$AlgoliaSearchHelper.prototype.removeHierarchicalFacetRefinement = function(facet) {\n    this._change({\n        state: this.state.resetPage().removeHierarchicalFacetRefinement(facet),\n        isPageReset: true\n    });\n    return this;\n};\n/**\n * Removes a filter to a faceted attribute with the `value` provided. If the\n * filter is not set, it doesn't change the filters.\n *\n * If the value is omitted, then this method will remove all the filters for the\n * attribute.\n *\n * This method resets the current page to 0.\n * @param  {string} facet the facet to refine\n * @param  {string} [value] the associated value\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */ $ab905b70bbf6a740$var$AlgoliaSearchHelper.prototype.removeFacetRefinement = function(facet, value) {\n    this._change({\n        state: this.state.resetPage().removeFacetRefinement(facet, value),\n        isPageReset: true\n    });\n    return this;\n};\n/**\n * @deprecated since version 2.4.0, see {@link AlgoliaSearchHelper#removeFacetRefinement}\n */ $ab905b70bbf6a740$var$AlgoliaSearchHelper.prototype.removeRefine = function() {\n    return this.removeFacetRefinement.apply(this, arguments);\n};\n/**\n * Removes an exclusion filter to a faceted attribute with the `value` provided. If the\n * filter is not set, it doesn't change the filters.\n *\n * If the value is omitted, then this method will remove all the filters for the\n * attribute.\n *\n * This method resets the current page to 0.\n * @param  {string} facet the facet to refine\n * @param  {string} [value] the associated value\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */ $ab905b70bbf6a740$var$AlgoliaSearchHelper.prototype.removeFacetExclusion = function(facet, value) {\n    this._change({\n        state: this.state.resetPage().removeExcludeRefinement(facet, value),\n        isPageReset: true\n    });\n    return this;\n};\n/**\n * @deprecated since version 2.4.0, see {@link AlgoliaSearchHelper#removeFacetExclusion}\n */ $ab905b70bbf6a740$var$AlgoliaSearchHelper.prototype.removeExclude = function() {\n    return this.removeFacetExclusion.apply(this, arguments);\n};\n/**\n * Removes a tag filter with the `tag` provided. If the\n * filter is not set, it doesn't change the filters.\n *\n * This method resets the current page to 0.\n * @param {string} tag tag to remove from the filter\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */ $ab905b70bbf6a740$var$AlgoliaSearchHelper.prototype.removeTag = function(tag) {\n    this._change({\n        state: this.state.resetPage().removeTagRefinement(tag),\n        isPageReset: true\n    });\n    return this;\n};\n/**\n * Adds or removes an exclusion filter to a faceted attribute with the `value` provided. If\n * the value is set then it removes it, otherwise it adds the filter.\n *\n * This method resets the current page to 0.\n * @param  {string} facet the facet to refine\n * @param  {string} value the associated value\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */ $ab905b70bbf6a740$var$AlgoliaSearchHelper.prototype.toggleFacetExclusion = function(facet, value) {\n    this._change({\n        state: this.state.resetPage().toggleExcludeFacetRefinement(facet, value),\n        isPageReset: true\n    });\n    return this;\n};\n/**\n * @deprecated since version 2.4.0, see {@link AlgoliaSearchHelper#toggleFacetExclusion}\n */ $ab905b70bbf6a740$var$AlgoliaSearchHelper.prototype.toggleExclude = function() {\n    return this.toggleFacetExclusion.apply(this, arguments);\n};\n/**\n * Adds or removes a filter to a faceted attribute with the `value` provided. If\n * the value is set then it removes it, otherwise it adds the filter.\n *\n * This method can be used for conjunctive, disjunctive and hierarchical filters.\n *\n * This method resets the current page to 0.\n * @param  {string} facet the facet to refine\n * @param  {string} value the associated value\n * @return {AlgoliaSearchHelper}\n * @throws Error will throw an error if the facet is not declared in the settings of the helper\n * @fires change\n * @chainable\n * @deprecated since version 2.19.0, see {@link AlgoliaSearchHelper#toggleFacetRefinement}\n */ $ab905b70bbf6a740$var$AlgoliaSearchHelper.prototype.toggleRefinement = function(facet, value) {\n    return this.toggleFacetRefinement(facet, value);\n};\n/**\n * Adds or removes a filter to a faceted attribute with the `value` provided. If\n * the value is set then it removes it, otherwise it adds the filter.\n *\n * This method can be used for conjunctive, disjunctive and hierarchical filters.\n *\n * This method resets the current page to 0.\n * @param  {string} facet the facet to refine\n * @param  {string} value the associated value\n * @return {AlgoliaSearchHelper}\n * @throws Error will throw an error if the facet is not declared in the settings of the helper\n * @fires change\n * @chainable\n */ $ab905b70bbf6a740$var$AlgoliaSearchHelper.prototype.toggleFacetRefinement = function(facet, value) {\n    this._change({\n        state: this.state.resetPage().toggleFacetRefinement(facet, value),\n        isPageReset: true\n    });\n    return this;\n};\n/**\n * @deprecated since version 2.4.0, see {@link AlgoliaSearchHelper#toggleFacetRefinement}\n */ $ab905b70bbf6a740$var$AlgoliaSearchHelper.prototype.toggleRefine = function() {\n    return this.toggleFacetRefinement.apply(this, arguments);\n};\n/**\n * Adds or removes a tag filter with the `value` provided. If\n * the value is set then it removes it, otherwise it adds the filter.\n *\n * This method resets the current page to 0.\n * @param {string} tag tag to remove or add\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */ $ab905b70bbf6a740$var$AlgoliaSearchHelper.prototype.toggleTag = function(tag) {\n    this._change({\n        state: this.state.resetPage().toggleTagRefinement(tag),\n        isPageReset: true\n    });\n    return this;\n};\n/**\n * Increments the page number by one.\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n * @example\n * helper.setPage(0).nextPage().getPage();\n * // returns 1\n */ $ab905b70bbf6a740$var$AlgoliaSearchHelper.prototype.nextPage = function() {\n    var page = this.state.page || 0;\n    return this.setPage(page + 1);\n};\n/**\n * Decrements the page number by one.\n * @fires change\n * @return {AlgoliaSearchHelper}\n * @chainable\n * @example\n * helper.setPage(1).previousPage().getPage();\n * // returns 0\n */ $ab905b70bbf6a740$var$AlgoliaSearchHelper.prototype.previousPage = function() {\n    var page = this.state.page || 0;\n    return this.setPage(page - 1);\n};\n/**\n * @private\n */ function $ab905b70bbf6a740$var$setCurrentPage(page) {\n    if (page < 0) throw new Error(\"Page requested below 0.\");\n    this._change({\n        state: this.state.setPage(page),\n        isPageReset: false\n    });\n    return this;\n}\n/**\n * Change the current page\n * @deprecated\n * @param  {number} page The page number\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */ $ab905b70bbf6a740$var$AlgoliaSearchHelper.prototype.setCurrentPage = $ab905b70bbf6a740$var$setCurrentPage;\n/**\n * Updates the current page.\n * @function\n * @param  {number} page The page number\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */ $ab905b70bbf6a740$var$AlgoliaSearchHelper.prototype.setPage = $ab905b70bbf6a740$var$setCurrentPage;\n/**\n * Updates the name of the index that will be targeted by the query.\n *\n * This method resets the current page to 0.\n * @param {string} name the index name\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */ $ab905b70bbf6a740$var$AlgoliaSearchHelper.prototype.setIndex = function(name) {\n    this._change({\n        state: this.state.resetPage().setIndex(name),\n        isPageReset: true\n    });\n    return this;\n};\n/**\n * Update a parameter of the search. This method reset the page\n *\n * The complete list of parameters is available on the\n * [Algolia website](https://www.algolia.com/doc/rest#query-an-index).\n * The most commonly used parameters have their own [shortcuts](#query-parameters-shortcuts)\n * or benefit from higher-level APIs (all the kind of filters and facets have their own API)\n *\n * This method resets the current page to 0.\n * @param {string} parameter name of the parameter to update\n * @param {any} value new value of the parameter\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n * @example\n * helper.setQueryParameter('hitsPerPage', 20).search();\n */ $ab905b70bbf6a740$var$AlgoliaSearchHelper.prototype.setQueryParameter = function(parameter, value) {\n    this._change({\n        state: this.state.resetPage().setQueryParameter(parameter, value),\n        isPageReset: true\n    });\n    return this;\n};\n/**\n * Set the whole state (warning: will erase previous state)\n * @param {SearchParameters} newState the whole new state\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */ $ab905b70bbf6a740$var$AlgoliaSearchHelper.prototype.setState = function(newState) {\n    this._change({\n        state: $b98b552440c412c7$exports.make(newState),\n        isPageReset: false\n    });\n    return this;\n};\n/**\n * Override the current state without triggering a change event.\n * Do not use this method unless you know what you are doing. (see the example\n * for a legit use case)\n * @param {SearchParameters} newState the whole new state\n * @return {AlgoliaSearchHelper}\n * @example\n *  helper.on('change', function(state){\n *    // In this function you might want to find a way to store the state in the url/history\n *    updateYourURL(state)\n *  })\n *  window.onpopstate = function(event){\n *    // This is naive though as you should check if the state is really defined etc.\n *    helper.overrideStateWithoutTriggeringChangeEvent(event.state).search()\n *  }\n * @chainable\n */ $ab905b70bbf6a740$var$AlgoliaSearchHelper.prototype.overrideStateWithoutTriggeringChangeEvent = function(newState) {\n    this.state = new $b98b552440c412c7$exports(newState);\n    return this;\n};\n/**\n * Check if an attribute has any numeric, conjunctive, disjunctive or hierarchical filters.\n * @param {string} attribute the name of the attribute\n * @return {boolean} true if the attribute is filtered by at least one value\n * @example\n * // hasRefinements works with numeric, conjunctive, disjunctive and hierarchical filters\n * helper.hasRefinements('price'); // false\n * helper.addNumericRefinement('price', '>', 100);\n * helper.hasRefinements('price'); // true\n *\n * helper.hasRefinements('color'); // false\n * helper.addFacetRefinement('color', 'blue');\n * helper.hasRefinements('color'); // true\n *\n * helper.hasRefinements('material'); // false\n * helper.addDisjunctiveFacetRefinement('material', 'plastic');\n * helper.hasRefinements('material'); // true\n *\n * helper.hasRefinements('categories'); // false\n * helper.toggleFacetRefinement('categories', 'kitchen > knife');\n * helper.hasRefinements('categories'); // true\n *\n */ $ab905b70bbf6a740$var$AlgoliaSearchHelper.prototype.hasRefinements = function(attribute) {\n    if ($c0c10d49c54a249b$exports(this.state.getNumericRefinements(attribute))) return true;\n    else if (this.state.isConjunctiveFacet(attribute)) return this.state.isFacetRefined(attribute);\n    else if (this.state.isDisjunctiveFacet(attribute)) return this.state.isDisjunctiveFacetRefined(attribute);\n    else if (this.state.isHierarchicalFacet(attribute)) return this.state.isHierarchicalFacetRefined(attribute);\n    // there's currently no way to know that the user did call `addNumericRefinement` at some point\n    // thus we cannot distinguish if there once was a numeric refinement that was cleared\n    // so we will return false in every other situations to be consistent\n    // while what we should do here is throw because we did not find the attribute in any type\n    // of refinement\n    return false;\n};\n/**\n * Check if a value is excluded for a specific faceted attribute. If the value\n * is omitted then the function checks if there is any excluding refinements.\n *\n * @param  {string}  facet name of the attribute for used for faceting\n * @param  {string}  [value] optional value. If passed will test that this value\n   * is filtering the given facet.\n * @return {boolean} true if refined\n * @example\n * helper.isExcludeRefined('color'); // false\n * helper.isExcludeRefined('color', 'blue') // false\n * helper.isExcludeRefined('color', 'red') // false\n *\n * helper.addFacetExclusion('color', 'red');\n *\n * helper.isExcludeRefined('color'); // true\n * helper.isExcludeRefined('color', 'blue') // false\n * helper.isExcludeRefined('color', 'red') // true\n */ $ab905b70bbf6a740$var$AlgoliaSearchHelper.prototype.isExcluded = function(facet, value) {\n    return this.state.isExcludeRefined(facet, value);\n};\n/**\n * @deprecated since 2.4.0, see {@link AlgoliaSearchHelper#hasRefinements}\n */ $ab905b70bbf6a740$var$AlgoliaSearchHelper.prototype.isDisjunctiveRefined = function(facet, value) {\n    return this.state.isDisjunctiveFacetRefined(facet, value);\n};\n/**\n * Check if the string is a currently filtering tag.\n * @param {string} tag tag to check\n * @return {boolean}\n */ $ab905b70bbf6a740$var$AlgoliaSearchHelper.prototype.hasTag = function(tag) {\n    return this.state.isTagRefined(tag);\n};\n/**\n * @deprecated since 2.4.0, see {@link AlgoliaSearchHelper#hasTag}\n */ $ab905b70bbf6a740$var$AlgoliaSearchHelper.prototype.isTagRefined = function() {\n    return this.hasTagRefinements.apply(this, arguments);\n};\n/**\n * Get the name of the currently used index.\n * @return {string}\n * @example\n * helper.setIndex('highestPrice_products').getIndex();\n * // returns 'highestPrice_products'\n */ $ab905b70bbf6a740$var$AlgoliaSearchHelper.prototype.getIndex = function() {\n    return this.state.index;\n};\nfunction $ab905b70bbf6a740$var$getCurrentPage() {\n    return this.state.page;\n}\n/**\n * Get the currently selected page\n * @deprecated\n * @return {number} the current page\n */ $ab905b70bbf6a740$var$AlgoliaSearchHelper.prototype.getCurrentPage = $ab905b70bbf6a740$var$getCurrentPage;\n/**\n * Get the currently selected page\n * @function\n * @return {number} the current page\n */ $ab905b70bbf6a740$var$AlgoliaSearchHelper.prototype.getPage = $ab905b70bbf6a740$var$getCurrentPage;\n/**\n * Get all the tags currently set to filters the results.\n *\n * @return {string[]} The list of tags currently set.\n */ $ab905b70bbf6a740$var$AlgoliaSearchHelper.prototype.getTags = function() {\n    return this.state.tagRefinements;\n};\n/**\n * Get the list of refinements for a given attribute. This method works with\n * conjunctive, disjunctive, excluding and numerical filters.\n *\n * See also SearchResults#getRefinements\n *\n * @param {string} facetName attribute name used for faceting\n * @return {Array.<FacetRefinement|NumericRefinement>} All Refinement are objects that contain a value, and\n * a type. Numeric also contains an operator.\n * @example\n * helper.addNumericRefinement('price', '>', 100);\n * helper.getRefinements('price');\n * // [\n * //   {\n * //     \"value\": [\n * //       100\n * //     ],\n * //     \"operator\": \">\",\n * //     \"type\": \"numeric\"\n * //   }\n * // ]\n * @example\n * helper.addFacetRefinement('color', 'blue');\n * helper.addFacetExclusion('color', 'red');\n * helper.getRefinements('color');\n * // [\n * //   {\n * //     \"value\": \"blue\",\n * //     \"type\": \"conjunctive\"\n * //   },\n * //   {\n * //     \"value\": \"red\",\n * //     \"type\": \"exclude\"\n * //   }\n * // ]\n * @example\n * helper.addDisjunctiveFacetRefinement('material', 'plastic');\n * // [\n * //   {\n * //     \"value\": \"plastic\",\n * //     \"type\": \"disjunctive\"\n * //   }\n * // ]\n */ $ab905b70bbf6a740$var$AlgoliaSearchHelper.prototype.getRefinements = function(facetName) {\n    var refinements = [];\n    if (this.state.isConjunctiveFacet(facetName)) {\n        var conjRefinements = this.state.getConjunctiveRefinements(facetName);\n        conjRefinements.forEach(function(r) {\n            refinements.push({\n                value: r,\n                type: \"conjunctive\"\n            });\n        });\n        var excludeRefinements = this.state.getExcludeRefinements(facetName);\n        excludeRefinements.forEach(function(r) {\n            refinements.push({\n                value: r,\n                type: \"exclude\"\n            });\n        });\n    } else if (this.state.isDisjunctiveFacet(facetName)) {\n        var disjRefinements = this.state.getDisjunctiveRefinements(facetName);\n        disjRefinements.forEach(function(r) {\n            refinements.push({\n                value: r,\n                type: \"disjunctive\"\n            });\n        });\n    }\n    var numericRefinements = this.state.getNumericRefinements(facetName);\n    Object.keys(numericRefinements).forEach(function(operator) {\n        var value = numericRefinements[operator];\n        refinements.push({\n            value: value,\n            operator: operator,\n            type: \"numeric\"\n        });\n    });\n    return refinements;\n};\n/**\n * Return the current refinement for the (attribute, operator)\n * @param {string} attribute attribute in the record\n * @param {string} operator operator applied on the refined values\n * @return {Array.<number|number[]>} refined values\n */ $ab905b70bbf6a740$var$AlgoliaSearchHelper.prototype.getNumericRefinement = function(attribute, operator) {\n    return this.state.getNumericRefinement(attribute, operator);\n};\n/**\n * Get the current breadcrumb for a hierarchical facet, as an array\n * @param  {string} facetName Hierarchical facet name\n * @return {array.<string>} the path as an array of string\n */ $ab905b70bbf6a740$var$AlgoliaSearchHelper.prototype.getHierarchicalFacetBreadcrumb = function(facetName) {\n    return this.state.getHierarchicalFacetBreadcrumb(facetName);\n};\n// /////////// PRIVATE\n/**\n * Perform the underlying queries\n * @private\n * @return {undefined}\n * @fires search\n * @fires result\n * @fires error\n */ $ab905b70bbf6a740$var$AlgoliaSearchHelper.prototype._search = function(options) {\n    var state = this.state;\n    var states = [];\n    var mainQueries = [];\n    if (!options.onlyWithDerivedHelpers) {\n        mainQueries = $c2fb9d98022cd5ed$exports._getQueries(state.index, state);\n        states.push({\n            state: state,\n            queriesCount: mainQueries.length,\n            helper: this\n        });\n        this.emit(\"search\", {\n            state: state,\n            results: this.lastResults\n        });\n    }\n    var derivedQueries = this.derivedHelpers.map(function(derivedHelper) {\n        var derivedState = derivedHelper.getModifiedState(state);\n        var derivedStateQueries = $c2fb9d98022cd5ed$exports._getQueries(derivedState.index, derivedState);\n        states.push({\n            state: derivedState,\n            queriesCount: derivedStateQueries.length,\n            helper: derivedHelper\n        });\n        derivedHelper.emit(\"search\", {\n            state: derivedState,\n            results: derivedHelper.lastResults\n        });\n        return derivedStateQueries;\n    });\n    var queries = Array.prototype.concat.apply(mainQueries, derivedQueries);\n    var queryId = this._queryId++;\n    this._currentNbQueries++;\n    try {\n        this.client.search(queries).then(this._dispatchAlgoliaResponse.bind(this, states, queryId)).catch(this._dispatchAlgoliaError.bind(this, queryId));\n    } catch (error) {\n        // If we reach this part, we're in an internal error state\n        this.emit(\"error\", {\n            error: error\n        });\n    }\n};\n/**\n * Transform the responses as sent by the server and transform them into a user\n * usable object that merge the results of all the batch requests. It will dispatch\n * over the different helper + derived helpers (when there are some).\n * @private\n * @param {array.<{SearchParameters, AlgoliaQueries, AlgoliaSearchHelper}>}\n *  state state used for to generate the request\n * @param {number} queryId id of the current request\n * @param {object} content content of the response\n * @return {undefined}\n */ $ab905b70bbf6a740$var$AlgoliaSearchHelper.prototype._dispatchAlgoliaResponse = function(states, queryId, content) {\n    // FIXME remove the number of outdated queries discarded instead of just one\n    if (queryId < this._lastQueryIdReceived) // Outdated answer\n    return;\n    this._currentNbQueries -= queryId - this._lastQueryIdReceived;\n    this._lastQueryIdReceived = queryId;\n    if (this._currentNbQueries === 0) this.emit(\"searchQueueEmpty\");\n    var results = content.results.slice();\n    states.forEach(function(s) {\n        var state = s.state;\n        var queriesCount = s.queriesCount;\n        var helper = s.helper;\n        var specificResults = results.splice(0, queriesCount);\n        var formattedResponse = helper.lastResults = new $b9a4763f536f329f$exports(state, specificResults);\n        helper.emit(\"result\", {\n            results: formattedResponse,\n            state: state\n        });\n    });\n};\n$ab905b70bbf6a740$var$AlgoliaSearchHelper.prototype._dispatchAlgoliaError = function(queryId, error) {\n    if (queryId < this._lastQueryIdReceived) // Outdated answer\n    return;\n    this._currentNbQueries -= queryId - this._lastQueryIdReceived;\n    this._lastQueryIdReceived = queryId;\n    this.emit(\"error\", {\n        error: error\n    });\n    if (this._currentNbQueries === 0) this.emit(\"searchQueueEmpty\");\n};\n$ab905b70bbf6a740$var$AlgoliaSearchHelper.prototype.containsRefinement = function(query, facetFilters, numericFilters, tagFilters) {\n    return query || facetFilters.length !== 0 || numericFilters.length !== 0 || tagFilters.length !== 0;\n};\n/**\n * Test if there are some disjunctive refinements on the facet\n * @private\n * @param {string} facet the attribute to test\n * @return {boolean}\n */ $ab905b70bbf6a740$var$AlgoliaSearchHelper.prototype._hasDisjunctiveRefinements = function(facet) {\n    return this.state.disjunctiveRefinements[facet] && this.state.disjunctiveRefinements[facet].length > 0;\n};\n$ab905b70bbf6a740$var$AlgoliaSearchHelper.prototype._change = function(event) {\n    var state = event.state;\n    var isPageReset = event.isPageReset;\n    if (state !== this.state) {\n        this.state = state;\n        this.emit(\"change\", {\n            state: this.state,\n            results: this.lastResults,\n            isPageReset: isPageReset\n        });\n    }\n};\n/**\n * Clears the cache of the underlying Algolia client.\n * @return {AlgoliaSearchHelper}\n */ $ab905b70bbf6a740$var$AlgoliaSearchHelper.prototype.clearCache = function() {\n    this.client.clearCache && this.client.clearCache();\n    return this;\n};\n/**\n * Updates the internal client instance. If the reference of the clients\n * are equal then no update is actually done.\n * @param  {AlgoliaSearch} newClient an AlgoliaSearch client\n * @return {AlgoliaSearchHelper}\n */ $ab905b70bbf6a740$var$AlgoliaSearchHelper.prototype.setClient = function(newClient) {\n    if (this.client === newClient) return this;\n    if (typeof newClient.addAlgoliaAgent === \"function\") newClient.addAlgoliaAgent(\"JS Helper (\" + $hUnSM + \")\");\n    this.client = newClient;\n    return this;\n};\n/**\n * Gets the instance of the currently used client.\n * @return {AlgoliaSearch}\n */ $ab905b70bbf6a740$var$AlgoliaSearchHelper.prototype.getClient = function() {\n    return this.client;\n};\n/**\n * Creates an derived instance of the Helper. A derived helper\n * is a way to request other indices synchronised with the lifecycle\n * of the main Helper. This mechanism uses the multiqueries feature\n * of Algolia to aggregate all the requests in a single network call.\n *\n * This method takes a function that is used to create a new SearchParameter\n * that will be used to create requests to Algolia. Those new requests\n * are created just before the `search` event. The signature of the function\n * is `SearchParameters -> SearchParameters`.\n *\n * This method returns a new DerivedHelper which is an EventEmitter\n * that fires the same `search`, `result` and `error` events. Those\n * events, however, will receive data specific to this DerivedHelper\n * and the SearchParameters that is returned by the call of the\n * parameter function.\n * @param {function} fn SearchParameters -> SearchParameters\n * @return {DerivedHelper}\n */ $ab905b70bbf6a740$var$AlgoliaSearchHelper.prototype.derive = function(fn) {\n    var derivedHelper = new $b57af9a08b47e48e$exports(this, fn);\n    this.derivedHelpers.push(derivedHelper);\n    return derivedHelper;\n};\n/**\n * This method detaches a derived Helper from the main one. Prefer using the one from the\n * derived helper itself, to remove the event listeners too.\n * @private\n * @return {undefined}\n * @throws Error\n */ $ab905b70bbf6a740$var$AlgoliaSearchHelper.prototype.detachDerivedHelper = function(derivedHelper) {\n    var pos = this.derivedHelpers.indexOf(derivedHelper);\n    if (pos === -1) throw new Error(\"Derived helper already detached\");\n    this.derivedHelpers.splice(pos, 1);\n};\n/**\n * This method returns true if there is currently at least one on-going search.\n * @return {boolean} true if there is a search pending\n */ $ab905b70bbf6a740$var$AlgoliaSearchHelper.prototype.hasPendingRequests = function() {\n    return this._currentNbQueries > 0;\n};\n/**\n * @typedef AlgoliaSearchHelper.NumericRefinement\n * @type {object}\n * @property {number[]} value the numbers that are used for filtering this attribute with\n * the operator specified.\n * @property {string} operator the faceting data: value, number of entries\n * @property {string} type will be 'numeric'\n */ /**\n * @typedef AlgoliaSearchHelper.FacetRefinement\n * @type {object}\n * @property {string} value the string use to filter the attribute\n * @property {string} type the type of filter: 'conjunctive', 'disjunctive', 'exclude'\n */ $ab905b70bbf6a740$exports = $ab905b70bbf6a740$var$AlgoliaSearchHelper;\n\n\n\n\n/**\n * The algoliasearchHelper module is the function that will let its\n * contains everything needed to use the Algoliasearch\n * Helper. It is a also a function that instanciate the helper.\n * To use the helper, you also need the Algolia JS client v3.\n * @example\n * //using the UMD build\n * var client = algoliasearch('latency', '6be0576ff61c053d5f9a3225e2a90f76');\n * var helper = algoliasearchHelper(client, 'bestbuy', {\n *   facets: ['shipping'],\n *   disjunctiveFacets: ['category']\n * });\n * helper.on('result', function(event) {\n *   console.log(event.results);\n * });\n * helper\n *   .toggleFacetRefinement('category', 'Movies & TV Shows')\n *   .toggleFacetRefinement('shipping', 'Free shipping')\n *   .search();\n * @example\n * // The helper is an event emitter using the node API\n * helper.on('result', updateTheResults);\n * helper.once('result', updateTheResults);\n * helper.removeListener('result', updateTheResults);\n * helper.removeAllListeners('result');\n * @module algoliasearchHelper\n * @param  {AlgoliaSearch} client an AlgoliaSearch client\n * @param  {string} index the name of the index to query\n * @param  {SearchParameters|object} opts an object defining the initial config of the search. It doesn't have to be a {SearchParameters}, just an object containing the properties you need from it.\n * @return {AlgoliaSearchHelper}\n */ function $6c359160e6887998$var$algoliasearchHelper(client, index, opts) {\n    return new $ab905b70bbf6a740$exports(client, index, opts);\n}\n\n/**\n * The version currently used\n * @member module:algoliasearchHelper.version\n * @type {number}\n */ $6c359160e6887998$var$algoliasearchHelper.version = (parcelRequire(\"hUnSM\"));\n/**\n * Constructor for the Helper.\n * @member module:algoliasearchHelper.AlgoliaSearchHelper\n * @type {AlgoliaSearchHelper}\n */ $6c359160e6887998$var$algoliasearchHelper.AlgoliaSearchHelper = $ab905b70bbf6a740$exports;\n/**\n * Constructor for the object containing all the parameters of the search.\n * @member module:algoliasearchHelper.SearchParameters\n * @type {SearchParameters}\n */ $6c359160e6887998$var$algoliasearchHelper.SearchParameters = $b98b552440c412c7$exports;\n/**\n * Constructor for the object containing the results of the search.\n * @member module:algoliasearchHelper.SearchResults\n * @type {SearchResults}\n */ $6c359160e6887998$var$algoliasearchHelper.SearchResults = $b9a4763f536f329f$exports;\n$6c359160e6887998$exports = $6c359160e6887998$var$algoliasearchHelper;\n\n\nfunction $049fad80b24500a5$export$110679b26359d23d(_ref) {\n    var name = _ref.name, _ref$connector = _ref.connector, connector = _ref$connector === void 0 ? false : _ref$connector;\n    return [\n        \"https://www.algolia.com/doc/api-reference/widgets/\",\n        name,\n        \"/js/\",\n        connector ? \"#connector\" : \"\"\n    ].join(\"\");\n}\nfunction $049fad80b24500a5$export$2fde5bffc340821e() {\n    for(var _len = arguments.length, widgets = new Array(_len), _key = 0; _key < _len; _key++)widgets[_key] = arguments[_key];\n    var links = widgets.map(function(widget) {\n        return $049fad80b24500a5$export$110679b26359d23d(widget);\n    }).join(\", \");\n    return function(message) {\n        return [\n            message,\n            \"See documentation: \".concat(links)\n        ].filter(Boolean).join(\"\\n\\n\");\n    };\n}\n\nfunction $75a4fd312a615f00$var$_typeof(obj) {\n    \"@babel/helpers - typeof\";\n    if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") $75a4fd312a615f00$var$_typeof = function _typeof(obj) {\n        return typeof obj;\n    };\n    else $75a4fd312a615f00$var$_typeof = function _typeof(obj) {\n        return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n    return $75a4fd312a615f00$var$_typeof(obj);\n}\n/**\n * This implementation is taken from Lodash implementation.\n * See: https://github.com/lodash/lodash/blob/master/isPlainObject.js\n */ function $75a4fd312a615f00$var$getTag(value) {\n    if (value === null) return value === undefined ? \"[object Undefined]\" : \"[object Null]\";\n    return Object.prototype.toString.call(value);\n}\nfunction $75a4fd312a615f00$var$isObjectLike(value) {\n    return $75a4fd312a615f00$var$_typeof(value) === \"object\" && value !== null;\n}\nfunction $75a4fd312a615f00$export$53b83ca8eaab0383(value) {\n    if (!$75a4fd312a615f00$var$isObjectLike(value) || $75a4fd312a615f00$var$getTag(value) !== \"[object Object]\") return false;\n    if (Object.getPrototypeOf(value) === null) return true;\n    var proto = value;\n    while(Object.getPrototypeOf(proto) !== null)proto = Object.getPrototypeOf(proto);\n    return Object.getPrototypeOf(value) === proto;\n}\n\n// We aren't using the native `Array.prototype.findIndex` because the refactor away from Lodash is not\n// published as a major version.\n// Relying on the `findIndex` polyfill on user-land, which before was only required for niche use-cases,\n// was decided as too risky.\n// @MAJOR Replace with the native `Array.prototype.findIndex` method\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/findIndex\nfunction $cd83db18a2b50813$export$de3a4d4a0d731119(array, comparator) {\n    if (!Array.isArray(array)) return -1;\n    for(var i = 0; i < array.length; i++){\n        if (comparator(array[i])) return i;\n    }\n    return -1;\n}\n\n\nfunction $6b9ab3bbb605ca60$export$f70730c3d1fc524e(array) {\n    return array.filter(function(value, index, self) {\n        return self.indexOf(value) === index;\n    });\n}\n\n\nfunction $cdcc1435cfc6072b$var$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 $cdcc1435cfc6072b$var$_objectSpread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        if (i % 2) $cdcc1435cfc6072b$var$ownKeys(Object(source), true).forEach(function(key) {\n            $cdcc1435cfc6072b$var$_defineProperty(target, key, source[key]);\n        });\n        else if (Object.getOwnPropertyDescriptors) Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n        else $cdcc1435cfc6072b$var$ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nfunction $cdcc1435cfc6072b$var$_defineProperty(obj, key, value) {\n    if (key in obj) Object.defineProperty(obj, key, {\n        value: value,\n        enumerable: true,\n        configurable: true,\n        writable: true\n    });\n    else obj[key] = value;\n    return obj;\n}\nfunction $cdcc1435cfc6072b$var$_objectWithoutProperties(source, excluded) {\n    if (source == null) return {};\n    var target = $cdcc1435cfc6072b$var$_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}\nfunction $cdcc1435cfc6072b$var$_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}\nvar $cdcc1435cfc6072b$var$mergeWithRest = function mergeWithRest(left, right) {\n    var facets = right.facets, disjunctiveFacets = right.disjunctiveFacets, facetsRefinements = right.facetsRefinements, facetsExcludes = right.facetsExcludes, disjunctiveFacetsRefinements = right.disjunctiveFacetsRefinements, numericRefinements = right.numericRefinements, tagRefinements = right.tagRefinements, hierarchicalFacets = right.hierarchicalFacets, hierarchicalFacetsRefinements = right.hierarchicalFacetsRefinements, ruleContexts = right.ruleContexts, rest = $cdcc1435cfc6072b$var$_objectWithoutProperties(right, [\n        \"facets\",\n        \"disjunctiveFacets\",\n        \"facetsRefinements\",\n        \"facetsExcludes\",\n        \"disjunctiveFacetsRefinements\",\n        \"numericRefinements\",\n        \"tagRefinements\",\n        \"hierarchicalFacets\",\n        \"hierarchicalFacetsRefinements\",\n        \"ruleContexts\"\n    ]);\n    return left.setQueryParameters(rest);\n}; // Merge facets\nvar $cdcc1435cfc6072b$var$mergeFacets = function mergeFacets(left, right) {\n    return right.facets.reduce(function(_, name) {\n        return _.addFacet(name);\n    }, left);\n};\nvar $cdcc1435cfc6072b$var$mergeDisjunctiveFacets = function mergeDisjunctiveFacets(left, right) {\n    return right.disjunctiveFacets.reduce(function(_, name) {\n        return _.addDisjunctiveFacet(name);\n    }, left);\n};\nvar $cdcc1435cfc6072b$var$mergeHierarchicalFacets = function mergeHierarchicalFacets(left, right) {\n    return left.setQueryParameters({\n        hierarchicalFacets: right.hierarchicalFacets.reduce(function(facets, facet) {\n            var index = (0, $cd83db18a2b50813$export$de3a4d4a0d731119)(facets, function(_) {\n                return _.name === facet.name;\n            });\n            if (index === -1) return facets.concat(facet);\n            var nextFacets = facets.slice();\n            nextFacets.splice(index, 1, facet);\n            return nextFacets;\n        }, left.hierarchicalFacets)\n    });\n}; // Merge facet refinements\nvar $cdcc1435cfc6072b$var$mergeTagRefinements = function mergeTagRefinements(left, right) {\n    return right.tagRefinements.reduce(function(_, value) {\n        return _.addTagRefinement(value);\n    }, left);\n};\nvar $cdcc1435cfc6072b$var$mergeFacetRefinements = function mergeFacetRefinements(left, right) {\n    return left.setQueryParameters({\n        facetsRefinements: $cdcc1435cfc6072b$var$_objectSpread($cdcc1435cfc6072b$var$_objectSpread({}, left.facetsRefinements), right.facetsRefinements)\n    });\n};\nvar $cdcc1435cfc6072b$var$mergeFacetsExcludes = function mergeFacetsExcludes(left, right) {\n    return left.setQueryParameters({\n        facetsExcludes: $cdcc1435cfc6072b$var$_objectSpread($cdcc1435cfc6072b$var$_objectSpread({}, left.facetsExcludes), right.facetsExcludes)\n    });\n};\nvar $cdcc1435cfc6072b$var$mergeDisjunctiveFacetsRefinements = function mergeDisjunctiveFacetsRefinements(left, right) {\n    return left.setQueryParameters({\n        disjunctiveFacetsRefinements: $cdcc1435cfc6072b$var$_objectSpread($cdcc1435cfc6072b$var$_objectSpread({}, left.disjunctiveFacetsRefinements), right.disjunctiveFacetsRefinements)\n    });\n};\nvar $cdcc1435cfc6072b$var$mergeNumericRefinements = function mergeNumericRefinements(left, right) {\n    return left.setQueryParameters({\n        numericRefinements: $cdcc1435cfc6072b$var$_objectSpread($cdcc1435cfc6072b$var$_objectSpread({}, left.numericRefinements), right.numericRefinements)\n    });\n};\nvar $cdcc1435cfc6072b$var$mergeHierarchicalFacetsRefinements = function mergeHierarchicalFacetsRefinements(left, right) {\n    return left.setQueryParameters({\n        hierarchicalFacetsRefinements: $cdcc1435cfc6072b$var$_objectSpread($cdcc1435cfc6072b$var$_objectSpread({}, left.hierarchicalFacetsRefinements), right.hierarchicalFacetsRefinements)\n    });\n};\nvar $cdcc1435cfc6072b$var$mergeRuleContexts = function mergeRuleContexts(left, right) {\n    var ruleContexts = (0, $6b9ab3bbb605ca60$export$f70730c3d1fc524e)([].concat(left.ruleContexts).concat(right.ruleContexts).filter(Boolean));\n    if (ruleContexts.length > 0) return left.setQueryParameters({\n        ruleContexts: ruleContexts\n    });\n    return left;\n};\nvar $cdcc1435cfc6072b$export$8049d91f25899769 = function mergeSearchParameters() {\n    for(var _len = arguments.length, parameters = new Array(_len), _key = 0; _key < _len; _key++)parameters[_key] = arguments[_key];\n    return parameters.reduce(function(left, right) {\n        var hierarchicalFacetsRefinementsMerged = $cdcc1435cfc6072b$var$mergeHierarchicalFacetsRefinements(left, right);\n        var hierarchicalFacetsMerged = $cdcc1435cfc6072b$var$mergeHierarchicalFacets(hierarchicalFacetsRefinementsMerged, right);\n        var tagRefinementsMerged = $cdcc1435cfc6072b$var$mergeTagRefinements(hierarchicalFacetsMerged, right);\n        var numericRefinementsMerged = $cdcc1435cfc6072b$var$mergeNumericRefinements(tagRefinementsMerged, right);\n        var disjunctiveFacetsRefinementsMerged = $cdcc1435cfc6072b$var$mergeDisjunctiveFacetsRefinements(numericRefinementsMerged, right);\n        var facetsExcludesMerged = $cdcc1435cfc6072b$var$mergeFacetsExcludes(disjunctiveFacetsRefinementsMerged, right);\n        var facetRefinementsMerged = $cdcc1435cfc6072b$var$mergeFacetRefinements(facetsExcludesMerged, right);\n        var disjunctiveFacetsMerged = $cdcc1435cfc6072b$var$mergeDisjunctiveFacets(facetRefinementsMerged, right);\n        var ruleContextsMerged = $cdcc1435cfc6072b$var$mergeRuleContexts(disjunctiveFacetsMerged, right);\n        var facetsMerged = $cdcc1435cfc6072b$var$mergeFacets(ruleContextsMerged, right);\n        return $cdcc1435cfc6072b$var$mergeWithRest(facetsMerged, right);\n    });\n};\n\nfunction $dba781b2f4cd6c52$export$8793edee2d425525() {}\n\n\nfunction $82c6985a45454c6e$var$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 $82c6985a45454c6e$var$_objectSpread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        if (i % 2) $82c6985a45454c6e$var$ownKeys(Object(source), true).forEach(function(key) {\n            $82c6985a45454c6e$var$_defineProperty(target, key, source[key]);\n        });\n        else if (Object.getOwnPropertyDescriptors) Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n        else $82c6985a45454c6e$var$ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nfunction $82c6985a45454c6e$var$_defineProperty(obj, key, value) {\n    if (key in obj) Object.defineProperty(obj, key, {\n        value: value,\n        enumerable: true,\n        configurable: true,\n        writable: true\n    });\n    else obj[key] = value;\n    return obj;\n}\n/**\n * Refine the given search parameters.\n */ var $82c6985a45454c6e$var$withUsage = (0, $049fad80b24500a5$export$2fde5bffc340821e)({\n    name: \"configure\",\n    connector: true\n});\nfunction $82c6985a45454c6e$var$getInitialSearchParameters(state, widgetParams) {\n    // We leverage the helper internals to remove the `widgetParams` from\n    // the state. The function `setQueryParameters` omits the values that\n    // are `undefined` on the next state.\n    return state.setQueryParameters(Object.keys(widgetParams.searchParameters).reduce(function(acc, key) {\n        return $82c6985a45454c6e$var$_objectSpread($82c6985a45454c6e$var$_objectSpread({}, acc), {}, $82c6985a45454c6e$var$_defineProperty({}, key, undefined));\n    }, {}));\n}\nvar $82c6985a45454c6e$var$connectConfigure = function connectConfigure() {\n    var renderFn = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : (0, $dba781b2f4cd6c52$export$8793edee2d425525);\n    var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : (0, $dba781b2f4cd6c52$export$8793edee2d425525);\n    return function(widgetParams) {\n        if (!widgetParams || !(0, $75a4fd312a615f00$export$53b83ca8eaab0383)(widgetParams.searchParameters)) throw new Error($82c6985a45454c6e$var$withUsage(\"The `searchParameters` option expects an object.\"));\n        var connectorState = {};\n        function refine(helper) {\n            return function(searchParameters) {\n                // Merge new `searchParameters` with the ones set from other widgets\n                var actualState = $82c6985a45454c6e$var$getInitialSearchParameters(helper.state, widgetParams);\n                var nextSearchParameters = (0, $cdcc1435cfc6072b$export$8049d91f25899769)(actualState, new (0, (/*@__PURE__*/$parcel$interopDefault($6c359160e6887998$exports))).SearchParameters(searchParameters)); // Update original `widgetParams.searchParameters` to the new refined one\n                widgetParams.searchParameters = searchParameters; // Trigger a search with the resolved search parameters\n                helper.setState(nextSearchParameters).search();\n            };\n        }\n        return {\n            $$type: \"ais.configure\",\n            init: function init(initOptions) {\n                var instantSearchInstance = initOptions.instantSearchInstance;\n                renderFn($82c6985a45454c6e$var$_objectSpread($82c6985a45454c6e$var$_objectSpread({}, this.getWidgetRenderState(initOptions)), {}, {\n                    instantSearchInstance: instantSearchInstance\n                }), true);\n            },\n            render: function render(renderOptions) {\n                var instantSearchInstance = renderOptions.instantSearchInstance;\n                renderFn($82c6985a45454c6e$var$_objectSpread($82c6985a45454c6e$var$_objectSpread({}, this.getWidgetRenderState(renderOptions)), {}, {\n                    instantSearchInstance: instantSearchInstance\n                }), false);\n            },\n            dispose: function dispose(_ref) {\n                var state = _ref.state;\n                unmountFn();\n                return $82c6985a45454c6e$var$getInitialSearchParameters(state, widgetParams);\n            },\n            getRenderState: function getRenderState(renderState, renderOptions) {\n                var _renderState$configur;\n                var widgetRenderState = this.getWidgetRenderState(renderOptions);\n                return $82c6985a45454c6e$var$_objectSpread($82c6985a45454c6e$var$_objectSpread({}, renderState), {}, {\n                    configure: $82c6985a45454c6e$var$_objectSpread($82c6985a45454c6e$var$_objectSpread({}, widgetRenderState), {}, {\n                        widgetParams: $82c6985a45454c6e$var$_objectSpread($82c6985a45454c6e$var$_objectSpread({}, widgetRenderState.widgetParams), {}, {\n                            searchParameters: (0, $cdcc1435cfc6072b$export$8049d91f25899769)(new (0, (/*@__PURE__*/$parcel$interopDefault($6c359160e6887998$exports))).SearchParameters((_renderState$configur = renderState.configure) === null || _renderState$configur === void 0 ? void 0 : _renderState$configur.widgetParams.searchParameters), new (0, (/*@__PURE__*/$parcel$interopDefault($6c359160e6887998$exports))).SearchParameters(widgetRenderState.widgetParams.searchParameters)).getQueryParams()\n                        })\n                    })\n                });\n            },\n            getWidgetRenderState: function getWidgetRenderState(_ref2) {\n                var helper = _ref2.helper;\n                if (!connectorState.refine) connectorState.refine = refine(helper);\n                return {\n                    refine: connectorState.refine,\n                    widgetParams: widgetParams\n                };\n            },\n            getWidgetSearchParameters: function getWidgetSearchParameters(state, _ref3) {\n                var uiState = _ref3.uiState;\n                return (0, $cdcc1435cfc6072b$export$8049d91f25899769)(state, new (0, (/*@__PURE__*/$parcel$interopDefault($6c359160e6887998$exports))).SearchParameters($82c6985a45454c6e$var$_objectSpread($82c6985a45454c6e$var$_objectSpread({}, uiState.configure), widgetParams.searchParameters)));\n            },\n            getWidgetUiState: function getWidgetUiState(uiState) {\n                return $82c6985a45454c6e$var$_objectSpread($82c6985a45454c6e$var$_objectSpread({}, uiState), {}, {\n                    configure: $82c6985a45454c6e$var$_objectSpread($82c6985a45454c6e$var$_objectSpread({}, uiState.configure), widgetParams.searchParameters)\n                });\n            }\n        };\n    };\n};\nvar $82c6985a45454c6e$export$2e2bcd8739ae039 = $82c6985a45454c6e$var$connectConfigure;\n\n\n\nfunction $d384af5640276fb9$var$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 $d384af5640276fb9$var$_objectSpread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        if (i % 2) $d384af5640276fb9$var$ownKeys(Object(source), true).forEach(function(key) {\n            $d384af5640276fb9$var$_defineProperty(target, key, source[key]);\n        });\n        else if (Object.getOwnPropertyDescriptors) Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n        else $d384af5640276fb9$var$ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nfunction $d384af5640276fb9$var$_defineProperty(obj, key, value) {\n    if (key in obj) Object.defineProperty(obj, key, {\n        value: value,\n        enumerable: true,\n        configurable: true,\n        writable: true\n    });\n    else obj[key] = value;\n    return obj;\n}\n/**\n * A list of [search parameters](https://www.algolia.com/doc/api-reference/search-api-parameters/)\n * to enable when the widget mounts.\n */ var $d384af5640276fb9$var$configure = function configure(widgetParams) {\n    // This is a renderless widget that falls back to the connector's\n    // noop render and unmount functions.\n    var makeWidget = (0, $82c6985a45454c6e$export$2e2bcd8739ae039)((0, $dba781b2f4cd6c52$export$8793edee2d425525));\n    return $d384af5640276fb9$var$_objectSpread($d384af5640276fb9$var$_objectSpread({}, makeWidget({\n        searchParameters: widgetParams\n    })), {}, {\n        $$widgetType: \"ais.configure\"\n    });\n};\nvar $d384af5640276fb9$export$2e2bcd8739ae039 = $d384af5640276fb9$var$configure;\n\nvar $450fc775b2f7950e$var$n, $450fc775b2f7950e$export$41c562ebe57d11e2, $450fc775b2f7950e$var$u, $450fc775b2f7950e$export$a8257692ac88316c, $450fc775b2f7950e$var$t, $450fc775b2f7950e$var$o, $450fc775b2f7950e$var$r, $450fc775b2f7950e$var$f = {}, $450fc775b2f7950e$var$e = [], $450fc775b2f7950e$var$c = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;\nfunction $450fc775b2f7950e$var$s(n, l) {\n    for(var u in l)n[u] = l[u];\n    return n;\n}\nfunction $450fc775b2f7950e$var$a(n) {\n    var l = n.parentNode;\n    l && l.removeChild(n);\n}\nfunction $450fc775b2f7950e$export$c8a8987d4410bf2d(l, u, i) {\n    var t, o, r, f = {};\n    for(r in u)\"key\" == r ? t = u[r] : \"ref\" == r ? o = u[r] : f[r] = u[r];\n    if (arguments.length > 2 && (f.children = arguments.length > 3 ? $450fc775b2f7950e$var$n.call(arguments, 2) : i), \"function\" == typeof l && null != l.defaultProps) for(r in l.defaultProps)void 0 === f[r] && (f[r] = l.defaultProps[r]);\n    return $450fc775b2f7950e$var$v(l, f, t, o, null);\n}\nfunction $450fc775b2f7950e$var$v(n, i, t, o, r) {\n    var f = {\n        type: n,\n        props: i,\n        key: t,\n        ref: o,\n        __k: null,\n        __: null,\n        __b: 0,\n        __e: null,\n        __d: void 0,\n        __c: null,\n        __h: null,\n        constructor: void 0,\n        __v: null == r ? ++$450fc775b2f7950e$var$u : r\n    };\n    return null == r && null != $450fc775b2f7950e$export$41c562ebe57d11e2.vnode && $450fc775b2f7950e$export$41c562ebe57d11e2.vnode(f), f;\n}\nfunction $450fc775b2f7950e$export$7d1e3a5e95ceca43() {\n    return {\n        current: null\n    };\n}\nfunction $450fc775b2f7950e$export$ffb0004e005737fa(n) {\n    return n.children;\n}\nfunction $450fc775b2f7950e$export$16fa2f45be04daa8(n, l) {\n    this.props = n, this.context = l;\n}\nfunction $450fc775b2f7950e$var$_(n, l) {\n    if (null == l) return n.__ ? $450fc775b2f7950e$var$_(n.__, n.__.__k.indexOf(n) + 1) : null;\n    for(var u; l < n.__k.length; l++)if (null != (u = n.__k[l]) && null != u.__e) return u.__e;\n    return \"function\" == typeof n.type ? $450fc775b2f7950e$var$_(n) : null;\n}\nfunction $450fc775b2f7950e$var$k(n) {\n    var l, u;\n    if (null != (n = n.__) && null != n.__c) {\n        for(n.__e = n.__c.base = null, l = 0; l < n.__k.length; l++)if (null != (u = n.__k[l]) && null != u.__e) {\n            n.__e = n.__c.base = u.__e;\n            break;\n        }\n        return $450fc775b2f7950e$var$k(n);\n    }\n}\nfunction $450fc775b2f7950e$var$b(n) {\n    (!n.__d && (n.__d = !0) && $450fc775b2f7950e$var$t.push(n) && !$450fc775b2f7950e$var$g.__r++ || $450fc775b2f7950e$var$o !== $450fc775b2f7950e$export$41c562ebe57d11e2.debounceRendering) && (($450fc775b2f7950e$var$o = $450fc775b2f7950e$export$41c562ebe57d11e2.debounceRendering) || setTimeout)($450fc775b2f7950e$var$g);\n}\nfunction $450fc775b2f7950e$var$g() {\n    for(var n; $450fc775b2f7950e$var$g.__r = $450fc775b2f7950e$var$t.length;)n = $450fc775b2f7950e$var$t.sort(function(n, l) {\n        return n.__v.__b - l.__v.__b;\n    }), $450fc775b2f7950e$var$t = [], n.some(function(n) {\n        var l, u, i, t, o, r;\n        n.__d && (o = (t = (l = n).__v).__e, (r = l.__P) && (u = [], (i = $450fc775b2f7950e$var$s({}, t)).__v = t.__v + 1, $450fc775b2f7950e$var$j(r, t, i, l.__n, void 0 !== r.ownerSVGElement, null != t.__h ? [\n            o\n        ] : null, u, null == o ? $450fc775b2f7950e$var$_(t) : o, t.__h), $450fc775b2f7950e$var$z(u, t), t.__e != o && $450fc775b2f7950e$var$k(t)));\n    });\n}\nfunction $450fc775b2f7950e$var$w(n, l, u, i, t, o, r, c, s, a) {\n    var h, y, d, k, b, g, w, x = i && i.__k || $450fc775b2f7950e$var$e, C = x.length;\n    for(u.__k = [], h = 0; h < l.length; h++)if (null != (k = u.__k[h] = null == (k = l[h]) || \"boolean\" == typeof k ? null : \"string\" == typeof k || \"number\" == typeof k || \"bigint\" == typeof k ? $450fc775b2f7950e$var$v(null, k, null, null, k) : Array.isArray(k) ? $450fc775b2f7950e$var$v($450fc775b2f7950e$export$ffb0004e005737fa, {\n        children: k\n    }, null, null, null) : k.__b > 0 ? $450fc775b2f7950e$var$v(k.type, k.props, k.key, k.ref ? k.ref : null, k.__v) : k)) {\n        if (k.__ = u, k.__b = u.__b + 1, null === (d = x[h]) || d && k.key == d.key && k.type === d.type) x[h] = void 0;\n        else for(y = 0; y < C; y++){\n            if ((d = x[y]) && k.key == d.key && k.type === d.type) {\n                x[y] = void 0;\n                break;\n            }\n            d = null;\n        }\n        $450fc775b2f7950e$var$j(n, k, d = d || $450fc775b2f7950e$var$f, t, o, r, c, s, a), b = k.__e, (y = k.ref) && d.ref != y && (w || (w = []), d.ref && w.push(d.ref, null, k), w.push(y, k.__c || b, k)), null != b ? (null == g && (g = b), \"function\" == typeof k.type && k.__k === d.__k ? k.__d = s = $450fc775b2f7950e$var$m(k, s, n) : s = $450fc775b2f7950e$var$A(n, k, d, x, b, s), \"function\" == typeof u.type && (u.__d = s)) : s && d.__e == s && s.parentNode != n && (s = $450fc775b2f7950e$var$_(d));\n    }\n    for(u.__e = g, h = C; h--;)null != x[h] && (\"function\" == typeof u.type && null != x[h].__e && x[h].__e == u.__d && (u.__d = $450fc775b2f7950e$var$_(i, h + 1)), $450fc775b2f7950e$var$N(x[h], x[h]));\n    if (w) for(h = 0; h < w.length; h++)$450fc775b2f7950e$var$M(w[h], w[++h], w[++h]);\n}\nfunction $450fc775b2f7950e$var$m(n, l, u) {\n    for(var i, t = n.__k, o = 0; t && o < t.length; o++)(i = t[o]) && (i.__ = n, l = \"function\" == typeof i.type ? $450fc775b2f7950e$var$m(i, l, u) : $450fc775b2f7950e$var$A(u, i, i, t, i.__e, l));\n    return l;\n}\nfunction $450fc775b2f7950e$export$47e4c5b300681277(n, l) {\n    return l = l || [], null == n || \"boolean\" == typeof n || (Array.isArray(n) ? n.some(function(n) {\n        $450fc775b2f7950e$export$47e4c5b300681277(n, l);\n    }) : l.push(n)), l;\n}\nfunction $450fc775b2f7950e$var$A(n, l, u, i, t, o) {\n    var r, f, e;\n    if (void 0 !== l.__d) r = l.__d, l.__d = void 0;\n    else if (null == u || t != o || null == t.parentNode) n: if (null == o || o.parentNode !== n) n.appendChild(t), r = null;\n    else {\n        for(f = o, e = 0; (f = f.nextSibling) && e < i.length; e += 2)if (f == t) break n;\n        n.insertBefore(t, o), r = o;\n    }\n    return void 0 !== r ? r : t.nextSibling;\n}\nfunction $450fc775b2f7950e$var$C(n, l, u, i, t) {\n    var o;\n    for(o in u)\"children\" === o || \"key\" === o || o in l || $450fc775b2f7950e$var$H(n, o, null, u[o], i);\n    for(o in l)t && \"function\" != typeof l[o] || \"children\" === o || \"key\" === o || \"value\" === o || \"checked\" === o || u[o] === l[o] || $450fc775b2f7950e$var$H(n, o, l[o], u[o], i);\n}\nfunction $450fc775b2f7950e$var$$(n, l, u) {\n    \"-\" === l[0] ? n.setProperty(l, u) : n[l] = null == u ? \"\" : \"number\" != typeof u || $450fc775b2f7950e$var$c.test(l) ? u : u + \"px\";\n}\nfunction $450fc775b2f7950e$var$H(n, l, u, i, t) {\n    var o;\n    n: if (\"style\" === l) {\n        if (\"string\" == typeof u) n.style.cssText = u;\n        else {\n            if (\"string\" == typeof i && (n.style.cssText = i = \"\"), i) for(l in i)u && l in u || $450fc775b2f7950e$var$$(n.style, l, \"\");\n            if (u) for(l in u)i && u[l] === i[l] || $450fc775b2f7950e$var$$(n.style, l, u[l]);\n        }\n    } else if (\"o\" === l[0] && \"n\" === l[1]) o = l !== (l = l.replace(/Capture$/, \"\")), l = l.toLowerCase() in n ? l.toLowerCase().slice(2) : l.slice(2), n.l || (n.l = {}), n.l[l + o] = u, u ? i || n.addEventListener(l, o ? $450fc775b2f7950e$var$T : $450fc775b2f7950e$var$I, o) : n.removeEventListener(l, o ? $450fc775b2f7950e$var$T : $450fc775b2f7950e$var$I, o);\n    else if (\"dangerouslySetInnerHTML\" !== l) {\n        if (t) l = l.replace(/xlink(H|:h)/, \"h\").replace(/sName$/, \"s\");\n        else if (\"href\" !== l && \"list\" !== l && \"form\" !== l && \"tabIndex\" !== l && \"download\" !== l && l in n) try {\n            n[l] = null == u ? \"\" : u;\n            break n;\n        } catch (n) {}\n        \"function\" == typeof u || (null != u && (!1 !== u || \"a\" === l[0] && \"r\" === l[1]) ? n.setAttribute(l, u) : n.removeAttribute(l));\n    }\n}\nfunction $450fc775b2f7950e$var$I(n) {\n    this.l[n.type + !1]($450fc775b2f7950e$export$41c562ebe57d11e2.event ? $450fc775b2f7950e$export$41c562ebe57d11e2.event(n) : n);\n}\nfunction $450fc775b2f7950e$var$T(n) {\n    this.l[n.type + !0]($450fc775b2f7950e$export$41c562ebe57d11e2.event ? $450fc775b2f7950e$export$41c562ebe57d11e2.event(n) : n);\n}\nfunction $450fc775b2f7950e$var$j(n, u, i, t, o, r, f, e, c) {\n    var a, h, v, y, _, k, b, g, m, x, A, C, $, H = u.type;\n    if (void 0 !== u.constructor) return null;\n    null != i.__h && (c = i.__h, e = u.__e = i.__e, u.__h = null, r = [\n        e\n    ]), (a = $450fc775b2f7950e$export$41c562ebe57d11e2.__b) && a(u);\n    try {\n        n: if (\"function\" == typeof H) {\n            if (g = u.props, m = (a = H.contextType) && t[a.__c], x = a ? m ? m.props.value : a.__ : t, i.__c ? b = (h = u.__c = i.__c).__ = h.__E : (\"prototype\" in H && H.prototype.render ? u.__c = h = new H(g, x) : (u.__c = h = new $450fc775b2f7950e$export$16fa2f45be04daa8(g, x), h.constructor = H, h.render = $450fc775b2f7950e$var$O), m && m.sub(h), h.props = g, h.state || (h.state = {}), h.context = x, h.__n = t, v = h.__d = !0, h.__h = []), null == h.__s && (h.__s = h.state), null != H.getDerivedStateFromProps && (h.__s == h.state && (h.__s = $450fc775b2f7950e$var$s({}, h.__s)), $450fc775b2f7950e$var$s(h.__s, H.getDerivedStateFromProps(g, h.__s))), y = h.props, _ = h.state, v) null == H.getDerivedStateFromProps && null != h.componentWillMount && h.componentWillMount(), null != h.componentDidMount && h.__h.push(h.componentDidMount);\n            else {\n                if (null == H.getDerivedStateFromProps && g !== y && null != h.componentWillReceiveProps && h.componentWillReceiveProps(g, x), !h.__e && null != h.shouldComponentUpdate && !1 === h.shouldComponentUpdate(g, h.__s, x) || u.__v === i.__v) {\n                    h.props = g, h.state = h.__s, u.__v !== i.__v && (h.__d = !1), h.__v = u, u.__e = i.__e, u.__k = i.__k, u.__k.forEach(function(n) {\n                        n && (n.__ = u);\n                    }), h.__h.length && f.push(h);\n                    break n;\n                }\n                null != h.componentWillUpdate && h.componentWillUpdate(g, h.__s, x), null != h.componentDidUpdate && h.__h.push(function() {\n                    h.componentDidUpdate(y, _, k);\n                });\n            }\n            if (h.context = x, h.props = g, h.__v = u, h.__P = n, A = $450fc775b2f7950e$export$41c562ebe57d11e2.__r, C = 0, \"prototype\" in H && H.prototype.render) h.state = h.__s, h.__d = !1, A && A(u), a = h.render(h.props, h.state, h.context);\n            else do h.__d = !1, A && A(u), a = h.render(h.props, h.state, h.context), h.state = h.__s;\n            while (h.__d && ++C < 25);\n            h.state = h.__s, null != h.getChildContext && (t = $450fc775b2f7950e$var$s($450fc775b2f7950e$var$s({}, t), h.getChildContext())), v || null == h.getSnapshotBeforeUpdate || (k = h.getSnapshotBeforeUpdate(y, _)), $ = null != a && a.type === $450fc775b2f7950e$export$ffb0004e005737fa && null == a.key ? a.props.children : a, $450fc775b2f7950e$var$w(n, Array.isArray($) ? $ : [\n                $\n            ], u, i, t, o, r, f, e, c), h.base = u.__e, u.__h = null, h.__h.length && f.push(h), b && (h.__E = h.__ = null), h.__e = !1;\n        } else null == r && u.__v === i.__v ? (u.__k = i.__k, u.__e = i.__e) : u.__e = $450fc775b2f7950e$var$L(i.__e, u, i, t, o, r, f, c);\n        (a = $450fc775b2f7950e$export$41c562ebe57d11e2.diffed) && a(u);\n    } catch (n) {\n        u.__v = null, (c || null != r) && (u.__e = e, u.__h = !!c, r[r.indexOf(e)] = null), $450fc775b2f7950e$export$41c562ebe57d11e2.__e(n, u, i);\n    }\n}\nfunction $450fc775b2f7950e$var$z(n, u) {\n    $450fc775b2f7950e$export$41c562ebe57d11e2.__c && $450fc775b2f7950e$export$41c562ebe57d11e2.__c(u, n), n.some(function(u) {\n        try {\n            n = u.__h, u.__h = [], n.some(function(n) {\n                n.call(u);\n            });\n        } catch (n) {\n            $450fc775b2f7950e$export$41c562ebe57d11e2.__e(n, u.__v);\n        }\n    });\n}\nfunction $450fc775b2f7950e$var$L(l, u, i, t, o, r, e, c) {\n    var s, h, v, y = i.props, p = u.props, d = u.type, k = 0;\n    if (\"svg\" === d && (o = !0), null != r) {\n        for(; k < r.length; k++)if ((s = r[k]) && \"setAttribute\" in s == !!d && (d ? s.localName === d : 3 === s.nodeType)) {\n            l = s, r[k] = null;\n            break;\n        }\n    }\n    if (null == l) {\n        if (null === d) return document.createTextNode(p);\n        l = o ? document.createElementNS(\"http://www.w3.org/2000/svg\", d) : document.createElement(d, p.is && p), r = null, c = !1;\n    }\n    if (null === d) y === p || c && l.data === p || (l.data = p);\n    else {\n        if (r = r && $450fc775b2f7950e$var$n.call(l.childNodes), h = (y = i.props || $450fc775b2f7950e$var$f).dangerouslySetInnerHTML, v = p.dangerouslySetInnerHTML, !c) {\n            if (null != r) for(y = {}, k = 0; k < l.attributes.length; k++)y[l.attributes[k].name] = l.attributes[k].value;\n            (v || h) && (v && (h && v.__html == h.__html || v.__html === l.innerHTML) || (l.innerHTML = v && v.__html || \"\"));\n        }\n        if ($450fc775b2f7950e$var$C(l, p, y, o, c), v) u.__k = [];\n        else if (k = u.props.children, $450fc775b2f7950e$var$w(l, Array.isArray(k) ? k : [\n            k\n        ], u, i, t, o && \"foreignObject\" !== d, r, e, r ? r[0] : i.__k && $450fc775b2f7950e$var$_(i, 0), c), null != r) for(k = r.length; k--;)null != r[k] && $450fc775b2f7950e$var$a(r[k]);\n        c || (\"value\" in p && void 0 !== (k = p.value) && (k !== l.value || \"progress\" === d && !k || \"option\" === d && k !== y.value) && $450fc775b2f7950e$var$H(l, \"value\", k, y.value, !1), \"checked\" in p && void 0 !== (k = p.checked) && k !== l.checked && $450fc775b2f7950e$var$H(l, \"checked\", k, y.checked, !1));\n    }\n    return l;\n}\nfunction $450fc775b2f7950e$var$M(n, u, i) {\n    try {\n        \"function\" == typeof n ? n(u) : n.current = u;\n    } catch (n) {\n        $450fc775b2f7950e$export$41c562ebe57d11e2.__e(n, i);\n    }\n}\nfunction $450fc775b2f7950e$var$N(n, u, i) {\n    var t, o;\n    if ($450fc775b2f7950e$export$41c562ebe57d11e2.unmount && $450fc775b2f7950e$export$41c562ebe57d11e2.unmount(n), (t = n.ref) && (t.current && t.current !== n.__e || $450fc775b2f7950e$var$M(t, null, u)), null != (t = n.__c)) {\n        if (t.componentWillUnmount) try {\n            t.componentWillUnmount();\n        } catch (n) {\n            $450fc775b2f7950e$export$41c562ebe57d11e2.__e(n, u);\n        }\n        t.base = t.__P = null, n.__c = void 0;\n    }\n    if (t = n.__k) for(o = 0; o < t.length; o++)t[o] && $450fc775b2f7950e$var$N(t[o], u, \"function\" != typeof n.type);\n    i || null == n.__e || $450fc775b2f7950e$var$a(n.__e), n.__ = n.__e = n.__d = void 0;\n}\nfunction $450fc775b2f7950e$var$O(n, l, u) {\n    return this.constructor(n, u);\n}\nfunction $450fc775b2f7950e$export$b3890eb0ae9dca99(u, i, t) {\n    var o, r, e;\n    $450fc775b2f7950e$export$41c562ebe57d11e2.__ && $450fc775b2f7950e$export$41c562ebe57d11e2.__(u, i), r = (o = \"function\" == typeof t) ? null : t && t.__k || i.__k, e = [], $450fc775b2f7950e$var$j(i, u = (!o && t || i).__k = $450fc775b2f7950e$export$c8a8987d4410bf2d($450fc775b2f7950e$export$ffb0004e005737fa, null, [\n        u\n    ]), r || $450fc775b2f7950e$var$f, $450fc775b2f7950e$var$f, void 0 !== i.ownerSVGElement, !o && t ? [\n        t\n    ] : r ? null : i.firstChild ? $450fc775b2f7950e$var$n.call(i.childNodes) : null, e, !o && t ? t : r ? r.__e : i.firstChild, o), $450fc775b2f7950e$var$z(e, u);\n}\nfunction $450fc775b2f7950e$export$fa8d919ba61d84db(n, l) {\n    $450fc775b2f7950e$export$b3890eb0ae9dca99(n, l, $450fc775b2f7950e$export$fa8d919ba61d84db);\n}\nfunction $450fc775b2f7950e$export$e530037191fcd5d7(l, u, i) {\n    var t, o, r, f = $450fc775b2f7950e$var$s({}, l.props);\n    for(r in u)\"key\" == r ? t = u[r] : \"ref\" == r ? o = u[r] : f[r] = u[r];\n    return arguments.length > 2 && (f.children = arguments.length > 3 ? $450fc775b2f7950e$var$n.call(arguments, 2) : i), $450fc775b2f7950e$var$v(l.type, f, t || l.key, o || l.ref, null);\n}\nfunction $450fc775b2f7950e$export$fd42f52fd3ae1109(n, l) {\n    var u = {\n        __c: l = \"__cC\" + $450fc775b2f7950e$var$r++,\n        __: n,\n        Consumer: function(n, l) {\n            return n.children(l);\n        },\n        Provider: function(n) {\n            var u, i;\n            return this.getChildContext || (u = [], (i = {})[l] = this, this.getChildContext = function() {\n                return i;\n            }, this.shouldComponentUpdate = function(n) {\n                this.props.value !== n.value && u.some($450fc775b2f7950e$var$b);\n            }, this.sub = function(n) {\n                u.push(n);\n                var l = n.componentWillUnmount;\n                n.componentWillUnmount = function() {\n                    u.splice(u.indexOf(n), 1), l && l.call(n);\n                };\n            }), n.children;\n        }\n    };\n    return u.Provider.__ = u.Consumer.contextType = u;\n}\n$450fc775b2f7950e$var$n = $450fc775b2f7950e$var$e.slice, $450fc775b2f7950e$export$41c562ebe57d11e2 = {\n    __e: function(n, l, u, i) {\n        for(var t, o, r; l = l.__;)if ((t = l.__c) && !t.__) try {\n            if ((o = t.constructor) && null != o.getDerivedStateFromError && (t.setState(o.getDerivedStateFromError(n)), r = t.__d), null != t.componentDidCatch && (t.componentDidCatch(n, i || {}), r = t.__d), r) return t.__E = t;\n        } catch (l) {\n            n = l;\n        }\n        throw n;\n    }\n}, $450fc775b2f7950e$var$u = 0, $450fc775b2f7950e$export$a8257692ac88316c = function(n) {\n    return null != n && void 0 === n.constructor;\n}, $450fc775b2f7950e$export$16fa2f45be04daa8.prototype.setState = function(n, l) {\n    var u;\n    u = null != this.__s && this.__s !== this.state ? this.__s : this.__s = $450fc775b2f7950e$var$s({}, this.state), \"function\" == typeof n && (n = n($450fc775b2f7950e$var$s({}, u), this.props)), n && $450fc775b2f7950e$var$s(u, n), null != n && this.__v && (l && this.__h.push(l), $450fc775b2f7950e$var$b(this));\n}, $450fc775b2f7950e$export$16fa2f45be04daa8.prototype.forceUpdate = function(n) {\n    this.__v && (this.__e = !0, n && this.__h.push(n), $450fc775b2f7950e$var$b(this));\n}, $450fc775b2f7950e$export$16fa2f45be04daa8.prototype.render = $450fc775b2f7950e$export$ffb0004e005737fa, $450fc775b2f7950e$var$t = [], $450fc775b2f7950e$var$g.__r = 0, $450fc775b2f7950e$var$r = 0;\n\n\nvar $f8c99c41bd600645$exports = {};\n/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/ /* global define */ (function() {\n    \"use strict\";\n    var hasOwn = {}.hasOwnProperty;\n    var nativeCodeString = \"[native code]\";\n    function classNames() {\n        var classes = [];\n        for(var i = 0; i < arguments.length; i++){\n            var arg = arguments[i];\n            if (!arg) continue;\n            var argType = typeof arg;\n            if (argType === \"string\" || argType === \"number\") classes.push(arg);\n            else if (Array.isArray(arg)) {\n                if (arg.length) {\n                    var inner = classNames.apply(null, arg);\n                    if (inner) classes.push(inner);\n                }\n            } else if (argType === \"object\") {\n                if (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes(\"[native code]\")) {\n                    classes.push(arg.toString());\n                    continue;\n                }\n                for(var key in arg)if (hasOwn.call(arg, key) && arg[key]) classes.push(key);\n            }\n        }\n        return classes.join(\" \");\n    }\n    if (0, $f8c99c41bd600645$exports) {\n        classNames.default = classNames;\n        $f8c99c41bd600645$exports = classNames;\n    } else if (typeof define === \"function\" && typeof define.amd === \"object\" && define.amd) // register as 'classnames', consistent with npm package name\n    define(\"classnames\", [], function() {\n        return classNames;\n    });\n    else window.classNames = classNames;\n})();\n\n\nfunction $9efb32683b3714cf$var$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 $9efb32683b3714cf$var$_objectSpread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        if (i % 2) $9efb32683b3714cf$var$ownKeys(Object(source), true).forEach(function(key) {\n            $9efb32683b3714cf$var$_defineProperty(target, key, source[key]);\n        });\n        else if (Object.getOwnPropertyDescriptors) Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n        else $9efb32683b3714cf$var$ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nfunction $9efb32683b3714cf$var$_defineProperty(obj, key, value) {\n    if (key in obj) Object.defineProperty(obj, key, {\n        value: value,\n        enumerable: true,\n        configurable: true,\n        writable: true\n    });\n    else obj[key] = value;\n    return obj;\n}\nfunction $9efb32683b3714cf$export$33d742d8ee5a4609(hits, page, hitsPerPage) {\n    return hits.map(function(hit, idx) {\n        return $9efb32683b3714cf$var$_objectSpread($9efb32683b3714cf$var$_objectSpread({}, hit), {}, {\n            __position: hitsPerPage * page + idx + 1\n        });\n    });\n}\n\nfunction $35cb44110fb52d3a$var$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 $35cb44110fb52d3a$var$_objectSpread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        if (i % 2) $35cb44110fb52d3a$var$ownKeys(Object(source), true).forEach(function(key) {\n            $35cb44110fb52d3a$var$_defineProperty(target, key, source[key]);\n        });\n        else if (Object.getOwnPropertyDescriptors) Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n        else $35cb44110fb52d3a$var$ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nfunction $35cb44110fb52d3a$var$_defineProperty(obj, key, value) {\n    if (key in obj) Object.defineProperty(obj, key, {\n        value: value,\n        enumerable: true,\n        configurable: true,\n        writable: true\n    });\n    else obj[key] = value;\n    return obj;\n}\nfunction $35cb44110fb52d3a$export$b8f834386ea30952(hits, queryID) {\n    if (!queryID) return hits;\n    return hits.map(function(hit) {\n        return $35cb44110fb52d3a$var$_objectSpread($35cb44110fb52d3a$var$_objectSpread({}, hit), {}, {\n            __queryID: queryID\n        });\n    });\n}\n\nfunction $3e64027c30ce4d57$export$11cc42aebef2ef3a(object) {\n    return Object.prototype.toString.call(object).slice(8, -1);\n}\n\n\nfunction $86d1c5f90fff2f24$export$adc2a8e09aa583ee(rendering, usage) {\n    if (rendering === undefined || typeof rendering !== \"function\") throw new Error(\"The render function is not valid (received type \".concat((0, $3e64027c30ce4d57$export$11cc42aebef2ef3a)(rendering), \").\\n\\n\").concat(usage));\n}\n\nfunction $61d6f7a445550123$export$44b4521aa38272f2(payload) {\n    return btoa(encodeURIComponent(JSON.stringify(payload)));\n}\nfunction $61d6f7a445550123$export$706ea24b0964bee9(serialized) {\n    return JSON.parse(decodeURIComponent(atob(serialized)));\n}\n\n\nfunction $35748c0c4c0cd014$var$_typeof(obj) {\n    \"@babel/helpers - typeof\";\n    if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") $35748c0c4c0cd014$var$_typeof = function _typeof(obj) {\n        return typeof obj;\n    };\n    else $35748c0c4c0cd014$var$_typeof = function _typeof(obj) {\n        return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n    return $35748c0c4c0cd014$var$_typeof(obj);\n}\nfunction $35748c0c4c0cd014$var$chunk(arr) {\n    var chunkSize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 20;\n    var chunks = [];\n    for(var i = 0; i < Math.ceil(arr.length / chunkSize); i++)chunks.push(arr.slice(i * chunkSize, (i + 1) * chunkSize));\n    return chunks;\n}\nvar $35748c0c4c0cd014$var$buildPayloads = function buildPayloads(_ref) {\n    var index = _ref.index, widgetType = _ref.widgetType, methodName = _ref.methodName, args = _ref.args, isSearchStalled = _ref.isSearchStalled;\n    // when there's only one argument, that means it's custom\n    if (args.length === 1 && $35748c0c4c0cd014$var$_typeof(args[0]) === \"object\") return [\n        args[0]\n    ];\n    var eventType = args[0];\n    var hits = args[1];\n    var eventName = args[2];\n    if (!hits) return [];\n    if ((eventType === \"click\" || eventType === \"conversion\") && !eventName) return [];\n    var hitsArray = Array.isArray(hits) ? $35748c0c4c0cd014$var$removeEscapedFromHits(hits) : [\n        hits\n    ];\n    if (hitsArray.length === 0) return [];\n    var queryID = hitsArray[0].__queryID;\n    var hitsChunks = $35748c0c4c0cd014$var$chunk(hitsArray);\n    var objectIDsByChunk = hitsChunks.map(function(batch) {\n        return batch.map(function(hit) {\n            return hit.objectID;\n        });\n    });\n    var positionsByChunk = hitsChunks.map(function(batch) {\n        return batch.map(function(hit) {\n            return hit.__position;\n        });\n    });\n    if (eventType === \"view\") {\n        if (isSearchStalled) return [];\n        return hitsChunks.map(function(batch, i) {\n            return {\n                insightsMethod: \"viewedObjectIDs\",\n                widgetType: widgetType,\n                eventType: eventType,\n                payload: {\n                    eventName: eventName || \"Hits Viewed\",\n                    index: index,\n                    objectIDs: objectIDsByChunk[i]\n                },\n                hits: batch\n            };\n        });\n    } else if (eventType === \"click\") return hitsChunks.map(function(batch, i) {\n        return {\n            insightsMethod: \"clickedObjectIDsAfterSearch\",\n            widgetType: widgetType,\n            eventType: eventType,\n            payload: {\n                eventName: eventName,\n                index: index,\n                queryID: queryID,\n                objectIDs: objectIDsByChunk[i],\n                positions: positionsByChunk[i]\n            },\n            hits: batch\n        };\n    });\n    else if (eventType === \"conversion\") return hitsChunks.map(function(batch, i) {\n        return {\n            insightsMethod: \"convertedObjectIDsAfterSearch\",\n            widgetType: widgetType,\n            eventType: eventType,\n            payload: {\n                eventName: eventName,\n                index: index,\n                queryID: queryID,\n                objectIDs: objectIDsByChunk[i]\n            },\n            hits: batch\n        };\n    });\n    else return [];\n};\nfunction $35748c0c4c0cd014$var$removeEscapedFromHits(hits) {\n    // remove `hits.__escaped` without mutating\n    return hits.slice();\n}\nfunction $35748c0c4c0cd014$export$4139f3a7130239e3(_ref2) {\n    var instantSearchInstance = _ref2.instantSearchInstance, index = _ref2.index, widgetType = _ref2.widgetType;\n    var sendEventForHits = function sendEventForHits() {\n        for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++)args[_key] = arguments[_key];\n        var payloads = $35748c0c4c0cd014$var$buildPayloads({\n            widgetType: widgetType,\n            index: index,\n            methodName: \"sendEvent\",\n            args: args,\n            isSearchStalled: instantSearchInstance._isSearchStalled\n        });\n        payloads.forEach(function(payload) {\n            return instantSearchInstance.sendEventToInsights(payload);\n        });\n    };\n    return sendEventForHits;\n}\nfunction $35748c0c4c0cd014$export$5a3d9973824d9b76(_ref3) {\n    var index = _ref3.index, widgetType = _ref3.widgetType;\n    var bindEventForHits = function bindEventForHits() {\n        for(var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++)args[_key2] = arguments[_key2];\n        var payloads = $35748c0c4c0cd014$var$buildPayloads({\n            widgetType: widgetType,\n            index: index,\n            methodName: \"bindEvent\",\n            args: args,\n            isSearchStalled: false\n        });\n        return payloads.length ? \"data-insights-event=\".concat((0, $61d6f7a445550123$export$44b4521aa38272f2)(payloads)) : \"\";\n    };\n    return bindEventForHits;\n}\n\n/**\n * This implementation is taken from Lodash implementation.\n * See: https://github.com/lodash/lodash/blob/4.17.11-npm/escape.js\n */ // Used to map characters to HTML entities.\nvar $fcb98432e82f2808$var$htmlEntities = {\n    \"&\": \"&amp;\",\n    \"<\": \"&lt;\",\n    \">\": \"&gt;\",\n    '\"': \"&quot;\",\n    \"'\": \"&#39;\"\n}; // Used to match HTML entities and HTML characters.\nvar $fcb98432e82f2808$var$regexUnescapedHtml = /[&<>\"']/g;\nvar $fcb98432e82f2808$var$regexHasUnescapedHtml = RegExp($fcb98432e82f2808$var$regexUnescapedHtml.source);\nfunction $fcb98432e82f2808$export$4e7f196112fea3c5(value) {\n    return value && $fcb98432e82f2808$var$regexHasUnescapedHtml.test(value) ? value.replace($fcb98432e82f2808$var$regexUnescapedHtml, function(character) {\n        return $fcb98432e82f2808$var$htmlEntities[character];\n    }) : value;\n}\n/**\n * This implementation is taken from Lodash implementation.\n * See: https://github.com/lodash/lodash/blob/4.17.11-npm/unescape.js\n */ // Used to map HTML entities to characters.\nvar $fcb98432e82f2808$var$htmlCharacters = {\n    \"&amp;\": \"&\",\n    \"&lt;\": \"<\",\n    \"&gt;\": \">\",\n    \"&quot;\": '\"',\n    \"&#39;\": \"'\"\n}; // Used to match HTML entities and HTML characters.\nvar $fcb98432e82f2808$var$regexEscapedHtml = /&(amp|quot|lt|gt|#39);/g;\nvar $fcb98432e82f2808$var$regexHasEscapedHtml = RegExp($fcb98432e82f2808$var$regexEscapedHtml.source);\nfunction $fcb98432e82f2808$export$e8bacd2802a88316(value) {\n    return value && $fcb98432e82f2808$var$regexHasEscapedHtml.test(value) ? value.replace($fcb98432e82f2808$var$regexEscapedHtml, function(character) {\n        return $fcb98432e82f2808$var$htmlCharacters[character];\n    }) : value;\n}\n\n\n\nfunction $ea7b3b8ada1be339$var$_extends() {\n    $ea7b3b8ada1be339$var$_extends = Object.assign || function(target) {\n        for(var i = 1; i < arguments.length; i++){\n            var source = arguments[i];\n            for(var key in source)if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];\n        }\n        return target;\n    };\n    return $ea7b3b8ada1be339$var$_extends.apply(this, arguments);\n}\nfunction $ea7b3b8ada1be339$var$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 $ea7b3b8ada1be339$var$_objectSpread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        if (i % 2) $ea7b3b8ada1be339$var$ownKeys(Object(source), true).forEach(function(key) {\n            $ea7b3b8ada1be339$var$_defineProperty(target, key, source[key]);\n        });\n        else if (Object.getOwnPropertyDescriptors) Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n        else $ea7b3b8ada1be339$var$ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nfunction $ea7b3b8ada1be339$var$_defineProperty(obj, key, value) {\n    if (key in obj) Object.defineProperty(obj, key, {\n        value: value,\n        enumerable: true,\n        configurable: true,\n        writable: true\n    });\n    else obj[key] = value;\n    return obj;\n}\nvar $ea7b3b8ada1be339$export$1e7338a8952eaf35 = {\n    highlightPreTag: \"__ais-highlight__\",\n    highlightPostTag: \"__/ais-highlight__\"\n};\nvar $ea7b3b8ada1be339$export$62e796b7905e8e6b = {\n    highlightPreTag: \"<mark>\",\n    highlightPostTag: \"</mark>\"\n};\nfunction $ea7b3b8ada1be339$var$replaceTagsAndEscape(value) {\n    return (0, $fcb98432e82f2808$export$4e7f196112fea3c5)(value).replace(new RegExp($ea7b3b8ada1be339$export$1e7338a8952eaf35.highlightPreTag, \"g\"), $ea7b3b8ada1be339$export$62e796b7905e8e6b.highlightPreTag).replace(new RegExp($ea7b3b8ada1be339$export$1e7338a8952eaf35.highlightPostTag, \"g\"), $ea7b3b8ada1be339$export$62e796b7905e8e6b.highlightPostTag);\n}\nfunction $ea7b3b8ada1be339$var$recursiveEscape(input) {\n    if ((0, $75a4fd312a615f00$export$53b83ca8eaab0383)(input) && typeof input.value !== \"string\") return Object.keys(input).reduce(function(acc, key) {\n        return $ea7b3b8ada1be339$var$_objectSpread($ea7b3b8ada1be339$var$_objectSpread({}, acc), {}, $ea7b3b8ada1be339$var$_defineProperty({}, key, $ea7b3b8ada1be339$var$recursiveEscape(input[key])));\n    }, {});\n    if (Array.isArray(input)) return input.map($ea7b3b8ada1be339$var$recursiveEscape);\n    return $ea7b3b8ada1be339$var$_objectSpread($ea7b3b8ada1be339$var$_objectSpread({}, input), {}, {\n        value: $ea7b3b8ada1be339$var$replaceTagsAndEscape(input.value)\n    });\n}\nfunction $ea7b3b8ada1be339$export$9adb036445aab889(hits) {\n    if (hits.__escaped === undefined) {\n        // We don't override the value on hit because it will mutate the raw results\n        // instead we make a shallow copy and we assign the escaped values on it.\n        hits = hits.map(function(_ref) {\n            var hit = $ea7b3b8ada1be339$var$_extends({}, _ref);\n            if (hit._highlightResult) hit._highlightResult = $ea7b3b8ada1be339$var$recursiveEscape(hit._highlightResult);\n            if (hit._snippetResult) hit._snippetResult = $ea7b3b8ada1be339$var$recursiveEscape(hit._snippetResult);\n            return hit;\n        });\n        hits.__escaped = true;\n    }\n    return hits;\n}\nfunction $ea7b3b8ada1be339$export$9ae2e822836b2e1a(facetHits) {\n    return facetHits.map(function(h) {\n        return $ea7b3b8ada1be339$var$_objectSpread($ea7b3b8ada1be339$var$_objectSpread({}, h), {}, {\n            highlighted: $ea7b3b8ada1be339$var$replaceTagsAndEscape(h.highlighted)\n        });\n    });\n}\n\n\nfunction $cf783656762e2f5f$var$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 $cf783656762e2f5f$var$_objectSpread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        if (i % 2) $cf783656762e2f5f$var$ownKeys(Object(source), true).forEach(function(key) {\n            $cf783656762e2f5f$var$_defineProperty(target, key, source[key]);\n        });\n        else if (Object.getOwnPropertyDescriptors) Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n        else $cf783656762e2f5f$var$ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nfunction $cf783656762e2f5f$var$_defineProperty(obj, key, value) {\n    if (key in obj) Object.defineProperty(obj, key, {\n        value: value,\n        enumerable: true,\n        configurable: true,\n        writable: true\n    });\n    else obj[key] = value;\n    return obj;\n}\nvar $cf783656762e2f5f$var$withUsage = (0, $049fad80b24500a5$export$2fde5bffc340821e)({\n    name: \"hits\",\n    connector: true\n});\nvar $cf783656762e2f5f$var$connectHits = function connectHits(renderFn) {\n    var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : (0, $dba781b2f4cd6c52$export$8793edee2d425525);\n    (0, $86d1c5f90fff2f24$export$adc2a8e09aa583ee)(renderFn, $cf783656762e2f5f$var$withUsage());\n    return function(widgetParams) {\n        var _ref = widgetParams || {}, _ref$escapeHTML = _ref.escapeHTML, escapeHTML = _ref$escapeHTML === void 0 ? true : _ref$escapeHTML, _ref$transformItems = _ref.transformItems, transformItems = _ref$transformItems === void 0 ? function(items) {\n            return items;\n        } : _ref$transformItems;\n        var sendEvent;\n        var bindEvent;\n        return {\n            $$type: \"ais.hits\",\n            init: function init(initOptions) {\n                renderFn($cf783656762e2f5f$var$_objectSpread($cf783656762e2f5f$var$_objectSpread({}, this.getWidgetRenderState(initOptions)), {}, {\n                    instantSearchInstance: initOptions.instantSearchInstance\n                }), true);\n            },\n            render: function render(renderOptions) {\n                var renderState = this.getWidgetRenderState(renderOptions);\n                renderFn($cf783656762e2f5f$var$_objectSpread($cf783656762e2f5f$var$_objectSpread({}, renderState), {}, {\n                    instantSearchInstance: renderOptions.instantSearchInstance\n                }), false);\n                renderState.sendEvent(\"view\", renderState.hits);\n            },\n            getRenderState: function getRenderState(renderState, renderOptions) {\n                return $cf783656762e2f5f$var$_objectSpread($cf783656762e2f5f$var$_objectSpread({}, renderState), {}, {\n                    hits: this.getWidgetRenderState(renderOptions)\n                });\n            },\n            getWidgetRenderState: function getWidgetRenderState(_ref2) {\n                var results = _ref2.results, helper = _ref2.helper, instantSearchInstance = _ref2.instantSearchInstance;\n                if (!sendEvent) sendEvent = (0, $35748c0c4c0cd014$export$4139f3a7130239e3)({\n                    instantSearchInstance: instantSearchInstance,\n                    index: helper.getIndex(),\n                    widgetType: this.$$type\n                });\n                if (!bindEvent) bindEvent = (0, $35748c0c4c0cd014$export$5a3d9973824d9b76)({\n                    index: helper.getIndex(),\n                    widgetType: this.$$type\n                });\n                if (!results) return {\n                    hits: [],\n                    results: undefined,\n                    sendEvent: sendEvent,\n                    bindEvent: bindEvent,\n                    widgetParams: widgetParams\n                };\n                if (escapeHTML && results.hits.length > 0) results.hits = (0, $ea7b3b8ada1be339$export$9adb036445aab889)(results.hits);\n                var hitsWithAbsolutePosition = (0, $9efb32683b3714cf$export$33d742d8ee5a4609)(results.hits, results.page, results.hitsPerPage);\n                var hitsWithAbsolutePositionAndQueryID = (0, $35cb44110fb52d3a$export$b8f834386ea30952)(hitsWithAbsolutePosition, results.queryID);\n                var transformedHits = transformItems(hitsWithAbsolutePositionAndQueryID, {\n                    results: results\n                });\n                return {\n                    hits: transformedHits,\n                    results: results,\n                    sendEvent: sendEvent,\n                    bindEvent: bindEvent,\n                    widgetParams: widgetParams\n                };\n            },\n            dispose: function dispose(_ref3) {\n                var state = _ref3.state;\n                unmountFn();\n                if (!escapeHTML) return state;\n                return state.setQueryParameters(Object.keys((0, $ea7b3b8ada1be339$export$1e7338a8952eaf35)).reduce(function(acc, key) {\n                    return $cf783656762e2f5f$var$_objectSpread($cf783656762e2f5f$var$_objectSpread({}, acc), {}, $cf783656762e2f5f$var$_defineProperty({}, key, undefined));\n                }, {}));\n            },\n            getWidgetSearchParameters: function getWidgetSearchParameters(state) {\n                if (!escapeHTML) return state;\n                return state.setQueryParameters((0, $ea7b3b8ada1be339$export$1e7338a8952eaf35));\n            }\n        };\n    };\n};\nvar $cf783656762e2f5f$export$2e2bcd8739ae039 = $cf783656762e2f5f$var$connectHits;\n\n\n\n\n\nfunction $4198f5cd959b5a7d$var$isPrimitive(obj) {\n    return obj !== Object(obj);\n}\nfunction $4198f5cd959b5a7d$export$248d38f6296296c5(first, second) {\n    if (first === second) return true;\n    if ($4198f5cd959b5a7d$var$isPrimitive(first) || $4198f5cd959b5a7d$var$isPrimitive(second) || typeof first === \"function\" || typeof second === \"function\") return first === second;\n    if (Object.keys(first).length !== Object.keys(second).length) return false;\n    for(var _i = 0, _Object$keys = Object.keys(first); _i < _Object$keys.length; _i++){\n        var key = _Object$keys[_i];\n        if (!(key in second)) return false;\n        if (!$4198f5cd959b5a7d$export$248d38f6296296c5(first[key], second[key])) return false;\n    }\n    return true;\n}\n\n\nvar $6ebfb0054e7d59cd$exports = {};\n/*\n *  Copyright 2011 Twitter, Inc.\n *  Licensed under the Apache License, Version 2.0 (the \"License\");\n *  you may not use this file except in compliance with the License.\n *  You may obtain a copy of the License at\n *\n *  http://www.apache.org/licenses/LICENSE-2.0\n *\n *  Unless required by applicable law or agreed to in writing, software\n *  distributed under the License is distributed on an \"AS IS\" BASIS,\n *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *  See the License for the specific language governing permissions and\n *  limitations under the License.\n */ // This file is for use with Node.js. See dist/ for browser files.\nvar $62bac08dc0d55792$exports = {};\n/*\n *  Copyright 2011 Twitter, Inc.\n *  Licensed under the Apache License, Version 2.0 (the \"License\");\n *  you may not use this file except in compliance with the License.\n *  You may obtain a copy of the License at\n *\n *  http://www.apache.org/licenses/LICENSE-2.0\n *\n *  Unless required by applicable law or agreed to in writing, software\n *  distributed under the License is distributed on an \"AS IS\" BASIS,\n *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *  See the License for the specific language governing permissions and\n *  limitations under the License.\n */ (function(Hogan) {\n    // Setup regex  assignments\n    // remove whitespace according to Mustache spec\n    var rIsWhitespace = /\\S/, rQuot = /\\\"/g, rNewline = /\\n/g, rCr = /\\r/g, rSlash = /\\\\/g, rLineSep = /\\u2028/, rParagraphSep = /\\u2029/;\n    Hogan.tags = {\n        \"#\": 1,\n        \"^\": 2,\n        \"<\": 3,\n        \"$\": 4,\n        \"/\": 5,\n        \"!\": 6,\n        \">\": 7,\n        \"=\": 8,\n        \"_v\": 9,\n        \"{\": 10,\n        \"&\": 11,\n        \"_t\": 12\n    };\n    Hogan.scan = function scan(text, delimiters) {\n        var len = text.length, IN_TEXT = 0, IN_TAG_TYPE = 1, IN_TAG = 2, state = IN_TEXT, tagType = null, tag = null, buf = \"\", tokens = [], seenTag = false, i = 0, lineStart = 0, otag = \"{{\", ctag = \"}}\";\n        function addBuf() {\n            if (buf.length > 0) {\n                tokens.push({\n                    tag: \"_t\",\n                    text: new String(buf)\n                });\n                buf = \"\";\n            }\n        }\n        function lineIsWhitespace() {\n            var isAllWhitespace = true;\n            for(var j = lineStart; j < tokens.length; j++){\n                isAllWhitespace = Hogan.tags[tokens[j].tag] < Hogan.tags[\"_v\"] || tokens[j].tag == \"_t\" && tokens[j].text.match(rIsWhitespace) === null;\n                if (!isAllWhitespace) return false;\n            }\n            return isAllWhitespace;\n        }\n        function filterLine(haveSeenTag, noNewLine) {\n            addBuf();\n            if (haveSeenTag && lineIsWhitespace()) {\n                for(var j = lineStart, next; j < tokens.length; j++)if (tokens[j].text) {\n                    if ((next = tokens[j + 1]) && next.tag == \">\") // set indent to token value\n                    next.indent = tokens[j].text.toString();\n                    tokens.splice(j, 1);\n                }\n            } else if (!noNewLine) tokens.push({\n                tag: \"\\n\"\n            });\n            seenTag = false;\n            lineStart = tokens.length;\n        }\n        function changeDelimiters(text, index) {\n            var close = \"=\" + ctag, closeIndex = text.indexOf(close, index), delimiters = trim(text.substring(text.indexOf(\"=\", index) + 1, closeIndex)).split(\" \");\n            otag = delimiters[0];\n            ctag = delimiters[delimiters.length - 1];\n            return closeIndex + close.length - 1;\n        }\n        if (delimiters) {\n            delimiters = delimiters.split(\" \");\n            otag = delimiters[0];\n            ctag = delimiters[1];\n        }\n        for(i = 0; i < len; i++){\n            if (state == IN_TEXT) {\n                if (tagChange(otag, text, i)) {\n                    --i;\n                    addBuf();\n                    state = IN_TAG_TYPE;\n                } else if (text.charAt(i) == \"\\n\") filterLine(seenTag);\n                else buf += text.charAt(i);\n            } else if (state == IN_TAG_TYPE) {\n                i += otag.length - 1;\n                tag = Hogan.tags[text.charAt(i + 1)];\n                tagType = tag ? text.charAt(i + 1) : \"_v\";\n                if (tagType == \"=\") {\n                    i = changeDelimiters(text, i);\n                    state = IN_TEXT;\n                } else {\n                    if (tag) i++;\n                    state = IN_TAG;\n                }\n                seenTag = i;\n            } else if (tagChange(ctag, text, i)) {\n                tokens.push({\n                    tag: tagType,\n                    n: trim(buf),\n                    otag: otag,\n                    ctag: ctag,\n                    i: tagType == \"/\" ? seenTag - otag.length : i + ctag.length\n                });\n                buf = \"\";\n                i += ctag.length - 1;\n                state = IN_TEXT;\n                if (tagType == \"{\") {\n                    if (ctag == \"}}\") i++;\n                    else cleanTripleStache(tokens[tokens.length - 1]);\n                }\n            } else buf += text.charAt(i);\n        }\n        filterLine(seenTag, true);\n        return tokens;\n    };\n    function cleanTripleStache(token) {\n        if (token.n.substr(token.n.length - 1) === \"}\") token.n = token.n.substring(0, token.n.length - 1);\n    }\n    function trim(s) {\n        if (s.trim) return s.trim();\n        return s.replace(/^\\s*|\\s*$/g, \"\");\n    }\n    function tagChange(tag, text, index) {\n        if (text.charAt(index) != tag.charAt(0)) return false;\n        for(var i = 1, l = tag.length; i < l; i++){\n            if (text.charAt(index + i) != tag.charAt(i)) return false;\n        }\n        return true;\n    }\n    // the tags allowed inside super templates\n    var allowedInSuper = {\n        \"_t\": true,\n        \"\\n\": true,\n        \"$\": true,\n        \"/\": true\n    };\n    function buildTree(tokens, kind, stack, customTags) {\n        var instructions = [], opener = null, tail = null, token = null;\n        tail = stack[stack.length - 1];\n        while(tokens.length > 0){\n            token = tokens.shift();\n            if (tail && tail.tag == \"<\" && !(token.tag in allowedInSuper)) throw new Error(\"Illegal content in < super tag.\");\n            if (Hogan.tags[token.tag] <= Hogan.tags[\"$\"] || isOpener(token, customTags)) {\n                stack.push(token);\n                token.nodes = buildTree(tokens, token.tag, stack, customTags);\n            } else if (token.tag == \"/\") {\n                if (stack.length === 0) throw new Error(\"Closing tag without opener: /\" + token.n);\n                opener = stack.pop();\n                if (token.n != opener.n && !isCloser(token.n, opener.n, customTags)) throw new Error(\"Nesting error: \" + opener.n + \" vs. \" + token.n);\n                opener.end = token.i;\n                return instructions;\n            } else if (token.tag == \"\\n\") token.last = tokens.length == 0 || tokens[0].tag == \"\\n\";\n            instructions.push(token);\n        }\n        if (stack.length > 0) throw new Error(\"missing closing tag: \" + stack.pop().n);\n        return instructions;\n    }\n    function isOpener(token, tags) {\n        for(var i = 0, l = tags.length; i < l; i++)if (tags[i].o == token.n) {\n            token.tag = \"#\";\n            return true;\n        }\n    }\n    function isCloser(close, open, tags) {\n        for(var i = 0, l = tags.length; i < l; i++){\n            if (tags[i].c == close && tags[i].o == open) return true;\n        }\n    }\n    function stringifySubstitutions(obj) {\n        var items = [];\n        for(var key in obj)items.push('\"' + esc(key) + '\": function(c,p,t,i) {' + obj[key] + \"}\");\n        return \"{ \" + items.join(\",\") + \" }\";\n    }\n    function stringifyPartials(codeObj) {\n        var partials = [];\n        for(var key in codeObj.partials)partials.push('\"' + esc(key) + '\":{name:\"' + esc(codeObj.partials[key].name) + '\", ' + stringifyPartials(codeObj.partials[key]) + \"}\");\n        return \"partials: {\" + partials.join(\",\") + \"}, subs: \" + stringifySubstitutions(codeObj.subs);\n    }\n    Hogan.stringify = function(codeObj, text, options) {\n        return \"{code: function (c,p,i) { \" + Hogan.wrapMain(codeObj.code) + \" },\" + stringifyPartials(codeObj) + \"}\";\n    };\n    var serialNo = 0;\n    Hogan.generate = function(tree, text, options) {\n        serialNo = 0;\n        var context = {\n            code: \"\",\n            subs: {},\n            partials: {}\n        };\n        Hogan.walk(tree, context);\n        if (options.asString) return this.stringify(context, text, options);\n        return this.makeTemplate(context, text, options);\n    };\n    Hogan.wrapMain = function(code) {\n        return 'var t=this;t.b(i=i||\"\");' + code + \"return t.fl();\";\n    };\n    Hogan.template = Hogan.Template;\n    Hogan.makeTemplate = function(codeObj, text, options) {\n        var template = this.makePartials(codeObj);\n        template.code = new Function(\"c\", \"p\", \"i\", this.wrapMain(codeObj.code));\n        return new this.template(template, text, this, options);\n    };\n    Hogan.makePartials = function(codeObj) {\n        var key, template = {\n            subs: {},\n            partials: codeObj.partials,\n            name: codeObj.name\n        };\n        for(key in template.partials)template.partials[key] = this.makePartials(template.partials[key]);\n        for(key in codeObj.subs)template.subs[key] = new Function(\"c\", \"p\", \"t\", \"i\", codeObj.subs[key]);\n        return template;\n    };\n    function esc(s) {\n        return s.replace(rSlash, \"\\\\\\\\\").replace(rQuot, '\\\\\"').replace(rNewline, \"\\\\n\").replace(rCr, \"\\\\r\").replace(rLineSep, \"\\\\u2028\").replace(rParagraphSep, \"\\\\u2029\");\n    }\n    function chooseMethod(s) {\n        return ~s.indexOf(\".\") ? \"d\" : \"f\";\n    }\n    function createPartial(node, context) {\n        var prefix = \"<\" + (context.prefix || \"\");\n        var sym = prefix + node.n + serialNo++;\n        context.partials[sym] = {\n            name: node.n,\n            partials: {}\n        };\n        context.code += 't.b(t.rp(\"' + esc(sym) + '\",c,p,\"' + (node.indent || \"\") + '\"));';\n        return sym;\n    }\n    Hogan.codegen = {\n        \"#\": function(node, context) {\n            context.code += \"if(t.s(t.\" + chooseMethod(node.n) + '(\"' + esc(node.n) + '\",c,p,1),' + \"c,p,0,\" + node.i + \",\" + node.end + ',\"' + node.otag + \" \" + node.ctag + '\")){' + \"t.rs(c,p,\" + \"function(c,p,t){\";\n            Hogan.walk(node.nodes, context);\n            context.code += \"});c.pop();}\";\n        },\n        \"^\": function(node, context) {\n            context.code += \"if(!t.s(t.\" + chooseMethod(node.n) + '(\"' + esc(node.n) + '\",c,p,1),c,p,1,0,0,\"\")){';\n            Hogan.walk(node.nodes, context);\n            context.code += \"};\";\n        },\n        \">\": createPartial,\n        \"<\": function(node, context) {\n            var ctx = {\n                partials: {},\n                code: \"\",\n                subs: {},\n                inPartial: true\n            };\n            Hogan.walk(node.nodes, ctx);\n            var template = context.partials[createPartial(node, context)];\n            template.subs = ctx.subs;\n            template.partials = ctx.partials;\n        },\n        \"$\": function(node, context) {\n            var ctx = {\n                subs: {},\n                code: \"\",\n                partials: context.partials,\n                prefix: node.n\n            };\n            Hogan.walk(node.nodes, ctx);\n            context.subs[node.n] = ctx.code;\n            if (!context.inPartial) context.code += 't.sub(\"' + esc(node.n) + '\",c,p,i);';\n        },\n        \"\\n\": function(node, context) {\n            context.code += write('\"\\\\n\"' + (node.last ? \"\" : \" + i\"));\n        },\n        \"_v\": function(node, context) {\n            context.code += \"t.b(t.v(t.\" + chooseMethod(node.n) + '(\"' + esc(node.n) + '\",c,p,0)));';\n        },\n        \"_t\": function(node, context) {\n            context.code += write('\"' + esc(node.text) + '\"');\n        },\n        \"{\": tripleStache,\n        \"&\": tripleStache\n    };\n    function tripleStache(node, context) {\n        context.code += \"t.b(t.t(t.\" + chooseMethod(node.n) + '(\"' + esc(node.n) + '\",c,p,0)));';\n    }\n    function write(s) {\n        return \"t.b(\" + s + \");\";\n    }\n    Hogan.walk = function(nodelist, context) {\n        var func;\n        for(var i = 0, l = nodelist.length; i < l; i++){\n            func = Hogan.codegen[nodelist[i].tag];\n            func && func(nodelist[i], context);\n        }\n        return context;\n    };\n    Hogan.parse = function(tokens, text, options) {\n        options = options || {};\n        return buildTree(tokens, \"\", [], options.sectionTags || []);\n    };\n    Hogan.cache = {};\n    Hogan.cacheKey = function(text, options) {\n        return [\n            text,\n            !!options.asString,\n            !!options.disableLambda,\n            options.delimiters,\n            !!options.modelGet\n        ].join(\"||\");\n    };\n    Hogan.compile = function(text, options) {\n        options = options || {};\n        var key = Hogan.cacheKey(text, options);\n        var template = this.cache[key];\n        if (template) {\n            var partials = template.partials;\n            for(var name in partials)delete partials[name].instance;\n            return template;\n        }\n        template = this.generate(this.parse(this.scan(text, options.delimiters), text, options), text, options);\n        return this.cache[key] = template;\n    };\n})($62bac08dc0d55792$exports);\n\n\n\n$62bac08dc0d55792$exports.Template = (parcelRequire(\"9w6zV\")).Template;\n$62bac08dc0d55792$exports.template = $62bac08dc0d55792$exports.Template;\n$6ebfb0054e7d59cd$exports = $62bac08dc0d55792$exports;\n\n\n\nvar $71e7bf294e7fa662$var$n = function(t, s, r, e) {\n    var u;\n    s[0] = 0;\n    for(var h = 1; h < s.length; h++){\n        var p = s[h++], a = s[h] ? (s[0] |= p ? 1 : 2, r[s[h++]]) : s[++h];\n        3 === p ? e[0] = a : 4 === p ? e[1] = Object.assign(e[1] || {}, a) : 5 === p ? (e[1] = e[1] || {})[s[++h]] = a : 6 === p ? e[1][s[++h]] += a + \"\" : p ? (u = t.apply(a, $71e7bf294e7fa662$var$n(t, a, r, [\n            \"\",\n            null\n        ])), e.push(u), a[0] ? s[0] |= 2 : (s[h - 2] = 0, s[h] = u)) : e.push(a);\n    }\n    return e;\n}, $71e7bf294e7fa662$var$t = new Map;\nfunction $71e7bf294e7fa662$export$2e2bcd8739ae039(s) {\n    var r = $71e7bf294e7fa662$var$t.get(this);\n    return r || (r = new Map, $71e7bf294e7fa662$var$t.set(this, r)), (r = $71e7bf294e7fa662$var$n(this, r.get(s) || (r.set(s, r = function(n) {\n        for(var t, s, r = 1, e = \"\", u = \"\", h = [\n            0\n        ], p = function(n) {\n            1 === r && (n || (e = e.replace(/^\\s*\\n\\s*|\\s*\\n\\s*$/g, \"\"))) ? h.push(0, n, e) : 3 === r && (n || e) ? (h.push(3, n, e), r = 2) : 2 === r && \"...\" === e && n ? h.push(4, n, 0) : 2 === r && e && !n ? h.push(5, 0, !0, e) : r >= 5 && ((e || !n && 5 === r) && (h.push(r, 0, e, s), r = 6), n && (h.push(r, n, 0, s), r = 6)), e = \"\";\n        }, a = 0; a < n.length; a++){\n            a && (1 === r && p(), p(a));\n            for(var l = 0; l < n[a].length; l++)t = n[a][l], 1 === r ? \"<\" === t ? (p(), h = [\n                h\n            ], r = 3) : e += t : 4 === r ? \"--\" === e && \">\" === t ? (r = 1, e = \"\") : e = t + e[0] : u ? t === u ? u = \"\" : e += t : '\"' === t || \"'\" === t ? u = t : \">\" === t ? (p(), r = 1) : r && (\"=\" === t ? (r = 5, s = e, e = \"\") : \"/\" === t && (r < 5 || \">\" === n[a][l + 1]) ? (p(), 3 === r && (h = h[0]), r = h, (h = h[0]).push(2, 0, r), r = 0) : \" \" === t || \"\t\" === t || \"\\n\" === t || \"\\r\" === t ? (p(), r = 2) : e += t), 3 === r && \"!--\" === e && (r = 4, h = h[0]);\n        }\n        return p(), h;\n    }(s)), r), arguments, [])).length > 1 ? r : r[0];\n}\n\n\nvar $55e67b5a79daa940$export$c0bb0b647f701bb5 = (0, $71e7bf294e7fa662$export$2e2bcd8739ae039).bind((0, $450fc775b2f7950e$export$c8a8987d4410bf2d));\n\n\n\nfunction $a27ded96fb67a33a$export$a274e22fb40f762e() {\n    for(var _len = arguments.length, classNames = new Array(_len), _key = 0; _key < _len; _key++)classNames[_key] = arguments[_key];\n    return classNames.filter(Boolean).join(\" \") || undefined;\n}\n\n\n\nvar $fbb6a7bc8836e7ee$exports = {};\nfunction $fbb6a7bc8836e7ee$var$_extends() {\n    $fbb6a7bc8836e7ee$exports = $fbb6a7bc8836e7ee$var$_extends = Object.assign ? Object.assign.bind() : function(target) {\n        for(var i = 1; i < arguments.length; i++){\n            var source = arguments[i];\n            for(var key in source)if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];\n        }\n        return target;\n    }, $fbb6a7bc8836e7ee$exports.__esModule = true, $fbb6a7bc8836e7ee$exports[\"default\"] = $fbb6a7bc8836e7ee$exports;\n    return $fbb6a7bc8836e7ee$var$_extends.apply(this, arguments);\n}\n$fbb6a7bc8836e7ee$exports = $fbb6a7bc8836e7ee$var$_extends, $fbb6a7bc8836e7ee$exports.__esModule = true, $fbb6a7bc8836e7ee$exports[\"default\"] = $fbb6a7bc8836e7ee$exports;\n\n\nvar $daf589439909d1f5$exports = {};\nvar $4a8c38fb0b611662$exports = {};\nfunction $4a8c38fb0b611662$var$_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}\n$4a8c38fb0b611662$exports = $4a8c38fb0b611662$var$_objectWithoutPropertiesLoose, $4a8c38fb0b611662$exports.__esModule = true, $4a8c38fb0b611662$exports[\"default\"] = $4a8c38fb0b611662$exports;\n\n\nfunction $daf589439909d1f5$var$_objectWithoutProperties(source, excluded) {\n    if (source == null) return {};\n    var target = $4a8c38fb0b611662$exports(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}\n$daf589439909d1f5$exports = $daf589439909d1f5$var$_objectWithoutProperties, $daf589439909d1f5$exports.__esModule = true, $daf589439909d1f5$exports[\"default\"] = $daf589439909d1f5$exports;\n\n\n\nvar $0eb656e5db79eb8f$var$_excluded = [\n    \"parts\",\n    \"highlightedTagName\",\n    \"nonHighlightedTagName\",\n    \"separator\",\n    \"className\",\n    \"classNames\"\n];\nfunction $0eb656e5db79eb8f$var$createHighlightPartComponent(_ref) {\n    var createElement = _ref.createElement;\n    return function HighlightPart(_ref2) {\n        var classNames = _ref2.classNames, children = _ref2.children, highlightedTagName = _ref2.highlightedTagName, isHighlighted = _ref2.isHighlighted, nonHighlightedTagName = _ref2.nonHighlightedTagName;\n        var TagName = isHighlighted ? highlightedTagName : nonHighlightedTagName;\n        return createElement(TagName, {\n            className: isHighlighted ? classNames.highlighted : classNames.nonHighlighted\n        }, children);\n    };\n}\nfunction $0eb656e5db79eb8f$export$c8682df1c852a966(_ref3) {\n    var createElement = _ref3.createElement, Fragment = _ref3.Fragment;\n    var HighlightPart = $0eb656e5db79eb8f$var$createHighlightPartComponent({\n        createElement: createElement,\n        Fragment: Fragment\n    });\n    return function Highlight(_ref4) {\n        var parts = _ref4.parts, _ref4$highlightedTagN = _ref4.highlightedTagName, highlightedTagName = _ref4$highlightedTagN === void 0 ? \"mark\" : _ref4$highlightedTagN, _ref4$nonHighlightedT = _ref4.nonHighlightedTagName, nonHighlightedTagName = _ref4$nonHighlightedT === void 0 ? \"span\" : _ref4$nonHighlightedT, _ref4$separator = _ref4.separator, separator = _ref4$separator === void 0 ? \", \" : _ref4$separator, className = _ref4.className, _ref4$classNames = _ref4.classNames, classNames = _ref4$classNames === void 0 ? {} : _ref4$classNames, props = (0, (/*@__PURE__*/$parcel$interopDefault($daf589439909d1f5$exports)))(_ref4, $0eb656e5db79eb8f$var$_excluded);\n        return createElement(\"span\", (0, (/*@__PURE__*/$parcel$interopDefault($fbb6a7bc8836e7ee$exports)))({}, props, {\n            className: (0, $a27ded96fb67a33a$export$a274e22fb40f762e)(classNames.root, className)\n        }), parts.map(function(part, partIndex) {\n            var isLastPart = partIndex === parts.length - 1;\n            return createElement(Fragment, {\n                key: partIndex\n            }, part.map(function(subPart, subPartIndex) {\n                return createElement(HighlightPart, {\n                    key: subPartIndex,\n                    classNames: classNames,\n                    highlightedTagName: highlightedTagName,\n                    nonHighlightedTagName: nonHighlightedTagName,\n                    isHighlighted: subPart.isHighlighted\n                }, subPart.value);\n            }), !isLastPart && createElement(\"span\", {\n                className: classNames.separator\n            }, separator));\n        }));\n    };\n}\n\n\n\nvar $4411ba54e9717fdd$export$57a0c6fc80bec05c = (0, $0eb656e5db79eb8f$export$c8682df1c852a966)({\n    createElement: (0, $450fc775b2f7950e$export$c8a8987d4410bf2d),\n    Fragment: (0, $450fc775b2f7950e$export$ffb0004e005737fa)\n});\n\n\nfunction $39c2e329ad4e993d$var$_extends() {\n    $39c2e329ad4e993d$var$_extends = Object.assign || function(target) {\n        for(var i = 1; i < arguments.length; i++){\n            var source = arguments[i];\n            for(var key in source)if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];\n        }\n        return target;\n    };\n    return $39c2e329ad4e993d$var$_extends.apply(this, arguments);\n}\nfunction $39c2e329ad4e993d$var$_objectWithoutProperties(source, excluded) {\n    if (source == null) return {};\n    var target = $39c2e329ad4e993d$var$_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}\nfunction $39c2e329ad4e993d$var$_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 $39c2e329ad4e993d$export$39dbc3f558091353(_ref) {\n    var _ref$classNames = _ref.classNames, classNames = _ref$classNames === void 0 ? {} : _ref$classNames, props = $39c2e329ad4e993d$var$_objectWithoutProperties(_ref, [\n        \"classNames\"\n    ]);\n    return (0, $450fc775b2f7950e$export$c8a8987d4410bf2d)((0, $4411ba54e9717fdd$export$57a0c6fc80bec05c), $39c2e329ad4e993d$var$_extends({\n        classNames: {\n            root: (0, $a27ded96fb67a33a$export$a274e22fb40f762e)(\"ais-Highlight\", classNames.root),\n            highlighted: (0, $a27ded96fb67a33a$export$a274e22fb40f762e)(\"ais-Highlight-highlighted\", classNames.highlighted),\n            nonHighlighted: (0, $a27ded96fb67a33a$export$a274e22fb40f762e)(\"ais-Highlight-nonHighlighted\", classNames.nonHighlighted),\n            separator: (0, $a27ded96fb67a33a$export$a274e22fb40f762e)(\"ais-Highlight-separator\", classNames.separator)\n        }\n    }, props));\n}\n\n\n\nfunction $d11e96c67ca5e4d5$export$e04d28e65b830ebf(highlightedValue) {\n    var highlightPostTag = (0, $ea7b3b8ada1be339$export$62e796b7905e8e6b).highlightPostTag, highlightPreTag = (0, $ea7b3b8ada1be339$export$62e796b7905e8e6b).highlightPreTag;\n    var splitByPreTag = highlightedValue.split(highlightPreTag);\n    var firstValue = splitByPreTag.shift();\n    var elements = !firstValue ? [] : [\n        {\n            value: firstValue,\n            isHighlighted: false\n        }\n    ];\n    splitByPreTag.forEach(function(split) {\n        var splitByPostTag = split.split(highlightPostTag);\n        elements.push({\n            value: splitByPostTag[0],\n            isHighlighted: true\n        });\n        if (splitByPostTag[1] !== \"\") elements.push({\n            value: splitByPostTag[1],\n            isHighlighted: false\n        });\n    });\n    return elements;\n}\n\nfunction $4dc7e5862e881a8a$export$d14846335956eefa(object, path) {\n    var parts = Array.isArray(path) ? path : path.split(\".\");\n    return parts.reduce(function(current, key) {\n        return current && current[key];\n    }, object);\n}\n\nfunction $87f1e5e787fe4082$export$45b10814cc054894(value) {\n    return Array.isArray(value) ? value : [\n        value\n    ];\n}\n\n\nfunction $28f44055999237d0$var$_extends() {\n    $28f44055999237d0$var$_extends = Object.assign || function(target) {\n        for(var i = 1; i < arguments.length; i++){\n            var source = arguments[i];\n            for(var key in source)if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];\n        }\n        return target;\n    };\n    return $28f44055999237d0$var$_extends.apply(this, arguments);\n}\nfunction $28f44055999237d0$var$_objectWithoutProperties(source, excluded) {\n    if (source == null) return {};\n    var target = $28f44055999237d0$var$_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}\nfunction $28f44055999237d0$var$_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 $28f44055999237d0$export$39dbc3f558091353(_ref) {\n    var hit = _ref.hit, attribute = _ref.attribute, cssClasses = _ref.cssClasses, props = $28f44055999237d0$var$_objectWithoutProperties(_ref, [\n        \"hit\",\n        \"attribute\",\n        \"cssClasses\"\n    ]);\n    var property = (0, $4dc7e5862e881a8a$export$d14846335956eefa)(hit._highlightResult, attribute) || [];\n    var properties = (0, $87f1e5e787fe4082$export$45b10814cc054894)(property);\n    var parts = properties.map(function(_ref2) {\n        var value = _ref2.value;\n        return (0, $d11e96c67ca5e4d5$export$e04d28e65b830ebf)((0, $fcb98432e82f2808$export$e8bacd2802a88316)(value || \"\"));\n    });\n    return (0, $450fc775b2f7950e$export$c8a8987d4410bf2d)((0, $39c2e329ad4e993d$export$39dbc3f558091353), $28f44055999237d0$var$_extends({}, props, {\n        parts: parts,\n        classNames: cssClasses\n    }));\n}\n\n\n\n\n\nfunction $a6473540a03affad$var$_extends() {\n    $a6473540a03affad$var$_extends = Object.assign || function(target) {\n        for(var i = 1; i < arguments.length; i++){\n            var source = arguments[i];\n            for(var key in source)if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];\n        }\n        return target;\n    };\n    return $a6473540a03affad$var$_extends.apply(this, arguments);\n}\nfunction $a6473540a03affad$var$_objectWithoutProperties(source, excluded) {\n    if (source == null) return {};\n    var target = $a6473540a03affad$var$_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}\nfunction $a6473540a03affad$var$_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 $a6473540a03affad$export$f346643e8570b662(_ref) {\n    var _ref$classNames = _ref.classNames, classNames = _ref$classNames === void 0 ? {} : _ref$classNames, props = $a6473540a03affad$var$_objectWithoutProperties(_ref, [\n        \"classNames\"\n    ]);\n    return (0, $450fc775b2f7950e$export$c8a8987d4410bf2d)((0, $4411ba54e9717fdd$export$57a0c6fc80bec05c), $a6473540a03affad$var$_extends({\n        classNames: {\n            root: (0, $a27ded96fb67a33a$export$a274e22fb40f762e)(\"ais-ReverseHighlight\", classNames.root),\n            highlighted: (0, $a27ded96fb67a33a$export$a274e22fb40f762e)(\"ais-ReverseHighlight-highlighted\", classNames.highlighted),\n            nonHighlighted: (0, $a27ded96fb67a33a$export$a274e22fb40f762e)(\"ais-ReverseHighlight-nonHighlighted\", classNames.nonHighlighted),\n            separator: (0, $a27ded96fb67a33a$export$a274e22fb40f762e)(\"ais-ReverseHighlight-separator\", classNames.separator)\n        }\n    }, props));\n}\n\n\n\nfunction $e1b494042a84ad23$var$_extends() {\n    $e1b494042a84ad23$var$_extends = Object.assign || function(target) {\n        for(var i = 1; i < arguments.length; i++){\n            var source = arguments[i];\n            for(var key in source)if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];\n        }\n        return target;\n    };\n    return $e1b494042a84ad23$var$_extends.apply(this, arguments);\n}\nfunction $e1b494042a84ad23$var$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 $e1b494042a84ad23$var$_objectSpread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        if (i % 2) $e1b494042a84ad23$var$ownKeys(Object(source), true).forEach(function(key) {\n            $e1b494042a84ad23$var$_defineProperty(target, key, source[key]);\n        });\n        else if (Object.getOwnPropertyDescriptors) Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n        else $e1b494042a84ad23$var$ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nfunction $e1b494042a84ad23$var$_defineProperty(obj, key, value) {\n    if (key in obj) Object.defineProperty(obj, key, {\n        value: value,\n        enumerable: true,\n        configurable: true,\n        writable: true\n    });\n    else obj[key] = value;\n    return obj;\n}\nfunction $e1b494042a84ad23$var$_objectWithoutProperties(source, excluded) {\n    if (source == null) return {};\n    var target = $e1b494042a84ad23$var$_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}\nfunction $e1b494042a84ad23$var$_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 $e1b494042a84ad23$export$f346643e8570b662(_ref) {\n    var hit = _ref.hit, attribute = _ref.attribute, cssClasses = _ref.cssClasses, props = $e1b494042a84ad23$var$_objectWithoutProperties(_ref, [\n        \"hit\",\n        \"attribute\",\n        \"cssClasses\"\n    ]);\n    var property = (0, $4dc7e5862e881a8a$export$d14846335956eefa)(hit._highlightResult, attribute) || [];\n    var properties = (0, $87f1e5e787fe4082$export$45b10814cc054894)(property);\n    var parts = properties.map(function(_ref2) {\n        var value = _ref2.value;\n        return (0, $d11e96c67ca5e4d5$export$e04d28e65b830ebf)((0, $fcb98432e82f2808$export$e8bacd2802a88316)(value || \"\")).map(function(_ref3) {\n            var isHighlighted = _ref3.isHighlighted, rest = $e1b494042a84ad23$var$_objectWithoutProperties(_ref3, [\n                \"isHighlighted\"\n            ]);\n            return $e1b494042a84ad23$var$_objectSpread($e1b494042a84ad23$var$_objectSpread({}, rest), {}, {\n                isHighlighted: !isHighlighted\n            });\n        });\n    });\n    return (0, $450fc775b2f7950e$export$c8a8987d4410bf2d)((0, $a6473540a03affad$export$f346643e8570b662), $e1b494042a84ad23$var$_extends({}, props, {\n        parts: parts,\n        classNames: cssClasses\n    }));\n}\n\n\n\n\n\nfunction $32be11c9b927149e$var$_extends() {\n    $32be11c9b927149e$var$_extends = Object.assign || function(target) {\n        for(var i = 1; i < arguments.length; i++){\n            var source = arguments[i];\n            for(var key in source)if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];\n        }\n        return target;\n    };\n    return $32be11c9b927149e$var$_extends.apply(this, arguments);\n}\nfunction $32be11c9b927149e$var$_objectWithoutProperties(source, excluded) {\n    if (source == null) return {};\n    var target = $32be11c9b927149e$var$_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}\nfunction $32be11c9b927149e$var$_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 $32be11c9b927149e$export$235f9e0721ad46fa(_ref) {\n    var _ref$classNames = _ref.classNames, classNames = _ref$classNames === void 0 ? {} : _ref$classNames, props = $32be11c9b927149e$var$_objectWithoutProperties(_ref, [\n        \"classNames\"\n    ]);\n    return (0, $450fc775b2f7950e$export$c8a8987d4410bf2d)((0, $4411ba54e9717fdd$export$57a0c6fc80bec05c), $32be11c9b927149e$var$_extends({\n        classNames: {\n            root: (0, $a27ded96fb67a33a$export$a274e22fb40f762e)(\"ais-ReverseSnippet\", classNames.root),\n            highlighted: (0, $a27ded96fb67a33a$export$a274e22fb40f762e)(\"ais-ReverseSnippet-highlighted\", classNames.highlighted),\n            nonHighlighted: (0, $a27ded96fb67a33a$export$a274e22fb40f762e)(\"ais-ReverseSnippet-nonHighlighted\", classNames.nonHighlighted),\n            separator: (0, $a27ded96fb67a33a$export$a274e22fb40f762e)(\"ais-ReverseSnippet-separator\", classNames.separator)\n        }\n    }, props));\n}\n\n\n\nfunction $080713b98092415a$var$_extends() {\n    $080713b98092415a$var$_extends = Object.assign || function(target) {\n        for(var i = 1; i < arguments.length; i++){\n            var source = arguments[i];\n            for(var key in source)if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];\n        }\n        return target;\n    };\n    return $080713b98092415a$var$_extends.apply(this, arguments);\n}\nfunction $080713b98092415a$var$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 $080713b98092415a$var$_objectSpread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        if (i % 2) $080713b98092415a$var$ownKeys(Object(source), true).forEach(function(key) {\n            $080713b98092415a$var$_defineProperty(target, key, source[key]);\n        });\n        else if (Object.getOwnPropertyDescriptors) Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n        else $080713b98092415a$var$ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nfunction $080713b98092415a$var$_defineProperty(obj, key, value) {\n    if (key in obj) Object.defineProperty(obj, key, {\n        value: value,\n        enumerable: true,\n        configurable: true,\n        writable: true\n    });\n    else obj[key] = value;\n    return obj;\n}\nfunction $080713b98092415a$var$_objectWithoutProperties(source, excluded) {\n    if (source == null) return {};\n    var target = $080713b98092415a$var$_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}\nfunction $080713b98092415a$var$_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 $080713b98092415a$export$235f9e0721ad46fa(_ref) {\n    var hit = _ref.hit, attribute = _ref.attribute, cssClasses = _ref.cssClasses, props = $080713b98092415a$var$_objectWithoutProperties(_ref, [\n        \"hit\",\n        \"attribute\",\n        \"cssClasses\"\n    ]);\n    var property = (0, $4dc7e5862e881a8a$export$d14846335956eefa)(hit._snippetResult, attribute) || [];\n    var properties = (0, $87f1e5e787fe4082$export$45b10814cc054894)(property);\n    var parts = properties.map(function(_ref2) {\n        var value = _ref2.value;\n        return (0, $d11e96c67ca5e4d5$export$e04d28e65b830ebf)((0, $fcb98432e82f2808$export$e8bacd2802a88316)(value || \"\")).map(function(_ref3) {\n            var isHighlighted = _ref3.isHighlighted, rest = $080713b98092415a$var$_objectWithoutProperties(_ref3, [\n                \"isHighlighted\"\n            ]);\n            return $080713b98092415a$var$_objectSpread($080713b98092415a$var$_objectSpread({}, rest), {}, {\n                isHighlighted: !isHighlighted\n            });\n        });\n    });\n    return (0, $450fc775b2f7950e$export$c8a8987d4410bf2d)((0, $32be11c9b927149e$export$235f9e0721ad46fa), $080713b98092415a$var$_extends({}, props, {\n        parts: parts,\n        classNames: cssClasses\n    }));\n}\n\n\n\n\n\nfunction $be8ff13b02e36d80$var$_extends() {\n    $be8ff13b02e36d80$var$_extends = Object.assign || function(target) {\n        for(var i = 1; i < arguments.length; i++){\n            var source = arguments[i];\n            for(var key in source)if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];\n        }\n        return target;\n    };\n    return $be8ff13b02e36d80$var$_extends.apply(this, arguments);\n}\nfunction $be8ff13b02e36d80$var$_objectWithoutProperties(source, excluded) {\n    if (source == null) return {};\n    var target = $be8ff13b02e36d80$var$_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}\nfunction $be8ff13b02e36d80$var$_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 $be8ff13b02e36d80$export$10c56fa12fda26f9(_ref) {\n    var _ref$classNames = _ref.classNames, classNames = _ref$classNames === void 0 ? {} : _ref$classNames, props = $be8ff13b02e36d80$var$_objectWithoutProperties(_ref, [\n        \"classNames\"\n    ]);\n    return (0, $450fc775b2f7950e$export$c8a8987d4410bf2d)((0, $4411ba54e9717fdd$export$57a0c6fc80bec05c), $be8ff13b02e36d80$var$_extends({\n        classNames: {\n            root: (0, $a27ded96fb67a33a$export$a274e22fb40f762e)(\"ais-Snippet\", classNames.root),\n            highlighted: (0, $a27ded96fb67a33a$export$a274e22fb40f762e)(\"ais-Snippet-highlighted\", classNames.highlighted),\n            nonHighlighted: (0, $a27ded96fb67a33a$export$a274e22fb40f762e)(\"ais-Snippet-nonHighlighted\", classNames.nonHighlighted),\n            separator: (0, $a27ded96fb67a33a$export$a274e22fb40f762e)(\"ais-Snippet-separator\", classNames.separator)\n        }\n    }, props));\n}\n\n\n\nfunction $bd33193f2ef679b8$var$_extends() {\n    $bd33193f2ef679b8$var$_extends = Object.assign || function(target) {\n        for(var i = 1; i < arguments.length; i++){\n            var source = arguments[i];\n            for(var key in source)if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];\n        }\n        return target;\n    };\n    return $bd33193f2ef679b8$var$_extends.apply(this, arguments);\n}\nfunction $bd33193f2ef679b8$var$_objectWithoutProperties(source, excluded) {\n    if (source == null) return {};\n    var target = $bd33193f2ef679b8$var$_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}\nfunction $bd33193f2ef679b8$var$_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 $bd33193f2ef679b8$export$10c56fa12fda26f9(_ref) {\n    var hit = _ref.hit, attribute = _ref.attribute, cssClasses = _ref.cssClasses, props = $bd33193f2ef679b8$var$_objectWithoutProperties(_ref, [\n        \"hit\",\n        \"attribute\",\n        \"cssClasses\"\n    ]);\n    var property = (0, $4dc7e5862e881a8a$export$d14846335956eefa)(hit._snippetResult, attribute) || [];\n    var properties = (0, $87f1e5e787fe4082$export$45b10814cc054894)(property);\n    var parts = properties.map(function(_ref2) {\n        var value = _ref2.value;\n        return (0, $d11e96c67ca5e4d5$export$e04d28e65b830ebf)((0, $fcb98432e82f2808$export$e8bacd2802a88316)(value || \"\"));\n    });\n    return (0, $450fc775b2f7950e$export$c8a8987d4410bf2d)((0, $be8ff13b02e36d80$export$10c56fa12fda26f9), $bd33193f2ef679b8$var$_extends({}, props, {\n        parts: parts,\n        classNames: cssClasses\n    }));\n}\n\n\nfunction $3f879671235ebefb$var$_typeof(obj) {\n    \"@babel/helpers - typeof\";\n    if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") $3f879671235ebefb$var$_typeof = function _typeof(obj) {\n        return typeof obj;\n    };\n    else $3f879671235ebefb$var$_typeof = function _typeof(obj) {\n        return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n    return $3f879671235ebefb$var$_typeof(obj);\n}\nfunction $3f879671235ebefb$var$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 $3f879671235ebefb$var$_objectSpread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        if (i % 2) $3f879671235ebefb$var$ownKeys(Object(source), true).forEach(function(key) {\n            $3f879671235ebefb$var$_defineProperty(target, key, source[key]);\n        });\n        else if (Object.getOwnPropertyDescriptors) Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n        else $3f879671235ebefb$var$ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nfunction $3f879671235ebefb$var$_defineProperty(obj, key, value) {\n    if (key in obj) Object.defineProperty(obj, key, {\n        value: value,\n        enumerable: true,\n        configurable: true,\n        writable: true\n    });\n    else obj[key] = value;\n    return obj;\n}\n// We add all our template helper methods to the template as lambdas. Note\n// that lambdas in Mustache are supposed to accept a second argument of\n// `render` to get the rendered value, not the literal `{{value}}`. But\n// this is currently broken (see https://github.com/twitter/hogan.js/issues/222).\nfunction $3f879671235ebefb$var$transformHelpersToHogan() {\n    var helpers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    var compileOptions = arguments.length > 1 ? arguments[1] : undefined;\n    var data = arguments.length > 2 ? arguments[2] : undefined;\n    return Object.keys(helpers).reduce(function(acc, helperKey) {\n        return $3f879671235ebefb$var$_objectSpread($3f879671235ebefb$var$_objectSpread({}, acc), {}, $3f879671235ebefb$var$_defineProperty({}, helperKey, function() {\n            var _this = this;\n            return function(text) {\n                var render = function render(value) {\n                    return (0, (/*@__PURE__*/$parcel$interopDefault($6ebfb0054e7d59cd$exports))).compile(value, compileOptions).render(_this);\n                };\n                return helpers[helperKey].call(data, text, render);\n            };\n        }));\n    }, {});\n}\nfunction $3f879671235ebefb$export$b5c363744c17aeab(_ref) {\n    var templates = _ref.templates, templateKey = _ref.templateKey, compileOptions = _ref.compileOptions, helpers = _ref.helpers, data = _ref.data, bindEvent = _ref.bindEvent, sendEvent = _ref.sendEvent;\n    var template = templates[templateKey];\n    if (typeof template !== \"string\" && typeof template !== \"function\") throw new Error(\"Template must be 'string' or 'function', was '\".concat($3f879671235ebefb$var$_typeof(template), \"' (key: \").concat(templateKey, \")\"));\n    if (typeof template === \"function\") {\n        // @MAJOR no longer pass bindEvent when string templates are removed\n        var params = bindEvent || {};\n        params.html = (0, $55e67b5a79daa940$export$c0bb0b647f701bb5);\n        params.sendEvent = sendEvent;\n        params.components = {\n            Highlight: (0, $28f44055999237d0$export$39dbc3f558091353),\n            ReverseHighlight: (0, $e1b494042a84ad23$export$f346643e8570b662),\n            Snippet: (0, $bd33193f2ef679b8$export$10c56fa12fda26f9),\n            ReverseSnippet: (0, $080713b98092415a$export$235f9e0721ad46fa)\n        };\n        return template(data, params);\n    }\n    var transformedHelpers = $3f879671235ebefb$var$transformHelpersToHogan(helpers, compileOptions, data);\n    return (0, (/*@__PURE__*/$parcel$interopDefault($6ebfb0054e7d59cd$exports))).compile(template, compileOptions).render($3f879671235ebefb$var$_objectSpread($3f879671235ebefb$var$_objectSpread({}, data), {}, {\n        helpers: transformedHelpers\n    })).replace(/[ \\n\\r\\t\\f\\xA0]+/g, function(spaces) {\n        return spaces.replace(/(^|\\xA0+)[^\\xA0]+/g, \"$1 \");\n    }).trim();\n}\n\n\nfunction $cae24fad0dd36ab6$var$_extends() {\n    $cae24fad0dd36ab6$var$_extends = Object.assign || function(target) {\n        for(var i = 1; i < arguments.length; i++){\n            var source = arguments[i];\n            for(var key in source)if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];\n        }\n        return target;\n    };\n    return $cae24fad0dd36ab6$var$_extends.apply(this, arguments);\n}\nfunction $cae24fad0dd36ab6$var$_typeof(obj) {\n    \"@babel/helpers - typeof\";\n    if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") $cae24fad0dd36ab6$var$_typeof = function _typeof(obj) {\n        return typeof obj;\n    };\n    else $cae24fad0dd36ab6$var$_typeof = function _typeof(obj) {\n        return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n    return $cae24fad0dd36ab6$var$_typeof(obj);\n}\nfunction $cae24fad0dd36ab6$var$_classCallCheck(instance, Constructor) {\n    if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction $cae24fad0dd36ab6$var$_defineProperties(target, props) {\n    for(var i = 0; i < props.length; i++){\n        var descriptor = props[i];\n        descriptor.enumerable = descriptor.enumerable || false;\n        descriptor.configurable = true;\n        if (\"value\" in descriptor) descriptor.writable = true;\n        Object.defineProperty(target, descriptor.key, descriptor);\n    }\n}\nfunction $cae24fad0dd36ab6$var$_createClass(Constructor, protoProps, staticProps) {\n    if (protoProps) $cae24fad0dd36ab6$var$_defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) $cae24fad0dd36ab6$var$_defineProperties(Constructor, staticProps);\n    return Constructor;\n}\nfunction $cae24fad0dd36ab6$var$_inherits(subClass, superClass) {\n    if (typeof superClass !== \"function\" && superClass !== null) throw new TypeError(\"Super expression must either be null or a function\");\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\n        constructor: {\n            value: subClass,\n            writable: true,\n            configurable: true\n        }\n    });\n    if (superClass) $cae24fad0dd36ab6$var$_setPrototypeOf(subClass, superClass);\n}\nfunction $cae24fad0dd36ab6$var$_setPrototypeOf(o, p) {\n    $cae24fad0dd36ab6$var$_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n        o.__proto__ = p;\n        return o;\n    };\n    return $cae24fad0dd36ab6$var$_setPrototypeOf(o, p);\n}\nfunction $cae24fad0dd36ab6$var$_createSuper(Derived) {\n    var hasNativeReflectConstruct = $cae24fad0dd36ab6$var$_isNativeReflectConstruct();\n    return function _createSuperInternal() {\n        var Super = $cae24fad0dd36ab6$var$_getPrototypeOf(Derived), result;\n        if (hasNativeReflectConstruct) {\n            var NewTarget = $cae24fad0dd36ab6$var$_getPrototypeOf(this).constructor;\n            result = Reflect.construct(Super, arguments, NewTarget);\n        } else result = Super.apply(this, arguments);\n        return $cae24fad0dd36ab6$var$_possibleConstructorReturn(this, result);\n    };\n}\nfunction $cae24fad0dd36ab6$var$_possibleConstructorReturn(self, call) {\n    if (call && ($cae24fad0dd36ab6$var$_typeof(call) === \"object\" || typeof call === \"function\")) return call;\n    return $cae24fad0dd36ab6$var$_assertThisInitialized(self);\n}\nfunction $cae24fad0dd36ab6$var$_assertThisInitialized(self) {\n    if (self === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n    return self;\n}\nfunction $cae24fad0dd36ab6$var$_isNativeReflectConstruct() {\n    if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n    if (Reflect.construct.sham) return false;\n    if (typeof Proxy === \"function\") return true;\n    try {\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n        return true;\n    } catch (e) {\n        return false;\n    }\n}\nfunction $cae24fad0dd36ab6$var$_getPrototypeOf(o) {\n    $cae24fad0dd36ab6$var$_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n        return o.__proto__ || Object.getPrototypeOf(o);\n    };\n    return $cae24fad0dd36ab6$var$_getPrototypeOf(o);\n}\nfunction $cae24fad0dd36ab6$var$_defineProperty(obj, key, value) {\n    if (key in obj) Object.defineProperty(obj, key, {\n        value: value,\n        enumerable: true,\n        configurable: true,\n        writable: true\n    });\n    else obj[key] = value;\n    return obj;\n}\nvar $cae24fad0dd36ab6$var$defaultProps = {\n    data: {},\n    rootTagName: \"div\",\n    useCustomCompileOptions: {},\n    templates: {},\n    templatesConfig: {}\n};\n// @TODO: Template should be a generic and receive TData to pass to Templates (to avoid TTemplateData to be set as `any`)\nvar $cae24fad0dd36ab6$var$Template = /*#__PURE__*/ function(_Component) {\n    $cae24fad0dd36ab6$var$_inherits(Template, _Component);\n    var _super = $cae24fad0dd36ab6$var$_createSuper(Template);\n    function Template() {\n        $cae24fad0dd36ab6$var$_classCallCheck(this, Template);\n        return _super.apply(this, arguments);\n    }\n    $cae24fad0dd36ab6$var$_createClass(Template, [\n        {\n            key: \"shouldComponentUpdate\",\n            value: function shouldComponentUpdate(nextProps) {\n                return !(0, $4198f5cd959b5a7d$export$248d38f6296296c5)(this.props.data, nextProps.data) || this.props.templateKey !== nextProps.templateKey || !(0, $4198f5cd959b5a7d$export$248d38f6296296c5)(this.props.rootProps, nextProps.rootProps);\n            }\n        },\n        {\n            key: \"render\",\n            value: function render() {\n                var _this = this;\n                var RootTagName = this.props.rootTagName;\n                var useCustomCompileOptions = this.props.useCustomCompileOptions[this.props.templateKey];\n                var compileOptions = useCustomCompileOptions ? this.props.templatesConfig.compileOptions : {};\n                var content = (0, $3f879671235ebefb$export$b5c363744c17aeab)({\n                    templates: this.props.templates,\n                    templateKey: this.props.templateKey,\n                    compileOptions: compileOptions,\n                    helpers: this.props.templatesConfig.helpers,\n                    data: this.props.data,\n                    bindEvent: this.props.bindEvent,\n                    sendEvent: this.props.sendEvent\n                });\n                if (content === null) // Adds a noscript to the DOM but virtual DOM is null\n                // See http://facebook.github.io/react/docs/component-specs.html#render\n                return null;\n                if ($cae24fad0dd36ab6$var$_typeof(content) === \"object\") return (0, $450fc775b2f7950e$export$c8a8987d4410bf2d)(RootTagName, this.props.rootProps, content);\n                return (0, $450fc775b2f7950e$export$c8a8987d4410bf2d)(RootTagName, $cae24fad0dd36ab6$var$_extends({}, this.props.rootProps, {\n                    dangerouslySetInnerHTML: {\n                        __html: content\n                    }\n                }));\n            }\n        }\n    ]);\n    return Template;\n}((0, $450fc775b2f7950e$export$16fa2f45be04daa8));\n$cae24fad0dd36ab6$var$_defineProperty($cae24fad0dd36ab6$var$Template, \"defaultProps\", $cae24fad0dd36ab6$var$defaultProps);\nvar $cae24fad0dd36ab6$export$2e2bcd8739ae039 = $cae24fad0dd36ab6$var$Template;\n\n\nfunction $5495c4c3740071e8$var$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 $5495c4c3740071e8$var$_objectSpread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        if (i % 2) $5495c4c3740071e8$var$ownKeys(Object(source), true).forEach(function(key) {\n            $5495c4c3740071e8$var$_defineProperty(target, key, source[key]);\n        });\n        else if (Object.getOwnPropertyDescriptors) Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n        else $5495c4c3740071e8$var$ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nfunction $5495c4c3740071e8$var$_defineProperty(obj, key, value) {\n    if (key in obj) Object.defineProperty(obj, key, {\n        value: value,\n        enumerable: true,\n        configurable: true,\n        writable: true\n    });\n    else obj[key] = value;\n    return obj;\n}\nfunction $5495c4c3740071e8$var$_extends() {\n    $5495c4c3740071e8$var$_extends = Object.assign || function(target) {\n        for(var i = 1; i < arguments.length; i++){\n            var source = arguments[i];\n            for(var key in source)if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];\n        }\n        return target;\n    };\n    return $5495c4c3740071e8$var$_extends.apply(this, arguments);\n}\nvar $5495c4c3740071e8$var$Hits = function Hits(_ref) {\n    var results = _ref.results, hits = _ref.hits, bindEvent = _ref.bindEvent, sendEvent = _ref.sendEvent, cssClasses = _ref.cssClasses, templateProps = _ref.templateProps;\n    if (results.hits.length === 0) return (0, $450fc775b2f7950e$export$c8a8987d4410bf2d)((0, $cae24fad0dd36ab6$export$2e2bcd8739ae039), $5495c4c3740071e8$var$_extends({}, templateProps, {\n        templateKey: \"empty\",\n        rootProps: {\n            className: (0, (/*@__PURE__*/$parcel$interopDefault($f8c99c41bd600645$exports)))(cssClasses.root, cssClasses.emptyRoot)\n        },\n        data: results\n    }));\n    return (0, $450fc775b2f7950e$export$c8a8987d4410bf2d)(\"div\", {\n        className: cssClasses.root\n    }, (0, $450fc775b2f7950e$export$c8a8987d4410bf2d)(\"ol\", {\n        className: cssClasses.list\n    }, hits.map(function(hit, index) {\n        return (0, $450fc775b2f7950e$export$c8a8987d4410bf2d)((0, $cae24fad0dd36ab6$export$2e2bcd8739ae039), $5495c4c3740071e8$var$_extends({}, templateProps, {\n            templateKey: \"item\",\n            rootTagName: \"li\",\n            rootProps: {\n                className: cssClasses.item\n            },\n            key: hit.objectID,\n            data: $5495c4c3740071e8$var$_objectSpread($5495c4c3740071e8$var$_objectSpread({}, hit), {}, {\n                __hitIndex: index\n            }),\n            bindEvent: bindEvent,\n            sendEvent: sendEvent\n        }));\n    })));\n};\nvar $5495c4c3740071e8$export$2e2bcd8739ae039 = $5495c4c3740071e8$var$Hits;\n\n\nvar $86221d5f03b17c54$var$defaultTemplates = {\n    empty: function empty() {\n        return \"No results\";\n    },\n    item: function item(data) {\n        return JSON.stringify(data, null, 2);\n    }\n};\nvar $86221d5f03b17c54$export$2e2bcd8739ae039 = $86221d5f03b17c54$var$defaultTemplates;\n\n\nfunction $667f900b0d79382b$export$124b2c3e0d3efb2d(object) {\n    return object instanceof HTMLElement || Boolean(object) && object.nodeType > 0;\n}\n\n\nfunction $964d85af6623150d$export$ffb2c7b8d67c359a(selectorOrHTMLElement) {\n    var isSelectorString = typeof selectorOrHTMLElement === \"string\";\n    var domElement = isSelectorString ? document.querySelector(selectorOrHTMLElement) : selectorOrHTMLElement;\n    if (!(0, $667f900b0d79382b$export$124b2c3e0d3efb2d)(domElement)) {\n        var errorMessage = \"Container must be `string` or `HTMLElement`.\";\n        if (isSelectorString) errorMessage += \" Unable to find \".concat(selectorOrHTMLElement);\n        throw new Error(errorMessage);\n    }\n    return domElement;\n}\n\n\n\nfunction $1f15ae9d41409849$var$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 $1f15ae9d41409849$var$_objectSpread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        if (i % 2) $1f15ae9d41409849$var$ownKeys(Object(source), true).forEach(function(key) {\n            $1f15ae9d41409849$var$_defineProperty(target, key, source[key]);\n        });\n        else if (Object.getOwnPropertyDescriptors) Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n        else $1f15ae9d41409849$var$ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nfunction $1f15ae9d41409849$var$_defineProperty(obj, key, value) {\n    if (key in obj) Object.defineProperty(obj, key, {\n        value: value,\n        enumerable: true,\n        configurable: true,\n        writable: true\n    });\n    else obj[key] = value;\n    return obj;\n}\nfunction $1f15ae9d41409849$var$_toConsumableArray(arr) {\n    return $1f15ae9d41409849$var$_arrayWithoutHoles(arr) || $1f15ae9d41409849$var$_iterableToArray(arr) || $1f15ae9d41409849$var$_unsupportedIterableToArray(arr) || $1f15ae9d41409849$var$_nonIterableSpread();\n}\nfunction $1f15ae9d41409849$var$_nonIterableSpread() {\n    throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction $1f15ae9d41409849$var$_unsupportedIterableToArray(o, minLen) {\n    if (!o) return;\n    if (typeof o === \"string\") return $1f15ae9d41409849$var$_arrayLikeToArray(o, minLen);\n    var n = Object.prototype.toString.call(o).slice(8, -1);\n    if (n === \"Object\" && o.constructor) n = o.constructor.name;\n    if (n === \"Map\" || n === \"Set\") return Array.from(o);\n    if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return $1f15ae9d41409849$var$_arrayLikeToArray(o, minLen);\n}\nfunction $1f15ae9d41409849$var$_iterableToArray(iter) {\n    if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\nfunction $1f15ae9d41409849$var$_arrayWithoutHoles(arr) {\n    if (Array.isArray(arr)) return $1f15ae9d41409849$var$_arrayLikeToArray(arr);\n}\nfunction $1f15ae9d41409849$var$_arrayLikeToArray(arr, len) {\n    if (len == null || len > arr.length) len = arr.length;\n    for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n    return arr2;\n}\nfunction $1f15ae9d41409849$var$prepareTemplates(defaultTemplates) {\n    var templates = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var allKeys = (0, $6b9ab3bbb605ca60$export$f70730c3d1fc524e)([].concat($1f15ae9d41409849$var$_toConsumableArray(Object.keys(defaultTemplates || {})), $1f15ae9d41409849$var$_toConsumableArray(Object.keys(templates))));\n    return allKeys.reduce(function(config, key) {\n        var defaultTemplate = defaultTemplates ? defaultTemplates[key] : undefined;\n        var customTemplate = templates[key];\n        var isCustomTemplate = customTemplate !== undefined && customTemplate !== defaultTemplate;\n        config.templates[key] = isCustomTemplate ? customTemplate // typescript doesn't recognize that this condition asserts customTemplate is defined\n         : defaultTemplate;\n        config.useCustomCompileOptions[key] = isCustomTemplate;\n        return config;\n    }, {\n        // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n        templates: {},\n        // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n        useCustomCompileOptions: {}\n    });\n}\nfunction $1f15ae9d41409849$export$2938ff6a58d41f25(_ref) {\n    var defaultTemplates = _ref.defaultTemplates, templates = _ref.templates, templatesConfig = _ref.templatesConfig;\n    var preparedTemplates = $1f15ae9d41409849$var$prepareTemplates(defaultTemplates, templates);\n    return $1f15ae9d41409849$var$_objectSpread({\n        templatesConfig: templatesConfig\n    }, preparedTemplates);\n}\n\n\nvar $26d2f3c47ecadc8f$var$NAMESPACE = \"ais\";\nvar $26d2f3c47ecadc8f$export$d8556a2a8f973135 = function component(componentName) {\n    return function() {\n        var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, descendantName = _ref.descendantName, modifierName = _ref.modifierName;\n        var descendent = descendantName ? \"-\".concat(descendantName) : \"\";\n        var modifier = modifierName ? \"--\".concat(modifierName) : \"\";\n        return \"\".concat($26d2f3c47ecadc8f$var$NAMESPACE, \"-\").concat(componentName).concat(descendent).concat(modifier);\n    };\n};\n\n\n// We aren't using the native `Array.prototype.find` because the refactor away from Lodash is not\n// published as a major version.\n// Relying on the `find` polyfill on user-land, which before was only required for niche use-cases,\n// was decided as too risky.\n// @MAJOR Replace with the native `Array.prototype.find` method\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find\nfunction $22d7156510102177$export$71aa6c912b956294(items, predicate) {\n    var value;\n    for(var i = 0; i < items.length; i++){\n        value = items[i]; // inlined for performance: if (Call(predicate, thisArg, [value, i, list])) {\n        if (predicate(value, i, items)) return value;\n    }\n    return undefined;\n}\n\n\nfunction $b60166d8fe31c83e$var$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 $b60166d8fe31c83e$var$_objectSpread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        if (i % 2) $b60166d8fe31c83e$var$ownKeys(Object(source), true).forEach(function(key) {\n            $b60166d8fe31c83e$var$_defineProperty(target, key, source[key]);\n        });\n        else if (Object.getOwnPropertyDescriptors) Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n        else $b60166d8fe31c83e$var$ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nfunction $b60166d8fe31c83e$var$_defineProperty(obj, key, value) {\n    if (key in obj) Object.defineProperty(obj, key, {\n        value: value,\n        enumerable: true,\n        configurable: true,\n        writable: true\n    });\n    else obj[key] = value;\n    return obj;\n}\nvar $b60166d8fe31c83e$var$getSelectedHits = function getSelectedHits(hits, selectedObjectIDs) {\n    return selectedObjectIDs.map(function(objectID) {\n        var hit = (0, $22d7156510102177$export$71aa6c912b956294)(hits, function(h) {\n            return h.objectID === objectID;\n        });\n        if (typeof hit === \"undefined\") throw new Error('Could not find objectID \"'.concat(objectID, '\" passed to `clickedObjectIDsAfterSearch` in the returned hits. This is necessary to infer the absolute position and the query ID.'));\n        return hit;\n    });\n};\nvar $b60166d8fe31c83e$var$getQueryID = function getQueryID(selectedHits) {\n    var queryIDs = (0, $6b9ab3bbb605ca60$export$f70730c3d1fc524e)(selectedHits.map(function(hit) {\n        return hit.__queryID;\n    }));\n    if (queryIDs.length > 1) throw new Error(\"Insights currently allows a single `queryID`. The `objectIDs` provided map to multiple `queryID`s.\");\n    var queryID = queryIDs[0];\n    if (typeof queryID !== \"string\") throw new Error(\"Could not infer `queryID`. Ensure InstantSearch `clickAnalytics: true` was added with the Configure widget.\\n\\nSee: https://alg.li/lNiZZ7\");\n    return queryID;\n};\nvar $b60166d8fe31c83e$var$getPositions = function getPositions(selectedHits) {\n    return selectedHits.map(function(hit) {\n        return hit.__position;\n    });\n};\nvar $b60166d8fe31c83e$export$24bd91850d68b36c = function inferPayload(_ref) {\n    var method = _ref.method, results = _ref.results, hits = _ref.hits, objectIDs = _ref.objectIDs;\n    var index = results.index;\n    var selectedHits = $b60166d8fe31c83e$var$getSelectedHits(hits, objectIDs);\n    var queryID = $b60166d8fe31c83e$var$getQueryID(selectedHits);\n    switch(method){\n        case \"clickedObjectIDsAfterSearch\":\n            var positions = $b60166d8fe31c83e$var$getPositions(selectedHits);\n            return {\n                index: index,\n                queryID: queryID,\n                objectIDs: objectIDs,\n                positions: positions\n            };\n        case \"convertedObjectIDsAfterSearch\":\n            return {\n                index: index,\n                queryID: queryID,\n                objectIDs: objectIDs\n            };\n        default:\n            throw new Error('Unsupported method passed to insights: \"'.concat(method, '\".'));\n    }\n};\nvar $b60166d8fe31c83e$var$wrapInsightsClient = function wrapInsightsClient(aa, results, hits) {\n    return function(method) {\n        for(var _len = arguments.length, payloads = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++)payloads[_key - 1] = arguments[_key];\n        var payload = payloads[0];\n        if (!aa) {\n            var withInstantSearchUsage = (0, $049fad80b24500a5$export$2fde5bffc340821e)({\n                name: \"instantsearch\"\n            });\n            throw new Error(withInstantSearchUsage(\"The `insightsClient` option has not been provided to `instantsearch`.\"));\n        }\n        if (!Array.isArray(payload.objectIDs)) throw new TypeError(\"Expected `objectIDs` to be an array.\");\n        var inferredPayload = $b60166d8fe31c83e$export$24bd91850d68b36c({\n            method: method,\n            results: results,\n            hits: hits,\n            objectIDs: payload.objectIDs\n        });\n        aa(method, $b60166d8fe31c83e$var$_objectSpread($b60166d8fe31c83e$var$_objectSpread({}, inferredPayload), payload));\n    };\n};\nfunction $b60166d8fe31c83e$export$2e2bcd8739ae039(connector) {\n    return function(renderFn, unmountFn) {\n        return connector(function(renderOptions, isFirstRender) {\n            var results = renderOptions.results, hits = renderOptions.hits, instantSearchInstance = renderOptions.instantSearchInstance;\n            if (results && hits && instantSearchInstance) {\n                var insights = $b60166d8fe31c83e$var$wrapInsightsClient(instantSearchInstance.insightsClient, results, hits);\n                return renderFn($b60166d8fe31c83e$var$_objectSpread($b60166d8fe31c83e$var$_objectSpread({}, renderOptions), {}, {\n                    insights: insights\n                }), isFirstRender);\n            }\n            return renderFn(renderOptions, isFirstRender);\n        }, unmountFn);\n    };\n}\n\n\n\n\nfunction $62dc5ddd84fbc4d2$var$_typeof(obj) {\n    \"@babel/helpers - typeof\";\n    if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") $62dc5ddd84fbc4d2$var$_typeof = function _typeof(obj) {\n        return typeof obj;\n    };\n    else $62dc5ddd84fbc4d2$var$_typeof = function _typeof(obj) {\n        return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n    return $62dc5ddd84fbc4d2$var$_typeof(obj);\n}\nfunction $62dc5ddd84fbc4d2$export$cbcfede36ce7ab2e(domElement) {\n    var method = domElement.getAttribute(\"data-insights-method\");\n    var serializedPayload = domElement.getAttribute(\"data-insights-payload\");\n    if (typeof serializedPayload !== \"string\") throw new Error(\"The insights helper expects `data-insights-payload` to be a base64-encoded JSON string.\");\n    try {\n        var payload = (0, $61d6f7a445550123$export$706ea24b0964bee9)(serializedPayload);\n        return {\n            method: method,\n            payload: payload\n        };\n    } catch (error) {\n        throw new Error(\"The insights helper was unable to parse `data-insights-payload`.\");\n    }\n}\nfunction $62dc5ddd84fbc4d2$export$75ec42bbd0a5e7d6(domElement) {\n    return domElement.hasAttribute(\"data-insights-method\");\n}\nfunction $62dc5ddd84fbc4d2$export$a3453cc0ced8b97c(_ref) {\n    var method = _ref.method, payload = _ref.payload;\n    if ($62dc5ddd84fbc4d2$var$_typeof(payload) !== \"object\") throw new Error(\"The insights helper expects the payload to be an object.\");\n    var serializedPayload;\n    try {\n        serializedPayload = (0, $61d6f7a445550123$export$44b4521aa38272f2)(payload);\n    } catch (error) {\n        throw new Error(\"Could not JSON serialize the payload object.\");\n    }\n    return 'data-insights-method=\"'.concat(method, '\" data-insights-payload=\"').concat(serializedPayload, '\"');\n}\nfunction $62dc5ddd84fbc4d2$export$2e2bcd8739ae039(method, payload) {\n    return $62dc5ddd84fbc4d2$export$a3453cc0ced8b97c({\n        method: method,\n        payload: payload\n    });\n}\n\n\nvar $fc9ea6db8b6fe186$var$findInsightsTarget = function findInsightsTarget(startElement, endElement, validator) {\n    var element = startElement;\n    while(element && !validator(element)){\n        if (element === endElement) return null;\n        element = element.parentElement;\n    }\n    return element;\n};\nvar $fc9ea6db8b6fe186$var$parseInsightsEvent = function parseInsightsEvent(element) {\n    var serializedPayload = element.getAttribute(\"data-insights-event\");\n    if (typeof serializedPayload !== \"string\") throw new Error(\"The insights middleware expects `data-insights-event` to be a base64-encoded JSON string.\");\n    try {\n        return (0, $61d6f7a445550123$export$706ea24b0964bee9)(serializedPayload);\n    } catch (error) {\n        throw new Error(\"The insights middleware was unable to parse `data-insights-event`.\");\n    }\n};\nvar $fc9ea6db8b6fe186$var$insightsListener = function insightsListener(BaseComponent) {\n    function WithInsightsListener(props) {\n        var handleClick = function handleClick(event) {\n            if (props.sendEvent) {\n                // new way with insights middleware\n                var targetWithEvent = $fc9ea6db8b6fe186$var$findInsightsTarget(event.target, event.currentTarget, function(element) {\n                    return element.hasAttribute(\"data-insights-event\");\n                });\n                if (targetWithEvent) {\n                    var payload = $fc9ea6db8b6fe186$var$parseInsightsEvent(targetWithEvent);\n                    payload.forEach(function(single) {\n                        return props.sendEvent(single);\n                    });\n                }\n            } // old way, e.g. instantsearch.insights(\"clickedObjectIDsAfterSearch\", { .. })\n            var insightsTarget = $fc9ea6db8b6fe186$var$findInsightsTarget(event.target, event.currentTarget, function(element) {\n                return (0, $62dc5ddd84fbc4d2$export$75ec42bbd0a5e7d6)(element);\n            });\n            if (insightsTarget) {\n                var _readDataAttributes = (0, $62dc5ddd84fbc4d2$export$cbcfede36ce7ab2e)(insightsTarget), method = _readDataAttributes.method, _payload = _readDataAttributes.payload;\n                props.insights(method, _payload);\n            }\n        };\n        return (0, $450fc775b2f7950e$export$c8a8987d4410bf2d)(\"div\", {\n            onClick: handleClick\n        }, (0, $450fc775b2f7950e$export$c8a8987d4410bf2d)(BaseComponent, props));\n    }\n    return WithInsightsListener;\n};\nvar $fc9ea6db8b6fe186$export$2e2bcd8739ae039 = $fc9ea6db8b6fe186$var$insightsListener;\n\n\nfunction $9169b8376f1e6cf3$var$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 $9169b8376f1e6cf3$var$_objectSpread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        if (i % 2) $9169b8376f1e6cf3$var$ownKeys(Object(source), true).forEach(function(key) {\n            $9169b8376f1e6cf3$var$_defineProperty(target, key, source[key]);\n        });\n        else if (Object.getOwnPropertyDescriptors) Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n        else $9169b8376f1e6cf3$var$ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nfunction $9169b8376f1e6cf3$var$_defineProperty(obj, key, value) {\n    if (key in obj) Object.defineProperty(obj, key, {\n        value: value,\n        enumerable: true,\n        configurable: true,\n        writable: true\n    });\n    else obj[key] = value;\n    return obj;\n}\nvar $9169b8376f1e6cf3$var$withUsage = (0, $049fad80b24500a5$export$2fde5bffc340821e)({\n    name: \"hits\"\n});\nvar $9169b8376f1e6cf3$var$suit = (0, $26d2f3c47ecadc8f$export$d8556a2a8f973135)(\"Hits\");\nvar $9169b8376f1e6cf3$var$HitsWithInsightsListener = (0, $fc9ea6db8b6fe186$export$2e2bcd8739ae039)((0, $5495c4c3740071e8$export$2e2bcd8739ae039));\nvar $9169b8376f1e6cf3$var$renderer = function renderer(_ref) {\n    var renderState = _ref.renderState, cssClasses = _ref.cssClasses, containerNode = _ref.containerNode, templates = _ref.templates;\n    return function(_ref2, isFirstRendering) {\n        var receivedHits = _ref2.hits, results = _ref2.results, instantSearchInstance = _ref2.instantSearchInstance, insights = _ref2.insights, bindEvent = _ref2.bindEvent;\n        if (isFirstRendering) {\n            renderState.templateProps = (0, $1f15ae9d41409849$export$2938ff6a58d41f25)({\n                defaultTemplates: (0, $86221d5f03b17c54$export$2e2bcd8739ae039),\n                templatesConfig: instantSearchInstance.templatesConfig,\n                templates: templates\n            });\n            return;\n        }\n        (0, $450fc775b2f7950e$export$b3890eb0ae9dca99)((0, $450fc775b2f7950e$export$c8a8987d4410bf2d)($9169b8376f1e6cf3$var$HitsWithInsightsListener, {\n            cssClasses: cssClasses,\n            hits: receivedHits,\n            results: results,\n            templateProps: renderState.templateProps,\n            insights: insights,\n            sendEvent: function sendEvent(event) {\n                instantSearchInstance.sendEventToInsights(event);\n            },\n            bindEvent: bindEvent\n        }), containerNode);\n    };\n};\nvar $9169b8376f1e6cf3$var$hits = function hits(widgetParams) {\n    var _ref3 = widgetParams || {}, container = _ref3.container, escapeHTML = _ref3.escapeHTML, transformItems = _ref3.transformItems, _ref3$templates = _ref3.templates, templates = _ref3$templates === void 0 ? {} : _ref3$templates, _ref3$cssClasses = _ref3.cssClasses, userCssClasses = _ref3$cssClasses === void 0 ? {} : _ref3$cssClasses;\n    if (!container) throw new Error($9169b8376f1e6cf3$var$withUsage(\"The `container` option is required.\"));\n    var containerNode = (0, $964d85af6623150d$export$ffb2c7b8d67c359a)(container);\n    var cssClasses = {\n        root: (0, (/*@__PURE__*/$parcel$interopDefault($f8c99c41bd600645$exports)))($9169b8376f1e6cf3$var$suit(), userCssClasses.root),\n        emptyRoot: (0, (/*@__PURE__*/$parcel$interopDefault($f8c99c41bd600645$exports)))($9169b8376f1e6cf3$var$suit({\n            modifierName: \"empty\"\n        }), userCssClasses.emptyRoot),\n        list: (0, (/*@__PURE__*/$parcel$interopDefault($f8c99c41bd600645$exports)))($9169b8376f1e6cf3$var$suit({\n            descendantName: \"list\"\n        }), userCssClasses.list),\n        item: (0, (/*@__PURE__*/$parcel$interopDefault($f8c99c41bd600645$exports)))($9169b8376f1e6cf3$var$suit({\n            descendantName: \"item\"\n        }), userCssClasses.item)\n    };\n    var specializedRenderer = $9169b8376f1e6cf3$var$renderer({\n        containerNode: containerNode,\n        cssClasses: cssClasses,\n        renderState: {},\n        templates: templates\n    });\n    var makeWidget = (0, $b60166d8fe31c83e$export$2e2bcd8739ae039)((0, $cf783656762e2f5f$export$2e2bcd8739ae039))(specializedRenderer, function() {\n        return (0, $450fc775b2f7950e$export$b3890eb0ae9dca99)(null, containerNode);\n    });\n    return $9169b8376f1e6cf3$var$_objectSpread($9169b8376f1e6cf3$var$_objectSpread({}, makeWidget({\n        escapeHTML: escapeHTML,\n        transformItems: transformItems\n    })), {}, {\n        $$widgetType: \"ais.hits\"\n    });\n};\nvar $9169b8376f1e6cf3$export$2e2bcd8739ae039 = $9169b8376f1e6cf3$var$hits;\n\n\n\n\n\nfunction $fa160872dd4e1018$export$5b1771037ab7c451(event) {\n    var isMiddleClick = event.button === 1;\n    return isMiddleClick || event.altKey || event.ctrlKey || event.metaKey || event.shiftKey;\n}\n\n\n\n\n\nfunction $5f9b8a8a8722915d$var$_extends() {\n    $5f9b8a8a8722915d$var$_extends = Object.assign || function(target) {\n        for(var i = 1; i < arguments.length; i++){\n            var source = arguments[i];\n            for(var key in source)if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];\n        }\n        return target;\n    };\n    return $5f9b8a8a8722915d$var$_extends.apply(this, arguments);\n}\nfunction $5f9b8a8a8722915d$var$RefinementListItem(_ref) {\n    var className = _ref.className, handleClick = _ref.handleClick, facetValueToRefine = _ref.facetValueToRefine, isRefined = _ref.isRefined, templateProps = _ref.templateProps, templateKey = _ref.templateKey, templateData = _ref.templateData, subItems = _ref.subItems;\n    return (0, $450fc775b2f7950e$export$c8a8987d4410bf2d)(\"li\", {\n        className: className,\n        onClick: function onClick(originalEvent) {\n            handleClick({\n                facetValueToRefine: facetValueToRefine,\n                isRefined: isRefined,\n                originalEvent: originalEvent\n            });\n        }\n    }, (0, $450fc775b2f7950e$export$c8a8987d4410bf2d)((0, $cae24fad0dd36ab6$export$2e2bcd8739ae039), $5f9b8a8a8722915d$var$_extends({}, templateProps, {\n        templateKey: templateKey,\n        data: templateData\n    })), subItems);\n}\nvar $5f9b8a8a8722915d$export$2e2bcd8739ae039 = $5f9b8a8a8722915d$var$RefinementListItem;\n\n\n\n\n\nfunction $5fc4f1c021bd59de$var$_typeof(obj) {\n    \"@babel/helpers - typeof\";\n    if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") $5fc4f1c021bd59de$var$_typeof = function _typeof(obj) {\n        return typeof obj;\n    };\n    else $5fc4f1c021bd59de$var$_typeof = function _typeof(obj) {\n        return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n    return $5fc4f1c021bd59de$var$_typeof(obj);\n}\nfunction $5fc4f1c021bd59de$var$_classCallCheck(instance, Constructor) {\n    if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction $5fc4f1c021bd59de$var$_defineProperties(target, props) {\n    for(var i = 0; i < props.length; i++){\n        var descriptor = props[i];\n        descriptor.enumerable = descriptor.enumerable || false;\n        descriptor.configurable = true;\n        if (\"value\" in descriptor) descriptor.writable = true;\n        Object.defineProperty(target, descriptor.key, descriptor);\n    }\n}\nfunction $5fc4f1c021bd59de$var$_createClass(Constructor, protoProps, staticProps) {\n    if (protoProps) $5fc4f1c021bd59de$var$_defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) $5fc4f1c021bd59de$var$_defineProperties(Constructor, staticProps);\n    return Constructor;\n}\nfunction $5fc4f1c021bd59de$var$_inherits(subClass, superClass) {\n    if (typeof superClass !== \"function\" && superClass !== null) throw new TypeError(\"Super expression must either be null or a function\");\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\n        constructor: {\n            value: subClass,\n            writable: true,\n            configurable: true\n        }\n    });\n    if (superClass) $5fc4f1c021bd59de$var$_setPrototypeOf(subClass, superClass);\n}\nfunction $5fc4f1c021bd59de$var$_setPrototypeOf(o, p) {\n    $5fc4f1c021bd59de$var$_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n        o.__proto__ = p;\n        return o;\n    };\n    return $5fc4f1c021bd59de$var$_setPrototypeOf(o, p);\n}\nfunction $5fc4f1c021bd59de$var$_createSuper(Derived) {\n    var hasNativeReflectConstruct = $5fc4f1c021bd59de$var$_isNativeReflectConstruct();\n    return function _createSuperInternal() {\n        var Super = $5fc4f1c021bd59de$var$_getPrototypeOf(Derived), result;\n        if (hasNativeReflectConstruct) {\n            var NewTarget = $5fc4f1c021bd59de$var$_getPrototypeOf(this).constructor;\n            result = Reflect.construct(Super, arguments, NewTarget);\n        } else result = Super.apply(this, arguments);\n        return $5fc4f1c021bd59de$var$_possibleConstructorReturn(this, result);\n    };\n}\nfunction $5fc4f1c021bd59de$var$_possibleConstructorReturn(self, call) {\n    if (call && ($5fc4f1c021bd59de$var$_typeof(call) === \"object\" || typeof call === \"function\")) return call;\n    return $5fc4f1c021bd59de$var$_assertThisInitialized(self);\n}\nfunction $5fc4f1c021bd59de$var$_assertThisInitialized(self) {\n    if (self === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n    return self;\n}\nfunction $5fc4f1c021bd59de$var$_isNativeReflectConstruct() {\n    if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n    if (Reflect.construct.sham) return false;\n    if (typeof Proxy === \"function\") return true;\n    try {\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n        return true;\n    } catch (e) {\n        return false;\n    }\n}\nfunction $5fc4f1c021bd59de$var$_getPrototypeOf(o) {\n    $5fc4f1c021bd59de$var$_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n        return o.__proto__ || Object.getPrototypeOf(o);\n    };\n    return $5fc4f1c021bd59de$var$_getPrototypeOf(o);\n}\nfunction $5fc4f1c021bd59de$var$_defineProperty(obj, key, value) {\n    if (key in obj) Object.defineProperty(obj, key, {\n        value: value,\n        enumerable: true,\n        configurable: true,\n        writable: true\n    });\n    else obj[key] = value;\n    return obj;\n}\nvar $5fc4f1c021bd59de$var$defaultProps = {\n    query: \"\",\n    showSubmit: true,\n    showReset: true,\n    showLoadingIndicator: true,\n    autofocus: false,\n    searchAsYouType: true,\n    isSearchStalled: false,\n    disabled: false,\n    onChange: (0, $dba781b2f4cd6c52$export$8793edee2d425525),\n    onSubmit: (0, $dba781b2f4cd6c52$export$8793edee2d425525),\n    onReset: (0, $dba781b2f4cd6c52$export$8793edee2d425525),\n    refine: (0, $dba781b2f4cd6c52$export$8793edee2d425525)\n};\nvar $5fc4f1c021bd59de$var$SearchBox = /*#__PURE__*/ function(_Component) {\n    $5fc4f1c021bd59de$var$_inherits(SearchBox, _Component);\n    var _super = $5fc4f1c021bd59de$var$_createSuper(SearchBox);\n    function SearchBox() {\n        var _this;\n        $5fc4f1c021bd59de$var$_classCallCheck(this, SearchBox);\n        for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++)args[_key] = arguments[_key];\n        _this = _super.call.apply(_super, [\n            this\n        ].concat(args));\n        $5fc4f1c021bd59de$var$_defineProperty($5fc4f1c021bd59de$var$_assertThisInitialized(_this), \"state\", {\n            query: _this.props.query,\n            focused: false\n        });\n        $5fc4f1c021bd59de$var$_defineProperty($5fc4f1c021bd59de$var$_assertThisInitialized(_this), \"input\", (0, $450fc775b2f7950e$export$7d1e3a5e95ceca43)());\n        $5fc4f1c021bd59de$var$_defineProperty($5fc4f1c021bd59de$var$_assertThisInitialized(_this), \"onInput\", function(event) {\n            var _this$props = _this.props, searchAsYouType = _this$props.searchAsYouType, refine = _this$props.refine, onChange = _this$props.onChange;\n            var query = event.target.value;\n            if (searchAsYouType) refine(query);\n            _this.setState({\n                query: query\n            });\n            onChange(event);\n        });\n        $5fc4f1c021bd59de$var$_defineProperty($5fc4f1c021bd59de$var$_assertThisInitialized(_this), \"onSubmit\", function(event) {\n            var _this$props2 = _this.props, searchAsYouType = _this$props2.searchAsYouType, refine = _this$props2.refine, onSubmit = _this$props2.onSubmit;\n            event.preventDefault();\n            event.stopPropagation();\n            if (_this.input.current) _this.input.current.blur();\n            if (!searchAsYouType) refine(_this.state.query);\n            onSubmit(event);\n            return false;\n        });\n        $5fc4f1c021bd59de$var$_defineProperty($5fc4f1c021bd59de$var$_assertThisInitialized(_this), \"onReset\", function(event) {\n            var _this$props3 = _this.props, refine = _this$props3.refine, onReset = _this$props3.onReset;\n            var query = \"\";\n            if (_this.input.current) _this.input.current.focus();\n            refine(query);\n            _this.setState({\n                query: query\n            });\n            onReset(event);\n        });\n        $5fc4f1c021bd59de$var$_defineProperty($5fc4f1c021bd59de$var$_assertThisInitialized(_this), \"onBlur\", function() {\n            _this.setState({\n                focused: false\n            });\n        });\n        $5fc4f1c021bd59de$var$_defineProperty($5fc4f1c021bd59de$var$_assertThisInitialized(_this), \"onFocus\", function() {\n            _this.setState({\n                focused: true\n            });\n        });\n        return _this;\n    }\n    $5fc4f1c021bd59de$var$_createClass(SearchBox, [\n        {\n            key: \"resetInput\",\n            value: /**\n     * This public method is used in the RefinementList SFFV search box\n     * to reset the input state when an item is selected.\n     *\n     * @see RefinementList#componentWillReceiveProps\n     * @return {undefined}\n     */ function resetInput() {\n                this.setState({\n                    query: \"\"\n                });\n            }\n        },\n        {\n            key: \"componentWillReceiveProps\",\n            value: function componentWillReceiveProps(nextProps) {\n                /**\n       * when the user is typing, we don't want to replace the query typed\n       * by the user (state.query) with the query exposed by the connector (props.query)\n       * see: https://github.com/algolia/instantsearch.js/issues/4141\n       */ if (!this.state.focused && nextProps.query !== this.state.query) this.setState({\n                    query: nextProps.query\n                });\n            }\n        },\n        {\n            key: \"render\",\n            value: function render() {\n                var _this$props4 = this.props, cssClasses = _this$props4.cssClasses, placeholder = _this$props4.placeholder, autofocus = _this$props4.autofocus, showSubmit = _this$props4.showSubmit, showReset = _this$props4.showReset, showLoadingIndicator = _this$props4.showLoadingIndicator, templates = _this$props4.templates, isSearchStalled = _this$props4.isSearchStalled;\n                return (0, $450fc775b2f7950e$export$c8a8987d4410bf2d)(\"div\", {\n                    className: cssClasses.root\n                }, (0, $450fc775b2f7950e$export$c8a8987d4410bf2d)(\"form\", {\n                    action: \"\",\n                    role: \"search\",\n                    className: cssClasses.form,\n                    noValidate: true,\n                    onSubmit: this.onSubmit,\n                    onReset: this.onReset\n                }, (0, $450fc775b2f7950e$export$c8a8987d4410bf2d)(\"input\", {\n                    ref: this.input,\n                    value: this.state.query,\n                    disabled: this.props.disabled,\n                    className: cssClasses.input,\n                    type: \"search\",\n                    placeholder: placeholder,\n                    autoFocus: autofocus,\n                    autoComplete: \"off\",\n                    autoCorrect: \"off\",\n                    autoCapitalize: \"off\" // @ts-expect-error `spellCheck` attribute is missing in preact JSX types\n                    ,\n                    spellCheck: \"false\",\n                    maxLength: 512,\n                    onInput: this.onInput,\n                    onBlur: this.onBlur,\n                    onFocus: this.onFocus\n                }), (0, $450fc775b2f7950e$export$c8a8987d4410bf2d)((0, $cae24fad0dd36ab6$export$2e2bcd8739ae039), {\n                    templateKey: \"submit\",\n                    rootTagName: \"button\",\n                    rootProps: {\n                        className: cssClasses.submit,\n                        type: \"submit\",\n                        title: \"Submit the search query.\",\n                        hidden: !showSubmit\n                    },\n                    templates: templates,\n                    data: {\n                        cssClasses: cssClasses\n                    }\n                }), (0, $450fc775b2f7950e$export$c8a8987d4410bf2d)((0, $cae24fad0dd36ab6$export$2e2bcd8739ae039), {\n                    templateKey: \"reset\",\n                    rootTagName: \"button\",\n                    rootProps: {\n                        className: cssClasses.reset,\n                        type: \"reset\",\n                        title: \"Clear the search query.\",\n                        hidden: !(showReset && this.state.query.trim() && !isSearchStalled)\n                    },\n                    templates: templates,\n                    data: {\n                        cssClasses: cssClasses\n                    }\n                }), showLoadingIndicator && (0, $450fc775b2f7950e$export$c8a8987d4410bf2d)((0, $cae24fad0dd36ab6$export$2e2bcd8739ae039), {\n                    templateKey: \"loadingIndicator\",\n                    rootTagName: \"span\",\n                    rootProps: {\n                        className: cssClasses.loadingIndicator,\n                        hidden: !isSearchStalled\n                    },\n                    templates: templates,\n                    data: {\n                        cssClasses: cssClasses\n                    }\n                })));\n            }\n        }\n    ]);\n    return SearchBox;\n}((0, $450fc775b2f7950e$export$16fa2f45be04daa8));\n$5fc4f1c021bd59de$var$_defineProperty($5fc4f1c021bd59de$var$SearchBox, \"defaultProps\", $5fc4f1c021bd59de$var$defaultProps);\nvar $5fc4f1c021bd59de$export$2e2bcd8739ae039 = $5fc4f1c021bd59de$var$SearchBox;\n\n\nfunction $d11c82f490f857bb$var$_typeof(obj) {\n    \"@babel/helpers - typeof\";\n    if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") $d11c82f490f857bb$var$_typeof = function _typeof(obj) {\n        return typeof obj;\n    };\n    else $d11c82f490f857bb$var$_typeof = function _typeof(obj) {\n        return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n    return $d11c82f490f857bb$var$_typeof(obj);\n}\nfunction $d11c82f490f857bb$var$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 $d11c82f490f857bb$var$_objectSpread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        if (i % 2) $d11c82f490f857bb$var$ownKeys(Object(source), true).forEach(function(key) {\n            $d11c82f490f857bb$var$_defineProperty(target, key, source[key]);\n        });\n        else if (Object.getOwnPropertyDescriptors) Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n        else $d11c82f490f857bb$var$ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nfunction $d11c82f490f857bb$var$_extends() {\n    $d11c82f490f857bb$var$_extends = Object.assign || function(target) {\n        for(var i = 1; i < arguments.length; i++){\n            var source = arguments[i];\n            for(var key in source)if (Object.prototype.hasOwnProperty.call(source, key)) target[key] = source[key];\n        }\n        return target;\n    };\n    return $d11c82f490f857bb$var$_extends.apply(this, arguments);\n}\nfunction $d11c82f490f857bb$var$_objectWithoutProperties(source, excluded) {\n    if (source == null) return {};\n    var target = $d11c82f490f857bb$var$_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}\nfunction $d11c82f490f857bb$var$_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 $d11c82f490f857bb$var$_classCallCheck(instance, Constructor) {\n    if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction $d11c82f490f857bb$var$_defineProperties(target, props) {\n    for(var i = 0; i < props.length; i++){\n        var descriptor = props[i];\n        descriptor.enumerable = descriptor.enumerable || false;\n        descriptor.configurable = true;\n        if (\"value\" in descriptor) descriptor.writable = true;\n        Object.defineProperty(target, descriptor.key, descriptor);\n    }\n}\nfunction $d11c82f490f857bb$var$_createClass(Constructor, protoProps, staticProps) {\n    if (protoProps) $d11c82f490f857bb$var$_defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) $d11c82f490f857bb$var$_defineProperties(Constructor, staticProps);\n    return Constructor;\n}\nfunction $d11c82f490f857bb$var$_inherits(subClass, superClass) {\n    if (typeof superClass !== \"function\" && superClass !== null) throw new TypeError(\"Super expression must either be null or a function\");\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\n        constructor: {\n            value: subClass,\n            writable: true,\n            configurable: true\n        }\n    });\n    if (superClass) $d11c82f490f857bb$var$_setPrototypeOf(subClass, superClass);\n}\nfunction $d11c82f490f857bb$var$_setPrototypeOf(o, p) {\n    $d11c82f490f857bb$var$_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n        o.__proto__ = p;\n        return o;\n    };\n    return $d11c82f490f857bb$var$_setPrototypeOf(o, p);\n}\nfunction $d11c82f490f857bb$var$_createSuper(Derived) {\n    var hasNativeReflectConstruct = $d11c82f490f857bb$var$_isNativeReflectConstruct();\n    return function _createSuperInternal() {\n        var Super = $d11c82f490f857bb$var$_getPrototypeOf(Derived), result;\n        if (hasNativeReflectConstruct) {\n            var NewTarget = $d11c82f490f857bb$var$_getPrototypeOf(this).constructor;\n            result = Reflect.construct(Super, arguments, NewTarget);\n        } else result = Super.apply(this, arguments);\n        return $d11c82f490f857bb$var$_possibleConstructorReturn(this, result);\n    };\n}\nfunction $d11c82f490f857bb$var$_possibleConstructorReturn(self, call) {\n    if (call && ($d11c82f490f857bb$var$_typeof(call) === \"object\" || typeof call === \"function\")) return call;\n    return $d11c82f490f857bb$var$_assertThisInitialized(self);\n}\nfunction $d11c82f490f857bb$var$_assertThisInitialized(self) {\n    if (self === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n    return self;\n}\nfunction $d11c82f490f857bb$var$_isNativeReflectConstruct() {\n    if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n    if (Reflect.construct.sham) return false;\n    if (typeof Proxy === \"function\") return true;\n    try {\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n        return true;\n    } catch (e) {\n        return false;\n    }\n}\nfunction $d11c82f490f857bb$var$_getPrototypeOf(o) {\n    $d11c82f490f857bb$var$_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n        return o.__proto__ || Object.getPrototypeOf(o);\n    };\n    return $d11c82f490f857bb$var$_getPrototypeOf(o);\n}\nfunction $d11c82f490f857bb$var$_defineProperty(obj, key, value) {\n    if (key in obj) Object.defineProperty(obj, key, {\n        value: value,\n        enumerable: true,\n        configurable: true,\n        writable: true\n    });\n    else obj[key] = value;\n    return obj;\n}\nvar $d11c82f490f857bb$var$defaultProps = {\n    cssClasses: {},\n    depth: 0\n};\nfunction $d11c82f490f857bb$var$isHierarchicalMenuItem(facetValue) {\n    return facetValue.data !== undefined;\n}\nvar $d11c82f490f857bb$var$RefinementList = /*#__PURE__*/ function(_Component) {\n    $d11c82f490f857bb$var$_inherits(RefinementList, _Component);\n    var _super = $d11c82f490f857bb$var$_createSuper(RefinementList);\n    function RefinementList(props) {\n        var _this;\n        $d11c82f490f857bb$var$_classCallCheck(this, RefinementList);\n        _this = _super.call(this, props);\n        $d11c82f490f857bb$var$_defineProperty($d11c82f490f857bb$var$_assertThisInitialized(_this), \"searchBox\", (0, $450fc775b2f7950e$export$7d1e3a5e95ceca43)());\n        _this.handleItemClick = _this.handleItemClick.bind($d11c82f490f857bb$var$_assertThisInitialized(_this));\n        return _this;\n    }\n    $d11c82f490f857bb$var$_createClass(RefinementList, [\n        {\n            key: \"shouldComponentUpdate\",\n            value: function shouldComponentUpdate(nextProps) {\n                var areFacetValuesDifferent = !(0, $4198f5cd959b5a7d$export$248d38f6296296c5)(this.props.facetValues, nextProps.facetValues);\n                return areFacetValuesDifferent;\n            }\n        },\n        {\n            key: \"refine\",\n            value: function refine(facetValueToRefine) {\n                this.props.toggleRefinement(facetValueToRefine);\n            }\n        },\n        {\n            key: \"_generateFacetItem\",\n            value: function _generateFacetItem(facetValue) {\n                var _cx;\n                var subItems;\n                if ($d11c82f490f857bb$var$isHierarchicalMenuItem(facetValue) && Array.isArray(facetValue.data) && facetValue.data.length > 0) {\n                    var _this$props$cssClasse = this.props.cssClasses, root = _this$props$cssClasse.root, cssClasses = $d11c82f490f857bb$var$_objectWithoutProperties(_this$props$cssClasse, [\n                        \"root\"\n                    ]);\n                    subItems = (0, $450fc775b2f7950e$export$c8a8987d4410bf2d)(RefinementList, $d11c82f490f857bb$var$_extends({}, this.props, {\n                        // We want to keep `root` required for external usage but not for the\n                        // sub items.\n                        cssClasses: cssClasses,\n                        depth: this.props.depth + 1,\n                        facetValues: facetValue.data,\n                        showMore: false,\n                        className: this.props.cssClasses.childList\n                    }));\n                }\n                var url = this.props.createURL(facetValue.value);\n                var templateData = $d11c82f490f857bb$var$_objectSpread($d11c82f490f857bb$var$_objectSpread({}, facetValue), {}, {\n                    url: url,\n                    attribute: this.props.attribute,\n                    cssClasses: this.props.cssClasses,\n                    isFromSearch: this.props.isFromSearch\n                });\n                var key = facetValue.value;\n                if (facetValue.isRefined !== undefined) key += \"/\".concat(facetValue.isRefined);\n                if (facetValue.count !== undefined) key += \"/\".concat(facetValue.count);\n                var refinementListItemClassName = (0, (/*@__PURE__*/$parcel$interopDefault($f8c99c41bd600645$exports)))(this.props.cssClasses.item, (_cx = {}, $d11c82f490f857bb$var$_defineProperty(_cx, this.props.cssClasses.selectedItem, facetValue.isRefined), $d11c82f490f857bb$var$_defineProperty(_cx, this.props.cssClasses.disabledItem, !facetValue.count), $d11c82f490f857bb$var$_defineProperty(_cx, this.props.cssClasses.parentItem, $d11c82f490f857bb$var$isHierarchicalMenuItem(facetValue) && Array.isArray(facetValue.data) && facetValue.data.length > 0), _cx));\n                return (0, $450fc775b2f7950e$export$c8a8987d4410bf2d)((0, $5f9b8a8a8722915d$export$2e2bcd8739ae039), {\n                    templateKey: \"item\",\n                    key: key,\n                    facetValueToRefine: facetValue.value,\n                    handleClick: this.handleItemClick,\n                    isRefined: facetValue.isRefined,\n                    className: refinementListItemClassName,\n                    subItems: subItems,\n                    templateData: templateData,\n                    templateProps: this.props.templateProps\n                });\n            } // Click events on DOM tree like LABEL > INPUT will result in two click events\n        },\n        {\n            key: \"handleItemClick\",\n            value: function handleItemClick(_ref) {\n                var facetValueToRefine = _ref.facetValueToRefine, isRefined = _ref.isRefined, originalEvent = _ref.originalEvent;\n                if ((0, $fa160872dd4e1018$export$5b1771037ab7c451)(originalEvent)) // do not alter the default browser behavior\n                // if one special key is down\n                return;\n                if (!(originalEvent.target instanceof HTMLElement) || !(originalEvent.target.parentNode instanceof HTMLElement)) return;\n                if (isRefined && originalEvent.target.parentNode.querySelector('input[type=\"radio\"]:checked')) // Prevent refinement for being reset if the user clicks on an already checked radio button\n                return;\n                if (originalEvent.target.tagName === \"INPUT\") {\n                    this.refine(facetValueToRefine);\n                    return;\n                }\n                var parent = originalEvent.target;\n                while(parent !== originalEvent.currentTarget){\n                    if (parent.tagName === \"LABEL\" && (parent.querySelector('input[type=\"checkbox\"]') || parent.querySelector('input[type=\"radio\"]'))) return;\n                    if (parent.tagName === \"A\" && parent.href) originalEvent.preventDefault();\n                    parent = parent.parentNode;\n                }\n                originalEvent.stopPropagation();\n                this.refine(facetValueToRefine);\n            }\n        },\n        {\n            key: \"componentWillReceiveProps\",\n            value: function componentWillReceiveProps(nextProps) {\n                if (this.searchBox.current && !nextProps.isFromSearch) this.searchBox.current.resetInput();\n            }\n        },\n        {\n            key: \"refineFirstValue\",\n            value: function refineFirstValue() {\n                var firstValue = this.props.facetValues && this.props.facetValues[0];\n                if (firstValue) {\n                    var actualValue = firstValue.value;\n                    this.props.toggleRefinement(actualValue);\n                }\n            }\n        },\n        {\n            key: \"render\",\n            value: function render() {\n                var _this2 = this;\n                var showMoreButtonClassName = (0, (/*@__PURE__*/$parcel$interopDefault($f8c99c41bd600645$exports)))(this.props.cssClasses.showMore, $d11c82f490f857bb$var$_defineProperty({}, this.props.cssClasses.disabledShowMore, !(this.props.showMore === true && this.props.canToggleShowMore)));\n                var showMoreButton = this.props.showMore === true && (0, $450fc775b2f7950e$export$c8a8987d4410bf2d)((0, $cae24fad0dd36ab6$export$2e2bcd8739ae039), $d11c82f490f857bb$var$_extends({}, this.props.templateProps, {\n                    templateKey: \"showMoreText\",\n                    rootTagName: \"button\",\n                    rootProps: {\n                        className: showMoreButtonClassName,\n                        disabled: !this.props.canToggleShowMore,\n                        onClick: this.props.toggleShowMore\n                    },\n                    data: {\n                        isShowingMore: this.props.isShowingMore\n                    }\n                }));\n                var shouldDisableSearchBox = this.props.searchIsAlwaysActive !== true && !(this.props.isFromSearch || !this.props.hasExhaustiveItems);\n                var searchBox = this.props.searchFacetValues && (0, $450fc775b2f7950e$export$c8a8987d4410bf2d)(\"div\", {\n                    className: this.props.cssClasses.searchBox\n                }, (0, $450fc775b2f7950e$export$c8a8987d4410bf2d)((0, $5fc4f1c021bd59de$export$2e2bcd8739ae039), {\n                    ref: this.searchBox,\n                    placeholder: this.props.searchPlaceholder,\n                    disabled: shouldDisableSearchBox,\n                    cssClasses: this.props.cssClasses.searchable,\n                    templates: this.props.searchBoxTemplateProps.templates,\n                    onChange: function onChange(event) {\n                        return _this2.props.searchFacetValues(event.target.value);\n                    },\n                    onReset: function onReset() {\n                        return _this2.props.searchFacetValues(\"\");\n                    },\n                    onSubmit: function onSubmit() {\n                        return _this2.refineFirstValue();\n                    } // This sets the search box to a controlled state because\n                    ,\n                    searchAsYouType: false\n                }));\n                var facetValues = this.props.facetValues && this.props.facetValues.length > 0 && (0, $450fc775b2f7950e$export$c8a8987d4410bf2d)(\"ul\", {\n                    className: this.props.cssClasses.list\n                }, this.props.facetValues.map(this._generateFacetItem, this));\n                var noResults = this.props.searchFacetValues && this.props.isFromSearch && (!this.props.facetValues || this.props.facetValues.length === 0) && (0, $450fc775b2f7950e$export$c8a8987d4410bf2d)((0, $cae24fad0dd36ab6$export$2e2bcd8739ae039), $d11c82f490f857bb$var$_extends({}, this.props.templateProps, {\n                    templateKey: \"searchableNoResults\",\n                    rootProps: {\n                        className: this.props.cssClasses.noResults\n                    }\n                }));\n                var rootClassName = (0, (/*@__PURE__*/$parcel$interopDefault($f8c99c41bd600645$exports)))(this.props.cssClasses.root, $d11c82f490f857bb$var$_defineProperty({}, this.props.cssClasses.noRefinementRoot, !this.props.facetValues || this.props.facetValues.length === 0), this.props.className);\n                return (0, $450fc775b2f7950e$export$c8a8987d4410bf2d)(\"div\", {\n                    className: rootClassName\n                }, this.props.children, searchBox, facetValues, noResults, showMoreButton);\n            }\n        }\n    ]);\n    return RefinementList;\n}((0, $450fc775b2f7950e$export$16fa2f45be04daa8));\n$d11c82f490f857bb$var$_defineProperty($d11c82f490f857bb$var$RefinementList, \"defaultProps\", $d11c82f490f857bb$var$defaultProps);\nvar $d11c82f490f857bb$export$2e2bcd8739ae039 = $d11c82f490f857bb$var$RefinementList;\n\n\nfunction $1eb6ef4d4ac7f6a0$export$12368a7050a31bdd(helper, facet, value) {\n    if (helper.state.isHierarchicalFacet(facet)) return helper.state.isHierarchicalFacetRefined(facet, value);\n    else if (helper.state.isConjunctiveFacet(facet)) return helper.state.isFacetRefined(facet, value);\n    else return helper.state.isDisjunctiveFacetRefined(facet, value);\n}\n\n\nfunction $7d8e1cbc4145c713$var$_typeof(obj) {\n    \"@babel/helpers - typeof\";\n    if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") $7d8e1cbc4145c713$var$_typeof = function _typeof(obj) {\n        return typeof obj;\n    };\n    else $7d8e1cbc4145c713$var$_typeof = function _typeof(obj) {\n        return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n    return $7d8e1cbc4145c713$var$_typeof(obj);\n}\nfunction $7d8e1cbc4145c713$export$75bfa3473d01f29f(_ref) {\n    var instantSearchInstance = _ref.instantSearchInstance, helper = _ref.helper, attribute = _ref.attribute, widgetType = _ref.widgetType;\n    var sendEventForFacet = function sendEventForFacet() {\n        for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++)args[_key] = arguments[_key];\n        var eventType = args[0], facetValue = args[1], _args$ = args[2], eventName = _args$ === void 0 ? \"Filter Applied\" : _args$;\n        if (args.length === 1 && $7d8e1cbc4145c713$var$_typeof(args[0]) === \"object\") instantSearchInstance.sendEventToInsights(args[0]);\n        else if (eventType === \"click\" && (args.length === 2 || args.length === 3)) {\n            if (!(0, $1eb6ef4d4ac7f6a0$export$12368a7050a31bdd)(helper, attribute, facetValue)) // send event only when the facet is being checked \"ON\"\n            instantSearchInstance.sendEventToInsights({\n                insightsMethod: \"clickedFilters\",\n                widgetType: widgetType,\n                eventType: eventType,\n                payload: {\n                    eventName: eventName,\n                    index: helper.getIndex(),\n                    filters: [\n                        \"\".concat(attribute, \":\").concat(facetValue)\n                    ]\n                },\n                attribute: attribute\n            });\n        }\n    };\n    return sendEventForFacet;\n}\n\n\nfunction $79ccec92938acb76$var$_objectWithoutProperties(source, excluded) {\n    if (source == null) return {};\n    var target = $79ccec92938acb76$var$_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}\nfunction $79ccec92938acb76$var$_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 $79ccec92938acb76$var$_slicedToArray(arr, i) {\n    return $79ccec92938acb76$var$_arrayWithHoles(arr) || $79ccec92938acb76$var$_iterableToArrayLimit(arr, i) || $79ccec92938acb76$var$_unsupportedIterableToArray(arr, i) || $79ccec92938acb76$var$_nonIterableRest();\n}\nfunction $79ccec92938acb76$var$_nonIterableRest() {\n    throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction $79ccec92938acb76$var$_unsupportedIterableToArray(o, minLen) {\n    if (!o) return;\n    if (typeof o === \"string\") return $79ccec92938acb76$var$_arrayLikeToArray(o, minLen);\n    var n = Object.prototype.toString.call(o).slice(8, -1);\n    if (n === \"Object\" && o.constructor) n = o.constructor.name;\n    if (n === \"Map\" || n === \"Set\") return Array.from(o);\n    if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return $79ccec92938acb76$var$_arrayLikeToArray(o, minLen);\n}\nfunction $79ccec92938acb76$var$_arrayLikeToArray(arr, len) {\n    if (len == null || len > arr.length) len = arr.length;\n    for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n    return arr2;\n}\nfunction $79ccec92938acb76$var$_iterableToArrayLimit(arr, i) {\n    if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n    var _arr = [];\n    var _n = true;\n    var _d = false;\n    var _e = undefined;\n    try {\n        for(var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true){\n            _arr.push(_s.value);\n            if (i && _arr.length === i) break;\n        }\n    } catch (err) {\n        _d = true;\n        _e = err;\n    } finally{\n        try {\n            if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n        } finally{\n            if (_d) throw _e;\n        }\n    }\n    return _arr;\n}\nfunction $79ccec92938acb76$var$_arrayWithHoles(arr) {\n    if (Array.isArray(arr)) return arr;\n}\nfunction $79ccec92938acb76$var$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 $79ccec92938acb76$var$_objectSpread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        if (i % 2) $79ccec92938acb76$var$ownKeys(Object(source), true).forEach(function(key) {\n            $79ccec92938acb76$var$_defineProperty(target, key, source[key]);\n        });\n        else if (Object.getOwnPropertyDescriptors) Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n        else $79ccec92938acb76$var$ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nfunction $79ccec92938acb76$var$_defineProperty(obj, key, value) {\n    if (key in obj) Object.defineProperty(obj, key, {\n        value: value,\n        enumerable: true,\n        configurable: true,\n        writable: true\n    });\n    else obj[key] = value;\n    return obj;\n}\nvar $79ccec92938acb76$var$withUsage = (0, $049fad80b24500a5$export$2fde5bffc340821e)({\n    name: \"menu\",\n    connector: true\n});\nvar $79ccec92938acb76$var$DEFAULT_SORT = [\n    \"isRefined\",\n    \"name:asc\"\n];\n/**\n * **Menu** connector provides the logic to build a widget that will give the user the ability to choose a single value for a specific facet. The typical usage of menu is for navigation in categories.\n *\n * This connector provides a `toggleShowMore()` function to display more or less items and a `refine()`\n * function to select an item. While selecting a new element, the `refine` will also unselect the\n * one that is currently selected.\n *\n * **Requirement:** the attribute passed as `attribute` must be present in \"attributes for faceting\" on the Algolia dashboard or configured as attributesForFaceting via a set settings call to the Algolia API.\n */ var $79ccec92938acb76$var$connectMenu = function connectMenu(renderFn) {\n    var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : (0, $dba781b2f4cd6c52$export$8793edee2d425525);\n    (0, $86d1c5f90fff2f24$export$adc2a8e09aa583ee)(renderFn, $79ccec92938acb76$var$withUsage());\n    return function(widgetParams) {\n        var _ref = widgetParams || {}, attribute = _ref.attribute, _ref$limit = _ref.limit, limit = _ref$limit === void 0 ? 10 : _ref$limit, _ref$showMore = _ref.showMore, showMore = _ref$showMore === void 0 ? false : _ref$showMore, _ref$showMoreLimit = _ref.showMoreLimit, showMoreLimit = _ref$showMoreLimit === void 0 ? 20 : _ref$showMoreLimit, _ref$sortBy = _ref.sortBy, sortBy = _ref$sortBy === void 0 ? $79ccec92938acb76$var$DEFAULT_SORT : _ref$sortBy, _ref$transformItems = _ref.transformItems, transformItems = _ref$transformItems === void 0 ? function(items) {\n            return items;\n        } : _ref$transformItems;\n        if (!attribute) throw new Error($79ccec92938acb76$var$withUsage(\"The `attribute` option is required.\"));\n        if (showMore === true && showMoreLimit <= limit) throw new Error($79ccec92938acb76$var$withUsage(\"The `showMoreLimit` option must be greater than `limit`.\"));\n        var sendEvent;\n        var _createURL;\n        var _refine; // Provide the same function to the `renderFn` so that way the user\n        // has to only bind it once when `isFirstRendering` for instance\n        var isShowingMore = false;\n        var toggleShowMore = function toggleShowMore() {};\n        function createToggleShowMore(renderOptions, widget) {\n            return function() {\n                isShowingMore = !isShowingMore;\n                widget.render(renderOptions);\n            };\n        }\n        function cachedToggleShowMore() {\n            toggleShowMore();\n        }\n        function getLimit() {\n            return isShowingMore ? showMoreLimit : limit;\n        }\n        return {\n            $$type: \"ais.menu\",\n            init: function init(initOptions) {\n                var instantSearchInstance = initOptions.instantSearchInstance;\n                renderFn($79ccec92938acb76$var$_objectSpread($79ccec92938acb76$var$_objectSpread({}, this.getWidgetRenderState(initOptions)), {}, {\n                    instantSearchInstance: instantSearchInstance\n                }), true);\n            },\n            render: function render(renderOptions) {\n                var instantSearchInstance = renderOptions.instantSearchInstance;\n                renderFn($79ccec92938acb76$var$_objectSpread($79ccec92938acb76$var$_objectSpread({}, this.getWidgetRenderState(renderOptions)), {}, {\n                    instantSearchInstance: instantSearchInstance\n                }), false);\n            },\n            dispose: function dispose(_ref2) {\n                var state = _ref2.state;\n                unmountFn();\n                return state.removeHierarchicalFacet(attribute).setQueryParameter(\"maxValuesPerFacet\", undefined);\n            },\n            getRenderState: function getRenderState(renderState, renderOptions) {\n                return $79ccec92938acb76$var$_objectSpread($79ccec92938acb76$var$_objectSpread({}, renderState), {}, {\n                    menu: $79ccec92938acb76$var$_objectSpread($79ccec92938acb76$var$_objectSpread({}, renderState.menu), {}, $79ccec92938acb76$var$_defineProperty({}, attribute, this.getWidgetRenderState(renderOptions)))\n                });\n            },\n            getWidgetRenderState: function getWidgetRenderState(renderOptions) {\n                var results = renderOptions.results, createURL = renderOptions.createURL, instantSearchInstance = renderOptions.instantSearchInstance, helper = renderOptions.helper;\n                var items = [];\n                var canToggleShowMore = false;\n                if (!sendEvent) sendEvent = (0, $7d8e1cbc4145c713$export$75bfa3473d01f29f)({\n                    instantSearchInstance: instantSearchInstance,\n                    helper: helper,\n                    attribute: attribute,\n                    widgetType: this.$$type\n                });\n                if (!_createURL) _createURL = function _createURL(facetValue) {\n                    return createURL(helper.state.resetPage().toggleFacetRefinement(attribute, facetValue));\n                };\n                if (!_refine) _refine = function _refine(facetValue) {\n                    var _helper$getHierarchic = helper.getHierarchicalFacetBreadcrumb(attribute), _helper$getHierarchic2 = $79ccec92938acb76$var$_slicedToArray(_helper$getHierarchic, 1), refinedItem = _helper$getHierarchic2[0];\n                    sendEvent(\"click\", facetValue ? facetValue : refinedItem);\n                    helper.toggleFacetRefinement(attribute, facetValue ? facetValue : refinedItem).search();\n                };\n                if (renderOptions.results) toggleShowMore = createToggleShowMore(renderOptions, this);\n                if (results) {\n                    var facetValues = results.getFacetValues(attribute, {\n                        sortBy: sortBy,\n                        facetOrdering: sortBy === $79ccec92938acb76$var$DEFAULT_SORT\n                    });\n                    var facetItems = facetValues && !Array.isArray(facetValues) && facetValues.data ? facetValues.data : [];\n                    canToggleShowMore = showMore && (isShowingMore || facetItems.length > getLimit());\n                    items = transformItems(facetItems.slice(0, getLimit()).map(function(_ref3) {\n                        var label = _ref3.name, value = _ref3.escapedValue, path = _ref3.path, item = $79ccec92938acb76$var$_objectWithoutProperties(_ref3, [\n                            \"name\",\n                            \"escapedValue\",\n                            \"path\"\n                        ]);\n                        return $79ccec92938acb76$var$_objectSpread($79ccec92938acb76$var$_objectSpread({}, item), {}, {\n                            label: label,\n                            value: value\n                        });\n                    }), {\n                        results: results\n                    });\n                }\n                return {\n                    items: items,\n                    createURL: _createURL,\n                    refine: _refine,\n                    sendEvent: sendEvent,\n                    canRefine: items.length > 0,\n                    widgetParams: widgetParams,\n                    isShowingMore: isShowingMore,\n                    toggleShowMore: cachedToggleShowMore,\n                    canToggleShowMore: canToggleShowMore\n                };\n            },\n            getWidgetUiState: function getWidgetUiState(uiState, _ref4) {\n                var searchParameters = _ref4.searchParameters;\n                var _searchParameters$get = searchParameters.getHierarchicalFacetBreadcrumb(attribute), _searchParameters$get2 = $79ccec92938acb76$var$_slicedToArray(_searchParameters$get, 1), value = _searchParameters$get2[0];\n                if (!value) return uiState;\n                return $79ccec92938acb76$var$_objectSpread($79ccec92938acb76$var$_objectSpread({}, uiState), {}, {\n                    menu: $79ccec92938acb76$var$_objectSpread($79ccec92938acb76$var$_objectSpread({}, uiState.menu), {}, $79ccec92938acb76$var$_defineProperty({}, attribute, value))\n                });\n            },\n            getWidgetSearchParameters: function getWidgetSearchParameters(searchParameters, _ref5) {\n                var uiState = _ref5.uiState;\n                var value = uiState.menu && uiState.menu[attribute];\n                var withFacetConfiguration = searchParameters.removeHierarchicalFacet(attribute).addHierarchicalFacet({\n                    name: attribute,\n                    attributes: [\n                        attribute\n                    ]\n                });\n                var currentMaxValuesPerFacet = withFacetConfiguration.maxValuesPerFacet || 0;\n                var nextMaxValuesPerFacet = Math.max(currentMaxValuesPerFacet, showMore ? showMoreLimit : limit);\n                var withMaxValuesPerFacet = withFacetConfiguration.setQueryParameter(\"maxValuesPerFacet\", nextMaxValuesPerFacet);\n                if (!value) return withMaxValuesPerFacet.setQueryParameters({\n                    hierarchicalFacetsRefinements: $79ccec92938acb76$var$_objectSpread($79ccec92938acb76$var$_objectSpread({}, withMaxValuesPerFacet.hierarchicalFacetsRefinements), {}, $79ccec92938acb76$var$_defineProperty({}, attribute, []))\n                });\n                return withMaxValuesPerFacet.addHierarchicalFacetRefinement(attribute, value);\n            }\n        };\n    };\n};\nvar $79ccec92938acb76$export$2e2bcd8739ae039 = $79ccec92938acb76$var$connectMenu;\n\n\n\nfunction $9fd7029b79ebbbfb$export$f5dd818bff069720(value, numberLocale) {\n    return value.toLocaleString(numberLocale);\n}\n\n\nfunction $ae21d940dbed9e2e$export$a274e22fb40f762e(cssClasses) {\n    return Array.isArray(cssClasses) ? cssClasses.filter(Boolean).join(\" \") : cssClasses || \"\";\n}\n\n\nvar $ccf77fa7126d6bf2$var$defaultTemplates = {\n    item: function item(_ref) {\n        var cssClasses = _ref.cssClasses, url = _ref.url, label = _ref.label, count = _ref.count;\n        return (0, $450fc775b2f7950e$export$c8a8987d4410bf2d)(\"a\", {\n            className: (0, $ae21d940dbed9e2e$export$a274e22fb40f762e)(cssClasses.link),\n            href: url\n        }, (0, $450fc775b2f7950e$export$c8a8987d4410bf2d)(\"span\", {\n            className: (0, $ae21d940dbed9e2e$export$a274e22fb40f762e)(cssClasses.label)\n        }, label), (0, $450fc775b2f7950e$export$c8a8987d4410bf2d)(\"span\", {\n            className: (0, $ae21d940dbed9e2e$export$a274e22fb40f762e)(cssClasses.count)\n        }, (0, $9fd7029b79ebbbfb$export$f5dd818bff069720)(count)));\n    },\n    showMoreText: function showMoreText(_ref2) {\n        var isShowingMore = _ref2.isShowingMore;\n        return isShowingMore ? \"Show less\" : \"Show more\";\n    }\n};\nvar $ccf77fa7126d6bf2$export$2e2bcd8739ae039 = $ccf77fa7126d6bf2$var$defaultTemplates;\n\n\n\n\n\nfunction $224936184cbbdb1c$var$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 $224936184cbbdb1c$var$_objectSpread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        if (i % 2) $224936184cbbdb1c$var$ownKeys(Object(source), true).forEach(function(key) {\n            $224936184cbbdb1c$var$_defineProperty(target, key, source[key]);\n        });\n        else if (Object.getOwnPropertyDescriptors) Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n        else $224936184cbbdb1c$var$ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nfunction $224936184cbbdb1c$var$_defineProperty(obj, key, value) {\n    if (key in obj) Object.defineProperty(obj, key, {\n        value: value,\n        enumerable: true,\n        configurable: true,\n        writable: true\n    });\n    else obj[key] = value;\n    return obj;\n}\nvar $224936184cbbdb1c$var$withUsage = (0, $049fad80b24500a5$export$2fde5bffc340821e)({\n    name: \"menu\"\n});\nvar $224936184cbbdb1c$var$suit = (0, $26d2f3c47ecadc8f$export$d8556a2a8f973135)(\"Menu\");\nvar $224936184cbbdb1c$var$renderer = function renderer(_ref) {\n    var containerNode = _ref.containerNode, cssClasses = _ref.cssClasses, renderState = _ref.renderState, templates = _ref.templates, showMore = _ref.showMore;\n    return function(_ref2, isFirstRendering) {\n        var refine = _ref2.refine, items = _ref2.items, createURL = _ref2.createURL, instantSearchInstance = _ref2.instantSearchInstance, isShowingMore = _ref2.isShowingMore, toggleShowMore = _ref2.toggleShowMore, canToggleShowMore = _ref2.canToggleShowMore;\n        if (isFirstRendering) {\n            renderState.templateProps = (0, $1f15ae9d41409849$export$2938ff6a58d41f25)({\n                defaultTemplates: (0, $ccf77fa7126d6bf2$export$2e2bcd8739ae039),\n                templatesConfig: instantSearchInstance.templatesConfig,\n                templates: templates\n            });\n            return;\n        }\n        var facetValues = items.map(function(facetValue) {\n            return $224936184cbbdb1c$var$_objectSpread($224936184cbbdb1c$var$_objectSpread({}, facetValue), {}, {\n                url: createURL(facetValue.value)\n            });\n        });\n        (0, $450fc775b2f7950e$export$b3890eb0ae9dca99)((0, $450fc775b2f7950e$export$c8a8987d4410bf2d)((0, $d11c82f490f857bb$export$2e2bcd8739ae039), {\n            createURL: createURL,\n            cssClasses: cssClasses,\n            facetValues: facetValues,\n            showMore: showMore,\n            templateProps: renderState.templateProps,\n            toggleRefinement: refine,\n            toggleShowMore: toggleShowMore,\n            isShowingMore: isShowingMore,\n            canToggleShowMore: canToggleShowMore\n        }), containerNode);\n    };\n};\nvar $224936184cbbdb1c$var$menu = function menu(widgetParams) {\n    var _ref3 = widgetParams || {}, container = _ref3.container, attribute = _ref3.attribute, sortBy = _ref3.sortBy, limit = _ref3.limit, showMore = _ref3.showMore, showMoreLimit = _ref3.showMoreLimit, _ref3$cssClasses = _ref3.cssClasses, userCssClasses = _ref3$cssClasses === void 0 ? {} : _ref3$cssClasses, _ref3$templates = _ref3.templates, templates = _ref3$templates === void 0 ? {} : _ref3$templates, transformItems = _ref3.transformItems;\n    if (!container) throw new Error($224936184cbbdb1c$var$withUsage(\"The `container` option is required.\"));\n    var containerNode = (0, $964d85af6623150d$export$ffb2c7b8d67c359a)(container);\n    var cssClasses = {\n        root: (0, (/*@__PURE__*/$parcel$interopDefault($f8c99c41bd600645$exports)))($224936184cbbdb1c$var$suit(), userCssClasses.root),\n        noRefinementRoot: (0, (/*@__PURE__*/$parcel$interopDefault($f8c99c41bd600645$exports)))($224936184cbbdb1c$var$suit({\n            modifierName: \"noRefinement\"\n        }), userCssClasses.noRefinementRoot),\n        list: (0, (/*@__PURE__*/$parcel$interopDefault($f8c99c41bd600645$exports)))($224936184cbbdb1c$var$suit({\n            descendantName: \"list\"\n        }), userCssClasses.list),\n        item: (0, (/*@__PURE__*/$parcel$interopDefault($f8c99c41bd600645$exports)))($224936184cbbdb1c$var$suit({\n            descendantName: \"item\"\n        }), userCssClasses.item),\n        selectedItem: (0, (/*@__PURE__*/$parcel$interopDefault($f8c99c41bd600645$exports)))($224936184cbbdb1c$var$suit({\n            descendantName: \"item\",\n            modifierName: \"selected\"\n        }), userCssClasses.selectedItem),\n        link: (0, (/*@__PURE__*/$parcel$interopDefault($f8c99c41bd600645$exports)))($224936184cbbdb1c$var$suit({\n            descendantName: \"link\"\n        }), userCssClasses.link),\n        label: (0, (/*@__PURE__*/$parcel$interopDefault($f8c99c41bd600645$exports)))($224936184cbbdb1c$var$suit({\n            descendantName: \"label\"\n        }), userCssClasses.label),\n        count: (0, (/*@__PURE__*/$parcel$interopDefault($f8c99c41bd600645$exports)))($224936184cbbdb1c$var$suit({\n            descendantName: \"count\"\n        }), userCssClasses.count),\n        showMore: (0, (/*@__PURE__*/$parcel$interopDefault($f8c99c41bd600645$exports)))($224936184cbbdb1c$var$suit({\n            descendantName: \"showMore\"\n        }), userCssClasses.showMore),\n        disabledShowMore: (0, (/*@__PURE__*/$parcel$interopDefault($f8c99c41bd600645$exports)))($224936184cbbdb1c$var$suit({\n            descendantName: \"showMore\",\n            modifierName: \"disabled\"\n        }), userCssClasses.disabledShowMore)\n    };\n    var specializedRenderer = $224936184cbbdb1c$var$renderer({\n        containerNode: containerNode,\n        cssClasses: cssClasses,\n        renderState: {},\n        templates: templates,\n        showMore: showMore\n    });\n    var makeWidget = (0, $79ccec92938acb76$export$2e2bcd8739ae039)(specializedRenderer, function() {\n        return (0, $450fc775b2f7950e$export$b3890eb0ae9dca99)(null, containerNode);\n    });\n    return $224936184cbbdb1c$var$_objectSpread($224936184cbbdb1c$var$_objectSpread({}, makeWidget({\n        attribute: attribute,\n        limit: limit,\n        showMore: showMore,\n        showMoreLimit: showMoreLimit,\n        sortBy: sortBy,\n        transformItems: transformItems\n    })), {}, {\n        $$widgetType: \"ais.menu\"\n    });\n};\nvar $224936184cbbdb1c$export$2e2bcd8739ae039 = $224936184cbbdb1c$var$menu;\n\n\n\n\n\n\nfunction $647bd32ee5070119$var$_defineProperty(obj, key, value) {\n    if (key in obj) Object.defineProperty(obj, key, {\n        value: value,\n        enumerable: true,\n        configurable: true,\n        writable: true\n    });\n    else obj[key] = value;\n    return obj;\n}\nfunction $647bd32ee5070119$var$Pagination(props) {\n    function createClickHandler(pageNumber) {\n        return function(event) {\n            if ((0, $fa160872dd4e1018$export$5b1771037ab7c451)(event)) // do not alter the default browser behavior\n            // if one special key is down\n            return;\n            event.preventDefault();\n            props.setCurrentPage(pageNumber);\n        };\n    }\n    return (0, $450fc775b2f7950e$export$c8a8987d4410bf2d)(\"div\", {\n        className: (0, (/*@__PURE__*/$parcel$interopDefault($f8c99c41bd600645$exports)))(props.cssClasses.root, $647bd32ee5070119$var$_defineProperty({}, props.cssClasses.noRefinementRoot, props.nbPages <= 1))\n    }, (0, $450fc775b2f7950e$export$c8a8987d4410bf2d)(\"ul\", {\n        className: props.cssClasses.list\n    }, props.showFirst && (0, $450fc775b2f7950e$export$c8a8987d4410bf2d)($647bd32ee5070119$var$PaginationLink, {\n        ariaLabel: \"First\",\n        className: props.cssClasses.firstPageItem,\n        isDisabled: props.isFirstPage,\n        label: props.templates.first,\n        pageNumber: 0,\n        createURL: props.createURL,\n        cssClasses: props.cssClasses,\n        createClickHandler: createClickHandler\n    }), props.showPrevious && (0, $450fc775b2f7950e$export$c8a8987d4410bf2d)($647bd32ee5070119$var$PaginationLink, {\n        ariaLabel: \"Previous\",\n        className: props.cssClasses.previousPageItem,\n        isDisabled: props.isFirstPage,\n        label: props.templates.previous,\n        pageNumber: props.currentPage - 1,\n        createURL: props.createURL,\n        cssClasses: props.cssClasses,\n        createClickHandler: createClickHandler\n    }), props.pages.map(function(pageNumber) {\n        return (0, $450fc775b2f7950e$export$c8a8987d4410bf2d)($647bd32ee5070119$var$PaginationLink, {\n            key: pageNumber,\n            ariaLabel: \"\".concat(pageNumber + 1),\n            className: props.cssClasses.pageItem,\n            isSelected: pageNumber === props.currentPage,\n            label: \"\".concat(pageNumber + 1),\n            pageNumber: pageNumber,\n            createURL: props.createURL,\n            cssClasses: props.cssClasses,\n            createClickHandler: createClickHandler\n        });\n    }), props.showNext && (0, $450fc775b2f7950e$export$c8a8987d4410bf2d)($647bd32ee5070119$var$PaginationLink, {\n        ariaLabel: \"Next\",\n        className: props.cssClasses.nextPageItem,\n        isDisabled: props.isLastPage,\n        label: props.templates.next,\n        pageNumber: props.currentPage + 1,\n        createURL: props.createURL,\n        cssClasses: props.cssClasses,\n        createClickHandler: createClickHandler\n    }), props.showLast && (0, $450fc775b2f7950e$export$c8a8987d4410bf2d)($647bd32ee5070119$var$PaginationLink, {\n        ariaLabel: \"Last\",\n        className: props.cssClasses.lastPageItem,\n        isDisabled: props.isLastPage,\n        label: props.templates.last,\n        pageNumber: props.nbPages - 1,\n        createURL: props.createURL,\n        cssClasses: props.cssClasses,\n        createClickHandler: createClickHandler\n    })));\n}\nfunction $647bd32ee5070119$var$PaginationLink(_ref) {\n    var label = _ref.label, ariaLabel = _ref.ariaLabel, pageNumber = _ref.pageNumber, className = _ref.className, _ref$isDisabled = _ref.isDisabled, isDisabled = _ref$isDisabled === void 0 ? false : _ref$isDisabled, _ref$isSelected = _ref.isSelected, isSelected = _ref$isSelected === void 0 ? false : _ref$isSelected, cssClasses = _ref.cssClasses, createURL = _ref.createURL, createClickHandler = _ref.createClickHandler;\n    return (0, $450fc775b2f7950e$export$c8a8987d4410bf2d)(\"li\", {\n        className: (0, (/*@__PURE__*/$parcel$interopDefault($f8c99c41bd600645$exports)))(cssClasses.item, className, isDisabled && cssClasses.disabledItem, isSelected && cssClasses.selectedItem)\n    }, isDisabled ? (0, $450fc775b2f7950e$export$c8a8987d4410bf2d)(\"span\", {\n        className: cssClasses.link,\n        dangerouslySetInnerHTML: {\n            __html: label\n        }\n    }) : (0, $450fc775b2f7950e$export$c8a8987d4410bf2d)(\"a\", {\n        className: cssClasses.link,\n        \"aria-label\": ariaLabel,\n        href: createURL(pageNumber),\n        onClick: createClickHandler(pageNumber),\n        dangerouslySetInnerHTML: {\n            __html: label\n        }\n    }));\n}\nvar $647bd32ee5070119$export$2e2bcd8739ae039 = $647bd32ee5070119$var$Pagination;\n\n\n\nfunction $a8bc121827d63987$var$_toConsumableArray(arr) {\n    return $a8bc121827d63987$var$_arrayWithoutHoles(arr) || $a8bc121827d63987$var$_iterableToArray(arr) || $a8bc121827d63987$var$_unsupportedIterableToArray(arr) || $a8bc121827d63987$var$_nonIterableSpread();\n}\nfunction $a8bc121827d63987$var$_nonIterableSpread() {\n    throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction $a8bc121827d63987$var$_unsupportedIterableToArray(o, minLen) {\n    if (!o) return;\n    if (typeof o === \"string\") return $a8bc121827d63987$var$_arrayLikeToArray(o, minLen);\n    var n = Object.prototype.toString.call(o).slice(8, -1);\n    if (n === \"Object\" && o.constructor) n = o.constructor.name;\n    if (n === \"Map\" || n === \"Set\") return Array.from(o);\n    if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return $a8bc121827d63987$var$_arrayLikeToArray(o, minLen);\n}\nfunction $a8bc121827d63987$var$_iterableToArray(iter) {\n    if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\nfunction $a8bc121827d63987$var$_arrayWithoutHoles(arr) {\n    if (Array.isArray(arr)) return $a8bc121827d63987$var$_arrayLikeToArray(arr);\n}\nfunction $a8bc121827d63987$var$_arrayLikeToArray(arr, len) {\n    if (len == null || len > arr.length) len = arr.length;\n    for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n    return arr2;\n}\nfunction $a8bc121827d63987$export$d02631cccf789723(_ref) {\n    var _ref$start = _ref.start, start = _ref$start === void 0 ? 0 : _ref$start, end = _ref.end, _ref$step = _ref.step, step = _ref$step === void 0 ? 1 : _ref$step;\n    // We can't divide by 0 so we re-assign the step to 1 if it happens.\n    var limitStep = step === 0 ? 1 : step; // In some cases the array to create has a decimal length.\n    // We therefore need to round the value.\n    // Example:\n    //   { start: 1, end: 5000, step: 500 }\n    //   => Array length = (5000 - 1) / 500 = 9.998\n    var arrayLength = Math.round((end - start) / limitStep);\n    return $a8bc121827d63987$var$_toConsumableArray(Array(arrayLength)).map(function(_, current) {\n        return start + current * limitStep;\n    });\n}\n\n\nfunction $bab2b9891e2de79e$var$_classCallCheck(instance, Constructor) {\n    if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction $bab2b9891e2de79e$var$_defineProperties(target, props) {\n    for(var i = 0; i < props.length; i++){\n        var descriptor = props[i];\n        descriptor.enumerable = descriptor.enumerable || false;\n        descriptor.configurable = true;\n        if (\"value\" in descriptor) descriptor.writable = true;\n        Object.defineProperty(target, descriptor.key, descriptor);\n    }\n}\nfunction $bab2b9891e2de79e$var$_createClass(Constructor, protoProps, staticProps) {\n    if (protoProps) $bab2b9891e2de79e$var$_defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) $bab2b9891e2de79e$var$_defineProperties(Constructor, staticProps);\n    return Constructor;\n}\nfunction $bab2b9891e2de79e$var$_defineProperty(obj, key, value) {\n    if (key in obj) Object.defineProperty(obj, key, {\n        value: value,\n        enumerable: true,\n        configurable: true,\n        writable: true\n    });\n    else obj[key] = value;\n    return obj;\n}\nvar $bab2b9891e2de79e$var$Paginator = /*#__PURE__*/ function() {\n    function Paginator(params) {\n        $bab2b9891e2de79e$var$_classCallCheck(this, Paginator);\n        $bab2b9891e2de79e$var$_defineProperty(this, \"currentPage\", void 0);\n        $bab2b9891e2de79e$var$_defineProperty(this, \"total\", void 0);\n        $bab2b9891e2de79e$var$_defineProperty(this, \"padding\", void 0);\n        this.currentPage = params.currentPage;\n        this.total = params.total;\n        this.padding = params.padding;\n    }\n    $bab2b9891e2de79e$var$_createClass(Paginator, [\n        {\n            key: \"pages\",\n            value: function pages() {\n                var total = this.total, currentPage = this.currentPage, padding = this.padding;\n                if (total === 0) return [\n                    0\n                ];\n                var totalDisplayedPages = this.nbPagesDisplayed(padding, total);\n                if (totalDisplayedPages === total) return (0, $a8bc121827d63987$export$d02631cccf789723)({\n                    end: total\n                });\n                var paddingLeft = this.calculatePaddingLeft(currentPage, padding, total, totalDisplayedPages);\n                var paddingRight = totalDisplayedPages - paddingLeft;\n                var first = currentPage - paddingLeft;\n                var last = currentPage + paddingRight;\n                return (0, $a8bc121827d63987$export$d02631cccf789723)({\n                    start: first,\n                    end: last\n                });\n            }\n        },\n        {\n            key: \"nbPagesDisplayed\",\n            value: function nbPagesDisplayed(padding, total) {\n                return Math.min(2 * padding + 1, total);\n            }\n        },\n        {\n            key: \"calculatePaddingLeft\",\n            value: function calculatePaddingLeft(current, padding, total, totalDisplayedPages) {\n                if (current <= padding) return current;\n                if (current >= total - padding) return totalDisplayedPages - (total - current);\n                return padding;\n            }\n        },\n        {\n            key: \"isLastPage\",\n            value: function isLastPage() {\n                return this.currentPage === this.total - 1 || this.total === 0;\n            }\n        },\n        {\n            key: \"isFirstPage\",\n            value: function isFirstPage() {\n                return this.currentPage === 0;\n            }\n        }\n    ]);\n    return Paginator;\n}();\nvar $bab2b9891e2de79e$export$2e2bcd8739ae039 = $bab2b9891e2de79e$var$Paginator;\n\n\nfunction $0017bf0f6585ff79$var$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 $0017bf0f6585ff79$var$_objectSpread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        if (i % 2) $0017bf0f6585ff79$var$ownKeys(Object(source), true).forEach(function(key) {\n            $0017bf0f6585ff79$var$_defineProperty(target, key, source[key]);\n        });\n        else if (Object.getOwnPropertyDescriptors) Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n        else $0017bf0f6585ff79$var$ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nfunction $0017bf0f6585ff79$var$_defineProperty(obj, key, value) {\n    if (key in obj) Object.defineProperty(obj, key, {\n        value: value,\n        enumerable: true,\n        configurable: true,\n        writable: true\n    });\n    else obj[key] = value;\n    return obj;\n}\nvar $0017bf0f6585ff79$var$withUsage = (0, $049fad80b24500a5$export$2fde5bffc340821e)({\n    name: \"pagination\",\n    connector: true\n});\n/**\n * **Pagination** connector provides the logic to build a widget that will let the user\n * choose the current page of the results.\n *\n * When using the pagination with Algolia, you should be aware that the engine won't provide you pages\n * beyond the 1000th hits by default. You can find more information on the [Algolia documentation](https://www.algolia.com/doc/guides/searching/pagination/#pagination-limitations).\n */ var $0017bf0f6585ff79$var$connectPagination = function connectPagination(renderFn) {\n    var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : (0, $dba781b2f4cd6c52$export$8793edee2d425525);\n    (0, $86d1c5f90fff2f24$export$adc2a8e09aa583ee)(renderFn, $0017bf0f6585ff79$var$withUsage());\n    return function(widgetParams) {\n        var _ref = widgetParams || {}, totalPages = _ref.totalPages, _ref$padding = _ref.padding, padding = _ref$padding === void 0 ? 3 : _ref$padding;\n        var pager = new (0, $bab2b9891e2de79e$export$2e2bcd8739ae039)({\n            currentPage: 0,\n            total: 0,\n            padding: padding\n        });\n        var connectorState = {};\n        function getMaxPage(_ref2) {\n            var nbPages = _ref2.nbPages;\n            return totalPages !== undefined ? Math.min(totalPages, nbPages) : nbPages;\n        }\n        return {\n            $$type: \"ais.pagination\",\n            init: function init(initOptions) {\n                var instantSearchInstance = initOptions.instantSearchInstance;\n                renderFn($0017bf0f6585ff79$var$_objectSpread($0017bf0f6585ff79$var$_objectSpread({}, this.getWidgetRenderState(initOptions)), {}, {\n                    instantSearchInstance: instantSearchInstance\n                }), true);\n            },\n            render: function render(renderOptions) {\n                var instantSearchInstance = renderOptions.instantSearchInstance;\n                renderFn($0017bf0f6585ff79$var$_objectSpread($0017bf0f6585ff79$var$_objectSpread({}, this.getWidgetRenderState(renderOptions)), {}, {\n                    instantSearchInstance: instantSearchInstance\n                }), false);\n            },\n            dispose: function dispose(_ref3) {\n                var state = _ref3.state;\n                unmountFn();\n                return state.setQueryParameter(\"page\", undefined);\n            },\n            getWidgetUiState: function getWidgetUiState(uiState, _ref4) {\n                var searchParameters = _ref4.searchParameters;\n                var page = searchParameters.page || 0;\n                if (!page) return uiState;\n                return $0017bf0f6585ff79$var$_objectSpread($0017bf0f6585ff79$var$_objectSpread({}, uiState), {}, {\n                    page: page + 1\n                });\n            },\n            getWidgetSearchParameters: function getWidgetSearchParameters(searchParameters, _ref5) {\n                var uiState = _ref5.uiState;\n                var page = uiState.page ? uiState.page - 1 : 0;\n                return searchParameters.setQueryParameter(\"page\", page);\n            },\n            getWidgetRenderState: function getWidgetRenderState(_ref6) {\n                var results = _ref6.results, helper = _ref6.helper, state = _ref6.state, createURL = _ref6.createURL;\n                if (!connectorState.refine) connectorState.refine = function(page) {\n                    helper.setPage(page);\n                    helper.search();\n                };\n                if (!connectorState.createURL) connectorState.createURL = function(helperState) {\n                    return function(page) {\n                        return createURL(helperState.setPage(page));\n                    };\n                };\n                var page = state.page || 0;\n                var nbPages = getMaxPage(results || {\n                    nbPages: 0\n                });\n                pager.currentPage = page;\n                pager.total = nbPages;\n                return {\n                    createURL: connectorState.createURL(state),\n                    refine: connectorState.refine,\n                    canRefine: nbPages > 1,\n                    currentRefinement: page,\n                    nbHits: (results === null || results === void 0 ? void 0 : results.nbHits) || 0,\n                    nbPages: nbPages,\n                    pages: results ? pager.pages() : [],\n                    isFirstPage: pager.isFirstPage(),\n                    isLastPage: pager.isLastPage(),\n                    widgetParams: widgetParams\n                };\n            },\n            getRenderState: function getRenderState(renderState, renderOptions) {\n                return $0017bf0f6585ff79$var$_objectSpread($0017bf0f6585ff79$var$_objectSpread({}, renderState), {}, {\n                    pagination: this.getWidgetRenderState(renderOptions)\n                });\n            }\n        };\n    };\n};\nvar $0017bf0f6585ff79$export$2e2bcd8739ae039 = $0017bf0f6585ff79$var$connectPagination;\n\n\n\n\nfunction $3b17bbd51a64bcdc$var$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 $3b17bbd51a64bcdc$var$_objectSpread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        if (i % 2) $3b17bbd51a64bcdc$var$ownKeys(Object(source), true).forEach(function(key) {\n            $3b17bbd51a64bcdc$var$_defineProperty(target, key, source[key]);\n        });\n        else if (Object.getOwnPropertyDescriptors) Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n        else $3b17bbd51a64bcdc$var$ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nfunction $3b17bbd51a64bcdc$var$_defineProperty(obj, key, value) {\n    if (key in obj) Object.defineProperty(obj, key, {\n        value: value,\n        enumerable: true,\n        configurable: true,\n        writable: true\n    });\n    else obj[key] = value;\n    return obj;\n}\nvar $3b17bbd51a64bcdc$var$suit = (0, $26d2f3c47ecadc8f$export$d8556a2a8f973135)(\"Pagination\");\nvar $3b17bbd51a64bcdc$var$withUsage = (0, $049fad80b24500a5$export$2fde5bffc340821e)({\n    name: \"pagination\"\n});\nvar $3b17bbd51a64bcdc$var$defaultTemplates = {\n    previous: \"\\u2039\",\n    next: \"\\u203A\",\n    first: \"\\xab\",\n    last: \"\\xbb\"\n};\nvar $3b17bbd51a64bcdc$var$renderer = function renderer(_ref) {\n    var containerNode = _ref.containerNode, cssClasses = _ref.cssClasses, templates = _ref.templates, showFirst = _ref.showFirst, showLast = _ref.showLast, showPrevious = _ref.showPrevious, showNext = _ref.showNext, scrollToNode = _ref.scrollToNode;\n    return function(_ref2, isFirstRendering) {\n        var createURL = _ref2.createURL, currentRefinement = _ref2.currentRefinement, nbPages = _ref2.nbPages, pages = _ref2.pages, isFirstPage = _ref2.isFirstPage, isLastPage = _ref2.isLastPage, refine = _ref2.refine;\n        if (isFirstRendering) return;\n        var setCurrentPage = function setCurrentPage(pageNumber) {\n            refine(pageNumber);\n            if (scrollToNode !== false) scrollToNode.scrollIntoView();\n        };\n        (0, $450fc775b2f7950e$export$b3890eb0ae9dca99)((0, $450fc775b2f7950e$export$c8a8987d4410bf2d)((0, $647bd32ee5070119$export$2e2bcd8739ae039), {\n            createURL: createURL,\n            cssClasses: cssClasses,\n            currentPage: currentRefinement,\n            templates: templates,\n            nbPages: nbPages,\n            pages: pages,\n            isFirstPage: isFirstPage,\n            isLastPage: isLastPage,\n            setCurrentPage: setCurrentPage,\n            showFirst: showFirst,\n            showLast: showLast,\n            showPrevious: showPrevious,\n            showNext: showNext\n        }), containerNode);\n    };\n};\nvar $3b17bbd51a64bcdc$var$pagination = function pagination(widgetParams) {\n    var _ref3 = widgetParams || {}, container = _ref3.container, _ref3$templates = _ref3.templates, userTemplates = _ref3$templates === void 0 ? {} : _ref3$templates, _ref3$cssClasses = _ref3.cssClasses, userCssClasses = _ref3$cssClasses === void 0 ? {} : _ref3$cssClasses, totalPages = _ref3.totalPages, padding = _ref3.padding, _ref3$showFirst = _ref3.showFirst, showFirst = _ref3$showFirst === void 0 ? true : _ref3$showFirst, _ref3$showLast = _ref3.showLast, showLast = _ref3$showLast === void 0 ? true : _ref3$showLast, _ref3$showPrevious = _ref3.showPrevious, showPrevious = _ref3$showPrevious === void 0 ? true : _ref3$showPrevious, _ref3$showNext = _ref3.showNext, showNext = _ref3$showNext === void 0 ? true : _ref3$showNext, _ref3$scrollTo = _ref3.scrollTo, userScrollTo = _ref3$scrollTo === void 0 ? \"body\" : _ref3$scrollTo;\n    if (!container) throw new Error($3b17bbd51a64bcdc$var$withUsage(\"The `container` option is required.\"));\n    var containerNode = (0, $964d85af6623150d$export$ffb2c7b8d67c359a)(container);\n    var scrollTo = userScrollTo === true ? \"body\" : userScrollTo;\n    var scrollToNode = scrollTo !== false ? (0, $964d85af6623150d$export$ffb2c7b8d67c359a)(scrollTo) : false;\n    var cssClasses = {\n        root: (0, (/*@__PURE__*/$parcel$interopDefault($f8c99c41bd600645$exports)))($3b17bbd51a64bcdc$var$suit(), userCssClasses.root),\n        noRefinementRoot: (0, (/*@__PURE__*/$parcel$interopDefault($f8c99c41bd600645$exports)))($3b17bbd51a64bcdc$var$suit({\n            modifierName: \"noRefinement\"\n        }), userCssClasses.noRefinementRoot),\n        list: (0, (/*@__PURE__*/$parcel$interopDefault($f8c99c41bd600645$exports)))($3b17bbd51a64bcdc$var$suit({\n            descendantName: \"list\"\n        }), userCssClasses.list),\n        item: (0, (/*@__PURE__*/$parcel$interopDefault($f8c99c41bd600645$exports)))($3b17bbd51a64bcdc$var$suit({\n            descendantName: \"item\"\n        }), userCssClasses.item),\n        firstPageItem: (0, (/*@__PURE__*/$parcel$interopDefault($f8c99c41bd600645$exports)))($3b17bbd51a64bcdc$var$suit({\n            descendantName: \"item\",\n            modifierName: \"firstPage\"\n        }), userCssClasses.firstPageItem),\n        lastPageItem: (0, (/*@__PURE__*/$parcel$interopDefault($f8c99c41bd600645$exports)))($3b17bbd51a64bcdc$var$suit({\n            descendantName: \"item\",\n            modifierName: \"lastPage\"\n        }), userCssClasses.lastPageItem),\n        previousPageItem: (0, (/*@__PURE__*/$parcel$interopDefault($f8c99c41bd600645$exports)))($3b17bbd51a64bcdc$var$suit({\n            descendantName: \"item\",\n            modifierName: \"previousPage\"\n        }), userCssClasses.previousPageItem),\n        nextPageItem: (0, (/*@__PURE__*/$parcel$interopDefault($f8c99c41bd600645$exports)))($3b17bbd51a64bcdc$var$suit({\n            descendantName: \"item\",\n            modifierName: \"nextPage\"\n        }), userCssClasses.nextPageItem),\n        pageItem: (0, (/*@__PURE__*/$parcel$interopDefault($f8c99c41bd600645$exports)))($3b17bbd51a64bcdc$var$suit({\n            descendantName: \"item\",\n            modifierName: \"page\"\n        }), userCssClasses.pageItem),\n        selectedItem: (0, (/*@__PURE__*/$parcel$interopDefault($f8c99c41bd600645$exports)))($3b17bbd51a64bcdc$var$suit({\n            descendantName: \"item\",\n            modifierName: \"selected\"\n        }), userCssClasses.selectedItem),\n        disabledItem: (0, (/*@__PURE__*/$parcel$interopDefault($f8c99c41bd600645$exports)))($3b17bbd51a64bcdc$var$suit({\n            descendantName: \"item\",\n            modifierName: \"disabled\"\n        }), userCssClasses.disabledItem),\n        link: (0, (/*@__PURE__*/$parcel$interopDefault($f8c99c41bd600645$exports)))($3b17bbd51a64bcdc$var$suit({\n            descendantName: \"link\"\n        }), userCssClasses.link)\n    };\n    var templates = $3b17bbd51a64bcdc$var$_objectSpread($3b17bbd51a64bcdc$var$_objectSpread({}, $3b17bbd51a64bcdc$var$defaultTemplates), userTemplates);\n    var specializedRenderer = $3b17bbd51a64bcdc$var$renderer({\n        containerNode: containerNode,\n        cssClasses: cssClasses,\n        templates: templates,\n        showFirst: showFirst,\n        showLast: showLast,\n        showPrevious: showPrevious,\n        showNext: showNext,\n        scrollToNode: scrollToNode\n    });\n    var makeWidget = (0, $0017bf0f6585ff79$export$2e2bcd8739ae039)(specializedRenderer, function() {\n        return (0, $450fc775b2f7950e$export$b3890eb0ae9dca99)(null, containerNode);\n    });\n    return $3b17bbd51a64bcdc$var$_objectSpread($3b17bbd51a64bcdc$var$_objectSpread({}, makeWidget({\n        totalPages: totalPages,\n        padding: padding\n    })), {}, {\n        $$widgetType: \"ais.pagination\"\n    });\n};\nvar $3b17bbd51a64bcdc$export$2e2bcd8739ae039 = $3b17bbd51a64bcdc$var$pagination;\n\n\n\n\n\n\nfunction $a12c3d9b688c0963$var$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 $a12c3d9b688c0963$var$_objectSpread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        if (i % 2) $a12c3d9b688c0963$var$ownKeys(Object(source), true).forEach(function(key) {\n            $a12c3d9b688c0963$var$_defineProperty(target, key, source[key]);\n        });\n        else if (Object.getOwnPropertyDescriptors) Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n        else $a12c3d9b688c0963$var$ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nfunction $a12c3d9b688c0963$var$_defineProperty(obj, key, value) {\n    if (key in obj) Object.defineProperty(obj, key, {\n        value: value,\n        enumerable: true,\n        configurable: true,\n        writable: true\n    });\n    else obj[key] = value;\n    return obj;\n}\nvar $a12c3d9b688c0963$var$withUsage = (0, $049fad80b24500a5$export$2fde5bffc340821e)({\n    name: \"search-box\",\n    connector: true\n});\nvar $a12c3d9b688c0963$var$defaultQueryHook = function defaultQueryHook(query, hook) {\n    return hook(query);\n};\n/**\n * **SearchBox** connector provides the logic to build a widget that will let the user search for a query.\n *\n * The connector provides to the rendering: `refine()` to set the query. The behaviour of this function\n * may be impacted by the `queryHook` widget parameter.\n */ var $a12c3d9b688c0963$var$connectSearchBox = function connectSearchBox(renderFn) {\n    var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : (0, $dba781b2f4cd6c52$export$8793edee2d425525);\n    (0, $86d1c5f90fff2f24$export$adc2a8e09aa583ee)(renderFn, $a12c3d9b688c0963$var$withUsage());\n    return function(widgetParams) {\n        var _ref = widgetParams || {}, _ref$queryHook = _ref.queryHook, queryHook = _ref$queryHook === void 0 ? $a12c3d9b688c0963$var$defaultQueryHook : _ref$queryHook;\n        var _refine;\n        var _clear;\n        return {\n            $$type: \"ais.searchBox\",\n            init: function init(initOptions) {\n                var instantSearchInstance = initOptions.instantSearchInstance;\n                renderFn($a12c3d9b688c0963$var$_objectSpread($a12c3d9b688c0963$var$_objectSpread({}, this.getWidgetRenderState(initOptions)), {}, {\n                    instantSearchInstance: instantSearchInstance\n                }), true);\n            },\n            render: function render(renderOptions) {\n                var instantSearchInstance = renderOptions.instantSearchInstance;\n                renderFn($a12c3d9b688c0963$var$_objectSpread($a12c3d9b688c0963$var$_objectSpread({}, this.getWidgetRenderState(renderOptions)), {}, {\n                    instantSearchInstance: instantSearchInstance\n                }), false);\n            },\n            dispose: function dispose(_ref2) {\n                var state = _ref2.state;\n                unmountFn();\n                return state.setQueryParameter(\"query\", undefined);\n            },\n            getRenderState: function getRenderState(renderState, renderOptions) {\n                return $a12c3d9b688c0963$var$_objectSpread($a12c3d9b688c0963$var$_objectSpread({}, renderState), {}, {\n                    searchBox: this.getWidgetRenderState(renderOptions)\n                });\n            },\n            getWidgetRenderState: function getWidgetRenderState(_ref3) {\n                var helper = _ref3.helper, searchMetadata = _ref3.searchMetadata, state = _ref3.state;\n                if (!_refine) {\n                    _refine = function _refine(query) {\n                        queryHook(query, function(q) {\n                            return helper.setQuery(q).search();\n                        });\n                    };\n                    _clear = function _clear() {\n                        helper.setQuery(\"\").search();\n                    };\n                }\n                return {\n                    query: state.query || \"\",\n                    refine: _refine,\n                    clear: _clear,\n                    widgetParams: widgetParams,\n                    isSearchStalled: searchMetadata.isSearchStalled\n                };\n            },\n            getWidgetUiState: function getWidgetUiState(uiState, _ref4) {\n                var searchParameters = _ref4.searchParameters;\n                var query = searchParameters.query || \"\";\n                if (query === \"\" || uiState && uiState.query === query) return uiState;\n                return $a12c3d9b688c0963$var$_objectSpread($a12c3d9b688c0963$var$_objectSpread({}, uiState), {}, {\n                    query: query\n                });\n            },\n            getWidgetSearchParameters: function getWidgetSearchParameters(searchParameters, _ref5) {\n                var uiState = _ref5.uiState;\n                return searchParameters.setQueryParameter(\"query\", uiState.query || \"\");\n            }\n        };\n    };\n};\nvar $a12c3d9b688c0963$export$2e2bcd8739ae039 = $a12c3d9b688c0963$var$connectSearchBox;\n\n\n\n\nvar $effdadfbac31639d$var$_ref2 = (0, $450fc775b2f7950e$export$c8a8987d4410bf2d)(\"path\", {\n    d: \"M8.114 10L.944 2.83 0 1.885 1.886 0l.943.943L10 8.113l7.17-7.17.944-.943L20 1.886l-.943.943-7.17 7.17 7.17 7.17.943.944L18.114 20l-.943-.943-7.17-7.17-7.17 7.17-.944.943L0 18.114l.943-.943L8.113 10z\"\n});\nvar $effdadfbac31639d$var$_ref4 = (0, $450fc775b2f7950e$export$c8a8987d4410bf2d)(\"path\", {\n    d: \"M26.804 29.01c-2.832 2.34-6.465 3.746-10.426 3.746C7.333 32.756 0 25.424 0 16.378 0 7.333 7.333 0 16.378 0c9.046 0 16.378 7.333 16.378 16.378 0 3.96-1.406 7.594-3.746 10.426l10.534 10.534c.607.607.61 1.59-.004 2.202-.61.61-1.597.61-2.202.004L26.804 29.01zm-10.426.627c7.323 0 13.26-5.936 13.26-13.26 0-7.32-5.937-13.257-13.26-13.257C9.056 3.12 3.12 9.056 3.12 16.378c0 7.323 5.936 13.26 13.258 13.26z\"\n});\nvar $effdadfbac31639d$var$_ref6 = (0, $450fc775b2f7950e$export$c8a8987d4410bf2d)(\"g\", {\n    fill: \"none\",\n    fillRule: \"evenodd\"\n}, (0, $450fc775b2f7950e$export$c8a8987d4410bf2d)(\"g\", {\n    transform: \"translate(1 1)\",\n    strokeWidth: \"2\"\n}, (0, $450fc775b2f7950e$export$c8a8987d4410bf2d)(\"circle\", {\n    strokeOpacity: \".5\",\n    cx: \"18\",\n    cy: \"18\",\n    r: \"18\"\n}), (0, $450fc775b2f7950e$export$c8a8987d4410bf2d)(\"path\", {\n    d: \"M36 18c0-9.94-8.06-18-18-18\"\n}, (0, $450fc775b2f7950e$export$c8a8987d4410bf2d)(\"animateTransform\", {\n    attributeName: \"transform\",\n    type: \"rotate\",\n    from: \"0 18 18\",\n    to: \"360 18 18\",\n    dur: \"1s\",\n    repeatCount: \"indefinite\"\n}))));\nvar $effdadfbac31639d$var$defaultTemplate = {\n    reset: function reset(_ref) {\n        var cssClasses = _ref.cssClasses;\n        return (0, $450fc775b2f7950e$export$c8a8987d4410bf2d)(\"svg\", {\n            className: cssClasses.resetIcon,\n            viewBox: \"0 0 20 20\",\n            width: \"10\",\n            height: \"10\"\n        }, $effdadfbac31639d$var$_ref2);\n    },\n    submit: function submit(_ref3) {\n        var cssClasses = _ref3.cssClasses;\n        return (0, $450fc775b2f7950e$export$c8a8987d4410bf2d)(\"svg\", {\n            className: cssClasses.submitIcon,\n            width: \"10\",\n            height: \"10\",\n            viewBox: \"0 0 40 40\"\n        }, $effdadfbac31639d$var$_ref4);\n    },\n    loadingIndicator: function loadingIndicator(_ref5) {\n        var cssClasses = _ref5.cssClasses;\n        return (0, $450fc775b2f7950e$export$c8a8987d4410bf2d)(\"svg\", {\n            className: cssClasses.loadingIcon,\n            width: \"16\",\n            height: \"16\",\n            viewBox: \"0 0 38 38\",\n            stroke: \"#444\"\n        }, $effdadfbac31639d$var$_ref6);\n    }\n};\nvar $effdadfbac31639d$export$2e2bcd8739ae039 = $effdadfbac31639d$var$defaultTemplate;\n\n\nfunction $246b5dcb151969a3$var$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 $246b5dcb151969a3$var$_objectSpread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        if (i % 2) $246b5dcb151969a3$var$ownKeys(Object(source), true).forEach(function(key) {\n            $246b5dcb151969a3$var$_defineProperty(target, key, source[key]);\n        });\n        else if (Object.getOwnPropertyDescriptors) Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n        else $246b5dcb151969a3$var$ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nfunction $246b5dcb151969a3$var$_defineProperty(obj, key, value) {\n    if (key in obj) Object.defineProperty(obj, key, {\n        value: value,\n        enumerable: true,\n        configurable: true,\n        writable: true\n    });\n    else obj[key] = value;\n    return obj;\n}\nvar $246b5dcb151969a3$var$withUsage = (0, $049fad80b24500a5$export$2fde5bffc340821e)({\n    name: \"search-box\"\n});\nvar $246b5dcb151969a3$var$suit = (0, $26d2f3c47ecadc8f$export$d8556a2a8f973135)(\"SearchBox\");\nvar $246b5dcb151969a3$var$renderer = function renderer(_ref) {\n    var containerNode = _ref.containerNode, cssClasses = _ref.cssClasses, placeholder = _ref.placeholder, templates = _ref.templates, autofocus = _ref.autofocus, searchAsYouType = _ref.searchAsYouType, showReset = _ref.showReset, showSubmit = _ref.showSubmit, showLoadingIndicator = _ref.showLoadingIndicator;\n    return function(_ref2) {\n        var refine = _ref2.refine, query = _ref2.query, isSearchStalled = _ref2.isSearchStalled;\n        (0, $450fc775b2f7950e$export$b3890eb0ae9dca99)((0, $450fc775b2f7950e$export$c8a8987d4410bf2d)((0, $5fc4f1c021bd59de$export$2e2bcd8739ae039), {\n            query: query,\n            placeholder: placeholder,\n            autofocus: autofocus,\n            refine: refine,\n            searchAsYouType: searchAsYouType,\n            templates: templates,\n            showSubmit: showSubmit,\n            showReset: showReset,\n            showLoadingIndicator: showLoadingIndicator,\n            isSearchStalled: isSearchStalled,\n            cssClasses: cssClasses\n        }), containerNode);\n    };\n};\n/**\n * The searchbox widget is used to let the user set a text based query.\n *\n * This is usually the  main entry point to start the search in an instantsearch context. For that\n * reason is usually placed on top, and not hidden so that the user can start searching right\n * away.\n *\n */ var $246b5dcb151969a3$var$searchBox = function searchBox(widgetParams) {\n    var _ref3 = widgetParams || {}, container = _ref3.container, _ref3$placeholder = _ref3.placeholder, placeholder = _ref3$placeholder === void 0 ? \"\" : _ref3$placeholder, _ref3$cssClasses = _ref3.cssClasses, userCssClasses = _ref3$cssClasses === void 0 ? {} : _ref3$cssClasses, _ref3$autofocus = _ref3.autofocus, autofocus = _ref3$autofocus === void 0 ? false : _ref3$autofocus, _ref3$searchAsYouType = _ref3.searchAsYouType, searchAsYouType = _ref3$searchAsYouType === void 0 ? true : _ref3$searchAsYouType, _ref3$showReset = _ref3.showReset, showReset = _ref3$showReset === void 0 ? true : _ref3$showReset, _ref3$showSubmit = _ref3.showSubmit, showSubmit = _ref3$showSubmit === void 0 ? true : _ref3$showSubmit, _ref3$showLoadingIndi = _ref3.showLoadingIndicator, showLoadingIndicator = _ref3$showLoadingIndi === void 0 ? true : _ref3$showLoadingIndi, queryHook = _ref3.queryHook, _ref3$templates = _ref3.templates, userTemplates = _ref3$templates === void 0 ? {} : _ref3$templates;\n    if (!container) throw new Error($246b5dcb151969a3$var$withUsage(\"The `container` option is required.\"));\n    var containerNode = (0, $964d85af6623150d$export$ffb2c7b8d67c359a)(container);\n    var cssClasses = {\n        root: (0, (/*@__PURE__*/$parcel$interopDefault($f8c99c41bd600645$exports)))($246b5dcb151969a3$var$suit(), userCssClasses.root),\n        form: (0, (/*@__PURE__*/$parcel$interopDefault($f8c99c41bd600645$exports)))($246b5dcb151969a3$var$suit({\n            descendantName: \"form\"\n        }), userCssClasses.form),\n        input: (0, (/*@__PURE__*/$parcel$interopDefault($f8c99c41bd600645$exports)))($246b5dcb151969a3$var$suit({\n            descendantName: \"input\"\n        }), userCssClasses.input),\n        submit: (0, (/*@__PURE__*/$parcel$interopDefault($f8c99c41bd600645$exports)))($246b5dcb151969a3$var$suit({\n            descendantName: \"submit\"\n        }), userCssClasses.submit),\n        submitIcon: (0, (/*@__PURE__*/$parcel$interopDefault($f8c99c41bd600645$exports)))($246b5dcb151969a3$var$suit({\n            descendantName: \"submitIcon\"\n        }), userCssClasses.submitIcon),\n        reset: (0, (/*@__PURE__*/$parcel$interopDefault($f8c99c41bd600645$exports)))($246b5dcb151969a3$var$suit({\n            descendantName: \"reset\"\n        }), userCssClasses.reset),\n        resetIcon: (0, (/*@__PURE__*/$parcel$interopDefault($f8c99c41bd600645$exports)))($246b5dcb151969a3$var$suit({\n            descendantName: \"resetIcon\"\n        }), userCssClasses.resetIcon),\n        loadingIndicator: (0, (/*@__PURE__*/$parcel$interopDefault($f8c99c41bd600645$exports)))($246b5dcb151969a3$var$suit({\n            descendantName: \"loadingIndicator\"\n        }), userCssClasses.loadingIndicator),\n        loadingIcon: (0, (/*@__PURE__*/$parcel$interopDefault($f8c99c41bd600645$exports)))($246b5dcb151969a3$var$suit({\n            descendantName: \"loadingIcon\"\n        }), userCssClasses.loadingIcon)\n    };\n    var templates = $246b5dcb151969a3$var$_objectSpread($246b5dcb151969a3$var$_objectSpread({}, (0, $effdadfbac31639d$export$2e2bcd8739ae039)), userTemplates);\n    var specializedRenderer = $246b5dcb151969a3$var$renderer({\n        containerNode: containerNode,\n        cssClasses: cssClasses,\n        placeholder: placeholder,\n        templates: templates,\n        autofocus: autofocus,\n        searchAsYouType: searchAsYouType,\n        showReset: showReset,\n        showSubmit: showSubmit,\n        showLoadingIndicator: showLoadingIndicator\n    });\n    var makeWidget = (0, $a12c3d9b688c0963$export$2e2bcd8739ae039)(specializedRenderer, function() {\n        return (0, $450fc775b2f7950e$export$b3890eb0ae9dca99)(null, containerNode);\n    });\n    return $246b5dcb151969a3$var$_objectSpread($246b5dcb151969a3$var$_objectSpread({}, makeWidget({\n        queryHook: queryHook\n    })), {}, {\n        $$widgetType: \"ais.searchBox\"\n    });\n};\nvar $246b5dcb151969a3$export$2e2bcd8739ae039 = $246b5dcb151969a3$var$searchBox;\n\n\n\nvar $l5cY7 = parcelRequire(\"l5cY7\");\nvar $cb353075a6c6fa25$exports = {};\n/*! algoliasearch-lite.umd.js | 4.14.2 | © Algolia, inc. | https://github.com/algolia/algoliasearch-client-javascript */ !function(e, t) {\n    $cb353075a6c6fa25$exports = t();\n}($cb353075a6c6fa25$exports, function() {\n    \"use strict\";\n    function e(e, t, r) {\n        return t in e ? Object.defineProperty(e, t, {\n            value: r,\n            enumerable: !0,\n            configurable: !0,\n            writable: !0\n        }) : e[t] = r, e;\n    }\n    function t(e, t) {\n        var r = Object.keys(e);\n        if (Object.getOwnPropertySymbols) {\n            var n = Object.getOwnPropertySymbols(e);\n            t && (n = n.filter(function(t) {\n                return Object.getOwnPropertyDescriptor(e, t).enumerable;\n            })), r.push.apply(r, n);\n        }\n        return r;\n    }\n    function r(r) {\n        for(var n = 1; n < arguments.length; n++){\n            var o = null != arguments[n] ? arguments[n] : {};\n            n % 2 ? t(Object(o), !0).forEach(function(t) {\n                e(r, t, o[t]);\n            }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(r, Object.getOwnPropertyDescriptors(o)) : t(Object(o)).forEach(function(e) {\n                Object.defineProperty(r, e, Object.getOwnPropertyDescriptor(o, e));\n            });\n        }\n        return r;\n    }\n    function n(e, t) {\n        if (null == e) return {};\n        var r, n, o = function(e, t) {\n            if (null == e) return {};\n            var r, n, o = {}, a = Object.keys(e);\n            for(n = 0; n < a.length; n++)r = a[n], t.indexOf(r) >= 0 || (o[r] = e[r]);\n            return o;\n        }(e, t);\n        if (Object.getOwnPropertySymbols) {\n            var a = Object.getOwnPropertySymbols(e);\n            for(n = 0; n < a.length; n++)r = a[n], t.indexOf(r) >= 0 || Object.prototype.propertyIsEnumerable.call(e, r) && (o[r] = e[r]);\n        }\n        return o;\n    }\n    function o(e, t) {\n        return function(e) {\n            if (Array.isArray(e)) return e;\n        }(e) || function(e, t) {\n            if (!(Symbol.iterator in Object(e) || \"[object Arguments]\" === Object.prototype.toString.call(e))) return;\n            var r = [], n = !0, o = !1, a = void 0;\n            try {\n                for(var u, i = e[Symbol.iterator](); !(n = (u = i.next()).done) && (r.push(u.value), !t || r.length !== t); n = !0);\n            } catch (e) {\n                o = !0, a = e;\n            } finally{\n                try {\n                    n || null == i.return || i.return();\n                } finally{\n                    if (o) throw a;\n                }\n            }\n            return r;\n        }(e, t) || function() {\n            throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n        }();\n    }\n    function a(e) {\n        return function(e) {\n            if (Array.isArray(e)) {\n                for(var t = 0, r = new Array(e.length); t < e.length; t++)r[t] = e[t];\n                return r;\n            }\n        }(e) || function(e) {\n            if (Symbol.iterator in Object(e) || \"[object Arguments]\" === Object.prototype.toString.call(e)) return Array.from(e);\n        }(e) || function() {\n            throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n        }();\n    }\n    function u(e) {\n        var t, r = \"algoliasearch-client-js-\".concat(e.key), n = function() {\n            return void 0 === t && (t = e.localStorage || window.localStorage), t;\n        }, a = function() {\n            return JSON.parse(n().getItem(r) || \"{}\");\n        };\n        return {\n            get: function(e, t) {\n                var r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {\n                    miss: function() {\n                        return Promise.resolve();\n                    }\n                };\n                return Promise.resolve().then(function() {\n                    var r = JSON.stringify(e), n = a()[r];\n                    return Promise.all([\n                        n || t(),\n                        void 0 !== n\n                    ]);\n                }).then(function(e) {\n                    var t = o(e, 2), n = t[0], a = t[1];\n                    return Promise.all([\n                        n,\n                        a || r.miss(n)\n                    ]);\n                }).then(function(e) {\n                    return o(e, 1)[0];\n                });\n            },\n            set: function(e, t) {\n                return Promise.resolve().then(function() {\n                    var o = a();\n                    return o[JSON.stringify(e)] = t, n().setItem(r, JSON.stringify(o)), t;\n                });\n            },\n            delete: function(e) {\n                return Promise.resolve().then(function() {\n                    var t = a();\n                    delete t[JSON.stringify(e)], n().setItem(r, JSON.stringify(t));\n                });\n            },\n            clear: function() {\n                return Promise.resolve().then(function() {\n                    n().removeItem(r);\n                });\n            }\n        };\n    }\n    function i(e) {\n        var t = a(e.caches), r = t.shift();\n        return void 0 === r ? {\n            get: function(e, t) {\n                var r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {\n                    miss: function() {\n                        return Promise.resolve();\n                    }\n                }, n = t();\n                return n.then(function(e) {\n                    return Promise.all([\n                        e,\n                        r.miss(e)\n                    ]);\n                }).then(function(e) {\n                    return o(e, 1)[0];\n                });\n            },\n            set: function(e, t) {\n                return Promise.resolve(t);\n            },\n            delete: function(e) {\n                return Promise.resolve();\n            },\n            clear: function() {\n                return Promise.resolve();\n            }\n        } : {\n            get: function(e, n) {\n                var o = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {\n                    miss: function() {\n                        return Promise.resolve();\n                    }\n                };\n                return r.get(e, n, o).catch(function() {\n                    return i({\n                        caches: t\n                    }).get(e, n, o);\n                });\n            },\n            set: function(e, n) {\n                return r.set(e, n).catch(function() {\n                    return i({\n                        caches: t\n                    }).set(e, n);\n                });\n            },\n            delete: function(e) {\n                return r.delete(e).catch(function() {\n                    return i({\n                        caches: t\n                    }).delete(e);\n                });\n            },\n            clear: function() {\n                return r.clear().catch(function() {\n                    return i({\n                        caches: t\n                    }).clear();\n                });\n            }\n        };\n    }\n    function s() {\n        var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {\n            serializable: !0\n        }, t = {};\n        return {\n            get: function(r, n) {\n                var o = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {\n                    miss: function() {\n                        return Promise.resolve();\n                    }\n                }, a = JSON.stringify(r);\n                if (a in t) return Promise.resolve(e.serializable ? JSON.parse(t[a]) : t[a]);\n                var u = n(), i = o && o.miss || function() {\n                    return Promise.resolve();\n                };\n                return u.then(function(e) {\n                    return i(e);\n                }).then(function() {\n                    return u;\n                });\n            },\n            set: function(r, n) {\n                return t[JSON.stringify(r)] = e.serializable ? JSON.stringify(n) : n, Promise.resolve(n);\n            },\n            delete: function(e) {\n                return delete t[JSON.stringify(e)], Promise.resolve();\n            },\n            clear: function() {\n                return t = {}, Promise.resolve();\n            }\n        };\n    }\n    function c(e) {\n        for(var t = e.length - 1; t > 0; t--){\n            var r = Math.floor(Math.random() * (t + 1)), n = e[t];\n            e[t] = e[r], e[r] = n;\n        }\n        return e;\n    }\n    function l(e, t) {\n        return t ? (Object.keys(t).forEach(function(r) {\n            e[r] = t[r](e);\n        }), e) : e;\n    }\n    function f(e) {\n        for(var t = arguments.length, r = new Array(t > 1 ? t - 1 : 0), n = 1; n < t; n++)r[n - 1] = arguments[n];\n        var o = 0;\n        return e.replace(/%s/g, function() {\n            return encodeURIComponent(r[o++]);\n        });\n    }\n    var h = {\n        WithinQueryParameters: 0,\n        WithinHeaders: 1\n    };\n    function d(e, t) {\n        var r = e || {}, n = r.data || {};\n        return Object.keys(r).forEach(function(e) {\n            -1 === [\n                \"timeout\",\n                \"headers\",\n                \"queryParameters\",\n                \"data\",\n                \"cacheable\"\n            ].indexOf(e) && (n[e] = r[e]);\n        }), {\n            data: Object.entries(n).length > 0 ? n : void 0,\n            timeout: r.timeout || t,\n            headers: r.headers || {},\n            queryParameters: r.queryParameters || {},\n            cacheable: r.cacheable\n        };\n    }\n    var m = {\n        Read: 1,\n        Write: 2,\n        Any: 3\n    }, p = 1, v = 2, y = 3;\n    function g(e) {\n        var t = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : p;\n        return r(r({}, e), {}, {\n            status: t,\n            lastUpdate: Date.now()\n        });\n    }\n    function b(e) {\n        return \"string\" == typeof e ? {\n            protocol: \"https\",\n            url: e,\n            accept: m.Any\n        } : {\n            protocol: e.protocol || \"https\",\n            url: e.url,\n            accept: e.accept || m.Any\n        };\n    }\n    var O = \"GET\", P = \"POST\";\n    function q(e, t) {\n        return Promise.all(t.map(function(t) {\n            return e.get(t, function() {\n                return Promise.resolve(g(t));\n            });\n        })).then(function(e) {\n            var r = e.filter(function(e) {\n                return function(e) {\n                    return e.status === p || Date.now() - e.lastUpdate > 12e4;\n                }(e);\n            }), n = e.filter(function(e) {\n                return function(e) {\n                    return e.status === y && Date.now() - e.lastUpdate <= 12e4;\n                }(e);\n            }), o = [].concat(a(r), a(n));\n            return {\n                getTimeout: function(e, t) {\n                    return (0 === n.length && 0 === e ? 1 : n.length + 3 + e) * t;\n                },\n                statelessHosts: o.length > 0 ? o.map(function(e) {\n                    return b(e);\n                }) : t\n            };\n        });\n    }\n    function w(e, t, n, o) {\n        var u = [], i = function(e, t) {\n            if (e.method === O || void 0 === e.data && void 0 === t.data) return;\n            var n = Array.isArray(e.data) ? e.data : r(r({}, e.data), t.data);\n            return JSON.stringify(n);\n        }(n, o), s = function(e, t) {\n            var n = r(r({}, e.headers), t.headers), o = {};\n            return Object.keys(n).forEach(function(e) {\n                var t = n[e];\n                o[e.toLowerCase()] = t;\n            }), o;\n        }(e, o), c = n.method, l = n.method !== O ? {} : r(r({}, n.data), o.data), f = r(r(r({\n            \"x-algolia-agent\": e.userAgent.value\n        }, e.queryParameters), l), o.queryParameters), h = 0, d = function t(r, a) {\n            var l = r.pop();\n            if (void 0 === l) throw {\n                name: \"RetryError\",\n                message: \"Unreachable hosts - your application id may be incorrect. If the error persists, contact support@algolia.com.\",\n                transporterStackTrace: A(u)\n            };\n            var d = {\n                data: i,\n                headers: s,\n                method: c,\n                url: S(l, n.path, f),\n                connectTimeout: a(h, e.timeouts.connect),\n                responseTimeout: a(h, o.timeout)\n            }, m = function(e) {\n                var t = {\n                    request: d,\n                    response: e,\n                    host: l,\n                    triesLeft: r.length\n                };\n                return u.push(t), t;\n            }, p = {\n                onSuccess: function(e) {\n                    return function(e) {\n                        try {\n                            return JSON.parse(e.content);\n                        } catch (t) {\n                            throw function(e, t) {\n                                return {\n                                    name: \"DeserializationError\",\n                                    message: e,\n                                    response: t\n                                };\n                            }(t.message, e);\n                        }\n                    }(e);\n                },\n                onRetry: function(n) {\n                    var o = m(n);\n                    return n.isTimedOut && h++, Promise.all([\n                        e.logger.info(\"Retryable failure\", x(o)),\n                        e.hostsCache.set(l, g(l, n.isTimedOut ? y : v))\n                    ]).then(function() {\n                        return t(r, a);\n                    });\n                },\n                onFail: function(e) {\n                    throw m(e), function(e, t) {\n                        var r = e.content, n = e.status, o = r;\n                        try {\n                            o = JSON.parse(r).message;\n                        } catch (e) {}\n                        return function(e, t, r) {\n                            return {\n                                name: \"ApiError\",\n                                message: e,\n                                status: t,\n                                transporterStackTrace: r\n                            };\n                        }(o, n, t);\n                    }(e, A(u));\n                }\n            };\n            return e.requester.send(d).then(function(e) {\n                return function(e, t) {\n                    return function(e) {\n                        var t = e.status;\n                        return e.isTimedOut || function(e) {\n                            var t = e.isTimedOut, r = e.status;\n                            return !t && 0 == ~~r;\n                        }(e) || 2 != ~~(t / 100) && 4 != ~~(t / 100);\n                    }(e) ? t.onRetry(e) : 2 == ~~(e.status / 100) ? t.onSuccess(e) : t.onFail(e);\n                }(e, p);\n            });\n        };\n        return q(e.hostsCache, t).then(function(e) {\n            return d(a(e.statelessHosts).reverse(), e.getTimeout);\n        });\n    }\n    function j(e) {\n        var t = {\n            value: \"Algolia for JavaScript (\".concat(e, \")\"),\n            add: function(e) {\n                var r = \"; \".concat(e.segment).concat(void 0 !== e.version ? \" (\".concat(e.version, \")\") : \"\");\n                return -1 === t.value.indexOf(r) && (t.value = \"\".concat(t.value).concat(r)), t;\n            }\n        };\n        return t;\n    }\n    function S(e, t, r) {\n        var n = T(r), o = \"\".concat(e.protocol, \"://\").concat(e.url, \"/\").concat(\"/\" === t.charAt(0) ? t.substr(1) : t);\n        return n.length && (o += \"?\".concat(n)), o;\n    }\n    function T(e) {\n        return Object.keys(e).map(function(t) {\n            var r;\n            return f(\"%s=%s\", t, (r = e[t], \"[object Object]\" === Object.prototype.toString.call(r) || \"[object Array]\" === Object.prototype.toString.call(r) ? JSON.stringify(e[t]) : e[t]));\n        }).join(\"&\");\n    }\n    function A(e) {\n        return e.map(function(e) {\n            return x(e);\n        });\n    }\n    function x(e) {\n        var t = e.request.headers[\"x-algolia-api-key\"] ? {\n            \"x-algolia-api-key\": \"*****\"\n        } : {};\n        return r(r({}, e), {}, {\n            request: r(r({}, e.request), {}, {\n                headers: r(r({}, e.request.headers), t)\n            })\n        });\n    }\n    var N = function(e) {\n        var t = e.appId, n = function(e, t, r) {\n            var n = {\n                \"x-algolia-api-key\": r,\n                \"x-algolia-application-id\": t\n            };\n            return {\n                headers: function() {\n                    return e === h.WithinHeaders ? n : {};\n                },\n                queryParameters: function() {\n                    return e === h.WithinQueryParameters ? n : {};\n                }\n            };\n        }(void 0 !== e.authMode ? e.authMode : h.WithinHeaders, t, e.apiKey), a = function(e) {\n            var t = e.hostsCache, r = e.logger, n = e.requester, a = e.requestsCache, u = e.responsesCache, i = e.timeouts, s = e.userAgent, c = e.hosts, l = e.queryParameters, f = {\n                hostsCache: t,\n                logger: r,\n                requester: n,\n                requestsCache: a,\n                responsesCache: u,\n                timeouts: i,\n                userAgent: s,\n                headers: e.headers,\n                queryParameters: l,\n                hosts: c.map(function(e) {\n                    return b(e);\n                }),\n                read: function(e, t) {\n                    var r = d(t, f.timeouts.read), n = function() {\n                        return w(f, f.hosts.filter(function(e) {\n                            return 0 != (e.accept & m.Read);\n                        }), e, r);\n                    };\n                    if (!0 !== (void 0 !== r.cacheable ? r.cacheable : e.cacheable)) return n();\n                    var a = {\n                        request: e,\n                        mappedRequestOptions: r,\n                        transporter: {\n                            queryParameters: f.queryParameters,\n                            headers: f.headers\n                        }\n                    };\n                    return f.responsesCache.get(a, function() {\n                        return f.requestsCache.get(a, function() {\n                            return f.requestsCache.set(a, n()).then(function(e) {\n                                return Promise.all([\n                                    f.requestsCache.delete(a),\n                                    e\n                                ]);\n                            }, function(e) {\n                                return Promise.all([\n                                    f.requestsCache.delete(a),\n                                    Promise.reject(e)\n                                ]);\n                            }).then(function(e) {\n                                var t = o(e, 2);\n                                t[0];\n                                return t[1];\n                            });\n                        });\n                    }, {\n                        miss: function(e) {\n                            return f.responsesCache.set(a, e);\n                        }\n                    });\n                },\n                write: function(e, t) {\n                    return w(f, f.hosts.filter(function(e) {\n                        return 0 != (e.accept & m.Write);\n                    }), e, d(t, f.timeouts.write));\n                }\n            };\n            return f;\n        }(r(r({\n            hosts: [\n                {\n                    url: \"\".concat(t, \"-dsn.algolia.net\"),\n                    accept: m.Read\n                },\n                {\n                    url: \"\".concat(t, \".algolia.net\"),\n                    accept: m.Write\n                }\n            ].concat(c([\n                {\n                    url: \"\".concat(t, \"-1.algolianet.com\")\n                },\n                {\n                    url: \"\".concat(t, \"-2.algolianet.com\")\n                },\n                {\n                    url: \"\".concat(t, \"-3.algolianet.com\")\n                }\n            ]))\n        }, e), {}, {\n            headers: r(r(r({}, n.headers()), {\n                \"content-type\": \"application/x-www-form-urlencoded\"\n            }), e.headers),\n            queryParameters: r(r({}, n.queryParameters()), e.queryParameters)\n        }));\n        return l({\n            transporter: a,\n            appId: t,\n            addAlgoliaAgent: function(e, t) {\n                a.userAgent.add({\n                    segment: e,\n                    version: t\n                });\n            },\n            clearCache: function() {\n                return Promise.all([\n                    a.requestsCache.clear(),\n                    a.responsesCache.clear()\n                ]).then(function() {});\n            }\n        }, e.methods);\n    }, C = function(e) {\n        return function(t, r) {\n            return t.method === O ? e.transporter.read(t, r) : e.transporter.write(t, r);\n        };\n    }, k = function(e) {\n        return function(t) {\n            var r = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}, n = {\n                transporter: e.transporter,\n                appId: e.appId,\n                indexName: t\n            };\n            return l(n, r.methods);\n        };\n    }, J = function(e) {\n        return function(t, n) {\n            var o = t.map(function(e) {\n                return r(r({}, e), {}, {\n                    params: T(e.params || {})\n                });\n            });\n            return e.transporter.read({\n                method: P,\n                path: \"1/indexes/*/queries\",\n                data: {\n                    requests: o\n                },\n                cacheable: !0\n            }, n);\n        };\n    }, E = function(e) {\n        return function(t, o) {\n            return Promise.all(t.map(function(t) {\n                var a = t.params, u = a.facetName, i = a.facetQuery, s = n(a, [\n                    \"facetName\",\n                    \"facetQuery\"\n                ]);\n                return k(e)(t.indexName, {\n                    methods: {\n                        searchForFacetValues: R\n                    }\n                }).searchForFacetValues(u, i, r(r({}, o), s));\n            }));\n        };\n    }, I = function(e) {\n        return function(t, r, n) {\n            return e.transporter.read({\n                method: P,\n                path: f(\"1/answers/%s/prediction\", e.indexName),\n                data: {\n                    query: t,\n                    queryLanguages: r\n                },\n                cacheable: !0\n            }, n);\n        };\n    }, F = function(e) {\n        return function(t, r) {\n            return e.transporter.read({\n                method: P,\n                path: f(\"1/indexes/%s/query\", e.indexName),\n                data: {\n                    query: t\n                },\n                cacheable: !0\n            }, r);\n        };\n    }, R = function(e) {\n        return function(t, r, n) {\n            return e.transporter.read({\n                method: P,\n                path: f(\"1/indexes/%s/facets/%s/query\", e.indexName, t),\n                data: {\n                    facetQuery: r\n                },\n                cacheable: !0\n            }, n);\n        };\n    }, D = 1, W = 2, H = 3;\n    function Q(e, t, n) {\n        var o, a = {\n            appId: e,\n            apiKey: t,\n            timeouts: {\n                connect: 1,\n                read: 2,\n                write: 30\n            },\n            requester: {\n                send: function(e) {\n                    return new Promise(function(t) {\n                        var r = new XMLHttpRequest;\n                        r.open(e.method, e.url, !0), Object.keys(e.headers).forEach(function(t) {\n                            return r.setRequestHeader(t, e.headers[t]);\n                        });\n                        var n, o = function(e, n) {\n                            return setTimeout(function() {\n                                r.abort(), t({\n                                    status: 0,\n                                    content: n,\n                                    isTimedOut: !0\n                                });\n                            }, 1e3 * e);\n                        }, a = o(e.connectTimeout, \"Connection timeout\");\n                        r.onreadystatechange = function() {\n                            r.readyState > r.OPENED && void 0 === n && (clearTimeout(a), n = o(e.responseTimeout, \"Socket timeout\"));\n                        }, r.onerror = function() {\n                            0 === r.status && (clearTimeout(a), clearTimeout(n), t({\n                                content: r.responseText || \"Network request failed\",\n                                status: r.status,\n                                isTimedOut: !1\n                            }));\n                        }, r.onload = function() {\n                            clearTimeout(a), clearTimeout(n), t({\n                                content: r.responseText,\n                                status: r.status,\n                                isTimedOut: !1\n                            });\n                        }, r.send(e.data);\n                    });\n                }\n            },\n            logger: (o = H, {\n                debug: function(e, t) {\n                    return D >= o && console.debug(e, t), Promise.resolve();\n                },\n                info: function(e, t) {\n                    return W >= o && console.info(e, t), Promise.resolve();\n                },\n                error: function(e, t) {\n                    return console.error(e, t), Promise.resolve();\n                }\n            }),\n            responsesCache: s(),\n            requestsCache: s({\n                serializable: !1\n            }),\n            hostsCache: i({\n                caches: [\n                    u({\n                        key: \"\".concat(\"4.14.2\", \"-\").concat(e)\n                    }),\n                    s()\n                ]\n            }),\n            userAgent: j(\"4.14.2\").add({\n                segment: \"Browser\",\n                version: \"lite\"\n            }),\n            authMode: h.WithinQueryParameters\n        };\n        return N(r(r(r({}, a), n), {}, {\n            methods: {\n                search: J,\n                searchForFacetValues: E,\n                multipleQueries: J,\n                multipleSearchForFacetValues: E,\n                customRequest: C,\n                initIndex: function(e) {\n                    return function(t) {\n                        return k(e)(t, {\n                            methods: {\n                                search: F,\n                                searchForFacetValues: R,\n                                findAnswers: I\n                            }\n                        });\n                    };\n                }\n            }\n        }));\n    }\n    return Q.version = \"4.14.2\", Q;\n});\n\n\n\n\n\nfunction $4e36965025504545$export$a9c9a0d43506297d(widget) {\n    return widget.$$type === \"ais.index\";\n}\n\nfunction $28b51c9a5f8547cf$export$1c33c9881dac6797(current) {\n    var parent = current.getParent();\n    var states = [\n        current.getHelper().state\n    ];\n    while(parent !== null){\n        states = [\n            parent.getHelper().state\n        ].concat(states);\n        parent = parent.getParent();\n    }\n    return states;\n}\n\n\nfunction $bbcafcaaf02907c9$var$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 $bbcafcaaf02907c9$var$_objectSpread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        if (i % 2) $bbcafcaaf02907c9$var$ownKeys(Object(source), true).forEach(function(key) {\n            $bbcafcaaf02907c9$var$_defineProperty(target, key, source[key]);\n        });\n        else if (Object.getOwnPropertyDescriptors) Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n        else $bbcafcaaf02907c9$var$ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nfunction $bbcafcaaf02907c9$var$_defineProperty(obj, key, value) {\n    if (key in obj) Object.defineProperty(obj, key, {\n        value: value,\n        enumerable: true,\n        configurable: true,\n        writable: true\n    });\n    else obj[key] = value;\n    return obj;\n}\nfunction $bbcafcaaf02907c9$var$_toConsumableArray(arr) {\n    return $bbcafcaaf02907c9$var$_arrayWithoutHoles(arr) || $bbcafcaaf02907c9$var$_iterableToArray(arr) || $bbcafcaaf02907c9$var$_unsupportedIterableToArray(arr) || $bbcafcaaf02907c9$var$_nonIterableSpread();\n}\nfunction $bbcafcaaf02907c9$var$_nonIterableSpread() {\n    throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\nfunction $bbcafcaaf02907c9$var$_unsupportedIterableToArray(o, minLen) {\n    if (!o) return;\n    if (typeof o === \"string\") return $bbcafcaaf02907c9$var$_arrayLikeToArray(o, minLen);\n    var n = Object.prototype.toString.call(o).slice(8, -1);\n    if (n === \"Object\" && o.constructor) n = o.constructor.name;\n    if (n === \"Map\" || n === \"Set\") return Array.from(o);\n    if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return $bbcafcaaf02907c9$var$_arrayLikeToArray(o, minLen);\n}\nfunction $bbcafcaaf02907c9$var$_iterableToArray(iter) {\n    if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter);\n}\nfunction $bbcafcaaf02907c9$var$_arrayWithoutHoles(arr) {\n    if (Array.isArray(arr)) return $bbcafcaaf02907c9$var$_arrayLikeToArray(arr);\n}\nfunction $bbcafcaaf02907c9$var$_arrayLikeToArray(arr, len) {\n    if (len == null || len > arr.length) len = arr.length;\n    for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];\n    return arr2;\n}\nfunction $bbcafcaaf02907c9$var$_objectWithoutProperties(source, excluded) {\n    if (source == null) return {};\n    var target = $bbcafcaaf02907c9$var$_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}\nfunction $bbcafcaaf02907c9$var$_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}\nvar $bbcafcaaf02907c9$var$withUsage = (0, $049fad80b24500a5$export$2fde5bffc340821e)({\n    name: \"index-widget\"\n});\n/**\n * This is the same content as helper._change / setState, but allowing for extra\n * UiState to be synchronized.\n * see: https://github.com/algolia/algoliasearch-helper-js/blob/6b835ffd07742f2d6b314022cce6848f5cfecd4a/src/algoliasearch.helper.js#L1311-L1324\n */ function $bbcafcaaf02907c9$var$privateHelperSetState(helper, _ref) {\n    var state = _ref.state, isPageReset = _ref.isPageReset, _uiState = _ref._uiState;\n    if (state !== helper.state) {\n        helper.state = state;\n        helper.emit(\"change\", {\n            state: helper.state,\n            results: helper.lastResults,\n            isPageReset: isPageReset,\n            _uiState: _uiState\n        });\n    }\n}\nfunction $bbcafcaaf02907c9$var$getLocalWidgetsUiState(widgets, widgetStateOptions) {\n    var initialUiState = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    return widgets.reduce(function(uiState, widget) {\n        if ((0, $4e36965025504545$export$a9c9a0d43506297d)(widget)) return uiState;\n        if (!widget.getWidgetUiState && !widget.getWidgetState) return uiState;\n        if (widget.getWidgetUiState) return widget.getWidgetUiState(uiState, widgetStateOptions);\n        return widget.getWidgetState(uiState, widgetStateOptions);\n    }, initialUiState);\n}\nfunction $bbcafcaaf02907c9$var$getLocalWidgetsSearchParameters(widgets, widgetSearchParametersOptions) {\n    var initialSearchParameters = widgetSearchParametersOptions.initialSearchParameters, rest = $bbcafcaaf02907c9$var$_objectWithoutProperties(widgetSearchParametersOptions, [\n        \"initialSearchParameters\"\n    ]);\n    return widgets.filter(function(widget) {\n        return !(0, $4e36965025504545$export$a9c9a0d43506297d)(widget);\n    }).reduce(function(state, widget) {\n        if (!widget.getWidgetSearchParameters) return state;\n        return widget.getWidgetSearchParameters(state, rest);\n    }, initialSearchParameters);\n}\nfunction $bbcafcaaf02907c9$var$resetPageFromWidgets(widgets) {\n    var indexWidgets = widgets.filter((0, $4e36965025504545$export$a9c9a0d43506297d));\n    if (indexWidgets.length === 0) return;\n    indexWidgets.forEach(function(widget) {\n        var widgetHelper = widget.getHelper();\n        $bbcafcaaf02907c9$var$privateHelperSetState(widgetHelper, {\n            state: widgetHelper.state.resetPage(),\n            isPageReset: true\n        });\n        $bbcafcaaf02907c9$var$resetPageFromWidgets(widget.getWidgets());\n    });\n}\nfunction $bbcafcaaf02907c9$var$resolveScopedResultsFromWidgets(widgets) {\n    var indexWidgets = widgets.filter((0, $4e36965025504545$export$a9c9a0d43506297d));\n    return indexWidgets.reduce(function(scopedResults, current) {\n        return scopedResults.concat.apply(scopedResults, [\n            {\n                indexId: current.getIndexId(),\n                results: current.getResults(),\n                helper: current.getHelper()\n            }\n        ].concat($bbcafcaaf02907c9$var$_toConsumableArray($bbcafcaaf02907c9$var$resolveScopedResultsFromWidgets(current.getWidgets()))));\n    }, []);\n}\nvar $bbcafcaaf02907c9$var$index = function index(widgetParams) {\n    if (widgetParams === undefined || widgetParams.indexName === undefined) throw new Error($bbcafcaaf02907c9$var$withUsage(\"The `indexName` option is required.\"));\n    var indexName = widgetParams.indexName, _widgetParams$indexId = widgetParams.indexId, indexId = _widgetParams$indexId === void 0 ? indexName : _widgetParams$indexId;\n    var localWidgets = [];\n    var localUiState = {};\n    var localInstantSearchInstance = null;\n    var localParent = null;\n    var helper = null;\n    var derivedHelper = null;\n    return {\n        $$type: \"ais.index\",\n        $$widgetType: \"ais.index\",\n        getIndexName: function getIndexName() {\n            return indexName;\n        },\n        getIndexId: function getIndexId() {\n            return indexId;\n        },\n        getHelper: function getHelper() {\n            return helper;\n        },\n        getResults: function getResults() {\n            return derivedHelper && derivedHelper.lastResults;\n        },\n        getScopedResults: function getScopedResults() {\n            var widgetParent = this.getParent(); // If the widget is the root, we consider itself as the only sibling.\n            var widgetSiblings = widgetParent ? widgetParent.getWidgets() : [\n                this\n            ];\n            return $bbcafcaaf02907c9$var$resolveScopedResultsFromWidgets(widgetSiblings);\n        },\n        getParent: function getParent() {\n            return localParent;\n        },\n        createURL: function createURL(nextState) {\n            return localInstantSearchInstance._createURL($bbcafcaaf02907c9$var$_defineProperty({}, indexId, $bbcafcaaf02907c9$var$getLocalWidgetsUiState(localWidgets, {\n                searchParameters: nextState,\n                helper: helper\n            })));\n        },\n        getWidgets: function getWidgets() {\n            return localWidgets;\n        },\n        addWidgets: function addWidgets(widgets) {\n            var _this = this;\n            if (!Array.isArray(widgets)) throw new Error($bbcafcaaf02907c9$var$withUsage(\"The `addWidgets` method expects an array of widgets.\"));\n            if (widgets.some(function(widget) {\n                return typeof widget.init !== \"function\" && typeof widget.render !== \"function\";\n            })) throw new Error($bbcafcaaf02907c9$var$withUsage(\"The widget definition expects a `render` and/or an `init` method.\"));\n            localWidgets = localWidgets.concat(widgets);\n            if (localInstantSearchInstance && Boolean(widgets.length)) {\n                $bbcafcaaf02907c9$var$privateHelperSetState(helper, {\n                    state: $bbcafcaaf02907c9$var$getLocalWidgetsSearchParameters(localWidgets, {\n                        uiState: localUiState,\n                        initialSearchParameters: helper.state\n                    }),\n                    _uiState: localUiState\n                }); // We compute the render state before calling `init` in a separate loop\n                // to construct the whole render state object that is then passed to\n                // `init`.\n                widgets.forEach(function(widget) {\n                    if (widget.getRenderState) {\n                        var renderState = widget.getRenderState(localInstantSearchInstance.renderState[_this.getIndexId()] || {}, {\n                            uiState: localInstantSearchInstance._initialUiState,\n                            helper: _this.getHelper(),\n                            parent: _this,\n                            instantSearchInstance: localInstantSearchInstance,\n                            state: helper.state,\n                            renderState: localInstantSearchInstance.renderState,\n                            templatesConfig: localInstantSearchInstance.templatesConfig,\n                            createURL: _this.createURL,\n                            scopedResults: [],\n                            searchMetadata: {\n                                isSearchStalled: localInstantSearchInstance._isSearchStalled\n                            }\n                        });\n                        $bbcafcaaf02907c9$var$storeRenderState({\n                            renderState: renderState,\n                            instantSearchInstance: localInstantSearchInstance,\n                            parent: _this\n                        });\n                    }\n                });\n                widgets.forEach(function(widget) {\n                    if (widget.init) widget.init({\n                        helper: helper,\n                        parent: _this,\n                        uiState: localInstantSearchInstance._initialUiState,\n                        instantSearchInstance: localInstantSearchInstance,\n                        state: helper.state,\n                        renderState: localInstantSearchInstance.renderState,\n                        templatesConfig: localInstantSearchInstance.templatesConfig,\n                        createURL: _this.createURL,\n                        scopedResults: [],\n                        searchMetadata: {\n                            isSearchStalled: localInstantSearchInstance._isSearchStalled\n                        }\n                    });\n                });\n                localInstantSearchInstance.scheduleSearch();\n            }\n            return this;\n        },\n        removeWidgets: function removeWidgets(widgets) {\n            var _this2 = this;\n            if (!Array.isArray(widgets)) throw new Error($bbcafcaaf02907c9$var$withUsage(\"The `removeWidgets` method expects an array of widgets.\"));\n            if (widgets.some(function(widget) {\n                return typeof widget.dispose !== \"function\";\n            })) throw new Error($bbcafcaaf02907c9$var$withUsage(\"The widget definition expects a `dispose` method.\"));\n            localWidgets = localWidgets.filter(function(widget) {\n                return widgets.indexOf(widget) === -1;\n            });\n            if (localInstantSearchInstance && Boolean(widgets.length)) {\n                var nextState = widgets.reduce(function(state, widget) {\n                    // the `dispose` method exists at this point we already assert it\n                    var next = widget.dispose({\n                        helper: helper,\n                        state: state,\n                        parent: _this2\n                    });\n                    return next || state;\n                }, helper.state);\n                localUiState = $bbcafcaaf02907c9$var$getLocalWidgetsUiState(localWidgets, {\n                    searchParameters: nextState,\n                    helper: helper\n                });\n                helper.setState($bbcafcaaf02907c9$var$getLocalWidgetsSearchParameters(localWidgets, {\n                    uiState: localUiState,\n                    initialSearchParameters: nextState\n                }));\n                if (localWidgets.length) localInstantSearchInstance.scheduleSearch();\n            }\n            return this;\n        },\n        init: function init(_ref2) {\n            var _this3 = this, _instantSearchInstanc;\n            var instantSearchInstance = _ref2.instantSearchInstance, parent = _ref2.parent, uiState = _ref2.uiState;\n            if (helper !== null) // helper is already initialized, therefore we do not need to set up\n            // any listeners\n            return;\n            localInstantSearchInstance = instantSearchInstance;\n            localParent = parent;\n            localUiState = uiState[indexId] || {}; // The `mainHelper` is already defined at this point. The instance is created\n            // inside InstantSearch at the `start` method, which occurs before the `init`\n            // step.\n            var mainHelper = instantSearchInstance.mainHelper;\n            var parameters = $bbcafcaaf02907c9$var$getLocalWidgetsSearchParameters(localWidgets, {\n                uiState: localUiState,\n                initialSearchParameters: new (0, (/*@__PURE__*/$parcel$interopDefault($6c359160e6887998$exports))).SearchParameters({\n                    index: indexName\n                })\n            }); // This Helper is only used for state management we do not care about the\n            // `searchClient`. Only the \"main\" Helper created at the `InstantSearch`\n            // level is aware of the client.\n            helper = (0, (/*@__PURE__*/$parcel$interopDefault($6c359160e6887998$exports)))({}, parameters.index, parameters); // We forward the call to `search` to the \"main\" instance of the Helper\n            // which is responsible for managing the queries (it's the only one that is\n            // aware of the `searchClient`).\n            helper.search = function() {\n                if (instantSearchInstance.onStateChange) {\n                    instantSearchInstance.onStateChange({\n                        uiState: instantSearchInstance.mainIndex.getWidgetUiState({}),\n                        setUiState: function setUiState(nextState) {\n                            return instantSearchInstance.setUiState(nextState, false);\n                        }\n                    }); // We don't trigger a search when controlled because it becomes the\n                    // responsibility of `setUiState`.\n                    return mainHelper;\n                }\n                return mainHelper.search();\n            };\n            helper.searchWithoutTriggeringOnStateChange = function() {\n                return mainHelper.search();\n            }; // We use the same pattern for the `searchForFacetValues`.\n            helper.searchForFacetValues = function(facetName, facetValue, maxFacetHits, userState) {\n                var state = helper.state.setQueryParameters(userState);\n                return mainHelper.searchForFacetValues(facetName, facetValue, maxFacetHits, state);\n            };\n            derivedHelper = mainHelper.derive(function() {\n                return (0, $cdcc1435cfc6072b$export$8049d91f25899769).apply(void 0, $bbcafcaaf02907c9$var$_toConsumableArray((0, $28b51c9a5f8547cf$export$1c33c9881dac6797)(_this3)));\n            });\n            var indexInitialResults = (_instantSearchInstanc = instantSearchInstance._initialResults) === null || _instantSearchInstanc === void 0 ? void 0 : _instantSearchInstanc[this.getIndexId()];\n            if (indexInitialResults) {\n                // We restore the shape of the results provided to the instance to respect\n                // the helper's structure.\n                var results = new (0, (/*@__PURE__*/$parcel$interopDefault($6c359160e6887998$exports))).SearchResults(new (0, (/*@__PURE__*/$parcel$interopDefault($6c359160e6887998$exports))).SearchParameters(indexInitialResults.state), indexInitialResults.results);\n                derivedHelper.lastResults = results;\n                helper.lastResults = results;\n            } // Subscribe to the Helper state changes for the page before widgets\n            // are initialized. This behavior mimics the original one of the Helper.\n            // It makes sense to replicate it at the `init` step. We have another\n            // listener on `change` below, once `init` is done.\n            helper.on(\"change\", function(_ref3) {\n                var isPageReset = _ref3.isPageReset;\n                if (isPageReset) $bbcafcaaf02907c9$var$resetPageFromWidgets(localWidgets);\n            });\n            derivedHelper.on(\"search\", function() {\n                // The index does not manage the \"staleness\" of the search. This is the\n                // responsibility of the main instance. It does not make sense to manage\n                // it at the index level because it's either: all of them or none of them\n                // that are stalled. The queries are performed into a single network request.\n                instantSearchInstance.scheduleStalledRender();\n            });\n            derivedHelper.on(\"result\", function(_ref4) {\n                var results = _ref4.results;\n                // The index does not render the results it schedules a new render\n                // to let all the other indices emit their own results. It allows us to\n                // run the render process in one pass.\n                instantSearchInstance.scheduleRender(); // the derived helper is the one which actually searches, but the helper\n                // which is exposed e.g. via instance.helper, doesn't search, and thus\n                // does not have access to lastResults, which it used to in pre-federated\n                // search behavior.\n                helper.lastResults = results;\n            }); // We compute the render state before calling `init` in a separate loop\n            // to construct the whole render state object that is then passed to\n            // `init`.\n            localWidgets.forEach(function(widget) {\n                if (widget.getRenderState) {\n                    var renderState = widget.getRenderState(instantSearchInstance.renderState[_this3.getIndexId()] || {}, {\n                        uiState: uiState,\n                        helper: helper,\n                        parent: _this3,\n                        instantSearchInstance: instantSearchInstance,\n                        state: helper.state,\n                        renderState: instantSearchInstance.renderState,\n                        templatesConfig: instantSearchInstance.templatesConfig,\n                        createURL: _this3.createURL,\n                        scopedResults: [],\n                        searchMetadata: {\n                            isSearchStalled: instantSearchInstance._isSearchStalled\n                        }\n                    });\n                    $bbcafcaaf02907c9$var$storeRenderState({\n                        renderState: renderState,\n                        instantSearchInstance: instantSearchInstance,\n                        parent: _this3\n                    });\n                }\n            });\n            localWidgets.forEach(function(widget) {\n                if (widget.init) widget.init({\n                    uiState: uiState,\n                    helper: helper,\n                    parent: _this3,\n                    instantSearchInstance: instantSearchInstance,\n                    state: helper.state,\n                    renderState: instantSearchInstance.renderState,\n                    templatesConfig: instantSearchInstance.templatesConfig,\n                    createURL: _this3.createURL,\n                    scopedResults: [],\n                    searchMetadata: {\n                        isSearchStalled: instantSearchInstance._isSearchStalled\n                    }\n                });\n            }); // Subscribe to the Helper state changes for the `uiState` once widgets\n            // are initialized. Until the first render, state changes are part of the\n            // configuration step. This is mainly for backward compatibility with custom\n            // widgets. When the subscription happens before the `init` step, the (static)\n            // configuration of the widget is pushed in the URL. That's what we want to avoid.\n            // https://github.com/algolia/instantsearch.js/pull/994/commits/4a672ae3fd78809e213de0368549ef12e9dc9454\n            helper.on(\"change\", function(event) {\n                var state = event.state;\n                var _uiState = event._uiState;\n                localUiState = $bbcafcaaf02907c9$var$getLocalWidgetsUiState(localWidgets, {\n                    searchParameters: state,\n                    helper: helper\n                }, _uiState || {}); // We don't trigger an internal change when controlled because it\n                // becomes the responsibility of `setUiState`.\n                if (!instantSearchInstance.onStateChange) instantSearchInstance.onInternalStateChange();\n            });\n            if (indexInitialResults) // If there are initial results, we're not notified of the next results\n            // because we don't trigger an initial search. We therefore need to directly\n            // schedule a render that will render the results injected on the helper.\n            instantSearchInstance.scheduleRender();\n        },\n        render: function render(_ref5) {\n            var _this4 = this;\n            var instantSearchInstance = _ref5.instantSearchInstance;\n            if (!this.getResults()) return;\n            localWidgets.forEach(function(widget) {\n                if (widget.getRenderState) {\n                    var renderState = widget.getRenderState(instantSearchInstance.renderState[_this4.getIndexId()] || {}, {\n                        helper: _this4.getHelper(),\n                        parent: _this4,\n                        instantSearchInstance: instantSearchInstance,\n                        results: _this4.getResults(),\n                        scopedResults: _this4.getScopedResults(),\n                        state: _this4.getResults()._state,\n                        renderState: instantSearchInstance.renderState,\n                        templatesConfig: instantSearchInstance.templatesConfig,\n                        createURL: _this4.createURL,\n                        searchMetadata: {\n                            isSearchStalled: instantSearchInstance._isSearchStalled\n                        }\n                    });\n                    $bbcafcaaf02907c9$var$storeRenderState({\n                        renderState: renderState,\n                        instantSearchInstance: instantSearchInstance,\n                        parent: _this4\n                    });\n                }\n            });\n            localWidgets.forEach(function(widget) {\n                // At this point, all the variables used below are set. Both `helper`\n                // and `derivedHelper` have been created at the `init` step. The attribute\n                // `lastResults` might be `null` though. It's possible that a stalled render\n                // happens before the result e.g with a dynamically added index the request might\n                // be delayed. The render is triggered for the complete tree but some parts do\n                // not have results yet.\n                if (widget.render) widget.render({\n                    helper: helper,\n                    parent: _this4,\n                    instantSearchInstance: instantSearchInstance,\n                    results: _this4.getResults(),\n                    scopedResults: _this4.getScopedResults(),\n                    state: _this4.getResults()._state,\n                    renderState: instantSearchInstance.renderState,\n                    templatesConfig: instantSearchInstance.templatesConfig,\n                    createURL: _this4.createURL,\n                    searchMetadata: {\n                        isSearchStalled: instantSearchInstance._isSearchStalled\n                    }\n                });\n            });\n        },\n        dispose: function dispose() {\n            var _this5 = this;\n            localWidgets.forEach(function(widget) {\n                if (widget.dispose) // The dispose function is always called once the instance is started\n                // (it's an effect of `removeWidgets`). The index is initialized and\n                // the Helper is available. We don't care about the return value of\n                // `dispose` because the index is removed. We can't call `removeWidgets`\n                // because we want to keep the widgets on the instance, to allow idempotent\n                // operations on `add` & `remove`.\n                widget.dispose({\n                    helper: helper,\n                    state: helper.state,\n                    parent: _this5\n                });\n            });\n            localInstantSearchInstance = null;\n            localParent = null;\n            helper.removeAllListeners();\n            helper = null;\n            derivedHelper.detach();\n            derivedHelper = null;\n        },\n        getWidgetUiState: function getWidgetUiState(uiState) {\n            return localWidgets.filter((0, $4e36965025504545$export$a9c9a0d43506297d)).reduce(function(previousUiState, innerIndex) {\n                return innerIndex.getWidgetUiState(previousUiState);\n            }, $bbcafcaaf02907c9$var$_objectSpread($bbcafcaaf02907c9$var$_objectSpread({}, uiState), {}, $bbcafcaaf02907c9$var$_defineProperty({}, this.getIndexId(), localUiState)));\n        },\n        getWidgetState: function getWidgetState(uiState) {\n            return this.getWidgetUiState(uiState);\n        },\n        getWidgetSearchParameters: function getWidgetSearchParameters(searchParameters, _ref6) {\n            var uiState = _ref6.uiState;\n            return $bbcafcaaf02907c9$var$getLocalWidgetsSearchParameters(localWidgets, {\n                uiState: uiState,\n                initialSearchParameters: searchParameters\n            });\n        },\n        refreshUiState: function refreshUiState() {\n            localUiState = $bbcafcaaf02907c9$var$getLocalWidgetsUiState(localWidgets, {\n                searchParameters: this.getHelper().state,\n                helper: this.getHelper()\n            }, localUiState);\n        }\n    };\n};\nvar $bbcafcaaf02907c9$export$2e2bcd8739ae039 = $bbcafcaaf02907c9$var$index;\nfunction $bbcafcaaf02907c9$var$storeRenderState(_ref7) {\n    var renderState = _ref7.renderState, instantSearchInstance = _ref7.instantSearchInstance, parent = _ref7.parent;\n    var parentIndexName = parent ? parent.getIndexId() : instantSearchInstance.mainIndex.getIndexId();\n    instantSearchInstance.renderState = $bbcafcaaf02907c9$var$_objectSpread($bbcafcaaf02907c9$var$_objectSpread({}, instantSearchInstance.renderState), {}, $bbcafcaaf02907c9$var$_defineProperty({}, parentIndexName, $bbcafcaaf02907c9$var$_objectSpread($bbcafcaaf02907c9$var$_objectSpread({}, instantSearchInstance.renderState[parentIndexName]), renderState)));\n}\n\n\nvar $9bacbeef4c25f81e$export$2e2bcd8739ae039 = \"4.46.3\";\n\n\n\n\nvar $c84ade2a4f4913d0$var$suit = (0, $26d2f3c47ecadc8f$export$d8556a2a8f973135)(\"Highlight\");\nfunction $c84ade2a4f4913d0$export$2e2bcd8739ae039(_ref) {\n    var attribute = _ref.attribute, _ref$highlightedTagNa = _ref.highlightedTagName, highlightedTagName = _ref$highlightedTagNa === void 0 ? \"mark\" : _ref$highlightedTagNa, hit = _ref.hit, _ref$cssClasses = _ref.cssClasses, cssClasses = _ref$cssClasses === void 0 ? {} : _ref$cssClasses;\n    var highlightAttributeResult = (0, $4dc7e5862e881a8a$export$d14846335956eefa)(hit._highlightResult, attribute); // @MAJOR fallback to attribute value if highlight is not found\n    var _ref2 = highlightAttributeResult || {}, _ref2$value = _ref2.value, attributeValue = _ref2$value === void 0 ? \"\" : _ref2$value; // cx is not used, since it would be bundled as a dependency for Vue & Angular\n    var className = $c84ade2a4f4913d0$var$suit({\n        descendantName: \"highlighted\"\n    }) + (cssClasses.highlighted ? \" \".concat(cssClasses.highlighted) : \"\");\n    return attributeValue.replace(new RegExp((0, $ea7b3b8ada1be339$export$62e796b7905e8e6b).highlightPreTag, \"g\"), \"<\".concat(highlightedTagName, ' class=\"').concat(className, '\">')).replace(new RegExp((0, $ea7b3b8ada1be339$export$62e796b7905e8e6b).highlightPostTag, \"g\"), \"</\".concat(highlightedTagName, \">\"));\n}\n\n\nfunction $e2136b4fe8cbe1d7$export$a34fe2fceda1929e(parts) {\n    var highlightPreTag = (0, $ea7b3b8ada1be339$export$62e796b7905e8e6b).highlightPreTag, highlightPostTag = (0, $ea7b3b8ada1be339$export$62e796b7905e8e6b).highlightPostTag;\n    return parts.map(function(part) {\n        return part.isHighlighted ? highlightPreTag + part.value + highlightPostTag : part.value;\n    }).join(\"\");\n}\n\n\nvar $e2cd73fbcf03a3df$var$hasAlphanumeric = new RegExp(/\\w/i);\nfunction $e2cd73fbcf03a3df$export$60c97785b669d08a(parts, i) {\n    var _parts, _parts2;\n    var current = parts[i];\n    var isNextHighlighted = ((_parts = parts[i + 1]) === null || _parts === void 0 ? void 0 : _parts.isHighlighted) || true;\n    var isPreviousHighlighted = ((_parts2 = parts[i - 1]) === null || _parts2 === void 0 ? void 0 : _parts2.isHighlighted) || true;\n    if (!$e2cd73fbcf03a3df$var$hasAlphanumeric.test((0, $fcb98432e82f2808$export$e8bacd2802a88316)(current.value)) && isPreviousHighlighted === isNextHighlighted) return isPreviousHighlighted;\n    return current.isHighlighted;\n}\n\n\nfunction $c5cff96bdf3b7f7e$var$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 $c5cff96bdf3b7f7e$var$_objectSpread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        if (i % 2) $c5cff96bdf3b7f7e$var$ownKeys(Object(source), true).forEach(function(key) {\n            $c5cff96bdf3b7f7e$var$_defineProperty(target, key, source[key]);\n        });\n        else if (Object.getOwnPropertyDescriptors) Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n        else $c5cff96bdf3b7f7e$var$ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nfunction $c5cff96bdf3b7f7e$var$_defineProperty(obj, key, value) {\n    if (key in obj) Object.defineProperty(obj, key, {\n        value: value,\n        enumerable: true,\n        configurable: true,\n        writable: true\n    });\n    else obj[key] = value;\n    return obj;\n}\nfunction $c5cff96bdf3b7f7e$export$8d1202a2cf66e93(parts) {\n    if (!parts.some(function(part) {\n        return part.isHighlighted;\n    })) return parts.map(function(part) {\n        return $c5cff96bdf3b7f7e$var$_objectSpread($c5cff96bdf3b7f7e$var$_objectSpread({}, part), {}, {\n            isHighlighted: false\n        });\n    });\n    return parts.map(function(part, i) {\n        return $c5cff96bdf3b7f7e$var$_objectSpread($c5cff96bdf3b7f7e$var$_objectSpread({}, part), {}, {\n            isHighlighted: !(0, $e2cd73fbcf03a3df$export$60c97785b669d08a)(parts, i)\n        });\n    });\n}\n\n\n\nvar $a9544a7c7ea19d28$var$suit = (0, $26d2f3c47ecadc8f$export$d8556a2a8f973135)(\"ReverseHighlight\");\nfunction $a9544a7c7ea19d28$export$2e2bcd8739ae039(_ref) {\n    var attribute = _ref.attribute, _ref$highlightedTagNa = _ref.highlightedTagName, highlightedTagName = _ref$highlightedTagNa === void 0 ? \"mark\" : _ref$highlightedTagNa, hit = _ref.hit, _ref$cssClasses = _ref.cssClasses, cssClasses = _ref$cssClasses === void 0 ? {} : _ref$cssClasses;\n    var highlightAttributeResult = (0, $4dc7e5862e881a8a$export$d14846335956eefa)(hit._highlightResult, attribute); // @MAJOR fallback to attribute value if highlight is not found\n    var _ref2 = highlightAttributeResult || {}, _ref2$value = _ref2.value, attributeValue = _ref2$value === void 0 ? \"\" : _ref2$value; // cx is not used, since it would be bundled as a dependency for Vue & Angular\n    var className = $a9544a7c7ea19d28$var$suit({\n        descendantName: \"highlighted\"\n    }) + (cssClasses.highlighted ? \" \".concat(cssClasses.highlighted) : \"\");\n    var reverseHighlightedValue = (0, $e2136b4fe8cbe1d7$export$a34fe2fceda1929e)((0, $c5cff96bdf3b7f7e$export$8d1202a2cf66e93)((0, $d11e96c67ca5e4d5$export$e04d28e65b830ebf)(attributeValue)));\n    return reverseHighlightedValue.replace(new RegExp((0, $ea7b3b8ada1be339$export$62e796b7905e8e6b).highlightPreTag, \"g\"), \"<\".concat(highlightedTagName, ' class=\"').concat(className, '\">')).replace(new RegExp((0, $ea7b3b8ada1be339$export$62e796b7905e8e6b).highlightPostTag, \"g\"), \"</\".concat(highlightedTagName, \">\"));\n}\n\n\n\nvar $007f848d940fdaf1$var$suit = (0, $26d2f3c47ecadc8f$export$d8556a2a8f973135)(\"ReverseSnippet\");\nfunction $007f848d940fdaf1$export$2e2bcd8739ae039(_ref) {\n    var attribute = _ref.attribute, _ref$highlightedTagNa = _ref.highlightedTagName, highlightedTagName = _ref$highlightedTagNa === void 0 ? \"mark\" : _ref$highlightedTagNa, hit = _ref.hit, _ref$cssClasses = _ref.cssClasses, cssClasses = _ref$cssClasses === void 0 ? {} : _ref$cssClasses;\n    var snippetAttributeResult = (0, $4dc7e5862e881a8a$export$d14846335956eefa)(hit._snippetResult, attribute); // @MAJOR fallback to attribute value if snippet is not found\n    var _ref2 = snippetAttributeResult || {}, _ref2$value = _ref2.value, attributeValue = _ref2$value === void 0 ? \"\" : _ref2$value; // cx is not used, since it would be bundled as a dependency for Vue & Angular\n    var className = $007f848d940fdaf1$var$suit({\n        descendantName: \"highlighted\"\n    }) + (cssClasses.highlighted ? \" \".concat(cssClasses.highlighted) : \"\");\n    var reverseHighlightedValue = (0, $e2136b4fe8cbe1d7$export$a34fe2fceda1929e)((0, $c5cff96bdf3b7f7e$export$8d1202a2cf66e93)((0, $d11e96c67ca5e4d5$export$e04d28e65b830ebf)(attributeValue)));\n    return reverseHighlightedValue.replace(new RegExp((0, $ea7b3b8ada1be339$export$62e796b7905e8e6b).highlightPreTag, \"g\"), \"<\".concat(highlightedTagName, ' class=\"').concat(className, '\">')).replace(new RegExp((0, $ea7b3b8ada1be339$export$62e796b7905e8e6b).highlightPostTag, \"g\"), \"</\".concat(highlightedTagName, \">\"));\n}\n\n\n\nvar $42f86c36b36dbd78$var$suit = (0, $26d2f3c47ecadc8f$export$d8556a2a8f973135)(\"Snippet\");\nfunction $42f86c36b36dbd78$export$2e2bcd8739ae039(_ref) {\n    var attribute = _ref.attribute, _ref$highlightedTagNa = _ref.highlightedTagName, highlightedTagName = _ref$highlightedTagNa === void 0 ? \"mark\" : _ref$highlightedTagNa, hit = _ref.hit, _ref$cssClasses = _ref.cssClasses, cssClasses = _ref$cssClasses === void 0 ? {} : _ref$cssClasses;\n    var snippetAttributeResult = (0, $4dc7e5862e881a8a$export$d14846335956eefa)(hit._snippetResult, attribute); // @MAJOR fallback to attribute value if snippet is not found\n    var _ref2 = snippetAttributeResult || {}, _ref2$value = _ref2.value, attributeValue = _ref2$value === void 0 ? \"\" : _ref2$value; // cx is not used, since it would be bundled as a dependency for Vue & Angular\n    var className = $42f86c36b36dbd78$var$suit({\n        descendantName: \"highlighted\"\n    }) + (cssClasses.highlighted ? \" \".concat(cssClasses.highlighted) : \"\");\n    return attributeValue.replace(new RegExp((0, $ea7b3b8ada1be339$export$62e796b7905e8e6b).highlightPreTag, \"g\"), \"<\".concat(highlightedTagName, ' class=\"').concat(className, '\">')).replace(new RegExp((0, $ea7b3b8ada1be339$export$62e796b7905e8e6b).highlightPostTag, \"g\"), \"</\".concat(highlightedTagName, \">\"));\n}\n\n\n\nfunction $1895b248d7928836$var$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 $1895b248d7928836$var$_objectSpread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        if (i % 2) $1895b248d7928836$var$ownKeys(Object(source), true).forEach(function(key) {\n            $1895b248d7928836$var$_defineProperty(target, key, source[key]);\n        });\n        else if (Object.getOwnPropertyDescriptors) Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n        else $1895b248d7928836$var$ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nfunction $1895b248d7928836$var$_defineProperty(obj, key, value) {\n    if (key in obj) Object.defineProperty(obj, key, {\n        value: value,\n        enumerable: true,\n        configurable: true,\n        writable: true\n    });\n    else obj[key] = value;\n    return obj;\n}\nfunction $1895b248d7928836$export$2e2bcd8739ae039(_ref) {\n    var numberLocale = _ref.numberLocale;\n    return {\n        formatNumber: function formatNumber(value, render) {\n            return (0, $9fd7029b79ebbbfb$export$f5dd818bff069720)(Number(render(value)), numberLocale);\n        },\n        highlight: function highlight(options, render) {\n            try {\n                var highlightOptions = JSON.parse(options);\n                return render((0, $c84ade2a4f4913d0$export$2e2bcd8739ae039)($1895b248d7928836$var$_objectSpread($1895b248d7928836$var$_objectSpread({}, highlightOptions), {}, {\n                    hit: this\n                })));\n            } catch (error) {\n                throw new Error('\\nThe highlight helper expects a JSON object of the format:\\n{ \"attribute\": \"name\", \"highlightedTagName\": \"mark\" }');\n            }\n        },\n        reverseHighlight: function reverseHighlight(options, render) {\n            try {\n                var reverseHighlightOptions = JSON.parse(options);\n                return render((0, $a9544a7c7ea19d28$export$2e2bcd8739ae039)($1895b248d7928836$var$_objectSpread($1895b248d7928836$var$_objectSpread({}, reverseHighlightOptions), {}, {\n                    hit: this\n                })));\n            } catch (error) {\n                throw new Error('\\n  The reverseHighlight helper expects a JSON object of the format:\\n  { \"attribute\": \"name\", \"highlightedTagName\": \"mark\" }');\n            }\n        },\n        snippet: function snippet(options, render) {\n            try {\n                var snippetOptions = JSON.parse(options);\n                return render((0, $42f86c36b36dbd78$export$2e2bcd8739ae039)($1895b248d7928836$var$_objectSpread($1895b248d7928836$var$_objectSpread({}, snippetOptions), {}, {\n                    hit: this\n                })));\n            } catch (error) {\n                throw new Error('\\nThe snippet helper expects a JSON object of the format:\\n{ \"attribute\": \"name\", \"highlightedTagName\": \"mark\" }');\n            }\n        },\n        reverseSnippet: function reverseSnippet(options, render) {\n            try {\n                var reverseSnippetOptions = JSON.parse(options);\n                return render((0, $007f848d940fdaf1$export$2e2bcd8739ae039)($1895b248d7928836$var$_objectSpread($1895b248d7928836$var$_objectSpread({}, reverseSnippetOptions), {}, {\n                    hit: this\n                })));\n            } catch (error) {\n                throw new Error('\\n  The reverseSnippet helper expects a JSON object of the format:\\n  { \"attribute\": \"name\", \"highlightedTagName\": \"mark\" }');\n            }\n        },\n        insights: function insights(options, render) {\n            try {\n                var _JSON$parse = JSON.parse(options), method = _JSON$parse.method, payload = _JSON$parse.payload;\n                return render((0, $62dc5ddd84fbc4d2$export$2e2bcd8739ae039)(method, $1895b248d7928836$var$_objectSpread({\n                    objectIDs: [\n                        this.objectID\n                    ]\n                }, payload)));\n            } catch (error) {\n                throw new Error('\\nThe insights helper expects a JSON object of the format:\\n{ \"method\": \"method-name\", \"payload\": { \"eventName\": \"name of the event\" } }');\n            }\n        }\n    };\n}\n\n\nvar $8830dcf7f3e53e85$var$nextMicroTask = Promise.resolve();\nfunction $8830dcf7f3e53e85$export$260e5c0943f31606(callback) {\n    var progress = null;\n    var cancelled = false;\n    var fn = function fn() {\n        for(var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++)args[_key] = arguments[_key];\n        if (progress !== null) return;\n        progress = $8830dcf7f3e53e85$var$nextMicroTask.then(function() {\n            progress = null;\n            if (cancelled) {\n                cancelled = false;\n                return;\n            }\n            callback.apply(void 0, args);\n        });\n    };\n    fn.wait = function() {\n        if (progress === null) throw new Error(\"The deferred function should be called before calling `wait()`\");\n        return progress;\n    };\n    fn.cancel = function() {\n        if (progress === null) return;\n        cancelled = true;\n    };\n    return fn;\n}\n\n\n\nfunction $e00cc39de32ae775$export$fd5e8f1329b3d5e0(finalUiState, indexWidget) {\n    var nextIndexUiState = finalUiState[indexWidget.getIndexId()] || {};\n    indexWidget.getHelper().setState(indexWidget.getWidgetSearchParameters(indexWidget.getHelper().state, {\n        uiState: nextIndexUiState\n    }));\n    indexWidget.getWidgets().filter((0, $4e36965025504545$export$a9c9a0d43506297d)).forEach(function(widget) {\n        return $e00cc39de32ae775$export$fd5e8f1329b3d5e0(finalUiState, widget);\n    });\n}\n\n\nfunction $8bf1b0cf99a6caf0$var$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 $8bf1b0cf99a6caf0$var$_objectSpread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        if (i % 2) $8bf1b0cf99a6caf0$var$ownKeys(Object(source), true).forEach(function(key) {\n            $8bf1b0cf99a6caf0$var$_defineProperty(target, key, source[key]);\n        });\n        else if (Object.getOwnPropertyDescriptors) Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n        else $8bf1b0cf99a6caf0$var$ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nfunction $8bf1b0cf99a6caf0$var$_defineProperty(obj, key, value) {\n    if (key in obj) Object.defineProperty(obj, key, {\n        value: value,\n        enumerable: true,\n        configurable: true,\n        writable: true\n    });\n    else obj[key] = value;\n    return obj;\n}\nfunction $8bf1b0cf99a6caf0$var$_objectWithoutProperties(source, excluded) {\n    if (source == null) return {};\n    var target = $8bf1b0cf99a6caf0$var$_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}\nfunction $8bf1b0cf99a6caf0$var$_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 $8bf1b0cf99a6caf0$var$getIndexStateWithoutConfigure(uiState) {\n    var configure = uiState.configure, trackedUiState = $8bf1b0cf99a6caf0$var$_objectWithoutProperties(uiState, [\n        \"configure\"\n    ]);\n    return trackedUiState;\n} // technically a URL could contain any key, since users provide it,\nfunction $8bf1b0cf99a6caf0$export$2e2bcd8739ae039() {\n    return {\n        stateToRoute: function stateToRoute(uiState) {\n            return Object.keys(uiState).reduce(function(state, indexId) {\n                return $8bf1b0cf99a6caf0$var$_objectSpread($8bf1b0cf99a6caf0$var$_objectSpread({}, state), {}, $8bf1b0cf99a6caf0$var$_defineProperty({}, indexId, $8bf1b0cf99a6caf0$var$getIndexStateWithoutConfigure(uiState[indexId])));\n            }, {});\n        },\n        routeToState: function routeToState() {\n            var routeState = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n            return Object.keys(routeState).reduce(function(state, indexId) {\n                return $8bf1b0cf99a6caf0$var$_objectSpread($8bf1b0cf99a6caf0$var$_objectSpread({}, state), {}, $8bf1b0cf99a6caf0$var$_defineProperty({}, indexId, $8bf1b0cf99a6caf0$var$getIndexStateWithoutConfigure(routeState[indexId])));\n            }, {});\n        }\n    };\n}\n\n\nvar $eb6f7fc63f627fea$exports = {};\n\"use strict\";\nvar $21a857f2c632f015$exports = {};\n\"use strict\";\nvar $c28806fde4f5d743$exports = {};\n\"use strict\";\nvar $e77cc7fa9fbe3dde$exports = {};\n\"use strict\";\nvar $e77cc7fa9fbe3dde$var$replace = String.prototype.replace;\nvar $e77cc7fa9fbe3dde$var$percentTwenties = /%20/g;\nvar $e77cc7fa9fbe3dde$var$Format = {\n    RFC1738: \"RFC1738\",\n    RFC3986: \"RFC3986\"\n};\n$e77cc7fa9fbe3dde$exports = {\n    \"default\": $e77cc7fa9fbe3dde$var$Format.RFC3986,\n    formatters: {\n        RFC1738: function(value) {\n            return $e77cc7fa9fbe3dde$var$replace.call(value, $e77cc7fa9fbe3dde$var$percentTwenties, \"+\");\n        },\n        RFC3986: function(value) {\n            return String(value);\n        }\n    },\n    RFC1738: $e77cc7fa9fbe3dde$var$Format.RFC1738,\n    RFC3986: $e77cc7fa9fbe3dde$var$Format.RFC3986\n};\n\n\nvar $c28806fde4f5d743$var$has = Object.prototype.hasOwnProperty;\nvar $c28806fde4f5d743$var$isArray = Array.isArray;\nvar $c28806fde4f5d743$var$hexTable = function() {\n    var array = [];\n    for(var i = 0; i < 256; ++i)array.push(\"%\" + ((i < 16 ? \"0\" : \"\") + i.toString(16)).toUpperCase());\n    return array;\n}();\nvar $c28806fde4f5d743$var$compactQueue = function compactQueue(queue) {\n    while(queue.length > 1){\n        var item = queue.pop();\n        var obj = item.obj[item.prop];\n        if ($c28806fde4f5d743$var$isArray(obj)) {\n            var compacted = [];\n            for(var j = 0; j < obj.length; ++j)if (typeof obj[j] !== \"undefined\") compacted.push(obj[j]);\n            item.obj[item.prop] = compacted;\n        }\n    }\n};\nvar $c28806fde4f5d743$var$arrayToObject = function arrayToObject(source, options) {\n    var obj = options && options.plainObjects ? Object.create(null) : {};\n    for(var i = 0; i < source.length; ++i)if (typeof source[i] !== \"undefined\") obj[i] = source[i];\n    return obj;\n};\nvar $c28806fde4f5d743$var$merge = function merge(target, source, options) {\n    /* eslint no-param-reassign: 0 */ if (!source) return target;\n    if (typeof source !== \"object\") {\n        if ($c28806fde4f5d743$var$isArray(target)) target.push(source);\n        else if (target && typeof target === \"object\") {\n            if (options && (options.plainObjects || options.allowPrototypes) || !$c28806fde4f5d743$var$has.call(Object.prototype, source)) target[source] = true;\n        } else return [\n            target,\n            source\n        ];\n        return target;\n    }\n    if (!target || typeof target !== \"object\") return [\n        target\n    ].concat(source);\n    var mergeTarget = target;\n    if ($c28806fde4f5d743$var$isArray(target) && !$c28806fde4f5d743$var$isArray(source)) mergeTarget = $c28806fde4f5d743$var$arrayToObject(target, options);\n    if ($c28806fde4f5d743$var$isArray(target) && $c28806fde4f5d743$var$isArray(source)) {\n        source.forEach(function(item, i) {\n            if ($c28806fde4f5d743$var$has.call(target, i)) {\n                var targetItem = target[i];\n                if (targetItem && typeof targetItem === \"object\" && item && typeof item === \"object\") target[i] = merge(targetItem, item, options);\n                else target.push(item);\n            } else target[i] = item;\n        });\n        return target;\n    }\n    return Object.keys(source).reduce(function(acc, key) {\n        var value = source[key];\n        if ($c28806fde4f5d743$var$has.call(acc, key)) acc[key] = merge(acc[key], value, options);\n        else acc[key] = value;\n        return acc;\n    }, mergeTarget);\n};\nvar $c28806fde4f5d743$var$assign = function assignSingleSource(target, source) {\n    return Object.keys(source).reduce(function(acc, key) {\n        acc[key] = source[key];\n        return acc;\n    }, target);\n};\nvar $c28806fde4f5d743$var$decode = function(str, decoder, charset) {\n    var strWithoutPlus = str.replace(/\\+/g, \" \");\n    if (charset === \"iso-8859-1\") // unescape never throws, no try...catch needed:\n    return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n    // utf-8\n    try {\n        return decodeURIComponent(strWithoutPlus);\n    } catch (e) {\n        return strWithoutPlus;\n    }\n};\nvar $c28806fde4f5d743$var$encode = function encode(str, defaultEncoder, charset, kind, format) {\n    // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n    // It has been adapted here for stricter adherence to RFC 3986\n    if (str.length === 0) return str;\n    var string = str;\n    if (typeof str === \"symbol\") string = Symbol.prototype.toString.call(str);\n    else if (typeof str !== \"string\") string = String(str);\n    if (charset === \"iso-8859-1\") return escape(string).replace(/%u[0-9a-f]{4}/gi, function($0) {\n        return \"%26%23\" + parseInt($0.slice(2), 16) + \"%3B\";\n    });\n    var out = \"\";\n    for(var i = 0; i < string.length; ++i){\n        var c = string.charCodeAt(i);\n        if (c === 0x2D // -\n         || c === 0x2E // .\n         || c === 0x5F // _\n         || c === 0x7E // ~\n         || c >= 0x30 && c <= 0x39 // 0-9\n         || c >= 0x41 && c <= 0x5A // a-z\n         || c >= 0x61 && c <= 0x7A // A-Z\n         || format === $e77cc7fa9fbe3dde$exports.RFC1738 && (c === 0x28 || c === 0x29) // ( )\n        ) {\n            out += string.charAt(i);\n            continue;\n        }\n        if (c < 0x80) {\n            out = out + $c28806fde4f5d743$var$hexTable[c];\n            continue;\n        }\n        if (c < 0x800) {\n            out = out + ($c28806fde4f5d743$var$hexTable[0xC0 | c >> 6] + $c28806fde4f5d743$var$hexTable[0x80 | c & 0x3F]);\n            continue;\n        }\n        if (c < 0xD800 || c >= 0xE000) {\n            out = out + ($c28806fde4f5d743$var$hexTable[0xE0 | c >> 12] + $c28806fde4f5d743$var$hexTable[0x80 | c >> 6 & 0x3F] + $c28806fde4f5d743$var$hexTable[0x80 | c & 0x3F]);\n            continue;\n        }\n        i += 1;\n        c = 0x10000 + ((c & 0x3FF) << 10 | string.charCodeAt(i) & 0x3FF);\n        /* eslint operator-linebreak: [2, \"before\"] */ out += $c28806fde4f5d743$var$hexTable[0xF0 | c >> 18] + $c28806fde4f5d743$var$hexTable[0x80 | c >> 12 & 0x3F] + $c28806fde4f5d743$var$hexTable[0x80 | c >> 6 & 0x3F] + $c28806fde4f5d743$var$hexTable[0x80 | c & 0x3F];\n    }\n    return out;\n};\nvar $c28806fde4f5d743$var$compact = function compact(value) {\n    var queue = [\n        {\n            obj: {\n                o: value\n            },\n            prop: \"o\"\n        }\n    ];\n    var refs = [];\n    for(var i = 0; i < queue.length; ++i){\n        var item = queue[i];\n        var obj = item.obj[item.prop];\n        var keys = Object.keys(obj);\n        for(var j = 0; j < keys.length; ++j){\n            var key = keys[j];\n            var val = obj[key];\n            if (typeof val === \"object\" && val !== null && refs.indexOf(val) === -1) {\n                queue.push({\n                    obj: obj,\n                    prop: key\n                });\n                refs.push(val);\n            }\n        }\n    }\n    $c28806fde4f5d743$var$compactQueue(queue);\n    return value;\n};\nvar $c28806fde4f5d743$var$isRegExp = function isRegExp(obj) {\n    return Object.prototype.toString.call(obj) === \"[object RegExp]\";\n};\nvar $c28806fde4f5d743$var$isBuffer = function isBuffer(obj) {\n    if (!obj || typeof obj !== \"object\") return false;\n    return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\nvar $c28806fde4f5d743$var$combine = function combine(a, b) {\n    return [].concat(a, b);\n};\nvar $c28806fde4f5d743$var$maybeMap = function maybeMap(val, fn) {\n    if ($c28806fde4f5d743$var$isArray(val)) {\n        var mapped = [];\n        for(var i = 0; i < val.length; i += 1)mapped.push(fn(val[i]));\n        return mapped;\n    }\n    return fn(val);\n};\n$c28806fde4f5d743$exports = {\n    arrayToObject: $c28806fde4f5d743$var$arrayToObject,\n    assign: $c28806fde4f5d743$var$assign,\n    combine: $c28806fde4f5d743$var$combine,\n    compact: $c28806fde4f5d743$var$compact,\n    decode: $c28806fde4f5d743$var$decode,\n    encode: $c28806fde4f5d743$var$encode,\n    isBuffer: $c28806fde4f5d743$var$isBuffer,\n    isRegExp: $c28806fde4f5d743$var$isRegExp,\n    maybeMap: $c28806fde4f5d743$var$maybeMap,\n    merge: $c28806fde4f5d743$var$merge\n};\n\n\n\nvar $21a857f2c632f015$var$has = Object.prototype.hasOwnProperty;\nvar $21a857f2c632f015$var$arrayPrefixGenerators = {\n    brackets: function brackets(prefix) {\n        return prefix + \"[]\";\n    },\n    comma: \"comma\",\n    indices: function indices(prefix, key) {\n        return prefix + \"[\" + key + \"]\";\n    },\n    repeat: function repeat(prefix) {\n        return prefix;\n    }\n};\nvar $21a857f2c632f015$var$isArray = Array.isArray;\nvar $21a857f2c632f015$var$split = String.prototype.split;\nvar $21a857f2c632f015$var$push = Array.prototype.push;\nvar $21a857f2c632f015$var$pushToArray = function(arr, valueOrArray) {\n    $21a857f2c632f015$var$push.apply(arr, $21a857f2c632f015$var$isArray(valueOrArray) ? valueOrArray : [\n        valueOrArray\n    ]);\n};\nvar $21a857f2c632f015$var$toISO = Date.prototype.toISOString;\nvar $21a857f2c632f015$var$defaultFormat = $e77cc7fa9fbe3dde$exports.default;\nvar $21a857f2c632f015$var$defaults = {\n    addQueryPrefix: false,\n    allowDots: false,\n    charset: \"utf-8\",\n    charsetSentinel: false,\n    delimiter: \"&\",\n    encode: true,\n    encoder: $c28806fde4f5d743$exports.encode,\n    encodeValuesOnly: false,\n    format: $21a857f2c632f015$var$defaultFormat,\n    formatter: $e77cc7fa9fbe3dde$exports.formatters[$21a857f2c632f015$var$defaultFormat],\n    // deprecated\n    indices: false,\n    serializeDate: function serializeDate(date) {\n        return $21a857f2c632f015$var$toISO.call(date);\n    },\n    skipNulls: false,\n    strictNullHandling: false\n};\nvar $21a857f2c632f015$var$isNonNullishPrimitive = function isNonNullishPrimitive(v) {\n    return typeof v === \"string\" || typeof v === \"number\" || typeof v === \"boolean\" || typeof v === \"symbol\" || typeof v === \"bigint\";\n};\nvar $21a857f2c632f015$var$stringify = function stringify(object, prefix, generateArrayPrefix, strictNullHandling, skipNulls, encoder, filter, sort, allowDots, serializeDate, format, formatter, encodeValuesOnly, charset) {\n    var obj = object;\n    if (typeof filter === \"function\") obj = filter(prefix, obj);\n    else if (obj instanceof Date) obj = serializeDate(obj);\n    else if (generateArrayPrefix === \"comma\" && $21a857f2c632f015$var$isArray(obj)) obj = $c28806fde4f5d743$exports.maybeMap(obj, function(value) {\n        if (value instanceof Date) return serializeDate(value);\n        return value;\n    });\n    if (obj === null) {\n        if (strictNullHandling) return encoder && !encodeValuesOnly ? encoder(prefix, $21a857f2c632f015$var$defaults.encoder, charset, \"key\", format) : prefix;\n        obj = \"\";\n    }\n    if ($21a857f2c632f015$var$isNonNullishPrimitive(obj) || $c28806fde4f5d743$exports.isBuffer(obj)) {\n        if (encoder) {\n            var keyValue = encodeValuesOnly ? prefix : encoder(prefix, $21a857f2c632f015$var$defaults.encoder, charset, \"key\", format);\n            if (generateArrayPrefix === \"comma\" && encodeValuesOnly) {\n                var valuesArray = $21a857f2c632f015$var$split.call(String(obj), \",\");\n                var valuesJoined = \"\";\n                for(var i = 0; i < valuesArray.length; ++i)valuesJoined += (i === 0 ? \"\" : \",\") + formatter(encoder(valuesArray[i], $21a857f2c632f015$var$defaults.encoder, charset, \"value\", format));\n                return [\n                    formatter(keyValue) + \"=\" + valuesJoined\n                ];\n            }\n            return [\n                formatter(keyValue) + \"=\" + formatter(encoder(obj, $21a857f2c632f015$var$defaults.encoder, charset, \"value\", format))\n            ];\n        }\n        return [\n            formatter(prefix) + \"=\" + formatter(String(obj))\n        ];\n    }\n    var values = [];\n    if (typeof obj === \"undefined\") return values;\n    var objKeys;\n    if (generateArrayPrefix === \"comma\" && $21a857f2c632f015$var$isArray(obj)) // we need to join elements in\n    objKeys = [\n        {\n            value: obj.length > 0 ? obj.join(\",\") || null : void 0\n        }\n    ];\n    else if ($21a857f2c632f015$var$isArray(filter)) objKeys = filter;\n    else {\n        var keys = Object.keys(obj);\n        objKeys = sort ? keys.sort(sort) : keys;\n    }\n    for(var j = 0; j < objKeys.length; ++j){\n        var key = objKeys[j];\n        var value = typeof key === \"object\" && typeof key.value !== \"undefined\" ? key.value : obj[key];\n        if (skipNulls && value === null) continue;\n        var keyPrefix = $21a857f2c632f015$var$isArray(obj) ? typeof generateArrayPrefix === \"function\" ? generateArrayPrefix(prefix, key) : prefix : prefix + (allowDots ? \".\" + key : \"[\" + key + \"]\");\n        $21a857f2c632f015$var$pushToArray(values, stringify(value, keyPrefix, generateArrayPrefix, strictNullHandling, skipNulls, encoder, filter, sort, allowDots, serializeDate, format, formatter, encodeValuesOnly, charset));\n    }\n    return values;\n};\nvar $21a857f2c632f015$var$normalizeStringifyOptions = function normalizeStringifyOptions(opts) {\n    if (!opts) return $21a857f2c632f015$var$defaults;\n    if (opts.encoder !== null && typeof opts.encoder !== \"undefined\" && typeof opts.encoder !== \"function\") throw new TypeError(\"Encoder has to be a function.\");\n    var charset = opts.charset || $21a857f2c632f015$var$defaults.charset;\n    if (typeof opts.charset !== \"undefined\" && opts.charset !== \"utf-8\" && opts.charset !== \"iso-8859-1\") throw new TypeError(\"The charset option must be either utf-8, iso-8859-1, or undefined\");\n    var format = $e77cc7fa9fbe3dde$exports.default;\n    if (typeof opts.format !== \"undefined\") {\n        if (!$21a857f2c632f015$var$has.call($e77cc7fa9fbe3dde$exports.formatters, opts.format)) throw new TypeError(\"Unknown format option provided.\");\n        format = opts.format;\n    }\n    var formatter = $e77cc7fa9fbe3dde$exports.formatters[format];\n    var filter = $21a857f2c632f015$var$defaults.filter;\n    if (typeof opts.filter === \"function\" || $21a857f2c632f015$var$isArray(opts.filter)) filter = opts.filter;\n    return {\n        addQueryPrefix: typeof opts.addQueryPrefix === \"boolean\" ? opts.addQueryPrefix : $21a857f2c632f015$var$defaults.addQueryPrefix,\n        allowDots: typeof opts.allowDots === \"undefined\" ? $21a857f2c632f015$var$defaults.allowDots : !!opts.allowDots,\n        charset: charset,\n        charsetSentinel: typeof opts.charsetSentinel === \"boolean\" ? opts.charsetSentinel : $21a857f2c632f015$var$defaults.charsetSentinel,\n        delimiter: typeof opts.delimiter === \"undefined\" ? $21a857f2c632f015$var$defaults.delimiter : opts.delimiter,\n        encode: typeof opts.encode === \"boolean\" ? opts.encode : $21a857f2c632f015$var$defaults.encode,\n        encoder: typeof opts.encoder === \"function\" ? opts.encoder : $21a857f2c632f015$var$defaults.encoder,\n        encodeValuesOnly: typeof opts.encodeValuesOnly === \"boolean\" ? opts.encodeValuesOnly : $21a857f2c632f015$var$defaults.encodeValuesOnly,\n        filter: filter,\n        format: format,\n        formatter: formatter,\n        serializeDate: typeof opts.serializeDate === \"function\" ? opts.serializeDate : $21a857f2c632f015$var$defaults.serializeDate,\n        skipNulls: typeof opts.skipNulls === \"boolean\" ? opts.skipNulls : $21a857f2c632f015$var$defaults.skipNulls,\n        sort: typeof opts.sort === \"function\" ? opts.sort : null,\n        strictNullHandling: typeof opts.strictNullHandling === \"boolean\" ? opts.strictNullHandling : $21a857f2c632f015$var$defaults.strictNullHandling\n    };\n};\n$21a857f2c632f015$exports = function(object, opts) {\n    var obj = object;\n    var options = $21a857f2c632f015$var$normalizeStringifyOptions(opts);\n    var objKeys;\n    var filter;\n    if (typeof options.filter === \"function\") {\n        filter = options.filter;\n        obj = filter(\"\", obj);\n    } else if ($21a857f2c632f015$var$isArray(options.filter)) {\n        filter = options.filter;\n        objKeys = filter;\n    }\n    var keys = [];\n    if (typeof obj !== \"object\" || obj === null) return \"\";\n    var arrayFormat;\n    if (opts && opts.arrayFormat in $21a857f2c632f015$var$arrayPrefixGenerators) arrayFormat = opts.arrayFormat;\n    else if (opts && \"indices\" in opts) arrayFormat = opts.indices ? \"indices\" : \"repeat\";\n    else arrayFormat = \"indices\";\n    var generateArrayPrefix = $21a857f2c632f015$var$arrayPrefixGenerators[arrayFormat];\n    if (!objKeys) objKeys = Object.keys(obj);\n    if (options.sort) objKeys.sort(options.sort);\n    for(var i = 0; i < objKeys.length; ++i){\n        var key = objKeys[i];\n        if (options.skipNulls && obj[key] === null) continue;\n        $21a857f2c632f015$var$pushToArray(keys, $21a857f2c632f015$var$stringify(obj[key], key, generateArrayPrefix, options.strictNullHandling, options.skipNulls, options.encode ? options.encoder : null, options.filter, options.sort, options.allowDots, options.serializeDate, options.format, options.formatter, options.encodeValuesOnly, options.charset));\n    }\n    var joined = keys.join(options.delimiter);\n    var prefix = options.addQueryPrefix === true ? \"?\" : \"\";\n    if (options.charsetSentinel) {\n        if (options.charset === \"iso-8859-1\") // encodeURIComponent('&#10003;'), the \"numeric entity\" representation of a checkmark\n        prefix += \"utf8=%26%2310003%3B&\";\n        else // encodeURIComponent('✓')\n        prefix += \"utf8=%E2%9C%93&\";\n    }\n    return joined.length > 0 ? prefix + joined : \"\";\n};\n\n\nvar $85c239e60adf14b2$exports = {};\n\"use strict\";\n\nvar $85c239e60adf14b2$var$has = Object.prototype.hasOwnProperty;\nvar $85c239e60adf14b2$var$isArray = Array.isArray;\nvar $85c239e60adf14b2$var$defaults = {\n    allowDots: false,\n    allowPrototypes: false,\n    arrayLimit: 20,\n    charset: \"utf-8\",\n    charsetSentinel: false,\n    comma: false,\n    decoder: $c28806fde4f5d743$exports.decode,\n    delimiter: \"&\",\n    depth: 5,\n    ignoreQueryPrefix: false,\n    interpretNumericEntities: false,\n    parameterLimit: 1000,\n    parseArrays: true,\n    plainObjects: false,\n    strictNullHandling: false\n};\nvar $85c239e60adf14b2$var$interpretNumericEntities = function(str) {\n    return str.replace(/&#(\\d+);/g, function($0, numberStr) {\n        return String.fromCharCode(parseInt(numberStr, 10));\n    });\n};\nvar $85c239e60adf14b2$var$parseArrayValue = function(val, options) {\n    if (val && typeof val === \"string\" && options.comma && val.indexOf(\",\") > -1) return val.split(\",\");\n    return val;\n};\n// This is what browsers will submit when the ✓ character occurs in an\n// application/x-www-form-urlencoded body and the encoding of the page containing\n// the form is iso-8859-1, or when the submitted form has an accept-charset\n// attribute of iso-8859-1. Presumably also with other charsets that do not contain\n// the ✓ character, such as us-ascii.\nvar $85c239e60adf14b2$var$isoSentinel = \"utf8=%26%2310003%3B\"; // encodeURIComponent('&#10003;')\n// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.\nvar $85c239e60adf14b2$var$charsetSentinel = \"utf8=%E2%9C%93\"; // encodeURIComponent('✓')\nvar $85c239e60adf14b2$var$parseValues = function parseQueryStringValues(str, options) {\n    var obj = {};\n    var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, \"\") : str;\n    var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n    var parts = cleanStr.split(options.delimiter, limit);\n    var skipIndex = -1; // Keep track of where the utf8 sentinel was found\n    var i;\n    var charset = options.charset;\n    if (options.charsetSentinel) {\n        for(i = 0; i < parts.length; ++i)if (parts[i].indexOf(\"utf8=\") === 0) {\n            if (parts[i] === $85c239e60adf14b2$var$charsetSentinel) charset = \"utf-8\";\n            else if (parts[i] === $85c239e60adf14b2$var$isoSentinel) charset = \"iso-8859-1\";\n            skipIndex = i;\n            i = parts.length; // The eslint settings do not allow break;\n        }\n    }\n    for(i = 0; i < parts.length; ++i){\n        if (i === skipIndex) continue;\n        var part = parts[i];\n        var bracketEqualsPos = part.indexOf(\"]=\");\n        var pos = bracketEqualsPos === -1 ? part.indexOf(\"=\") : bracketEqualsPos + 1;\n        var key, val;\n        if (pos === -1) {\n            key = options.decoder(part, $85c239e60adf14b2$var$defaults.decoder, charset, \"key\");\n            val = options.strictNullHandling ? null : \"\";\n        } else {\n            key = options.decoder(part.slice(0, pos), $85c239e60adf14b2$var$defaults.decoder, charset, \"key\");\n            val = $c28806fde4f5d743$exports.maybeMap($85c239e60adf14b2$var$parseArrayValue(part.slice(pos + 1), options), function(encodedVal) {\n                return options.decoder(encodedVal, $85c239e60adf14b2$var$defaults.decoder, charset, \"value\");\n            });\n        }\n        if (val && options.interpretNumericEntities && charset === \"iso-8859-1\") val = $85c239e60adf14b2$var$interpretNumericEntities(val);\n        if (part.indexOf(\"[]=\") > -1) val = $85c239e60adf14b2$var$isArray(val) ? [\n            val\n        ] : val;\n        if ($85c239e60adf14b2$var$has.call(obj, key)) obj[key] = $c28806fde4f5d743$exports.combine(obj[key], val);\n        else obj[key] = val;\n    }\n    return obj;\n};\nvar $85c239e60adf14b2$var$parseObject = function(chain, val, options, valuesParsed) {\n    var leaf = valuesParsed ? val : $85c239e60adf14b2$var$parseArrayValue(val, options);\n    for(var i = chain.length - 1; i >= 0; --i){\n        var obj;\n        var root = chain[i];\n        if (root === \"[]\" && options.parseArrays) obj = [].concat(leaf);\n        else {\n            obj = options.plainObjects ? Object.create(null) : {};\n            var cleanRoot = root.charAt(0) === \"[\" && root.charAt(root.length - 1) === \"]\" ? root.slice(1, -1) : root;\n            var index = parseInt(cleanRoot, 10);\n            if (!options.parseArrays && cleanRoot === \"\") obj = {\n                0: leaf\n            };\n            else if (!isNaN(index) && root !== cleanRoot && String(index) === cleanRoot && index >= 0 && options.parseArrays && index <= options.arrayLimit) {\n                obj = [];\n                obj[index] = leaf;\n            } else if (cleanRoot !== \"__proto__\") obj[cleanRoot] = leaf;\n        }\n        leaf = obj;\n    }\n    return leaf;\n};\nvar $85c239e60adf14b2$var$parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {\n    if (!givenKey) return;\n    // Transform dot notation to bracket notation\n    var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, \"[$1]\") : givenKey;\n    // The regex chunks\n    var brackets = /(\\[[^[\\]]*])/;\n    var child = /(\\[[^[\\]]*])/g;\n    // Get the parent\n    var segment = options.depth > 0 && brackets.exec(key);\n    var parent = segment ? key.slice(0, segment.index) : key;\n    // Stash the parent if it exists\n    var keys = [];\n    if (parent) {\n        // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties\n        if (!options.plainObjects && $85c239e60adf14b2$var$has.call(Object.prototype, parent)) {\n            if (!options.allowPrototypes) return;\n        }\n        keys.push(parent);\n    }\n    // Loop through children appending to the array until we hit depth\n    var i = 0;\n    while(options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth){\n        i += 1;\n        if (!options.plainObjects && $85c239e60adf14b2$var$has.call(Object.prototype, segment[1].slice(1, -1))) {\n            if (!options.allowPrototypes) return;\n        }\n        keys.push(segment[1]);\n    }\n    // If there's a remainder, just add whatever is left\n    if (segment) keys.push(\"[\" + key.slice(segment.index) + \"]\");\n    return $85c239e60adf14b2$var$parseObject(keys, val, options, valuesParsed);\n};\nvar $85c239e60adf14b2$var$normalizeParseOptions = function normalizeParseOptions(opts) {\n    if (!opts) return $85c239e60adf14b2$var$defaults;\n    if (opts.decoder !== null && opts.decoder !== undefined && typeof opts.decoder !== \"function\") throw new TypeError(\"Decoder has to be a function.\");\n    if (typeof opts.charset !== \"undefined\" && opts.charset !== \"utf-8\" && opts.charset !== \"iso-8859-1\") throw new TypeError(\"The charset option must be either utf-8, iso-8859-1, or undefined\");\n    var charset = typeof opts.charset === \"undefined\" ? $85c239e60adf14b2$var$defaults.charset : opts.charset;\n    return {\n        allowDots: typeof opts.allowDots === \"undefined\" ? $85c239e60adf14b2$var$defaults.allowDots : !!opts.allowDots,\n        allowPrototypes: typeof opts.allowPrototypes === \"boolean\" ? opts.allowPrototypes : $85c239e60adf14b2$var$defaults.allowPrototypes,\n        arrayLimit: typeof opts.arrayLimit === \"number\" ? opts.arrayLimit : $85c239e60adf14b2$var$defaults.arrayLimit,\n        charset: charset,\n        charsetSentinel: typeof opts.charsetSentinel === \"boolean\" ? opts.charsetSentinel : $85c239e60adf14b2$var$defaults.charsetSentinel,\n        comma: typeof opts.comma === \"boolean\" ? opts.comma : $85c239e60adf14b2$var$defaults.comma,\n        decoder: typeof opts.decoder === \"function\" ? opts.decoder : $85c239e60adf14b2$var$defaults.decoder,\n        delimiter: typeof opts.delimiter === \"string\" || $c28806fde4f5d743$exports.isRegExp(opts.delimiter) ? opts.delimiter : $85c239e60adf14b2$var$defaults.delimiter,\n        // eslint-disable-next-line no-implicit-coercion, no-extra-parens\n        depth: typeof opts.depth === \"number\" || opts.depth === false ? +opts.depth : $85c239e60adf14b2$var$defaults.depth,\n        ignoreQueryPrefix: opts.ignoreQueryPrefix === true,\n        interpretNumericEntities: typeof opts.interpretNumericEntities === \"boolean\" ? opts.interpretNumericEntities : $85c239e60adf14b2$var$defaults.interpretNumericEntities,\n        parameterLimit: typeof opts.parameterLimit === \"number\" ? opts.parameterLimit : $85c239e60adf14b2$var$defaults.parameterLimit,\n        parseArrays: opts.parseArrays !== false,\n        plainObjects: typeof opts.plainObjects === \"boolean\" ? opts.plainObjects : $85c239e60adf14b2$var$defaults.plainObjects,\n        strictNullHandling: typeof opts.strictNullHandling === \"boolean\" ? opts.strictNullHandling : $85c239e60adf14b2$var$defaults.strictNullHandling\n    };\n};\n$85c239e60adf14b2$exports = function(str, opts) {\n    var options = $85c239e60adf14b2$var$normalizeParseOptions(opts);\n    if (str === \"\" || str === null || typeof str === \"undefined\") return options.plainObjects ? Object.create(null) : {};\n    var tempObj = typeof str === \"string\" ? $85c239e60adf14b2$var$parseValues(str, options) : str;\n    var obj = options.plainObjects ? Object.create(null) : {};\n    // Iterate over the keys and setup the new object\n    var keys = Object.keys(tempObj);\n    for(var i = 0; i < keys.length; ++i){\n        var key = keys[i];\n        var newObj = $85c239e60adf14b2$var$parseKeys(key, tempObj[key], options, typeof str === \"string\");\n        obj = $c28806fde4f5d743$exports.merge(obj, newObj, options);\n    }\n    return $c28806fde4f5d743$exports.compact(obj);\n};\n\n\n\n$eb6f7fc63f627fea$exports = {\n    formats: $e77cc7fa9fbe3dde$exports,\n    parse: $85c239e60adf14b2$exports,\n    stringify: $21a857f2c632f015$exports\n};\n\n\n// eslint-disable-next-line no-restricted-globals\n/**\n * Runs code on browser environments safely.\n */ function $ae549b2844b692c1$export$39f19eed34acd2f1(callback) {\n    var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n        fallback: function fallback() {\n            return undefined;\n        }\n    }, fallback = _ref.fallback;\n    // eslint-disable-next-line no-restricted-globals\n    if (typeof window === \"undefined\") return fallback();\n     // eslint-disable-next-line no-restricted-globals\n    return callback({\n        window: window\n    });\n}\n\n\nfunction $0df67baa85c927c4$var$_classCallCheck(instance, Constructor) {\n    if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction $0df67baa85c927c4$var$_defineProperties(target, props) {\n    for(var i = 0; i < props.length; i++){\n        var descriptor = props[i];\n        descriptor.enumerable = descriptor.enumerable || false;\n        descriptor.configurable = true;\n        if (\"value\" in descriptor) descriptor.writable = true;\n        Object.defineProperty(target, descriptor.key, descriptor);\n    }\n}\nfunction $0df67baa85c927c4$var$_createClass(Constructor, protoProps, staticProps) {\n    if (protoProps) $0df67baa85c927c4$var$_defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) $0df67baa85c927c4$var$_defineProperties(Constructor, staticProps);\n    return Constructor;\n}\nfunction $0df67baa85c927c4$var$_defineProperty(obj, key, value) {\n    if (key in obj) Object.defineProperty(obj, key, {\n        value: value,\n        enumerable: true,\n        configurable: true,\n        writable: true\n    });\n    else obj[key] = value;\n    return obj;\n}\nvar $0df67baa85c927c4$var$setWindowTitle = function setWindowTitle(title) {\n    if (title) // This function is only executed on browsers so we can disable this check.\n    // eslint-disable-next-line no-restricted-globals\n    window.document.title = title;\n};\nvar $0df67baa85c927c4$var$BrowserHistory = /*#__PURE__*/ function() {\n    /**\n   * Initializes a new storage provider that syncs the search state to the URL\n   * using web APIs (`window.location.pushState` and `onpopstate` event).\n   */ function BrowserHistory(_ref) {\n        var _this = this;\n        var windowTitle = _ref.windowTitle, _ref$writeDelay = _ref.writeDelay, writeDelay = _ref$writeDelay === void 0 ? 400 : _ref$writeDelay, createURL = _ref.createURL, parseURL = _ref.parseURL, getLocation = _ref.getLocation;\n        $0df67baa85c927c4$var$_classCallCheck(this, BrowserHistory);\n        $0df67baa85c927c4$var$_defineProperty(this, \"windowTitle\", void 0);\n        $0df67baa85c927c4$var$_defineProperty(this, \"writeDelay\", void 0);\n        $0df67baa85c927c4$var$_defineProperty(this, \"_createURL\", void 0);\n        $0df67baa85c927c4$var$_defineProperty(this, \"parseURL\", void 0);\n        $0df67baa85c927c4$var$_defineProperty(this, \"getLocation\", void 0);\n        $0df67baa85c927c4$var$_defineProperty(this, \"writeTimer\", void 0);\n        $0df67baa85c927c4$var$_defineProperty(this, \"inPopState\", false);\n        $0df67baa85c927c4$var$_defineProperty(this, \"isDisposed\", false);\n        $0df67baa85c927c4$var$_defineProperty(this, \"latestAcknowledgedHistory\", 0);\n        this.windowTitle = windowTitle;\n        this.writeTimer = undefined;\n        this.writeDelay = writeDelay;\n        this._createURL = createURL;\n        this.parseURL = parseURL;\n        this.getLocation = getLocation;\n        (0, $ae549b2844b692c1$export$39f19eed34acd2f1)(function(_ref2) {\n            var window1 = _ref2.window;\n            var title = _this.windowTitle && _this.windowTitle(_this.read());\n            $0df67baa85c927c4$var$setWindowTitle(title);\n            _this.latestAcknowledgedHistory = window1.history.length;\n        });\n    }\n    /**\n   * Reads the URL and returns a syncable UI search state.\n   */ $0df67baa85c927c4$var$_createClass(BrowserHistory, [\n        {\n            key: \"read\",\n            value: function read() {\n                return this.parseURL({\n                    qsModule: (0, (/*@__PURE__*/$parcel$interopDefault($eb6f7fc63f627fea$exports))),\n                    location: this.getLocation()\n                });\n            }\n        },\n        {\n            key: \"write\",\n            value: function write(routeState) {\n                var _this2 = this;\n                (0, $ae549b2844b692c1$export$39f19eed34acd2f1)(function(_ref3) {\n                    var window1 = _ref3.window;\n                    var url = _this2.createURL(routeState);\n                    var title = _this2.windowTitle && _this2.windowTitle(routeState);\n                    if (_this2.writeTimer) clearTimeout(_this2.writeTimer);\n                    _this2.writeTimer = setTimeout(function() {\n                        $0df67baa85c927c4$var$setWindowTitle(title);\n                        if (_this2.shouldWrite(url)) {\n                            window1.history.pushState(routeState, title || \"\", url);\n                            _this2.latestAcknowledgedHistory = window1.history.length;\n                        }\n                        _this2.inPopState = false;\n                        _this2.writeTimer = undefined;\n                    }, _this2.writeDelay);\n                });\n            }\n        },\n        {\n            key: \"onUpdate\",\n            value: function onUpdate(callback) {\n                var _this3 = this;\n                this._onPopState = function(event) {\n                    if (_this3.writeTimer) {\n                        clearTimeout(_this3.writeTimer);\n                        _this3.writeTimer = undefined;\n                    }\n                    _this3.inPopState = true;\n                    var routeState = event.state; // At initial load, the state is read from the URL without update.\n                    // Therefore the state object is not available.\n                    // In this case, we fallback and read the URL.\n                    if (!routeState) callback(_this3.read());\n                    else callback(routeState);\n                };\n                (0, $ae549b2844b692c1$export$39f19eed34acd2f1)(function(_ref4) {\n                    var window1 = _ref4.window;\n                    window1.addEventListener(\"popstate\", _this3._onPopState);\n                });\n            }\n        },\n        {\n            key: \"createURL\",\n            value: function createURL(routeState) {\n                return this._createURL({\n                    qsModule: (0, (/*@__PURE__*/$parcel$interopDefault($eb6f7fc63f627fea$exports))),\n                    routeState: routeState,\n                    location: this.getLocation()\n                });\n            }\n        },\n        {\n            key: \"dispose\",\n            value: function dispose() {\n                var _this4 = this;\n                this.isDisposed = true;\n                (0, $ae549b2844b692c1$export$39f19eed34acd2f1)(function(_ref5) {\n                    var window1 = _ref5.window;\n                    if (_this4._onPopState) window1.removeEventListener(\"popstate\", _this4._onPopState);\n                });\n                if (this.writeTimer) clearTimeout(this.writeTimer);\n                this.write({});\n            }\n        },\n        {\n            key: \"shouldWrite\",\n            value: function shouldWrite(url) {\n                var _this5 = this;\n                return (0, $ae549b2844b692c1$export$39f19eed34acd2f1)(function(_ref6) {\n                    var window1 = _ref6.window;\n                    // We do want to `pushState` if:\n                    // - the router is not disposed, IS.js needs to update the URL\n                    // OR\n                    // - the last write was from InstantSearch.js\n                    // (unlike a SPA, where it would have last written)\n                    var lastPushWasByISAfterDispose = !(_this5.isDisposed && _this5.latestAcknowledgedHistory !== window1.history.length);\n                    return(// but that should not write the URL.\n                    !_this5.inPopState && // When the previous pushState after dispose was by IS.js, we want to write the URL.\n                    lastPushWasByISAfterDispose && // When the URL is the same as the current one, we do not want to write it.\n                    url !== window1.location.href);\n                });\n            }\n        }\n    ]);\n    return BrowserHistory;\n}();\nfunction $0df67baa85c927c4$export$2e2bcd8739ae039() {\n    var _ref7 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, _ref7$createURL = _ref7.createURL, createURL = _ref7$createURL === void 0 ? function(_ref8) {\n        var qsModule = _ref8.qsModule, routeState = _ref8.routeState, location = _ref8.location;\n        var protocol = location.protocol, hostname = location.hostname, _location$port = location.port, port = _location$port === void 0 ? \"\" : _location$port, pathname = location.pathname, hash = location.hash;\n        var queryString = qsModule.stringify(routeState);\n        var portWithPrefix = port === \"\" ? \"\" : \":\".concat(port); // IE <= 11 has no proper `location.origin` so we cannot rely on it.\n        // IE <= 11 has no proper `location.origin` so we cannot rely on it.\n        if (!queryString) return \"\".concat(protocol, \"//\").concat(hostname).concat(portWithPrefix).concat(pathname).concat(hash);\n        return \"\".concat(protocol, \"//\").concat(hostname).concat(portWithPrefix).concat(pathname, \"?\").concat(queryString).concat(hash);\n    } : _ref7$createURL, _ref7$parseURL = _ref7.parseURL, parseURL = _ref7$parseURL === void 0 ? function(_ref9) {\n        var qsModule = _ref9.qsModule, location = _ref9.location;\n        // `qs` by default converts arrays with more than 20 items to an object.\n        // We want to avoid this because the data structure manipulated can therefore vary.\n        // Setting the limit to `100` seems a good number because the engine's default is 100\n        // (it can go up to 1000 but it is very unlikely to select more than 100 items in the UI).\n        //\n        // Using an `arrayLimit` of `n` allows `n + 1` items.\n        //\n        // See:\n        //   - https://github.com/ljharb/qs#parsing-arrays\n        //   - https://www.algolia.com/doc/api-reference/api-parameters/maxValuesPerFacet/\n        return qsModule.parse(location.search.slice(1), {\n            arrayLimit: 99\n        });\n    } : _ref7$parseURL, _ref7$writeDelay = _ref7.writeDelay, writeDelay = _ref7$writeDelay === void 0 ? 400 : _ref7$writeDelay, windowTitle = _ref7.windowTitle, _ref7$getLocation = _ref7.getLocation, getLocation = _ref7$getLocation === void 0 ? function() {\n        return (0, $ae549b2844b692c1$export$39f19eed34acd2f1)(function(_ref10) {\n            var window1 = _ref10.window;\n            return window1.location;\n        }, {\n            fallback: function fallback() {\n                throw new Error(\"You need to provide `getLocation` to the `history` router in environments where `window` does not exist.\");\n            }\n        });\n    } : _ref7$getLocation;\n    return new $0df67baa85c927c4$var$BrowserHistory({\n        createURL: createURL,\n        parseURL: parseURL,\n        writeDelay: writeDelay,\n        windowTitle: windowTitle,\n        getLocation: getLocation\n    });\n}\n\n\n\nfunction $cdb20223dbd2984c$var$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 $cdb20223dbd2984c$var$_objectSpread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        if (i % 2) $cdb20223dbd2984c$var$ownKeys(Object(source), true).forEach(function(key) {\n            $cdb20223dbd2984c$var$_defineProperty(target, key, source[key]);\n        });\n        else if (Object.getOwnPropertyDescriptors) Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n        else $cdb20223dbd2984c$var$ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nfunction $cdb20223dbd2984c$var$_defineProperty(obj, key, value) {\n    if (key in obj) Object.defineProperty(obj, key, {\n        value: value,\n        enumerable: true,\n        configurable: true,\n        writable: true\n    });\n    else obj[key] = value;\n    return obj;\n}\nvar $cdb20223dbd2984c$export$1fe5128387816284 = function createRouterMiddleware() {\n    var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    var _props$router = props.router, router = _props$router === void 0 ? (0, $0df67baa85c927c4$export$2e2bcd8739ae039)() : _props$router, _props$stateMapping = props.stateMapping, stateMapping = _props$stateMapping === void 0 ? (0, $8bf1b0cf99a6caf0$export$2e2bcd8739ae039)() : _props$stateMapping;\n    return function(_ref) {\n        var instantSearchInstance = _ref.instantSearchInstance;\n        function topLevelCreateURL(nextState) {\n            var uiState = Object.keys(nextState).reduce(function(acc, indexId) {\n                return $cdb20223dbd2984c$var$_objectSpread($cdb20223dbd2984c$var$_objectSpread({}, acc), {}, $cdb20223dbd2984c$var$_defineProperty({}, indexId, nextState[indexId]));\n            }, instantSearchInstance.mainIndex.getWidgetUiState({}));\n            var route = stateMapping.stateToRoute(uiState);\n            return router.createURL(route);\n        } // casting to UiState here to keep createURL unaware of custom UiState\n        // (as long as it's an object, it's ok)\n        instantSearchInstance._createURL = topLevelCreateURL;\n        var lastRouteState = undefined;\n        var initialUiState = instantSearchInstance._initialUiState;\n        return {\n            onStateChange: function onStateChange(_ref2) {\n                var uiState = _ref2.uiState;\n                var routeState = stateMapping.stateToRoute(uiState);\n                if (lastRouteState === undefined || !(0, $4198f5cd959b5a7d$export$248d38f6296296c5)(lastRouteState, routeState)) {\n                    router.write(routeState);\n                    lastRouteState = routeState;\n                }\n            },\n            subscribe: function subscribe() {\n                instantSearchInstance._initialUiState = $cdb20223dbd2984c$var$_objectSpread($cdb20223dbd2984c$var$_objectSpread({}, initialUiState), stateMapping.routeToState(router.read()));\n                router.onUpdate(function(route) {\n                    instantSearchInstance.setUiState(stateMapping.routeToState(route));\n                });\n            },\n            started: function started() {},\n            unsubscribe: function unsubscribe() {\n                router.dispose();\n            }\n        };\n    };\n};\n\n\n\nfunction $de3e1eace8c55644$var$extractPayload(widgets, instantSearchInstance, payload) {\n    var parent = instantSearchInstance.mainIndex;\n    var initOptions = {\n        instantSearchInstance: instantSearchInstance,\n        parent: parent,\n        scopedResults: [],\n        state: parent.getHelper().state,\n        helper: parent.getHelper(),\n        createURL: parent.createURL,\n        uiState: instantSearchInstance._initialUiState,\n        renderState: instantSearchInstance.renderState,\n        templatesConfig: instantSearchInstance.templatesConfig,\n        searchMetadata: {\n            isSearchStalled: instantSearchInstance._isSearchStalled\n        }\n    };\n    widgets.forEach(function(widget) {\n        var widgetParams = {};\n        if (widget.getWidgetRenderState) {\n            var renderState = widget.getWidgetRenderState(initOptions);\n            if (renderState && renderState.widgetParams) // casting, as we just earlier checked widgetParams exists, and thus an object\n            widgetParams = renderState.widgetParams;\n        } // since we destructure in all widgets, the parameters with defaults are set to \"undefined\"\n        var params = Object.keys(widgetParams).filter(function(key) {\n            return widgetParams[key] !== undefined;\n        });\n        payload.widgets.push({\n            type: widget.$$type,\n            widgetType: widget.$$widgetType,\n            params: params\n        });\n        if (widget.$$type === \"ais.index\") $de3e1eace8c55644$var$extractPayload(widget.getWidgets(), instantSearchInstance, payload);\n    });\n}\nfunction $de3e1eace8c55644$export$4b4254890acf93e7() {\n    return (0, $ae549b2844b692c1$export$39f19eed34acd2f1)(function(_ref) {\n        var _window$navigator, _window$navigator$use;\n        var window = _ref.window;\n        return ((_window$navigator = window.navigator) === null || _window$navigator === void 0 ? void 0 : (_window$navigator$use = _window$navigator.userAgent) === null || _window$navigator$use === void 0 ? void 0 : _window$navigator$use.indexOf(\"Algolia Crawler\")) > -1;\n    }, {\n        fallback: function fallback() {\n            return false;\n        }\n    });\n}\nfunction $de3e1eace8c55644$export$8ee9d2447935ed96() {\n    return function(_ref2) {\n        var instantSearchInstance = _ref2.instantSearchInstance;\n        var payload = {\n            widgets: []\n        };\n        var payloadContainer = document.createElement(\"meta\");\n        var refNode = document.querySelector(\"head\");\n        payloadContainer.name = \"instantsearch:widgets\";\n        return {\n            onStateChange: function onStateChange() {},\n            subscribe: function subscribe() {\n                // using setTimeout here to delay extraction until widgets have been added in a tick (e.g. Vue)\n                setTimeout(function() {\n                    var client = instantSearchInstance.client;\n                    payload.ua = client.transporter && client.transporter.userAgent ? client.transporter.userAgent.value : client._ua;\n                    $de3e1eace8c55644$var$extractPayload(instantSearchInstance.mainIndex.getWidgets(), instantSearchInstance, payload);\n                    payloadContainer.content = JSON.stringify(payload);\n                    refNode.appendChild(payloadContainer);\n                }, 0);\n            },\n            started: function started() {},\n            unsubscribe: function unsubscribe() {\n                payloadContainer.remove();\n            }\n        };\n    };\n}\n\n\nfunction $43df3178656874f3$var$_typeof(obj) {\n    \"@babel/helpers - typeof\";\n    if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") $43df3178656874f3$var$_typeof = function _typeof(obj) {\n        return typeof obj;\n    };\n    else $43df3178656874f3$var$_typeof = function _typeof(obj) {\n        return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n    };\n    return $43df3178656874f3$var$_typeof(obj);\n}\nfunction $43df3178656874f3$var$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 $43df3178656874f3$var$_objectSpread(target) {\n    for(var i = 1; i < arguments.length; i++){\n        var source = arguments[i] != null ? arguments[i] : {};\n        if (i % 2) $43df3178656874f3$var$ownKeys(Object(source), true).forEach(function(key) {\n            $43df3178656874f3$var$_defineProperty(target, key, source[key]);\n        });\n        else if (Object.getOwnPropertyDescriptors) Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));\n        else $43df3178656874f3$var$ownKeys(Object(source)).forEach(function(key) {\n            Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n        });\n    }\n    return target;\n}\nfunction $43df3178656874f3$var$_classCallCheck(instance, Constructor) {\n    if (!(instance instanceof Constructor)) throw new TypeError(\"Cannot call a class as a function\");\n}\nfunction $43df3178656874f3$var$_defineProperties(target, props) {\n    for(var i = 0; i < props.length; i++){\n        var descriptor = props[i];\n        descriptor.enumerable = descriptor.enumerable || false;\n        descriptor.configurable = true;\n        if (\"value\" in descriptor) descriptor.writable = true;\n        Object.defineProperty(target, descriptor.key, descriptor);\n    }\n}\nfunction $43df3178656874f3$var$_createClass(Constructor, protoProps, staticProps) {\n    if (protoProps) $43df3178656874f3$var$_defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) $43df3178656874f3$var$_defineProperties(Constructor, staticProps);\n    return Constructor;\n}\nfunction $43df3178656874f3$var$_inherits(subClass, superClass) {\n    if (typeof superClass !== \"function\" && superClass !== null) throw new TypeError(\"Super expression must either be null or a function\");\n    subClass.prototype = Object.create(superClass && superClass.prototype, {\n        constructor: {\n            value: subClass,\n            writable: true,\n            configurable: true\n        }\n    });\n    if (superClass) $43df3178656874f3$var$_setPrototypeOf(subClass, superClass);\n}\nfunction $43df3178656874f3$var$_setPrototypeOf(o, p) {\n    $43df3178656874f3$var$_setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n        o.__proto__ = p;\n        return o;\n    };\n    return $43df3178656874f3$var$_setPrototypeOf(o, p);\n}\nfunction $43df3178656874f3$var$_createSuper(Derived) {\n    var hasNativeReflectConstruct = $43df3178656874f3$var$_isNativeReflectConstruct();\n    return function _createSuperInternal() {\n        var Super = $43df3178656874f3$var$_getPrototypeOf(Derived), result;\n        if (hasNativeReflectConstruct) {\n            var NewTarget = $43df3178656874f3$var$_getPrototypeOf(this).constructor;\n            result = Reflect.construct(Super, arguments, NewTarget);\n        } else result = Super.apply(this, arguments);\n        return $43df3178656874f3$var$_possibleConstructorReturn(this, result);\n    };\n}\nfunction $43df3178656874f3$var$_possibleConstructorReturn(self, call) {\n    if (call && ($43df3178656874f3$var$_typeof(call) === \"object\" || typeof call === \"function\")) return call;\n    return $43df3178656874f3$var$_assertThisInitialized(self);\n}\nfunction $43df3178656874f3$var$_assertThisInitialized(self) {\n    if (self === void 0) throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n    return self;\n}\nfunction $43df3178656874f3$var$_isNativeReflectConstruct() {\n    if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n    if (Reflect.construct.sham) return false;\n    if (typeof Proxy === \"function\") return true;\n    try {\n        Date.prototype.toString.call(Reflect.construct(Date, [], function() {}));\n        return true;\n    } catch (e) {\n        return false;\n    }\n}\nfunction $43df3178656874f3$var$_getPrototypeOf(o) {\n    $43df3178656874f3$var$_getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n        return o.__proto__ || Object.getPrototypeOf(o);\n    };\n    return $43df3178656874f3$var$_getPrototypeOf(o);\n}\nfunction $43df3178656874f3$var$_defineProperty(obj, key, value) {\n    if (key in obj) Object.defineProperty(obj, key, {\n        value: value,\n        enumerable: true,\n        configurable: true,\n        writable: true\n    });\n    else obj[key] = value;\n    return obj;\n}\nvar $43df3178656874f3$var$withUsage = (0, $049fad80b24500a5$export$2fde5bffc340821e)({\n    name: \"instantsearch\"\n});\nfunction $43df3178656874f3$var$defaultCreateURL() {\n    return \"#\";\n} // this purposely breaks typescript's type inference to ensure it's not used\n// as it's used for a default parameter for example\n// source: https://github.com/Microsoft/TypeScript/issues/14829#issuecomment-504042546\n/**\n * The actual implementation of the InstantSearch. This is\n * created using the `instantsearch` factory function.\n * It emits the 'render' event every time a search is done\n */ var $43df3178656874f3$var$InstantSearch = /*#__PURE__*/ function(_EventEmitter) {\n    $43df3178656874f3$var$_inherits(InstantSearch, _EventEmitter);\n    var _super = $43df3178656874f3$var$_createSuper(InstantSearch);\n    function InstantSearch(options) {\n        var _this;\n        $43df3178656874f3$var$_classCallCheck(this, InstantSearch);\n        _this = _super.call(this);\n        $43df3178656874f3$var$_defineProperty($43df3178656874f3$var$_assertThisInitialized(_this), \"client\", void 0);\n        $43df3178656874f3$var$_defineProperty($43df3178656874f3$var$_assertThisInitialized(_this), \"indexName\", void 0);\n        $43df3178656874f3$var$_defineProperty($43df3178656874f3$var$_assertThisInitialized(_this), \"insightsClient\", void 0);\n        $43df3178656874f3$var$_defineProperty($43df3178656874f3$var$_assertThisInitialized(_this), \"onStateChange\", null);\n        $43df3178656874f3$var$_defineProperty($43df3178656874f3$var$_assertThisInitialized(_this), \"helper\", void 0);\n        $43df3178656874f3$var$_defineProperty($43df3178656874f3$var$_assertThisInitialized(_this), \"mainHelper\", void 0);\n        $43df3178656874f3$var$_defineProperty($43df3178656874f3$var$_assertThisInitialized(_this), \"mainIndex\", void 0);\n        $43df3178656874f3$var$_defineProperty($43df3178656874f3$var$_assertThisInitialized(_this), \"started\", void 0);\n        $43df3178656874f3$var$_defineProperty($43df3178656874f3$var$_assertThisInitialized(_this), \"templatesConfig\", void 0);\n        $43df3178656874f3$var$_defineProperty($43df3178656874f3$var$_assertThisInitialized(_this), \"renderState\", {});\n        $43df3178656874f3$var$_defineProperty($43df3178656874f3$var$_assertThisInitialized(_this), \"_stalledSearchDelay\", void 0);\n        $43df3178656874f3$var$_defineProperty($43df3178656874f3$var$_assertThisInitialized(_this), \"_searchStalledTimer\", void 0);\n        $43df3178656874f3$var$_defineProperty($43df3178656874f3$var$_assertThisInitialized(_this), \"_isSearchStalled\", void 0);\n        $43df3178656874f3$var$_defineProperty($43df3178656874f3$var$_assertThisInitialized(_this), \"_initialUiState\", void 0);\n        $43df3178656874f3$var$_defineProperty($43df3178656874f3$var$_assertThisInitialized(_this), \"_initialResults\", void 0);\n        $43df3178656874f3$var$_defineProperty($43df3178656874f3$var$_assertThisInitialized(_this), \"_createURL\", void 0);\n        $43df3178656874f3$var$_defineProperty($43df3178656874f3$var$_assertThisInitialized(_this), \"_searchFunction\", void 0);\n        $43df3178656874f3$var$_defineProperty($43df3178656874f3$var$_assertThisInitialized(_this), \"_mainHelperSearch\", void 0);\n        $43df3178656874f3$var$_defineProperty($43df3178656874f3$var$_assertThisInitialized(_this), \"middleware\", []);\n        $43df3178656874f3$var$_defineProperty($43df3178656874f3$var$_assertThisInitialized(_this), \"sendEventToInsights\", void 0);\n        $43df3178656874f3$var$_defineProperty($43df3178656874f3$var$_assertThisInitialized(_this), \"scheduleSearch\", (0, $8830dcf7f3e53e85$export$260e5c0943f31606)(function() {\n            if (_this.started) _this.mainHelper.search();\n        }));\n        $43df3178656874f3$var$_defineProperty($43df3178656874f3$var$_assertThisInitialized(_this), \"scheduleRender\", (0, $8830dcf7f3e53e85$export$260e5c0943f31606)(function() {\n            if (!_this.mainHelper.hasPendingRequests()) {\n                clearTimeout(_this._searchStalledTimer);\n                _this._searchStalledTimer = null;\n                _this._isSearchStalled = false;\n            }\n            _this.mainIndex.render({\n                instantSearchInstance: $43df3178656874f3$var$_assertThisInitialized(_this)\n            });\n            _this.emit(\"render\");\n        }));\n        $43df3178656874f3$var$_defineProperty($43df3178656874f3$var$_assertThisInitialized(_this), \"onInternalStateChange\", (0, $8830dcf7f3e53e85$export$260e5c0943f31606)(function() {\n            var nextUiState = _this.mainIndex.getWidgetUiState({});\n            _this.middleware.forEach(function(_ref) {\n                var instance = _ref.instance;\n                instance.onStateChange({\n                    uiState: nextUiState\n                });\n            });\n        }));\n        var _options$indexName = options.indexName, indexName = _options$indexName === void 0 ? null : _options$indexName, numberLocale = options.numberLocale, _options$initialUiSta = options.initialUiState, initialUiState = _options$initialUiSta === void 0 ? {} : _options$initialUiSta, _options$routing = options.routing, routing = _options$routing === void 0 ? null : _options$routing, searchFunction = options.searchFunction, _options$stalledSearc = options.stalledSearchDelay, stalledSearchDelay = _options$stalledSearc === void 0 ? 200 : _options$stalledSearc, _options$searchClient = options.searchClient, searchClient = _options$searchClient === void 0 ? null : _options$searchClient, _options$insightsClie = options.insightsClient, insightsClient = _options$insightsClie === void 0 ? null : _options$insightsClie, _options$onStateChang = options.onStateChange, onStateChange = _options$onStateChang === void 0 ? null : _options$onStateChang;\n        if (indexName === null) throw new Error($43df3178656874f3$var$withUsage(\"The `indexName` option is required.\"));\n        if (searchClient === null) throw new Error($43df3178656874f3$var$withUsage(\"The `searchClient` option is required.\"));\n        if (typeof searchClient.search !== \"function\") throw new Error(\"The `searchClient` must implement a `search` method.\\n\\nSee: https://www.algolia.com/doc/guides/building-search-ui/going-further/backend-search/in-depth/backend-instantsearch/js/\");\n        if (typeof searchClient.addAlgoliaAgent === \"function\") searchClient.addAlgoliaAgent(\"instantsearch.js (\".concat((0, $9bacbeef4c25f81e$export$2e2bcd8739ae039), \")\"));\n        if (insightsClient && typeof insightsClient !== \"function\") throw new Error($43df3178656874f3$var$withUsage(\"The `insightsClient` option should be a function.\"));\n        _this.client = searchClient;\n        _this.insightsClient = insightsClient;\n        _this.indexName = indexName;\n        _this.helper = null;\n        _this.mainHelper = null;\n        _this.mainIndex = (0, $bbcafcaaf02907c9$export$2e2bcd8739ae039)({\n            indexName: indexName\n        });\n        _this.onStateChange = onStateChange;\n        _this.started = false;\n        _this.templatesConfig = {\n            helpers: (0, $1895b248d7928836$export$2e2bcd8739ae039)({\n                numberLocale: numberLocale\n            }),\n            compileOptions: {}\n        };\n        _this._stalledSearchDelay = stalledSearchDelay;\n        _this._searchStalledTimer = null;\n        _this._isSearchStalled = false;\n        _this._createURL = $43df3178656874f3$var$defaultCreateURL;\n        _this._initialUiState = initialUiState;\n        _this._initialResults = null;\n        if (searchFunction) _this._searchFunction = searchFunction;\n        _this.sendEventToInsights = (0, $dba781b2f4cd6c52$export$8793edee2d425525);\n        if (routing) {\n            var routerOptions = typeof routing === \"boolean\" ? undefined : routing;\n            _this.use((0, $cdb20223dbd2984c$export$1fe5128387816284)(routerOptions));\n        }\n        if ((0, $de3e1eace8c55644$export$4b4254890acf93e7)()) _this.use((0, $de3e1eace8c55644$export$8ee9d2447935ed96)());\n        return _this;\n    }\n    /**\n   * Hooks a middleware into the InstantSearch lifecycle.\n   */ $43df3178656874f3$var$_createClass(InstantSearch, [\n        {\n            key: \"use\",\n            value: function use() {\n                var _this2 = this;\n                for(var _len = arguments.length, middleware = new Array(_len), _key = 0; _key < _len; _key++)middleware[_key] = arguments[_key];\n                var newMiddlewareList = middleware.map(function(fn) {\n                    var newMiddleware = $43df3178656874f3$var$_objectSpread({\n                        subscribe: (0, $dba781b2f4cd6c52$export$8793edee2d425525),\n                        started: (0, $dba781b2f4cd6c52$export$8793edee2d425525),\n                        unsubscribe: (0, $dba781b2f4cd6c52$export$8793edee2d425525),\n                        onStateChange: (0, $dba781b2f4cd6c52$export$8793edee2d425525)\n                    }, fn({\n                        instantSearchInstance: _this2\n                    }));\n                    _this2.middleware.push({\n                        creator: fn,\n                        instance: newMiddleware\n                    });\n                    return newMiddleware;\n                }); // If the instance has already started, we directly subscribe the\n                // middleware so they're notified of changes.\n                if (this.started) newMiddlewareList.forEach(function(m) {\n                    m.subscribe();\n                    m.started();\n                });\n                return this;\n            }\n        },\n        {\n            key: \"unuse\",\n            value: function unuse() {\n                for(var _len2 = arguments.length, middlewareToUnuse = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++)middlewareToUnuse[_key2] = arguments[_key2];\n                this.middleware.filter(function(m) {\n                    return middlewareToUnuse.includes(m.creator);\n                }).forEach(function(m) {\n                    return m.instance.unsubscribe();\n                });\n                this.middleware = this.middleware.filter(function(m) {\n                    return !middlewareToUnuse.includes(m.creator);\n                });\n                return this;\n            } // @major we shipped with EXPERIMENTAL_use, but have changed that to just `use` now\n        },\n        {\n            key: \"EXPERIMENTAL_use\",\n            value: function EXPERIMENTAL_use() {\n                return this.use.apply(this, arguments);\n            }\n        },\n        {\n            key: \"addWidget\",\n            value: function addWidget(widget) {\n                return this.addWidgets([\n                    widget\n                ]);\n            }\n        },\n        {\n            key: \"addWidgets\",\n            value: function addWidgets(widgets) {\n                if (!Array.isArray(widgets)) throw new Error($43df3178656874f3$var$withUsage(\"The `addWidgets` method expects an array of widgets. Please use `addWidget`.\"));\n                if (widgets.some(function(widget) {\n                    return typeof widget.init !== \"function\" && typeof widget.render !== \"function\";\n                })) throw new Error($43df3178656874f3$var$withUsage(\"The widget definition expects a `render` and/or an `init` method.\"));\n                this.mainIndex.addWidgets(widgets);\n                return this;\n            }\n        },\n        {\n            key: \"removeWidget\",\n            value: function removeWidget(widget) {\n                return this.removeWidgets([\n                    widget\n                ]);\n            }\n        },\n        {\n            key: \"removeWidgets\",\n            value: function removeWidgets(widgets) {\n                if (!Array.isArray(widgets)) throw new Error($43df3178656874f3$var$withUsage(\"The `removeWidgets` method expects an array of widgets. Please use `removeWidget`.\"));\n                if (widgets.some(function(widget) {\n                    return typeof widget.dispose !== \"function\";\n                })) throw new Error($43df3178656874f3$var$withUsage(\"The widget definition expects a `dispose` method.\"));\n                this.mainIndex.removeWidgets(widgets);\n                return this;\n            }\n        },\n        {\n            key: \"start\",\n            value: function start() {\n                var _this3 = this;\n                if (this.started) throw new Error($43df3178656874f3$var$withUsage(\"The `start` method has already been called once.\"));\n                 // This Helper is used for the queries, we don't care about its state. The\n                // states are managed at the `index` level. We use this Helper to create\n                // DerivedHelper scoped into the `index` widgets.\n                // In Vue InstantSearch' hydrate, a main helper gets set before start, so\n                // we need to respect this helper as a way to keep all listeners correct.\n                var mainHelper = this.mainHelper || (0, (/*@__PURE__*/$parcel$interopDefault($6c359160e6887998$exports)))(this.client, this.indexName);\n                mainHelper.search = function() {\n                    // This solution allows us to keep the exact same API for the users but\n                    // under the hood, we have a different implementation. It should be\n                    // completely transparent for the rest of the codebase. Only this module\n                    // is impacted.\n                    return mainHelper.searchOnlyWithDerivedHelpers();\n                };\n                if (this._searchFunction) {\n                    // this client isn't used to actually search, but required for the helper\n                    // to not throw errors\n                    var fakeClient = {\n                        search: function search() {\n                            return new Promise((0, $dba781b2f4cd6c52$export$8793edee2d425525));\n                        }\n                    };\n                    this._mainHelperSearch = mainHelper.search.bind(mainHelper);\n                    mainHelper.search = function() {\n                        var mainIndexHelper = _this3.mainIndex.getHelper();\n                        var searchFunctionHelper = (0, (/*@__PURE__*/$parcel$interopDefault($6c359160e6887998$exports)))(fakeClient, mainIndexHelper.state.index, mainIndexHelper.state);\n                        searchFunctionHelper.once(\"search\", function(_ref2) {\n                            var state = _ref2.state;\n                            mainIndexHelper.overrideStateWithoutTriggeringChangeEvent(state);\n                            _this3._mainHelperSearch();\n                        }); // Forward state changes from `searchFunctionHelper` to `mainIndexHelper`\n                        searchFunctionHelper.on(\"change\", function(_ref3) {\n                            var state = _ref3.state;\n                            mainIndexHelper.setState(state);\n                        });\n                        _this3._searchFunction(searchFunctionHelper);\n                        return mainHelper;\n                    };\n                } // Only the \"main\" Helper emits the `error` event vs the one for `search`\n                // and `results` that are also emitted on the derived one.\n                mainHelper.on(\"error\", function(_ref4) {\n                    var error = _ref4.error;\n                    if (!(error instanceof Error)) {\n                        // typescript lies here, error is in some cases { name: string, message: string }\n                        var err = error;\n                        error = Object.keys(err).reduce(function(acc, key) {\n                            acc[key] = err[key];\n                            return acc;\n                        }, new Error(err.message));\n                    } // If an error is emitted, it is re-thrown by events. In previous versions\n                    // we emitted {error}, which is thrown as:\n                    // \"Uncaught, unspecified \\\"error\\\" event. ([object Object])\"\n                    // To avoid breaking changes, we make the error available in both\n                    // `error` and `error.error`\n                    // @MAJOR emit only error\n                    error.error = error;\n                    _this3.emit(\"error\", error);\n                });\n                this.mainHelper = mainHelper;\n                this.middleware.forEach(function(_ref5) {\n                    var instance = _ref5.instance;\n                    instance.subscribe();\n                });\n                this.mainIndex.init({\n                    instantSearchInstance: this,\n                    parent: null,\n                    uiState: this._initialUiState\n                });\n                if (this._initialResults) {\n                    var originalScheduleSearch = this.scheduleSearch; // We don't schedule a first search when initial results are provided\n                    // because we already have the results to render. This skips the initial\n                    // network request on the browser on `start`.\n                    this.scheduleSearch = (0, $8830dcf7f3e53e85$export$260e5c0943f31606)((0, $dba781b2f4cd6c52$export$8793edee2d425525)); // We also skip the initial network request when widgets are dynamically\n                    // added in the first tick (that's the case in all the framework-based flavors).\n                    // When we add a widget to `index`, it calls `scheduleSearch`. We can rely\n                    // on our `defer` util to restore the original `scheduleSearch` value once\n                    // widgets are added to hook back to the regular lifecycle.\n                    (0, $8830dcf7f3e53e85$export$260e5c0943f31606)(function() {\n                        _this3.scheduleSearch = originalScheduleSearch;\n                    })();\n                } else if (this.mainIndex.getWidgets().length > 0) this.scheduleSearch();\n                 // Keep the previous reference for legacy purpose, some pattern use\n                // the direct Helper access `search.helper` (e.g multi-index).\n                this.helper = this.mainIndex.getHelper(); // track we started the search if we add more widgets,\n                // to init them directly after add\n                this.started = true;\n                this.middleware.forEach(function(_ref6) {\n                    var instance = _ref6.instance;\n                    instance.started();\n                });\n            }\n        },\n        {\n            key: \"dispose\",\n            value: function dispose() {\n                this.scheduleSearch.cancel();\n                this.scheduleRender.cancel();\n                clearTimeout(this._searchStalledTimer);\n                this.removeWidgets(this.mainIndex.getWidgets());\n                this.mainIndex.dispose(); // You can not start an instance two times, therefore a disposed instance\n                // needs to set started as false otherwise this can not be restarted at a\n                // later point.\n                this.started = false; // The helper needs to be reset to perform the next search from a fresh state.\n                // If not reset, it would use the state stored before calling `dispose()`.\n                this.removeAllListeners();\n                this.mainHelper.removeAllListeners();\n                this.mainHelper = null;\n                this.helper = null;\n                this.middleware.forEach(function(_ref7) {\n                    var instance = _ref7.instance;\n                    instance.unsubscribe();\n                });\n            }\n        },\n        {\n            key: \"scheduleStalledRender\",\n            value: function scheduleStalledRender() {\n                var _this4 = this;\n                if (!this._searchStalledTimer) this._searchStalledTimer = setTimeout(function() {\n                    _this4._isSearchStalled = true;\n                    _this4.scheduleRender();\n                }, this._stalledSearchDelay);\n            }\n        },\n        {\n            key: \"setUiState\",\n            value: function setUiState(uiState) {\n                var _this5 = this;\n                var callOnStateChange = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n                if (!this.mainHelper) throw new Error($43df3178656874f3$var$withUsage(\"The `start` method needs to be called before `setUiState`.\"));\n                 // We refresh the index UI state to update the local UI state that the\n                // main index passes to the function form of `setUiState`.\n                this.mainIndex.refreshUiState();\n                var nextUiState = typeof uiState === \"function\" ? uiState(this.mainIndex.getWidgetUiState({})) : uiState;\n                if (this.onStateChange && callOnStateChange) this.onStateChange({\n                    uiState: nextUiState,\n                    setUiState: function setUiState(finalUiState) {\n                        (0, $e00cc39de32ae775$export$fd5e8f1329b3d5e0)(typeof finalUiState === \"function\" ? finalUiState(nextUiState) : finalUiState, _this5.mainIndex);\n                        _this5.scheduleSearch();\n                        _this5.onInternalStateChange();\n                    }\n                });\n                else {\n                    (0, $e00cc39de32ae775$export$fd5e8f1329b3d5e0)(nextUiState, this.mainIndex);\n                    this.scheduleSearch();\n                    this.onInternalStateChange();\n                }\n            }\n        },\n        {\n            key: \"getUiState\",\n            value: function getUiState() {\n                if (this.started) // We refresh the index UI state to make sure changes from `refine` are taken in account\n                this.mainIndex.refreshUiState();\n                return this.mainIndex.getWidgetUiState({});\n            }\n        },\n        {\n            key: \"createURL\",\n            value: function createURL() {\n                var nextState = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n                if (!this.started) throw new Error($43df3178656874f3$var$withUsage(\"The `start` method needs to be called before `createURL`.\"));\n                return this._createURL(nextState);\n            }\n        },\n        {\n            key: \"refresh\",\n            value: function refresh() {\n                if (!this.mainHelper) throw new Error($43df3178656874f3$var$withUsage(\"The `start` method needs to be called before `refresh`.\"));\n                this.mainHelper.clearCache().search();\n            }\n        }\n    ]);\n    return InstantSearch;\n}((0, (/*@__PURE__*/$parcel$interopDefault($d2f3ec49777c2f55$exports))));\nvar $43df3178656874f3$export$2e2bcd8739ae039 = $43df3178656874f3$var$InstantSearch;\n\n\n\n\nvar $f2f086fa702b7d9c$export$d900da7fa9a86f36 = \"_ALGOLIA\";\nfunction $f2f086fa702b7d9c$var$getCookie(name) {\n    var prefix = \"\".concat(name, \"=\");\n    var cookies = document.cookie.split(\";\");\n    for(var i = 0; i < cookies.length; i++){\n        var cookie = cookies[i];\n        while(cookie.charAt(0) === \" \")cookie = cookie.substring(1);\n        if (cookie.indexOf(prefix) === 0) return cookie.substring(prefix.length, cookie.length);\n    }\n    return undefined;\n}\nfunction $f2f086fa702b7d9c$export$61f1c6e9cd2ed687() {\n    return $f2f086fa702b7d9c$var$getCookie($f2f086fa702b7d9c$export$d900da7fa9a86f36);\n}\nfunction $f2f086fa702b7d9c$export$2e2bcd8739ae039() {\n    return $f2f086fa702b7d9c$export$61f1c6e9cd2ed687();\n}\n\n\n\nfunction $58d1e602d478cf2f$var$_objectWithoutProperties(source, excluded) {\n    if (source == null) return {};\n    var target = $58d1e602d478cf2f$var$_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}\nfunction $58d1e602d478cf2f$var$_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 $58d1e602d478cf2f$var$getStateWithoutPage(state) {\n    var _ref = state || {}, page = _ref.page, rest = $58d1e602d478cf2f$var$_objectWithoutProperties(_ref, [\n        \"page\"\n    ]);\n    return rest;\n}\nvar $58d1e602d478cf2f$var$KEY = \"ais.infiniteHits\";\nfunction $58d1e602d478cf2f$export$2e2bcd8739ae039() {\n    return {\n        read: function read(_ref2) {\n            var state = _ref2.state;\n            var sessionStorage = (0, $ae549b2844b692c1$export$39f19eed34acd2f1)(function(_ref3) {\n                var window = _ref3.window;\n                return window.sessionStorage;\n            });\n            if (!sessionStorage) return null;\n            try {\n                var cache = JSON.parse(sessionStorage.getItem($58d1e602d478cf2f$var$KEY));\n                return cache && (0, $4198f5cd959b5a7d$export$248d38f6296296c5)(cache.state, $58d1e602d478cf2f$var$getStateWithoutPage(state)) ? cache.hits : null;\n            } catch (error) {\n                if (error instanceof SyntaxError) try {\n                    sessionStorage.removeItem($58d1e602d478cf2f$var$KEY);\n                } catch (err) {}\n                return null;\n            }\n        },\n        write: function write(_ref4) {\n            var state = _ref4.state, hits = _ref4.hits;\n            var sessionStorage = (0, $ae549b2844b692c1$export$39f19eed34acd2f1)(function(_ref5) {\n                var window = _ref5.window;\n                return window.sessionStorage;\n            });\n            if (!sessionStorage) return;\n            try {\n                sessionStorage.setItem($58d1e602d478cf2f$var$KEY, JSON.stringify({\n                    state: $58d1e602d478cf2f$var$getStateWithoutPage(state),\n                    hits: hits\n                }));\n            } catch (error) {}\n        }\n    };\n}\n\n\n\n/**\n * Logs a warning when this function is called, in development environment only.\n */ var $e4443cc2a1f06031$export$b680e6b2c82f8c2f = function deprecate(fn, message) {\n    return fn;\n};\n/**\n * Logs a warning\n * This is used to log issues in development environment only.\n */ var $e4443cc2a1f06031$export$c106dd0671a0fc2d = (0, $dba781b2f4cd6c52$export$8793edee2d425525);\n/**\n * Logs a warning if the condition is not met.\n * This is used to log issues in development environment only.\n */ var $e4443cc2a1f06031$export$491112666e282270 = (0, $dba781b2f4cd6c52$export$8793edee2d425525);\n\n\n\n/**\n * InstantSearch is the main component of InstantSearch.js. This object\n * manages the widget and lets you add new ones.\n *\n * Two parameters are required to get you started with InstantSearch.js:\n *  - `indexName`: the main index that you will use for your new search UI\n *  - `searchClient`: the search client to plug to InstantSearch.js\n *\n * The [search client provided by Algolia](algolia.com/doc/api-client/getting-started/what-is-the-api-client/javascript/)\n * needs an `appId` and an `apiKey`. Those parameters can be found in your\n * [Algolia dashboard](https://www.algolia.com/api-keys).\n *\n * If you want to get up and running quickly with InstantSearch.js, have a\n * look at the [getting started](https://www.algolia.com/doc/guides/building-search-ui/getting-started/js/).\n */ var $9a68c624c672fabe$var$instantsearch = function instantsearch(options) {\n    return new (0, $43df3178656874f3$export$2e2bcd8739ae039)(options);\n};\n$9a68c624c672fabe$var$instantsearch.version = (0, $9bacbeef4c25f81e$export$2e2bcd8739ae039);\n$9a68c624c672fabe$var$instantsearch.createInfiniteHitsSessionStorageCache = (0, $e4443cc2a1f06031$export$b680e6b2c82f8c2f)((0, $58d1e602d478cf2f$export$2e2bcd8739ae039), \"import { createInfiniteHitsSessionStorageCache } from 'instantsearch.js/es/lib/infiniteHitsCache'\");\n$9a68c624c672fabe$var$instantsearch.highlight = (0, $e4443cc2a1f06031$export$b680e6b2c82f8c2f)((0, $c84ade2a4f4913d0$export$2e2bcd8739ae039), \"import { highlight } from 'instantsearch.js/es/helpers'\");\n$9a68c624c672fabe$var$instantsearch.reverseHighlight = (0, $e4443cc2a1f06031$export$b680e6b2c82f8c2f)((0, $a9544a7c7ea19d28$export$2e2bcd8739ae039), \"import { reverseHighlight } from 'instantsearch.js/es/helpers'\");\n$9a68c624c672fabe$var$instantsearch.snippet = (0, $e4443cc2a1f06031$export$b680e6b2c82f8c2f)((0, $42f86c36b36dbd78$export$2e2bcd8739ae039), \"import { snippet } from 'instantsearch.js/es/helpers'\");\n$9a68c624c672fabe$var$instantsearch.reverseSnippet = (0, $e4443cc2a1f06031$export$b680e6b2c82f8c2f)((0, $007f848d940fdaf1$export$2e2bcd8739ae039), \"import { reverseSnippet } from 'instantsearch.js/es/helpers'\");\n$9a68c624c672fabe$var$instantsearch.insights = (0, $62dc5ddd84fbc4d2$export$2e2bcd8739ae039);\n$9a68c624c672fabe$var$instantsearch.getInsightsAnonymousUserToken = (0, $f2f086fa702b7d9c$export$2e2bcd8739ae039);\nObject.defineProperty($9a68c624c672fabe$var$instantsearch, \"widgets\", {\n    get: function get() {\n        throw new ReferenceError(\"\\\"instantsearch.widgets\\\" are not available from the ES build.\\n\\nTo import the widgets:\\n\\nimport { searchBox } from 'instantsearch.js/es/widgets'\");\n    }\n});\nObject.defineProperty($9a68c624c672fabe$var$instantsearch, \"connectors\", {\n    get: function get() {\n        throw new ReferenceError(\"\\\"instantsearch.connectors\\\" are not available from the ES build.\\n\\nTo import the connectors:\\n\\nimport { connectSearchBox } from 'instantsearch.js/es/connectors'\");\n    }\n});\nvar $9a68c624c672fabe$export$2e2bcd8739ae039 = $9a68c624c672fabe$var$instantsearch;\n\n\n\n\nfunction $de17b4591c7a8a28$var$startAlgoliaSearch() {\n    console.debug(\"Start Algolia search component\");\n    const algoliaClient = (0, (/*@__PURE__*/$parcel$interopDefault($cb353075a6c6fa25$exports)))((0, $6be2e2cc6d146902$export$2e2bcd8739ae039).algolia.appId, (0, $6be2e2cc6d146902$export$2e2bcd8739ae039).algolia.apiKey);\n    // Prevent search when query is empty, refer to https://github.com/algolia/react-instantsearch/issues/1111#issuecomment-414239919\n    const searchClient = {\n        search (requests) {\n            const shouldSearch = requests.some(({ params: { query: query } })=>query !== \"\");\n            if (shouldSearch) return algoliaClient.search(requests);\n            return Promise.resolve({\n                results: [\n                    {\n                        hits: [],\n                        nbPages: 0\n                    }\n                ]\n            });\n        }\n    };\n    const search = (0, $9a68c624c672fabe$export$2e2bcd8739ae039)({\n        indexName: (0, $6be2e2cc6d146902$export$2e2bcd8739ae039).algolia.indexName,\n        searchClient: searchClient,\n        // Hide search content container when query is empty, refer to https://www.algolia.com/doc/guides/building-search-ui/going-further/conditional-display/js/#handling-empty-queries\n        searchFunction (helper) {\n            const contentContainer = document.querySelector(\"#content\");\n            contentContainer.style.display = helper.state.query === \"\" ? \"none\" : \"\";\n            const contentBlank = document.querySelector(\"#blank\");\n            contentBlank.style.display = helper.state.query === \"\" ? \"\" : \"none\";\n            helper.search();\n        },\n        // Sync UI state with URL, refer to https://www.algolia.com/doc/guides/building-search-ui/going-further/routing-urls/js/#rewriting-urls-manually\n        routing: {\n            stateMapping: {\n                stateToRoute (uiState) {\n                    const indexUiState = uiState[(0, $6be2e2cc6d146902$export$2e2bcd8739ae039).algolia.indexName];\n                    return {\n                        q: indexUiState.query,\n                        t: indexUiState.menu && indexUiState.menu.page_type,\n                        p: indexUiState.page\n                    };\n                },\n                routeToState (routeState) {\n                    return {\n                        [(0, $6be2e2cc6d146902$export$2e2bcd8739ae039).algolia.indexName]: {\n                            query: routeState.q,\n                            menu: {\n                                page_type: routeState.t\n                            },\n                            page: routeState.p\n                        }\n                    };\n                }\n            }\n        }\n    });\n    search.addWidgets([\n        (0, $d384af5640276fb9$export$2e2bcd8739ae039)({\n            hitsPerPage: 10,\n            clickAnalytics: true,\n            filters: `language:${(0, $c09122dc9682058c$export$2e2bcd8739ae039).getLocale()}`\n        }),\n        (0, $246b5dcb151969a3$export$2e2bcd8739ae039)({\n            container: \"#search-box\",\n            searchAsYouType: false,\n            showSubmit: true,\n            showLoadingIndicator: false,\n            placeholder: (0, $l5cY7.t)(\"search.box.placeholder\"),\n            templates: {\n                submit ({ cssClasses: cssClasses }, { html: html }) {\n                    return html`\n          <button class=\"${cssClasses.submit}\" type=\"submit\" title=\"${(0, $l5cY7.t)(\"search.box.submitButtonTitle\")}\">\n              <svg class=\"${cssClasses.submitIcon}\" width=\"10\" height=\"10\" viewBox=\"0 0 40 40\">\n                  <path d=\"M26.804 29.01c-2.832 2.34-6.465 3.746-10.426 3.746C7.333 32.756 0 25.424 0 16.378 0 7.333 7.333 0 16.378 0c9.046 0 16.378 7.333 16.378 16.378 0 3.96-1.406 7.594-3.746 10.426l10.534 10.534c.607.607.61 1.59-.004 2.202-.61.61-1.597.61-2.202.004L26.804 29.01zm-10.426.627c7.323 0 13.26-5.936 13.26-13.26 0-7.32-5.937-13.257-13.26-13.257C9.056 3.12 3.12 9.056 3.12 16.378c0 7.323 5.936 13.26 13.258 13.26z\"></path>\n              </svg>\n          </button>`;\n                },\n                reset ({ cssClasses: cssClasses }, { html: html }) {\n                    return html`\n          <button class=\"${cssClasses.reset}\" type=\"reset\" title=\"${(0, $l5cY7.t)(\"search.box.resetButtonTitle\")}\">\n              <svg class=\"${cssClasses.resetIcon}\" viewBox=\"0 0 20 20\" width=\"10\" height=\"10\">\n                  <path d=\"M8.114 10L.944 2.83 0 1.885 1.886 0l.943.943L10 8.113l7.17-7.17.944-.943L20 1.886l-.943.943-7.17 7.17 7.17 7.17.943.944L18.114 20l-.943-.943-7.17-7.17-7.17 7.17-.944.943L0 18.114l.943-.943L8.113 10z\"></path>\n              </svg>\n          </button>`;\n                }\n            }\n        }),\n        (0, $224936184cbbdb1c$export$2e2bcd8739ae039)({\n            container: \"#search-tabs-container\",\n            attribute: \"page_type\",\n            transformItems (items) {\n                return items.map((item)=>({\n                        ...item,\n                        label: (0, $l5cY7.t)(`search.menuLabel.${item.label}`)\n                    }));\n            },\n            templates: {\n                item (data, { html: html }) {\n                    const { label: label, count: count } = data;\n                    return html`<li><a href=\"#\">${label} (${count.toLocaleString()})</a></li>`;\n                }\n            }\n        }),\n        (0, $9169b8376f1e6cf3$export$2e2bcd8739ae039)({\n            container: \"#search-results-container\",\n            templates: {\n                empty: `<div>${(0, $l5cY7.t)(\"search.noResultsText\")}<strong>{{ query }}</strong></div>`,\n                item (hit, { html: html, components: components }) {\n                    return html`\n          <a class=\"item\" href=\"${hit.url}\">\n              <div class=\"title\">${components.Highlight({\n                        attribute: \"title\",\n                        highlightedTagName: \"span\",\n                        hit: hit\n                    })}</div>\n              <div class=\"fragment\">${components.Snippet({\n                        attribute: \"pure_body\",\n                        highlightedTagName: \"span\",\n                        hit: hit\n                    })}</div>\n          </a>\n        `;\n                }\n            }\n        }),\n        (0, $3b17bbd51a64bcdc$export$2e2bcd8739ae039)({\n            container: \"#search-paginator\"\n        })\n    ]);\n    const searchBoxTips = document.querySelector(\"#search-box-tips\");\n    searchBoxTips.innerHTML = (0, $l5cY7.t)(\"search.box.tips\");\n    search.start();\n}\n// Only start Algolia in search page\nif (window.location.pathname.endsWith(\"/search\")) $de17b4591c7a8a28$var$startAlgoliaSearch();\n\n\n// Timezone conversion for event pages (list and detail)\n(function() {\n    \"use strict\";\n    function convertToLocalTime() {\n        const timeElements = document.querySelectorAll(\"[data-event-time]\");\n        timeElements.forEach(function(element) {\n            const startTimeStr = element.getAttribute(\"data-start\");\n            const endTimeStr = element.getAttribute(\"data-end\");\n            const sourceTimezone = element.getAttribute(\"data-source-timezone\"); // \"+8\"\n            if (!startTimeStr) return;\n            const dateOnly = element.hasAttribute(\"data-date-only\");\n            const startDate = parseTimeInTimezone(startTimeStr, sourceTimezone);\n            let displayText = \"\";\n            if (dateOnly) {\n                displayText = formatDate(startDate);\n                if (endTimeStr) {\n                    const endDate = parseTimeInTimezone(endTimeStr, sourceTimezone);\n                    const endDateStr = formatDate(endDate);\n                    if (endDateStr !== displayText) displayText += \" - \" + endDateStr;\n                }\n            } else if (endTimeStr) {\n                const endDate = parseTimeInTimezone(endTimeStr, sourceTimezone);\n                displayText = formatDateRange(startDate, endDate);\n            } else displayText = formatDateTime(startDate);\n            // Pass startDate so getTimezoneLabel derives the correct offset and\n            // abbreviation for the event's point in time (respects DST).\n            const timezoneLabel = getTimezoneLabel(startDate);\n            displayText += \" \" + timezoneLabel;\n            element.textContent = displayText;\n        });\n    }\n    function parseTimeInTimezone(timeStr, timezoneOffset) {\n        const parts = timeStr.split(/[- :]/);\n        const year = parseInt(parts[0], 10);\n        const month = parseInt(parts[1], 10) - 1;\n        const day = parseInt(parts[2], 10);\n        const hour = parseInt(parts[3], 10);\n        const minute = parseInt(parts[4], 10);\n        const offsetHours = parseInt(timezoneOffset, 10);\n        const utcTime = Date.UTC(year, month, day, hour - offsetHours, minute, 0);\n        return new Date(utcTime);\n    }\n    function formatTimezoneOffset(offset) {\n        const sign = offset >= 0 ? \"+\" : \"-\";\n        const absOffset = Math.abs(offset);\n        const hours = Math.floor(absOffset);\n        const minutes = Math.round((absOffset - hours) * 60);\n        if (minutes === 0) return sign + hours;\n        else return sign + hours + \":\" + (minutes < 10 ? \"0\" : \"\") + minutes;\n    }\n    function getTimezoneLabel(date) {\n        const offsetStr = formatTimezoneOffset(-date.getTimezoneOffset() / 60);\n        try {\n            // Extract the locale-correct abbreviation for the event date via Intl,\n            // which correctly handles DST (e.g. PST vs PDT) and avoids ambiguous\n            // hardcoded mappings like CST (+8 vs -6).\n            const parts = new Intl.DateTimeFormat(undefined, {\n                timeZoneName: \"short\"\n            }).formatToParts(date);\n            const abbr = parts.find((p)=>p.type === \"timeZoneName\");\n            if (abbr && abbr.value && !abbr.value.startsWith(\"UTC\") && !abbr.value.startsWith(\"GMT+\") && !abbr.value.startsWith(\"GMT-\")) return abbr.value + \" (UTC\" + offsetStr + \")\";\n        } catch (e) {\n        // fall through to plain offset\n        }\n        return \"UTC\" + offsetStr;\n    }\n    function formatDate(date) {\n        const year = date.getFullYear();\n        const month = String(date.getMonth() + 1).padStart(2, \"0\");\n        const day = String(date.getDate()).padStart(2, \"0\");\n        return year + \"-\" + month + \"-\" + day;\n    }\n    function formatDateTime(date) {\n        const year = date.getFullYear();\n        const month = String(date.getMonth() + 1).padStart(2, \"0\");\n        const day = String(date.getDate()).padStart(2, \"0\");\n        const hour = String(date.getHours()).padStart(2, \"0\");\n        const minute = String(date.getMinutes()).padStart(2, \"0\");\n        return year + \"-\" + month + \"-\" + day + \" \" + hour + \":\" + minute;\n    }\n    function formatDateRange(startDate, endDate) {\n        const startYear = startDate.getFullYear();\n        const startMonth = String(startDate.getMonth() + 1).padStart(2, \"0\");\n        const startDay = String(startDate.getDate()).padStart(2, \"0\");\n        const startHour = String(startDate.getHours()).padStart(2, \"0\");\n        const startMinute = String(startDate.getMinutes()).padStart(2, \"0\");\n        const endYear = endDate.getFullYear();\n        const endMonth = String(endDate.getMonth() + 1).padStart(2, \"0\");\n        const endDay = String(endDate.getDate()).padStart(2, \"0\");\n        const endHour = String(endDate.getHours()).padStart(2, \"0\");\n        const endMinute = String(endDate.getMinutes()).padStart(2, \"0\");\n        const startStr = startYear + \"-\" + startMonth + \"-\" + startDay + \" \" + startHour + \":\" + startMinute;\n        if (startYear === endYear && startMonth === endMonth && startDay === endDay) return startStr + \" - \" + endHour + \":\" + endMinute;\n        else {\n            const endStr = endYear + \"-\" + endMonth + \"-\" + endDay + \" \" + endHour + \":\" + endMinute;\n            return startStr + \" - \" + endStr;\n        }\n    }\n    if (document.readyState === \"loading\") document.addEventListener(\"DOMContentLoaded\", convertToLocalTime);\n    else convertToLocalTime();\n})();\n\n\n\n\n\n})();\n//# sourceMappingURL=main.js.map\n","import _typeof from '@babel/runtime/helpers/esm/typeof';\nimport _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\nimport _assertThisInitialized from '@babel/runtime/helpers/esm/assertThisInitialized';\nimport _inherits from '@babel/runtime/helpers/esm/inherits';\nimport _possibleConstructorReturn from '@babel/runtime/helpers/esm/possibleConstructorReturn';\nimport _getPrototypeOf from '@babel/runtime/helpers/esm/getPrototypeOf';\nimport _defineProperty from '@babel/runtime/helpers/esm/defineProperty';\nimport _toArray from '@babel/runtime/helpers/esm/toArray';\n\nfunction ownKeys$6(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread$6(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$6(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$6(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nvar consoleLogger = {\n  type: 'logger',\n  log: function log(args) {\n    this.output('log', args);\n  },\n  warn: function warn(args) {\n    this.output('warn', args);\n  },\n  error: function error(args) {\n    this.output('error', args);\n  },\n  output: function output(type, args) {\n    if (console && console[type]) console[type].apply(console, args);\n  }\n};\nvar Logger = function () {\n  function Logger(concreteLogger) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    _classCallCheck(this, Logger);\n    this.init(concreteLogger, options);\n  }\n  _createClass(Logger, [{\n    key: \"init\",\n    value: function init(concreteLogger) {\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      this.prefix = options.prefix || 'i18next:';\n      this.logger = concreteLogger || consoleLogger;\n      this.options = options;\n      this.debug = options.debug;\n    }\n  }, {\n    key: \"setDebug\",\n    value: function setDebug(bool) {\n      this.debug = bool;\n    }\n  }, {\n    key: \"log\",\n    value: function log() {\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      return this.forward(args, 'log', '', true);\n    }\n  }, {\n    key: \"warn\",\n    value: function warn() {\n      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        args[_key2] = arguments[_key2];\n      }\n      return this.forward(args, 'warn', '', true);\n    }\n  }, {\n    key: \"error\",\n    value: function error() {\n      for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n        args[_key3] = arguments[_key3];\n      }\n      return this.forward(args, 'error', '');\n    }\n  }, {\n    key: \"deprecate\",\n    value: function deprecate() {\n      for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n        args[_key4] = arguments[_key4];\n      }\n      return this.forward(args, 'warn', 'WARNING DEPRECATED: ', true);\n    }\n  }, {\n    key: \"forward\",\n    value: function forward(args, lvl, prefix, debugOnly) {\n      if (debugOnly && !this.debug) return null;\n      if (typeof args[0] === 'string') args[0] = \"\".concat(prefix).concat(this.prefix, \" \").concat(args[0]);\n      return this.logger[lvl](args);\n    }\n  }, {\n    key: \"create\",\n    value: function create(moduleName) {\n      return new Logger(this.logger, _objectSpread$6(_objectSpread$6({}, {\n        prefix: \"\".concat(this.prefix, \":\").concat(moduleName, \":\")\n      }), this.options));\n    }\n  }, {\n    key: \"clone\",\n    value: function clone(options) {\n      options = options || this.options;\n      options.prefix = options.prefix || this.prefix;\n      return new Logger(this.logger, options);\n    }\n  }]);\n  return Logger;\n}();\nvar baseLogger = new Logger();\n\nvar EventEmitter = function () {\n  function EventEmitter() {\n    _classCallCheck(this, EventEmitter);\n    this.observers = {};\n  }\n  _createClass(EventEmitter, [{\n    key: \"on\",\n    value: function on(events, listener) {\n      var _this = this;\n      events.split(' ').forEach(function (event) {\n        _this.observers[event] = _this.observers[event] || [];\n        _this.observers[event].push(listener);\n      });\n      return this;\n    }\n  }, {\n    key: \"off\",\n    value: function off(event, listener) {\n      if (!this.observers[event]) return;\n      if (!listener) {\n        delete this.observers[event];\n        return;\n      }\n      this.observers[event] = this.observers[event].filter(function (l) {\n        return l !== listener;\n      });\n    }\n  }, {\n    key: \"emit\",\n    value: function emit(event) {\n      for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n        args[_key - 1] = arguments[_key];\n      }\n      if (this.observers[event]) {\n        var cloned = [].concat(this.observers[event]);\n        cloned.forEach(function (observer) {\n          observer.apply(void 0, args);\n        });\n      }\n      if (this.observers['*']) {\n        var _cloned = [].concat(this.observers['*']);\n        _cloned.forEach(function (observer) {\n          observer.apply(observer, [event].concat(args));\n        });\n      }\n    }\n  }]);\n  return EventEmitter;\n}();\n\nfunction defer() {\n  var res;\n  var rej;\n  var promise = new Promise(function (resolve, reject) {\n    res = resolve;\n    rej = reject;\n  });\n  promise.resolve = res;\n  promise.reject = rej;\n  return promise;\n}\nfunction makeString(object) {\n  if (object == null) return '';\n  return '' + object;\n}\nfunction copy(a, s, t) {\n  a.forEach(function (m) {\n    if (s[m]) t[m] = s[m];\n  });\n}\nfunction getLastOfPath(object, path, Empty) {\n  function cleanKey(key) {\n    return key && key.indexOf('###') > -1 ? key.replace(/###/g, '.') : key;\n  }\n  function canNotTraverseDeeper() {\n    return !object || typeof object === 'string';\n  }\n  var stack = typeof path !== 'string' ? [].concat(path) : path.split('.');\n  while (stack.length > 1) {\n    if (canNotTraverseDeeper()) return {};\n    var key = cleanKey(stack.shift());\n    if (!object[key] && Empty) object[key] = new Empty();\n    if (Object.prototype.hasOwnProperty.call(object, key)) {\n      object = object[key];\n    } else {\n      object = {};\n    }\n  }\n  if (canNotTraverseDeeper()) return {};\n  return {\n    obj: object,\n    k: cleanKey(stack.shift())\n  };\n}\nfunction setPath(object, path, newValue) {\n  var _getLastOfPath = getLastOfPath(object, path, Object),\n    obj = _getLastOfPath.obj,\n    k = _getLastOfPath.k;\n  obj[k] = newValue;\n}\nfunction pushPath(object, path, newValue, concat) {\n  var _getLastOfPath2 = getLastOfPath(object, path, Object),\n    obj = _getLastOfPath2.obj,\n    k = _getLastOfPath2.k;\n  obj[k] = obj[k] || [];\n  if (concat) obj[k] = obj[k].concat(newValue);\n  if (!concat) obj[k].push(newValue);\n}\nfunction getPath(object, path) {\n  var _getLastOfPath3 = getLastOfPath(object, path),\n    obj = _getLastOfPath3.obj,\n    k = _getLastOfPath3.k;\n  if (!obj) return undefined;\n  return obj[k];\n}\nfunction getPathWithDefaults(data, defaultData, key) {\n  var value = getPath(data, key);\n  if (value !== undefined) {\n    return value;\n  }\n  return getPath(defaultData, key);\n}\nfunction deepExtend(target, source, overwrite) {\n  for (var prop in source) {\n    if (prop !== '__proto__' && prop !== 'constructor') {\n      if (prop in target) {\n        if (typeof target[prop] === 'string' || target[prop] instanceof String || typeof source[prop] === 'string' || source[prop] instanceof String) {\n          if (overwrite) target[prop] = source[prop];\n        } else {\n          deepExtend(target[prop], source[prop], overwrite);\n        }\n      } else {\n        target[prop] = source[prop];\n      }\n    }\n  }\n  return target;\n}\nfunction regexEscape(str) {\n  return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n}\nvar _entityMap = {\n  '&': '&amp;',\n  '<': '&lt;',\n  '>': '&gt;',\n  '\"': '&quot;',\n  \"'\": '&#39;',\n  '/': '&#x2F;'\n};\nfunction escape(data) {\n  if (typeof data === 'string') {\n    return data.replace(/[&<>\"'\\/]/g, function (s) {\n      return _entityMap[s];\n    });\n  }\n  return data;\n}\nvar isIE10 = typeof window !== 'undefined' && window.navigator && typeof window.navigator.userAgentData === 'undefined' && window.navigator.userAgent && window.navigator.userAgent.indexOf('MSIE') > -1;\nvar chars = [' ', ',', '?', '!', ';'];\nfunction looksLikeObjectPath(key, nsSeparator, keySeparator) {\n  nsSeparator = nsSeparator || '';\n  keySeparator = keySeparator || '';\n  var possibleChars = chars.filter(function (c) {\n    return nsSeparator.indexOf(c) < 0 && keySeparator.indexOf(c) < 0;\n  });\n  if (possibleChars.length === 0) return true;\n  var r = new RegExp(\"(\".concat(possibleChars.map(function (c) {\n    return c === '?' ? '\\\\?' : c;\n  }).join('|'), \")\"));\n  var matched = !r.test(key);\n  if (!matched) {\n    var ki = key.indexOf(keySeparator);\n    if (ki > 0 && !r.test(key.substring(0, ki))) {\n      matched = true;\n    }\n  }\n  return matched;\n}\nfunction deepFind(obj, path) {\n  var keySeparator = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '.';\n  if (!obj) return undefined;\n  if (obj[path]) return obj[path];\n  var paths = path.split(keySeparator);\n  var current = obj;\n  for (var i = 0; i < paths.length; ++i) {\n    if (!current) return undefined;\n    if (typeof current[paths[i]] === 'string' && i + 1 < paths.length) {\n      return undefined;\n    }\n    if (current[paths[i]] === undefined) {\n      var j = 2;\n      var p = paths.slice(i, i + j).join(keySeparator);\n      var mix = current[p];\n      while (mix === undefined && paths.length > i + j) {\n        j++;\n        p = paths.slice(i, i + j).join(keySeparator);\n        mix = current[p];\n      }\n      if (mix === undefined) return undefined;\n      if (mix === null) return null;\n      if (path.endsWith(p)) {\n        if (typeof mix === 'string') return mix;\n        if (p && typeof mix[p] === 'string') return mix[p];\n      }\n      var joinedPath = paths.slice(i + j).join(keySeparator);\n      if (joinedPath) return deepFind(mix, joinedPath, keySeparator);\n      return undefined;\n    }\n    current = current[paths[i]];\n  }\n  return current;\n}\n\nfunction ownKeys$5(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread$5(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$5(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$5(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper$3(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$3(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct$3() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nvar ResourceStore = function (_EventEmitter) {\n  _inherits(ResourceStore, _EventEmitter);\n  var _super = _createSuper$3(ResourceStore);\n  function ResourceStore(data) {\n    var _this;\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n      ns: ['translation'],\n      defaultNS: 'translation'\n    };\n    _classCallCheck(this, ResourceStore);\n    _this = _super.call(this);\n    if (isIE10) {\n      EventEmitter.call(_assertThisInitialized(_this));\n    }\n    _this.data = data || {};\n    _this.options = options;\n    if (_this.options.keySeparator === undefined) {\n      _this.options.keySeparator = '.';\n    }\n    if (_this.options.ignoreJSONStructure === undefined) {\n      _this.options.ignoreJSONStructure = true;\n    }\n    return _this;\n  }\n  _createClass(ResourceStore, [{\n    key: \"addNamespaces\",\n    value: function addNamespaces(ns) {\n      if (this.options.ns.indexOf(ns) < 0) {\n        this.options.ns.push(ns);\n      }\n    }\n  }, {\n    key: \"removeNamespaces\",\n    value: function removeNamespaces(ns) {\n      var index = this.options.ns.indexOf(ns);\n      if (index > -1) {\n        this.options.ns.splice(index, 1);\n      }\n    }\n  }, {\n    key: \"getResource\",\n    value: function getResource(lng, ns, key) {\n      var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n      var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n      var ignoreJSONStructure = options.ignoreJSONStructure !== undefined ? options.ignoreJSONStructure : this.options.ignoreJSONStructure;\n      var path = [lng, ns];\n      if (key && typeof key !== 'string') path = path.concat(key);\n      if (key && typeof key === 'string') path = path.concat(keySeparator ? key.split(keySeparator) : key);\n      if (lng.indexOf('.') > -1) {\n        path = lng.split('.');\n      }\n      var result = getPath(this.data, path);\n      if (result || !ignoreJSONStructure || typeof key !== 'string') return result;\n      return deepFind(this.data && this.data[lng] && this.data[lng][ns], key, keySeparator);\n    }\n  }, {\n    key: \"addResource\",\n    value: function addResource(lng, ns, key, value) {\n      var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n        silent: false\n      };\n      var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n      var path = [lng, ns];\n      if (key) path = path.concat(keySeparator ? key.split(keySeparator) : key);\n      if (lng.indexOf('.') > -1) {\n        path = lng.split('.');\n        value = ns;\n        ns = path[1];\n      }\n      this.addNamespaces(ns);\n      setPath(this.data, path, value);\n      if (!options.silent) this.emit('added', lng, ns, key, value);\n    }\n  }, {\n    key: \"addResources\",\n    value: function addResources(lng, ns, resources) {\n      var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {\n        silent: false\n      };\n      for (var m in resources) {\n        if (typeof resources[m] === 'string' || Object.prototype.toString.apply(resources[m]) === '[object Array]') this.addResource(lng, ns, m, resources[m], {\n          silent: true\n        });\n      }\n      if (!options.silent) this.emit('added', lng, ns, resources);\n    }\n  }, {\n    key: \"addResourceBundle\",\n    value: function addResourceBundle(lng, ns, resources, deep, overwrite) {\n      var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {\n        silent: false\n      };\n      var path = [lng, ns];\n      if (lng.indexOf('.') > -1) {\n        path = lng.split('.');\n        deep = resources;\n        resources = ns;\n        ns = path[1];\n      }\n      this.addNamespaces(ns);\n      var pack = getPath(this.data, path) || {};\n      if (deep) {\n        deepExtend(pack, resources, overwrite);\n      } else {\n        pack = _objectSpread$5(_objectSpread$5({}, pack), resources);\n      }\n      setPath(this.data, path, pack);\n      if (!options.silent) this.emit('added', lng, ns, resources);\n    }\n  }, {\n    key: \"removeResourceBundle\",\n    value: function removeResourceBundle(lng, ns) {\n      if (this.hasResourceBundle(lng, ns)) {\n        delete this.data[lng][ns];\n      }\n      this.removeNamespaces(ns);\n      this.emit('removed', lng, ns);\n    }\n  }, {\n    key: \"hasResourceBundle\",\n    value: function hasResourceBundle(lng, ns) {\n      return this.getResource(lng, ns) !== undefined;\n    }\n  }, {\n    key: \"getResourceBundle\",\n    value: function getResourceBundle(lng, ns) {\n      if (!ns) ns = this.options.defaultNS;\n      if (this.options.compatibilityAPI === 'v1') return _objectSpread$5(_objectSpread$5({}, {}), this.getResource(lng, ns));\n      return this.getResource(lng, ns);\n    }\n  }, {\n    key: \"getDataByLanguage\",\n    value: function getDataByLanguage(lng) {\n      return this.data[lng];\n    }\n  }, {\n    key: \"hasLanguageSomeTranslations\",\n    value: function hasLanguageSomeTranslations(lng) {\n      var data = this.getDataByLanguage(lng);\n      var n = data && Object.keys(data) || [];\n      return !!n.find(function (v) {\n        return data[v] && Object.keys(data[v]).length > 0;\n      });\n    }\n  }, {\n    key: \"toJSON\",\n    value: function toJSON() {\n      return this.data;\n    }\n  }]);\n  return ResourceStore;\n}(EventEmitter);\n\nvar postProcessor = {\n  processors: {},\n  addPostProcessor: function addPostProcessor(module) {\n    this.processors[module.name] = module;\n  },\n  handle: function handle(processors, value, key, options, translator) {\n    var _this = this;\n    processors.forEach(function (processor) {\n      if (_this.processors[processor]) value = _this.processors[processor].process(value, key, options, translator);\n    });\n    return value;\n  }\n};\n\nfunction ownKeys$4(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread$4(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$4(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$4(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper$2(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$2(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct$2() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nvar checkedLoadedFor = {};\nvar Translator = function (_EventEmitter) {\n  _inherits(Translator, _EventEmitter);\n  var _super = _createSuper$2(Translator);\n  function Translator(services) {\n    var _this;\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    _classCallCheck(this, Translator);\n    _this = _super.call(this);\n    if (isIE10) {\n      EventEmitter.call(_assertThisInitialized(_this));\n    }\n    copy(['resourceStore', 'languageUtils', 'pluralResolver', 'interpolator', 'backendConnector', 'i18nFormat', 'utils'], services, _assertThisInitialized(_this));\n    _this.options = options;\n    if (_this.options.keySeparator === undefined) {\n      _this.options.keySeparator = '.';\n    }\n    _this.logger = baseLogger.create('translator');\n    return _this;\n  }\n  _createClass(Translator, [{\n    key: \"changeLanguage\",\n    value: function changeLanguage(lng) {\n      if (lng) this.language = lng;\n    }\n  }, {\n    key: \"exists\",\n    value: function exists(key) {\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n        interpolation: {}\n      };\n      if (key === undefined || key === null) {\n        return false;\n      }\n      var resolved = this.resolve(key, options);\n      return resolved && resolved.res !== undefined;\n    }\n  }, {\n    key: \"extractFromKey\",\n    value: function extractFromKey(key, options) {\n      var nsSeparator = options.nsSeparator !== undefined ? options.nsSeparator : this.options.nsSeparator;\n      if (nsSeparator === undefined) nsSeparator = ':';\n      var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n      var namespaces = options.ns || this.options.defaultNS || [];\n      var wouldCheckForNsInKey = nsSeparator && key.indexOf(nsSeparator) > -1;\n      var seemsNaturalLanguage = !this.options.userDefinedKeySeparator && !options.keySeparator && !this.options.userDefinedNsSeparator && !options.nsSeparator && !looksLikeObjectPath(key, nsSeparator, keySeparator);\n      if (wouldCheckForNsInKey && !seemsNaturalLanguage) {\n        var m = key.match(this.interpolator.nestingRegexp);\n        if (m && m.length > 0) {\n          return {\n            key: key,\n            namespaces: namespaces\n          };\n        }\n        var parts = key.split(nsSeparator);\n        if (nsSeparator !== keySeparator || nsSeparator === keySeparator && this.options.ns.indexOf(parts[0]) > -1) namespaces = parts.shift();\n        key = parts.join(keySeparator);\n      }\n      if (typeof namespaces === 'string') namespaces = [namespaces];\n      return {\n        key: key,\n        namespaces: namespaces\n      };\n    }\n  }, {\n    key: \"translate\",\n    value: function translate(keys, options, lastKey) {\n      var _this2 = this;\n      if (_typeof(options) !== 'object' && this.options.overloadTranslationOptionHandler) {\n        options = this.options.overloadTranslationOptionHandler(arguments);\n      }\n      if (_typeof(options) === 'object') options = _objectSpread$4({}, options);\n      if (!options) options = {};\n      if (keys === undefined || keys === null) return '';\n      if (!Array.isArray(keys)) keys = [String(keys)];\n      var returnDetails = options.returnDetails !== undefined ? options.returnDetails : this.options.returnDetails;\n      var keySeparator = options.keySeparator !== undefined ? options.keySeparator : this.options.keySeparator;\n      var _this$extractFromKey = this.extractFromKey(keys[keys.length - 1], options),\n        key = _this$extractFromKey.key,\n        namespaces = _this$extractFromKey.namespaces;\n      var namespace = namespaces[namespaces.length - 1];\n      var lng = options.lng || this.language;\n      var appendNamespaceToCIMode = options.appendNamespaceToCIMode || this.options.appendNamespaceToCIMode;\n      if (lng && lng.toLowerCase() === 'cimode') {\n        if (appendNamespaceToCIMode) {\n          var nsSeparator = options.nsSeparator || this.options.nsSeparator;\n          if (returnDetails) {\n            return {\n              res: \"\".concat(namespace).concat(nsSeparator).concat(key),\n              usedKey: key,\n              exactUsedKey: key,\n              usedLng: lng,\n              usedNS: namespace\n            };\n          }\n          return \"\".concat(namespace).concat(nsSeparator).concat(key);\n        }\n        if (returnDetails) {\n          return {\n            res: key,\n            usedKey: key,\n            exactUsedKey: key,\n            usedLng: lng,\n            usedNS: namespace\n          };\n        }\n        return key;\n      }\n      var resolved = this.resolve(keys, options);\n      var res = resolved && resolved.res;\n      var resUsedKey = resolved && resolved.usedKey || key;\n      var resExactUsedKey = resolved && resolved.exactUsedKey || key;\n      var resType = Object.prototype.toString.apply(res);\n      var noObject = ['[object Number]', '[object Function]', '[object RegExp]'];\n      var joinArrays = options.joinArrays !== undefined ? options.joinArrays : this.options.joinArrays;\n      var handleAsObjectInI18nFormat = !this.i18nFormat || this.i18nFormat.handleAsObject;\n      var handleAsObject = typeof res !== 'string' && typeof res !== 'boolean' && typeof res !== 'number';\n      if (handleAsObjectInI18nFormat && res && handleAsObject && noObject.indexOf(resType) < 0 && !(typeof joinArrays === 'string' && resType === '[object Array]')) {\n        if (!options.returnObjects && !this.options.returnObjects) {\n          if (!this.options.returnedObjectHandler) {\n            this.logger.warn('accessing an object - but returnObjects options is not enabled!');\n          }\n          var r = this.options.returnedObjectHandler ? this.options.returnedObjectHandler(resUsedKey, res, _objectSpread$4(_objectSpread$4({}, options), {}, {\n            ns: namespaces\n          })) : \"key '\".concat(key, \" (\").concat(this.language, \")' returned an object instead of string.\");\n          if (returnDetails) {\n            resolved.res = r;\n            return resolved;\n          }\n          return r;\n        }\n        if (keySeparator) {\n          var resTypeIsArray = resType === '[object Array]';\n          var copy = resTypeIsArray ? [] : {};\n          var newKeyToUse = resTypeIsArray ? resExactUsedKey : resUsedKey;\n          for (var m in res) {\n            if (Object.prototype.hasOwnProperty.call(res, m)) {\n              var deepKey = \"\".concat(newKeyToUse).concat(keySeparator).concat(m);\n              copy[m] = this.translate(deepKey, _objectSpread$4(_objectSpread$4({}, options), {\n                joinArrays: false,\n                ns: namespaces\n              }));\n              if (copy[m] === deepKey) copy[m] = res[m];\n            }\n          }\n          res = copy;\n        }\n      } else if (handleAsObjectInI18nFormat && typeof joinArrays === 'string' && resType === '[object Array]') {\n        res = res.join(joinArrays);\n        if (res) res = this.extendTranslation(res, keys, options, lastKey);\n      } else {\n        var usedDefault = false;\n        var usedKey = false;\n        var needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n        var hasDefaultValue = Translator.hasDefaultValue(options);\n        var defaultValueSuffix = needsPluralHandling ? this.pluralResolver.getSuffix(lng, options.count, options) : '';\n        var defaultValue = options[\"defaultValue\".concat(defaultValueSuffix)] || options.defaultValue;\n        if (!this.isValidLookup(res) && hasDefaultValue) {\n          usedDefault = true;\n          res = defaultValue;\n        }\n        if (!this.isValidLookup(res)) {\n          usedKey = true;\n          res = key;\n        }\n        var missingKeyNoValueFallbackToKey = options.missingKeyNoValueFallbackToKey || this.options.missingKeyNoValueFallbackToKey;\n        var resForMissing = missingKeyNoValueFallbackToKey && usedKey ? undefined : res;\n        var updateMissing = hasDefaultValue && defaultValue !== res && this.options.updateMissing;\n        if (usedKey || usedDefault || updateMissing) {\n          this.logger.log(updateMissing ? 'updateKey' : 'missingKey', lng, namespace, key, updateMissing ? defaultValue : res);\n          if (keySeparator) {\n            var fk = this.resolve(key, _objectSpread$4(_objectSpread$4({}, options), {}, {\n              keySeparator: false\n            }));\n            if (fk && fk.res) this.logger.warn('Seems the loaded translations were in flat JSON format instead of nested. Either set keySeparator: false on init or make sure your translations are published in nested format.');\n          }\n          var lngs = [];\n          var fallbackLngs = this.languageUtils.getFallbackCodes(this.options.fallbackLng, options.lng || this.language);\n          if (this.options.saveMissingTo === 'fallback' && fallbackLngs && fallbackLngs[0]) {\n            for (var i = 0; i < fallbackLngs.length; i++) {\n              lngs.push(fallbackLngs[i]);\n            }\n          } else if (this.options.saveMissingTo === 'all') {\n            lngs = this.languageUtils.toResolveHierarchy(options.lng || this.language);\n          } else {\n            lngs.push(options.lng || this.language);\n          }\n          var send = function send(l, k, specificDefaultValue) {\n            var defaultForMissing = hasDefaultValue && specificDefaultValue !== res ? specificDefaultValue : resForMissing;\n            if (_this2.options.missingKeyHandler) {\n              _this2.options.missingKeyHandler(l, namespace, k, defaultForMissing, updateMissing, options);\n            } else if (_this2.backendConnector && _this2.backendConnector.saveMissing) {\n              _this2.backendConnector.saveMissing(l, namespace, k, defaultForMissing, updateMissing, options);\n            }\n            _this2.emit('missingKey', l, namespace, k, res);\n          };\n          if (this.options.saveMissing) {\n            if (this.options.saveMissingPlurals && needsPluralHandling) {\n              lngs.forEach(function (language) {\n                _this2.pluralResolver.getSuffixes(language, options).forEach(function (suffix) {\n                  send([language], key + suffix, options[\"defaultValue\".concat(suffix)] || defaultValue);\n                });\n              });\n            } else {\n              send(lngs, key, defaultValue);\n            }\n          }\n        }\n        res = this.extendTranslation(res, keys, options, resolved, lastKey);\n        if (usedKey && res === key && this.options.appendNamespaceToMissingKey) res = \"\".concat(namespace, \":\").concat(key);\n        if ((usedKey || usedDefault) && this.options.parseMissingKeyHandler) {\n          if (this.options.compatibilityAPI !== 'v1') {\n            res = this.options.parseMissingKeyHandler(this.options.appendNamespaceToMissingKey ? \"\".concat(namespace, \":\").concat(key) : key, usedDefault ? res : undefined);\n          } else {\n            res = this.options.parseMissingKeyHandler(res);\n          }\n        }\n      }\n      if (returnDetails) {\n        resolved.res = res;\n        return resolved;\n      }\n      return res;\n    }\n  }, {\n    key: \"extendTranslation\",\n    value: function extendTranslation(res, key, options, resolved, lastKey) {\n      var _this3 = this;\n      if (this.i18nFormat && this.i18nFormat.parse) {\n        res = this.i18nFormat.parse(res, _objectSpread$4(_objectSpread$4({}, this.options.interpolation.defaultVariables), options), resolved.usedLng, resolved.usedNS, resolved.usedKey, {\n          resolved: resolved\n        });\n      } else if (!options.skipInterpolation) {\n        if (options.interpolation) this.interpolator.init(_objectSpread$4(_objectSpread$4({}, options), {\n          interpolation: _objectSpread$4(_objectSpread$4({}, this.options.interpolation), options.interpolation)\n        }));\n        var skipOnVariables = typeof res === 'string' && (options && options.interpolation && options.interpolation.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables);\n        var nestBef;\n        if (skipOnVariables) {\n          var nb = res.match(this.interpolator.nestingRegexp);\n          nestBef = nb && nb.length;\n        }\n        var data = options.replace && typeof options.replace !== 'string' ? options.replace : options;\n        if (this.options.interpolation.defaultVariables) data = _objectSpread$4(_objectSpread$4({}, this.options.interpolation.defaultVariables), data);\n        res = this.interpolator.interpolate(res, data, options.lng || this.language, options);\n        if (skipOnVariables) {\n          var na = res.match(this.interpolator.nestingRegexp);\n          var nestAft = na && na.length;\n          if (nestBef < nestAft) options.nest = false;\n        }\n        if (!options.lng && this.options.compatibilityAPI !== 'v1' && resolved && resolved.res) options.lng = resolved.usedLng;\n        if (options.nest !== false) res = this.interpolator.nest(res, function () {\n          for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n            args[_key] = arguments[_key];\n          }\n          if (lastKey && lastKey[0] === args[0] && !options.context) {\n            _this3.logger.warn(\"It seems you are nesting recursively key: \".concat(args[0], \" in key: \").concat(key[0]));\n            return null;\n          }\n          return _this3.translate.apply(_this3, args.concat([key]));\n        }, options);\n        if (options.interpolation) this.interpolator.reset();\n      }\n      var postProcess = options.postProcess || this.options.postProcess;\n      var postProcessorNames = typeof postProcess === 'string' ? [postProcess] : postProcess;\n      if (res !== undefined && res !== null && postProcessorNames && postProcessorNames.length && options.applyPostProcessor !== false) {\n        res = postProcessor.handle(postProcessorNames, res, key, this.options && this.options.postProcessPassResolved ? _objectSpread$4({\n          i18nResolved: resolved\n        }, options) : options, this);\n      }\n      return res;\n    }\n  }, {\n    key: \"resolve\",\n    value: function resolve(keys) {\n      var _this4 = this;\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      var found;\n      var usedKey;\n      var exactUsedKey;\n      var usedLng;\n      var usedNS;\n      if (typeof keys === 'string') keys = [keys];\n      keys.forEach(function (k) {\n        if (_this4.isValidLookup(found)) return;\n        var extracted = _this4.extractFromKey(k, options);\n        var key = extracted.key;\n        usedKey = key;\n        var namespaces = extracted.namespaces;\n        if (_this4.options.fallbackNS) namespaces = namespaces.concat(_this4.options.fallbackNS);\n        var needsPluralHandling = options.count !== undefined && typeof options.count !== 'string';\n        var needsZeroSuffixLookup = needsPluralHandling && !options.ordinal && options.count === 0 && _this4.pluralResolver.shouldUseIntlApi();\n        var needsContextHandling = options.context !== undefined && (typeof options.context === 'string' || typeof options.context === 'number') && options.context !== '';\n        var codes = options.lngs ? options.lngs : _this4.languageUtils.toResolveHierarchy(options.lng || _this4.language, options.fallbackLng);\n        namespaces.forEach(function (ns) {\n          if (_this4.isValidLookup(found)) return;\n          usedNS = ns;\n          if (!checkedLoadedFor[\"\".concat(codes[0], \"-\").concat(ns)] && _this4.utils && _this4.utils.hasLoadedNamespace && !_this4.utils.hasLoadedNamespace(usedNS)) {\n            checkedLoadedFor[\"\".concat(codes[0], \"-\").concat(ns)] = true;\n            _this4.logger.warn(\"key \\\"\".concat(usedKey, \"\\\" for languages \\\"\").concat(codes.join(', '), \"\\\" won't get resolved as namespace \\\"\").concat(usedNS, \"\\\" was not yet loaded\"), 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n          }\n          codes.forEach(function (code) {\n            if (_this4.isValidLookup(found)) return;\n            usedLng = code;\n            var finalKeys = [key];\n            if (_this4.i18nFormat && _this4.i18nFormat.addLookupKeys) {\n              _this4.i18nFormat.addLookupKeys(finalKeys, key, code, ns, options);\n            } else {\n              var pluralSuffix;\n              if (needsPluralHandling) pluralSuffix = _this4.pluralResolver.getSuffix(code, options.count, options);\n              var zeroSuffix = \"\".concat(_this4.options.pluralSeparator, \"zero\");\n              if (needsPluralHandling) {\n                finalKeys.push(key + pluralSuffix);\n                if (needsZeroSuffixLookup) {\n                  finalKeys.push(key + zeroSuffix);\n                }\n              }\n              if (needsContextHandling) {\n                var contextKey = \"\".concat(key).concat(_this4.options.contextSeparator).concat(options.context);\n                finalKeys.push(contextKey);\n                if (needsPluralHandling) {\n                  finalKeys.push(contextKey + pluralSuffix);\n                  if (needsZeroSuffixLookup) {\n                    finalKeys.push(contextKey + zeroSuffix);\n                  }\n                }\n              }\n            }\n            var possibleKey;\n            while (possibleKey = finalKeys.pop()) {\n              if (!_this4.isValidLookup(found)) {\n                exactUsedKey = possibleKey;\n                found = _this4.getResource(code, ns, possibleKey, options);\n              }\n            }\n          });\n        });\n      });\n      return {\n        res: found,\n        usedKey: usedKey,\n        exactUsedKey: exactUsedKey,\n        usedLng: usedLng,\n        usedNS: usedNS\n      };\n    }\n  }, {\n    key: \"isValidLookup\",\n    value: function isValidLookup(res) {\n      return res !== undefined && !(!this.options.returnNull && res === null) && !(!this.options.returnEmptyString && res === '');\n    }\n  }, {\n    key: \"getResource\",\n    value: function getResource(code, ns, key) {\n      var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n      if (this.i18nFormat && this.i18nFormat.getResource) return this.i18nFormat.getResource(code, ns, key, options);\n      return this.resourceStore.getResource(code, ns, key, options);\n    }\n  }], [{\n    key: \"hasDefaultValue\",\n    value: function hasDefaultValue(options) {\n      var prefix = 'defaultValue';\n      for (var option in options) {\n        if (Object.prototype.hasOwnProperty.call(options, option) && prefix === option.substring(0, prefix.length) && undefined !== options[option]) {\n          return true;\n        }\n      }\n      return false;\n    }\n  }]);\n  return Translator;\n}(EventEmitter);\n\nfunction capitalize(string) {\n  return string.charAt(0).toUpperCase() + string.slice(1);\n}\nvar LanguageUtil = function () {\n  function LanguageUtil(options) {\n    _classCallCheck(this, LanguageUtil);\n    this.options = options;\n    this.supportedLngs = this.options.supportedLngs || false;\n    this.logger = baseLogger.create('languageUtils');\n  }\n  _createClass(LanguageUtil, [{\n    key: \"getScriptPartFromCode\",\n    value: function getScriptPartFromCode(code) {\n      if (!code || code.indexOf('-') < 0) return null;\n      var p = code.split('-');\n      if (p.length === 2) return null;\n      p.pop();\n      if (p[p.length - 1].toLowerCase() === 'x') return null;\n      return this.formatLanguageCode(p.join('-'));\n    }\n  }, {\n    key: \"getLanguagePartFromCode\",\n    value: function getLanguagePartFromCode(code) {\n      if (!code || code.indexOf('-') < 0) return code;\n      var p = code.split('-');\n      return this.formatLanguageCode(p[0]);\n    }\n  }, {\n    key: \"formatLanguageCode\",\n    value: function formatLanguageCode(code) {\n      if (typeof code === 'string' && code.indexOf('-') > -1) {\n        var specialCases = ['hans', 'hant', 'latn', 'cyrl', 'cans', 'mong', 'arab'];\n        var p = code.split('-');\n        if (this.options.lowerCaseLng) {\n          p = p.map(function (part) {\n            return part.toLowerCase();\n          });\n        } else if (p.length === 2) {\n          p[0] = p[0].toLowerCase();\n          p[1] = p[1].toUpperCase();\n          if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n        } else if (p.length === 3) {\n          p[0] = p[0].toLowerCase();\n          if (p[1].length === 2) p[1] = p[1].toUpperCase();\n          if (p[0] !== 'sgn' && p[2].length === 2) p[2] = p[2].toUpperCase();\n          if (specialCases.indexOf(p[1].toLowerCase()) > -1) p[1] = capitalize(p[1].toLowerCase());\n          if (specialCases.indexOf(p[2].toLowerCase()) > -1) p[2] = capitalize(p[2].toLowerCase());\n        }\n        return p.join('-');\n      }\n      return this.options.cleanCode || this.options.lowerCaseLng ? code.toLowerCase() : code;\n    }\n  }, {\n    key: \"isSupportedCode\",\n    value: function isSupportedCode(code) {\n      if (this.options.load === 'languageOnly' || this.options.nonExplicitSupportedLngs) {\n        code = this.getLanguagePartFromCode(code);\n      }\n      return !this.supportedLngs || !this.supportedLngs.length || this.supportedLngs.indexOf(code) > -1;\n    }\n  }, {\n    key: \"getBestMatchFromCodes\",\n    value: function getBestMatchFromCodes(codes) {\n      var _this = this;\n      if (!codes) return null;\n      var found;\n      codes.forEach(function (code) {\n        if (found) return;\n        var cleanedLng = _this.formatLanguageCode(code);\n        if (!_this.options.supportedLngs || _this.isSupportedCode(cleanedLng)) found = cleanedLng;\n      });\n      if (!found && this.options.supportedLngs) {\n        codes.forEach(function (code) {\n          if (found) return;\n          var lngOnly = _this.getLanguagePartFromCode(code);\n          if (_this.isSupportedCode(lngOnly)) return found = lngOnly;\n          found = _this.options.supportedLngs.find(function (supportedLng) {\n            if (supportedLng === lngOnly) return supportedLng;\n            if (supportedLng.indexOf('-') < 0 && lngOnly.indexOf('-') < 0) return;\n            if (supportedLng.indexOf(lngOnly) === 0) return supportedLng;\n          });\n        });\n      }\n      if (!found) found = this.getFallbackCodes(this.options.fallbackLng)[0];\n      return found;\n    }\n  }, {\n    key: \"getFallbackCodes\",\n    value: function getFallbackCodes(fallbacks, code) {\n      if (!fallbacks) return [];\n      if (typeof fallbacks === 'function') fallbacks = fallbacks(code);\n      if (typeof fallbacks === 'string') fallbacks = [fallbacks];\n      if (Object.prototype.toString.apply(fallbacks) === '[object Array]') return fallbacks;\n      if (!code) return fallbacks[\"default\"] || [];\n      var found = fallbacks[code];\n      if (!found) found = fallbacks[this.getScriptPartFromCode(code)];\n      if (!found) found = fallbacks[this.formatLanguageCode(code)];\n      if (!found) found = fallbacks[this.getLanguagePartFromCode(code)];\n      if (!found) found = fallbacks[\"default\"];\n      return found || [];\n    }\n  }, {\n    key: \"toResolveHierarchy\",\n    value: function toResolveHierarchy(code, fallbackCode) {\n      var _this2 = this;\n      var fallbackCodes = this.getFallbackCodes(fallbackCode || this.options.fallbackLng || [], code);\n      var codes = [];\n      var addCode = function addCode(c) {\n        if (!c) return;\n        if (_this2.isSupportedCode(c)) {\n          codes.push(c);\n        } else {\n          _this2.logger.warn(\"rejecting language code not found in supportedLngs: \".concat(c));\n        }\n      };\n      if (typeof code === 'string' && code.indexOf('-') > -1) {\n        if (this.options.load !== 'languageOnly') addCode(this.formatLanguageCode(code));\n        if (this.options.load !== 'languageOnly' && this.options.load !== 'currentOnly') addCode(this.getScriptPartFromCode(code));\n        if (this.options.load !== 'currentOnly') addCode(this.getLanguagePartFromCode(code));\n      } else if (typeof code === 'string') {\n        addCode(this.formatLanguageCode(code));\n      }\n      fallbackCodes.forEach(function (fc) {\n        if (codes.indexOf(fc) < 0) addCode(_this2.formatLanguageCode(fc));\n      });\n      return codes;\n    }\n  }]);\n  return LanguageUtil;\n}();\n\nvar sets = [{\n  lngs: ['ach', 'ak', 'am', 'arn', 'br', 'fil', 'gun', 'ln', 'mfe', 'mg', 'mi', 'oc', 'pt', 'pt-BR', 'tg', 'tl', 'ti', 'tr', 'uz', 'wa'],\n  nr: [1, 2],\n  fc: 1\n}, {\n  lngs: ['af', 'an', 'ast', 'az', 'bg', 'bn', 'ca', 'da', 'de', 'dev', 'el', 'en', 'eo', 'es', 'et', 'eu', 'fi', 'fo', 'fur', 'fy', 'gl', 'gu', 'ha', 'hi', 'hu', 'hy', 'ia', 'it', 'kk', 'kn', 'ku', 'lb', 'mai', 'ml', 'mn', 'mr', 'nah', 'nap', 'nb', 'ne', 'nl', 'nn', 'no', 'nso', 'pa', 'pap', 'pms', 'ps', 'pt-PT', 'rm', 'sco', 'se', 'si', 'so', 'son', 'sq', 'sv', 'sw', 'ta', 'te', 'tk', 'ur', 'yo'],\n  nr: [1, 2],\n  fc: 2\n}, {\n  lngs: ['ay', 'bo', 'cgg', 'fa', 'ht', 'id', 'ja', 'jbo', 'ka', 'km', 'ko', 'ky', 'lo', 'ms', 'sah', 'su', 'th', 'tt', 'ug', 'vi', 'wo', 'zh'],\n  nr: [1],\n  fc: 3\n}, {\n  lngs: ['be', 'bs', 'cnr', 'dz', 'hr', 'ru', 'sr', 'uk'],\n  nr: [1, 2, 5],\n  fc: 4\n}, {\n  lngs: ['ar'],\n  nr: [0, 1, 2, 3, 11, 100],\n  fc: 5\n}, {\n  lngs: ['cs', 'sk'],\n  nr: [1, 2, 5],\n  fc: 6\n}, {\n  lngs: ['csb', 'pl'],\n  nr: [1, 2, 5],\n  fc: 7\n}, {\n  lngs: ['cy'],\n  nr: [1, 2, 3, 8],\n  fc: 8\n}, {\n  lngs: ['fr'],\n  nr: [1, 2],\n  fc: 9\n}, {\n  lngs: ['ga'],\n  nr: [1, 2, 3, 7, 11],\n  fc: 10\n}, {\n  lngs: ['gd'],\n  nr: [1, 2, 3, 20],\n  fc: 11\n}, {\n  lngs: ['is'],\n  nr: [1, 2],\n  fc: 12\n}, {\n  lngs: ['jv'],\n  nr: [0, 1],\n  fc: 13\n}, {\n  lngs: ['kw'],\n  nr: [1, 2, 3, 4],\n  fc: 14\n}, {\n  lngs: ['lt'],\n  nr: [1, 2, 10],\n  fc: 15\n}, {\n  lngs: ['lv'],\n  nr: [1, 2, 0],\n  fc: 16\n}, {\n  lngs: ['mk'],\n  nr: [1, 2],\n  fc: 17\n}, {\n  lngs: ['mnk'],\n  nr: [0, 1, 2],\n  fc: 18\n}, {\n  lngs: ['mt'],\n  nr: [1, 2, 11, 20],\n  fc: 19\n}, {\n  lngs: ['or'],\n  nr: [2, 1],\n  fc: 2\n}, {\n  lngs: ['ro'],\n  nr: [1, 2, 20],\n  fc: 20\n}, {\n  lngs: ['sl'],\n  nr: [5, 1, 2, 3],\n  fc: 21\n}, {\n  lngs: ['he', 'iw'],\n  nr: [1, 2, 20, 21],\n  fc: 22\n}];\nvar _rulesPluralsTypes = {\n  1: function _(n) {\n    return Number(n > 1);\n  },\n  2: function _(n) {\n    return Number(n != 1);\n  },\n  3: function _(n) {\n    return 0;\n  },\n  4: function _(n) {\n    return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n  },\n  5: function _(n) {\n    return Number(n == 0 ? 0 : n == 1 ? 1 : n == 2 ? 2 : n % 100 >= 3 && n % 100 <= 10 ? 3 : n % 100 >= 11 ? 4 : 5);\n  },\n  6: function _(n) {\n    return Number(n == 1 ? 0 : n >= 2 && n <= 4 ? 1 : 2);\n  },\n  7: function _(n) {\n    return Number(n == 1 ? 0 : n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n  },\n  8: function _(n) {\n    return Number(n == 1 ? 0 : n == 2 ? 1 : n != 8 && n != 11 ? 2 : 3);\n  },\n  9: function _(n) {\n    return Number(n >= 2);\n  },\n  10: function _(n) {\n    return Number(n == 1 ? 0 : n == 2 ? 1 : n < 7 ? 2 : n < 11 ? 3 : 4);\n  },\n  11: function _(n) {\n    return Number(n == 1 || n == 11 ? 0 : n == 2 || n == 12 ? 1 : n > 2 && n < 20 ? 2 : 3);\n  },\n  12: function _(n) {\n    return Number(n % 10 != 1 || n % 100 == 11);\n  },\n  13: function _(n) {\n    return Number(n !== 0);\n  },\n  14: function _(n) {\n    return Number(n == 1 ? 0 : n == 2 ? 1 : n == 3 ? 2 : 3);\n  },\n  15: function _(n) {\n    return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n % 10 >= 2 && (n % 100 < 10 || n % 100 >= 20) ? 1 : 2);\n  },\n  16: function _(n) {\n    return Number(n % 10 == 1 && n % 100 != 11 ? 0 : n !== 0 ? 1 : 2);\n  },\n  17: function _(n) {\n    return Number(n == 1 || n % 10 == 1 && n % 100 != 11 ? 0 : 1);\n  },\n  18: function _(n) {\n    return Number(n == 0 ? 0 : n == 1 ? 1 : 2);\n  },\n  19: function _(n) {\n    return Number(n == 1 ? 0 : n == 0 || n % 100 > 1 && n % 100 < 11 ? 1 : n % 100 > 10 && n % 100 < 20 ? 2 : 3);\n  },\n  20: function _(n) {\n    return Number(n == 1 ? 0 : n == 0 || n % 100 > 0 && n % 100 < 20 ? 1 : 2);\n  },\n  21: function _(n) {\n    return Number(n % 100 == 1 ? 1 : n % 100 == 2 ? 2 : n % 100 == 3 || n % 100 == 4 ? 3 : 0);\n  },\n  22: function _(n) {\n    return Number(n == 1 ? 0 : n == 2 ? 1 : (n < 0 || n > 10) && n % 10 == 0 ? 2 : 3);\n  }\n};\nvar deprecatedJsonVersions = ['v1', 'v2', 'v3'];\nvar suffixesOrder = {\n  zero: 0,\n  one: 1,\n  two: 2,\n  few: 3,\n  many: 4,\n  other: 5\n};\nfunction createRules() {\n  var rules = {};\n  sets.forEach(function (set) {\n    set.lngs.forEach(function (l) {\n      rules[l] = {\n        numbers: set.nr,\n        plurals: _rulesPluralsTypes[set.fc]\n      };\n    });\n  });\n  return rules;\n}\nvar PluralResolver = function () {\n  function PluralResolver(languageUtils) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    _classCallCheck(this, PluralResolver);\n    this.languageUtils = languageUtils;\n    this.options = options;\n    this.logger = baseLogger.create('pluralResolver');\n    if ((!this.options.compatibilityJSON || this.options.compatibilityJSON === 'v4') && (typeof Intl === 'undefined' || !Intl.PluralRules)) {\n      this.options.compatibilityJSON = 'v3';\n      this.logger.error('Your environment seems not to be Intl API compatible, use an Intl.PluralRules polyfill. Will fallback to the compatibilityJSON v3 format handling.');\n    }\n    this.rules = createRules();\n  }\n  _createClass(PluralResolver, [{\n    key: \"addRule\",\n    value: function addRule(lng, obj) {\n      this.rules[lng] = obj;\n    }\n  }, {\n    key: \"getRule\",\n    value: function getRule(code) {\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      if (this.shouldUseIntlApi()) {\n        try {\n          return new Intl.PluralRules(code, {\n            type: options.ordinal ? 'ordinal' : 'cardinal'\n          });\n        } catch (_unused) {\n          return;\n        }\n      }\n      return this.rules[code] || this.rules[this.languageUtils.getLanguagePartFromCode(code)];\n    }\n  }, {\n    key: \"needsPlural\",\n    value: function needsPlural(code) {\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      var rule = this.getRule(code, options);\n      if (this.shouldUseIntlApi()) {\n        return rule && rule.resolvedOptions().pluralCategories.length > 1;\n      }\n      return rule && rule.numbers.length > 1;\n    }\n  }, {\n    key: \"getPluralFormsOfKey\",\n    value: function getPluralFormsOfKey(code, key) {\n      var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n      return this.getSuffixes(code, options).map(function (suffix) {\n        return \"\".concat(key).concat(suffix);\n      });\n    }\n  }, {\n    key: \"getSuffixes\",\n    value: function getSuffixes(code) {\n      var _this = this;\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      var rule = this.getRule(code, options);\n      if (!rule) {\n        return [];\n      }\n      if (this.shouldUseIntlApi()) {\n        return rule.resolvedOptions().pluralCategories.sort(function (pluralCategory1, pluralCategory2) {\n          return suffixesOrder[pluralCategory1] - suffixesOrder[pluralCategory2];\n        }).map(function (pluralCategory) {\n          return \"\".concat(_this.options.prepend).concat(pluralCategory);\n        });\n      }\n      return rule.numbers.map(function (number) {\n        return _this.getSuffix(code, number, options);\n      });\n    }\n  }, {\n    key: \"getSuffix\",\n    value: function getSuffix(code, count) {\n      var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n      var rule = this.getRule(code, options);\n      if (rule) {\n        if (this.shouldUseIntlApi()) {\n          return \"\".concat(this.options.prepend).concat(rule.select(count));\n        }\n        return this.getSuffixRetroCompatible(rule, count);\n      }\n      this.logger.warn(\"no plural rule found for: \".concat(code));\n      return '';\n    }\n  }, {\n    key: \"getSuffixRetroCompatible\",\n    value: function getSuffixRetroCompatible(rule, count) {\n      var _this2 = this;\n      var idx = rule.noAbs ? rule.plurals(count) : rule.plurals(Math.abs(count));\n      var suffix = rule.numbers[idx];\n      if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n        if (suffix === 2) {\n          suffix = 'plural';\n        } else if (suffix === 1) {\n          suffix = '';\n        }\n      }\n      var returnSuffix = function returnSuffix() {\n        return _this2.options.prepend && suffix.toString() ? _this2.options.prepend + suffix.toString() : suffix.toString();\n      };\n      if (this.options.compatibilityJSON === 'v1') {\n        if (suffix === 1) return '';\n        if (typeof suffix === 'number') return \"_plural_\".concat(suffix.toString());\n        return returnSuffix();\n      } else if (this.options.compatibilityJSON === 'v2') {\n        return returnSuffix();\n      } else if (this.options.simplifyPluralSuffix && rule.numbers.length === 2 && rule.numbers[0] === 1) {\n        return returnSuffix();\n      }\n      return this.options.prepend && idx.toString() ? this.options.prepend + idx.toString() : idx.toString();\n    }\n  }, {\n    key: \"shouldUseIntlApi\",\n    value: function shouldUseIntlApi() {\n      return !deprecatedJsonVersions.includes(this.options.compatibilityJSON);\n    }\n  }]);\n  return PluralResolver;\n}();\n\nfunction ownKeys$3(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread$3(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$3(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$3(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction deepFindWithDefaults(data, defaultData, key) {\n  var keySeparator = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : '.';\n  var ignoreJSONStructure = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : true;\n  var path = getPathWithDefaults(data, defaultData, key);\n  if (!path && ignoreJSONStructure && typeof key === 'string') {\n    path = deepFind(data, key, keySeparator);\n    if (path === undefined) path = deepFind(defaultData, key, keySeparator);\n  }\n  return path;\n}\nvar Interpolator = function () {\n  function Interpolator() {\n    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    _classCallCheck(this, Interpolator);\n    this.logger = baseLogger.create('interpolator');\n    this.options = options;\n    this.format = options.interpolation && options.interpolation.format || function (value) {\n      return value;\n    };\n    this.init(options);\n  }\n  _createClass(Interpolator, [{\n    key: \"init\",\n    value: function init() {\n      var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      if (!options.interpolation) options.interpolation = {\n        escapeValue: true\n      };\n      var iOpts = options.interpolation;\n      this.escape = iOpts.escape !== undefined ? iOpts.escape : escape;\n      this.escapeValue = iOpts.escapeValue !== undefined ? iOpts.escapeValue : true;\n      this.useRawValueToEscape = iOpts.useRawValueToEscape !== undefined ? iOpts.useRawValueToEscape : false;\n      this.prefix = iOpts.prefix ? regexEscape(iOpts.prefix) : iOpts.prefixEscaped || '{{';\n      this.suffix = iOpts.suffix ? regexEscape(iOpts.suffix) : iOpts.suffixEscaped || '}}';\n      this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ',';\n      this.unescapePrefix = iOpts.unescapeSuffix ? '' : iOpts.unescapePrefix || '-';\n      this.unescapeSuffix = this.unescapePrefix ? '' : iOpts.unescapeSuffix || '';\n      this.nestingPrefix = iOpts.nestingPrefix ? regexEscape(iOpts.nestingPrefix) : iOpts.nestingPrefixEscaped || regexEscape('$t(');\n      this.nestingSuffix = iOpts.nestingSuffix ? regexEscape(iOpts.nestingSuffix) : iOpts.nestingSuffixEscaped || regexEscape(')');\n      this.nestingOptionsSeparator = iOpts.nestingOptionsSeparator ? iOpts.nestingOptionsSeparator : iOpts.nestingOptionsSeparator || ',';\n      this.maxReplaces = iOpts.maxReplaces ? iOpts.maxReplaces : 1000;\n      this.alwaysFormat = iOpts.alwaysFormat !== undefined ? iOpts.alwaysFormat : false;\n      this.resetRegExp();\n    }\n  }, {\n    key: \"reset\",\n    value: function reset() {\n      if (this.options) this.init(this.options);\n    }\n  }, {\n    key: \"resetRegExp\",\n    value: function resetRegExp() {\n      var regexpStr = \"\".concat(this.prefix, \"(.+?)\").concat(this.suffix);\n      this.regexp = new RegExp(regexpStr, 'g');\n      var regexpUnescapeStr = \"\".concat(this.prefix).concat(this.unescapePrefix, \"(.+?)\").concat(this.unescapeSuffix).concat(this.suffix);\n      this.regexpUnescape = new RegExp(regexpUnescapeStr, 'g');\n      var nestingRegexpStr = \"\".concat(this.nestingPrefix, \"(.+?)\").concat(this.nestingSuffix);\n      this.nestingRegexp = new RegExp(nestingRegexpStr, 'g');\n    }\n  }, {\n    key: \"interpolate\",\n    value: function interpolate(str, data, lng, options) {\n      var _this = this;\n      var match;\n      var value;\n      var replaces;\n      var defaultData = this.options && this.options.interpolation && this.options.interpolation.defaultVariables || {};\n      function regexSafe(val) {\n        return val.replace(/\\$/g, '$$$$');\n      }\n      var handleFormat = function handleFormat(key) {\n        if (key.indexOf(_this.formatSeparator) < 0) {\n          var path = deepFindWithDefaults(data, defaultData, key, _this.options.keySeparator, _this.options.ignoreJSONStructure);\n          return _this.alwaysFormat ? _this.format(path, undefined, lng, _objectSpread$3(_objectSpread$3(_objectSpread$3({}, options), data), {}, {\n            interpolationkey: key\n          })) : path;\n        }\n        var p = key.split(_this.formatSeparator);\n        var k = p.shift().trim();\n        var f = p.join(_this.formatSeparator).trim();\n        return _this.format(deepFindWithDefaults(data, defaultData, k, _this.options.keySeparator, _this.options.ignoreJSONStructure), f, lng, _objectSpread$3(_objectSpread$3(_objectSpread$3({}, options), data), {}, {\n          interpolationkey: k\n        }));\n      };\n      this.resetRegExp();\n      var missingInterpolationHandler = options && options.missingInterpolationHandler || this.options.missingInterpolationHandler;\n      var skipOnVariables = options && options.interpolation && options.interpolation.skipOnVariables !== undefined ? options.interpolation.skipOnVariables : this.options.interpolation.skipOnVariables;\n      var todos = [{\n        regex: this.regexpUnescape,\n        safeValue: function safeValue(val) {\n          return regexSafe(val);\n        }\n      }, {\n        regex: this.regexp,\n        safeValue: function safeValue(val) {\n          return _this.escapeValue ? regexSafe(_this.escape(val)) : regexSafe(val);\n        }\n      }];\n      todos.forEach(function (todo) {\n        replaces = 0;\n        while (match = todo.regex.exec(str)) {\n          var matchedVar = match[1].trim();\n          value = handleFormat(matchedVar);\n          if (value === undefined) {\n            if (typeof missingInterpolationHandler === 'function') {\n              var temp = missingInterpolationHandler(str, match, options);\n              value = typeof temp === 'string' ? temp : '';\n            } else if (options && Object.prototype.hasOwnProperty.call(options, matchedVar)) {\n              value = '';\n            } else if (skipOnVariables) {\n              value = match[0];\n              continue;\n            } else {\n              _this.logger.warn(\"missed to pass in variable \".concat(matchedVar, \" for interpolating \").concat(str));\n              value = '';\n            }\n          } else if (typeof value !== 'string' && !_this.useRawValueToEscape) {\n            value = makeString(value);\n          }\n          var safeValue = todo.safeValue(value);\n          str = str.replace(match[0], safeValue);\n          if (skipOnVariables) {\n            todo.regex.lastIndex += value.length;\n            todo.regex.lastIndex -= match[0].length;\n          } else {\n            todo.regex.lastIndex = 0;\n          }\n          replaces++;\n          if (replaces >= _this.maxReplaces) {\n            break;\n          }\n        }\n      });\n      return str;\n    }\n  }, {\n    key: \"nest\",\n    value: function nest(str, fc) {\n      var _this2 = this;\n      var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n      var match;\n      var value;\n      var clonedOptions;\n      function handleHasOptions(key, inheritedOptions) {\n        var sep = this.nestingOptionsSeparator;\n        if (key.indexOf(sep) < 0) return key;\n        var c = key.split(new RegExp(\"\".concat(sep, \"[ ]*{\")));\n        var optionsString = \"{\".concat(c[1]);\n        key = c[0];\n        optionsString = this.interpolate(optionsString, clonedOptions);\n        var matchedSingleQuotes = optionsString.match(/'/g);\n        var matchedDoubleQuotes = optionsString.match(/\"/g);\n        if (matchedSingleQuotes && matchedSingleQuotes.length % 2 === 0 && !matchedDoubleQuotes || matchedDoubleQuotes.length % 2 !== 0) {\n          optionsString = optionsString.replace(/'/g, '\"');\n        }\n        try {\n          clonedOptions = JSON.parse(optionsString);\n          if (inheritedOptions) clonedOptions = _objectSpread$3(_objectSpread$3({}, inheritedOptions), clonedOptions);\n        } catch (e) {\n          this.logger.warn(\"failed parsing options string in nesting for key \".concat(key), e);\n          return \"\".concat(key).concat(sep).concat(optionsString);\n        }\n        delete clonedOptions.defaultValue;\n        return key;\n      }\n      while (match = this.nestingRegexp.exec(str)) {\n        var formatters = [];\n        clonedOptions = _objectSpread$3({}, options);\n        clonedOptions = clonedOptions.replace && typeof clonedOptions.replace !== 'string' ? clonedOptions.replace : clonedOptions;\n        clonedOptions.applyPostProcessor = false;\n        delete clonedOptions.defaultValue;\n        var doReduce = false;\n        if (match[0].indexOf(this.formatSeparator) !== -1 && !/{.*}/.test(match[1])) {\n          var r = match[1].split(this.formatSeparator).map(function (elem) {\n            return elem.trim();\n          });\n          match[1] = r.shift();\n          formatters = r;\n          doReduce = true;\n        }\n        value = fc(handleHasOptions.call(this, match[1].trim(), clonedOptions), clonedOptions);\n        if (value && match[0] === str && typeof value !== 'string') return value;\n        if (typeof value !== 'string') value = makeString(value);\n        if (!value) {\n          this.logger.warn(\"missed to resolve \".concat(match[1], \" for nesting \").concat(str));\n          value = '';\n        }\n        if (doReduce) {\n          value = formatters.reduce(function (v, f) {\n            return _this2.format(v, f, options.lng, _objectSpread$3(_objectSpread$3({}, options), {}, {\n              interpolationkey: match[1].trim()\n            }));\n          }, value.trim());\n        }\n        str = str.replace(match[0], value);\n        this.regexp.lastIndex = 0;\n      }\n      return str;\n    }\n  }]);\n  return Interpolator;\n}();\n\nfunction ownKeys$2(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread$2(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$2(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$2(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction parseFormatStr(formatStr) {\n  var formatName = formatStr.toLowerCase().trim();\n  var formatOptions = {};\n  if (formatStr.indexOf('(') > -1) {\n    var p = formatStr.split('(');\n    formatName = p[0].toLowerCase().trim();\n    var optStr = p[1].substring(0, p[1].length - 1);\n    if (formatName === 'currency' && optStr.indexOf(':') < 0) {\n      if (!formatOptions.currency) formatOptions.currency = optStr.trim();\n    } else if (formatName === 'relativetime' && optStr.indexOf(':') < 0) {\n      if (!formatOptions.range) formatOptions.range = optStr.trim();\n    } else {\n      var opts = optStr.split(';');\n      opts.forEach(function (opt) {\n        if (!opt) return;\n        var _opt$split = opt.split(':'),\n          _opt$split2 = _toArray(_opt$split),\n          key = _opt$split2[0],\n          rest = _opt$split2.slice(1);\n        var val = rest.join(':').trim().replace(/^'+|'+$/g, '');\n        if (!formatOptions[key.trim()]) formatOptions[key.trim()] = val;\n        if (val === 'false') formatOptions[key.trim()] = false;\n        if (val === 'true') formatOptions[key.trim()] = true;\n        if (!isNaN(val)) formatOptions[key.trim()] = parseInt(val, 10);\n      });\n    }\n  }\n  return {\n    formatName: formatName,\n    formatOptions: formatOptions\n  };\n}\nfunction createCachedFormatter(fn) {\n  var cache = {};\n  return function invokeFormatter(val, lng, options) {\n    var key = lng + JSON.stringify(options);\n    var formatter = cache[key];\n    if (!formatter) {\n      formatter = fn(lng, options);\n      cache[key] = formatter;\n    }\n    return formatter(val);\n  };\n}\nvar Formatter = function () {\n  function Formatter() {\n    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    _classCallCheck(this, Formatter);\n    this.logger = baseLogger.create('formatter');\n    this.options = options;\n    this.formats = {\n      number: createCachedFormatter(function (lng, opt) {\n        var formatter = new Intl.NumberFormat(lng, _objectSpread$2({}, opt));\n        return function (val) {\n          return formatter.format(val);\n        };\n      }),\n      currency: createCachedFormatter(function (lng, opt) {\n        var formatter = new Intl.NumberFormat(lng, _objectSpread$2(_objectSpread$2({}, opt), {}, {\n          style: 'currency'\n        }));\n        return function (val) {\n          return formatter.format(val);\n        };\n      }),\n      datetime: createCachedFormatter(function (lng, opt) {\n        var formatter = new Intl.DateTimeFormat(lng, _objectSpread$2({}, opt));\n        return function (val) {\n          return formatter.format(val);\n        };\n      }),\n      relativetime: createCachedFormatter(function (lng, opt) {\n        var formatter = new Intl.RelativeTimeFormat(lng, _objectSpread$2({}, opt));\n        return function (val) {\n          return formatter.format(val, opt.range || 'day');\n        };\n      }),\n      list: createCachedFormatter(function (lng, opt) {\n        var formatter = new Intl.ListFormat(lng, _objectSpread$2({}, opt));\n        return function (val) {\n          return formatter.format(val);\n        };\n      })\n    };\n    this.init(options);\n  }\n  _createClass(Formatter, [{\n    key: \"init\",\n    value: function init(services) {\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n        interpolation: {}\n      };\n      var iOpts = options.interpolation;\n      this.formatSeparator = iOpts.formatSeparator ? iOpts.formatSeparator : iOpts.formatSeparator || ',';\n    }\n  }, {\n    key: \"add\",\n    value: function add(name, fc) {\n      this.formats[name.toLowerCase().trim()] = fc;\n    }\n  }, {\n    key: \"addCached\",\n    value: function addCached(name, fc) {\n      this.formats[name.toLowerCase().trim()] = createCachedFormatter(fc);\n    }\n  }, {\n    key: \"format\",\n    value: function format(value, _format, lng) {\n      var _this = this;\n      var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n      var formats = _format.split(this.formatSeparator);\n      var result = formats.reduce(function (mem, f) {\n        var _parseFormatStr = parseFormatStr(f),\n          formatName = _parseFormatStr.formatName,\n          formatOptions = _parseFormatStr.formatOptions;\n        if (_this.formats[formatName]) {\n          var formatted = mem;\n          try {\n            var valOptions = options && options.formatParams && options.formatParams[options.interpolationkey] || {};\n            var l = valOptions.locale || valOptions.lng || options.locale || options.lng || lng;\n            formatted = _this.formats[formatName](mem, l, _objectSpread$2(_objectSpread$2(_objectSpread$2({}, formatOptions), options), valOptions));\n          } catch (error) {\n            _this.logger.warn(error);\n          }\n          return formatted;\n        } else {\n          _this.logger.warn(\"there was no format function for \".concat(formatName));\n        }\n        return mem;\n      }, value);\n      return result;\n    }\n  }]);\n  return Formatter;\n}();\n\nfunction ownKeys$1(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread$1(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys$1(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys$1(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper$1(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct$1(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct$1() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction removePending(q, name) {\n  if (q.pending[name] !== undefined) {\n    delete q.pending[name];\n    q.pendingCount--;\n  }\n}\nvar Connector = function (_EventEmitter) {\n  _inherits(Connector, _EventEmitter);\n  var _super = _createSuper$1(Connector);\n  function Connector(backend, store, services) {\n    var _this;\n    var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n    _classCallCheck(this, Connector);\n    _this = _super.call(this);\n    if (isIE10) {\n      EventEmitter.call(_assertThisInitialized(_this));\n    }\n    _this.backend = backend;\n    _this.store = store;\n    _this.services = services;\n    _this.languageUtils = services.languageUtils;\n    _this.options = options;\n    _this.logger = baseLogger.create('backendConnector');\n    _this.waitingReads = [];\n    _this.maxParallelReads = options.maxParallelReads || 10;\n    _this.readingCalls = 0;\n    _this.maxRetries = options.maxRetries >= 0 ? options.maxRetries : 5;\n    _this.retryTimeout = options.retryTimeout >= 1 ? options.retryTimeout : 350;\n    _this.state = {};\n    _this.queue = [];\n    if (_this.backend && _this.backend.init) {\n      _this.backend.init(services, options.backend, options);\n    }\n    return _this;\n  }\n  _createClass(Connector, [{\n    key: \"queueLoad\",\n    value: function queueLoad(languages, namespaces, options, callback) {\n      var _this2 = this;\n      var toLoad = {};\n      var pending = {};\n      var toLoadLanguages = {};\n      var toLoadNamespaces = {};\n      languages.forEach(function (lng) {\n        var hasAllNamespaces = true;\n        namespaces.forEach(function (ns) {\n          var name = \"\".concat(lng, \"|\").concat(ns);\n          if (!options.reload && _this2.store.hasResourceBundle(lng, ns)) {\n            _this2.state[name] = 2;\n          } else if (_this2.state[name] < 0) ; else if (_this2.state[name] === 1) {\n            if (pending[name] === undefined) pending[name] = true;\n          } else {\n            _this2.state[name] = 1;\n            hasAllNamespaces = false;\n            if (pending[name] === undefined) pending[name] = true;\n            if (toLoad[name] === undefined) toLoad[name] = true;\n            if (toLoadNamespaces[ns] === undefined) toLoadNamespaces[ns] = true;\n          }\n        });\n        if (!hasAllNamespaces) toLoadLanguages[lng] = true;\n      });\n      if (Object.keys(toLoad).length || Object.keys(pending).length) {\n        this.queue.push({\n          pending: pending,\n          pendingCount: Object.keys(pending).length,\n          loaded: {},\n          errors: [],\n          callback: callback\n        });\n      }\n      return {\n        toLoad: Object.keys(toLoad),\n        pending: Object.keys(pending),\n        toLoadLanguages: Object.keys(toLoadLanguages),\n        toLoadNamespaces: Object.keys(toLoadNamespaces)\n      };\n    }\n  }, {\n    key: \"loaded\",\n    value: function loaded(name, err, data) {\n      var s = name.split('|');\n      var lng = s[0];\n      var ns = s[1];\n      if (err) this.emit('failedLoading', lng, ns, err);\n      if (data) {\n        this.store.addResourceBundle(lng, ns, data);\n      }\n      this.state[name] = err ? -1 : 2;\n      var loaded = {};\n      this.queue.forEach(function (q) {\n        pushPath(q.loaded, [lng], ns);\n        removePending(q, name);\n        if (err) q.errors.push(err);\n        if (q.pendingCount === 0 && !q.done) {\n          Object.keys(q.loaded).forEach(function (l) {\n            if (!loaded[l]) loaded[l] = {};\n            var loadedKeys = q.loaded[l];\n            if (loadedKeys.length) {\n              loadedKeys.forEach(function (n) {\n                if (loaded[l][n] === undefined) loaded[l][n] = true;\n              });\n            }\n          });\n          q.done = true;\n          if (q.errors.length) {\n            q.callback(q.errors);\n          } else {\n            q.callback();\n          }\n        }\n      });\n      this.emit('loaded', loaded);\n      this.queue = this.queue.filter(function (q) {\n        return !q.done;\n      });\n    }\n  }, {\n    key: \"read\",\n    value: function read(lng, ns, fcName) {\n      var _this3 = this;\n      var tried = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n      var wait = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : this.retryTimeout;\n      var callback = arguments.length > 5 ? arguments[5] : undefined;\n      if (!lng.length) return callback(null, {});\n      if (this.readingCalls >= this.maxParallelReads) {\n        this.waitingReads.push({\n          lng: lng,\n          ns: ns,\n          fcName: fcName,\n          tried: tried,\n          wait: wait,\n          callback: callback\n        });\n        return;\n      }\n      this.readingCalls++;\n      var resolver = function resolver(err, data) {\n        _this3.readingCalls--;\n        if (_this3.waitingReads.length > 0) {\n          var next = _this3.waitingReads.shift();\n          _this3.read(next.lng, next.ns, next.fcName, next.tried, next.wait, next.callback);\n        }\n        if (err && data && tried < _this3.maxRetries) {\n          setTimeout(function () {\n            _this3.read.call(_this3, lng, ns, fcName, tried + 1, wait * 2, callback);\n          }, wait);\n          return;\n        }\n        callback(err, data);\n      };\n      var fc = this.backend[fcName].bind(this.backend);\n      if (fc.length === 2) {\n        try {\n          var r = fc(lng, ns);\n          if (r && typeof r.then === 'function') {\n            r.then(function (data) {\n              return resolver(null, data);\n            })[\"catch\"](resolver);\n          } else {\n            resolver(null, r);\n          }\n        } catch (err) {\n          resolver(err);\n        }\n        return;\n      }\n      return fc(lng, ns, resolver);\n    }\n  }, {\n    key: \"prepareLoading\",\n    value: function prepareLoading(languages, namespaces) {\n      var _this4 = this;\n      var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n      var callback = arguments.length > 3 ? arguments[3] : undefined;\n      if (!this.backend) {\n        this.logger.warn('No backend was added via i18next.use. Will not load resources.');\n        return callback && callback();\n      }\n      if (typeof languages === 'string') languages = this.languageUtils.toResolveHierarchy(languages);\n      if (typeof namespaces === 'string') namespaces = [namespaces];\n      var toLoad = this.queueLoad(languages, namespaces, options, callback);\n      if (!toLoad.toLoad.length) {\n        if (!toLoad.pending.length) callback();\n        return null;\n      }\n      toLoad.toLoad.forEach(function (name) {\n        _this4.loadOne(name);\n      });\n    }\n  }, {\n    key: \"load\",\n    value: function load(languages, namespaces, callback) {\n      this.prepareLoading(languages, namespaces, {}, callback);\n    }\n  }, {\n    key: \"reload\",\n    value: function reload(languages, namespaces, callback) {\n      this.prepareLoading(languages, namespaces, {\n        reload: true\n      }, callback);\n    }\n  }, {\n    key: \"loadOne\",\n    value: function loadOne(name) {\n      var _this5 = this;\n      var prefix = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';\n      var s = name.split('|');\n      var lng = s[0];\n      var ns = s[1];\n      this.read(lng, ns, 'read', undefined, undefined, function (err, data) {\n        if (err) _this5.logger.warn(\"\".concat(prefix, \"loading namespace \").concat(ns, \" for language \").concat(lng, \" failed\"), err);\n        if (!err && data) _this5.logger.log(\"\".concat(prefix, \"loaded namespace \").concat(ns, \" for language \").concat(lng), data);\n        _this5.loaded(name, err, data);\n      });\n    }\n  }, {\n    key: \"saveMissing\",\n    value: function saveMissing(languages, namespace, key, fallbackValue, isUpdate) {\n      var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n      var clb = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : function () {};\n      if (this.services.utils && this.services.utils.hasLoadedNamespace && !this.services.utils.hasLoadedNamespace(namespace)) {\n        this.logger.warn(\"did not save key \\\"\".concat(key, \"\\\" as the namespace \\\"\").concat(namespace, \"\\\" was not yet loaded\"), 'This means something IS WRONG in your setup. You access the t function before i18next.init / i18next.loadNamespace / i18next.changeLanguage was done. Wait for the callback or Promise to resolve before accessing it!!!');\n        return;\n      }\n      if (key === undefined || key === null || key === '') return;\n      if (this.backend && this.backend.create) {\n        var opts = _objectSpread$1(_objectSpread$1({}, options), {}, {\n          isUpdate: isUpdate\n        });\n        var fc = this.backend.create.bind(this.backend);\n        if (fc.length < 6) {\n          try {\n            var r;\n            if (fc.length === 5) {\n              r = fc(languages, namespace, key, fallbackValue, opts);\n            } else {\n              r = fc(languages, namespace, key, fallbackValue);\n            }\n            if (r && typeof r.then === 'function') {\n              r.then(function (data) {\n                return clb(null, data);\n              })[\"catch\"](clb);\n            } else {\n              clb(null, r);\n            }\n          } catch (err) {\n            clb(err);\n          }\n        } else {\n          fc(languages, namespace, key, fallbackValue, clb, opts);\n        }\n      }\n      if (!languages || !languages[0]) return;\n      this.store.addResource(languages[0], namespace, key, fallbackValue);\n    }\n  }]);\n  return Connector;\n}(EventEmitter);\n\nfunction get() {\n  return {\n    debug: false,\n    initImmediate: true,\n    ns: ['translation'],\n    defaultNS: ['translation'],\n    fallbackLng: ['dev'],\n    fallbackNS: false,\n    supportedLngs: false,\n    nonExplicitSupportedLngs: false,\n    load: 'all',\n    preload: false,\n    simplifyPluralSuffix: true,\n    keySeparator: '.',\n    nsSeparator: ':',\n    pluralSeparator: '_',\n    contextSeparator: '_',\n    partialBundledLanguages: false,\n    saveMissing: false,\n    updateMissing: false,\n    saveMissingTo: 'fallback',\n    saveMissingPlurals: true,\n    missingKeyHandler: false,\n    missingInterpolationHandler: false,\n    postProcess: false,\n    postProcessPassResolved: false,\n    returnNull: true,\n    returnEmptyString: true,\n    returnObjects: false,\n    joinArrays: false,\n    returnedObjectHandler: false,\n    parseMissingKeyHandler: false,\n    appendNamespaceToMissingKey: false,\n    appendNamespaceToCIMode: false,\n    overloadTranslationOptionHandler: function handle(args) {\n      var ret = {};\n      if (_typeof(args[1]) === 'object') ret = args[1];\n      if (typeof args[1] === 'string') ret.defaultValue = args[1];\n      if (typeof args[2] === 'string') ret.tDescription = args[2];\n      if (_typeof(args[2]) === 'object' || _typeof(args[3]) === 'object') {\n        var options = args[3] || args[2];\n        Object.keys(options).forEach(function (key) {\n          ret[key] = options[key];\n        });\n      }\n      return ret;\n    },\n    interpolation: {\n      escapeValue: true,\n      format: function format(value, _format, lng, options) {\n        return value;\n      },\n      prefix: '{{',\n      suffix: '}}',\n      formatSeparator: ',',\n      unescapePrefix: '-',\n      nestingPrefix: '$t(',\n      nestingSuffix: ')',\n      nestingOptionsSeparator: ',',\n      maxReplaces: 1000,\n      skipOnVariables: true\n    }\n  };\n}\nfunction transformOptions(options) {\n  if (typeof options.ns === 'string') options.ns = [options.ns];\n  if (typeof options.fallbackLng === 'string') options.fallbackLng = [options.fallbackLng];\n  if (typeof options.fallbackNS === 'string') options.fallbackNS = [options.fallbackNS];\n  if (options.supportedLngs && options.supportedLngs.indexOf('cimode') < 0) {\n    options.supportedLngs = options.supportedLngs.concat(['cimode']);\n  }\n  return options;\n}\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\nfunction noop() {}\nfunction bindMemberFunctions(inst) {\n  var mems = Object.getOwnPropertyNames(Object.getPrototypeOf(inst));\n  mems.forEach(function (mem) {\n    if (typeof inst[mem] === 'function') {\n      inst[mem] = inst[mem].bind(inst);\n    }\n  });\n}\nvar I18n = function (_EventEmitter) {\n  _inherits(I18n, _EventEmitter);\n  var _super = _createSuper(I18n);\n  function I18n() {\n    var _this;\n    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    var callback = arguments.length > 1 ? arguments[1] : undefined;\n    _classCallCheck(this, I18n);\n    _this = _super.call(this);\n    if (isIE10) {\n      EventEmitter.call(_assertThisInitialized(_this));\n    }\n    _this.options = transformOptions(options);\n    _this.services = {};\n    _this.logger = baseLogger;\n    _this.modules = {\n      external: []\n    };\n    bindMemberFunctions(_assertThisInitialized(_this));\n    if (callback && !_this.isInitialized && !options.isClone) {\n      if (!_this.options.initImmediate) {\n        _this.init(options, callback);\n        return _possibleConstructorReturn(_this, _assertThisInitialized(_this));\n      }\n      setTimeout(function () {\n        _this.init(options, callback);\n      }, 0);\n    }\n    return _this;\n  }\n  _createClass(I18n, [{\n    key: \"init\",\n    value: function init() {\n      var _this2 = this;\n      var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      var callback = arguments.length > 1 ? arguments[1] : undefined;\n      if (typeof options === 'function') {\n        callback = options;\n        options = {};\n      }\n      if (!options.defaultNS && options.defaultNS !== false && options.ns) {\n        if (typeof options.ns === 'string') {\n          options.defaultNS = options.ns;\n        } else if (options.ns.indexOf('translation') < 0) {\n          options.defaultNS = options.ns[0];\n        }\n      }\n      var defOpts = get();\n      this.options = _objectSpread(_objectSpread(_objectSpread({}, defOpts), this.options), transformOptions(options));\n      if (this.options.compatibilityAPI !== 'v1') {\n        this.options.interpolation = _objectSpread(_objectSpread({}, defOpts.interpolation), this.options.interpolation);\n      }\n      if (options.keySeparator !== undefined) {\n        this.options.userDefinedKeySeparator = options.keySeparator;\n      }\n      if (options.nsSeparator !== undefined) {\n        this.options.userDefinedNsSeparator = options.nsSeparator;\n      }\n      function createClassOnDemand(ClassOrObject) {\n        if (!ClassOrObject) return null;\n        if (typeof ClassOrObject === 'function') return new ClassOrObject();\n        return ClassOrObject;\n      }\n      if (!this.options.isClone) {\n        if (this.modules.logger) {\n          baseLogger.init(createClassOnDemand(this.modules.logger), this.options);\n        } else {\n          baseLogger.init(null, this.options);\n        }\n        var formatter;\n        if (this.modules.formatter) {\n          formatter = this.modules.formatter;\n        } else if (typeof Intl !== 'undefined') {\n          formatter = Formatter;\n        }\n        var lu = new LanguageUtil(this.options);\n        this.store = new ResourceStore(this.options.resources, this.options);\n        var s = this.services;\n        s.logger = baseLogger;\n        s.resourceStore = this.store;\n        s.languageUtils = lu;\n        s.pluralResolver = new PluralResolver(lu, {\n          prepend: this.options.pluralSeparator,\n          compatibilityJSON: this.options.compatibilityJSON,\n          simplifyPluralSuffix: this.options.simplifyPluralSuffix\n        });\n        if (formatter && (!this.options.interpolation.format || this.options.interpolation.format === defOpts.interpolation.format)) {\n          s.formatter = createClassOnDemand(formatter);\n          s.formatter.init(s, this.options);\n          this.options.interpolation.format = s.formatter.format.bind(s.formatter);\n        }\n        s.interpolator = new Interpolator(this.options);\n        s.utils = {\n          hasLoadedNamespace: this.hasLoadedNamespace.bind(this)\n        };\n        s.backendConnector = new Connector(createClassOnDemand(this.modules.backend), s.resourceStore, s, this.options);\n        s.backendConnector.on('*', function (event) {\n          for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n            args[_key - 1] = arguments[_key];\n          }\n          _this2.emit.apply(_this2, [event].concat(args));\n        });\n        if (this.modules.languageDetector) {\n          s.languageDetector = createClassOnDemand(this.modules.languageDetector);\n          if (s.languageDetector.init) s.languageDetector.init(s, this.options.detection, this.options);\n        }\n        if (this.modules.i18nFormat) {\n          s.i18nFormat = createClassOnDemand(this.modules.i18nFormat);\n          if (s.i18nFormat.init) s.i18nFormat.init(this);\n        }\n        this.translator = new Translator(this.services, this.options);\n        this.translator.on('*', function (event) {\n          for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n            args[_key2 - 1] = arguments[_key2];\n          }\n          _this2.emit.apply(_this2, [event].concat(args));\n        });\n        this.modules.external.forEach(function (m) {\n          if (m.init) m.init(_this2);\n        });\n      }\n      this.format = this.options.interpolation.format;\n      if (!callback) callback = noop;\n      if (this.options.fallbackLng && !this.services.languageDetector && !this.options.lng) {\n        var codes = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n        if (codes.length > 0 && codes[0] !== 'dev') this.options.lng = codes[0];\n      }\n      if (!this.services.languageDetector && !this.options.lng) {\n        this.logger.warn('init: no languageDetector is used and no lng is defined');\n      }\n      var storeApi = ['getResource', 'hasResourceBundle', 'getResourceBundle', 'getDataByLanguage'];\n      storeApi.forEach(function (fcName) {\n        _this2[fcName] = function () {\n          var _this2$store;\n          return (_this2$store = _this2.store)[fcName].apply(_this2$store, arguments);\n        };\n      });\n      var storeApiChained = ['addResource', 'addResources', 'addResourceBundle', 'removeResourceBundle'];\n      storeApiChained.forEach(function (fcName) {\n        _this2[fcName] = function () {\n          var _this2$store2;\n          (_this2$store2 = _this2.store)[fcName].apply(_this2$store2, arguments);\n          return _this2;\n        };\n      });\n      var deferred = defer();\n      var load = function load() {\n        var finish = function finish(err, t) {\n          if (_this2.isInitialized && !_this2.initializedStoreOnce) _this2.logger.warn('init: i18next is already initialized. You should call init just once!');\n          _this2.isInitialized = true;\n          if (!_this2.options.isClone) _this2.logger.log('initialized', _this2.options);\n          _this2.emit('initialized', _this2.options);\n          deferred.resolve(t);\n          callback(err, t);\n        };\n        if (_this2.languages && _this2.options.compatibilityAPI !== 'v1' && !_this2.isInitialized) return finish(null, _this2.t.bind(_this2));\n        _this2.changeLanguage(_this2.options.lng, finish);\n      };\n      if (this.options.resources || !this.options.initImmediate) {\n        load();\n      } else {\n        setTimeout(load, 0);\n      }\n      return deferred;\n    }\n  }, {\n    key: \"loadResources\",\n    value: function loadResources(language) {\n      var _this3 = this;\n      var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n      var usedCallback = callback;\n      var usedLng = typeof language === 'string' ? language : this.language;\n      if (typeof language === 'function') usedCallback = language;\n      if (!this.options.resources || this.options.partialBundledLanguages) {\n        if (usedLng && usedLng.toLowerCase() === 'cimode') return usedCallback();\n        var toLoad = [];\n        var append = function append(lng) {\n          if (!lng) return;\n          var lngs = _this3.services.languageUtils.toResolveHierarchy(lng);\n          lngs.forEach(function (l) {\n            if (toLoad.indexOf(l) < 0) toLoad.push(l);\n          });\n        };\n        if (!usedLng) {\n          var fallbacks = this.services.languageUtils.getFallbackCodes(this.options.fallbackLng);\n          fallbacks.forEach(function (l) {\n            return append(l);\n          });\n        } else {\n          append(usedLng);\n        }\n        if (this.options.preload) {\n          this.options.preload.forEach(function (l) {\n            return append(l);\n          });\n        }\n        this.services.backendConnector.load(toLoad, this.options.ns, function (e) {\n          if (!e && !_this3.resolvedLanguage && _this3.language) _this3.setResolvedLanguage(_this3.language);\n          usedCallback(e);\n        });\n      } else {\n        usedCallback(null);\n      }\n    }\n  }, {\n    key: \"reloadResources\",\n    value: function reloadResources(lngs, ns, callback) {\n      var deferred = defer();\n      if (!lngs) lngs = this.languages;\n      if (!ns) ns = this.options.ns;\n      if (!callback) callback = noop;\n      this.services.backendConnector.reload(lngs, ns, function (err) {\n        deferred.resolve();\n        callback(err);\n      });\n      return deferred;\n    }\n  }, {\n    key: \"use\",\n    value: function use(module) {\n      if (!module) throw new Error('You are passing an undefined module! Please check the object you are passing to i18next.use()');\n      if (!module.type) throw new Error('You are passing a wrong module! Please check the object you are passing to i18next.use()');\n      if (module.type === 'backend') {\n        this.modules.backend = module;\n      }\n      if (module.type === 'logger' || module.log && module.warn && module.error) {\n        this.modules.logger = module;\n      }\n      if (module.type === 'languageDetector') {\n        this.modules.languageDetector = module;\n      }\n      if (module.type === 'i18nFormat') {\n        this.modules.i18nFormat = module;\n      }\n      if (module.type === 'postProcessor') {\n        postProcessor.addPostProcessor(module);\n      }\n      if (module.type === 'formatter') {\n        this.modules.formatter = module;\n      }\n      if (module.type === '3rdParty') {\n        this.modules.external.push(module);\n      }\n      return this;\n    }\n  }, {\n    key: \"setResolvedLanguage\",\n    value: function setResolvedLanguage(l) {\n      if (!l || !this.languages) return;\n      if (['cimode', 'dev'].indexOf(l) > -1) return;\n      for (var li = 0; li < this.languages.length; li++) {\n        var lngInLngs = this.languages[li];\n        if (['cimode', 'dev'].indexOf(lngInLngs) > -1) continue;\n        if (this.store.hasLanguageSomeTranslations(lngInLngs)) {\n          this.resolvedLanguage = lngInLngs;\n          break;\n        }\n      }\n    }\n  }, {\n    key: \"changeLanguage\",\n    value: function changeLanguage(lng, callback) {\n      var _this4 = this;\n      this.isLanguageChangingTo = lng;\n      var deferred = defer();\n      this.emit('languageChanging', lng);\n      var setLngProps = function setLngProps(l) {\n        _this4.language = l;\n        _this4.languages = _this4.services.languageUtils.toResolveHierarchy(l);\n        _this4.resolvedLanguage = undefined;\n        _this4.setResolvedLanguage(l);\n      };\n      var done = function done(err, l) {\n        if (l) {\n          setLngProps(l);\n          _this4.translator.changeLanguage(l);\n          _this4.isLanguageChangingTo = undefined;\n          _this4.emit('languageChanged', l);\n          _this4.logger.log('languageChanged', l);\n        } else {\n          _this4.isLanguageChangingTo = undefined;\n        }\n        deferred.resolve(function () {\n          return _this4.t.apply(_this4, arguments);\n        });\n        if (callback) callback(err, function () {\n          return _this4.t.apply(_this4, arguments);\n        });\n      };\n      var setLng = function setLng(lngs) {\n        if (!lng && !lngs && _this4.services.languageDetector) lngs = [];\n        var l = typeof lngs === 'string' ? lngs : _this4.services.languageUtils.getBestMatchFromCodes(lngs);\n        if (l) {\n          if (!_this4.language) {\n            setLngProps(l);\n          }\n          if (!_this4.translator.language) _this4.translator.changeLanguage(l);\n          if (_this4.services.languageDetector && _this4.services.languageDetector.cacheUserLanguage) _this4.services.languageDetector.cacheUserLanguage(l);\n        }\n        _this4.loadResources(l, function (err) {\n          done(err, l);\n        });\n      };\n      if (!lng && this.services.languageDetector && !this.services.languageDetector.async) {\n        setLng(this.services.languageDetector.detect());\n      } else if (!lng && this.services.languageDetector && this.services.languageDetector.async) {\n        if (this.services.languageDetector.detect.length === 0) {\n          this.services.languageDetector.detect().then(setLng);\n        } else {\n          this.services.languageDetector.detect(setLng);\n        }\n      } else {\n        setLng(lng);\n      }\n      return deferred;\n    }\n  }, {\n    key: \"getFixedT\",\n    value: function getFixedT(lng, ns, keyPrefix) {\n      var _this5 = this;\n      var fixedT = function fixedT(key, opts) {\n        var options;\n        if (_typeof(opts) !== 'object') {\n          for (var _len3 = arguments.length, rest = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {\n            rest[_key3 - 2] = arguments[_key3];\n          }\n          options = _this5.options.overloadTranslationOptionHandler([key, opts].concat(rest));\n        } else {\n          options = _objectSpread({}, opts);\n        }\n        options.lng = options.lng || fixedT.lng;\n        options.lngs = options.lngs || fixedT.lngs;\n        options.ns = options.ns || fixedT.ns;\n        options.keyPrefix = options.keyPrefix || keyPrefix || fixedT.keyPrefix;\n        var keySeparator = _this5.options.keySeparator || '.';\n        var resultKey;\n        if (options.keyPrefix && Array.isArray(key)) {\n          resultKey = key.map(function (k) {\n            return \"\".concat(options.keyPrefix).concat(keySeparator).concat(k);\n          });\n        } else {\n          resultKey = options.keyPrefix ? \"\".concat(options.keyPrefix).concat(keySeparator).concat(key) : key;\n        }\n        return _this5.t(resultKey, options);\n      };\n      if (typeof lng === 'string') {\n        fixedT.lng = lng;\n      } else {\n        fixedT.lngs = lng;\n      }\n      fixedT.ns = ns;\n      fixedT.keyPrefix = keyPrefix;\n      return fixedT;\n    }\n  }, {\n    key: \"t\",\n    value: function t() {\n      var _this$translator;\n      return this.translator && (_this$translator = this.translator).translate.apply(_this$translator, arguments);\n    }\n  }, {\n    key: \"exists\",\n    value: function exists() {\n      var _this$translator2;\n      return this.translator && (_this$translator2 = this.translator).exists.apply(_this$translator2, arguments);\n    }\n  }, {\n    key: \"setDefaultNamespace\",\n    value: function setDefaultNamespace(ns) {\n      this.options.defaultNS = ns;\n    }\n  }, {\n    key: \"hasLoadedNamespace\",\n    value: function hasLoadedNamespace(ns) {\n      var _this6 = this;\n      var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      if (!this.isInitialized) {\n        this.logger.warn('hasLoadedNamespace: i18next was not initialized', this.languages);\n        return false;\n      }\n      if (!this.languages || !this.languages.length) {\n        this.logger.warn('hasLoadedNamespace: i18n.languages were undefined or empty', this.languages);\n        return false;\n      }\n      var lng = options.lng || this.resolvedLanguage || this.languages[0];\n      var fallbackLng = this.options ? this.options.fallbackLng : false;\n      var lastLng = this.languages[this.languages.length - 1];\n      if (lng.toLowerCase() === 'cimode') return true;\n      var loadNotPending = function loadNotPending(l, n) {\n        var loadState = _this6.services.backendConnector.state[\"\".concat(l, \"|\").concat(n)];\n        return loadState === -1 || loadState === 2;\n      };\n      if (options.precheck) {\n        var preResult = options.precheck(this, loadNotPending);\n        if (preResult !== undefined) return preResult;\n      }\n      if (this.hasResourceBundle(lng, ns)) return true;\n      if (!this.services.backendConnector.backend || this.options.resources && !this.options.partialBundledLanguages) return true;\n      if (loadNotPending(lng, ns) && (!fallbackLng || loadNotPending(lastLng, ns))) return true;\n      return false;\n    }\n  }, {\n    key: \"loadNamespaces\",\n    value: function loadNamespaces(ns, callback) {\n      var _this7 = this;\n      var deferred = defer();\n      if (!this.options.ns) {\n        if (callback) callback();\n        return Promise.resolve();\n      }\n      if (typeof ns === 'string') ns = [ns];\n      ns.forEach(function (n) {\n        if (_this7.options.ns.indexOf(n) < 0) _this7.options.ns.push(n);\n      });\n      this.loadResources(function (err) {\n        deferred.resolve();\n        if (callback) callback(err);\n      });\n      return deferred;\n    }\n  }, {\n    key: \"loadLanguages\",\n    value: function loadLanguages(lngs, callback) {\n      var deferred = defer();\n      if (typeof lngs === 'string') lngs = [lngs];\n      var preloaded = this.options.preload || [];\n      var newLngs = lngs.filter(function (lng) {\n        return preloaded.indexOf(lng) < 0;\n      });\n      if (!newLngs.length) {\n        if (callback) callback();\n        return Promise.resolve();\n      }\n      this.options.preload = preloaded.concat(newLngs);\n      this.loadResources(function (err) {\n        deferred.resolve();\n        if (callback) callback(err);\n      });\n      return deferred;\n    }\n  }, {\n    key: \"dir\",\n    value: function dir(lng) {\n      if (!lng) lng = this.resolvedLanguage || (this.languages && this.languages.length > 0 ? this.languages[0] : this.language);\n      if (!lng) return 'rtl';\n      var rtlLngs = ['ar', 'shu', 'sqr', 'ssh', 'xaa', 'yhd', 'yud', 'aao', 'abh', 'abv', 'acm', 'acq', 'acw', 'acx', 'acy', 'adf', 'ads', 'aeb', 'aec', 'afb', 'ajp', 'apc', 'apd', 'arb', 'arq', 'ars', 'ary', 'arz', 'auz', 'avl', 'ayh', 'ayl', 'ayn', 'ayp', 'bbz', 'pga', 'he', 'iw', 'ps', 'pbt', 'pbu', 'pst', 'prp', 'prd', 'ug', 'ur', 'ydd', 'yds', 'yih', 'ji', 'yi', 'hbo', 'men', 'xmn', 'fa', 'jpr', 'peo', 'pes', 'prs', 'dv', 'sam', 'ckb'];\n      var languageUtils = this.services && this.services.languageUtils || new LanguageUtil(get());\n      return rtlLngs.indexOf(languageUtils.getLanguagePartFromCode(lng)) > -1 || lng.toLowerCase().indexOf('-arab') > 1 ? 'rtl' : 'ltr';\n    }\n  }, {\n    key: \"cloneInstance\",\n    value: function cloneInstance() {\n      var _this8 = this;\n      var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n      var mergedOptions = _objectSpread(_objectSpread(_objectSpread({}, this.options), options), {\n        isClone: true\n      });\n      var clone = new I18n(mergedOptions);\n      if (options.debug !== undefined || options.prefix !== undefined) {\n        clone.logger = clone.logger.clone(options);\n      }\n      var membersToCopy = ['store', 'services', 'language'];\n      membersToCopy.forEach(function (m) {\n        clone[m] = _this8[m];\n      });\n      clone.services = _objectSpread({}, this.services);\n      clone.services.utils = {\n        hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n      };\n      clone.translator = new Translator(clone.services, clone.options);\n      clone.translator.on('*', function (event) {\n        for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n          args[_key4 - 1] = arguments[_key4];\n        }\n        clone.emit.apply(clone, [event].concat(args));\n      });\n      clone.init(mergedOptions, callback);\n      clone.translator.options = clone.options;\n      clone.translator.backendConnector.services.utils = {\n        hasLoadedNamespace: clone.hasLoadedNamespace.bind(clone)\n      };\n      return clone;\n    }\n  }, {\n    key: \"toJSON\",\n    value: function toJSON() {\n      return {\n        options: this.options,\n        store: this.store,\n        language: this.language,\n        languages: this.languages,\n        resolvedLanguage: this.resolvedLanguage\n      };\n    }\n  }]);\n  return I18n;\n}(EventEmitter);\n_defineProperty(I18n, \"createInstance\", function () {\n  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  var callback = arguments.length > 1 ? arguments[1] : undefined;\n  return new I18n(options, callback);\n});\nvar instance = I18n.createInstance();\ninstance.createInstance = I18n.createInstance;\n\nvar createInstance = instance.createInstance;\nvar dir = instance.dir;\nvar init = instance.init;\nvar loadResources = instance.loadResources;\nvar reloadResources = instance.reloadResources;\nvar use = instance.use;\nvar changeLanguage = instance.changeLanguage;\nvar getFixedT = instance.getFixedT;\nvar t = instance.t;\nvar exists = instance.exists;\nvar setDefaultNamespace = instance.setDefaultNamespace;\nvar hasLoadedNamespace = instance.hasLoadedNamespace;\nvar loadNamespaces = instance.loadNamespaces;\nvar loadLanguages = instance.loadLanguages;\n\nexport { changeLanguage, createInstance, instance as default, dir, exists, getFixedT, hasLoadedNamespace, init, loadLanguages, loadNamespaces, loadResources, reloadResources, setDefaultNamespace, t, use };\n","export default function _typeof(obj) {\n  \"@babel/helpers - typeof\";\n\n  return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n    return typeof obj;\n  } : function (obj) {\n    return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n  }, _typeof(obj);\n}","export default function _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(target, props) {\n  for (var i = 0; i < props.length; i++) {\n    var descriptor = props[i];\n    descriptor.enumerable = descriptor.enumerable || false;\n    descriptor.configurable = true;\n    if (\"value\" in descriptor) descriptor.writable = true;\n    Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n  }\n}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n  if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n  if (staticProps) _defineProperties(Constructor, staticProps);\n  Object.defineProperty(Constructor, \"prototype\", {\n    writable: false\n  });\n  return Constructor;\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n  var key = toPrimitive(arg, \"string\");\n  return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n  if (_typeof(input) !== \"object\" || input === null) return input;\n  var prim = input[Symbol.toPrimitive];\n  if (prim !== undefined) {\n    var res = prim.call(input, hint || \"default\");\n    if (_typeof(res) !== \"object\") return res;\n    throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n  }\n  return (hint === \"string\" ? String : Number)(input);\n}","export default function _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n  return self;\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function\");\n  }\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      writable: true,\n      configurable: true\n    }\n  });\n  Object.defineProperty(subClass, \"prototype\", {\n    writable: false\n  });\n  if (superClass) setPrototypeOf(subClass, superClass);\n}","export default function _setPrototypeOf(o, p) {\n  _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n    o.__proto__ = p;\n    return o;\n  };\n  return _setPrototypeOf(o, p);\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n  if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n    return call;\n  } else if (call !== void 0) {\n    throw new TypeError(\"Derived constructors may only return object or undefined\");\n  }\n  return assertThisInitialized(self);\n}","export default function _getPrototypeOf(o) {\n  _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n    return o.__proto__ || Object.getPrototypeOf(o);\n  };\n  return _getPrototypeOf(o);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n  key = toPropertyKey(key);\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}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _toArray(arr) {\n  return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n  if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArray(iter) {\n  if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n  if (!o) return;\n  if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n  var n = Object.prototype.toString.call(o).slice(8, -1);\n  if (n === \"Object\" && o.constructor) n = o.constructor.name;\n  if (n === \"Map\" || n === \"Set\") return Array.from(o);\n  if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","export default function _arrayLikeToArray(arr, len) {\n  if (len == null || len > arr.length) len = arr.length;\n  for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n  return arr2;\n}","export default function _nonIterableRest() {\n  throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","(function(window, factory) {\n\tvar lazySizes = factory(window, window.document, Date);\n\twindow.lazySizes = lazySizes;\n\tif(typeof module == 'object' && module.exports){\n\t\tmodule.exports = lazySizes;\n\t}\n}(typeof window != 'undefined' ?\n      window : {}, \n/**\n * import(\"./types/global\")\n * @typedef { import(\"./types/lazysizes-config\").LazySizesConfigPartial } LazySizesConfigPartial\n */\nfunction l(window, document, Date) { // Pass in the window Date function also for SSR because the Date class can be lost\n\t'use strict';\n\t/*jshint eqnull:true */\n\n\tvar lazysizes,\n\t\t/**\n\t\t * @type { LazySizesConfigPartial }\n\t\t */\n\t\tlazySizesCfg;\n\n\t(function(){\n\t\tvar prop;\n\n\t\tvar lazySizesDefaults = {\n\t\t\tlazyClass: 'lazyload',\n\t\t\tloadedClass: 'lazyloaded',\n\t\t\tloadingClass: 'lazyloading',\n\t\t\tpreloadClass: 'lazypreload',\n\t\t\terrorClass: 'lazyerror',\n\t\t\t//strictClass: 'lazystrict',\n\t\t\tautosizesClass: 'lazyautosizes',\n\t\t\tfastLoadedClass: 'ls-is-cached',\n\t\t\tiframeLoadMode: 0,\n\t\t\tsrcAttr: 'data-src',\n\t\t\tsrcsetAttr: 'data-srcset',\n\t\t\tsizesAttr: 'data-sizes',\n\t\t\t//preloadAfterLoad: false,\n\t\t\tminSize: 40,\n\t\t\tcustomMedia: {},\n\t\t\tinit: true,\n\t\t\texpFactor: 1.5,\n\t\t\thFac: 0.8,\n\t\t\tloadMode: 2,\n\t\t\tloadHidden: true,\n\t\t\tricTimeout: 0,\n\t\t\tthrottleDelay: 125,\n\t\t};\n\n\t\tlazySizesCfg = window.lazySizesConfig || window.lazysizesConfig || {};\n\n\t\tfor(prop in lazySizesDefaults){\n\t\t\tif(!(prop in lazySizesCfg)){\n\t\t\t\tlazySizesCfg[prop] = lazySizesDefaults[prop];\n\t\t\t}\n\t\t}\n\t})();\n\n\tif (!document || !document.getElementsByClassName) {\n\t\treturn {\n\t\t\tinit: function () {},\n\t\t\t/**\n\t\t\t * @type { LazySizesConfigPartial }\n\t\t\t */\n\t\t\tcfg: lazySizesCfg,\n\t\t\t/**\n\t\t\t * @type { true }\n\t\t\t */\n\t\t\tnoSupport: true,\n\t\t};\n\t}\n\n\tvar docElem = document.documentElement;\n\n\tvar supportPicture = window.HTMLPictureElement;\n\n\tvar _addEventListener = 'addEventListener';\n\n\tvar _getAttribute = 'getAttribute';\n\n\t/**\n\t * Update to bind to window because 'this' becomes null during SSR\n\t * builds.\n\t */\n\tvar addEventListener = window[_addEventListener].bind(window);\n\n\tvar setTimeout = window.setTimeout;\n\n\tvar requestAnimationFrame = window.requestAnimationFrame || setTimeout;\n\n\tvar requestIdleCallback = window.requestIdleCallback;\n\n\tvar regPicture = /^picture$/i;\n\n\tvar loadEvents = ['load', 'error', 'lazyincluded', '_lazyloaded'];\n\n\tvar regClassCache = {};\n\n\tvar forEach = Array.prototype.forEach;\n\n\t/**\n\t * @param ele {Element}\n\t * @param cls {string}\n\t */\n\tvar hasClass = function(ele, cls) {\n\t\tif(!regClassCache[cls]){\n\t\t\tregClassCache[cls] = new RegExp('(\\\\s|^)'+cls+'(\\\\s|$)');\n\t\t}\n\t\treturn regClassCache[cls].test(ele[_getAttribute]('class') || '') && regClassCache[cls];\n\t};\n\n\t/**\n\t * @param ele {Element}\n\t * @param cls {string}\n\t */\n\tvar addClass = function(ele, cls) {\n\t\tif (!hasClass(ele, cls)){\n\t\t\tele.setAttribute('class', (ele[_getAttribute]('class') || '').trim() + ' ' + cls);\n\t\t}\n\t};\n\n\t/**\n\t * @param ele {Element}\n\t * @param cls {string}\n\t */\n\tvar removeClass = function(ele, cls) {\n\t\tvar reg;\n\t\tif ((reg = hasClass(ele,cls))) {\n\t\t\tele.setAttribute('class', (ele[_getAttribute]('class') || '').replace(reg, ' '));\n\t\t}\n\t};\n\n\tvar addRemoveLoadEvents = function(dom, fn, add){\n\t\tvar action = add ? _addEventListener : 'removeEventListener';\n\t\tif(add){\n\t\t\taddRemoveLoadEvents(dom, fn);\n\t\t}\n\t\tloadEvents.forEach(function(evt){\n\t\t\tdom[action](evt, fn);\n\t\t});\n\t};\n\n\t/**\n\t * @param elem { Element }\n\t * @param name { string }\n\t * @param detail { any }\n\t * @param noBubbles { boolean }\n\t * @param noCancelable { boolean }\n\t * @returns { CustomEvent }\n\t */\n\tvar triggerEvent = function(elem, name, detail, noBubbles, noCancelable){\n\t\tvar event = document.createEvent('Event');\n\n\t\tif(!detail){\n\t\t\tdetail = {};\n\t\t}\n\n\t\tdetail.instance = lazysizes;\n\n\t\tevent.initEvent(name, !noBubbles, !noCancelable);\n\n\t\tevent.detail = detail;\n\n\t\telem.dispatchEvent(event);\n\t\treturn event;\n\t};\n\n\tvar updatePolyfill = function (el, full){\n\t\tvar polyfill;\n\t\tif( !supportPicture && ( polyfill = (window.picturefill || lazySizesCfg.pf) ) ){\n\t\t\tif(full && full.src && !el[_getAttribute]('srcset')){\n\t\t\t\tel.setAttribute('srcset', full.src);\n\t\t\t}\n\t\t\tpolyfill({reevaluate: true, elements: [el]});\n\t\t} else if(full && full.src){\n\t\t\tel.src = full.src;\n\t\t}\n\t};\n\n\tvar getCSS = function (elem, style){\n\t\treturn (getComputedStyle(elem, null) || {})[style];\n\t};\n\n\t/**\n\t *\n\t * @param elem { Element }\n\t * @param parent { Element }\n\t * @param [width] {number}\n\t * @returns {number}\n\t */\n\tvar getWidth = function(elem, parent, width){\n\t\twidth = width || elem.offsetWidth;\n\n\t\twhile(width < lazySizesCfg.minSize && parent && !elem._lazysizesWidth){\n\t\t\twidth =  parent.offsetWidth;\n\t\t\tparent = parent.parentNode;\n\t\t}\n\n\t\treturn width;\n\t};\n\n\tvar rAF = (function(){\n\t\tvar running, waiting;\n\t\tvar firstFns = [];\n\t\tvar secondFns = [];\n\t\tvar fns = firstFns;\n\n\t\tvar run = function(){\n\t\t\tvar runFns = fns;\n\n\t\t\tfns = firstFns.length ? secondFns : firstFns;\n\n\t\t\trunning = true;\n\t\t\twaiting = false;\n\n\t\t\twhile(runFns.length){\n\t\t\t\trunFns.shift()();\n\t\t\t}\n\n\t\t\trunning = false;\n\t\t};\n\n\t\tvar rafBatch = function(fn, queue){\n\t\t\tif(running && !queue){\n\t\t\t\tfn.apply(this, arguments);\n\t\t\t} else {\n\t\t\t\tfns.push(fn);\n\n\t\t\t\tif(!waiting){\n\t\t\t\t\twaiting = true;\n\t\t\t\t\t(document.hidden ? setTimeout : requestAnimationFrame)(run);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\trafBatch._lsFlush = run;\n\n\t\treturn rafBatch;\n\t})();\n\n\tvar rAFIt = function(fn, simple){\n\t\treturn simple ?\n\t\t\tfunction() {\n\t\t\t\trAF(fn);\n\t\t\t} :\n\t\t\tfunction(){\n\t\t\t\tvar that = this;\n\t\t\t\tvar args = arguments;\n\t\t\t\trAF(function(){\n\t\t\t\t\tfn.apply(that, args);\n\t\t\t\t});\n\t\t\t}\n\t\t;\n\t};\n\n\tvar throttle = function(fn){\n\t\tvar running;\n\t\tvar lastTime = 0;\n\t\tvar gDelay = lazySizesCfg.throttleDelay;\n\t\tvar rICTimeout = lazySizesCfg.ricTimeout;\n\t\tvar run = function(){\n\t\t\trunning = false;\n\t\t\tlastTime = Date.now();\n\t\t\tfn();\n\t\t};\n\t\tvar idleCallback = requestIdleCallback && rICTimeout > 49 ?\n\t\t\tfunction(){\n\t\t\t\trequestIdleCallback(run, {timeout: rICTimeout});\n\n\t\t\t\tif(rICTimeout !== lazySizesCfg.ricTimeout){\n\t\t\t\t\trICTimeout = lazySizesCfg.ricTimeout;\n\t\t\t\t}\n\t\t\t} :\n\t\t\trAFIt(function(){\n\t\t\t\tsetTimeout(run);\n\t\t\t}, true)\n\t\t;\n\n\t\treturn function(isPriority){\n\t\t\tvar delay;\n\n\t\t\tif((isPriority = isPriority === true)){\n\t\t\t\trICTimeout = 33;\n\t\t\t}\n\n\t\t\tif(running){\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\trunning =  true;\n\n\t\t\tdelay = gDelay - (Date.now() - lastTime);\n\n\t\t\tif(delay < 0){\n\t\t\t\tdelay = 0;\n\t\t\t}\n\n\t\t\tif(isPriority || delay < 9){\n\t\t\t\tidleCallback();\n\t\t\t} else {\n\t\t\t\tsetTimeout(idleCallback, delay);\n\t\t\t}\n\t\t};\n\t};\n\n\t//based on http://modernjavascript.blogspot.de/2013/08/building-better-debounce.html\n\tvar debounce = function(func) {\n\t\tvar timeout, timestamp;\n\t\tvar wait = 99;\n\t\tvar run = function(){\n\t\t\ttimeout = null;\n\t\t\tfunc();\n\t\t};\n\t\tvar later = function() {\n\t\t\tvar last = Date.now() - timestamp;\n\n\t\t\tif (last < wait) {\n\t\t\t\tsetTimeout(later, wait - last);\n\t\t\t} else {\n\t\t\t\t(requestIdleCallback || run)(run);\n\t\t\t}\n\t\t};\n\n\t\treturn function() {\n\t\t\ttimestamp = Date.now();\n\n\t\t\tif (!timeout) {\n\t\t\t\ttimeout = setTimeout(later, wait);\n\t\t\t}\n\t\t};\n\t};\n\n\tvar loader = (function(){\n\t\tvar preloadElems, isCompleted, resetPreloadingTimer, loadMode, started;\n\n\t\tvar eLvW, elvH, eLtop, eLleft, eLright, eLbottom, isBodyHidden;\n\n\t\tvar regImg = /^img$/i;\n\t\tvar regIframe = /^iframe$/i;\n\n\t\tvar supportScroll = ('onscroll' in window) && !(/(gle|ing)bot/.test(navigator.userAgent));\n\n\t\tvar shrinkExpand = 0;\n\t\tvar currentExpand = 0;\n\n\t\tvar isLoading = 0;\n\t\tvar lowRuns = -1;\n\n\t\tvar resetPreloading = function(e){\n\t\t\tisLoading--;\n\t\t\tif(!e || isLoading < 0 || !e.target){\n\t\t\t\tisLoading = 0;\n\t\t\t}\n\t\t};\n\n\t\tvar isVisible = function (elem) {\n\t\t\tif (isBodyHidden == null) {\n\t\t\t\tisBodyHidden = getCSS(document.body, 'visibility') == 'hidden';\n\t\t\t}\n\n\t\t\treturn isBodyHidden || !(getCSS(elem.parentNode, 'visibility') == 'hidden' && getCSS(elem, 'visibility') == 'hidden');\n\t\t};\n\n\t\tvar isNestedVisible = function(elem, elemExpand){\n\t\t\tvar outerRect;\n\t\t\tvar parent = elem;\n\t\t\tvar visible = isVisible(elem);\n\n\t\t\teLtop -= elemExpand;\n\t\t\teLbottom += elemExpand;\n\t\t\teLleft -= elemExpand;\n\t\t\teLright += elemExpand;\n\n\t\t\twhile(visible && (parent = parent.offsetParent) && parent != document.body && parent != docElem){\n\t\t\t\tvisible = ((getCSS(parent, 'opacity') || 1) > 0);\n\n\t\t\t\tif(visible && getCSS(parent, 'overflow') != 'visible'){\n\t\t\t\t\touterRect = parent.getBoundingClientRect();\n\t\t\t\t\tvisible = eLright > outerRect.left &&\n\t\t\t\t\t\teLleft < outerRect.right &&\n\t\t\t\t\t\teLbottom > outerRect.top - 1 &&\n\t\t\t\t\t\teLtop < outerRect.bottom + 1\n\t\t\t\t\t;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn visible;\n\t\t};\n\n\t\tvar checkElements = function() {\n\t\t\tvar eLlen, i, rect, autoLoadElem, loadedSomething, elemExpand, elemNegativeExpand, elemExpandVal,\n\t\t\t\tbeforeExpandVal, defaultExpand, preloadExpand, hFac;\n\t\t\tvar lazyloadElems = lazysizes.elements;\n\n\t\t\tif((loadMode = lazySizesCfg.loadMode) && isLoading < 8 && (eLlen = lazyloadElems.length)){\n\n\t\t\t\ti = 0;\n\n\t\t\t\tlowRuns++;\n\n\t\t\t\tfor(; i < eLlen; i++){\n\n\t\t\t\t\tif(!lazyloadElems[i] || lazyloadElems[i]._lazyRace){continue;}\n\n\t\t\t\t\tif(!supportScroll || (lazysizes.prematureUnveil && lazysizes.prematureUnveil(lazyloadElems[i]))){unveilElement(lazyloadElems[i]);continue;}\n\n\t\t\t\t\tif(!(elemExpandVal = lazyloadElems[i][_getAttribute]('data-expand')) || !(elemExpand = elemExpandVal * 1)){\n\t\t\t\t\t\telemExpand = currentExpand;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!defaultExpand) {\n\t\t\t\t\t\tdefaultExpand = (!lazySizesCfg.expand || lazySizesCfg.expand < 1) ?\n\t\t\t\t\t\t\tdocElem.clientHeight > 500 && docElem.clientWidth > 500 ? 500 : 370 :\n\t\t\t\t\t\t\tlazySizesCfg.expand;\n\n\t\t\t\t\t\tlazysizes._defEx = defaultExpand;\n\n\t\t\t\t\t\tpreloadExpand = defaultExpand * lazySizesCfg.expFactor;\n\t\t\t\t\t\thFac = lazySizesCfg.hFac;\n\t\t\t\t\t\tisBodyHidden = null;\n\n\t\t\t\t\t\tif(currentExpand < preloadExpand && isLoading < 1 && lowRuns > 2 && loadMode > 2 && !document.hidden){\n\t\t\t\t\t\t\tcurrentExpand = preloadExpand;\n\t\t\t\t\t\t\tlowRuns = 0;\n\t\t\t\t\t\t} else if(loadMode > 1 && lowRuns > 1 && isLoading < 6){\n\t\t\t\t\t\t\tcurrentExpand = defaultExpand;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcurrentExpand = shrinkExpand;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tif(beforeExpandVal !== elemExpand){\n\t\t\t\t\t\teLvW = innerWidth + (elemExpand * hFac);\n\t\t\t\t\t\telvH = innerHeight + elemExpand;\n\t\t\t\t\t\telemNegativeExpand = elemExpand * -1;\n\t\t\t\t\t\tbeforeExpandVal = elemExpand;\n\t\t\t\t\t}\n\n\t\t\t\t\trect = lazyloadElems[i].getBoundingClientRect();\n\n\t\t\t\t\tif ((eLbottom = rect.bottom) >= elemNegativeExpand &&\n\t\t\t\t\t\t(eLtop = rect.top) <= elvH &&\n\t\t\t\t\t\t(eLright = rect.right) >= elemNegativeExpand * hFac &&\n\t\t\t\t\t\t(eLleft = rect.left) <= eLvW &&\n\t\t\t\t\t\t(eLbottom || eLright || eLleft || eLtop) &&\n\t\t\t\t\t\t(lazySizesCfg.loadHidden || isVisible(lazyloadElems[i])) &&\n\t\t\t\t\t\t((isCompleted && isLoading < 3 && !elemExpandVal && (loadMode < 3 || lowRuns < 4)) || isNestedVisible(lazyloadElems[i], elemExpand))){\n\t\t\t\t\t\tunveilElement(lazyloadElems[i]);\n\t\t\t\t\t\tloadedSomething = true;\n\t\t\t\t\t\tif(isLoading > 9){break;}\n\t\t\t\t\t} else if(!loadedSomething && isCompleted && !autoLoadElem &&\n\t\t\t\t\t\tisLoading < 4 && lowRuns < 4 && loadMode > 2 &&\n\t\t\t\t\t\t(preloadElems[0] || lazySizesCfg.preloadAfterLoad) &&\n\t\t\t\t\t\t(preloadElems[0] || (!elemExpandVal && ((eLbottom || eLright || eLleft || eLtop) || lazyloadElems[i][_getAttribute](lazySizesCfg.sizesAttr) != 'auto')))){\n\t\t\t\t\t\tautoLoadElem = preloadElems[0] || lazyloadElems[i];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(autoLoadElem && !loadedSomething){\n\t\t\t\t\tunveilElement(autoLoadElem);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar throttledCheckElements = throttle(checkElements);\n\n\t\tvar switchLoadingClass = function(e){\n\t\t\tvar elem = e.target;\n\n\t\t\tif (elem._lazyCache) {\n\t\t\t\tdelete elem._lazyCache;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tresetPreloading(e);\n\t\t\taddClass(elem, lazySizesCfg.loadedClass);\n\t\t\tremoveClass(elem, lazySizesCfg.loadingClass);\n\t\t\taddRemoveLoadEvents(elem, rafSwitchLoadingClass);\n\t\t\ttriggerEvent(elem, 'lazyloaded');\n\t\t};\n\t\tvar rafedSwitchLoadingClass = rAFIt(switchLoadingClass);\n\t\tvar rafSwitchLoadingClass = function(e){\n\t\t\trafedSwitchLoadingClass({target: e.target});\n\t\t};\n\n\t\tvar changeIframeSrc = function(elem, src){\n\t\t\tvar loadMode = elem.getAttribute('data-load-mode') || lazySizesCfg.iframeLoadMode;\n\n\t\t\t// loadMode can be also a string!\n\t\t\tif (loadMode == 0) {\n\t\t\t\telem.contentWindow.location.replace(src);\n\t\t\t} else if (loadMode == 1) {\n\t\t\t\telem.src = src;\n\t\t\t}\n\t\t};\n\n\t\tvar handleSources = function(source){\n\t\t\tvar customMedia;\n\n\t\t\tvar sourceSrcset = source[_getAttribute](lazySizesCfg.srcsetAttr);\n\n\t\t\tif( (customMedia = lazySizesCfg.customMedia[source[_getAttribute]('data-media') || source[_getAttribute]('media')]) ){\n\t\t\t\tsource.setAttribute('media', customMedia);\n\t\t\t}\n\n\t\t\tif(sourceSrcset){\n\t\t\t\tsource.setAttribute('srcset', sourceSrcset);\n\t\t\t}\n\t\t};\n\n\t\tvar lazyUnveil = rAFIt(function (elem, detail, isAuto, sizes, isImg){\n\t\t\tvar src, srcset, parent, isPicture, event, firesLoad;\n\n\t\t\tif(!(event = triggerEvent(elem, 'lazybeforeunveil', detail)).defaultPrevented){\n\n\t\t\t\tif(sizes){\n\t\t\t\t\tif(isAuto){\n\t\t\t\t\t\taddClass(elem, lazySizesCfg.autosizesClass);\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.setAttribute('sizes', sizes);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tsrcset = elem[_getAttribute](lazySizesCfg.srcsetAttr);\n\t\t\t\tsrc = elem[_getAttribute](lazySizesCfg.srcAttr);\n\n\t\t\t\tif(isImg) {\n\t\t\t\t\tparent = elem.parentNode;\n\t\t\t\t\tisPicture = parent && regPicture.test(parent.nodeName || '');\n\t\t\t\t}\n\n\t\t\t\tfiresLoad = detail.firesLoad || (('src' in elem) && (srcset || src || isPicture));\n\n\t\t\t\tevent = {target: elem};\n\n\t\t\t\taddClass(elem, lazySizesCfg.loadingClass);\n\n\t\t\t\tif(firesLoad){\n\t\t\t\t\tclearTimeout(resetPreloadingTimer);\n\t\t\t\t\tresetPreloadingTimer = setTimeout(resetPreloading, 2500);\n\t\t\t\t\taddRemoveLoadEvents(elem, rafSwitchLoadingClass, true);\n\t\t\t\t}\n\n\t\t\t\tif(isPicture){\n\t\t\t\t\tforEach.call(parent.getElementsByTagName('source'), handleSources);\n\t\t\t\t}\n\n\t\t\t\tif(srcset){\n\t\t\t\t\telem.setAttribute('srcset', srcset);\n\t\t\t\t} else if(src && !isPicture){\n\t\t\t\t\tif(regIframe.test(elem.nodeName)){\n\t\t\t\t\t\tchangeIframeSrc(elem, src);\n\t\t\t\t\t} else {\n\t\t\t\t\t\telem.src = src;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif(isImg && (srcset || isPicture)){\n\t\t\t\t\tupdatePolyfill(elem, {src: src});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(elem._lazyRace){\n\t\t\t\tdelete elem._lazyRace;\n\t\t\t}\n\t\t\tremoveClass(elem, lazySizesCfg.lazyClass);\n\n\t\t\trAF(function(){\n\t\t\t\t// Part of this can be removed as soon as this fix is older: https://bugs.chromium.org/p/chromium/issues/detail?id=7731 (2015)\n\t\t\t\tvar isLoaded = elem.complete && elem.naturalWidth > 1;\n\n\t\t\t\tif( !firesLoad || isLoaded){\n\t\t\t\t\tif (isLoaded) {\n\t\t\t\t\t\taddClass(elem, lazySizesCfg.fastLoadedClass);\n\t\t\t\t\t}\n\t\t\t\t\tswitchLoadingClass(event);\n\t\t\t\t\telem._lazyCache = true;\n\t\t\t\t\tsetTimeout(function(){\n\t\t\t\t\t\tif ('_lazyCache' in elem) {\n\t\t\t\t\t\t\tdelete elem._lazyCache;\n\t\t\t\t\t\t}\n\t\t\t\t\t}, 9);\n\t\t\t\t}\n\t\t\t\tif (elem.loading == 'lazy') {\n\t\t\t\t\tisLoading--;\n\t\t\t\t}\n\t\t\t}, true);\n\t\t});\n\n\t\t/**\n\t\t *\n\t\t * @param elem { Element }\n\t\t */\n\t\tvar unveilElement = function (elem){\n\t\t\tif (elem._lazyRace) {return;}\n\t\t\tvar detail;\n\n\t\t\tvar isImg = regImg.test(elem.nodeName);\n\n\t\t\t//allow using sizes=\"auto\", but don't use. it's invalid. Use data-sizes=\"auto\" or a valid value for sizes instead (i.e.: sizes=\"80vw\")\n\t\t\tvar sizes = isImg && (elem[_getAttribute](lazySizesCfg.sizesAttr) || elem[_getAttribute]('sizes'));\n\t\t\tvar isAuto = sizes == 'auto';\n\n\t\t\tif( (isAuto || !isCompleted) && isImg && (elem[_getAttribute]('src') || elem.srcset) && !elem.complete && !hasClass(elem, lazySizesCfg.errorClass) && hasClass(elem, lazySizesCfg.lazyClass)){return;}\n\n\t\t\tdetail = triggerEvent(elem, 'lazyunveilread').detail;\n\n\t\t\tif(isAuto){\n\t\t\t\t autoSizer.updateElem(elem, true, elem.offsetWidth);\n\t\t\t}\n\n\t\t\telem._lazyRace = true;\n\t\t\tisLoading++;\n\n\t\t\tlazyUnveil(elem, detail, isAuto, sizes, isImg);\n\t\t};\n\n\t\tvar afterScroll = debounce(function(){\n\t\t\tlazySizesCfg.loadMode = 3;\n\t\t\tthrottledCheckElements();\n\t\t});\n\n\t\tvar altLoadmodeScrollListner = function(){\n\t\t\tif(lazySizesCfg.loadMode == 3){\n\t\t\t\tlazySizesCfg.loadMode = 2;\n\t\t\t}\n\t\t\tafterScroll();\n\t\t};\n\n\t\tvar onload = function(){\n\t\t\tif(isCompleted){return;}\n\t\t\tif(Date.now() - started < 999){\n\t\t\t\tsetTimeout(onload, 999);\n\t\t\t\treturn;\n\t\t\t}\n\n\n\t\t\tisCompleted = true;\n\n\t\t\tlazySizesCfg.loadMode = 3;\n\n\t\t\tthrottledCheckElements();\n\n\t\t\taddEventListener('scroll', altLoadmodeScrollListner, true);\n\t\t};\n\n\t\treturn {\n\t\t\t_: function(){\n\t\t\t\tstarted = Date.now();\n\n\t\t\t\tlazysizes.elements = document.getElementsByClassName(lazySizesCfg.lazyClass);\n\t\t\t\tpreloadElems = document.getElementsByClassName(lazySizesCfg.lazyClass + ' ' + lazySizesCfg.preloadClass);\n\n\t\t\t\taddEventListener('scroll', throttledCheckElements, true);\n\n\t\t\t\taddEventListener('resize', throttledCheckElements, true);\n\n\t\t\t\taddEventListener('pageshow', function (e) {\n\t\t\t\t\tif (e.persisted) {\n\t\t\t\t\t\tvar loadingElements = document.querySelectorAll('.' + lazySizesCfg.loadingClass);\n\n\t\t\t\t\t\tif (loadingElements.length && loadingElements.forEach) {\n\t\t\t\t\t\t\trequestAnimationFrame(function () {\n\t\t\t\t\t\t\t\tloadingElements.forEach( function (img) {\n\t\t\t\t\t\t\t\t\tif (img.complete) {\n\t\t\t\t\t\t\t\t\t\tunveilElement(img);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif(window.MutationObserver){\n\t\t\t\t\tnew MutationObserver( throttledCheckElements ).observe( docElem, {childList: true, subtree: true, attributes: true} );\n\t\t\t\t} else {\n\t\t\t\t\tdocElem[_addEventListener]('DOMNodeInserted', throttledCheckElements, true);\n\t\t\t\t\tdocElem[_addEventListener]('DOMAttrModified', throttledCheckElements, true);\n\t\t\t\t\tsetInterval(throttledCheckElements, 999);\n\t\t\t\t}\n\n\t\t\t\taddEventListener('hashchange', throttledCheckElements, true);\n\n\t\t\t\t//, 'fullscreenchange'\n\t\t\t\t['focus', 'mouseover', 'click', 'load', 'transitionend', 'animationend'].forEach(function(name){\n\t\t\t\t\tdocument[_addEventListener](name, throttledCheckElements, true);\n\t\t\t\t});\n\n\t\t\t\tif((/d$|^c/.test(document.readyState))){\n\t\t\t\t\tonload();\n\t\t\t\t} else {\n\t\t\t\t\taddEventListener('load', onload);\n\t\t\t\t\tdocument[_addEventListener]('DOMContentLoaded', throttledCheckElements);\n\t\t\t\t\tsetTimeout(onload, 20000);\n\t\t\t\t}\n\n\t\t\t\tif(lazysizes.elements.length){\n\t\t\t\t\tcheckElements();\n\t\t\t\t\trAF._lsFlush();\n\t\t\t\t} else {\n\t\t\t\t\tthrottledCheckElements();\n\t\t\t\t}\n\t\t\t},\n\t\t\tcheckElems: throttledCheckElements,\n\t\t\tunveil: unveilElement,\n\t\t\t_aLSL: altLoadmodeScrollListner,\n\t\t};\n\t})();\n\n\n\tvar autoSizer = (function(){\n\t\tvar autosizesElems;\n\n\t\tvar sizeElement = rAFIt(function(elem, parent, event, width){\n\t\t\tvar sources, i, len;\n\t\t\telem._lazysizesWidth = width;\n\t\t\twidth += 'px';\n\n\t\t\telem.setAttribute('sizes', width);\n\n\t\t\tif(regPicture.test(parent.nodeName || '')){\n\t\t\t\tsources = parent.getElementsByTagName('source');\n\t\t\t\tfor(i = 0, len = sources.length; i < len; i++){\n\t\t\t\t\tsources[i].setAttribute('sizes', width);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif(!event.detail.dataAttr){\n\t\t\t\tupdatePolyfill(elem, event.detail);\n\t\t\t}\n\t\t});\n\t\t/**\n\t\t *\n\t\t * @param elem {Element}\n\t\t * @param dataAttr\n\t\t * @param [width] { number }\n\t\t */\n\t\tvar getSizeElement = function (elem, dataAttr, width){\n\t\t\tvar event;\n\t\t\tvar parent = elem.parentNode;\n\n\t\t\tif(parent){\n\t\t\t\twidth = getWidth(elem, parent, width);\n\t\t\t\tevent = triggerEvent(elem, 'lazybeforesizes', {width: width, dataAttr: !!dataAttr});\n\n\t\t\t\tif(!event.defaultPrevented){\n\t\t\t\t\twidth = event.detail.width;\n\n\t\t\t\t\tif(width && width !== elem._lazysizesWidth){\n\t\t\t\t\t\tsizeElement(elem, parent, event, width);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar updateElementsSizes = function(){\n\t\t\tvar i;\n\t\t\tvar len = autosizesElems.length;\n\t\t\tif(len){\n\t\t\t\ti = 0;\n\n\t\t\t\tfor(; i < len; i++){\n\t\t\t\t\tgetSizeElement(autosizesElems[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\n\t\tvar debouncedUpdateElementsSizes = debounce(updateElementsSizes);\n\n\t\treturn {\n\t\t\t_: function(){\n\t\t\t\tautosizesElems = document.getElementsByClassName(lazySizesCfg.autosizesClass);\n\t\t\t\taddEventListener('resize', debouncedUpdateElementsSizes);\n\t\t\t},\n\t\t\tcheckElems: debouncedUpdateElementsSizes,\n\t\t\tupdateElem: getSizeElement\n\t\t};\n\t})();\n\n\tvar init = function(){\n\t\tif(!init.i && document.getElementsByClassName){\n\t\t\tinit.i = true;\n\t\t\tautoSizer._();\n\t\t\tloader._();\n\t\t}\n\t};\n\n\tsetTimeout(function(){\n\t\tif(lazySizesCfg.init){\n\t\t\tinit();\n\t\t}\n\t});\n\n\tlazysizes = {\n\t\t/**\n\t\t * @type { LazySizesConfigPartial }\n\t\t */\n\t\tcfg: lazySizesCfg,\n\t\tautoSizer: autoSizer,\n\t\tloader: loader,\n\t\tinit: init,\n\t\tuP: updatePolyfill,\n\t\taC: addClass,\n\t\trC: removeClass,\n\t\thC: hasClass,\n\t\tfire: triggerEvent,\n\t\tgW: getWidth,\n\t\trAF: rAF,\n\t};\n\n\treturn lazysizes;\n}\n));\n","'use strict';\n\nmodule.exports = '3.11.1';\n","/*\n *  Copyright 2011 Twitter, Inc.\n *  Licensed under the Apache License, Version 2.0 (the \"License\");\n *  you may not use this file except in compliance with the License.\n *  You may obtain a copy of the License at\n *\n *  http://www.apache.org/licenses/LICENSE-2.0\n *\n *  Unless required by applicable law or agreed to in writing, software\n *  distributed under the License is distributed on an \"AS IS\" BASIS,\n *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *  See the License for the specific language governing permissions and\n *  limitations under the License.\n */\n\nvar Hogan = {};\n\n(function (Hogan) {\n  Hogan.Template = function (codeObj, text, compiler, options) {\n    codeObj = codeObj || {};\n    this.r = codeObj.code || this.r;\n    this.c = compiler;\n    this.options = options || {};\n    this.text = text || '';\n    this.partials = codeObj.partials || {};\n    this.subs = codeObj.subs || {};\n    this.buf = '';\n  }\n\n  Hogan.Template.prototype = {\n    // render: replaced by generated code.\n    r: function (context, partials, indent) { return ''; },\n\n    // variable escaping\n    v: hoganEscape,\n\n    // triple stache\n    t: coerceToString,\n\n    render: function render(context, partials, indent) {\n      return this.ri([context], partials || {}, indent);\n    },\n\n    // render internal -- a hook for overrides that catches partials too\n    ri: function (context, partials, indent) {\n      return this.r(context, partials, indent);\n    },\n\n    // ensurePartial\n    ep: function(symbol, partials) {\n      var partial = this.partials[symbol];\n\n      // check to see that if we've instantiated this partial before\n      var template = partials[partial.name];\n      if (partial.instance && partial.base == template) {\n        return partial.instance;\n      }\n\n      if (typeof template == 'string') {\n        if (!this.c) {\n          throw new Error(\"No compiler available.\");\n        }\n        template = this.c.compile(template, this.options);\n      }\n\n      if (!template) {\n        return null;\n      }\n\n      // We use this to check whether the partials dictionary has changed\n      this.partials[symbol].base = template;\n\n      if (partial.subs) {\n        // Make sure we consider parent template now\n        if (!partials.stackText) partials.stackText = {};\n        for (key in partial.subs) {\n          if (!partials.stackText[key]) {\n            partials.stackText[key] = (this.activeSub !== undefined && partials.stackText[this.activeSub]) ? partials.stackText[this.activeSub] : this.text;\n          }\n        }\n        template = createSpecializedPartial(template, partial.subs, partial.partials,\n          this.stackSubs, this.stackPartials, partials.stackText);\n      }\n      this.partials[symbol].instance = template;\n\n      return template;\n    },\n\n    // tries to find a partial in the current scope and render it\n    rp: function(symbol, context, partials, indent) {\n      var partial = this.ep(symbol, partials);\n      if (!partial) {\n        return '';\n      }\n\n      return partial.ri(context, partials, indent);\n    },\n\n    // render a section\n    rs: function(context, partials, section) {\n      var tail = context[context.length - 1];\n\n      if (!isArray(tail)) {\n        section(context, partials, this);\n        return;\n      }\n\n      for (var i = 0; i < tail.length; i++) {\n        context.push(tail[i]);\n        section(context, partials, this);\n        context.pop();\n      }\n    },\n\n    // maybe start a section\n    s: function(val, ctx, partials, inverted, start, end, tags) {\n      var pass;\n\n      if (isArray(val) && val.length === 0) {\n        return false;\n      }\n\n      if (typeof val == 'function') {\n        val = this.ms(val, ctx, partials, inverted, start, end, tags);\n      }\n\n      pass = !!val;\n\n      if (!inverted && pass && ctx) {\n        ctx.push((typeof val == 'object') ? val : ctx[ctx.length - 1]);\n      }\n\n      return pass;\n    },\n\n    // find values with dotted names\n    d: function(key, ctx, partials, returnFound) {\n      var found,\n          names = key.split('.'),\n          val = this.f(names[0], ctx, partials, returnFound),\n          doModelGet = this.options.modelGet,\n          cx = null;\n\n      if (key === '.' && isArray(ctx[ctx.length - 2])) {\n        val = ctx[ctx.length - 1];\n      } else {\n        for (var i = 1; i < names.length; i++) {\n          found = findInScope(names[i], val, doModelGet);\n          if (found !== undefined) {\n            cx = val;\n            val = found;\n          } else {\n            val = '';\n          }\n        }\n      }\n\n      if (returnFound && !val) {\n        return false;\n      }\n\n      if (!returnFound && typeof val == 'function') {\n        ctx.push(cx);\n        val = this.mv(val, ctx, partials);\n        ctx.pop();\n      }\n\n      return val;\n    },\n\n    // find values with normal names\n    f: function(key, ctx, partials, returnFound) {\n      var val = false,\n          v = null,\n          found = false,\n          doModelGet = this.options.modelGet;\n\n      for (var i = ctx.length - 1; i >= 0; i--) {\n        v = ctx[i];\n        val = findInScope(key, v, doModelGet);\n        if (val !== undefined) {\n          found = true;\n          break;\n        }\n      }\n\n      if (!found) {\n        return (returnFound) ? false : \"\";\n      }\n\n      if (!returnFound && typeof val == 'function') {\n        val = this.mv(val, ctx, partials);\n      }\n\n      return val;\n    },\n\n    // higher order templates\n    ls: function(func, cx, partials, text, tags) {\n      var oldTags = this.options.delimiters;\n\n      this.options.delimiters = tags;\n      this.b(this.ct(coerceToString(func.call(cx, text)), cx, partials));\n      this.options.delimiters = oldTags;\n\n      return false;\n    },\n\n    // compile text\n    ct: function(text, cx, partials) {\n      if (this.options.disableLambda) {\n        throw new Error('Lambda features disabled.');\n      }\n      return this.c.compile(text, this.options).render(cx, partials);\n    },\n\n    // template result buffering\n    b: function(s) { this.buf += s; },\n\n    fl: function() { var r = this.buf; this.buf = ''; return r; },\n\n    // method replace section\n    ms: function(func, ctx, partials, inverted, start, end, tags) {\n      var textSource,\n          cx = ctx[ctx.length - 1],\n          result = func.call(cx);\n\n      if (typeof result == 'function') {\n        if (inverted) {\n          return true;\n        } else {\n          textSource = (this.activeSub && this.subsText && this.subsText[this.activeSub]) ? this.subsText[this.activeSub] : this.text;\n          return this.ls(result, cx, partials, textSource.substring(start, end), tags);\n        }\n      }\n\n      return result;\n    },\n\n    // method replace variable\n    mv: function(func, ctx, partials) {\n      var cx = ctx[ctx.length - 1];\n      var result = func.call(cx);\n\n      if (typeof result == 'function') {\n        return this.ct(coerceToString(result.call(cx)), cx, partials);\n      }\n\n      return result;\n    },\n\n    sub: function(name, context, partials, indent) {\n      var f = this.subs[name];\n      if (f) {\n        this.activeSub = name;\n        f(context, partials, this, indent);\n        this.activeSub = false;\n      }\n    }\n\n  };\n\n  //Find a key in an object\n  function findInScope(key, scope, doModelGet) {\n    var val;\n\n    if (scope && typeof scope == 'object') {\n\n      if (scope[key] !== undefined) {\n        val = scope[key];\n\n      // try lookup with get for backbone or similar model data\n      } else if (doModelGet && scope.get && typeof scope.get == 'function') {\n        val = scope.get(key);\n      }\n    }\n\n    return val;\n  }\n\n  function createSpecializedPartial(instance, subs, partials, stackSubs, stackPartials, stackText) {\n    function PartialTemplate() {};\n    PartialTemplate.prototype = instance;\n    function Substitutions() {};\n    Substitutions.prototype = instance.subs;\n    var key;\n    var partial = new PartialTemplate();\n    partial.subs = new Substitutions();\n    partial.subsText = {};  //hehe. substext.\n    partial.buf = '';\n\n    stackSubs = stackSubs || {};\n    partial.stackSubs = stackSubs;\n    partial.subsText = stackText;\n    for (key in subs) {\n      if (!stackSubs[key]) stackSubs[key] = subs[key];\n    }\n    for (key in stackSubs) {\n      partial.subs[key] = stackSubs[key];\n    }\n\n    stackPartials = stackPartials || {};\n    partial.stackPartials = stackPartials;\n    for (key in partials) {\n      if (!stackPartials[key]) stackPartials[key] = partials[key];\n    }\n    for (key in stackPartials) {\n      partial.partials[key] = stackPartials[key];\n    }\n\n    return partial;\n  }\n\n  var rAmp = /&/g,\n      rLt = /</g,\n      rGt = />/g,\n      rApos = /\\'/g,\n      rQuot = /\\\"/g,\n      hChars = /[&<>\\\"\\']/;\n\n  function coerceToString(val) {\n    return String((val === null || val === undefined) ? '' : val);\n  }\n\n  function hoganEscape(str) {\n    str = coerceToString(str);\n    return hChars.test(str) ?\n      str\n        .replace(rAmp, '&amp;')\n        .replace(rLt, '&lt;')\n        .replace(rGt, '&gt;')\n        .replace(rApos, '&#39;')\n        .replace(rQuot, '&quot;') :\n      str;\n  }\n\n  var isArray = Array.isArray || function(a) {\n    return Object.prototype.toString.call(a) === '[object Array]';\n  };\n\n})(typeof exports !== 'undefined' ? exports : Hogan);\n","import './js/i18n'\nimport './js/index'\nimport './js/algolia'\nimport './js/event'\n\nimport './scss/index.scss'\nimport './scss/algolia.scss'\n","import i18next from 'i18next';\n\nimport config from './config';\n\nconst enTranslations = {\n  search: {\n    box: {\n      placeholder: 'Search all',\n      submitButtonTitle: 'Submit the search query',\n      resetButtonTitle: 'Clear the search query',\n      tips: '📖 Want to search for documentation? Please visit here: <a href=\"https://juicefs.com/docs/search\" target=\"_blank\">Search Documentation</a>',\n    },\n    menuLabel: {\n      blog: 'Blog',\n      customer_story: 'Customer Story',\n      event: 'Event',\n      solution: 'Solution',\n    },\n    noResultsText: 'No results have been found for: ',\n  },\n};\n\nconst zhCNTranslations = {\n  search: {\n    box: {\n      placeholder: '搜索所有内容',\n      submitButtonTitle: '提交查询',\n      resetButtonTitle: '清空查询',\n      tips: '📖 想要搜索文档？请访问这里：<a href=\"https://juicefs.com/docs/zh/search\" target=\"_blank\">文档搜索</a>',\n    },\n    menuLabel: {\n      blog: '博客',\n      customer_story: '客户案例',\n      event: '活动',\n      solution: '解决方案',\n    },\n    noResultsText: '没有搜索结果：',\n  },\n};\n\nfunction getLocale() {\n  const path = window.location.pathname;\n  return path.split('/')[1];\n}\n\n// Refer to https://www.i18next.com/how-to/faq#how-should-the-language-codes-be-formatted\nfunction getLanguageCode() {\n  switch (getLocale()) {\n    case 'en':\n      return 'en-US';\n    case 'zh-cn':\n      return 'zh-CN';\n    default:\n      return 'en-US';\n  }\n}\n\ni18next.init({\n  debug: config.debug,\n  lng: getLanguageCode(),\n  resources: {\n    en: { translation: enTranslations },\n    'zh-CN': { translation: zhCNTranslations },\n  },\n});\n\nexport default {\n  getLocale,\n};\n","const developmentConfig = {\n  debug: true,\n  algolia: {\n    appId: 'M57LS4K164',\n    apiKey: '2cb201d46a984c7888cfd7be5a9de5f9',\n    indexName: 'juicefs_cms_dev',  // Refer to ALGOLIA_INDEX_NAME in cms/settings/dev.py\n  },\n};\n\nconst productionConfig = {\n  debug: false,\n  algolia: {\n    appId: 'M57LS4K164',\n    apiKey: '2cb201d46a984c7888cfd7be5a9de5f9',\n    indexName: 'juicefs_cms_prod',  // Refer to ALGOLIA_INDEX_NAME in cms/settings/production.py\n  },\n};\n\n// Refer to https://parceljs.org/features/production/#development-branch-removal\nconst config = process.env.NODE_ENV === 'production' ? productionConfig : developmentConfig;\nexport default config;\n","import Alpine from 'alpinejs'\nimport persist from '@alpinejs/persist'\nimport Clipboard from '@ryangjchandler/alpine-clipboard'\n// Google fonts\nimport '@fontsource-variable/noto-sans-sc';\nimport '@fontsource-variable/afacad-flux';\n\nimport 'prismjs'\nimport 'prismjs/components/prism-bash'\nimport 'prismjs/plugins/line-numbers/prism-line-numbers'\nimport Swiper from 'swiper';\nimport { Navigation, Autoplay, Pagination } from 'swiper/modules';\n\n// lazyload\nimport 'lazysizes';\nimport 'lazysizes/plugins/parent-fit/ls.parent-fit';\n\n// zoom image\nimport mediumZoom from 'medium-zoom'\n\nmediumZoom(document.querySelectorAll('.blog .entry figure img'));\n\nconst swiper = new Swiper('.swiper', {\n    modules: [ Navigation, Autoplay, Pagination ],\n    // Optional parameters\n    loop: true,\n    // autoplay: {\n    //     delay: 3500,\n    //     disableOnInteraction: false\n    // },\n    // If we need pagination\n    pagination: {\n        el: '.swiper-pagination',\n        clickable: true,\n    },\n\n    // Navigation arrows\n    navigation: {\n        nextEl: '.swiper-button-next',\n        prevEl: '.swiper-button-prev',\n    },\n\n    // And if we need scrollbar\n    scrollbar: {\n        el: '.swiper-scrollbar',\n    },\n})\n\n// 初始化 cookie 存储\nwindow.cookieStorage = {\n    getItem(key) {\n        let cookies = document.cookie.split(\";\");\n        for (let i = 0; i < cookies.length; i++) {\n            let cookie = cookies[i].split(\"=\");\n            if (key == cookie[0].trim()) {\n                return decodeURIComponent(cookie[1]);\n            }\n        }\n        return null;\n    },\n    setItem(key, value) {\n        document.cookie = key+' = '+encodeURIComponent(value)\n    }\n}\n\ndocument.addEventListener('alpine:init', () => {\n    Alpine.data('userState', () => ({\n        state: [],\n        async init() {\n            try {\n                this.state = await fetch('/user_state').then(res => res.json())\n            }\n            catch(err) {\n                console.log('Read user state failed', err)\n            }\n        },\n    }))\n})\n\nAlpine.plugin(Clipboard)\nAlpine.plugin(persist)\n\nAlpine.start()\n","// packages/alpinejs/src/scheduler.js\nvar flushPending = false;\nvar flushing = false;\nvar queue = [];\nfunction scheduler(callback) {\n  queueJob(callback);\n}\nfunction queueJob(job) {\n  if (!queue.includes(job))\n    queue.push(job);\n  queueFlush();\n}\nfunction dequeueJob(job) {\n  let index = queue.indexOf(job);\n  if (index !== -1)\n    queue.splice(index, 1);\n}\nfunction queueFlush() {\n  if (!flushing && !flushPending) {\n    flushPending = true;\n    queueMicrotask(flushJobs);\n  }\n}\nfunction flushJobs() {\n  flushPending = false;\n  flushing = true;\n  for (let i = 0; i < queue.length; i++) {\n    queue[i]();\n  }\n  queue.length = 0;\n  flushing = false;\n}\n\n// packages/alpinejs/src/reactivity.js\nvar reactive;\nvar effect;\nvar release;\nvar raw;\nvar shouldSchedule = true;\nfunction disableEffectScheduling(callback) {\n  shouldSchedule = false;\n  callback();\n  shouldSchedule = true;\n}\nfunction setReactivityEngine(engine) {\n  reactive = engine.reactive;\n  release = engine.release;\n  effect = (callback) => engine.effect(callback, {scheduler: (task) => {\n    if (shouldSchedule) {\n      scheduler(task);\n    } else {\n      task();\n    }\n  }});\n  raw = engine.raw;\n}\nfunction overrideEffect(override) {\n  effect = override;\n}\nfunction elementBoundEffect(el) {\n  let cleanup2 = () => {\n  };\n  let wrappedEffect = (callback) => {\n    let effectReference = effect(callback);\n    if (!el._x_effects) {\n      el._x_effects = new Set();\n      el._x_runEffects = () => {\n        el._x_effects.forEach((i) => i());\n      };\n    }\n    el._x_effects.add(effectReference);\n    cleanup2 = () => {\n      if (effectReference === void 0)\n        return;\n      el._x_effects.delete(effectReference);\n      release(effectReference);\n    };\n    return effectReference;\n  };\n  return [wrappedEffect, () => {\n    cleanup2();\n  }];\n}\n\n// packages/alpinejs/src/mutation.js\nvar onAttributeAddeds = [];\nvar onElRemoveds = [];\nvar onElAddeds = [];\nfunction onElAdded(callback) {\n  onElAddeds.push(callback);\n}\nfunction onElRemoved(el, callback) {\n  if (typeof callback === \"function\") {\n    if (!el._x_cleanups)\n      el._x_cleanups = [];\n    el._x_cleanups.push(callback);\n  } else {\n    callback = el;\n    onElRemoveds.push(callback);\n  }\n}\nfunction onAttributesAdded(callback) {\n  onAttributeAddeds.push(callback);\n}\nfunction onAttributeRemoved(el, name, callback) {\n  if (!el._x_attributeCleanups)\n    el._x_attributeCleanups = {};\n  if (!el._x_attributeCleanups[name])\n    el._x_attributeCleanups[name] = [];\n  el._x_attributeCleanups[name].push(callback);\n}\nfunction cleanupAttributes(el, names) {\n  if (!el._x_attributeCleanups)\n    return;\n  Object.entries(el._x_attributeCleanups).forEach(([name, value]) => {\n    if (names === void 0 || names.includes(name)) {\n      value.forEach((i) => i());\n      delete el._x_attributeCleanups[name];\n    }\n  });\n}\nvar observer = new MutationObserver(onMutate);\nvar currentlyObserving = false;\nfunction startObservingMutations() {\n  observer.observe(document, {subtree: true, childList: true, attributes: true, attributeOldValue: true});\n  currentlyObserving = true;\n}\nfunction stopObservingMutations() {\n  flushObserver();\n  observer.disconnect();\n  currentlyObserving = false;\n}\nvar recordQueue = [];\nvar willProcessRecordQueue = false;\nfunction flushObserver() {\n  recordQueue = recordQueue.concat(observer.takeRecords());\n  if (recordQueue.length && !willProcessRecordQueue) {\n    willProcessRecordQueue = true;\n    queueMicrotask(() => {\n      processRecordQueue();\n      willProcessRecordQueue = false;\n    });\n  }\n}\nfunction processRecordQueue() {\n  onMutate(recordQueue);\n  recordQueue.length = 0;\n}\nfunction mutateDom(callback) {\n  if (!currentlyObserving)\n    return callback();\n  stopObservingMutations();\n  let result = callback();\n  startObservingMutations();\n  return result;\n}\nvar isCollecting = false;\nvar deferredMutations = [];\nfunction deferMutations() {\n  isCollecting = true;\n}\nfunction flushAndStopDeferringMutations() {\n  isCollecting = false;\n  onMutate(deferredMutations);\n  deferredMutations = [];\n}\nfunction onMutate(mutations) {\n  if (isCollecting) {\n    deferredMutations = deferredMutations.concat(mutations);\n    return;\n  }\n  let addedNodes = [];\n  let removedNodes = [];\n  let addedAttributes = new Map();\n  let removedAttributes = new Map();\n  for (let i = 0; i < mutations.length; i++) {\n    if (mutations[i].target._x_ignoreMutationObserver)\n      continue;\n    if (mutations[i].type === \"childList\") {\n      mutations[i].addedNodes.forEach((node) => node.nodeType === 1 && addedNodes.push(node));\n      mutations[i].removedNodes.forEach((node) => node.nodeType === 1 && removedNodes.push(node));\n    }\n    if (mutations[i].type === \"attributes\") {\n      let el = mutations[i].target;\n      let name = mutations[i].attributeName;\n      let oldValue = mutations[i].oldValue;\n      let add2 = () => {\n        if (!addedAttributes.has(el))\n          addedAttributes.set(el, []);\n        addedAttributes.get(el).push({name, value: el.getAttribute(name)});\n      };\n      let remove = () => {\n        if (!removedAttributes.has(el))\n          removedAttributes.set(el, []);\n        removedAttributes.get(el).push(name);\n      };\n      if (el.hasAttribute(name) && oldValue === null) {\n        add2();\n      } else if (el.hasAttribute(name)) {\n        remove();\n        add2();\n      } else {\n        remove();\n      }\n    }\n  }\n  removedAttributes.forEach((attrs, el) => {\n    cleanupAttributes(el, attrs);\n  });\n  addedAttributes.forEach((attrs, el) => {\n    onAttributeAddeds.forEach((i) => i(el, attrs));\n  });\n  for (let node of removedNodes) {\n    if (addedNodes.includes(node))\n      continue;\n    onElRemoveds.forEach((i) => i(node));\n    if (node._x_cleanups) {\n      while (node._x_cleanups.length)\n        node._x_cleanups.pop()();\n    }\n  }\n  addedNodes.forEach((node) => {\n    node._x_ignoreSelf = true;\n    node._x_ignore = true;\n  });\n  for (let node of addedNodes) {\n    if (removedNodes.includes(node))\n      continue;\n    if (!node.isConnected)\n      continue;\n    delete node._x_ignoreSelf;\n    delete node._x_ignore;\n    onElAddeds.forEach((i) => i(node));\n    node._x_ignore = true;\n    node._x_ignoreSelf = true;\n  }\n  addedNodes.forEach((node) => {\n    delete node._x_ignoreSelf;\n    delete node._x_ignore;\n  });\n  addedNodes = null;\n  removedNodes = null;\n  addedAttributes = null;\n  removedAttributes = null;\n}\n\n// packages/alpinejs/src/scope.js\nfunction scope(node) {\n  return mergeProxies(closestDataStack(node));\n}\nfunction addScopeToNode(node, data2, referenceNode) {\n  node._x_dataStack = [data2, ...closestDataStack(referenceNode || node)];\n  return () => {\n    node._x_dataStack = node._x_dataStack.filter((i) => i !== data2);\n  };\n}\nfunction refreshScope(element, scope2) {\n  let existingScope = element._x_dataStack[0];\n  Object.entries(scope2).forEach(([key, value]) => {\n    existingScope[key] = value;\n  });\n}\nfunction closestDataStack(node) {\n  if (node._x_dataStack)\n    return node._x_dataStack;\n  if (typeof ShadowRoot === \"function\" && node instanceof ShadowRoot) {\n    return closestDataStack(node.host);\n  }\n  if (!node.parentNode) {\n    return [];\n  }\n  return closestDataStack(node.parentNode);\n}\nfunction mergeProxies(objects) {\n  let thisProxy = new Proxy({}, {\n    ownKeys: () => {\n      return Array.from(new Set(objects.flatMap((i) => Object.keys(i))));\n    },\n    has: (target, name) => {\n      return objects.some((obj) => obj.hasOwnProperty(name));\n    },\n    get: (target, name) => {\n      return (objects.find((obj) => {\n        if (obj.hasOwnProperty(name)) {\n          let descriptor = Object.getOwnPropertyDescriptor(obj, name);\n          if (descriptor.get && descriptor.get._x_alreadyBound || descriptor.set && descriptor.set._x_alreadyBound) {\n            return true;\n          }\n          if ((descriptor.get || descriptor.set) && descriptor.enumerable) {\n            let getter = descriptor.get;\n            let setter = descriptor.set;\n            let property = descriptor;\n            getter = getter && getter.bind(thisProxy);\n            setter = setter && setter.bind(thisProxy);\n            if (getter)\n              getter._x_alreadyBound = true;\n            if (setter)\n              setter._x_alreadyBound = true;\n            Object.defineProperty(obj, name, {\n              ...property,\n              get: getter,\n              set: setter\n            });\n          }\n          return true;\n        }\n        return false;\n      }) || {})[name];\n    },\n    set: (target, name, value) => {\n      let closestObjectWithKey = objects.find((obj) => obj.hasOwnProperty(name));\n      if (closestObjectWithKey) {\n        closestObjectWithKey[name] = value;\n      } else {\n        objects[objects.length - 1][name] = value;\n      }\n      return true;\n    }\n  });\n  return thisProxy;\n}\n\n// packages/alpinejs/src/interceptor.js\nfunction initInterceptors(data2) {\n  let isObject2 = (val) => typeof val === \"object\" && !Array.isArray(val) && val !== null;\n  let recurse = (obj, basePath = \"\") => {\n    Object.entries(Object.getOwnPropertyDescriptors(obj)).forEach(([key, {value, enumerable}]) => {\n      if (enumerable === false || value === void 0)\n        return;\n      let path = basePath === \"\" ? key : `${basePath}.${key}`;\n      if (typeof value === \"object\" && value !== null && value._x_interceptor) {\n        obj[key] = value.initialize(data2, path, key);\n      } else {\n        if (isObject2(value) && value !== obj && !(value instanceof Element)) {\n          recurse(value, path);\n        }\n      }\n    });\n  };\n  return recurse(data2);\n}\nfunction interceptor(callback, mutateObj = () => {\n}) {\n  let obj = {\n    initialValue: void 0,\n    _x_interceptor: true,\n    initialize(data2, path, key) {\n      return callback(this.initialValue, () => get(data2, path), (value) => set(data2, path, value), path, key);\n    }\n  };\n  mutateObj(obj);\n  return (initialValue) => {\n    if (typeof initialValue === \"object\" && initialValue !== null && initialValue._x_interceptor) {\n      let initialize = obj.initialize.bind(obj);\n      obj.initialize = (data2, path, key) => {\n        let innerValue = initialValue.initialize(data2, path, key);\n        obj.initialValue = innerValue;\n        return initialize(data2, path, key);\n      };\n    } else {\n      obj.initialValue = initialValue;\n    }\n    return obj;\n  };\n}\nfunction get(obj, path) {\n  return path.split(\".\").reduce((carry, segment) => carry[segment], obj);\n}\nfunction set(obj, path, value) {\n  if (typeof path === \"string\")\n    path = path.split(\".\");\n  if (path.length === 1)\n    obj[path[0]] = value;\n  else if (path.length === 0)\n    throw error;\n  else {\n    if (obj[path[0]])\n      return set(obj[path[0]], path.slice(1), value);\n    else {\n      obj[path[0]] = {};\n      return set(obj[path[0]], path.slice(1), value);\n    }\n  }\n}\n\n// packages/alpinejs/src/magics.js\nvar magics = {};\nfunction magic(name, callback) {\n  magics[name] = callback;\n}\nfunction injectMagics(obj, el) {\n  Object.entries(magics).forEach(([name, callback]) => {\n    Object.defineProperty(obj, `$${name}`, {\n      get() {\n        let [utilities, cleanup2] = getElementBoundUtilities(el);\n        utilities = {interceptor, ...utilities};\n        onElRemoved(el, cleanup2);\n        return callback(el, utilities);\n      },\n      enumerable: false\n    });\n  });\n  return obj;\n}\n\n// packages/alpinejs/src/utils/error.js\nfunction tryCatch(el, expression, callback, ...args) {\n  try {\n    return callback(...args);\n  } catch (e) {\n    handleError(e, el, expression);\n  }\n}\nfunction handleError(error2, el, expression = void 0) {\n  Object.assign(error2, {el, expression});\n  console.warn(`Alpine Expression Error: ${error2.message}\n\n${expression ? 'Expression: \"' + expression + '\"\\n\\n' : \"\"}`, el);\n  setTimeout(() => {\n    throw error2;\n  }, 0);\n}\n\n// packages/alpinejs/src/evaluator.js\nvar shouldAutoEvaluateFunctions = true;\nfunction dontAutoEvaluateFunctions(callback) {\n  let cache = shouldAutoEvaluateFunctions;\n  shouldAutoEvaluateFunctions = false;\n  callback();\n  shouldAutoEvaluateFunctions = cache;\n}\nfunction evaluate(el, expression, extras = {}) {\n  let result;\n  evaluateLater(el, expression)((value) => result = value, extras);\n  return result;\n}\nfunction evaluateLater(...args) {\n  return theEvaluatorFunction(...args);\n}\nvar theEvaluatorFunction = normalEvaluator;\nfunction setEvaluator(newEvaluator) {\n  theEvaluatorFunction = newEvaluator;\n}\nfunction normalEvaluator(el, expression) {\n  let overriddenMagics = {};\n  injectMagics(overriddenMagics, el);\n  let dataStack = [overriddenMagics, ...closestDataStack(el)];\n  if (typeof expression === \"function\") {\n    return generateEvaluatorFromFunction(dataStack, expression);\n  }\n  let evaluator = generateEvaluatorFromString(dataStack, expression, el);\n  return tryCatch.bind(null, el, expression, evaluator);\n}\nfunction generateEvaluatorFromFunction(dataStack, func) {\n  return (receiver = () => {\n  }, {scope: scope2 = {}, params = []} = {}) => {\n    let result = func.apply(mergeProxies([scope2, ...dataStack]), params);\n    runIfTypeOfFunction(receiver, result);\n  };\n}\nvar evaluatorMemo = {};\nfunction generateFunctionFromString(expression, el) {\n  if (evaluatorMemo[expression]) {\n    return evaluatorMemo[expression];\n  }\n  let AsyncFunction = Object.getPrototypeOf(async function() {\n  }).constructor;\n  let rightSideSafeExpression = /^[\\n\\s]*if.*\\(.*\\)/.test(expression) || /^(let|const)\\s/.test(expression) ? `(() => { ${expression} })()` : expression;\n  const safeAsyncFunction = () => {\n    try {\n      return new AsyncFunction([\"__self\", \"scope\"], `with (scope) { __self.result = ${rightSideSafeExpression} }; __self.finished = true; return __self.result;`);\n    } catch (error2) {\n      handleError(error2, el, expression);\n      return Promise.resolve();\n    }\n  };\n  let func = safeAsyncFunction();\n  evaluatorMemo[expression] = func;\n  return func;\n}\nfunction generateEvaluatorFromString(dataStack, expression, el) {\n  let func = generateFunctionFromString(expression, el);\n  return (receiver = () => {\n  }, {scope: scope2 = {}, params = []} = {}) => {\n    func.result = void 0;\n    func.finished = false;\n    let completeScope = mergeProxies([scope2, ...dataStack]);\n    if (typeof func === \"function\") {\n      let promise = func(func, completeScope).catch((error2) => handleError(error2, el, expression));\n      if (func.finished) {\n        runIfTypeOfFunction(receiver, func.result, completeScope, params, el);\n        func.result = void 0;\n      } else {\n        promise.then((result) => {\n          runIfTypeOfFunction(receiver, result, completeScope, params, el);\n        }).catch((error2) => handleError(error2, el, expression)).finally(() => func.result = void 0);\n      }\n    }\n  };\n}\nfunction runIfTypeOfFunction(receiver, value, scope2, params, el) {\n  if (shouldAutoEvaluateFunctions && typeof value === \"function\") {\n    let result = value.apply(scope2, params);\n    if (result instanceof Promise) {\n      result.then((i) => runIfTypeOfFunction(receiver, i, scope2, params)).catch((error2) => handleError(error2, el, value));\n    } else {\n      receiver(result);\n    }\n  } else {\n    receiver(value);\n  }\n}\n\n// packages/alpinejs/src/directives.js\nvar prefixAsString = \"x-\";\nfunction prefix(subject = \"\") {\n  return prefixAsString + subject;\n}\nfunction setPrefix(newPrefix) {\n  prefixAsString = newPrefix;\n}\nvar directiveHandlers = {};\nfunction directive(name, callback) {\n  directiveHandlers[name] = callback;\n}\nfunction directives(el, attributes, originalAttributeOverride) {\n  attributes = Array.from(attributes);\n  if (el._x_virtualDirectives) {\n    let vAttributes = Object.entries(el._x_virtualDirectives).map(([name, value]) => ({name, value}));\n    let staticAttributes = attributesOnly(vAttributes);\n    vAttributes = vAttributes.map((attribute) => {\n      if (staticAttributes.find((attr) => attr.name === attribute.name)) {\n        return {\n          name: `x-bind:${attribute.name}`,\n          value: `\"${attribute.value}\"`\n        };\n      }\n      return attribute;\n    });\n    attributes = attributes.concat(vAttributes);\n  }\n  let transformedAttributeMap = {};\n  let directives2 = attributes.map(toTransformedAttributes((newName, oldName) => transformedAttributeMap[newName] = oldName)).filter(outNonAlpineAttributes).map(toParsedDirectives(transformedAttributeMap, originalAttributeOverride)).sort(byPriority);\n  return directives2.map((directive2) => {\n    return getDirectiveHandler(el, directive2);\n  });\n}\nfunction attributesOnly(attributes) {\n  return Array.from(attributes).map(toTransformedAttributes()).filter((attr) => !outNonAlpineAttributes(attr));\n}\nvar isDeferringHandlers = false;\nvar directiveHandlerStacks = new Map();\nvar currentHandlerStackKey = Symbol();\nfunction deferHandlingDirectives(callback) {\n  isDeferringHandlers = true;\n  let key = Symbol();\n  currentHandlerStackKey = key;\n  directiveHandlerStacks.set(key, []);\n  let flushHandlers = () => {\n    while (directiveHandlerStacks.get(key).length)\n      directiveHandlerStacks.get(key).shift()();\n    directiveHandlerStacks.delete(key);\n  };\n  let stopDeferring = () => {\n    isDeferringHandlers = false;\n    flushHandlers();\n  };\n  callback(flushHandlers);\n  stopDeferring();\n}\nfunction getElementBoundUtilities(el) {\n  let cleanups = [];\n  let cleanup2 = (callback) => cleanups.push(callback);\n  let [effect3, cleanupEffect] = elementBoundEffect(el);\n  cleanups.push(cleanupEffect);\n  let utilities = {\n    Alpine: alpine_default,\n    effect: effect3,\n    cleanup: cleanup2,\n    evaluateLater: evaluateLater.bind(evaluateLater, el),\n    evaluate: evaluate.bind(evaluate, el)\n  };\n  let doCleanup = () => cleanups.forEach((i) => i());\n  return [utilities, doCleanup];\n}\nfunction getDirectiveHandler(el, directive2) {\n  let noop = () => {\n  };\n  let handler3 = directiveHandlers[directive2.type] || noop;\n  let [utilities, cleanup2] = getElementBoundUtilities(el);\n  onAttributeRemoved(el, directive2.original, cleanup2);\n  let fullHandler = () => {\n    if (el._x_ignore || el._x_ignoreSelf)\n      return;\n    handler3.inline && handler3.inline(el, directive2, utilities);\n    handler3 = handler3.bind(handler3, el, directive2, utilities);\n    isDeferringHandlers ? directiveHandlerStacks.get(currentHandlerStackKey).push(handler3) : handler3();\n  };\n  fullHandler.runCleanups = cleanup2;\n  return fullHandler;\n}\nvar startingWith = (subject, replacement) => ({name, value}) => {\n  if (name.startsWith(subject))\n    name = name.replace(subject, replacement);\n  return {name, value};\n};\nvar into = (i) => i;\nfunction toTransformedAttributes(callback = () => {\n}) {\n  return ({name, value}) => {\n    let {name: newName, value: newValue} = attributeTransformers.reduce((carry, transform) => {\n      return transform(carry);\n    }, {name, value});\n    if (newName !== name)\n      callback(newName, name);\n    return {name: newName, value: newValue};\n  };\n}\nvar attributeTransformers = [];\nfunction mapAttributes(callback) {\n  attributeTransformers.push(callback);\n}\nfunction outNonAlpineAttributes({name}) {\n  return alpineAttributeRegex().test(name);\n}\nvar alpineAttributeRegex = () => new RegExp(`^${prefixAsString}([^:^.]+)\\\\b`);\nfunction toParsedDirectives(transformedAttributeMap, originalAttributeOverride) {\n  return ({name, value}) => {\n    let typeMatch = name.match(alpineAttributeRegex());\n    let valueMatch = name.match(/:([a-zA-Z0-9\\-:]+)/);\n    let modifiers = name.match(/\\.[^.\\]]+(?=[^\\]]*$)/g) || [];\n    let original = originalAttributeOverride || transformedAttributeMap[name] || name;\n    return {\n      type: typeMatch ? typeMatch[1] : null,\n      value: valueMatch ? valueMatch[1] : null,\n      modifiers: modifiers.map((i) => i.replace(\".\", \"\")),\n      expression: value,\n      original\n    };\n  };\n}\nvar DEFAULT = \"DEFAULT\";\nvar directiveOrder = [\n  \"ignore\",\n  \"ref\",\n  \"data\",\n  \"id\",\n  \"bind\",\n  \"init\",\n  \"for\",\n  \"mask\",\n  \"model\",\n  \"modelable\",\n  \"transition\",\n  \"show\",\n  \"if\",\n  DEFAULT,\n  \"teleport\"\n];\nfunction byPriority(a, b) {\n  let typeA = directiveOrder.indexOf(a.type) === -1 ? DEFAULT : a.type;\n  let typeB = directiveOrder.indexOf(b.type) === -1 ? DEFAULT : b.type;\n  return directiveOrder.indexOf(typeA) - directiveOrder.indexOf(typeB);\n}\n\n// packages/alpinejs/src/utils/dispatch.js\nfunction dispatch(el, name, detail = {}) {\n  el.dispatchEvent(new CustomEvent(name, {\n    detail,\n    bubbles: true,\n    composed: true,\n    cancelable: true\n  }));\n}\n\n// packages/alpinejs/src/nextTick.js\nvar tickStack = [];\nvar isHolding = false;\nfunction nextTick(callback = () => {\n}) {\n  queueMicrotask(() => {\n    isHolding || setTimeout(() => {\n      releaseNextTicks();\n    });\n  });\n  return new Promise((res) => {\n    tickStack.push(() => {\n      callback();\n      res();\n    });\n  });\n}\nfunction releaseNextTicks() {\n  isHolding = false;\n  while (tickStack.length)\n    tickStack.shift()();\n}\nfunction holdNextTicks() {\n  isHolding = true;\n}\n\n// packages/alpinejs/src/utils/walk.js\nfunction walk(el, callback) {\n  if (typeof ShadowRoot === \"function\" && el instanceof ShadowRoot) {\n    Array.from(el.children).forEach((el2) => walk(el2, callback));\n    return;\n  }\n  let skip = false;\n  callback(el, () => skip = true);\n  if (skip)\n    return;\n  let node = el.firstElementChild;\n  while (node) {\n    walk(node, callback, false);\n    node = node.nextElementSibling;\n  }\n}\n\n// packages/alpinejs/src/utils/warn.js\nfunction warn(message, ...args) {\n  console.warn(`Alpine Warning: ${message}`, ...args);\n}\n\n// packages/alpinejs/src/lifecycle.js\nfunction start() {\n  if (!document.body)\n    warn(\"Unable to initialize. Trying to load Alpine before `<body>` is available. Did you forget to add `defer` in Alpine's `<script>` tag?\");\n  dispatch(document, \"alpine:init\");\n  dispatch(document, \"alpine:initializing\");\n  startObservingMutations();\n  onElAdded((el) => initTree(el, walk));\n  onElRemoved((el) => destroyTree(el));\n  onAttributesAdded((el, attrs) => {\n    directives(el, attrs).forEach((handle) => handle());\n  });\n  let outNestedComponents = (el) => !closestRoot(el.parentElement, true);\n  Array.from(document.querySelectorAll(allSelectors())).filter(outNestedComponents).forEach((el) => {\n    initTree(el);\n  });\n  dispatch(document, \"alpine:initialized\");\n}\nvar rootSelectorCallbacks = [];\nvar initSelectorCallbacks = [];\nfunction rootSelectors() {\n  return rootSelectorCallbacks.map((fn) => fn());\n}\nfunction allSelectors() {\n  return rootSelectorCallbacks.concat(initSelectorCallbacks).map((fn) => fn());\n}\nfunction addRootSelector(selectorCallback) {\n  rootSelectorCallbacks.push(selectorCallback);\n}\nfunction addInitSelector(selectorCallback) {\n  initSelectorCallbacks.push(selectorCallback);\n}\nfunction closestRoot(el, includeInitSelectors = false) {\n  return findClosest(el, (element) => {\n    const selectors = includeInitSelectors ? allSelectors() : rootSelectors();\n    if (selectors.some((selector) => element.matches(selector)))\n      return true;\n  });\n}\nfunction findClosest(el, callback) {\n  if (!el)\n    return;\n  if (callback(el))\n    return el;\n  if (el._x_teleportBack)\n    el = el._x_teleportBack;\n  if (!el.parentElement)\n    return;\n  return findClosest(el.parentElement, callback);\n}\nfunction isRoot(el) {\n  return rootSelectors().some((selector) => el.matches(selector));\n}\nfunction initTree(el, walker = walk) {\n  deferHandlingDirectives(() => {\n    walker(el, (el2, skip) => {\n      directives(el2, el2.attributes).forEach((handle) => handle());\n      el2._x_ignore && skip();\n    });\n  });\n}\nfunction destroyTree(root) {\n  walk(root, (el) => cleanupAttributes(el));\n}\n\n// packages/alpinejs/src/utils/classes.js\nfunction setClasses(el, value) {\n  if (Array.isArray(value)) {\n    return setClassesFromString(el, value.join(\" \"));\n  } else if (typeof value === \"object\" && value !== null) {\n    return setClassesFromObject(el, value);\n  } else if (typeof value === \"function\") {\n    return setClasses(el, value());\n  }\n  return setClassesFromString(el, value);\n}\nfunction setClassesFromString(el, classString) {\n  let split = (classString2) => classString2.split(\" \").filter(Boolean);\n  let missingClasses = (classString2) => classString2.split(\" \").filter((i) => !el.classList.contains(i)).filter(Boolean);\n  let addClassesAndReturnUndo = (classes) => {\n    el.classList.add(...classes);\n    return () => {\n      el.classList.remove(...classes);\n    };\n  };\n  classString = classString === true ? classString = \"\" : classString || \"\";\n  return addClassesAndReturnUndo(missingClasses(classString));\n}\nfunction setClassesFromObject(el, classObject) {\n  let split = (classString) => classString.split(\" \").filter(Boolean);\n  let forAdd = Object.entries(classObject).flatMap(([classString, bool]) => bool ? split(classString) : false).filter(Boolean);\n  let forRemove = Object.entries(classObject).flatMap(([classString, bool]) => !bool ? split(classString) : false).filter(Boolean);\n  let added = [];\n  let removed = [];\n  forRemove.forEach((i) => {\n    if (el.classList.contains(i)) {\n      el.classList.remove(i);\n      removed.push(i);\n    }\n  });\n  forAdd.forEach((i) => {\n    if (!el.classList.contains(i)) {\n      el.classList.add(i);\n      added.push(i);\n    }\n  });\n  return () => {\n    removed.forEach((i) => el.classList.add(i));\n    added.forEach((i) => el.classList.remove(i));\n  };\n}\n\n// packages/alpinejs/src/utils/styles.js\nfunction setStyles(el, value) {\n  if (typeof value === \"object\" && value !== null) {\n    return setStylesFromObject(el, value);\n  }\n  return setStylesFromString(el, value);\n}\nfunction setStylesFromObject(el, value) {\n  let previousStyles = {};\n  Object.entries(value).forEach(([key, value2]) => {\n    previousStyles[key] = el.style[key];\n    if (!key.startsWith(\"--\")) {\n      key = kebabCase(key);\n    }\n    el.style.setProperty(key, value2);\n  });\n  setTimeout(() => {\n    if (el.style.length === 0) {\n      el.removeAttribute(\"style\");\n    }\n  });\n  return () => {\n    setStyles(el, previousStyles);\n  };\n}\nfunction setStylesFromString(el, value) {\n  let cache = el.getAttribute(\"style\", value);\n  el.setAttribute(\"style\", value);\n  return () => {\n    el.setAttribute(\"style\", cache || \"\");\n  };\n}\nfunction kebabCase(subject) {\n  return subject.replace(/([a-z])([A-Z])/g, \"$1-$2\").toLowerCase();\n}\n\n// packages/alpinejs/src/utils/once.js\nfunction once(callback, fallback = () => {\n}) {\n  let called = false;\n  return function() {\n    if (!called) {\n      called = true;\n      callback.apply(this, arguments);\n    } else {\n      fallback.apply(this, arguments);\n    }\n  };\n}\n\n// packages/alpinejs/src/directives/x-transition.js\ndirective(\"transition\", (el, {value, modifiers, expression}, {evaluate: evaluate2}) => {\n  if (typeof expression === \"function\")\n    expression = evaluate2(expression);\n  if (!expression) {\n    registerTransitionsFromHelper(el, modifiers, value);\n  } else {\n    registerTransitionsFromClassString(el, expression, value);\n  }\n});\nfunction registerTransitionsFromClassString(el, classString, stage) {\n  registerTransitionObject(el, setClasses, \"\");\n  let directiveStorageMap = {\n    enter: (classes) => {\n      el._x_transition.enter.during = classes;\n    },\n    \"enter-start\": (classes) => {\n      el._x_transition.enter.start = classes;\n    },\n    \"enter-end\": (classes) => {\n      el._x_transition.enter.end = classes;\n    },\n    leave: (classes) => {\n      el._x_transition.leave.during = classes;\n    },\n    \"leave-start\": (classes) => {\n      el._x_transition.leave.start = classes;\n    },\n    \"leave-end\": (classes) => {\n      el._x_transition.leave.end = classes;\n    }\n  };\n  directiveStorageMap[stage](classString);\n}\nfunction registerTransitionsFromHelper(el, modifiers, stage) {\n  registerTransitionObject(el, setStyles);\n  let doesntSpecify = !modifiers.includes(\"in\") && !modifiers.includes(\"out\") && !stage;\n  let transitioningIn = doesntSpecify || modifiers.includes(\"in\") || [\"enter\"].includes(stage);\n  let transitioningOut = doesntSpecify || modifiers.includes(\"out\") || [\"leave\"].includes(stage);\n  if (modifiers.includes(\"in\") && !doesntSpecify) {\n    modifiers = modifiers.filter((i, index) => index < modifiers.indexOf(\"out\"));\n  }\n  if (modifiers.includes(\"out\") && !doesntSpecify) {\n    modifiers = modifiers.filter((i, index) => index > modifiers.indexOf(\"out\"));\n  }\n  let wantsAll = !modifiers.includes(\"opacity\") && !modifiers.includes(\"scale\");\n  let wantsOpacity = wantsAll || modifiers.includes(\"opacity\");\n  let wantsScale = wantsAll || modifiers.includes(\"scale\");\n  let opacityValue = wantsOpacity ? 0 : 1;\n  let scaleValue = wantsScale ? modifierValue(modifiers, \"scale\", 95) / 100 : 1;\n  let delay = modifierValue(modifiers, \"delay\", 0);\n  let origin = modifierValue(modifiers, \"origin\", \"center\");\n  let property = \"opacity, transform\";\n  let durationIn = modifierValue(modifiers, \"duration\", 150) / 1e3;\n  let durationOut = modifierValue(modifiers, \"duration\", 75) / 1e3;\n  let easing = `cubic-bezier(0.4, 0.0, 0.2, 1)`;\n  if (transitioningIn) {\n    el._x_transition.enter.during = {\n      transformOrigin: origin,\n      transitionDelay: delay,\n      transitionProperty: property,\n      transitionDuration: `${durationIn}s`,\n      transitionTimingFunction: easing\n    };\n    el._x_transition.enter.start = {\n      opacity: opacityValue,\n      transform: `scale(${scaleValue})`\n    };\n    el._x_transition.enter.end = {\n      opacity: 1,\n      transform: `scale(1)`\n    };\n  }\n  if (transitioningOut) {\n    el._x_transition.leave.during = {\n      transformOrigin: origin,\n      transitionDelay: delay,\n      transitionProperty: property,\n      transitionDuration: `${durationOut}s`,\n      transitionTimingFunction: easing\n    };\n    el._x_transition.leave.start = {\n      opacity: 1,\n      transform: `scale(1)`\n    };\n    el._x_transition.leave.end = {\n      opacity: opacityValue,\n      transform: `scale(${scaleValue})`\n    };\n  }\n}\nfunction registerTransitionObject(el, setFunction, defaultValue = {}) {\n  if (!el._x_transition)\n    el._x_transition = {\n      enter: {during: defaultValue, start: defaultValue, end: defaultValue},\n      leave: {during: defaultValue, start: defaultValue, end: defaultValue},\n      in(before = () => {\n      }, after = () => {\n      }) {\n        transition(el, setFunction, {\n          during: this.enter.during,\n          start: this.enter.start,\n          end: this.enter.end\n        }, before, after);\n      },\n      out(before = () => {\n      }, after = () => {\n      }) {\n        transition(el, setFunction, {\n          during: this.leave.during,\n          start: this.leave.start,\n          end: this.leave.end\n        }, before, after);\n      }\n    };\n}\nwindow.Element.prototype._x_toggleAndCascadeWithTransitions = function(el, value, show, hide) {\n  const nextTick2 = document.visibilityState === \"visible\" ? requestAnimationFrame : setTimeout;\n  let clickAwayCompatibleShow = () => nextTick2(show);\n  if (value) {\n    if (el._x_transition && (el._x_transition.enter || el._x_transition.leave)) {\n      el._x_transition.enter && (Object.entries(el._x_transition.enter.during).length || Object.entries(el._x_transition.enter.start).length || Object.entries(el._x_transition.enter.end).length) ? el._x_transition.in(show) : clickAwayCompatibleShow();\n    } else {\n      el._x_transition ? el._x_transition.in(show) : clickAwayCompatibleShow();\n    }\n    return;\n  }\n  el._x_hidePromise = el._x_transition ? new Promise((resolve, reject) => {\n    el._x_transition.out(() => {\n    }, () => resolve(hide));\n    el._x_transitioning.beforeCancel(() => reject({isFromCancelledTransition: true}));\n  }) : Promise.resolve(hide);\n  queueMicrotask(() => {\n    let closest = closestHide(el);\n    if (closest) {\n      if (!closest._x_hideChildren)\n        closest._x_hideChildren = [];\n      closest._x_hideChildren.push(el);\n    } else {\n      nextTick2(() => {\n        let hideAfterChildren = (el2) => {\n          let carry = Promise.all([\n            el2._x_hidePromise,\n            ...(el2._x_hideChildren || []).map(hideAfterChildren)\n          ]).then(([i]) => i());\n          delete el2._x_hidePromise;\n          delete el2._x_hideChildren;\n          return carry;\n        };\n        hideAfterChildren(el).catch((e) => {\n          if (!e.isFromCancelledTransition)\n            throw e;\n        });\n      });\n    }\n  });\n};\nfunction closestHide(el) {\n  let parent = el.parentNode;\n  if (!parent)\n    return;\n  return parent._x_hidePromise ? parent : closestHide(parent);\n}\nfunction transition(el, setFunction, {during, start: start2, end} = {}, before = () => {\n}, after = () => {\n}) {\n  if (el._x_transitioning)\n    el._x_transitioning.cancel();\n  if (Object.keys(during).length === 0 && Object.keys(start2).length === 0 && Object.keys(end).length === 0) {\n    before();\n    after();\n    return;\n  }\n  let undoStart, undoDuring, undoEnd;\n  performTransition(el, {\n    start() {\n      undoStart = setFunction(el, start2);\n    },\n    during() {\n      undoDuring = setFunction(el, during);\n    },\n    before,\n    end() {\n      undoStart();\n      undoEnd = setFunction(el, end);\n    },\n    after,\n    cleanup() {\n      undoDuring();\n      undoEnd();\n    }\n  });\n}\nfunction performTransition(el, stages) {\n  let interrupted, reachedBefore, reachedEnd;\n  let finish = once(() => {\n    mutateDom(() => {\n      interrupted = true;\n      if (!reachedBefore)\n        stages.before();\n      if (!reachedEnd) {\n        stages.end();\n        releaseNextTicks();\n      }\n      stages.after();\n      if (el.isConnected)\n        stages.cleanup();\n      delete el._x_transitioning;\n    });\n  });\n  el._x_transitioning = {\n    beforeCancels: [],\n    beforeCancel(callback) {\n      this.beforeCancels.push(callback);\n    },\n    cancel: once(function() {\n      while (this.beforeCancels.length) {\n        this.beforeCancels.shift()();\n      }\n      ;\n      finish();\n    }),\n    finish\n  };\n  mutateDom(() => {\n    stages.start();\n    stages.during();\n  });\n  holdNextTicks();\n  requestAnimationFrame(() => {\n    if (interrupted)\n      return;\n    let duration = Number(getComputedStyle(el).transitionDuration.replace(/,.*/, \"\").replace(\"s\", \"\")) * 1e3;\n    let delay = Number(getComputedStyle(el).transitionDelay.replace(/,.*/, \"\").replace(\"s\", \"\")) * 1e3;\n    if (duration === 0)\n      duration = Number(getComputedStyle(el).animationDuration.replace(\"s\", \"\")) * 1e3;\n    mutateDom(() => {\n      stages.before();\n    });\n    reachedBefore = true;\n    requestAnimationFrame(() => {\n      if (interrupted)\n        return;\n      mutateDom(() => {\n        stages.end();\n      });\n      releaseNextTicks();\n      setTimeout(el._x_transitioning.finish, duration + delay);\n      reachedEnd = true;\n    });\n  });\n}\nfunction modifierValue(modifiers, key, fallback) {\n  if (modifiers.indexOf(key) === -1)\n    return fallback;\n  const rawValue = modifiers[modifiers.indexOf(key) + 1];\n  if (!rawValue)\n    return fallback;\n  if (key === \"scale\") {\n    if (isNaN(rawValue))\n      return fallback;\n  }\n  if (key === \"duration\") {\n    let match = rawValue.match(/([0-9]+)ms/);\n    if (match)\n      return match[1];\n  }\n  if (key === \"origin\") {\n    if ([\"top\", \"right\", \"left\", \"center\", \"bottom\"].includes(modifiers[modifiers.indexOf(key) + 2])) {\n      return [rawValue, modifiers[modifiers.indexOf(key) + 2]].join(\" \");\n    }\n  }\n  return rawValue;\n}\n\n// packages/alpinejs/src/clone.js\nvar isCloning = false;\nfunction skipDuringClone(callback, fallback = () => {\n}) {\n  return (...args) => isCloning ? fallback(...args) : callback(...args);\n}\nfunction clone(oldEl, newEl) {\n  if (!newEl._x_dataStack)\n    newEl._x_dataStack = oldEl._x_dataStack;\n  isCloning = true;\n  dontRegisterReactiveSideEffects(() => {\n    cloneTree(newEl);\n  });\n  isCloning = false;\n}\nfunction cloneTree(el) {\n  let hasRunThroughFirstEl = false;\n  let shallowWalker = (el2, callback) => {\n    walk(el2, (el3, skip) => {\n      if (hasRunThroughFirstEl && isRoot(el3))\n        return skip();\n      hasRunThroughFirstEl = true;\n      callback(el3, skip);\n    });\n  };\n  initTree(el, shallowWalker);\n}\nfunction dontRegisterReactiveSideEffects(callback) {\n  let cache = effect;\n  overrideEffect((callback2, el) => {\n    let storedEffect = cache(callback2);\n    release(storedEffect);\n    return () => {\n    };\n  });\n  callback();\n  overrideEffect(cache);\n}\n\n// packages/alpinejs/src/utils/bind.js\nfunction bind(el, name, value, modifiers = []) {\n  if (!el._x_bindings)\n    el._x_bindings = reactive({});\n  el._x_bindings[name] = value;\n  name = modifiers.includes(\"camel\") ? camelCase(name) : name;\n  switch (name) {\n    case \"value\":\n      bindInputValue(el, value);\n      break;\n    case \"style\":\n      bindStyles(el, value);\n      break;\n    case \"class\":\n      bindClasses(el, value);\n      break;\n    default:\n      bindAttribute(el, name, value);\n      break;\n  }\n}\nfunction bindInputValue(el, value) {\n  if (el.type === \"radio\") {\n    if (el.attributes.value === void 0) {\n      el.value = value;\n    }\n    if (window.fromModel) {\n      el.checked = checkedAttrLooseCompare(el.value, value);\n    }\n  } else if (el.type === \"checkbox\") {\n    if (Number.isInteger(value)) {\n      el.value = value;\n    } else if (!Number.isInteger(value) && !Array.isArray(value) && typeof value !== \"boolean\" && ![null, void 0].includes(value)) {\n      el.value = String(value);\n    } else {\n      if (Array.isArray(value)) {\n        el.checked = value.some((val) => checkedAttrLooseCompare(val, el.value));\n      } else {\n        el.checked = !!value;\n      }\n    }\n  } else if (el.tagName === \"SELECT\") {\n    updateSelect(el, value);\n  } else {\n    if (el.value === value)\n      return;\n    el.value = value;\n  }\n}\nfunction bindClasses(el, value) {\n  if (el._x_undoAddedClasses)\n    el._x_undoAddedClasses();\n  el._x_undoAddedClasses = setClasses(el, value);\n}\nfunction bindStyles(el, value) {\n  if (el._x_undoAddedStyles)\n    el._x_undoAddedStyles();\n  el._x_undoAddedStyles = setStyles(el, value);\n}\nfunction bindAttribute(el, name, value) {\n  if ([null, void 0, false].includes(value) && attributeShouldntBePreservedIfFalsy(name)) {\n    el.removeAttribute(name);\n  } else {\n    if (isBooleanAttr(name))\n      value = name;\n    setIfChanged(el, name, value);\n  }\n}\nfunction setIfChanged(el, attrName, value) {\n  if (el.getAttribute(attrName) != value) {\n    el.setAttribute(attrName, value);\n  }\n}\nfunction updateSelect(el, value) {\n  const arrayWrappedValue = [].concat(value).map((value2) => {\n    return value2 + \"\";\n  });\n  Array.from(el.options).forEach((option) => {\n    option.selected = arrayWrappedValue.includes(option.value);\n  });\n}\nfunction camelCase(subject) {\n  return subject.toLowerCase().replace(/-(\\w)/g, (match, char) => char.toUpperCase());\n}\nfunction checkedAttrLooseCompare(valueA, valueB) {\n  return valueA == valueB;\n}\nfunction isBooleanAttr(attrName) {\n  const booleanAttributes = [\n    \"disabled\",\n    \"checked\",\n    \"required\",\n    \"readonly\",\n    \"hidden\",\n    \"open\",\n    \"selected\",\n    \"autofocus\",\n    \"itemscope\",\n    \"multiple\",\n    \"novalidate\",\n    \"allowfullscreen\",\n    \"allowpaymentrequest\",\n    \"formnovalidate\",\n    \"autoplay\",\n    \"controls\",\n    \"loop\",\n    \"muted\",\n    \"playsinline\",\n    \"default\",\n    \"ismap\",\n    \"reversed\",\n    \"async\",\n    \"defer\",\n    \"nomodule\"\n  ];\n  return booleanAttributes.includes(attrName);\n}\nfunction attributeShouldntBePreservedIfFalsy(name) {\n  return ![\"aria-pressed\", \"aria-checked\", \"aria-expanded\", \"aria-selected\"].includes(name);\n}\nfunction getBinding(el, name, fallback) {\n  if (el._x_bindings && el._x_bindings[name] !== void 0)\n    return el._x_bindings[name];\n  let attr = el.getAttribute(name);\n  if (attr === null)\n    return typeof fallback === \"function\" ? fallback() : fallback;\n  if (isBooleanAttr(name)) {\n    return !![name, \"true\"].includes(attr);\n  }\n  if (attr === \"\")\n    return true;\n  return attr;\n}\n\n// packages/alpinejs/src/utils/debounce.js\nfunction debounce(func, wait) {\n  var timeout;\n  return function() {\n    var context = this, args = arguments;\n    var later = function() {\n      timeout = null;\n      func.apply(context, args);\n    };\n    clearTimeout(timeout);\n    timeout = setTimeout(later, wait);\n  };\n}\n\n// packages/alpinejs/src/utils/throttle.js\nfunction throttle(func, limit) {\n  let inThrottle;\n  return function() {\n    let context = this, args = arguments;\n    if (!inThrottle) {\n      func.apply(context, args);\n      inThrottle = true;\n      setTimeout(() => inThrottle = false, limit);\n    }\n  };\n}\n\n// packages/alpinejs/src/plugin.js\nfunction plugin(callback) {\n  callback(alpine_default);\n}\n\n// packages/alpinejs/src/store.js\nvar stores = {};\nvar isReactive = false;\nfunction store(name, value) {\n  if (!isReactive) {\n    stores = reactive(stores);\n    isReactive = true;\n  }\n  if (value === void 0) {\n    return stores[name];\n  }\n  stores[name] = value;\n  if (typeof value === \"object\" && value !== null && value.hasOwnProperty(\"init\") && typeof value.init === \"function\") {\n    stores[name].init();\n  }\n  initInterceptors(stores[name]);\n}\nfunction getStores() {\n  return stores;\n}\n\n// packages/alpinejs/src/binds.js\nvar binds = {};\nfunction bind2(name, bindings) {\n  let getBindings = typeof bindings !== \"function\" ? () => bindings : bindings;\n  if (name instanceof Element) {\n    applyBindingsObject(name, getBindings());\n  } else {\n    binds[name] = getBindings;\n  }\n}\nfunction injectBindingProviders(obj) {\n  Object.entries(binds).forEach(([name, callback]) => {\n    Object.defineProperty(obj, name, {\n      get() {\n        return (...args) => {\n          return callback(...args);\n        };\n      }\n    });\n  });\n  return obj;\n}\nfunction applyBindingsObject(el, obj, original) {\n  let cleanupRunners = [];\n  while (cleanupRunners.length)\n    cleanupRunners.pop()();\n  let attributes = Object.entries(obj).map(([name, value]) => ({name, value}));\n  let staticAttributes = attributesOnly(attributes);\n  attributes = attributes.map((attribute) => {\n    if (staticAttributes.find((attr) => attr.name === attribute.name)) {\n      return {\n        name: `x-bind:${attribute.name}`,\n        value: `\"${attribute.value}\"`\n      };\n    }\n    return attribute;\n  });\n  directives(el, attributes, original).map((handle) => {\n    cleanupRunners.push(handle.runCleanups);\n    handle();\n  });\n}\n\n// packages/alpinejs/src/datas.js\nvar datas = {};\nfunction data(name, callback) {\n  datas[name] = callback;\n}\nfunction injectDataProviders(obj, context) {\n  Object.entries(datas).forEach(([name, callback]) => {\n    Object.defineProperty(obj, name, {\n      get() {\n        return (...args) => {\n          return callback.bind(context)(...args);\n        };\n      },\n      enumerable: false\n    });\n  });\n  return obj;\n}\n\n// packages/alpinejs/src/alpine.js\nvar Alpine = {\n  get reactive() {\n    return reactive;\n  },\n  get release() {\n    return release;\n  },\n  get effect() {\n    return effect;\n  },\n  get raw() {\n    return raw;\n  },\n  version: \"3.10.3\",\n  flushAndStopDeferringMutations,\n  dontAutoEvaluateFunctions,\n  disableEffectScheduling,\n  setReactivityEngine,\n  closestDataStack,\n  skipDuringClone,\n  addRootSelector,\n  addInitSelector,\n  addScopeToNode,\n  deferMutations,\n  mapAttributes,\n  evaluateLater,\n  setEvaluator,\n  mergeProxies,\n  findClosest,\n  closestRoot,\n  interceptor,\n  transition,\n  setStyles,\n  mutateDom,\n  directive,\n  throttle,\n  debounce,\n  evaluate,\n  initTree,\n  nextTick,\n  prefixed: prefix,\n  prefix: setPrefix,\n  plugin,\n  magic,\n  store,\n  start,\n  clone,\n  bound: getBinding,\n  $data: scope,\n  data,\n  bind: bind2\n};\nvar alpine_default = Alpine;\n\n// node_modules/@vue/shared/dist/shared.esm-bundler.js\nfunction makeMap(str, expectsLowerCase) {\n  const map = Object.create(null);\n  const list = str.split(\",\");\n  for (let i = 0; i < list.length; i++) {\n    map[list[i]] = true;\n  }\n  return expectsLowerCase ? (val) => !!map[val.toLowerCase()] : (val) => !!map[val];\n}\nvar PatchFlagNames = {\n  [1]: `TEXT`,\n  [2]: `CLASS`,\n  [4]: `STYLE`,\n  [8]: `PROPS`,\n  [16]: `FULL_PROPS`,\n  [32]: `HYDRATE_EVENTS`,\n  [64]: `STABLE_FRAGMENT`,\n  [128]: `KEYED_FRAGMENT`,\n  [256]: `UNKEYED_FRAGMENT`,\n  [512]: `NEED_PATCH`,\n  [1024]: `DYNAMIC_SLOTS`,\n  [2048]: `DEV_ROOT_FRAGMENT`,\n  [-1]: `HOISTED`,\n  [-2]: `BAIL`\n};\nvar slotFlagsText = {\n  [1]: \"STABLE\",\n  [2]: \"DYNAMIC\",\n  [3]: \"FORWARDED\"\n};\nvar specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;\nvar isBooleanAttr2 = /* @__PURE__ */ makeMap(specialBooleanAttrs + `,async,autofocus,autoplay,controls,default,defer,disabled,hidden,loop,open,required,reversed,scoped,seamless,checked,muted,multiple,selected`);\nvar EMPTY_OBJ = true ? Object.freeze({}) : {};\nvar EMPTY_ARR = true ? Object.freeze([]) : [];\nvar extend = Object.assign;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar hasOwn = (val, key) => hasOwnProperty.call(val, key);\nvar isArray = Array.isArray;\nvar isMap = (val) => toTypeString(val) === \"[object Map]\";\nvar isString = (val) => typeof val === \"string\";\nvar isSymbol = (val) => typeof val === \"symbol\";\nvar isObject = (val) => val !== null && typeof val === \"object\";\nvar objectToString = Object.prototype.toString;\nvar toTypeString = (value) => objectToString.call(value);\nvar toRawType = (value) => {\n  return toTypeString(value).slice(8, -1);\n};\nvar isIntegerKey = (key) => isString(key) && key !== \"NaN\" && key[0] !== \"-\" && \"\" + parseInt(key, 10) === key;\nvar cacheStringFunction = (fn) => {\n  const cache = Object.create(null);\n  return (str) => {\n    const hit = cache[str];\n    return hit || (cache[str] = fn(str));\n  };\n};\nvar camelizeRE = /-(\\w)/g;\nvar camelize = cacheStringFunction((str) => {\n  return str.replace(camelizeRE, (_, c) => c ? c.toUpperCase() : \"\");\n});\nvar hyphenateRE = /\\B([A-Z])/g;\nvar hyphenate = cacheStringFunction((str) => str.replace(hyphenateRE, \"-$1\").toLowerCase());\nvar capitalize = cacheStringFunction((str) => str.charAt(0).toUpperCase() + str.slice(1));\nvar toHandlerKey = cacheStringFunction((str) => str ? `on${capitalize(str)}` : ``);\nvar hasChanged = (value, oldValue) => value !== oldValue && (value === value || oldValue === oldValue);\n\n// node_modules/@vue/reactivity/dist/reactivity.esm-bundler.js\nvar targetMap = new WeakMap();\nvar effectStack = [];\nvar activeEffect;\nvar ITERATE_KEY = Symbol(true ? \"iterate\" : \"\");\nvar MAP_KEY_ITERATE_KEY = Symbol(true ? \"Map key iterate\" : \"\");\nfunction isEffect(fn) {\n  return fn && fn._isEffect === true;\n}\nfunction effect2(fn, options = EMPTY_OBJ) {\n  if (isEffect(fn)) {\n    fn = fn.raw;\n  }\n  const effect3 = createReactiveEffect(fn, options);\n  if (!options.lazy) {\n    effect3();\n  }\n  return effect3;\n}\nfunction stop(effect3) {\n  if (effect3.active) {\n    cleanup(effect3);\n    if (effect3.options.onStop) {\n      effect3.options.onStop();\n    }\n    effect3.active = false;\n  }\n}\nvar uid = 0;\nfunction createReactiveEffect(fn, options) {\n  const effect3 = function reactiveEffect() {\n    if (!effect3.active) {\n      return fn();\n    }\n    if (!effectStack.includes(effect3)) {\n      cleanup(effect3);\n      try {\n        enableTracking();\n        effectStack.push(effect3);\n        activeEffect = effect3;\n        return fn();\n      } finally {\n        effectStack.pop();\n        resetTracking();\n        activeEffect = effectStack[effectStack.length - 1];\n      }\n    }\n  };\n  effect3.id = uid++;\n  effect3.allowRecurse = !!options.allowRecurse;\n  effect3._isEffect = true;\n  effect3.active = true;\n  effect3.raw = fn;\n  effect3.deps = [];\n  effect3.options = options;\n  return effect3;\n}\nfunction cleanup(effect3) {\n  const {deps} = effect3;\n  if (deps.length) {\n    for (let i = 0; i < deps.length; i++) {\n      deps[i].delete(effect3);\n    }\n    deps.length = 0;\n  }\n}\nvar shouldTrack = true;\nvar trackStack = [];\nfunction pauseTracking() {\n  trackStack.push(shouldTrack);\n  shouldTrack = false;\n}\nfunction enableTracking() {\n  trackStack.push(shouldTrack);\n  shouldTrack = true;\n}\nfunction resetTracking() {\n  const last = trackStack.pop();\n  shouldTrack = last === void 0 ? true : last;\n}\nfunction track(target, type, key) {\n  if (!shouldTrack || activeEffect === void 0) {\n    return;\n  }\n  let depsMap = targetMap.get(target);\n  if (!depsMap) {\n    targetMap.set(target, depsMap = new Map());\n  }\n  let dep = depsMap.get(key);\n  if (!dep) {\n    depsMap.set(key, dep = new Set());\n  }\n  if (!dep.has(activeEffect)) {\n    dep.add(activeEffect);\n    activeEffect.deps.push(dep);\n    if (activeEffect.options.onTrack) {\n      activeEffect.options.onTrack({\n        effect: activeEffect,\n        target,\n        type,\n        key\n      });\n    }\n  }\n}\nfunction trigger(target, type, key, newValue, oldValue, oldTarget) {\n  const depsMap = targetMap.get(target);\n  if (!depsMap) {\n    return;\n  }\n  const effects = new Set();\n  const add2 = (effectsToAdd) => {\n    if (effectsToAdd) {\n      effectsToAdd.forEach((effect3) => {\n        if (effect3 !== activeEffect || effect3.allowRecurse) {\n          effects.add(effect3);\n        }\n      });\n    }\n  };\n  if (type === \"clear\") {\n    depsMap.forEach(add2);\n  } else if (key === \"length\" && isArray(target)) {\n    depsMap.forEach((dep, key2) => {\n      if (key2 === \"length\" || key2 >= newValue) {\n        add2(dep);\n      }\n    });\n  } else {\n    if (key !== void 0) {\n      add2(depsMap.get(key));\n    }\n    switch (type) {\n      case \"add\":\n        if (!isArray(target)) {\n          add2(depsMap.get(ITERATE_KEY));\n          if (isMap(target)) {\n            add2(depsMap.get(MAP_KEY_ITERATE_KEY));\n          }\n        } else if (isIntegerKey(key)) {\n          add2(depsMap.get(\"length\"));\n        }\n        break;\n      case \"delete\":\n        if (!isArray(target)) {\n          add2(depsMap.get(ITERATE_KEY));\n          if (isMap(target)) {\n            add2(depsMap.get(MAP_KEY_ITERATE_KEY));\n          }\n        }\n        break;\n      case \"set\":\n        if (isMap(target)) {\n          add2(depsMap.get(ITERATE_KEY));\n        }\n        break;\n    }\n  }\n  const run = (effect3) => {\n    if (effect3.options.onTrigger) {\n      effect3.options.onTrigger({\n        effect: effect3,\n        target,\n        key,\n        type,\n        newValue,\n        oldValue,\n        oldTarget\n      });\n    }\n    if (effect3.options.scheduler) {\n      effect3.options.scheduler(effect3);\n    } else {\n      effect3();\n    }\n  };\n  effects.forEach(run);\n}\nvar isNonTrackableKeys = /* @__PURE__ */ makeMap(`__proto__,__v_isRef,__isVue`);\nvar builtInSymbols = new Set(Object.getOwnPropertyNames(Symbol).map((key) => Symbol[key]).filter(isSymbol));\nvar get2 = /* @__PURE__ */ createGetter();\nvar shallowGet = /* @__PURE__ */ createGetter(false, true);\nvar readonlyGet = /* @__PURE__ */ createGetter(true);\nvar shallowReadonlyGet = /* @__PURE__ */ createGetter(true, true);\nvar arrayInstrumentations = {};\n[\"includes\", \"indexOf\", \"lastIndexOf\"].forEach((key) => {\n  const method = Array.prototype[key];\n  arrayInstrumentations[key] = function(...args) {\n    const arr = toRaw(this);\n    for (let i = 0, l = this.length; i < l; i++) {\n      track(arr, \"get\", i + \"\");\n    }\n    const res = method.apply(arr, args);\n    if (res === -1 || res === false) {\n      return method.apply(arr, args.map(toRaw));\n    } else {\n      return res;\n    }\n  };\n});\n[\"push\", \"pop\", \"shift\", \"unshift\", \"splice\"].forEach((key) => {\n  const method = Array.prototype[key];\n  arrayInstrumentations[key] = function(...args) {\n    pauseTracking();\n    const res = method.apply(this, args);\n    resetTracking();\n    return res;\n  };\n});\nfunction createGetter(isReadonly = false, shallow = false) {\n  return function get3(target, key, receiver) {\n    if (key === \"__v_isReactive\") {\n      return !isReadonly;\n    } else if (key === \"__v_isReadonly\") {\n      return isReadonly;\n    } else if (key === \"__v_raw\" && receiver === (isReadonly ? shallow ? shallowReadonlyMap : readonlyMap : shallow ? shallowReactiveMap : reactiveMap).get(target)) {\n      return target;\n    }\n    const targetIsArray = isArray(target);\n    if (!isReadonly && targetIsArray && hasOwn(arrayInstrumentations, key)) {\n      return Reflect.get(arrayInstrumentations, key, receiver);\n    }\n    const res = Reflect.get(target, key, receiver);\n    if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) {\n      return res;\n    }\n    if (!isReadonly) {\n      track(target, \"get\", key);\n    }\n    if (shallow) {\n      return res;\n    }\n    if (isRef(res)) {\n      const shouldUnwrap = !targetIsArray || !isIntegerKey(key);\n      return shouldUnwrap ? res.value : res;\n    }\n    if (isObject(res)) {\n      return isReadonly ? readonly(res) : reactive2(res);\n    }\n    return res;\n  };\n}\nvar set2 = /* @__PURE__ */ createSetter();\nvar shallowSet = /* @__PURE__ */ createSetter(true);\nfunction createSetter(shallow = false) {\n  return function set3(target, key, value, receiver) {\n    let oldValue = target[key];\n    if (!shallow) {\n      value = toRaw(value);\n      oldValue = toRaw(oldValue);\n      if (!isArray(target) && isRef(oldValue) && !isRef(value)) {\n        oldValue.value = value;\n        return true;\n      }\n    }\n    const hadKey = isArray(target) && isIntegerKey(key) ? Number(key) < target.length : hasOwn(target, key);\n    const result = Reflect.set(target, key, value, receiver);\n    if (target === toRaw(receiver)) {\n      if (!hadKey) {\n        trigger(target, \"add\", key, value);\n      } else if (hasChanged(value, oldValue)) {\n        trigger(target, \"set\", key, value, oldValue);\n      }\n    }\n    return result;\n  };\n}\nfunction deleteProperty(target, key) {\n  const hadKey = hasOwn(target, key);\n  const oldValue = target[key];\n  const result = Reflect.deleteProperty(target, key);\n  if (result && hadKey) {\n    trigger(target, \"delete\", key, void 0, oldValue);\n  }\n  return result;\n}\nfunction has(target, key) {\n  const result = Reflect.has(target, key);\n  if (!isSymbol(key) || !builtInSymbols.has(key)) {\n    track(target, \"has\", key);\n  }\n  return result;\n}\nfunction ownKeys(target) {\n  track(target, \"iterate\", isArray(target) ? \"length\" : ITERATE_KEY);\n  return Reflect.ownKeys(target);\n}\nvar mutableHandlers = {\n  get: get2,\n  set: set2,\n  deleteProperty,\n  has,\n  ownKeys\n};\nvar readonlyHandlers = {\n  get: readonlyGet,\n  set(target, key) {\n    if (true) {\n      console.warn(`Set operation on key \"${String(key)}\" failed: target is readonly.`, target);\n    }\n    return true;\n  },\n  deleteProperty(target, key) {\n    if (true) {\n      console.warn(`Delete operation on key \"${String(key)}\" failed: target is readonly.`, target);\n    }\n    return true;\n  }\n};\nvar shallowReactiveHandlers = extend({}, mutableHandlers, {\n  get: shallowGet,\n  set: shallowSet\n});\nvar shallowReadonlyHandlers = extend({}, readonlyHandlers, {\n  get: shallowReadonlyGet\n});\nvar toReactive = (value) => isObject(value) ? reactive2(value) : value;\nvar toReadonly = (value) => isObject(value) ? readonly(value) : value;\nvar toShallow = (value) => value;\nvar getProto = (v) => Reflect.getPrototypeOf(v);\nfunction get$1(target, key, isReadonly = false, isShallow = false) {\n  target = target[\"__v_raw\"];\n  const rawTarget = toRaw(target);\n  const rawKey = toRaw(key);\n  if (key !== rawKey) {\n    !isReadonly && track(rawTarget, \"get\", key);\n  }\n  !isReadonly && track(rawTarget, \"get\", rawKey);\n  const {has: has2} = getProto(rawTarget);\n  const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n  if (has2.call(rawTarget, key)) {\n    return wrap(target.get(key));\n  } else if (has2.call(rawTarget, rawKey)) {\n    return wrap(target.get(rawKey));\n  } else if (target !== rawTarget) {\n    target.get(key);\n  }\n}\nfunction has$1(key, isReadonly = false) {\n  const target = this[\"__v_raw\"];\n  const rawTarget = toRaw(target);\n  const rawKey = toRaw(key);\n  if (key !== rawKey) {\n    !isReadonly && track(rawTarget, \"has\", key);\n  }\n  !isReadonly && track(rawTarget, \"has\", rawKey);\n  return key === rawKey ? target.has(key) : target.has(key) || target.has(rawKey);\n}\nfunction size(target, isReadonly = false) {\n  target = target[\"__v_raw\"];\n  !isReadonly && track(toRaw(target), \"iterate\", ITERATE_KEY);\n  return Reflect.get(target, \"size\", target);\n}\nfunction add(value) {\n  value = toRaw(value);\n  const target = toRaw(this);\n  const proto = getProto(target);\n  const hadKey = proto.has.call(target, value);\n  if (!hadKey) {\n    target.add(value);\n    trigger(target, \"add\", value, value);\n  }\n  return this;\n}\nfunction set$1(key, value) {\n  value = toRaw(value);\n  const target = toRaw(this);\n  const {has: has2, get: get3} = getProto(target);\n  let hadKey = has2.call(target, key);\n  if (!hadKey) {\n    key = toRaw(key);\n    hadKey = has2.call(target, key);\n  } else if (true) {\n    checkIdentityKeys(target, has2, key);\n  }\n  const oldValue = get3.call(target, key);\n  target.set(key, value);\n  if (!hadKey) {\n    trigger(target, \"add\", key, value);\n  } else if (hasChanged(value, oldValue)) {\n    trigger(target, \"set\", key, value, oldValue);\n  }\n  return this;\n}\nfunction deleteEntry(key) {\n  const target = toRaw(this);\n  const {has: has2, get: get3} = getProto(target);\n  let hadKey = has2.call(target, key);\n  if (!hadKey) {\n    key = toRaw(key);\n    hadKey = has2.call(target, key);\n  } else if (true) {\n    checkIdentityKeys(target, has2, key);\n  }\n  const oldValue = get3 ? get3.call(target, key) : void 0;\n  const result = target.delete(key);\n  if (hadKey) {\n    trigger(target, \"delete\", key, void 0, oldValue);\n  }\n  return result;\n}\nfunction clear() {\n  const target = toRaw(this);\n  const hadItems = target.size !== 0;\n  const oldTarget = true ? isMap(target) ? new Map(target) : new Set(target) : void 0;\n  const result = target.clear();\n  if (hadItems) {\n    trigger(target, \"clear\", void 0, void 0, oldTarget);\n  }\n  return result;\n}\nfunction createForEach(isReadonly, isShallow) {\n  return function forEach(callback, thisArg) {\n    const observed = this;\n    const target = observed[\"__v_raw\"];\n    const rawTarget = toRaw(target);\n    const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n    !isReadonly && track(rawTarget, \"iterate\", ITERATE_KEY);\n    return target.forEach((value, key) => {\n      return callback.call(thisArg, wrap(value), wrap(key), observed);\n    });\n  };\n}\nfunction createIterableMethod(method, isReadonly, isShallow) {\n  return function(...args) {\n    const target = this[\"__v_raw\"];\n    const rawTarget = toRaw(target);\n    const targetIsMap = isMap(rawTarget);\n    const isPair = method === \"entries\" || method === Symbol.iterator && targetIsMap;\n    const isKeyOnly = method === \"keys\" && targetIsMap;\n    const innerIterator = target[method](...args);\n    const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;\n    !isReadonly && track(rawTarget, \"iterate\", isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY);\n    return {\n      next() {\n        const {value, done} = innerIterator.next();\n        return done ? {value, done} : {\n          value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value),\n          done\n        };\n      },\n      [Symbol.iterator]() {\n        return this;\n      }\n    };\n  };\n}\nfunction createReadonlyMethod(type) {\n  return function(...args) {\n    if (true) {\n      const key = args[0] ? `on key \"${args[0]}\" ` : ``;\n      console.warn(`${capitalize(type)} operation ${key}failed: target is readonly.`, toRaw(this));\n    }\n    return type === \"delete\" ? false : this;\n  };\n}\nvar mutableInstrumentations = {\n  get(key) {\n    return get$1(this, key);\n  },\n  get size() {\n    return size(this);\n  },\n  has: has$1,\n  add,\n  set: set$1,\n  delete: deleteEntry,\n  clear,\n  forEach: createForEach(false, false)\n};\nvar shallowInstrumentations = {\n  get(key) {\n    return get$1(this, key, false, true);\n  },\n  get size() {\n    return size(this);\n  },\n  has: has$1,\n  add,\n  set: set$1,\n  delete: deleteEntry,\n  clear,\n  forEach: createForEach(false, true)\n};\nvar readonlyInstrumentations = {\n  get(key) {\n    return get$1(this, key, true);\n  },\n  get size() {\n    return size(this, true);\n  },\n  has(key) {\n    return has$1.call(this, key, true);\n  },\n  add: createReadonlyMethod(\"add\"),\n  set: createReadonlyMethod(\"set\"),\n  delete: createReadonlyMethod(\"delete\"),\n  clear: createReadonlyMethod(\"clear\"),\n  forEach: createForEach(true, false)\n};\nvar shallowReadonlyInstrumentations = {\n  get(key) {\n    return get$1(this, key, true, true);\n  },\n  get size() {\n    return size(this, true);\n  },\n  has(key) {\n    return has$1.call(this, key, true);\n  },\n  add: createReadonlyMethod(\"add\"),\n  set: createReadonlyMethod(\"set\"),\n  delete: createReadonlyMethod(\"delete\"),\n  clear: createReadonlyMethod(\"clear\"),\n  forEach: createForEach(true, true)\n};\nvar iteratorMethods = [\"keys\", \"values\", \"entries\", Symbol.iterator];\niteratorMethods.forEach((method) => {\n  mutableInstrumentations[method] = createIterableMethod(method, false, false);\n  readonlyInstrumentations[method] = createIterableMethod(method, true, false);\n  shallowInstrumentations[method] = createIterableMethod(method, false, true);\n  shallowReadonlyInstrumentations[method] = createIterableMethod(method, true, true);\n});\nfunction createInstrumentationGetter(isReadonly, shallow) {\n  const instrumentations = shallow ? isReadonly ? shallowReadonlyInstrumentations : shallowInstrumentations : isReadonly ? readonlyInstrumentations : mutableInstrumentations;\n  return (target, key, receiver) => {\n    if (key === \"__v_isReactive\") {\n      return !isReadonly;\n    } else if (key === \"__v_isReadonly\") {\n      return isReadonly;\n    } else if (key === \"__v_raw\") {\n      return target;\n    }\n    return Reflect.get(hasOwn(instrumentations, key) && key in target ? instrumentations : target, key, receiver);\n  };\n}\nvar mutableCollectionHandlers = {\n  get: createInstrumentationGetter(false, false)\n};\nvar shallowCollectionHandlers = {\n  get: createInstrumentationGetter(false, true)\n};\nvar readonlyCollectionHandlers = {\n  get: createInstrumentationGetter(true, false)\n};\nvar shallowReadonlyCollectionHandlers = {\n  get: createInstrumentationGetter(true, true)\n};\nfunction checkIdentityKeys(target, has2, key) {\n  const rawKey = toRaw(key);\n  if (rawKey !== key && has2.call(target, rawKey)) {\n    const type = toRawType(target);\n    console.warn(`Reactive ${type} contains both the raw and reactive versions of the same object${type === `Map` ? ` as keys` : ``}, which can lead to inconsistencies. Avoid differentiating between the raw and reactive versions of an object and only use the reactive version if possible.`);\n  }\n}\nvar reactiveMap = new WeakMap();\nvar shallowReactiveMap = new WeakMap();\nvar readonlyMap = new WeakMap();\nvar shallowReadonlyMap = new WeakMap();\nfunction targetTypeMap(rawType) {\n  switch (rawType) {\n    case \"Object\":\n    case \"Array\":\n      return 1;\n    case \"Map\":\n    case \"Set\":\n    case \"WeakMap\":\n    case \"WeakSet\":\n      return 2;\n    default:\n      return 0;\n  }\n}\nfunction getTargetType(value) {\n  return value[\"__v_skip\"] || !Object.isExtensible(value) ? 0 : targetTypeMap(toRawType(value));\n}\nfunction reactive2(target) {\n  if (target && target[\"__v_isReadonly\"]) {\n    return target;\n  }\n  return createReactiveObject(target, false, mutableHandlers, mutableCollectionHandlers, reactiveMap);\n}\nfunction readonly(target) {\n  return createReactiveObject(target, true, readonlyHandlers, readonlyCollectionHandlers, readonlyMap);\n}\nfunction createReactiveObject(target, isReadonly, baseHandlers, collectionHandlers, proxyMap) {\n  if (!isObject(target)) {\n    if (true) {\n      console.warn(`value cannot be made reactive: ${String(target)}`);\n    }\n    return target;\n  }\n  if (target[\"__v_raw\"] && !(isReadonly && target[\"__v_isReactive\"])) {\n    return target;\n  }\n  const existingProxy = proxyMap.get(target);\n  if (existingProxy) {\n    return existingProxy;\n  }\n  const targetType = getTargetType(target);\n  if (targetType === 0) {\n    return target;\n  }\n  const proxy = new Proxy(target, targetType === 2 ? collectionHandlers : baseHandlers);\n  proxyMap.set(target, proxy);\n  return proxy;\n}\nfunction toRaw(observed) {\n  return observed && toRaw(observed[\"__v_raw\"]) || observed;\n}\nfunction isRef(r) {\n  return Boolean(r && r.__v_isRef === true);\n}\n\n// packages/alpinejs/src/magics/$nextTick.js\nmagic(\"nextTick\", () => nextTick);\n\n// packages/alpinejs/src/magics/$dispatch.js\nmagic(\"dispatch\", (el) => dispatch.bind(dispatch, el));\n\n// packages/alpinejs/src/magics/$watch.js\nmagic(\"watch\", (el, {evaluateLater: evaluateLater2, effect: effect3}) => (key, callback) => {\n  let evaluate2 = evaluateLater2(key);\n  let firstTime = true;\n  let oldValue;\n  let effectReference = effect3(() => evaluate2((value) => {\n    JSON.stringify(value);\n    if (!firstTime) {\n      queueMicrotask(() => {\n        callback(value, oldValue);\n        oldValue = value;\n      });\n    } else {\n      oldValue = value;\n    }\n    firstTime = false;\n  }));\n  el._x_effects.delete(effectReference);\n});\n\n// packages/alpinejs/src/magics/$store.js\nmagic(\"store\", getStores);\n\n// packages/alpinejs/src/magics/$data.js\nmagic(\"data\", (el) => scope(el));\n\n// packages/alpinejs/src/magics/$root.js\nmagic(\"root\", (el) => closestRoot(el));\n\n// packages/alpinejs/src/magics/$refs.js\nmagic(\"refs\", (el) => {\n  if (el._x_refs_proxy)\n    return el._x_refs_proxy;\n  el._x_refs_proxy = mergeProxies(getArrayOfRefObject(el));\n  return el._x_refs_proxy;\n});\nfunction getArrayOfRefObject(el) {\n  let refObjects = [];\n  let currentEl = el;\n  while (currentEl) {\n    if (currentEl._x_refs)\n      refObjects.push(currentEl._x_refs);\n    currentEl = currentEl.parentNode;\n  }\n  return refObjects;\n}\n\n// packages/alpinejs/src/ids.js\nvar globalIdMemo = {};\nfunction findAndIncrementId(name) {\n  if (!globalIdMemo[name])\n    globalIdMemo[name] = 0;\n  return ++globalIdMemo[name];\n}\nfunction closestIdRoot(el, name) {\n  return findClosest(el, (element) => {\n    if (element._x_ids && element._x_ids[name])\n      return true;\n  });\n}\nfunction setIdRoot(el, name) {\n  if (!el._x_ids)\n    el._x_ids = {};\n  if (!el._x_ids[name])\n    el._x_ids[name] = findAndIncrementId(name);\n}\n\n// packages/alpinejs/src/magics/$id.js\nmagic(\"id\", (el) => (name, key = null) => {\n  let root = closestIdRoot(el, name);\n  let id = root ? root._x_ids[name] : findAndIncrementId(name);\n  return key ? `${name}-${id}-${key}` : `${name}-${id}`;\n});\n\n// packages/alpinejs/src/magics/$el.js\nmagic(\"el\", (el) => el);\n\n// packages/alpinejs/src/magics/index.js\nwarnMissingPluginMagic(\"Focus\", \"focus\", \"focus\");\nwarnMissingPluginMagic(\"Persist\", \"persist\", \"persist\");\nfunction warnMissingPluginMagic(name, magicName, slug) {\n  magic(magicName, (el) => warn(`You can't use [$${directiveName}] without first installing the \"${name}\" plugin here: https://alpinejs.dev/plugins/${slug}`, el));\n}\n\n// packages/alpinejs/src/directives/x-modelable.js\ndirective(\"modelable\", (el, {expression}, {effect: effect3, evaluateLater: evaluateLater2}) => {\n  let func = evaluateLater2(expression);\n  let innerGet = () => {\n    let result;\n    func((i) => result = i);\n    return result;\n  };\n  let evaluateInnerSet = evaluateLater2(`${expression} = __placeholder`);\n  let innerSet = (val) => evaluateInnerSet(() => {\n  }, {scope: {__placeholder: val}});\n  let initialValue = innerGet();\n  innerSet(initialValue);\n  queueMicrotask(() => {\n    if (!el._x_model)\n      return;\n    el._x_removeModelListeners[\"default\"]();\n    let outerGet = el._x_model.get;\n    let outerSet = el._x_model.set;\n    effect3(() => innerSet(outerGet()));\n    effect3(() => outerSet(innerGet()));\n  });\n});\n\n// packages/alpinejs/src/directives/x-teleport.js\ndirective(\"teleport\", (el, {expression}, {cleanup: cleanup2}) => {\n  if (el.tagName.toLowerCase() !== \"template\")\n    warn(\"x-teleport can only be used on a <template> tag\", el);\n  let target = document.querySelector(expression);\n  if (!target)\n    warn(`Cannot find x-teleport element for selector: \"${expression}\"`);\n  let clone2 = el.content.cloneNode(true).firstElementChild;\n  el._x_teleport = clone2;\n  clone2._x_teleportBack = el;\n  if (el._x_forwardEvents) {\n    el._x_forwardEvents.forEach((eventName) => {\n      clone2.addEventListener(eventName, (e) => {\n        e.stopPropagation();\n        el.dispatchEvent(new e.constructor(e.type, e));\n      });\n    });\n  }\n  addScopeToNode(clone2, {}, el);\n  mutateDom(() => {\n    target.appendChild(clone2);\n    initTree(clone2);\n    clone2._x_ignore = true;\n  });\n  cleanup2(() => clone2.remove());\n});\n\n// packages/alpinejs/src/directives/x-ignore.js\nvar handler = () => {\n};\nhandler.inline = (el, {modifiers}, {cleanup: cleanup2}) => {\n  modifiers.includes(\"self\") ? el._x_ignoreSelf = true : el._x_ignore = true;\n  cleanup2(() => {\n    modifiers.includes(\"self\") ? delete el._x_ignoreSelf : delete el._x_ignore;\n  });\n};\ndirective(\"ignore\", handler);\n\n// packages/alpinejs/src/directives/x-effect.js\ndirective(\"effect\", (el, {expression}, {effect: effect3}) => effect3(evaluateLater(el, expression)));\n\n// packages/alpinejs/src/utils/on.js\nfunction on(el, event, modifiers, callback) {\n  let listenerTarget = el;\n  let handler3 = (e) => callback(e);\n  let options = {};\n  let wrapHandler = (callback2, wrapper) => (e) => wrapper(callback2, e);\n  if (modifiers.includes(\"dot\"))\n    event = dotSyntax(event);\n  if (modifiers.includes(\"camel\"))\n    event = camelCase2(event);\n  if (modifiers.includes(\"passive\"))\n    options.passive = true;\n  if (modifiers.includes(\"capture\"))\n    options.capture = true;\n  if (modifiers.includes(\"window\"))\n    listenerTarget = window;\n  if (modifiers.includes(\"document\"))\n    listenerTarget = document;\n  if (modifiers.includes(\"prevent\"))\n    handler3 = wrapHandler(handler3, (next, e) => {\n      e.preventDefault();\n      next(e);\n    });\n  if (modifiers.includes(\"stop\"))\n    handler3 = wrapHandler(handler3, (next, e) => {\n      e.stopPropagation();\n      next(e);\n    });\n  if (modifiers.includes(\"self\"))\n    handler3 = wrapHandler(handler3, (next, e) => {\n      e.target === el && next(e);\n    });\n  if (modifiers.includes(\"away\") || modifiers.includes(\"outside\")) {\n    listenerTarget = document;\n    handler3 = wrapHandler(handler3, (next, e) => {\n      if (el.contains(e.target))\n        return;\n      if (e.target.isConnected === false)\n        return;\n      if (el.offsetWidth < 1 && el.offsetHeight < 1)\n        return;\n      if (el._x_isShown === false)\n        return;\n      next(e);\n    });\n  }\n  if (modifiers.includes(\"once\")) {\n    handler3 = wrapHandler(handler3, (next, e) => {\n      next(e);\n      listenerTarget.removeEventListener(event, handler3, options);\n    });\n  }\n  handler3 = wrapHandler(handler3, (next, e) => {\n    if (isKeyEvent(event)) {\n      if (isListeningForASpecificKeyThatHasntBeenPressed(e, modifiers)) {\n        return;\n      }\n    }\n    next(e);\n  });\n  if (modifiers.includes(\"debounce\")) {\n    let nextModifier = modifiers[modifiers.indexOf(\"debounce\") + 1] || \"invalid-wait\";\n    let wait = isNumeric(nextModifier.split(\"ms\")[0]) ? Number(nextModifier.split(\"ms\")[0]) : 250;\n    handler3 = debounce(handler3, wait);\n  }\n  if (modifiers.includes(\"throttle\")) {\n    let nextModifier = modifiers[modifiers.indexOf(\"throttle\") + 1] || \"invalid-wait\";\n    let wait = isNumeric(nextModifier.split(\"ms\")[0]) ? Number(nextModifier.split(\"ms\")[0]) : 250;\n    handler3 = throttle(handler3, wait);\n  }\n  listenerTarget.addEventListener(event, handler3, options);\n  return () => {\n    listenerTarget.removeEventListener(event, handler3, options);\n  };\n}\nfunction dotSyntax(subject) {\n  return subject.replace(/-/g, \".\");\n}\nfunction camelCase2(subject) {\n  return subject.toLowerCase().replace(/-(\\w)/g, (match, char) => char.toUpperCase());\n}\nfunction isNumeric(subject) {\n  return !Array.isArray(subject) && !isNaN(subject);\n}\nfunction kebabCase2(subject) {\n  return subject.replace(/([a-z])([A-Z])/g, \"$1-$2\").replace(/[_\\s]/, \"-\").toLowerCase();\n}\nfunction isKeyEvent(event) {\n  return [\"keydown\", \"keyup\"].includes(event);\n}\nfunction isListeningForASpecificKeyThatHasntBeenPressed(e, modifiers) {\n  let keyModifiers = modifiers.filter((i) => {\n    return ![\"window\", \"document\", \"prevent\", \"stop\", \"once\"].includes(i);\n  });\n  if (keyModifiers.includes(\"debounce\")) {\n    let debounceIndex = keyModifiers.indexOf(\"debounce\");\n    keyModifiers.splice(debounceIndex, isNumeric((keyModifiers[debounceIndex + 1] || \"invalid-wait\").split(\"ms\")[0]) ? 2 : 1);\n  }\n  if (keyModifiers.length === 0)\n    return false;\n  if (keyModifiers.length === 1 && keyToModifiers(e.key).includes(keyModifiers[0]))\n    return false;\n  const systemKeyModifiers = [\"ctrl\", \"shift\", \"alt\", \"meta\", \"cmd\", \"super\"];\n  const selectedSystemKeyModifiers = systemKeyModifiers.filter((modifier) => keyModifiers.includes(modifier));\n  keyModifiers = keyModifiers.filter((i) => !selectedSystemKeyModifiers.includes(i));\n  if (selectedSystemKeyModifiers.length > 0) {\n    const activelyPressedKeyModifiers = selectedSystemKeyModifiers.filter((modifier) => {\n      if (modifier === \"cmd\" || modifier === \"super\")\n        modifier = \"meta\";\n      return e[`${modifier}Key`];\n    });\n    if (activelyPressedKeyModifiers.length === selectedSystemKeyModifiers.length) {\n      if (keyToModifiers(e.key).includes(keyModifiers[0]))\n        return false;\n    }\n  }\n  return true;\n}\nfunction keyToModifiers(key) {\n  if (!key)\n    return [];\n  key = kebabCase2(key);\n  let modifierToKeyMap = {\n    ctrl: \"control\",\n    slash: \"/\",\n    space: \"-\",\n    spacebar: \"-\",\n    cmd: \"meta\",\n    esc: \"escape\",\n    up: \"arrow-up\",\n    down: \"arrow-down\",\n    left: \"arrow-left\",\n    right: \"arrow-right\",\n    period: \".\",\n    equal: \"=\"\n  };\n  modifierToKeyMap[key] = key;\n  return Object.keys(modifierToKeyMap).map((modifier) => {\n    if (modifierToKeyMap[modifier] === key)\n      return modifier;\n  }).filter((modifier) => modifier);\n}\n\n// packages/alpinejs/src/directives/x-model.js\ndirective(\"model\", (el, {modifiers, expression}, {effect: effect3, cleanup: cleanup2}) => {\n  let evaluate2 = evaluateLater(el, expression);\n  let assignmentExpression = `${expression} = rightSideOfExpression($event, ${expression})`;\n  let evaluateAssignment = evaluateLater(el, assignmentExpression);\n  var event = el.tagName.toLowerCase() === \"select\" || [\"checkbox\", \"radio\"].includes(el.type) || modifiers.includes(\"lazy\") ? \"change\" : \"input\";\n  let assigmentFunction = generateAssignmentFunction(el, modifiers, expression);\n  let removeListener = on(el, event, modifiers, (e) => {\n    evaluateAssignment(() => {\n    }, {scope: {\n      $event: e,\n      rightSideOfExpression: assigmentFunction\n    }});\n  });\n  if (!el._x_removeModelListeners)\n    el._x_removeModelListeners = {};\n  el._x_removeModelListeners[\"default\"] = removeListener;\n  cleanup2(() => el._x_removeModelListeners[\"default\"]());\n  let evaluateSetModel = evaluateLater(el, `${expression} = __placeholder`);\n  el._x_model = {\n    get() {\n      let result;\n      evaluate2((value) => result = value);\n      return result;\n    },\n    set(value) {\n      evaluateSetModel(() => {\n      }, {scope: {__placeholder: value}});\n    }\n  };\n  el._x_forceModelUpdate = () => {\n    evaluate2((value) => {\n      if (value === void 0 && expression.match(/\\./))\n        value = \"\";\n      window.fromModel = true;\n      mutateDom(() => bind(el, \"value\", value));\n      delete window.fromModel;\n    });\n  };\n  effect3(() => {\n    if (modifiers.includes(\"unintrusive\") && document.activeElement.isSameNode(el))\n      return;\n    el._x_forceModelUpdate();\n  });\n});\nfunction generateAssignmentFunction(el, modifiers, expression) {\n  if (el.type === \"radio\") {\n    mutateDom(() => {\n      if (!el.hasAttribute(\"name\"))\n        el.setAttribute(\"name\", expression);\n    });\n  }\n  return (event, currentValue) => {\n    return mutateDom(() => {\n      if (event instanceof CustomEvent && event.detail !== void 0) {\n        return event.detail || event.target.value;\n      } else if (el.type === \"checkbox\") {\n        if (Array.isArray(currentValue)) {\n          let newValue = modifiers.includes(\"number\") ? safeParseNumber(event.target.value) : event.target.value;\n          return event.target.checked ? currentValue.concat([newValue]) : currentValue.filter((el2) => !checkedAttrLooseCompare2(el2, newValue));\n        } else {\n          return event.target.checked;\n        }\n      } else if (el.tagName.toLowerCase() === \"select\" && el.multiple) {\n        return modifiers.includes(\"number\") ? Array.from(event.target.selectedOptions).map((option) => {\n          let rawValue = option.value || option.text;\n          return safeParseNumber(rawValue);\n        }) : Array.from(event.target.selectedOptions).map((option) => {\n          return option.value || option.text;\n        });\n      } else {\n        let rawValue = event.target.value;\n        return modifiers.includes(\"number\") ? safeParseNumber(rawValue) : modifiers.includes(\"trim\") ? rawValue.trim() : rawValue;\n      }\n    });\n  };\n}\nfunction safeParseNumber(rawValue) {\n  let number = rawValue ? parseFloat(rawValue) : null;\n  return isNumeric2(number) ? number : rawValue;\n}\nfunction checkedAttrLooseCompare2(valueA, valueB) {\n  return valueA == valueB;\n}\nfunction isNumeric2(subject) {\n  return !Array.isArray(subject) && !isNaN(subject);\n}\n\n// packages/alpinejs/src/directives/x-cloak.js\ndirective(\"cloak\", (el) => queueMicrotask(() => mutateDom(() => el.removeAttribute(prefix(\"cloak\")))));\n\n// packages/alpinejs/src/directives/x-init.js\naddInitSelector(() => `[${prefix(\"init\")}]`);\ndirective(\"init\", skipDuringClone((el, {expression}, {evaluate: evaluate2}) => {\n  if (typeof expression === \"string\") {\n    return !!expression.trim() && evaluate2(expression, {}, false);\n  }\n  return evaluate2(expression, {}, false);\n}));\n\n// packages/alpinejs/src/directives/x-text.js\ndirective(\"text\", (el, {expression}, {effect: effect3, evaluateLater: evaluateLater2}) => {\n  let evaluate2 = evaluateLater2(expression);\n  effect3(() => {\n    evaluate2((value) => {\n      mutateDom(() => {\n        el.textContent = value;\n      });\n    });\n  });\n});\n\n// packages/alpinejs/src/directives/x-html.js\ndirective(\"html\", (el, {expression}, {effect: effect3, evaluateLater: evaluateLater2}) => {\n  let evaluate2 = evaluateLater2(expression);\n  effect3(() => {\n    evaluate2((value) => {\n      mutateDom(() => {\n        el.innerHTML = value;\n        el._x_ignoreSelf = true;\n        initTree(el);\n        delete el._x_ignoreSelf;\n      });\n    });\n  });\n});\n\n// packages/alpinejs/src/directives/x-bind.js\nmapAttributes(startingWith(\":\", into(prefix(\"bind:\"))));\ndirective(\"bind\", (el, {value, modifiers, expression, original}, {effect: effect3}) => {\n  if (!value) {\n    let bindingProviders = {};\n    injectBindingProviders(bindingProviders);\n    let getBindings = evaluateLater(el, expression);\n    getBindings((bindings) => {\n      applyBindingsObject(el, bindings, original);\n    }, {scope: bindingProviders});\n    return;\n  }\n  if (value === \"key\")\n    return storeKeyForXFor(el, expression);\n  let evaluate2 = evaluateLater(el, expression);\n  effect3(() => evaluate2((result) => {\n    if (result === void 0 && expression.match(/\\./))\n      result = \"\";\n    mutateDom(() => bind(el, value, result, modifiers));\n  }));\n});\nfunction storeKeyForXFor(el, expression) {\n  el._x_keyExpression = expression;\n}\n\n// packages/alpinejs/src/directives/x-data.js\naddRootSelector(() => `[${prefix(\"data\")}]`);\ndirective(\"data\", skipDuringClone((el, {expression}, {cleanup: cleanup2}) => {\n  expression = expression === \"\" ? \"{}\" : expression;\n  let magicContext = {};\n  injectMagics(magicContext, el);\n  let dataProviderContext = {};\n  injectDataProviders(dataProviderContext, magicContext);\n  let data2 = evaluate(el, expression, {scope: dataProviderContext});\n  if (data2 === void 0)\n    data2 = {};\n  injectMagics(data2, el);\n  let reactiveData = reactive(data2);\n  initInterceptors(reactiveData);\n  let undo = addScopeToNode(el, reactiveData);\n  reactiveData[\"init\"] && evaluate(el, reactiveData[\"init\"]);\n  cleanup2(() => {\n    reactiveData[\"destroy\"] && evaluate(el, reactiveData[\"destroy\"]);\n    undo();\n  });\n}));\n\n// packages/alpinejs/src/directives/x-show.js\ndirective(\"show\", (el, {modifiers, expression}, {effect: effect3}) => {\n  let evaluate2 = evaluateLater(el, expression);\n  if (!el._x_doHide)\n    el._x_doHide = () => {\n      mutateDom(() => {\n        el.style.setProperty(\"display\", \"none\", modifiers.includes(\"important\") ? \"important\" : void 0);\n      });\n    };\n  if (!el._x_doShow)\n    el._x_doShow = () => {\n      mutateDom(() => {\n        if (el.style.length === 1 && el.style.display === \"none\") {\n          el.removeAttribute(\"style\");\n        } else {\n          el.style.removeProperty(\"display\");\n        }\n      });\n    };\n  let hide = () => {\n    el._x_doHide();\n    el._x_isShown = false;\n  };\n  let show = () => {\n    el._x_doShow();\n    el._x_isShown = true;\n  };\n  let clickAwayCompatibleShow = () => setTimeout(show);\n  let toggle = once((value) => value ? show() : hide(), (value) => {\n    if (typeof el._x_toggleAndCascadeWithTransitions === \"function\") {\n      el._x_toggleAndCascadeWithTransitions(el, value, show, hide);\n    } else {\n      value ? clickAwayCompatibleShow() : hide();\n    }\n  });\n  let oldValue;\n  let firstTime = true;\n  effect3(() => evaluate2((value) => {\n    if (!firstTime && value === oldValue)\n      return;\n    if (modifiers.includes(\"immediate\"))\n      value ? clickAwayCompatibleShow() : hide();\n    toggle(value);\n    oldValue = value;\n    firstTime = false;\n  }));\n});\n\n// packages/alpinejs/src/directives/x-for.js\ndirective(\"for\", (el, {expression}, {effect: effect3, cleanup: cleanup2}) => {\n  let iteratorNames = parseForExpression(expression);\n  let evaluateItems = evaluateLater(el, iteratorNames.items);\n  let evaluateKey = evaluateLater(el, el._x_keyExpression || \"index\");\n  el._x_prevKeys = [];\n  el._x_lookup = {};\n  effect3(() => loop(el, iteratorNames, evaluateItems, evaluateKey));\n  cleanup2(() => {\n    Object.values(el._x_lookup).forEach((el2) => el2.remove());\n    delete el._x_prevKeys;\n    delete el._x_lookup;\n  });\n});\nfunction loop(el, iteratorNames, evaluateItems, evaluateKey) {\n  let isObject2 = (i) => typeof i === \"object\" && !Array.isArray(i);\n  let templateEl = el;\n  evaluateItems((items) => {\n    if (isNumeric3(items) && items >= 0) {\n      items = Array.from(Array(items).keys(), (i) => i + 1);\n    }\n    if (items === void 0)\n      items = [];\n    let lookup = el._x_lookup;\n    let prevKeys = el._x_prevKeys;\n    let scopes = [];\n    let keys = [];\n    if (isObject2(items)) {\n      items = Object.entries(items).map(([key, value]) => {\n        let scope2 = getIterationScopeVariables(iteratorNames, value, key, items);\n        evaluateKey((value2) => keys.push(value2), {scope: {index: key, ...scope2}});\n        scopes.push(scope2);\n      });\n    } else {\n      for (let i = 0; i < items.length; i++) {\n        let scope2 = getIterationScopeVariables(iteratorNames, items[i], i, items);\n        evaluateKey((value) => keys.push(value), {scope: {index: i, ...scope2}});\n        scopes.push(scope2);\n      }\n    }\n    let adds = [];\n    let moves = [];\n    let removes = [];\n    let sames = [];\n    for (let i = 0; i < prevKeys.length; i++) {\n      let key = prevKeys[i];\n      if (keys.indexOf(key) === -1)\n        removes.push(key);\n    }\n    prevKeys = prevKeys.filter((key) => !removes.includes(key));\n    let lastKey = \"template\";\n    for (let i = 0; i < keys.length; i++) {\n      let key = keys[i];\n      let prevIndex = prevKeys.indexOf(key);\n      if (prevIndex === -1) {\n        prevKeys.splice(i, 0, key);\n        adds.push([lastKey, i]);\n      } else if (prevIndex !== i) {\n        let keyInSpot = prevKeys.splice(i, 1)[0];\n        let keyForSpot = prevKeys.splice(prevIndex - 1, 1)[0];\n        prevKeys.splice(i, 0, keyForSpot);\n        prevKeys.splice(prevIndex, 0, keyInSpot);\n        moves.push([keyInSpot, keyForSpot]);\n      } else {\n        sames.push(key);\n      }\n      lastKey = key;\n    }\n    for (let i = 0; i < removes.length; i++) {\n      let key = removes[i];\n      if (!!lookup[key]._x_effects) {\n        lookup[key]._x_effects.forEach(dequeueJob);\n      }\n      lookup[key].remove();\n      lookup[key] = null;\n      delete lookup[key];\n    }\n    for (let i = 0; i < moves.length; i++) {\n      let [keyInSpot, keyForSpot] = moves[i];\n      let elInSpot = lookup[keyInSpot];\n      let elForSpot = lookup[keyForSpot];\n      let marker = document.createElement(\"div\");\n      mutateDom(() => {\n        elForSpot.after(marker);\n        elInSpot.after(elForSpot);\n        elForSpot._x_currentIfEl && elForSpot.after(elForSpot._x_currentIfEl);\n        marker.before(elInSpot);\n        elInSpot._x_currentIfEl && elInSpot.after(elInSpot._x_currentIfEl);\n        marker.remove();\n      });\n      refreshScope(elForSpot, scopes[keys.indexOf(keyForSpot)]);\n    }\n    for (let i = 0; i < adds.length; i++) {\n      let [lastKey2, index] = adds[i];\n      let lastEl = lastKey2 === \"template\" ? templateEl : lookup[lastKey2];\n      if (lastEl._x_currentIfEl)\n        lastEl = lastEl._x_currentIfEl;\n      let scope2 = scopes[index];\n      let key = keys[index];\n      let clone2 = document.importNode(templateEl.content, true).firstElementChild;\n      addScopeToNode(clone2, reactive(scope2), templateEl);\n      mutateDom(() => {\n        lastEl.after(clone2);\n        initTree(clone2);\n      });\n      if (typeof key === \"object\") {\n        warn(\"x-for key cannot be an object, it must be a string or an integer\", templateEl);\n      }\n      lookup[key] = clone2;\n    }\n    for (let i = 0; i < sames.length; i++) {\n      refreshScope(lookup[sames[i]], scopes[keys.indexOf(sames[i])]);\n    }\n    templateEl._x_prevKeys = keys;\n  });\n}\nfunction parseForExpression(expression) {\n  let forIteratorRE = /,([^,\\}\\]]*)(?:,([^,\\}\\]]*))?$/;\n  let stripParensRE = /^\\s*\\(|\\)\\s*$/g;\n  let forAliasRE = /([\\s\\S]*?)\\s+(?:in|of)\\s+([\\s\\S]*)/;\n  let inMatch = expression.match(forAliasRE);\n  if (!inMatch)\n    return;\n  let res = {};\n  res.items = inMatch[2].trim();\n  let item = inMatch[1].replace(stripParensRE, \"\").trim();\n  let iteratorMatch = item.match(forIteratorRE);\n  if (iteratorMatch) {\n    res.item = item.replace(forIteratorRE, \"\").trim();\n    res.index = iteratorMatch[1].trim();\n    if (iteratorMatch[2]) {\n      res.collection = iteratorMatch[2].trim();\n    }\n  } else {\n    res.item = item;\n  }\n  return res;\n}\nfunction getIterationScopeVariables(iteratorNames, item, index, items) {\n  let scopeVariables = {};\n  if (/^\\[.*\\]$/.test(iteratorNames.item) && Array.isArray(item)) {\n    let names = iteratorNames.item.replace(\"[\", \"\").replace(\"]\", \"\").split(\",\").map((i) => i.trim());\n    names.forEach((name, i) => {\n      scopeVariables[name] = item[i];\n    });\n  } else if (/^\\{.*\\}$/.test(iteratorNames.item) && !Array.isArray(item) && typeof item === \"object\") {\n    let names = iteratorNames.item.replace(\"{\", \"\").replace(\"}\", \"\").split(\",\").map((i) => i.trim());\n    names.forEach((name) => {\n      scopeVariables[name] = item[name];\n    });\n  } else {\n    scopeVariables[iteratorNames.item] = item;\n  }\n  if (iteratorNames.index)\n    scopeVariables[iteratorNames.index] = index;\n  if (iteratorNames.collection)\n    scopeVariables[iteratorNames.collection] = items;\n  return scopeVariables;\n}\nfunction isNumeric3(subject) {\n  return !Array.isArray(subject) && !isNaN(subject);\n}\n\n// packages/alpinejs/src/directives/x-ref.js\nfunction handler2() {\n}\nhandler2.inline = (el, {expression}, {cleanup: cleanup2}) => {\n  let root = closestRoot(el);\n  if (!root._x_refs)\n    root._x_refs = {};\n  root._x_refs[expression] = el;\n  cleanup2(() => delete root._x_refs[expression]);\n};\ndirective(\"ref\", handler2);\n\n// packages/alpinejs/src/directives/x-if.js\ndirective(\"if\", (el, {expression}, {effect: effect3, cleanup: cleanup2}) => {\n  let evaluate2 = evaluateLater(el, expression);\n  let show = () => {\n    if (el._x_currentIfEl)\n      return el._x_currentIfEl;\n    let clone2 = el.content.cloneNode(true).firstElementChild;\n    addScopeToNode(clone2, {}, el);\n    mutateDom(() => {\n      el.after(clone2);\n      initTree(clone2);\n    });\n    el._x_currentIfEl = clone2;\n    el._x_undoIf = () => {\n      walk(clone2, (node) => {\n        if (!!node._x_effects) {\n          node._x_effects.forEach(dequeueJob);\n        }\n      });\n      clone2.remove();\n      delete el._x_currentIfEl;\n    };\n    return clone2;\n  };\n  let hide = () => {\n    if (!el._x_undoIf)\n      return;\n    el._x_undoIf();\n    delete el._x_undoIf;\n  };\n  effect3(() => evaluate2((value) => {\n    value ? show() : hide();\n  }));\n  cleanup2(() => el._x_undoIf && el._x_undoIf());\n});\n\n// packages/alpinejs/src/directives/x-id.js\ndirective(\"id\", (el, {expression}, {evaluate: evaluate2}) => {\n  let names = evaluate2(expression);\n  names.forEach((name) => setIdRoot(el, name));\n});\n\n// packages/alpinejs/src/directives/x-on.js\nmapAttributes(startingWith(\"@\", into(prefix(\"on:\"))));\ndirective(\"on\", skipDuringClone((el, {value, modifiers, expression}, {cleanup: cleanup2}) => {\n  let evaluate2 = expression ? evaluateLater(el, expression) : () => {\n  };\n  if (el.tagName.toLowerCase() === \"template\") {\n    if (!el._x_forwardEvents)\n      el._x_forwardEvents = [];\n    if (!el._x_forwardEvents.includes(value))\n      el._x_forwardEvents.push(value);\n  }\n  let removeListener = on(el, value, modifiers, (e) => {\n    evaluate2(() => {\n    }, {scope: {$event: e}, params: [e]});\n  });\n  cleanup2(() => removeListener());\n}));\n\n// packages/alpinejs/src/directives/index.js\nwarnMissingPluginDirective(\"Collapse\", \"collapse\", \"collapse\");\nwarnMissingPluginDirective(\"Intersect\", \"intersect\", \"intersect\");\nwarnMissingPluginDirective(\"Focus\", \"trap\", \"focus\");\nwarnMissingPluginDirective(\"Mask\", \"mask\", \"mask\");\nfunction warnMissingPluginDirective(name, directiveName2, slug) {\n  directive(directiveName2, (el) => warn(`You can't use [x-${directiveName2}] without first installing the \"${name}\" plugin here: https://alpinejs.dev/plugins/${slug}`, el));\n}\n\n// packages/alpinejs/src/index.js\nalpine_default.setEvaluator(normalEvaluator);\nalpine_default.setReactivityEngine({reactive: reactive2, effect: effect2, release: stop, raw: toRaw});\nvar src_default = alpine_default;\n\n// packages/alpinejs/builds/module.js\nvar module_default = src_default;\nexport {\n  module_default as default\n};\n","// packages/persist/src/index.js\nfunction src_default(Alpine) {\n  let persist = () => {\n    let alias;\n    let storage = localStorage;\n    return Alpine.interceptor((initialValue, getter, setter, path, key) => {\n      let lookup = alias || `_x_${path}`;\n      let initial = storageHas(lookup, storage) ? storageGet(lookup, storage) : initialValue;\n      setter(initial);\n      Alpine.effect(() => {\n        let value = getter();\n        storageSet(lookup, value, storage);\n        setter(value);\n      });\n      return initial;\n    }, (func) => {\n      func.as = (key) => {\n        alias = key;\n        return func;\n      }, func.using = (target) => {\n        storage = target;\n        return func;\n      };\n    });\n  };\n  Object.defineProperty(Alpine, \"$persist\", {get: () => persist()});\n  Alpine.magic(\"persist\", persist);\n}\nfunction storageHas(key, storage) {\n  return storage.getItem(key) !== null;\n}\nfunction storageGet(key, storage) {\n  return JSON.parse(storage.getItem(key, storage));\n}\nfunction storageSet(key, value, storage) {\n  storage.setItem(key, JSON.stringify(value));\n}\n\n// packages/persist/builds/module.js\nvar module_default = src_default;\nexport {\n  module_default as default\n};\n","let onCopy = () => {}\n\nconst copy = (target) => {\n    if (typeof target === 'function') {\n        target = target()\n    }\n\n    if (typeof target === 'object') {\n        target = JSON.stringify(target)\n    }\n\n    return window.navigator.clipboard.writeText(target)\n        .then(onCopy)\n}\n\nfunction Clipboard(Alpine) {\n    Alpine.magic('clipboard', () => {\n        return copy\n    })\n\n    Alpine.directive('clipboard', (el, { modifiers, expression }, { evaluateLater, cleanup }) => {\n        const getCopyContent = modifiers.includes('raw') ? c => c(expression) : evaluateLater(expression)\n        const clickHandler = () => getCopyContent(copy)\n\n        el.addEventListener('click', clickHandler)\n\n        cleanup(() => {\n            el.removeEventListener('click', clickHandler)\n        })\n    })\n}\n\nClipboard.configure = (config) => {\n    if (config.hasOwnProperty('onCopy') && typeof config.onCopy === 'function') {\n        onCopy = config.onCopy\n    }\n\n    return Clipboard\n}\n\nexport default Clipboard;","\n/* **********************************************\n     Begin prism-core.js\n********************************************** */\n\n/// <reference lib=\"WebWorker\"/>\n\nvar _self = (typeof window !== 'undefined')\n\t? window   // if in browser\n\t: (\n\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t\t? self // if in worker\n\t\t\t: {}   // if in node js\n\t);\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n *\n * @license MIT <https://opensource.org/licenses/MIT>\n * @author Lea Verou <https://lea.verou.me>\n * @namespace\n * @public\n */\nvar Prism = (function (_self) {\n\n\t// Private helper vars\n\tvar lang = /(?:^|\\s)lang(?:uage)?-([\\w-]+)(?=\\s|$)/i;\n\tvar uniqueId = 0;\n\n\t// The grammar object for plaintext\n\tvar plainTextGrammar = {};\n\n\n\tvar _ = {\n\t\t/**\n\t\t * By default, Prism will attempt to highlight all code elements (by calling {@link Prism.highlightAll}) on the\n\t\t * current page after the page finished loading. This might be a problem if e.g. you wanted to asynchronously load\n\t\t * additional languages or plugins yourself.\n\t\t *\n\t\t * By setting this value to `true`, Prism will not automatically highlight all code elements on the page.\n\t\t *\n\t\t * You obviously have to change this value before the automatic highlighting started. To do this, you can add an\n\t\t * empty Prism object into the global scope before loading the Prism script like this:\n\t\t *\n\t\t * ```js\n\t\t * window.Prism = window.Prism || {};\n\t\t * Prism.manual = true;\n\t\t * // add a new <script> to load Prism's script\n\t\t * ```\n\t\t *\n\t\t * @default false\n\t\t * @type {boolean}\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\tmanual: _self.Prism && _self.Prism.manual,\n\t\t/**\n\t\t * By default, if Prism is in a web worker, it assumes that it is in a worker it created itself, so it uses\n\t\t * `addEventListener` to communicate with its parent instance. However, if you're using Prism manually in your\n\t\t * own worker, you don't want it to do this.\n\t\t *\n\t\t * By setting this value to `true`, Prism will not add its own listeners to the worker.\n\t\t *\n\t\t * You obviously have to change this value before Prism executes. To do this, you can add an\n\t\t * empty Prism object into the global scope before loading the Prism script like this:\n\t\t *\n\t\t * ```js\n\t\t * window.Prism = window.Prism || {};\n\t\t * Prism.disableWorkerMessageHandler = true;\n\t\t * // Load Prism's script\n\t\t * ```\n\t\t *\n\t\t * @default false\n\t\t * @type {boolean}\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\tdisableWorkerMessageHandler: _self.Prism && _self.Prism.disableWorkerMessageHandler,\n\n\t\t/**\n\t\t * A namespace for utility methods.\n\t\t *\n\t\t * All function in this namespace that are not explicitly marked as _public_ are for __internal use only__ and may\n\t\t * change or disappear at any time.\n\t\t *\n\t\t * @namespace\n\t\t * @memberof Prism\n\t\t */\n\t\tutil: {\n\t\t\tencode: function encode(tokens) {\n\t\t\t\tif (tokens instanceof Token) {\n\t\t\t\t\treturn new Token(tokens.type, encode(tokens.content), tokens.alias);\n\t\t\t\t} else if (Array.isArray(tokens)) {\n\t\t\t\t\treturn tokens.map(encode);\n\t\t\t\t} else {\n\t\t\t\t\treturn tokens.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/\\u00a0/g, ' ');\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns the name of the type of the given value.\n\t\t\t *\n\t\t\t * @param {any} o\n\t\t\t * @returns {string}\n\t\t\t * @example\n\t\t\t * type(null)      === 'Null'\n\t\t\t * type(undefined) === 'Undefined'\n\t\t\t * type(123)       === 'Number'\n\t\t\t * type('foo')     === 'String'\n\t\t\t * type(true)      === 'Boolean'\n\t\t\t * type([1, 2])    === 'Array'\n\t\t\t * type({})        === 'Object'\n\t\t\t * type(String)    === 'Function'\n\t\t\t * type(/abc+/)    === 'RegExp'\n\t\t\t */\n\t\t\ttype: function (o) {\n\t\t\t\treturn Object.prototype.toString.call(o).slice(8, -1);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns a unique number for the given object. Later calls will still return the same number.\n\t\t\t *\n\t\t\t * @param {Object} obj\n\t\t\t * @returns {number}\n\t\t\t */\n\t\t\tobjId: function (obj) {\n\t\t\t\tif (!obj['__id']) {\n\t\t\t\t\tObject.defineProperty(obj, '__id', { value: ++uniqueId });\n\t\t\t\t}\n\t\t\t\treturn obj['__id'];\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Creates a deep clone of the given object.\n\t\t\t *\n\t\t\t * The main intended use of this function is to clone language definitions.\n\t\t\t *\n\t\t\t * @param {T} o\n\t\t\t * @param {Record<number, any>} [visited]\n\t\t\t * @returns {T}\n\t\t\t * @template T\n\t\t\t */\n\t\t\tclone: function deepClone(o, visited) {\n\t\t\t\tvisited = visited || {};\n\n\t\t\t\tvar clone; var id;\n\t\t\t\tswitch (_.util.type(o)) {\n\t\t\t\t\tcase 'Object':\n\t\t\t\t\t\tid = _.util.objId(o);\n\t\t\t\t\t\tif (visited[id]) {\n\t\t\t\t\t\t\treturn visited[id];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclone = /** @type {Record<string, any>} */ ({});\n\t\t\t\t\t\tvisited[id] = clone;\n\n\t\t\t\t\t\tfor (var key in o) {\n\t\t\t\t\t\t\tif (o.hasOwnProperty(key)) {\n\t\t\t\t\t\t\t\tclone[key] = deepClone(o[key], visited);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn /** @type {any} */ (clone);\n\n\t\t\t\t\tcase 'Array':\n\t\t\t\t\t\tid = _.util.objId(o);\n\t\t\t\t\t\tif (visited[id]) {\n\t\t\t\t\t\t\treturn visited[id];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t\tvisited[id] = clone;\n\n\t\t\t\t\t\t(/** @type {Array} */(/** @type {any} */(o))).forEach(function (v, i) {\n\t\t\t\t\t\t\tclone[i] = deepClone(v, visited);\n\t\t\t\t\t\t});\n\n\t\t\t\t\t\treturn /** @type {any} */ (clone);\n\n\t\t\t\t\tdefault:\n\t\t\t\t\t\treturn o;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns the Prism language of the given element set by a `language-xxxx` or `lang-xxxx` class.\n\t\t\t *\n\t\t\t * If no language is set for the element or the element is `null` or `undefined`, `none` will be returned.\n\t\t\t *\n\t\t\t * @param {Element} element\n\t\t\t * @returns {string}\n\t\t\t */\n\t\t\tgetLanguage: function (element) {\n\t\t\t\twhile (element) {\n\t\t\t\t\tvar m = lang.exec(element.className);\n\t\t\t\t\tif (m) {\n\t\t\t\t\t\treturn m[1].toLowerCase();\n\t\t\t\t\t}\n\t\t\t\t\telement = element.parentElement;\n\t\t\t\t}\n\t\t\t\treturn 'none';\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Sets the Prism `language-xxxx` class of the given element.\n\t\t\t *\n\t\t\t * @param {Element} element\n\t\t\t * @param {string} language\n\t\t\t * @returns {void}\n\t\t\t */\n\t\t\tsetLanguage: function (element, language) {\n\t\t\t\t// remove all `language-xxxx` classes\n\t\t\t\t// (this might leave behind a leading space)\n\t\t\t\telement.className = element.className.replace(RegExp(lang, 'gi'), '');\n\n\t\t\t\t// add the new `language-xxxx` class\n\t\t\t\t// (using `classList` will automatically clean up spaces for us)\n\t\t\t\telement.classList.add('language-' + language);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns the script element that is currently executing.\n\t\t\t *\n\t\t\t * This does __not__ work for line script element.\n\t\t\t *\n\t\t\t * @returns {HTMLScriptElement | null}\n\t\t\t */\n\t\t\tcurrentScript: function () {\n\t\t\t\tif (typeof document === 'undefined') {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t\tif ('currentScript' in document && 1 < 2 /* hack to trip TS' flow analysis */) {\n\t\t\t\t\treturn /** @type {any} */ (document.currentScript);\n\t\t\t\t}\n\n\t\t\t\t// IE11 workaround\n\t\t\t\t// we'll get the src of the current script by parsing IE11's error stack trace\n\t\t\t\t// this will not work for inline scripts\n\n\t\t\t\ttry {\n\t\t\t\t\tthrow new Error();\n\t\t\t\t} catch (err) {\n\t\t\t\t\t// Get file src url from stack. Specifically works with the format of stack traces in IE.\n\t\t\t\t\t// A stack will look like this:\n\t\t\t\t\t//\n\t\t\t\t\t// Error\n\t\t\t\t\t//    at _.util.currentScript (http://localhost/components/prism-core.js:119:5)\n\t\t\t\t\t//    at Global code (http://localhost/components/prism-core.js:606:1)\n\n\t\t\t\t\tvar src = (/at [^(\\r\\n]*\\((.*):[^:]+:[^:]+\\)$/i.exec(err.stack) || [])[1];\n\t\t\t\t\tif (src) {\n\t\t\t\t\t\tvar scripts = document.getElementsByTagName('script');\n\t\t\t\t\t\tfor (var i in scripts) {\n\t\t\t\t\t\t\tif (scripts[i].src == src) {\n\t\t\t\t\t\t\t\treturn scripts[i];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Returns whether a given class is active for `element`.\n\t\t\t *\n\t\t\t * The class can be activated if `element` or one of its ancestors has the given class and it can be deactivated\n\t\t\t * if `element` or one of its ancestors has the negated version of the given class. The _negated version_ of the\n\t\t\t * given class is just the given class with a `no-` prefix.\n\t\t\t *\n\t\t\t * Whether the class is active is determined by the closest ancestor of `element` (where `element` itself is\n\t\t\t * closest ancestor) that has the given class or the negated version of it. If neither `element` nor any of its\n\t\t\t * ancestors have the given class or the negated version of it, then the default activation will be returned.\n\t\t\t *\n\t\t\t * In the paradoxical situation where the closest ancestor contains __both__ the given class and the negated\n\t\t\t * version of it, the class is considered active.\n\t\t\t *\n\t\t\t * @param {Element} element\n\t\t\t * @param {string} className\n\t\t\t * @param {boolean} [defaultActivation=false]\n\t\t\t * @returns {boolean}\n\t\t\t */\n\t\t\tisActive: function (element, className, defaultActivation) {\n\t\t\t\tvar no = 'no-' + className;\n\n\t\t\t\twhile (element) {\n\t\t\t\t\tvar classList = element.classList;\n\t\t\t\t\tif (classList.contains(className)) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t\tif (classList.contains(no)) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\t\t\t\t\telement = element.parentElement;\n\t\t\t\t}\n\t\t\t\treturn !!defaultActivation;\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * This namespace contains all currently loaded languages and the some helper functions to create and modify languages.\n\t\t *\n\t\t * @namespace\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\tlanguages: {\n\t\t\t/**\n\t\t\t * The grammar for plain, unformatted text.\n\t\t\t */\n\t\t\tplain: plainTextGrammar,\n\t\t\tplaintext: plainTextGrammar,\n\t\t\ttext: plainTextGrammar,\n\t\t\ttxt: plainTextGrammar,\n\n\t\t\t/**\n\t\t\t * Creates a deep copy of the language with the given id and appends the given tokens.\n\t\t\t *\n\t\t\t * If a token in `redef` also appears in the copied language, then the existing token in the copied language\n\t\t\t * will be overwritten at its original position.\n\t\t\t *\n\t\t\t * ## Best practices\n\t\t\t *\n\t\t\t * Since the position of overwriting tokens (token in `redef` that overwrite tokens in the copied language)\n\t\t\t * doesn't matter, they can technically be in any order. However, this can be confusing to others that trying to\n\t\t\t * understand the language definition because, normally, the order of tokens matters in Prism grammars.\n\t\t\t *\n\t\t\t * Therefore, it is encouraged to order overwriting tokens according to the positions of the overwritten tokens.\n\t\t\t * Furthermore, all non-overwriting tokens should be placed after the overwriting ones.\n\t\t\t *\n\t\t\t * @param {string} id The id of the language to extend. This has to be a key in `Prism.languages`.\n\t\t\t * @param {Grammar} redef The new tokens to append.\n\t\t\t * @returns {Grammar} The new language created.\n\t\t\t * @public\n\t\t\t * @example\n\t\t\t * Prism.languages['css-with-colors'] = Prism.languages.extend('css', {\n\t\t\t *     // Prism.languages.css already has a 'comment' token, so this token will overwrite CSS' 'comment' token\n\t\t\t *     // at its original position\n\t\t\t *     'comment': { ... },\n\t\t\t *     // CSS doesn't have a 'color' token, so this token will be appended\n\t\t\t *     'color': /\\b(?:red|green|blue)\\b/\n\t\t\t * });\n\t\t\t */\n\t\t\textend: function (id, redef) {\n\t\t\t\tvar lang = _.util.clone(_.languages[id]);\n\n\t\t\t\tfor (var key in redef) {\n\t\t\t\t\tlang[key] = redef[key];\n\t\t\t\t}\n\n\t\t\t\treturn lang;\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Inserts tokens _before_ another token in a language definition or any other grammar.\n\t\t\t *\n\t\t\t * ## Usage\n\t\t\t *\n\t\t\t * This helper method makes it easy to modify existing languages. For example, the CSS language definition\n\t\t\t * not only defines CSS highlighting for CSS documents, but also needs to define highlighting for CSS embedded\n\t\t\t * in HTML through `<style>` elements. To do this, it needs to modify `Prism.languages.markup` and add the\n\t\t\t * appropriate tokens. However, `Prism.languages.markup` is a regular JavaScript object literal, so if you do\n\t\t\t * this:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * Prism.languages.markup.style = {\n\t\t\t *     // token\n\t\t\t * };\n\t\t\t * ```\n\t\t\t *\n\t\t\t * then the `style` token will be added (and processed) at the end. `insertBefore` allows you to insert tokens\n\t\t\t * before existing tokens. For the CSS example above, you would use it like this:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * Prism.languages.insertBefore('markup', 'cdata', {\n\t\t\t *     'style': {\n\t\t\t *         // token\n\t\t\t *     }\n\t\t\t * });\n\t\t\t * ```\n\t\t\t *\n\t\t\t * ## Special cases\n\t\t\t *\n\t\t\t * If the grammars of `inside` and `insert` have tokens with the same name, the tokens in `inside`'s grammar\n\t\t\t * will be ignored.\n\t\t\t *\n\t\t\t * This behavior can be used to insert tokens after `before`:\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * Prism.languages.insertBefore('markup', 'comment', {\n\t\t\t *     'comment': Prism.languages.markup.comment,\n\t\t\t *     // tokens after 'comment'\n\t\t\t * });\n\t\t\t * ```\n\t\t\t *\n\t\t\t * ## Limitations\n\t\t\t *\n\t\t\t * The main problem `insertBefore` has to solve is iteration order. Since ES2015, the iteration order for object\n\t\t\t * properties is guaranteed to be the insertion order (except for integer keys) but some browsers behave\n\t\t\t * differently when keys are deleted and re-inserted. So `insertBefore` can't be implemented by temporarily\n\t\t\t * deleting properties which is necessary to insert at arbitrary positions.\n\t\t\t *\n\t\t\t * To solve this problem, `insertBefore` doesn't actually insert the given tokens into the target object.\n\t\t\t * Instead, it will create a new object and replace all references to the target object with the new one. This\n\t\t\t * can be done without temporarily deleting properties, so the iteration order is well-defined.\n\t\t\t *\n\t\t\t * However, only references that can be reached from `Prism.languages` or `insert` will be replaced. I.e. if\n\t\t\t * you hold the target object in a variable, then the value of the variable will not change.\n\t\t\t *\n\t\t\t * ```js\n\t\t\t * var oldMarkup = Prism.languages.markup;\n\t\t\t * var newMarkup = Prism.languages.insertBefore('markup', 'comment', { ... });\n\t\t\t *\n\t\t\t * assert(oldMarkup !== Prism.languages.markup);\n\t\t\t * assert(newMarkup === Prism.languages.markup);\n\t\t\t * ```\n\t\t\t *\n\t\t\t * @param {string} inside The property of `root` (e.g. a language id in `Prism.languages`) that contains the\n\t\t\t * object to be modified.\n\t\t\t * @param {string} before The key to insert before.\n\t\t\t * @param {Grammar} insert An object containing the key-value pairs to be inserted.\n\t\t\t * @param {Object<string, any>} [root] The object containing `inside`, i.e. the object that contains the\n\t\t\t * object to be modified.\n\t\t\t *\n\t\t\t * Defaults to `Prism.languages`.\n\t\t\t * @returns {Grammar} The new grammar object.\n\t\t\t * @public\n\t\t\t */\n\t\t\tinsertBefore: function (inside, before, insert, root) {\n\t\t\t\troot = root || /** @type {any} */ (_.languages);\n\t\t\t\tvar grammar = root[inside];\n\t\t\t\t/** @type {Grammar} */\n\t\t\t\tvar ret = {};\n\n\t\t\t\tfor (var token in grammar) {\n\t\t\t\t\tif (grammar.hasOwnProperty(token)) {\n\n\t\t\t\t\t\tif (token == before) {\n\t\t\t\t\t\t\tfor (var newToken in insert) {\n\t\t\t\t\t\t\t\tif (insert.hasOwnProperty(newToken)) {\n\t\t\t\t\t\t\t\t\tret[newToken] = insert[newToken];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Do not insert token which also occur in insert. See #1525\n\t\t\t\t\t\tif (!insert.hasOwnProperty(token)) {\n\t\t\t\t\t\t\tret[token] = grammar[token];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tvar old = root[inside];\n\t\t\t\troot[inside] = ret;\n\n\t\t\t\t// Update references in other language definitions\n\t\t\t\t_.languages.DFS(_.languages, function (key, value) {\n\t\t\t\t\tif (value === old && key != inside) {\n\t\t\t\t\t\tthis[key] = ret;\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\treturn ret;\n\t\t\t},\n\n\t\t\t// Traverse a language definition with Depth First Search\n\t\t\tDFS: function DFS(o, callback, type, visited) {\n\t\t\t\tvisited = visited || {};\n\n\t\t\t\tvar objId = _.util.objId;\n\n\t\t\t\tfor (var i in o) {\n\t\t\t\t\tif (o.hasOwnProperty(i)) {\n\t\t\t\t\t\tcallback.call(o, i, o[i], type || i);\n\n\t\t\t\t\t\tvar property = o[i];\n\t\t\t\t\t\tvar propertyType = _.util.type(property);\n\n\t\t\t\t\t\tif (propertyType === 'Object' && !visited[objId(property)]) {\n\t\t\t\t\t\t\tvisited[objId(property)] = true;\n\t\t\t\t\t\t\tDFS(property, callback, null, visited);\n\t\t\t\t\t\t} else if (propertyType === 'Array' && !visited[objId(property)]) {\n\t\t\t\t\t\t\tvisited[objId(property)] = true;\n\t\t\t\t\t\t\tDFS(property, callback, i, visited);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tplugins: {},\n\n\t\t/**\n\t\t * This is the most high-level function in Prism’s API.\n\t\t * It fetches all the elements that have a `.language-xxxx` class and then calls {@link Prism.highlightElement} on\n\t\t * each one of them.\n\t\t *\n\t\t * This is equivalent to `Prism.highlightAllUnder(document, async, callback)`.\n\t\t *\n\t\t * @param {boolean} [async=false] Same as in {@link Prism.highlightAllUnder}.\n\t\t * @param {HighlightCallback} [callback] Same as in {@link Prism.highlightAllUnder}.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\thighlightAll: function (async, callback) {\n\t\t\t_.highlightAllUnder(document, async, callback);\n\t\t},\n\n\t\t/**\n\t\t * Fetches all the descendants of `container` that have a `.language-xxxx` class and then calls\n\t\t * {@link Prism.highlightElement} on each one of them.\n\t\t *\n\t\t * The following hooks will be run:\n\t\t * 1. `before-highlightall`\n\t\t * 2. `before-all-elements-highlight`\n\t\t * 3. All hooks of {@link Prism.highlightElement} for each element.\n\t\t *\n\t\t * @param {ParentNode} container The root element, whose descendants that have a `.language-xxxx` class will be highlighted.\n\t\t * @param {boolean} [async=false] Whether each element is to be highlighted asynchronously using Web Workers.\n\t\t * @param {HighlightCallback} [callback] An optional callback to be invoked on each element after its highlighting is done.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\thighlightAllUnder: function (container, async, callback) {\n\t\t\tvar env = {\n\t\t\t\tcallback: callback,\n\t\t\t\tcontainer: container,\n\t\t\t\tselector: 'code[class*=\"language-\"], [class*=\"language-\"] code, code[class*=\"lang-\"], [class*=\"lang-\"] code'\n\t\t\t};\n\n\t\t\t_.hooks.run('before-highlightall', env);\n\n\t\t\tenv.elements = Array.prototype.slice.apply(env.container.querySelectorAll(env.selector));\n\n\t\t\t_.hooks.run('before-all-elements-highlight', env);\n\n\t\t\tfor (var i = 0, element; (element = env.elements[i++]);) {\n\t\t\t\t_.highlightElement(element, async === true, env.callback);\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Highlights the code inside a single element.\n\t\t *\n\t\t * The following hooks will be run:\n\t\t * 1. `before-sanity-check`\n\t\t * 2. `before-highlight`\n\t\t * 3. All hooks of {@link Prism.highlight}. These hooks will be run by an asynchronous worker if `async` is `true`.\n\t\t * 4. `before-insert`\n\t\t * 5. `after-highlight`\n\t\t * 6. `complete`\n\t\t *\n\t\t * Some the above hooks will be skipped if the element doesn't contain any text or there is no grammar loaded for\n\t\t * the element's language.\n\t\t *\n\t\t * @param {Element} element The element containing the code.\n\t\t * It must have a class of `language-xxxx` to be processed, where `xxxx` is a valid language identifier.\n\t\t * @param {boolean} [async=false] Whether the element is to be highlighted asynchronously using Web Workers\n\t\t * to improve performance and avoid blocking the UI when highlighting very large chunks of code. This option is\n\t\t * [disabled by default](https://prismjs.com/faq.html#why-is-asynchronous-highlighting-disabled-by-default).\n\t\t *\n\t\t * Note: All language definitions required to highlight the code must be included in the main `prism.js` file for\n\t\t * asynchronous highlighting to work. You can build your own bundle on the\n\t\t * [Download page](https://prismjs.com/download.html).\n\t\t * @param {HighlightCallback} [callback] An optional callback to be invoked after the highlighting is done.\n\t\t * Mostly useful when `async` is `true`, since in that case, the highlighting is done asynchronously.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\thighlightElement: function (element, async, callback) {\n\t\t\t// Find language\n\t\t\tvar language = _.util.getLanguage(element);\n\t\t\tvar grammar = _.languages[language];\n\n\t\t\t// Set language on the element, if not present\n\t\t\t_.util.setLanguage(element, language);\n\n\t\t\t// Set language on the parent, for styling\n\t\t\tvar parent = element.parentElement;\n\t\t\tif (parent && parent.nodeName.toLowerCase() === 'pre') {\n\t\t\t\t_.util.setLanguage(parent, language);\n\t\t\t}\n\n\t\t\tvar code = element.textContent;\n\n\t\t\tvar env = {\n\t\t\t\telement: element,\n\t\t\t\tlanguage: language,\n\t\t\t\tgrammar: grammar,\n\t\t\t\tcode: code\n\t\t\t};\n\n\t\t\tfunction insertHighlightedCode(highlightedCode) {\n\t\t\t\tenv.highlightedCode = highlightedCode;\n\n\t\t\t\t_.hooks.run('before-insert', env);\n\n\t\t\t\tenv.element.innerHTML = env.highlightedCode;\n\n\t\t\t\t_.hooks.run('after-highlight', env);\n\t\t\t\t_.hooks.run('complete', env);\n\t\t\t\tcallback && callback.call(env.element);\n\t\t\t}\n\n\t\t\t_.hooks.run('before-sanity-check', env);\n\n\t\t\t// plugins may change/add the parent/element\n\t\t\tparent = env.element.parentElement;\n\t\t\tif (parent && parent.nodeName.toLowerCase() === 'pre' && !parent.hasAttribute('tabindex')) {\n\t\t\t\tparent.setAttribute('tabindex', '0');\n\t\t\t}\n\n\t\t\tif (!env.code) {\n\t\t\t\t_.hooks.run('complete', env);\n\t\t\t\tcallback && callback.call(env.element);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t_.hooks.run('before-highlight', env);\n\n\t\t\tif (!env.grammar) {\n\t\t\t\tinsertHighlightedCode(_.util.encode(env.code));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (async && _self.Worker) {\n\t\t\t\tvar worker = new Worker(_.filename);\n\n\t\t\t\tworker.onmessage = function (evt) {\n\t\t\t\t\tinsertHighlightedCode(evt.data);\n\t\t\t\t};\n\n\t\t\t\tworker.postMessage(JSON.stringify({\n\t\t\t\t\tlanguage: env.language,\n\t\t\t\t\tcode: env.code,\n\t\t\t\t\timmediateClose: true\n\t\t\t\t}));\n\t\t\t} else {\n\t\t\t\tinsertHighlightedCode(_.highlight(env.code, env.grammar, env.language));\n\t\t\t}\n\t\t},\n\n\t\t/**\n\t\t * Low-level function, only use if you know what you’re doing. It accepts a string of text as input\n\t\t * and the language definitions to use, and returns a string with the HTML produced.\n\t\t *\n\t\t * The following hooks will be run:\n\t\t * 1. `before-tokenize`\n\t\t * 2. `after-tokenize`\n\t\t * 3. `wrap`: On each {@link Token}.\n\t\t *\n\t\t * @param {string} text A string with the code to be highlighted.\n\t\t * @param {Grammar} grammar An object containing the tokens to use.\n\t\t *\n\t\t * Usually a language definition like `Prism.languages.markup`.\n\t\t * @param {string} language The name of the language definition passed to `grammar`.\n\t\t * @returns {string} The highlighted HTML.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t * @example\n\t\t * Prism.highlight('var foo = true;', Prism.languages.javascript, 'javascript');\n\t\t */\n\t\thighlight: function (text, grammar, language) {\n\t\t\tvar env = {\n\t\t\t\tcode: text,\n\t\t\t\tgrammar: grammar,\n\t\t\t\tlanguage: language\n\t\t\t};\n\t\t\t_.hooks.run('before-tokenize', env);\n\t\t\tif (!env.grammar) {\n\t\t\t\tthrow new Error('The language \"' + env.language + '\" has no grammar.');\n\t\t\t}\n\t\t\tenv.tokens = _.tokenize(env.code, env.grammar);\n\t\t\t_.hooks.run('after-tokenize', env);\n\t\t\treturn Token.stringify(_.util.encode(env.tokens), env.language);\n\t\t},\n\n\t\t/**\n\t\t * This is the heart of Prism, and the most low-level function you can use. It accepts a string of text as input\n\t\t * and the language definitions to use, and returns an array with the tokenized code.\n\t\t *\n\t\t * When the language definition includes nested tokens, the function is called recursively on each of these tokens.\n\t\t *\n\t\t * This method could be useful in other contexts as well, as a very crude parser.\n\t\t *\n\t\t * @param {string} text A string with the code to be highlighted.\n\t\t * @param {Grammar} grammar An object containing the tokens to use.\n\t\t *\n\t\t * Usually a language definition like `Prism.languages.markup`.\n\t\t * @returns {TokenStream} An array of strings and tokens, a token stream.\n\t\t * @memberof Prism\n\t\t * @public\n\t\t * @example\n\t\t * let code = `var foo = 0;`;\n\t\t * let tokens = Prism.tokenize(code, Prism.languages.javascript);\n\t\t * tokens.forEach(token => {\n\t\t *     if (token instanceof Prism.Token && token.type === 'number') {\n\t\t *         console.log(`Found numeric literal: ${token.content}`);\n\t\t *     }\n\t\t * });\n\t\t */\n\t\ttokenize: function (text, grammar) {\n\t\t\tvar rest = grammar.rest;\n\t\t\tif (rest) {\n\t\t\t\tfor (var token in rest) {\n\t\t\t\t\tgrammar[token] = rest[token];\n\t\t\t\t}\n\n\t\t\t\tdelete grammar.rest;\n\t\t\t}\n\n\t\t\tvar tokenList = new LinkedList();\n\t\t\taddAfter(tokenList, tokenList.head, text);\n\n\t\t\tmatchGrammar(text, tokenList, grammar, tokenList.head, 0);\n\n\t\t\treturn toArray(tokenList);\n\t\t},\n\n\t\t/**\n\t\t * @namespace\n\t\t * @memberof Prism\n\t\t * @public\n\t\t */\n\t\thooks: {\n\t\t\tall: {},\n\n\t\t\t/**\n\t\t\t * Adds the given callback to the list of callbacks for the given hook.\n\t\t\t *\n\t\t\t * The callback will be invoked when the hook it is registered for is run.\n\t\t\t * Hooks are usually directly run by a highlight function but you can also run hooks yourself.\n\t\t\t *\n\t\t\t * One callback function can be registered to multiple hooks and the same hook multiple times.\n\t\t\t *\n\t\t\t * @param {string} name The name of the hook.\n\t\t\t * @param {HookCallback} callback The callback function which is given environment variables.\n\t\t\t * @public\n\t\t\t */\n\t\t\tadd: function (name, callback) {\n\t\t\t\tvar hooks = _.hooks.all;\n\n\t\t\t\thooks[name] = hooks[name] || [];\n\n\t\t\t\thooks[name].push(callback);\n\t\t\t},\n\n\t\t\t/**\n\t\t\t * Runs a hook invoking all registered callbacks with the given environment variables.\n\t\t\t *\n\t\t\t * Callbacks will be invoked synchronously and in the order in which they were registered.\n\t\t\t *\n\t\t\t * @param {string} name The name of the hook.\n\t\t\t * @param {Object<string, any>} env The environment variables of the hook passed to all callbacks registered.\n\t\t\t * @public\n\t\t\t */\n\t\t\trun: function (name, env) {\n\t\t\t\tvar callbacks = _.hooks.all[name];\n\n\t\t\t\tif (!callbacks || !callbacks.length) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tfor (var i = 0, callback; (callback = callbacks[i++]);) {\n\t\t\t\t\tcallback(env);\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\tToken: Token\n\t};\n\t_self.Prism = _;\n\n\n\t// Typescript note:\n\t// The following can be used to import the Token type in JSDoc:\n\t//\n\t//   @typedef {InstanceType<import(\"./prism-core\")[\"Token\"]>} Token\n\n\t/**\n\t * Creates a new token.\n\t *\n\t * @param {string} type See {@link Token#type type}\n\t * @param {string | TokenStream} content See {@link Token#content content}\n\t * @param {string|string[]} [alias] The alias(es) of the token.\n\t * @param {string} [matchedStr=\"\"] A copy of the full string this token was created from.\n\t * @class\n\t * @global\n\t * @public\n\t */\n\tfunction Token(type, content, alias, matchedStr) {\n\t\t/**\n\t\t * The type of the token.\n\t\t *\n\t\t * This is usually the key of a pattern in a {@link Grammar}.\n\t\t *\n\t\t * @type {string}\n\t\t * @see GrammarToken\n\t\t * @public\n\t\t */\n\t\tthis.type = type;\n\t\t/**\n\t\t * The strings or tokens contained by this token.\n\t\t *\n\t\t * This will be a token stream if the pattern matched also defined an `inside` grammar.\n\t\t *\n\t\t * @type {string | TokenStream}\n\t\t * @public\n\t\t */\n\t\tthis.content = content;\n\t\t/**\n\t\t * The alias(es) of the token.\n\t\t *\n\t\t * @type {string|string[]}\n\t\t * @see GrammarToken\n\t\t * @public\n\t\t */\n\t\tthis.alias = alias;\n\t\t// Copy of the full string this token was created from\n\t\tthis.length = (matchedStr || '').length | 0;\n\t}\n\n\t/**\n\t * A token stream is an array of strings and {@link Token Token} objects.\n\t *\n\t * Token streams have to fulfill a few properties that are assumed by most functions (mostly internal ones) that process\n\t * them.\n\t *\n\t * 1. No adjacent strings.\n\t * 2. No empty strings.\n\t *\n\t *    The only exception here is the token stream that only contains the empty string and nothing else.\n\t *\n\t * @typedef {Array<string | Token>} TokenStream\n\t * @global\n\t * @public\n\t */\n\n\t/**\n\t * Converts the given token or token stream to an HTML representation.\n\t *\n\t * The following hooks will be run:\n\t * 1. `wrap`: On each {@link Token}.\n\t *\n\t * @param {string | Token | TokenStream} o The token or token stream to be converted.\n\t * @param {string} language The name of current language.\n\t * @returns {string} The HTML representation of the token or token stream.\n\t * @memberof Token\n\t * @static\n\t */\n\tToken.stringify = function stringify(o, language) {\n\t\tif (typeof o == 'string') {\n\t\t\treturn o;\n\t\t}\n\t\tif (Array.isArray(o)) {\n\t\t\tvar s = '';\n\t\t\to.forEach(function (e) {\n\t\t\t\ts += stringify(e, language);\n\t\t\t});\n\t\t\treturn s;\n\t\t}\n\n\t\tvar env = {\n\t\t\ttype: o.type,\n\t\t\tcontent: stringify(o.content, language),\n\t\t\ttag: 'span',\n\t\t\tclasses: ['token', o.type],\n\t\t\tattributes: {},\n\t\t\tlanguage: language\n\t\t};\n\n\t\tvar aliases = o.alias;\n\t\tif (aliases) {\n\t\t\tif (Array.isArray(aliases)) {\n\t\t\t\tArray.prototype.push.apply(env.classes, aliases);\n\t\t\t} else {\n\t\t\t\tenv.classes.push(aliases);\n\t\t\t}\n\t\t}\n\n\t\t_.hooks.run('wrap', env);\n\n\t\tvar attributes = '';\n\t\tfor (var name in env.attributes) {\n\t\t\tattributes += ' ' + name + '=\"' + (env.attributes[name] || '').replace(/\"/g, '&quot;') + '\"';\n\t\t}\n\n\t\treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + attributes + '>' + env.content + '</' + env.tag + '>';\n\t};\n\n\t/**\n\t * @param {RegExp} pattern\n\t * @param {number} pos\n\t * @param {string} text\n\t * @param {boolean} lookbehind\n\t * @returns {RegExpExecArray | null}\n\t */\n\tfunction matchPattern(pattern, pos, text, lookbehind) {\n\t\tpattern.lastIndex = pos;\n\t\tvar match = pattern.exec(text);\n\t\tif (match && lookbehind && match[1]) {\n\t\t\t// change the match to remove the text matched by the Prism lookbehind group\n\t\t\tvar lookbehindLength = match[1].length;\n\t\t\tmatch.index += lookbehindLength;\n\t\t\tmatch[0] = match[0].slice(lookbehindLength);\n\t\t}\n\t\treturn match;\n\t}\n\n\t/**\n\t * @param {string} text\n\t * @param {LinkedList<string | Token>} tokenList\n\t * @param {any} grammar\n\t * @param {LinkedListNode<string | Token>} startNode\n\t * @param {number} startPos\n\t * @param {RematchOptions} [rematch]\n\t * @returns {void}\n\t * @private\n\t *\n\t * @typedef RematchOptions\n\t * @property {string} cause\n\t * @property {number} reach\n\t */\n\tfunction matchGrammar(text, tokenList, grammar, startNode, startPos, rematch) {\n\t\tfor (var token in grammar) {\n\t\t\tif (!grammar.hasOwnProperty(token) || !grammar[token]) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tvar patterns = grammar[token];\n\t\t\tpatterns = Array.isArray(patterns) ? patterns : [patterns];\n\n\t\t\tfor (var j = 0; j < patterns.length; ++j) {\n\t\t\t\tif (rematch && rematch.cause == token + ',' + j) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tvar patternObj = patterns[j];\n\t\t\t\tvar inside = patternObj.inside;\n\t\t\t\tvar lookbehind = !!patternObj.lookbehind;\n\t\t\t\tvar greedy = !!patternObj.greedy;\n\t\t\t\tvar alias = patternObj.alias;\n\n\t\t\t\tif (greedy && !patternObj.pattern.global) {\n\t\t\t\t\t// Without the global flag, lastIndex won't work\n\t\t\t\t\tvar flags = patternObj.pattern.toString().match(/[imsuy]*$/)[0];\n\t\t\t\t\tpatternObj.pattern = RegExp(patternObj.pattern.source, flags + 'g');\n\t\t\t\t}\n\n\t\t\t\t/** @type {RegExp} */\n\t\t\t\tvar pattern = patternObj.pattern || patternObj;\n\n\t\t\t\tfor ( // iterate the token list and keep track of the current token/string position\n\t\t\t\t\tvar currentNode = startNode.next, pos = startPos;\n\t\t\t\t\tcurrentNode !== tokenList.tail;\n\t\t\t\t\tpos += currentNode.value.length, currentNode = currentNode.next\n\t\t\t\t) {\n\n\t\t\t\t\tif (rematch && pos >= rematch.reach) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar str = currentNode.value;\n\n\t\t\t\t\tif (tokenList.length > text.length) {\n\t\t\t\t\t\t// Something went terribly wrong, ABORT, ABORT!\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar removeCount = 1; // this is the to parameter of removeBetween\n\t\t\t\t\tvar match;\n\n\t\t\t\t\tif (greedy) {\n\t\t\t\t\t\tmatch = matchPattern(pattern, pos, text, lookbehind);\n\t\t\t\t\t\tif (!match || match.index >= text.length) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar from = match.index;\n\t\t\t\t\t\tvar to = match.index + match[0].length;\n\t\t\t\t\t\tvar p = pos;\n\n\t\t\t\t\t\t// find the node that contains the match\n\t\t\t\t\t\tp += currentNode.value.length;\n\t\t\t\t\t\twhile (from >= p) {\n\t\t\t\t\t\t\tcurrentNode = currentNode.next;\n\t\t\t\t\t\t\tp += currentNode.value.length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\t// adjust pos (and p)\n\t\t\t\t\t\tp -= currentNode.value.length;\n\t\t\t\t\t\tpos = p;\n\n\t\t\t\t\t\t// the current node is a Token, then the match starts inside another Token, which is invalid\n\t\t\t\t\t\tif (currentNode.value instanceof Token) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// find the last node which is affected by this match\n\t\t\t\t\t\tfor (\n\t\t\t\t\t\t\tvar k = currentNode;\n\t\t\t\t\t\t\tk !== tokenList.tail && (p < to || typeof k.value === 'string');\n\t\t\t\t\t\t\tk = k.next\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tremoveCount++;\n\t\t\t\t\t\t\tp += k.value.length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tremoveCount--;\n\n\t\t\t\t\t\t// replace with the new match\n\t\t\t\t\t\tstr = text.slice(pos, p);\n\t\t\t\t\t\tmatch.index -= pos;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tmatch = matchPattern(pattern, 0, str, lookbehind);\n\t\t\t\t\t\tif (!match) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// eslint-disable-next-line no-redeclare\n\t\t\t\t\tvar from = match.index;\n\t\t\t\t\tvar matchStr = match[0];\n\t\t\t\t\tvar before = str.slice(0, from);\n\t\t\t\t\tvar after = str.slice(from + matchStr.length);\n\n\t\t\t\t\tvar reach = pos + str.length;\n\t\t\t\t\tif (rematch && reach > rematch.reach) {\n\t\t\t\t\t\trematch.reach = reach;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar removeFrom = currentNode.prev;\n\n\t\t\t\t\tif (before) {\n\t\t\t\t\t\tremoveFrom = addAfter(tokenList, removeFrom, before);\n\t\t\t\t\t\tpos += before.length;\n\t\t\t\t\t}\n\n\t\t\t\t\tremoveRange(tokenList, removeFrom, removeCount);\n\n\t\t\t\t\tvar wrapped = new Token(token, inside ? _.tokenize(matchStr, inside) : matchStr, alias, matchStr);\n\t\t\t\t\tcurrentNode = addAfter(tokenList, removeFrom, wrapped);\n\n\t\t\t\t\tif (after) {\n\t\t\t\t\t\taddAfter(tokenList, currentNode, after);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (removeCount > 1) {\n\t\t\t\t\t\t// at least one Token object was removed, so we have to do some rematching\n\t\t\t\t\t\t// this can only happen if the current pattern is greedy\n\n\t\t\t\t\t\t/** @type {RematchOptions} */\n\t\t\t\t\t\tvar nestedRematch = {\n\t\t\t\t\t\t\tcause: token + ',' + j,\n\t\t\t\t\t\t\treach: reach\n\t\t\t\t\t\t};\n\t\t\t\t\t\tmatchGrammar(text, tokenList, grammar, currentNode.prev, pos, nestedRematch);\n\n\t\t\t\t\t\t// the reach might have been extended because of the rematching\n\t\t\t\t\t\tif (rematch && nestedRematch.reach > rematch.reach) {\n\t\t\t\t\t\t\trematch.reach = nestedRematch.reach;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @typedef LinkedListNode\n\t * @property {T} value\n\t * @property {LinkedListNode<T> | null} prev The previous node.\n\t * @property {LinkedListNode<T> | null} next The next node.\n\t * @template T\n\t * @private\n\t */\n\n\t/**\n\t * @template T\n\t * @private\n\t */\n\tfunction LinkedList() {\n\t\t/** @type {LinkedListNode<T>} */\n\t\tvar head = { value: null, prev: null, next: null };\n\t\t/** @type {LinkedListNode<T>} */\n\t\tvar tail = { value: null, prev: head, next: null };\n\t\thead.next = tail;\n\n\t\t/** @type {LinkedListNode<T>} */\n\t\tthis.head = head;\n\t\t/** @type {LinkedListNode<T>} */\n\t\tthis.tail = tail;\n\t\tthis.length = 0;\n\t}\n\n\t/**\n\t * Adds a new node with the given value to the list.\n\t *\n\t * @param {LinkedList<T>} list\n\t * @param {LinkedListNode<T>} node\n\t * @param {T} value\n\t * @returns {LinkedListNode<T>} The added node.\n\t * @template T\n\t */\n\tfunction addAfter(list, node, value) {\n\t\t// assumes that node != list.tail && values.length >= 0\n\t\tvar next = node.next;\n\n\t\tvar newNode = { value: value, prev: node, next: next };\n\t\tnode.next = newNode;\n\t\tnext.prev = newNode;\n\t\tlist.length++;\n\n\t\treturn newNode;\n\t}\n\t/**\n\t * Removes `count` nodes after the given node. The given node will not be removed.\n\t *\n\t * @param {LinkedList<T>} list\n\t * @param {LinkedListNode<T>} node\n\t * @param {number} count\n\t * @template T\n\t */\n\tfunction removeRange(list, node, count) {\n\t\tvar next = node.next;\n\t\tfor (var i = 0; i < count && next !== list.tail; i++) {\n\t\t\tnext = next.next;\n\t\t}\n\t\tnode.next = next;\n\t\tnext.prev = node;\n\t\tlist.length -= i;\n\t}\n\t/**\n\t * @param {LinkedList<T>} list\n\t * @returns {T[]}\n\t * @template T\n\t */\n\tfunction toArray(list) {\n\t\tvar array = [];\n\t\tvar node = list.head.next;\n\t\twhile (node !== list.tail) {\n\t\t\tarray.push(node.value);\n\t\t\tnode = node.next;\n\t\t}\n\t\treturn array;\n\t}\n\n\n\tif (!_self.document) {\n\t\tif (!_self.addEventListener) {\n\t\t\t// in Node.js\n\t\t\treturn _;\n\t\t}\n\n\t\tif (!_.disableWorkerMessageHandler) {\n\t\t\t// In worker\n\t\t\t_self.addEventListener('message', function (evt) {\n\t\t\t\tvar message = JSON.parse(evt.data);\n\t\t\t\tvar lang = message.language;\n\t\t\t\tvar code = message.code;\n\t\t\t\tvar immediateClose = message.immediateClose;\n\n\t\t\t\t_self.postMessage(_.highlight(code, _.languages[lang], lang));\n\t\t\t\tif (immediateClose) {\n\t\t\t\t\t_self.close();\n\t\t\t\t}\n\t\t\t}, false);\n\t\t}\n\n\t\treturn _;\n\t}\n\n\t// Get current script and highlight\n\tvar script = _.util.currentScript();\n\n\tif (script) {\n\t\t_.filename = script.src;\n\n\t\tif (script.hasAttribute('data-manual')) {\n\t\t\t_.manual = true;\n\t\t}\n\t}\n\n\tfunction highlightAutomaticallyCallback() {\n\t\tif (!_.manual) {\n\t\t\t_.highlightAll();\n\t\t}\n\t}\n\n\tif (!_.manual) {\n\t\t// If the document state is \"loading\", then we'll use DOMContentLoaded.\n\t\t// If the document state is \"interactive\" and the prism.js script is deferred, then we'll also use the\n\t\t// DOMContentLoaded event because there might be some plugins or languages which have also been deferred and they\n\t\t// might take longer one animation frame to execute which can create a race condition where only some plugins have\n\t\t// been loaded when Prism.highlightAll() is executed, depending on how fast resources are loaded.\n\t\t// See https://github.com/PrismJS/prism/issues/2102\n\t\tvar readyState = document.readyState;\n\t\tif (readyState === 'loading' || readyState === 'interactive' && script && script.defer) {\n\t\t\tdocument.addEventListener('DOMContentLoaded', highlightAutomaticallyCallback);\n\t\t} else {\n\t\t\tif (window.requestAnimationFrame) {\n\t\t\t\twindow.requestAnimationFrame(highlightAutomaticallyCallback);\n\t\t\t} else {\n\t\t\t\twindow.setTimeout(highlightAutomaticallyCallback, 16);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn _;\n\n}(_self));\n\nif (typeof module !== 'undefined' && module.exports) {\n\tmodule.exports = Prism;\n}\n\n// hack for components to work correctly in node.js\nif (typeof global !== 'undefined') {\n\tglobal.Prism = Prism;\n}\n\n// some additional documentation/types\n\n/**\n * The expansion of a simple `RegExp` literal to support additional properties.\n *\n * @typedef GrammarToken\n * @property {RegExp} pattern The regular expression of the token.\n * @property {boolean} [lookbehind=false] If `true`, then the first capturing group of `pattern` will (effectively)\n * behave as a lookbehind group meaning that the captured text will not be part of the matched text of the new token.\n * @property {boolean} [greedy=false] Whether the token is greedy.\n * @property {string|string[]} [alias] An optional alias or list of aliases.\n * @property {Grammar} [inside] The nested grammar of this token.\n *\n * The `inside` grammar will be used to tokenize the text value of each token of this kind.\n *\n * This can be used to make nested and even recursive language definitions.\n *\n * Note: This can cause infinite recursion. Be careful when you embed different languages or even the same language into\n * each another.\n * @global\n * @public\n */\n\n/**\n * @typedef Grammar\n * @type {Object<string, RegExp | GrammarToken | Array<RegExp | GrammarToken>>}\n * @property {Grammar} [rest] An optional grammar object that will be appended to this grammar.\n * @global\n * @public\n */\n\n/**\n * A function which will invoked after an element was successfully highlighted.\n *\n * @callback HighlightCallback\n * @param {Element} element The element successfully highlighted.\n * @returns {void}\n * @global\n * @public\n */\n\n/**\n * @callback HookCallback\n * @param {Object<string, any>} env The environment variables of the hook.\n * @returns {void}\n * @global\n * @public\n */\n\n\n/* **********************************************\n     Begin prism-markup.js\n********************************************** */\n\nPrism.languages.markup = {\n\t'comment': {\n\t\tpattern: /<!--(?:(?!<!--)[\\s\\S])*?-->/,\n\t\tgreedy: true\n\t},\n\t'prolog': {\n\t\tpattern: /<\\?[\\s\\S]+?\\?>/,\n\t\tgreedy: true\n\t},\n\t'doctype': {\n\t\t// https://www.w3.org/TR/xml/#NT-doctypedecl\n\t\tpattern: /<!DOCTYPE(?:[^>\"'[\\]]|\"[^\"]*\"|'[^']*')+(?:\\[(?:[^<\"'\\]]|\"[^\"]*\"|'[^']*'|<(?!!--)|<!--(?:[^-]|-(?!->))*-->)*\\]\\s*)?>/i,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'internal-subset': {\n\t\t\t\tpattern: /(^[^\\[]*\\[)[\\s\\S]+(?=\\]>$)/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: null // see below\n\t\t\t},\n\t\t\t'string': {\n\t\t\t\tpattern: /\"[^\"]*\"|'[^']*'/,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\t'punctuation': /^<!|>$|[[\\]]/,\n\t\t\t'doctype-tag': /^DOCTYPE/i,\n\t\t\t'name': /[^\\s<>'\"]+/\n\t\t}\n\t},\n\t'cdata': {\n\t\tpattern: /<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,\n\t\tgreedy: true\n\t},\n\t'tag': {\n\t\tpattern: /<\\/?(?!\\d)[^\\s>\\/=$<%]+(?:\\s(?:\\s*[^\\s>\\/=]+(?:\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))|(?=[\\s/>])))+)?\\s*\\/?>/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'tag': {\n\t\t\t\tpattern: /^<\\/?[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /^<\\/?/,\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'special-attr': [],\n\t\t\t'attr-value': {\n\t\t\t\tpattern: /=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+)/,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: /^=/,\n\t\t\t\t\t\t\talias: 'attr-equals'\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: /^(\\s*)[\"']|[\"']$/,\n\t\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t},\n\t\t\t'punctuation': /\\/?>/,\n\t\t\t'attr-name': {\n\t\t\t\tpattern: /[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t},\n\t'entity': [\n\t\t{\n\t\t\tpattern: /&[\\da-z]{1,8};/i,\n\t\t\talias: 'named-entity'\n\t\t},\n\t\t/&#x?[\\da-f]{1,8};/i\n\t]\n};\n\nPrism.languages.markup['tag'].inside['attr-value'].inside['entity'] =\n\tPrism.languages.markup['entity'];\nPrism.languages.markup['doctype'].inside['internal-subset'].inside = Prism.languages.markup;\n\n// Plugin to make entity title show the real entity, idea by Roman Komarov\nPrism.hooks.add('wrap', function (env) {\n\n\tif (env.type === 'entity') {\n\t\tenv.attributes['title'] = env.content.replace(/&amp;/, '&');\n\t}\n});\n\nObject.defineProperty(Prism.languages.markup.tag, 'addInlined', {\n\t/**\n\t * Adds an inlined language to markup.\n\t *\n\t * An example of an inlined language is CSS with `<style>` tags.\n\t *\n\t * @param {string} tagName The name of the tag that contains the inlined language. This name will be treated as\n\t * case insensitive.\n\t * @param {string} lang The language key.\n\t * @example\n\t * addInlined('style', 'css');\n\t */\n\tvalue: function addInlined(tagName, lang) {\n\t\tvar includedCdataInside = {};\n\t\tincludedCdataInside['language-' + lang] = {\n\t\t\tpattern: /(^<!\\[CDATA\\[)[\\s\\S]+?(?=\\]\\]>$)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages[lang]\n\t\t};\n\t\tincludedCdataInside['cdata'] = /^<!\\[CDATA\\[|\\]\\]>$/i;\n\n\t\tvar inside = {\n\t\t\t'included-cdata': {\n\t\t\t\tpattern: /<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,\n\t\t\t\tinside: includedCdataInside\n\t\t\t}\n\t\t};\n\t\tinside['language-' + lang] = {\n\t\t\tpattern: /[\\s\\S]+/,\n\t\t\tinside: Prism.languages[lang]\n\t\t};\n\n\t\tvar def = {};\n\t\tdef[tagName] = {\n\t\t\tpattern: RegExp(/(<__[^>]*>)(?:<!\\[CDATA\\[(?:[^\\]]|\\](?!\\]>))*\\]\\]>|(?!<!\\[CDATA\\[)[\\s\\S])*?(?=<\\/__>)/.source.replace(/__/g, function () { return tagName; }), 'i'),\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true,\n\t\t\tinside: inside\n\t\t};\n\n\t\tPrism.languages.insertBefore('markup', 'cdata', def);\n\t}\n});\nObject.defineProperty(Prism.languages.markup.tag, 'addAttribute', {\n\t/**\n\t * Adds an pattern to highlight languages embedded in HTML attributes.\n\t *\n\t * An example of an inlined language is CSS with `style` attributes.\n\t *\n\t * @param {string} attrName The name of the tag that contains the inlined language. This name will be treated as\n\t * case insensitive.\n\t * @param {string} lang The language key.\n\t * @example\n\t * addAttribute('style', 'css');\n\t */\n\tvalue: function (attrName, lang) {\n\t\tPrism.languages.markup.tag.inside['special-attr'].push({\n\t\t\tpattern: RegExp(\n\t\t\t\t/(^|[\"'\\s])/.source + '(?:' + attrName + ')' + /\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))/.source,\n\t\t\t\t'i'\n\t\t\t),\n\t\t\tlookbehind: true,\n\t\t\tinside: {\n\t\t\t\t'attr-name': /^[^\\s=]+/,\n\t\t\t\t'attr-value': {\n\t\t\t\t\tpattern: /=[\\s\\S]+/,\n\t\t\t\t\tinside: {\n\t\t\t\t\t\t'value': {\n\t\t\t\t\t\t\tpattern: /(^=\\s*([\"']|(?![\"'])))\\S[\\s\\S]*(?=\\2$)/,\n\t\t\t\t\t\t\tlookbehind: true,\n\t\t\t\t\t\t\talias: [lang, 'language-' + lang],\n\t\t\t\t\t\t\tinside: Prism.languages[lang]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t'punctuation': [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tpattern: /^=/,\n\t\t\t\t\t\t\t\talias: 'attr-equals'\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t/\"|'/\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n});\n\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\n\nPrism.languages.xml = Prism.languages.extend('markup', {});\nPrism.languages.ssml = Prism.languages.xml;\nPrism.languages.atom = Prism.languages.xml;\nPrism.languages.rss = Prism.languages.xml;\n\n\n/* **********************************************\n     Begin prism-css.js\n********************************************** */\n\n(function (Prism) {\n\n\tvar string = /(?:\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"|'(?:\\\\(?:\\r\\n|[\\s\\S])|[^'\\\\\\r\\n])*')/;\n\n\tPrism.languages.css = {\n\t\t'comment': /\\/\\*[\\s\\S]*?\\*\\//,\n\t\t'atrule': {\n\t\t\tpattern: RegExp('@[\\\\w-](?:' + /[^;{\\s\"']|\\s+(?!\\s)/.source + '|' + string.source + ')*?' + /(?:;|(?=\\s*\\{))/.source),\n\t\t\tinside: {\n\t\t\t\t'rule': /^@[\\w-]+/,\n\t\t\t\t'selector-function-argument': {\n\t\t\t\t\tpattern: /(\\bselector\\s*\\(\\s*(?![\\s)]))(?:[^()\\s]|\\s+(?![\\s)])|\\((?:[^()]|\\([^()]*\\))*\\))+(?=\\s*\\))/,\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\talias: 'selector'\n\t\t\t\t},\n\t\t\t\t'keyword': {\n\t\t\t\t\tpattern: /(^|[^\\w-])(?:and|not|only|or)(?![\\w-])/,\n\t\t\t\t\tlookbehind: true\n\t\t\t\t}\n\t\t\t\t// See rest below\n\t\t\t}\n\t\t},\n\t\t'url': {\n\t\t\t// https://drafts.csswg.org/css-values-3/#urls\n\t\t\tpattern: RegExp('\\\\burl\\\\((?:' + string.source + '|' + /(?:[^\\\\\\r\\n()\"']|\\\\[\\s\\S])*/.source + ')\\\\)', 'i'),\n\t\t\tgreedy: true,\n\t\t\tinside: {\n\t\t\t\t'function': /^url/i,\n\t\t\t\t'punctuation': /^\\(|\\)$/,\n\t\t\t\t'string': {\n\t\t\t\t\tpattern: RegExp('^' + string.source + '$'),\n\t\t\t\t\talias: 'url'\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t'selector': {\n\t\t\tpattern: RegExp('(^|[{}\\\\s])[^{}\\\\s](?:[^{};\"\\'\\\\s]|\\\\s+(?![\\\\s{])|' + string.source + ')*(?=\\\\s*\\\\{)'),\n\t\t\tlookbehind: true\n\t\t},\n\t\t'string': {\n\t\t\tpattern: string,\n\t\t\tgreedy: true\n\t\t},\n\t\t'property': {\n\t\t\tpattern: /(^|[^-\\w\\xA0-\\uFFFF])(?!\\s)[-_a-z\\xA0-\\uFFFF](?:(?!\\s)[-\\w\\xA0-\\uFFFF])*(?=\\s*:)/i,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'important': /!important\\b/i,\n\t\t'function': {\n\t\t\tpattern: /(^|[^-a-z0-9])[-a-z0-9]+(?=\\()/i,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'punctuation': /[(){};:,]/\n\t};\n\n\tPrism.languages.css['atrule'].inside.rest = Prism.languages.css;\n\n\tvar markup = Prism.languages.markup;\n\tif (markup) {\n\t\tmarkup.tag.addInlined('style', 'css');\n\t\tmarkup.tag.addAttribute('style', 'css');\n\t}\n\n}(Prism));\n\n\n/* **********************************************\n     Begin prism-clike.js\n********************************************** */\n\nPrism.languages.clike = {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\tlookbehind: true,\n\t\t\tgreedy: true\n\t\t}\n\t],\n\t'string': {\n\t\tpattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'class-name': {\n\t\tpattern: /(\\b(?:class|extends|implements|instanceof|interface|new|trait)\\s+|\\bcatch\\s+\\()[\\w.\\\\]+/i,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\t'punctuation': /[.\\\\]/\n\t\t}\n\t},\n\t'keyword': /\\b(?:break|catch|continue|do|else|finally|for|function|if|in|instanceof|new|null|return|throw|try|while)\\b/,\n\t'boolean': /\\b(?:false|true)\\b/,\n\t'function': /\\b\\w+(?=\\()/,\n\t'number': /\\b0x[\\da-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:e[+-]?\\d+)?/i,\n\t'operator': /[<>]=?|[!=]=?=?|--?|\\+\\+?|&&?|\\|\\|?|[?*/~^%]/,\n\t'punctuation': /[{}[\\];(),.:]/\n};\n\n\n/* **********************************************\n     Begin prism-javascript.js\n********************************************** */\n\nPrism.languages.javascript = Prism.languages.extend('clike', {\n\t'class-name': [\n\t\tPrism.languages.clike['class-name'],\n\t\t{\n\t\t\tpattern: /(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$A-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\.(?:constructor|prototype))/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'keyword': [\n\t\t{\n\t\t\tpattern: /((?:^|\\})\\s*)catch\\b/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^.]|\\.\\.\\.\\s*)\\b(?:as|assert(?=\\s*\\{)|async(?=\\s*(?:function\\b|\\(|[$\\w\\xA0-\\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\\s*(?:\\{|$))|for|from(?=\\s*(?:['\"]|$))|function|(?:get|set)(?=\\s*(?:[#\\[$\\w\\xA0-\\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\\b/,\n\t\t\tlookbehind: true\n\t\t},\n\t],\n\t// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n\t'function': /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*(?:\\.\\s*(?:apply|bind|call)\\s*)?\\()/,\n\t'number': {\n\t\tpattern: RegExp(\n\t\t\t/(^|[^\\w$])/.source +\n\t\t\t'(?:' +\n\t\t\t(\n\t\t\t\t// constant\n\t\t\t\t/NaN|Infinity/.source +\n\t\t\t\t'|' +\n\t\t\t\t// binary integer\n\t\t\t\t/0[bB][01]+(?:_[01]+)*n?/.source +\n\t\t\t\t'|' +\n\t\t\t\t// octal integer\n\t\t\t\t/0[oO][0-7]+(?:_[0-7]+)*n?/.source +\n\t\t\t\t'|' +\n\t\t\t\t// hexadecimal integer\n\t\t\t\t/0[xX][\\dA-Fa-f]+(?:_[\\dA-Fa-f]+)*n?/.source +\n\t\t\t\t'|' +\n\t\t\t\t// decimal bigint\n\t\t\t\t/\\d+(?:_\\d+)*n/.source +\n\t\t\t\t'|' +\n\t\t\t\t// decimal number (integer or float) but no bigint\n\t\t\t\t/(?:\\d+(?:_\\d+)*(?:\\.(?:\\d+(?:_\\d+)*)?)?|\\.\\d+(?:_\\d+)*)(?:[Ee][+-]?\\d+(?:_\\d+)*)?/.source\n\t\t\t) +\n\t\t\t')' +\n\t\t\t/(?![\\w$])/.source\n\t\t),\n\t\tlookbehind: true\n\t},\n\t'operator': /--|\\+\\+|\\*\\*=?|=>|&&=?|\\|\\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\\.{3}|\\?\\?=?|\\?\\.?|[~:]/\n});\n\nPrism.languages.javascript['class-name'][0].pattern = /(\\b(?:class|extends|implements|instanceof|interface|new)\\s+)[\\w.\\\\]+/;\n\nPrism.languages.insertBefore('javascript', 'keyword', {\n\t'regex': {\n\t\tpattern: RegExp(\n\t\t\t// lookbehind\n\t\t\t// eslint-disable-next-line regexp/no-dupe-characters-character-class\n\t\t\t/((?:^|[^$\\w\\xA0-\\uFFFF.\"'\\])\\s]|\\b(?:return|yield))\\s*)/.source +\n\t\t\t// Regex pattern:\n\t\t\t// There are 2 regex patterns here. The RegExp set notation proposal added support for nested character\n\t\t\t// classes if the `v` flag is present. Unfortunately, nested CCs are both context-free and incompatible\n\t\t\t// with the only syntax, so we have to define 2 different regex patterns.\n\t\t\t/\\//.source +\n\t\t\t'(?:' +\n\t\t\t/(?:\\[(?:[^\\]\\\\\\r\\n]|\\\\.)*\\]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[dgimyus]{0,7}/.source +\n\t\t\t'|' +\n\t\t\t// `v` flag syntax. This supports 3 levels of nested character classes.\n\t\t\t/(?:\\[(?:[^[\\]\\\\\\r\\n]|\\\\.|\\[(?:[^[\\]\\\\\\r\\n]|\\\\.|\\[(?:[^[\\]\\\\\\r\\n]|\\\\.)*\\])*\\])*\\]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[dgimyus]{0,7}v[dgimyus]{0,7}/.source +\n\t\t\t')' +\n\t\t\t// lookahead\n\t\t\t/(?=(?:\\s|\\/\\*(?:[^*]|\\*(?!\\/))*\\*\\/)*(?:$|[\\r\\n,.;:})\\]]|\\/\\/))/.source\n\t\t),\n\t\tlookbehind: true,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'regex-source': {\n\t\t\t\tpattern: /^(\\/)[\\s\\S]+(?=\\/[a-z]*$)/,\n\t\t\t\tlookbehind: true,\n\t\t\t\talias: 'language-regex',\n\t\t\t\tinside: Prism.languages.regex\n\t\t\t},\n\t\t\t'regex-delimiter': /^\\/|\\/$/,\n\t\t\t'regex-flags': /^[a-z]+$/,\n\t\t}\n\t},\n\t// This must be declared before keyword because we use \"function\" inside the look-forward\n\t'function-variable': {\n\t\tpattern: /#?(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*[=:]\\s*(?:async\\s*)?(?:\\bfunction\\b|(?:\\((?:[^()]|\\([^()]*\\))*\\)|(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)\\s*=>))/,\n\t\talias: 'function'\n\t},\n\t'parameter': [\n\t\t{\n\t\t\tpattern: /(function(?:\\s+(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*)?\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\))/,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^$\\w\\xA0-\\uFFFF])(?!\\s)[_$a-z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*=>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t},\n\t\t{\n\t\t\tpattern: /(\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*=>)/,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t},\n\t\t{\n\t\t\tpattern: /((?:\\b|\\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\\w\\xA0-\\uFFFF]))(?:(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*\\s*)\\(\\s*|\\]\\s*\\(\\s*)(?!\\s)(?:[^()\\s]|\\s+(?![\\s)])|\\([^()]*\\))+(?=\\s*\\)\\s*\\{)/,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript\n\t\t}\n\t],\n\t'constant': /\\b[A-Z](?:[A-Z_]|\\dx?)*\\b/\n});\n\nPrism.languages.insertBefore('javascript', 'string', {\n\t'hashbang': {\n\t\tpattern: /^#!.*/,\n\t\tgreedy: true,\n\t\talias: 'comment'\n\t},\n\t'template-string': {\n\t\tpattern: /`(?:\\\\[\\s\\S]|\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}|(?!\\$\\{)[^\\\\`])*`/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'template-punctuation': {\n\t\t\t\tpattern: /^`|`$/,\n\t\t\t\talias: 'string'\n\t\t\t},\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /((?:^|[^\\\\])(?:\\\\{2})*)\\$\\{(?:[^{}]|\\{(?:[^{}]|\\{[^}]*\\})*\\})+\\}/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\tpattern: /^\\$\\{|\\}$/,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\trest: Prism.languages.javascript\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t},\n\t'string-property': {\n\t\tpattern: /((?:^|[,{])[ \\t]*)([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\2)[^\\\\\\r\\n])*\\2(?=\\s*:)/m,\n\t\tlookbehind: true,\n\t\tgreedy: true,\n\t\talias: 'property'\n\t}\n});\n\nPrism.languages.insertBefore('javascript', 'operator', {\n\t'literal-property': {\n\t\tpattern: /((?:^|[,{])[ \\t]*)(?!\\s)[_$a-zA-Z\\xA0-\\uFFFF](?:(?!\\s)[$\\w\\xA0-\\uFFFF])*(?=\\s*:)/m,\n\t\tlookbehind: true,\n\t\talias: 'property'\n\t},\n});\n\nif (Prism.languages.markup) {\n\tPrism.languages.markup.tag.addInlined('script', 'javascript');\n\n\t// add attribute support for all DOM events.\n\t// https://developer.mozilla.org/en-US/docs/Web/Events#Standard_events\n\tPrism.languages.markup.tag.addAttribute(\n\t\t/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,\n\t\t'javascript'\n\t);\n}\n\nPrism.languages.js = Prism.languages.javascript;\n\n\n/* **********************************************\n     Begin prism-file-highlight.js\n********************************************** */\n\n(function () {\n\n\tif (typeof Prism === 'undefined' || typeof document === 'undefined') {\n\t\treturn;\n\t}\n\n\t// https://developer.mozilla.org/en-US/docs/Web/API/Element/matches#Polyfill\n\tif (!Element.prototype.matches) {\n\t\tElement.prototype.matches = Element.prototype.msMatchesSelector || Element.prototype.webkitMatchesSelector;\n\t}\n\n\tvar LOADING_MESSAGE = 'Loading…';\n\tvar FAILURE_MESSAGE = function (status, message) {\n\t\treturn '✖ Error ' + status + ' while fetching file: ' + message;\n\t};\n\tvar FAILURE_EMPTY_MESSAGE = '✖ Error: File does not exist or is empty';\n\n\tvar EXTENSIONS = {\n\t\t'js': 'javascript',\n\t\t'py': 'python',\n\t\t'rb': 'ruby',\n\t\t'ps1': 'powershell',\n\t\t'psm1': 'powershell',\n\t\t'sh': 'bash',\n\t\t'bat': 'batch',\n\t\t'h': 'c',\n\t\t'tex': 'latex'\n\t};\n\n\tvar STATUS_ATTR = 'data-src-status';\n\tvar STATUS_LOADING = 'loading';\n\tvar STATUS_LOADED = 'loaded';\n\tvar STATUS_FAILED = 'failed';\n\n\tvar SELECTOR = 'pre[data-src]:not([' + STATUS_ATTR + '=\"' + STATUS_LOADED + '\"])'\n\t\t+ ':not([' + STATUS_ATTR + '=\"' + STATUS_LOADING + '\"])';\n\n\t/**\n\t * Loads the given file.\n\t *\n\t * @param {string} src The URL or path of the source file to load.\n\t * @param {(result: string) => void} success\n\t * @param {(reason: string) => void} error\n\t */\n\tfunction loadFile(src, success, error) {\n\t\tvar xhr = new XMLHttpRequest();\n\t\txhr.open('GET', src, true);\n\t\txhr.onreadystatechange = function () {\n\t\t\tif (xhr.readyState == 4) {\n\t\t\t\tif (xhr.status < 400 && xhr.responseText) {\n\t\t\t\t\tsuccess(xhr.responseText);\n\t\t\t\t} else {\n\t\t\t\t\tif (xhr.status >= 400) {\n\t\t\t\t\t\terror(FAILURE_MESSAGE(xhr.status, xhr.statusText));\n\t\t\t\t\t} else {\n\t\t\t\t\t\terror(FAILURE_EMPTY_MESSAGE);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\txhr.send(null);\n\t}\n\n\t/**\n\t * Parses the given range.\n\t *\n\t * This returns a range with inclusive ends.\n\t *\n\t * @param {string | null | undefined} range\n\t * @returns {[number, number | undefined] | undefined}\n\t */\n\tfunction parseRange(range) {\n\t\tvar m = /^\\s*(\\d+)\\s*(?:(,)\\s*(?:(\\d+)\\s*)?)?$/.exec(range || '');\n\t\tif (m) {\n\t\t\tvar start = Number(m[1]);\n\t\t\tvar comma = m[2];\n\t\t\tvar end = m[3];\n\n\t\t\tif (!comma) {\n\t\t\t\treturn [start, start];\n\t\t\t}\n\t\t\tif (!end) {\n\t\t\t\treturn [start, undefined];\n\t\t\t}\n\t\t\treturn [start, Number(end)];\n\t\t}\n\t\treturn undefined;\n\t}\n\n\tPrism.hooks.add('before-highlightall', function (env) {\n\t\tenv.selector += ', ' + SELECTOR;\n\t});\n\n\tPrism.hooks.add('before-sanity-check', function (env) {\n\t\tvar pre = /** @type {HTMLPreElement} */ (env.element);\n\t\tif (pre.matches(SELECTOR)) {\n\t\t\tenv.code = ''; // fast-path the whole thing and go to complete\n\n\t\t\tpre.setAttribute(STATUS_ATTR, STATUS_LOADING); // mark as loading\n\n\t\t\t// add code element with loading message\n\t\t\tvar code = pre.appendChild(document.createElement('CODE'));\n\t\t\tcode.textContent = LOADING_MESSAGE;\n\n\t\t\tvar src = pre.getAttribute('data-src');\n\n\t\t\tvar language = env.language;\n\t\t\tif (language === 'none') {\n\t\t\t\t// the language might be 'none' because there is no language set;\n\t\t\t\t// in this case, we want to use the extension as the language\n\t\t\t\tvar extension = (/\\.(\\w+)$/.exec(src) || [, 'none'])[1];\n\t\t\t\tlanguage = EXTENSIONS[extension] || extension;\n\t\t\t}\n\n\t\t\t// set language classes\n\t\t\tPrism.util.setLanguage(code, language);\n\t\t\tPrism.util.setLanguage(pre, language);\n\n\t\t\t// preload the language\n\t\t\tvar autoloader = Prism.plugins.autoloader;\n\t\t\tif (autoloader) {\n\t\t\t\tautoloader.loadLanguages(language);\n\t\t\t}\n\n\t\t\t// load file\n\t\t\tloadFile(\n\t\t\t\tsrc,\n\t\t\t\tfunction (text) {\n\t\t\t\t\t// mark as loaded\n\t\t\t\t\tpre.setAttribute(STATUS_ATTR, STATUS_LOADED);\n\n\t\t\t\t\t// handle data-range\n\t\t\t\t\tvar range = parseRange(pre.getAttribute('data-range'));\n\t\t\t\t\tif (range) {\n\t\t\t\t\t\tvar lines = text.split(/\\r\\n?|\\n/g);\n\n\t\t\t\t\t\t// the range is one-based and inclusive on both ends\n\t\t\t\t\t\tvar start = range[0];\n\t\t\t\t\t\tvar end = range[1] == null ? lines.length : range[1];\n\n\t\t\t\t\t\tif (start < 0) { start += lines.length; }\n\t\t\t\t\t\tstart = Math.max(0, Math.min(start - 1, lines.length));\n\t\t\t\t\t\tif (end < 0) { end += lines.length; }\n\t\t\t\t\t\tend = Math.max(0, Math.min(end, lines.length));\n\n\t\t\t\t\t\ttext = lines.slice(start, end).join('\\n');\n\n\t\t\t\t\t\t// add data-start for line numbers\n\t\t\t\t\t\tif (!pre.hasAttribute('data-start')) {\n\t\t\t\t\t\t\tpre.setAttribute('data-start', String(start + 1));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// highlight code\n\t\t\t\t\tcode.textContent = text;\n\t\t\t\t\tPrism.highlightElement(code);\n\t\t\t\t},\n\t\t\t\tfunction (error) {\n\t\t\t\t\t// mark as failed\n\t\t\t\t\tpre.setAttribute(STATUS_ATTR, STATUS_FAILED);\n\n\t\t\t\t\tcode.textContent = error;\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t});\n\n\tPrism.plugins.fileHighlight = {\n\t\t/**\n\t\t * Executes the File Highlight plugin for all matching `pre` elements under the given container.\n\t\t *\n\t\t * Note: Elements which are already loaded or currently loading will not be touched by this method.\n\t\t *\n\t\t * @param {ParentNode} [container=document]\n\t\t */\n\t\thighlight: function highlight(container) {\n\t\t\tvar elements = (container || document).querySelectorAll(SELECTOR);\n\n\t\t\tfor (var i = 0, element; (element = elements[i++]);) {\n\t\t\t\tPrism.highlightElement(element);\n\t\t\t}\n\t\t}\n\t};\n\n\tvar logged = false;\n\t/** @deprecated Use `Prism.plugins.fileHighlight.highlight` instead. */\n\tPrism.fileHighlight = function () {\n\t\tif (!logged) {\n\t\t\tconsole.warn('Prism.fileHighlight is deprecated. Use `Prism.plugins.fileHighlight.highlight` instead.');\n\t\t\tlogged = true;\n\t\t}\n\t\tPrism.plugins.fileHighlight.highlight.apply(this, arguments);\n\t};\n\n}());\n","(function (Prism) {\n\t// $ set | grep '^[A-Z][^[:space:]]*=' | cut -d= -f1 | tr '\\n' '|'\n\t// + LC_ALL, RANDOM, REPLY, SECONDS.\n\t// + make sure PS1..4 are here as they are not always set,\n\t// - some useless things.\n\tvar envVars = '\\\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\\\b';\n\n\tvar commandAfterHeredoc = {\n\t\tpattern: /(^([\"']?)\\w+\\2)[ \\t]+\\S.*/,\n\t\tlookbehind: true,\n\t\talias: 'punctuation', // this looks reasonably well in all themes\n\t\tinside: null // see below\n\t};\n\n\tvar insideString = {\n\t\t'bash': commandAfterHeredoc,\n\t\t'environment': {\n\t\t\tpattern: RegExp('\\\\$' + envVars),\n\t\t\talias: 'constant'\n\t\t},\n\t\t'variable': [\n\t\t\t// [0]: Arithmetic Environment\n\t\t\t{\n\t\t\t\tpattern: /\\$?\\(\\([\\s\\S]+?\\)\\)/,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t// If there is a $ sign at the beginning highlight $(( and )) as variable\n\t\t\t\t\t'variable': [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tpattern: /(^\\$\\(\\([\\s\\S]+)\\)\\)/,\n\t\t\t\t\t\t\tlookbehind: true\n\t\t\t\t\t\t},\n\t\t\t\t\t\t/^\\$\\(\\(/\n\t\t\t\t\t],\n\t\t\t\t\t'number': /\\b0x[\\dA-Fa-f]+\\b|(?:\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+)(?:[Ee]-?\\d+)?/,\n\t\t\t\t\t// Operators according to https://www.gnu.org/software/bash/manual/bashref.html#Shell-Arithmetic\n\t\t\t\t\t'operator': /--|\\+\\+|\\*\\*=?|<<=?|>>=?|&&|\\|\\||[=!+\\-*/%<>^&|]=?|[?~:]/,\n\t\t\t\t\t// If there is no $ sign at the beginning highlight (( and )) as punctuation\n\t\t\t\t\t'punctuation': /\\(\\(?|\\)\\)?|,|;/\n\t\t\t\t}\n\t\t\t},\n\t\t\t// [1]: Command Substitution\n\t\t\t{\n\t\t\t\tpattern: /\\$\\((?:\\([^)]+\\)|[^()])+\\)|`[^`]+`/,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'variable': /^\\$\\(|^`|\\)$|`$/\n\t\t\t\t}\n\t\t\t},\n\t\t\t// [2]: Brace expansion\n\t\t\t{\n\t\t\t\tpattern: /\\$\\{[^}]+\\}/,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'operator': /:[-=?+]?|[!\\/]|##?|%%?|\\^\\^?|,,?/,\n\t\t\t\t\t'punctuation': /[\\[\\]]/,\n\t\t\t\t\t'environment': {\n\t\t\t\t\t\tpattern: RegExp('(\\\\{)' + envVars),\n\t\t\t\t\t\tlookbehind: true,\n\t\t\t\t\t\talias: 'constant'\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\t/\\$(?:\\w+|[#?*!@$])/\n\t\t],\n\t\t// Escape sequences from echo and printf's manuals, and escaped quotes.\n\t\t'entity': /\\\\(?:[abceEfnrtv\\\\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/\n\t};\n\n\tPrism.languages.bash = {\n\t\t'shebang': {\n\t\t\tpattern: /^#!\\s*\\/.*/,\n\t\t\talias: 'important'\n\t\t},\n\t\t'comment': {\n\t\t\tpattern: /(^|[^\"{\\\\$])#.*/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'function-name': [\n\t\t\t// a) function foo {\n\t\t\t// b) foo() {\n\t\t\t// c) function foo() {\n\t\t\t// but not “foo {”\n\t\t\t{\n\t\t\t\t// a) and c)\n\t\t\t\tpattern: /(\\bfunction\\s+)[\\w-]+(?=(?:\\s*\\(?:\\s*\\))?\\s*\\{)/,\n\t\t\t\tlookbehind: true,\n\t\t\t\talias: 'function'\n\t\t\t},\n\t\t\t{\n\t\t\t\t// b)\n\t\t\t\tpattern: /\\b[\\w-]+(?=\\s*\\(\\s*\\)\\s*\\{)/,\n\t\t\t\talias: 'function'\n\t\t\t}\n\t\t],\n\t\t// Highlight variable names as variables in for and select beginnings.\n\t\t'for-or-select': {\n\t\t\tpattern: /(\\b(?:for|select)\\s+)\\w+(?=\\s+in\\s)/,\n\t\t\talias: 'variable',\n\t\t\tlookbehind: true\n\t\t},\n\t\t// Highlight variable names as variables in the left-hand part\n\t\t// of assignments (“=” and “+=”).\n\t\t'assign-left': {\n\t\t\tpattern: /(^|[\\s;|&]|[<>]\\()\\w+(?:\\.\\w+)*(?=\\+?=)/,\n\t\t\tinside: {\n\t\t\t\t'environment': {\n\t\t\t\t\tpattern: RegExp('(^|[\\\\s;|&]|[<>]\\\\()' + envVars),\n\t\t\t\t\tlookbehind: true,\n\t\t\t\t\talias: 'constant'\n\t\t\t\t}\n\t\t\t},\n\t\t\talias: 'variable',\n\t\t\tlookbehind: true\n\t\t},\n\t\t// Highlight parameter names as variables\n\t\t'parameter': {\n\t\t\tpattern: /(^|\\s)-{1,2}(?:\\w+:[+-]?)?\\w+(?:\\.\\w+)*(?=[=\\s]|$)/,\n\t\t\talias: 'variable',\n\t\t\tlookbehind: true\n\t\t},\n\t\t'string': [\n\t\t\t// Support for Here-documents https://en.wikipedia.org/wiki/Here_document\n\t\t\t{\n\t\t\t\tpattern: /((?:^|[^<])<<-?\\s*)(\\w+)\\s[\\s\\S]*?(?:\\r?\\n|\\r)\\2/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: insideString\n\t\t\t},\n\t\t\t// Here-document with quotes around the tag\n\t\t\t// → No expansion (so no “inside”).\n\t\t\t{\n\t\t\t\tpattern: /((?:^|[^<])<<-?\\s*)([\"'])(\\w+)\\2\\s[\\s\\S]*?(?:\\r?\\n|\\r)\\3/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'bash': commandAfterHeredoc\n\t\t\t\t}\n\t\t\t},\n\t\t\t// “Normal” string\n\t\t\t{\n\t\t\t\t// https://www.gnu.org/software/bash/manual/html_node/Double-Quotes.html\n\t\t\t\tpattern: /(^|[^\\\\](?:\\\\\\\\)*)\"(?:\\\\[\\s\\S]|\\$\\([^)]+\\)|\\$(?!\\()|`[^`]+`|[^\"\\\\`$])*\"/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: insideString\n\t\t\t},\n\t\t\t{\n\t\t\t\t// https://www.gnu.org/software/bash/manual/html_node/Single-Quotes.html\n\t\t\t\tpattern: /(^|[^$\\\\])'[^']*'/,\n\t\t\t\tlookbehind: true,\n\t\t\t\tgreedy: true\n\t\t\t},\n\t\t\t{\n\t\t\t\t// https://www.gnu.org/software/bash/manual/html_node/ANSI_002dC-Quoting.html\n\t\t\t\tpattern: /\\$'(?:[^'\\\\]|\\\\[\\s\\S])*'/,\n\t\t\t\tgreedy: true,\n\t\t\t\tinside: {\n\t\t\t\t\t'entity': insideString.entity\n\t\t\t\t}\n\t\t\t}\n\t\t],\n\t\t'environment': {\n\t\t\tpattern: RegExp('\\\\$?' + envVars),\n\t\t\talias: 'constant'\n\t\t},\n\t\t'variable': insideString.variable,\n\t\t'function': {\n\t\t\tpattern: /(^|[\\s;|&]|[<>]\\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cargo|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|java|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|sysctl|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\\s;|&])/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'keyword': {\n\t\t\tpattern: /(^|[\\s;|&]|[<>]\\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\\s;|&])/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t// https://www.gnu.org/software/bash/manual/html_node/Shell-Builtin-Commands.html\n\t\t'builtin': {\n\t\t\tpattern: /(^|[\\s;|&]|[<>]\\()(?:\\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\\s;|&])/,\n\t\t\tlookbehind: true,\n\t\t\t// Alias added to make those easier to distinguish from strings.\n\t\t\talias: 'class-name'\n\t\t},\n\t\t'boolean': {\n\t\t\tpattern: /(^|[\\s;|&]|[<>]\\()(?:false|true)(?=$|[)\\s;|&])/,\n\t\t\tlookbehind: true\n\t\t},\n\t\t'file-descriptor': {\n\t\t\tpattern: /\\B&\\d\\b/,\n\t\t\talias: 'important'\n\t\t},\n\t\t'operator': {\n\t\t\t// Lots of redirections here, but not just that.\n\t\t\tpattern: /\\d?<>|>\\||\\+=|=[=~]?|!=?|<<[<-]?|[&\\d]?>>|\\d[<>]&?|[<>][&=]?|&[>&]?|\\|[&|]?/,\n\t\t\tinside: {\n\t\t\t\t'file-descriptor': {\n\t\t\t\t\tpattern: /^\\d/,\n\t\t\t\t\talias: 'important'\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\t'punctuation': /\\$?\\(\\(?|\\)\\)?|\\.\\.|[{}[\\];\\\\]/,\n\t\t'number': {\n\t\t\tpattern: /(^|\\s)(?:[1-9]\\d*|0)(?:[.,]\\d+)?\\b/,\n\t\t\tlookbehind: true\n\t\t}\n\t};\n\n\tcommandAfterHeredoc.inside = Prism.languages.bash;\n\n\t/* Patterns in command substitution. */\n\tvar toBeCopied = [\n\t\t'comment',\n\t\t'function-name',\n\t\t'for-or-select',\n\t\t'assign-left',\n\t\t'parameter',\n\t\t'string',\n\t\t'environment',\n\t\t'function',\n\t\t'keyword',\n\t\t'builtin',\n\t\t'boolean',\n\t\t'file-descriptor',\n\t\t'operator',\n\t\t'punctuation',\n\t\t'number'\n\t];\n\tvar inside = insideString.variable[1].inside;\n\tfor (var i = 0; i < toBeCopied.length; i++) {\n\t\tinside[toBeCopied[i]] = Prism.languages.bash[toBeCopied[i]];\n\t}\n\n\tPrism.languages.sh = Prism.languages.bash;\n\tPrism.languages.shell = Prism.languages.bash;\n}(Prism));\n","(function () {\n\n\tif (typeof Prism === 'undefined' || typeof document === 'undefined') {\n\t\treturn;\n\t}\n\n\t/**\n\t * Plugin name which is used as a class name for <pre> which is activating the plugin\n\t *\n\t * @type {string}\n\t */\n\tvar PLUGIN_NAME = 'line-numbers';\n\n\t/**\n\t * Regular expression used for determining line breaks\n\t *\n\t * @type {RegExp}\n\t */\n\tvar NEW_LINE_EXP = /\\n(?!$)/g;\n\n\n\t/**\n\t * Global exports\n\t */\n\tvar config = Prism.plugins.lineNumbers = {\n\t\t/**\n\t\t * Get node for provided line number\n\t\t *\n\t\t * @param {Element} element pre element\n\t\t * @param {number} number line number\n\t\t * @returns {Element|undefined}\n\t\t */\n\t\tgetLine: function (element, number) {\n\t\t\tif (element.tagName !== 'PRE' || !element.classList.contains(PLUGIN_NAME)) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar lineNumberRows = element.querySelector('.line-numbers-rows');\n\t\t\tif (!lineNumberRows) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar lineNumberStart = parseInt(element.getAttribute('data-start'), 10) || 1;\n\t\t\tvar lineNumberEnd = lineNumberStart + (lineNumberRows.children.length - 1);\n\n\t\t\tif (number < lineNumberStart) {\n\t\t\t\tnumber = lineNumberStart;\n\t\t\t}\n\t\t\tif (number > lineNumberEnd) {\n\t\t\t\tnumber = lineNumberEnd;\n\t\t\t}\n\n\t\t\tvar lineIndex = number - lineNumberStart;\n\n\t\t\treturn lineNumberRows.children[lineIndex];\n\t\t},\n\n\t\t/**\n\t\t * Resizes the line numbers of the given element.\n\t\t *\n\t\t * This function will not add line numbers. It will only resize existing ones.\n\t\t *\n\t\t * @param {HTMLElement} element A `<pre>` element with line numbers.\n\t\t * @returns {void}\n\t\t */\n\t\tresize: function (element) {\n\t\t\tresizeElements([element]);\n\t\t},\n\n\t\t/**\n\t\t * Whether the plugin can assume that the units font sizes and margins are not depended on the size of\n\t\t * the current viewport.\n\t\t *\n\t\t * Setting this to `true` will allow the plugin to do certain optimizations for better performance.\n\t\t *\n\t\t * Set this to `false` if you use any of the following CSS units: `vh`, `vw`, `vmin`, `vmax`.\n\t\t *\n\t\t * @type {boolean}\n\t\t */\n\t\tassumeViewportIndependence: true\n\t};\n\n\t/**\n\t * Resizes the given elements.\n\t *\n\t * @param {HTMLElement[]} elements\n\t */\n\tfunction resizeElements(elements) {\n\t\telements = elements.filter(function (e) {\n\t\t\tvar codeStyles = getStyles(e);\n\t\t\tvar whiteSpace = codeStyles['white-space'];\n\t\t\treturn whiteSpace === 'pre-wrap' || whiteSpace === 'pre-line';\n\t\t});\n\n\t\tif (elements.length == 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar infos = elements.map(function (element) {\n\t\t\tvar codeElement = element.querySelector('code');\n\t\t\tvar lineNumbersWrapper = element.querySelector('.line-numbers-rows');\n\t\t\tif (!codeElement || !lineNumbersWrapper) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\t/** @type {HTMLElement} */\n\t\t\tvar lineNumberSizer = element.querySelector('.line-numbers-sizer');\n\t\t\tvar codeLines = codeElement.textContent.split(NEW_LINE_EXP);\n\n\t\t\tif (!lineNumberSizer) {\n\t\t\t\tlineNumberSizer = document.createElement('span');\n\t\t\t\tlineNumberSizer.className = 'line-numbers-sizer';\n\n\t\t\t\tcodeElement.appendChild(lineNumberSizer);\n\t\t\t}\n\n\t\t\tlineNumberSizer.innerHTML = '0';\n\t\t\tlineNumberSizer.style.display = 'block';\n\n\t\t\tvar oneLinerHeight = lineNumberSizer.getBoundingClientRect().height;\n\t\t\tlineNumberSizer.innerHTML = '';\n\n\t\t\treturn {\n\t\t\t\telement: element,\n\t\t\t\tlines: codeLines,\n\t\t\t\tlineHeights: [],\n\t\t\t\toneLinerHeight: oneLinerHeight,\n\t\t\t\tsizer: lineNumberSizer,\n\t\t\t};\n\t\t}).filter(Boolean);\n\n\t\tinfos.forEach(function (info) {\n\t\t\tvar lineNumberSizer = info.sizer;\n\t\t\tvar lines = info.lines;\n\t\t\tvar lineHeights = info.lineHeights;\n\t\t\tvar oneLinerHeight = info.oneLinerHeight;\n\n\t\t\tlineHeights[lines.length - 1] = undefined;\n\t\t\tlines.forEach(function (line, index) {\n\t\t\t\tif (line && line.length > 1) {\n\t\t\t\t\tvar e = lineNumberSizer.appendChild(document.createElement('span'));\n\t\t\t\t\te.style.display = 'block';\n\t\t\t\t\te.textContent = line;\n\t\t\t\t} else {\n\t\t\t\t\tlineHeights[index] = oneLinerHeight;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\n\t\tinfos.forEach(function (info) {\n\t\t\tvar lineNumberSizer = info.sizer;\n\t\t\tvar lineHeights = info.lineHeights;\n\n\t\t\tvar childIndex = 0;\n\t\t\tfor (var i = 0; i < lineHeights.length; i++) {\n\t\t\t\tif (lineHeights[i] === undefined) {\n\t\t\t\t\tlineHeights[i] = lineNumberSizer.children[childIndex++].getBoundingClientRect().height;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tinfos.forEach(function (info) {\n\t\t\tvar lineNumberSizer = info.sizer;\n\t\t\tvar wrapper = info.element.querySelector('.line-numbers-rows');\n\n\t\t\tlineNumberSizer.style.display = 'none';\n\t\t\tlineNumberSizer.innerHTML = '';\n\n\t\t\tinfo.lineHeights.forEach(function (height, lineNumber) {\n\t\t\t\twrapper.children[lineNumber].style.height = height + 'px';\n\t\t\t});\n\t\t});\n\t}\n\n\t/**\n\t * Returns style declarations for the element\n\t *\n\t * @param {Element} element\n\t */\n\tfunction getStyles(element) {\n\t\tif (!element) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn window.getComputedStyle ? getComputedStyle(element) : (element.currentStyle || null);\n\t}\n\n\tvar lastWidth = undefined;\n\twindow.addEventListener('resize', function () {\n\t\tif (config.assumeViewportIndependence && lastWidth === window.innerWidth) {\n\t\t\treturn;\n\t\t}\n\t\tlastWidth = window.innerWidth;\n\n\t\tresizeElements(Array.prototype.slice.call(document.querySelectorAll('pre.' + PLUGIN_NAME)));\n\t});\n\n\tPrism.hooks.add('complete', function (env) {\n\t\tif (!env.code) {\n\t\t\treturn;\n\t\t}\n\n\t\tvar code = /** @type {Element} */ (env.element);\n\t\tvar pre = /** @type {HTMLElement} */ (code.parentNode);\n\n\t\t// works only for <code> wrapped inside <pre> (not inline)\n\t\tif (!pre || !/pre/i.test(pre.nodeName)) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Abort if line numbers already exists\n\t\tif (code.querySelector('.line-numbers-rows')) {\n\t\t\treturn;\n\t\t}\n\n\t\t// only add line numbers if <code> or one of its ancestors has the `line-numbers` class\n\t\tif (!Prism.util.isActive(code, PLUGIN_NAME)) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remove the class 'line-numbers' from the <code>\n\t\tcode.classList.remove(PLUGIN_NAME);\n\t\t// Add the class 'line-numbers' to the <pre>\n\t\tpre.classList.add(PLUGIN_NAME);\n\n\t\tvar match = env.code.match(NEW_LINE_EXP);\n\t\tvar linesNum = match ? match.length + 1 : 1;\n\t\tvar lineNumbersWrapper;\n\n\t\tvar lines = new Array(linesNum + 1).join('<span></span>');\n\n\t\tlineNumbersWrapper = document.createElement('span');\n\t\tlineNumbersWrapper.setAttribute('aria-hidden', 'true');\n\t\tlineNumbersWrapper.className = 'line-numbers-rows';\n\t\tlineNumbersWrapper.innerHTML = lines;\n\n\t\tif (pre.hasAttribute('data-start')) {\n\t\t\tpre.style.counterReset = 'linenumber ' + (parseInt(pre.getAttribute('data-start'), 10) - 1);\n\t\t}\n\n\t\tenv.element.appendChild(lineNumbersWrapper);\n\n\t\tresizeElements([pre]);\n\n\t\tPrism.hooks.run('line-numbers', env);\n\t});\n\n\tPrism.hooks.add('line-numbers', function (env) {\n\t\tenv.plugins = env.plugins || {};\n\t\tenv.plugins.lineNumbers = true;\n\t});\n\n}());\n","/**\n * Swiper 10.1.0\n * Most modern mobile touch slider and framework with hardware accelerated transitions\n * https://swiperjs.com\n *\n * Copyright 2014-2023 Vladimir Kharlampidi\n *\n * Released under the MIT License\n *\n * Released on: August 1, 2023\n */\n\nexport { S as Swiper, S as default } from './shared/swiper-core.mjs';\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\nimport { a as elementParents, l as elementStyle, e as elementChildren, s as setCSSProperty, f as elementOuterSize, m as elementNextAll, o as elementPrevAll, h as getTranslate, p as animateCSSModeScroll, n as nextTick, d as now, q as extend, g as elementIndex, c as createElement, r as deleteProps } from './utils.mjs';\n\nlet support;\nfunction calcSupport() {\n  const window = getWindow();\n  const document = getDocument();\n  return {\n    smoothScroll: document.documentElement && document.documentElement.style && 'scrollBehavior' in document.documentElement.style,\n    touch: !!('ontouchstart' in window || window.DocumentTouch && document instanceof window.DocumentTouch)\n  };\n}\nfunction getSupport() {\n  if (!support) {\n    support = calcSupport();\n  }\n  return support;\n}\n\nlet deviceCached;\nfunction calcDevice(_temp) {\n  let {\n    userAgent\n  } = _temp === void 0 ? {} : _temp;\n  const support = getSupport();\n  const window = getWindow();\n  const platform = window.navigator.platform;\n  const ua = userAgent || window.navigator.userAgent;\n  const device = {\n    ios: false,\n    android: false\n  };\n  const screenWidth = window.screen.width;\n  const screenHeight = window.screen.height;\n  const android = ua.match(/(Android);?[\\s\\/]+([\\d.]+)?/); // eslint-disable-line\n  let ipad = ua.match(/(iPad).*OS\\s([\\d_]+)/);\n  const ipod = ua.match(/(iPod)(.*OS\\s([\\d_]+))?/);\n  const iphone = !ipad && ua.match(/(iPhone\\sOS|iOS)\\s([\\d_]+)/);\n  const windows = platform === 'Win32';\n  let macos = platform === 'MacIntel';\n\n  // iPadOs 13 fix\n  const iPadScreens = ['1024x1366', '1366x1024', '834x1194', '1194x834', '834x1112', '1112x834', '768x1024', '1024x768', '820x1180', '1180x820', '810x1080', '1080x810'];\n  if (!ipad && macos && support.touch && iPadScreens.indexOf(`${screenWidth}x${screenHeight}`) >= 0) {\n    ipad = ua.match(/(Version)\\/([\\d.]+)/);\n    if (!ipad) ipad = [0, 1, '13_0_0'];\n    macos = false;\n  }\n\n  // Android\n  if (android && !windows) {\n    device.os = 'android';\n    device.android = true;\n  }\n  if (ipad || iphone || ipod) {\n    device.os = 'ios';\n    device.ios = true;\n  }\n\n  // Export object\n  return device;\n}\nfunction getDevice(overrides) {\n  if (overrides === void 0) {\n    overrides = {};\n  }\n  if (!deviceCached) {\n    deviceCached = calcDevice(overrides);\n  }\n  return deviceCached;\n}\n\nlet browser;\nfunction calcBrowser() {\n  const window = getWindow();\n  let needPerspectiveFix = false;\n  function isSafari() {\n    const ua = window.navigator.userAgent.toLowerCase();\n    return ua.indexOf('safari') >= 0 && ua.indexOf('chrome') < 0 && ua.indexOf('android') < 0;\n  }\n  if (isSafari()) {\n    const ua = String(window.navigator.userAgent);\n    if (ua.includes('Version/')) {\n      const [major, minor] = ua.split('Version/')[1].split(' ')[0].split('.').map(num => Number(num));\n      needPerspectiveFix = major < 16 || major === 16 && minor < 2;\n    }\n  }\n  return {\n    isSafari: needPerspectiveFix || isSafari(),\n    needPerspectiveFix,\n    isWebView: /(iPhone|iPod|iPad).*AppleWebKit(?!.*Safari)/i.test(window.navigator.userAgent)\n  };\n}\nfunction getBrowser() {\n  if (!browser) {\n    browser = calcBrowser();\n  }\n  return browser;\n}\n\nfunction Resize(_ref) {\n  let {\n    swiper,\n    on,\n    emit\n  } = _ref;\n  const window = getWindow();\n  let observer = null;\n  let animationFrame = null;\n  const resizeHandler = () => {\n    if (!swiper || swiper.destroyed || !swiper.initialized) return;\n    emit('beforeResize');\n    emit('resize');\n  };\n  const createObserver = () => {\n    if (!swiper || swiper.destroyed || !swiper.initialized) return;\n    observer = new ResizeObserver(entries => {\n      animationFrame = window.requestAnimationFrame(() => {\n        const {\n          width,\n          height\n        } = swiper;\n        let newWidth = width;\n        let newHeight = height;\n        entries.forEach(_ref2 => {\n          let {\n            contentBoxSize,\n            contentRect,\n            target\n          } = _ref2;\n          if (target && target !== swiper.el) return;\n          newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize;\n          newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize;\n        });\n        if (newWidth !== width || newHeight !== height) {\n          resizeHandler();\n        }\n      });\n    });\n    observer.observe(swiper.el);\n  };\n  const removeObserver = () => {\n    if (animationFrame) {\n      window.cancelAnimationFrame(animationFrame);\n    }\n    if (observer && observer.unobserve && swiper.el) {\n      observer.unobserve(swiper.el);\n      observer = null;\n    }\n  };\n  const orientationChangeHandler = () => {\n    if (!swiper || swiper.destroyed || !swiper.initialized) return;\n    emit('orientationchange');\n  };\n  on('init', () => {\n    if (swiper.params.resizeObserver && typeof window.ResizeObserver !== 'undefined') {\n      createObserver();\n      return;\n    }\n    window.addEventListener('resize', resizeHandler);\n    window.addEventListener('orientationchange', orientationChangeHandler);\n  });\n  on('destroy', () => {\n    removeObserver();\n    window.removeEventListener('resize', resizeHandler);\n    window.removeEventListener('orientationchange', orientationChangeHandler);\n  });\n}\n\nfunction Observer(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on,\n    emit\n  } = _ref;\n  const observers = [];\n  const window = getWindow();\n  const attach = function (target, options) {\n    if (options === void 0) {\n      options = {};\n    }\n    const ObserverFunc = window.MutationObserver || window.WebkitMutationObserver;\n    const observer = new ObserverFunc(mutations => {\n      // The observerUpdate event should only be triggered\n      // once despite the number of mutations.  Additional\n      // triggers are redundant and are very costly\n      if (swiper.__preventObserver__) return;\n      if (mutations.length === 1) {\n        emit('observerUpdate', mutations[0]);\n        return;\n      }\n      const observerUpdate = function observerUpdate() {\n        emit('observerUpdate', mutations[0]);\n      };\n      if (window.requestAnimationFrame) {\n        window.requestAnimationFrame(observerUpdate);\n      } else {\n        window.setTimeout(observerUpdate, 0);\n      }\n    });\n    observer.observe(target, {\n      attributes: typeof options.attributes === 'undefined' ? true : options.attributes,\n      childList: typeof options.childList === 'undefined' ? true : options.childList,\n      characterData: typeof options.characterData === 'undefined' ? true : options.characterData\n    });\n    observers.push(observer);\n  };\n  const init = () => {\n    if (!swiper.params.observer) return;\n    if (swiper.params.observeParents) {\n      const containerParents = elementParents(swiper.hostEl);\n      for (let i = 0; i < containerParents.length; i += 1) {\n        attach(containerParents[i]);\n      }\n    }\n    // Observe container\n    attach(swiper.hostEl, {\n      childList: swiper.params.observeSlideChildren\n    });\n\n    // Observe wrapper\n    attach(swiper.wrapperEl, {\n      attributes: false\n    });\n  };\n  const destroy = () => {\n    observers.forEach(observer => {\n      observer.disconnect();\n    });\n    observers.splice(0, observers.length);\n  };\n  extendParams({\n    observer: false,\n    observeParents: false,\n    observeSlideChildren: false\n  });\n  on('init', init);\n  on('destroy', destroy);\n}\n\n/* eslint-disable no-underscore-dangle */\n\nvar eventsEmitter = {\n  on(events, handler, priority) {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (typeof handler !== 'function') return self;\n    const method = priority ? 'unshift' : 'push';\n    events.split(' ').forEach(event => {\n      if (!self.eventsListeners[event]) self.eventsListeners[event] = [];\n      self.eventsListeners[event][method](handler);\n    });\n    return self;\n  },\n  once(events, handler, priority) {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (typeof handler !== 'function') return self;\n    function onceHandler() {\n      self.off(events, onceHandler);\n      if (onceHandler.__emitterProxy) {\n        delete onceHandler.__emitterProxy;\n      }\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n      handler.apply(self, args);\n    }\n    onceHandler.__emitterProxy = handler;\n    return self.on(events, onceHandler, priority);\n  },\n  onAny(handler, priority) {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (typeof handler !== 'function') return self;\n    const method = priority ? 'unshift' : 'push';\n    if (self.eventsAnyListeners.indexOf(handler) < 0) {\n      self.eventsAnyListeners[method](handler);\n    }\n    return self;\n  },\n  offAny(handler) {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (!self.eventsAnyListeners) return self;\n    const index = self.eventsAnyListeners.indexOf(handler);\n    if (index >= 0) {\n      self.eventsAnyListeners.splice(index, 1);\n    }\n    return self;\n  },\n  off(events, handler) {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (!self.eventsListeners) return self;\n    events.split(' ').forEach(event => {\n      if (typeof handler === 'undefined') {\n        self.eventsListeners[event] = [];\n      } else if (self.eventsListeners[event]) {\n        self.eventsListeners[event].forEach((eventHandler, index) => {\n          if (eventHandler === handler || eventHandler.__emitterProxy && eventHandler.__emitterProxy === handler) {\n            self.eventsListeners[event].splice(index, 1);\n          }\n        });\n      }\n    });\n    return self;\n  },\n  emit() {\n    const self = this;\n    if (!self.eventsListeners || self.destroyed) return self;\n    if (!self.eventsListeners) return self;\n    let events;\n    let data;\n    let context;\n    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n    if (typeof args[0] === 'string' || Array.isArray(args[0])) {\n      events = args[0];\n      data = args.slice(1, args.length);\n      context = self;\n    } else {\n      events = args[0].events;\n      data = args[0].data;\n      context = args[0].context || self;\n    }\n    data.unshift(context);\n    const eventsArray = Array.isArray(events) ? events : events.split(' ');\n    eventsArray.forEach(event => {\n      if (self.eventsAnyListeners && self.eventsAnyListeners.length) {\n        self.eventsAnyListeners.forEach(eventHandler => {\n          eventHandler.apply(context, [event, ...data]);\n        });\n      }\n      if (self.eventsListeners && self.eventsListeners[event]) {\n        self.eventsListeners[event].forEach(eventHandler => {\n          eventHandler.apply(context, data);\n        });\n      }\n    });\n    return self;\n  }\n};\n\nfunction updateSize() {\n  const swiper = this;\n  let width;\n  let height;\n  const el = swiper.el;\n  if (typeof swiper.params.width !== 'undefined' && swiper.params.width !== null) {\n    width = swiper.params.width;\n  } else {\n    width = el.clientWidth;\n  }\n  if (typeof swiper.params.height !== 'undefined' && swiper.params.height !== null) {\n    height = swiper.params.height;\n  } else {\n    height = el.clientHeight;\n  }\n  if (width === 0 && swiper.isHorizontal() || height === 0 && swiper.isVertical()) {\n    return;\n  }\n\n  // Subtract paddings\n  width = width - parseInt(elementStyle(el, 'padding-left') || 0, 10) - parseInt(elementStyle(el, 'padding-right') || 0, 10);\n  height = height - parseInt(elementStyle(el, 'padding-top') || 0, 10) - parseInt(elementStyle(el, 'padding-bottom') || 0, 10);\n  if (Number.isNaN(width)) width = 0;\n  if (Number.isNaN(height)) height = 0;\n  Object.assign(swiper, {\n    width,\n    height,\n    size: swiper.isHorizontal() ? width : height\n  });\n}\n\nfunction updateSlides() {\n  const swiper = this;\n  function getDirectionLabel(property) {\n    if (swiper.isHorizontal()) {\n      return property;\n    }\n    // prettier-ignore\n    return {\n      'width': 'height',\n      'margin-top': 'margin-left',\n      'margin-bottom ': 'margin-right',\n      'margin-left': 'margin-top',\n      'margin-right': 'margin-bottom',\n      'padding-left': 'padding-top',\n      'padding-right': 'padding-bottom',\n      'marginRight': 'marginBottom'\n    }[property];\n  }\n  function getDirectionPropertyValue(node, label) {\n    return parseFloat(node.getPropertyValue(getDirectionLabel(label)) || 0);\n  }\n  const params = swiper.params;\n  const {\n    wrapperEl,\n    slidesEl,\n    size: swiperSize,\n    rtlTranslate: rtl,\n    wrongRTL\n  } = swiper;\n  const isVirtual = swiper.virtual && params.virtual.enabled;\n  const previousSlidesLength = isVirtual ? swiper.virtual.slides.length : swiper.slides.length;\n  const slides = elementChildren(slidesEl, `.${swiper.params.slideClass}, swiper-slide`);\n  const slidesLength = isVirtual ? swiper.virtual.slides.length : slides.length;\n  let snapGrid = [];\n  const slidesGrid = [];\n  const slidesSizesGrid = [];\n  let offsetBefore = params.slidesOffsetBefore;\n  if (typeof offsetBefore === 'function') {\n    offsetBefore = params.slidesOffsetBefore.call(swiper);\n  }\n  let offsetAfter = params.slidesOffsetAfter;\n  if (typeof offsetAfter === 'function') {\n    offsetAfter = params.slidesOffsetAfter.call(swiper);\n  }\n  const previousSnapGridLength = swiper.snapGrid.length;\n  const previousSlidesGridLength = swiper.slidesGrid.length;\n  let spaceBetween = params.spaceBetween;\n  let slidePosition = -offsetBefore;\n  let prevSlideSize = 0;\n  let index = 0;\n  if (typeof swiperSize === 'undefined') {\n    return;\n  }\n  if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n    spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiperSize;\n  } else if (typeof spaceBetween === 'string') {\n    spaceBetween = parseFloat(spaceBetween);\n  }\n  swiper.virtualSize = -spaceBetween;\n\n  // reset margins\n  slides.forEach(slideEl => {\n    if (rtl) {\n      slideEl.style.marginLeft = '';\n    } else {\n      slideEl.style.marginRight = '';\n    }\n    slideEl.style.marginBottom = '';\n    slideEl.style.marginTop = '';\n  });\n\n  // reset cssMode offsets\n  if (params.centeredSlides && params.cssMode) {\n    setCSSProperty(wrapperEl, '--swiper-centered-offset-before', '');\n    setCSSProperty(wrapperEl, '--swiper-centered-offset-after', '');\n  }\n  const gridEnabled = params.grid && params.grid.rows > 1 && swiper.grid;\n  if (gridEnabled) {\n    swiper.grid.initSlides(slidesLength);\n  }\n\n  // Calc slides\n  let slideSize;\n  const shouldResetSlideSize = params.slidesPerView === 'auto' && params.breakpoints && Object.keys(params.breakpoints).filter(key => {\n    return typeof params.breakpoints[key].slidesPerView !== 'undefined';\n  }).length > 0;\n  for (let i = 0; i < slidesLength; i += 1) {\n    slideSize = 0;\n    let slide;\n    if (slides[i]) slide = slides[i];\n    if (gridEnabled) {\n      swiper.grid.updateSlide(i, slide, slidesLength, getDirectionLabel);\n    }\n    if (slides[i] && elementStyle(slide, 'display') === 'none') continue; // eslint-disable-line\n\n    if (params.slidesPerView === 'auto') {\n      if (shouldResetSlideSize) {\n        slides[i].style[getDirectionLabel('width')] = ``;\n      }\n      const slideStyles = getComputedStyle(slide);\n      const currentTransform = slide.style.transform;\n      const currentWebKitTransform = slide.style.webkitTransform;\n      if (currentTransform) {\n        slide.style.transform = 'none';\n      }\n      if (currentWebKitTransform) {\n        slide.style.webkitTransform = 'none';\n      }\n      if (params.roundLengths) {\n        slideSize = swiper.isHorizontal() ? elementOuterSize(slide, 'width', true) : elementOuterSize(slide, 'height', true);\n      } else {\n        // eslint-disable-next-line\n        const width = getDirectionPropertyValue(slideStyles, 'width');\n        const paddingLeft = getDirectionPropertyValue(slideStyles, 'padding-left');\n        const paddingRight = getDirectionPropertyValue(slideStyles, 'padding-right');\n        const marginLeft = getDirectionPropertyValue(slideStyles, 'margin-left');\n        const marginRight = getDirectionPropertyValue(slideStyles, 'margin-right');\n        const boxSizing = slideStyles.getPropertyValue('box-sizing');\n        if (boxSizing && boxSizing === 'border-box') {\n          slideSize = width + marginLeft + marginRight;\n        } else {\n          const {\n            clientWidth,\n            offsetWidth\n          } = slide;\n          slideSize = width + paddingLeft + paddingRight + marginLeft + marginRight + (offsetWidth - clientWidth);\n        }\n      }\n      if (currentTransform) {\n        slide.style.transform = currentTransform;\n      }\n      if (currentWebKitTransform) {\n        slide.style.webkitTransform = currentWebKitTransform;\n      }\n      if (params.roundLengths) slideSize = Math.floor(slideSize);\n    } else {\n      slideSize = (swiperSize - (params.slidesPerView - 1) * spaceBetween) / params.slidesPerView;\n      if (params.roundLengths) slideSize = Math.floor(slideSize);\n      if (slides[i]) {\n        slides[i].style[getDirectionLabel('width')] = `${slideSize}px`;\n      }\n    }\n    if (slides[i]) {\n      slides[i].swiperSlideSize = slideSize;\n    }\n    slidesSizesGrid.push(slideSize);\n    if (params.centeredSlides) {\n      slidePosition = slidePosition + slideSize / 2 + prevSlideSize / 2 + spaceBetween;\n      if (prevSlideSize === 0 && i !== 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n      if (i === 0) slidePosition = slidePosition - swiperSize / 2 - spaceBetween;\n      if (Math.abs(slidePosition) < 1 / 1000) slidePosition = 0;\n      if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n      if (index % params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n      slidesGrid.push(slidePosition);\n    } else {\n      if (params.roundLengths) slidePosition = Math.floor(slidePosition);\n      if ((index - Math.min(swiper.params.slidesPerGroupSkip, index)) % swiper.params.slidesPerGroup === 0) snapGrid.push(slidePosition);\n      slidesGrid.push(slidePosition);\n      slidePosition = slidePosition + slideSize + spaceBetween;\n    }\n    swiper.virtualSize += slideSize + spaceBetween;\n    prevSlideSize = slideSize;\n    index += 1;\n  }\n  swiper.virtualSize = Math.max(swiper.virtualSize, swiperSize) + offsetAfter;\n  if (rtl && wrongRTL && (params.effect === 'slide' || params.effect === 'coverflow')) {\n    wrapperEl.style.width = `${swiper.virtualSize + spaceBetween}px`;\n  }\n  if (params.setWrapperSize) {\n    wrapperEl.style[getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n  }\n  if (gridEnabled) {\n    swiper.grid.updateWrapperSize(slideSize, snapGrid, getDirectionLabel);\n  }\n\n  // Remove last grid elements depending on width\n  if (!params.centeredSlides) {\n    const newSlidesGrid = [];\n    for (let i = 0; i < snapGrid.length; i += 1) {\n      let slidesGridItem = snapGrid[i];\n      if (params.roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n      if (snapGrid[i] <= swiper.virtualSize - swiperSize) {\n        newSlidesGrid.push(slidesGridItem);\n      }\n    }\n    snapGrid = newSlidesGrid;\n    if (Math.floor(swiper.virtualSize - swiperSize) - Math.floor(snapGrid[snapGrid.length - 1]) > 1) {\n      snapGrid.push(swiper.virtualSize - swiperSize);\n    }\n  }\n  if (isVirtual && params.loop) {\n    const size = slidesSizesGrid[0] + spaceBetween;\n    if (params.slidesPerGroup > 1) {\n      const groups = Math.ceil((swiper.virtual.slidesBefore + swiper.virtual.slidesAfter) / params.slidesPerGroup);\n      const groupSize = size * params.slidesPerGroup;\n      for (let i = 0; i < groups; i += 1) {\n        snapGrid.push(snapGrid[snapGrid.length - 1] + groupSize);\n      }\n    }\n    for (let i = 0; i < swiper.virtual.slidesBefore + swiper.virtual.slidesAfter; i += 1) {\n      if (params.slidesPerGroup === 1) {\n        snapGrid.push(snapGrid[snapGrid.length - 1] + size);\n      }\n      slidesGrid.push(slidesGrid[slidesGrid.length - 1] + size);\n      swiper.virtualSize += size;\n    }\n  }\n  if (snapGrid.length === 0) snapGrid = [0];\n  if (spaceBetween !== 0) {\n    const key = swiper.isHorizontal() && rtl ? 'marginLeft' : getDirectionLabel('marginRight');\n    slides.filter((_, slideIndex) => {\n      if (!params.cssMode || params.loop) return true;\n      if (slideIndex === slides.length - 1) {\n        return false;\n      }\n      return true;\n    }).forEach(slideEl => {\n      slideEl.style[key] = `${spaceBetween}px`;\n    });\n  }\n  if (params.centeredSlides && params.centeredSlidesBounds) {\n    let allSlidesSize = 0;\n    slidesSizesGrid.forEach(slideSizeValue => {\n      allSlidesSize += slideSizeValue + (spaceBetween || 0);\n    });\n    allSlidesSize -= spaceBetween;\n    const maxSnap = allSlidesSize - swiperSize;\n    snapGrid = snapGrid.map(snap => {\n      if (snap <= 0) return -offsetBefore;\n      if (snap > maxSnap) return maxSnap + offsetAfter;\n      return snap;\n    });\n  }\n  if (params.centerInsufficientSlides) {\n    let allSlidesSize = 0;\n    slidesSizesGrid.forEach(slideSizeValue => {\n      allSlidesSize += slideSizeValue + (spaceBetween || 0);\n    });\n    allSlidesSize -= spaceBetween;\n    if (allSlidesSize < swiperSize) {\n      const allSlidesOffset = (swiperSize - allSlidesSize) / 2;\n      snapGrid.forEach((snap, snapIndex) => {\n        snapGrid[snapIndex] = snap - allSlidesOffset;\n      });\n      slidesGrid.forEach((snap, snapIndex) => {\n        slidesGrid[snapIndex] = snap + allSlidesOffset;\n      });\n    }\n  }\n  Object.assign(swiper, {\n    slides,\n    snapGrid,\n    slidesGrid,\n    slidesSizesGrid\n  });\n  if (params.centeredSlides && params.cssMode && !params.centeredSlidesBounds) {\n    setCSSProperty(wrapperEl, '--swiper-centered-offset-before', `${-snapGrid[0]}px`);\n    setCSSProperty(wrapperEl, '--swiper-centered-offset-after', `${swiper.size / 2 - slidesSizesGrid[slidesSizesGrid.length - 1] / 2}px`);\n    const addToSnapGrid = -swiper.snapGrid[0];\n    const addToSlidesGrid = -swiper.slidesGrid[0];\n    swiper.snapGrid = swiper.snapGrid.map(v => v + addToSnapGrid);\n    swiper.slidesGrid = swiper.slidesGrid.map(v => v + addToSlidesGrid);\n  }\n  if (slidesLength !== previousSlidesLength) {\n    swiper.emit('slidesLengthChange');\n  }\n  if (snapGrid.length !== previousSnapGridLength) {\n    if (swiper.params.watchOverflow) swiper.checkOverflow();\n    swiper.emit('snapGridLengthChange');\n  }\n  if (slidesGrid.length !== previousSlidesGridLength) {\n    swiper.emit('slidesGridLengthChange');\n  }\n  if (params.watchSlidesProgress) {\n    swiper.updateSlidesOffset();\n  }\n  if (!isVirtual && !params.cssMode && (params.effect === 'slide' || params.effect === 'fade')) {\n    const backFaceHiddenClass = `${params.containerModifierClass}backface-hidden`;\n    const hasClassBackfaceClassAdded = swiper.el.classList.contains(backFaceHiddenClass);\n    if (slidesLength <= params.maxBackfaceHiddenSlides) {\n      if (!hasClassBackfaceClassAdded) swiper.el.classList.add(backFaceHiddenClass);\n    } else if (hasClassBackfaceClassAdded) {\n      swiper.el.classList.remove(backFaceHiddenClass);\n    }\n  }\n}\n\nfunction updateAutoHeight(speed) {\n  const swiper = this;\n  const activeSlides = [];\n  const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n  let newHeight = 0;\n  let i;\n  if (typeof speed === 'number') {\n    swiper.setTransition(speed);\n  } else if (speed === true) {\n    swiper.setTransition(swiper.params.speed);\n  }\n  const getSlideByIndex = index => {\n    if (isVirtual) {\n      return swiper.slides[swiper.getSlideIndexByData(index)];\n    }\n    return swiper.slides[index];\n  };\n  // Find slides currently in view\n  if (swiper.params.slidesPerView !== 'auto' && swiper.params.slidesPerView > 1) {\n    if (swiper.params.centeredSlides) {\n      (swiper.visibleSlides || []).forEach(slide => {\n        activeSlides.push(slide);\n      });\n    } else {\n      for (i = 0; i < Math.ceil(swiper.params.slidesPerView); i += 1) {\n        const index = swiper.activeIndex + i;\n        if (index > swiper.slides.length && !isVirtual) break;\n        activeSlides.push(getSlideByIndex(index));\n      }\n    }\n  } else {\n    activeSlides.push(getSlideByIndex(swiper.activeIndex));\n  }\n\n  // Find new height from highest slide in view\n  for (i = 0; i < activeSlides.length; i += 1) {\n    if (typeof activeSlides[i] !== 'undefined') {\n      const height = activeSlides[i].offsetHeight;\n      newHeight = height > newHeight ? height : newHeight;\n    }\n  }\n\n  // Update Height\n  if (newHeight || newHeight === 0) swiper.wrapperEl.style.height = `${newHeight}px`;\n}\n\nfunction updateSlidesOffset() {\n  const swiper = this;\n  const slides = swiper.slides;\n  // eslint-disable-next-line\n  const minusOffset = swiper.isElement ? swiper.isHorizontal() ? swiper.wrapperEl.offsetLeft : swiper.wrapperEl.offsetTop : 0;\n  for (let i = 0; i < slides.length; i += 1) {\n    slides[i].swiperSlideOffset = (swiper.isHorizontal() ? slides[i].offsetLeft : slides[i].offsetTop) - minusOffset - swiper.cssOverflowAdjustment();\n  }\n}\n\nfunction updateSlidesProgress(translate) {\n  if (translate === void 0) {\n    translate = this && this.translate || 0;\n  }\n  const swiper = this;\n  const params = swiper.params;\n  const {\n    slides,\n    rtlTranslate: rtl,\n    snapGrid\n  } = swiper;\n  if (slides.length === 0) return;\n  if (typeof slides[0].swiperSlideOffset === 'undefined') swiper.updateSlidesOffset();\n  let offsetCenter = -translate;\n  if (rtl) offsetCenter = translate;\n\n  // Visible Slides\n  slides.forEach(slideEl => {\n    slideEl.classList.remove(params.slideVisibleClass);\n  });\n  swiper.visibleSlidesIndexes = [];\n  swiper.visibleSlides = [];\n  let spaceBetween = params.spaceBetween;\n  if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n    spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n  } else if (typeof spaceBetween === 'string') {\n    spaceBetween = parseFloat(spaceBetween);\n  }\n  for (let i = 0; i < slides.length; i += 1) {\n    const slide = slides[i];\n    let slideOffset = slide.swiperSlideOffset;\n    if (params.cssMode && params.centeredSlides) {\n      slideOffset -= slides[0].swiperSlideOffset;\n    }\n    const slideProgress = (offsetCenter + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n    const originalSlideProgress = (offsetCenter - snapGrid[0] + (params.centeredSlides ? swiper.minTranslate() : 0) - slideOffset) / (slide.swiperSlideSize + spaceBetween);\n    const slideBefore = -(offsetCenter - slideOffset);\n    const slideAfter = slideBefore + swiper.slidesSizesGrid[i];\n    const isVisible = slideBefore >= 0 && slideBefore < swiper.size - 1 || slideAfter > 1 && slideAfter <= swiper.size || slideBefore <= 0 && slideAfter >= swiper.size;\n    if (isVisible) {\n      swiper.visibleSlides.push(slide);\n      swiper.visibleSlidesIndexes.push(i);\n      slides[i].classList.add(params.slideVisibleClass);\n    }\n    slide.progress = rtl ? -slideProgress : slideProgress;\n    slide.originalProgress = rtl ? -originalSlideProgress : originalSlideProgress;\n  }\n}\n\nfunction updateProgress(translate) {\n  const swiper = this;\n  if (typeof translate === 'undefined') {\n    const multiplier = swiper.rtlTranslate ? -1 : 1;\n    // eslint-disable-next-line\n    translate = swiper && swiper.translate && swiper.translate * multiplier || 0;\n  }\n  const params = swiper.params;\n  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n  let {\n    progress,\n    isBeginning,\n    isEnd,\n    progressLoop\n  } = swiper;\n  const wasBeginning = isBeginning;\n  const wasEnd = isEnd;\n  if (translatesDiff === 0) {\n    progress = 0;\n    isBeginning = true;\n    isEnd = true;\n  } else {\n    progress = (translate - swiper.minTranslate()) / translatesDiff;\n    const isBeginningRounded = Math.abs(translate - swiper.minTranslate()) < 1;\n    const isEndRounded = Math.abs(translate - swiper.maxTranslate()) < 1;\n    isBeginning = isBeginningRounded || progress <= 0;\n    isEnd = isEndRounded || progress >= 1;\n    if (isBeginningRounded) progress = 0;\n    if (isEndRounded) progress = 1;\n  }\n  if (params.loop) {\n    const firstSlideIndex = swiper.getSlideIndexByData(0);\n    const lastSlideIndex = swiper.getSlideIndexByData(swiper.slides.length - 1);\n    const firstSlideTranslate = swiper.slidesGrid[firstSlideIndex];\n    const lastSlideTranslate = swiper.slidesGrid[lastSlideIndex];\n    const translateMax = swiper.slidesGrid[swiper.slidesGrid.length - 1];\n    const translateAbs = Math.abs(translate);\n    if (translateAbs >= firstSlideTranslate) {\n      progressLoop = (translateAbs - firstSlideTranslate) / translateMax;\n    } else {\n      progressLoop = (translateAbs + translateMax - lastSlideTranslate) / translateMax;\n    }\n    if (progressLoop > 1) progressLoop -= 1;\n  }\n  Object.assign(swiper, {\n    progress,\n    progressLoop,\n    isBeginning,\n    isEnd\n  });\n  if (params.watchSlidesProgress || params.centeredSlides && params.autoHeight) swiper.updateSlidesProgress(translate);\n  if (isBeginning && !wasBeginning) {\n    swiper.emit('reachBeginning toEdge');\n  }\n  if (isEnd && !wasEnd) {\n    swiper.emit('reachEnd toEdge');\n  }\n  if (wasBeginning && !isBeginning || wasEnd && !isEnd) {\n    swiper.emit('fromEdge');\n  }\n  swiper.emit('progress', progress);\n}\n\nfunction updateSlidesClasses() {\n  const swiper = this;\n  const {\n    slides,\n    params,\n    slidesEl,\n    activeIndex\n  } = swiper;\n  const isVirtual = swiper.virtual && params.virtual.enabled;\n  const getFilteredSlide = selector => {\n    return elementChildren(slidesEl, `.${params.slideClass}${selector}, swiper-slide${selector}`)[0];\n  };\n  slides.forEach(slideEl => {\n    slideEl.classList.remove(params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n  });\n  let activeSlide;\n  if (isVirtual) {\n    if (params.loop) {\n      let slideIndex = activeIndex - swiper.virtual.slidesBefore;\n      if (slideIndex < 0) slideIndex = swiper.virtual.slides.length + slideIndex;\n      if (slideIndex >= swiper.virtual.slides.length) slideIndex -= swiper.virtual.slides.length;\n      activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${slideIndex}\"]`);\n    } else {\n      activeSlide = getFilteredSlide(`[data-swiper-slide-index=\"${activeIndex}\"]`);\n    }\n  } else {\n    activeSlide = slides[activeIndex];\n  }\n  if (activeSlide) {\n    // Active classes\n    activeSlide.classList.add(params.slideActiveClass);\n\n    // Next Slide\n    let nextSlide = elementNextAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n    if (params.loop && !nextSlide) {\n      nextSlide = slides[0];\n    }\n    if (nextSlide) {\n      nextSlide.classList.add(params.slideNextClass);\n    }\n    // Prev Slide\n    let prevSlide = elementPrevAll(activeSlide, `.${params.slideClass}, swiper-slide`)[0];\n    if (params.loop && !prevSlide === 0) {\n      prevSlide = slides[slides.length - 1];\n    }\n    if (prevSlide) {\n      prevSlide.classList.add(params.slidePrevClass);\n    }\n  }\n  swiper.emitSlidesClasses();\n}\n\nconst processLazyPreloader = (swiper, imageEl) => {\n  if (!swiper || swiper.destroyed || !swiper.params) return;\n  const slideSelector = () => swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n  const slideEl = imageEl.closest(slideSelector());\n  if (slideEl) {\n    const lazyEl = slideEl.querySelector(`.${swiper.params.lazyPreloaderClass}`);\n    if (lazyEl) lazyEl.remove();\n  }\n};\nconst unlazy = (swiper, index) => {\n  if (!swiper.slides[index]) return;\n  const imageEl = swiper.slides[index].querySelector('[loading=\"lazy\"]');\n  if (imageEl) imageEl.removeAttribute('loading');\n};\nconst preload = swiper => {\n  if (!swiper || swiper.destroyed || !swiper.params) return;\n  let amount = swiper.params.lazyPreloadPrevNext;\n  const len = swiper.slides.length;\n  if (!len || !amount || amount < 0) return;\n  amount = Math.min(amount, len);\n  const slidesPerView = swiper.params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(swiper.params.slidesPerView);\n  const activeIndex = swiper.activeIndex;\n  if (swiper.params.grid && swiper.params.grid.rows > 1) {\n    const activeColumn = activeIndex;\n    const preloadColumns = [activeColumn - amount];\n    preloadColumns.push(...Array.from({\n      length: amount\n    }).map((_, i) => {\n      return activeColumn + slidesPerView + i;\n    }));\n    swiper.slides.forEach((slideEl, i) => {\n      if (preloadColumns.includes(slideEl.column)) unlazy(swiper, i);\n    });\n    return;\n  }\n  const slideIndexLastInView = activeIndex + slidesPerView - 1;\n  if (swiper.params.rewind || swiper.params.loop) {\n    for (let i = activeIndex - amount; i <= slideIndexLastInView + amount; i += 1) {\n      const realIndex = (i % len + len) % len;\n      if (realIndex < activeIndex || realIndex > slideIndexLastInView) unlazy(swiper, realIndex);\n    }\n  } else {\n    for (let i = Math.max(activeIndex - amount, 0); i <= Math.min(slideIndexLastInView + amount, len - 1); i += 1) {\n      if (i !== activeIndex && (i > slideIndexLastInView || i < activeIndex)) {\n        unlazy(swiper, i);\n      }\n    }\n  }\n};\n\nfunction getActiveIndexByTranslate(swiper) {\n  const {\n    slidesGrid,\n    params\n  } = swiper;\n  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n  let activeIndex;\n  for (let i = 0; i < slidesGrid.length; i += 1) {\n    if (typeof slidesGrid[i + 1] !== 'undefined') {\n      if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1] - (slidesGrid[i + 1] - slidesGrid[i]) / 2) {\n        activeIndex = i;\n      } else if (translate >= slidesGrid[i] && translate < slidesGrid[i + 1]) {\n        activeIndex = i + 1;\n      }\n    } else if (translate >= slidesGrid[i]) {\n      activeIndex = i;\n    }\n  }\n  // Normalize slideIndex\n  if (params.normalizeSlideIndex) {\n    if (activeIndex < 0 || typeof activeIndex === 'undefined') activeIndex = 0;\n  }\n  return activeIndex;\n}\nfunction updateActiveIndex(newActiveIndex) {\n  const swiper = this;\n  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n  const {\n    snapGrid,\n    params,\n    activeIndex: previousIndex,\n    realIndex: previousRealIndex,\n    snapIndex: previousSnapIndex\n  } = swiper;\n  let activeIndex = newActiveIndex;\n  let snapIndex;\n  const getVirtualRealIndex = aIndex => {\n    let realIndex = aIndex - swiper.virtual.slidesBefore;\n    if (realIndex < 0) {\n      realIndex = swiper.virtual.slides.length + realIndex;\n    }\n    if (realIndex >= swiper.virtual.slides.length) {\n      realIndex -= swiper.virtual.slides.length;\n    }\n    return realIndex;\n  };\n  if (typeof activeIndex === 'undefined') {\n    activeIndex = getActiveIndexByTranslate(swiper);\n  }\n  if (snapGrid.indexOf(translate) >= 0) {\n    snapIndex = snapGrid.indexOf(translate);\n  } else {\n    const skip = Math.min(params.slidesPerGroupSkip, activeIndex);\n    snapIndex = skip + Math.floor((activeIndex - skip) / params.slidesPerGroup);\n  }\n  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n  if (activeIndex === previousIndex) {\n    if (snapIndex !== previousSnapIndex) {\n      swiper.snapIndex = snapIndex;\n      swiper.emit('snapIndexChange');\n    }\n    if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n      swiper.realIndex = getVirtualRealIndex(activeIndex);\n    }\n    return;\n  }\n  // Get real index\n  let realIndex;\n  if (swiper.virtual && params.virtual.enabled && params.loop) {\n    realIndex = getVirtualRealIndex(activeIndex);\n  } else if (swiper.slides[activeIndex]) {\n    realIndex = parseInt(swiper.slides[activeIndex].getAttribute('data-swiper-slide-index') || activeIndex, 10);\n  } else {\n    realIndex = activeIndex;\n  }\n  Object.assign(swiper, {\n    previousSnapIndex,\n    snapIndex,\n    previousRealIndex,\n    realIndex,\n    previousIndex,\n    activeIndex\n  });\n  if (swiper.initialized) {\n    preload(swiper);\n  }\n  swiper.emit('activeIndexChange');\n  swiper.emit('snapIndexChange');\n  if (previousRealIndex !== realIndex) {\n    swiper.emit('realIndexChange');\n  }\n  if (swiper.initialized || swiper.params.runCallbacksOnInit) {\n    swiper.emit('slideChange');\n  }\n}\n\nfunction updateClickedSlide(e) {\n  const swiper = this;\n  const params = swiper.params;\n  const slide = e.closest(`.${params.slideClass}, swiper-slide`);\n  let slideFound = false;\n  let slideIndex;\n  if (slide) {\n    for (let i = 0; i < swiper.slides.length; i += 1) {\n      if (swiper.slides[i] === slide) {\n        slideFound = true;\n        slideIndex = i;\n        break;\n      }\n    }\n  }\n  if (slide && slideFound) {\n    swiper.clickedSlide = slide;\n    if (swiper.virtual && swiper.params.virtual.enabled) {\n      swiper.clickedIndex = parseInt(slide.getAttribute('data-swiper-slide-index'), 10);\n    } else {\n      swiper.clickedIndex = slideIndex;\n    }\n  } else {\n    swiper.clickedSlide = undefined;\n    swiper.clickedIndex = undefined;\n    return;\n  }\n  if (params.slideToClickedSlide && swiper.clickedIndex !== undefined && swiper.clickedIndex !== swiper.activeIndex) {\n    swiper.slideToClickedSlide();\n  }\n}\n\nvar update = {\n  updateSize,\n  updateSlides,\n  updateAutoHeight,\n  updateSlidesOffset,\n  updateSlidesProgress,\n  updateProgress,\n  updateSlidesClasses,\n  updateActiveIndex,\n  updateClickedSlide\n};\n\nfunction getSwiperTranslate(axis) {\n  if (axis === void 0) {\n    axis = this.isHorizontal() ? 'x' : 'y';\n  }\n  const swiper = this;\n  const {\n    params,\n    rtlTranslate: rtl,\n    translate,\n    wrapperEl\n  } = swiper;\n  if (params.virtualTranslate) {\n    return rtl ? -translate : translate;\n  }\n  if (params.cssMode) {\n    return translate;\n  }\n  let currentTranslate = getTranslate(wrapperEl, axis);\n  currentTranslate += swiper.cssOverflowAdjustment();\n  if (rtl) currentTranslate = -currentTranslate;\n  return currentTranslate || 0;\n}\n\nfunction setTranslate(translate, byController) {\n  const swiper = this;\n  const {\n    rtlTranslate: rtl,\n    params,\n    wrapperEl,\n    progress\n  } = swiper;\n  let x = 0;\n  let y = 0;\n  const z = 0;\n  if (swiper.isHorizontal()) {\n    x = rtl ? -translate : translate;\n  } else {\n    y = translate;\n  }\n  if (params.roundLengths) {\n    x = Math.floor(x);\n    y = Math.floor(y);\n  }\n  swiper.previousTranslate = swiper.translate;\n  swiper.translate = swiper.isHorizontal() ? x : y;\n  if (params.cssMode) {\n    wrapperEl[swiper.isHorizontal() ? 'scrollLeft' : 'scrollTop'] = swiper.isHorizontal() ? -x : -y;\n  } else if (!params.virtualTranslate) {\n    if (swiper.isHorizontal()) {\n      x -= swiper.cssOverflowAdjustment();\n    } else {\n      y -= swiper.cssOverflowAdjustment();\n    }\n    wrapperEl.style.transform = `translate3d(${x}px, ${y}px, ${z}px)`;\n  }\n\n  // Check if we need to update progress\n  let newProgress;\n  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n  if (translatesDiff === 0) {\n    newProgress = 0;\n  } else {\n    newProgress = (translate - swiper.minTranslate()) / translatesDiff;\n  }\n  if (newProgress !== progress) {\n    swiper.updateProgress(translate);\n  }\n  swiper.emit('setTranslate', swiper.translate, byController);\n}\n\nfunction minTranslate() {\n  return -this.snapGrid[0];\n}\n\nfunction maxTranslate() {\n  return -this.snapGrid[this.snapGrid.length - 1];\n}\n\nfunction translateTo(translate, speed, runCallbacks, translateBounds, internal) {\n  if (translate === void 0) {\n    translate = 0;\n  }\n  if (speed === void 0) {\n    speed = this.params.speed;\n  }\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  if (translateBounds === void 0) {\n    translateBounds = true;\n  }\n  const swiper = this;\n  const {\n    params,\n    wrapperEl\n  } = swiper;\n  if (swiper.animating && params.preventInteractionOnTransition) {\n    return false;\n  }\n  const minTranslate = swiper.minTranslate();\n  const maxTranslate = swiper.maxTranslate();\n  let newTranslate;\n  if (translateBounds && translate > minTranslate) newTranslate = minTranslate;else if (translateBounds && translate < maxTranslate) newTranslate = maxTranslate;else newTranslate = translate;\n\n  // Update progress\n  swiper.updateProgress(newTranslate);\n  if (params.cssMode) {\n    const isH = swiper.isHorizontal();\n    if (speed === 0) {\n      wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = -newTranslate;\n    } else {\n      if (!swiper.support.smoothScroll) {\n        animateCSSModeScroll({\n          swiper,\n          targetPosition: -newTranslate,\n          side: isH ? 'left' : 'top'\n        });\n        return true;\n      }\n      wrapperEl.scrollTo({\n        [isH ? 'left' : 'top']: -newTranslate,\n        behavior: 'smooth'\n      });\n    }\n    return true;\n  }\n  if (speed === 0) {\n    swiper.setTransition(0);\n    swiper.setTranslate(newTranslate);\n    if (runCallbacks) {\n      swiper.emit('beforeTransitionStart', speed, internal);\n      swiper.emit('transitionEnd');\n    }\n  } else {\n    swiper.setTransition(speed);\n    swiper.setTranslate(newTranslate);\n    if (runCallbacks) {\n      swiper.emit('beforeTransitionStart', speed, internal);\n      swiper.emit('transitionStart');\n    }\n    if (!swiper.animating) {\n      swiper.animating = true;\n      if (!swiper.onTranslateToWrapperTransitionEnd) {\n        swiper.onTranslateToWrapperTransitionEnd = function transitionEnd(e) {\n          if (!swiper || swiper.destroyed) return;\n          if (e.target !== this) return;\n          swiper.wrapperEl.removeEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n          swiper.onTranslateToWrapperTransitionEnd = null;\n          delete swiper.onTranslateToWrapperTransitionEnd;\n          if (runCallbacks) {\n            swiper.emit('transitionEnd');\n          }\n        };\n      }\n      swiper.wrapperEl.addEventListener('transitionend', swiper.onTranslateToWrapperTransitionEnd);\n    }\n  }\n  return true;\n}\n\nvar translate = {\n  getTranslate: getSwiperTranslate,\n  setTranslate,\n  minTranslate,\n  maxTranslate,\n  translateTo\n};\n\nfunction setTransition(duration, byController) {\n  const swiper = this;\n  if (!swiper.params.cssMode) {\n    swiper.wrapperEl.style.transitionDuration = `${duration}ms`;\n  }\n  swiper.emit('setTransition', duration, byController);\n}\n\nfunction transitionEmit(_ref) {\n  let {\n    swiper,\n    runCallbacks,\n    direction,\n    step\n  } = _ref;\n  const {\n    activeIndex,\n    previousIndex\n  } = swiper;\n  let dir = direction;\n  if (!dir) {\n    if (activeIndex > previousIndex) dir = 'next';else if (activeIndex < previousIndex) dir = 'prev';else dir = 'reset';\n  }\n  swiper.emit(`transition${step}`);\n  if (runCallbacks && activeIndex !== previousIndex) {\n    if (dir === 'reset') {\n      swiper.emit(`slideResetTransition${step}`);\n      return;\n    }\n    swiper.emit(`slideChangeTransition${step}`);\n    if (dir === 'next') {\n      swiper.emit(`slideNextTransition${step}`);\n    } else {\n      swiper.emit(`slidePrevTransition${step}`);\n    }\n  }\n}\n\nfunction transitionStart(runCallbacks, direction) {\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  const swiper = this;\n  const {\n    params\n  } = swiper;\n  if (params.cssMode) return;\n  if (params.autoHeight) {\n    swiper.updateAutoHeight();\n  }\n  transitionEmit({\n    swiper,\n    runCallbacks,\n    direction,\n    step: 'Start'\n  });\n}\n\nfunction transitionEnd(runCallbacks, direction) {\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  const swiper = this;\n  const {\n    params\n  } = swiper;\n  swiper.animating = false;\n  if (params.cssMode) return;\n  swiper.setTransition(0);\n  transitionEmit({\n    swiper,\n    runCallbacks,\n    direction,\n    step: 'End'\n  });\n}\n\nvar transition = {\n  setTransition,\n  transitionStart,\n  transitionEnd\n};\n\nfunction slideTo(index, speed, runCallbacks, internal, initial) {\n  if (index === void 0) {\n    index = 0;\n  }\n  if (speed === void 0) {\n    speed = this.params.speed;\n  }\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  if (typeof index === 'string') {\n    index = parseInt(index, 10);\n  }\n  const swiper = this;\n  let slideIndex = index;\n  if (slideIndex < 0) slideIndex = 0;\n  const {\n    params,\n    snapGrid,\n    slidesGrid,\n    previousIndex,\n    activeIndex,\n    rtlTranslate: rtl,\n    wrapperEl,\n    enabled\n  } = swiper;\n  if (swiper.animating && params.preventInteractionOnTransition || !enabled && !internal && !initial) {\n    return false;\n  }\n  const skip = Math.min(swiper.params.slidesPerGroupSkip, slideIndex);\n  let snapIndex = skip + Math.floor((slideIndex - skip) / swiper.params.slidesPerGroup);\n  if (snapIndex >= snapGrid.length) snapIndex = snapGrid.length - 1;\n  const translate = -snapGrid[snapIndex];\n  // Normalize slideIndex\n  if (params.normalizeSlideIndex) {\n    for (let i = 0; i < slidesGrid.length; i += 1) {\n      const normalizedTranslate = -Math.floor(translate * 100);\n      const normalizedGrid = Math.floor(slidesGrid[i] * 100);\n      const normalizedGridNext = Math.floor(slidesGrid[i + 1] * 100);\n      if (typeof slidesGrid[i + 1] !== 'undefined') {\n        if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext - (normalizedGridNext - normalizedGrid) / 2) {\n          slideIndex = i;\n        } else if (normalizedTranslate >= normalizedGrid && normalizedTranslate < normalizedGridNext) {\n          slideIndex = i + 1;\n        }\n      } else if (normalizedTranslate >= normalizedGrid) {\n        slideIndex = i;\n      }\n    }\n  }\n  // Directions locks\n  if (swiper.initialized && slideIndex !== activeIndex) {\n    if (!swiper.allowSlideNext && (rtl ? translate > swiper.translate && translate > swiper.minTranslate() : translate < swiper.translate && translate < swiper.minTranslate())) {\n      return false;\n    }\n    if (!swiper.allowSlidePrev && translate > swiper.translate && translate > swiper.maxTranslate()) {\n      if ((activeIndex || 0) !== slideIndex) {\n        return false;\n      }\n    }\n  }\n  if (slideIndex !== (previousIndex || 0) && runCallbacks) {\n    swiper.emit('beforeSlideChangeStart');\n  }\n\n  // Update progress\n  swiper.updateProgress(translate);\n  let direction;\n  if (slideIndex > activeIndex) direction = 'next';else if (slideIndex < activeIndex) direction = 'prev';else direction = 'reset';\n\n  // Update Index\n  if (rtl && -translate === swiper.translate || !rtl && translate === swiper.translate) {\n    swiper.updateActiveIndex(slideIndex);\n    // Update Height\n    if (params.autoHeight) {\n      swiper.updateAutoHeight();\n    }\n    swiper.updateSlidesClasses();\n    if (params.effect !== 'slide') {\n      swiper.setTranslate(translate);\n    }\n    if (direction !== 'reset') {\n      swiper.transitionStart(runCallbacks, direction);\n      swiper.transitionEnd(runCallbacks, direction);\n    }\n    return false;\n  }\n  if (params.cssMode) {\n    const isH = swiper.isHorizontal();\n    const t = rtl ? translate : -translate;\n    if (speed === 0) {\n      const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n      if (isVirtual) {\n        swiper.wrapperEl.style.scrollSnapType = 'none';\n        swiper._immediateVirtual = true;\n      }\n      if (isVirtual && !swiper._cssModeVirtualInitialSet && swiper.params.initialSlide > 0) {\n        swiper._cssModeVirtualInitialSet = true;\n        requestAnimationFrame(() => {\n          wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n        });\n      } else {\n        wrapperEl[isH ? 'scrollLeft' : 'scrollTop'] = t;\n      }\n      if (isVirtual) {\n        requestAnimationFrame(() => {\n          swiper.wrapperEl.style.scrollSnapType = '';\n          swiper._immediateVirtual = false;\n        });\n      }\n    } else {\n      if (!swiper.support.smoothScroll) {\n        animateCSSModeScroll({\n          swiper,\n          targetPosition: t,\n          side: isH ? 'left' : 'top'\n        });\n        return true;\n      }\n      wrapperEl.scrollTo({\n        [isH ? 'left' : 'top']: t,\n        behavior: 'smooth'\n      });\n    }\n    return true;\n  }\n  swiper.setTransition(speed);\n  swiper.setTranslate(translate);\n  swiper.updateActiveIndex(slideIndex);\n  swiper.updateSlidesClasses();\n  swiper.emit('beforeTransitionStart', speed, internal);\n  swiper.transitionStart(runCallbacks, direction);\n  if (speed === 0) {\n    swiper.transitionEnd(runCallbacks, direction);\n  } else if (!swiper.animating) {\n    swiper.animating = true;\n    if (!swiper.onSlideToWrapperTransitionEnd) {\n      swiper.onSlideToWrapperTransitionEnd = function transitionEnd(e) {\n        if (!swiper || swiper.destroyed) return;\n        if (e.target !== this) return;\n        swiper.wrapperEl.removeEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n        swiper.onSlideToWrapperTransitionEnd = null;\n        delete swiper.onSlideToWrapperTransitionEnd;\n        swiper.transitionEnd(runCallbacks, direction);\n      };\n    }\n    swiper.wrapperEl.addEventListener('transitionend', swiper.onSlideToWrapperTransitionEnd);\n  }\n  return true;\n}\n\nfunction slideToLoop(index, speed, runCallbacks, internal) {\n  if (index === void 0) {\n    index = 0;\n  }\n  if (speed === void 0) {\n    speed = this.params.speed;\n  }\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  if (typeof index === 'string') {\n    const indexAsNumber = parseInt(index, 10);\n    index = indexAsNumber;\n  }\n  const swiper = this;\n  let newIndex = index;\n  if (swiper.params.loop) {\n    if (swiper.virtual && swiper.params.virtual.enabled) {\n      // eslint-disable-next-line\n      newIndex = newIndex + swiper.virtual.slidesBefore;\n    } else {\n      newIndex = swiper.getSlideIndexByData(newIndex);\n    }\n  }\n  return swiper.slideTo(newIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideNext(speed, runCallbacks, internal) {\n  if (speed === void 0) {\n    speed = this.params.speed;\n  }\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  const swiper = this;\n  const {\n    enabled,\n    params,\n    animating\n  } = swiper;\n  if (!enabled) return swiper;\n  let perGroup = params.slidesPerGroup;\n  if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n    perGroup = Math.max(swiper.slidesPerViewDynamic('current', true), 1);\n  }\n  const increment = swiper.activeIndex < params.slidesPerGroupSkip ? 1 : perGroup;\n  const isVirtual = swiper.virtual && params.virtual.enabled;\n  if (params.loop) {\n    if (animating && !isVirtual && params.loopPreventsSliding) return false;\n    swiper.loopFix({\n      direction: 'next'\n    });\n    // eslint-disable-next-line\n    swiper._clientLeft = swiper.wrapperEl.clientLeft;\n  }\n  if (params.rewind && swiper.isEnd) {\n    return swiper.slideTo(0, speed, runCallbacks, internal);\n  }\n  return swiper.slideTo(swiper.activeIndex + increment, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slidePrev(speed, runCallbacks, internal) {\n  if (speed === void 0) {\n    speed = this.params.speed;\n  }\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  const swiper = this;\n  const {\n    params,\n    snapGrid,\n    slidesGrid,\n    rtlTranslate,\n    enabled,\n    animating\n  } = swiper;\n  if (!enabled) return swiper;\n  const isVirtual = swiper.virtual && params.virtual.enabled;\n  if (params.loop) {\n    if (animating && !isVirtual && params.loopPreventsSliding) return false;\n    swiper.loopFix({\n      direction: 'prev'\n    });\n    // eslint-disable-next-line\n    swiper._clientLeft = swiper.wrapperEl.clientLeft;\n  }\n  const translate = rtlTranslate ? swiper.translate : -swiper.translate;\n  function normalize(val) {\n    if (val < 0) return -Math.floor(Math.abs(val));\n    return Math.floor(val);\n  }\n  const normalizedTranslate = normalize(translate);\n  const normalizedSnapGrid = snapGrid.map(val => normalize(val));\n  let prevSnap = snapGrid[normalizedSnapGrid.indexOf(normalizedTranslate) - 1];\n  if (typeof prevSnap === 'undefined' && params.cssMode) {\n    let prevSnapIndex;\n    snapGrid.forEach((snap, snapIndex) => {\n      if (normalizedTranslate >= snap) {\n        // prevSnap = snap;\n        prevSnapIndex = snapIndex;\n      }\n    });\n    if (typeof prevSnapIndex !== 'undefined') {\n      prevSnap = snapGrid[prevSnapIndex > 0 ? prevSnapIndex - 1 : prevSnapIndex];\n    }\n  }\n  let prevIndex = 0;\n  if (typeof prevSnap !== 'undefined') {\n    prevIndex = slidesGrid.indexOf(prevSnap);\n    if (prevIndex < 0) prevIndex = swiper.activeIndex - 1;\n    if (params.slidesPerView === 'auto' && params.slidesPerGroup === 1 && params.slidesPerGroupAuto) {\n      prevIndex = prevIndex - swiper.slidesPerViewDynamic('previous', true) + 1;\n      prevIndex = Math.max(prevIndex, 0);\n    }\n  }\n  if (params.rewind && swiper.isBeginning) {\n    const lastIndex = swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n    return swiper.slideTo(lastIndex, speed, runCallbacks, internal);\n  }\n  return swiper.slideTo(prevIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideReset(speed, runCallbacks, internal) {\n  if (speed === void 0) {\n    speed = this.params.speed;\n  }\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  const swiper = this;\n  return swiper.slideTo(swiper.activeIndex, speed, runCallbacks, internal);\n}\n\n/* eslint no-unused-vars: \"off\" */\nfunction slideToClosest(speed, runCallbacks, internal, threshold) {\n  if (speed === void 0) {\n    speed = this.params.speed;\n  }\n  if (runCallbacks === void 0) {\n    runCallbacks = true;\n  }\n  if (threshold === void 0) {\n    threshold = 0.5;\n  }\n  const swiper = this;\n  let index = swiper.activeIndex;\n  const skip = Math.min(swiper.params.slidesPerGroupSkip, index);\n  const snapIndex = skip + Math.floor((index - skip) / swiper.params.slidesPerGroup);\n  const translate = swiper.rtlTranslate ? swiper.translate : -swiper.translate;\n  if (translate >= swiper.snapGrid[snapIndex]) {\n    // The current translate is on or after the current snap index, so the choice\n    // is between the current index and the one after it.\n    const currentSnap = swiper.snapGrid[snapIndex];\n    const nextSnap = swiper.snapGrid[snapIndex + 1];\n    if (translate - currentSnap > (nextSnap - currentSnap) * threshold) {\n      index += swiper.params.slidesPerGroup;\n    }\n  } else {\n    // The current translate is before the current snap index, so the choice\n    // is between the current index and the one before it.\n    const prevSnap = swiper.snapGrid[snapIndex - 1];\n    const currentSnap = swiper.snapGrid[snapIndex];\n    if (translate - prevSnap <= (currentSnap - prevSnap) * threshold) {\n      index -= swiper.params.slidesPerGroup;\n    }\n  }\n  index = Math.max(index, 0);\n  index = Math.min(index, swiper.slidesGrid.length - 1);\n  return swiper.slideTo(index, speed, runCallbacks, internal);\n}\n\nfunction slideToClickedSlide() {\n  const swiper = this;\n  const {\n    params,\n    slidesEl\n  } = swiper;\n  const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : params.slidesPerView;\n  let slideToIndex = swiper.clickedIndex;\n  let realIndex;\n  const slideSelector = swiper.isElement ? `swiper-slide` : `.${params.slideClass}`;\n  if (params.loop) {\n    if (swiper.animating) return;\n    realIndex = parseInt(swiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n    if (params.centeredSlides) {\n      if (slideToIndex < swiper.loopedSlides - slidesPerView / 2 || slideToIndex > swiper.slides.length - swiper.loopedSlides + slidesPerView / 2) {\n        swiper.loopFix();\n        slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n        nextTick(() => {\n          swiper.slideTo(slideToIndex);\n        });\n      } else {\n        swiper.slideTo(slideToIndex);\n      }\n    } else if (slideToIndex > swiper.slides.length - slidesPerView) {\n      swiper.loopFix();\n      slideToIndex = swiper.getSlideIndex(elementChildren(slidesEl, `${slideSelector}[data-swiper-slide-index=\"${realIndex}\"]`)[0]);\n      nextTick(() => {\n        swiper.slideTo(slideToIndex);\n      });\n    } else {\n      swiper.slideTo(slideToIndex);\n    }\n  } else {\n    swiper.slideTo(slideToIndex);\n  }\n}\n\nvar slide = {\n  slideTo,\n  slideToLoop,\n  slideNext,\n  slidePrev,\n  slideReset,\n  slideToClosest,\n  slideToClickedSlide\n};\n\nfunction loopCreate(slideRealIndex) {\n  const swiper = this;\n  const {\n    params,\n    slidesEl\n  } = swiper;\n  if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n  const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n  slides.forEach((el, index) => {\n    el.setAttribute('data-swiper-slide-index', index);\n  });\n  swiper.loopFix({\n    slideRealIndex,\n    direction: params.centeredSlides ? undefined : 'next'\n  });\n}\n\nfunction loopFix(_temp) {\n  let {\n    slideRealIndex,\n    slideTo = true,\n    direction,\n    setTranslate,\n    activeSlideIndex,\n    byController,\n    byMousewheel\n  } = _temp === void 0 ? {} : _temp;\n  const swiper = this;\n  if (!swiper.params.loop) return;\n  swiper.emit('beforeLoopFix');\n  const {\n    slides,\n    allowSlidePrev,\n    allowSlideNext,\n    slidesEl,\n    params\n  } = swiper;\n  swiper.allowSlidePrev = true;\n  swiper.allowSlideNext = true;\n  if (swiper.virtual && params.virtual.enabled) {\n    if (slideTo) {\n      if (!params.centeredSlides && swiper.snapIndex === 0) {\n        swiper.slideTo(swiper.virtual.slides.length, 0, false, true);\n      } else if (params.centeredSlides && swiper.snapIndex < params.slidesPerView) {\n        swiper.slideTo(swiper.virtual.slides.length + swiper.snapIndex, 0, false, true);\n      } else if (swiper.snapIndex === swiper.snapGrid.length - 1) {\n        swiper.slideTo(swiper.virtual.slidesBefore, 0, false, true);\n      }\n    }\n    swiper.allowSlidePrev = allowSlidePrev;\n    swiper.allowSlideNext = allowSlideNext;\n    swiper.emit('loopFix');\n    return;\n  }\n  const slidesPerView = params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10));\n  let loopedSlides = params.loopedSlides || slidesPerView;\n  if (loopedSlides % params.slidesPerGroup !== 0) {\n    loopedSlides += params.slidesPerGroup - loopedSlides % params.slidesPerGroup;\n  }\n  swiper.loopedSlides = loopedSlides;\n  const prependSlidesIndexes = [];\n  const appendSlidesIndexes = [];\n  let activeIndex = swiper.activeIndex;\n  if (typeof activeSlideIndex === 'undefined') {\n    activeSlideIndex = swiper.getSlideIndex(swiper.slides.filter(el => el.classList.contains(params.slideActiveClass))[0]);\n  } else {\n    activeIndex = activeSlideIndex;\n  }\n  const isNext = direction === 'next' || !direction;\n  const isPrev = direction === 'prev' || !direction;\n  let slidesPrepended = 0;\n  let slidesAppended = 0;\n  // prepend last slides before start\n  if (activeSlideIndex < loopedSlides) {\n    slidesPrepended = Math.max(loopedSlides - activeSlideIndex, params.slidesPerGroup);\n    for (let i = 0; i < loopedSlides - activeSlideIndex; i += 1) {\n      const index = i - Math.floor(i / slides.length) * slides.length;\n      prependSlidesIndexes.push(slides.length - index - 1);\n    }\n  } else if (activeSlideIndex /* + slidesPerView */ > swiper.slides.length - loopedSlides * 2) {\n    slidesAppended = Math.max(activeSlideIndex - (swiper.slides.length - loopedSlides * 2), params.slidesPerGroup);\n    for (let i = 0; i < slidesAppended; i += 1) {\n      const index = i - Math.floor(i / slides.length) * slides.length;\n      appendSlidesIndexes.push(index);\n    }\n  }\n  if (isPrev) {\n    prependSlidesIndexes.forEach(index => {\n      swiper.slides[index].swiperLoopMoveDOM = true;\n      slidesEl.prepend(swiper.slides[index]);\n      swiper.slides[index].swiperLoopMoveDOM = false;\n    });\n  }\n  if (isNext) {\n    appendSlidesIndexes.forEach(index => {\n      swiper.slides[index].swiperLoopMoveDOM = true;\n      slidesEl.append(swiper.slides[index]);\n      swiper.slides[index].swiperLoopMoveDOM = false;\n    });\n  }\n  swiper.recalcSlides();\n  if (params.slidesPerView === 'auto') {\n    swiper.updateSlides();\n  }\n  if (params.watchSlidesProgress) {\n    swiper.updateSlidesOffset();\n  }\n  if (slideTo) {\n    if (prependSlidesIndexes.length > 0 && isPrev) {\n      if (typeof slideRealIndex === 'undefined') {\n        const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n        const newSlideTranslate = swiper.slidesGrid[activeIndex + slidesPrepended];\n        const diff = newSlideTranslate - currentSlideTranslate;\n        if (byMousewheel) {\n          swiper.setTranslate(swiper.translate - diff);\n        } else {\n          swiper.slideTo(activeIndex + slidesPrepended, 0, false, true);\n          if (setTranslate) {\n            swiper.touches[swiper.isHorizontal() ? 'startX' : 'startY'] += diff;\n            swiper.touchEventsData.currentTranslate = swiper.translate;\n          }\n        }\n      } else {\n        if (setTranslate) {\n          swiper.slideToLoop(slideRealIndex, 0, false, true);\n          swiper.touchEventsData.currentTranslate = swiper.translate;\n        }\n      }\n    } else if (appendSlidesIndexes.length > 0 && isNext) {\n      if (typeof slideRealIndex === 'undefined') {\n        const currentSlideTranslate = swiper.slidesGrid[activeIndex];\n        const newSlideTranslate = swiper.slidesGrid[activeIndex - slidesAppended];\n        const diff = newSlideTranslate - currentSlideTranslate;\n        if (byMousewheel) {\n          swiper.setTranslate(swiper.translate - diff);\n        } else {\n          swiper.slideTo(activeIndex - slidesAppended, 0, false, true);\n          if (setTranslate) {\n            swiper.touches[swiper.isHorizontal() ? 'startX' : 'startY'] += diff;\n            swiper.touchEventsData.currentTranslate = swiper.translate;\n          }\n        }\n      } else {\n        swiper.slideToLoop(slideRealIndex, 0, false, true);\n      }\n    }\n  }\n  swiper.allowSlidePrev = allowSlidePrev;\n  swiper.allowSlideNext = allowSlideNext;\n  if (swiper.controller && swiper.controller.control && !byController) {\n    const loopParams = {\n      slideRealIndex,\n      slideTo: false,\n      direction,\n      setTranslate,\n      activeSlideIndex,\n      byController: true\n    };\n    if (Array.isArray(swiper.controller.control)) {\n      swiper.controller.control.forEach(c => {\n        if (!c.destroyed && c.params.loop) c.loopFix(loopParams);\n      });\n    } else if (swiper.controller.control instanceof swiper.constructor && swiper.controller.control.params.loop) {\n      swiper.controller.control.loopFix(loopParams);\n    }\n  }\n  swiper.emit('loopFix');\n}\n\nfunction loopDestroy() {\n  const swiper = this;\n  const {\n    params,\n    slidesEl\n  } = swiper;\n  if (!params.loop || swiper.virtual && swiper.params.virtual.enabled) return;\n  swiper.recalcSlides();\n  const newSlidesOrder = [];\n  swiper.slides.forEach(slideEl => {\n    const index = typeof slideEl.swiperSlideIndex === 'undefined' ? slideEl.getAttribute('data-swiper-slide-index') * 1 : slideEl.swiperSlideIndex;\n    newSlidesOrder[index] = slideEl;\n  });\n  swiper.slides.forEach(slideEl => {\n    slideEl.removeAttribute('data-swiper-slide-index');\n  });\n  newSlidesOrder.forEach(slideEl => {\n    slidesEl.append(slideEl);\n  });\n  swiper.recalcSlides();\n  swiper.slideTo(swiper.realIndex, 0);\n}\n\nvar loop = {\n  loopCreate,\n  loopFix,\n  loopDestroy\n};\n\nfunction setGrabCursor(moving) {\n  const swiper = this;\n  if (!swiper.params.simulateTouch || swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) return;\n  const el = swiper.params.touchEventsTarget === 'container' ? swiper.el : swiper.wrapperEl;\n  if (swiper.isElement) {\n    swiper.__preventObserver__ = true;\n  }\n  el.style.cursor = 'move';\n  el.style.cursor = moving ? 'grabbing' : 'grab';\n  if (swiper.isElement) {\n    requestAnimationFrame(() => {\n      swiper.__preventObserver__ = false;\n    });\n  }\n}\n\nfunction unsetGrabCursor() {\n  const swiper = this;\n  if (swiper.params.watchOverflow && swiper.isLocked || swiper.params.cssMode) {\n    return;\n  }\n  if (swiper.isElement) {\n    swiper.__preventObserver__ = true;\n  }\n  swiper[swiper.params.touchEventsTarget === 'container' ? 'el' : 'wrapperEl'].style.cursor = '';\n  if (swiper.isElement) {\n    requestAnimationFrame(() => {\n      swiper.__preventObserver__ = false;\n    });\n  }\n}\n\nvar grabCursor = {\n  setGrabCursor,\n  unsetGrabCursor\n};\n\n// Modified from https://stackoverflow.com/questions/54520554/custom-element-getrootnode-closest-function-crossing-multiple-parent-shadowd\nfunction closestElement(selector, base) {\n  if (base === void 0) {\n    base = this;\n  }\n  function __closestFrom(el) {\n    if (!el || el === getDocument() || el === getWindow()) return null;\n    if (el.assignedSlot) el = el.assignedSlot;\n    const found = el.closest(selector);\n    if (!found && !el.getRootNode) {\n      return null;\n    }\n    return found || __closestFrom(el.getRootNode().host);\n  }\n  return __closestFrom(base);\n}\nfunction onTouchStart(event) {\n  const swiper = this;\n  const document = getDocument();\n  const window = getWindow();\n  const data = swiper.touchEventsData;\n  data.evCache.push(event);\n  const {\n    params,\n    touches,\n    enabled\n  } = swiper;\n  if (!enabled) return;\n  if (!params.simulateTouch && event.pointerType === 'mouse') return;\n  if (swiper.animating && params.preventInteractionOnTransition) {\n    return;\n  }\n  if (!swiper.animating && params.cssMode && params.loop) {\n    swiper.loopFix();\n  }\n  let e = event;\n  if (e.originalEvent) e = e.originalEvent;\n  let targetEl = e.target;\n  if (params.touchEventsTarget === 'wrapper') {\n    if (!swiper.wrapperEl.contains(targetEl)) return;\n  }\n  if ('which' in e && e.which === 3) return;\n  if ('button' in e && e.button > 0) return;\n  if (data.isTouched && data.isMoved) return;\n\n  // change target el for shadow root component\n  const swipingClassHasValue = !!params.noSwipingClass && params.noSwipingClass !== '';\n  // eslint-disable-next-line\n  const eventPath = event.composedPath ? event.composedPath() : event.path;\n  if (swipingClassHasValue && e.target && e.target.shadowRoot && eventPath) {\n    targetEl = eventPath[0];\n  }\n  const noSwipingSelector = params.noSwipingSelector ? params.noSwipingSelector : `.${params.noSwipingClass}`;\n  const isTargetShadow = !!(e.target && e.target.shadowRoot);\n\n  // use closestElement for shadow root element to get the actual closest for nested shadow root element\n  if (params.noSwiping && (isTargetShadow ? closestElement(noSwipingSelector, targetEl) : targetEl.closest(noSwipingSelector))) {\n    swiper.allowClick = true;\n    return;\n  }\n  if (params.swipeHandler) {\n    if (!targetEl.closest(params.swipeHandler)) return;\n  }\n  touches.currentX = e.pageX;\n  touches.currentY = e.pageY;\n  const startX = touches.currentX;\n  const startY = touches.currentY;\n\n  // Do NOT start if iOS edge swipe is detected. Otherwise iOS app cannot swipe-to-go-back anymore\n\n  const edgeSwipeDetection = params.edgeSwipeDetection || params.iOSEdgeSwipeDetection;\n  const edgeSwipeThreshold = params.edgeSwipeThreshold || params.iOSEdgeSwipeThreshold;\n  if (edgeSwipeDetection && (startX <= edgeSwipeThreshold || startX >= window.innerWidth - edgeSwipeThreshold)) {\n    if (edgeSwipeDetection === 'prevent') {\n      event.preventDefault();\n    } else {\n      return;\n    }\n  }\n  Object.assign(data, {\n    isTouched: true,\n    isMoved: false,\n    allowTouchCallbacks: true,\n    isScrolling: undefined,\n    startMoving: undefined\n  });\n  touches.startX = startX;\n  touches.startY = startY;\n  data.touchStartTime = now();\n  swiper.allowClick = true;\n  swiper.updateSize();\n  swiper.swipeDirection = undefined;\n  if (params.threshold > 0) data.allowThresholdMove = false;\n  let preventDefault = true;\n  if (targetEl.matches(data.focusableElements)) {\n    preventDefault = false;\n    if (targetEl.nodeName === 'SELECT') {\n      data.isTouched = false;\n    }\n  }\n  if (document.activeElement && document.activeElement.matches(data.focusableElements) && document.activeElement !== targetEl) {\n    document.activeElement.blur();\n  }\n  const shouldPreventDefault = preventDefault && swiper.allowTouchMove && params.touchStartPreventDefault;\n  if ((params.touchStartForcePreventDefault || shouldPreventDefault) && !targetEl.isContentEditable) {\n    e.preventDefault();\n  }\n  if (params.freeMode && params.freeMode.enabled && swiper.freeMode && swiper.animating && !params.cssMode) {\n    swiper.freeMode.onTouchStart();\n  }\n  swiper.emit('touchStart', e);\n}\n\nfunction onTouchMove(event) {\n  const document = getDocument();\n  const swiper = this;\n  const data = swiper.touchEventsData;\n  const {\n    params,\n    touches,\n    rtlTranslate: rtl,\n    enabled\n  } = swiper;\n  if (!enabled) return;\n  if (!params.simulateTouch && event.pointerType === 'mouse') return;\n  let e = event;\n  if (e.originalEvent) e = e.originalEvent;\n  if (!data.isTouched) {\n    if (data.startMoving && data.isScrolling) {\n      swiper.emit('touchMoveOpposite', e);\n    }\n    return;\n  }\n  const pointerIndex = data.evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n  if (pointerIndex >= 0) data.evCache[pointerIndex] = e;\n  const targetTouch = data.evCache.length > 1 ? data.evCache[0] : e;\n  const pageX = targetTouch.pageX;\n  const pageY = targetTouch.pageY;\n  if (e.preventedByNestedSwiper) {\n    touches.startX = pageX;\n    touches.startY = pageY;\n    return;\n  }\n  if (!swiper.allowTouchMove) {\n    if (!e.target.matches(data.focusableElements)) {\n      swiper.allowClick = false;\n    }\n    if (data.isTouched) {\n      Object.assign(touches, {\n        startX: pageX,\n        startY: pageY,\n        prevX: swiper.touches.currentX,\n        prevY: swiper.touches.currentY,\n        currentX: pageX,\n        currentY: pageY\n      });\n      data.touchStartTime = now();\n    }\n    return;\n  }\n  if (params.touchReleaseOnEdges && !params.loop) {\n    if (swiper.isVertical()) {\n      // Vertical\n      if (pageY < touches.startY && swiper.translate <= swiper.maxTranslate() || pageY > touches.startY && swiper.translate >= swiper.minTranslate()) {\n        data.isTouched = false;\n        data.isMoved = false;\n        return;\n      }\n    } else if (pageX < touches.startX && swiper.translate <= swiper.maxTranslate() || pageX > touches.startX && swiper.translate >= swiper.minTranslate()) {\n      return;\n    }\n  }\n  if (document.activeElement) {\n    if (e.target === document.activeElement && e.target.matches(data.focusableElements)) {\n      data.isMoved = true;\n      swiper.allowClick = false;\n      return;\n    }\n  }\n  if (data.allowTouchCallbacks) {\n    swiper.emit('touchMove', e);\n  }\n  if (e.targetTouches && e.targetTouches.length > 1) return;\n  touches.currentX = pageX;\n  touches.currentY = pageY;\n  const diffX = touches.currentX - touches.startX;\n  const diffY = touches.currentY - touches.startY;\n  if (swiper.params.threshold && Math.sqrt(diffX ** 2 + diffY ** 2) < swiper.params.threshold) return;\n  if (typeof data.isScrolling === 'undefined') {\n    let touchAngle;\n    if (swiper.isHorizontal() && touches.currentY === touches.startY || swiper.isVertical() && touches.currentX === touches.startX) {\n      data.isScrolling = false;\n    } else {\n      // eslint-disable-next-line\n      if (diffX * diffX + diffY * diffY >= 25) {\n        touchAngle = Math.atan2(Math.abs(diffY), Math.abs(diffX)) * 180 / Math.PI;\n        data.isScrolling = swiper.isHorizontal() ? touchAngle > params.touchAngle : 90 - touchAngle > params.touchAngle;\n      }\n    }\n  }\n  if (data.isScrolling) {\n    swiper.emit('touchMoveOpposite', e);\n  }\n  if (typeof data.startMoving === 'undefined') {\n    if (touches.currentX !== touches.startX || touches.currentY !== touches.startY) {\n      data.startMoving = true;\n    }\n  }\n  if (data.isScrolling || swiper.zoom && swiper.params.zoom && swiper.params.zoom.enabled && data.evCache.length > 1) {\n    data.isTouched = false;\n    return;\n  }\n  if (!data.startMoving) {\n    return;\n  }\n  swiper.allowClick = false;\n  if (!params.cssMode && e.cancelable) {\n    e.preventDefault();\n  }\n  if (params.touchMoveStopPropagation && !params.nested) {\n    e.stopPropagation();\n  }\n  let diff = swiper.isHorizontal() ? diffX : diffY;\n  let touchesDiff = swiper.isHorizontal() ? touches.currentX - touches.previousX : touches.currentY - touches.previousY;\n  if (params.oneWayMovement) {\n    diff = Math.abs(diff) * (rtl ? 1 : -1);\n    touchesDiff = Math.abs(touchesDiff) * (rtl ? 1 : -1);\n  }\n  touches.diff = diff;\n  diff *= params.touchRatio;\n  if (rtl) {\n    diff = -diff;\n    touchesDiff = -touchesDiff;\n  }\n  const prevTouchesDirection = swiper.touchesDirection;\n  swiper.swipeDirection = diff > 0 ? 'prev' : 'next';\n  swiper.touchesDirection = touchesDiff > 0 ? 'prev' : 'next';\n  const isLoop = swiper.params.loop && !params.cssMode;\n  if (!data.isMoved) {\n    if (isLoop) {\n      swiper.loopFix({\n        direction: swiper.swipeDirection\n      });\n    }\n    data.startTranslate = swiper.getTranslate();\n    swiper.setTransition(0);\n    if (swiper.animating) {\n      const evt = new window.CustomEvent('transitionend', {\n        bubbles: true,\n        cancelable: true\n      });\n      swiper.wrapperEl.dispatchEvent(evt);\n    }\n    data.allowMomentumBounce = false;\n    // Grab Cursor\n    if (params.grabCursor && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n      swiper.setGrabCursor(true);\n    }\n    swiper.emit('sliderFirstMove', e);\n  }\n  let loopFixed;\n  if (data.isMoved && prevTouchesDirection !== swiper.touchesDirection && isLoop && Math.abs(diff) >= 1) {\n    // need another loop fix\n    swiper.loopFix({\n      direction: swiper.swipeDirection,\n      setTranslate: true\n    });\n    loopFixed = true;\n  }\n  swiper.emit('sliderMove', e);\n  data.isMoved = true;\n  data.currentTranslate = diff + data.startTranslate;\n  let disableParentSwiper = true;\n  let resistanceRatio = params.resistanceRatio;\n  if (params.touchReleaseOnEdges) {\n    resistanceRatio = 0;\n  }\n  if (diff > 0) {\n    if (isLoop && !loopFixed && data.currentTranslate > (params.centeredSlides ? swiper.minTranslate() - swiper.size / 2 : swiper.minTranslate())) {\n      swiper.loopFix({\n        direction: 'prev',\n        setTranslate: true,\n        activeSlideIndex: 0\n      });\n    }\n    if (data.currentTranslate > swiper.minTranslate()) {\n      disableParentSwiper = false;\n      if (params.resistance) {\n        data.currentTranslate = swiper.minTranslate() - 1 + (-swiper.minTranslate() + data.startTranslate + diff) ** resistanceRatio;\n      }\n    }\n  } else if (diff < 0) {\n    if (isLoop && !loopFixed && data.currentTranslate < (params.centeredSlides ? swiper.maxTranslate() + swiper.size / 2 : swiper.maxTranslate())) {\n      swiper.loopFix({\n        direction: 'next',\n        setTranslate: true,\n        activeSlideIndex: swiper.slides.length - (params.slidesPerView === 'auto' ? swiper.slidesPerViewDynamic() : Math.ceil(parseFloat(params.slidesPerView, 10)))\n      });\n    }\n    if (data.currentTranslate < swiper.maxTranslate()) {\n      disableParentSwiper = false;\n      if (params.resistance) {\n        data.currentTranslate = swiper.maxTranslate() + 1 - (swiper.maxTranslate() - data.startTranslate - diff) ** resistanceRatio;\n      }\n    }\n  }\n  if (disableParentSwiper) {\n    e.preventedByNestedSwiper = true;\n  }\n\n  // Directions locks\n  if (!swiper.allowSlideNext && swiper.swipeDirection === 'next' && data.currentTranslate < data.startTranslate) {\n    data.currentTranslate = data.startTranslate;\n  }\n  if (!swiper.allowSlidePrev && swiper.swipeDirection === 'prev' && data.currentTranslate > data.startTranslate) {\n    data.currentTranslate = data.startTranslate;\n  }\n  if (!swiper.allowSlidePrev && !swiper.allowSlideNext) {\n    data.currentTranslate = data.startTranslate;\n  }\n\n  // Threshold\n  if (params.threshold > 0) {\n    if (Math.abs(diff) > params.threshold || data.allowThresholdMove) {\n      if (!data.allowThresholdMove) {\n        data.allowThresholdMove = true;\n        touches.startX = touches.currentX;\n        touches.startY = touches.currentY;\n        data.currentTranslate = data.startTranslate;\n        touches.diff = swiper.isHorizontal() ? touches.currentX - touches.startX : touches.currentY - touches.startY;\n        return;\n      }\n    } else {\n      data.currentTranslate = data.startTranslate;\n      return;\n    }\n  }\n  if (!params.followFinger || params.cssMode) return;\n\n  // Update active index in free mode\n  if (params.freeMode && params.freeMode.enabled && swiper.freeMode || params.watchSlidesProgress) {\n    swiper.updateActiveIndex();\n    swiper.updateSlidesClasses();\n  }\n  if (params.freeMode && params.freeMode.enabled && swiper.freeMode) {\n    swiper.freeMode.onTouchMove();\n  }\n  // Update progress\n  swiper.updateProgress(data.currentTranslate);\n  // Update translate\n  swiper.setTranslate(data.currentTranslate);\n}\n\nfunction onTouchEnd(event) {\n  const swiper = this;\n  const data = swiper.touchEventsData;\n  const pointerIndex = data.evCache.findIndex(cachedEv => cachedEv.pointerId === event.pointerId);\n  if (pointerIndex >= 0) {\n    data.evCache.splice(pointerIndex, 1);\n  }\n  if (['pointercancel', 'pointerout', 'pointerleave'].includes(event.type)) {\n    const proceed = event.type === 'pointercancel' && (swiper.browser.isSafari || swiper.browser.isWebView);\n    if (!proceed) {\n      return;\n    }\n  }\n  const {\n    params,\n    touches,\n    rtlTranslate: rtl,\n    slidesGrid,\n    enabled\n  } = swiper;\n  if (!enabled) return;\n  if (!params.simulateTouch && event.pointerType === 'mouse') return;\n  let e = event;\n  if (e.originalEvent) e = e.originalEvent;\n  if (data.allowTouchCallbacks) {\n    swiper.emit('touchEnd', e);\n  }\n  data.allowTouchCallbacks = false;\n  if (!data.isTouched) {\n    if (data.isMoved && params.grabCursor) {\n      swiper.setGrabCursor(false);\n    }\n    data.isMoved = false;\n    data.startMoving = false;\n    return;\n  }\n  // Return Grab Cursor\n  if (params.grabCursor && data.isMoved && data.isTouched && (swiper.allowSlideNext === true || swiper.allowSlidePrev === true)) {\n    swiper.setGrabCursor(false);\n  }\n\n  // Time diff\n  const touchEndTime = now();\n  const timeDiff = touchEndTime - data.touchStartTime;\n\n  // Tap, doubleTap, Click\n  if (swiper.allowClick) {\n    const pathTree = e.path || e.composedPath && e.composedPath();\n    swiper.updateClickedSlide(pathTree && pathTree[0] || e.target);\n    swiper.emit('tap click', e);\n    if (timeDiff < 300 && touchEndTime - data.lastClickTime < 300) {\n      swiper.emit('doubleTap doubleClick', e);\n    }\n  }\n  data.lastClickTime = now();\n  nextTick(() => {\n    if (!swiper.destroyed) swiper.allowClick = true;\n  });\n  if (!data.isTouched || !data.isMoved || !swiper.swipeDirection || touches.diff === 0 || data.currentTranslate === data.startTranslate) {\n    data.isTouched = false;\n    data.isMoved = false;\n    data.startMoving = false;\n    return;\n  }\n  data.isTouched = false;\n  data.isMoved = false;\n  data.startMoving = false;\n  let currentPos;\n  if (params.followFinger) {\n    currentPos = rtl ? swiper.translate : -swiper.translate;\n  } else {\n    currentPos = -data.currentTranslate;\n  }\n  if (params.cssMode) {\n    return;\n  }\n  if (params.freeMode && params.freeMode.enabled) {\n    swiper.freeMode.onTouchEnd({\n      currentPos\n    });\n    return;\n  }\n\n  // Find current slide\n  let stopIndex = 0;\n  let groupSize = swiper.slidesSizesGrid[0];\n  for (let i = 0; i < slidesGrid.length; i += i < params.slidesPerGroupSkip ? 1 : params.slidesPerGroup) {\n    const increment = i < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n    if (typeof slidesGrid[i + increment] !== 'undefined') {\n      if (currentPos >= slidesGrid[i] && currentPos < slidesGrid[i + increment]) {\n        stopIndex = i;\n        groupSize = slidesGrid[i + increment] - slidesGrid[i];\n      }\n    } else if (currentPos >= slidesGrid[i]) {\n      stopIndex = i;\n      groupSize = slidesGrid[slidesGrid.length - 1] - slidesGrid[slidesGrid.length - 2];\n    }\n  }\n  let rewindFirstIndex = null;\n  let rewindLastIndex = null;\n  if (params.rewind) {\n    if (swiper.isBeginning) {\n      rewindLastIndex = params.virtual && params.virtual.enabled && swiper.virtual ? swiper.virtual.slides.length - 1 : swiper.slides.length - 1;\n    } else if (swiper.isEnd) {\n      rewindFirstIndex = 0;\n    }\n  }\n  // Find current slide size\n  const ratio = (currentPos - slidesGrid[stopIndex]) / groupSize;\n  const increment = stopIndex < params.slidesPerGroupSkip - 1 ? 1 : params.slidesPerGroup;\n  if (timeDiff > params.longSwipesMs) {\n    // Long touches\n    if (!params.longSwipes) {\n      swiper.slideTo(swiper.activeIndex);\n      return;\n    }\n    if (swiper.swipeDirection === 'next') {\n      if (ratio >= params.longSwipesRatio) swiper.slideTo(params.rewind && swiper.isEnd ? rewindFirstIndex : stopIndex + increment);else swiper.slideTo(stopIndex);\n    }\n    if (swiper.swipeDirection === 'prev') {\n      if (ratio > 1 - params.longSwipesRatio) {\n        swiper.slideTo(stopIndex + increment);\n      } else if (rewindLastIndex !== null && ratio < 0 && Math.abs(ratio) > params.longSwipesRatio) {\n        swiper.slideTo(rewindLastIndex);\n      } else {\n        swiper.slideTo(stopIndex);\n      }\n    }\n  } else {\n    // Short swipes\n    if (!params.shortSwipes) {\n      swiper.slideTo(swiper.activeIndex);\n      return;\n    }\n    const isNavButtonTarget = swiper.navigation && (e.target === swiper.navigation.nextEl || e.target === swiper.navigation.prevEl);\n    if (!isNavButtonTarget) {\n      if (swiper.swipeDirection === 'next') {\n        swiper.slideTo(rewindFirstIndex !== null ? rewindFirstIndex : stopIndex + increment);\n      }\n      if (swiper.swipeDirection === 'prev') {\n        swiper.slideTo(rewindLastIndex !== null ? rewindLastIndex : stopIndex);\n      }\n    } else if (e.target === swiper.navigation.nextEl) {\n      swiper.slideTo(stopIndex + increment);\n    } else {\n      swiper.slideTo(stopIndex);\n    }\n  }\n}\n\nfunction onResize() {\n  const swiper = this;\n  const {\n    params,\n    el\n  } = swiper;\n  if (el && el.offsetWidth === 0) return;\n\n  // Breakpoints\n  if (params.breakpoints) {\n    swiper.setBreakpoint();\n  }\n\n  // Save locks\n  const {\n    allowSlideNext,\n    allowSlidePrev,\n    snapGrid\n  } = swiper;\n  const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n\n  // Disable locks on resize\n  swiper.allowSlideNext = true;\n  swiper.allowSlidePrev = true;\n  swiper.updateSize();\n  swiper.updateSlides();\n  swiper.updateSlidesClasses();\n  const isVirtualLoop = isVirtual && params.loop;\n  if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !swiper.isBeginning && !swiper.params.centeredSlides && !isVirtualLoop) {\n    swiper.slideTo(swiper.slides.length - 1, 0, false, true);\n  } else {\n    if (swiper.params.loop && !isVirtual) {\n      swiper.slideToLoop(swiper.realIndex, 0, false, true);\n    } else {\n      swiper.slideTo(swiper.activeIndex, 0, false, true);\n    }\n  }\n  if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n    clearTimeout(swiper.autoplay.resizeTimeout);\n    swiper.autoplay.resizeTimeout = setTimeout(() => {\n      if (swiper.autoplay && swiper.autoplay.running && swiper.autoplay.paused) {\n        swiper.autoplay.resume();\n      }\n    }, 500);\n  }\n  // Return locks after resize\n  swiper.allowSlidePrev = allowSlidePrev;\n  swiper.allowSlideNext = allowSlideNext;\n  if (swiper.params.watchOverflow && snapGrid !== swiper.snapGrid) {\n    swiper.checkOverflow();\n  }\n}\n\nfunction onClick(e) {\n  const swiper = this;\n  if (!swiper.enabled) return;\n  if (!swiper.allowClick) {\n    if (swiper.params.preventClicks) e.preventDefault();\n    if (swiper.params.preventClicksPropagation && swiper.animating) {\n      e.stopPropagation();\n      e.stopImmediatePropagation();\n    }\n  }\n}\n\nfunction onScroll() {\n  const swiper = this;\n  const {\n    wrapperEl,\n    rtlTranslate,\n    enabled\n  } = swiper;\n  if (!enabled) return;\n  swiper.previousTranslate = swiper.translate;\n  if (swiper.isHorizontal()) {\n    swiper.translate = -wrapperEl.scrollLeft;\n  } else {\n    swiper.translate = -wrapperEl.scrollTop;\n  }\n  // eslint-disable-next-line\n  if (swiper.translate === 0) swiper.translate = 0;\n  swiper.updateActiveIndex();\n  swiper.updateSlidesClasses();\n  let newProgress;\n  const translatesDiff = swiper.maxTranslate() - swiper.minTranslate();\n  if (translatesDiff === 0) {\n    newProgress = 0;\n  } else {\n    newProgress = (swiper.translate - swiper.minTranslate()) / translatesDiff;\n  }\n  if (newProgress !== swiper.progress) {\n    swiper.updateProgress(rtlTranslate ? -swiper.translate : swiper.translate);\n  }\n  swiper.emit('setTranslate', swiper.translate, false);\n}\n\nfunction onLoad(e) {\n  const swiper = this;\n  processLazyPreloader(swiper, e.target);\n  if (swiper.params.cssMode || swiper.params.slidesPerView !== 'auto' && !swiper.params.autoHeight) {\n    return;\n  }\n  swiper.update();\n}\n\nlet dummyEventAttached = false;\nfunction dummyEventListener() {}\nconst events = (swiper, method) => {\n  const document = getDocument();\n  const {\n    params,\n    el,\n    wrapperEl,\n    device\n  } = swiper;\n  const capture = !!params.nested;\n  const domMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n  const swiperMethod = method;\n\n  // Touch Events\n  el[domMethod]('pointerdown', swiper.onTouchStart, {\n    passive: false\n  });\n  document[domMethod]('pointermove', swiper.onTouchMove, {\n    passive: false,\n    capture\n  });\n  document[domMethod]('pointerup', swiper.onTouchEnd, {\n    passive: true\n  });\n  document[domMethod]('pointercancel', swiper.onTouchEnd, {\n    passive: true\n  });\n  document[domMethod]('pointerout', swiper.onTouchEnd, {\n    passive: true\n  });\n  document[domMethod]('pointerleave', swiper.onTouchEnd, {\n    passive: true\n  });\n\n  // Prevent Links Clicks\n  if (params.preventClicks || params.preventClicksPropagation) {\n    el[domMethod]('click', swiper.onClick, true);\n  }\n  if (params.cssMode) {\n    wrapperEl[domMethod]('scroll', swiper.onScroll);\n  }\n\n  // Resize handler\n  if (params.updateOnWindowResize) {\n    swiper[swiperMethod](device.ios || device.android ? 'resize orientationchange observerUpdate' : 'resize observerUpdate', onResize, true);\n  } else {\n    swiper[swiperMethod]('observerUpdate', onResize, true);\n  }\n\n  // Images loader\n  el[domMethod]('load', swiper.onLoad, {\n    capture: true\n  });\n};\nfunction attachEvents() {\n  const swiper = this;\n  const document = getDocument();\n  const {\n    params\n  } = swiper;\n  swiper.onTouchStart = onTouchStart.bind(swiper);\n  swiper.onTouchMove = onTouchMove.bind(swiper);\n  swiper.onTouchEnd = onTouchEnd.bind(swiper);\n  if (params.cssMode) {\n    swiper.onScroll = onScroll.bind(swiper);\n  }\n  swiper.onClick = onClick.bind(swiper);\n  swiper.onLoad = onLoad.bind(swiper);\n  if (!dummyEventAttached) {\n    document.addEventListener('touchstart', dummyEventListener);\n    dummyEventAttached = true;\n  }\n  events(swiper, 'on');\n}\nfunction detachEvents() {\n  const swiper = this;\n  events(swiper, 'off');\n}\nvar events$1 = {\n  attachEvents,\n  detachEvents\n};\n\nconst isGridEnabled = (swiper, params) => {\n  return swiper.grid && params.grid && params.grid.rows > 1;\n};\nfunction setBreakpoint() {\n  const swiper = this;\n  const {\n    realIndex,\n    initialized,\n    params,\n    el\n  } = swiper;\n  const breakpoints = params.breakpoints;\n  if (!breakpoints || breakpoints && Object.keys(breakpoints).length === 0) return;\n\n  // Get breakpoint for window width and update parameters\n  const breakpoint = swiper.getBreakpoint(breakpoints, swiper.params.breakpointsBase, swiper.el);\n  if (!breakpoint || swiper.currentBreakpoint === breakpoint) return;\n  const breakpointOnlyParams = breakpoint in breakpoints ? breakpoints[breakpoint] : undefined;\n  const breakpointParams = breakpointOnlyParams || swiper.originalParams;\n  const wasMultiRow = isGridEnabled(swiper, params);\n  const isMultiRow = isGridEnabled(swiper, breakpointParams);\n  const wasEnabled = params.enabled;\n  if (wasMultiRow && !isMultiRow) {\n    el.classList.remove(`${params.containerModifierClass}grid`, `${params.containerModifierClass}grid-column`);\n    swiper.emitContainerClasses();\n  } else if (!wasMultiRow && isMultiRow) {\n    el.classList.add(`${params.containerModifierClass}grid`);\n    if (breakpointParams.grid.fill && breakpointParams.grid.fill === 'column' || !breakpointParams.grid.fill && params.grid.fill === 'column') {\n      el.classList.add(`${params.containerModifierClass}grid-column`);\n    }\n    swiper.emitContainerClasses();\n  }\n\n  // Toggle navigation, pagination, scrollbar\n  ['navigation', 'pagination', 'scrollbar'].forEach(prop => {\n    if (typeof breakpointParams[prop] === 'undefined') return;\n    const wasModuleEnabled = params[prop] && params[prop].enabled;\n    const isModuleEnabled = breakpointParams[prop] && breakpointParams[prop].enabled;\n    if (wasModuleEnabled && !isModuleEnabled) {\n      swiper[prop].disable();\n    }\n    if (!wasModuleEnabled && isModuleEnabled) {\n      swiper[prop].enable();\n    }\n  });\n  const directionChanged = breakpointParams.direction && breakpointParams.direction !== params.direction;\n  const needsReLoop = params.loop && (breakpointParams.slidesPerView !== params.slidesPerView || directionChanged);\n  if (directionChanged && initialized) {\n    swiper.changeDirection();\n  }\n  extend(swiper.params, breakpointParams);\n  const isEnabled = swiper.params.enabled;\n  Object.assign(swiper, {\n    allowTouchMove: swiper.params.allowTouchMove,\n    allowSlideNext: swiper.params.allowSlideNext,\n    allowSlidePrev: swiper.params.allowSlidePrev\n  });\n  if (wasEnabled && !isEnabled) {\n    swiper.disable();\n  } else if (!wasEnabled && isEnabled) {\n    swiper.enable();\n  }\n  swiper.currentBreakpoint = breakpoint;\n  swiper.emit('_beforeBreakpoint', breakpointParams);\n  if (needsReLoop && initialized) {\n    swiper.loopDestroy();\n    swiper.loopCreate(realIndex);\n    swiper.updateSlides();\n  }\n  swiper.emit('breakpoint', breakpointParams);\n}\n\nfunction getBreakpoint(breakpoints, base, containerEl) {\n  if (base === void 0) {\n    base = 'window';\n  }\n  if (!breakpoints || base === 'container' && !containerEl) return undefined;\n  let breakpoint = false;\n  const window = getWindow();\n  const currentHeight = base === 'window' ? window.innerHeight : containerEl.clientHeight;\n  const points = Object.keys(breakpoints).map(point => {\n    if (typeof point === 'string' && point.indexOf('@') === 0) {\n      const minRatio = parseFloat(point.substr(1));\n      const value = currentHeight * minRatio;\n      return {\n        value,\n        point\n      };\n    }\n    return {\n      value: point,\n      point\n    };\n  });\n  points.sort((a, b) => parseInt(a.value, 10) - parseInt(b.value, 10));\n  for (let i = 0; i < points.length; i += 1) {\n    const {\n      point,\n      value\n    } = points[i];\n    if (base === 'window') {\n      if (window.matchMedia(`(min-width: ${value}px)`).matches) {\n        breakpoint = point;\n      }\n    } else if (value <= containerEl.clientWidth) {\n      breakpoint = point;\n    }\n  }\n  return breakpoint || 'max';\n}\n\nvar breakpoints = {\n  setBreakpoint,\n  getBreakpoint\n};\n\nfunction prepareClasses(entries, prefix) {\n  const resultClasses = [];\n  entries.forEach(item => {\n    if (typeof item === 'object') {\n      Object.keys(item).forEach(classNames => {\n        if (item[classNames]) {\n          resultClasses.push(prefix + classNames);\n        }\n      });\n    } else if (typeof item === 'string') {\n      resultClasses.push(prefix + item);\n    }\n  });\n  return resultClasses;\n}\nfunction addClasses() {\n  const swiper = this;\n  const {\n    classNames,\n    params,\n    rtl,\n    el,\n    device\n  } = swiper;\n  // prettier-ignore\n  const suffixes = prepareClasses(['initialized', params.direction, {\n    'free-mode': swiper.params.freeMode && params.freeMode.enabled\n  }, {\n    'autoheight': params.autoHeight\n  }, {\n    'rtl': rtl\n  }, {\n    'grid': params.grid && params.grid.rows > 1\n  }, {\n    'grid-column': params.grid && params.grid.rows > 1 && params.grid.fill === 'column'\n  }, {\n    'android': device.android\n  }, {\n    'ios': device.ios\n  }, {\n    'css-mode': params.cssMode\n  }, {\n    'centered': params.cssMode && params.centeredSlides\n  }, {\n    'watch-progress': params.watchSlidesProgress\n  }], params.containerModifierClass);\n  classNames.push(...suffixes);\n  el.classList.add(...classNames);\n  swiper.emitContainerClasses();\n}\n\nfunction removeClasses() {\n  const swiper = this;\n  const {\n    el,\n    classNames\n  } = swiper;\n  el.classList.remove(...classNames);\n  swiper.emitContainerClasses();\n}\n\nvar classes = {\n  addClasses,\n  removeClasses\n};\n\nfunction checkOverflow() {\n  const swiper = this;\n  const {\n    isLocked: wasLocked,\n    params\n  } = swiper;\n  const {\n    slidesOffsetBefore\n  } = params;\n  if (slidesOffsetBefore) {\n    const lastSlideIndex = swiper.slides.length - 1;\n    const lastSlideRightEdge = swiper.slidesGrid[lastSlideIndex] + swiper.slidesSizesGrid[lastSlideIndex] + slidesOffsetBefore * 2;\n    swiper.isLocked = swiper.size > lastSlideRightEdge;\n  } else {\n    swiper.isLocked = swiper.snapGrid.length === 1;\n  }\n  if (params.allowSlideNext === true) {\n    swiper.allowSlideNext = !swiper.isLocked;\n  }\n  if (params.allowSlidePrev === true) {\n    swiper.allowSlidePrev = !swiper.isLocked;\n  }\n  if (wasLocked && wasLocked !== swiper.isLocked) {\n    swiper.isEnd = false;\n  }\n  if (wasLocked !== swiper.isLocked) {\n    swiper.emit(swiper.isLocked ? 'lock' : 'unlock');\n  }\n}\nvar checkOverflow$1 = {\n  checkOverflow\n};\n\nvar defaults = {\n  init: true,\n  direction: 'horizontal',\n  oneWayMovement: false,\n  touchEventsTarget: 'wrapper',\n  initialSlide: 0,\n  speed: 300,\n  cssMode: false,\n  updateOnWindowResize: true,\n  resizeObserver: true,\n  nested: false,\n  createElements: false,\n  enabled: true,\n  focusableElements: 'input, select, option, textarea, button, video, label',\n  // Overrides\n  width: null,\n  height: null,\n  //\n  preventInteractionOnTransition: false,\n  // ssr\n  userAgent: null,\n  url: null,\n  // To support iOS's swipe-to-go-back gesture (when being used in-app).\n  edgeSwipeDetection: false,\n  edgeSwipeThreshold: 20,\n  // Autoheight\n  autoHeight: false,\n  // Set wrapper width\n  setWrapperSize: false,\n  // Virtual Translate\n  virtualTranslate: false,\n  // Effects\n  effect: 'slide',\n  // 'slide' or 'fade' or 'cube' or 'coverflow' or 'flip'\n\n  // Breakpoints\n  breakpoints: undefined,\n  breakpointsBase: 'window',\n  // Slides grid\n  spaceBetween: 0,\n  slidesPerView: 1,\n  slidesPerGroup: 1,\n  slidesPerGroupSkip: 0,\n  slidesPerGroupAuto: false,\n  centeredSlides: false,\n  centeredSlidesBounds: false,\n  slidesOffsetBefore: 0,\n  // in px\n  slidesOffsetAfter: 0,\n  // in px\n  normalizeSlideIndex: true,\n  centerInsufficientSlides: false,\n  // Disable swiper and hide navigation when container not overflow\n  watchOverflow: true,\n  // Round length\n  roundLengths: false,\n  // Touches\n  touchRatio: 1,\n  touchAngle: 45,\n  simulateTouch: true,\n  shortSwipes: true,\n  longSwipes: true,\n  longSwipesRatio: 0.5,\n  longSwipesMs: 300,\n  followFinger: true,\n  allowTouchMove: true,\n  threshold: 5,\n  touchMoveStopPropagation: false,\n  touchStartPreventDefault: true,\n  touchStartForcePreventDefault: false,\n  touchReleaseOnEdges: false,\n  // Unique Navigation Elements\n  uniqueNavElements: true,\n  // Resistance\n  resistance: true,\n  resistanceRatio: 0.85,\n  // Progress\n  watchSlidesProgress: false,\n  // Cursor\n  grabCursor: false,\n  // Clicks\n  preventClicks: true,\n  preventClicksPropagation: true,\n  slideToClickedSlide: false,\n  // loop\n  loop: false,\n  loopedSlides: null,\n  loopPreventsSliding: true,\n  // rewind\n  rewind: false,\n  // Swiping/no swiping\n  allowSlidePrev: true,\n  allowSlideNext: true,\n  swipeHandler: null,\n  // '.swipe-handler',\n  noSwiping: true,\n  noSwipingClass: 'swiper-no-swiping',\n  noSwipingSelector: null,\n  // Passive Listeners\n  passiveListeners: true,\n  maxBackfaceHiddenSlides: 10,\n  // NS\n  containerModifierClass: 'swiper-',\n  // NEW\n  slideClass: 'swiper-slide',\n  slideActiveClass: 'swiper-slide-active',\n  slideVisibleClass: 'swiper-slide-visible',\n  slideNextClass: 'swiper-slide-next',\n  slidePrevClass: 'swiper-slide-prev',\n  wrapperClass: 'swiper-wrapper',\n  lazyPreloaderClass: 'swiper-lazy-preloader',\n  lazyPreloadPrevNext: 0,\n  // Callbacks\n  runCallbacksOnInit: true,\n  // Internals\n  _emitClasses: false\n};\n\nfunction moduleExtendParams(params, allModulesParams) {\n  return function extendParams(obj) {\n    if (obj === void 0) {\n      obj = {};\n    }\n    const moduleParamName = Object.keys(obj)[0];\n    const moduleParams = obj[moduleParamName];\n    if (typeof moduleParams !== 'object' || moduleParams === null) {\n      extend(allModulesParams, obj);\n      return;\n    }\n    if (['navigation', 'pagination', 'scrollbar'].indexOf(moduleParamName) >= 0 && params[moduleParamName] === true) {\n      params[moduleParamName] = {\n        auto: true\n      };\n    }\n    if (!(moduleParamName in params && 'enabled' in moduleParams)) {\n      extend(allModulesParams, obj);\n      return;\n    }\n    if (params[moduleParamName] === true) {\n      params[moduleParamName] = {\n        enabled: true\n      };\n    }\n    if (typeof params[moduleParamName] === 'object' && !('enabled' in params[moduleParamName])) {\n      params[moduleParamName].enabled = true;\n    }\n    if (!params[moduleParamName]) params[moduleParamName] = {\n      enabled: false\n    };\n    extend(allModulesParams, obj);\n  };\n}\n\n/* eslint no-param-reassign: \"off\" */\nconst prototypes = {\n  eventsEmitter,\n  update,\n  translate,\n  transition,\n  slide,\n  loop,\n  grabCursor,\n  events: events$1,\n  breakpoints,\n  checkOverflow: checkOverflow$1,\n  classes\n};\nconst extendedDefaults = {};\nclass Swiper {\n  constructor() {\n    let el;\n    let params;\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n    if (args.length === 1 && args[0].constructor && Object.prototype.toString.call(args[0]).slice(8, -1) === 'Object') {\n      params = args[0];\n    } else {\n      [el, params] = args;\n    }\n    if (!params) params = {};\n    params = extend({}, params);\n    if (el && !params.el) params.el = el;\n    const document = getDocument();\n    if (params.el && typeof params.el === 'string' && document.querySelectorAll(params.el).length > 1) {\n      const swipers = [];\n      document.querySelectorAll(params.el).forEach(containerEl => {\n        const newParams = extend({}, params, {\n          el: containerEl\n        });\n        swipers.push(new Swiper(newParams));\n      });\n      // eslint-disable-next-line no-constructor-return\n      return swipers;\n    }\n\n    // Swiper Instance\n    const swiper = this;\n    swiper.__swiper__ = true;\n    swiper.support = getSupport();\n    swiper.device = getDevice({\n      userAgent: params.userAgent\n    });\n    swiper.browser = getBrowser();\n    swiper.eventsListeners = {};\n    swiper.eventsAnyListeners = [];\n    swiper.modules = [...swiper.__modules__];\n    if (params.modules && Array.isArray(params.modules)) {\n      swiper.modules.push(...params.modules);\n    }\n    const allModulesParams = {};\n    swiper.modules.forEach(mod => {\n      mod({\n        params,\n        swiper,\n        extendParams: moduleExtendParams(params, allModulesParams),\n        on: swiper.on.bind(swiper),\n        once: swiper.once.bind(swiper),\n        off: swiper.off.bind(swiper),\n        emit: swiper.emit.bind(swiper)\n      });\n    });\n\n    // Extend defaults with modules params\n    const swiperParams = extend({}, defaults, allModulesParams);\n\n    // Extend defaults with passed params\n    swiper.params = extend({}, swiperParams, extendedDefaults, params);\n    swiper.originalParams = extend({}, swiper.params);\n    swiper.passedParams = extend({}, params);\n\n    // add event listeners\n    if (swiper.params && swiper.params.on) {\n      Object.keys(swiper.params.on).forEach(eventName => {\n        swiper.on(eventName, swiper.params.on[eventName]);\n      });\n    }\n    if (swiper.params && swiper.params.onAny) {\n      swiper.onAny(swiper.params.onAny);\n    }\n\n    // Extend Swiper\n    Object.assign(swiper, {\n      enabled: swiper.params.enabled,\n      el,\n      // Classes\n      classNames: [],\n      // Slides\n      slides: [],\n      slidesGrid: [],\n      snapGrid: [],\n      slidesSizesGrid: [],\n      // isDirection\n      isHorizontal() {\n        return swiper.params.direction === 'horizontal';\n      },\n      isVertical() {\n        return swiper.params.direction === 'vertical';\n      },\n      // Indexes\n      activeIndex: 0,\n      realIndex: 0,\n      //\n      isBeginning: true,\n      isEnd: false,\n      // Props\n      translate: 0,\n      previousTranslate: 0,\n      progress: 0,\n      velocity: 0,\n      animating: false,\n      cssOverflowAdjustment() {\n        // Returns 0 unless `translate` is > 2**23\n        // Should be subtracted from css values to prevent overflow\n        return Math.trunc(this.translate / 2 ** 23) * 2 ** 23;\n      },\n      // Locks\n      allowSlideNext: swiper.params.allowSlideNext,\n      allowSlidePrev: swiper.params.allowSlidePrev,\n      // Touch Events\n      touchEventsData: {\n        isTouched: undefined,\n        isMoved: undefined,\n        allowTouchCallbacks: undefined,\n        touchStartTime: undefined,\n        isScrolling: undefined,\n        currentTranslate: undefined,\n        startTranslate: undefined,\n        allowThresholdMove: undefined,\n        // Form elements to match\n        focusableElements: swiper.params.focusableElements,\n        // Last click time\n        lastClickTime: 0,\n        clickTimeout: undefined,\n        // Velocities\n        velocities: [],\n        allowMomentumBounce: undefined,\n        startMoving: undefined,\n        evCache: []\n      },\n      // Clicks\n      allowClick: true,\n      // Touches\n      allowTouchMove: swiper.params.allowTouchMove,\n      touches: {\n        startX: 0,\n        startY: 0,\n        currentX: 0,\n        currentY: 0,\n        diff: 0\n      },\n      // Images\n      imagesToLoad: [],\n      imagesLoaded: 0\n    });\n    swiper.emit('_swiper');\n\n    // Init\n    if (swiper.params.init) {\n      swiper.init();\n    }\n\n    // Return app instance\n    // eslint-disable-next-line no-constructor-return\n    return swiper;\n  }\n  getSlideIndex(slideEl) {\n    const {\n      slidesEl,\n      params\n    } = this;\n    const slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n    const firstSlideIndex = elementIndex(slides[0]);\n    return elementIndex(slideEl) - firstSlideIndex;\n  }\n  getSlideIndexByData(index) {\n    return this.getSlideIndex(this.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') * 1 === index)[0]);\n  }\n  recalcSlides() {\n    const swiper = this;\n    const {\n      slidesEl,\n      params\n    } = swiper;\n    swiper.slides = elementChildren(slidesEl, `.${params.slideClass}, swiper-slide`);\n  }\n  enable() {\n    const swiper = this;\n    if (swiper.enabled) return;\n    swiper.enabled = true;\n    if (swiper.params.grabCursor) {\n      swiper.setGrabCursor();\n    }\n    swiper.emit('enable');\n  }\n  disable() {\n    const swiper = this;\n    if (!swiper.enabled) return;\n    swiper.enabled = false;\n    if (swiper.params.grabCursor) {\n      swiper.unsetGrabCursor();\n    }\n    swiper.emit('disable');\n  }\n  setProgress(progress, speed) {\n    const swiper = this;\n    progress = Math.min(Math.max(progress, 0), 1);\n    const min = swiper.minTranslate();\n    const max = swiper.maxTranslate();\n    const current = (max - min) * progress + min;\n    swiper.translateTo(current, typeof speed === 'undefined' ? 0 : speed);\n    swiper.updateActiveIndex();\n    swiper.updateSlidesClasses();\n  }\n  emitContainerClasses() {\n    const swiper = this;\n    if (!swiper.params._emitClasses || !swiper.el) return;\n    const cls = swiper.el.className.split(' ').filter(className => {\n      return className.indexOf('swiper') === 0 || className.indexOf(swiper.params.containerModifierClass) === 0;\n    });\n    swiper.emit('_containerClasses', cls.join(' '));\n  }\n  getSlideClasses(slideEl) {\n    const swiper = this;\n    if (swiper.destroyed) return '';\n    return slideEl.className.split(' ').filter(className => {\n      return className.indexOf('swiper-slide') === 0 || className.indexOf(swiper.params.slideClass) === 0;\n    }).join(' ');\n  }\n  emitSlidesClasses() {\n    const swiper = this;\n    if (!swiper.params._emitClasses || !swiper.el) return;\n    const updates = [];\n    swiper.slides.forEach(slideEl => {\n      const classNames = swiper.getSlideClasses(slideEl);\n      updates.push({\n        slideEl,\n        classNames\n      });\n      swiper.emit('_slideClass', slideEl, classNames);\n    });\n    swiper.emit('_slideClasses', updates);\n  }\n  slidesPerViewDynamic(view, exact) {\n    if (view === void 0) {\n      view = 'current';\n    }\n    if (exact === void 0) {\n      exact = false;\n    }\n    const swiper = this;\n    const {\n      params,\n      slides,\n      slidesGrid,\n      slidesSizesGrid,\n      size: swiperSize,\n      activeIndex\n    } = swiper;\n    let spv = 1;\n    if (params.centeredSlides) {\n      let slideSize = slides[activeIndex] ? slides[activeIndex].swiperSlideSize : 0;\n      let breakLoop;\n      for (let i = activeIndex + 1; i < slides.length; i += 1) {\n        if (slides[i] && !breakLoop) {\n          slideSize += slides[i].swiperSlideSize;\n          spv += 1;\n          if (slideSize > swiperSize) breakLoop = true;\n        }\n      }\n      for (let i = activeIndex - 1; i >= 0; i -= 1) {\n        if (slides[i] && !breakLoop) {\n          slideSize += slides[i].swiperSlideSize;\n          spv += 1;\n          if (slideSize > swiperSize) breakLoop = true;\n        }\n      }\n    } else {\n      // eslint-disable-next-line\n      if (view === 'current') {\n        for (let i = activeIndex + 1; i < slides.length; i += 1) {\n          const slideInView = exact ? slidesGrid[i] + slidesSizesGrid[i] - slidesGrid[activeIndex] < swiperSize : slidesGrid[i] - slidesGrid[activeIndex] < swiperSize;\n          if (slideInView) {\n            spv += 1;\n          }\n        }\n      } else {\n        // previous\n        for (let i = activeIndex - 1; i >= 0; i -= 1) {\n          const slideInView = slidesGrid[activeIndex] - slidesGrid[i] < swiperSize;\n          if (slideInView) {\n            spv += 1;\n          }\n        }\n      }\n    }\n    return spv;\n  }\n  update() {\n    const swiper = this;\n    if (!swiper || swiper.destroyed) return;\n    const {\n      snapGrid,\n      params\n    } = swiper;\n    // Breakpoints\n    if (params.breakpoints) {\n      swiper.setBreakpoint();\n    }\n    [...swiper.el.querySelectorAll('[loading=\"lazy\"]')].forEach(imageEl => {\n      if (imageEl.complete) {\n        processLazyPreloader(swiper, imageEl);\n      }\n    });\n    swiper.updateSize();\n    swiper.updateSlides();\n    swiper.updateProgress();\n    swiper.updateSlidesClasses();\n    function setTranslate() {\n      const translateValue = swiper.rtlTranslate ? swiper.translate * -1 : swiper.translate;\n      const newTranslate = Math.min(Math.max(translateValue, swiper.maxTranslate()), swiper.minTranslate());\n      swiper.setTranslate(newTranslate);\n      swiper.updateActiveIndex();\n      swiper.updateSlidesClasses();\n    }\n    let translated;\n    if (params.freeMode && params.freeMode.enabled && !params.cssMode) {\n      setTranslate();\n      if (params.autoHeight) {\n        swiper.updateAutoHeight();\n      }\n    } else {\n      if ((params.slidesPerView === 'auto' || params.slidesPerView > 1) && swiper.isEnd && !params.centeredSlides) {\n        const slides = swiper.virtual && params.virtual.enabled ? swiper.virtual.slides : swiper.slides;\n        translated = swiper.slideTo(slides.length - 1, 0, false, true);\n      } else {\n        translated = swiper.slideTo(swiper.activeIndex, 0, false, true);\n      }\n      if (!translated) {\n        setTranslate();\n      }\n    }\n    if (params.watchOverflow && snapGrid !== swiper.snapGrid) {\n      swiper.checkOverflow();\n    }\n    swiper.emit('update');\n  }\n  changeDirection(newDirection, needUpdate) {\n    if (needUpdate === void 0) {\n      needUpdate = true;\n    }\n    const swiper = this;\n    const currentDirection = swiper.params.direction;\n    if (!newDirection) {\n      // eslint-disable-next-line\n      newDirection = currentDirection === 'horizontal' ? 'vertical' : 'horizontal';\n    }\n    if (newDirection === currentDirection || newDirection !== 'horizontal' && newDirection !== 'vertical') {\n      return swiper;\n    }\n    swiper.el.classList.remove(`${swiper.params.containerModifierClass}${currentDirection}`);\n    swiper.el.classList.add(`${swiper.params.containerModifierClass}${newDirection}`);\n    swiper.emitContainerClasses();\n    swiper.params.direction = newDirection;\n    swiper.slides.forEach(slideEl => {\n      if (newDirection === 'vertical') {\n        slideEl.style.width = '';\n      } else {\n        slideEl.style.height = '';\n      }\n    });\n    swiper.emit('changeDirection');\n    if (needUpdate) swiper.update();\n    return swiper;\n  }\n  changeLanguageDirection(direction) {\n    const swiper = this;\n    if (swiper.rtl && direction === 'rtl' || !swiper.rtl && direction === 'ltr') return;\n    swiper.rtl = direction === 'rtl';\n    swiper.rtlTranslate = swiper.params.direction === 'horizontal' && swiper.rtl;\n    if (swiper.rtl) {\n      swiper.el.classList.add(`${swiper.params.containerModifierClass}rtl`);\n      swiper.el.dir = 'rtl';\n    } else {\n      swiper.el.classList.remove(`${swiper.params.containerModifierClass}rtl`);\n      swiper.el.dir = 'ltr';\n    }\n    swiper.update();\n  }\n  mount(element) {\n    const swiper = this;\n    if (swiper.mounted) return true;\n\n    // Find el\n    let el = element || swiper.params.el;\n    if (typeof el === 'string') {\n      el = document.querySelector(el);\n    }\n    if (!el) {\n      return false;\n    }\n    el.swiper = swiper;\n    if (el.parentNode && el.parentNode.host && el.parentNode.host.nodeName === 'SWIPER-CONTAINER') {\n      swiper.isElement = true;\n    }\n    const getWrapperSelector = () => {\n      return `.${(swiper.params.wrapperClass || '').trim().split(' ').join('.')}`;\n    };\n    const getWrapper = () => {\n      if (el && el.shadowRoot && el.shadowRoot.querySelector) {\n        const res = el.shadowRoot.querySelector(getWrapperSelector());\n        // Children needs to return slot items\n        return res;\n      }\n      return elementChildren(el, getWrapperSelector())[0];\n    };\n    // Find Wrapper\n    let wrapperEl = getWrapper();\n    if (!wrapperEl && swiper.params.createElements) {\n      wrapperEl = createElement('div', swiper.params.wrapperClass);\n      el.append(wrapperEl);\n      elementChildren(el, `.${swiper.params.slideClass}`).forEach(slideEl => {\n        wrapperEl.append(slideEl);\n      });\n    }\n    Object.assign(swiper, {\n      el,\n      wrapperEl,\n      slidesEl: swiper.isElement && !el.parentNode.host.slideSlots ? el.parentNode.host : wrapperEl,\n      hostEl: swiper.isElement ? el.parentNode.host : el,\n      mounted: true,\n      // RTL\n      rtl: el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl',\n      rtlTranslate: swiper.params.direction === 'horizontal' && (el.dir.toLowerCase() === 'rtl' || elementStyle(el, 'direction') === 'rtl'),\n      wrongRTL: elementStyle(wrapperEl, 'display') === '-webkit-box'\n    });\n    return true;\n  }\n  init(el) {\n    const swiper = this;\n    if (swiper.initialized) return swiper;\n    const mounted = swiper.mount(el);\n    if (mounted === false) return swiper;\n    swiper.emit('beforeInit');\n\n    // Set breakpoint\n    if (swiper.params.breakpoints) {\n      swiper.setBreakpoint();\n    }\n\n    // Add Classes\n    swiper.addClasses();\n\n    // Update size\n    swiper.updateSize();\n\n    // Update slides\n    swiper.updateSlides();\n    if (swiper.params.watchOverflow) {\n      swiper.checkOverflow();\n    }\n\n    // Set Grab Cursor\n    if (swiper.params.grabCursor && swiper.enabled) {\n      swiper.setGrabCursor();\n    }\n\n    // Slide To Initial Slide\n    if (swiper.params.loop && swiper.virtual && swiper.params.virtual.enabled) {\n      swiper.slideTo(swiper.params.initialSlide + swiper.virtual.slidesBefore, 0, swiper.params.runCallbacksOnInit, false, true);\n    } else {\n      swiper.slideTo(swiper.params.initialSlide, 0, swiper.params.runCallbacksOnInit, false, true);\n    }\n\n    // Create loop\n    if (swiper.params.loop) {\n      swiper.loopCreate();\n    }\n\n    // Attach events\n    swiper.attachEvents();\n    [...swiper.el.querySelectorAll('[loading=\"lazy\"]')].forEach(imageEl => {\n      if (imageEl.complete) {\n        processLazyPreloader(swiper, imageEl);\n      } else {\n        imageEl.addEventListener('load', e => {\n          processLazyPreloader(swiper, e.target);\n        });\n      }\n    });\n    preload(swiper);\n\n    // Init Flag\n    swiper.initialized = true;\n    preload(swiper);\n\n    // Emit\n    swiper.emit('init');\n    swiper.emit('afterInit');\n    return swiper;\n  }\n  destroy(deleteInstance, cleanStyles) {\n    if (deleteInstance === void 0) {\n      deleteInstance = true;\n    }\n    if (cleanStyles === void 0) {\n      cleanStyles = true;\n    }\n    const swiper = this;\n    const {\n      params,\n      el,\n      wrapperEl,\n      slides\n    } = swiper;\n    if (typeof swiper.params === 'undefined' || swiper.destroyed) {\n      return null;\n    }\n    swiper.emit('beforeDestroy');\n\n    // Init Flag\n    swiper.initialized = false;\n\n    // Detach events\n    swiper.detachEvents();\n\n    // Destroy loop\n    if (params.loop) {\n      swiper.loopDestroy();\n    }\n\n    // Cleanup styles\n    if (cleanStyles) {\n      swiper.removeClasses();\n      el.removeAttribute('style');\n      wrapperEl.removeAttribute('style');\n      if (slides && slides.length) {\n        slides.forEach(slideEl => {\n          slideEl.classList.remove(params.slideVisibleClass, params.slideActiveClass, params.slideNextClass, params.slidePrevClass);\n          slideEl.removeAttribute('style');\n          slideEl.removeAttribute('data-swiper-slide-index');\n        });\n      }\n    }\n    swiper.emit('destroy');\n\n    // Detach emitter events\n    Object.keys(swiper.eventsListeners).forEach(eventName => {\n      swiper.off(eventName);\n    });\n    if (deleteInstance !== false) {\n      swiper.el.swiper = null;\n      deleteProps(swiper);\n    }\n    swiper.destroyed = true;\n    return null;\n  }\n  static extendDefaults(newDefaults) {\n    extend(extendedDefaults, newDefaults);\n  }\n  static get extendedDefaults() {\n    return extendedDefaults;\n  }\n  static get defaults() {\n    return defaults;\n  }\n  static installModule(mod) {\n    if (!Swiper.prototype.__modules__) Swiper.prototype.__modules__ = [];\n    const modules = Swiper.prototype.__modules__;\n    if (typeof mod === 'function' && modules.indexOf(mod) < 0) {\n      modules.push(mod);\n    }\n  }\n  static use(module) {\n    if (Array.isArray(module)) {\n      module.forEach(m => Swiper.installModule(m));\n      return Swiper;\n    }\n    Swiper.installModule(module);\n    return Swiper;\n  }\n}\nObject.keys(prototypes).forEach(prototypeGroup => {\n  Object.keys(prototypes[prototypeGroup]).forEach(protoMethod => {\n    Swiper.prototype[protoMethod] = prototypes[prototypeGroup][protoMethod];\n  });\n});\nSwiper.use([Resize, Observer]);\n\nexport { Swiper as S, defaults as d };\n","/**\n * SSR Window 4.0.2\n * Better handling for window object in SSR environment\n * https://github.com/nolimits4web/ssr-window\n *\n * Copyright 2021, Vladimir Kharlampidi\n *\n * Licensed under MIT\n *\n * Released on: December 13, 2021\n */\n/* eslint-disable no-param-reassign */\nfunction isObject(obj) {\n  return obj !== null && typeof obj === 'object' && 'constructor' in obj && obj.constructor === Object;\n}\nfunction extend(target, src) {\n  if (target === void 0) {\n    target = {};\n  }\n  if (src === void 0) {\n    src = {};\n  }\n  Object.keys(src).forEach(key => {\n    if (typeof target[key] === 'undefined') target[key] = src[key];else if (isObject(src[key]) && isObject(target[key]) && Object.keys(src[key]).length > 0) {\n      extend(target[key], src[key]);\n    }\n  });\n}\nconst ssrDocument = {\n  body: {},\n  addEventListener() {},\n  removeEventListener() {},\n  activeElement: {\n    blur() {},\n    nodeName: ''\n  },\n  querySelector() {\n    return null;\n  },\n  querySelectorAll() {\n    return [];\n  },\n  getElementById() {\n    return null;\n  },\n  createEvent() {\n    return {\n      initEvent() {}\n    };\n  },\n  createElement() {\n    return {\n      children: [],\n      childNodes: [],\n      style: {},\n      setAttribute() {},\n      getElementsByTagName() {\n        return [];\n      }\n    };\n  },\n  createElementNS() {\n    return {};\n  },\n  importNode() {\n    return null;\n  },\n  location: {\n    hash: '',\n    host: '',\n    hostname: '',\n    href: '',\n    origin: '',\n    pathname: '',\n    protocol: '',\n    search: ''\n  }\n};\nfunction getDocument() {\n  const doc = typeof document !== 'undefined' ? document : {};\n  extend(doc, ssrDocument);\n  return doc;\n}\nconst ssrWindow = {\n  document: ssrDocument,\n  navigator: {\n    userAgent: ''\n  },\n  location: {\n    hash: '',\n    host: '',\n    hostname: '',\n    href: '',\n    origin: '',\n    pathname: '',\n    protocol: '',\n    search: ''\n  },\n  history: {\n    replaceState() {},\n    pushState() {},\n    go() {},\n    back() {}\n  },\n  CustomEvent: function CustomEvent() {\n    return this;\n  },\n  addEventListener() {},\n  removeEventListener() {},\n  getComputedStyle() {\n    return {\n      getPropertyValue() {\n        return '';\n      }\n    };\n  },\n  Image() {},\n  Date() {},\n  screen: {},\n  setTimeout() {},\n  clearTimeout() {},\n  matchMedia() {\n    return {};\n  },\n  requestAnimationFrame(callback) {\n    if (typeof setTimeout === 'undefined') {\n      callback();\n      return null;\n    }\n    return setTimeout(callback, 0);\n  },\n  cancelAnimationFrame(id) {\n    if (typeof setTimeout === 'undefined') {\n      return;\n    }\n    clearTimeout(id);\n  }\n};\nfunction getWindow() {\n  const win = typeof window !== 'undefined' ? window : {};\n  extend(win, ssrWindow);\n  return win;\n}\n\nexport { getWindow as a, getDocument as g };\n","import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';\n\nfunction deleteProps(obj) {\n  const object = obj;\n  Object.keys(object).forEach(key => {\n    try {\n      object[key] = null;\n    } catch (e) {\n      // no getter for object\n    }\n    try {\n      delete object[key];\n    } catch (e) {\n      // something got wrong\n    }\n  });\n}\nfunction nextTick(callback, delay) {\n  if (delay === void 0) {\n    delay = 0;\n  }\n  return setTimeout(callback, delay);\n}\nfunction now() {\n  return Date.now();\n}\nfunction getComputedStyle(el) {\n  const window = getWindow();\n  let style;\n  if (window.getComputedStyle) {\n    style = window.getComputedStyle(el, null);\n  }\n  if (!style && el.currentStyle) {\n    style = el.currentStyle;\n  }\n  if (!style) {\n    style = el.style;\n  }\n  return style;\n}\nfunction getTranslate(el, axis) {\n  if (axis === void 0) {\n    axis = 'x';\n  }\n  const window = getWindow();\n  let matrix;\n  let curTransform;\n  let transformMatrix;\n  const curStyle = getComputedStyle(el);\n  if (window.WebKitCSSMatrix) {\n    curTransform = curStyle.transform || curStyle.webkitTransform;\n    if (curTransform.split(',').length > 6) {\n      curTransform = curTransform.split(', ').map(a => a.replace(',', '.')).join(', ');\n    }\n    // Some old versions of Webkit choke when 'none' is passed; pass\n    // empty string instead in this case\n    transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform);\n  } else {\n    transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,');\n    matrix = transformMatrix.toString().split(',');\n  }\n  if (axis === 'x') {\n    // Latest Chrome and webkits Fix\n    if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41;\n    // Crazy IE10 Matrix\n    else if (matrix.length === 16) curTransform = parseFloat(matrix[12]);\n    // Normal Browsers\n    else curTransform = parseFloat(matrix[4]);\n  }\n  if (axis === 'y') {\n    // Latest Chrome and webkits Fix\n    if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42;\n    // Crazy IE10 Matrix\n    else if (matrix.length === 16) curTransform = parseFloat(matrix[13]);\n    // Normal Browsers\n    else curTransform = parseFloat(matrix[5]);\n  }\n  return curTransform || 0;\n}\nfunction isObject(o) {\n  return typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object';\n}\nfunction isNode(node) {\n  // eslint-disable-next-line\n  if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') {\n    return node instanceof HTMLElement;\n  }\n  return node && (node.nodeType === 1 || node.nodeType === 11);\n}\nfunction extend() {\n  const to = Object(arguments.length <= 0 ? undefined : arguments[0]);\n  const noExtend = ['__proto__', 'constructor', 'prototype'];\n  for (let i = 1; i < arguments.length; i += 1) {\n    const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];\n    if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {\n      const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);\n      for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {\n        const nextKey = keysArray[nextIndex];\n        const desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n        if (desc !== undefined && desc.enumerable) {\n          if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n            if (nextSource[nextKey].__swiper__) {\n              to[nextKey] = nextSource[nextKey];\n            } else {\n              extend(to[nextKey], nextSource[nextKey]);\n            }\n          } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) {\n            to[nextKey] = {};\n            if (nextSource[nextKey].__swiper__) {\n              to[nextKey] = nextSource[nextKey];\n            } else {\n              extend(to[nextKey], nextSource[nextKey]);\n            }\n          } else {\n            to[nextKey] = nextSource[nextKey];\n          }\n        }\n      }\n    }\n  }\n  return to;\n}\nfunction setCSSProperty(el, varName, varValue) {\n  el.style.setProperty(varName, varValue);\n}\nfunction animateCSSModeScroll(_ref) {\n  let {\n    swiper,\n    targetPosition,\n    side\n  } = _ref;\n  const window = getWindow();\n  const startPosition = -swiper.translate;\n  let startTime = null;\n  let time;\n  const duration = swiper.params.speed;\n  swiper.wrapperEl.style.scrollSnapType = 'none';\n  window.cancelAnimationFrame(swiper.cssModeFrameID);\n  const dir = targetPosition > startPosition ? 'next' : 'prev';\n  const isOutOfBound = (current, target) => {\n    return dir === 'next' && current >= target || dir === 'prev' && current <= target;\n  };\n  const animate = () => {\n    time = new Date().getTime();\n    if (startTime === null) {\n      startTime = time;\n    }\n    const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);\n    const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;\n    let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);\n    if (isOutOfBound(currentPosition, targetPosition)) {\n      currentPosition = targetPosition;\n    }\n    swiper.wrapperEl.scrollTo({\n      [side]: currentPosition\n    });\n    if (isOutOfBound(currentPosition, targetPosition)) {\n      swiper.wrapperEl.style.overflow = 'hidden';\n      swiper.wrapperEl.style.scrollSnapType = '';\n      setTimeout(() => {\n        swiper.wrapperEl.style.overflow = '';\n        swiper.wrapperEl.scrollTo({\n          [side]: currentPosition\n        });\n      });\n      window.cancelAnimationFrame(swiper.cssModeFrameID);\n      return;\n    }\n    swiper.cssModeFrameID = window.requestAnimationFrame(animate);\n  };\n  animate();\n}\nfunction getSlideTransformEl(slideEl) {\n  return slideEl.querySelector('.swiper-slide-transform') || slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform') || slideEl;\n}\nfunction elementChildren(element, selector) {\n  if (selector === void 0) {\n    selector = '';\n  }\n  return [...element.children].filter(el => el.matches(selector));\n}\nfunction createElement(tag, classes) {\n  if (classes === void 0) {\n    classes = [];\n  }\n  const el = document.createElement(tag);\n  el.classList.add(...(Array.isArray(classes) ? classes : [classes]));\n  return el;\n}\nfunction elementOffset(el) {\n  const window = getWindow();\n  const document = getDocument();\n  const box = el.getBoundingClientRect();\n  const body = document.body;\n  const clientTop = el.clientTop || body.clientTop || 0;\n  const clientLeft = el.clientLeft || body.clientLeft || 0;\n  const scrollTop = el === window ? window.scrollY : el.scrollTop;\n  const scrollLeft = el === window ? window.scrollX : el.scrollLeft;\n  return {\n    top: box.top + scrollTop - clientTop,\n    left: box.left + scrollLeft - clientLeft\n  };\n}\nfunction elementPrevAll(el, selector) {\n  const prevEls = [];\n  while (el.previousElementSibling) {\n    const prev = el.previousElementSibling; // eslint-disable-line\n    if (selector) {\n      if (prev.matches(selector)) prevEls.push(prev);\n    } else prevEls.push(prev);\n    el = prev;\n  }\n  return prevEls;\n}\nfunction elementNextAll(el, selector) {\n  const nextEls = [];\n  while (el.nextElementSibling) {\n    const next = el.nextElementSibling; // eslint-disable-line\n    if (selector) {\n      if (next.matches(selector)) nextEls.push(next);\n    } else nextEls.push(next);\n    el = next;\n  }\n  return nextEls;\n}\nfunction elementStyle(el, prop) {\n  const window = getWindow();\n  return window.getComputedStyle(el, null).getPropertyValue(prop);\n}\nfunction elementIndex(el) {\n  let child = el;\n  let i;\n  if (child) {\n    i = 0;\n    // eslint-disable-next-line\n    while ((child = child.previousSibling) !== null) {\n      if (child.nodeType === 1) i += 1;\n    }\n    return i;\n  }\n  return undefined;\n}\nfunction elementParents(el, selector) {\n  const parents = []; // eslint-disable-line\n  let parent = el.parentElement; // eslint-disable-line\n  while (parent) {\n    if (selector) {\n      if (parent.matches(selector)) parents.push(parent);\n    } else {\n      parents.push(parent);\n    }\n    parent = parent.parentElement;\n  }\n  return parents;\n}\nfunction elementTransitionEnd(el, callback) {\n  function fireCallBack(e) {\n    if (e.target !== el) return;\n    callback.call(el, e);\n    el.removeEventListener('transitionend', fireCallBack);\n  }\n  if (callback) {\n    el.addEventListener('transitionend', fireCallBack);\n  }\n}\nfunction elementOuterSize(el, size, includeMargins) {\n  const window = getWindow();\n  if (includeMargins) {\n    return el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window.getComputedStyle(el, null).getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom'));\n  }\n  return el.offsetWidth;\n}\n\nexport { elementParents as a, elementOffset as b, createElement as c, now as d, elementChildren as e, elementOuterSize as f, elementIndex as g, getTranslate as h, elementTransitionEnd as i, isObject as j, getSlideTransformEl as k, elementStyle as l, elementNextAll as m, nextTick as n, elementPrevAll as o, animateCSSModeScroll as p, extend as q, deleteProps as r, setCSSProperty as s };\n","export {default as Virtual} from './virtual.mjs';\nexport {default as Keyboard} from './keyboard.mjs';\nexport {default as Mousewheel} from './mousewheel.mjs';\nexport {default as Navigation} from './navigation.mjs';\nexport {default as Pagination} from './pagination.mjs';\nexport {default as Scrollbar} from './scrollbar.mjs';\nexport {default as Parallax} from './parallax.mjs';\nexport {default as Zoom} from './zoom.mjs';\nexport {default as Controller} from './controller.mjs';\nexport {default as A11y} from './a11y.mjs';\nexport {default as History} from './history.mjs';\nexport {default as HashNavigation} from './hash-navigation.mjs';\nexport {default as Autoplay} from './autoplay.mjs';\nexport {default as Thumbs} from './thumbs.mjs';\nexport {default as FreeMode} from './free-mode.mjs';\nexport {default as Grid} from './grid.mjs';\nexport {default as Manipulation} from './manipulation.mjs';\nexport {default as EffectFade} from './effect-fade.mjs';\nexport {default as EffectCube} from './effect-cube.mjs';\nexport {default as EffectFlip} from './effect-flip.mjs';\nexport {default as EffectCoverflow} from './effect-coverflow.mjs';\nexport {default as EffectCreative} from './effect-creative.mjs';\nexport {default as EffectCards} from './effect-cards.mjs';","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { s as setCSSProperty, e as elementChildren, c as createElement } from '../shared/utils.mjs';\n\nfunction Virtual(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on,\n    emit\n  } = _ref;\n  extendParams({\n    virtual: {\n      enabled: false,\n      slides: [],\n      cache: true,\n      renderSlide: null,\n      renderExternal: null,\n      renderExternalUpdate: true,\n      addSlidesBefore: 0,\n      addSlidesAfter: 0\n    }\n  });\n  let cssModeTimeout;\n  const document = getDocument();\n  swiper.virtual = {\n    cache: {},\n    from: undefined,\n    to: undefined,\n    slides: [],\n    offset: 0,\n    slidesGrid: []\n  };\n  const tempDOM = document.createElement('div');\n  function renderSlide(slide, index) {\n    const params = swiper.params.virtual;\n    if (params.cache && swiper.virtual.cache[index]) {\n      return swiper.virtual.cache[index];\n    }\n    // eslint-disable-next-line\n    let slideEl;\n    if (params.renderSlide) {\n      slideEl = params.renderSlide.call(swiper, slide, index);\n      if (typeof slideEl === 'string') {\n        tempDOM.innerHTML = slideEl;\n        slideEl = tempDOM.children[0];\n      }\n    } else if (swiper.isElement) {\n      slideEl = createElement('swiper-slide');\n    } else {\n      slideEl = createElement('div', swiper.params.slideClass);\n    }\n    slideEl.setAttribute('data-swiper-slide-index', index);\n    if (!params.renderSlide) {\n      slideEl.innerHTML = slide;\n    }\n    if (params.cache) swiper.virtual.cache[index] = slideEl;\n    return slideEl;\n  }\n  function update(force) {\n    const {\n      slidesPerView,\n      slidesPerGroup,\n      centeredSlides,\n      loop: isLoop\n    } = swiper.params;\n    const {\n      addSlidesBefore,\n      addSlidesAfter\n    } = swiper.params.virtual;\n    const {\n      from: previousFrom,\n      to: previousTo,\n      slides,\n      slidesGrid: previousSlidesGrid,\n      offset: previousOffset\n    } = swiper.virtual;\n    if (!swiper.params.cssMode) {\n      swiper.updateActiveIndex();\n    }\n    const activeIndex = swiper.activeIndex || 0;\n    let offsetProp;\n    if (swiper.rtlTranslate) offsetProp = 'right';else offsetProp = swiper.isHorizontal() ? 'left' : 'top';\n    let slidesAfter;\n    let slidesBefore;\n    if (centeredSlides) {\n      slidesAfter = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesAfter;\n      slidesBefore = Math.floor(slidesPerView / 2) + slidesPerGroup + addSlidesBefore;\n    } else {\n      slidesAfter = slidesPerView + (slidesPerGroup - 1) + addSlidesAfter;\n      slidesBefore = (isLoop ? slidesPerView : slidesPerGroup) + addSlidesBefore;\n    }\n    let from = activeIndex - slidesBefore;\n    let to = activeIndex + slidesAfter;\n    if (!isLoop) {\n      from = Math.max(from, 0);\n      to = Math.min(to, slides.length - 1);\n    }\n    let offset = (swiper.slidesGrid[from] || 0) - (swiper.slidesGrid[0] || 0);\n    if (isLoop && activeIndex >= slidesBefore) {\n      from -= slidesBefore;\n      if (!centeredSlides) offset += swiper.slidesGrid[0];\n    } else if (isLoop && activeIndex < slidesBefore) {\n      from = -slidesBefore;\n      if (centeredSlides) offset += swiper.slidesGrid[0];\n    }\n    Object.assign(swiper.virtual, {\n      from,\n      to,\n      offset,\n      slidesGrid: swiper.slidesGrid,\n      slidesBefore,\n      slidesAfter\n    });\n    function onRendered() {\n      swiper.updateSlides();\n      swiper.updateProgress();\n      swiper.updateSlidesClasses();\n      emit('virtualUpdate');\n    }\n    if (previousFrom === from && previousTo === to && !force) {\n      if (swiper.slidesGrid !== previousSlidesGrid && offset !== previousOffset) {\n        swiper.slides.forEach(slideEl => {\n          slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;\n        });\n      }\n      swiper.updateProgress();\n      emit('virtualUpdate');\n      return;\n    }\n    if (swiper.params.virtual.renderExternal) {\n      swiper.params.virtual.renderExternal.call(swiper, {\n        offset,\n        from,\n        to,\n        slides: function getSlides() {\n          const slidesToRender = [];\n          for (let i = from; i <= to; i += 1) {\n            slidesToRender.push(slides[i]);\n          }\n          return slidesToRender;\n        }()\n      });\n      if (swiper.params.virtual.renderExternalUpdate) {\n        onRendered();\n      } else {\n        emit('virtualUpdate');\n      }\n      return;\n    }\n    const prependIndexes = [];\n    const appendIndexes = [];\n    const getSlideIndex = index => {\n      let slideIndex = index;\n      if (index < 0) {\n        slideIndex = slides.length + index;\n      } else if (slideIndex >= slides.length) {\n        // eslint-disable-next-line\n        slideIndex = slideIndex - slides.length;\n      }\n      return slideIndex;\n    };\n    if (force) {\n      swiper.slidesEl.querySelectorAll(`.${swiper.params.slideClass}, swiper-slide`).forEach(slideEl => {\n        slideEl.remove();\n      });\n    } else {\n      for (let i = previousFrom; i <= previousTo; i += 1) {\n        if (i < from || i > to) {\n          const slideIndex = getSlideIndex(i);\n          swiper.slidesEl.querySelectorAll(`.${swiper.params.slideClass}[data-swiper-slide-index=\"${slideIndex}\"], swiper-slide[data-swiper-slide-index=\"${slideIndex}\"]`).forEach(slideEl => {\n            slideEl.remove();\n          });\n        }\n      }\n    }\n    const loopFrom = isLoop ? -slides.length : 0;\n    const loopTo = isLoop ? slides.length * 2 : slides.length;\n    for (let i = loopFrom; i < loopTo; i += 1) {\n      if (i >= from && i <= to) {\n        const slideIndex = getSlideIndex(i);\n        if (typeof previousTo === 'undefined' || force) {\n          appendIndexes.push(slideIndex);\n        } else {\n          if (i > previousTo) appendIndexes.push(slideIndex);\n          if (i < previousFrom) prependIndexes.push(slideIndex);\n        }\n      }\n    }\n    appendIndexes.forEach(index => {\n      swiper.slidesEl.append(renderSlide(slides[index], index));\n    });\n    if (isLoop) {\n      for (let i = prependIndexes.length - 1; i >= 0; i -= 1) {\n        const index = prependIndexes[i];\n        swiper.slidesEl.prepend(renderSlide(slides[index], index));\n      }\n    } else {\n      prependIndexes.sort((a, b) => b - a);\n      prependIndexes.forEach(index => {\n        swiper.slidesEl.prepend(renderSlide(slides[index], index));\n      });\n    }\n    elementChildren(swiper.slidesEl, '.swiper-slide, swiper-slide').forEach(slideEl => {\n      slideEl.style[offsetProp] = `${offset - Math.abs(swiper.cssOverflowAdjustment())}px`;\n    });\n    onRendered();\n  }\n  function appendSlide(slides) {\n    if (typeof slides === 'object' && 'length' in slides) {\n      for (let i = 0; i < slides.length; i += 1) {\n        if (slides[i]) swiper.virtual.slides.push(slides[i]);\n      }\n    } else {\n      swiper.virtual.slides.push(slides);\n    }\n    update(true);\n  }\n  function prependSlide(slides) {\n    const activeIndex = swiper.activeIndex;\n    let newActiveIndex = activeIndex + 1;\n    let numberOfNewSlides = 1;\n    if (Array.isArray(slides)) {\n      for (let i = 0; i < slides.length; i += 1) {\n        if (slides[i]) swiper.virtual.slides.unshift(slides[i]);\n      }\n      newActiveIndex = activeIndex + slides.length;\n      numberOfNewSlides = slides.length;\n    } else {\n      swiper.virtual.slides.unshift(slides);\n    }\n    if (swiper.params.virtual.cache) {\n      const cache = swiper.virtual.cache;\n      const newCache = {};\n      Object.keys(cache).forEach(cachedIndex => {\n        const cachedEl = cache[cachedIndex];\n        const cachedElIndex = cachedEl.getAttribute('data-swiper-slide-index');\n        if (cachedElIndex) {\n          cachedEl.setAttribute('data-swiper-slide-index', parseInt(cachedElIndex, 10) + numberOfNewSlides);\n        }\n        newCache[parseInt(cachedIndex, 10) + numberOfNewSlides] = cachedEl;\n      });\n      swiper.virtual.cache = newCache;\n    }\n    update(true);\n    swiper.slideTo(newActiveIndex, 0);\n  }\n  function removeSlide(slidesIndexes) {\n    if (typeof slidesIndexes === 'undefined' || slidesIndexes === null) return;\n    let activeIndex = swiper.activeIndex;\n    if (Array.isArray(slidesIndexes)) {\n      for (let i = slidesIndexes.length - 1; i >= 0; i -= 1) {\n        swiper.virtual.slides.splice(slidesIndexes[i], 1);\n        if (swiper.params.virtual.cache) {\n          delete swiper.virtual.cache[slidesIndexes[i]];\n        }\n        if (slidesIndexes[i] < activeIndex) activeIndex -= 1;\n        activeIndex = Math.max(activeIndex, 0);\n      }\n    } else {\n      swiper.virtual.slides.splice(slidesIndexes, 1);\n      if (swiper.params.virtual.cache) {\n        delete swiper.virtual.cache[slidesIndexes];\n      }\n      if (slidesIndexes < activeIndex) activeIndex -= 1;\n      activeIndex = Math.max(activeIndex, 0);\n    }\n    update(true);\n    swiper.slideTo(activeIndex, 0);\n  }\n  function removeAllSlides() {\n    swiper.virtual.slides = [];\n    if (swiper.params.virtual.cache) {\n      swiper.virtual.cache = {};\n    }\n    update(true);\n    swiper.slideTo(0, 0);\n  }\n  on('beforeInit', () => {\n    if (!swiper.params.virtual.enabled) return;\n    let domSlidesAssigned;\n    if (typeof swiper.passedParams.virtual.slides === 'undefined') {\n      const slides = [...swiper.slidesEl.children].filter(el => el.matches(`.${swiper.params.slideClass}, swiper-slide`));\n      if (slides && slides.length) {\n        swiper.virtual.slides = [...slides];\n        domSlidesAssigned = true;\n        slides.forEach((slideEl, slideIndex) => {\n          slideEl.setAttribute('data-swiper-slide-index', slideIndex);\n          swiper.virtual.cache[slideIndex] = slideEl;\n          slideEl.remove();\n        });\n      }\n    }\n    if (!domSlidesAssigned) {\n      swiper.virtual.slides = swiper.params.virtual.slides;\n    }\n    swiper.classNames.push(`${swiper.params.containerModifierClass}virtual`);\n    swiper.params.watchSlidesProgress = true;\n    swiper.originalParams.watchSlidesProgress = true;\n    if (!swiper.params.initialSlide) {\n      update();\n    }\n  });\n  on('setTranslate', () => {\n    if (!swiper.params.virtual.enabled) return;\n    if (swiper.params.cssMode && !swiper._immediateVirtual) {\n      clearTimeout(cssModeTimeout);\n      cssModeTimeout = setTimeout(() => {\n        update();\n      }, 100);\n    } else {\n      update();\n    }\n  });\n  on('init update resize', () => {\n    if (!swiper.params.virtual.enabled) return;\n    if (swiper.params.cssMode) {\n      setCSSProperty(swiper.wrapperEl, '--swiper-virtual-size', `${swiper.virtualSize}px`);\n    }\n  });\n  Object.assign(swiper.virtual, {\n    appendSlide,\n    prependSlide,\n    removeSlide,\n    removeAllSlides,\n    update\n  });\n}\n\nexport { Virtual as default };\n","import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { a as elementParents, b as elementOffset } from '../shared/utils.mjs';\n\n/* eslint-disable consistent-return */\nfunction Keyboard(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on,\n    emit\n  } = _ref;\n  const document = getDocument();\n  const window = getWindow();\n  swiper.keyboard = {\n    enabled: false\n  };\n  extendParams({\n    keyboard: {\n      enabled: false,\n      onlyInViewport: true,\n      pageUpDown: true\n    }\n  });\n  function handle(event) {\n    if (!swiper.enabled) return;\n    const {\n      rtlTranslate: rtl\n    } = swiper;\n    let e = event;\n    if (e.originalEvent) e = e.originalEvent; // jquery fix\n    const kc = e.keyCode || e.charCode;\n    const pageUpDown = swiper.params.keyboard.pageUpDown;\n    const isPageUp = pageUpDown && kc === 33;\n    const isPageDown = pageUpDown && kc === 34;\n    const isArrowLeft = kc === 37;\n    const isArrowRight = kc === 39;\n    const isArrowUp = kc === 38;\n    const isArrowDown = kc === 40;\n    // Directions locks\n    if (!swiper.allowSlideNext && (swiper.isHorizontal() && isArrowRight || swiper.isVertical() && isArrowDown || isPageDown)) {\n      return false;\n    }\n    if (!swiper.allowSlidePrev && (swiper.isHorizontal() && isArrowLeft || swiper.isVertical() && isArrowUp || isPageUp)) {\n      return false;\n    }\n    if (e.shiftKey || e.altKey || e.ctrlKey || e.metaKey) {\n      return undefined;\n    }\n    if (document.activeElement && document.activeElement.nodeName && (document.activeElement.nodeName.toLowerCase() === 'input' || document.activeElement.nodeName.toLowerCase() === 'textarea')) {\n      return undefined;\n    }\n    if (swiper.params.keyboard.onlyInViewport && (isPageUp || isPageDown || isArrowLeft || isArrowRight || isArrowUp || isArrowDown)) {\n      let inView = false;\n      // Check that swiper should be inside of visible area of window\n      if (elementParents(swiper.el, `.${swiper.params.slideClass}, swiper-slide`).length > 0 && elementParents(swiper.el, `.${swiper.params.slideActiveClass}`).length === 0) {\n        return undefined;\n      }\n      const el = swiper.el;\n      const swiperWidth = el.clientWidth;\n      const swiperHeight = el.clientHeight;\n      const windowWidth = window.innerWidth;\n      const windowHeight = window.innerHeight;\n      const swiperOffset = elementOffset(el);\n      if (rtl) swiperOffset.left -= el.scrollLeft;\n      const swiperCoord = [[swiperOffset.left, swiperOffset.top], [swiperOffset.left + swiperWidth, swiperOffset.top], [swiperOffset.left, swiperOffset.top + swiperHeight], [swiperOffset.left + swiperWidth, swiperOffset.top + swiperHeight]];\n      for (let i = 0; i < swiperCoord.length; i += 1) {\n        const point = swiperCoord[i];\n        if (point[0] >= 0 && point[0] <= windowWidth && point[1] >= 0 && point[1] <= windowHeight) {\n          if (point[0] === 0 && point[1] === 0) continue; // eslint-disable-line\n          inView = true;\n        }\n      }\n      if (!inView) return undefined;\n    }\n    if (swiper.isHorizontal()) {\n      if (isPageUp || isPageDown || isArrowLeft || isArrowRight) {\n        if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n      }\n      if ((isPageDown || isArrowRight) && !rtl || (isPageUp || isArrowLeft) && rtl) swiper.slideNext();\n      if ((isPageUp || isArrowLeft) && !rtl || (isPageDown || isArrowRight) && rtl) swiper.slidePrev();\n    } else {\n      if (isPageUp || isPageDown || isArrowUp || isArrowDown) {\n        if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n      }\n      if (isPageDown || isArrowDown) swiper.slideNext();\n      if (isPageUp || isArrowUp) swiper.slidePrev();\n    }\n    emit('keyPress', kc);\n    return undefined;\n  }\n  function enable() {\n    if (swiper.keyboard.enabled) return;\n    document.addEventListener('keydown', handle);\n    swiper.keyboard.enabled = true;\n  }\n  function disable() {\n    if (!swiper.keyboard.enabled) return;\n    document.removeEventListener('keydown', handle);\n    swiper.keyboard.enabled = false;\n  }\n  on('init', () => {\n    if (swiper.params.keyboard.enabled) {\n      enable();\n    }\n  });\n  on('destroy', () => {\n    if (swiper.keyboard.enabled) {\n      disable();\n    }\n  });\n  Object.assign(swiper.keyboard, {\n    enable,\n    disable\n  });\n}\n\nexport { Keyboard as default };\n","import { a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { n as nextTick, d as now } from '../shared/utils.mjs';\n\n/* eslint-disable consistent-return */\nfunction Mousewheel(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on,\n    emit\n  } = _ref;\n  const window = getWindow();\n  extendParams({\n    mousewheel: {\n      enabled: false,\n      releaseOnEdges: false,\n      invert: false,\n      forceToAxis: false,\n      sensitivity: 1,\n      eventsTarget: 'container',\n      thresholdDelta: null,\n      thresholdTime: null,\n      noMousewheelClass: 'swiper-no-mousewheel'\n    }\n  });\n  swiper.mousewheel = {\n    enabled: false\n  };\n  let timeout;\n  let lastScrollTime = now();\n  let lastEventBeforeSnap;\n  const recentWheelEvents = [];\n  function normalize(e) {\n    // Reasonable defaults\n    const PIXEL_STEP = 10;\n    const LINE_HEIGHT = 40;\n    const PAGE_HEIGHT = 800;\n    let sX = 0;\n    let sY = 0; // spinX, spinY\n    let pX = 0;\n    let pY = 0; // pixelX, pixelY\n\n    // Legacy\n    if ('detail' in e) {\n      sY = e.detail;\n    }\n    if ('wheelDelta' in e) {\n      sY = -e.wheelDelta / 120;\n    }\n    if ('wheelDeltaY' in e) {\n      sY = -e.wheelDeltaY / 120;\n    }\n    if ('wheelDeltaX' in e) {\n      sX = -e.wheelDeltaX / 120;\n    }\n\n    // side scrolling on FF with DOMMouseScroll\n    if ('axis' in e && e.axis === e.HORIZONTAL_AXIS) {\n      sX = sY;\n      sY = 0;\n    }\n    pX = sX * PIXEL_STEP;\n    pY = sY * PIXEL_STEP;\n    if ('deltaY' in e) {\n      pY = e.deltaY;\n    }\n    if ('deltaX' in e) {\n      pX = e.deltaX;\n    }\n    if (e.shiftKey && !pX) {\n      // if user scrolls with shift he wants horizontal scroll\n      pX = pY;\n      pY = 0;\n    }\n    if ((pX || pY) && e.deltaMode) {\n      if (e.deltaMode === 1) {\n        // delta in LINE units\n        pX *= LINE_HEIGHT;\n        pY *= LINE_HEIGHT;\n      } else {\n        // delta in PAGE units\n        pX *= PAGE_HEIGHT;\n        pY *= PAGE_HEIGHT;\n      }\n    }\n\n    // Fall-back if spin cannot be determined\n    if (pX && !sX) {\n      sX = pX < 1 ? -1 : 1;\n    }\n    if (pY && !sY) {\n      sY = pY < 1 ? -1 : 1;\n    }\n    return {\n      spinX: sX,\n      spinY: sY,\n      pixelX: pX,\n      pixelY: pY\n    };\n  }\n  function handleMouseEnter() {\n    if (!swiper.enabled) return;\n    swiper.mouseEntered = true;\n  }\n  function handleMouseLeave() {\n    if (!swiper.enabled) return;\n    swiper.mouseEntered = false;\n  }\n  function animateSlider(newEvent) {\n    if (swiper.params.mousewheel.thresholdDelta && newEvent.delta < swiper.params.mousewheel.thresholdDelta) {\n      // Prevent if delta of wheel scroll delta is below configured threshold\n      return false;\n    }\n    if (swiper.params.mousewheel.thresholdTime && now() - lastScrollTime < swiper.params.mousewheel.thresholdTime) {\n      // Prevent if time between scrolls is below configured threshold\n      return false;\n    }\n\n    // If the movement is NOT big enough and\n    // if the last time the user scrolled was too close to the current one (avoid continuously triggering the slider):\n    //   Don't go any further (avoid insignificant scroll movement).\n    if (newEvent.delta >= 6 && now() - lastScrollTime < 60) {\n      // Return false as a default\n      return true;\n    }\n    // If user is scrolling towards the end:\n    //   If the slider hasn't hit the latest slide or\n    //   if the slider is a loop and\n    //   if the slider isn't moving right now:\n    //     Go to next slide and\n    //     emit a scroll event.\n    // Else (the user is scrolling towards the beginning) and\n    // if the slider hasn't hit the first slide or\n    // if the slider is a loop and\n    // if the slider isn't moving right now:\n    //   Go to prev slide and\n    //   emit a scroll event.\n    if (newEvent.direction < 0) {\n      if ((!swiper.isEnd || swiper.params.loop) && !swiper.animating) {\n        swiper.slideNext();\n        emit('scroll', newEvent.raw);\n      }\n    } else if ((!swiper.isBeginning || swiper.params.loop) && !swiper.animating) {\n      swiper.slidePrev();\n      emit('scroll', newEvent.raw);\n    }\n    // If you got here is because an animation has been triggered so store the current time\n    lastScrollTime = new window.Date().getTime();\n    // Return false as a default\n    return false;\n  }\n  function releaseScroll(newEvent) {\n    const params = swiper.params.mousewheel;\n    if (newEvent.direction < 0) {\n      if (swiper.isEnd && !swiper.params.loop && params.releaseOnEdges) {\n        // Return true to animate scroll on edges\n        return true;\n      }\n    } else if (swiper.isBeginning && !swiper.params.loop && params.releaseOnEdges) {\n      // Return true to animate scroll on edges\n      return true;\n    }\n    return false;\n  }\n  function handle(event) {\n    let e = event;\n    let disableParentSwiper = true;\n    if (!swiper.enabled) return;\n\n    // Ignore event if the target or its parents have the swiper-no-mousewheel class\n    if (event.target.closest(`.${swiper.params.mousewheel.noMousewheelClass}`)) return;\n    const params = swiper.params.mousewheel;\n    if (swiper.params.cssMode) {\n      e.preventDefault();\n    }\n    let targetEl = swiper.el;\n    if (swiper.params.mousewheel.eventsTarget !== 'container') {\n      targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);\n    }\n    const targetElContainsTarget = targetEl && targetEl.contains(e.target);\n    if (!swiper.mouseEntered && !targetElContainsTarget && !params.releaseOnEdges) return true;\n    if (e.originalEvent) e = e.originalEvent; // jquery fix\n    let delta = 0;\n    const rtlFactor = swiper.rtlTranslate ? -1 : 1;\n    const data = normalize(e);\n    if (params.forceToAxis) {\n      if (swiper.isHorizontal()) {\n        if (Math.abs(data.pixelX) > Math.abs(data.pixelY)) delta = -data.pixelX * rtlFactor;else return true;\n      } else if (Math.abs(data.pixelY) > Math.abs(data.pixelX)) delta = -data.pixelY;else return true;\n    } else {\n      delta = Math.abs(data.pixelX) > Math.abs(data.pixelY) ? -data.pixelX * rtlFactor : -data.pixelY;\n    }\n    if (delta === 0) return true;\n    if (params.invert) delta = -delta;\n\n    // Get the scroll positions\n    let positions = swiper.getTranslate() + delta * params.sensitivity;\n    if (positions >= swiper.minTranslate()) positions = swiper.minTranslate();\n    if (positions <= swiper.maxTranslate()) positions = swiper.maxTranslate();\n\n    // When loop is true:\n    //     the disableParentSwiper will be true.\n    // When loop is false:\n    //     if the scroll positions is not on edge,\n    //     then the disableParentSwiper will be true.\n    //     if the scroll on edge positions,\n    //     then the disableParentSwiper will be false.\n    disableParentSwiper = swiper.params.loop ? true : !(positions === swiper.minTranslate() || positions === swiper.maxTranslate());\n    if (disableParentSwiper && swiper.params.nested) e.stopPropagation();\n    if (!swiper.params.freeMode || !swiper.params.freeMode.enabled) {\n      // Register the new event in a variable which stores the relevant data\n      const newEvent = {\n        time: now(),\n        delta: Math.abs(delta),\n        direction: Math.sign(delta),\n        raw: event\n      };\n\n      // Keep the most recent events\n      if (recentWheelEvents.length >= 2) {\n        recentWheelEvents.shift(); // only store the last N events\n      }\n\n      const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n      recentWheelEvents.push(newEvent);\n\n      // If there is at least one previous recorded event:\n      //   If direction has changed or\n      //   if the scroll is quicker than the previous one:\n      //     Animate the slider.\n      // Else (this is the first time the wheel is moved):\n      //     Animate the slider.\n      if (prevEvent) {\n        if (newEvent.direction !== prevEvent.direction || newEvent.delta > prevEvent.delta || newEvent.time > prevEvent.time + 150) {\n          animateSlider(newEvent);\n        }\n      } else {\n        animateSlider(newEvent);\n      }\n\n      // If it's time to release the scroll:\n      //   Return now so you don't hit the preventDefault.\n      if (releaseScroll(newEvent)) {\n        return true;\n      }\n    } else {\n      // Freemode or scrollContainer:\n\n      // If we recently snapped after a momentum scroll, then ignore wheel events\n      // to give time for the deceleration to finish. Stop ignoring after 500 msecs\n      // or if it's a new scroll (larger delta or inverse sign as last event before\n      // an end-of-momentum snap).\n      const newEvent = {\n        time: now(),\n        delta: Math.abs(delta),\n        direction: Math.sign(delta)\n      };\n      const ignoreWheelEvents = lastEventBeforeSnap && newEvent.time < lastEventBeforeSnap.time + 500 && newEvent.delta <= lastEventBeforeSnap.delta && newEvent.direction === lastEventBeforeSnap.direction;\n      if (!ignoreWheelEvents) {\n        lastEventBeforeSnap = undefined;\n        let position = swiper.getTranslate() + delta * params.sensitivity;\n        const wasBeginning = swiper.isBeginning;\n        const wasEnd = swiper.isEnd;\n        if (position >= swiper.minTranslate()) position = swiper.minTranslate();\n        if (position <= swiper.maxTranslate()) position = swiper.maxTranslate();\n        swiper.setTransition(0);\n        swiper.setTranslate(position);\n        swiper.updateProgress();\n        swiper.updateActiveIndex();\n        swiper.updateSlidesClasses();\n        if (!wasBeginning && swiper.isBeginning || !wasEnd && swiper.isEnd) {\n          swiper.updateSlidesClasses();\n        }\n        if (swiper.params.loop) {\n          swiper.loopFix({\n            direction: newEvent.direction < 0 ? 'next' : 'prev',\n            byMousewheel: true\n          });\n        }\n        if (swiper.params.freeMode.sticky) {\n          // When wheel scrolling starts with sticky (aka snap) enabled, then detect\n          // the end of a momentum scroll by storing recent (N=15?) wheel events.\n          // 1. do all N events have decreasing or same (absolute value) delta?\n          // 2. did all N events arrive in the last M (M=500?) msecs?\n          // 3. does the earliest event have an (absolute value) delta that's\n          //    at least P (P=1?) larger than the most recent event's delta?\n          // 4. does the latest event have a delta that's smaller than Q (Q=6?) pixels?\n          // If 1-4 are \"yes\" then we're near the end of a momentum scroll deceleration.\n          // Snap immediately and ignore remaining wheel events in this scroll.\n          // See comment above for \"remaining wheel events in this scroll\" determination.\n          // If 1-4 aren't satisfied, then wait to snap until 500ms after the last event.\n          clearTimeout(timeout);\n          timeout = undefined;\n          if (recentWheelEvents.length >= 15) {\n            recentWheelEvents.shift(); // only store the last N events\n          }\n\n          const prevEvent = recentWheelEvents.length ? recentWheelEvents[recentWheelEvents.length - 1] : undefined;\n          const firstEvent = recentWheelEvents[0];\n          recentWheelEvents.push(newEvent);\n          if (prevEvent && (newEvent.delta > prevEvent.delta || newEvent.direction !== prevEvent.direction)) {\n            // Increasing or reverse-sign delta means the user started scrolling again. Clear the wheel event log.\n            recentWheelEvents.splice(0);\n          } else if (recentWheelEvents.length >= 15 && newEvent.time - firstEvent.time < 500 && firstEvent.delta - newEvent.delta >= 1 && newEvent.delta <= 6) {\n            // We're at the end of the deceleration of a momentum scroll, so there's no need\n            // to wait for more events. Snap ASAP on the next tick.\n            // Also, because there's some remaining momentum we'll bias the snap in the\n            // direction of the ongoing scroll because it's better UX for the scroll to snap\n            // in the same direction as the scroll instead of reversing to snap.  Therefore,\n            // if it's already scrolled more than 20% in the current direction, keep going.\n            const snapToThreshold = delta > 0 ? 0.8 : 0.2;\n            lastEventBeforeSnap = newEvent;\n            recentWheelEvents.splice(0);\n            timeout = nextTick(() => {\n              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n            }, 0); // no delay; move on next tick\n          }\n\n          if (!timeout) {\n            // if we get here, then we haven't detected the end of a momentum scroll, so\n            // we'll consider a scroll \"complete\" when there haven't been any wheel events\n            // for 500ms.\n            timeout = nextTick(() => {\n              const snapToThreshold = 0.5;\n              lastEventBeforeSnap = newEvent;\n              recentWheelEvents.splice(0);\n              swiper.slideToClosest(swiper.params.speed, true, undefined, snapToThreshold);\n            }, 500);\n          }\n        }\n\n        // Emit event\n        if (!ignoreWheelEvents) emit('scroll', e);\n\n        // Stop autoplay\n        if (swiper.params.autoplay && swiper.params.autoplayDisableOnInteraction) swiper.autoplay.stop();\n        // Return page scroll on edge positions\n        if (params.releaseOnEdges && (position === swiper.minTranslate() || position === swiper.maxTranslate())) {\n          return true;\n        }\n      }\n    }\n    if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n    return false;\n  }\n  function events(method) {\n    let targetEl = swiper.el;\n    if (swiper.params.mousewheel.eventsTarget !== 'container') {\n      targetEl = document.querySelector(swiper.params.mousewheel.eventsTarget);\n    }\n    targetEl[method]('mouseenter', handleMouseEnter);\n    targetEl[method]('mouseleave', handleMouseLeave);\n    targetEl[method]('wheel', handle);\n  }\n  function enable() {\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.removeEventListener('wheel', handle);\n      return true;\n    }\n    if (swiper.mousewheel.enabled) return false;\n    events('addEventListener');\n    swiper.mousewheel.enabled = true;\n    return true;\n  }\n  function disable() {\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.addEventListener(event, handle);\n      return true;\n    }\n    if (!swiper.mousewheel.enabled) return false;\n    events('removeEventListener');\n    swiper.mousewheel.enabled = false;\n    return true;\n  }\n  on('init', () => {\n    if (!swiper.params.mousewheel.enabled && swiper.params.cssMode) {\n      disable();\n    }\n    if (swiper.params.mousewheel.enabled) enable();\n  });\n  on('destroy', () => {\n    if (swiper.params.cssMode) {\n      enable();\n    }\n    if (swiper.mousewheel.enabled) disable();\n  });\n  Object.assign(swiper.mousewheel, {\n    enable,\n    disable\n  });\n}\n\nexport { Mousewheel as default };\n","import { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\n\nfunction Navigation(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on,\n    emit\n  } = _ref;\n  extendParams({\n    navigation: {\n      nextEl: null,\n      prevEl: null,\n      hideOnClick: false,\n      disabledClass: 'swiper-button-disabled',\n      hiddenClass: 'swiper-button-hidden',\n      lockClass: 'swiper-button-lock',\n      navigationDisabledClass: 'swiper-navigation-disabled'\n    }\n  });\n  swiper.navigation = {\n    nextEl: null,\n    prevEl: null\n  };\n  const makeElementsArray = el => (Array.isArray(el) ? el : [el]).filter(e => !!e);\n  function getEl(el) {\n    let res;\n    if (el && typeof el === 'string' && swiper.isElement) {\n      res = swiper.el.querySelector(el);\n      if (res) return res;\n    }\n    if (el) {\n      if (typeof el === 'string') res = [...document.querySelectorAll(el)];\n      if (swiper.params.uniqueNavElements && typeof el === 'string' && res.length > 1 && swiper.el.querySelectorAll(el).length === 1) {\n        res = swiper.el.querySelector(el);\n      }\n    }\n    if (el && !res) return el;\n    // if (Array.isArray(res) && res.length === 1) res = res[0];\n    return res;\n  }\n  function toggleEl(el, disabled) {\n    const params = swiper.params.navigation;\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      if (subEl) {\n        subEl.classList[disabled ? 'add' : 'remove'](...params.disabledClass.split(' '));\n        if (subEl.tagName === 'BUTTON') subEl.disabled = disabled;\n        if (swiper.params.watchOverflow && swiper.enabled) {\n          subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n        }\n      }\n    });\n  }\n  function update() {\n    // Update Navigation Buttons\n    const {\n      nextEl,\n      prevEl\n    } = swiper.navigation;\n    if (swiper.params.loop) {\n      toggleEl(prevEl, false);\n      toggleEl(nextEl, false);\n      return;\n    }\n    toggleEl(prevEl, swiper.isBeginning && !swiper.params.rewind);\n    toggleEl(nextEl, swiper.isEnd && !swiper.params.rewind);\n  }\n  function onPrevClick(e) {\n    e.preventDefault();\n    if (swiper.isBeginning && !swiper.params.loop && !swiper.params.rewind) return;\n    swiper.slidePrev();\n    emit('navigationPrev');\n  }\n  function onNextClick(e) {\n    e.preventDefault();\n    if (swiper.isEnd && !swiper.params.loop && !swiper.params.rewind) return;\n    swiper.slideNext();\n    emit('navigationNext');\n  }\n  function init() {\n    const params = swiper.params.navigation;\n    swiper.params.navigation = createElementIfNotDefined(swiper, swiper.originalParams.navigation, swiper.params.navigation, {\n      nextEl: 'swiper-button-next',\n      prevEl: 'swiper-button-prev'\n    });\n    if (!(params.nextEl || params.prevEl)) return;\n    let nextEl = getEl(params.nextEl);\n    let prevEl = getEl(params.prevEl);\n    Object.assign(swiper.navigation, {\n      nextEl,\n      prevEl\n    });\n    nextEl = makeElementsArray(nextEl);\n    prevEl = makeElementsArray(prevEl);\n    const initButton = (el, dir) => {\n      if (el) {\n        el.addEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n      }\n      if (!swiper.enabled && el) {\n        el.classList.add(...params.lockClass.split(' '));\n      }\n    };\n    nextEl.forEach(el => initButton(el, 'next'));\n    prevEl.forEach(el => initButton(el, 'prev'));\n  }\n  function destroy() {\n    let {\n      nextEl,\n      prevEl\n    } = swiper.navigation;\n    nextEl = makeElementsArray(nextEl);\n    prevEl = makeElementsArray(prevEl);\n    const destroyButton = (el, dir) => {\n      el.removeEventListener('click', dir === 'next' ? onNextClick : onPrevClick);\n      el.classList.remove(...swiper.params.navigation.disabledClass.split(' '));\n    };\n    nextEl.forEach(el => destroyButton(el, 'next'));\n    prevEl.forEach(el => destroyButton(el, 'prev'));\n  }\n  on('init', () => {\n    if (swiper.params.navigation.enabled === false) {\n      // eslint-disable-next-line\n      disable();\n    } else {\n      init();\n      update();\n    }\n  });\n  on('toEdge fromEdge lock unlock', () => {\n    update();\n  });\n  on('destroy', () => {\n    destroy();\n  });\n  on('enable disable', () => {\n    let {\n      nextEl,\n      prevEl\n    } = swiper.navigation;\n    nextEl = makeElementsArray(nextEl);\n    prevEl = makeElementsArray(prevEl);\n    [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.navigation.lockClass));\n  });\n  on('click', (_s, e) => {\n    let {\n      nextEl,\n      prevEl\n    } = swiper.navigation;\n    nextEl = makeElementsArray(nextEl);\n    prevEl = makeElementsArray(prevEl);\n    const targetEl = e.target;\n    if (swiper.params.navigation.hideOnClick && !prevEl.includes(targetEl) && !nextEl.includes(targetEl)) {\n      if (swiper.pagination && swiper.params.pagination && swiper.params.pagination.clickable && (swiper.pagination.el === targetEl || swiper.pagination.el.contains(targetEl))) return;\n      let isHidden;\n      if (nextEl.length) {\n        isHidden = nextEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n      } else if (prevEl.length) {\n        isHidden = prevEl[0].classList.contains(swiper.params.navigation.hiddenClass);\n      }\n      if (isHidden === true) {\n        emit('navigationShow');\n      } else {\n        emit('navigationHide');\n      }\n      [...nextEl, ...prevEl].filter(el => !!el).forEach(el => el.classList.toggle(swiper.params.navigation.hiddenClass));\n    }\n  });\n  const enable = () => {\n    swiper.el.classList.remove(...swiper.params.navigation.navigationDisabledClass.split(' '));\n    init();\n    update();\n  };\n  const disable = () => {\n    swiper.el.classList.add(...swiper.params.navigation.navigationDisabledClass.split(' '));\n    destroy();\n  };\n  Object.assign(swiper.navigation, {\n    enable,\n    disable,\n    update,\n    init,\n    destroy\n  });\n}\n\nexport { Navigation as default };\n","import { e as elementChildren, c as createElement } from './utils.mjs';\n\nfunction createElementIfNotDefined(swiper, originalParams, params, checkProps) {\n  if (swiper.params.createElements) {\n    Object.keys(checkProps).forEach(key => {\n      if (!params[key] && params.auto === true) {\n        let element = elementChildren(swiper.el, `.${checkProps[key]}`)[0];\n        if (!element) {\n          element = createElement('div', checkProps[key]);\n          element.className = checkProps[key];\n          swiper.el.append(element);\n        }\n        params[key] = element;\n        originalParams[key] = element;\n      }\n    });\n  }\n  return params;\n}\n\nexport { createElementIfNotDefined as c };\n","import { c as classesToSelector } from '../shared/classes-to-selector.mjs';\nimport { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\nimport { f as elementOuterSize, g as elementIndex, a as elementParents } from '../shared/utils.mjs';\n\nfunction Pagination(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on,\n    emit\n  } = _ref;\n  const pfx = 'swiper-pagination';\n  extendParams({\n    pagination: {\n      el: null,\n      bulletElement: 'span',\n      clickable: false,\n      hideOnClick: false,\n      renderBullet: null,\n      renderProgressbar: null,\n      renderFraction: null,\n      renderCustom: null,\n      progressbarOpposite: false,\n      type: 'bullets',\n      // 'bullets' or 'progressbar' or 'fraction' or 'custom'\n      dynamicBullets: false,\n      dynamicMainBullets: 1,\n      formatFractionCurrent: number => number,\n      formatFractionTotal: number => number,\n      bulletClass: `${pfx}-bullet`,\n      bulletActiveClass: `${pfx}-bullet-active`,\n      modifierClass: `${pfx}-`,\n      currentClass: `${pfx}-current`,\n      totalClass: `${pfx}-total`,\n      hiddenClass: `${pfx}-hidden`,\n      progressbarFillClass: `${pfx}-progressbar-fill`,\n      progressbarOppositeClass: `${pfx}-progressbar-opposite`,\n      clickableClass: `${pfx}-clickable`,\n      lockClass: `${pfx}-lock`,\n      horizontalClass: `${pfx}-horizontal`,\n      verticalClass: `${pfx}-vertical`,\n      paginationDisabledClass: `${pfx}-disabled`\n    }\n  });\n  swiper.pagination = {\n    el: null,\n    bullets: []\n  };\n  let bulletSize;\n  let dynamicBulletIndex = 0;\n  const makeElementsArray = el => (Array.isArray(el) ? el : [el]).filter(e => !!e);\n  function isPaginationDisabled() {\n    return !swiper.params.pagination.el || !swiper.pagination.el || Array.isArray(swiper.pagination.el) && swiper.pagination.el.length === 0;\n  }\n  function setSideBullets(bulletEl, position) {\n    const {\n      bulletActiveClass\n    } = swiper.params.pagination;\n    if (!bulletEl) return;\n    bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n    if (bulletEl) {\n      bulletEl.classList.add(`${bulletActiveClass}-${position}`);\n      bulletEl = bulletEl[`${position === 'prev' ? 'previous' : 'next'}ElementSibling`];\n      if (bulletEl) {\n        bulletEl.classList.add(`${bulletActiveClass}-${position}-${position}`);\n      }\n    }\n  }\n  function onBulletClick(e) {\n    const bulletEl = e.target.closest(classesToSelector(swiper.params.pagination.bulletClass));\n    if (!bulletEl) {\n      return;\n    }\n    e.preventDefault();\n    const index = elementIndex(bulletEl) * swiper.params.slidesPerGroup;\n    if (swiper.params.loop) {\n      if (swiper.realIndex === index) return;\n      const newSlideIndex = swiper.getSlideIndexByData(index);\n      const currentSlideIndex = swiper.getSlideIndexByData(swiper.realIndex);\n      if (newSlideIndex > swiper.slides.length - swiper.loopedSlides) {\n        swiper.loopFix({\n          direction: newSlideIndex > currentSlideIndex ? 'next' : 'prev',\n          activeSlideIndex: newSlideIndex,\n          slideTo: false\n        });\n      }\n      swiper.slideToLoop(index);\n    } else {\n      swiper.slideTo(index);\n    }\n  }\n  function update() {\n    // Render || Update Pagination bullets/items\n    const rtl = swiper.rtl;\n    const params = swiper.params.pagination;\n    if (isPaginationDisabled()) return;\n    let el = swiper.pagination.el;\n    el = makeElementsArray(el);\n    // Current/Total\n    let current;\n    let previousIndex;\n    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n    const total = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n    if (swiper.params.loop) {\n      previousIndex = swiper.previousRealIndex || 0;\n      current = swiper.params.slidesPerGroup > 1 ? Math.floor(swiper.realIndex / swiper.params.slidesPerGroup) : swiper.realIndex;\n    } else if (typeof swiper.snapIndex !== 'undefined') {\n      current = swiper.snapIndex;\n      previousIndex = swiper.previousSnapIndex;\n    } else {\n      previousIndex = swiper.previousIndex || 0;\n      current = swiper.activeIndex || 0;\n    }\n    // Types\n    if (params.type === 'bullets' && swiper.pagination.bullets && swiper.pagination.bullets.length > 0) {\n      const bullets = swiper.pagination.bullets;\n      let firstIndex;\n      let lastIndex;\n      let midIndex;\n      if (params.dynamicBullets) {\n        bulletSize = elementOuterSize(bullets[0], swiper.isHorizontal() ? 'width' : 'height', true);\n        el.forEach(subEl => {\n          subEl.style[swiper.isHorizontal() ? 'width' : 'height'] = `${bulletSize * (params.dynamicMainBullets + 4)}px`;\n        });\n        if (params.dynamicMainBullets > 1 && previousIndex !== undefined) {\n          dynamicBulletIndex += current - (previousIndex || 0);\n          if (dynamicBulletIndex > params.dynamicMainBullets - 1) {\n            dynamicBulletIndex = params.dynamicMainBullets - 1;\n          } else if (dynamicBulletIndex < 0) {\n            dynamicBulletIndex = 0;\n          }\n        }\n        firstIndex = Math.max(current - dynamicBulletIndex, 0);\n        lastIndex = firstIndex + (Math.min(bullets.length, params.dynamicMainBullets) - 1);\n        midIndex = (lastIndex + firstIndex) / 2;\n      }\n      bullets.forEach(bulletEl => {\n        const classesToRemove = [...['', '-next', '-next-next', '-prev', '-prev-prev', '-main'].map(suffix => `${params.bulletActiveClass}${suffix}`)].map(s => typeof s === 'string' && s.includes(' ') ? s.split(' ') : s).flat();\n        bulletEl.classList.remove(...classesToRemove);\n      });\n      if (el.length > 1) {\n        bullets.forEach(bullet => {\n          const bulletIndex = elementIndex(bullet);\n          if (bulletIndex === current) {\n            bullet.classList.add(...params.bulletActiveClass.split(' '));\n          } else if (swiper.isElement) {\n            bullet.setAttribute('part', 'bullet');\n          }\n          if (params.dynamicBullets) {\n            if (bulletIndex >= firstIndex && bulletIndex <= lastIndex) {\n              bullet.classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n            }\n            if (bulletIndex === firstIndex) {\n              setSideBullets(bullet, 'prev');\n            }\n            if (bulletIndex === lastIndex) {\n              setSideBullets(bullet, 'next');\n            }\n          }\n        });\n      } else {\n        const bullet = bullets[current];\n        if (bullet) {\n          bullet.classList.add(...params.bulletActiveClass.split(' '));\n        }\n        if (swiper.isElement) {\n          bullets.forEach((bulletEl, bulletIndex) => {\n            bulletEl.setAttribute('part', bulletIndex === current ? 'bullet-active' : 'bullet');\n          });\n        }\n        if (params.dynamicBullets) {\n          const firstDisplayedBullet = bullets[firstIndex];\n          const lastDisplayedBullet = bullets[lastIndex];\n          for (let i = firstIndex; i <= lastIndex; i += 1) {\n            if (bullets[i]) {\n              bullets[i].classList.add(...`${params.bulletActiveClass}-main`.split(' '));\n            }\n          }\n          setSideBullets(firstDisplayedBullet, 'prev');\n          setSideBullets(lastDisplayedBullet, 'next');\n        }\n      }\n      if (params.dynamicBullets) {\n        const dynamicBulletsLength = Math.min(bullets.length, params.dynamicMainBullets + 4);\n        const bulletsOffset = (bulletSize * dynamicBulletsLength - bulletSize) / 2 - midIndex * bulletSize;\n        const offsetProp = rtl ? 'right' : 'left';\n        bullets.forEach(bullet => {\n          bullet.style[swiper.isHorizontal() ? offsetProp : 'top'] = `${bulletsOffset}px`;\n        });\n      }\n    }\n    el.forEach((subEl, subElIndex) => {\n      if (params.type === 'fraction') {\n        subEl.querySelectorAll(classesToSelector(params.currentClass)).forEach(fractionEl => {\n          fractionEl.textContent = params.formatFractionCurrent(current + 1);\n        });\n        subEl.querySelectorAll(classesToSelector(params.totalClass)).forEach(totalEl => {\n          totalEl.textContent = params.formatFractionTotal(total);\n        });\n      }\n      if (params.type === 'progressbar') {\n        let progressbarDirection;\n        if (params.progressbarOpposite) {\n          progressbarDirection = swiper.isHorizontal() ? 'vertical' : 'horizontal';\n        } else {\n          progressbarDirection = swiper.isHorizontal() ? 'horizontal' : 'vertical';\n        }\n        const scale = (current + 1) / total;\n        let scaleX = 1;\n        let scaleY = 1;\n        if (progressbarDirection === 'horizontal') {\n          scaleX = scale;\n        } else {\n          scaleY = scale;\n        }\n        subEl.querySelectorAll(classesToSelector(params.progressbarFillClass)).forEach(progressEl => {\n          progressEl.style.transform = `translate3d(0,0,0) scaleX(${scaleX}) scaleY(${scaleY})`;\n          progressEl.style.transitionDuration = `${swiper.params.speed}ms`;\n        });\n      }\n      if (params.type === 'custom' && params.renderCustom) {\n        subEl.innerHTML = params.renderCustom(swiper, current + 1, total);\n        if (subElIndex === 0) emit('paginationRender', subEl);\n      } else {\n        if (subElIndex === 0) emit('paginationRender', subEl);\n        emit('paginationUpdate', subEl);\n      }\n      if (swiper.params.watchOverflow && swiper.enabled) {\n        subEl.classList[swiper.isLocked ? 'add' : 'remove'](params.lockClass);\n      }\n    });\n  }\n  function render() {\n    // Render Container\n    const params = swiper.params.pagination;\n    if (isPaginationDisabled()) return;\n    const slidesLength = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.slides.length : swiper.slides.length;\n    let el = swiper.pagination.el;\n    el = makeElementsArray(el);\n    let paginationHTML = '';\n    if (params.type === 'bullets') {\n      let numberOfBullets = swiper.params.loop ? Math.ceil(slidesLength / swiper.params.slidesPerGroup) : swiper.snapGrid.length;\n      if (swiper.params.freeMode && swiper.params.freeMode.enabled && numberOfBullets > slidesLength) {\n        numberOfBullets = slidesLength;\n      }\n      for (let i = 0; i < numberOfBullets; i += 1) {\n        if (params.renderBullet) {\n          paginationHTML += params.renderBullet.call(swiper, i, params.bulletClass);\n        } else {\n          // prettier-ignore\n          paginationHTML += `<${params.bulletElement} ${swiper.isElement ? 'part=\"bullet\"' : ''} class=\"${params.bulletClass}\"></${params.bulletElement}>`;\n        }\n      }\n    }\n    if (params.type === 'fraction') {\n      if (params.renderFraction) {\n        paginationHTML = params.renderFraction.call(swiper, params.currentClass, params.totalClass);\n      } else {\n        paginationHTML = `<span class=\"${params.currentClass}\"></span>` + ' / ' + `<span class=\"${params.totalClass}\"></span>`;\n      }\n    }\n    if (params.type === 'progressbar') {\n      if (params.renderProgressbar) {\n        paginationHTML = params.renderProgressbar.call(swiper, params.progressbarFillClass);\n      } else {\n        paginationHTML = `<span class=\"${params.progressbarFillClass}\"></span>`;\n      }\n    }\n    swiper.pagination.bullets = [];\n    el.forEach(subEl => {\n      if (params.type !== 'custom') {\n        subEl.innerHTML = paginationHTML || '';\n      }\n      if (params.type === 'bullets') {\n        swiper.pagination.bullets.push(...subEl.querySelectorAll(classesToSelector(params.bulletClass)));\n      }\n    });\n    if (params.type !== 'custom') {\n      emit('paginationRender', el[0]);\n    }\n  }\n  function init() {\n    swiper.params.pagination = createElementIfNotDefined(swiper, swiper.originalParams.pagination, swiper.params.pagination, {\n      el: 'swiper-pagination'\n    });\n    const params = swiper.params.pagination;\n    if (!params.el) return;\n    let el;\n    if (typeof params.el === 'string' && swiper.isElement) {\n      el = swiper.el.querySelector(params.el);\n    }\n    if (!el && typeof params.el === 'string') {\n      el = [...document.querySelectorAll(params.el)];\n    }\n    if (!el) {\n      el = params.el;\n    }\n    if (!el || el.length === 0) return;\n    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && Array.isArray(el) && el.length > 1) {\n      el = [...swiper.el.querySelectorAll(params.el)];\n      // check if it belongs to another nested Swiper\n      if (el.length > 1) {\n        el = el.filter(subEl => {\n          if (elementParents(subEl, '.swiper')[0] !== swiper.el) return false;\n          return true;\n        })[0];\n      }\n    }\n    if (Array.isArray(el) && el.length === 1) el = el[0];\n    Object.assign(swiper.pagination, {\n      el\n    });\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      if (params.type === 'bullets' && params.clickable) {\n        subEl.classList.add(params.clickableClass);\n      }\n      subEl.classList.add(params.modifierClass + params.type);\n      subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n      if (params.type === 'bullets' && params.dynamicBullets) {\n        subEl.classList.add(`${params.modifierClass}${params.type}-dynamic`);\n        dynamicBulletIndex = 0;\n        if (params.dynamicMainBullets < 1) {\n          params.dynamicMainBullets = 1;\n        }\n      }\n      if (params.type === 'progressbar' && params.progressbarOpposite) {\n        subEl.classList.add(params.progressbarOppositeClass);\n      }\n      if (params.clickable) {\n        subEl.addEventListener('click', onBulletClick);\n      }\n      if (!swiper.enabled) {\n        subEl.classList.add(params.lockClass);\n      }\n    });\n  }\n  function destroy() {\n    const params = swiper.params.pagination;\n    if (isPaginationDisabled()) return;\n    let el = swiper.pagination.el;\n    if (el) {\n      el = makeElementsArray(el);\n      el.forEach(subEl => {\n        subEl.classList.remove(params.hiddenClass);\n        subEl.classList.remove(params.modifierClass + params.type);\n        subEl.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n        if (params.clickable) {\n          subEl.removeEventListener('click', onBulletClick);\n        }\n      });\n    }\n    if (swiper.pagination.bullets) swiper.pagination.bullets.forEach(subEl => subEl.classList.remove(...params.bulletActiveClass.split(' ')));\n  }\n  on('changeDirection', () => {\n    if (!swiper.pagination || !swiper.pagination.el) return;\n    const params = swiper.params.pagination;\n    let {\n      el\n    } = swiper.pagination;\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      subEl.classList.remove(params.horizontalClass, params.verticalClass);\n      subEl.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n    });\n  });\n  on('init', () => {\n    if (swiper.params.pagination.enabled === false) {\n      // eslint-disable-next-line\n      disable();\n    } else {\n      init();\n      render();\n      update();\n    }\n  });\n  on('activeIndexChange', () => {\n    if (typeof swiper.snapIndex === 'undefined') {\n      update();\n    }\n  });\n  on('snapIndexChange', () => {\n    update();\n  });\n  on('snapGridLengthChange', () => {\n    render();\n    update();\n  });\n  on('destroy', () => {\n    destroy();\n  });\n  on('enable disable', () => {\n    let {\n      el\n    } = swiper.pagination;\n    if (el) {\n      el = makeElementsArray(el);\n      el.forEach(subEl => subEl.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.pagination.lockClass));\n    }\n  });\n  on('lock unlock', () => {\n    update();\n  });\n  on('click', (_s, e) => {\n    const targetEl = e.target;\n    const el = makeElementsArray(swiper.pagination.el);\n    if (swiper.params.pagination.el && swiper.params.pagination.hideOnClick && el && el.length > 0 && !targetEl.classList.contains(swiper.params.pagination.bulletClass)) {\n      if (swiper.navigation && (swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl || swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl)) return;\n      const isHidden = el[0].classList.contains(swiper.params.pagination.hiddenClass);\n      if (isHidden === true) {\n        emit('paginationShow');\n      } else {\n        emit('paginationHide');\n      }\n      el.forEach(subEl => subEl.classList.toggle(swiper.params.pagination.hiddenClass));\n    }\n  });\n  const enable = () => {\n    swiper.el.classList.remove(swiper.params.pagination.paginationDisabledClass);\n    let {\n      el\n    } = swiper.pagination;\n    if (el) {\n      el = makeElementsArray(el);\n      el.forEach(subEl => subEl.classList.remove(swiper.params.pagination.paginationDisabledClass));\n    }\n    init();\n    render();\n    update();\n  };\n  const disable = () => {\n    swiper.el.classList.add(swiper.params.pagination.paginationDisabledClass);\n    let {\n      el\n    } = swiper.pagination;\n    if (el) {\n      el = makeElementsArray(el);\n      el.forEach(subEl => subEl.classList.add(swiper.params.pagination.paginationDisabledClass));\n    }\n    destroy();\n  };\n  Object.assign(swiper.pagination, {\n    enable,\n    disable,\n    render,\n    update,\n    init,\n    destroy\n  });\n}\n\nexport { Pagination as default };\n","function classesToSelector(classes) {\n  if (classes === void 0) {\n    classes = '';\n  }\n  return `.${classes.trim().replace(/([\\.:!+\\/])/g, '\\\\$1') // eslint-disable-line\n  .replace(/ /g, '.')}`;\n}\n\nexport { classesToSelector as c };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { c as createElement, n as nextTick, b as elementOffset } from '../shared/utils.mjs';\nimport { c as createElementIfNotDefined } from '../shared/create-element-if-not-defined.mjs';\n\nfunction Scrollbar(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on,\n    emit\n  } = _ref;\n  const document = getDocument();\n  let isTouched = false;\n  let timeout = null;\n  let dragTimeout = null;\n  let dragStartPos;\n  let dragSize;\n  let trackSize;\n  let divider;\n  extendParams({\n    scrollbar: {\n      el: null,\n      dragSize: 'auto',\n      hide: false,\n      draggable: false,\n      snapOnRelease: true,\n      lockClass: 'swiper-scrollbar-lock',\n      dragClass: 'swiper-scrollbar-drag',\n      scrollbarDisabledClass: 'swiper-scrollbar-disabled',\n      horizontalClass: `swiper-scrollbar-horizontal`,\n      verticalClass: `swiper-scrollbar-vertical`\n    }\n  });\n  swiper.scrollbar = {\n    el: null,\n    dragEl: null\n  };\n  function setTranslate() {\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    const {\n      scrollbar,\n      rtlTranslate: rtl\n    } = swiper;\n    const {\n      dragEl,\n      el\n    } = scrollbar;\n    const params = swiper.params.scrollbar;\n    const progress = swiper.params.loop ? swiper.progressLoop : swiper.progress;\n    let newSize = dragSize;\n    let newPos = (trackSize - dragSize) * progress;\n    if (rtl) {\n      newPos = -newPos;\n      if (newPos > 0) {\n        newSize = dragSize - newPos;\n        newPos = 0;\n      } else if (-newPos + dragSize > trackSize) {\n        newSize = trackSize + newPos;\n      }\n    } else if (newPos < 0) {\n      newSize = dragSize + newPos;\n      newPos = 0;\n    } else if (newPos + dragSize > trackSize) {\n      newSize = trackSize - newPos;\n    }\n    if (swiper.isHorizontal()) {\n      dragEl.style.transform = `translate3d(${newPos}px, 0, 0)`;\n      dragEl.style.width = `${newSize}px`;\n    } else {\n      dragEl.style.transform = `translate3d(0px, ${newPos}px, 0)`;\n      dragEl.style.height = `${newSize}px`;\n    }\n    if (params.hide) {\n      clearTimeout(timeout);\n      el.style.opacity = 1;\n      timeout = setTimeout(() => {\n        el.style.opacity = 0;\n        el.style.transitionDuration = '400ms';\n      }, 1000);\n    }\n  }\n  function setTransition(duration) {\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    swiper.scrollbar.dragEl.style.transitionDuration = `${duration}ms`;\n  }\n  function updateSize() {\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    const {\n      scrollbar\n    } = swiper;\n    const {\n      dragEl,\n      el\n    } = scrollbar;\n    dragEl.style.width = '';\n    dragEl.style.height = '';\n    trackSize = swiper.isHorizontal() ? el.offsetWidth : el.offsetHeight;\n    divider = swiper.size / (swiper.virtualSize + swiper.params.slidesOffsetBefore - (swiper.params.centeredSlides ? swiper.snapGrid[0] : 0));\n    if (swiper.params.scrollbar.dragSize === 'auto') {\n      dragSize = trackSize * divider;\n    } else {\n      dragSize = parseInt(swiper.params.scrollbar.dragSize, 10);\n    }\n    if (swiper.isHorizontal()) {\n      dragEl.style.width = `${dragSize}px`;\n    } else {\n      dragEl.style.height = `${dragSize}px`;\n    }\n    if (divider >= 1) {\n      el.style.display = 'none';\n    } else {\n      el.style.display = '';\n    }\n    if (swiper.params.scrollbar.hide) {\n      el.style.opacity = 0;\n    }\n    if (swiper.params.watchOverflow && swiper.enabled) {\n      scrollbar.el.classList[swiper.isLocked ? 'add' : 'remove'](swiper.params.scrollbar.lockClass);\n    }\n  }\n  function getPointerPosition(e) {\n    return swiper.isHorizontal() ? e.clientX : e.clientY;\n  }\n  function setDragPosition(e) {\n    const {\n      scrollbar,\n      rtlTranslate: rtl\n    } = swiper;\n    const {\n      el\n    } = scrollbar;\n    let positionRatio;\n    positionRatio = (getPointerPosition(e) - elementOffset(el)[swiper.isHorizontal() ? 'left' : 'top'] - (dragStartPos !== null ? dragStartPos : dragSize / 2)) / (trackSize - dragSize);\n    positionRatio = Math.max(Math.min(positionRatio, 1), 0);\n    if (rtl) {\n      positionRatio = 1 - positionRatio;\n    }\n    const position = swiper.minTranslate() + (swiper.maxTranslate() - swiper.minTranslate()) * positionRatio;\n    swiper.updateProgress(position);\n    swiper.setTranslate(position);\n    swiper.updateActiveIndex();\n    swiper.updateSlidesClasses();\n  }\n  function onDragStart(e) {\n    const params = swiper.params.scrollbar;\n    const {\n      scrollbar,\n      wrapperEl\n    } = swiper;\n    const {\n      el,\n      dragEl\n    } = scrollbar;\n    isTouched = true;\n    dragStartPos = e.target === dragEl ? getPointerPosition(e) - e.target.getBoundingClientRect()[swiper.isHorizontal() ? 'left' : 'top'] : null;\n    e.preventDefault();\n    e.stopPropagation();\n    wrapperEl.style.transitionDuration = '100ms';\n    dragEl.style.transitionDuration = '100ms';\n    setDragPosition(e);\n    clearTimeout(dragTimeout);\n    el.style.transitionDuration = '0ms';\n    if (params.hide) {\n      el.style.opacity = 1;\n    }\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.style['scroll-snap-type'] = 'none';\n    }\n    emit('scrollbarDragStart', e);\n  }\n  function onDragMove(e) {\n    const {\n      scrollbar,\n      wrapperEl\n    } = swiper;\n    const {\n      el,\n      dragEl\n    } = scrollbar;\n    if (!isTouched) return;\n    if (e.preventDefault) e.preventDefault();else e.returnValue = false;\n    setDragPosition(e);\n    wrapperEl.style.transitionDuration = '0ms';\n    el.style.transitionDuration = '0ms';\n    dragEl.style.transitionDuration = '0ms';\n    emit('scrollbarDragMove', e);\n  }\n  function onDragEnd(e) {\n    const params = swiper.params.scrollbar;\n    const {\n      scrollbar,\n      wrapperEl\n    } = swiper;\n    const {\n      el\n    } = scrollbar;\n    if (!isTouched) return;\n    isTouched = false;\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.style['scroll-snap-type'] = '';\n      wrapperEl.style.transitionDuration = '';\n    }\n    if (params.hide) {\n      clearTimeout(dragTimeout);\n      dragTimeout = nextTick(() => {\n        el.style.opacity = 0;\n        el.style.transitionDuration = '400ms';\n      }, 1000);\n    }\n    emit('scrollbarDragEnd', e);\n    if (params.snapOnRelease) {\n      swiper.slideToClosest();\n    }\n  }\n  function events(method) {\n    const {\n      scrollbar,\n      params\n    } = swiper;\n    const el = scrollbar.el;\n    if (!el) return;\n    const target = el;\n    const activeListener = params.passiveListeners ? {\n      passive: false,\n      capture: false\n    } : false;\n    const passiveListener = params.passiveListeners ? {\n      passive: true,\n      capture: false\n    } : false;\n    if (!target) return;\n    const eventMethod = method === 'on' ? 'addEventListener' : 'removeEventListener';\n    target[eventMethod]('pointerdown', onDragStart, activeListener);\n    document[eventMethod]('pointermove', onDragMove, activeListener);\n    document[eventMethod]('pointerup', onDragEnd, passiveListener);\n  }\n  function enableDraggable() {\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    events('on');\n  }\n  function disableDraggable() {\n    if (!swiper.params.scrollbar.el || !swiper.scrollbar.el) return;\n    events('off');\n  }\n  function init() {\n    const {\n      scrollbar,\n      el: swiperEl\n    } = swiper;\n    swiper.params.scrollbar = createElementIfNotDefined(swiper, swiper.originalParams.scrollbar, swiper.params.scrollbar, {\n      el: 'swiper-scrollbar'\n    });\n    const params = swiper.params.scrollbar;\n    if (!params.el) return;\n    let el;\n    if (typeof params.el === 'string' && swiper.isElement) {\n      el = swiper.el.querySelector(params.el);\n    }\n    if (!el && typeof params.el === 'string') {\n      el = document.querySelectorAll(params.el);\n    } else if (!el) {\n      el = params.el;\n    }\n    if (swiper.params.uniqueNavElements && typeof params.el === 'string' && el.length > 1 && swiperEl.querySelectorAll(params.el).length === 1) {\n      el = swiperEl.querySelector(params.el);\n    }\n    if (el.length > 0) el = el[0];\n    el.classList.add(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n    let dragEl;\n    if (el) {\n      dragEl = el.querySelector(`.${swiper.params.scrollbar.dragClass}`);\n      if (!dragEl) {\n        dragEl = createElement('div', swiper.params.scrollbar.dragClass);\n        el.append(dragEl);\n      }\n    }\n    Object.assign(scrollbar, {\n      el,\n      dragEl\n    });\n    if (params.draggable) {\n      enableDraggable();\n    }\n    if (el) {\n      el.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.scrollbar.lockClass);\n    }\n  }\n  function destroy() {\n    const params = swiper.params.scrollbar;\n    const el = swiper.scrollbar.el;\n    if (el) {\n      el.classList.remove(swiper.isHorizontal() ? params.horizontalClass : params.verticalClass);\n    }\n    disableDraggable();\n  }\n  on('init', () => {\n    if (swiper.params.scrollbar.enabled === false) {\n      // eslint-disable-next-line\n      disable();\n    } else {\n      init();\n      updateSize();\n      setTranslate();\n    }\n  });\n  on('update resize observerUpdate lock unlock', () => {\n    updateSize();\n  });\n  on('setTranslate', () => {\n    setTranslate();\n  });\n  on('setTransition', (_s, duration) => {\n    setTransition(duration);\n  });\n  on('enable disable', () => {\n    const {\n      el\n    } = swiper.scrollbar;\n    if (el) {\n      el.classList[swiper.enabled ? 'remove' : 'add'](swiper.params.scrollbar.lockClass);\n    }\n  });\n  on('destroy', () => {\n    destroy();\n  });\n  const enable = () => {\n    swiper.el.classList.remove(swiper.params.scrollbar.scrollbarDisabledClass);\n    if (swiper.scrollbar.el) {\n      swiper.scrollbar.el.classList.remove(swiper.params.scrollbar.scrollbarDisabledClass);\n    }\n    init();\n    updateSize();\n    setTranslate();\n  };\n  const disable = () => {\n    swiper.el.classList.add(swiper.params.scrollbar.scrollbarDisabledClass);\n    if (swiper.scrollbar.el) {\n      swiper.scrollbar.el.classList.add(swiper.params.scrollbar.scrollbarDisabledClass);\n    }\n    destroy();\n  };\n  Object.assign(swiper.scrollbar, {\n    enable,\n    disable,\n    updateSize,\n    setTranslate,\n    init,\n    destroy\n  });\n}\n\nexport { Scrollbar as default };\n","import { e as elementChildren } from '../shared/utils.mjs';\n\nfunction Parallax(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    parallax: {\n      enabled: false\n    }\n  });\n  const setTransform = (el, progress) => {\n    const {\n      rtl\n    } = swiper;\n    const rtlFactor = rtl ? -1 : 1;\n    const p = el.getAttribute('data-swiper-parallax') || '0';\n    let x = el.getAttribute('data-swiper-parallax-x');\n    let y = el.getAttribute('data-swiper-parallax-y');\n    const scale = el.getAttribute('data-swiper-parallax-scale');\n    const opacity = el.getAttribute('data-swiper-parallax-opacity');\n    const rotate = el.getAttribute('data-swiper-parallax-rotate');\n    if (x || y) {\n      x = x || '0';\n      y = y || '0';\n    } else if (swiper.isHorizontal()) {\n      x = p;\n      y = '0';\n    } else {\n      y = p;\n      x = '0';\n    }\n    if (x.indexOf('%') >= 0) {\n      x = `${parseInt(x, 10) * progress * rtlFactor}%`;\n    } else {\n      x = `${x * progress * rtlFactor}px`;\n    }\n    if (y.indexOf('%') >= 0) {\n      y = `${parseInt(y, 10) * progress}%`;\n    } else {\n      y = `${y * progress}px`;\n    }\n    if (typeof opacity !== 'undefined' && opacity !== null) {\n      const currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));\n      el.style.opacity = currentOpacity;\n    }\n    let transform = `translate3d(${x}, ${y}, 0px)`;\n    if (typeof scale !== 'undefined' && scale !== null) {\n      const currentScale = scale - (scale - 1) * (1 - Math.abs(progress));\n      transform += ` scale(${currentScale})`;\n    }\n    if (rotate && typeof rotate !== 'undefined' && rotate !== null) {\n      const currentRotate = rotate * progress * -1;\n      transform += ` rotate(${currentRotate}deg)`;\n    }\n    el.style.transform = transform;\n  };\n  const setTranslate = () => {\n    const {\n      el,\n      slides,\n      progress,\n      snapGrid\n    } = swiper;\n    elementChildren(el, '[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').forEach(subEl => {\n      setTransform(subEl, progress);\n    });\n    slides.forEach((slideEl, slideIndex) => {\n      let slideProgress = slideEl.progress;\n      if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {\n        slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);\n      }\n      slideProgress = Math.min(Math.max(slideProgress, -1), 1);\n      slideEl.querySelectorAll('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale], [data-swiper-parallax-rotate]').forEach(subEl => {\n        setTransform(subEl, slideProgress);\n      });\n    });\n  };\n  const setTransition = function (duration) {\n    if (duration === void 0) {\n      duration = swiper.params.speed;\n    }\n    const {\n      el\n    } = swiper;\n    el.querySelectorAll('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').forEach(parallaxEl => {\n      let parallaxDuration = parseInt(parallaxEl.getAttribute('data-swiper-parallax-duration'), 10) || duration;\n      if (duration === 0) parallaxDuration = 0;\n      parallaxEl.style.transitionDuration = `${parallaxDuration}ms`;\n    });\n  };\n  on('beforeInit', () => {\n    if (!swiper.params.parallax.enabled) return;\n    swiper.params.watchSlidesProgress = true;\n    swiper.originalParams.watchSlidesProgress = true;\n  });\n  on('init', () => {\n    if (!swiper.params.parallax.enabled) return;\n    setTranslate();\n  });\n  on('setTranslate', () => {\n    if (!swiper.params.parallax.enabled) return;\n    setTranslate();\n  });\n  on('setTransition', (_swiper, duration) => {\n    if (!swiper.params.parallax.enabled) return;\n    setTransition(duration);\n  });\n}\n\nexport { Parallax as default };\n","import { a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { e as elementChildren, a as elementParents, b as elementOffset, h as getTranslate } from '../shared/utils.mjs';\n\nfunction Zoom(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on,\n    emit\n  } = _ref;\n  const window = getWindow();\n  extendParams({\n    zoom: {\n      enabled: false,\n      maxRatio: 3,\n      minRatio: 1,\n      toggle: true,\n      containerClass: 'swiper-zoom-container',\n      zoomedSlideClass: 'swiper-slide-zoomed'\n    }\n  });\n  swiper.zoom = {\n    enabled: false\n  };\n  let currentScale = 1;\n  let isScaling = false;\n  let fakeGestureTouched;\n  let fakeGestureMoved;\n  const evCache = [];\n  const gesture = {\n    originX: 0,\n    originY: 0,\n    slideEl: undefined,\n    slideWidth: undefined,\n    slideHeight: undefined,\n    imageEl: undefined,\n    imageWrapEl: undefined,\n    maxRatio: 3\n  };\n  const image = {\n    isTouched: undefined,\n    isMoved: undefined,\n    currentX: undefined,\n    currentY: undefined,\n    minX: undefined,\n    minY: undefined,\n    maxX: undefined,\n    maxY: undefined,\n    width: undefined,\n    height: undefined,\n    startX: undefined,\n    startY: undefined,\n    touchesStart: {},\n    touchesCurrent: {}\n  };\n  const velocity = {\n    x: undefined,\n    y: undefined,\n    prevPositionX: undefined,\n    prevPositionY: undefined,\n    prevTime: undefined\n  };\n  let scale = 1;\n  Object.defineProperty(swiper.zoom, 'scale', {\n    get() {\n      return scale;\n    },\n    set(value) {\n      if (scale !== value) {\n        const imageEl = gesture.imageEl;\n        const slideEl = gesture.slideEl;\n        emit('zoomChange', value, imageEl, slideEl);\n      }\n      scale = value;\n    }\n  });\n  function getDistanceBetweenTouches() {\n    if (evCache.length < 2) return 1;\n    const x1 = evCache[0].pageX;\n    const y1 = evCache[0].pageY;\n    const x2 = evCache[1].pageX;\n    const y2 = evCache[1].pageY;\n    const distance = Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2);\n    return distance;\n  }\n  function getScaleOrigin() {\n    if (evCache.length < 2) return {\n      x: null,\n      y: null\n    };\n    const box = gesture.imageEl.getBoundingClientRect();\n    return [(evCache[0].pageX + (evCache[1].pageX - evCache[0].pageX) / 2 - box.x) / currentScale, (evCache[0].pageY + (evCache[1].pageY - evCache[0].pageY) / 2 - box.y) / currentScale];\n  }\n  function getSlideSelector() {\n    return swiper.isElement ? `swiper-slide` : `.${swiper.params.slideClass}`;\n  }\n  function eventWithinSlide(e) {\n    const slideSelector = getSlideSelector();\n    if (e.target.matches(slideSelector)) return true;\n    if (swiper.slides.filter(slideEl => slideEl.contains(e.target)).length > 0) return true;\n    return false;\n  }\n  function eventWithinZoomContainer(e) {\n    const selector = `.${swiper.params.zoom.containerClass}`;\n    if (e.target.matches(selector)) return true;\n    if ([...swiper.hostEl.querySelectorAll(selector)].filter(containerEl => containerEl.contains(e.target)).length > 0) return true;\n    return false;\n  }\n\n  // Events\n  function onGestureStart(e) {\n    if (e.pointerType === 'mouse') {\n      evCache.splice(0, evCache.length);\n    }\n    if (!eventWithinSlide(e)) return;\n    const params = swiper.params.zoom;\n    fakeGestureTouched = false;\n    fakeGestureMoved = false;\n    evCache.push(e);\n    if (evCache.length < 2) {\n      return;\n    }\n    fakeGestureTouched = true;\n    gesture.scaleStart = getDistanceBetweenTouches();\n    if (!gesture.slideEl) {\n      gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n      if (!gesture.slideEl) gesture.slideEl = swiper.slides[swiper.activeIndex];\n      let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n      if (imageEl) {\n        imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n      }\n      gesture.imageEl = imageEl;\n      if (imageEl) {\n        gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n      } else {\n        gesture.imageWrapEl = undefined;\n      }\n      if (!gesture.imageWrapEl) {\n        gesture.imageEl = undefined;\n        return;\n      }\n      gesture.maxRatio = gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio;\n    }\n    if (gesture.imageEl) {\n      const [originX, originY] = getScaleOrigin();\n      gesture.originX = originX;\n      gesture.originY = originY;\n      gesture.imageEl.style.transitionDuration = '0ms';\n    }\n    isScaling = true;\n  }\n  function onGestureChange(e) {\n    if (!eventWithinSlide(e)) return;\n    const params = swiper.params.zoom;\n    const zoom = swiper.zoom;\n    const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n    if (pointerIndex >= 0) evCache[pointerIndex] = e;\n    if (evCache.length < 2) {\n      return;\n    }\n    fakeGestureMoved = true;\n    gesture.scaleMove = getDistanceBetweenTouches();\n    if (!gesture.imageEl) {\n      return;\n    }\n    zoom.scale = gesture.scaleMove / gesture.scaleStart * currentScale;\n    if (zoom.scale > gesture.maxRatio) {\n      zoom.scale = gesture.maxRatio - 1 + (zoom.scale - gesture.maxRatio + 1) ** 0.5;\n    }\n    if (zoom.scale < params.minRatio) {\n      zoom.scale = params.minRatio + 1 - (params.minRatio - zoom.scale + 1) ** 0.5;\n    }\n    gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n  }\n  function onGestureEnd(e) {\n    if (!eventWithinSlide(e)) return;\n    if (e.pointerType === 'mouse' && e.type === 'pointerout') return;\n    const params = swiper.params.zoom;\n    const zoom = swiper.zoom;\n    const pointerIndex = evCache.findIndex(cachedEv => cachedEv.pointerId === e.pointerId);\n    if (pointerIndex >= 0) evCache.splice(pointerIndex, 1);\n    if (!fakeGestureTouched || !fakeGestureMoved) {\n      return;\n    }\n    fakeGestureTouched = false;\n    fakeGestureMoved = false;\n    if (!gesture.imageEl) return;\n    zoom.scale = Math.max(Math.min(zoom.scale, gesture.maxRatio), params.minRatio);\n    gesture.imageEl.style.transitionDuration = `${swiper.params.speed}ms`;\n    gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n    currentScale = zoom.scale;\n    isScaling = false;\n    if (zoom.scale > 1 && gesture.slideEl) {\n      gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);\n    } else if (zoom.scale <= 1 && gesture.slideEl) {\n      gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);\n    }\n    if (zoom.scale === 1) {\n      gesture.originX = 0;\n      gesture.originY = 0;\n      gesture.slideEl = undefined;\n    }\n  }\n  function onTouchStart(e) {\n    const device = swiper.device;\n    if (!gesture.imageEl) return;\n    if (image.isTouched) return;\n    if (device.android && e.cancelable) e.preventDefault();\n    image.isTouched = true;\n    const event = evCache.length > 0 ? evCache[0] : e;\n    image.touchesStart.x = event.pageX;\n    image.touchesStart.y = event.pageY;\n  }\n  function onTouchMove(e) {\n    if (!eventWithinSlide(e) || !eventWithinZoomContainer(e)) return;\n    const zoom = swiper.zoom;\n    if (!gesture.imageEl) return;\n    if (!image.isTouched || !gesture.slideEl) return;\n    if (!image.isMoved) {\n      image.width = gesture.imageEl.offsetWidth;\n      image.height = gesture.imageEl.offsetHeight;\n      image.startX = getTranslate(gesture.imageWrapEl, 'x') || 0;\n      image.startY = getTranslate(gesture.imageWrapEl, 'y') || 0;\n      gesture.slideWidth = gesture.slideEl.offsetWidth;\n      gesture.slideHeight = gesture.slideEl.offsetHeight;\n      gesture.imageWrapEl.style.transitionDuration = '0ms';\n    }\n    // Define if we need image drag\n    const scaledWidth = image.width * zoom.scale;\n    const scaledHeight = image.height * zoom.scale;\n    if (scaledWidth < gesture.slideWidth && scaledHeight < gesture.slideHeight) return;\n    image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n    image.maxX = -image.minX;\n    image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n    image.maxY = -image.minY;\n    image.touchesCurrent.x = evCache.length > 0 ? evCache[0].pageX : e.pageX;\n    image.touchesCurrent.y = evCache.length > 0 ? evCache[0].pageY : e.pageY;\n    const touchesDiff = Math.max(Math.abs(image.touchesCurrent.x - image.touchesStart.x), Math.abs(image.touchesCurrent.y - image.touchesStart.y));\n    if (touchesDiff > 5) {\n      swiper.allowClick = false;\n    }\n    if (!image.isMoved && !isScaling) {\n      if (swiper.isHorizontal() && (Math.floor(image.minX) === Math.floor(image.startX) && image.touchesCurrent.x < image.touchesStart.x || Math.floor(image.maxX) === Math.floor(image.startX) && image.touchesCurrent.x > image.touchesStart.x)) {\n        image.isTouched = false;\n        return;\n      }\n      if (!swiper.isHorizontal() && (Math.floor(image.minY) === Math.floor(image.startY) && image.touchesCurrent.y < image.touchesStart.y || Math.floor(image.maxY) === Math.floor(image.startY) && image.touchesCurrent.y > image.touchesStart.y)) {\n        image.isTouched = false;\n        return;\n      }\n    }\n    if (e.cancelable) {\n      e.preventDefault();\n    }\n    e.stopPropagation();\n    image.isMoved = true;\n    const scaleRatio = (zoom.scale - currentScale) / (gesture.maxRatio - swiper.params.zoom.minRatio);\n    const {\n      originX,\n      originY\n    } = gesture;\n    image.currentX = image.touchesCurrent.x - image.touchesStart.x + image.startX + scaleRatio * (image.width - originX * 2);\n    image.currentY = image.touchesCurrent.y - image.touchesStart.y + image.startY + scaleRatio * (image.height - originY * 2);\n    if (image.currentX < image.minX) {\n      image.currentX = image.minX + 1 - (image.minX - image.currentX + 1) ** 0.8;\n    }\n    if (image.currentX > image.maxX) {\n      image.currentX = image.maxX - 1 + (image.currentX - image.maxX + 1) ** 0.8;\n    }\n    if (image.currentY < image.minY) {\n      image.currentY = image.minY + 1 - (image.minY - image.currentY + 1) ** 0.8;\n    }\n    if (image.currentY > image.maxY) {\n      image.currentY = image.maxY - 1 + (image.currentY - image.maxY + 1) ** 0.8;\n    }\n\n    // Velocity\n    if (!velocity.prevPositionX) velocity.prevPositionX = image.touchesCurrent.x;\n    if (!velocity.prevPositionY) velocity.prevPositionY = image.touchesCurrent.y;\n    if (!velocity.prevTime) velocity.prevTime = Date.now();\n    velocity.x = (image.touchesCurrent.x - velocity.prevPositionX) / (Date.now() - velocity.prevTime) / 2;\n    velocity.y = (image.touchesCurrent.y - velocity.prevPositionY) / (Date.now() - velocity.prevTime) / 2;\n    if (Math.abs(image.touchesCurrent.x - velocity.prevPositionX) < 2) velocity.x = 0;\n    if (Math.abs(image.touchesCurrent.y - velocity.prevPositionY) < 2) velocity.y = 0;\n    velocity.prevPositionX = image.touchesCurrent.x;\n    velocity.prevPositionY = image.touchesCurrent.y;\n    velocity.prevTime = Date.now();\n    gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;\n  }\n  function onTouchEnd() {\n    const zoom = swiper.zoom;\n    if (!gesture.imageEl) return;\n    if (!image.isTouched || !image.isMoved) {\n      image.isTouched = false;\n      image.isMoved = false;\n      return;\n    }\n    image.isTouched = false;\n    image.isMoved = false;\n    let momentumDurationX = 300;\n    let momentumDurationY = 300;\n    const momentumDistanceX = velocity.x * momentumDurationX;\n    const newPositionX = image.currentX + momentumDistanceX;\n    const momentumDistanceY = velocity.y * momentumDurationY;\n    const newPositionY = image.currentY + momentumDistanceY;\n\n    // Fix duration\n    if (velocity.x !== 0) momentumDurationX = Math.abs((newPositionX - image.currentX) / velocity.x);\n    if (velocity.y !== 0) momentumDurationY = Math.abs((newPositionY - image.currentY) / velocity.y);\n    const momentumDuration = Math.max(momentumDurationX, momentumDurationY);\n    image.currentX = newPositionX;\n    image.currentY = newPositionY;\n    // Define if we need image drag\n    const scaledWidth = image.width * zoom.scale;\n    const scaledHeight = image.height * zoom.scale;\n    image.minX = Math.min(gesture.slideWidth / 2 - scaledWidth / 2, 0);\n    image.maxX = -image.minX;\n    image.minY = Math.min(gesture.slideHeight / 2 - scaledHeight / 2, 0);\n    image.maxY = -image.minY;\n    image.currentX = Math.max(Math.min(image.currentX, image.maxX), image.minX);\n    image.currentY = Math.max(Math.min(image.currentY, image.maxY), image.minY);\n    gesture.imageWrapEl.style.transitionDuration = `${momentumDuration}ms`;\n    gesture.imageWrapEl.style.transform = `translate3d(${image.currentX}px, ${image.currentY}px,0)`;\n  }\n  function onTransitionEnd() {\n    const zoom = swiper.zoom;\n    if (gesture.slideEl && swiper.activeIndex !== swiper.slides.indexOf(gesture.slideEl)) {\n      if (gesture.imageEl) {\n        gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';\n      }\n      if (gesture.imageWrapEl) {\n        gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';\n      }\n      gesture.slideEl.classList.remove(`${swiper.params.zoom.zoomedSlideClass}`);\n      zoom.scale = 1;\n      currentScale = 1;\n      gesture.slideEl = undefined;\n      gesture.imageEl = undefined;\n      gesture.imageWrapEl = undefined;\n      gesture.originX = 0;\n      gesture.originY = 0;\n    }\n  }\n  function zoomIn(e) {\n    const zoom = swiper.zoom;\n    const params = swiper.params.zoom;\n    if (!gesture.slideEl) {\n      if (e && e.target) {\n        gesture.slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n      }\n      if (!gesture.slideEl) {\n        if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n          gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];\n        } else {\n          gesture.slideEl = swiper.slides[swiper.activeIndex];\n        }\n      }\n      let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n      if (imageEl) {\n        imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n      }\n      gesture.imageEl = imageEl;\n      if (imageEl) {\n        gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n      } else {\n        gesture.imageWrapEl = undefined;\n      }\n    }\n    if (!gesture.imageEl || !gesture.imageWrapEl) return;\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.style.overflow = 'hidden';\n      swiper.wrapperEl.style.touchAction = 'none';\n    }\n    gesture.slideEl.classList.add(`${params.zoomedSlideClass}`);\n    let touchX;\n    let touchY;\n    let offsetX;\n    let offsetY;\n    let diffX;\n    let diffY;\n    let translateX;\n    let translateY;\n    let imageWidth;\n    let imageHeight;\n    let scaledWidth;\n    let scaledHeight;\n    let translateMinX;\n    let translateMinY;\n    let translateMaxX;\n    let translateMaxY;\n    let slideWidth;\n    let slideHeight;\n    if (typeof image.touchesStart.x === 'undefined' && e) {\n      touchX = e.pageX;\n      touchY = e.pageY;\n    } else {\n      touchX = image.touchesStart.x;\n      touchY = image.touchesStart.y;\n    }\n    const forceZoomRatio = typeof e === 'number' ? e : null;\n    if (currentScale === 1 && forceZoomRatio) {\n      touchX = undefined;\n      touchY = undefined;\n    }\n    zoom.scale = forceZoomRatio || gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio;\n    currentScale = forceZoomRatio || gesture.imageWrapEl.getAttribute('data-swiper-zoom') || params.maxRatio;\n    if (e && !(currentScale === 1 && forceZoomRatio)) {\n      slideWidth = gesture.slideEl.offsetWidth;\n      slideHeight = gesture.slideEl.offsetHeight;\n      offsetX = elementOffset(gesture.slideEl).left + window.scrollX;\n      offsetY = elementOffset(gesture.slideEl).top + window.scrollY;\n      diffX = offsetX + slideWidth / 2 - touchX;\n      diffY = offsetY + slideHeight / 2 - touchY;\n      imageWidth = gesture.imageEl.offsetWidth;\n      imageHeight = gesture.imageEl.offsetHeight;\n      scaledWidth = imageWidth * zoom.scale;\n      scaledHeight = imageHeight * zoom.scale;\n      translateMinX = Math.min(slideWidth / 2 - scaledWidth / 2, 0);\n      translateMinY = Math.min(slideHeight / 2 - scaledHeight / 2, 0);\n      translateMaxX = -translateMinX;\n      translateMaxY = -translateMinY;\n      translateX = diffX * zoom.scale;\n      translateY = diffY * zoom.scale;\n      if (translateX < translateMinX) {\n        translateX = translateMinX;\n      }\n      if (translateX > translateMaxX) {\n        translateX = translateMaxX;\n      }\n      if (translateY < translateMinY) {\n        translateY = translateMinY;\n      }\n      if (translateY > translateMaxY) {\n        translateY = translateMaxY;\n      }\n    } else {\n      translateX = 0;\n      translateY = 0;\n    }\n    if (forceZoomRatio && zoom.scale === 1) {\n      gesture.originX = 0;\n      gesture.originY = 0;\n    }\n    gesture.imageWrapEl.style.transitionDuration = '300ms';\n    gesture.imageWrapEl.style.transform = `translate3d(${translateX}px, ${translateY}px,0)`;\n    gesture.imageEl.style.transitionDuration = '300ms';\n    gesture.imageEl.style.transform = `translate3d(0,0,0) scale(${zoom.scale})`;\n  }\n  function zoomOut() {\n    const zoom = swiper.zoom;\n    const params = swiper.params.zoom;\n    if (!gesture.slideEl) {\n      if (swiper.params.virtual && swiper.params.virtual.enabled && swiper.virtual) {\n        gesture.slideEl = elementChildren(swiper.slidesEl, `.${swiper.params.slideActiveClass}`)[0];\n      } else {\n        gesture.slideEl = swiper.slides[swiper.activeIndex];\n      }\n      let imageEl = gesture.slideEl.querySelector(`.${params.containerClass}`);\n      if (imageEl) {\n        imageEl = imageEl.querySelectorAll('picture, img, svg, canvas, .swiper-zoom-target')[0];\n      }\n      gesture.imageEl = imageEl;\n      if (imageEl) {\n        gesture.imageWrapEl = elementParents(gesture.imageEl, `.${params.containerClass}`)[0];\n      } else {\n        gesture.imageWrapEl = undefined;\n      }\n    }\n    if (!gesture.imageEl || !gesture.imageWrapEl) return;\n    if (swiper.params.cssMode) {\n      swiper.wrapperEl.style.overflow = '';\n      swiper.wrapperEl.style.touchAction = '';\n    }\n    zoom.scale = 1;\n    currentScale = 1;\n    gesture.imageWrapEl.style.transitionDuration = '300ms';\n    gesture.imageWrapEl.style.transform = 'translate3d(0,0,0)';\n    gesture.imageEl.style.transitionDuration = '300ms';\n    gesture.imageEl.style.transform = 'translate3d(0,0,0) scale(1)';\n    gesture.slideEl.classList.remove(`${params.zoomedSlideClass}`);\n    gesture.slideEl = undefined;\n    gesture.originX = 0;\n    gesture.originY = 0;\n  }\n\n  // Toggle Zoom\n  function zoomToggle(e) {\n    const zoom = swiper.zoom;\n    if (zoom.scale && zoom.scale !== 1) {\n      // Zoom Out\n      zoomOut();\n    } else {\n      // Zoom In\n      zoomIn(e);\n    }\n  }\n  function getListeners() {\n    const passiveListener = swiper.params.passiveListeners ? {\n      passive: true,\n      capture: false\n    } : false;\n    const activeListenerWithCapture = swiper.params.passiveListeners ? {\n      passive: false,\n      capture: true\n    } : true;\n    return {\n      passiveListener,\n      activeListenerWithCapture\n    };\n  }\n\n  // Attach/Detach Events\n  function enable() {\n    const zoom = swiper.zoom;\n    if (zoom.enabled) return;\n    zoom.enabled = true;\n    const {\n      passiveListener,\n      activeListenerWithCapture\n    } = getListeners();\n\n    // Scale image\n    swiper.wrapperEl.addEventListener('pointerdown', onGestureStart, passiveListener);\n    swiper.wrapperEl.addEventListener('pointermove', onGestureChange, activeListenerWithCapture);\n    ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {\n      swiper.wrapperEl.addEventListener(eventName, onGestureEnd, passiveListener);\n    });\n\n    // Move image\n    swiper.wrapperEl.addEventListener('pointermove', onTouchMove, activeListenerWithCapture);\n  }\n  function disable() {\n    const zoom = swiper.zoom;\n    if (!zoom.enabled) return;\n    zoom.enabled = false;\n    const {\n      passiveListener,\n      activeListenerWithCapture\n    } = getListeners();\n\n    // Scale image\n    swiper.wrapperEl.removeEventListener('pointerdown', onGestureStart, passiveListener);\n    swiper.wrapperEl.removeEventListener('pointermove', onGestureChange, activeListenerWithCapture);\n    ['pointerup', 'pointercancel', 'pointerout'].forEach(eventName => {\n      swiper.wrapperEl.removeEventListener(eventName, onGestureEnd, passiveListener);\n    });\n\n    // Move image\n    swiper.wrapperEl.removeEventListener('pointermove', onTouchMove, activeListenerWithCapture);\n  }\n  on('init', () => {\n    if (swiper.params.zoom.enabled) {\n      enable();\n    }\n  });\n  on('destroy', () => {\n    disable();\n  });\n  on('touchStart', (_s, e) => {\n    if (!swiper.zoom.enabled) return;\n    onTouchStart(e);\n  });\n  on('touchEnd', (_s, e) => {\n    if (!swiper.zoom.enabled) return;\n    onTouchEnd();\n  });\n  on('doubleTap', (_s, e) => {\n    if (!swiper.animating && swiper.params.zoom.enabled && swiper.zoom.enabled && swiper.params.zoom.toggle) {\n      zoomToggle(e);\n    }\n  });\n  on('transitionEnd', () => {\n    if (swiper.zoom.enabled && swiper.params.zoom.enabled) {\n      onTransitionEnd();\n    }\n  });\n  on('slideChange', () => {\n    if (swiper.zoom.enabled && swiper.params.zoom.enabled && swiper.params.cssMode) {\n      onTransitionEnd();\n    }\n  });\n  Object.assign(swiper.zoom, {\n    enable,\n    disable,\n    in: zoomIn,\n    out: zoomOut,\n    toggle: zoomToggle\n  });\n}\n\nexport { Zoom as default };\n","import { n as nextTick, i as elementTransitionEnd } from '../shared/utils.mjs';\n\n/* eslint no-bitwise: [\"error\", { \"allow\": [\">>\"] }] */\nfunction Controller(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    controller: {\n      control: undefined,\n      inverse: false,\n      by: 'slide' // or 'container'\n    }\n  });\n\n  swiper.controller = {\n    control: undefined\n  };\n  function LinearSpline(x, y) {\n    const binarySearch = function search() {\n      let maxIndex;\n      let minIndex;\n      let guess;\n      return (array, val) => {\n        minIndex = -1;\n        maxIndex = array.length;\n        while (maxIndex - minIndex > 1) {\n          guess = maxIndex + minIndex >> 1;\n          if (array[guess] <= val) {\n            minIndex = guess;\n          } else {\n            maxIndex = guess;\n          }\n        }\n        return maxIndex;\n      };\n    }();\n    this.x = x;\n    this.y = y;\n    this.lastIndex = x.length - 1;\n    // Given an x value (x2), return the expected y2 value:\n    // (x1,y1) is the known point before given value,\n    // (x3,y3) is the known point after given value.\n    let i1;\n    let i3;\n    this.interpolate = function interpolate(x2) {\n      if (!x2) return 0;\n\n      // Get the indexes of x1 and x3 (the array indexes before and after given x2):\n      i3 = binarySearch(this.x, x2);\n      i1 = i3 - 1;\n\n      // We have our indexes i1 & i3, so we can calculate already:\n      // y2 := ((x2−x1) × (y3−y1)) ÷ (x3−x1) + y1\n      return (x2 - this.x[i1]) * (this.y[i3] - this.y[i1]) / (this.x[i3] - this.x[i1]) + this.y[i1];\n    };\n    return this;\n  }\n  function getInterpolateFunction(c) {\n    swiper.controller.spline = swiper.params.loop ? new LinearSpline(swiper.slidesGrid, c.slidesGrid) : new LinearSpline(swiper.snapGrid, c.snapGrid);\n  }\n  function setTranslate(_t, byController) {\n    const controlled = swiper.controller.control;\n    let multiplier;\n    let controlledTranslate;\n    const Swiper = swiper.constructor;\n    function setControlledTranslate(c) {\n      if (c.destroyed) return;\n\n      // this will create an Interpolate function based on the snapGrids\n      // x is the Grid of the scrolled scroller and y will be the controlled scroller\n      // it makes sense to create this only once and recall it for the interpolation\n      // the function does a lot of value caching for performance\n      const translate = swiper.rtlTranslate ? -swiper.translate : swiper.translate;\n      if (swiper.params.controller.by === 'slide') {\n        getInterpolateFunction(c);\n        // i am not sure why the values have to be multiplicated this way, tried to invert the snapGrid\n        // but it did not work out\n        controlledTranslate = -swiper.controller.spline.interpolate(-translate);\n      }\n      if (!controlledTranslate || swiper.params.controller.by === 'container') {\n        multiplier = (c.maxTranslate() - c.minTranslate()) / (swiper.maxTranslate() - swiper.minTranslate());\n        if (Number.isNaN(multiplier) || !Number.isFinite(multiplier)) {\n          multiplier = 1;\n        }\n        controlledTranslate = (translate - swiper.minTranslate()) * multiplier + c.minTranslate();\n      }\n      if (swiper.params.controller.inverse) {\n        controlledTranslate = c.maxTranslate() - controlledTranslate;\n      }\n      c.updateProgress(controlledTranslate);\n      c.setTranslate(controlledTranslate, swiper);\n      c.updateActiveIndex();\n      c.updateSlidesClasses();\n    }\n    if (Array.isArray(controlled)) {\n      for (let i = 0; i < controlled.length; i += 1) {\n        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n          setControlledTranslate(controlled[i]);\n        }\n      }\n    } else if (controlled instanceof Swiper && byController !== controlled) {\n      setControlledTranslate(controlled);\n    }\n  }\n  function setTransition(duration, byController) {\n    const Swiper = swiper.constructor;\n    const controlled = swiper.controller.control;\n    let i;\n    function setControlledTransition(c) {\n      if (c.destroyed) return;\n      c.setTransition(duration, swiper);\n      if (duration !== 0) {\n        c.transitionStart();\n        if (c.params.autoHeight) {\n          nextTick(() => {\n            c.updateAutoHeight();\n          });\n        }\n        elementTransitionEnd(c.wrapperEl, () => {\n          if (!controlled) return;\n          c.transitionEnd();\n        });\n      }\n    }\n    if (Array.isArray(controlled)) {\n      for (i = 0; i < controlled.length; i += 1) {\n        if (controlled[i] !== byController && controlled[i] instanceof Swiper) {\n          setControlledTransition(controlled[i]);\n        }\n      }\n    } else if (controlled instanceof Swiper && byController !== controlled) {\n      setControlledTransition(controlled);\n    }\n  }\n  function removeSpline() {\n    if (!swiper.controller.control) return;\n    if (swiper.controller.spline) {\n      swiper.controller.spline = undefined;\n      delete swiper.controller.spline;\n    }\n  }\n  on('beforeInit', () => {\n    if (typeof window !== 'undefined' && (\n    // eslint-disable-line\n    typeof swiper.params.controller.control === 'string' || swiper.params.controller.control instanceof HTMLElement)) {\n      const controlElement = document.querySelector(swiper.params.controller.control);\n      if (controlElement && controlElement.swiper) {\n        swiper.controller.control = controlElement.swiper;\n      } else if (controlElement) {\n        const onControllerSwiper = e => {\n          swiper.controller.control = e.detail[0];\n          swiper.update();\n          controlElement.removeEventListener('init', onControllerSwiper);\n        };\n        controlElement.addEventListener('init', onControllerSwiper);\n      }\n      return;\n    }\n    swiper.controller.control = swiper.params.controller.control;\n  });\n  on('update', () => {\n    removeSpline();\n  });\n  on('resize', () => {\n    removeSpline();\n  });\n  on('observerUpdate', () => {\n    removeSpline();\n  });\n  on('setTranslate', (_s, translate, byController) => {\n    if (!swiper.controller.control || swiper.controller.control.destroyed) return;\n    swiper.controller.setTranslate(translate, byController);\n  });\n  on('setTransition', (_s, duration, byController) => {\n    if (!swiper.controller.control || swiper.controller.control.destroyed) return;\n    swiper.controller.setTransition(duration, byController);\n  });\n  Object.assign(swiper.controller, {\n    setTranslate,\n    setTransition\n  });\n}\n\nexport { Controller as default };\n","import { c as classesToSelector } from '../shared/classes-to-selector.mjs';\nimport { c as createElement, g as elementIndex } from '../shared/utils.mjs';\n\nfunction A11y(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    a11y: {\n      enabled: true,\n      notificationClass: 'swiper-notification',\n      prevSlideMessage: 'Previous slide',\n      nextSlideMessage: 'Next slide',\n      firstSlideMessage: 'This is the first slide',\n      lastSlideMessage: 'This is the last slide',\n      paginationBulletMessage: 'Go to slide {{index}}',\n      slideLabelMessage: '{{index}} / {{slidesLength}}',\n      containerMessage: null,\n      containerRoleDescriptionMessage: null,\n      itemRoleDescriptionMessage: null,\n      slideRole: 'group',\n      id: null\n    }\n  });\n  swiper.a11y = {\n    clicked: false\n  };\n  let liveRegion = null;\n  function notify(message) {\n    const notification = liveRegion;\n    if (notification.length === 0) return;\n    notification.innerHTML = '';\n    notification.innerHTML = message;\n  }\n  const makeElementsArray = el => (Array.isArray(el) ? el : [el]).filter(e => !!e);\n  function getRandomNumber(size) {\n    if (size === void 0) {\n      size = 16;\n    }\n    const randomChar = () => Math.round(16 * Math.random()).toString(16);\n    return 'x'.repeat(size).replace(/x/g, randomChar);\n  }\n  function makeElFocusable(el) {\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      subEl.setAttribute('tabIndex', '0');\n    });\n  }\n  function makeElNotFocusable(el) {\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      subEl.setAttribute('tabIndex', '-1');\n    });\n  }\n  function addElRole(el, role) {\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      subEl.setAttribute('role', role);\n    });\n  }\n  function addElRoleDescription(el, description) {\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      subEl.setAttribute('aria-roledescription', description);\n    });\n  }\n  function addElControls(el, controls) {\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      subEl.setAttribute('aria-controls', controls);\n    });\n  }\n  function addElLabel(el, label) {\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      subEl.setAttribute('aria-label', label);\n    });\n  }\n  function addElId(el, id) {\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      subEl.setAttribute('id', id);\n    });\n  }\n  function addElLive(el, live) {\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      subEl.setAttribute('aria-live', live);\n    });\n  }\n  function disableEl(el) {\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      subEl.setAttribute('aria-disabled', true);\n    });\n  }\n  function enableEl(el) {\n    el = makeElementsArray(el);\n    el.forEach(subEl => {\n      subEl.setAttribute('aria-disabled', false);\n    });\n  }\n  function onEnterOrSpaceKey(e) {\n    if (e.keyCode !== 13 && e.keyCode !== 32) return;\n    const params = swiper.params.a11y;\n    const targetEl = e.target;\n    if (swiper.pagination && swiper.pagination.el && (targetEl === swiper.pagination.el || swiper.pagination.el.contains(e.target))) {\n      if (!e.target.matches(classesToSelector(swiper.params.pagination.bulletClass))) return;\n    }\n    if (swiper.navigation && swiper.navigation.nextEl && targetEl === swiper.navigation.nextEl) {\n      if (!(swiper.isEnd && !swiper.params.loop)) {\n        swiper.slideNext();\n      }\n      if (swiper.isEnd) {\n        notify(params.lastSlideMessage);\n      } else {\n        notify(params.nextSlideMessage);\n      }\n    }\n    if (swiper.navigation && swiper.navigation.prevEl && targetEl === swiper.navigation.prevEl) {\n      if (!(swiper.isBeginning && !swiper.params.loop)) {\n        swiper.slidePrev();\n      }\n      if (swiper.isBeginning) {\n        notify(params.firstSlideMessage);\n      } else {\n        notify(params.prevSlideMessage);\n      }\n    }\n    if (swiper.pagination && targetEl.matches(classesToSelector(swiper.params.pagination.bulletClass))) {\n      targetEl.click();\n    }\n  }\n  function updateNavigation() {\n    if (swiper.params.loop || swiper.params.rewind || !swiper.navigation) return;\n    const {\n      nextEl,\n      prevEl\n    } = swiper.navigation;\n    if (prevEl) {\n      if (swiper.isBeginning) {\n        disableEl(prevEl);\n        makeElNotFocusable(prevEl);\n      } else {\n        enableEl(prevEl);\n        makeElFocusable(prevEl);\n      }\n    }\n    if (nextEl) {\n      if (swiper.isEnd) {\n        disableEl(nextEl);\n        makeElNotFocusable(nextEl);\n      } else {\n        enableEl(nextEl);\n        makeElFocusable(nextEl);\n      }\n    }\n  }\n  function hasPagination() {\n    return swiper.pagination && swiper.pagination.bullets && swiper.pagination.bullets.length;\n  }\n  function hasClickablePagination() {\n    return hasPagination() && swiper.params.pagination.clickable;\n  }\n  function updatePagination() {\n    const params = swiper.params.a11y;\n    if (!hasPagination()) return;\n    swiper.pagination.bullets.forEach(bulletEl => {\n      if (swiper.params.pagination.clickable) {\n        makeElFocusable(bulletEl);\n        if (!swiper.params.pagination.renderBullet) {\n          addElRole(bulletEl, 'button');\n          addElLabel(bulletEl, params.paginationBulletMessage.replace(/\\{\\{index\\}\\}/, elementIndex(bulletEl) + 1));\n        }\n      }\n      if (bulletEl.matches(classesToSelector(swiper.params.pagination.bulletActiveClass))) {\n        bulletEl.setAttribute('aria-current', 'true');\n      } else {\n        bulletEl.removeAttribute('aria-current');\n      }\n    });\n  }\n  const initNavEl = (el, wrapperId, message) => {\n    makeElFocusable(el);\n    if (el.tagName !== 'BUTTON') {\n      addElRole(el, 'button');\n      el.addEventListener('keydown', onEnterOrSpaceKey);\n    }\n    addElLabel(el, message);\n    addElControls(el, wrapperId);\n  };\n  const handlePointerDown = () => {\n    swiper.a11y.clicked = true;\n  };\n  const handlePointerUp = () => {\n    requestAnimationFrame(() => {\n      requestAnimationFrame(() => {\n        if (!swiper.destroyed) {\n          swiper.a11y.clicked = false;\n        }\n      });\n    });\n  };\n  const handleFocus = e => {\n    if (swiper.a11y.clicked) return;\n    const slideEl = e.target.closest(`.${swiper.params.slideClass}, swiper-slide`);\n    if (!slideEl || !swiper.slides.includes(slideEl)) return;\n    const isActive = swiper.slides.indexOf(slideEl) === swiper.activeIndex;\n    const isVisible = swiper.params.watchSlidesProgress && swiper.visibleSlides && swiper.visibleSlides.includes(slideEl);\n    if (isActive || isVisible) return;\n    if (e.sourceCapabilities && e.sourceCapabilities.firesTouchEvents) return;\n    if (swiper.isHorizontal()) {\n      swiper.el.scrollLeft = 0;\n    } else {\n      swiper.el.scrollTop = 0;\n    }\n    swiper.slideTo(swiper.slides.indexOf(slideEl), 0);\n  };\n  const initSlides = () => {\n    const params = swiper.params.a11y;\n    if (params.itemRoleDescriptionMessage) {\n      addElRoleDescription(swiper.slides, params.itemRoleDescriptionMessage);\n    }\n    if (params.slideRole) {\n      addElRole(swiper.slides, params.slideRole);\n    }\n    const slidesLength = swiper.slides.length;\n    if (params.slideLabelMessage) {\n      swiper.slides.forEach((slideEl, index) => {\n        const slideIndex = swiper.params.loop ? parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10) : index;\n        const ariaLabelMessage = params.slideLabelMessage.replace(/\\{\\{index\\}\\}/, slideIndex + 1).replace(/\\{\\{slidesLength\\}\\}/, slidesLength);\n        addElLabel(slideEl, ariaLabelMessage);\n      });\n    }\n  };\n  const init = () => {\n    const params = swiper.params.a11y;\n    swiper.el.append(liveRegion);\n\n    // Container\n    const containerEl = swiper.el;\n    if (params.containerRoleDescriptionMessage) {\n      addElRoleDescription(containerEl, params.containerRoleDescriptionMessage);\n    }\n    if (params.containerMessage) {\n      addElLabel(containerEl, params.containerMessage);\n    }\n\n    // Wrapper\n    const wrapperEl = swiper.wrapperEl;\n    const wrapperId = params.id || wrapperEl.getAttribute('id') || `swiper-wrapper-${getRandomNumber(16)}`;\n    const live = swiper.params.autoplay && swiper.params.autoplay.enabled ? 'off' : 'polite';\n    addElId(wrapperEl, wrapperId);\n    addElLive(wrapperEl, live);\n\n    // Slide\n    initSlides();\n\n    // Navigation\n    let {\n      nextEl,\n      prevEl\n    } = swiper.navigation ? swiper.navigation : {};\n    nextEl = makeElementsArray(nextEl);\n    prevEl = makeElementsArray(prevEl);\n    if (nextEl) {\n      nextEl.forEach(el => initNavEl(el, wrapperId, params.nextSlideMessage));\n    }\n    if (prevEl) {\n      prevEl.forEach(el => initNavEl(el, wrapperId, params.prevSlideMessage));\n    }\n\n    // Pagination\n    if (hasClickablePagination()) {\n      const paginationEl = Array.isArray(swiper.pagination.el) ? swiper.pagination.el : [swiper.pagination.el];\n      paginationEl.forEach(el => {\n        el.addEventListener('keydown', onEnterOrSpaceKey);\n      });\n    }\n\n    // Tab focus\n    swiper.el.addEventListener('focus', handleFocus, true);\n    swiper.el.addEventListener('pointerdown', handlePointerDown, true);\n    swiper.el.addEventListener('pointerup', handlePointerUp, true);\n  };\n  function destroy() {\n    if (liveRegion) liveRegion.remove();\n    let {\n      nextEl,\n      prevEl\n    } = swiper.navigation ? swiper.navigation : {};\n    nextEl = makeElementsArray(nextEl);\n    prevEl = makeElementsArray(prevEl);\n    if (nextEl) {\n      nextEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));\n    }\n    if (prevEl) {\n      prevEl.forEach(el => el.removeEventListener('keydown', onEnterOrSpaceKey));\n    }\n\n    // Pagination\n    if (hasClickablePagination()) {\n      const paginationEl = Array.isArray(swiper.pagination.el) ? swiper.pagination.el : [swiper.pagination.el];\n      paginationEl.forEach(el => {\n        el.removeEventListener('keydown', onEnterOrSpaceKey);\n      });\n    }\n\n    // Tab focus\n    swiper.el.removeEventListener('focus', handleFocus, true);\n    swiper.el.removeEventListener('pointerdown', handlePointerDown, true);\n    swiper.el.removeEventListener('pointerup', handlePointerUp, true);\n  }\n  on('beforeInit', () => {\n    liveRegion = createElement('span', swiper.params.a11y.notificationClass);\n    liveRegion.setAttribute('aria-live', 'assertive');\n    liveRegion.setAttribute('aria-atomic', 'true');\n  });\n  on('afterInit', () => {\n    if (!swiper.params.a11y.enabled) return;\n    init();\n  });\n  on('slidesLengthChange snapGridLengthChange slidesGridLengthChange', () => {\n    if (!swiper.params.a11y.enabled) return;\n    initSlides();\n  });\n  on('fromEdge toEdge afterInit lock unlock', () => {\n    if (!swiper.params.a11y.enabled) return;\n    updateNavigation();\n  });\n  on('paginationUpdate', () => {\n    if (!swiper.params.a11y.enabled) return;\n    updatePagination();\n  });\n  on('destroy', () => {\n    if (!swiper.params.a11y.enabled) return;\n    destroy();\n  });\n}\n\nexport { A11y as default };\n","import { a as getWindow } from '../shared/ssr-window.esm.mjs';\n\nfunction History(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    history: {\n      enabled: false,\n      root: '',\n      replaceState: false,\n      key: 'slides',\n      keepQuery: false\n    }\n  });\n  let initialized = false;\n  let paths = {};\n  const slugify = text => {\n    return text.toString().replace(/\\s+/g, '-').replace(/[^\\w-]+/g, '').replace(/--+/g, '-').replace(/^-+/, '').replace(/-+$/, '');\n  };\n  const getPathValues = urlOverride => {\n    const window = getWindow();\n    let location;\n    if (urlOverride) {\n      location = new URL(urlOverride);\n    } else {\n      location = window.location;\n    }\n    const pathArray = location.pathname.slice(1).split('/').filter(part => part !== '');\n    const total = pathArray.length;\n    const key = pathArray[total - 2];\n    const value = pathArray[total - 1];\n    return {\n      key,\n      value\n    };\n  };\n  const setHistory = (key, index) => {\n    const window = getWindow();\n    if (!initialized || !swiper.params.history.enabled) return;\n    let location;\n    if (swiper.params.url) {\n      location = new URL(swiper.params.url);\n    } else {\n      location = window.location;\n    }\n    const slide = swiper.slides[index];\n    let value = slugify(slide.getAttribute('data-history'));\n    if (swiper.params.history.root.length > 0) {\n      let root = swiper.params.history.root;\n      if (root[root.length - 1] === '/') root = root.slice(0, root.length - 1);\n      value = `${root}/${key ? `${key}/` : ''}${value}`;\n    } else if (!location.pathname.includes(key)) {\n      value = `${key ? `${key}/` : ''}${value}`;\n    }\n    if (swiper.params.history.keepQuery) {\n      value += location.search;\n    }\n    const currentState = window.history.state;\n    if (currentState && currentState.value === value) {\n      return;\n    }\n    if (swiper.params.history.replaceState) {\n      window.history.replaceState({\n        value\n      }, null, value);\n    } else {\n      window.history.pushState({\n        value\n      }, null, value);\n    }\n  };\n  const scrollToSlide = (speed, value, runCallbacks) => {\n    if (value) {\n      for (let i = 0, length = swiper.slides.length; i < length; i += 1) {\n        const slide = swiper.slides[i];\n        const slideHistory = slugify(slide.getAttribute('data-history'));\n        if (slideHistory === value) {\n          const index = swiper.getSlideIndex(slide);\n          swiper.slideTo(index, speed, runCallbacks);\n        }\n      }\n    } else {\n      swiper.slideTo(0, speed, runCallbacks);\n    }\n  };\n  const setHistoryPopState = () => {\n    paths = getPathValues(swiper.params.url);\n    scrollToSlide(swiper.params.speed, paths.value, false);\n  };\n  const init = () => {\n    const window = getWindow();\n    if (!swiper.params.history) return;\n    if (!window.history || !window.history.pushState) {\n      swiper.params.history.enabled = false;\n      swiper.params.hashNavigation.enabled = true;\n      return;\n    }\n    initialized = true;\n    paths = getPathValues(swiper.params.url);\n    if (!paths.key && !paths.value) {\n      if (!swiper.params.history.replaceState) {\n        window.addEventListener('popstate', setHistoryPopState);\n      }\n      return;\n    }\n    scrollToSlide(0, paths.value, swiper.params.runCallbacksOnInit);\n    if (!swiper.params.history.replaceState) {\n      window.addEventListener('popstate', setHistoryPopState);\n    }\n  };\n  const destroy = () => {\n    const window = getWindow();\n    if (!swiper.params.history.replaceState) {\n      window.removeEventListener('popstate', setHistoryPopState);\n    }\n  };\n  on('init', () => {\n    if (swiper.params.history.enabled) {\n      init();\n    }\n  });\n  on('destroy', () => {\n    if (swiper.params.history.enabled) {\n      destroy();\n    }\n  });\n  on('transitionEnd _freeModeNoMomentumRelease', () => {\n    if (initialized) {\n      setHistory(swiper.params.history.key, swiper.activeIndex);\n    }\n  });\n  on('slideChange', () => {\n    if (initialized && swiper.params.cssMode) {\n      setHistory(swiper.params.history.key, swiper.activeIndex);\n    }\n  });\n}\n\nexport { History as default };\n","import { g as getDocument, a as getWindow } from '../shared/ssr-window.esm.mjs';\nimport { e as elementChildren } from '../shared/utils.mjs';\n\nfunction HashNavigation(_ref) {\n  let {\n    swiper,\n    extendParams,\n    emit,\n    on\n  } = _ref;\n  let initialized = false;\n  const document = getDocument();\n  const window = getWindow();\n  extendParams({\n    hashNavigation: {\n      enabled: false,\n      replaceState: false,\n      watchState: false,\n      getSlideIndex(_s, hash) {\n        if (swiper.virtual && swiper.params.virtual.enabled) {\n          const slideWithHash = swiper.slides.filter(slideEl => slideEl.getAttribute('data-hash') === hash)[0];\n          if (!slideWithHash) return 0;\n          const index = parseInt(slideWithHash.getAttribute('data-swiper-slide-index'), 10);\n          return index;\n        }\n        return swiper.getSlideIndex(elementChildren(swiper.slidesEl, `.${swiper.params.slideClass}[data-hash=\"${hash}\"], swiper-slide[data-hash=\"${hash}\"]`)[0]);\n      }\n    }\n  });\n  const onHashChange = () => {\n    emit('hashChange');\n    const newHash = document.location.hash.replace('#', '');\n    const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${swiper.activeIndex}\"]`) : swiper.slides[swiper.activeIndex];\n    const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') : '';\n    if (newHash !== activeSlideHash) {\n      const newIndex = swiper.params.hashNavigation.getSlideIndex(swiper, newHash);\n      if (typeof newIndex === 'undefined' || Number.isNaN(newIndex)) return;\n      swiper.slideTo(newIndex);\n    }\n  };\n  const setHash = () => {\n    if (!initialized || !swiper.params.hashNavigation.enabled) return;\n    const activeSlideEl = swiper.virtual && swiper.params.virtual.enabled ? swiper.slidesEl.querySelector(`[data-swiper-slide-index=\"${swiper.activeIndex}\"]`) : swiper.slides[swiper.activeIndex];\n    const activeSlideHash = activeSlideEl ? activeSlideEl.getAttribute('data-hash') || activeSlideEl.getAttribute('data-history') : '';\n    if (swiper.params.hashNavigation.replaceState && window.history && window.history.replaceState) {\n      window.history.replaceState(null, null, `#${activeSlideHash}` || '');\n      emit('hashSet');\n    } else {\n      document.location.hash = activeSlideHash || '';\n      emit('hashSet');\n    }\n  };\n  const init = () => {\n    if (!swiper.params.hashNavigation.enabled || swiper.params.history && swiper.params.history.enabled) return;\n    initialized = true;\n    const hash = document.location.hash.replace('#', '');\n    if (hash) {\n      const speed = 0;\n      const index = swiper.params.hashNavigation.getSlideIndex(swiper, hash);\n      swiper.slideTo(index || 0, speed, swiper.params.runCallbacksOnInit, true);\n    }\n    if (swiper.params.hashNavigation.watchState) {\n      window.addEventListener('hashchange', onHashChange);\n    }\n  };\n  const destroy = () => {\n    if (swiper.params.hashNavigation.watchState) {\n      window.removeEventListener('hashchange', onHashChange);\n    }\n  };\n  on('init', () => {\n    if (swiper.params.hashNavigation.enabled) {\n      init();\n    }\n  });\n  on('destroy', () => {\n    if (swiper.params.hashNavigation.enabled) {\n      destroy();\n    }\n  });\n  on('transitionEnd _freeModeNoMomentumRelease', () => {\n    if (initialized) {\n      setHash();\n    }\n  });\n  on('slideChange', () => {\n    if (initialized && swiper.params.cssMode) {\n      setHash();\n    }\n  });\n}\n\nexport { HashNavigation as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\n\n/* eslint no-underscore-dangle: \"off\" */\n/* eslint no-use-before-define: \"off\" */\nfunction Autoplay(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on,\n    emit,\n    params\n  } = _ref;\n  swiper.autoplay = {\n    running: false,\n    paused: false,\n    timeLeft: 0\n  };\n  extendParams({\n    autoplay: {\n      enabled: false,\n      delay: 3000,\n      waitForTransition: true,\n      disableOnInteraction: true,\n      stopOnLastSlide: false,\n      reverseDirection: false,\n      pauseOnMouseEnter: false\n    }\n  });\n  let timeout;\n  let raf;\n  let autoplayDelayTotal = params && params.autoplay ? params.autoplay.delay : 3000;\n  let autoplayDelayCurrent = params && params.autoplay ? params.autoplay.delay : 3000;\n  let autoplayTimeLeft;\n  let autoplayStartTime = new Date().getTime;\n  let wasPaused;\n  let isTouched;\n  let pausedByTouch;\n  let touchStartTimeout;\n  let slideChanged;\n  let pausedByInteraction;\n  function onTransitionEnd(e) {\n    if (!swiper || swiper.destroyed || !swiper.wrapperEl) return;\n    if (e.target !== swiper.wrapperEl) return;\n    swiper.wrapperEl.removeEventListener('transitionend', onTransitionEnd);\n    resume();\n  }\n  const calcTimeLeft = () => {\n    if (swiper.destroyed || !swiper.autoplay.running) return;\n    if (swiper.autoplay.paused) {\n      wasPaused = true;\n    } else if (wasPaused) {\n      autoplayDelayCurrent = autoplayTimeLeft;\n      wasPaused = false;\n    }\n    const timeLeft = swiper.autoplay.paused ? autoplayTimeLeft : autoplayStartTime + autoplayDelayCurrent - new Date().getTime();\n    swiper.autoplay.timeLeft = timeLeft;\n    emit('autoplayTimeLeft', timeLeft, timeLeft / autoplayDelayTotal);\n    raf = requestAnimationFrame(() => {\n      calcTimeLeft();\n    });\n  };\n  const getSlideDelay = () => {\n    let activeSlideEl;\n    if (swiper.virtual && swiper.params.virtual.enabled) {\n      activeSlideEl = swiper.slides.filter(slideEl => slideEl.classList.contains('swiper-slide-active'))[0];\n    } else {\n      activeSlideEl = swiper.slides[swiper.activeIndex];\n    }\n    if (!activeSlideEl) return undefined;\n    const currentSlideDelay = parseInt(activeSlideEl.getAttribute('data-swiper-autoplay'), 10);\n    return currentSlideDelay;\n  };\n  const run = delayForce => {\n    if (swiper.destroyed || !swiper.autoplay.running) return;\n    cancelAnimationFrame(raf);\n    calcTimeLeft();\n    let delay = typeof delayForce === 'undefined' ? swiper.params.autoplay.delay : delayForce;\n    autoplayDelayTotal = swiper.params.autoplay.delay;\n    autoplayDelayCurrent = swiper.params.autoplay.delay;\n    const currentSlideDelay = getSlideDelay();\n    if (!Number.isNaN(currentSlideDelay) && currentSlideDelay > 0 && typeof delayForce === 'undefined') {\n      delay = currentSlideDelay;\n      autoplayDelayTotal = currentSlideDelay;\n      autoplayDelayCurrent = currentSlideDelay;\n    }\n    autoplayTimeLeft = delay;\n    const speed = swiper.params.speed;\n    const proceed = () => {\n      if (!swiper || swiper.destroyed) return;\n      if (swiper.params.autoplay.reverseDirection) {\n        if (!swiper.isBeginning || swiper.params.loop || swiper.params.rewind) {\n          swiper.slidePrev(speed, true, true);\n          emit('autoplay');\n        } else if (!swiper.params.autoplay.stopOnLastSlide) {\n          swiper.slideTo(swiper.slides.length - 1, speed, true, true);\n          emit('autoplay');\n        }\n      } else {\n        if (!swiper.isEnd || swiper.params.loop || swiper.params.rewind) {\n          swiper.slideNext(speed, true, true);\n          emit('autoplay');\n        } else if (!swiper.params.autoplay.stopOnLastSlide) {\n          swiper.slideTo(0, speed, true, true);\n          emit('autoplay');\n        }\n      }\n      if (swiper.params.cssMode) {\n        autoplayStartTime = new Date().getTime();\n        requestAnimationFrame(() => {\n          run();\n        });\n      }\n    };\n    if (delay > 0) {\n      clearTimeout(timeout);\n      timeout = setTimeout(() => {\n        proceed();\n      }, delay);\n    } else {\n      requestAnimationFrame(() => {\n        proceed();\n      });\n    }\n\n    // eslint-disable-next-line\n    return delay;\n  };\n  const start = () => {\n    swiper.autoplay.running = true;\n    run();\n    emit('autoplayStart');\n  };\n  const stop = () => {\n    swiper.autoplay.running = false;\n    clearTimeout(timeout);\n    cancelAnimationFrame(raf);\n    emit('autoplayStop');\n  };\n  const pause = (internal, reset) => {\n    if (swiper.destroyed || !swiper.autoplay.running) return;\n    clearTimeout(timeout);\n    if (!internal) {\n      pausedByInteraction = true;\n    }\n    const proceed = () => {\n      emit('autoplayPause');\n      if (swiper.params.autoplay.waitForTransition) {\n        swiper.wrapperEl.addEventListener('transitionend', onTransitionEnd);\n      } else {\n        resume();\n      }\n    };\n    swiper.autoplay.paused = true;\n    if (reset) {\n      if (slideChanged) {\n        autoplayTimeLeft = swiper.params.autoplay.delay;\n      }\n      slideChanged = false;\n      proceed();\n      return;\n    }\n    const delay = autoplayTimeLeft || swiper.params.autoplay.delay;\n    autoplayTimeLeft = delay - (new Date().getTime() - autoplayStartTime);\n    if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop) return;\n    if (autoplayTimeLeft < 0) autoplayTimeLeft = 0;\n    proceed();\n  };\n  const resume = () => {\n    if (swiper.isEnd && autoplayTimeLeft < 0 && !swiper.params.loop || swiper.destroyed || !swiper.autoplay.running) return;\n    autoplayStartTime = new Date().getTime();\n    if (pausedByInteraction) {\n      pausedByInteraction = false;\n      run(autoplayTimeLeft);\n    } else {\n      run();\n    }\n    swiper.autoplay.paused = false;\n    emit('autoplayResume');\n  };\n  const onVisibilityChange = () => {\n    if (swiper.destroyed || !swiper.autoplay.running) return;\n    const document = getDocument();\n    if (document.visibilityState === 'hidden') {\n      pausedByInteraction = true;\n      pause(true);\n    }\n    if (document.visibilityState === 'visible') {\n      resume();\n    }\n  };\n  const onPointerEnter = e => {\n    if (e.pointerType !== 'mouse') return;\n    pausedByInteraction = true;\n    pause(true);\n  };\n  const onPointerLeave = e => {\n    if (e.pointerType !== 'mouse') return;\n    if (swiper.autoplay.paused) {\n      resume();\n    }\n  };\n  const attachMouseEvents = () => {\n    if (swiper.params.autoplay.pauseOnMouseEnter) {\n      swiper.el.addEventListener('pointerenter', onPointerEnter);\n      swiper.el.addEventListener('pointerleave', onPointerLeave);\n    }\n  };\n  const detachMouseEvents = () => {\n    swiper.el.removeEventListener('pointerenter', onPointerEnter);\n    swiper.el.removeEventListener('pointerleave', onPointerLeave);\n  };\n  const attachDocumentEvents = () => {\n    const document = getDocument();\n    document.addEventListener('visibilitychange', onVisibilityChange);\n  };\n  const detachDocumentEvents = () => {\n    const document = getDocument();\n    document.removeEventListener('visibilitychange', onVisibilityChange);\n  };\n  on('init', () => {\n    if (swiper.params.autoplay.enabled) {\n      attachMouseEvents();\n      attachDocumentEvents();\n      autoplayStartTime = new Date().getTime();\n      start();\n    }\n  });\n  on('destroy', () => {\n    detachMouseEvents();\n    detachDocumentEvents();\n    if (swiper.autoplay.running) {\n      stop();\n    }\n  });\n  on('beforeTransitionStart', (_s, speed, internal) => {\n    if (swiper.destroyed || !swiper.autoplay.running) return;\n    if (internal || !swiper.params.autoplay.disableOnInteraction) {\n      pause(true, true);\n    } else {\n      stop();\n    }\n  });\n  on('sliderFirstMove', () => {\n    if (swiper.destroyed || !swiper.autoplay.running) return;\n    if (swiper.params.autoplay.disableOnInteraction) {\n      stop();\n      return;\n    }\n    isTouched = true;\n    pausedByTouch = false;\n    pausedByInteraction = false;\n    touchStartTimeout = setTimeout(() => {\n      pausedByInteraction = true;\n      pausedByTouch = true;\n      pause(true);\n    }, 200);\n  });\n  on('touchEnd', () => {\n    if (swiper.destroyed || !swiper.autoplay.running || !isTouched) return;\n    clearTimeout(touchStartTimeout);\n    clearTimeout(timeout);\n    if (swiper.params.autoplay.disableOnInteraction) {\n      pausedByTouch = false;\n      isTouched = false;\n      return;\n    }\n    if (pausedByTouch && swiper.params.cssMode) resume();\n    pausedByTouch = false;\n    isTouched = false;\n  });\n  on('slideChange', () => {\n    if (swiper.destroyed || !swiper.autoplay.running) return;\n    slideChanged = true;\n  });\n  Object.assign(swiper.autoplay, {\n    start,\n    stop,\n    pause,\n    resume\n  });\n}\n\nexport { Autoplay as default };\n","import { g as getDocument } from '../shared/ssr-window.esm.mjs';\nimport { j as isObject, e as elementChildren } from '../shared/utils.mjs';\n\nfunction Thumb(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    thumbs: {\n      swiper: null,\n      multipleActiveThumbs: true,\n      autoScrollOffset: 0,\n      slideThumbActiveClass: 'swiper-slide-thumb-active',\n      thumbsContainerClass: 'swiper-thumbs'\n    }\n  });\n  let initialized = false;\n  let swiperCreated = false;\n  swiper.thumbs = {\n    swiper: null\n  };\n  function onThumbClick() {\n    const thumbsSwiper = swiper.thumbs.swiper;\n    if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n    const clickedIndex = thumbsSwiper.clickedIndex;\n    const clickedSlide = thumbsSwiper.clickedSlide;\n    if (clickedSlide && clickedSlide.classList.contains(swiper.params.thumbs.slideThumbActiveClass)) return;\n    if (typeof clickedIndex === 'undefined' || clickedIndex === null) return;\n    let slideToIndex;\n    if (thumbsSwiper.params.loop) {\n      slideToIndex = parseInt(thumbsSwiper.clickedSlide.getAttribute('data-swiper-slide-index'), 10);\n    } else {\n      slideToIndex = clickedIndex;\n    }\n    if (swiper.params.loop) {\n      swiper.slideToLoop(slideToIndex);\n    } else {\n      swiper.slideTo(slideToIndex);\n    }\n  }\n  function init() {\n    const {\n      thumbs: thumbsParams\n    } = swiper.params;\n    if (initialized) return false;\n    initialized = true;\n    const SwiperClass = swiper.constructor;\n    if (thumbsParams.swiper instanceof SwiperClass) {\n      swiper.thumbs.swiper = thumbsParams.swiper;\n      Object.assign(swiper.thumbs.swiper.originalParams, {\n        watchSlidesProgress: true,\n        slideToClickedSlide: false\n      });\n      Object.assign(swiper.thumbs.swiper.params, {\n        watchSlidesProgress: true,\n        slideToClickedSlide: false\n      });\n      swiper.thumbs.swiper.update();\n    } else if (isObject(thumbsParams.swiper)) {\n      const thumbsSwiperParams = Object.assign({}, thumbsParams.swiper);\n      Object.assign(thumbsSwiperParams, {\n        watchSlidesProgress: true,\n        slideToClickedSlide: false\n      });\n      swiper.thumbs.swiper = new SwiperClass(thumbsSwiperParams);\n      swiperCreated = true;\n    }\n    swiper.thumbs.swiper.el.classList.add(swiper.params.thumbs.thumbsContainerClass);\n    swiper.thumbs.swiper.on('tap', onThumbClick);\n    return true;\n  }\n  function update(initial) {\n    const thumbsSwiper = swiper.thumbs.swiper;\n    if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n    const slidesPerView = thumbsSwiper.params.slidesPerView === 'auto' ? thumbsSwiper.slidesPerViewDynamic() : thumbsSwiper.params.slidesPerView;\n\n    // Activate thumbs\n    let thumbsToActivate = 1;\n    const thumbActiveClass = swiper.params.thumbs.slideThumbActiveClass;\n    if (swiper.params.slidesPerView > 1 && !swiper.params.centeredSlides) {\n      thumbsToActivate = swiper.params.slidesPerView;\n    }\n    if (!swiper.params.thumbs.multipleActiveThumbs) {\n      thumbsToActivate = 1;\n    }\n    thumbsToActivate = Math.floor(thumbsToActivate);\n    thumbsSwiper.slides.forEach(slideEl => slideEl.classList.remove(thumbActiveClass));\n    if (thumbsSwiper.params.loop || thumbsSwiper.params.virtual && thumbsSwiper.params.virtual.enabled) {\n      for (let i = 0; i < thumbsToActivate; i += 1) {\n        elementChildren(thumbsSwiper.slidesEl, `[data-swiper-slide-index=\"${swiper.realIndex + i}\"]`).forEach(slideEl => {\n          slideEl.classList.add(thumbActiveClass);\n        });\n      }\n    } else {\n      for (let i = 0; i < thumbsToActivate; i += 1) {\n        if (thumbsSwiper.slides[swiper.realIndex + i]) {\n          thumbsSwiper.slides[swiper.realIndex + i].classList.add(thumbActiveClass);\n        }\n      }\n    }\n    const autoScrollOffset = swiper.params.thumbs.autoScrollOffset;\n    const useOffset = autoScrollOffset && !thumbsSwiper.params.loop;\n    if (swiper.realIndex !== thumbsSwiper.realIndex || useOffset) {\n      const currentThumbsIndex = thumbsSwiper.activeIndex;\n      let newThumbsIndex;\n      let direction;\n      if (thumbsSwiper.params.loop) {\n        const newThumbsSlide = thumbsSwiper.slides.filter(slideEl => slideEl.getAttribute('data-swiper-slide-index') === `${swiper.realIndex}`)[0];\n        newThumbsIndex = thumbsSwiper.slides.indexOf(newThumbsSlide);\n        direction = swiper.activeIndex > swiper.previousIndex ? 'next' : 'prev';\n      } else {\n        newThumbsIndex = swiper.realIndex;\n        direction = newThumbsIndex > swiper.previousIndex ? 'next' : 'prev';\n      }\n      if (useOffset) {\n        newThumbsIndex += direction === 'next' ? autoScrollOffset : -1 * autoScrollOffset;\n      }\n      if (thumbsSwiper.visibleSlidesIndexes && thumbsSwiper.visibleSlidesIndexes.indexOf(newThumbsIndex) < 0) {\n        if (thumbsSwiper.params.centeredSlides) {\n          if (newThumbsIndex > currentThumbsIndex) {\n            newThumbsIndex = newThumbsIndex - Math.floor(slidesPerView / 2) + 1;\n          } else {\n            newThumbsIndex = newThumbsIndex + Math.floor(slidesPerView / 2) - 1;\n          }\n        } else if (newThumbsIndex > currentThumbsIndex && thumbsSwiper.params.slidesPerGroup === 1) ;\n        thumbsSwiper.slideTo(newThumbsIndex, initial ? 0 : undefined);\n      }\n    }\n  }\n  on('beforeInit', () => {\n    const {\n      thumbs\n    } = swiper.params;\n    if (!thumbs || !thumbs.swiper) return;\n    if (typeof thumbs.swiper === 'string' || thumbs.swiper instanceof HTMLElement) {\n      const document = getDocument();\n      const getThumbsElementAndInit = () => {\n        const thumbsElement = typeof thumbs.swiper === 'string' ? document.querySelector(thumbs.swiper) : thumbs.swiper;\n        if (thumbsElement && thumbsElement.swiper) {\n          thumbs.swiper = thumbsElement.swiper;\n          init();\n          update(true);\n        } else if (thumbsElement) {\n          const onThumbsSwiper = e => {\n            thumbs.swiper = e.detail[0];\n            thumbsElement.removeEventListener('init', onThumbsSwiper);\n            init();\n            update(true);\n            thumbs.swiper.update();\n            swiper.update();\n          };\n          thumbsElement.addEventListener('init', onThumbsSwiper);\n        }\n        return thumbsElement;\n      };\n      const watchForThumbsToAppear = () => {\n        if (swiper.destroyed) return;\n        const thumbsElement = getThumbsElementAndInit();\n        if (!thumbsElement) {\n          requestAnimationFrame(watchForThumbsToAppear);\n        }\n      };\n      requestAnimationFrame(watchForThumbsToAppear);\n    } else {\n      init();\n      update(true);\n    }\n  });\n  on('slideChange update resize observerUpdate', () => {\n    update();\n  });\n  on('setTransition', (_s, duration) => {\n    const thumbsSwiper = swiper.thumbs.swiper;\n    if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n    thumbsSwiper.setTransition(duration);\n  });\n  on('beforeDestroy', () => {\n    const thumbsSwiper = swiper.thumbs.swiper;\n    if (!thumbsSwiper || thumbsSwiper.destroyed) return;\n    if (swiperCreated) {\n      thumbsSwiper.destroy();\n    }\n  });\n  Object.assign(swiper.thumbs, {\n    init,\n    update\n  });\n}\n\nexport { Thumb as default };\n","import { d as now, i as elementTransitionEnd } from '../shared/utils.mjs';\n\nfunction freeMode(_ref) {\n  let {\n    swiper,\n    extendParams,\n    emit,\n    once\n  } = _ref;\n  extendParams({\n    freeMode: {\n      enabled: false,\n      momentum: true,\n      momentumRatio: 1,\n      momentumBounce: true,\n      momentumBounceRatio: 1,\n      momentumVelocityRatio: 1,\n      sticky: false,\n      minimumVelocity: 0.02\n    }\n  });\n  function onTouchStart() {\n    if (swiper.params.cssMode) return;\n    const translate = swiper.getTranslate();\n    swiper.setTranslate(translate);\n    swiper.setTransition(0);\n    swiper.touchEventsData.velocities.length = 0;\n    swiper.freeMode.onTouchEnd({\n      currentPos: swiper.rtl ? swiper.translate : -swiper.translate\n    });\n  }\n  function onTouchMove() {\n    if (swiper.params.cssMode) return;\n    const {\n      touchEventsData: data,\n      touches\n    } = swiper;\n    // Velocity\n    if (data.velocities.length === 0) {\n      data.velocities.push({\n        position: touches[swiper.isHorizontal() ? 'startX' : 'startY'],\n        time: data.touchStartTime\n      });\n    }\n    data.velocities.push({\n      position: touches[swiper.isHorizontal() ? 'currentX' : 'currentY'],\n      time: now()\n    });\n  }\n  function onTouchEnd(_ref2) {\n    let {\n      currentPos\n    } = _ref2;\n    if (swiper.params.cssMode) return;\n    const {\n      params,\n      wrapperEl,\n      rtlTranslate: rtl,\n      snapGrid,\n      touchEventsData: data\n    } = swiper;\n    // Time diff\n    const touchEndTime = now();\n    const timeDiff = touchEndTime - data.touchStartTime;\n    if (currentPos < -swiper.minTranslate()) {\n      swiper.slideTo(swiper.activeIndex);\n      return;\n    }\n    if (currentPos > -swiper.maxTranslate()) {\n      if (swiper.slides.length < snapGrid.length) {\n        swiper.slideTo(snapGrid.length - 1);\n      } else {\n        swiper.slideTo(swiper.slides.length - 1);\n      }\n      return;\n    }\n    if (params.freeMode.momentum) {\n      if (data.velocities.length > 1) {\n        const lastMoveEvent = data.velocities.pop();\n        const velocityEvent = data.velocities.pop();\n        const distance = lastMoveEvent.position - velocityEvent.position;\n        const time = lastMoveEvent.time - velocityEvent.time;\n        swiper.velocity = distance / time;\n        swiper.velocity /= 2;\n        if (Math.abs(swiper.velocity) < params.freeMode.minimumVelocity) {\n          swiper.velocity = 0;\n        }\n        // this implies that the user stopped moving a finger then released.\n        // There would be no events with distance zero, so the last event is stale.\n        if (time > 150 || now() - lastMoveEvent.time > 300) {\n          swiper.velocity = 0;\n        }\n      } else {\n        swiper.velocity = 0;\n      }\n      swiper.velocity *= params.freeMode.momentumVelocityRatio;\n      data.velocities.length = 0;\n      let momentumDuration = 1000 * params.freeMode.momentumRatio;\n      const momentumDistance = swiper.velocity * momentumDuration;\n      let newPosition = swiper.translate + momentumDistance;\n      if (rtl) newPosition = -newPosition;\n      let doBounce = false;\n      let afterBouncePosition;\n      const bounceAmount = Math.abs(swiper.velocity) * 20 * params.freeMode.momentumBounceRatio;\n      let needsLoopFix;\n      if (newPosition < swiper.maxTranslate()) {\n        if (params.freeMode.momentumBounce) {\n          if (newPosition + swiper.maxTranslate() < -bounceAmount) {\n            newPosition = swiper.maxTranslate() - bounceAmount;\n          }\n          afterBouncePosition = swiper.maxTranslate();\n          doBounce = true;\n          data.allowMomentumBounce = true;\n        } else {\n          newPosition = swiper.maxTranslate();\n        }\n        if (params.loop && params.centeredSlides) needsLoopFix = true;\n      } else if (newPosition > swiper.minTranslate()) {\n        if (params.freeMode.momentumBounce) {\n          if (newPosition - swiper.minTranslate() > bounceAmount) {\n            newPosition = swiper.minTranslate() + bounceAmount;\n          }\n          afterBouncePosition = swiper.minTranslate();\n          doBounce = true;\n          data.allowMomentumBounce = true;\n        } else {\n          newPosition = swiper.minTranslate();\n        }\n        if (params.loop && params.centeredSlides) needsLoopFix = true;\n      } else if (params.freeMode.sticky) {\n        let nextSlide;\n        for (let j = 0; j < snapGrid.length; j += 1) {\n          if (snapGrid[j] > -newPosition) {\n            nextSlide = j;\n            break;\n          }\n        }\n        if (Math.abs(snapGrid[nextSlide] - newPosition) < Math.abs(snapGrid[nextSlide - 1] - newPosition) || swiper.swipeDirection === 'next') {\n          newPosition = snapGrid[nextSlide];\n        } else {\n          newPosition = snapGrid[nextSlide - 1];\n        }\n        newPosition = -newPosition;\n      }\n      if (needsLoopFix) {\n        once('transitionEnd', () => {\n          swiper.loopFix();\n        });\n      }\n      // Fix duration\n      if (swiper.velocity !== 0) {\n        if (rtl) {\n          momentumDuration = Math.abs((-newPosition - swiper.translate) / swiper.velocity);\n        } else {\n          momentumDuration = Math.abs((newPosition - swiper.translate) / swiper.velocity);\n        }\n        if (params.freeMode.sticky) {\n          // If freeMode.sticky is active and the user ends a swipe with a slow-velocity\n          // event, then durations can be 20+ seconds to slide one (or zero!) slides.\n          // It's easy to see this when simulating touch with mouse events. To fix this,\n          // limit single-slide swipes to the default slide duration. This also has the\n          // nice side effect of matching slide speed if the user stopped moving before\n          // lifting finger or mouse vs. moving slowly before lifting the finger/mouse.\n          // For faster swipes, also apply limits (albeit higher ones).\n          const moveDistance = Math.abs((rtl ? -newPosition : newPosition) - swiper.translate);\n          const currentSlideSize = swiper.slidesSizesGrid[swiper.activeIndex];\n          if (moveDistance < currentSlideSize) {\n            momentumDuration = params.speed;\n          } else if (moveDistance < 2 * currentSlideSize) {\n            momentumDuration = params.speed * 1.5;\n          } else {\n            momentumDuration = params.speed * 2.5;\n          }\n        }\n      } else if (params.freeMode.sticky) {\n        swiper.slideToClosest();\n        return;\n      }\n      if (params.freeMode.momentumBounce && doBounce) {\n        swiper.updateProgress(afterBouncePosition);\n        swiper.setTransition(momentumDuration);\n        swiper.setTranslate(newPosition);\n        swiper.transitionStart(true, swiper.swipeDirection);\n        swiper.animating = true;\n        elementTransitionEnd(wrapperEl, () => {\n          if (!swiper || swiper.destroyed || !data.allowMomentumBounce) return;\n          emit('momentumBounce');\n          swiper.setTransition(params.speed);\n          setTimeout(() => {\n            swiper.setTranslate(afterBouncePosition);\n            elementTransitionEnd(wrapperEl, () => {\n              if (!swiper || swiper.destroyed) return;\n              swiper.transitionEnd();\n            });\n          }, 0);\n        });\n      } else if (swiper.velocity) {\n        emit('_freeModeNoMomentumRelease');\n        swiper.updateProgress(newPosition);\n        swiper.setTransition(momentumDuration);\n        swiper.setTranslate(newPosition);\n        swiper.transitionStart(true, swiper.swipeDirection);\n        if (!swiper.animating) {\n          swiper.animating = true;\n          elementTransitionEnd(wrapperEl, () => {\n            if (!swiper || swiper.destroyed) return;\n            swiper.transitionEnd();\n          });\n        }\n      } else {\n        swiper.updateProgress(newPosition);\n      }\n      swiper.updateActiveIndex();\n      swiper.updateSlidesClasses();\n    } else if (params.freeMode.sticky) {\n      swiper.slideToClosest();\n      return;\n    } else if (params.freeMode) {\n      emit('_freeModeNoMomentumRelease');\n    }\n    if (!params.freeMode.momentum || timeDiff >= params.longSwipesMs) {\n      swiper.updateProgress();\n      swiper.updateActiveIndex();\n      swiper.updateSlidesClasses();\n    }\n  }\n  Object.assign(swiper, {\n    freeMode: {\n      onTouchStart,\n      onTouchMove,\n      onTouchEnd\n    }\n  });\n}\n\nexport { freeMode as default };\n","function Grid(_ref) {\n  let {\n    swiper,\n    extendParams\n  } = _ref;\n  extendParams({\n    grid: {\n      rows: 1,\n      fill: 'column'\n    }\n  });\n  let slidesNumberEvenToRows;\n  let slidesPerRow;\n  let numFullColumns;\n  const getSpaceBetween = () => {\n    let spaceBetween = swiper.params.spaceBetween;\n    if (typeof spaceBetween === 'string' && spaceBetween.indexOf('%') >= 0) {\n      spaceBetween = parseFloat(spaceBetween.replace('%', '')) / 100 * swiper.size;\n    } else if (typeof spaceBetween === 'string') {\n      spaceBetween = parseFloat(spaceBetween);\n    }\n    return spaceBetween;\n  };\n  const initSlides = slidesLength => {\n    const {\n      slidesPerView\n    } = swiper.params;\n    const {\n      rows,\n      fill\n    } = swiper.params.grid;\n    numFullColumns = Math.floor(slidesLength / rows);\n    if (Math.floor(slidesLength / rows) === slidesLength / rows) {\n      slidesNumberEvenToRows = slidesLength;\n    } else {\n      slidesNumberEvenToRows = Math.ceil(slidesLength / rows) * rows;\n    }\n    if (slidesPerView !== 'auto' && fill === 'row') {\n      slidesNumberEvenToRows = Math.max(slidesNumberEvenToRows, slidesPerView * rows);\n    }\n    slidesPerRow = slidesNumberEvenToRows / rows;\n  };\n  const updateSlide = (i, slide, slidesLength, getDirectionLabel) => {\n    const {\n      slidesPerGroup\n    } = swiper.params;\n    const spaceBetween = getSpaceBetween();\n    const {\n      rows,\n      fill\n    } = swiper.params.grid;\n    // Set slides order\n    let newSlideOrderIndex;\n    let column;\n    let row;\n    if (fill === 'row' && slidesPerGroup > 1) {\n      const groupIndex = Math.floor(i / (slidesPerGroup * rows));\n      const slideIndexInGroup = i - rows * slidesPerGroup * groupIndex;\n      const columnsInGroup = groupIndex === 0 ? slidesPerGroup : Math.min(Math.ceil((slidesLength - groupIndex * rows * slidesPerGroup) / rows), slidesPerGroup);\n      row = Math.floor(slideIndexInGroup / columnsInGroup);\n      column = slideIndexInGroup - row * columnsInGroup + groupIndex * slidesPerGroup;\n      newSlideOrderIndex = column + row * slidesNumberEvenToRows / rows;\n      slide.style.order = newSlideOrderIndex;\n    } else if (fill === 'column') {\n      column = Math.floor(i / rows);\n      row = i - column * rows;\n      if (column > numFullColumns || column === numFullColumns && row === rows - 1) {\n        row += 1;\n        if (row >= rows) {\n          row = 0;\n          column += 1;\n        }\n      }\n    } else {\n      row = Math.floor(i / slidesPerRow);\n      column = i - row * slidesPerRow;\n    }\n    slide.row = row;\n    slide.column = column;\n    slide.style[getDirectionLabel('margin-top')] = row !== 0 ? spaceBetween && `${spaceBetween}px` : '';\n  };\n  const updateWrapperSize = (slideSize, snapGrid, getDirectionLabel) => {\n    const {\n      centeredSlides,\n      roundLengths\n    } = swiper.params;\n    const spaceBetween = getSpaceBetween();\n    const {\n      rows\n    } = swiper.params.grid;\n    swiper.virtualSize = (slideSize + spaceBetween) * slidesNumberEvenToRows;\n    swiper.virtualSize = Math.ceil(swiper.virtualSize / rows) - spaceBetween;\n    swiper.wrapperEl.style[getDirectionLabel('width')] = `${swiper.virtualSize + spaceBetween}px`;\n    if (centeredSlides) {\n      const newSlidesGrid = [];\n      for (let i = 0; i < snapGrid.length; i += 1) {\n        let slidesGridItem = snapGrid[i];\n        if (roundLengths) slidesGridItem = Math.floor(slidesGridItem);\n        if (snapGrid[i] < swiper.virtualSize + snapGrid[0]) newSlidesGrid.push(slidesGridItem);\n      }\n      snapGrid.splice(0, snapGrid.length);\n      snapGrid.push(...newSlidesGrid);\n    }\n  };\n  swiper.grid = {\n    initSlides,\n    updateSlide,\n    updateWrapperSize\n  };\n}\n\nexport { Grid as default };\n","function appendSlide(slides) {\n  const swiper = this;\n  const {\n    params,\n    slidesEl\n  } = swiper;\n  if (params.loop) {\n    swiper.loopDestroy();\n  }\n  const appendElement = slideEl => {\n    if (typeof slideEl === 'string') {\n      const tempDOM = document.createElement('div');\n      tempDOM.innerHTML = slideEl;\n      slidesEl.append(tempDOM.children[0]);\n      tempDOM.innerHTML = '';\n    } else {\n      slidesEl.append(slideEl);\n    }\n  };\n  if (typeof slides === 'object' && 'length' in slides) {\n    for (let i = 0; i < slides.length; i += 1) {\n      if (slides[i]) appendElement(slides[i]);\n    }\n  } else {\n    appendElement(slides);\n  }\n  swiper.recalcSlides();\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n  if (!params.observer || swiper.isElement) {\n    swiper.update();\n  }\n}\n\nfunction prependSlide(slides) {\n  const swiper = this;\n  const {\n    params,\n    activeIndex,\n    slidesEl\n  } = swiper;\n  if (params.loop) {\n    swiper.loopDestroy();\n  }\n  let newActiveIndex = activeIndex + 1;\n  const prependElement = slideEl => {\n    if (typeof slideEl === 'string') {\n      const tempDOM = document.createElement('div');\n      tempDOM.innerHTML = slideEl;\n      slidesEl.prepend(tempDOM.children[0]);\n      tempDOM.innerHTML = '';\n    } else {\n      slidesEl.prepend(slideEl);\n    }\n  };\n  if (typeof slides === 'object' && 'length' in slides) {\n    for (let i = 0; i < slides.length; i += 1) {\n      if (slides[i]) prependElement(slides[i]);\n    }\n    newActiveIndex = activeIndex + slides.length;\n  } else {\n    prependElement(slides);\n  }\n  swiper.recalcSlides();\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n  if (!params.observer || swiper.isElement) {\n    swiper.update();\n  }\n  swiper.slideTo(newActiveIndex, 0, false);\n}\n\nfunction addSlide(index, slides) {\n  const swiper = this;\n  const {\n    params,\n    activeIndex,\n    slidesEl\n  } = swiper;\n  let activeIndexBuffer = activeIndex;\n  if (params.loop) {\n    activeIndexBuffer -= swiper.loopedSlides;\n    swiper.loopDestroy();\n    swiper.recalcSlides();\n  }\n  const baseLength = swiper.slides.length;\n  if (index <= 0) {\n    swiper.prependSlide(slides);\n    return;\n  }\n  if (index >= baseLength) {\n    swiper.appendSlide(slides);\n    return;\n  }\n  let newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + 1 : activeIndexBuffer;\n  const slidesBuffer = [];\n  for (let i = baseLength - 1; i >= index; i -= 1) {\n    const currentSlide = swiper.slides[i];\n    currentSlide.remove();\n    slidesBuffer.unshift(currentSlide);\n  }\n  if (typeof slides === 'object' && 'length' in slides) {\n    for (let i = 0; i < slides.length; i += 1) {\n      if (slides[i]) slidesEl.append(slides[i]);\n    }\n    newActiveIndex = activeIndexBuffer > index ? activeIndexBuffer + slides.length : activeIndexBuffer;\n  } else {\n    slidesEl.append(slides);\n  }\n  for (let i = 0; i < slidesBuffer.length; i += 1) {\n    slidesEl.append(slidesBuffer[i]);\n  }\n  swiper.recalcSlides();\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n  if (!params.observer || swiper.isElement) {\n    swiper.update();\n  }\n  if (params.loop) {\n    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n  } else {\n    swiper.slideTo(newActiveIndex, 0, false);\n  }\n}\n\nfunction removeSlide(slidesIndexes) {\n  const swiper = this;\n  const {\n    params,\n    activeIndex\n  } = swiper;\n  let activeIndexBuffer = activeIndex;\n  if (params.loop) {\n    activeIndexBuffer -= swiper.loopedSlides;\n    swiper.loopDestroy();\n  }\n  let newActiveIndex = activeIndexBuffer;\n  let indexToRemove;\n  if (typeof slidesIndexes === 'object' && 'length' in slidesIndexes) {\n    for (let i = 0; i < slidesIndexes.length; i += 1) {\n      indexToRemove = slidesIndexes[i];\n      if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove();\n      if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n    }\n    newActiveIndex = Math.max(newActiveIndex, 0);\n  } else {\n    indexToRemove = slidesIndexes;\n    if (swiper.slides[indexToRemove]) swiper.slides[indexToRemove].remove();\n    if (indexToRemove < newActiveIndex) newActiveIndex -= 1;\n    newActiveIndex = Math.max(newActiveIndex, 0);\n  }\n  swiper.recalcSlides();\n  if (params.loop) {\n    swiper.loopCreate();\n  }\n  if (!params.observer || swiper.isElement) {\n    swiper.update();\n  }\n  if (params.loop) {\n    swiper.slideTo(newActiveIndex + swiper.loopedSlides, 0, false);\n  } else {\n    swiper.slideTo(newActiveIndex, 0, false);\n  }\n}\n\nfunction removeAllSlides() {\n  const swiper = this;\n  const slidesIndexes = [];\n  for (let i = 0; i < swiper.slides.length; i += 1) {\n    slidesIndexes.push(i);\n  }\n  swiper.removeSlide(slidesIndexes);\n}\n\nfunction Manipulation(_ref) {\n  let {\n    swiper\n  } = _ref;\n  Object.assign(swiper, {\n    appendSlide: appendSlide.bind(swiper),\n    prependSlide: prependSlide.bind(swiper),\n    addSlide: addSlide.bind(swiper),\n    removeSlide: removeSlide.bind(swiper),\n    removeAllSlides: removeAllSlides.bind(swiper)\n  });\n}\n\nexport { Manipulation as default };\n","import { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { k as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectFade(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    fadeEffect: {\n      crossFade: false\n    }\n  });\n  const setTranslate = () => {\n    const {\n      slides\n    } = swiper;\n    const params = swiper.params.fadeEffect;\n    for (let i = 0; i < slides.length; i += 1) {\n      const slideEl = swiper.slides[i];\n      const offset = slideEl.swiperSlideOffset;\n      let tx = -offset;\n      if (!swiper.params.virtualTranslate) tx -= swiper.translate;\n      let ty = 0;\n      if (!swiper.isHorizontal()) {\n        ty = tx;\n        tx = 0;\n      }\n      const slideOpacity = swiper.params.fadeEffect.crossFade ? Math.max(1 - Math.abs(slideEl.progress), 0) : 1 + Math.min(Math.max(slideEl.progress, -1), 0);\n      const targetEl = effectTarget(params, slideEl);\n      targetEl.style.opacity = slideOpacity;\n      targetEl.style.transform = `translate3d(${tx}px, ${ty}px, 0px)`;\n    }\n  };\n  const setTransition = duration => {\n    const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n    transformElements.forEach(el => {\n      el.style.transitionDuration = `${duration}ms`;\n    });\n    effectVirtualTransitionEnd({\n      swiper,\n      duration,\n      transformElements,\n      allSlides: true\n    });\n  };\n  effectInit({\n    effect: 'fade',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    overwriteParams: () => ({\n      slidesPerView: 1,\n      slidesPerGroup: 1,\n      watchSlidesProgress: true,\n      spaceBetween: 0,\n      virtualTranslate: !swiper.params.cssMode\n    })\n  });\n}\n\nexport { EffectFade as default };\n","function effectInit(params) {\n  const {\n    effect,\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    overwriteParams,\n    perspective,\n    recreateShadows,\n    getEffectParams\n  } = params;\n  on('beforeInit', () => {\n    if (swiper.params.effect !== effect) return;\n    swiper.classNames.push(`${swiper.params.containerModifierClass}${effect}`);\n    if (perspective && perspective()) {\n      swiper.classNames.push(`${swiper.params.containerModifierClass}3d`);\n    }\n    const overwriteParamsResult = overwriteParams ? overwriteParams() : {};\n    Object.assign(swiper.params, overwriteParamsResult);\n    Object.assign(swiper.originalParams, overwriteParamsResult);\n  });\n  on('setTranslate', () => {\n    if (swiper.params.effect !== effect) return;\n    setTranslate();\n  });\n  on('setTransition', (_s, duration) => {\n    if (swiper.params.effect !== effect) return;\n    setTransition(duration);\n  });\n  on('transitionEnd', () => {\n    if (swiper.params.effect !== effect) return;\n    if (recreateShadows) {\n      if (!getEffectParams || !getEffectParams().slideShadows) return;\n      // remove shadows\n      swiper.slides.forEach(slideEl => {\n        slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => shadowEl.remove());\n      });\n      // create new one\n      recreateShadows();\n    }\n  });\n  let requireUpdateOnVirtual;\n  on('virtualUpdate', () => {\n    if (swiper.params.effect !== effect) return;\n    if (!swiper.slides.length) {\n      requireUpdateOnVirtual = true;\n    }\n    requestAnimationFrame(() => {\n      if (requireUpdateOnVirtual && swiper.slides && swiper.slides.length) {\n        setTranslate();\n        requireUpdateOnVirtual = false;\n      }\n    });\n  });\n}\n\nexport { effectInit as e };\n","import { k as getSlideTransformEl } from './utils.mjs';\n\nfunction effectTarget(effectParams, slideEl) {\n  const transformEl = getSlideTransformEl(slideEl);\n  if (transformEl !== slideEl) {\n    transformEl.style.backfaceVisibility = 'hidden';\n    transformEl.style['-webkit-backface-visibility'] = 'hidden';\n  }\n  return transformEl;\n}\n\nexport { effectTarget as e };\n","import { i as elementTransitionEnd } from './utils.mjs';\n\nfunction effectVirtualTransitionEnd(_ref) {\n  let {\n    swiper,\n    duration,\n    transformElements,\n    allSlides\n  } = _ref;\n  const {\n    activeIndex\n  } = swiper;\n  const getSlide = el => {\n    if (!el.parentElement) {\n      // assume shadow root\n      const slide = swiper.slides.filter(slideEl => slideEl.shadowRoot && slideEl.shadowRoot === el.parentNode)[0];\n      return slide;\n    }\n    return el.parentElement;\n  };\n  if (swiper.params.virtualTranslate && duration !== 0) {\n    let eventTriggered = false;\n    let transitionEndTarget;\n    if (allSlides) {\n      transitionEndTarget = transformElements;\n    } else {\n      transitionEndTarget = transformElements.filter(transformEl => {\n        const el = transformEl.classList.contains('swiper-slide-transform') ? getSlide(transformEl) : transformEl;\n        return swiper.getSlideIndex(el) === activeIndex;\n      });\n    }\n    transitionEndTarget.forEach(el => {\n      elementTransitionEnd(el, () => {\n        if (eventTriggered) return;\n        if (!swiper || swiper.destroyed) return;\n        eventTriggered = true;\n        swiper.animating = false;\n        const evt = new window.CustomEvent('transitionend', {\n          bubbles: true,\n          cancelable: true\n        });\n        swiper.wrapperEl.dispatchEvent(evt);\n      });\n    });\n  }\n}\n\nexport { effectVirtualTransitionEnd as e };\n","import { e as effectInit } from '../shared/effect-init.mjs';\nimport { c as createElement } from '../shared/utils.mjs';\n\nfunction EffectCube(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    cubeEffect: {\n      slideShadows: true,\n      shadow: true,\n      shadowOffset: 20,\n      shadowScale: 0.94\n    }\n  });\n  const createSlideShadows = (slideEl, progress, isHorizontal) => {\n    let shadowBefore = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n    let shadowAfter = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n    if (!shadowBefore) {\n      shadowBefore = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'left' : 'top'}`.split(' '));\n      slideEl.append(shadowBefore);\n    }\n    if (!shadowAfter) {\n      shadowAfter = createElement('div', `swiper-slide-shadow-cube swiper-slide-shadow-${isHorizontal ? 'right' : 'bottom'}`.split(' '));\n      slideEl.append(shadowAfter);\n    }\n    if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);\n    if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);\n  };\n  const recreateShadows = () => {\n    // create new ones\n    const isHorizontal = swiper.isHorizontal();\n    swiper.slides.forEach(slideEl => {\n      const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n      createSlideShadows(slideEl, progress, isHorizontal);\n    });\n  };\n  const setTranslate = () => {\n    const {\n      el,\n      wrapperEl,\n      slides,\n      width: swiperWidth,\n      height: swiperHeight,\n      rtlTranslate: rtl,\n      size: swiperSize,\n      browser\n    } = swiper;\n    const params = swiper.params.cubeEffect;\n    const isHorizontal = swiper.isHorizontal();\n    const isVirtual = swiper.virtual && swiper.params.virtual.enabled;\n    let wrapperRotate = 0;\n    let cubeShadowEl;\n    if (params.shadow) {\n      if (isHorizontal) {\n        cubeShadowEl = swiper.wrapperEl.querySelector('.swiper-cube-shadow');\n        if (!cubeShadowEl) {\n          cubeShadowEl = createElement('div', 'swiper-cube-shadow');\n          swiper.wrapperEl.append(cubeShadowEl);\n        }\n        cubeShadowEl.style.height = `${swiperWidth}px`;\n      } else {\n        cubeShadowEl = el.querySelector('.swiper-cube-shadow');\n        if (!cubeShadowEl) {\n          cubeShadowEl = createElement('div', 'swiper-cube-shadow');\n          el.append(cubeShadowEl);\n        }\n      }\n    }\n    for (let i = 0; i < slides.length; i += 1) {\n      const slideEl = slides[i];\n      let slideIndex = i;\n      if (isVirtual) {\n        slideIndex = parseInt(slideEl.getAttribute('data-swiper-slide-index'), 10);\n      }\n      let slideAngle = slideIndex * 90;\n      let round = Math.floor(slideAngle / 360);\n      if (rtl) {\n        slideAngle = -slideAngle;\n        round = Math.floor(-slideAngle / 360);\n      }\n      const progress = Math.max(Math.min(slideEl.progress, 1), -1);\n      let tx = 0;\n      let ty = 0;\n      let tz = 0;\n      if (slideIndex % 4 === 0) {\n        tx = -round * 4 * swiperSize;\n        tz = 0;\n      } else if ((slideIndex - 1) % 4 === 0) {\n        tx = 0;\n        tz = -round * 4 * swiperSize;\n      } else if ((slideIndex - 2) % 4 === 0) {\n        tx = swiperSize + round * 4 * swiperSize;\n        tz = swiperSize;\n      } else if ((slideIndex - 3) % 4 === 0) {\n        tx = -swiperSize;\n        tz = 3 * swiperSize + swiperSize * 4 * round;\n      }\n      if (rtl) {\n        tx = -tx;\n      }\n      if (!isHorizontal) {\n        ty = tx;\n        tx = 0;\n      }\n      const transform = `rotateX(${isHorizontal ? 0 : -slideAngle}deg) rotateY(${isHorizontal ? slideAngle : 0}deg) translate3d(${tx}px, ${ty}px, ${tz}px)`;\n      if (progress <= 1 && progress > -1) {\n        wrapperRotate = slideIndex * 90 + progress * 90;\n        if (rtl) wrapperRotate = -slideIndex * 90 - progress * 90;\n      }\n      slideEl.style.transform = transform;\n      if (params.slideShadows) {\n        createSlideShadows(slideEl, progress, isHorizontal);\n      }\n    }\n    wrapperEl.style.transformOrigin = `50% 50% -${swiperSize / 2}px`;\n    wrapperEl.style['-webkit-transform-origin'] = `50% 50% -${swiperSize / 2}px`;\n    if (params.shadow) {\n      if (isHorizontal) {\n        cubeShadowEl.style.transform = `translate3d(0px, ${swiperWidth / 2 + params.shadowOffset}px, ${-swiperWidth / 2}px) rotateX(90deg) rotateZ(0deg) scale(${params.shadowScale})`;\n      } else {\n        const shadowAngle = Math.abs(wrapperRotate) - Math.floor(Math.abs(wrapperRotate) / 90) * 90;\n        const multiplier = 1.5 - (Math.sin(shadowAngle * 2 * Math.PI / 360) / 2 + Math.cos(shadowAngle * 2 * Math.PI / 360) / 2);\n        const scale1 = params.shadowScale;\n        const scale2 = params.shadowScale / multiplier;\n        const offset = params.shadowOffset;\n        cubeShadowEl.style.transform = `scale3d(${scale1}, 1, ${scale2}) translate3d(0px, ${swiperHeight / 2 + offset}px, ${-swiperHeight / 2 / scale2}px) rotateX(-90deg)`;\n      }\n    }\n    const zFactor = (browser.isSafari || browser.isWebView) && browser.needPerspectiveFix ? -swiperSize / 2 : 0;\n    wrapperEl.style.transform = `translate3d(0px,0,${zFactor}px) rotateX(${swiper.isHorizontal() ? 0 : wrapperRotate}deg) rotateY(${swiper.isHorizontal() ? -wrapperRotate : 0}deg)`;\n    wrapperEl.style.setProperty('--swiper-cube-translate-z', `${zFactor}px`);\n  };\n  const setTransition = duration => {\n    const {\n      el,\n      slides\n    } = swiper;\n    slides.forEach(slideEl => {\n      slideEl.style.transitionDuration = `${duration}ms`;\n      slideEl.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(subEl => {\n        subEl.style.transitionDuration = `${duration}ms`;\n      });\n    });\n    if (swiper.params.cubeEffect.shadow && !swiper.isHorizontal()) {\n      const shadowEl = el.querySelector('.swiper-cube-shadow');\n      if (shadowEl) shadowEl.style.transitionDuration = `${duration}ms`;\n    }\n  };\n  effectInit({\n    effect: 'cube',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    recreateShadows,\n    getEffectParams: () => swiper.params.cubeEffect,\n    perspective: () => true,\n    overwriteParams: () => ({\n      slidesPerView: 1,\n      slidesPerGroup: 1,\n      watchSlidesProgress: true,\n      resistanceRatio: 0,\n      spaceBetween: 0,\n      centeredSlides: false,\n      virtualTranslate: true\n    })\n  });\n}\n\nexport { EffectCube as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { k as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectFlip(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    flipEffect: {\n      slideShadows: true,\n      limitRotation: true\n    }\n  });\n  const createSlideShadows = (slideEl, progress) => {\n    let shadowBefore = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n    let shadowAfter = swiper.isHorizontal() ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n    if (!shadowBefore) {\n      shadowBefore = createShadow('flip', slideEl, swiper.isHorizontal() ? 'left' : 'top');\n    }\n    if (!shadowAfter) {\n      shadowAfter = createShadow('flip', slideEl, swiper.isHorizontal() ? 'right' : 'bottom');\n    }\n    if (shadowBefore) shadowBefore.style.opacity = Math.max(-progress, 0);\n    if (shadowAfter) shadowAfter.style.opacity = Math.max(progress, 0);\n  };\n  const recreateShadows = () => {\n    // Set shadows\n    swiper.params.flipEffect;\n    swiper.slides.forEach(slideEl => {\n      let progress = slideEl.progress;\n      if (swiper.params.flipEffect.limitRotation) {\n        progress = Math.max(Math.min(slideEl.progress, 1), -1);\n      }\n      createSlideShadows(slideEl, progress);\n    });\n  };\n  const setTranslate = () => {\n    const {\n      slides,\n      rtlTranslate: rtl\n    } = swiper;\n    const params = swiper.params.flipEffect;\n    for (let i = 0; i < slides.length; i += 1) {\n      const slideEl = slides[i];\n      let progress = slideEl.progress;\n      if (swiper.params.flipEffect.limitRotation) {\n        progress = Math.max(Math.min(slideEl.progress, 1), -1);\n      }\n      const offset = slideEl.swiperSlideOffset;\n      const rotate = -180 * progress;\n      let rotateY = rotate;\n      let rotateX = 0;\n      let tx = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n      let ty = 0;\n      if (!swiper.isHorizontal()) {\n        ty = tx;\n        tx = 0;\n        rotateX = -rotateY;\n        rotateY = 0;\n      } else if (rtl) {\n        rotateY = -rotateY;\n      }\n      slideEl.style.zIndex = -Math.abs(Math.round(progress)) + slides.length;\n      if (params.slideShadows) {\n        createSlideShadows(slideEl, progress);\n      }\n      const transform = `translate3d(${tx}px, ${ty}px, 0px) rotateX(${rotateX}deg) rotateY(${rotateY}deg)`;\n      const targetEl = effectTarget(params, slideEl);\n      targetEl.style.transform = transform;\n    }\n  };\n  const setTransition = duration => {\n    const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n    transformElements.forEach(el => {\n      el.style.transitionDuration = `${duration}ms`;\n      el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {\n        shadowEl.style.transitionDuration = `${duration}ms`;\n      });\n    });\n    effectVirtualTransitionEnd({\n      swiper,\n      duration,\n      transformElements\n    });\n  };\n  effectInit({\n    effect: 'flip',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    recreateShadows,\n    getEffectParams: () => swiper.params.flipEffect,\n    perspective: () => true,\n    overwriteParams: () => ({\n      slidesPerView: 1,\n      slidesPerGroup: 1,\n      watchSlidesProgress: true,\n      spaceBetween: 0,\n      virtualTranslate: !swiper.params.cssMode\n    })\n  });\n}\n\nexport { EffectFlip as default };\n","import { k as getSlideTransformEl, c as createElement } from './utils.mjs';\n\nfunction createShadow(suffix, slideEl, side) {\n  const shadowClass = `swiper-slide-shadow${side ? `-${side}` : ''}${suffix ? ` swiper-slide-shadow-${suffix}` : ''}`;\n  const shadowContainer = getSlideTransformEl(slideEl);\n  let shadowEl = shadowContainer.querySelector(`.${shadowClass.split(' ').join('.')}`);\n  if (!shadowEl) {\n    shadowEl = createElement('div', shadowClass.split(' '));\n    shadowContainer.append(shadowEl);\n  }\n  return shadowEl;\n}\n\nexport { createShadow as c };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { k as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectCoverflow(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    coverflowEffect: {\n      rotate: 50,\n      stretch: 0,\n      depth: 100,\n      scale: 1,\n      modifier: 1,\n      slideShadows: true\n    }\n  });\n  const setTranslate = () => {\n    const {\n      width: swiperWidth,\n      height: swiperHeight,\n      slides,\n      slidesSizesGrid\n    } = swiper;\n    const params = swiper.params.coverflowEffect;\n    const isHorizontal = swiper.isHorizontal();\n    const transform = swiper.translate;\n    const center = isHorizontal ? -transform + swiperWidth / 2 : -transform + swiperHeight / 2;\n    const rotate = isHorizontal ? params.rotate : -params.rotate;\n    const translate = params.depth;\n    // Each slide offset from center\n    for (let i = 0, length = slides.length; i < length; i += 1) {\n      const slideEl = slides[i];\n      const slideSize = slidesSizesGrid[i];\n      const slideOffset = slideEl.swiperSlideOffset;\n      const centerOffset = (center - slideOffset - slideSize / 2) / slideSize;\n      const offsetMultiplier = typeof params.modifier === 'function' ? params.modifier(centerOffset) : centerOffset * params.modifier;\n      let rotateY = isHorizontal ? rotate * offsetMultiplier : 0;\n      let rotateX = isHorizontal ? 0 : rotate * offsetMultiplier;\n      // var rotateZ = 0\n      let translateZ = -translate * Math.abs(offsetMultiplier);\n      let stretch = params.stretch;\n      // Allow percentage to make a relative stretch for responsive sliders\n      if (typeof stretch === 'string' && stretch.indexOf('%') !== -1) {\n        stretch = parseFloat(params.stretch) / 100 * slideSize;\n      }\n      let translateY = isHorizontal ? 0 : stretch * offsetMultiplier;\n      let translateX = isHorizontal ? stretch * offsetMultiplier : 0;\n      let scale = 1 - (1 - params.scale) * Math.abs(offsetMultiplier);\n\n      // Fix for ultra small values\n      if (Math.abs(translateX) < 0.001) translateX = 0;\n      if (Math.abs(translateY) < 0.001) translateY = 0;\n      if (Math.abs(translateZ) < 0.001) translateZ = 0;\n      if (Math.abs(rotateY) < 0.001) rotateY = 0;\n      if (Math.abs(rotateX) < 0.001) rotateX = 0;\n      if (Math.abs(scale) < 0.001) scale = 0;\n      const slideTransform = `translate3d(${translateX}px,${translateY}px,${translateZ}px)  rotateX(${rotateX}deg) rotateY(${rotateY}deg) scale(${scale})`;\n      const targetEl = effectTarget(params, slideEl);\n      targetEl.style.transform = slideTransform;\n      slideEl.style.zIndex = -Math.abs(Math.round(offsetMultiplier)) + 1;\n      if (params.slideShadows) {\n        // Set shadows\n        let shadowBeforeEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-left') : slideEl.querySelector('.swiper-slide-shadow-top');\n        let shadowAfterEl = isHorizontal ? slideEl.querySelector('.swiper-slide-shadow-right') : slideEl.querySelector('.swiper-slide-shadow-bottom');\n        if (!shadowBeforeEl) {\n          shadowBeforeEl = createShadow('coverflow', slideEl, isHorizontal ? 'left' : 'top');\n        }\n        if (!shadowAfterEl) {\n          shadowAfterEl = createShadow('coverflow', slideEl, isHorizontal ? 'right' : 'bottom');\n        }\n        if (shadowBeforeEl) shadowBeforeEl.style.opacity = offsetMultiplier > 0 ? offsetMultiplier : 0;\n        if (shadowAfterEl) shadowAfterEl.style.opacity = -offsetMultiplier > 0 ? -offsetMultiplier : 0;\n      }\n    }\n  };\n  const setTransition = duration => {\n    const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n    transformElements.forEach(el => {\n      el.style.transitionDuration = `${duration}ms`;\n      el.querySelectorAll('.swiper-slide-shadow-top, .swiper-slide-shadow-right, .swiper-slide-shadow-bottom, .swiper-slide-shadow-left').forEach(shadowEl => {\n        shadowEl.style.transitionDuration = `${duration}ms`;\n      });\n    });\n  };\n  effectInit({\n    effect: 'coverflow',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    perspective: () => true,\n    overwriteParams: () => ({\n      watchSlidesProgress: true\n    })\n  });\n}\n\nexport { EffectCoverflow as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { k as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectCreative(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    creativeEffect: {\n      limitProgress: 1,\n      shadowPerProgress: false,\n      progressMultiplier: 1,\n      perspective: true,\n      prev: {\n        translate: [0, 0, 0],\n        rotate: [0, 0, 0],\n        opacity: 1,\n        scale: 1\n      },\n      next: {\n        translate: [0, 0, 0],\n        rotate: [0, 0, 0],\n        opacity: 1,\n        scale: 1\n      }\n    }\n  });\n  const getTranslateValue = value => {\n    if (typeof value === 'string') return value;\n    return `${value}px`;\n  };\n  const setTranslate = () => {\n    const {\n      slides,\n      wrapperEl,\n      slidesSizesGrid\n    } = swiper;\n    const params = swiper.params.creativeEffect;\n    const {\n      progressMultiplier: multiplier\n    } = params;\n    const isCenteredSlides = swiper.params.centeredSlides;\n    if (isCenteredSlides) {\n      const margin = slidesSizesGrid[0] / 2 - swiper.params.slidesOffsetBefore || 0;\n      wrapperEl.style.transform = `translateX(calc(50% - ${margin}px))`;\n    }\n    for (let i = 0; i < slides.length; i += 1) {\n      const slideEl = slides[i];\n      const slideProgress = slideEl.progress;\n      const progress = Math.min(Math.max(slideEl.progress, -params.limitProgress), params.limitProgress);\n      let originalProgress = progress;\n      if (!isCenteredSlides) {\n        originalProgress = Math.min(Math.max(slideEl.originalProgress, -params.limitProgress), params.limitProgress);\n      }\n      const offset = slideEl.swiperSlideOffset;\n      const t = [swiper.params.cssMode ? -offset - swiper.translate : -offset, 0, 0];\n      const r = [0, 0, 0];\n      let custom = false;\n      if (!swiper.isHorizontal()) {\n        t[1] = t[0];\n        t[0] = 0;\n      }\n      let data = {\n        translate: [0, 0, 0],\n        rotate: [0, 0, 0],\n        scale: 1,\n        opacity: 1\n      };\n      if (progress < 0) {\n        data = params.next;\n        custom = true;\n      } else if (progress > 0) {\n        data = params.prev;\n        custom = true;\n      }\n      // set translate\n      t.forEach((value, index) => {\n        t[index] = `calc(${value}px + (${getTranslateValue(data.translate[index])} * ${Math.abs(progress * multiplier)}))`;\n      });\n      // set rotates\n      r.forEach((value, index) => {\n        r[index] = data.rotate[index] * Math.abs(progress * multiplier);\n      });\n      slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n      const translateString = t.join(', ');\n      const rotateString = `rotateX(${r[0]}deg) rotateY(${r[1]}deg) rotateZ(${r[2]}deg)`;\n      const scaleString = originalProgress < 0 ? `scale(${1 + (1 - data.scale) * originalProgress * multiplier})` : `scale(${1 - (1 - data.scale) * originalProgress * multiplier})`;\n      const opacityString = originalProgress < 0 ? 1 + (1 - data.opacity) * originalProgress * multiplier : 1 - (1 - data.opacity) * originalProgress * multiplier;\n      const transform = `translate3d(${translateString}) ${rotateString} ${scaleString}`;\n\n      // Set shadows\n      if (custom && data.shadow || !custom) {\n        let shadowEl = slideEl.querySelector('.swiper-slide-shadow');\n        if (!shadowEl && data.shadow) {\n          shadowEl = createShadow('creative', slideEl);\n        }\n        if (shadowEl) {\n          const shadowOpacity = params.shadowPerProgress ? progress * (1 / params.limitProgress) : progress;\n          shadowEl.style.opacity = Math.min(Math.max(Math.abs(shadowOpacity), 0), 1);\n        }\n      }\n      const targetEl = effectTarget(params, slideEl);\n      targetEl.style.transform = transform;\n      targetEl.style.opacity = opacityString;\n      if (data.origin) {\n        targetEl.style.transformOrigin = data.origin;\n      }\n    }\n  };\n  const setTransition = duration => {\n    const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n    transformElements.forEach(el => {\n      el.style.transitionDuration = `${duration}ms`;\n      el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => {\n        shadowEl.style.transitionDuration = `${duration}ms`;\n      });\n    });\n    effectVirtualTransitionEnd({\n      swiper,\n      duration,\n      transformElements,\n      allSlides: true\n    });\n  };\n  effectInit({\n    effect: 'creative',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    perspective: () => swiper.params.creativeEffect.perspective,\n    overwriteParams: () => ({\n      watchSlidesProgress: true,\n      virtualTranslate: !swiper.params.cssMode\n    })\n  });\n}\n\nexport { EffectCreative as default };\n","import { c as createShadow } from '../shared/create-shadow.mjs';\nimport { e as effectInit } from '../shared/effect-init.mjs';\nimport { e as effectTarget } from '../shared/effect-target.mjs';\nimport { e as effectVirtualTransitionEnd } from '../shared/effect-virtual-transition-end.mjs';\nimport { k as getSlideTransformEl } from '../shared/utils.mjs';\n\nfunction EffectCards(_ref) {\n  let {\n    swiper,\n    extendParams,\n    on\n  } = _ref;\n  extendParams({\n    cardsEffect: {\n      slideShadows: true,\n      rotate: true,\n      perSlideRotate: 2,\n      perSlideOffset: 8\n    }\n  });\n  const setTranslate = () => {\n    const {\n      slides,\n      activeIndex,\n      rtlTranslate: rtl\n    } = swiper;\n    const params = swiper.params.cardsEffect;\n    const {\n      startTranslate,\n      isTouched\n    } = swiper.touchEventsData;\n    const currentTranslate = rtl ? -swiper.translate : swiper.translate;\n    for (let i = 0; i < slides.length; i += 1) {\n      const slideEl = slides[i];\n      const slideProgress = slideEl.progress;\n      const progress = Math.min(Math.max(slideProgress, -4), 4);\n      let offset = slideEl.swiperSlideOffset;\n      if (swiper.params.centeredSlides && !swiper.params.cssMode) {\n        swiper.wrapperEl.style.transform = `translateX(${swiper.minTranslate()}px)`;\n      }\n      if (swiper.params.centeredSlides && swiper.params.cssMode) {\n        offset -= slides[0].swiperSlideOffset;\n      }\n      let tX = swiper.params.cssMode ? -offset - swiper.translate : -offset;\n      let tY = 0;\n      const tZ = -100 * Math.abs(progress);\n      let scale = 1;\n      let rotate = -params.perSlideRotate * progress;\n      let tXAdd = params.perSlideOffset - Math.abs(progress) * 0.75;\n      const slideIndex = swiper.virtual && swiper.params.virtual.enabled ? swiper.virtual.from + i : i;\n      const isSwipeToNext = (slideIndex === activeIndex || slideIndex === activeIndex - 1) && progress > 0 && progress < 1 && (isTouched || swiper.params.cssMode) && currentTranslate < startTranslate;\n      const isSwipeToPrev = (slideIndex === activeIndex || slideIndex === activeIndex + 1) && progress < 0 && progress > -1 && (isTouched || swiper.params.cssMode) && currentTranslate > startTranslate;\n      if (isSwipeToNext || isSwipeToPrev) {\n        const subProgress = (1 - Math.abs((Math.abs(progress) - 0.5) / 0.5)) ** 0.5;\n        rotate += -28 * progress * subProgress;\n        scale += -0.5 * subProgress;\n        tXAdd += 96 * subProgress;\n        tY = `${-25 * subProgress * Math.abs(progress)}%`;\n      }\n      if (progress < 0) {\n        // next\n        tX = `calc(${tX}px ${rtl ? '-' : '+'} (${tXAdd * Math.abs(progress)}%))`;\n      } else if (progress > 0) {\n        // prev\n        tX = `calc(${tX}px ${rtl ? '-' : '+'} (-${tXAdd * Math.abs(progress)}%))`;\n      } else {\n        tX = `${tX}px`;\n      }\n      if (!swiper.isHorizontal()) {\n        const prevY = tY;\n        tY = tX;\n        tX = prevY;\n      }\n      const scaleString = progress < 0 ? `${1 + (1 - scale) * progress}` : `${1 - (1 - scale) * progress}`;\n\n      /* eslint-disable */\n      const transform = `\n        translate3d(${tX}, ${tY}, ${tZ}px)\n        rotateZ(${params.rotate ? rtl ? -rotate : rotate : 0}deg)\n        scale(${scaleString})\n      `;\n      /* eslint-enable */\n\n      if (params.slideShadows) {\n        // Set shadows\n        let shadowEl = slideEl.querySelector('.swiper-slide-shadow');\n        if (!shadowEl) {\n          shadowEl = createShadow('cards', slideEl);\n        }\n        if (shadowEl) shadowEl.style.opacity = Math.min(Math.max((Math.abs(progress) - 0.5) / 0.5, 0), 1);\n      }\n      slideEl.style.zIndex = -Math.abs(Math.round(slideProgress)) + slides.length;\n      const targetEl = effectTarget(params, slideEl);\n      targetEl.style.transform = transform;\n    }\n  };\n  const setTransition = duration => {\n    const transformElements = swiper.slides.map(slideEl => getSlideTransformEl(slideEl));\n    transformElements.forEach(el => {\n      el.style.transitionDuration = `${duration}ms`;\n      el.querySelectorAll('.swiper-slide-shadow').forEach(shadowEl => {\n        shadowEl.style.transitionDuration = `${duration}ms`;\n      });\n    });\n    effectVirtualTransitionEnd({\n      swiper,\n      duration,\n      transformElements\n    });\n  };\n  effectInit({\n    effect: 'cards',\n    swiper,\n    on,\n    setTranslate,\n    setTransition,\n    perspective: () => true,\n    overwriteParams: () => ({\n      watchSlidesProgress: true,\n      virtualTranslate: !swiper.params.cssMode\n    })\n  });\n}\n\nexport { EffectCards as default };\n","(function(window, factory) {\n\tif(!window) {return;}\n\tvar globalInstall = function(){\n\t\tfactory(window.lazySizes);\n\t\twindow.removeEventListener('lazyunveilread', globalInstall, true);\n\t};\n\n\tfactory = factory.bind(null, window, window.document);\n\n\tif(typeof module == 'object' && module.exports){\n\t\tfactory(require('lazysizes'));\n\t} else if (typeof define == 'function' && define.amd) {\n\t\tdefine(['lazysizes'], factory);\n\t} else if(window.lazySizes) {\n\t\tglobalInstall();\n\t} else {\n\t\twindow.addEventListener('lazyunveilread', globalInstall, true);\n\t}\n}(typeof window != 'undefined' ?\n\twindow : 0, function(window, document, lazySizes) {\n\t'use strict';\n\n\tif(!window.addEventListener){return;}\n\n\tvar regDescriptors = /\\s+(\\d+)(w|h)\\s+(\\d+)(w|h)/;\n\tvar regCssFit = /parent-fit[\"']*\\s*:\\s*[\"']*(contain|cover|width)/;\n\tvar regCssObject = /parent-container[\"']*\\s*:\\s*[\"']*(.+?)(?=(\\s|$|,|'|\"|;))/;\n\tvar regPicture = /^picture$/i;\n\tvar cfg = lazySizes.cfg;\n\n\tvar getCSS = function (elem){\n\t\treturn (getComputedStyle(elem, null) || {});\n\t};\n\n\tvar parentFit = {\n\n\t\tgetParent: function(element, parentSel){\n\t\t\tvar parent = element;\n\t\t\tvar parentNode = element.parentNode;\n\n\t\t\tif((!parentSel || parentSel == 'prev') && parentNode && regPicture.test(parentNode.nodeName || '')){\n\t\t\t\tparentNode = parentNode.parentNode;\n\t\t\t}\n\n\t\t\tif(parentSel != 'self'){\n\t\t\t\tif(parentSel == 'prev'){\n\t\t\t\t\tparent = element.previousElementSibling;\n\t\t\t\t} else if(parentSel && (parentNode.closest || window.jQuery)){\n\t\t\t\t\tparent = (parentNode.closest ?\n\t\t\t\t\t\t\tparentNode.closest(parentSel) :\n\t\t\t\t\t\t\tjQuery(parentNode).closest(parentSel)[0]) ||\n\t\t\t\t\t\tparentNode\n\t\t\t\t\t;\n\t\t\t\t} else {\n\t\t\t\t\tparent = parentNode;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn parent;\n\t\t},\n\n\t\tgetFit: function(element){\n\t\t\tvar tmpMatch, parentObj;\n\t\t\tvar css = getCSS(element);\n\t\t\tvar content = css.content || css.fontFamily;\n\t\t\tvar obj = {\n\t\t\t\tfit: element._lazysizesParentFit || element.getAttribute('data-parent-fit')\n\t\t\t};\n\n\t\t\tif(!obj.fit && content && (tmpMatch = content.match(regCssFit))){\n\t\t\t\tobj.fit = tmpMatch[1];\n\t\t\t}\n\n\t\t\tif(obj.fit){\n\t\t\t\tparentObj = element._lazysizesParentContainer || element.getAttribute('data-parent-container');\n\n\t\t\t\tif(!parentObj && content && (tmpMatch = content.match(regCssObject))){\n\t\t\t\t\tparentObj = tmpMatch[1];\n\t\t\t\t}\n\n\t\t\t\tobj.parent = parentFit.getParent(element, parentObj);\n\n\n\t\t\t} else {\n\t\t\t\tobj.fit = css.objectFit;\n\t\t\t}\n\n\t\t\treturn obj;\n\t\t},\n\n\t\tgetImageRatio: function(element){\n\t\t\tvar i, srcset, media, ratio, match, width, height;\n\t\t\tvar parent = element.parentNode;\n\t\t\tvar elements = parent && regPicture.test(parent.nodeName || '') ?\n\t\t\t\t\tparent.querySelectorAll('source, img') :\n\t\t\t\t\t[element]\n\t\t\t\t;\n\n\t\t\tfor(i = 0; i < elements.length; i++){\n\t\t\t\telement = elements[i];\n\t\t\t\tsrcset = element.getAttribute(cfg.srcsetAttr) || element.getAttribute('srcset') || element.getAttribute('data-pfsrcset') || element.getAttribute('data-risrcset') || '';\n\t\t\t\tmedia = element._lsMedia || element.getAttribute('media');\n\t\t\t\tmedia = cfg.customMedia[element.getAttribute('data-media') || media] || media;\n\n\t\t\t\tif(srcset && (!media || (window.matchMedia && matchMedia(media) || {}).matches )){\n\t\t\t\t\tratio = parseFloat(element.getAttribute('data-aspectratio'));\n\n\t\t\t\t\tif (!ratio) {\n\t\t\t\t\t\tmatch = srcset.match(regDescriptors);\n\n\t\t\t\t\t\tif (match) {\n\t\t\t\t\t\t\tif(match[2] == 'w'){\n\t\t\t\t\t\t\t\twidth = match[1];\n\t\t\t\t\t\t\t\theight = match[3];\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\twidth = match[3];\n\t\t\t\t\t\t\t\theight = match[1];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\twidth = element.getAttribute('width');\n\t\t\t\t\t\t\theight = element.getAttribute('height');\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tratio = width / height;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn ratio;\n\t\t},\n\n\t\tcalculateSize: function(element, width){\n\t\t\tvar displayRatio, height, imageRatio, retWidth;\n\t\t\tvar fitObj = this.getFit(element);\n\t\t\tvar fit = fitObj.fit;\n\t\t\tvar fitElem = fitObj.parent;\n\n\t\t\tif(fit != 'width' && ((fit != 'contain' && fit != 'cover') || !(imageRatio = this.getImageRatio(element)))){\n\t\t\t\treturn width;\n\t\t\t}\n\n\t\t\tif(fitElem){\n\t\t\t\twidth = fitElem.clientWidth;\n\t\t\t} else {\n\t\t\t\tfitElem = element;\n\t\t\t}\n\n\t\t\tretWidth = width;\n\n\t\t\tif(fit == 'width'){\n\t\t\t\tretWidth = width;\n\t\t\t} else {\n\t\t\t\theight = fitElem.clientHeight;\n\n\t\t\t\tif((displayRatio =  width / height) && ((fit == 'cover' && displayRatio < imageRatio) || (fit == 'contain' && displayRatio > imageRatio))){\n\t\t\t\t\tretWidth = width * (imageRatio / displayRatio);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn retWidth;\n\t\t}\n\t};\n\n\tlazySizes.parentFit = parentFit;\n\n\tdocument.addEventListener('lazybeforesizes', function(e){\n\t\tif(e.defaultPrevented || e.detail.instance != lazySizes){return;}\n\n\t\tvar element = e.target;\n\t\te.detail.width = parentFit.calculateSize(element, e.detail.width);\n\t});\n}));\n","/*! medium-zoom 1.1.0 | MIT License | https://github.com/francoischalifour/medium-zoom */\nvar _extends = Object.assign || function (target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i];\n\n    for (var key in source) {\n      if (Object.prototype.hasOwnProperty.call(source, key)) {\n        target[key] = source[key];\n      }\n    }\n  }\n\n  return target;\n};\n\nvar isSupported = function isSupported(node) {\n  return node.tagName === 'IMG';\n};\n\n/* eslint-disable-next-line no-prototype-builtins */\nvar isNodeList = function isNodeList(selector) {\n  return NodeList.prototype.isPrototypeOf(selector);\n};\n\nvar isNode = function isNode(selector) {\n  return selector && selector.nodeType === 1;\n};\n\nvar isSvg = function isSvg(image) {\n  var source = image.currentSrc || image.src;\n  return source.substr(-4).toLowerCase() === '.svg';\n};\n\nvar getImagesFromSelector = function getImagesFromSelector(selector) {\n  try {\n    if (Array.isArray(selector)) {\n      return selector.filter(isSupported);\n    }\n\n    if (isNodeList(selector)) {\n      // Do not use spread operator or Array.from() for IE support\n      return [].slice.call(selector).filter(isSupported);\n    }\n\n    if (isNode(selector)) {\n      return [selector].filter(isSupported);\n    }\n\n    if (typeof selector === 'string') {\n      // Do not use spread operator or Array.from() for IE support\n      return [].slice.call(document.querySelectorAll(selector)).filter(isSupported);\n    }\n\n    return [];\n  } catch (err) {\n    throw new TypeError('The provided selector is invalid.\\n' + 'Expects a CSS selector, a Node element, a NodeList or an array.\\n' + 'See: https://github.com/francoischalifour/medium-zoom');\n  }\n};\n\nvar createOverlay = function createOverlay(background) {\n  var overlay = document.createElement('div');\n  overlay.classList.add('medium-zoom-overlay');\n  overlay.style.background = background;\n\n  return overlay;\n};\n\nvar cloneTarget = function cloneTarget(template) {\n  var _template$getBounding = template.getBoundingClientRect(),\n      top = _template$getBounding.top,\n      left = _template$getBounding.left,\n      width = _template$getBounding.width,\n      height = _template$getBounding.height;\n\n  var clone = template.cloneNode();\n  var scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;\n  var scrollLeft = window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft || 0;\n\n  clone.removeAttribute('id');\n  clone.style.position = 'absolute';\n  clone.style.top = top + scrollTop + 'px';\n  clone.style.left = left + scrollLeft + 'px';\n  clone.style.width = width + 'px';\n  clone.style.height = height + 'px';\n  clone.style.transform = '';\n\n  return clone;\n};\n\nvar createCustomEvent = function createCustomEvent(type, params) {\n  var eventParams = _extends({\n    bubbles: false,\n    cancelable: false,\n    detail: undefined\n  }, params);\n\n  if (typeof window.CustomEvent === 'function') {\n    return new CustomEvent(type, eventParams);\n  }\n\n  var customEvent = document.createEvent('CustomEvent');\n  customEvent.initCustomEvent(type, eventParams.bubbles, eventParams.cancelable, eventParams.detail);\n\n  return customEvent;\n};\n\nvar mediumZoom = function mediumZoom(selector) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n  /**\n   * Ensure the compatibility with IE11 if no Promise polyfill are used.\n   */\n  var Promise = window.Promise || function Promise(fn) {\n    function noop() {}\n    fn(noop, noop);\n  };\n\n  var _handleClick = function _handleClick(event) {\n    var target = event.target;\n\n\n    if (target === overlay) {\n      close();\n      return;\n    }\n\n    if (images.indexOf(target) === -1) {\n      return;\n    }\n\n    toggle({ target: target });\n  };\n\n  var _handleScroll = function _handleScroll() {\n    if (isAnimating || !active.original) {\n      return;\n    }\n\n    var currentScroll = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;\n\n    if (Math.abs(scrollTop - currentScroll) > zoomOptions.scrollOffset) {\n      setTimeout(close, 150);\n    }\n  };\n\n  var _handleKeyUp = function _handleKeyUp(event) {\n    var key = event.key || event.keyCode;\n\n    // Close if escape key is pressed\n    if (key === 'Escape' || key === 'Esc' || key === 27) {\n      close();\n    }\n  };\n\n  var update = function update() {\n    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n    var newOptions = options;\n\n    if (options.background) {\n      overlay.style.background = options.background;\n    }\n\n    if (options.container && options.container instanceof Object) {\n      newOptions.container = _extends({}, zoomOptions.container, options.container);\n    }\n\n    if (options.template) {\n      var template = isNode(options.template) ? options.template : document.querySelector(options.template);\n\n      newOptions.template = template;\n    }\n\n    zoomOptions = _extends({}, zoomOptions, newOptions);\n\n    images.forEach(function (image) {\n      image.dispatchEvent(createCustomEvent('medium-zoom:update', {\n        detail: { zoom: zoom }\n      }));\n    });\n\n    return zoom;\n  };\n\n  var clone = function clone() {\n    var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n    return mediumZoom(_extends({}, zoomOptions, options));\n  };\n\n  var attach = function attach() {\n    for (var _len = arguments.length, selectors = Array(_len), _key = 0; _key < _len; _key++) {\n      selectors[_key] = arguments[_key];\n    }\n\n    var newImages = selectors.reduce(function (imagesAccumulator, currentSelector) {\n      return [].concat(imagesAccumulator, getImagesFromSelector(currentSelector));\n    }, []);\n\n    newImages.filter(function (newImage) {\n      return images.indexOf(newImage) === -1;\n    }).forEach(function (newImage) {\n      images.push(newImage);\n      newImage.classList.add('medium-zoom-image');\n    });\n\n    eventListeners.forEach(function (_ref) {\n      var type = _ref.type,\n          listener = _ref.listener,\n          options = _ref.options;\n\n      newImages.forEach(function (image) {\n        image.addEventListener(type, listener, options);\n      });\n    });\n\n    return zoom;\n  };\n\n  var detach = function detach() {\n    for (var _len2 = arguments.length, selectors = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      selectors[_key2] = arguments[_key2];\n    }\n\n    if (active.zoomed) {\n      close();\n    }\n\n    var imagesToDetach = selectors.length > 0 ? selectors.reduce(function (imagesAccumulator, currentSelector) {\n      return [].concat(imagesAccumulator, getImagesFromSelector(currentSelector));\n    }, []) : images;\n\n    imagesToDetach.forEach(function (image) {\n      image.classList.remove('medium-zoom-image');\n      image.dispatchEvent(createCustomEvent('medium-zoom:detach', {\n        detail: { zoom: zoom }\n      }));\n    });\n\n    images = images.filter(function (image) {\n      return imagesToDetach.indexOf(image) === -1;\n    });\n\n    return zoom;\n  };\n\n  var on = function on(type, listener) {\n    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n    images.forEach(function (image) {\n      image.addEventListener('medium-zoom:' + type, listener, options);\n    });\n\n    eventListeners.push({ type: 'medium-zoom:' + type, listener: listener, options: options });\n\n    return zoom;\n  };\n\n  var off = function off(type, listener) {\n    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n    images.forEach(function (image) {\n      image.removeEventListener('medium-zoom:' + type, listener, options);\n    });\n\n    eventListeners = eventListeners.filter(function (eventListener) {\n      return !(eventListener.type === 'medium-zoom:' + type && eventListener.listener.toString() === listener.toString());\n    });\n\n    return zoom;\n  };\n\n  var open = function open() {\n    var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n        target = _ref2.target;\n\n    var _animate = function _animate() {\n      var container = {\n        width: document.documentElement.clientWidth,\n        height: document.documentElement.clientHeight,\n        left: 0,\n        top: 0,\n        right: 0,\n        bottom: 0\n      };\n      var viewportWidth = void 0;\n      var viewportHeight = void 0;\n\n      if (zoomOptions.container) {\n        if (zoomOptions.container instanceof Object) {\n          // The container is given as an object with properties like width, height, left, top\n          container = _extends({}, container, zoomOptions.container);\n\n          // We need to adjust custom options like container.right or container.bottom\n          viewportWidth = container.width - container.left - container.right - zoomOptions.margin * 2;\n          viewportHeight = container.height - container.top - container.bottom - zoomOptions.margin * 2;\n        } else {\n          // The container is given as an element\n          var zoomContainer = isNode(zoomOptions.container) ? zoomOptions.container : document.querySelector(zoomOptions.container);\n\n          var _zoomContainer$getBou = zoomContainer.getBoundingClientRect(),\n              _width = _zoomContainer$getBou.width,\n              _height = _zoomContainer$getBou.height,\n              _left = _zoomContainer$getBou.left,\n              _top = _zoomContainer$getBou.top;\n\n          container = _extends({}, container, {\n            width: _width,\n            height: _height,\n            left: _left,\n            top: _top\n          });\n        }\n      }\n\n      viewportWidth = viewportWidth || container.width - zoomOptions.margin * 2;\n      viewportHeight = viewportHeight || container.height - zoomOptions.margin * 2;\n\n      var zoomTarget = active.zoomedHd || active.original;\n      var naturalWidth = isSvg(zoomTarget) ? viewportWidth : zoomTarget.naturalWidth || viewportWidth;\n      var naturalHeight = isSvg(zoomTarget) ? viewportHeight : zoomTarget.naturalHeight || viewportHeight;\n\n      var _zoomTarget$getBoundi = zoomTarget.getBoundingClientRect(),\n          top = _zoomTarget$getBoundi.top,\n          left = _zoomTarget$getBoundi.left,\n          width = _zoomTarget$getBoundi.width,\n          height = _zoomTarget$getBoundi.height;\n\n      var scaleX = Math.min(Math.max(width, naturalWidth), viewportWidth) / width;\n      var scaleY = Math.min(Math.max(height, naturalHeight), viewportHeight) / height;\n      var scale = Math.min(scaleX, scaleY);\n      var translateX = (-left + (viewportWidth - width) / 2 + zoomOptions.margin + container.left) / scale;\n      var translateY = (-top + (viewportHeight - height) / 2 + zoomOptions.margin + container.top) / scale;\n      var transform = 'scale(' + scale + ') translate3d(' + translateX + 'px, ' + translateY + 'px, 0)';\n\n      active.zoomed.style.transform = transform;\n\n      if (active.zoomedHd) {\n        active.zoomedHd.style.transform = transform;\n      }\n    };\n\n    return new Promise(function (resolve) {\n      if (target && images.indexOf(target) === -1) {\n        resolve(zoom);\n        return;\n      }\n\n      var _handleOpenEnd = function _handleOpenEnd() {\n        isAnimating = false;\n        active.zoomed.removeEventListener('transitionend', _handleOpenEnd);\n        active.original.dispatchEvent(createCustomEvent('medium-zoom:opened', {\n          detail: { zoom: zoom }\n        }));\n\n        resolve(zoom);\n      };\n\n      if (active.zoomed) {\n        resolve(zoom);\n        return;\n      }\n\n      if (target) {\n        // The zoom was triggered manually via a click\n        active.original = target;\n      } else if (images.length > 0) {\nvar _images = images;\n        active.original = _images[0];\n      } else {\n        resolve(zoom);\n        return;\n      }\n\n      active.original.dispatchEvent(createCustomEvent('medium-zoom:open', {\n        detail: { zoom: zoom }\n      }));\n\n      scrollTop = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0;\n      isAnimating = true;\n      active.zoomed = cloneTarget(active.original);\n\n      document.body.appendChild(overlay);\n\n      if (zoomOptions.template) {\n        var template = isNode(zoomOptions.template) ? zoomOptions.template : document.querySelector(zoomOptions.template);\n        active.template = document.createElement('div');\n        active.template.appendChild(template.content.cloneNode(true));\n\n        document.body.appendChild(active.template);\n      }\n\n      // If the selected <img> tag is inside a <picture> tag, set the\n      // currently-applied source as the cloned `src=` attribute.\n      // (as these might differ, or src= might be unset in some cases)\n      if (active.original.parentElement && active.original.parentElement.tagName === 'PICTURE' && active.original.currentSrc) {\n        active.zoomed.src = active.original.currentSrc;\n      }\n\n      document.body.appendChild(active.zoomed);\n\n      window.requestAnimationFrame(function () {\n        document.body.classList.add('medium-zoom--opened');\n      });\n\n      active.original.classList.add('medium-zoom-image--hidden');\n      active.zoomed.classList.add('medium-zoom-image--opened');\n\n      active.zoomed.addEventListener('click', close);\n      active.zoomed.addEventListener('transitionend', _handleOpenEnd);\n\n      if (active.original.getAttribute('data-zoom-src')) {\n        active.zoomedHd = active.zoomed.cloneNode();\n\n        // Reset the `scrset` property or the HD image won't load.\n        active.zoomedHd.removeAttribute('srcset');\n        active.zoomedHd.removeAttribute('sizes');\n        // Remove loading attribute so the browser can load the image normally\n        active.zoomedHd.removeAttribute('loading');\n\n        active.zoomedHd.src = active.zoomed.getAttribute('data-zoom-src');\n\n        active.zoomedHd.onerror = function () {\n          clearInterval(getZoomTargetSize);\n          console.warn('Unable to reach the zoom image target ' + active.zoomedHd.src);\n          active.zoomedHd = null;\n          _animate();\n        };\n\n        // We need to access the natural size of the full HD\n        // target as fast as possible to compute the animation.\n        var getZoomTargetSize = setInterval(function () {\n          if ( active.zoomedHd.complete) {\n            clearInterval(getZoomTargetSize);\n            active.zoomedHd.classList.add('medium-zoom-image--opened');\n            active.zoomedHd.addEventListener('click', close);\n            document.body.appendChild(active.zoomedHd);\n            _animate();\n          }\n        }, 10);\n      } else if (active.original.hasAttribute('srcset')) {\n        // If an image has a `srcset` attribuet, we don't know the dimensions of the\n        // zoomed (HD) image (like when `data-zoom-src` is specified).\n        // Therefore the approach is quite similar.\n        active.zoomedHd = active.zoomed.cloneNode();\n\n        // Resetting the sizes attribute tells the browser to load the\n        // image best fitting the current viewport size, respecting the `srcset`.\n        active.zoomedHd.removeAttribute('sizes');\n\n        // In Firefox, the `loading` attribute needs to be set to `eager` (default\n        // value) for the load event to be fired.\n        active.zoomedHd.removeAttribute('loading');\n\n        // Wait for the load event of the hd image. This will fire if the image\n        // is already cached.\n        var loadEventListener = active.zoomedHd.addEventListener('load', function () {\n          active.zoomedHd.removeEventListener('load', loadEventListener);\n          active.zoomedHd.classList.add('medium-zoom-image--opened');\n          active.zoomedHd.addEventListener('click', close);\n          document.body.appendChild(active.zoomedHd);\n          _animate();\n        });\n      } else {\n        _animate();\n      }\n    });\n  };\n\n  var close = function close() {\n    return new Promise(function (resolve) {\n      if (isAnimating || !active.original) {\n        resolve(zoom);\n        return;\n      }\n\n      var _handleCloseEnd = function _handleCloseEnd() {\n        active.original.classList.remove('medium-zoom-image--hidden');\n        document.body.removeChild(active.zoomed);\n        if (active.zoomedHd) {\n          document.body.removeChild(active.zoomedHd);\n        }\n        document.body.removeChild(overlay);\n        active.zoomed.classList.remove('medium-zoom-image--opened');\n        if (active.template) {\n          document.body.removeChild(active.template);\n        }\n\n        isAnimating = false;\n        active.zoomed.removeEventListener('transitionend', _handleCloseEnd);\n\n        active.original.dispatchEvent(createCustomEvent('medium-zoom:closed', {\n          detail: { zoom: zoom }\n        }));\n\n        active.original = null;\n        active.zoomed = null;\n        active.zoomedHd = null;\n        active.template = null;\n\n        resolve(zoom);\n      };\n\n      isAnimating = true;\n      document.body.classList.remove('medium-zoom--opened');\n      active.zoomed.style.transform = '';\n\n      if (active.zoomedHd) {\n        active.zoomedHd.style.transform = '';\n      }\n\n      // Fade out the template so it's not too abrupt\n      if (active.template) {\n        active.template.style.transition = 'opacity 150ms';\n        active.template.style.opacity = 0;\n      }\n\n      active.original.dispatchEvent(createCustomEvent('medium-zoom:close', {\n        detail: { zoom: zoom }\n      }));\n\n      active.zoomed.addEventListener('transitionend', _handleCloseEnd);\n    });\n  };\n\n  var toggle = function toggle() {\n    var _ref3 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n        target = _ref3.target;\n\n    if (active.original) {\n      return close();\n    }\n\n    return open({ target: target });\n  };\n\n  var getOptions = function getOptions() {\n    return zoomOptions;\n  };\n\n  var getImages = function getImages() {\n    return images;\n  };\n\n  var getZoomedImage = function getZoomedImage() {\n    return active.original;\n  };\n\n  var images = [];\n  var eventListeners = [];\n  var isAnimating = false;\n  var scrollTop = 0;\n  var zoomOptions = options;\n  var active = {\n    original: null,\n    zoomed: null,\n    zoomedHd: null,\n    template: null\n\n    // If the selector is omitted, it's replaced by the options\n  };if (Object.prototype.toString.call(selector) === '[object Object]') {\n    zoomOptions = selector;\n  } else if (selector || typeof selector === 'string' // to process empty string as a selector\n  ) {\n      attach(selector);\n    }\n\n  // Apply the default option values\n  zoomOptions = _extends({\n    margin: 0,\n    background: '#fff',\n    scrollOffset: 40,\n    container: null,\n    template: null\n  }, zoomOptions);\n\n  var overlay = createOverlay(zoomOptions.background);\n\n  document.addEventListener('click', _handleClick);\n  document.addEventListener('keyup', _handleKeyUp);\n  document.addEventListener('scroll', _handleScroll);\n  window.addEventListener('resize', close);\n\n  var zoom = {\n    open: open,\n    close: close,\n    toggle: toggle,\n    update: update,\n    clone: clone,\n    attach: attach,\n    detach: detach,\n    on: on,\n    off: off,\n    getOptions: getOptions,\n    getImages: getImages,\n    getZoomedImage: getZoomedImage\n  };\n\n  return zoom;\n};\n\nfunction styleInject(css, ref) {\n  if ( ref === void 0 ) ref = {};\n  var insertAt = ref.insertAt;\n\n  if (!css || typeof document === 'undefined') { return; }\n\n  var head = document.head || document.getElementsByTagName('head')[0];\n  var style = document.createElement('style');\n  style.type = 'text/css';\n\n  if (insertAt === 'top') {\n    if (head.firstChild) {\n      head.insertBefore(style, head.firstChild);\n    } else {\n      head.appendChild(style);\n    }\n  } else {\n    head.appendChild(style);\n  }\n\n  if (style.styleSheet) {\n    style.styleSheet.cssText = css;\n  } else {\n    style.appendChild(document.createTextNode(css));\n  }\n}\n\nvar css = \".medium-zoom-overlay{position:fixed;top:0;right:0;bottom:0;left:0;opacity:0;transition:opacity .3s;will-change:opacity}.medium-zoom--opened .medium-zoom-overlay{cursor:pointer;cursor:zoom-out;opacity:1}.medium-zoom-image{cursor:pointer;cursor:zoom-in;transition:transform .3s cubic-bezier(.2,0,.2,1)!important}.medium-zoom-image--hidden{visibility:hidden}.medium-zoom-image--opened{position:relative;cursor:pointer;cursor:zoom-out;will-change:transform}\";\nstyleInject(css);\n\nexport default mediumZoom;\n","import { configure, hits, menu, pagination, searchBox } from 'instantsearch.js/es/widgets';\nimport { t } from 'i18next';\nimport algoliasearch from 'algoliasearch/lite';\nimport instantsearch from 'instantsearch.js';\n\nimport config from './config';\nimport i18n from './i18n';\n\nfunction startAlgoliaSearch() {\n  console.debug('Start Algolia search component');\n\n  const algoliaClient = algoliasearch(config.algolia.appId, config.algolia.apiKey);\n\n  // Prevent search when query is empty, refer to https://github.com/algolia/react-instantsearch/issues/1111#issuecomment-414239919\n  const searchClient = {\n    search(requests) {\n      const shouldSearch = requests.some(({ params: { query } }) => query !== '');\n      if (shouldSearch) {\n        return algoliaClient.search(requests);\n      }\n      return Promise.resolve({\n        results: [{ hits: [], nbPages: 0 }],\n      });\n    },\n  };\n\n  const search = instantsearch({\n    indexName: config.algolia.indexName,\n    searchClient,\n\n    // Hide search content container when query is empty, refer to https://www.algolia.com/doc/guides/building-search-ui/going-further/conditional-display/js/#handling-empty-queries\n    searchFunction(helper) {\n      const contentContainer = document.querySelector('#content');\n      contentContainer.style.display = helper.state.query === '' ? 'none' : '';\n      const contentBlank = document.querySelector('#blank');\n      contentBlank.style.display = helper.state.query === '' ? '' : 'none';\n      helper.search();\n    },\n\n    // Sync UI state with URL, refer to https://www.algolia.com/doc/guides/building-search-ui/going-further/routing-urls/js/#rewriting-urls-manually\n    routing: {\n      stateMapping: {\n        stateToRoute(uiState) {\n          const indexUiState = uiState[config.algolia.indexName];\n          return {\n            q: indexUiState.query,\n            t: indexUiState.menu && indexUiState.menu.page_type,\n            p: indexUiState.page,\n          };\n        },\n        routeToState(routeState) {\n          return {\n            [config.algolia.indexName]: {\n              query: routeState.q,\n              menu: {\n                page_type: routeState.t,\n              },\n              page: routeState.p,\n            },\n          };\n        },\n      },\n    },\n  });\n\n  search.addWidgets([\n    configure({\n      hitsPerPage: 10,\n      clickAnalytics: true,\n      filters: `language:${i18n.getLocale()}`,\n    }),\n\n    searchBox({\n      container: \"#search-box\",\n      searchAsYouType: false,\n      showSubmit: true,\n      showLoadingIndicator: false,\n      placeholder: t('search.box.placeholder'),\n      templates: {\n        submit({ cssClasses }, { html }) {\n          return html`\n          <button class=\"${cssClasses.submit}\" type=\"submit\" title=\"${t('search.box.submitButtonTitle')}\">\n              <svg class=\"${cssClasses.submitIcon}\" width=\"10\" height=\"10\" viewBox=\"0 0 40 40\">\n                  <path d=\"M26.804 29.01c-2.832 2.34-6.465 3.746-10.426 3.746C7.333 32.756 0 25.424 0 16.378 0 7.333 7.333 0 16.378 0c9.046 0 16.378 7.333 16.378 16.378 0 3.96-1.406 7.594-3.746 10.426l10.534 10.534c.607.607.61 1.59-.004 2.202-.61.61-1.597.61-2.202.004L26.804 29.01zm-10.426.627c7.323 0 13.26-5.936 13.26-13.26 0-7.32-5.937-13.257-13.26-13.257C9.056 3.12 3.12 9.056 3.12 16.378c0 7.323 5.936 13.26 13.258 13.26z\"></path>\n              </svg>\n          </button>`;\n        },\n        reset({ cssClasses }, { html }) {\n          return html`\n          <button class=\"${cssClasses.reset}\" type=\"reset\" title=\"${t('search.box.resetButtonTitle')}\">\n              <svg class=\"${cssClasses.resetIcon}\" viewBox=\"0 0 20 20\" width=\"10\" height=\"10\">\n                  <path d=\"M8.114 10L.944 2.83 0 1.885 1.886 0l.943.943L10 8.113l7.17-7.17.944-.943L20 1.886l-.943.943-7.17 7.17 7.17 7.17.943.944L18.114 20l-.943-.943-7.17-7.17-7.17 7.17-.944.943L0 18.114l.943-.943L8.113 10z\"></path>\n              </svg>\n          </button>`;\n        },\n      },\n    }),\n\n    menu({\n      container: '#search-tabs-container',\n      attribute: 'page_type',\n      transformItems(items) {\n        return items.map(item => ({\n          ...item,\n          label: t(`search.menuLabel.${item.label}`),\n        }));\n      },\n      templates: {\n        item(data, { html }) {\n          const { label, count } = data;\n          return html`<li><a href=\"#\">${label} (${count.toLocaleString()})</a></li>`;\n        },\n      },\n    }),\n\n    hits({\n      container: \"#search-results-container\",\n      templates: {\n        empty: `<div>${t('search.noResultsText')}<strong>{{ query }}</strong></div>`,\n        item(hit, { html, components }) {\n          return html`\n          <a class=\"item\" href=\"${hit.url}\">\n              <div class=\"title\">${components.Highlight({ attribute: 'title', highlightedTagName: 'span', hit })}</div>\n              <div class=\"fragment\">${components.Snippet({ attribute: 'pure_body', highlightedTagName: 'span', hit })}</div>\n          </a>\n        `;\n        },\n      },\n    }),\n\n    pagination({\n      container: '#search-paginator',\n    }),\n  ]);\n\n  const searchBoxTips = document.querySelector('#search-box-tips');\n  searchBoxTips.innerHTML = t('search.box.tips');\n\n  search.start();\n}\n\n// Only start Algolia in search page\nif (window.location.pathname.endsWith('/search')) {\n  startAlgoliaSearch();\n}\n","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport connectConfigure from \"../../connectors/configure/connectConfigure.js\";\nimport { noop } from \"../../lib/utils/index.js\";\n/**\n * A list of [search parameters](https://www.algolia.com/doc/api-reference/search-api-parameters/)\n * to enable when the widget mounts.\n */\n\nvar configure = function configure(widgetParams) {\n  // This is a renderless widget that falls back to the connector's\n  // noop render and unmount functions.\n  var makeWidget = connectConfigure(noop);\n  return _objectSpread(_objectSpread({}, makeWidget({\n    searchParameters: widgetParams\n  })), {}, {\n    $$widgetType: 'ais.configure'\n  });\n};\n\nexport default configure;","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport algoliasearchHelper from 'algoliasearch-helper';\nimport { createDocumentationMessageGenerator, isPlainObject, mergeSearchParameters, noop } from \"../../lib/utils/index.js\";\n/**\n * Refine the given search parameters.\n */\n\nvar withUsage = createDocumentationMessageGenerator({\n  name: 'configure',\n  connector: true\n});\n\nfunction getInitialSearchParameters(state, widgetParams) {\n  // We leverage the helper internals to remove the `widgetParams` from\n  // the state. The function `setQueryParameters` omits the values that\n  // are `undefined` on the next state.\n  return state.setQueryParameters(Object.keys(widgetParams.searchParameters).reduce(function (acc, key) {\n    return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, key, undefined));\n  }, {}));\n}\n\nvar connectConfigure = function connectConfigure() {\n  var renderFn = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : noop;\n  var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n  return function (widgetParams) {\n    if (!widgetParams || !isPlainObject(widgetParams.searchParameters)) {\n      throw new Error(withUsage('The `searchParameters` option expects an object.'));\n    }\n\n    var connectorState = {};\n\n    function refine(helper) {\n      return function (searchParameters) {\n        // Merge new `searchParameters` with the ones set from other widgets\n        var actualState = getInitialSearchParameters(helper.state, widgetParams);\n        var nextSearchParameters = mergeSearchParameters(actualState, new algoliasearchHelper.SearchParameters(searchParameters)); // Update original `widgetParams.searchParameters` to the new refined one\n\n        widgetParams.searchParameters = searchParameters; // Trigger a search with the resolved search parameters\n\n        helper.setState(nextSearchParameters).search();\n      };\n    }\n\n    return {\n      $$type: 'ais.configure',\n      init: function init(initOptions) {\n        var instantSearchInstance = initOptions.instantSearchInstance;\n        renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(initOptions)), {}, {\n          instantSearchInstance: instantSearchInstance\n        }), true);\n      },\n      render: function render(renderOptions) {\n        var instantSearchInstance = renderOptions.instantSearchInstance;\n        renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(renderOptions)), {}, {\n          instantSearchInstance: instantSearchInstance\n        }), false);\n      },\n      dispose: function dispose(_ref) {\n        var state = _ref.state;\n        unmountFn();\n        return getInitialSearchParameters(state, widgetParams);\n      },\n      getRenderState: function getRenderState(renderState, renderOptions) {\n        var _renderState$configur;\n\n        var widgetRenderState = this.getWidgetRenderState(renderOptions);\n        return _objectSpread(_objectSpread({}, renderState), {}, {\n          configure: _objectSpread(_objectSpread({}, widgetRenderState), {}, {\n            widgetParams: _objectSpread(_objectSpread({}, widgetRenderState.widgetParams), {}, {\n              searchParameters: mergeSearchParameters(new algoliasearchHelper.SearchParameters((_renderState$configur = renderState.configure) === null || _renderState$configur === void 0 ? void 0 : _renderState$configur.widgetParams.searchParameters), new algoliasearchHelper.SearchParameters(widgetRenderState.widgetParams.searchParameters)).getQueryParams()\n            })\n          })\n        });\n      },\n      getWidgetRenderState: function getWidgetRenderState(_ref2) {\n        var helper = _ref2.helper;\n\n        if (!connectorState.refine) {\n          connectorState.refine = refine(helper);\n        }\n\n        return {\n          refine: connectorState.refine,\n          widgetParams: widgetParams\n        };\n      },\n      getWidgetSearchParameters: function getWidgetSearchParameters(state, _ref3) {\n        var uiState = _ref3.uiState;\n        return mergeSearchParameters(state, new algoliasearchHelper.SearchParameters(_objectSpread(_objectSpread({}, uiState.configure), widgetParams.searchParameters)));\n      },\n      getWidgetUiState: function getWidgetUiState(uiState) {\n        return _objectSpread(_objectSpread({}, uiState), {}, {\n          configure: _objectSpread(_objectSpread({}, uiState.configure), widgetParams.searchParameters)\n        });\n      }\n    };\n  };\n};\n\nexport default connectConfigure;","'use strict';\n\nvar AlgoliaSearchHelper = require('./src/algoliasearch.helper');\n\nvar SearchParameters = require('./src/SearchParameters');\nvar SearchResults = require('./src/SearchResults');\n\n/**\n * The algoliasearchHelper module is the function that will let its\n * contains everything needed to use the Algoliasearch\n * Helper. It is a also a function that instanciate the helper.\n * To use the helper, you also need the Algolia JS client v3.\n * @example\n * //using the UMD build\n * var client = algoliasearch('latency', '6be0576ff61c053d5f9a3225e2a90f76');\n * var helper = algoliasearchHelper(client, 'bestbuy', {\n *   facets: ['shipping'],\n *   disjunctiveFacets: ['category']\n * });\n * helper.on('result', function(event) {\n *   console.log(event.results);\n * });\n * helper\n *   .toggleFacetRefinement('category', 'Movies & TV Shows')\n *   .toggleFacetRefinement('shipping', 'Free shipping')\n *   .search();\n * @example\n * // The helper is an event emitter using the node API\n * helper.on('result', updateTheResults);\n * helper.once('result', updateTheResults);\n * helper.removeListener('result', updateTheResults);\n * helper.removeAllListeners('result');\n * @module algoliasearchHelper\n * @param  {AlgoliaSearch} client an AlgoliaSearch client\n * @param  {string} index the name of the index to query\n * @param  {SearchParameters|object} opts an object defining the initial config of the search. It doesn't have to be a {SearchParameters}, just an object containing the properties you need from it.\n * @return {AlgoliaSearchHelper}\n */\nfunction algoliasearchHelper(client, index, opts) {\n  return new AlgoliaSearchHelper(client, index, opts);\n}\n\n/**\n * The version currently used\n * @member module:algoliasearchHelper.version\n * @type {number}\n */\nalgoliasearchHelper.version = require('./src/version.js');\n\n/**\n * Constructor for the Helper.\n * @member module:algoliasearchHelper.AlgoliaSearchHelper\n * @type {AlgoliaSearchHelper}\n */\nalgoliasearchHelper.AlgoliaSearchHelper = AlgoliaSearchHelper;\n\n/**\n * Constructor for the object containing all the parameters of the search.\n * @member module:algoliasearchHelper.SearchParameters\n * @type {SearchParameters}\n */\nalgoliasearchHelper.SearchParameters = SearchParameters;\n\n/**\n * Constructor for the object containing the results of the search.\n * @member module:algoliasearchHelper.SearchResults\n * @type {SearchResults}\n */\nalgoliasearchHelper.SearchResults = SearchResults;\n\nmodule.exports = algoliasearchHelper;\n","'use strict';\n\nvar SearchParameters = require('./SearchParameters');\nvar SearchResults = require('./SearchResults');\nvar DerivedHelper = require('./DerivedHelper');\nvar requestBuilder = require('./requestBuilder');\n\nvar EventEmitter = require('@algolia/events');\nvar inherits = require('./functions/inherits');\nvar objectHasKeys = require('./functions/objectHasKeys');\nvar omit = require('./functions/omit');\nvar merge = require('./functions/merge');\n\nvar version = require('./version');\nvar escapeFacetValue = require('./functions/escapeFacetValue').escapeFacetValue;\n\n/**\n * Event triggered when a parameter is set or updated\n * @event AlgoliaSearchHelper#event:change\n * @property {object} event\n * @property {SearchParameters} event.state the current parameters with the latest changes applied\n * @property {SearchResults} event.results the previous results received from Algolia. `null` before the first request\n * @example\n * helper.on('change', function(event) {\n *   console.log('The parameters have changed');\n * });\n */\n\n/**\n * Event triggered when a main search is sent to Algolia\n * @event AlgoliaSearchHelper#event:search\n * @property {object} event\n * @property {SearchParameters} event.state the parameters used for this search\n * @property {SearchResults} event.results the results from the previous search. `null` if it is the first search.\n * @example\n * helper.on('search', function(event) {\n *   console.log('Search sent');\n * });\n */\n\n/**\n * Event triggered when a search using `searchForFacetValues` is sent to Algolia\n * @event AlgoliaSearchHelper#event:searchForFacetValues\n * @property {object} event\n * @property {SearchParameters} event.state the parameters used for this search it is the first search.\n * @property {string} event.facet the facet searched into\n * @property {string} event.query the query used to search in the facets\n * @example\n * helper.on('searchForFacetValues', function(event) {\n *   console.log('searchForFacetValues sent');\n * });\n */\n\n/**\n * Event triggered when a search using `searchOnce` is sent to Algolia\n * @event AlgoliaSearchHelper#event:searchOnce\n * @property {object} event\n * @property {SearchParameters} event.state the parameters used for this search it is the first search.\n * @example\n * helper.on('searchOnce', function(event) {\n *   console.log('searchOnce sent');\n * });\n */\n\n/**\n * Event triggered when the results are retrieved from Algolia\n * @event AlgoliaSearchHelper#event:result\n * @property {object} event\n * @property {SearchResults} event.results the results received from Algolia\n * @property {SearchParameters} event.state the parameters used to query Algolia. Those might be different from the one in the helper instance (for example if the network is unreliable).\n * @example\n * helper.on('result', function(event) {\n *   console.log('Search results received');\n * });\n */\n\n/**\n * Event triggered when Algolia sends back an error. For example, if an unknown parameter is\n * used, the error can be caught using this event.\n * @event AlgoliaSearchHelper#event:error\n * @property {object} event\n * @property {Error} event.error the error returned by the Algolia.\n * @example\n * helper.on('error', function(event) {\n *   console.log('Houston we got a problem.');\n * });\n */\n\n/**\n * Event triggered when the queue of queries have been depleted (with any result or outdated queries)\n * @event AlgoliaSearchHelper#event:searchQueueEmpty\n * @example\n * helper.on('searchQueueEmpty', function() {\n *   console.log('No more search pending');\n *   // This is received before the result event if we're not expecting new results\n * });\n *\n * helper.search();\n */\n\n/**\n * Initialize a new AlgoliaSearchHelper\n * @class\n * @classdesc The AlgoliaSearchHelper is a class that ease the management of the\n * search. It provides an event based interface for search callbacks:\n *  - change: when the internal search state is changed.\n *    This event contains a {@link SearchParameters} object and the\n *    {@link SearchResults} of the last result if any.\n *  - search: when a search is triggered using the `search()` method.\n *  - result: when the response is retrieved from Algolia and is processed.\n *    This event contains a {@link SearchResults} object and the\n *    {@link SearchParameters} corresponding to this answer.\n *  - error: when the response is an error. This event contains the error returned by the server.\n * @param  {AlgoliaSearch} client an AlgoliaSearch client\n * @param  {string} index the index name to query\n * @param  {SearchParameters | object} options an object defining the initial\n * config of the search. It doesn't have to be a {SearchParameters},\n * just an object containing the properties you need from it.\n */\nfunction AlgoliaSearchHelper(client, index, options) {\n  if (typeof client.addAlgoliaAgent === 'function') {\n    client.addAlgoliaAgent('JS Helper (' + version + ')');\n  }\n\n  this.setClient(client);\n  var opts = options || {};\n  opts.index = index;\n  this.state = SearchParameters.make(opts);\n  this.lastResults = null;\n  this._queryId = 0;\n  this._lastQueryIdReceived = -1;\n  this.derivedHelpers = [];\n  this._currentNbQueries = 0;\n}\n\ninherits(AlgoliaSearchHelper, EventEmitter);\n\n/**\n * Start the search with the parameters set in the state. When the\n * method is called, it triggers a `search` event. The results will\n * be available through the `result` event. If an error occurs, an\n * `error` will be fired instead.\n * @return {AlgoliaSearchHelper}\n * @fires search\n * @fires result\n * @fires error\n * @chainable\n */\nAlgoliaSearchHelper.prototype.search = function() {\n  this._search({onlyWithDerivedHelpers: false});\n  return this;\n};\n\nAlgoliaSearchHelper.prototype.searchOnlyWithDerivedHelpers = function() {\n  this._search({onlyWithDerivedHelpers: true});\n  return this;\n};\n\n/**\n * Gets the search query parameters that would be sent to the Algolia Client\n * for the hits\n * @return {object} Query Parameters\n */\nAlgoliaSearchHelper.prototype.getQuery = function() {\n  var state = this.state;\n  return requestBuilder._getHitsSearchParams(state);\n};\n\n/**\n * Start a search using a modified version of the current state. This method does\n * not trigger the helper lifecycle and does not modify the state kept internally\n * by the helper. This second aspect means that the next search call will be the\n * same as a search call before calling searchOnce.\n * @param {object} options can contain all the parameters that can be set to SearchParameters\n * plus the index\n * @param {function} [callback] optional callback executed when the response from the\n * server is back.\n * @return {promise|undefined} if a callback is passed the method returns undefined\n * otherwise it returns a promise containing an object with two keys :\n *  - content with a SearchResults\n *  - state with the state used for the query as a SearchParameters\n * @example\n * // Changing the number of records returned per page to 1\n * // This example uses the callback API\n * var state = helper.searchOnce({hitsPerPage: 1},\n *   function(error, content, state) {\n *     // if an error occurred it will be passed in error, otherwise its value is null\n *     // content contains the results formatted as a SearchResults\n *     // state is the instance of SearchParameters used for this search\n *   });\n * @example\n * // Changing the number of records returned per page to 1\n * // This example uses the promise API\n * var state1 = helper.searchOnce({hitsPerPage: 1})\n *                 .then(promiseHandler);\n *\n * function promiseHandler(res) {\n *   // res contains\n *   // {\n *   //   content : SearchResults\n *   //   state   : SearchParameters (the one used for this specific search)\n *   // }\n * }\n */\nAlgoliaSearchHelper.prototype.searchOnce = function(options, cb) {\n  var tempState = !options ? this.state : this.state.setQueryParameters(options);\n  var queries = requestBuilder._getQueries(tempState.index, tempState);\n  var self = this;\n\n  this._currentNbQueries++;\n\n  this.emit('searchOnce', {\n    state: tempState\n  });\n\n  if (cb) {\n    this.client\n      .search(queries)\n      .then(function(content) {\n        self._currentNbQueries--;\n        if (self._currentNbQueries === 0) {\n          self.emit('searchQueueEmpty');\n        }\n\n        cb(null, new SearchResults(tempState, content.results), tempState);\n      })\n      .catch(function(err) {\n        self._currentNbQueries--;\n        if (self._currentNbQueries === 0) {\n          self.emit('searchQueueEmpty');\n        }\n\n        cb(err, null, tempState);\n      });\n\n    return undefined;\n  }\n\n  return this.client.search(queries).then(function(content) {\n    self._currentNbQueries--;\n    if (self._currentNbQueries === 0) self.emit('searchQueueEmpty');\n    return {\n      content: new SearchResults(tempState, content.results),\n      state: tempState,\n      _originalResponse: content\n    };\n  }, function(e) {\n    self._currentNbQueries--;\n    if (self._currentNbQueries === 0) self.emit('searchQueueEmpty');\n    throw e;\n  });\n};\n\n /**\n * Start the search for answers with the parameters set in the state.\n * This method returns a promise.\n * @param {Object} options - the options for answers API call\n * @param {string[]} options.attributesForPrediction - Attributes to use for predictions. If empty, `searchableAttributes` is used instead.\n * @param {string[]} options.queryLanguages - The languages in the query. Currently only supports ['en'].\n * @param {number} options.nbHits - Maximum number of answers to retrieve from the Answers Engine. Cannot be greater than 1000.\n *\n * @return {promise} the answer results\n */\nAlgoliaSearchHelper.prototype.findAnswers = function(options) {\n  var state = this.state;\n  var derivedHelper = this.derivedHelpers[0];\n  if (!derivedHelper) {\n    return Promise.resolve([]);\n  }\n  var derivedState = derivedHelper.getModifiedState(state);\n  var data = merge(\n    {\n      attributesForPrediction: options.attributesForPrediction,\n      nbHits: options.nbHits\n    },\n    {\n      params: omit(requestBuilder._getHitsSearchParams(derivedState), [\n        'attributesToSnippet',\n        'hitsPerPage',\n        'restrictSearchableAttributes',\n        'snippetEllipsisText' // FIXME remove this line once the engine is fixed.\n      ])\n    }\n  );\n\n  var errorMessage = 'search for answers was called, but this client does not have a function client.initIndex(index).findAnswers';\n  if (typeof this.client.initIndex !== 'function') {\n    throw new Error(errorMessage);\n  }\n  var index = this.client.initIndex(derivedState.index);\n  if (typeof index.findAnswers !== 'function') {\n    throw new Error(errorMessage);\n  }\n  return index.findAnswers(derivedState.query, options.queryLanguages, data);\n};\n\n/**\n * Structure of each result when using\n * [`searchForFacetValues()`](reference.html#AlgoliaSearchHelper#searchForFacetValues)\n * @typedef FacetSearchHit\n * @type {object}\n * @property {string} value the facet value\n * @property {string} highlighted the facet value highlighted with the query string\n * @property {number} count number of occurrence of this facet value\n * @property {boolean} isRefined true if the value is already refined\n */\n\n/**\n * Structure of the data resolved by the\n * [`searchForFacetValues()`](reference.html#AlgoliaSearchHelper#searchForFacetValues)\n * promise.\n * @typedef FacetSearchResult\n * @type {object}\n * @property {FacetSearchHit} facetHits the results for this search for facet values\n * @property {number} processingTimeMS time taken by the query inside the engine\n */\n\n/**\n * Search for facet values based on an query and the name of a faceted attribute. This\n * triggers a search and will return a promise. On top of using the query, it also sends\n * the parameters from the state so that the search is narrowed down to only the possible values.\n *\n * See the description of [FacetSearchResult](reference.html#FacetSearchResult)\n * @param {string} facet the name of the faceted attribute\n * @param {string} query the string query for the search\n * @param {number} [maxFacetHits] the maximum number values returned. Should be > 0 and <= 100\n * @param {object} [userState] the set of custom parameters to use on top of the current state. Setting a property to `undefined` removes\n * it in the generated query.\n * @return {promise.<FacetSearchResult>} the results of the search\n */\nAlgoliaSearchHelper.prototype.searchForFacetValues = function(facet, query, maxFacetHits, userState) {\n  var clientHasSFFV = typeof this.client.searchForFacetValues === 'function';\n  var clientHasInitIndex = typeof this.client.initIndex === 'function';\n  if (\n    !clientHasSFFV &&\n    !clientHasInitIndex &&\n    typeof this.client.search !== 'function'\n  ) {\n    throw new Error(\n      'search for facet values (searchable) was called, but this client does not have a function client.searchForFacetValues or client.initIndex(index).searchForFacetValues'\n    );\n  }\n\n  var state = this.state.setQueryParameters(userState || {});\n  var isDisjunctive = state.isDisjunctiveFacet(facet);\n  var algoliaQuery = requestBuilder.getSearchForFacetQuery(facet, query, maxFacetHits, state);\n\n  this._currentNbQueries++;\n  var self = this;\n  var searchForFacetValuesPromise;\n  // newer algoliasearch ^3.27.1 - ~4.0.0\n  if (clientHasSFFV) {\n    searchForFacetValuesPromise = this.client.searchForFacetValues([\n      {indexName: state.index, params: algoliaQuery}\n    ]);\n    // algoliasearch < 3.27.1\n  } else if (clientHasInitIndex) {\n    searchForFacetValuesPromise = this.client\n      .initIndex(state.index)\n      .searchForFacetValues(algoliaQuery);\n    // algoliasearch ~5.0.0\n  } else {\n    // @MAJOR only use client.search\n    delete algoliaQuery.facetName;\n    searchForFacetValuesPromise = this.client\n      .search([\n        {\n          type: 'facet',\n          facet: facet,\n          indexName: state.index,\n          params: algoliaQuery\n        }\n      ])\n      .then(function processResponse(response) {\n        return response.results[0];\n      });\n  }\n\n  this.emit('searchForFacetValues', {\n    state: state,\n    facet: facet,\n    query: query\n  });\n\n  return searchForFacetValuesPromise.then(function addIsRefined(content) {\n    self._currentNbQueries--;\n    if (self._currentNbQueries === 0) self.emit('searchQueueEmpty');\n\n    content = Array.isArray(content) ? content[0] : content;\n\n    content.facetHits.forEach(function(f) {\n      f.escapedValue = escapeFacetValue(f.value);\n      f.isRefined = isDisjunctive\n        ? state.isDisjunctiveFacetRefined(facet, f.escapedValue)\n        : state.isFacetRefined(facet, f.escapedValue);\n    });\n\n    return content;\n  }, function(e) {\n    self._currentNbQueries--;\n    if (self._currentNbQueries === 0) self.emit('searchQueueEmpty');\n    throw e;\n  });\n};\n\n/**\n * Sets the text query used for the search.\n *\n * This method resets the current page to 0.\n * @param  {string} q the user query\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.setQuery = function(q) {\n  this._change({\n    state: this.state.resetPage().setQuery(q),\n    isPageReset: true\n  });\n\n  return this;\n};\n\n/**\n * Remove all the types of refinements except tags. A string can be provided to remove\n * only the refinements of a specific attribute. For more advanced use case, you can\n * provide a function instead. This function should follow the\n * [clearCallback definition](#SearchParameters.clearCallback).\n *\n * This method resets the current page to 0.\n * @param {string} [name] optional name of the facet / attribute on which we want to remove all refinements\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n * @example\n * // Removing all the refinements\n * helper.clearRefinements().search();\n * @example\n * // Removing all the filters on a the category attribute.\n * helper.clearRefinements('category').search();\n * @example\n * // Removing only the exclude filters on the category facet.\n * helper.clearRefinements(function(value, attribute, type) {\n *   return type === 'exclude' && attribute === 'category';\n * }).search();\n */\nAlgoliaSearchHelper.prototype.clearRefinements = function(name) {\n  this._change({\n    state: this.state.resetPage().clearRefinements(name),\n    isPageReset: true\n  });\n\n  return this;\n};\n\n/**\n * Remove all the tag filters.\n *\n * This method resets the current page to 0.\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.clearTags = function() {\n  this._change({\n    state: this.state.resetPage().clearTags(),\n    isPageReset: true\n  });\n\n  return this;\n};\n\n/**\n * Adds a disjunctive filter to a faceted attribute with the `value` provided. If the\n * filter is already set, it doesn't change the filters.\n *\n * This method resets the current page to 0.\n * @param  {string} facet the facet to refine\n * @param  {string} value the associated value (will be converted to string)\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.addDisjunctiveFacetRefinement = function(facet, value) {\n  this._change({\n    state: this.state.resetPage().addDisjunctiveFacetRefinement(facet, value),\n    isPageReset: true\n  });\n\n  return this;\n};\n\n/**\n * @deprecated since version 2.4.0, see {@link AlgoliaSearchHelper#addDisjunctiveFacetRefinement}\n */\nAlgoliaSearchHelper.prototype.addDisjunctiveRefine = function() {\n  return this.addDisjunctiveFacetRefinement.apply(this, arguments);\n};\n\n/**\n * Adds a refinement on a hierarchical facet. It will throw\n * an exception if the facet is not defined or if the facet\n * is already refined.\n *\n * This method resets the current page to 0.\n * @param {string} facet the facet name\n * @param {string} path the hierarchical facet path\n * @return {AlgoliaSearchHelper}\n * @throws Error if the facet is not defined or if the facet is refined\n * @chainable\n * @fires change\n */\nAlgoliaSearchHelper.prototype.addHierarchicalFacetRefinement = function(facet, value) {\n  this._change({\n    state: this.state.resetPage().addHierarchicalFacetRefinement(facet, value),\n    isPageReset: true\n  });\n\n  return this;\n};\n\n/**\n * Adds a an numeric filter to an attribute with the `operator` and `value` provided. If the\n * filter is already set, it doesn't change the filters.\n *\n * This method resets the current page to 0.\n * @param  {string} attribute the attribute on which the numeric filter applies\n * @param  {string} operator the operator of the filter\n * @param  {number} value the value of the filter\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.addNumericRefinement = function(attribute, operator, value) {\n  this._change({\n    state: this.state.resetPage().addNumericRefinement(attribute, operator, value),\n    isPageReset: true\n  });\n\n  return this;\n};\n\n/**\n * Adds a filter to a faceted attribute with the `value` provided. If the\n * filter is already set, it doesn't change the filters.\n *\n * This method resets the current page to 0.\n * @param  {string} facet the facet to refine\n * @param  {string} value the associated value (will be converted to string)\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.addFacetRefinement = function(facet, value) {\n  this._change({\n    state: this.state.resetPage().addFacetRefinement(facet, value),\n    isPageReset: true\n  });\n\n  return this;\n};\n\n/**\n * @deprecated since version 2.4.0, see {@link AlgoliaSearchHelper#addFacetRefinement}\n */\nAlgoliaSearchHelper.prototype.addRefine = function() {\n  return this.addFacetRefinement.apply(this, arguments);\n};\n\n\n/**\n * Adds a an exclusion filter to a faceted attribute with the `value` provided. If the\n * filter is already set, it doesn't change the filters.\n *\n * This method resets the current page to 0.\n * @param  {string} facet the facet to refine\n * @param  {string} value the associated value (will be converted to string)\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.addFacetExclusion = function(facet, value) {\n  this._change({\n    state: this.state.resetPage().addExcludeRefinement(facet, value),\n    isPageReset: true\n  });\n\n  return this;\n};\n\n/**\n * @deprecated since version 2.4.0, see {@link AlgoliaSearchHelper#addFacetExclusion}\n */\nAlgoliaSearchHelper.prototype.addExclude = function() {\n  return this.addFacetExclusion.apply(this, arguments);\n};\n\n/**\n * Adds a tag filter with the `tag` provided. If the\n * filter is already set, it doesn't change the filters.\n *\n * This method resets the current page to 0.\n * @param {string} tag the tag to add to the filter\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.addTag = function(tag) {\n  this._change({\n    state: this.state.resetPage().addTagRefinement(tag),\n    isPageReset: true\n  });\n\n  return this;\n};\n\n/**\n * Removes an numeric filter to an attribute with the `operator` and `value` provided. If the\n * filter is not set, it doesn't change the filters.\n *\n * Some parameters are optional, triggering different behavior:\n *  - if the value is not provided, then all the numeric value will be removed for the\n *  specified attribute/operator couple.\n *  - if the operator is not provided either, then all the numeric filter on this attribute\n *  will be removed.\n *\n * This method resets the current page to 0.\n * @param  {string} attribute the attribute on which the numeric filter applies\n * @param  {string} [operator] the operator of the filter\n * @param  {number} [value] the value of the filter\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.removeNumericRefinement = function(attribute, operator, value) {\n  this._change({\n    state: this.state.resetPage().removeNumericRefinement(attribute, operator, value),\n    isPageReset: true\n  });\n\n  return this;\n};\n\n/**\n * Removes a disjunctive filter to a faceted attribute with the `value` provided. If the\n * filter is not set, it doesn't change the filters.\n *\n * If the value is omitted, then this method will remove all the filters for the\n * attribute.\n *\n * This method resets the current page to 0.\n * @param  {string} facet the facet to refine\n * @param  {string} [value] the associated value\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.removeDisjunctiveFacetRefinement = function(facet, value) {\n  this._change({\n    state: this.state.resetPage().removeDisjunctiveFacetRefinement(facet, value),\n    isPageReset: true\n  });\n\n  return this;\n};\n\n/**\n * @deprecated since version 2.4.0, see {@link AlgoliaSearchHelper#removeDisjunctiveFacetRefinement}\n */\nAlgoliaSearchHelper.prototype.removeDisjunctiveRefine = function() {\n  return this.removeDisjunctiveFacetRefinement.apply(this, arguments);\n};\n\n/**\n * Removes the refinement set on a hierarchical facet.\n * @param {string} facet the facet name\n * @return {AlgoliaSearchHelper}\n * @throws Error if the facet is not defined or if the facet is not refined\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.removeHierarchicalFacetRefinement = function(facet) {\n  this._change({\n    state: this.state.resetPage().removeHierarchicalFacetRefinement(facet),\n    isPageReset: true\n  });\n\n  return this;\n};\n\n/**\n * Removes a filter to a faceted attribute with the `value` provided. If the\n * filter is not set, it doesn't change the filters.\n *\n * If the value is omitted, then this method will remove all the filters for the\n * attribute.\n *\n * This method resets the current page to 0.\n * @param  {string} facet the facet to refine\n * @param  {string} [value] the associated value\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.removeFacetRefinement = function(facet, value) {\n  this._change({\n    state: this.state.resetPage().removeFacetRefinement(facet, value),\n    isPageReset: true\n  });\n\n  return this;\n};\n\n/**\n * @deprecated since version 2.4.0, see {@link AlgoliaSearchHelper#removeFacetRefinement}\n */\nAlgoliaSearchHelper.prototype.removeRefine = function() {\n  return this.removeFacetRefinement.apply(this, arguments);\n};\n\n/**\n * Removes an exclusion filter to a faceted attribute with the `value` provided. If the\n * filter is not set, it doesn't change the filters.\n *\n * If the value is omitted, then this method will remove all the filters for the\n * attribute.\n *\n * This method resets the current page to 0.\n * @param  {string} facet the facet to refine\n * @param  {string} [value] the associated value\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.removeFacetExclusion = function(facet, value) {\n  this._change({\n    state: this.state.resetPage().removeExcludeRefinement(facet, value),\n    isPageReset: true\n  });\n\n  return this;\n};\n\n/**\n * @deprecated since version 2.4.0, see {@link AlgoliaSearchHelper#removeFacetExclusion}\n */\nAlgoliaSearchHelper.prototype.removeExclude = function() {\n  return this.removeFacetExclusion.apply(this, arguments);\n};\n\n/**\n * Removes a tag filter with the `tag` provided. If the\n * filter is not set, it doesn't change the filters.\n *\n * This method resets the current page to 0.\n * @param {string} tag tag to remove from the filter\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.removeTag = function(tag) {\n  this._change({\n    state: this.state.resetPage().removeTagRefinement(tag),\n    isPageReset: true\n  });\n\n  return this;\n};\n\n/**\n * Adds or removes an exclusion filter to a faceted attribute with the `value` provided. If\n * the value is set then it removes it, otherwise it adds the filter.\n *\n * This method resets the current page to 0.\n * @param  {string} facet the facet to refine\n * @param  {string} value the associated value\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.toggleFacetExclusion = function(facet, value) {\n  this._change({\n    state: this.state.resetPage().toggleExcludeFacetRefinement(facet, value),\n    isPageReset: true\n  });\n\n  return this;\n};\n\n/**\n * @deprecated since version 2.4.0, see {@link AlgoliaSearchHelper#toggleFacetExclusion}\n */\nAlgoliaSearchHelper.prototype.toggleExclude = function() {\n  return this.toggleFacetExclusion.apply(this, arguments);\n};\n\n/**\n * Adds or removes a filter to a faceted attribute with the `value` provided. If\n * the value is set then it removes it, otherwise it adds the filter.\n *\n * This method can be used for conjunctive, disjunctive and hierarchical filters.\n *\n * This method resets the current page to 0.\n * @param  {string} facet the facet to refine\n * @param  {string} value the associated value\n * @return {AlgoliaSearchHelper}\n * @throws Error will throw an error if the facet is not declared in the settings of the helper\n * @fires change\n * @chainable\n * @deprecated since version 2.19.0, see {@link AlgoliaSearchHelper#toggleFacetRefinement}\n */\nAlgoliaSearchHelper.prototype.toggleRefinement = function(facet, value) {\n  return this.toggleFacetRefinement(facet, value);\n};\n\n/**\n * Adds or removes a filter to a faceted attribute with the `value` provided. If\n * the value is set then it removes it, otherwise it adds the filter.\n *\n * This method can be used for conjunctive, disjunctive and hierarchical filters.\n *\n * This method resets the current page to 0.\n * @param  {string} facet the facet to refine\n * @param  {string} value the associated value\n * @return {AlgoliaSearchHelper}\n * @throws Error will throw an error if the facet is not declared in the settings of the helper\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.toggleFacetRefinement = function(facet, value) {\n  this._change({\n    state: this.state.resetPage().toggleFacetRefinement(facet, value),\n    isPageReset: true\n  });\n\n  return this;\n};\n\n/**\n * @deprecated since version 2.4.0, see {@link AlgoliaSearchHelper#toggleFacetRefinement}\n */\nAlgoliaSearchHelper.prototype.toggleRefine = function() {\n  return this.toggleFacetRefinement.apply(this, arguments);\n};\n\n/**\n * Adds or removes a tag filter with the `value` provided. If\n * the value is set then it removes it, otherwise it adds the filter.\n *\n * This method resets the current page to 0.\n * @param {string} tag tag to remove or add\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.toggleTag = function(tag) {\n  this._change({\n    state: this.state.resetPage().toggleTagRefinement(tag),\n    isPageReset: true\n  });\n\n  return this;\n};\n\n/**\n * Increments the page number by one.\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n * @example\n * helper.setPage(0).nextPage().getPage();\n * // returns 1\n */\nAlgoliaSearchHelper.prototype.nextPage = function() {\n  var page = this.state.page || 0;\n  return this.setPage(page + 1);\n};\n\n/**\n * Decrements the page number by one.\n * @fires change\n * @return {AlgoliaSearchHelper}\n * @chainable\n * @example\n * helper.setPage(1).previousPage().getPage();\n * // returns 0\n */\nAlgoliaSearchHelper.prototype.previousPage = function() {\n  var page = this.state.page || 0;\n  return this.setPage(page - 1);\n};\n\n/**\n * @private\n */\nfunction setCurrentPage(page) {\n  if (page < 0) throw new Error('Page requested below 0.');\n\n  this._change({\n    state: this.state.setPage(page),\n    isPageReset: false\n  });\n\n  return this;\n}\n\n/**\n * Change the current page\n * @deprecated\n * @param  {number} page The page number\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.setCurrentPage = setCurrentPage;\n\n/**\n * Updates the current page.\n * @function\n * @param  {number} page The page number\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.setPage = setCurrentPage;\n\n/**\n * Updates the name of the index that will be targeted by the query.\n *\n * This method resets the current page to 0.\n * @param {string} name the index name\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.setIndex = function(name) {\n  this._change({\n    state: this.state.resetPage().setIndex(name),\n    isPageReset: true\n  });\n\n  return this;\n};\n\n/**\n * Update a parameter of the search. This method reset the page\n *\n * The complete list of parameters is available on the\n * [Algolia website](https://www.algolia.com/doc/rest#query-an-index).\n * The most commonly used parameters have their own [shortcuts](#query-parameters-shortcuts)\n * or benefit from higher-level APIs (all the kind of filters and facets have their own API)\n *\n * This method resets the current page to 0.\n * @param {string} parameter name of the parameter to update\n * @param {any} value new value of the parameter\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n * @example\n * helper.setQueryParameter('hitsPerPage', 20).search();\n */\nAlgoliaSearchHelper.prototype.setQueryParameter = function(parameter, value) {\n  this._change({\n    state: this.state.resetPage().setQueryParameter(parameter, value),\n    isPageReset: true\n  });\n\n  return this;\n};\n\n/**\n * Set the whole state (warning: will erase previous state)\n * @param {SearchParameters} newState the whole new state\n * @return {AlgoliaSearchHelper}\n * @fires change\n * @chainable\n */\nAlgoliaSearchHelper.prototype.setState = function(newState) {\n  this._change({\n    state: SearchParameters.make(newState),\n    isPageReset: false\n  });\n\n  return this;\n};\n\n/**\n * Override the current state without triggering a change event.\n * Do not use this method unless you know what you are doing. (see the example\n * for a legit use case)\n * @param {SearchParameters} newState the whole new state\n * @return {AlgoliaSearchHelper}\n * @example\n *  helper.on('change', function(state){\n *    // In this function you might want to find a way to store the state in the url/history\n *    updateYourURL(state)\n *  })\n *  window.onpopstate = function(event){\n *    // This is naive though as you should check if the state is really defined etc.\n *    helper.overrideStateWithoutTriggeringChangeEvent(event.state).search()\n *  }\n * @chainable\n */\nAlgoliaSearchHelper.prototype.overrideStateWithoutTriggeringChangeEvent = function(newState) {\n  this.state = new SearchParameters(newState);\n  return this;\n};\n\n/**\n * Check if an attribute has any numeric, conjunctive, disjunctive or hierarchical filters.\n * @param {string} attribute the name of the attribute\n * @return {boolean} true if the attribute is filtered by at least one value\n * @example\n * // hasRefinements works with numeric, conjunctive, disjunctive and hierarchical filters\n * helper.hasRefinements('price'); // false\n * helper.addNumericRefinement('price', '>', 100);\n * helper.hasRefinements('price'); // true\n *\n * helper.hasRefinements('color'); // false\n * helper.addFacetRefinement('color', 'blue');\n * helper.hasRefinements('color'); // true\n *\n * helper.hasRefinements('material'); // false\n * helper.addDisjunctiveFacetRefinement('material', 'plastic');\n * helper.hasRefinements('material'); // true\n *\n * helper.hasRefinements('categories'); // false\n * helper.toggleFacetRefinement('categories', 'kitchen > knife');\n * helper.hasRefinements('categories'); // true\n *\n */\nAlgoliaSearchHelper.prototype.hasRefinements = function(attribute) {\n  if (objectHasKeys(this.state.getNumericRefinements(attribute))) {\n    return true;\n  } else if (this.state.isConjunctiveFacet(attribute)) {\n    return this.state.isFacetRefined(attribute);\n  } else if (this.state.isDisjunctiveFacet(attribute)) {\n    return this.state.isDisjunctiveFacetRefined(attribute);\n  } else if (this.state.isHierarchicalFacet(attribute)) {\n    return this.state.isHierarchicalFacetRefined(attribute);\n  }\n\n  // there's currently no way to know that the user did call `addNumericRefinement` at some point\n  // thus we cannot distinguish if there once was a numeric refinement that was cleared\n  // so we will return false in every other situations to be consistent\n  // while what we should do here is throw because we did not find the attribute in any type\n  // of refinement\n  return false;\n};\n\n/**\n * Check if a value is excluded for a specific faceted attribute. If the value\n * is omitted then the function checks if there is any excluding refinements.\n *\n * @param  {string}  facet name of the attribute for used for faceting\n * @param  {string}  [value] optional value. If passed will test that this value\n   * is filtering the given facet.\n * @return {boolean} true if refined\n * @example\n * helper.isExcludeRefined('color'); // false\n * helper.isExcludeRefined('color', 'blue') // false\n * helper.isExcludeRefined('color', 'red') // false\n *\n * helper.addFacetExclusion('color', 'red');\n *\n * helper.isExcludeRefined('color'); // true\n * helper.isExcludeRefined('color', 'blue') // false\n * helper.isExcludeRefined('color', 'red') // true\n */\nAlgoliaSearchHelper.prototype.isExcluded = function(facet, value) {\n  return this.state.isExcludeRefined(facet, value);\n};\n\n/**\n * @deprecated since 2.4.0, see {@link AlgoliaSearchHelper#hasRefinements}\n */\nAlgoliaSearchHelper.prototype.isDisjunctiveRefined = function(facet, value) {\n  return this.state.isDisjunctiveFacetRefined(facet, value);\n};\n\n/**\n * Check if the string is a currently filtering tag.\n * @param {string} tag tag to check\n * @return {boolean}\n */\nAlgoliaSearchHelper.prototype.hasTag = function(tag) {\n  return this.state.isTagRefined(tag);\n};\n\n/**\n * @deprecated since 2.4.0, see {@link AlgoliaSearchHelper#hasTag}\n */\nAlgoliaSearchHelper.prototype.isTagRefined = function() {\n  return this.hasTagRefinements.apply(this, arguments);\n};\n\n\n/**\n * Get the name of the currently used index.\n * @return {string}\n * @example\n * helper.setIndex('highestPrice_products').getIndex();\n * // returns 'highestPrice_products'\n */\nAlgoliaSearchHelper.prototype.getIndex = function() {\n  return this.state.index;\n};\n\nfunction getCurrentPage() {\n  return this.state.page;\n}\n\n/**\n * Get the currently selected page\n * @deprecated\n * @return {number} the current page\n */\nAlgoliaSearchHelper.prototype.getCurrentPage = getCurrentPage;\n/**\n * Get the currently selected page\n * @function\n * @return {number} the current page\n */\nAlgoliaSearchHelper.prototype.getPage = getCurrentPage;\n\n/**\n * Get all the tags currently set to filters the results.\n *\n * @return {string[]} The list of tags currently set.\n */\nAlgoliaSearchHelper.prototype.getTags = function() {\n  return this.state.tagRefinements;\n};\n\n/**\n * Get the list of refinements for a given attribute. This method works with\n * conjunctive, disjunctive, excluding and numerical filters.\n *\n * See also SearchResults#getRefinements\n *\n * @param {string} facetName attribute name used for faceting\n * @return {Array.<FacetRefinement|NumericRefinement>} All Refinement are objects that contain a value, and\n * a type. Numeric also contains an operator.\n * @example\n * helper.addNumericRefinement('price', '>', 100);\n * helper.getRefinements('price');\n * // [\n * //   {\n * //     \"value\": [\n * //       100\n * //     ],\n * //     \"operator\": \">\",\n * //     \"type\": \"numeric\"\n * //   }\n * // ]\n * @example\n * helper.addFacetRefinement('color', 'blue');\n * helper.addFacetExclusion('color', 'red');\n * helper.getRefinements('color');\n * // [\n * //   {\n * //     \"value\": \"blue\",\n * //     \"type\": \"conjunctive\"\n * //   },\n * //   {\n * //     \"value\": \"red\",\n * //     \"type\": \"exclude\"\n * //   }\n * // ]\n * @example\n * helper.addDisjunctiveFacetRefinement('material', 'plastic');\n * // [\n * //   {\n * //     \"value\": \"plastic\",\n * //     \"type\": \"disjunctive\"\n * //   }\n * // ]\n */\nAlgoliaSearchHelper.prototype.getRefinements = function(facetName) {\n  var refinements = [];\n\n  if (this.state.isConjunctiveFacet(facetName)) {\n    var conjRefinements = this.state.getConjunctiveRefinements(facetName);\n\n    conjRefinements.forEach(function(r) {\n      refinements.push({\n        value: r,\n        type: 'conjunctive'\n      });\n    });\n\n    var excludeRefinements = this.state.getExcludeRefinements(facetName);\n\n    excludeRefinements.forEach(function(r) {\n      refinements.push({\n        value: r,\n        type: 'exclude'\n      });\n    });\n  } else if (this.state.isDisjunctiveFacet(facetName)) {\n    var disjRefinements = this.state.getDisjunctiveRefinements(facetName);\n\n    disjRefinements.forEach(function(r) {\n      refinements.push({\n        value: r,\n        type: 'disjunctive'\n      });\n    });\n  }\n\n  var numericRefinements = this.state.getNumericRefinements(facetName);\n\n  Object.keys(numericRefinements).forEach(function(operator) {\n    var value = numericRefinements[operator];\n\n    refinements.push({\n      value: value,\n      operator: operator,\n      type: 'numeric'\n    });\n  });\n\n  return refinements;\n};\n\n/**\n * Return the current refinement for the (attribute, operator)\n * @param {string} attribute attribute in the record\n * @param {string} operator operator applied on the refined values\n * @return {Array.<number|number[]>} refined values\n */\nAlgoliaSearchHelper.prototype.getNumericRefinement = function(attribute, operator) {\n  return this.state.getNumericRefinement(attribute, operator);\n};\n\n/**\n * Get the current breadcrumb for a hierarchical facet, as an array\n * @param  {string} facetName Hierarchical facet name\n * @return {array.<string>} the path as an array of string\n */\nAlgoliaSearchHelper.prototype.getHierarchicalFacetBreadcrumb = function(facetName) {\n  return this.state.getHierarchicalFacetBreadcrumb(facetName);\n};\n\n// /////////// PRIVATE\n\n/**\n * Perform the underlying queries\n * @private\n * @return {undefined}\n * @fires search\n * @fires result\n * @fires error\n */\nAlgoliaSearchHelper.prototype._search = function(options) {\n  var state = this.state;\n  var states = [];\n  var mainQueries = [];\n\n  if (!options.onlyWithDerivedHelpers) {\n    mainQueries = requestBuilder._getQueries(state.index, state);\n\n    states.push({\n      state: state,\n      queriesCount: mainQueries.length,\n      helper: this\n    });\n\n    this.emit('search', {\n      state: state,\n      results: this.lastResults\n    });\n  }\n\n  var derivedQueries = this.derivedHelpers.map(function(derivedHelper) {\n    var derivedState = derivedHelper.getModifiedState(state);\n    var derivedStateQueries = requestBuilder._getQueries(derivedState.index, derivedState);\n\n    states.push({\n      state: derivedState,\n      queriesCount: derivedStateQueries.length,\n      helper: derivedHelper\n    });\n\n    derivedHelper.emit('search', {\n      state: derivedState,\n      results: derivedHelper.lastResults\n    });\n\n    return derivedStateQueries;\n  });\n\n  var queries = Array.prototype.concat.apply(mainQueries, derivedQueries);\n  var queryId = this._queryId++;\n\n  this._currentNbQueries++;\n\n  try {\n    this.client.search(queries)\n      .then(this._dispatchAlgoliaResponse.bind(this, states, queryId))\n      .catch(this._dispatchAlgoliaError.bind(this, queryId));\n  } catch (error) {\n    // If we reach this part, we're in an internal error state\n    this.emit('error', {\n      error: error\n    });\n  }\n};\n\n/**\n * Transform the responses as sent by the server and transform them into a user\n * usable object that merge the results of all the batch requests. It will dispatch\n * over the different helper + derived helpers (when there are some).\n * @private\n * @param {array.<{SearchParameters, AlgoliaQueries, AlgoliaSearchHelper}>}\n *  state state used for to generate the request\n * @param {number} queryId id of the current request\n * @param {object} content content of the response\n * @return {undefined}\n */\nAlgoliaSearchHelper.prototype._dispatchAlgoliaResponse = function(states, queryId, content) {\n  // FIXME remove the number of outdated queries discarded instead of just one\n\n  if (queryId < this._lastQueryIdReceived) {\n    // Outdated answer\n    return;\n  }\n\n  this._currentNbQueries -= (queryId - this._lastQueryIdReceived);\n  this._lastQueryIdReceived = queryId;\n\n  if (this._currentNbQueries === 0) this.emit('searchQueueEmpty');\n\n  var results = content.results.slice();\n\n  states.forEach(function(s) {\n    var state = s.state;\n    var queriesCount = s.queriesCount;\n    var helper = s.helper;\n    var specificResults = results.splice(0, queriesCount);\n\n    var formattedResponse = helper.lastResults = new SearchResults(state, specificResults);\n\n    helper.emit('result', {\n      results: formattedResponse,\n      state: state\n    });\n  });\n};\n\nAlgoliaSearchHelper.prototype._dispatchAlgoliaError = function(queryId, error) {\n  if (queryId < this._lastQueryIdReceived) {\n    // Outdated answer\n    return;\n  }\n\n  this._currentNbQueries -= queryId - this._lastQueryIdReceived;\n  this._lastQueryIdReceived = queryId;\n\n  this.emit('error', {\n    error: error\n  });\n\n  if (this._currentNbQueries === 0) this.emit('searchQueueEmpty');\n};\n\nAlgoliaSearchHelper.prototype.containsRefinement = function(query, facetFilters, numericFilters, tagFilters) {\n  return query ||\n    facetFilters.length !== 0 ||\n    numericFilters.length !== 0 ||\n    tagFilters.length !== 0;\n};\n\n/**\n * Test if there are some disjunctive refinements on the facet\n * @private\n * @param {string} facet the attribute to test\n * @return {boolean}\n */\nAlgoliaSearchHelper.prototype._hasDisjunctiveRefinements = function(facet) {\n  return this.state.disjunctiveRefinements[facet] &&\n    this.state.disjunctiveRefinements[facet].length > 0;\n};\n\nAlgoliaSearchHelper.prototype._change = function(event) {\n  var state = event.state;\n  var isPageReset = event.isPageReset;\n\n  if (state !== this.state) {\n    this.state = state;\n\n    this.emit('change', {\n      state: this.state,\n      results: this.lastResults,\n      isPageReset: isPageReset\n    });\n  }\n};\n\n/**\n * Clears the cache of the underlying Algolia client.\n * @return {AlgoliaSearchHelper}\n */\nAlgoliaSearchHelper.prototype.clearCache = function() {\n  this.client.clearCache && this.client.clearCache();\n  return this;\n};\n\n/**\n * Updates the internal client instance. If the reference of the clients\n * are equal then no update is actually done.\n * @param  {AlgoliaSearch} newClient an AlgoliaSearch client\n * @return {AlgoliaSearchHelper}\n */\nAlgoliaSearchHelper.prototype.setClient = function(newClient) {\n  if (this.client === newClient) return this;\n\n  if (typeof newClient.addAlgoliaAgent === 'function') {\n    newClient.addAlgoliaAgent('JS Helper (' + version + ')');\n  }\n  this.client = newClient;\n\n  return this;\n};\n\n/**\n * Gets the instance of the currently used client.\n * @return {AlgoliaSearch}\n */\nAlgoliaSearchHelper.prototype.getClient = function() {\n  return this.client;\n};\n\n/**\n * Creates an derived instance of the Helper. A derived helper\n * is a way to request other indices synchronised with the lifecycle\n * of the main Helper. This mechanism uses the multiqueries feature\n * of Algolia to aggregate all the requests in a single network call.\n *\n * This method takes a function that is used to create a new SearchParameter\n * that will be used to create requests to Algolia. Those new requests\n * are created just before the `search` event. The signature of the function\n * is `SearchParameters -> SearchParameters`.\n *\n * This method returns a new DerivedHelper which is an EventEmitter\n * that fires the same `search`, `result` and `error` events. Those\n * events, however, will receive data specific to this DerivedHelper\n * and the SearchParameters that is returned by the call of the\n * parameter function.\n * @param {function} fn SearchParameters -> SearchParameters\n * @return {DerivedHelper}\n */\nAlgoliaSearchHelper.prototype.derive = function(fn) {\n  var derivedHelper = new DerivedHelper(this, fn);\n  this.derivedHelpers.push(derivedHelper);\n  return derivedHelper;\n};\n\n/**\n * This method detaches a derived Helper from the main one. Prefer using the one from the\n * derived helper itself, to remove the event listeners too.\n * @private\n * @return {undefined}\n * @throws Error\n */\nAlgoliaSearchHelper.prototype.detachDerivedHelper = function(derivedHelper) {\n  var pos = this.derivedHelpers.indexOf(derivedHelper);\n  if (pos === -1) throw new Error('Derived helper already detached');\n  this.derivedHelpers.splice(pos, 1);\n};\n\n/**\n * This method returns true if there is currently at least one on-going search.\n * @return {boolean} true if there is a search pending\n */\nAlgoliaSearchHelper.prototype.hasPendingRequests = function() {\n  return this._currentNbQueries > 0;\n};\n\n/**\n * @typedef AlgoliaSearchHelper.NumericRefinement\n * @type {object}\n * @property {number[]} value the numbers that are used for filtering this attribute with\n * the operator specified.\n * @property {string} operator the faceting data: value, number of entries\n * @property {string} type will be 'numeric'\n */\n\n/**\n * @typedef AlgoliaSearchHelper.FacetRefinement\n * @type {object}\n * @property {string} value the string use to filter the attribute\n * @property {string} type the type of filter: 'conjunctive', 'disjunctive', 'exclude'\n */\n\nmodule.exports = AlgoliaSearchHelper;\n","'use strict';\n\nvar merge = require('../functions/merge');\nvar defaultsPure = require('../functions/defaultsPure');\nvar intersection = require('../functions/intersection');\nvar find = require('../functions/find');\nvar valToNumber = require('../functions/valToNumber');\nvar omit = require('../functions/omit');\nvar objectHasKeys = require('../functions/objectHasKeys');\nvar isValidUserToken = require('../utils/isValidUserToken');\n\nvar RefinementList = require('./RefinementList');\n\n/**\n * isEqual, but only for numeric refinement values, possible values:\n * - 5\n * - [5]\n * - [[5]]\n * - [[5,5],[4]]\n */\nfunction isEqualNumericRefinement(a, b) {\n  if (Array.isArray(a) && Array.isArray(b)) {\n    return (\n      a.length === b.length &&\n      a.every(function(el, i) {\n        return isEqualNumericRefinement(b[i], el);\n      })\n    );\n  }\n  return a === b;\n}\n\n/**\n * like _.find but using deep equality to be able to use it\n * to find arrays.\n * @private\n * @param {any[]} array array to search into (elements are base or array of base)\n * @param {any} searchedValue the value we're looking for (base or array of base)\n * @return {any} the searched value or undefined\n */\nfunction findArray(array, searchedValue) {\n  return find(array, function(currentValue) {\n    return isEqualNumericRefinement(currentValue, searchedValue);\n  });\n}\n\n/**\n * The facet list is the structure used to store the list of values used to\n * filter a single attribute.\n * @typedef {string[]} SearchParameters.FacetList\n */\n\n/**\n * Structure to store numeric filters with the operator as the key. The supported operators\n * are `=`, `>`, `<`, `>=`, `<=` and `!=`.\n * @typedef {Object.<string, Array.<number|number[]>>} SearchParameters.OperatorList\n */\n\n/**\n * SearchParameters is the data structure that contains all the information\n * usable for making a search to Algolia API. It doesn't do the search itself,\n * nor does it contains logic about the parameters.\n * It is an immutable object, therefore it has been created in a way that each\n * changes does not change the object itself but returns a copy with the\n * modification.\n * This object should probably not be instantiated outside of the helper. It will\n * be provided when needed. This object is documented for reference as you'll\n * get it from events generated by the {@link AlgoliaSearchHelper}.\n * If need be, instantiate the Helper from the factory function {@link SearchParameters.make}\n * @constructor\n * @classdesc contains all the parameters of a search\n * @param {object|SearchParameters} newParameters existing parameters or partial object\n * for the properties of a new SearchParameters\n * @see SearchParameters.make\n * @example <caption>SearchParameters of the first query in\n *   <a href=\"http://demos.algolia.com/instant-search-demo/\">the instant search demo</a></caption>\n{\n   \"query\": \"\",\n   \"disjunctiveFacets\": [\n      \"customerReviewCount\",\n      \"category\",\n      \"salePrice_range\",\n      \"manufacturer\"\n  ],\n   \"maxValuesPerFacet\": 30,\n   \"page\": 0,\n   \"hitsPerPage\": 10,\n   \"facets\": [\n      \"type\",\n      \"shipping\"\n  ]\n}\n */\nfunction SearchParameters(newParameters) {\n  var params = newParameters ? SearchParameters._parseNumbers(newParameters) : {};\n\n  if (params.userToken !== undefined && !isValidUserToken(params.userToken)) {\n    console.warn('[algoliasearch-helper] The `userToken` parameter is invalid. This can lead to wrong analytics.\\n  - Format: [a-zA-Z0-9_-]{1,64}');\n  }\n  /**\n   * This attribute contains the list of all the conjunctive facets\n   * used. This list will be added to requested facets in the\n   * [facets attribute](https://www.algolia.com/doc/rest-api/search#param-facets) sent to algolia.\n   * @member {string[]}\n   */\n  this.facets = params.facets || [];\n  /**\n   * This attribute contains the list of all the disjunctive facets\n   * used. This list will be added to requested facets in the\n   * [facets attribute](https://www.algolia.com/doc/rest-api/search#param-facets) sent to algolia.\n   * @member {string[]}\n   */\n  this.disjunctiveFacets = params.disjunctiveFacets || [];\n  /**\n   * This attribute contains the list of all the hierarchical facets\n   * used. This list will be added to requested facets in the\n   * [facets attribute](https://www.algolia.com/doc/rest-api/search#param-facets) sent to algolia.\n   * Hierarchical facets are a sub type of disjunctive facets that\n   * let you filter faceted attributes hierarchically.\n   * @member {string[]|object[]}\n   */\n  this.hierarchicalFacets = params.hierarchicalFacets || [];\n\n  // Refinements\n  /**\n   * This attribute contains all the filters that need to be\n   * applied on the conjunctive facets. Each facet must be properly\n   * defined in the `facets` attribute.\n   *\n   * The key is the name of the facet, and the `FacetList` contains all\n   * filters selected for the associated facet name.\n   *\n   * When querying algolia, the values stored in this attribute will\n   * be translated into the `facetFilters` attribute.\n   * @member {Object.<string, SearchParameters.FacetList>}\n   */\n  this.facetsRefinements = params.facetsRefinements || {};\n  /**\n   * This attribute contains all the filters that need to be\n   * excluded from the conjunctive facets. Each facet must be properly\n   * defined in the `facets` attribute.\n   *\n   * The key is the name of the facet, and the `FacetList` contains all\n   * filters excluded for the associated facet name.\n   *\n   * When querying algolia, the values stored in this attribute will\n   * be translated into the `facetFilters` attribute.\n   * @member {Object.<string, SearchParameters.FacetList>}\n   */\n  this.facetsExcludes = params.facetsExcludes || {};\n  /**\n   * This attribute contains all the filters that need to be\n   * applied on the disjunctive facets. Each facet must be properly\n   * defined in the `disjunctiveFacets` attribute.\n   *\n   * The key is the name of the facet, and the `FacetList` contains all\n   * filters selected for the associated facet name.\n   *\n   * When querying algolia, the values stored in this attribute will\n   * be translated into the `facetFilters` attribute.\n   * @member {Object.<string, SearchParameters.FacetList>}\n   */\n  this.disjunctiveFacetsRefinements = params.disjunctiveFacetsRefinements || {};\n  /**\n   * This attribute contains all the filters that need to be\n   * applied on the numeric attributes.\n   *\n   * The key is the name of the attribute, and the value is the\n   * filters to apply to this attribute.\n   *\n   * When querying algolia, the values stored in this attribute will\n   * be translated into the `numericFilters` attribute.\n   * @member {Object.<string, SearchParameters.OperatorList>}\n   */\n  this.numericRefinements = params.numericRefinements || {};\n  /**\n   * This attribute contains all the tags used to refine the query.\n   *\n   * When querying algolia, the values stored in this attribute will\n   * be translated into the `tagFilters` attribute.\n   * @member {string[]}\n   */\n  this.tagRefinements = params.tagRefinements || [];\n  /**\n   * This attribute contains all the filters that need to be\n   * applied on the hierarchical facets. Each facet must be properly\n   * defined in the `hierarchicalFacets` attribute.\n   *\n   * The key is the name of the facet, and the `FacetList` contains all\n   * filters selected for the associated facet name. The FacetList values\n   * are structured as a string that contain the values for each level\n   * separated by the configured separator.\n   *\n   * When querying algolia, the values stored in this attribute will\n   * be translated into the `facetFilters` attribute.\n   * @member {Object.<string, SearchParameters.FacetList>}\n   */\n  this.hierarchicalFacetsRefinements = params.hierarchicalFacetsRefinements || {};\n\n  var self = this;\n  Object.keys(params).forEach(function(paramName) {\n    var isKeyKnown = SearchParameters.PARAMETERS.indexOf(paramName) !== -1;\n    var isValueDefined = params[paramName] !== undefined;\n\n    if (!isKeyKnown && isValueDefined) {\n      self[paramName] = params[paramName];\n    }\n  });\n}\n\n/**\n * List all the properties in SearchParameters and therefore all the known Algolia properties\n * This doesn't contain any beta/hidden features.\n * @private\n */\nSearchParameters.PARAMETERS = Object.keys(new SearchParameters());\n\n/**\n * @private\n * @param {object} partialState full or part of a state\n * @return {object} a new object with the number keys as number\n */\nSearchParameters._parseNumbers = function(partialState) {\n  // Do not reparse numbers in SearchParameters, they ought to be parsed already\n  if (partialState instanceof SearchParameters) return partialState;\n\n  var numbers = {};\n\n  var numberKeys = [\n    'aroundPrecision',\n    'aroundRadius',\n    'getRankingInfo',\n    'minWordSizefor2Typos',\n    'minWordSizefor1Typo',\n    'page',\n    'maxValuesPerFacet',\n    'distinct',\n    'minimumAroundRadius',\n    'hitsPerPage',\n    'minProximity'\n  ];\n\n  numberKeys.forEach(function(k) {\n    var value = partialState[k];\n    if (typeof value === 'string') {\n      var parsedValue = parseFloat(value);\n      // global isNaN is ok to use here, value is only number or NaN\n      numbers[k] = isNaN(parsedValue) ? value : parsedValue;\n    }\n  });\n\n  // there's two formats of insideBoundingBox, we need to parse\n  // the one which is an array of float geo rectangles\n  if (Array.isArray(partialState.insideBoundingBox)) {\n    numbers.insideBoundingBox = partialState.insideBoundingBox.map(function(geoRect) {\n      if (Array.isArray(geoRect)) {\n        return geoRect.map(function(value) {\n          return parseFloat(value);\n        });\n      }\n      return geoRect;\n    });\n  }\n\n  if (partialState.numericRefinements) {\n    var numericRefinements = {};\n    Object.keys(partialState.numericRefinements).forEach(function(attribute) {\n      var operators = partialState.numericRefinements[attribute] || {};\n      numericRefinements[attribute] = {};\n      Object.keys(operators).forEach(function(operator) {\n        var values = operators[operator];\n        var parsedValues = values.map(function(v) {\n          if (Array.isArray(v)) {\n            return v.map(function(vPrime) {\n              if (typeof vPrime === 'string') {\n                return parseFloat(vPrime);\n              }\n              return vPrime;\n            });\n          } else if (typeof v === 'string') {\n            return parseFloat(v);\n          }\n          return v;\n        });\n        numericRefinements[attribute][operator] = parsedValues;\n      });\n    });\n    numbers.numericRefinements = numericRefinements;\n  }\n\n  return merge({}, partialState, numbers);\n};\n\n/**\n * Factory for SearchParameters\n * @param {object|SearchParameters} newParameters existing parameters or partial\n * object for the properties of a new SearchParameters\n * @return {SearchParameters} frozen instance of SearchParameters\n */\nSearchParameters.make = function makeSearchParameters(newParameters) {\n  var instance = new SearchParameters(newParameters);\n\n  var hierarchicalFacets = newParameters.hierarchicalFacets || [];\n  hierarchicalFacets.forEach(function(facet) {\n    if (facet.rootPath) {\n      var currentRefinement = instance.getHierarchicalRefinement(facet.name);\n\n      if (currentRefinement.length > 0 && currentRefinement[0].indexOf(facet.rootPath) !== 0) {\n        instance = instance.clearRefinements(facet.name);\n      }\n\n      // get it again in case it has been cleared\n      currentRefinement = instance.getHierarchicalRefinement(facet.name);\n      if (currentRefinement.length === 0) {\n        instance = instance.toggleHierarchicalFacetRefinement(facet.name, facet.rootPath);\n      }\n    }\n  });\n\n  return instance;\n};\n\n/**\n * Validates the new parameters based on the previous state\n * @param {SearchParameters} currentState the current state\n * @param {object|SearchParameters} parameters the new parameters to set\n * @return {Error|null} Error if the modification is invalid, null otherwise\n */\nSearchParameters.validate = function(currentState, parameters) {\n  var params = parameters || {};\n\n  if (currentState.tagFilters && params.tagRefinements && params.tagRefinements.length > 0) {\n    return new Error(\n      '[Tags] Cannot switch from the managed tag API to the advanced API. It is probably ' +\n      'an error, if it is really what you want, you should first clear the tags with clearTags method.');\n  }\n\n  if (currentState.tagRefinements.length > 0 && params.tagFilters) {\n    return new Error(\n      '[Tags] Cannot switch from the advanced tag API to the managed API. It is probably ' +\n      'an error, if it is not, you should first clear the tags with clearTags method.');\n  }\n\n  if (\n    currentState.numericFilters &&\n    params.numericRefinements &&\n    objectHasKeys(params.numericRefinements)\n  ) {\n    return new Error(\n      \"[Numeric filters] Can't switch from the advanced to the managed API. It\" +\n        ' is probably an error, if this is really what you want, you have to first' +\n        ' clear the numeric filters.'\n    );\n  }\n\n  if (objectHasKeys(currentState.numericRefinements) && params.numericFilters) {\n    return new Error(\n      \"[Numeric filters] Can't switch from the managed API to the advanced. It\" +\n      ' is probably an error, if this is really what you want, you have to first' +\n      ' clear the numeric filters.');\n  }\n\n  return null;\n};\n\nSearchParameters.prototype = {\n  constructor: SearchParameters,\n\n  /**\n   * Remove all refinements (disjunctive + conjunctive + excludes + numeric filters)\n   * @method\n   * @param {undefined|string|SearchParameters.clearCallback} [attribute] optional string or function\n   * - If not given, means to clear all the filters.\n   * - If `string`, means to clear all refinements for the `attribute` named filter.\n   * - If `function`, means to clear all the refinements that return truthy values.\n   * @return {SearchParameters}\n   */\n  clearRefinements: function clearRefinements(attribute) {\n    var patch = {\n      numericRefinements: this._clearNumericRefinements(attribute),\n      facetsRefinements: RefinementList.clearRefinement(\n        this.facetsRefinements,\n        attribute,\n        'conjunctiveFacet'\n      ),\n      facetsExcludes: RefinementList.clearRefinement(\n        this.facetsExcludes,\n        attribute,\n        'exclude'\n      ),\n      disjunctiveFacetsRefinements: RefinementList.clearRefinement(\n        this.disjunctiveFacetsRefinements,\n        attribute,\n        'disjunctiveFacet'\n      ),\n      hierarchicalFacetsRefinements: RefinementList.clearRefinement(\n        this.hierarchicalFacetsRefinements,\n        attribute,\n        'hierarchicalFacet'\n      )\n    };\n    if (\n      patch.numericRefinements === this.numericRefinements &&\n      patch.facetsRefinements === this.facetsRefinements &&\n      patch.facetsExcludes === this.facetsExcludes &&\n      patch.disjunctiveFacetsRefinements === this.disjunctiveFacetsRefinements &&\n      patch.hierarchicalFacetsRefinements === this.hierarchicalFacetsRefinements\n    ) {\n      return this;\n    }\n    return this.setQueryParameters(patch);\n  },\n  /**\n   * Remove all the refined tags from the SearchParameters\n   * @method\n   * @return {SearchParameters}\n   */\n  clearTags: function clearTags() {\n    if (this.tagFilters === undefined && this.tagRefinements.length === 0) return this;\n\n    return this.setQueryParameters({\n      tagFilters: undefined,\n      tagRefinements: []\n    });\n  },\n  /**\n   * Set the index.\n   * @method\n   * @param {string} index the index name\n   * @return {SearchParameters}\n   */\n  setIndex: function setIndex(index) {\n    if (index === this.index) return this;\n\n    return this.setQueryParameters({\n      index: index\n    });\n  },\n  /**\n   * Query setter\n   * @method\n   * @param {string} newQuery value for the new query\n   * @return {SearchParameters}\n   */\n  setQuery: function setQuery(newQuery) {\n    if (newQuery === this.query) return this;\n\n    return this.setQueryParameters({\n      query: newQuery\n    });\n  },\n  /**\n   * Page setter\n   * @method\n   * @param {number} newPage new page number\n   * @return {SearchParameters}\n   */\n  setPage: function setPage(newPage) {\n    if (newPage === this.page) return this;\n\n    return this.setQueryParameters({\n      page: newPage\n    });\n  },\n  /**\n   * Facets setter\n   * The facets are the simple facets, used for conjunctive (and) faceting.\n   * @method\n   * @param {string[]} facets all the attributes of the algolia records used for conjunctive faceting\n   * @return {SearchParameters}\n   */\n  setFacets: function setFacets(facets) {\n    return this.setQueryParameters({\n      facets: facets\n    });\n  },\n  /**\n   * Disjunctive facets setter\n   * Change the list of disjunctive (or) facets the helper chan handle.\n   * @method\n   * @param {string[]} facets all the attributes of the algolia records used for disjunctive faceting\n   * @return {SearchParameters}\n   */\n  setDisjunctiveFacets: function setDisjunctiveFacets(facets) {\n    return this.setQueryParameters({\n      disjunctiveFacets: facets\n    });\n  },\n  /**\n   * HitsPerPage setter\n   * Hits per page represents the number of hits retrieved for this query\n   * @method\n   * @param {number} n number of hits retrieved per page of results\n   * @return {SearchParameters}\n   */\n  setHitsPerPage: function setHitsPerPage(n) {\n    if (this.hitsPerPage === n) return this;\n\n    return this.setQueryParameters({\n      hitsPerPage: n\n    });\n  },\n  /**\n   * typoTolerance setter\n   * Set the value of typoTolerance\n   * @method\n   * @param {string} typoTolerance new value of typoTolerance (\"true\", \"false\", \"min\" or \"strict\")\n   * @return {SearchParameters}\n   */\n  setTypoTolerance: function setTypoTolerance(typoTolerance) {\n    if (this.typoTolerance === typoTolerance) return this;\n\n    return this.setQueryParameters({\n      typoTolerance: typoTolerance\n    });\n  },\n  /**\n   * Add a numeric filter for a given attribute\n   * When value is an array, they are combined with OR\n   * When value is a single value, it will combined with AND\n   * @method\n   * @param {string} attribute attribute to set the filter on\n   * @param {string} operator operator of the filter (possible values: =, >, >=, <, <=, !=)\n   * @param {number | number[]} value value of the filter\n   * @return {SearchParameters}\n   * @example\n   * // for price = 50 or 40\n   * searchparameter.addNumericRefinement('price', '=', [50, 40]);\n   * @example\n   * // for size = 38 and 40\n   * searchparameter.addNumericRefinement('size', '=', 38);\n   * searchparameter.addNumericRefinement('size', '=', 40);\n   */\n  addNumericRefinement: function(attribute, operator, v) {\n    var value = valToNumber(v);\n\n    if (this.isNumericRefined(attribute, operator, value)) return this;\n\n    var mod = merge({}, this.numericRefinements);\n\n    mod[attribute] = merge({}, mod[attribute]);\n\n    if (mod[attribute][operator]) {\n      // Array copy\n      mod[attribute][operator] = mod[attribute][operator].slice();\n      // Add the element. Concat can't be used here because value can be an array.\n      mod[attribute][operator].push(value);\n    } else {\n      mod[attribute][operator] = [value];\n    }\n\n    return this.setQueryParameters({\n      numericRefinements: mod\n    });\n  },\n  /**\n   * Get the list of conjunctive refinements for a single facet\n   * @param {string} facetName name of the attribute used for faceting\n   * @return {string[]} list of refinements\n   */\n  getConjunctiveRefinements: function(facetName) {\n    if (!this.isConjunctiveFacet(facetName)) {\n      return [];\n    }\n    return this.facetsRefinements[facetName] || [];\n  },\n  /**\n   * Get the list of disjunctive refinements for a single facet\n   * @param {string} facetName name of the attribute used for faceting\n   * @return {string[]} list of refinements\n   */\n  getDisjunctiveRefinements: function(facetName) {\n    if (!this.isDisjunctiveFacet(facetName)) {\n      return [];\n    }\n    return this.disjunctiveFacetsRefinements[facetName] || [];\n  },\n  /**\n   * Get the list of hierarchical refinements for a single facet\n   * @param {string} facetName name of the attribute used for faceting\n   * @return {string[]} list of refinements\n   */\n  getHierarchicalRefinement: function(facetName) {\n    // we send an array but we currently do not support multiple\n    // hierarchicalRefinements for a hierarchicalFacet\n    return this.hierarchicalFacetsRefinements[facetName] || [];\n  },\n  /**\n   * Get the list of exclude refinements for a single facet\n   * @param {string} facetName name of the attribute used for faceting\n   * @return {string[]} list of refinements\n   */\n  getExcludeRefinements: function(facetName) {\n    if (!this.isConjunctiveFacet(facetName)) {\n      return [];\n    }\n    return this.facetsExcludes[facetName] || [];\n  },\n\n  /**\n   * Remove all the numeric filter for a given (attribute, operator)\n   * @method\n   * @param {string} attribute attribute to set the filter on\n   * @param {string} [operator] operator of the filter (possible values: =, >, >=, <, <=, !=)\n   * @param {number} [number] the value to be removed\n   * @return {SearchParameters}\n   */\n  removeNumericRefinement: function(attribute, operator, paramValue) {\n    if (paramValue !== undefined) {\n      if (!this.isNumericRefined(attribute, operator, paramValue)) {\n        return this;\n      }\n      return this.setQueryParameters({\n        numericRefinements: this._clearNumericRefinements(function(value, key) {\n          return (\n            key === attribute &&\n            value.op === operator &&\n            isEqualNumericRefinement(value.val, valToNumber(paramValue))\n          );\n        })\n      });\n    } else if (operator !== undefined) {\n      if (!this.isNumericRefined(attribute, operator)) return this;\n      return this.setQueryParameters({\n        numericRefinements: this._clearNumericRefinements(function(value, key) {\n          return key === attribute && value.op === operator;\n        })\n      });\n    }\n\n    if (!this.isNumericRefined(attribute)) return this;\n    return this.setQueryParameters({\n      numericRefinements: this._clearNumericRefinements(function(value, key) {\n        return key === attribute;\n      })\n    });\n  },\n  /**\n   * Get the list of numeric refinements for a single facet\n   * @param {string} facetName name of the attribute used for faceting\n   * @return {SearchParameters.OperatorList} list of refinements\n   */\n  getNumericRefinements: function(facetName) {\n    return this.numericRefinements[facetName] || {};\n  },\n  /**\n   * Return the current refinement for the (attribute, operator)\n   * @param {string} attribute attribute in the record\n   * @param {string} operator operator applied on the refined values\n   * @return {Array.<number|number[]>} refined values\n   */\n  getNumericRefinement: function(attribute, operator) {\n    return this.numericRefinements[attribute] && this.numericRefinements[attribute][operator];\n  },\n  /**\n   * Clear numeric filters.\n   * @method\n   * @private\n   * @param {string|SearchParameters.clearCallback} [attribute] optional string or function\n   * - If not given, means to clear all the filters.\n   * - If `string`, means to clear all refinements for the `attribute` named filter.\n   * - If `function`, means to clear all the refinements that return truthy values.\n   * @return {Object.<string, OperatorList>}\n   */\n  _clearNumericRefinements: function _clearNumericRefinements(attribute) {\n    if (attribute === undefined) {\n      if (!objectHasKeys(this.numericRefinements)) {\n        return this.numericRefinements;\n      }\n      return {};\n    } else if (typeof attribute === 'string') {\n      return omit(this.numericRefinements, [attribute]);\n    } else if (typeof attribute === 'function') {\n      var hasChanged = false;\n      var numericRefinements = this.numericRefinements;\n      var newNumericRefinements = Object.keys(numericRefinements).reduce(function(memo, key) {\n        var operators = numericRefinements[key];\n        var operatorList = {};\n\n        operators = operators || {};\n        Object.keys(operators).forEach(function(operator) {\n          var values = operators[operator] || [];\n          var outValues = [];\n          values.forEach(function(value) {\n            var predicateResult = attribute({val: value, op: operator}, key, 'numeric');\n            if (!predicateResult) outValues.push(value);\n          });\n          if (outValues.length !== values.length) {\n            hasChanged = true;\n          }\n          operatorList[operator] = outValues;\n        });\n\n        memo[key] = operatorList;\n\n        return memo;\n      }, {});\n\n      if (hasChanged) return newNumericRefinements;\n      return this.numericRefinements;\n    }\n  },\n  /**\n   * Add a facet to the facets attribute of the helper configuration, if it\n   * isn't already present.\n   * @method\n   * @param {string} facet facet name to add\n   * @return {SearchParameters}\n   */\n  addFacet: function addFacet(facet) {\n    if (this.isConjunctiveFacet(facet)) {\n      return this;\n    }\n\n    return this.setQueryParameters({\n      facets: this.facets.concat([facet])\n    });\n  },\n  /**\n   * Add a disjunctive facet to the disjunctiveFacets attribute of the helper\n   * configuration, if it isn't already present.\n   * @method\n   * @param {string} facet disjunctive facet name to add\n   * @return {SearchParameters}\n   */\n  addDisjunctiveFacet: function addDisjunctiveFacet(facet) {\n    if (this.isDisjunctiveFacet(facet)) {\n      return this;\n    }\n\n    return this.setQueryParameters({\n      disjunctiveFacets: this.disjunctiveFacets.concat([facet])\n    });\n  },\n  /**\n   * Add a hierarchical facet to the hierarchicalFacets attribute of the helper\n   * configuration.\n   * @method\n   * @param {object} hierarchicalFacet hierarchical facet to add\n   * @return {SearchParameters}\n   * @throws will throw an error if a hierarchical facet with the same name was already declared\n   */\n  addHierarchicalFacet: function addHierarchicalFacet(hierarchicalFacet) {\n    if (this.isHierarchicalFacet(hierarchicalFacet.name)) {\n      throw new Error(\n        'Cannot declare two hierarchical facets with the same name: `' + hierarchicalFacet.name + '`');\n    }\n\n    return this.setQueryParameters({\n      hierarchicalFacets: this.hierarchicalFacets.concat([hierarchicalFacet])\n    });\n  },\n  /**\n   * Add a refinement on a \"normal\" facet\n   * @method\n   * @param {string} facet attribute to apply the faceting on\n   * @param {string} value value of the attribute (will be converted to string)\n   * @return {SearchParameters}\n   */\n  addFacetRefinement: function addFacetRefinement(facet, value) {\n    if (!this.isConjunctiveFacet(facet)) {\n      throw new Error(facet + ' is not defined in the facets attribute of the helper configuration');\n    }\n    if (RefinementList.isRefined(this.facetsRefinements, facet, value)) return this;\n\n    return this.setQueryParameters({\n      facetsRefinements: RefinementList.addRefinement(this.facetsRefinements, facet, value)\n    });\n  },\n  /**\n   * Exclude a value from a \"normal\" facet\n   * @method\n   * @param {string} facet attribute to apply the exclusion on\n   * @param {string} value value of the attribute (will be converted to string)\n   * @return {SearchParameters}\n   */\n  addExcludeRefinement: function addExcludeRefinement(facet, value) {\n    if (!this.isConjunctiveFacet(facet)) {\n      throw new Error(facet + ' is not defined in the facets attribute of the helper configuration');\n    }\n    if (RefinementList.isRefined(this.facetsExcludes, facet, value)) return this;\n\n    return this.setQueryParameters({\n      facetsExcludes: RefinementList.addRefinement(this.facetsExcludes, facet, value)\n    });\n  },\n  /**\n   * Adds a refinement on a disjunctive facet.\n   * @method\n   * @param {string} facet attribute to apply the faceting on\n   * @param {string} value value of the attribute (will be converted to string)\n   * @return {SearchParameters}\n   */\n  addDisjunctiveFacetRefinement: function addDisjunctiveFacetRefinement(facet, value) {\n    if (!this.isDisjunctiveFacet(facet)) {\n      throw new Error(\n        facet + ' is not defined in the disjunctiveFacets attribute of the helper configuration');\n    }\n\n    if (RefinementList.isRefined(this.disjunctiveFacetsRefinements, facet, value)) return this;\n\n    return this.setQueryParameters({\n      disjunctiveFacetsRefinements: RefinementList.addRefinement(\n        this.disjunctiveFacetsRefinements, facet, value)\n    });\n  },\n  /**\n   * addTagRefinement adds a tag to the list used to filter the results\n   * @param {string} tag tag to be added\n   * @return {SearchParameters}\n   */\n  addTagRefinement: function addTagRefinement(tag) {\n    if (this.isTagRefined(tag)) return this;\n\n    var modification = {\n      tagRefinements: this.tagRefinements.concat(tag)\n    };\n\n    return this.setQueryParameters(modification);\n  },\n  /**\n   * Remove a facet from the facets attribute of the helper configuration, if it\n   * is present.\n   * @method\n   * @param {string} facet facet name to remove\n   * @return {SearchParameters}\n   */\n  removeFacet: function removeFacet(facet) {\n    if (!this.isConjunctiveFacet(facet)) {\n      return this;\n    }\n\n    return this.clearRefinements(facet).setQueryParameters({\n      facets: this.facets.filter(function(f) {\n        return f !== facet;\n      })\n    });\n  },\n  /**\n   * Remove a disjunctive facet from the disjunctiveFacets attribute of the\n   * helper configuration, if it is present.\n   * @method\n   * @param {string} facet disjunctive facet name to remove\n   * @return {SearchParameters}\n   */\n  removeDisjunctiveFacet: function removeDisjunctiveFacet(facet) {\n    if (!this.isDisjunctiveFacet(facet)) {\n      return this;\n    }\n\n    return this.clearRefinements(facet).setQueryParameters({\n      disjunctiveFacets: this.disjunctiveFacets.filter(function(f) {\n        return f !== facet;\n      })\n    });\n  },\n  /**\n   * Remove a hierarchical facet from the hierarchicalFacets attribute of the\n   * helper configuration, if it is present.\n   * @method\n   * @param {string} facet hierarchical facet name to remove\n   * @return {SearchParameters}\n   */\n  removeHierarchicalFacet: function removeHierarchicalFacet(facet) {\n    if (!this.isHierarchicalFacet(facet)) {\n      return this;\n    }\n\n    return this.clearRefinements(facet).setQueryParameters({\n      hierarchicalFacets: this.hierarchicalFacets.filter(function(f) {\n        return f.name !== facet;\n      })\n    });\n  },\n  /**\n   * Remove a refinement set on facet. If a value is provided, it will clear the\n   * refinement for the given value, otherwise it will clear all the refinement\n   * values for the faceted attribute.\n   * @method\n   * @param {string} facet name of the attribute used for faceting\n   * @param {string} [value] value used to filter\n   * @return {SearchParameters}\n   */\n  removeFacetRefinement: function removeFacetRefinement(facet, value) {\n    if (!this.isConjunctiveFacet(facet)) {\n      throw new Error(facet + ' is not defined in the facets attribute of the helper configuration');\n    }\n    if (!RefinementList.isRefined(this.facetsRefinements, facet, value)) return this;\n\n    return this.setQueryParameters({\n      facetsRefinements: RefinementList.removeRefinement(this.facetsRefinements, facet, value)\n    });\n  },\n  /**\n   * Remove a negative refinement on a facet\n   * @method\n   * @param {string} facet name of the attribute used for faceting\n   * @param {string} value value used to filter\n   * @return {SearchParameters}\n   */\n  removeExcludeRefinement: function removeExcludeRefinement(facet, value) {\n    if (!this.isConjunctiveFacet(facet)) {\n      throw new Error(facet + ' is not defined in the facets attribute of the helper configuration');\n    }\n    if (!RefinementList.isRefined(this.facetsExcludes, facet, value)) return this;\n\n    return this.setQueryParameters({\n      facetsExcludes: RefinementList.removeRefinement(this.facetsExcludes, facet, value)\n    });\n  },\n  /**\n   * Remove a refinement on a disjunctive facet\n   * @method\n   * @param {string} facet name of the attribute used for faceting\n   * @param {string} value value used to filter\n   * @return {SearchParameters}\n   */\n  removeDisjunctiveFacetRefinement: function removeDisjunctiveFacetRefinement(facet, value) {\n    if (!this.isDisjunctiveFacet(facet)) {\n      throw new Error(\n        facet + ' is not defined in the disjunctiveFacets attribute of the helper configuration');\n    }\n    if (!RefinementList.isRefined(this.disjunctiveFacetsRefinements, facet, value)) return this;\n\n    return this.setQueryParameters({\n      disjunctiveFacetsRefinements: RefinementList.removeRefinement(\n        this.disjunctiveFacetsRefinements, facet, value)\n    });\n  },\n  /**\n   * Remove a tag from the list of tag refinements\n   * @method\n   * @param {string} tag the tag to remove\n   * @return {SearchParameters}\n   */\n  removeTagRefinement: function removeTagRefinement(tag) {\n    if (!this.isTagRefined(tag)) return this;\n\n    var modification = {\n      tagRefinements: this.tagRefinements.filter(function(t) {\n        return t !== tag;\n      })\n    };\n\n    return this.setQueryParameters(modification);\n  },\n  /**\n   * Generic toggle refinement method to use with facet, disjunctive facets\n   * and hierarchical facets\n   * @param  {string} facet the facet to refine\n   * @param  {string} value the associated value\n   * @return {SearchParameters}\n   * @throws will throw an error if the facet is not declared in the settings of the helper\n   * @deprecated since version 2.19.0, see {@link SearchParameters#toggleFacetRefinement}\n   */\n  toggleRefinement: function toggleRefinement(facet, value) {\n    return this.toggleFacetRefinement(facet, value);\n  },\n  /**\n   * Generic toggle refinement method to use with facet, disjunctive facets\n   * and hierarchical facets\n   * @param  {string} facet the facet to refine\n   * @param  {string} value the associated value\n   * @return {SearchParameters}\n   * @throws will throw an error if the facet is not declared in the settings of the helper\n   */\n  toggleFacetRefinement: function toggleFacetRefinement(facet, value) {\n    if (this.isHierarchicalFacet(facet)) {\n      return this.toggleHierarchicalFacetRefinement(facet, value);\n    } else if (this.isConjunctiveFacet(facet)) {\n      return this.toggleConjunctiveFacetRefinement(facet, value);\n    } else if (this.isDisjunctiveFacet(facet)) {\n      return this.toggleDisjunctiveFacetRefinement(facet, value);\n    }\n\n    throw new Error('Cannot refine the undeclared facet ' + facet +\n      '; it should be added to the helper options facets, disjunctiveFacets or hierarchicalFacets');\n  },\n  /**\n   * Switch the refinement applied over a facet/value\n   * @method\n   * @param {string} facet name of the attribute used for faceting\n   * @param {value} value value used for filtering\n   * @return {SearchParameters}\n   */\n  toggleConjunctiveFacetRefinement: function toggleConjunctiveFacetRefinement(facet, value) {\n    if (!this.isConjunctiveFacet(facet)) {\n      throw new Error(facet + ' is not defined in the facets attribute of the helper configuration');\n    }\n\n    return this.setQueryParameters({\n      facetsRefinements: RefinementList.toggleRefinement(this.facetsRefinements, facet, value)\n    });\n  },\n  /**\n   * Switch the refinement applied over a facet/value\n   * @method\n   * @param {string} facet name of the attribute used for faceting\n   * @param {value} value value used for filtering\n   * @return {SearchParameters}\n   */\n  toggleExcludeFacetRefinement: function toggleExcludeFacetRefinement(facet, value) {\n    if (!this.isConjunctiveFacet(facet)) {\n      throw new Error(facet + ' is not defined in the facets attribute of the helper configuration');\n    }\n\n    return this.setQueryParameters({\n      facetsExcludes: RefinementList.toggleRefinement(this.facetsExcludes, facet, value)\n    });\n  },\n  /**\n   * Switch the refinement applied over a facet/value\n   * @method\n   * @param {string} facet name of the attribute used for faceting\n   * @param {value} value value used for filtering\n   * @return {SearchParameters}\n   */\n  toggleDisjunctiveFacetRefinement: function toggleDisjunctiveFacetRefinement(facet, value) {\n    if (!this.isDisjunctiveFacet(facet)) {\n      throw new Error(\n        facet + ' is not defined in the disjunctiveFacets attribute of the helper configuration');\n    }\n\n    return this.setQueryParameters({\n      disjunctiveFacetsRefinements: RefinementList.toggleRefinement(\n        this.disjunctiveFacetsRefinements, facet, value)\n    });\n  },\n  /**\n   * Switch the refinement applied over a facet/value\n   * @method\n   * @param {string} facet name of the attribute used for faceting\n   * @param {value} value value used for filtering\n   * @return {SearchParameters}\n   */\n  toggleHierarchicalFacetRefinement: function toggleHierarchicalFacetRefinement(facet, value) {\n    if (!this.isHierarchicalFacet(facet)) {\n      throw new Error(\n        facet + ' is not defined in the hierarchicalFacets attribute of the helper configuration');\n    }\n\n    var separator = this._getHierarchicalFacetSeparator(this.getHierarchicalFacetByName(facet));\n\n    var mod = {};\n\n    var upOneOrMultipleLevel = this.hierarchicalFacetsRefinements[facet] !== undefined &&\n      this.hierarchicalFacetsRefinements[facet].length > 0 && (\n      // remove current refinement:\n      // refinement was 'beer > IPA', call is toggleRefine('beer > IPA'), refinement should be `beer`\n      this.hierarchicalFacetsRefinements[facet][0] === value ||\n      // remove a parent refinement of the current refinement:\n      //  - refinement was 'beer > IPA > Flying dog'\n      //  - call is toggleRefine('beer > IPA')\n      //  - refinement should be `beer`\n      this.hierarchicalFacetsRefinements[facet][0].indexOf(value + separator) === 0\n    );\n\n    if (upOneOrMultipleLevel) {\n      if (value.indexOf(separator) === -1) {\n        // go back to root level\n        mod[facet] = [];\n      } else {\n        mod[facet] = [value.slice(0, value.lastIndexOf(separator))];\n      }\n    } else {\n      mod[facet] = [value];\n    }\n\n    return this.setQueryParameters({\n      hierarchicalFacetsRefinements: defaultsPure({}, mod, this.hierarchicalFacetsRefinements)\n    });\n  },\n\n  /**\n   * Adds a refinement on a hierarchical facet.\n   * @param {string} facet the facet name\n   * @param {string} path the hierarchical facet path\n   * @return {SearchParameter} the new state\n   * @throws Error if the facet is not defined or if the facet is refined\n   */\n  addHierarchicalFacetRefinement: function(facet, path) {\n    if (this.isHierarchicalFacetRefined(facet)) {\n      throw new Error(facet + ' is already refined.');\n    }\n    if (!this.isHierarchicalFacet(facet)) {\n      throw new Error(facet + ' is not defined in the hierarchicalFacets attribute of the helper configuration.');\n    }\n    var mod = {};\n    mod[facet] = [path];\n    return this.setQueryParameters({\n      hierarchicalFacetsRefinements: defaultsPure({}, mod, this.hierarchicalFacetsRefinements)\n    });\n  },\n\n  /**\n   * Removes the refinement set on a hierarchical facet.\n   * @param {string} facet the facet name\n   * @return {SearchParameter} the new state\n   * @throws Error if the facet is not defined or if the facet is not refined\n   */\n  removeHierarchicalFacetRefinement: function(facet) {\n    if (!this.isHierarchicalFacetRefined(facet)) {\n      return this;\n    }\n    var mod = {};\n    mod[facet] = [];\n    return this.setQueryParameters({\n      hierarchicalFacetsRefinements: defaultsPure({}, mod, this.hierarchicalFacetsRefinements)\n    });\n  },\n  /**\n   * Switch the tag refinement\n   * @method\n   * @param {string} tag the tag to remove or add\n   * @return {SearchParameters}\n   */\n  toggleTagRefinement: function toggleTagRefinement(tag) {\n    if (this.isTagRefined(tag)) {\n      return this.removeTagRefinement(tag);\n    }\n\n    return this.addTagRefinement(tag);\n  },\n  /**\n   * Test if the facet name is from one of the disjunctive facets\n   * @method\n   * @param {string} facet facet name to test\n   * @return {boolean}\n   */\n  isDisjunctiveFacet: function(facet) {\n    return this.disjunctiveFacets.indexOf(facet) > -1;\n  },\n  /**\n   * Test if the facet name is from one of the hierarchical facets\n   * @method\n   * @param {string} facetName facet name to test\n   * @return {boolean}\n   */\n  isHierarchicalFacet: function(facetName) {\n    return this.getHierarchicalFacetByName(facetName) !== undefined;\n  },\n  /**\n   * Test if the facet name is from one of the conjunctive/normal facets\n   * @method\n   * @param {string} facet facet name to test\n   * @return {boolean}\n   */\n  isConjunctiveFacet: function(facet) {\n    return this.facets.indexOf(facet) > -1;\n  },\n  /**\n   * Returns true if the facet is refined, either for a specific value or in\n   * general.\n   * @method\n   * @param {string} facet name of the attribute for used for faceting\n   * @param {string} value, optional value. If passed will test that this value\n   * is filtering the given facet.\n   * @return {boolean} returns true if refined\n   */\n  isFacetRefined: function isFacetRefined(facet, value) {\n    if (!this.isConjunctiveFacet(facet)) {\n      return false;\n    }\n    return RefinementList.isRefined(this.facetsRefinements, facet, value);\n  },\n  /**\n   * Returns true if the facet contains exclusions or if a specific value is\n   * excluded.\n   *\n   * @method\n   * @param {string} facet name of the attribute for used for faceting\n   * @param {string} [value] optional value. If passed will test that this value\n   * is filtering the given facet.\n   * @return {boolean} returns true if refined\n   */\n  isExcludeRefined: function isExcludeRefined(facet, value) {\n    if (!this.isConjunctiveFacet(facet)) {\n      return false;\n    }\n    return RefinementList.isRefined(this.facetsExcludes, facet, value);\n  },\n  /**\n   * Returns true if the facet contains a refinement, or if a value passed is a\n   * refinement for the facet.\n   * @method\n   * @param {string} facet name of the attribute for used for faceting\n   * @param {string} value optional, will test if the value is used for refinement\n   * if there is one, otherwise will test if the facet contains any refinement\n   * @return {boolean}\n   */\n  isDisjunctiveFacetRefined: function isDisjunctiveFacetRefined(facet, value) {\n    if (!this.isDisjunctiveFacet(facet)) {\n      return false;\n    }\n    return RefinementList.isRefined(this.disjunctiveFacetsRefinements, facet, value);\n  },\n  /**\n   * Returns true if the facet contains a refinement, or if a value passed is a\n   * refinement for the facet.\n   * @method\n   * @param {string} facet name of the attribute for used for faceting\n   * @param {string} value optional, will test if the value is used for refinement\n   * if there is one, otherwise will test if the facet contains any refinement\n   * @return {boolean}\n   */\n  isHierarchicalFacetRefined: function isHierarchicalFacetRefined(facet, value) {\n    if (!this.isHierarchicalFacet(facet)) {\n      return false;\n    }\n\n    var refinements = this.getHierarchicalRefinement(facet);\n\n    if (!value) {\n      return refinements.length > 0;\n    }\n\n    return refinements.indexOf(value) !== -1;\n  },\n  /**\n   * Test if the triple (attribute, operator, value) is already refined.\n   * If only the attribute and the operator are provided, it tests if the\n   * contains any refinement value.\n   * @method\n   * @param {string} attribute attribute for which the refinement is applied\n   * @param {string} [operator] operator of the refinement\n   * @param {string} [value] value of the refinement\n   * @return {boolean} true if it is refined\n   */\n  isNumericRefined: function isNumericRefined(attribute, operator, value) {\n    if (value === undefined && operator === undefined) {\n      return !!this.numericRefinements[attribute];\n    }\n\n    var isOperatorDefined =\n      this.numericRefinements[attribute] &&\n      this.numericRefinements[attribute][operator] !== undefined;\n\n    if (value === undefined || !isOperatorDefined) {\n      return isOperatorDefined;\n    }\n\n    var parsedValue = valToNumber(value);\n    var isAttributeValueDefined =\n      findArray(this.numericRefinements[attribute][operator], parsedValue) !==\n      undefined;\n\n    return isOperatorDefined && isAttributeValueDefined;\n  },\n  /**\n   * Returns true if the tag refined, false otherwise\n   * @method\n   * @param {string} tag the tag to check\n   * @return {boolean}\n   */\n  isTagRefined: function isTagRefined(tag) {\n    return this.tagRefinements.indexOf(tag) !== -1;\n  },\n  /**\n   * Returns the list of all disjunctive facets refined\n   * @method\n   * @param {string} facet name of the attribute used for faceting\n   * @param {value} value value used for filtering\n   * @return {string[]}\n   */\n  getRefinedDisjunctiveFacets: function getRefinedDisjunctiveFacets() {\n    var self = this;\n\n    // attributes used for numeric filter can also be disjunctive\n    var disjunctiveNumericRefinedFacets = intersection(\n      Object.keys(this.numericRefinements).filter(function(facet) {\n        return Object.keys(self.numericRefinements[facet]).length > 0;\n      }),\n      this.disjunctiveFacets\n    );\n\n    return Object.keys(this.disjunctiveFacetsRefinements).filter(function(facet) {\n      return self.disjunctiveFacetsRefinements[facet].length > 0;\n    })\n      .concat(disjunctiveNumericRefinedFacets)\n      .concat(this.getRefinedHierarchicalFacets());\n  },\n  /**\n   * Returns the list of all disjunctive facets refined\n   * @method\n   * @param {string} facet name of the attribute used for faceting\n   * @param {value} value value used for filtering\n   * @return {string[]}\n   */\n  getRefinedHierarchicalFacets: function getRefinedHierarchicalFacets() {\n    var self = this;\n    return intersection(\n      // enforce the order between the two arrays,\n      // so that refinement name index === hierarchical facet index\n      this.hierarchicalFacets.map(function(facet) { return facet.name; }),\n      Object.keys(this.hierarchicalFacetsRefinements).filter(function(facet) {\n        return self.hierarchicalFacetsRefinements[facet].length > 0;\n      })\n    );\n  },\n  /**\n   * Returned the list of all disjunctive facets not refined\n   * @method\n   * @return {string[]}\n   */\n  getUnrefinedDisjunctiveFacets: function() {\n    var refinedFacets = this.getRefinedDisjunctiveFacets();\n\n    return this.disjunctiveFacets.filter(function(f) {\n      return refinedFacets.indexOf(f) === -1;\n    });\n  },\n\n  managedParameters: [\n    'index',\n\n    'facets',\n    'disjunctiveFacets',\n    'facetsRefinements',\n    'hierarchicalFacets',\n    'facetsExcludes',\n\n    'disjunctiveFacetsRefinements',\n    'numericRefinements',\n    'tagRefinements',\n    'hierarchicalFacetsRefinements'\n  ],\n  getQueryParams: function getQueryParams() {\n    var managedParameters = this.managedParameters;\n\n    var queryParams = {};\n\n    var self = this;\n    Object.keys(this).forEach(function(paramName) {\n      var paramValue = self[paramName];\n      if (managedParameters.indexOf(paramName) === -1 && paramValue !== undefined) {\n        queryParams[paramName] = paramValue;\n      }\n    });\n\n    return queryParams;\n  },\n  /**\n   * Let the user set a specific value for a given parameter. Will return the\n   * same instance if the parameter is invalid or if the value is the same as the\n   * previous one.\n   * @method\n   * @param {string} parameter the parameter name\n   * @param {any} value the value to be set, must be compliant with the definition\n   * of the attribute on the object\n   * @return {SearchParameters} the updated state\n   */\n  setQueryParameter: function setParameter(parameter, value) {\n    if (this[parameter] === value) return this;\n\n    var modification = {};\n\n    modification[parameter] = value;\n\n    return this.setQueryParameters(modification);\n  },\n  /**\n   * Let the user set any of the parameters with a plain object.\n   * @method\n   * @param {object} params all the keys and the values to be updated\n   * @return {SearchParameters} a new updated instance\n   */\n  setQueryParameters: function setQueryParameters(params) {\n    if (!params) return this;\n\n    var error = SearchParameters.validate(this, params);\n\n    if (error) {\n      throw error;\n    }\n\n    var self = this;\n    var nextWithNumbers = SearchParameters._parseNumbers(params);\n    var previousPlainObject = Object.keys(this).reduce(function(acc, key) {\n      acc[key] = self[key];\n      return acc;\n    }, {});\n\n    var nextPlainObject = Object.keys(nextWithNumbers).reduce(\n      function(previous, key) {\n        var isPreviousValueDefined = previous[key] !== undefined;\n        var isNextValueDefined = nextWithNumbers[key] !== undefined;\n\n        if (isPreviousValueDefined && !isNextValueDefined) {\n          return omit(previous, [key]);\n        }\n\n        if (isNextValueDefined) {\n          previous[key] = nextWithNumbers[key];\n        }\n\n        return previous;\n      },\n      previousPlainObject\n    );\n\n    return new this.constructor(nextPlainObject);\n  },\n\n  /**\n   * Returns a new instance with the page reset. Two scenarios possible:\n   * the page is omitted -> return the given instance\n   * the page is set -> return a new instance with a page of 0\n   * @return {SearchParameters} a new updated instance\n   */\n  resetPage: function() {\n    if (this.page === undefined) {\n      return this;\n    }\n\n    return this.setPage(0);\n  },\n\n  /**\n   * Helper function to get the hierarchicalFacet separator or the default one (`>`)\n   * @param  {object} hierarchicalFacet\n   * @return {string} returns the hierarchicalFacet.separator or `>` as default\n   */\n  _getHierarchicalFacetSortBy: function(hierarchicalFacet) {\n    return hierarchicalFacet.sortBy || ['isRefined:desc', 'name:asc'];\n  },\n\n  /**\n   * Helper function to get the hierarchicalFacet separator or the default one (`>`)\n   * @private\n   * @param  {object} hierarchicalFacet\n   * @return {string} returns the hierarchicalFacet.separator or `>` as default\n   */\n  _getHierarchicalFacetSeparator: function(hierarchicalFacet) {\n    return hierarchicalFacet.separator || ' > ';\n  },\n\n  /**\n   * Helper function to get the hierarchicalFacet prefix path or null\n   * @private\n   * @param  {object} hierarchicalFacet\n   * @return {string} returns the hierarchicalFacet.rootPath or null as default\n   */\n  _getHierarchicalRootPath: function(hierarchicalFacet) {\n    return hierarchicalFacet.rootPath || null;\n  },\n\n  /**\n   * Helper function to check if we show the parent level of the hierarchicalFacet\n   * @private\n   * @param  {object} hierarchicalFacet\n   * @return {string} returns the hierarchicalFacet.showParentLevel or true as default\n   */\n  _getHierarchicalShowParentLevel: function(hierarchicalFacet) {\n    if (typeof hierarchicalFacet.showParentLevel === 'boolean') {\n      return hierarchicalFacet.showParentLevel;\n    }\n    return true;\n  },\n\n  /**\n   * Helper function to get the hierarchicalFacet by it's name\n   * @param  {string} hierarchicalFacetName\n   * @return {object} a hierarchicalFacet\n   */\n  getHierarchicalFacetByName: function(hierarchicalFacetName) {\n    return find(\n      this.hierarchicalFacets,\n      function(f) {\n        return f.name === hierarchicalFacetName;\n      }\n    );\n  },\n\n  /**\n   * Get the current breadcrumb for a hierarchical facet, as an array\n   * @param  {string} facetName Hierarchical facet name\n   * @return {array.<string>} the path as an array of string\n   */\n  getHierarchicalFacetBreadcrumb: function(facetName) {\n    if (!this.isHierarchicalFacet(facetName)) {\n      return [];\n    }\n\n    var refinement = this.getHierarchicalRefinement(facetName)[0];\n    if (!refinement) return [];\n\n    var separator = this._getHierarchicalFacetSeparator(\n      this.getHierarchicalFacetByName(facetName)\n    );\n    var path = refinement.split(separator);\n    return path.map(function(part) {\n      return part.trim();\n    });\n  },\n\n  toString: function() {\n    return JSON.stringify(this, null, 2);\n  }\n};\n\n/**\n * Callback used for clearRefinement method\n * @callback SearchParameters.clearCallback\n * @param {OperatorList|FacetList} value the value of the filter\n * @param {string} key the current attribute name\n * @param {string} type `numeric`, `disjunctiveFacet`, `conjunctiveFacet`, `hierarchicalFacet` or `exclude`\n * depending on the type of facet\n * @return {boolean} `true` if the element should be removed. `false` otherwise.\n */\nmodule.exports = SearchParameters;\n","'use strict';\n\nfunction clone(value) {\n  if (typeof value === 'object' && value !== null) {\n    return _merge(Array.isArray(value) ? [] : {}, value);\n  }\n  return value;\n}\n\nfunction isObjectOrArrayOrFunction(value) {\n  return (\n    typeof value === 'function' ||\n    Array.isArray(value) ||\n    Object.prototype.toString.call(value) === '[object Object]'\n  );\n}\n\nfunction _merge(target, source) {\n  if (target === source) {\n    return target;\n  }\n\n  for (var key in source) {\n    if (\n      !Object.prototype.hasOwnProperty.call(source, key) ||\n      key === '__proto__'\n    ) {\n      continue;\n    }\n\n    var sourceVal = source[key];\n    var targetVal = target[key];\n\n    if (typeof targetVal !== 'undefined' && typeof sourceVal === 'undefined') {\n      continue;\n    }\n\n    if (\n      isObjectOrArrayOrFunction(targetVal) &&\n      isObjectOrArrayOrFunction(sourceVal)\n    ) {\n      target[key] = _merge(targetVal, sourceVal);\n    } else {\n      target[key] = clone(sourceVal);\n    }\n  }\n  return target;\n}\n\n/**\n * This method is like Object.assign, but recursively merges own and inherited\n * enumerable keyed properties of source objects into the destination object.\n *\n * NOTE: this behaves like lodash/merge, but:\n * - does mutate functions if they are a source\n * - treats non-plain objects as plain\n * - does not work for circular objects\n * - treats sparse arrays as sparse\n * - does not convert Array-like objects (Arguments, NodeLists, etc.) to arrays\n *\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n */\n\nfunction merge(target) {\n  if (!isObjectOrArrayOrFunction(target)) {\n    target = {};\n  }\n\n  for (var i = 1, l = arguments.length; i < l; i++) {\n    var source = arguments[i];\n\n    if (isObjectOrArrayOrFunction(source)) {\n      _merge(target, source);\n    }\n  }\n  return target;\n}\n\nmodule.exports = merge;\n","'use strict';\n\n// NOTE: this behaves like lodash/defaults, but doesn't mutate the target\n// it also preserve keys order\nmodule.exports = function defaultsPure() {\n  var sources = Array.prototype.slice.call(arguments);\n\n  return sources.reduceRight(function(acc, source) {\n    Object.keys(Object(source)).forEach(function(key) {\n      if (source[key] === undefined) {\n        return;\n      }\n      if (acc[key] !== undefined) {\n        // remove if already added, so that we can add it in correct order\n        delete acc[key];\n      }\n      acc[key] = source[key];\n    });\n    return acc;\n  }, {});\n};\n","'use strict';\n\nfunction intersection(arr1, arr2) {\n  return arr1.filter(function(value, index) {\n    return (\n      arr2.indexOf(value) > -1 &&\n      arr1.indexOf(value) === index /* skips duplicates */\n    );\n  });\n}\n\nmodule.exports = intersection;\n","'use strict';\n\n// @MAJOR can be replaced by native Array#find when we change support\nmodule.exports = function find(array, comparator) {\n  if (!Array.isArray(array)) {\n    return undefined;\n  }\n\n  for (var i = 0; i < array.length; i++) {\n    if (comparator(array[i])) {\n      return array[i];\n    }\n  }\n};\n","'use strict';\n\nfunction valToNumber(v) {\n  if (typeof v === 'number') {\n    return v;\n  } else if (typeof v === 'string') {\n    return parseFloat(v);\n  } else if (Array.isArray(v)) {\n    return v.map(valToNumber);\n  }\n\n  throw new Error('The value should be a number, a parsable string or an array of those.');\n}\n\nmodule.exports = valToNumber;\n","'use strict';\n\n// https://github.com/babel/babel/blob/3aaafae053fa75febb3aa45d45b6f00646e30ba4/packages/babel-helpers/src/helpers.js#L604-L620\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n  if (source === null) return {};\n  var target = {};\n  var sourceKeys = Object.keys(source);\n  var key;\n  var 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}\n\nmodule.exports = _objectWithoutPropertiesLoose;\n","'use strict';\n\nfunction objectHasKeys(obj) {\n  return obj && Object.keys(obj).length > 0;\n}\n\nmodule.exports = objectHasKeys;\n","'use strict';\n\nmodule.exports = function isValidUserToken(userToken) {\n  if (userToken === null) {\n    return false;\n  }\n  return /^[a-zA-Z0-9_-]{1,64}$/.test(userToken);\n};\n","'use strict';\n\n/**\n * Functions to manipulate refinement lists\n *\n * The RefinementList is not formally defined through a prototype but is based\n * on a specific structure.\n *\n * @module SearchParameters.refinementList\n *\n * @typedef {string[]} SearchParameters.refinementList.Refinements\n * @typedef {Object.<string, SearchParameters.refinementList.Refinements>} SearchParameters.refinementList.RefinementList\n */\n\nvar defaultsPure = require('../functions/defaultsPure');\nvar omit = require('../functions/omit');\nvar objectHasKeys = require('../functions/objectHasKeys');\n\nvar lib = {\n  /**\n   * Adds a refinement to a RefinementList\n   * @param {RefinementList} refinementList the initial list\n   * @param {string} attribute the attribute to refine\n   * @param {string} value the value of the refinement, if the value is not a string it will be converted\n   * @return {RefinementList} a new and updated refinement list\n   */\n  addRefinement: function addRefinement(refinementList, attribute, value) {\n    if (lib.isRefined(refinementList, attribute, value)) {\n      return refinementList;\n    }\n\n    var valueAsString = '' + value;\n\n    var facetRefinement = !refinementList[attribute] ?\n      [valueAsString] :\n      refinementList[attribute].concat(valueAsString);\n\n    var mod = {};\n\n    mod[attribute] = facetRefinement;\n\n    return defaultsPure({}, mod, refinementList);\n  },\n  /**\n   * Removes refinement(s) for an attribute:\n   *  - if the value is specified removes the refinement for the value on the attribute\n   *  - if no value is specified removes all the refinements for this attribute\n   * @param {RefinementList} refinementList the initial list\n   * @param {string} attribute the attribute to refine\n   * @param {string} [value] the value of the refinement\n   * @return {RefinementList} a new and updated refinement lst\n   */\n  removeRefinement: function removeRefinement(refinementList, attribute, value) {\n    if (value === undefined) {\n      // we use the \"filter\" form of clearRefinement, since it leaves empty values as-is\n      // the form with a string will remove the attribute completely\n      return lib.clearRefinement(refinementList, function(v, f) {\n        return attribute === f;\n      });\n    }\n\n    var valueAsString = '' + value;\n\n    return lib.clearRefinement(refinementList, function(v, f) {\n      return attribute === f && valueAsString === v;\n    });\n  },\n  /**\n   * Toggles the refinement value for an attribute.\n   * @param {RefinementList} refinementList the initial list\n   * @param {string} attribute the attribute to refine\n   * @param {string} value the value of the refinement\n   * @return {RefinementList} a new and updated list\n   */\n  toggleRefinement: function toggleRefinement(refinementList, attribute, value) {\n    if (value === undefined) throw new Error('toggleRefinement should be used with a value');\n\n    if (lib.isRefined(refinementList, attribute, value)) {\n      return lib.removeRefinement(refinementList, attribute, value);\n    }\n\n    return lib.addRefinement(refinementList, attribute, value);\n  },\n  /**\n   * Clear all or parts of a RefinementList. Depending on the arguments, three\n   * kinds of behavior can happen:\n   *  - if no attribute is provided: clears the whole list\n   *  - if an attribute is provided as a string: clears the list for the specific attribute\n   *  - if an attribute is provided as a function: discards the elements for which the function returns true\n   * @param {RefinementList} refinementList the initial list\n   * @param {string} [attribute] the attribute or function to discard\n   * @param {string} [refinementType] optional parameter to give more context to the attribute function\n   * @return {RefinementList} a new and updated refinement list\n   */\n  clearRefinement: function clearRefinement(refinementList, attribute, refinementType) {\n    if (attribute === undefined) {\n      if (!objectHasKeys(refinementList)) {\n        return refinementList;\n      }\n      return {};\n    } else if (typeof attribute === 'string') {\n      return omit(refinementList, [attribute]);\n    } else if (typeof attribute === 'function') {\n      var hasChanged = false;\n\n      var newRefinementList = Object.keys(refinementList).reduce(function(memo, key) {\n        var values = refinementList[key] || [];\n        var facetList = values.filter(function(value) {\n          return !attribute(value, key, refinementType);\n        });\n\n        if (facetList.length !== values.length) {\n          hasChanged = true;\n        }\n        memo[key] = facetList;\n\n        return memo;\n      }, {});\n\n      if (hasChanged) return newRefinementList;\n      return refinementList;\n    }\n  },\n  /**\n   * Test if the refinement value is used for the attribute. If no refinement value\n   * is provided, test if the refinementList contains any refinement for the\n   * given attribute.\n   * @param {RefinementList} refinementList the list of refinement\n   * @param {string} attribute name of the attribute\n   * @param {string} [refinementValue] value of the filter/refinement\n   * @return {boolean}\n   */\n  isRefined: function isRefined(refinementList, attribute, refinementValue) {\n    var containsRefinements = !!refinementList[attribute] &&\n      refinementList[attribute].length > 0;\n\n    if (refinementValue === undefined || !containsRefinements) {\n      return containsRefinements;\n    }\n\n    var refinementValueAsString = '' + refinementValue;\n\n    return refinementList[attribute].indexOf(refinementValueAsString) !== -1;\n  }\n};\n\nmodule.exports = lib;\n","'use strict';\n\nvar merge = require('../functions/merge');\nvar defaultsPure = require('../functions/defaultsPure');\nvar orderBy = require('../functions/orderBy');\nvar compact = require('../functions/compact');\nvar find = require('../functions/find');\nvar findIndex = require('../functions/findIndex');\nvar formatSort = require('../functions/formatSort');\nvar fv = require('../functions/escapeFacetValue');\nvar escapeFacetValue = fv.escapeFacetValue;\nvar unescapeFacetValue = fv.unescapeFacetValue;\n\nvar generateHierarchicalTree = require('./generate-hierarchical-tree');\n\n/**\n * @typedef SearchResults.Facet\n * @type {object}\n * @property {string} name name of the attribute in the record\n * @property {object} data the faceting data: value, number of entries\n * @property {object} stats undefined unless facet_stats is retrieved from algolia\n */\n\n/**\n * @typedef SearchResults.HierarchicalFacet\n * @type {object}\n * @property {string} name name of the current value given the hierarchical level, trimmed.\n * If root node, you get the facet name\n * @property {number} count number of objects matching this hierarchical value\n * @property {string} path the current hierarchical value full path\n * @property {boolean} isRefined `true` if the current value was refined, `false` otherwise\n * @property {HierarchicalFacet[]} data sub values for the current level\n */\n\n/**\n * @typedef SearchResults.FacetValue\n * @type {object}\n * @property {string} name the facet value itself\n * @property {number} count times this facet appears in the results\n * @property {boolean} isRefined is the facet currently selected\n * @property {boolean} isExcluded is the facet currently excluded (only for conjunctive facets)\n */\n\n/**\n * @typedef Refinement\n * @type {object}\n * @property {string} type the type of filter used:\n * `numeric`, `facet`, `exclude`, `disjunctive`, `hierarchical`\n * @property {string} attributeName name of the attribute used for filtering\n * @property {string} name the value of the filter\n * @property {number} numericValue the value as a number. Only for numeric filters.\n * @property {string} operator the operator used. Only for numeric filters.\n * @property {number} count the number of computed hits for this filter. Only on facets.\n * @property {boolean} exhaustive if the count is exhaustive\n */\n\n/**\n * @param {string[]} attributes\n */\nfunction getIndices(attributes) {\n  var indices = {};\n\n  attributes.forEach(function(val, idx) {\n    indices[val] = idx;\n  });\n\n  return indices;\n}\n\nfunction assignFacetStats(dest, facetStats, key) {\n  if (facetStats && facetStats[key]) {\n    dest.stats = facetStats[key];\n  }\n}\n\n/**\n * @typedef {Object} HierarchicalFacet\n * @property {string} name\n * @property {string[]} attributes\n */\n\n/**\n * @param {HierarchicalFacet[]} hierarchicalFacets\n * @param {string} hierarchicalAttributeName\n */\nfunction findMatchingHierarchicalFacetFromAttributeName(\n  hierarchicalFacets,\n  hierarchicalAttributeName\n) {\n  return find(hierarchicalFacets, function facetKeyMatchesAttribute(\n    hierarchicalFacet\n  ) {\n    var facetNames = hierarchicalFacet.attributes || [];\n    return facetNames.indexOf(hierarchicalAttributeName) > -1;\n  });\n}\n\n/*eslint-disable */\n/**\n * Constructor for SearchResults\n * @class\n * @classdesc SearchResults contains the results of a query to Algolia using the\n * {@link AlgoliaSearchHelper}.\n * @param {SearchParameters} state state that led to the response\n * @param {array.<object>} results the results from algolia client\n * @example <caption>SearchResults of the first query in\n * <a href=\"http://demos.algolia.com/instant-search-demo\">the instant search demo</a></caption>\n{\n   \"hitsPerPage\": 10,\n   \"processingTimeMS\": 2,\n   \"facets\": [\n      {\n         \"name\": \"type\",\n         \"data\": {\n            \"HardGood\": 6627,\n            \"BlackTie\": 550,\n            \"Music\": 665,\n            \"Software\": 131,\n            \"Game\": 456,\n            \"Movie\": 1571\n         },\n         \"exhaustive\": false\n      },\n      {\n         \"exhaustive\": false,\n         \"data\": {\n            \"Free shipping\": 5507\n         },\n         \"name\": \"shipping\"\n      }\n  ],\n   \"hits\": [\n      {\n         \"thumbnailImage\": \"http://img.bbystatic.com/BestBuy_US/images/products/1688/1688832_54x108_s.gif\",\n         \"_highlightResult\": {\n            \"shortDescription\": {\n               \"matchLevel\": \"none\",\n               \"value\": \"Safeguard your PC, Mac, Android and iOS devices with comprehensive Internet protection\",\n               \"matchedWords\": []\n            },\n            \"category\": {\n               \"matchLevel\": \"none\",\n               \"value\": \"Computer Security Software\",\n               \"matchedWords\": []\n            },\n            \"manufacturer\": {\n               \"matchedWords\": [],\n               \"value\": \"Webroot\",\n               \"matchLevel\": \"none\"\n            },\n            \"name\": {\n               \"value\": \"Webroot SecureAnywhere Internet Security (3-Device) (1-Year Subscription) - Mac/Windows\",\n               \"matchedWords\": [],\n               \"matchLevel\": \"none\"\n            }\n         },\n         \"image\": \"http://img.bbystatic.com/BestBuy_US/images/products/1688/1688832_105x210_sc.jpg\",\n         \"shipping\": \"Free shipping\",\n         \"bestSellingRank\": 4,\n         \"shortDescription\": \"Safeguard your PC, Mac, Android and iOS devices with comprehensive Internet protection\",\n         \"url\": \"http://www.bestbuy.com/site/webroot-secureanywhere-internet-security-3-devi…d=1219060687969&skuId=1688832&cmp=RMX&ky=2d3GfEmNIzjA0vkzveHdZEBgpPCyMnLTJ\",\n         \"name\": \"Webroot SecureAnywhere Internet Security (3-Device) (1-Year Subscription) - Mac/Windows\",\n         \"category\": \"Computer Security Software\",\n         \"salePrice_range\": \"1 - 50\",\n         \"objectID\": \"1688832\",\n         \"type\": \"Software\",\n         \"customerReviewCount\": 5980,\n         \"salePrice\": 49.99,\n         \"manufacturer\": \"Webroot\"\n      },\n      ....\n  ],\n   \"nbHits\": 10000,\n   \"disjunctiveFacets\": [\n      {\n         \"exhaustive\": false,\n         \"data\": {\n            \"5\": 183,\n            \"12\": 112,\n            \"7\": 149,\n            ...\n         },\n         \"name\": \"customerReviewCount\",\n         \"stats\": {\n            \"max\": 7461,\n            \"avg\": 157.939,\n            \"min\": 1\n         }\n      },\n      {\n         \"data\": {\n            \"Printer Ink\": 142,\n            \"Wireless Speakers\": 60,\n            \"Point & Shoot Cameras\": 48,\n            ...\n         },\n         \"name\": \"category\",\n         \"exhaustive\": false\n      },\n      {\n         \"exhaustive\": false,\n         \"data\": {\n            \"> 5000\": 2,\n            \"1 - 50\": 6524,\n            \"501 - 2000\": 566,\n            \"201 - 500\": 1501,\n            \"101 - 200\": 1360,\n            \"2001 - 5000\": 47\n         },\n         \"name\": \"salePrice_range\"\n      },\n      {\n         \"data\": {\n            \"Dynex™\": 202,\n            \"Insignia™\": 230,\n            \"PNY\": 72,\n            ...\n         },\n         \"name\": \"manufacturer\",\n         \"exhaustive\": false\n      }\n  ],\n   \"query\": \"\",\n   \"nbPages\": 100,\n   \"page\": 0,\n   \"index\": \"bestbuy\"\n}\n **/\n/*eslint-enable */\nfunction SearchResults(state, results, options) {\n  var mainSubResponse = results[0];\n\n  this._rawResults = results;\n\n  var self = this;\n\n  // https://www.algolia.com/doc/api-reference/api-methods/search/#response\n  Object.keys(mainSubResponse).forEach(function(key) {\n    self[key] = mainSubResponse[key];\n  });\n\n  // Make every key of the result options reachable from the instance\n  Object.keys(options || {}).forEach(function(key) {\n    self[key] = options[key];\n  });\n\n  /**\n   * query used to generate the results\n   * @name query\n   * @member {string}\n   * @memberof SearchResults\n   * @instance\n   */\n  /**\n   * The query as parsed by the engine given all the rules.\n   * @name parsedQuery\n   * @member {string}\n   * @memberof SearchResults\n   * @instance\n   */\n  /**\n   * all the records that match the search parameters. Each record is\n   * augmented with a new attribute `_highlightResult`\n   * which is an object keyed by attribute and with the following properties:\n   *  - `value` : the value of the facet highlighted (html)\n   *  - `matchLevel`: full, partial or none depending on how the query terms match\n   * @name hits\n   * @member {object[]}\n   * @memberof SearchResults\n   * @instance\n   */\n  /**\n   * index where the results come from\n   * @name index\n   * @member {string}\n   * @memberof SearchResults\n   * @instance\n   */\n  /**\n   * number of hits per page requested\n   * @name hitsPerPage\n   * @member {number}\n   * @memberof SearchResults\n   * @instance\n   */\n  /**\n   * total number of hits of this query on the index\n   * @name nbHits\n   * @member {number}\n   * @memberof SearchResults\n   * @instance\n   */\n  /**\n   * total number of pages with respect to the number of hits per page and the total number of hits\n   * @name nbPages\n   * @member {number}\n   * @memberof SearchResults\n   * @instance\n   */\n  /**\n   * current page\n   * @name page\n   * @member {number}\n   * @memberof SearchResults\n   * @instance\n   */\n  /**\n   * The position if the position was guessed by IP.\n   * @name aroundLatLng\n   * @member {string}\n   * @memberof SearchResults\n   * @instance\n   * @example \"48.8637,2.3615\",\n   */\n  /**\n   * The radius computed by Algolia.\n   * @name automaticRadius\n   * @member {string}\n   * @memberof SearchResults\n   * @instance\n   * @example \"126792922\",\n   */\n  /**\n   * String identifying the server used to serve this request.\n   *\n   * getRankingInfo needs to be set to `true` for this to be returned\n   *\n   * @name serverUsed\n   * @member {string}\n   * @memberof SearchResults\n   * @instance\n   * @example \"c7-use-2.algolia.net\",\n   */\n  /**\n   * Boolean that indicates if the computation of the counts did time out.\n   * @deprecated\n   * @name timeoutCounts\n   * @member {boolean}\n   * @memberof SearchResults\n   * @instance\n   */\n  /**\n   * Boolean that indicates if the computation of the hits did time out.\n   * @deprecated\n   * @name timeoutHits\n   * @member {boolean}\n   * @memberof SearchResults\n   * @instance\n   */\n  /**\n   * True if the counts of the facets is exhaustive\n   * @name exhaustiveFacetsCount\n   * @member {boolean}\n   * @memberof SearchResults\n   * @instance\n   */\n  /**\n   * True if the number of hits is exhaustive\n   * @name exhaustiveNbHits\n   * @member {boolean}\n   * @memberof SearchResults\n   * @instance\n   */\n  /**\n   * Contains the userData if they are set by a [query rule](https://www.algolia.com/doc/guides/query-rules/query-rules-overview/).\n   * @name userData\n   * @member {object[]}\n   * @memberof SearchResults\n   * @instance\n   */\n  /**\n   * queryID is the unique identifier of the query used to generate the current search results.\n   * This value is only available if the `clickAnalytics` search parameter is set to `true`.\n   * @name queryID\n   * @member {string}\n   * @memberof SearchResults\n   * @instance\n   */\n\n  /**\n   * sum of the processing time of all the queries\n   * @member {number}\n   */\n  this.processingTimeMS = results.reduce(function(sum, result) {\n    return result.processingTimeMS === undefined\n      ? sum\n      : sum + result.processingTimeMS;\n  }, 0);\n\n  /**\n   * disjunctive facets results\n   * @member {SearchResults.Facet[]}\n   */\n  this.disjunctiveFacets = [];\n  /**\n   * disjunctive facets results\n   * @member {SearchResults.HierarchicalFacet[]}\n   */\n  this.hierarchicalFacets = state.hierarchicalFacets.map(function initFutureTree() {\n    return [];\n  });\n  /**\n   * other facets results\n   * @member {SearchResults.Facet[]}\n   */\n  this.facets = [];\n\n  var disjunctiveFacets = state.getRefinedDisjunctiveFacets();\n\n  var facetsIndices = getIndices(state.facets);\n  var disjunctiveFacetsIndices = getIndices(state.disjunctiveFacets);\n  var nextDisjunctiveResult = 1;\n\n  // Since we send request only for disjunctive facets that have been refined,\n  // we get the facets information from the first, general, response.\n\n  var mainFacets = mainSubResponse.facets || {};\n\n  Object.keys(mainFacets).forEach(function(facetKey) {\n    var facetValueObject = mainFacets[facetKey];\n\n    var hierarchicalFacet = findMatchingHierarchicalFacetFromAttributeName(\n      state.hierarchicalFacets,\n      facetKey\n    );\n\n    if (hierarchicalFacet) {\n      // Place the hierarchicalFacet data at the correct index depending on\n      // the attributes order that was defined at the helper initialization\n      var facetIndex = hierarchicalFacet.attributes.indexOf(facetKey);\n      var idxAttributeName = findIndex(state.hierarchicalFacets, function(f) {\n        return f.name === hierarchicalFacet.name;\n      });\n      self.hierarchicalFacets[idxAttributeName][facetIndex] = {\n        attribute: facetKey,\n        data: facetValueObject,\n        exhaustive: mainSubResponse.exhaustiveFacetsCount\n      };\n    } else {\n      var isFacetDisjunctive = state.disjunctiveFacets.indexOf(facetKey) !== -1;\n      var isFacetConjunctive = state.facets.indexOf(facetKey) !== -1;\n      var position;\n\n      if (isFacetDisjunctive) {\n        position = disjunctiveFacetsIndices[facetKey];\n        self.disjunctiveFacets[position] = {\n          name: facetKey,\n          data: facetValueObject,\n          exhaustive: mainSubResponse.exhaustiveFacetsCount\n        };\n        assignFacetStats(self.disjunctiveFacets[position], mainSubResponse.facets_stats, facetKey);\n      }\n      if (isFacetConjunctive) {\n        position = facetsIndices[facetKey];\n        self.facets[position] = {\n          name: facetKey,\n          data: facetValueObject,\n          exhaustive: mainSubResponse.exhaustiveFacetsCount\n        };\n        assignFacetStats(self.facets[position], mainSubResponse.facets_stats, facetKey);\n      }\n    }\n  });\n\n  // Make sure we do not keep holes within the hierarchical facets\n  this.hierarchicalFacets = compact(this.hierarchicalFacets);\n\n  // aggregate the refined disjunctive facets\n  disjunctiveFacets.forEach(function(disjunctiveFacet) {\n    var result = results[nextDisjunctiveResult];\n    var facets = result && result.facets ? result.facets : {};\n    var hierarchicalFacet = state.getHierarchicalFacetByName(disjunctiveFacet);\n\n    // There should be only item in facets.\n    Object.keys(facets).forEach(function(dfacet) {\n      var facetResults = facets[dfacet];\n\n      var position;\n\n      if (hierarchicalFacet) {\n        position = findIndex(state.hierarchicalFacets, function(f) {\n          return f.name === hierarchicalFacet.name;\n        });\n        var attributeIndex = findIndex(self.hierarchicalFacets[position], function(f) {\n          return f.attribute === dfacet;\n        });\n\n        // previous refinements and no results so not able to find it\n        if (attributeIndex === -1) {\n          return;\n        }\n\n        self.hierarchicalFacets[position][attributeIndex].data = merge(\n          {},\n          self.hierarchicalFacets[position][attributeIndex].data,\n          facetResults\n        );\n      } else {\n        position = disjunctiveFacetsIndices[dfacet];\n\n        var dataFromMainRequest = mainSubResponse.facets && mainSubResponse.facets[dfacet] || {};\n\n        self.disjunctiveFacets[position] = {\n          name: dfacet,\n          data: defaultsPure({}, facetResults, dataFromMainRequest),\n          exhaustive: result.exhaustiveFacetsCount\n        };\n        assignFacetStats(self.disjunctiveFacets[position], result.facets_stats, dfacet);\n\n        if (state.disjunctiveFacetsRefinements[dfacet]) {\n          state.disjunctiveFacetsRefinements[dfacet].forEach(function(refinementValue) {\n            // add the disjunctive refinements if it is no more retrieved\n            if (!self.disjunctiveFacets[position].data[refinementValue] &&\n              state.disjunctiveFacetsRefinements[dfacet].indexOf(unescapeFacetValue(refinementValue)) > -1) {\n              self.disjunctiveFacets[position].data[refinementValue] = 0;\n            }\n          });\n        }\n      }\n    });\n    nextDisjunctiveResult++;\n  });\n\n  // if we have some parent level values for hierarchical facets, merge them\n  state.getRefinedHierarchicalFacets().forEach(function(refinedFacet) {\n    var hierarchicalFacet = state.getHierarchicalFacetByName(refinedFacet);\n    var separator = state._getHierarchicalFacetSeparator(hierarchicalFacet);\n\n    var currentRefinement = state.getHierarchicalRefinement(refinedFacet);\n    // if we are already at a root refinement (or no refinement at all), there is no\n    // root level values request\n    if (currentRefinement.length === 0 || currentRefinement[0].split(separator).length < 2) {\n      return;\n    }\n\n    results.slice(nextDisjunctiveResult).forEach(function(result) {\n      var facets = result && result.facets\n        ? result.facets\n        : {};\n\n      Object.keys(facets).forEach(function(dfacet) {\n        var facetResults = facets[dfacet];\n        var position = findIndex(state.hierarchicalFacets, function(f) {\n          return f.name === hierarchicalFacet.name;\n        });\n        var attributeIndex = findIndex(self.hierarchicalFacets[position], function(f) {\n          return f.attribute === dfacet;\n        });\n\n        // previous refinements and no results so not able to find it\n        if (attributeIndex === -1) {\n          return;\n        }\n\n        // when we always get root levels, if the hits refinement is `beers > IPA` (count: 5),\n        // then the disjunctive values will be `beers` (count: 100),\n        // but we do not want to display\n        //   | beers (100)\n        //     > IPA (5)\n        // We want\n        //   | beers (5)\n        //     > IPA (5)\n        var defaultData = {};\n\n        if (currentRefinement.length > 0) {\n          var root = currentRefinement[0].split(separator)[0];\n          defaultData[root] = self.hierarchicalFacets[position][attributeIndex].data[root];\n        }\n\n        self.hierarchicalFacets[position][attributeIndex].data = defaultsPure(\n          defaultData,\n          facetResults,\n          self.hierarchicalFacets[position][attributeIndex].data\n        );\n      });\n\n      nextDisjunctiveResult++;\n    });\n  });\n\n  // add the excludes\n  Object.keys(state.facetsExcludes).forEach(function(facetName) {\n    var excludes = state.facetsExcludes[facetName];\n    var position = facetsIndices[facetName];\n\n    self.facets[position] = {\n      name: facetName,\n      data: mainSubResponse.facets[facetName],\n      exhaustive: mainSubResponse.exhaustiveFacetsCount\n    };\n    excludes.forEach(function(facetValue) {\n      self.facets[position] = self.facets[position] || {name: facetName};\n      self.facets[position].data = self.facets[position].data || {};\n      self.facets[position].data[facetValue] = 0;\n    });\n  });\n\n  /**\n   * @type {Array}\n   */\n  this.hierarchicalFacets = this.hierarchicalFacets.map(generateHierarchicalTree(state));\n\n  /**\n   * @type {Array}\n   */\n  this.facets = compact(this.facets);\n  /**\n   * @type {Array}\n   */\n  this.disjunctiveFacets = compact(this.disjunctiveFacets);\n\n  this._state = state;\n}\n\n/**\n * Get a facet object with its name\n * @deprecated\n * @param {string} name name of the faceted attribute\n * @return {SearchResults.Facet} the facet object\n */\nSearchResults.prototype.getFacetByName = function(name) {\n  function predicate(facet) {\n    return facet.name === name;\n  }\n\n  return find(this.facets, predicate) ||\n    find(this.disjunctiveFacets, predicate) ||\n    find(this.hierarchicalFacets, predicate);\n};\n\n/**\n * Get the facet values of a specified attribute from a SearchResults object.\n * @private\n * @param {SearchResults} results the search results to search in\n * @param {string} attribute name of the faceted attribute to search for\n * @return {array|object} facet values. For the hierarchical facets it is an object.\n */\nfunction extractNormalizedFacetValues(results, attribute) {\n  function predicate(facet) {\n    return facet.name === attribute;\n  }\n\n  if (results._state.isConjunctiveFacet(attribute)) {\n    var facet = find(results.facets, predicate);\n    if (!facet) return [];\n\n    return Object.keys(facet.data).map(function(name) {\n      var value = escapeFacetValue(name);\n      return {\n        name: name,\n        escapedValue: value,\n        count: facet.data[name],\n        isRefined: results._state.isFacetRefined(attribute, value),\n        isExcluded: results._state.isExcludeRefined(attribute, name)\n      };\n    });\n  } else if (results._state.isDisjunctiveFacet(attribute)) {\n    var disjunctiveFacet = find(results.disjunctiveFacets, predicate);\n    if (!disjunctiveFacet) return [];\n\n    return Object.keys(disjunctiveFacet.data).map(function(name) {\n      var value = escapeFacetValue(name);\n      return {\n        name: name,\n        escapedValue: value,\n        count: disjunctiveFacet.data[name],\n        isRefined: results._state.isDisjunctiveFacetRefined(attribute, value)\n      };\n    });\n  } else if (results._state.isHierarchicalFacet(attribute)) {\n    return find(results.hierarchicalFacets, predicate);\n  }\n}\n\n/**\n * Sort nodes of a hierarchical or disjunctive facet results\n * @private\n * @param {function} sortFn\n * @param {HierarchicalFacet|Array} node node upon which we want to apply the sort\n * @param {string[]} names attribute names\n * @param {number} [level=0] current index in the names array\n */\nfunction recSort(sortFn, node, names, level) {\n  level = level || 0;\n\n  if (Array.isArray(node)) {\n    return sortFn(node, names[level]);\n  }\n\n  if (!node.data || node.data.length === 0) {\n    return node;\n  }\n\n  var children = node.data.map(function(childNode) {\n    return recSort(sortFn, childNode, names, level + 1);\n  });\n  var sortedChildren = sortFn(children, names[level]);\n  var newNode = defaultsPure({data: sortedChildren}, node);\n  return newNode;\n}\n\nSearchResults.DEFAULT_SORT = ['isRefined:desc', 'count:desc', 'name:asc'];\n\nfunction vanillaSortFn(order, data) {\n  return data.sort(order);\n}\n\n/**\n * @typedef FacetOrdering\n * @type {Object}\n * @property {string[]} [order]\n * @property {'count' | 'alpha' | 'hidden'} [sortRemainingBy]\n */\n\n/**\n * Sorts facet arrays via their facet ordering\n * @param {Array} facetValues the values\n * @param {FacetOrdering} facetOrdering the ordering\n * @returns {Array}\n */\nfunction sortViaFacetOrdering(facetValues, facetOrdering) {\n  var orderedFacets = [];\n  var remainingFacets = [];\n\n  var order = facetOrdering.order || [];\n  /**\n   * an object with the keys being the values in order, the values their index:\n   * ['one', 'two'] -> { one: 0, two: 1 }\n   */\n  var reverseOrder = order.reduce(function(acc, name, i) {\n    acc[name] = i;\n    return acc;\n  }, {});\n\n  facetValues.forEach(function(item) {\n    // hierarchical facets get sorted using their raw name\n    var name = item.path || item.name;\n    if (reverseOrder[name] !== undefined) {\n      orderedFacets[reverseOrder[name]] = item;\n    } else {\n      remainingFacets.push(item);\n    }\n  });\n\n  orderedFacets = orderedFacets.filter(function(facet) {\n    return facet;\n  });\n\n  var sortRemainingBy = facetOrdering.sortRemainingBy;\n  var ordering;\n  if (sortRemainingBy === 'hidden') {\n    return orderedFacets;\n  } else if (sortRemainingBy === 'alpha') {\n    ordering = [['path', 'name'], ['asc', 'asc']];\n  } else {\n    ordering = [['count'], ['desc']];\n  }\n\n  return orderedFacets.concat(\n    orderBy(remainingFacets, ordering[0], ordering[1])\n  );\n}\n\n/**\n * @param {SearchResults} results the search results class\n * @param {string} attribute the attribute to retrieve ordering of\n * @returns {FacetOrdering=}\n */\nfunction getFacetOrdering(results, attribute) {\n  return (\n    results.renderingContent &&\n    results.renderingContent.facetOrdering &&\n    results.renderingContent.facetOrdering.values &&\n    results.renderingContent.facetOrdering.values[attribute]\n  );\n}\n\n/**\n * Get a the list of values for a given facet attribute. Those values are sorted\n * refinement first, descending count (bigger value on top), and name ascending\n * (alphabetical order). The sort formula can overridden using either string based\n * predicates or a function.\n *\n * This method will return all the values returned by the Algolia engine plus all\n * the values already refined. This means that it can happen that the\n * `maxValuesPerFacet` [configuration](https://www.algolia.com/doc/rest-api/search#param-maxValuesPerFacet)\n * might not be respected if you have facet values that are already refined.\n * @param {string} attribute attribute name\n * @param {object} opts configuration options.\n * @param {boolean} [opts.facetOrdering]\n * Force the use of facetOrdering from the result if a sortBy is present. If\n * sortBy isn't present, facetOrdering will be used automatically.\n * @param {Array.<string> | function} opts.sortBy\n * When using strings, it consists of\n * the name of the [FacetValue](#SearchResults.FacetValue) or the\n * [HierarchicalFacet](#SearchResults.HierarchicalFacet) attributes with the\n * order (`asc` or `desc`). For example to order the value by count, the\n * argument would be `['count:asc']`.\n *\n * If only the attribute name is specified, the ordering defaults to the one\n * specified in the default value for this attribute.\n *\n * When not specified, the order is\n * ascending.  This parameter can also be a function which takes two facet\n * values and should return a number, 0 if equal, 1 if the first argument is\n * bigger or -1 otherwise.\n *\n * The default value for this attribute `['isRefined:desc', 'count:desc', 'name:asc']`\n * @return {FacetValue[]|HierarchicalFacet|undefined} depending on the type of facet of\n * the attribute requested (hierarchical, disjunctive or conjunctive)\n * @example\n * helper.on('result', function(event){\n *   //get values ordered only by name ascending using the string predicate\n *   event.results.getFacetValues('city', {sortBy: ['name:asc']});\n *   //get values  ordered only by count ascending using a function\n *   event.results.getFacetValues('city', {\n *     // this is equivalent to ['count:asc']\n *     sortBy: function(a, b) {\n *       if (a.count === b.count) return 0;\n *       if (a.count > b.count)   return 1;\n *       if (b.count > a.count)   return -1;\n *     }\n *   });\n * });\n */\nSearchResults.prototype.getFacetValues = function(attribute, opts) {\n  var facetValues = extractNormalizedFacetValues(this, attribute);\n  if (!facetValues) {\n    return undefined;\n  }\n\n  var options = defaultsPure({}, opts, {\n    sortBy: SearchResults.DEFAULT_SORT,\n    // if no sortBy is given, attempt to sort based on facetOrdering\n    // if it is given, we still allow to sort via facet ordering first\n    facetOrdering: !(opts && opts.sortBy)\n  });\n\n  var results = this;\n  var attributes;\n  if (Array.isArray(facetValues)) {\n    attributes = [attribute];\n  } else {\n    var config = results._state.getHierarchicalFacetByName(facetValues.name);\n    attributes = config.attributes;\n  }\n\n  return recSort(function(data, facetName) {\n    if (options.facetOrdering) {\n      var facetOrdering = getFacetOrdering(results, facetName);\n      if (Boolean(facetOrdering)) {\n        return sortViaFacetOrdering(data, facetOrdering);\n      }\n    }\n\n    if (Array.isArray(options.sortBy)) {\n      var order = formatSort(options.sortBy, SearchResults.DEFAULT_SORT);\n      return orderBy(data, order[0], order[1]);\n    } else if (typeof options.sortBy === 'function') {\n      return vanillaSortFn(options.sortBy, data);\n    }\n    throw new Error(\n      'options.sortBy is optional but if defined it must be ' +\n        'either an array of string (predicates) or a sorting function'\n    );\n  }, facetValues, attributes);\n};\n\n/**\n * Returns the facet stats if attribute is defined and the facet contains some.\n * Otherwise returns undefined.\n * @param {string} attribute name of the faceted attribute\n * @return {object} The stats of the facet\n */\nSearchResults.prototype.getFacetStats = function(attribute) {\n  if (this._state.isConjunctiveFacet(attribute)) {\n    return getFacetStatsIfAvailable(this.facets, attribute);\n  } else if (this._state.isDisjunctiveFacet(attribute)) {\n    return getFacetStatsIfAvailable(this.disjunctiveFacets, attribute);\n  }\n\n  return undefined;\n};\n\n/**\n * @typedef {Object} FacetListItem\n * @property {string} name\n */\n\n/**\n * @param {FacetListItem[]} facetList (has more items, but enough for here)\n * @param {string} facetName\n */\nfunction getFacetStatsIfAvailable(facetList, facetName) {\n  var data = find(facetList, function(facet) {\n    return facet.name === facetName;\n  });\n  return data && data.stats;\n}\n\n/**\n * Returns all refinements for all filters + tags. It also provides\n * additional information: count and exhaustiveness for each filter.\n *\n * See the [refinement type](#Refinement) for an exhaustive view of the available\n * data.\n *\n * Note that for a numeric refinement, results are grouped per operator, this\n * means that it will return responses for operators which are empty.\n *\n * @return {Array.<Refinement>} all the refinements\n */\nSearchResults.prototype.getRefinements = function() {\n  var state = this._state;\n  var results = this;\n  var res = [];\n\n  Object.keys(state.facetsRefinements).forEach(function(attributeName) {\n    state.facetsRefinements[attributeName].forEach(function(name) {\n      res.push(getRefinement(state, 'facet', attributeName, name, results.facets));\n    });\n  });\n\n  Object.keys(state.facetsExcludes).forEach(function(attributeName) {\n    state.facetsExcludes[attributeName].forEach(function(name) {\n      res.push(getRefinement(state, 'exclude', attributeName, name, results.facets));\n    });\n  });\n\n  Object.keys(state.disjunctiveFacetsRefinements).forEach(function(attributeName) {\n    state.disjunctiveFacetsRefinements[attributeName].forEach(function(name) {\n      res.push(getRefinement(state, 'disjunctive', attributeName, name, results.disjunctiveFacets));\n    });\n  });\n\n  Object.keys(state.hierarchicalFacetsRefinements).forEach(function(attributeName) {\n    state.hierarchicalFacetsRefinements[attributeName].forEach(function(name) {\n      res.push(getHierarchicalRefinement(state, attributeName, name, results.hierarchicalFacets));\n    });\n  });\n\n\n  Object.keys(state.numericRefinements).forEach(function(attributeName) {\n    var operators = state.numericRefinements[attributeName];\n    Object.keys(operators).forEach(function(operator) {\n      operators[operator].forEach(function(value) {\n        res.push({\n          type: 'numeric',\n          attributeName: attributeName,\n          name: value,\n          numericValue: value,\n          operator: operator\n        });\n      });\n    });\n  });\n\n  state.tagRefinements.forEach(function(name) {\n    res.push({type: 'tag', attributeName: '_tags', name: name});\n  });\n\n  return res;\n};\n\n/**\n * @typedef {Object} Facet\n * @property {string} name\n * @property {Object} data\n * @property {boolean} exhaustive\n */\n\n/**\n * @param {*} state\n * @param {*} type\n * @param {string} attributeName\n * @param {*} name\n * @param {Facet[]} resultsFacets\n */\nfunction getRefinement(state, type, attributeName, name, resultsFacets) {\n  var facet = find(resultsFacets, function(f) {\n    return f.name === attributeName;\n  });\n  var count = facet && facet.data && facet.data[name] ? facet.data[name] : 0;\n  var exhaustive = (facet && facet.exhaustive) || false;\n\n  return {\n    type: type,\n    attributeName: attributeName,\n    name: name,\n    count: count,\n    exhaustive: exhaustive\n  };\n}\n\n/**\n * @param {*} state\n * @param {string} attributeName\n * @param {*} name\n * @param {Facet[]} resultsFacets\n */\nfunction getHierarchicalRefinement(state, attributeName, name, resultsFacets) {\n  var facetDeclaration = state.getHierarchicalFacetByName(attributeName);\n  var separator = state._getHierarchicalFacetSeparator(facetDeclaration);\n  var split = name.split(separator);\n  var rootFacet = find(resultsFacets, function(facet) {\n    return facet.name === attributeName;\n  });\n\n  var facet = split.reduce(function(intermediateFacet, part) {\n    var newFacet =\n      intermediateFacet && find(intermediateFacet.data, function(f) {\n        return f.name === part;\n      });\n    return newFacet !== undefined ? newFacet : intermediateFacet;\n  }, rootFacet);\n\n  var count = (facet && facet.count) || 0;\n  var exhaustive = (facet && facet.exhaustive) || false;\n  var path = (facet && facet.path) || '';\n\n  return {\n    type: 'hierarchical',\n    attributeName: attributeName,\n    name: path,\n    count: count,\n    exhaustive: exhaustive\n  };\n}\n\nmodule.exports = SearchResults;\n","'use strict';\n\nfunction compareAscending(value, other) {\n  if (value !== other) {\n    var valIsDefined = value !== undefined;\n    var valIsNull = value === null;\n\n    var othIsDefined = other !== undefined;\n    var othIsNull = other === null;\n\n    if (\n      (!othIsNull && value > other) ||\n      (valIsNull && othIsDefined) ||\n      !valIsDefined\n    ) {\n      return 1;\n    }\n    if (\n      (!valIsNull && value < other) ||\n      (othIsNull && valIsDefined) ||\n      !othIsDefined\n    ) {\n      return -1;\n    }\n  }\n  return 0;\n}\n\n/**\n * @param {Array<object>} collection object with keys in attributes\n * @param {Array<string>} iteratees attributes\n * @param {Array<string>} orders asc | desc\n */\nfunction orderBy(collection, iteratees, orders) {\n  if (!Array.isArray(collection)) {\n    return [];\n  }\n\n  if (!Array.isArray(orders)) {\n    orders = [];\n  }\n\n  var result = collection.map(function(value, index) {\n    return {\n      criteria: iteratees.map(function(iteratee) {\n        return value[iteratee];\n      }),\n      index: index,\n      value: value\n    };\n  });\n\n  result.sort(function comparer(object, other) {\n    var index = -1;\n\n    while (++index < object.criteria.length) {\n      var res = compareAscending(object.criteria[index], other.criteria[index]);\n      if (res) {\n        if (index >= orders.length) {\n          return res;\n        }\n        if (orders[index] === 'desc') {\n          return -res;\n        }\n        return res;\n      }\n    }\n\n    // This ensures a stable sort in V8 and other engines.\n    // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n    return object.index - other.index;\n  });\n\n  return result.map(function(res) {\n    return res.value;\n  });\n}\n\nmodule.exports = orderBy;\n","'use strict';\n\nmodule.exports = function compact(array) {\n  if (!Array.isArray(array)) {\n    return [];\n  }\n\n  return array.filter(Boolean);\n};\n","'use strict';\n\n// @MAJOR can be replaced by native Array#findIndex when we change support\nmodule.exports = function find(array, comparator) {\n  if (!Array.isArray(array)) {\n    return -1;\n  }\n\n  for (var i = 0; i < array.length; i++) {\n    if (comparator(array[i])) {\n      return i;\n    }\n  }\n  return -1;\n};\n","'use strict';\n\nvar find = require('./find');\n\n/**\n * Transform sort format from user friendly notation to lodash format\n * @param {string[]} sortBy array of predicate of the form \"attribute:order\"\n * @param {string[]} [defaults] array of predicate of the form \"attribute:order\"\n * @return {array.<string[]>} array containing 2 elements : attributes, orders\n */\nmodule.exports = function formatSort(sortBy, defaults) {\n  var defaultInstructions = (defaults || []).map(function(sort) {\n    return sort.split(':');\n  });\n\n  return sortBy.reduce(\n    function preparePredicate(out, sort) {\n      var sortInstruction = sort.split(':');\n\n      var matchingDefault = find(defaultInstructions, function(\n        defaultInstruction\n      ) {\n        return defaultInstruction[0] === sortInstruction[0];\n      });\n\n      if (sortInstruction.length > 1 || !matchingDefault) {\n        out[0].push(sortInstruction[0]);\n        out[1].push(sortInstruction[1]);\n        return out;\n      }\n\n      out[0].push(matchingDefault[0]);\n      out[1].push(matchingDefault[1]);\n      return out;\n    },\n    [[], []]\n  );\n};\n","'use strict';\n\n/**\n * Replaces a leading - with \\-\n * @private\n * @param {any} value the facet value to replace\n * @returns any\n */\nfunction escapeFacetValue(value) {\n  if (typeof value !== 'string') return value;\n\n  return String(value).replace(/^-/, '\\\\-');\n}\n\n/**\n * Replaces a leading \\- with -\n * @private\n * @param {any} value the escaped facet value\n * @returns any\n */\nfunction unescapeFacetValue(value) {\n  if (typeof value !== 'string') return value;\n\n  return value.replace(/^\\\\-/, '-');\n}\n\nmodule.exports = {\n  escapeFacetValue: escapeFacetValue,\n  unescapeFacetValue: unescapeFacetValue\n};\n","'use strict';\n\nmodule.exports = generateTrees;\n\nvar orderBy = require('../functions/orderBy');\nvar find = require('../functions/find');\nvar prepareHierarchicalFacetSortBy = require('../functions/formatSort');\nvar fv = require('../functions/escapeFacetValue');\nvar escapeFacetValue = fv.escapeFacetValue;\nvar unescapeFacetValue = fv.unescapeFacetValue;\n\nfunction generateTrees(state) {\n  return function generate(hierarchicalFacetResult, hierarchicalFacetIndex) {\n    var hierarchicalFacet = state.hierarchicalFacets[hierarchicalFacetIndex];\n    var hierarchicalFacetRefinement =\n      (state.hierarchicalFacetsRefinements[hierarchicalFacet.name] &&\n        state.hierarchicalFacetsRefinements[hierarchicalFacet.name][0]) ||\n      '';\n    var hierarchicalSeparator = state._getHierarchicalFacetSeparator(\n      hierarchicalFacet\n    );\n    var hierarchicalRootPath = state._getHierarchicalRootPath(\n      hierarchicalFacet\n    );\n    var hierarchicalShowParentLevel = state._getHierarchicalShowParentLevel(\n      hierarchicalFacet\n    );\n    var sortBy = prepareHierarchicalFacetSortBy(\n      state._getHierarchicalFacetSortBy(hierarchicalFacet)\n    );\n\n    var rootExhaustive = hierarchicalFacetResult.every(function(facetResult) {\n      return facetResult.exhaustive;\n    });\n\n    var generateTreeFn = generateHierarchicalTree(\n      sortBy,\n      hierarchicalSeparator,\n      hierarchicalRootPath,\n      hierarchicalShowParentLevel,\n      hierarchicalFacetRefinement\n    );\n\n    var results = hierarchicalFacetResult;\n\n    if (hierarchicalRootPath) {\n      results = hierarchicalFacetResult.slice(\n        hierarchicalRootPath.split(hierarchicalSeparator).length\n      );\n    }\n\n    return results.reduce(generateTreeFn, {\n      name: state.hierarchicalFacets[hierarchicalFacetIndex].name,\n      count: null, // root level, no count\n      isRefined: true, // root level, always refined\n      path: null, // root level, no path\n      escapedValue: null,\n      exhaustive: rootExhaustive,\n      data: null\n    });\n  };\n}\n\nfunction generateHierarchicalTree(\n  sortBy,\n  hierarchicalSeparator,\n  hierarchicalRootPath,\n  hierarchicalShowParentLevel,\n  currentRefinement\n) {\n  return function generateTree(\n    hierarchicalTree,\n    hierarchicalFacetResult,\n    currentHierarchicalLevel\n  ) {\n    var parent = hierarchicalTree;\n\n    if (currentHierarchicalLevel > 0) {\n      var level = 0;\n\n      parent = hierarchicalTree;\n\n      while (level < currentHierarchicalLevel) {\n        /**\n         * @type {object[]]} hierarchical data\n         */\n        var data = parent && Array.isArray(parent.data) ? parent.data : [];\n        parent = find(data, function(subtree) {\n          return subtree.isRefined;\n        });\n        level++;\n      }\n    }\n\n    // we found a refined parent, let's add current level data under it\n    if (parent) {\n      // filter values in case an object has multiple categories:\n      //   {\n      //     categories: {\n      //       level0: ['beers', 'bières'],\n      //       level1: ['beers > IPA', 'bières > Belges']\n      //     }\n      //   }\n      //\n      // If parent refinement is `beers`, then we do not want to have `bières > Belges`\n      // showing up\n\n      var picked = Object.keys(hierarchicalFacetResult.data)\n        .map(function(facetValue) {\n          return [facetValue, hierarchicalFacetResult.data[facetValue]];\n        })\n        .filter(function(tuple) {\n          var facetValue = tuple[0];\n          return onlyMatchingTree(\n            facetValue,\n            parent.path || hierarchicalRootPath,\n            currentRefinement,\n            hierarchicalSeparator,\n            hierarchicalRootPath,\n            hierarchicalShowParentLevel\n          );\n        });\n\n      parent.data = orderBy(\n        picked.map(function(tuple) {\n          var facetValue = tuple[0];\n          var facetCount = tuple[1];\n\n          return format(\n            facetCount,\n            facetValue,\n            hierarchicalSeparator,\n            unescapeFacetValue(currentRefinement),\n            hierarchicalFacetResult.exhaustive\n          );\n        }),\n        sortBy[0],\n        sortBy[1]\n      );\n    }\n\n    return hierarchicalTree;\n  };\n}\n\nfunction onlyMatchingTree(\n  facetValue,\n  parentPath,\n  currentRefinement,\n  hierarchicalSeparator,\n  hierarchicalRootPath,\n  hierarchicalShowParentLevel\n) {\n  // we want the facetValue is a child of hierarchicalRootPath\n  if (\n    hierarchicalRootPath &&\n    (facetValue.indexOf(hierarchicalRootPath) !== 0 ||\n      hierarchicalRootPath === facetValue)\n  ) {\n    return false;\n  }\n\n  // we always want root levels (only when there is no prefix path)\n  return (\n    (!hierarchicalRootPath &&\n      facetValue.indexOf(hierarchicalSeparator) === -1) ||\n    // if there is a rootPath, being root level mean 1 level under rootPath\n    (hierarchicalRootPath &&\n      facetValue.split(hierarchicalSeparator).length -\n        hierarchicalRootPath.split(hierarchicalSeparator).length ===\n        1) ||\n    // if current refinement is a root level and current facetValue is a root level,\n    // keep the facetValue\n    (facetValue.indexOf(hierarchicalSeparator) === -1 &&\n      currentRefinement.indexOf(hierarchicalSeparator) === -1) ||\n    // currentRefinement is a child of the facet value\n    currentRefinement.indexOf(facetValue) === 0 ||\n    // facetValue is a child of the current parent, add it\n    (facetValue.indexOf(parentPath + hierarchicalSeparator) === 0 &&\n      (hierarchicalShowParentLevel ||\n        facetValue.indexOf(currentRefinement) === 0))\n  );\n}\n\nfunction format(\n  facetCount,\n  facetValue,\n  hierarchicalSeparator,\n  currentRefinement,\n  exhaustive\n) {\n  var parts = facetValue.split(hierarchicalSeparator);\n  return {\n    name: parts[parts.length - 1].trim(),\n    path: facetValue,\n    escapedValue: escapeFacetValue(facetValue),\n    count: facetCount,\n    isRefined:\n      currentRefinement === facetValue ||\n      currentRefinement.indexOf(facetValue + hierarchicalSeparator) === 0,\n    exhaustive: exhaustive,\n    data: null\n  };\n}\n","'use strict';\n\nvar EventEmitter = require('@algolia/events');\nvar inherits = require('../functions/inherits');\n\n/**\n * A DerivedHelper is a way to create sub requests to\n * Algolia from a main helper.\n * @class\n * @classdesc The DerivedHelper provides an event based interface for search callbacks:\n *  - search: when a search is triggered using the `search()` method.\n *  - result: when the response is retrieved from Algolia and is processed.\n *    This event contains a {@link SearchResults} object and the\n *    {@link SearchParameters} corresponding to this answer.\n */\nfunction DerivedHelper(mainHelper, fn) {\n  this.main = mainHelper;\n  this.fn = fn;\n  this.lastResults = null;\n}\n\ninherits(DerivedHelper, EventEmitter);\n\n/**\n * Detach this helper from the main helper\n * @return {undefined}\n * @throws Error if the derived helper is already detached\n */\nDerivedHelper.prototype.detach = function() {\n  this.removeAllListeners();\n  this.main.detachDerivedHelper(this);\n};\n\nDerivedHelper.prototype.getModifiedState = function(parameters) {\n  return this.fn(parameters);\n};\n\nmodule.exports = DerivedHelper;\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nfunction EventEmitter() {\n  this._events = this._events || {};\n  this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\n// EventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function(n) {\n  if (!isNumber(n) || n < 0 || isNaN(n))\n    throw TypeError('n must be a positive number');\n  this._maxListeners = n;\n  return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n  var er, handler, len, args, i, listeners;\n\n  if (!this._events)\n    this._events = {};\n\n  // If there is no 'error' event listener then throw.\n  if (type === 'error') {\n    if (!this._events.error ||\n        (isObject(this._events.error) && !this._events.error.length)) {\n      er = arguments[1];\n      if (er instanceof Error) {\n        throw er; // Unhandled 'error' event\n      } else {\n        // At least give some kind of context to the user\n        var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n        err.context = er;\n        throw err;\n      }\n    }\n  }\n\n  handler = this._events[type];\n\n  if (isUndefined(handler))\n    return false;\n\n  if (isFunction(handler)) {\n    switch (arguments.length) {\n      // fast cases\n      case 1:\n        handler.call(this);\n        break;\n      case 2:\n        handler.call(this, arguments[1]);\n        break;\n      case 3:\n        handler.call(this, arguments[1], arguments[2]);\n        break;\n      // slower\n      default:\n        args = Array.prototype.slice.call(arguments, 1);\n        handler.apply(this, args);\n    }\n  } else if (isObject(handler)) {\n    args = Array.prototype.slice.call(arguments, 1);\n    listeners = handler.slice();\n    len = listeners.length;\n    for (i = 0; i < len; i++)\n      listeners[i].apply(this, args);\n  }\n\n  return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n  var m;\n\n  if (!isFunction(listener))\n    throw TypeError('listener must be a function');\n\n  if (!this._events)\n    this._events = {};\n\n  // To avoid recursion in the case that type === \"newListener\"! Before\n  // adding it to the listeners, first emit \"newListener\".\n  if (this._events.newListener)\n    this.emit('newListener', type,\n              isFunction(listener.listener) ?\n              listener.listener : listener);\n\n  if (!this._events[type])\n    // Optimize the case of one listener. Don't need the extra array object.\n    this._events[type] = listener;\n  else if (isObject(this._events[type]))\n    // If we've already got an array, just append.\n    this._events[type].push(listener);\n  else\n    // Adding the second element, need to change to array.\n    this._events[type] = [this._events[type], listener];\n\n  // Check for listener leak\n  if (isObject(this._events[type]) && !this._events[type].warned) {\n    if (!isUndefined(this._maxListeners)) {\n      m = this._maxListeners;\n    } else {\n      m = EventEmitter.defaultMaxListeners;\n    }\n\n    if (m && m > 0 && this._events[type].length > m) {\n      this._events[type].warned = true;\n      console.error('(node) warning: possible EventEmitter memory ' +\n                    'leak detected. %d listeners added. ' +\n                    'Use emitter.setMaxListeners() to increase limit.',\n                    this._events[type].length);\n      if (typeof console.trace === 'function') {\n        // not supported in IE 10\n        console.trace();\n      }\n    }\n  }\n\n  return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n  if (!isFunction(listener))\n    throw TypeError('listener must be a function');\n\n  var fired = false;\n\n  function g() {\n    this.removeListener(type, g);\n\n    if (!fired) {\n      fired = true;\n      listener.apply(this, arguments);\n    }\n  }\n\n  g.listener = listener;\n  this.on(type, g);\n\n  return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n  var list, position, length, i;\n\n  if (!isFunction(listener))\n    throw TypeError('listener must be a function');\n\n  if (!this._events || !this._events[type])\n    return this;\n\n  list = this._events[type];\n  length = list.length;\n  position = -1;\n\n  if (list === listener ||\n      (isFunction(list.listener) && list.listener === listener)) {\n    delete this._events[type];\n    if (this._events.removeListener)\n      this.emit('removeListener', type, listener);\n\n  } else if (isObject(list)) {\n    for (i = length; i-- > 0;) {\n      if (list[i] === listener ||\n          (list[i].listener && list[i].listener === listener)) {\n        position = i;\n        break;\n      }\n    }\n\n    if (position < 0)\n      return this;\n\n    if (list.length === 1) {\n      list.length = 0;\n      delete this._events[type];\n    } else {\n      list.splice(position, 1);\n    }\n\n    if (this._events.removeListener)\n      this.emit('removeListener', type, listener);\n  }\n\n  return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n  var key, listeners;\n\n  if (!this._events)\n    return this;\n\n  // not listening for removeListener, no need to emit\n  if (!this._events.removeListener) {\n    if (arguments.length === 0)\n      this._events = {};\n    else if (this._events[type])\n      delete this._events[type];\n    return this;\n  }\n\n  // emit removeListener for all listeners on all events\n  if (arguments.length === 0) {\n    for (key in this._events) {\n      if (key === 'removeListener') continue;\n      this.removeAllListeners(key);\n    }\n    this.removeAllListeners('removeListener');\n    this._events = {};\n    return this;\n  }\n\n  listeners = this._events[type];\n\n  if (isFunction(listeners)) {\n    this.removeListener(type, listeners);\n  } else if (listeners) {\n    // LIFO order\n    while (listeners.length)\n      this.removeListener(type, listeners[listeners.length - 1]);\n  }\n  delete this._events[type];\n\n  return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n  var ret;\n  if (!this._events || !this._events[type])\n    ret = [];\n  else if (isFunction(this._events[type]))\n    ret = [this._events[type]];\n  else\n    ret = this._events[type].slice();\n  return ret;\n};\n\nEventEmitter.prototype.listenerCount = function(type) {\n  if (this._events) {\n    var evlistener = this._events[type];\n\n    if (isFunction(evlistener))\n      return 1;\n    else if (evlistener)\n      return evlistener.length;\n  }\n  return 0;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n  return emitter.listenerCount(type);\n};\n\nfunction isFunction(arg) {\n  return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n  return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n  return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n  return arg === void 0;\n}\n","'use strict';\n\nfunction inherits(ctor, superCtor) {\n  ctor.prototype = Object.create(superCtor.prototype, {\n    constructor: {\n      value: ctor,\n      enumerable: false,\n      writable: true,\n      configurable: true\n    }\n  });\n}\n\nmodule.exports = inherits;\n","'use strict';\n\nvar merge = require('./functions/merge');\n\nfunction sortObject(obj) {\n  return Object.keys(obj)\n    .sort(function(a, b) {\n      return a.localeCompare(b);\n    })\n    .reduce(function(acc, curr) {\n      acc[curr] = obj[curr];\n      return acc;\n    }, {});\n}\n\nvar requestBuilder = {\n  /**\n   * Get all the queries to send to the client, those queries can used directly\n   * with the Algolia client.\n   * @private\n   * @return {object[]} The queries\n   */\n  _getQueries: function getQueries(index, state) {\n    var queries = [];\n\n    // One query for the hits\n    queries.push({\n      indexName: index,\n      params: requestBuilder._getHitsSearchParams(state)\n    });\n\n    // One for each disjunctive facets\n    state.getRefinedDisjunctiveFacets().forEach(function(refinedFacet) {\n      queries.push({\n        indexName: index,\n        params: requestBuilder._getDisjunctiveFacetSearchParams(state, refinedFacet)\n      });\n    });\n\n    // More to get the parent levels of the hierarchical facets when refined\n    state.getRefinedHierarchicalFacets().forEach(function(refinedFacet) {\n      var hierarchicalFacet = state.getHierarchicalFacetByName(refinedFacet);\n      var currentRefinement = state.getHierarchicalRefinement(refinedFacet);\n      var separator = state._getHierarchicalFacetSeparator(hierarchicalFacet);\n\n      // If we are deeper than level 0 (starting from `beer > IPA`)\n      // we want to get all parent values\n      if (currentRefinement.length > 0 && currentRefinement[0].split(separator).length > 1) {\n        // We generate a map of the filters we will use for our facet values queries\n        var filtersMap = currentRefinement[0].split(separator).slice(0, -1).reduce(\n          function createFiltersMap(map, segment, level) {\n            return map.concat({\n              attribute: hierarchicalFacet.attributes[level],\n              value: level === 0\n                ? segment\n                : [map[map.length - 1].value, segment].join(separator)\n            });\n          }\n        , []);\n\n        filtersMap.forEach(function(filter, level) {\n          var params = requestBuilder._getDisjunctiveFacetSearchParams(\n            state,\n            filter.attribute,\n            level === 0\n          );\n\n          // Keep facet filters unrelated to current hierarchical attributes\n          function hasHierarchicalFacetFilter(value) {\n            return hierarchicalFacet.attributes.some(function(attribute) {\n              return attribute === value.split(':')[0];\n            });\n          }\n\n          var filteredFacetFilters = (params.facetFilters || []).reduce(function(acc, facetFilter) {\n            if (Array.isArray(facetFilter)) {\n              var filtered = facetFilter.filter(function(filterValue) {\n                return !hasHierarchicalFacetFilter(filterValue);\n              });\n\n              if (filtered.length > 0) {\n                acc.push(filtered);\n              }\n            }\n\n            if (typeof facetFilter === 'string' && !hasHierarchicalFacetFilter(facetFilter)) {\n              acc.push(facetFilter);\n            }\n\n            return acc;\n          }, []);\n\n          var parent = filtersMap[level - 1];\n          if (level > 0) {\n            params.facetFilters = filteredFacetFilters.concat(parent.attribute + ':' + parent.value);\n          } else {\n            params.facetFilters = filteredFacetFilters.length > 0 ? filteredFacetFilters : undefined;\n          }\n\n          queries.push({indexName: index, params: params});\n        });\n      }\n    });\n\n    return queries;\n  },\n\n  /**\n   * Build search parameters used to fetch hits\n   * @private\n   * @return {object.<string, any>}\n   */\n  _getHitsSearchParams: function(state) {\n    var facets = state.facets\n      .concat(state.disjunctiveFacets)\n      .concat(requestBuilder._getHitsHierarchicalFacetsAttributes(state));\n\n\n    var facetFilters = requestBuilder._getFacetFilters(state);\n    var numericFilters = requestBuilder._getNumericFilters(state);\n    var tagFilters = requestBuilder._getTagFilters(state);\n    var additionalParams = {\n      facets: facets.indexOf('*') > -1 ? ['*'] : facets,\n      tagFilters: tagFilters\n    };\n\n    if (facetFilters.length > 0) {\n      additionalParams.facetFilters = facetFilters;\n    }\n\n    if (numericFilters.length > 0) {\n      additionalParams.numericFilters = numericFilters;\n    }\n\n    return sortObject(merge({}, state.getQueryParams(), additionalParams));\n  },\n\n  /**\n   * Build search parameters used to fetch a disjunctive facet\n   * @private\n   * @param  {string} facet the associated facet name\n   * @param  {boolean} hierarchicalRootLevel ?? FIXME\n   * @return {object}\n   */\n  _getDisjunctiveFacetSearchParams: function(state, facet, hierarchicalRootLevel) {\n    var facetFilters = requestBuilder._getFacetFilters(state, facet, hierarchicalRootLevel);\n    var numericFilters = requestBuilder._getNumericFilters(state, facet);\n    var tagFilters = requestBuilder._getTagFilters(state);\n    var additionalParams = {\n      hitsPerPage: 0,\n      page: 0,\n      analytics: false,\n      clickAnalytics: false\n    };\n\n    if (tagFilters.length > 0) {\n      additionalParams.tagFilters = tagFilters;\n    }\n\n    var hierarchicalFacet = state.getHierarchicalFacetByName(facet);\n\n    if (hierarchicalFacet) {\n      additionalParams.facets = requestBuilder._getDisjunctiveHierarchicalFacetAttribute(\n        state,\n        hierarchicalFacet,\n        hierarchicalRootLevel\n      );\n    } else {\n      additionalParams.facets = facet;\n    }\n\n    if (numericFilters.length > 0) {\n      additionalParams.numericFilters = numericFilters;\n    }\n\n    if (facetFilters.length > 0) {\n      additionalParams.facetFilters = facetFilters;\n    }\n\n    return sortObject(merge({}, state.getQueryParams(), additionalParams));\n  },\n\n  /**\n   * Return the numeric filters in an algolia request fashion\n   * @private\n   * @param {string} [facetName] the name of the attribute for which the filters should be excluded\n   * @return {string[]} the numeric filters in the algolia format\n   */\n  _getNumericFilters: function(state, facetName) {\n    if (state.numericFilters) {\n      return state.numericFilters;\n    }\n\n    var numericFilters = [];\n\n    Object.keys(state.numericRefinements).forEach(function(attribute) {\n      var operators = state.numericRefinements[attribute] || {};\n      Object.keys(operators).forEach(function(operator) {\n        var values = operators[operator] || [];\n        if (facetName !== attribute) {\n          values.forEach(function(value) {\n            if (Array.isArray(value)) {\n              var vs = value.map(function(v) {\n                return attribute + operator + v;\n              });\n              numericFilters.push(vs);\n            } else {\n              numericFilters.push(attribute + operator + value);\n            }\n          });\n        }\n      });\n    });\n\n    return numericFilters;\n  },\n\n  /**\n   * Return the tags filters depending\n   * @private\n   * @return {string}\n   */\n  _getTagFilters: function(state) {\n    if (state.tagFilters) {\n      return state.tagFilters;\n    }\n\n    return state.tagRefinements.join(',');\n  },\n\n\n  /**\n   * Build facetFilters parameter based on current refinements. The array returned\n   * contains strings representing the facet filters in the algolia format.\n   * @private\n   * @param  {string} [facet] if set, the current disjunctive facet\n   * @return {array.<string>}\n   */\n  _getFacetFilters: function(state, facet, hierarchicalRootLevel) {\n    var facetFilters = [];\n\n    var facetsRefinements = state.facetsRefinements || {};\n    Object.keys(facetsRefinements).forEach(function(facetName) {\n      var facetValues = facetsRefinements[facetName] || [];\n      facetValues.forEach(function(facetValue) {\n        facetFilters.push(facetName + ':' + facetValue);\n      });\n    });\n\n    var facetsExcludes = state.facetsExcludes || {};\n    Object.keys(facetsExcludes).forEach(function(facetName) {\n      var facetValues = facetsExcludes[facetName] || [];\n      facetValues.forEach(function(facetValue) {\n        facetFilters.push(facetName + ':-' + facetValue);\n      });\n    });\n\n    var disjunctiveFacetsRefinements = state.disjunctiveFacetsRefinements || {};\n    Object.keys(disjunctiveFacetsRefinements).forEach(function(facetName) {\n      var facetValues = disjunctiveFacetsRefinements[facetName] || [];\n      if (facetName === facet || !facetValues || facetValues.length === 0) {\n        return;\n      }\n      var orFilters = [];\n\n      facetValues.forEach(function(facetValue) {\n        orFilters.push(facetName + ':' + facetValue);\n      });\n\n      facetFilters.push(orFilters);\n    });\n\n    var hierarchicalFacetsRefinements = state.hierarchicalFacetsRefinements || {};\n    Object.keys(hierarchicalFacetsRefinements).forEach(function(facetName) {\n      var facetValues = hierarchicalFacetsRefinements[facetName] || [];\n      var facetValue = facetValues[0];\n\n      if (facetValue === undefined) {\n        return;\n      }\n\n      var hierarchicalFacet = state.getHierarchicalFacetByName(facetName);\n      var separator = state._getHierarchicalFacetSeparator(hierarchicalFacet);\n      var rootPath = state._getHierarchicalRootPath(hierarchicalFacet);\n      var attributeToRefine;\n      var attributesIndex;\n\n      // we ask for parent facet values only when the `facet` is the current hierarchical facet\n      if (facet === facetName) {\n        // if we are at the root level already, no need to ask for facet values, we get them from\n        // the hits query\n        if (facetValue.indexOf(separator) === -1 || (!rootPath && hierarchicalRootLevel === true) ||\n          (rootPath && rootPath.split(separator).length === facetValue.split(separator).length)) {\n          return;\n        }\n\n        if (!rootPath) {\n          attributesIndex = facetValue.split(separator).length - 2;\n          facetValue = facetValue.slice(0, facetValue.lastIndexOf(separator));\n        } else {\n          attributesIndex = rootPath.split(separator).length - 1;\n          facetValue = rootPath;\n        }\n\n        attributeToRefine = hierarchicalFacet.attributes[attributesIndex];\n      } else {\n        attributesIndex = facetValue.split(separator).length - 1;\n\n        attributeToRefine = hierarchicalFacet.attributes[attributesIndex];\n      }\n\n      if (attributeToRefine) {\n        facetFilters.push([attributeToRefine + ':' + facetValue]);\n      }\n    });\n\n    return facetFilters;\n  },\n\n  _getHitsHierarchicalFacetsAttributes: function(state) {\n    var out = [];\n\n    return state.hierarchicalFacets.reduce(\n      // ask for as much levels as there's hierarchical refinements\n      function getHitsAttributesForHierarchicalFacet(allAttributes, hierarchicalFacet) {\n        var hierarchicalRefinement = state.getHierarchicalRefinement(hierarchicalFacet.name)[0];\n\n        // if no refinement, ask for root level\n        if (!hierarchicalRefinement) {\n          allAttributes.push(hierarchicalFacet.attributes[0]);\n          return allAttributes;\n        }\n\n        var separator = state._getHierarchicalFacetSeparator(hierarchicalFacet);\n        var level = hierarchicalRefinement.split(separator).length;\n        var newAttributes = hierarchicalFacet.attributes.slice(0, level + 1);\n\n        return allAttributes.concat(newAttributes);\n      }, out);\n  },\n\n  _getDisjunctiveHierarchicalFacetAttribute: function(state, hierarchicalFacet, rootLevel) {\n    var separator = state._getHierarchicalFacetSeparator(hierarchicalFacet);\n    if (rootLevel === true) {\n      var rootPath = state._getHierarchicalRootPath(hierarchicalFacet);\n      var attributeIndex = 0;\n\n      if (rootPath) {\n        attributeIndex = rootPath.split(separator).length;\n      }\n      return [hierarchicalFacet.attributes[attributeIndex]];\n    }\n\n    var hierarchicalRefinement = state.getHierarchicalRefinement(hierarchicalFacet.name)[0] || '';\n    // if refinement is 'beers > IPA > Flying dog',\n    // then we want `facets: ['beers > IPA']` as disjunctive facet (parent level values)\n\n    var parentLevel = hierarchicalRefinement.split(separator).length - 1;\n    return hierarchicalFacet.attributes.slice(0, parentLevel + 1);\n  },\n\n  getSearchForFacetQuery: function(facetName, query, maxFacetHits, state) {\n    var stateForSearchForFacetValues = state.isDisjunctiveFacet(facetName) ?\n      state.clearRefinements(facetName) :\n      state;\n    var searchForFacetSearchParameters = {\n      facetQuery: query,\n      facetName: facetName\n    };\n    if (typeof maxFacetHits === 'number') {\n      searchForFacetSearchParameters.maxFacetHits = maxFacetHits;\n    }\n    return sortObject(merge(\n      {},\n      requestBuilder._getHitsSearchParams(stateForSearchForFacetValues),\n      searchForFacetSearchParameters\n    ));\n  }\n};\n\nmodule.exports = requestBuilder;\n","export function createDocumentationLink(_ref) {\n  var name = _ref.name,\n      _ref$connector = _ref.connector,\n      connector = _ref$connector === void 0 ? false : _ref$connector;\n  return ['https://www.algolia.com/doc/api-reference/widgets/', name, '/js/', connector ? '#connector' : ''].join('');\n}\nexport function createDocumentationMessageGenerator() {\n  for (var _len = arguments.length, widgets = new Array(_len), _key = 0; _key < _len; _key++) {\n    widgets[_key] = arguments[_key];\n  }\n\n  var links = widgets.map(function (widget) {\n    return createDocumentationLink(widget);\n  }).join(', ');\n  return function (message) {\n    return [message, \"See documentation: \".concat(links)].filter(Boolean).join('\\n\\n');\n  };\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n/**\n * This implementation is taken from Lodash implementation.\n * See: https://github.com/lodash/lodash/blob/master/isPlainObject.js\n */\nfunction getTag(value) {\n  if (value === null) {\n    return value === undefined ? '[object Undefined]' : '[object Null]';\n  }\n\n  return Object.prototype.toString.call(value);\n}\n\nfunction isObjectLike(value) {\n  return _typeof(value) === 'object' && value !== null;\n}\n/**\n * Checks if `value` is a plain object.\n *\n * A plain object is an object created by the `Object`\n * constructor or with a `[[Prototype]]` of `null`.\n */\n\n\nexport function isPlainObject(value) {\n  if (!isObjectLike(value) || getTag(value) !== '[object Object]') {\n    return false;\n  }\n\n  if (Object.getPrototypeOf(value) === null) {\n    return true;\n  }\n\n  var proto = value;\n\n  while (Object.getPrototypeOf(proto) !== null) {\n    proto = Object.getPrototypeOf(proto);\n  }\n\n  return Object.getPrototypeOf(value) === proto;\n}","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport { findIndex } from \"./findIndex.js\";\nimport { uniq } from \"./uniq.js\";\n\nvar mergeWithRest = function mergeWithRest(left, right) {\n  var facets = right.facets,\n      disjunctiveFacets = right.disjunctiveFacets,\n      facetsRefinements = right.facetsRefinements,\n      facetsExcludes = right.facetsExcludes,\n      disjunctiveFacetsRefinements = right.disjunctiveFacetsRefinements,\n      numericRefinements = right.numericRefinements,\n      tagRefinements = right.tagRefinements,\n      hierarchicalFacets = right.hierarchicalFacets,\n      hierarchicalFacetsRefinements = right.hierarchicalFacetsRefinements,\n      ruleContexts = right.ruleContexts,\n      rest = _objectWithoutProperties(right, [\"facets\", \"disjunctiveFacets\", \"facetsRefinements\", \"facetsExcludes\", \"disjunctiveFacetsRefinements\", \"numericRefinements\", \"tagRefinements\", \"hierarchicalFacets\", \"hierarchicalFacetsRefinements\", \"ruleContexts\"]);\n\n  return left.setQueryParameters(rest);\n}; // Merge facets\n\n\nvar mergeFacets = function mergeFacets(left, right) {\n  return right.facets.reduce(function (_, name) {\n    return _.addFacet(name);\n  }, left);\n};\n\nvar mergeDisjunctiveFacets = function mergeDisjunctiveFacets(left, right) {\n  return right.disjunctiveFacets.reduce(function (_, name) {\n    return _.addDisjunctiveFacet(name);\n  }, left);\n};\n\nvar mergeHierarchicalFacets = function mergeHierarchicalFacets(left, right) {\n  return left.setQueryParameters({\n    hierarchicalFacets: right.hierarchicalFacets.reduce(function (facets, facet) {\n      var index = findIndex(facets, function (_) {\n        return _.name === facet.name;\n      });\n\n      if (index === -1) {\n        return facets.concat(facet);\n      }\n\n      var nextFacets = facets.slice();\n      nextFacets.splice(index, 1, facet);\n      return nextFacets;\n    }, left.hierarchicalFacets)\n  });\n}; // Merge facet refinements\n\n\nvar mergeTagRefinements = function mergeTagRefinements(left, right) {\n  return right.tagRefinements.reduce(function (_, value) {\n    return _.addTagRefinement(value);\n  }, left);\n};\n\nvar mergeFacetRefinements = function mergeFacetRefinements(left, right) {\n  return left.setQueryParameters({\n    facetsRefinements: _objectSpread(_objectSpread({}, left.facetsRefinements), right.facetsRefinements)\n  });\n};\n\nvar mergeFacetsExcludes = function mergeFacetsExcludes(left, right) {\n  return left.setQueryParameters({\n    facetsExcludes: _objectSpread(_objectSpread({}, left.facetsExcludes), right.facetsExcludes)\n  });\n};\n\nvar mergeDisjunctiveFacetsRefinements = function mergeDisjunctiveFacetsRefinements(left, right) {\n  return left.setQueryParameters({\n    disjunctiveFacetsRefinements: _objectSpread(_objectSpread({}, left.disjunctiveFacetsRefinements), right.disjunctiveFacetsRefinements)\n  });\n};\n\nvar mergeNumericRefinements = function mergeNumericRefinements(left, right) {\n  return left.setQueryParameters({\n    numericRefinements: _objectSpread(_objectSpread({}, left.numericRefinements), right.numericRefinements)\n  });\n};\n\nvar mergeHierarchicalFacetsRefinements = function mergeHierarchicalFacetsRefinements(left, right) {\n  return left.setQueryParameters({\n    hierarchicalFacetsRefinements: _objectSpread(_objectSpread({}, left.hierarchicalFacetsRefinements), right.hierarchicalFacetsRefinements)\n  });\n};\n\nvar mergeRuleContexts = function mergeRuleContexts(left, right) {\n  var ruleContexts = uniq([].concat(left.ruleContexts).concat(right.ruleContexts).filter(Boolean));\n\n  if (ruleContexts.length > 0) {\n    return left.setQueryParameters({\n      ruleContexts: ruleContexts\n    });\n  }\n\n  return left;\n};\n\nexport var mergeSearchParameters = function mergeSearchParameters() {\n  for (var _len = arguments.length, parameters = new Array(_len), _key = 0; _key < _len; _key++) {\n    parameters[_key] = arguments[_key];\n  }\n\n  return parameters.reduce(function (left, right) {\n    var hierarchicalFacetsRefinementsMerged = mergeHierarchicalFacetsRefinements(left, right);\n    var hierarchicalFacetsMerged = mergeHierarchicalFacets(hierarchicalFacetsRefinementsMerged, right);\n    var tagRefinementsMerged = mergeTagRefinements(hierarchicalFacetsMerged, right);\n    var numericRefinementsMerged = mergeNumericRefinements(tagRefinementsMerged, right);\n    var disjunctiveFacetsRefinementsMerged = mergeDisjunctiveFacetsRefinements(numericRefinementsMerged, right);\n    var facetsExcludesMerged = mergeFacetsExcludes(disjunctiveFacetsRefinementsMerged, right);\n    var facetRefinementsMerged = mergeFacetRefinements(facetsExcludesMerged, right);\n    var disjunctiveFacetsMerged = mergeDisjunctiveFacets(facetRefinementsMerged, right);\n    var ruleContextsMerged = mergeRuleContexts(disjunctiveFacetsMerged, right);\n    var facetsMerged = mergeFacets(ruleContextsMerged, right);\n    return mergeWithRest(facetsMerged, right);\n  });\n};","// We aren't using the native `Array.prototype.findIndex` because the refactor away from Lodash is not\n// published as a major version.\n// Relying on the `findIndex` polyfill on user-land, which before was only required for niche use-cases,\n// was decided as too risky.\n// @MAJOR Replace with the native `Array.prototype.findIndex` method\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/findIndex\nexport function findIndex(array, comparator) {\n  if (!Array.isArray(array)) {\n    return -1;\n  }\n\n  for (var i = 0; i < array.length; i++) {\n    if (comparator(array[i])) {\n      return i;\n    }\n  }\n\n  return -1;\n}","export function uniq(array) {\n  return array.filter(function (value, index, self) {\n    return self.indexOf(value) === index;\n  });\n}","export function noop() {}","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { h, render } from 'preact';\nimport cx from 'classnames';\nimport connectHits from \"../../connectors/hits/connectHits.js\";\nimport Hits from \"../../components/Hits/Hits.js\";\nimport defaultTemplates from \"./defaultTemplates.js\";\nimport { getContainerNode, createDocumentationMessageGenerator } from \"../../lib/utils/index.js\";\nimport { prepareTemplateProps } from \"../../lib/templating/index.js\";\nimport { component } from \"../../lib/suit.js\";\nimport { withInsights, withInsightsListener } from \"../../lib/insights/index.js\";\nvar withUsage = createDocumentationMessageGenerator({\n  name: 'hits'\n});\nvar suit = component('Hits');\nvar HitsWithInsightsListener = withInsightsListener(Hits);\n\nvar renderer = function renderer(_ref) {\n  var renderState = _ref.renderState,\n      cssClasses = _ref.cssClasses,\n      containerNode = _ref.containerNode,\n      templates = _ref.templates;\n  return function (_ref2, isFirstRendering) {\n    var receivedHits = _ref2.hits,\n        results = _ref2.results,\n        instantSearchInstance = _ref2.instantSearchInstance,\n        insights = _ref2.insights,\n        bindEvent = _ref2.bindEvent;\n\n    if (isFirstRendering) {\n      renderState.templateProps = prepareTemplateProps({\n        defaultTemplates: defaultTemplates,\n        templatesConfig: instantSearchInstance.templatesConfig,\n        templates: templates\n      });\n      return;\n    }\n\n    render(h(HitsWithInsightsListener, {\n      cssClasses: cssClasses,\n      hits: receivedHits,\n      results: results,\n      templateProps: renderState.templateProps,\n      insights: insights,\n      sendEvent: function sendEvent(event) {\n        instantSearchInstance.sendEventToInsights(event);\n      },\n      bindEvent: bindEvent\n    }), containerNode);\n  };\n};\n\nvar hits = function hits(widgetParams) {\n  var _ref3 = widgetParams || {},\n      container = _ref3.container,\n      escapeHTML = _ref3.escapeHTML,\n      transformItems = _ref3.transformItems,\n      _ref3$templates = _ref3.templates,\n      templates = _ref3$templates === void 0 ? {} : _ref3$templates,\n      _ref3$cssClasses = _ref3.cssClasses,\n      userCssClasses = _ref3$cssClasses === void 0 ? {} : _ref3$cssClasses;\n\n  if (!container) {\n    throw new Error(withUsage('The `container` option is required.'));\n  }\n\n  var containerNode = getContainerNode(container);\n  var cssClasses = {\n    root: cx(suit(), userCssClasses.root),\n    emptyRoot: cx(suit({\n      modifierName: 'empty'\n    }), userCssClasses.emptyRoot),\n    list: cx(suit({\n      descendantName: 'list'\n    }), userCssClasses.list),\n    item: cx(suit({\n      descendantName: 'item'\n    }), userCssClasses.item)\n  };\n  var specializedRenderer = renderer({\n    containerNode: containerNode,\n    cssClasses: cssClasses,\n    renderState: {},\n    templates: templates\n  });\n  var makeWidget = withInsights(connectHits)(specializedRenderer, function () {\n    return render(null, containerNode);\n  });\n  return _objectSpread(_objectSpread({}, makeWidget({\n    escapeHTML: escapeHTML,\n    transformItems: transformItems\n  })), {}, {\n    $$widgetType: 'ais.hits'\n  });\n};\n\nexport default hits;","var n,l,u,i,t,o,r,f={},e=[],c=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;function s(n,l){for(var u in l)n[u]=l[u];return n}function a(n){var l=n.parentNode;l&&l.removeChild(n)}function h(l,u,i){var t,o,r,f={};for(r in u)\"key\"==r?t=u[r]:\"ref\"==r?o=u[r]:f[r]=u[r];if(arguments.length>2&&(f.children=arguments.length>3?n.call(arguments,2):i),\"function\"==typeof l&&null!=l.defaultProps)for(r in l.defaultProps)void 0===f[r]&&(f[r]=l.defaultProps[r]);return v(l,f,t,o,null)}function v(n,i,t,o,r){var f={type:n,props:i,key:t,ref:o,__k:null,__:null,__b:0,__e:null,__d:void 0,__c:null,__h:null,constructor:void 0,__v:null==r?++u:r};return null==r&&null!=l.vnode&&l.vnode(f),f}function y(){return{current:null}}function p(n){return n.children}function d(n,l){this.props=n,this.context=l}function _(n,l){if(null==l)return n.__?_(n.__,n.__.__k.indexOf(n)+1):null;for(var u;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e)return u.__e;return\"function\"==typeof n.type?_(n):null}function k(n){var l,u;if(null!=(n=n.__)&&null!=n.__c){for(n.__e=n.__c.base=null,l=0;l<n.__k.length;l++)if(null!=(u=n.__k[l])&&null!=u.__e){n.__e=n.__c.base=u.__e;break}return k(n)}}function b(n){(!n.__d&&(n.__d=!0)&&t.push(n)&&!g.__r++||o!==l.debounceRendering)&&((o=l.debounceRendering)||setTimeout)(g)}function g(){for(var n;g.__r=t.length;)n=t.sort(function(n,l){return n.__v.__b-l.__v.__b}),t=[],n.some(function(n){var l,u,i,t,o,r;n.__d&&(o=(t=(l=n).__v).__e,(r=l.__P)&&(u=[],(i=s({},t)).__v=t.__v+1,j(r,t,i,l.__n,void 0!==r.ownerSVGElement,null!=t.__h?[o]:null,u,null==o?_(t):o,t.__h),z(u,t),t.__e!=o&&k(t)))})}function w(n,l,u,i,t,o,r,c,s,a){var h,y,d,k,b,g,w,x=i&&i.__k||e,C=x.length;for(u.__k=[],h=0;h<l.length;h++)if(null!=(k=u.__k[h]=null==(k=l[h])||\"boolean\"==typeof k?null:\"string\"==typeof k||\"number\"==typeof k||\"bigint\"==typeof k?v(null,k,null,null,k):Array.isArray(k)?v(p,{children:k},null,null,null):k.__b>0?v(k.type,k.props,k.key,k.ref?k.ref:null,k.__v):k)){if(k.__=u,k.__b=u.__b+1,null===(d=x[h])||d&&k.key==d.key&&k.type===d.type)x[h]=void 0;else for(y=0;y<C;y++){if((d=x[y])&&k.key==d.key&&k.type===d.type){x[y]=void 0;break}d=null}j(n,k,d=d||f,t,o,r,c,s,a),b=k.__e,(y=k.ref)&&d.ref!=y&&(w||(w=[]),d.ref&&w.push(d.ref,null,k),w.push(y,k.__c||b,k)),null!=b?(null==g&&(g=b),\"function\"==typeof k.type&&k.__k===d.__k?k.__d=s=m(k,s,n):s=A(n,k,d,x,b,s),\"function\"==typeof u.type&&(u.__d=s)):s&&d.__e==s&&s.parentNode!=n&&(s=_(d))}for(u.__e=g,h=C;h--;)null!=x[h]&&(\"function\"==typeof u.type&&null!=x[h].__e&&x[h].__e==u.__d&&(u.__d=_(i,h+1)),N(x[h],x[h]));if(w)for(h=0;h<w.length;h++)M(w[h],w[++h],w[++h])}function m(n,l,u){for(var i,t=n.__k,o=0;t&&o<t.length;o++)(i=t[o])&&(i.__=n,l=\"function\"==typeof i.type?m(i,l,u):A(u,i,i,t,i.__e,l));return l}function x(n,l){return l=l||[],null==n||\"boolean\"==typeof n||(Array.isArray(n)?n.some(function(n){x(n,l)}):l.push(n)),l}function A(n,l,u,i,t,o){var r,f,e;if(void 0!==l.__d)r=l.__d,l.__d=void 0;else if(null==u||t!=o||null==t.parentNode)n:if(null==o||o.parentNode!==n)n.appendChild(t),r=null;else{for(f=o,e=0;(f=f.nextSibling)&&e<i.length;e+=2)if(f==t)break n;n.insertBefore(t,o),r=o}return void 0!==r?r:t.nextSibling}function C(n,l,u,i,t){var o;for(o in u)\"children\"===o||\"key\"===o||o in l||H(n,o,null,u[o],i);for(o in l)t&&\"function\"!=typeof l[o]||\"children\"===o||\"key\"===o||\"value\"===o||\"checked\"===o||u[o]===l[o]||H(n,o,l[o],u[o],i)}function $(n,l,u){\"-\"===l[0]?n.setProperty(l,u):n[l]=null==u?\"\":\"number\"!=typeof u||c.test(l)?u:u+\"px\"}function H(n,l,u,i,t){var o;n:if(\"style\"===l)if(\"string\"==typeof u)n.style.cssText=u;else{if(\"string\"==typeof i&&(n.style.cssText=i=\"\"),i)for(l in i)u&&l in u||$(n.style,l,\"\");if(u)for(l in u)i&&u[l]===i[l]||$(n.style,l,u[l])}else if(\"o\"===l[0]&&\"n\"===l[1])o=l!==(l=l.replace(/Capture$/,\"\")),l=l.toLowerCase()in n?l.toLowerCase().slice(2):l.slice(2),n.l||(n.l={}),n.l[l+o]=u,u?i||n.addEventListener(l,o?T:I,o):n.removeEventListener(l,o?T:I,o);else if(\"dangerouslySetInnerHTML\"!==l){if(t)l=l.replace(/xlink(H|:h)/,\"h\").replace(/sName$/,\"s\");else if(\"href\"!==l&&\"list\"!==l&&\"form\"!==l&&\"tabIndex\"!==l&&\"download\"!==l&&l in n)try{n[l]=null==u?\"\":u;break n}catch(n){}\"function\"==typeof u||(null!=u&&(!1!==u||\"a\"===l[0]&&\"r\"===l[1])?n.setAttribute(l,u):n.removeAttribute(l))}}function I(n){this.l[n.type+!1](l.event?l.event(n):n)}function T(n){this.l[n.type+!0](l.event?l.event(n):n)}function j(n,u,i,t,o,r,f,e,c){var a,h,v,y,_,k,b,g,m,x,A,C,$,H=u.type;if(void 0!==u.constructor)return null;null!=i.__h&&(c=i.__h,e=u.__e=i.__e,u.__h=null,r=[e]),(a=l.__b)&&a(u);try{n:if(\"function\"==typeof H){if(g=u.props,m=(a=H.contextType)&&t[a.__c],x=a?m?m.props.value:a.__:t,i.__c?b=(h=u.__c=i.__c).__=h.__E:(\"prototype\"in H&&H.prototype.render?u.__c=h=new H(g,x):(u.__c=h=new d(g,x),h.constructor=H,h.render=O),m&&m.sub(h),h.props=g,h.state||(h.state={}),h.context=x,h.__n=t,v=h.__d=!0,h.__h=[]),null==h.__s&&(h.__s=h.state),null!=H.getDerivedStateFromProps&&(h.__s==h.state&&(h.__s=s({},h.__s)),s(h.__s,H.getDerivedStateFromProps(g,h.__s))),y=h.props,_=h.state,v)null==H.getDerivedStateFromProps&&null!=h.componentWillMount&&h.componentWillMount(),null!=h.componentDidMount&&h.__h.push(h.componentDidMount);else{if(null==H.getDerivedStateFromProps&&g!==y&&null!=h.componentWillReceiveProps&&h.componentWillReceiveProps(g,x),!h.__e&&null!=h.shouldComponentUpdate&&!1===h.shouldComponentUpdate(g,h.__s,x)||u.__v===i.__v){h.props=g,h.state=h.__s,u.__v!==i.__v&&(h.__d=!1),h.__v=u,u.__e=i.__e,u.__k=i.__k,u.__k.forEach(function(n){n&&(n.__=u)}),h.__h.length&&f.push(h);break n}null!=h.componentWillUpdate&&h.componentWillUpdate(g,h.__s,x),null!=h.componentDidUpdate&&h.__h.push(function(){h.componentDidUpdate(y,_,k)})}if(h.context=x,h.props=g,h.__v=u,h.__P=n,A=l.__r,C=0,\"prototype\"in H&&H.prototype.render)h.state=h.__s,h.__d=!1,A&&A(u),a=h.render(h.props,h.state,h.context);else do{h.__d=!1,A&&A(u),a=h.render(h.props,h.state,h.context),h.state=h.__s}while(h.__d&&++C<25);h.state=h.__s,null!=h.getChildContext&&(t=s(s({},t),h.getChildContext())),v||null==h.getSnapshotBeforeUpdate||(k=h.getSnapshotBeforeUpdate(y,_)),$=null!=a&&a.type===p&&null==a.key?a.props.children:a,w(n,Array.isArray($)?$:[$],u,i,t,o,r,f,e,c),h.base=u.__e,u.__h=null,h.__h.length&&f.push(h),b&&(h.__E=h.__=null),h.__e=!1}else null==r&&u.__v===i.__v?(u.__k=i.__k,u.__e=i.__e):u.__e=L(i.__e,u,i,t,o,r,f,c);(a=l.diffed)&&a(u)}catch(n){u.__v=null,(c||null!=r)&&(u.__e=e,u.__h=!!c,r[r.indexOf(e)]=null),l.__e(n,u,i)}}function z(n,u){l.__c&&l.__c(u,n),n.some(function(u){try{n=u.__h,u.__h=[],n.some(function(n){n.call(u)})}catch(n){l.__e(n,u.__v)}})}function L(l,u,i,t,o,r,e,c){var s,h,v,y=i.props,p=u.props,d=u.type,k=0;if(\"svg\"===d&&(o=!0),null!=r)for(;k<r.length;k++)if((s=r[k])&&\"setAttribute\"in s==!!d&&(d?s.localName===d:3===s.nodeType)){l=s,r[k]=null;break}if(null==l){if(null===d)return document.createTextNode(p);l=o?document.createElementNS(\"http://www.w3.org/2000/svg\",d):document.createElement(d,p.is&&p),r=null,c=!1}if(null===d)y===p||c&&l.data===p||(l.data=p);else{if(r=r&&n.call(l.childNodes),h=(y=i.props||f).dangerouslySetInnerHTML,v=p.dangerouslySetInnerHTML,!c){if(null!=r)for(y={},k=0;k<l.attributes.length;k++)y[l.attributes[k].name]=l.attributes[k].value;(v||h)&&(v&&(h&&v.__html==h.__html||v.__html===l.innerHTML)||(l.innerHTML=v&&v.__html||\"\"))}if(C(l,p,y,o,c),v)u.__k=[];else if(k=u.props.children,w(l,Array.isArray(k)?k:[k],u,i,t,o&&\"foreignObject\"!==d,r,e,r?r[0]:i.__k&&_(i,0),c),null!=r)for(k=r.length;k--;)null!=r[k]&&a(r[k]);c||(\"value\"in p&&void 0!==(k=p.value)&&(k!==l.value||\"progress\"===d&&!k||\"option\"===d&&k!==y.value)&&H(l,\"value\",k,y.value,!1),\"checked\"in p&&void 0!==(k=p.checked)&&k!==l.checked&&H(l,\"checked\",k,y.checked,!1))}return l}function M(n,u,i){try{\"function\"==typeof n?n(u):n.current=u}catch(n){l.__e(n,i)}}function N(n,u,i){var t,o;if(l.unmount&&l.unmount(n),(t=n.ref)&&(t.current&&t.current!==n.__e||M(t,null,u)),null!=(t=n.__c)){if(t.componentWillUnmount)try{t.componentWillUnmount()}catch(n){l.__e(n,u)}t.base=t.__P=null,n.__c=void 0}if(t=n.__k)for(o=0;o<t.length;o++)t[o]&&N(t[o],u,\"function\"!=typeof n.type);i||null==n.__e||a(n.__e),n.__=n.__e=n.__d=void 0}function O(n,l,u){return this.constructor(n,u)}function P(u,i,t){var o,r,e;l.__&&l.__(u,i),r=(o=\"function\"==typeof t)?null:t&&t.__k||i.__k,e=[],j(i,u=(!o&&t||i).__k=h(p,null,[u]),r||f,f,void 0!==i.ownerSVGElement,!o&&t?[t]:r?null:i.firstChild?n.call(i.childNodes):null,e,!o&&t?t:r?r.__e:i.firstChild,o),z(e,u)}function S(n,l){P(n,l,S)}function q(l,u,i){var t,o,r,f=s({},l.props);for(r in u)\"key\"==r?t=u[r]:\"ref\"==r?o=u[r]:f[r]=u[r];return arguments.length>2&&(f.children=arguments.length>3?n.call(arguments,2):i),v(l.type,f,t||l.key,o||l.ref,null)}function B(n,l){var u={__c:l=\"__cC\"+r++,__:n,Consumer:function(n,l){return n.children(l)},Provider:function(n){var u,i;return this.getChildContext||(u=[],(i={})[l]=this,this.getChildContext=function(){return i},this.shouldComponentUpdate=function(n){this.props.value!==n.value&&u.some(b)},this.sub=function(n){u.push(n);var l=n.componentWillUnmount;n.componentWillUnmount=function(){u.splice(u.indexOf(n),1),l&&l.call(n)}}),n.children}};return u.Provider.__=u.Consumer.contextType=u}n=e.slice,l={__e:function(n,l,u,i){for(var t,o,r;l=l.__;)if((t=l.__c)&&!t.__)try{if((o=t.constructor)&&null!=o.getDerivedStateFromError&&(t.setState(o.getDerivedStateFromError(n)),r=t.__d),null!=t.componentDidCatch&&(t.componentDidCatch(n,i||{}),r=t.__d),r)return t.__E=t}catch(l){n=l}throw n}},u=0,i=function(n){return null!=n&&void 0===n.constructor},d.prototype.setState=function(n,l){var u;u=null!=this.__s&&this.__s!==this.state?this.__s:this.__s=s({},this.state),\"function\"==typeof n&&(n=n(s({},u),this.props)),n&&s(u,n),null!=n&&this.__v&&(l&&this.__h.push(l),b(this))},d.prototype.forceUpdate=function(n){this.__v&&(this.__e=!0,n&&this.__h.push(n),b(this))},d.prototype.render=p,t=[],g.__r=0,r=0;export{d as Component,p as Fragment,q as cloneElement,B as createContext,h as createElement,y as createRef,h,S as hydrate,i as isValidElement,l as options,P as render,x as toChildArray};\n//# sourceMappingURL=preact.module.js.map\n","import { EMPTY_ARR } from \"./constants\";\n\n/**\n * Assign properties from `props` to `obj`\n * @template O, P The obj and props types\n * @param {O} obj The object to copy properties to\n * @param {P} props The object to copy properties from\n * @returns {O & P}\n */\nexport function assign(obj, props) {\n\t// @ts-ignore We change the type of `obj` to be `O & P`\n\tfor (let i in props) obj[i] = props[i];\n\treturn /** @type {O & P} */ (obj);\n}\n\n/**\n * Remove a child node from its parent if attached. This is a workaround for\n * IE11 which doesn't support `Element.prototype.remove()`. Using this function\n * is smaller than including a dedicated polyfill.\n * @param {Node} node The node to remove\n */\nexport function removeNode(node) {\n\tlet parentNode = node.parentNode;\n\tif (parentNode) parentNode.removeChild(node);\n}\n\nexport const slice = EMPTY_ARR.slice;\n","import { _catchError } from './diff/catch-error';\n\n/**\n * The `option` object can potentially contain callback functions\n * that are called during various stages of our renderer. This is the\n * foundation on which all our addons like `preact/debug`, `preact/compat`,\n * and `preact/hooks` are based on. See the `Options` type in `internal.d.ts`\n * for a full list of available option hooks (most editors/IDEs allow you to\n * ctrl+click or cmd+click on mac the type definition below).\n * @type {import('./internal').Options}\n */\nconst options = {\n\t_catchError\n};\n\nexport default options;\n","import { slice } from './util';\nimport options from './options';\n\nlet vnodeId = 0;\n\n/**\n * Create an virtual node (used for JSX)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * constructor for this virtual node\n * @param {object | null | undefined} [props] The properties of the virtual node\n * @param {Array<import('.').ComponentChildren>} [children] The children of the virtual node\n * @returns {import('./internal').VNode}\n */\nexport function createElement(type, props, children) {\n\tlet normalizedProps = {},\n\t\tkey,\n\t\tref,\n\t\ti;\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 2) {\n\t\tnormalizedProps.children =\n\t\t\targuments.length > 3 ? slice.call(arguments, 2) : children;\n\t}\n\n\t// If a Component VNode, check for and apply defaultProps\n\t// Note: type may be undefined in development, must never error here.\n\tif (typeof type == 'function' && type.defaultProps != null) {\n\t\tfor (i in type.defaultProps) {\n\t\t\tif (normalizedProps[i] === undefined) {\n\t\t\t\tnormalizedProps[i] = type.defaultProps[i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn createVNode(type, normalizedProps, key, ref, null);\n}\n\n/**\n * Create a VNode (used internally by Preact)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * Constructor for this virtual node\n * @param {object | string | number | null} props The properties of this virtual node.\n * If this virtual node represents a text node, this is the text of the node (string or number).\n * @param {string | number | null} key The key for this virtual node, used when\n * diffing it against its children\n * @param {import('./internal').VNode[\"ref\"]} ref The ref property that will\n * receive a reference to its created child\n * @returns {import('./internal').VNode}\n */\nexport function createVNode(type, props, key, ref, original) {\n\t// V8 seems to be better at detecting type shapes if the object is allocated from the same call site\n\t// Do not inline into createElement and coerceToVNode!\n\tconst vnode = {\n\t\ttype,\n\t\tprops,\n\t\tkey,\n\t\tref,\n\t\t_children: null,\n\t\t_parent: null,\n\t\t_depth: 0,\n\t\t_dom: null,\n\t\t// _nextDom must be initialized to undefined b/c it will eventually\n\t\t// be set to dom.nextSibling which can return `null` and it is important\n\t\t// to be able to distinguish between an uninitialized _nextDom and\n\t\t// a _nextDom that has been set to `null`\n\t\t_nextDom: undefined,\n\t\t_component: null,\n\t\t_hydrating: null,\n\t\tconstructor: undefined,\n\t\t_original: original == null ? ++vnodeId : original\n\t};\n\n\t// Only invoke the vnode hook if this was *not* a direct copy:\n\tif (original == null && options.vnode != null) options.vnode(vnode);\n\n\treturn vnode;\n}\n\nexport function createRef() {\n\treturn { current: null };\n}\n\nexport function Fragment(props) {\n\treturn props.children;\n}\n\n/**\n * Check if a the argument is a valid Preact VNode.\n * @param {*} vnode\n * @returns {vnode is import('./internal').VNode}\n */\nexport const isValidElement = vnode =>\n\tvnode != null && vnode.constructor === undefined;\n","import { assign } from './util';\nimport { diff, commitRoot } from './diff/index';\nimport options from './options';\nimport { Fragment } from './create-element';\n\n/**\n * Base Component class. Provides `setState()` and `forceUpdate()`, which\n * trigger rendering\n * @param {object} props The initial component props\n * @param {object} context The initial context from parent components'\n * getChildContext\n */\nexport function Component(props, context) {\n\tthis.props = props;\n\tthis.context = context;\n}\n\n/**\n * Update component state and schedule a re-render.\n * @this {import('./internal').Component}\n * @param {object | ((s: object, p: object) => object)} update A hash of state\n * properties to update with new values or a function that given the current\n * state and props returns a new partial state\n * @param {() => void} [callback] A function to be called once component state is\n * updated\n */\nComponent.prototype.setState = function(update, callback) {\n\t// only clone state when copying to nextState the first time.\n\tlet s;\n\tif (this._nextState != null && this._nextState !== this.state) {\n\t\ts = this._nextState;\n\t} else {\n\t\ts = this._nextState = assign({}, this.state);\n\t}\n\n\tif (typeof update == 'function') {\n\t\t// Some libraries like `immer` mark the current state as readonly,\n\t\t// preventing us from mutating it, so we need to clone it. See #2716\n\t\tupdate = update(assign({}, s), this.props);\n\t}\n\n\tif (update) {\n\t\tassign(s, update);\n\t}\n\n\t// Skip update if updater function returned null\n\tif (update == null) return;\n\n\tif (this._vnode) {\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Immediately perform a synchronous re-render of the component\n * @this {import('./internal').Component}\n * @param {() => void} [callback] A function to be called after component is\n * re-rendered\n */\nComponent.prototype.forceUpdate = function(callback) {\n\tif (this._vnode) {\n\t\t// Set render mode so that we can differentiate where the render request\n\t\t// is coming from. We need this because forceUpdate should never call\n\t\t// shouldComponentUpdate\n\t\tthis._force = true;\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n * Virtual DOM is generally constructed via [JSX](http://jasonformat.com/wtf-is-jsx).\n * @param {object} props Props (eg: JSX attributes) received from parent\n * element/component\n * @param {object} state The component's current state\n * @param {object} context Context object, as returned by the nearest\n * ancestor's `getChildContext()`\n * @returns {import('./index').ComponentChildren | void}\n */\nComponent.prototype.render = Fragment;\n\n/**\n * @param {import('./internal').VNode} vnode\n * @param {number | null} [childIndex]\n */\nexport function getDomSibling(vnode, childIndex) {\n\tif (childIndex == null) {\n\t\t// Use childIndex==null as a signal to resume the search from the vnode's sibling\n\t\treturn vnode._parent\n\t\t\t? getDomSibling(vnode._parent, vnode._parent._children.indexOf(vnode) + 1)\n\t\t\t: null;\n\t}\n\n\tlet sibling;\n\tfor (; childIndex < vnode._children.length; childIndex++) {\n\t\tsibling = vnode._children[childIndex];\n\n\t\tif (sibling != null && sibling._dom != null) {\n\t\t\t// Since updateParentDomPointers keeps _dom pointer correct,\n\t\t\t// we can rely on _dom to tell us if this subtree contains a\n\t\t\t// rendered DOM node, and what the first rendered DOM node is\n\t\t\treturn sibling._dom;\n\t\t}\n\t}\n\n\t// If we get here, we have not found a DOM node in this vnode's children.\n\t// We must resume from this vnode's sibling (in it's parent _children array)\n\t// Only climb up and search the parent if we aren't searching through a DOM\n\t// VNode (meaning we reached the DOM parent of the original vnode that began\n\t// the search)\n\treturn typeof vnode.type == 'function' ? getDomSibling(vnode) : null;\n}\n\n/**\n * Trigger in-place re-rendering of a component.\n * @param {import('./internal').Component} component The component to rerender\n */\nfunction renderComponent(component) {\n\tlet vnode = component._vnode,\n\t\toldDom = vnode._dom,\n\t\tparentDom = component._parentDom;\n\n\tif (parentDom) {\n\t\tlet commitQueue = [];\n\t\tconst oldVNode = assign({}, vnode);\n\t\toldVNode._original = vnode._original + 1;\n\n\t\tdiff(\n\t\t\tparentDom,\n\t\t\tvnode,\n\t\t\toldVNode,\n\t\t\tcomponent._globalContext,\n\t\t\tparentDom.ownerSVGElement !== undefined,\n\t\t\tvnode._hydrating != null ? [oldDom] : null,\n\t\t\tcommitQueue,\n\t\t\toldDom == null ? getDomSibling(vnode) : oldDom,\n\t\t\tvnode._hydrating\n\t\t);\n\t\tcommitRoot(commitQueue, vnode);\n\n\t\tif (vnode._dom != oldDom) {\n\t\t\tupdateParentDomPointers(vnode);\n\t\t}\n\t}\n}\n\n/**\n * @param {import('./internal').VNode} vnode\n */\nfunction updateParentDomPointers(vnode) {\n\tif ((vnode = vnode._parent) != null && vnode._component != null) {\n\t\tvnode._dom = vnode._component.base = null;\n\t\tfor (let i = 0; i < vnode._children.length; i++) {\n\t\t\tlet child = vnode._children[i];\n\t\t\tif (child != null && child._dom != null) {\n\t\t\t\tvnode._dom = vnode._component.base = child._dom;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn updateParentDomPointers(vnode);\n\t}\n}\n\n/**\n * The render queue\n * @type {Array<import('./internal').Component>}\n */\nlet rerenderQueue = [];\n\n/*\n * The value of `Component.debounce` must asynchronously invoke the passed in callback. It is\n * important that contributors to Preact can consistently reason about what calls to `setState`, etc.\n * do, and when their effects will be applied. See the links below for some further reading on designing\n * asynchronous APIs.\n * * [Designing APIs for Asynchrony](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n * * [Callbacks synchronous and asynchronous](https://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/)\n */\n\nlet prevDebounce;\n\n/**\n * Enqueue a rerender of a component\n * @param {import('./internal').Component} c The component to rerender\n */\nexport function enqueueRender(c) {\n\tif (\n\t\t(!c._dirty &&\n\t\t\t(c._dirty = true) &&\n\t\t\trerenderQueue.push(c) &&\n\t\t\t!process._rerenderCount++) ||\n\t\tprevDebounce !== options.debounceRendering\n\t) {\n\t\tprevDebounce = options.debounceRendering;\n\t\t(prevDebounce || setTimeout)(process);\n\t}\n}\n\n/** Flush the render queue by rerendering all queued components */\nfunction process() {\n\tlet queue;\n\twhile ((process._rerenderCount = rerenderQueue.length)) {\n\t\tqueue = rerenderQueue.sort((a, b) => a._vnode._depth - b._vnode._depth);\n\t\trerenderQueue = [];\n\t\t// Don't update `renderCount` yet. Keep its value non-zero to prevent unnecessary\n\t\t// process() calls from getting scheduled while `queue` is still being consumed.\n\t\tqueue.some(c => {\n\t\t\tif (c._dirty) renderComponent(c);\n\t\t});\n\t}\n}\n\nprocess._rerenderCount = 0;\n","import { enqueueRender } from './component';\n\nexport let i = 0;\n\nexport function createContext(defaultValue, contextId) {\n\tcontextId = '__cC' + i++;\n\n\tconst context = {\n\t\t_id: contextId,\n\t\t_defaultValue: defaultValue,\n\t\t/** @type {import('./internal').FunctionComponent} */\n\t\tConsumer(props, contextValue) {\n\t\t\t// return props.children(\n\t\t\t// \tcontext[contextId] ? context[contextId].props.value : defaultValue\n\t\t\t// );\n\t\t\treturn props.children(contextValue);\n\t\t},\n\t\t/** @type {import('./internal').FunctionComponent} */\n\t\tProvider(props) {\n\t\t\tif (!this.getChildContext) {\n\t\t\t\tlet subs = [];\n\t\t\t\tlet ctx = {};\n\t\t\t\tctx[contextId] = this;\n\n\t\t\t\tthis.getChildContext = () => ctx;\n\n\t\t\t\tthis.shouldComponentUpdate = function(_props) {\n\t\t\t\t\tif (this.props.value !== _props.value) {\n\t\t\t\t\t\t// I think the forced value propagation here was only needed when `options.debounceRendering` was being bypassed:\n\t\t\t\t\t\t// https://github.com/preactjs/preact/commit/4d339fb803bea09e9f198abf38ca1bf8ea4b7771#diff-54682ce380935a717e41b8bfc54737f6R358\n\t\t\t\t\t\t// In those cases though, even with the value corrected, we're double-rendering all nodes.\n\t\t\t\t\t\t// It might be better to just tell folks not to use force-sync mode.\n\t\t\t\t\t\t// Currently, using `useContext()` in a class component will overwrite its `this.context` value.\n\t\t\t\t\t\t// subs.some(c => {\n\t\t\t\t\t\t// \tc.context = _props.value;\n\t\t\t\t\t\t// \tenqueueRender(c);\n\t\t\t\t\t\t// });\n\n\t\t\t\t\t\t// subs.some(c => {\n\t\t\t\t\t\t// \tc.context[contextId] = _props.value;\n\t\t\t\t\t\t// \tenqueueRender(c);\n\t\t\t\t\t\t// });\n\t\t\t\t\t\tsubs.some(enqueueRender);\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tthis.sub = c => {\n\t\t\t\t\tsubs.push(c);\n\t\t\t\t\tlet old = c.componentWillUnmount;\n\t\t\t\t\tc.componentWillUnmount = () => {\n\t\t\t\t\t\tsubs.splice(subs.indexOf(c), 1);\n\t\t\t\t\t\tif (old) old.call(c);\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn props.children;\n\t\t}\n\t};\n\n\t// Devtools needs access to the context object when it\n\t// encounters a Provider. This is necessary to support\n\t// setting `displayName` on the context object instead\n\t// of on the component itself. See:\n\t// https://reactjs.org/docs/context.html#contextdisplayname\n\n\treturn (context.Provider._contextRef = context.Consumer.contextType = context);\n}\n","export const EMPTY_OBJ = {};\nexport const EMPTY_ARR = [];\nexport const IS_NON_DIMENSIONAL = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;\n","import { diff, unmount, applyRef } from './index';\nimport { createVNode, Fragment } from '../create-element';\nimport { EMPTY_OBJ, EMPTY_ARR } from '../constants';\nimport { getDomSibling } from '../component';\n\n/**\n * Diff the children of a virtual node\n * @param {import('../internal').PreactElement} parentDom The DOM element whose\n * children are being diffed\n * @param {import('../internal').ComponentChildren[]} renderResult\n * @param {import('../internal').VNode} newParentVNode The new virtual\n * node whose children should be diff'ed against oldParentVNode\n * @param {import('../internal').VNode} oldParentVNode The old virtual\n * node whose children should be diff'ed against newParentVNode\n * @param {object} globalContext The current context object - modified by getChildContext\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {Array<import('../internal').PreactElement>} excessDomChildren\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').PreactElement} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n */\nexport function diffChildren(\n\tparentDom,\n\trenderResult,\n\tnewParentVNode,\n\toldParentVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating\n) {\n\tlet i, j, oldVNode, childVNode, newDom, firstChildDom, refs;\n\n\t// This is a compression of oldParentVNode!=null && oldParentVNode != EMPTY_OBJ && oldParentVNode._children || EMPTY_ARR\n\t// as EMPTY_OBJ._children should be `undefined`.\n\tlet oldChildren = (oldParentVNode && oldParentVNode._children) || EMPTY_ARR;\n\n\tlet oldChildrenLength = oldChildren.length;\n\n\tnewParentVNode._children = [];\n\tfor (i = 0; i < renderResult.length; i++) {\n\t\tchildVNode = renderResult[i];\n\n\t\tif (childVNode == null || typeof childVNode == 'boolean') {\n\t\t\tchildVNode = newParentVNode._children[i] = null;\n\t\t}\n\t\t// If this newVNode is being reused (e.g. <div>{reuse}{reuse}</div>) in the same diff,\n\t\t// or we are rendering a component (e.g. setState) copy the oldVNodes so it can have\n\t\t// it's own DOM & etc. pointers\n\t\telse if (\n\t\t\ttypeof childVNode == 'string' ||\n\t\t\ttypeof childVNode == 'number' ||\n\t\t\t// eslint-disable-next-line valid-typeof\n\t\t\ttypeof childVNode == 'bigint'\n\t\t) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tnull,\n\t\t\t\tchildVNode,\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tchildVNode\n\t\t\t);\n\t\t} else if (Array.isArray(childVNode)) {\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tFragment,\n\t\t\t\t{ children: childVNode },\n\t\t\t\tnull,\n\t\t\t\tnull,\n\t\t\t\tnull\n\t\t\t);\n\t\t} else if (childVNode._depth > 0) {\n\t\t\t// VNode is already in use, clone it. This can happen in the following\n\t\t\t// scenario:\n\t\t\t//   const reuse = <div />\n\t\t\t//   <div>{reuse}<span />{reuse}</div>\n\t\t\tchildVNode = newParentVNode._children[i] = createVNode(\n\t\t\t\tchildVNode.type,\n\t\t\t\tchildVNode.props,\n\t\t\t\tchildVNode.key,\n\t\t\t\tchildVNode.ref ? childVNode.ref : null,\n\t\t\t\tchildVNode._original\n\t\t\t);\n\t\t} else {\n\t\t\tchildVNode = newParentVNode._children[i] = childVNode;\n\t\t}\n\n\t\t// Terser removes the `continue` here and wraps the loop body\n\t\t// in a `if (childVNode) { ... } condition\n\t\tif (childVNode == null) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tchildVNode._parent = newParentVNode;\n\t\tchildVNode._depth = newParentVNode._depth + 1;\n\n\t\t// Check if we find a corresponding element in oldChildren.\n\t\t// If found, delete the array item by setting to `undefined`.\n\t\t// We use `undefined`, as `null` is reserved for empty placeholders\n\t\t// (holes).\n\t\toldVNode = oldChildren[i];\n\n\t\tif (\n\t\t\toldVNode === null ||\n\t\t\t(oldVNode &&\n\t\t\t\tchildVNode.key == oldVNode.key &&\n\t\t\t\tchildVNode.type === oldVNode.type)\n\t\t) {\n\t\t\toldChildren[i] = undefined;\n\t\t} else {\n\t\t\t// Either oldVNode === undefined or oldChildrenLength > 0,\n\t\t\t// so after this loop oldVNode == null or oldVNode is a valid value.\n\t\t\tfor (j = 0; j < oldChildrenLength; j++) {\n\t\t\t\toldVNode = oldChildren[j];\n\t\t\t\t// If childVNode is unkeyed, we only match similarly unkeyed nodes, otherwise we match by key.\n\t\t\t\t// We always match by type (in either case).\n\t\t\t\tif (\n\t\t\t\t\toldVNode &&\n\t\t\t\t\tchildVNode.key == oldVNode.key &&\n\t\t\t\t\tchildVNode.type === oldVNode.type\n\t\t\t\t) {\n\t\t\t\t\toldChildren[j] = undefined;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\toldVNode = null;\n\t\t\t}\n\t\t}\n\n\t\toldVNode = oldVNode || EMPTY_OBJ;\n\n\t\t// Morph the old element into the new one, but don't append it to the dom yet\n\t\tdiff(\n\t\t\tparentDom,\n\t\t\tchildVNode,\n\t\t\toldVNode,\n\t\t\tglobalContext,\n\t\t\tisSvg,\n\t\t\texcessDomChildren,\n\t\t\tcommitQueue,\n\t\t\toldDom,\n\t\t\tisHydrating\n\t\t);\n\n\t\tnewDom = childVNode._dom;\n\n\t\tif ((j = childVNode.ref) && oldVNode.ref != j) {\n\t\t\tif (!refs) refs = [];\n\t\t\tif (oldVNode.ref) refs.push(oldVNode.ref, null, childVNode);\n\t\t\trefs.push(j, childVNode._component || newDom, childVNode);\n\t\t}\n\n\t\tif (newDom != null) {\n\t\t\tif (firstChildDom == null) {\n\t\t\t\tfirstChildDom = newDom;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\ttypeof childVNode.type == 'function' &&\n\t\t\t\tchildVNode._children === oldVNode._children\n\t\t\t) {\n\t\t\t\tchildVNode._nextDom = oldDom = reorderChildren(\n\t\t\t\t\tchildVNode,\n\t\t\t\t\toldDom,\n\t\t\t\t\tparentDom\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\toldDom = placeChild(\n\t\t\t\t\tparentDom,\n\t\t\t\t\tchildVNode,\n\t\t\t\t\toldVNode,\n\t\t\t\t\toldChildren,\n\t\t\t\t\tnewDom,\n\t\t\t\t\toldDom\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tif (typeof newParentVNode.type == 'function') {\n\t\t\t\t// Because the newParentVNode is Fragment-like, we need to set it's\n\t\t\t\t// _nextDom property to the nextSibling of its last child DOM node.\n\t\t\t\t//\n\t\t\t\t// `oldDom` contains the correct value here because if the last child\n\t\t\t\t// is a Fragment-like, then oldDom has already been set to that child's _nextDom.\n\t\t\t\t// If the last child is a DOM VNode, then oldDom will be set to that DOM\n\t\t\t\t// node's nextSibling.\n\t\t\t\tnewParentVNode._nextDom = oldDom;\n\t\t\t}\n\t\t} else if (\n\t\t\toldDom &&\n\t\t\toldVNode._dom == oldDom &&\n\t\t\toldDom.parentNode != parentDom\n\t\t) {\n\t\t\t// The above condition is to handle null placeholders. See test in placeholder.test.js:\n\t\t\t// `efficiently replace null placeholders in parent rerenders`\n\t\t\toldDom = getDomSibling(oldVNode);\n\t\t}\n\t}\n\n\tnewParentVNode._dom = firstChildDom;\n\n\t// Remove remaining oldChildren if there are any.\n\tfor (i = oldChildrenLength; i--; ) {\n\t\tif (oldChildren[i] != null) {\n\t\t\tif (\n\t\t\t\ttypeof newParentVNode.type == 'function' &&\n\t\t\t\toldChildren[i]._dom != null &&\n\t\t\t\toldChildren[i]._dom == newParentVNode._nextDom\n\t\t\t) {\n\t\t\t\t// If the newParentVNode.__nextDom points to a dom node that is about to\n\t\t\t\t// be unmounted, then get the next sibling of that vnode and set\n\t\t\t\t// _nextDom to it\n\t\t\t\tnewParentVNode._nextDom = getDomSibling(oldParentVNode, i + 1);\n\t\t\t}\n\n\t\t\tunmount(oldChildren[i], oldChildren[i]);\n\t\t}\n\t}\n\n\t// Set refs only after unmount\n\tif (refs) {\n\t\tfor (i = 0; i < refs.length; i++) {\n\t\t\tapplyRef(refs[i], refs[++i], refs[++i]);\n\t\t}\n\t}\n}\n\nfunction reorderChildren(childVNode, oldDom, parentDom) {\n\t// Note: VNodes in nested suspended trees may be missing _children.\n\tlet c = childVNode._children;\n\tlet tmp = 0;\n\tfor (; c && tmp < c.length; tmp++) {\n\t\tlet vnode = c[tmp];\n\t\tif (vnode) {\n\t\t\t// We typically enter this code path on sCU bailout, where we copy\n\t\t\t// oldVNode._children to newVNode._children. If that is the case, we need\n\t\t\t// to update the old children's _parent pointer to point to the newVNode\n\t\t\t// (childVNode here).\n\t\t\tvnode._parent = childVNode;\n\n\t\t\tif (typeof vnode.type == 'function') {\n\t\t\t\toldDom = reorderChildren(vnode, oldDom, parentDom);\n\t\t\t} else {\n\t\t\t\toldDom = placeChild(parentDom, vnode, vnode, c, vnode._dom, oldDom);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn oldDom;\n}\n\n/**\n * Flatten and loop through the children of a virtual node\n * @param {import('../index').ComponentChildren} children The unflattened\n * children of a virtual node\n * @returns {import('../internal').VNode[]}\n */\nexport function toChildArray(children, out) {\n\tout = out || [];\n\tif (children == null || typeof children == 'boolean') {\n\t} else if (Array.isArray(children)) {\n\t\tchildren.some(child => {\n\t\t\ttoChildArray(child, out);\n\t\t});\n\t} else {\n\t\tout.push(children);\n\t}\n\treturn out;\n}\n\nfunction placeChild(\n\tparentDom,\n\tchildVNode,\n\toldVNode,\n\toldChildren,\n\tnewDom,\n\toldDom\n) {\n\tlet nextDom;\n\tif (childVNode._nextDom !== undefined) {\n\t\t// Only Fragments or components that return Fragment like VNodes will\n\t\t// have a non-undefined _nextDom. Continue the diff from the sibling\n\t\t// of last DOM child of this child VNode\n\t\tnextDom = childVNode._nextDom;\n\n\t\t// Eagerly cleanup _nextDom. We don't need to persist the value because\n\t\t// it is only used by `diffChildren` to determine where to resume the diff after\n\t\t// diffing Components and Fragments. Once we store it the nextDOM local var, we\n\t\t// can clean up the property\n\t\tchildVNode._nextDom = undefined;\n\t} else if (\n\t\toldVNode == null ||\n\t\tnewDom != oldDom ||\n\t\tnewDom.parentNode == null\n\t) {\n\t\touter: if (oldDom == null || oldDom.parentNode !== parentDom) {\n\t\t\tparentDom.appendChild(newDom);\n\t\t\tnextDom = null;\n\t\t} else {\n\t\t\t// `j<oldChildrenLength; j+=2` is an alternative to `j++<oldChildrenLength/2`\n\t\t\tfor (\n\t\t\t\tlet sibDom = oldDom, j = 0;\n\t\t\t\t(sibDom = sibDom.nextSibling) && j < oldChildren.length;\n\t\t\t\tj += 2\n\t\t\t) {\n\t\t\t\tif (sibDom == newDom) {\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t}\n\t\t\tparentDom.insertBefore(newDom, oldDom);\n\t\t\tnextDom = oldDom;\n\t\t}\n\t}\n\n\t// If we have pre-calculated the nextDOM node, use it. Else calculate it now\n\t// Strictly check for `undefined` here cuz `null` is a valid value of `nextDom`.\n\t// See more detail in create-element.js:createVNode\n\tif (nextDom !== undefined) {\n\t\toldDom = nextDom;\n\t} else {\n\t\toldDom = newDom.nextSibling;\n\t}\n\n\treturn oldDom;\n}\n","import { IS_NON_DIMENSIONAL } from '../constants';\nimport options from '../options';\n\n/**\n * Diff the old and new properties of a VNode and apply changes to the DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to apply\n * changes to\n * @param {object} newProps The new props\n * @param {object} oldProps The old props\n * @param {boolean} isSvg Whether or not this node is an SVG node\n * @param {boolean} hydrate Whether or not we are in hydration mode\n */\nexport function diffProps(dom, newProps, oldProps, isSvg, hydrate) {\n\tlet i;\n\n\tfor (i in oldProps) {\n\t\tif (i !== 'children' && i !== 'key' && !(i in newProps)) {\n\t\t\tsetProperty(dom, i, null, oldProps[i], isSvg);\n\t\t}\n\t}\n\n\tfor (i in newProps) {\n\t\tif (\n\t\t\t(!hydrate || typeof newProps[i] == 'function') &&\n\t\t\ti !== 'children' &&\n\t\t\ti !== 'key' &&\n\t\t\ti !== 'value' &&\n\t\t\ti !== 'checked' &&\n\t\t\toldProps[i] !== newProps[i]\n\t\t) {\n\t\t\tsetProperty(dom, i, newProps[i], oldProps[i], isSvg);\n\t\t}\n\t}\n}\n\nfunction setStyle(style, key, value) {\n\tif (key[0] === '-') {\n\t\tstyle.setProperty(key, value);\n\t} else if (value == null) {\n\t\tstyle[key] = '';\n\t} else if (typeof value != 'number' || IS_NON_DIMENSIONAL.test(key)) {\n\t\tstyle[key] = value;\n\t} else {\n\t\tstyle[key] = value + 'px';\n\t}\n}\n\n/**\n * Set a property value on a DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to modify\n * @param {string} name The name of the property to set\n * @param {*} value The value to set the property to\n * @param {*} oldValue The old value the property had\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node or not\n */\nexport function setProperty(dom, name, value, oldValue, isSvg) {\n\tlet useCapture;\n\n\to: if (name === 'style') {\n\t\tif (typeof value == 'string') {\n\t\t\tdom.style.cssText = value;\n\t\t} else {\n\t\t\tif (typeof oldValue == 'string') {\n\t\t\t\tdom.style.cssText = oldValue = '';\n\t\t\t}\n\n\t\t\tif (oldValue) {\n\t\t\t\tfor (name in oldValue) {\n\t\t\t\t\tif (!(value && name in value)) {\n\t\t\t\t\t\tsetStyle(dom.style, name, '');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\tfor (name in value) {\n\t\t\t\t\tif (!oldValue || value[name] !== oldValue[name]) {\n\t\t\t\t\t\tsetStyle(dom.style, name, value[name]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Benchmark for comparison: https://esbench.com/bench/574c954bdb965b9a00965ac6\n\telse if (name[0] === 'o' && name[1] === 'n') {\n\t\tuseCapture = name !== (name = name.replace(/Capture$/, ''));\n\n\t\t// Infer correct casing for DOM built-in events:\n\t\tif (name.toLowerCase() in dom) name = name.toLowerCase().slice(2);\n\t\telse name = name.slice(2);\n\n\t\tif (!dom._listeners) dom._listeners = {};\n\t\tdom._listeners[name + useCapture] = value;\n\n\t\tif (value) {\n\t\t\tif (!oldValue) {\n\t\t\t\tconst handler = useCapture ? eventProxyCapture : eventProxy;\n\t\t\t\tdom.addEventListener(name, handler, useCapture);\n\t\t\t}\n\t\t} else {\n\t\t\tconst handler = useCapture ? eventProxyCapture : eventProxy;\n\t\t\tdom.removeEventListener(name, handler, useCapture);\n\t\t}\n\t} else if (name !== 'dangerouslySetInnerHTML') {\n\t\tif (isSvg) {\n\t\t\t// Normalize incorrect prop usage for SVG:\n\t\t\t// - xlink:href / xlinkHref --> href (xlink:href was removed from SVG and isn't needed)\n\t\t\t// - className --> class\n\t\t\tname = name.replace(/xlink(H|:h)/, 'h').replace(/sName$/, 's');\n\t\t} else if (\n\t\t\tname !== 'href' &&\n\t\t\tname !== 'list' &&\n\t\t\tname !== 'form' &&\n\t\t\t// Default value in browsers is `-1` and an empty string is\n\t\t\t// cast to `0` instead\n\t\t\tname !== 'tabIndex' &&\n\t\t\tname !== 'download' &&\n\t\t\tname in dom\n\t\t) {\n\t\t\ttry {\n\t\t\t\tdom[name] = value == null ? '' : value;\n\t\t\t\t// labelled break is 1b smaller here than a return statement (sorry)\n\t\t\t\tbreak o;\n\t\t\t} catch (e) {}\n\t\t}\n\n\t\t// ARIA-attributes have a different notion of boolean values.\n\t\t// The value `false` is different from the attribute not\n\t\t// existing on the DOM, so we can't remove it. For non-boolean\n\t\t// ARIA-attributes we could treat false as a removal, but the\n\t\t// amount of exceptions would cost us too many bytes. On top of\n\t\t// that other VDOM frameworks also always stringify `false`.\n\n\t\tif (typeof value === 'function') {\n\t\t\t// never serialize functions as attribute values\n\t\t} else if (\n\t\t\tvalue != null &&\n\t\t\t(value !== false || (name[0] === 'a' && name[1] === 'r'))\n\t\t) {\n\t\t\tdom.setAttribute(name, value);\n\t\t} else {\n\t\t\tdom.removeAttribute(name);\n\t\t}\n\t}\n}\n\n/**\n * Proxy an event to hooked event handlers\n * @param {Event} e The event object from the browser\n * @private\n */\nfunction eventProxy(e) {\n\tthis._listeners[e.type + false](options.event ? options.event(e) : e);\n}\n\nfunction eventProxyCapture(e) {\n\tthis._listeners[e.type + true](options.event ? options.event(e) : e);\n}\n","import { EMPTY_OBJ } from '../constants';\nimport { Component, getDomSibling } from '../component';\nimport { Fragment } from '../create-element';\nimport { diffChildren } from './children';\nimport { diffProps, setProperty } from './props';\nimport { assign, removeNode, slice } from '../util';\nimport options from '../options';\n\n/**\n * Diff two virtual nodes and apply proper changes to the DOM\n * @param {import('../internal').PreactElement} parentDom The parent of the DOM element\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object. Modified by getChildContext\n * @param {boolean} isSvg Whether or not this element is an SVG node\n * @param {Array<import('../internal').PreactElement>} excessDomChildren\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').PreactElement} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} [isHydrating] Whether or not we are in hydration\n */\nexport function diff(\n\tparentDom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating\n) {\n\tlet tmp,\n\t\tnewType = newVNode.type;\n\n\t// When passing through createElement it assigns the object\n\t// constructor as undefined. This to prevent JSON-injection.\n\tif (newVNode.constructor !== undefined) return null;\n\n\t// If the previous diff bailed out, resume creating/hydrating.\n\tif (oldVNode._hydrating != null) {\n\t\tisHydrating = oldVNode._hydrating;\n\t\toldDom = newVNode._dom = oldVNode._dom;\n\t\t// if we resume, we want the tree to be \"unlocked\"\n\t\tnewVNode._hydrating = null;\n\t\texcessDomChildren = [oldDom];\n\t}\n\n\tif ((tmp = options._diff)) tmp(newVNode);\n\n\ttry {\n\t\touter: if (typeof newType == 'function') {\n\t\t\tlet c, isNew, oldProps, oldState, snapshot, clearProcessingException;\n\t\t\tlet newProps = newVNode.props;\n\n\t\t\t// Necessary for createContext api. Setting this property will pass\n\t\t\t// the context value as `this.context` just for this component.\n\t\t\ttmp = newType.contextType;\n\t\t\tlet provider = tmp && globalContext[tmp._id];\n\t\t\tlet componentContext = tmp\n\t\t\t\t? provider\n\t\t\t\t\t? provider.props.value\n\t\t\t\t\t: tmp._defaultValue\n\t\t\t\t: globalContext;\n\n\t\t\t// Get component and set it to `c`\n\t\t\tif (oldVNode._component) {\n\t\t\t\tc = newVNode._component = oldVNode._component;\n\t\t\t\tclearProcessingException = c._processingException = c._pendingError;\n\t\t\t} else {\n\t\t\t\t// Instantiate the new component\n\t\t\t\tif ('prototype' in newType && newType.prototype.render) {\n\t\t\t\t\t// @ts-ignore The check above verifies that newType is suppose to be constructed\n\t\t\t\t\tnewVNode._component = c = new newType(newProps, componentContext); // eslint-disable-line new-cap\n\t\t\t\t} else {\n\t\t\t\t\t// @ts-ignore Trust me, Component implements the interface we want\n\t\t\t\t\tnewVNode._component = c = new Component(newProps, componentContext);\n\t\t\t\t\tc.constructor = newType;\n\t\t\t\t\tc.render = doRender;\n\t\t\t\t}\n\t\t\t\tif (provider) provider.sub(c);\n\n\t\t\t\tc.props = newProps;\n\t\t\t\tif (!c.state) c.state = {};\n\t\t\t\tc.context = componentContext;\n\t\t\t\tc._globalContext = globalContext;\n\t\t\t\tisNew = c._dirty = true;\n\t\t\t\tc._renderCallbacks = [];\n\t\t\t}\n\n\t\t\t// Invoke getDerivedStateFromProps\n\t\t\tif (c._nextState == null) {\n\t\t\t\tc._nextState = c.state;\n\t\t\t}\n\t\t\tif (newType.getDerivedStateFromProps != null) {\n\t\t\t\tif (c._nextState == c.state) {\n\t\t\t\t\tc._nextState = assign({}, c._nextState);\n\t\t\t\t}\n\n\t\t\t\tassign(\n\t\t\t\t\tc._nextState,\n\t\t\t\t\tnewType.getDerivedStateFromProps(newProps, c._nextState)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\toldProps = c.props;\n\t\t\toldState = c.state;\n\n\t\t\t// Invoke pre-render lifecycle methods\n\t\t\tif (isNew) {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tc.componentWillMount != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillMount();\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidMount != null) {\n\t\t\t\t\tc._renderCallbacks.push(c.componentDidMount);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tnewProps !== oldProps &&\n\t\t\t\t\tc.componentWillReceiveProps != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillReceiveProps(newProps, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t(!c._force &&\n\t\t\t\t\t\tc.shouldComponentUpdate != null &&\n\t\t\t\t\t\tc.shouldComponentUpdate(\n\t\t\t\t\t\t\tnewProps,\n\t\t\t\t\t\t\tc._nextState,\n\t\t\t\t\t\t\tcomponentContext\n\t\t\t\t\t\t) === false) ||\n\t\t\t\t\tnewVNode._original === oldVNode._original\n\t\t\t\t) {\n\t\t\t\t\tc.props = newProps;\n\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t\t// More info about this here: https://gist.github.com/JoviDeCroock/bec5f2ce93544d2e6070ef8e0036e4e8\n\t\t\t\t\tif (newVNode._original !== oldVNode._original) c._dirty = false;\n\t\t\t\t\tc._vnode = newVNode;\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t\t\tnewVNode._children.forEach(vnode => {\n\t\t\t\t\t\tif (vnode) vnode._parent = newVNode;\n\t\t\t\t\t});\n\t\t\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\t\t\tcommitQueue.push(c);\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\n\t\t\t\tif (c.componentWillUpdate != null) {\n\t\t\t\t\tc.componentWillUpdate(newProps, c._nextState, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidUpdate != null) {\n\t\t\t\t\tc._renderCallbacks.push(() => {\n\t\t\t\t\t\tc.componentDidUpdate(oldProps, oldState, snapshot);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tc.context = componentContext;\n\t\t\tc.props = newProps;\n\t\t\tc._vnode = newVNode;\n\t\t\tc._parentDom = parentDom;\n\n\t\t\tlet renderHook = options._render,\n\t\t\t\tcount = 0;\n\t\t\tif ('prototype' in newType && newType.prototype.render) {\n\t\t\t\tc.state = c._nextState;\n\t\t\t\tc._dirty = false;\n\n\t\t\t\tif (renderHook) renderHook(newVNode);\n\n\t\t\t\ttmp = c.render(c.props, c.state, c.context);\n\t\t\t} else {\n\t\t\t\tdo {\n\t\t\t\t\tc._dirty = false;\n\t\t\t\t\tif (renderHook) renderHook(newVNode);\n\n\t\t\t\t\ttmp = c.render(c.props, c.state, c.context);\n\n\t\t\t\t\t// Handle setState called in render, see #2553\n\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t} while (c._dirty && ++count < 25);\n\t\t\t}\n\n\t\t\t// Handle setState called in render, see #2553\n\t\t\tc.state = c._nextState;\n\n\t\t\tif (c.getChildContext != null) {\n\t\t\t\tglobalContext = assign(assign({}, globalContext), c.getChildContext());\n\t\t\t}\n\n\t\t\tif (!isNew && c.getSnapshotBeforeUpdate != null) {\n\t\t\t\tsnapshot = c.getSnapshotBeforeUpdate(oldProps, oldState);\n\t\t\t}\n\n\t\t\tlet isTopLevelFragment =\n\t\t\t\ttmp != null && tmp.type === Fragment && tmp.key == null;\n\t\t\tlet renderResult = isTopLevelFragment ? tmp.props.children : tmp;\n\n\t\t\tdiffChildren(\n\t\t\t\tparentDom,\n\t\t\t\tArray.isArray(renderResult) ? renderResult : [renderResult],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\toldDom,\n\t\t\t\tisHydrating\n\t\t\t);\n\n\t\t\tc.base = newVNode._dom;\n\n\t\t\t// We successfully rendered this VNode, unset any stored hydration/bailout state:\n\t\t\tnewVNode._hydrating = null;\n\n\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\tcommitQueue.push(c);\n\t\t\t}\n\n\t\t\tif (clearProcessingException) {\n\t\t\t\tc._pendingError = c._processingException = null;\n\t\t\t}\n\n\t\t\tc._force = false;\n\t\t} else if (\n\t\t\texcessDomChildren == null &&\n\t\t\tnewVNode._original === oldVNode._original\n\t\t) {\n\t\t\tnewVNode._children = oldVNode._children;\n\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t} else {\n\t\t\tnewVNode._dom = diffElementNodes(\n\t\t\t\toldVNode._dom,\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\tisHydrating\n\t\t\t);\n\t\t}\n\n\t\tif ((tmp = options.diffed)) tmp(newVNode);\n\t} catch (e) {\n\t\tnewVNode._original = null;\n\t\t// if hydrating or creating initial tree, bailout preserves DOM:\n\t\tif (isHydrating || excessDomChildren != null) {\n\t\t\tnewVNode._dom = oldDom;\n\t\t\tnewVNode._hydrating = !!isHydrating;\n\t\t\texcessDomChildren[excessDomChildren.indexOf(oldDom)] = null;\n\t\t\t// ^ could possibly be simplified to:\n\t\t\t// excessDomChildren.length = 0;\n\t\t}\n\t\toptions._catchError(e, newVNode, oldVNode);\n\t}\n}\n\n/**\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').VNode} root\n */\nexport function commitRoot(commitQueue, root) {\n\tif (options._commit) options._commit(root, commitQueue);\n\n\tcommitQueue.some(c => {\n\t\ttry {\n\t\t\t// @ts-ignore Reuse the commitQueue variable here so the type changes\n\t\t\tcommitQueue = c._renderCallbacks;\n\t\t\tc._renderCallbacks = [];\n\t\t\tcommitQueue.some(cb => {\n\t\t\t\t// @ts-ignore See above ts-ignore on commitQueue\n\t\t\t\tcb.call(c);\n\t\t\t});\n\t\t} catch (e) {\n\t\t\toptions._catchError(e, c._vnode);\n\t\t}\n\t});\n}\n\n/**\n * Diff two virtual nodes representing DOM element\n * @param {import('../internal').PreactElement} dom The DOM element representing\n * the virtual nodes being diffed\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {*} excessDomChildren\n * @param {Array<import('../internal').Component>} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @returns {import('../internal').PreactElement}\n */\nfunction diffElementNodes(\n\tdom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\tisHydrating\n) {\n\tlet oldProps = oldVNode.props;\n\tlet newProps = newVNode.props;\n\tlet nodeType = newVNode.type;\n\tlet i = 0;\n\n\t// Tracks entering and exiting SVG namespace when descending through the tree.\n\tif (nodeType === 'svg') isSvg = true;\n\n\tif (excessDomChildren != null) {\n\t\tfor (; i < excessDomChildren.length; i++) {\n\t\t\tconst child = excessDomChildren[i];\n\n\t\t\t// if newVNode matches an element in excessDomChildren or the `dom`\n\t\t\t// argument matches an element in excessDomChildren, remove it from\n\t\t\t// excessDomChildren so it isn't later removed in diffChildren\n\t\t\tif (\n\t\t\t\tchild &&\n\t\t\t\t'setAttribute' in child === !!nodeType &&\n\t\t\t\t(nodeType ? child.localName === nodeType : child.nodeType === 3)\n\t\t\t) {\n\t\t\t\tdom = child;\n\t\t\t\texcessDomChildren[i] = null;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (dom == null) {\n\t\tif (nodeType === null) {\n\t\t\t// @ts-ignore createTextNode returns Text, we expect PreactElement\n\t\t\treturn document.createTextNode(newProps);\n\t\t}\n\n\t\tif (isSvg) {\n\t\t\tdom = document.createElementNS(\n\t\t\t\t'http://www.w3.org/2000/svg',\n\t\t\t\t// @ts-ignore We know `newVNode.type` is a string\n\t\t\t\tnodeType\n\t\t\t);\n\t\t} else {\n\t\t\tdom = document.createElement(\n\t\t\t\t// @ts-ignore We know `newVNode.type` is a string\n\t\t\t\tnodeType,\n\t\t\t\tnewProps.is && newProps\n\t\t\t);\n\t\t}\n\n\t\t// we created a new parent, so none of the previously attached children can be reused:\n\t\texcessDomChildren = null;\n\t\t// we are creating a new node, so we can assume this is a new subtree (in case we are hydrating), this deopts the hydrate\n\t\tisHydrating = false;\n\t}\n\n\tif (nodeType === null) {\n\t\t// During hydration, we still have to split merged text from SSR'd HTML.\n\t\tif (oldProps !== newProps && (!isHydrating || dom.data !== newProps)) {\n\t\t\tdom.data = newProps;\n\t\t}\n\t} else {\n\t\t// If excessDomChildren was not null, repopulate it with the current element's children:\n\t\texcessDomChildren = excessDomChildren && slice.call(dom.childNodes);\n\n\t\toldProps = oldVNode.props || EMPTY_OBJ;\n\n\t\tlet oldHtml = oldProps.dangerouslySetInnerHTML;\n\t\tlet newHtml = newProps.dangerouslySetInnerHTML;\n\n\t\t// During hydration, props are not diffed at all (including dangerouslySetInnerHTML)\n\t\t// @TODO we should warn in debug mode when props don't match here.\n\t\tif (!isHydrating) {\n\t\t\t// But, if we are in a situation where we are using existing DOM (e.g. replaceNode)\n\t\t\t// we should read the existing DOM attributes to diff them\n\t\t\tif (excessDomChildren != null) {\n\t\t\t\toldProps = {};\n\t\t\t\tfor (i = 0; i < dom.attributes.length; i++) {\n\t\t\t\t\toldProps[dom.attributes[i].name] = dom.attributes[i].value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (newHtml || oldHtml) {\n\t\t\t\t// Avoid re-applying the same '__html' if it did not changed between re-render\n\t\t\t\tif (\n\t\t\t\t\t!newHtml ||\n\t\t\t\t\t((!oldHtml || newHtml.__html != oldHtml.__html) &&\n\t\t\t\t\t\tnewHtml.__html !== dom.innerHTML)\n\t\t\t\t) {\n\t\t\t\t\tdom.innerHTML = (newHtml && newHtml.__html) || '';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tdiffProps(dom, newProps, oldProps, isSvg, isHydrating);\n\n\t\t// If the new vnode didn't have dangerouslySetInnerHTML, diff its children\n\t\tif (newHtml) {\n\t\t\tnewVNode._children = [];\n\t\t} else {\n\t\t\ti = newVNode.props.children;\n\t\t\tdiffChildren(\n\t\t\t\tdom,\n\t\t\t\tArray.isArray(i) ? i : [i],\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg && nodeType !== 'foreignObject',\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\texcessDomChildren\n\t\t\t\t\t? excessDomChildren[0]\n\t\t\t\t\t: oldVNode._children && getDomSibling(oldVNode, 0),\n\t\t\t\tisHydrating\n\t\t\t);\n\n\t\t\t// Remove children that are not part of any vnode.\n\t\t\tif (excessDomChildren != null) {\n\t\t\t\tfor (i = excessDomChildren.length; i--; ) {\n\t\t\t\t\tif (excessDomChildren[i] != null) removeNode(excessDomChildren[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// (as above, don't diff props during hydration)\n\t\tif (!isHydrating) {\n\t\t\tif (\n\t\t\t\t'value' in newProps &&\n\t\t\t\t(i = newProps.value) !== undefined &&\n\t\t\t\t// #2756 For the <progress>-element the initial value is 0,\n\t\t\t\t// despite the attribute not being present. When the attribute\n\t\t\t\t// is missing the progress bar is treated as indeterminate.\n\t\t\t\t// To fix that we'll always update it when it is 0 for progress elements\n\t\t\t\t(i !== dom.value ||\n\t\t\t\t\t(nodeType === 'progress' && !i) ||\n\t\t\t\t\t// This is only for IE 11 to fix <select> value not being updated.\n\t\t\t\t\t// To avoid a stale select value we need to set the option.value\n\t\t\t\t\t// again, which triggers IE11 to re-evaluate the select value\n\t\t\t\t\t(nodeType === 'option' && i !== oldProps.value))\n\t\t\t) {\n\t\t\t\tsetProperty(dom, 'value', i, oldProps.value, false);\n\t\t\t}\n\t\t\tif (\n\t\t\t\t'checked' in newProps &&\n\t\t\t\t(i = newProps.checked) !== undefined &&\n\t\t\t\ti !== dom.checked\n\t\t\t) {\n\t\t\t\tsetProperty(dom, 'checked', i, oldProps.checked, false);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn dom;\n}\n\n/**\n * Invoke or update a ref, depending on whether it is a function or object ref.\n * @param {object|function} ref\n * @param {any} value\n * @param {import('../internal').VNode} vnode\n */\nexport function applyRef(ref, value, vnode) {\n\ttry {\n\t\tif (typeof ref == 'function') ref(value);\n\t\telse ref.current = value;\n\t} catch (e) {\n\t\toptions._catchError(e, vnode);\n\t}\n}\n\n/**\n * Unmount a virtual node from the tree and apply DOM changes\n * @param {import('../internal').VNode} vnode The virtual node to unmount\n * @param {import('../internal').VNode} parentVNode The parent of the VNode that\n * initiated the unmount\n * @param {boolean} [skipRemove] Flag that indicates that a parent node of the\n * current element is already detached from the DOM.\n */\nexport function unmount(vnode, parentVNode, skipRemove) {\n\tlet r;\n\tif (options.unmount) options.unmount(vnode);\n\n\tif ((r = vnode.ref)) {\n\t\tif (!r.current || r.current === vnode._dom) {\n\t\t\tapplyRef(r, null, parentVNode);\n\t\t}\n\t}\n\n\tif ((r = vnode._component) != null) {\n\t\tif (r.componentWillUnmount) {\n\t\t\ttry {\n\t\t\t\tr.componentWillUnmount();\n\t\t\t} catch (e) {\n\t\t\t\toptions._catchError(e, parentVNode);\n\t\t\t}\n\t\t}\n\n\t\tr.base = r._parentDom = null;\n\t\tvnode._component = undefined;\n\t}\n\n\tif ((r = vnode._children)) {\n\t\tfor (let i = 0; i < r.length; i++) {\n\t\t\tif (r[i]) {\n\t\t\t\tunmount(r[i], parentVNode, typeof vnode.type != 'function');\n\t\t\t}\n\t\t}\n\t}\n\n\tif (!skipRemove && vnode._dom != null) {\n\t\tremoveNode(vnode._dom);\n\t}\n\n\t// Must be set to `undefined` to properly clean up `_nextDom`\n\t// for which `null` is a valid value. See comment in `create-element.js`\n\tvnode._parent = vnode._dom = vnode._nextDom = undefined;\n}\n\n/** The `.render()` method for a PFC backing instance. */\nfunction doRender(props, state, context) {\n\treturn this.constructor(props, context);\n}\n","import { EMPTY_OBJ } from './constants';\nimport { commitRoot, diff } from './diff/index';\nimport { createElement, Fragment } from './create-element';\nimport options from './options';\nimport { slice } from './util';\n\n/**\n * Render a Preact virtual node into a DOM element\n * @param {import('./internal').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * render into\n * @param {import('./internal').PreactElement | object} [replaceNode] Optional: Attempt to re-use an\n * existing DOM tree rooted at `replaceNode`\n */\nexport function render(vnode, parentDom, replaceNode) {\n\tif (options._root) options._root(vnode, parentDom);\n\n\t// We abuse the `replaceNode` parameter in `hydrate()` to signal if we are in\n\t// hydration mode or not by passing the `hydrate` function instead of a DOM\n\t// element..\n\tlet isHydrating = typeof replaceNode === 'function';\n\n\t// To be able to support calling `render()` multiple times on the same\n\t// DOM node, we need to obtain a reference to the previous tree. We do\n\t// this by assigning a new `_children` property to DOM nodes which points\n\t// to the last rendered tree. By default this property is not present, which\n\t// means that we are mounting a new tree for the first time.\n\tlet oldVNode = isHydrating\n\t\t? null\n\t\t: (replaceNode && replaceNode._children) || parentDom._children;\n\n\tvnode = (\n\t\t(!isHydrating && replaceNode) ||\n\t\tparentDom\n\t)._children = createElement(Fragment, null, [vnode]);\n\n\t// List of effects that need to be called after diffing.\n\tlet commitQueue = [];\n\tdiff(\n\t\tparentDom,\n\t\t// Determine the new vnode tree and store it on the DOM element on\n\t\t// our custom `_children` property.\n\t\tvnode,\n\t\toldVNode || EMPTY_OBJ,\n\t\tEMPTY_OBJ,\n\t\tparentDom.ownerSVGElement !== undefined,\n\t\t!isHydrating && replaceNode\n\t\t\t? [replaceNode]\n\t\t\t: oldVNode\n\t\t\t? null\n\t\t\t: parentDom.firstChild\n\t\t\t? slice.call(parentDom.childNodes)\n\t\t\t: null,\n\t\tcommitQueue,\n\t\t!isHydrating && replaceNode\n\t\t\t? replaceNode\n\t\t\t: oldVNode\n\t\t\t? oldVNode._dom\n\t\t\t: parentDom.firstChild,\n\t\tisHydrating\n\t);\n\n\t// Flush all queued effects\n\tcommitRoot(commitQueue, vnode);\n}\n\n/**\n * Update an existing DOM element with data from a Preact virtual node\n * @param {import('./internal').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * update\n */\nexport function hydrate(vnode, parentDom) {\n\trender(vnode, parentDom, hydrate);\n}\n","import { assign, slice } from './util';\nimport { createVNode } from './create-element';\n\n/**\n * Clones the given VNode, optionally adding attributes/props and replacing its children.\n * @param {import('./internal').VNode} vnode The virtual DOM element to clone\n * @param {object} props Attributes/props to add when cloning\n * @param {Array<import('./internal').ComponentChildren>} rest Any additional arguments will be used as replacement children.\n * @returns {import('./internal').VNode}\n */\nexport function cloneElement(vnode, props, children) {\n\tlet normalizedProps = assign({}, vnode.props),\n\t\tkey,\n\t\tref,\n\t\ti;\n\tfor (i in props) {\n\t\tif (i == 'key') key = props[i];\n\t\telse if (i == 'ref') ref = props[i];\n\t\telse normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 2) {\n\t\tnormalizedProps.children =\n\t\t\targuments.length > 3 ? slice.call(arguments, 2) : children;\n\t}\n\n\treturn createVNode(\n\t\tvnode.type,\n\t\tnormalizedProps,\n\t\tkey || vnode.key,\n\t\tref || vnode.ref,\n\t\tnull\n\t);\n}\n","/**\n * Find the closest error boundary to a thrown error and call it\n * @param {object} error The thrown value\n * @param {import('../internal').VNode} vnode The vnode that threw\n * the error that was caught (except for unmounting when this parameter\n * is the highest parent that was being unmounted)\n * @param {import('../internal').VNode} [oldVNode]\n * @param {import('../internal').ErrorInfo} [errorInfo]\n */\nexport function _catchError(error, vnode, oldVNode, errorInfo) {\n\t/** @type {import('../internal').Component} */\n\tlet component, ctor, handled;\n\n\tfor (; (vnode = vnode._parent); ) {\n\t\tif ((component = vnode._component) && !component._processingException) {\n\t\t\ttry {\n\t\t\t\tctor = component.constructor;\n\n\t\t\t\tif (ctor && ctor.getDerivedStateFromError != null) {\n\t\t\t\t\tcomponent.setState(ctor.getDerivedStateFromError(error));\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\tif (component.componentDidCatch != null) {\n\t\t\t\t\tcomponent.componentDidCatch(error, errorInfo || {});\n\t\t\t\t\thandled = component._dirty;\n\t\t\t\t}\n\n\t\t\t\t// This is an error boundary. Mark it as having bailed out, and whether it was mid-hydration.\n\t\t\t\tif (handled) {\n\t\t\t\t\treturn (component._pendingError = component);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\terror = e;\n\t\t\t}\n\t\t}\n\t}\n\n\tthrow error;\n}\n","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\tvar nativeCodeString = '[native code]';\n\n\tfunction classNames() {\n\t\tvar classes = [];\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (!arg) continue;\n\n\t\t\tvar argType = typeof arg;\n\n\t\t\tif (argType === 'string' || argType === 'number') {\n\t\t\t\tclasses.push(arg);\n\t\t\t} else if (Array.isArray(arg)) {\n\t\t\t\tif (arg.length) {\n\t\t\t\t\tvar inner = classNames.apply(null, arg);\n\t\t\t\t\tif (inner) {\n\t\t\t\t\t\tclasses.push(inner);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (argType === 'object') {\n\t\t\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\t\t\tclasses.push(arg.toString());\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tfor (var key in arg) {\n\t\t\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\t\t\tclasses.push(key);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn classes.join(' ');\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { escapeHits, TAG_PLACEHOLDER, checkRendering, createDocumentationMessageGenerator, addAbsolutePosition, addQueryID, createSendEventForHits, createBindEventForHits, noop } from \"../../lib/utils/index.js\";\nvar withUsage = createDocumentationMessageGenerator({\n  name: 'hits',\n  connector: true\n});\n\nvar connectHits = function connectHits(renderFn) {\n  var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n  checkRendering(renderFn, withUsage());\n  return function (widgetParams) {\n    var _ref = widgetParams || {},\n        _ref$escapeHTML = _ref.escapeHTML,\n        escapeHTML = _ref$escapeHTML === void 0 ? true : _ref$escapeHTML,\n        _ref$transformItems = _ref.transformItems,\n        transformItems = _ref$transformItems === void 0 ? function (items) {\n      return items;\n    } : _ref$transformItems;\n\n    var sendEvent;\n    var bindEvent;\n    return {\n      $$type: 'ais.hits',\n      init: function init(initOptions) {\n        renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(initOptions)), {}, {\n          instantSearchInstance: initOptions.instantSearchInstance\n        }), true);\n      },\n      render: function render(renderOptions) {\n        var renderState = this.getWidgetRenderState(renderOptions);\n        renderFn(_objectSpread(_objectSpread({}, renderState), {}, {\n          instantSearchInstance: renderOptions.instantSearchInstance\n        }), false);\n        renderState.sendEvent('view', renderState.hits);\n      },\n      getRenderState: function getRenderState(renderState, renderOptions) {\n        return _objectSpread(_objectSpread({}, renderState), {}, {\n          hits: this.getWidgetRenderState(renderOptions)\n        });\n      },\n      getWidgetRenderState: function getWidgetRenderState(_ref2) {\n        var results = _ref2.results,\n            helper = _ref2.helper,\n            instantSearchInstance = _ref2.instantSearchInstance;\n\n        if (!sendEvent) {\n          sendEvent = createSendEventForHits({\n            instantSearchInstance: instantSearchInstance,\n            index: helper.getIndex(),\n            widgetType: this.$$type\n          });\n        }\n\n        if (!bindEvent) {\n          bindEvent = createBindEventForHits({\n            index: helper.getIndex(),\n            widgetType: this.$$type\n          });\n        }\n\n        if (!results) {\n          return {\n            hits: [],\n            results: undefined,\n            sendEvent: sendEvent,\n            bindEvent: bindEvent,\n            widgetParams: widgetParams\n          };\n        }\n\n        if (escapeHTML && results.hits.length > 0) {\n          results.hits = escapeHits(results.hits);\n        }\n\n        var hitsWithAbsolutePosition = addAbsolutePosition(results.hits, results.page, results.hitsPerPage);\n        var hitsWithAbsolutePositionAndQueryID = addQueryID(hitsWithAbsolutePosition, results.queryID);\n        var transformedHits = transformItems(hitsWithAbsolutePositionAndQueryID, {\n          results: results\n        });\n        return {\n          hits: transformedHits,\n          results: results,\n          sendEvent: sendEvent,\n          bindEvent: bindEvent,\n          widgetParams: widgetParams\n        };\n      },\n      dispose: function dispose(_ref3) {\n        var state = _ref3.state;\n        unmountFn();\n\n        if (!escapeHTML) {\n          return state;\n        }\n\n        return state.setQueryParameters(Object.keys(TAG_PLACEHOLDER).reduce(function (acc, key) {\n          return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, key, undefined));\n        }, {}));\n      },\n      getWidgetSearchParameters: function getWidgetSearchParameters(state) {\n        if (!escapeHTML) {\n          return state;\n        }\n\n        return state.setQueryParameters(TAG_PLACEHOLDER);\n      }\n    };\n  };\n};\n\nexport default connectHits;","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nexport function addAbsolutePosition(hits, page, hitsPerPage) {\n  return hits.map(function (hit, idx) {\n    return _objectSpread(_objectSpread({}, hit), {}, {\n      __position: hitsPerPage * page + idx + 1\n    });\n  });\n}","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nexport function addQueryID(hits, queryID) {\n  if (!queryID) {\n    return hits;\n  }\n\n  return hits.map(function (hit) {\n    return _objectSpread(_objectSpread({}, hit), {}, {\n      __queryID: queryID\n    });\n  });\n}","import { getObjectType } from \"./getObjectType.js\";\nexport function checkRendering(rendering, usage) {\n  if (rendering === undefined || typeof rendering !== 'function') {\n    throw new Error(\"The render function is not valid (received type \".concat(getObjectType(rendering), \").\\n\\n\").concat(usage));\n  }\n}","export function getObjectType(object) {\n  return Object.prototype.toString.call(object).slice(8, -1);\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport { serializePayload } from \"./serializer.js\";\n\nfunction chunk(arr) {\n  var chunkSize = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 20;\n  var chunks = [];\n\n  for (var i = 0; i < Math.ceil(arr.length / chunkSize); i++) {\n    chunks.push(arr.slice(i * chunkSize, (i + 1) * chunkSize));\n  }\n\n  return chunks;\n}\n\nvar buildPayloads = function buildPayloads(_ref) {\n  var index = _ref.index,\n      widgetType = _ref.widgetType,\n      methodName = _ref.methodName,\n      args = _ref.args,\n      isSearchStalled = _ref.isSearchStalled;\n\n  // when there's only one argument, that means it's custom\n  if (args.length === 1 && _typeof(args[0]) === 'object') {\n    return [args[0]];\n  }\n\n  var eventType = args[0];\n  var hits = args[1];\n  var eventName = args[2];\n\n  if (!hits) {\n    if (process.env.NODE_ENV === 'development') {\n      throw new Error(\"You need to pass hit or hits as the second argument like:\\n  \".concat(methodName, \"(eventType, hit);\\n  \"));\n    } else {\n      return [];\n    }\n  }\n\n  if ((eventType === 'click' || eventType === 'conversion') && !eventName) {\n    if (process.env.NODE_ENV === 'development') {\n      throw new Error(\"You need to pass eventName as the third argument for 'click' or 'conversion' events like:\\n  \".concat(methodName, \"('click', hit, 'Product Purchased');\\n\\n  To learn more about event naming: https://www.algolia.com/doc/guides/getting-insights-and-analytics/search-analytics/click-through-and-conversions/in-depth/clicks-conversions-best-practices/\\n  \"));\n    } else {\n      return [];\n    }\n  }\n\n  var hitsArray = Array.isArray(hits) ? removeEscapedFromHits(hits) : [hits];\n\n  if (hitsArray.length === 0) {\n    return [];\n  }\n\n  var queryID = hitsArray[0].__queryID;\n  var hitsChunks = chunk(hitsArray);\n  var objectIDsByChunk = hitsChunks.map(function (batch) {\n    return batch.map(function (hit) {\n      return hit.objectID;\n    });\n  });\n  var positionsByChunk = hitsChunks.map(function (batch) {\n    return batch.map(function (hit) {\n      return hit.__position;\n    });\n  });\n\n  if (eventType === 'view') {\n    if (isSearchStalled) {\n      return [];\n    }\n\n    return hitsChunks.map(function (batch, i) {\n      return {\n        insightsMethod: 'viewedObjectIDs',\n        widgetType: widgetType,\n        eventType: eventType,\n        payload: {\n          eventName: eventName || 'Hits Viewed',\n          index: index,\n          objectIDs: objectIDsByChunk[i]\n        },\n        hits: batch\n      };\n    });\n  } else if (eventType === 'click') {\n    return hitsChunks.map(function (batch, i) {\n      return {\n        insightsMethod: 'clickedObjectIDsAfterSearch',\n        widgetType: widgetType,\n        eventType: eventType,\n        payload: {\n          eventName: eventName,\n          index: index,\n          queryID: queryID,\n          objectIDs: objectIDsByChunk[i],\n          positions: positionsByChunk[i]\n        },\n        hits: batch\n      };\n    });\n  } else if (eventType === 'conversion') {\n    return hitsChunks.map(function (batch, i) {\n      return {\n        insightsMethod: 'convertedObjectIDsAfterSearch',\n        widgetType: widgetType,\n        eventType: eventType,\n        payload: {\n          eventName: eventName,\n          index: index,\n          queryID: queryID,\n          objectIDs: objectIDsByChunk[i]\n        },\n        hits: batch\n      };\n    });\n  } else if (process.env.NODE_ENV === 'development') {\n    throw new Error(\"eventType(\\\"\".concat(eventType, \"\\\") is not supported.\\n    If you want to send a custom payload, you can pass one object: \").concat(methodName, \"(customPayload);\\n    \"));\n  } else {\n    return [];\n  }\n};\n\nfunction removeEscapedFromHits(hits) {\n  // remove `hits.__escaped` without mutating\n  return hits.slice();\n}\n\nexport function createSendEventForHits(_ref2) {\n  var instantSearchInstance = _ref2.instantSearchInstance,\n      index = _ref2.index,\n      widgetType = _ref2.widgetType;\n\n  var sendEventForHits = function sendEventForHits() {\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    var payloads = buildPayloads({\n      widgetType: widgetType,\n      index: index,\n      methodName: 'sendEvent',\n      args: args,\n      isSearchStalled: instantSearchInstance._isSearchStalled\n    });\n    payloads.forEach(function (payload) {\n      return instantSearchInstance.sendEventToInsights(payload);\n    });\n  };\n\n  return sendEventForHits;\n}\nexport function createBindEventForHits(_ref3) {\n  var index = _ref3.index,\n      widgetType = _ref3.widgetType;\n\n  var bindEventForHits = function bindEventForHits() {\n    for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n\n    var payloads = buildPayloads({\n      widgetType: widgetType,\n      index: index,\n      methodName: 'bindEvent',\n      args: args,\n      isSearchStalled: false\n    });\n    return payloads.length ? \"data-insights-event=\".concat(serializePayload(payloads)) : '';\n  };\n\n  return bindEventForHits;\n}","export function serializePayload(payload) {\n  return btoa(encodeURIComponent(JSON.stringify(payload)));\n}\nexport function deserializePayload(serialized) {\n  return JSON.parse(decodeURIComponent(atob(serialized)));\n}","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { escape } from \"./escape-html.js\";\nimport { isPlainObject } from \"./isPlainObject.js\";\nexport var TAG_PLACEHOLDER = {\n  highlightPreTag: '__ais-highlight__',\n  highlightPostTag: '__/ais-highlight__'\n};\nexport var TAG_REPLACEMENT = {\n  highlightPreTag: '<mark>',\n  highlightPostTag: '</mark>'\n};\n\nfunction replaceTagsAndEscape(value) {\n  return escape(value).replace(new RegExp(TAG_PLACEHOLDER.highlightPreTag, 'g'), TAG_REPLACEMENT.highlightPreTag).replace(new RegExp(TAG_PLACEHOLDER.highlightPostTag, 'g'), TAG_REPLACEMENT.highlightPostTag);\n}\n\nfunction recursiveEscape(input) {\n  if (isPlainObject(input) && typeof input.value !== 'string') {\n    return Object.keys(input).reduce(function (acc, key) {\n      return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, key, recursiveEscape(input[key])));\n    }, {});\n  }\n\n  if (Array.isArray(input)) {\n    return input.map(recursiveEscape);\n  }\n\n  return _objectSpread(_objectSpread({}, input), {}, {\n    value: replaceTagsAndEscape(input.value)\n  });\n}\n\nexport function escapeHits(hits) {\n  if (hits.__escaped === undefined) {\n    // We don't override the value on hit because it will mutate the raw results\n    // instead we make a shallow copy and we assign the escaped values on it.\n    hits = hits.map(function (_ref) {\n      var hit = _extends({}, _ref);\n\n      if (hit._highlightResult) {\n        hit._highlightResult = recursiveEscape(hit._highlightResult);\n      }\n\n      if (hit._snippetResult) {\n        hit._snippetResult = recursiveEscape(hit._snippetResult);\n      }\n\n      return hit;\n    });\n    hits.__escaped = true;\n  }\n\n  return hits;\n}\nexport function escapeFacets(facetHits) {\n  return facetHits.map(function (h) {\n    return _objectSpread(_objectSpread({}, h), {}, {\n      highlighted: replaceTagsAndEscape(h.highlighted)\n    });\n  });\n}","/**\n * This implementation is taken from Lodash implementation.\n * See: https://github.com/lodash/lodash/blob/4.17.11-npm/escape.js\n */\n// Used to map characters to HTML entities.\nvar htmlEntities = {\n  '&': '&amp;',\n  '<': '&lt;',\n  '>': '&gt;',\n  '\"': '&quot;',\n  \"'\": '&#39;'\n}; // Used to match HTML entities and HTML characters.\n\nvar regexUnescapedHtml = /[&<>\"']/g;\nvar regexHasUnescapedHtml = RegExp(regexUnescapedHtml.source);\n/**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n */\n\nexport function escape(value) {\n  return value && regexHasUnescapedHtml.test(value) ? value.replace(regexUnescapedHtml, function (character) {\n    return htmlEntities[character];\n  }) : value;\n}\n/**\n * This implementation is taken from Lodash implementation.\n * See: https://github.com/lodash/lodash/blob/4.17.11-npm/unescape.js\n */\n// Used to map HTML entities to characters.\n\nvar htmlCharacters = {\n  '&amp;': '&',\n  '&lt;': '<',\n  '&gt;': '>',\n  '&quot;': '\"',\n  '&#39;': \"'\"\n}; // Used to match HTML entities and HTML characters.\n\nvar regexEscapedHtml = /&(amp|quot|lt|gt|#39);/g;\nvar regexHasEscapedHtml = RegExp(regexEscapedHtml.source);\n/**\n * Converts the HTML entities \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * characters.\n */\n\nexport function unescape(value) {\n  return value && regexHasEscapedHtml.test(value) ? value.replace(regexEscapedHtml, function (character) {\n    return htmlCharacters[character];\n  }) : value;\n}","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport { h } from 'preact';\nimport cx from 'classnames';\nimport Template from \"../Template/Template.js\";\n\nvar Hits = function Hits(_ref) {\n  var results = _ref.results,\n      hits = _ref.hits,\n      bindEvent = _ref.bindEvent,\n      sendEvent = _ref.sendEvent,\n      cssClasses = _ref.cssClasses,\n      templateProps = _ref.templateProps;\n\n  if (results.hits.length === 0) {\n    return h(Template, _extends({}, templateProps, {\n      templateKey: \"empty\",\n      rootProps: {\n        className: cx(cssClasses.root, cssClasses.emptyRoot)\n      },\n      data: results\n    }));\n  }\n\n  return h(\"div\", {\n    className: cssClasses.root\n  }, h(\"ol\", {\n    className: cssClasses.list\n  }, hits.map(function (hit, index) {\n    return h(Template, _extends({}, templateProps, {\n      templateKey: \"item\",\n      rootTagName: \"li\",\n      rootProps: {\n        className: cssClasses.item\n      },\n      key: hit.objectID,\n      data: _objectSpread(_objectSpread({}, hit), {}, {\n        __hitIndex: index\n      }),\n      bindEvent: bindEvent,\n      sendEvent: sendEvent\n    }));\n  })));\n};\n\nexport default Hits;","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { h, Component } from 'preact';\nimport { warning, isEqual } from \"../../lib/utils/index.js\";\nimport { renderTemplate } from \"../../lib/templating/index.js\";\nvar defaultProps = {\n  data: {},\n  rootTagName: 'div',\n  useCustomCompileOptions: {},\n  templates: {},\n  templatesConfig: {}\n};\n\n// @TODO: Template should be a generic and receive TData to pass to Templates (to avoid TTemplateData to be set as `any`)\nvar Template = /*#__PURE__*/function (_Component) {\n  _inherits(Template, _Component);\n\n  var _super = _createSuper(Template);\n\n  function Template() {\n    _classCallCheck(this, Template);\n\n    return _super.apply(this, arguments);\n  }\n\n  _createClass(Template, [{\n    key: \"shouldComponentUpdate\",\n    value: function shouldComponentUpdate(nextProps) {\n      return !isEqual(this.props.data, nextProps.data) || this.props.templateKey !== nextProps.templateKey || !isEqual(this.props.rootProps, nextProps.rootProps);\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this = this;\n\n      process.env.NODE_ENV === 'development' ? warning(Object.keys(this.props.templates).every(function (key) {\n        return typeof _this.props.templates[key] === 'function';\n      }), \"Hogan.js and string-based templates are deprecated and will not be supported in InstantSearch.js 5.x.\\n\\nYou can replace them with function-form templates and use either the provided `html` function or JSX templates.\\n\\nSee: https://www.algolia.com/doc/guides/building-search-ui/upgrade-guides/js/#upgrade-templates\") : void 0;\n      var RootTagName = this.props.rootTagName;\n      var useCustomCompileOptions = this.props.useCustomCompileOptions[this.props.templateKey];\n      var compileOptions = useCustomCompileOptions ? this.props.templatesConfig.compileOptions : {};\n      var content = renderTemplate({\n        templates: this.props.templates,\n        templateKey: this.props.templateKey,\n        compileOptions: compileOptions,\n        helpers: this.props.templatesConfig.helpers,\n        data: this.props.data,\n        bindEvent: this.props.bindEvent,\n        sendEvent: this.props.sendEvent\n      });\n\n      if (content === null) {\n        // Adds a noscript to the DOM but virtual DOM is null\n        // See http://facebook.github.io/react/docs/component-specs.html#render\n        return null;\n      }\n\n      if (_typeof(content) === 'object') {\n        return h(RootTagName, this.props.rootProps, content);\n      }\n\n      return h(RootTagName, _extends({}, this.props.rootProps, {\n        dangerouslySetInnerHTML: {\n          __html: content\n        }\n      }));\n    }\n  }]);\n\n  return Template;\n}(Component);\n\n_defineProperty(Template, \"defaultProps\", defaultProps);\n\nexport default Template;","function isPrimitive(obj) {\n  return obj !== Object(obj);\n}\n\nexport function isEqual(first, second) {\n  if (first === second) {\n    return true;\n  }\n\n  if (isPrimitive(first) || isPrimitive(second) || typeof first === 'function' || typeof second === 'function') {\n    return first === second;\n  }\n\n  if (Object.keys(first).length !== Object.keys(second).length) {\n    return false;\n  }\n\n  for (var _i = 0, _Object$keys = Object.keys(first); _i < _Object$keys.length; _i++) {\n    var key = _Object$keys[_i];\n\n    if (!(key in second)) {\n      return false;\n    }\n\n    if (!isEqual(first[key], second[key])) {\n      return false;\n    }\n  }\n\n  return true;\n}","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport hogan from 'hogan.js';\nimport { html } from 'htm/preact';\nimport { Highlight, ReverseHighlight, ReverseSnippet, Snippet } from \"../../helpers/components/index.js\";\n\n// We add all our template helper methods to the template as lambdas. Note\n// that lambdas in Mustache are supposed to accept a second argument of\n// `render` to get the rendered value, not the literal `{{value}}`. But\n// this is currently broken (see https://github.com/twitter/hogan.js/issues/222).\nfunction transformHelpersToHogan() {\n  var helpers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  var compileOptions = arguments.length > 1 ? arguments[1] : undefined;\n  var data = arguments.length > 2 ? arguments[2] : undefined;\n  return Object.keys(helpers).reduce(function (acc, helperKey) {\n    return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, helperKey, function () {\n      var _this = this;\n\n      return function (text) {\n        var render = function render(value) {\n          return hogan.compile(value, compileOptions).render(_this);\n        };\n\n        return helpers[helperKey].call(data, text, render);\n      };\n    }));\n  }, {});\n}\n\nexport function renderTemplate(_ref) {\n  var templates = _ref.templates,\n      templateKey = _ref.templateKey,\n      compileOptions = _ref.compileOptions,\n      helpers = _ref.helpers,\n      data = _ref.data,\n      bindEvent = _ref.bindEvent,\n      sendEvent = _ref.sendEvent;\n  var template = templates[templateKey];\n\n  if (typeof template !== 'string' && typeof template !== 'function') {\n    throw new Error(\"Template must be 'string' or 'function', was '\".concat(_typeof(template), \"' (key: \").concat(templateKey, \")\"));\n  }\n\n  if (typeof template === 'function') {\n    // @MAJOR no longer pass bindEvent when string templates are removed\n    var params = bindEvent || {};\n    params.html = html;\n    params.sendEvent = sendEvent;\n    params.components = {\n      Highlight: Highlight,\n      ReverseHighlight: ReverseHighlight,\n      Snippet: Snippet,\n      ReverseSnippet: ReverseSnippet\n    };\n    return template(data, params);\n  }\n\n  var transformedHelpers = transformHelpersToHogan(helpers, compileOptions, data);\n  return hogan.compile(template, compileOptions).render(_objectSpread(_objectSpread({}, data), {}, {\n    helpers: transformedHelpers\n  })).replace(/[ \\n\\r\\t\\f\\xA0]+/g, function (spaces) {\n    return spaces.replace(/(^|\\xA0+)[^\\xA0]+/g, '$1 ');\n  }).trim();\n}","/*\n *  Copyright 2011 Twitter, Inc.\n *  Licensed under the Apache License, Version 2.0 (the \"License\");\n *  you may not use this file except in compliance with the License.\n *  You may obtain a copy of the License at\n *\n *  http://www.apache.org/licenses/LICENSE-2.0\n *\n *  Unless required by applicable law or agreed to in writing, software\n *  distributed under the License is distributed on an \"AS IS\" BASIS,\n *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *  See the License for the specific language governing permissions and\n *  limitations under the License.\n */\n\n// This file is for use with Node.js. See dist/ for browser files.\n\nvar Hogan = require('./compiler');\nHogan.Template = require('./template').Template;\nHogan.template = Hogan.Template;\nmodule.exports = Hogan;\n","/*\n *  Copyright 2011 Twitter, Inc.\n *  Licensed under the Apache License, Version 2.0 (the \"License\");\n *  you may not use this file except in compliance with the License.\n *  You may obtain a copy of the License at\n *\n *  http://www.apache.org/licenses/LICENSE-2.0\n *\n *  Unless required by applicable law or agreed to in writing, software\n *  distributed under the License is distributed on an \"AS IS\" BASIS,\n *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n *  See the License for the specific language governing permissions and\n *  limitations under the License.\n */\n\n(function (Hogan) {\n  // Setup regex  assignments\n  // remove whitespace according to Mustache spec\n  var rIsWhitespace = /\\S/,\n      rQuot = /\\\"/g,\n      rNewline =  /\\n/g,\n      rCr = /\\r/g,\n      rSlash = /\\\\/g,\n      rLineSep = /\\u2028/,\n      rParagraphSep = /\\u2029/;\n\n  Hogan.tags = {\n    '#': 1, '^': 2, '<': 3, '$': 4,\n    '/': 5, '!': 6, '>': 7, '=': 8, '_v': 9,\n    '{': 10, '&': 11, '_t': 12\n  };\n\n  Hogan.scan = function scan(text, delimiters) {\n    var len = text.length,\n        IN_TEXT = 0,\n        IN_TAG_TYPE = 1,\n        IN_TAG = 2,\n        state = IN_TEXT,\n        tagType = null,\n        tag = null,\n        buf = '',\n        tokens = [],\n        seenTag = false,\n        i = 0,\n        lineStart = 0,\n        otag = '{{',\n        ctag = '}}';\n\n    function addBuf() {\n      if (buf.length > 0) {\n        tokens.push({tag: '_t', text: new String(buf)});\n        buf = '';\n      }\n    }\n\n    function lineIsWhitespace() {\n      var isAllWhitespace = true;\n      for (var j = lineStart; j < tokens.length; j++) {\n        isAllWhitespace =\n          (Hogan.tags[tokens[j].tag] < Hogan.tags['_v']) ||\n          (tokens[j].tag == '_t' && tokens[j].text.match(rIsWhitespace) === null);\n        if (!isAllWhitespace) {\n          return false;\n        }\n      }\n\n      return isAllWhitespace;\n    }\n\n    function filterLine(haveSeenTag, noNewLine) {\n      addBuf();\n\n      if (haveSeenTag && lineIsWhitespace()) {\n        for (var j = lineStart, next; j < tokens.length; j++) {\n          if (tokens[j].text) {\n            if ((next = tokens[j+1]) && next.tag == '>') {\n              // set indent to token value\n              next.indent = tokens[j].text.toString()\n            }\n            tokens.splice(j, 1);\n          }\n        }\n      } else if (!noNewLine) {\n        tokens.push({tag:'\\n'});\n      }\n\n      seenTag = false;\n      lineStart = tokens.length;\n    }\n\n    function changeDelimiters(text, index) {\n      var close = '=' + ctag,\n          closeIndex = text.indexOf(close, index),\n          delimiters = trim(\n            text.substring(text.indexOf('=', index) + 1, closeIndex)\n          ).split(' ');\n\n      otag = delimiters[0];\n      ctag = delimiters[delimiters.length - 1];\n\n      return closeIndex + close.length - 1;\n    }\n\n    if (delimiters) {\n      delimiters = delimiters.split(' ');\n      otag = delimiters[0];\n      ctag = delimiters[1];\n    }\n\n    for (i = 0; i < len; i++) {\n      if (state == IN_TEXT) {\n        if (tagChange(otag, text, i)) {\n          --i;\n          addBuf();\n          state = IN_TAG_TYPE;\n        } else {\n          if (text.charAt(i) == '\\n') {\n            filterLine(seenTag);\n          } else {\n            buf += text.charAt(i);\n          }\n        }\n      } else if (state == IN_TAG_TYPE) {\n        i += otag.length - 1;\n        tag = Hogan.tags[text.charAt(i + 1)];\n        tagType = tag ? text.charAt(i + 1) : '_v';\n        if (tagType == '=') {\n          i = changeDelimiters(text, i);\n          state = IN_TEXT;\n        } else {\n          if (tag) {\n            i++;\n          }\n          state = IN_TAG;\n        }\n        seenTag = i;\n      } else {\n        if (tagChange(ctag, text, i)) {\n          tokens.push({tag: tagType, n: trim(buf), otag: otag, ctag: ctag,\n                       i: (tagType == '/') ? seenTag - otag.length : i + ctag.length});\n          buf = '';\n          i += ctag.length - 1;\n          state = IN_TEXT;\n          if (tagType == '{') {\n            if (ctag == '}}') {\n              i++;\n            } else {\n              cleanTripleStache(tokens[tokens.length - 1]);\n            }\n          }\n        } else {\n          buf += text.charAt(i);\n        }\n      }\n    }\n\n    filterLine(seenTag, true);\n\n    return tokens;\n  }\n\n  function cleanTripleStache(token) {\n    if (token.n.substr(token.n.length - 1) === '}') {\n      token.n = token.n.substring(0, token.n.length - 1);\n    }\n  }\n\n  function trim(s) {\n    if (s.trim) {\n      return s.trim();\n    }\n\n    return s.replace(/^\\s*|\\s*$/g, '');\n  }\n\n  function tagChange(tag, text, index) {\n    if (text.charAt(index) != tag.charAt(0)) {\n      return false;\n    }\n\n    for (var i = 1, l = tag.length; i < l; i++) {\n      if (text.charAt(index + i) != tag.charAt(i)) {\n        return false;\n      }\n    }\n\n    return true;\n  }\n\n  // the tags allowed inside super templates\n  var allowedInSuper = {'_t': true, '\\n': true, '$': true, '/': true};\n\n  function buildTree(tokens, kind, stack, customTags) {\n    var instructions = [],\n        opener = null,\n        tail = null,\n        token = null;\n\n    tail = stack[stack.length - 1];\n\n    while (tokens.length > 0) {\n      token = tokens.shift();\n\n      if (tail && tail.tag == '<' && !(token.tag in allowedInSuper)) {\n        throw new Error('Illegal content in < super tag.');\n      }\n\n      if (Hogan.tags[token.tag] <= Hogan.tags['$'] || isOpener(token, customTags)) {\n        stack.push(token);\n        token.nodes = buildTree(tokens, token.tag, stack, customTags);\n      } else if (token.tag == '/') {\n        if (stack.length === 0) {\n          throw new Error('Closing tag without opener: /' + token.n);\n        }\n        opener = stack.pop();\n        if (token.n != opener.n && !isCloser(token.n, opener.n, customTags)) {\n          throw new Error('Nesting error: ' + opener.n + ' vs. ' + token.n);\n        }\n        opener.end = token.i;\n        return instructions;\n      } else if (token.tag == '\\n') {\n        token.last = (tokens.length == 0) || (tokens[0].tag == '\\n');\n      }\n\n      instructions.push(token);\n    }\n\n    if (stack.length > 0) {\n      throw new Error('missing closing tag: ' + stack.pop().n);\n    }\n\n    return instructions;\n  }\n\n  function isOpener(token, tags) {\n    for (var i = 0, l = tags.length; i < l; i++) {\n      if (tags[i].o == token.n) {\n        token.tag = '#';\n        return true;\n      }\n    }\n  }\n\n  function isCloser(close, open, tags) {\n    for (var i = 0, l = tags.length; i < l; i++) {\n      if (tags[i].c == close && tags[i].o == open) {\n        return true;\n      }\n    }\n  }\n\n  function stringifySubstitutions(obj) {\n    var items = [];\n    for (var key in obj) {\n      items.push('\"' + esc(key) + '\": function(c,p,t,i) {' + obj[key] + '}');\n    }\n    return \"{ \" + items.join(\",\") + \" }\";\n  }\n\n  function stringifyPartials(codeObj) {\n    var partials = [];\n    for (var key in codeObj.partials) {\n      partials.push('\"' + esc(key) + '\":{name:\"' + esc(codeObj.partials[key].name) + '\", ' + stringifyPartials(codeObj.partials[key]) + \"}\");\n    }\n    return \"partials: {\" + partials.join(\",\") + \"}, subs: \" + stringifySubstitutions(codeObj.subs);\n  }\n\n  Hogan.stringify = function(codeObj, text, options) {\n    return \"{code: function (c,p,i) { \" + Hogan.wrapMain(codeObj.code) + \" },\" + stringifyPartials(codeObj) +  \"}\";\n  }\n\n  var serialNo = 0;\n  Hogan.generate = function(tree, text, options) {\n    serialNo = 0;\n    var context = { code: '', subs: {}, partials: {} };\n    Hogan.walk(tree, context);\n\n    if (options.asString) {\n      return this.stringify(context, text, options);\n    }\n\n    return this.makeTemplate(context, text, options);\n  }\n\n  Hogan.wrapMain = function(code) {\n    return 'var t=this;t.b(i=i||\"\");' + code + 'return t.fl();';\n  }\n\n  Hogan.template = Hogan.Template;\n\n  Hogan.makeTemplate = function(codeObj, text, options) {\n    var template = this.makePartials(codeObj);\n    template.code = new Function('c', 'p', 'i', this.wrapMain(codeObj.code));\n    return new this.template(template, text, this, options);\n  }\n\n  Hogan.makePartials = function(codeObj) {\n    var key, template = {subs: {}, partials: codeObj.partials, name: codeObj.name};\n    for (key in template.partials) {\n      template.partials[key] = this.makePartials(template.partials[key]);\n    }\n    for (key in codeObj.subs) {\n      template.subs[key] = new Function('c', 'p', 't', 'i', codeObj.subs[key]);\n    }\n    return template;\n  }\n\n  function esc(s) {\n    return s.replace(rSlash, '\\\\\\\\')\n            .replace(rQuot, '\\\\\\\"')\n            .replace(rNewline, '\\\\n')\n            .replace(rCr, '\\\\r')\n            .replace(rLineSep, '\\\\u2028')\n            .replace(rParagraphSep, '\\\\u2029');\n  }\n\n  function chooseMethod(s) {\n    return (~s.indexOf('.')) ? 'd' : 'f';\n  }\n\n  function createPartial(node, context) {\n    var prefix = \"<\" + (context.prefix || \"\");\n    var sym = prefix + node.n + serialNo++;\n    context.partials[sym] = {name: node.n, partials: {}};\n    context.code += 't.b(t.rp(\"' +  esc(sym) + '\",c,p,\"' + (node.indent || '') + '\"));';\n    return sym;\n  }\n\n  Hogan.codegen = {\n    '#': function(node, context) {\n      context.code += 'if(t.s(t.' + chooseMethod(node.n) + '(\"' + esc(node.n) + '\",c,p,1),' +\n                      'c,p,0,' + node.i + ',' + node.end + ',\"' + node.otag + \" \" + node.ctag + '\")){' +\n                      't.rs(c,p,' + 'function(c,p,t){';\n      Hogan.walk(node.nodes, context);\n      context.code += '});c.pop();}';\n    },\n\n    '^': function(node, context) {\n      context.code += 'if(!t.s(t.' + chooseMethod(node.n) + '(\"' + esc(node.n) + '\",c,p,1),c,p,1,0,0,\"\")){';\n      Hogan.walk(node.nodes, context);\n      context.code += '};';\n    },\n\n    '>': createPartial,\n    '<': function(node, context) {\n      var ctx = {partials: {}, code: '', subs: {}, inPartial: true};\n      Hogan.walk(node.nodes, ctx);\n      var template = context.partials[createPartial(node, context)];\n      template.subs = ctx.subs;\n      template.partials = ctx.partials;\n    },\n\n    '$': function(node, context) {\n      var ctx = {subs: {}, code: '', partials: context.partials, prefix: node.n};\n      Hogan.walk(node.nodes, ctx);\n      context.subs[node.n] = ctx.code;\n      if (!context.inPartial) {\n        context.code += 't.sub(\"' + esc(node.n) + '\",c,p,i);';\n      }\n    },\n\n    '\\n': function(node, context) {\n      context.code += write('\"\\\\n\"' + (node.last ? '' : ' + i'));\n    },\n\n    '_v': function(node, context) {\n      context.code += 't.b(t.v(t.' + chooseMethod(node.n) + '(\"' + esc(node.n) + '\",c,p,0)));';\n    },\n\n    '_t': function(node, context) {\n      context.code += write('\"' + esc(node.text) + '\"');\n    },\n\n    '{': tripleStache,\n\n    '&': tripleStache\n  }\n\n  function tripleStache(node, context) {\n    context.code += 't.b(t.t(t.' + chooseMethod(node.n) + '(\"' + esc(node.n) + '\",c,p,0)));';\n  }\n\n  function write(s) {\n    return 't.b(' + s + ');';\n  }\n\n  Hogan.walk = function(nodelist, context) {\n    var func;\n    for (var i = 0, l = nodelist.length; i < l; i++) {\n      func = Hogan.codegen[nodelist[i].tag];\n      func && func(nodelist[i], context);\n    }\n    return context;\n  }\n\n  Hogan.parse = function(tokens, text, options) {\n    options = options || {};\n    return buildTree(tokens, '', [], options.sectionTags || []);\n  }\n\n  Hogan.cache = {};\n\n  Hogan.cacheKey = function(text, options) {\n    return [text, !!options.asString, !!options.disableLambda, options.delimiters, !!options.modelGet].join('||');\n  }\n\n  Hogan.compile = function(text, options) {\n    options = options || {};\n    var key = Hogan.cacheKey(text, options);\n    var template = this.cache[key];\n\n    if (template) {\n      var partials = template.partials;\n      for (var name in partials) {\n        delete partials[name].instance;\n      }\n      return template;\n    }\n\n    template = this.generate(this.parse(this.scan(text, options.delimiters), text, options), text, options);\n    return this.cache[key] = template;\n  }\n})(typeof exports !== 'undefined' ? exports : Hogan);\n","import{h as r,Component as o,render as t}from\"preact\";export{h,render,Component}from\"preact\";import e from\"htm\";var m=e.bind(r);export{m as html};\n","var n=function(t,s,r,e){var u;s[0]=0;for(var h=1;h<s.length;h++){var p=s[h++],a=s[h]?(s[0]|=p?1:2,r[s[h++]]):s[++h];3===p?e[0]=a:4===p?e[1]=Object.assign(e[1]||{},a):5===p?(e[1]=e[1]||{})[s[++h]]=a:6===p?e[1][s[++h]]+=a+\"\":p?(u=t.apply(a,n(t,a,r,[\"\",null])),e.push(u),a[0]?s[0]|=2:(s[h-2]=0,s[h]=u)):e.push(a)}return e},t=new Map;export default function(s){var r=t.get(this);return r||(r=new Map,t.set(this,r)),(r=n(this,r.get(s)||(r.set(s,r=function(n){for(var t,s,r=1,e=\"\",u=\"\",h=[0],p=function(n){1===r&&(n||(e=e.replace(/^\\s*\\n\\s*|\\s*\\n\\s*$/g,\"\")))?h.push(0,n,e):3===r&&(n||e)?(h.push(3,n,e),r=2):2===r&&\"...\"===e&&n?h.push(4,n,0):2===r&&e&&!n?h.push(5,0,!0,e):r>=5&&((e||!n&&5===r)&&(h.push(r,0,e,s),r=6),n&&(h.push(r,n,0,s),r=6)),e=\"\"},a=0;a<n.length;a++){a&&(1===r&&p(),p(a));for(var l=0;l<n[a].length;l++)t=n[a][l],1===r?\"<\"===t?(p(),h=[h],r=3):e+=t:4===r?\"--\"===e&&\">\"===t?(r=1,e=\"\"):e=t+e[0]:u?t===u?u=\"\":e+=t:'\"'===t||\"'\"===t?u=t:\">\"===t?(p(),r=1):r&&(\"=\"===t?(r=5,s=e,e=\"\"):\"/\"===t&&(r<5||\">\"===n[a][l+1])?(p(),3===r&&(h=h[0]),r=h,(h=h[0]).push(2,0,r),r=0):\" \"===t||\"\\t\"===t||\"\\n\"===t||\"\\r\"===t?(p(),r=2):e+=t),3===r&&\"!--\"===e&&(r=4,h=h[0])}return p(),h}(s)),r),arguments,[])).length>1?r:r[0]}\n","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport { h } from 'preact';\nimport { Highlight as HighlightUiComponent } from \"../../components/Highlight/Highlight.js\";\nimport { getPropertyByPath, unescape, toArray, warning, getHighlightedParts } from \"../../lib/utils/index.js\";\nexport function Highlight(_ref) {\n  var hit = _ref.hit,\n      attribute = _ref.attribute,\n      cssClasses = _ref.cssClasses,\n      props = _objectWithoutProperties(_ref, [\"hit\", \"attribute\", \"cssClasses\"]);\n\n  var property = getPropertyByPath(hit._highlightResult, attribute) || [];\n  var properties = toArray(property);\n  process.env.NODE_ENV === 'development' ? warning(Boolean(properties.length), \"Could not enable highlight for \\\"\".concat(attribute.toString(), \"\\\", will display an empty string.\\nPlease check whether this attribute exists and is either searchable or specified in `attributesToHighlight`.\\n\\nSee: https://alg.li/highlighting\\n\")) : void 0;\n  var parts = properties.map(function (_ref2) {\n    var value = _ref2.value;\n    return getHighlightedParts(unescape(value || ''));\n  });\n  return h(HighlightUiComponent, _extends({}, props, {\n    parts: parts,\n    classNames: cssClasses\n  }));\n}","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport { cx } from '@algolia/ui-components-shared';\nimport { h } from 'preact';\nimport { InternalHighlight } from \"../InternalHighlight/InternalHighlight.js\";\nexport function Highlight(_ref) {\n  var _ref$classNames = _ref.classNames,\n      classNames = _ref$classNames === void 0 ? {} : _ref$classNames,\n      props = _objectWithoutProperties(_ref, [\"classNames\"]);\n\n  return h(InternalHighlight, _extends({\n    classNames: {\n      root: cx('ais-Highlight', classNames.root),\n      highlighted: cx('ais-Highlight-highlighted', classNames.highlighted),\n      nonHighlighted: cx('ais-Highlight-nonHighlighted', classNames.nonHighlighted),\n      separator: cx('ais-Highlight-separator', classNames.separator)\n    }\n  }, props));\n}","export function cx() {\n  for (var _len = arguments.length, classNames = new Array(_len), _key = 0; _key < _len; _key++) {\n    classNames[_key] = arguments[_key];\n  }\n\n  return classNames.filter(Boolean).join(' ') || undefined;\n}","import { createHighlightComponent } from '@algolia/ui-components-highlight-vdom';\nimport { createElement, Fragment } from 'preact';\nexport var InternalHighlight = createHighlightComponent({\n  createElement: createElement,\n  Fragment: Fragment\n});","import _extends from \"@babel/runtime/helpers/extends\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"parts\", \"highlightedTagName\", \"nonHighlightedTagName\", \"separator\", \"className\", \"classNames\"];\n\n/** @jsx createElement */\nimport { cx } from '@algolia/ui-components-shared';\n\nfunction createHighlightPartComponent(_ref) {\n  var createElement = _ref.createElement;\n  return function HighlightPart(_ref2) {\n    var classNames = _ref2.classNames,\n        children = _ref2.children,\n        highlightedTagName = _ref2.highlightedTagName,\n        isHighlighted = _ref2.isHighlighted,\n        nonHighlightedTagName = _ref2.nonHighlightedTagName;\n    var TagName = isHighlighted ? highlightedTagName : nonHighlightedTagName;\n    return createElement(TagName, {\n      className: isHighlighted ? classNames.highlighted : classNames.nonHighlighted\n    }, children);\n  };\n}\n\nexport function createHighlightComponent(_ref3) {\n  var createElement = _ref3.createElement,\n      Fragment = _ref3.Fragment;\n  var HighlightPart = createHighlightPartComponent({\n    createElement: createElement,\n    Fragment: Fragment\n  });\n  return function Highlight(_ref4) {\n    var parts = _ref4.parts,\n        _ref4$highlightedTagN = _ref4.highlightedTagName,\n        highlightedTagName = _ref4$highlightedTagN === void 0 ? 'mark' : _ref4$highlightedTagN,\n        _ref4$nonHighlightedT = _ref4.nonHighlightedTagName,\n        nonHighlightedTagName = _ref4$nonHighlightedT === void 0 ? 'span' : _ref4$nonHighlightedT,\n        _ref4$separator = _ref4.separator,\n        separator = _ref4$separator === void 0 ? ', ' : _ref4$separator,\n        className = _ref4.className,\n        _ref4$classNames = _ref4.classNames,\n        classNames = _ref4$classNames === void 0 ? {} : _ref4$classNames,\n        props = _objectWithoutProperties(_ref4, _excluded);\n\n    return createElement(\"span\", _extends({}, props, {\n      className: cx(classNames.root, className)\n    }), parts.map(function (part, partIndex) {\n      var isLastPart = partIndex === parts.length - 1;\n      return createElement(Fragment, {\n        key: partIndex\n      }, part.map(function (subPart, subPartIndex) {\n        return createElement(HighlightPart, {\n          key: subPartIndex,\n          classNames: classNames,\n          highlightedTagName: highlightedTagName,\n          nonHighlightedTagName: nonHighlightedTagName,\n          isHighlighted: subPart.isHighlighted\n        }, subPart.value);\n      }), !isLastPart && createElement(\"span\", {\n        className: classNames.separator\n      }, separator));\n    }));\n  };\n}","function _extends() {\n  module.exports = _extends = Object.assign ? Object.assign.bind() : 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  }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n  return _extends.apply(this, arguments);\n}\nmodule.exports = _extends, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var objectWithoutPropertiesLoose = require(\"./objectWithoutPropertiesLoose.js\");\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}\nmodule.exports = _objectWithoutProperties, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _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}\nmodule.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","import { TAG_REPLACEMENT } from \"./escape-highlight.js\";\nexport function getHighlightedParts(highlightedValue) {\n  var highlightPostTag = TAG_REPLACEMENT.highlightPostTag,\n      highlightPreTag = TAG_REPLACEMENT.highlightPreTag;\n  var splitByPreTag = highlightedValue.split(highlightPreTag);\n  var firstValue = splitByPreTag.shift();\n  var elements = !firstValue ? [] : [{\n    value: firstValue,\n    isHighlighted: false\n  }];\n  splitByPreTag.forEach(function (split) {\n    var splitByPostTag = split.split(highlightPostTag);\n    elements.push({\n      value: splitByPostTag[0],\n      isHighlighted: true\n    });\n\n    if (splitByPostTag[1] !== '') {\n      elements.push({\n        value: splitByPostTag[1],\n        isHighlighted: false\n      });\n    }\n  });\n  return elements;\n}","export function getPropertyByPath(object, path) {\n  var parts = Array.isArray(path) ? path : path.split('.');\n  return parts.reduce(function (current, key) {\n    return current && current[key];\n  }, object);\n}","export function toArray(value) {\n  return Array.isArray(value) ? value : [value];\n}","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport { h } from 'preact';\nimport { ReverseHighlight as ReverseHighlightUiComponent } from \"../../components/ReverseHighlight/ReverseHighlight.js\";\nimport { getPropertyByPath, unescape, toArray, warning, getHighlightedParts } from \"../../lib/utils/index.js\";\nexport function ReverseHighlight(_ref) {\n  var hit = _ref.hit,\n      attribute = _ref.attribute,\n      cssClasses = _ref.cssClasses,\n      props = _objectWithoutProperties(_ref, [\"hit\", \"attribute\", \"cssClasses\"]);\n\n  var property = getPropertyByPath(hit._highlightResult, attribute) || [];\n  var properties = toArray(property);\n  process.env.NODE_ENV === 'development' ? warning(Boolean(properties.length), \"Could not enable highlight for \\\"\".concat(attribute.toString(), \"\\\", will display an empty string.\\nPlease check whether this attribute exists and is either searchable or specified in `attributesToHighlight`.\\n\\nSee: https://alg.li/highlighting\\n\")) : void 0;\n  var parts = properties.map(function (_ref2) {\n    var value = _ref2.value;\n    return getHighlightedParts(unescape(value || '')).map(function (_ref3) {\n      var isHighlighted = _ref3.isHighlighted,\n          rest = _objectWithoutProperties(_ref3, [\"isHighlighted\"]);\n\n      return _objectSpread(_objectSpread({}, rest), {}, {\n        isHighlighted: !isHighlighted\n      });\n    });\n  });\n  return h(ReverseHighlightUiComponent, _extends({}, props, {\n    parts: parts,\n    classNames: cssClasses\n  }));\n}","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport { cx } from '@algolia/ui-components-shared';\nimport { h } from 'preact';\nimport { InternalHighlight } from \"../InternalHighlight/InternalHighlight.js\";\nexport function ReverseHighlight(_ref) {\n  var _ref$classNames = _ref.classNames,\n      classNames = _ref$classNames === void 0 ? {} : _ref$classNames,\n      props = _objectWithoutProperties(_ref, [\"classNames\"]);\n\n  return h(InternalHighlight, _extends({\n    classNames: {\n      root: cx('ais-ReverseHighlight', classNames.root),\n      highlighted: cx('ais-ReverseHighlight-highlighted', classNames.highlighted),\n      nonHighlighted: cx('ais-ReverseHighlight-nonHighlighted', classNames.nonHighlighted),\n      separator: cx('ais-ReverseHighlight-separator', classNames.separator)\n    }\n  }, props));\n}","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport { h } from 'preact';\nimport { ReverseSnippet as ReverseSnippetUiComponent } from \"../../components/ReverseSnippet/ReverseSnippet.js\";\nimport { getPropertyByPath, unescape, toArray, warning, getHighlightedParts } from \"../../lib/utils/index.js\";\nexport function ReverseSnippet(_ref) {\n  var hit = _ref.hit,\n      attribute = _ref.attribute,\n      cssClasses = _ref.cssClasses,\n      props = _objectWithoutProperties(_ref, [\"hit\", \"attribute\", \"cssClasses\"]);\n\n  var property = getPropertyByPath(hit._snippetResult, attribute) || [];\n  var properties = toArray(property);\n  process.env.NODE_ENV === 'development' ? warning(Boolean(properties.length), \"Could not enable snippet for \\\"\".concat(attribute.toString(), \"\\\", will display an empty string.\\nPlease check whether this attribute exists and is specified in `attributesToSnippet`.\\n\\nSee: https://alg.li/highlighting\\n\")) : void 0;\n  var parts = properties.map(function (_ref2) {\n    var value = _ref2.value;\n    return getHighlightedParts(unescape(value || '')).map(function (_ref3) {\n      var isHighlighted = _ref3.isHighlighted,\n          rest = _objectWithoutProperties(_ref3, [\"isHighlighted\"]);\n\n      return _objectSpread(_objectSpread({}, rest), {}, {\n        isHighlighted: !isHighlighted\n      });\n    });\n  });\n  return h(ReverseSnippetUiComponent, _extends({}, props, {\n    parts: parts,\n    classNames: cssClasses\n  }));\n}","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport { cx } from '@algolia/ui-components-shared';\nimport { h } from 'preact';\nimport { InternalHighlight } from \"../InternalHighlight/InternalHighlight.js\";\nexport function ReverseSnippet(_ref) {\n  var _ref$classNames = _ref.classNames,\n      classNames = _ref$classNames === void 0 ? {} : _ref$classNames,\n      props = _objectWithoutProperties(_ref, [\"classNames\"]);\n\n  return h(InternalHighlight, _extends({\n    classNames: {\n      root: cx('ais-ReverseSnippet', classNames.root),\n      highlighted: cx('ais-ReverseSnippet-highlighted', classNames.highlighted),\n      nonHighlighted: cx('ais-ReverseSnippet-nonHighlighted', classNames.nonHighlighted),\n      separator: cx('ais-ReverseSnippet-separator', classNames.separator)\n    }\n  }, props));\n}","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport { h } from 'preact';\nimport { Snippet as SnippetUiComponent } from \"../../components/Snippet/Snippet.js\";\nimport { getPropertyByPath, unescape, toArray, warning, getHighlightedParts } from \"../../lib/utils/index.js\";\nexport function Snippet(_ref) {\n  var hit = _ref.hit,\n      attribute = _ref.attribute,\n      cssClasses = _ref.cssClasses,\n      props = _objectWithoutProperties(_ref, [\"hit\", \"attribute\", \"cssClasses\"]);\n\n  var property = getPropertyByPath(hit._snippetResult, attribute) || [];\n  var properties = toArray(property);\n  process.env.NODE_ENV === 'development' ? warning(Boolean(properties.length), \"Could not enable snippet for \\\"\".concat(attribute.toString(), \"\\\", will display an empty string.\\nPlease check whether this attribute exists and is specified in `attributesToSnippet`.\\n\\nSee: https://alg.li/highlighting\\n\")) : void 0;\n  var parts = properties.map(function (_ref2) {\n    var value = _ref2.value;\n    return getHighlightedParts(unescape(value || ''));\n  });\n  return h(SnippetUiComponent, _extends({}, props, {\n    parts: parts,\n    classNames: cssClasses\n  }));\n}","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport { cx } from '@algolia/ui-components-shared';\nimport { h } from 'preact';\nimport { InternalHighlight } from \"../InternalHighlight/InternalHighlight.js\";\nexport function Snippet(_ref) {\n  var _ref$classNames = _ref.classNames,\n      classNames = _ref$classNames === void 0 ? {} : _ref$classNames,\n      props = _objectWithoutProperties(_ref, [\"classNames\"]);\n\n  return h(InternalHighlight, _extends({\n    classNames: {\n      root: cx('ais-Snippet', classNames.root),\n      highlighted: cx('ais-Snippet-highlighted', classNames.highlighted),\n      nonHighlighted: cx('ais-Snippet-nonHighlighted', classNames.nonHighlighted),\n      separator: cx('ais-Snippet-separator', classNames.separator)\n    }\n  }, props));\n}","var defaultTemplates = {\n  empty: function empty() {\n    return 'No results';\n  },\n  item: function item(data) {\n    return JSON.stringify(data, null, 2);\n  }\n};\nexport default defaultTemplates;","import { isDomElement } from \"./isDomElement.js\";\n/**\n * Return the container. If it's a string, it is considered a\n * css selector and retrieves the first matching element. Otherwise\n * test if it validates that it's a correct DOMElement.\n *\n * @param {string|HTMLElement} selectorOrHTMLElement CSS Selector or container node.\n * @return {HTMLElement} Container node\n * @throws Error when the type is not correct\n */\n\nexport function getContainerNode(selectorOrHTMLElement) {\n  var isSelectorString = typeof selectorOrHTMLElement === 'string';\n  var domElement = isSelectorString ? document.querySelector(selectorOrHTMLElement) : selectorOrHTMLElement;\n\n  if (!isDomElement(domElement)) {\n    var errorMessage = 'Container must be `string` or `HTMLElement`.';\n\n    if (isSelectorString) {\n      errorMessage += \" Unable to find \".concat(selectorOrHTMLElement);\n    }\n\n    throw new Error(errorMessage);\n  }\n\n  return domElement;\n}","export function isDomElement(object) {\n  return object instanceof HTMLElement || Boolean(object) && object.nodeType > 0;\n}","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nimport { uniq } from \"../utils/uniq.js\";\n\nfunction prepareTemplates( // can not use = {} here, since the template could have different constraints\ndefaultTemplates) {\n  var templates = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var allKeys = uniq([].concat(_toConsumableArray(Object.keys(defaultTemplates || {})), _toConsumableArray(Object.keys(templates))));\n  return allKeys.reduce(function (config, key) {\n    var defaultTemplate = defaultTemplates ? defaultTemplates[key] : undefined;\n    var customTemplate = templates[key];\n    var isCustomTemplate = customTemplate !== undefined && customTemplate !== defaultTemplate;\n    config.templates[key] = isCustomTemplate ? customTemplate // typescript doesn't recognize that this condition asserts customTemplate is defined\n    : defaultTemplate;\n    config.useCustomCompileOptions[key] = isCustomTemplate;\n    return config;\n  }, {\n    // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n    templates: {},\n    // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n    useCustomCompileOptions: {}\n  });\n}\n/**\n * Prepares an object to be passed to the Template widget\n */\n\n\nexport function prepareTemplateProps(_ref) {\n  var defaultTemplates = _ref.defaultTemplates,\n      templates = _ref.templates,\n      templatesConfig = _ref.templatesConfig;\n  var preparedTemplates = prepareTemplates(defaultTemplates, templates);\n  return _objectSpread({\n    templatesConfig: templatesConfig\n  }, preparedTemplates);\n}","var NAMESPACE = 'ais';\nexport var component = function component(componentName) {\n  return function () {\n    var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n        descendantName = _ref.descendantName,\n        modifierName = _ref.modifierName;\n\n    var descendent = descendantName ? \"-\".concat(descendantName) : '';\n    var modifier = modifierName ? \"--\".concat(modifierName) : '';\n    return \"\".concat(NAMESPACE, \"-\").concat(componentName).concat(descendent).concat(modifier);\n  };\n};","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { uniq, find, createDocumentationMessageGenerator, warning } from \"../utils/index.js\";\n\nvar getSelectedHits = function getSelectedHits(hits, selectedObjectIDs) {\n  return selectedObjectIDs.map(function (objectID) {\n    var hit = find(hits, function (h) {\n      return h.objectID === objectID;\n    });\n\n    if (typeof hit === 'undefined') {\n      throw new Error(\"Could not find objectID \\\"\".concat(objectID, \"\\\" passed to `clickedObjectIDsAfterSearch` in the returned hits. This is necessary to infer the absolute position and the query ID.\"));\n    }\n\n    return hit;\n  });\n};\n\nvar getQueryID = function getQueryID(selectedHits) {\n  var queryIDs = uniq(selectedHits.map(function (hit) {\n    return hit.__queryID;\n  }));\n\n  if (queryIDs.length > 1) {\n    throw new Error('Insights currently allows a single `queryID`. The `objectIDs` provided map to multiple `queryID`s.');\n  }\n\n  var queryID = queryIDs[0];\n\n  if (typeof queryID !== 'string') {\n    throw new Error(\"Could not infer `queryID`. Ensure InstantSearch `clickAnalytics: true` was added with the Configure widget.\\n\\nSee: https://alg.li/lNiZZ7\");\n  }\n\n  return queryID;\n};\n\nvar getPositions = function getPositions(selectedHits) {\n  return selectedHits.map(function (hit) {\n    return hit.__position;\n  });\n};\n\nexport var inferPayload = function inferPayload(_ref) {\n  var method = _ref.method,\n      results = _ref.results,\n      hits = _ref.hits,\n      objectIDs = _ref.objectIDs;\n  var index = results.index;\n  var selectedHits = getSelectedHits(hits, objectIDs);\n  var queryID = getQueryID(selectedHits);\n\n  switch (method) {\n    case 'clickedObjectIDsAfterSearch':\n      {\n        var positions = getPositions(selectedHits);\n        return {\n          index: index,\n          queryID: queryID,\n          objectIDs: objectIDs,\n          positions: positions\n        };\n      }\n\n    case 'convertedObjectIDsAfterSearch':\n      return {\n        index: index,\n        queryID: queryID,\n        objectIDs: objectIDs\n      };\n\n    default:\n      throw new Error(\"Unsupported method passed to insights: \\\"\".concat(method, \"\\\".\"));\n  }\n};\n\nvar wrapInsightsClient = function wrapInsightsClient(aa, results, hits) {\n  return function (method) {\n    for (var _len = arguments.length, payloads = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      payloads[_key - 1] = arguments[_key];\n    }\n\n    var payload = payloads[0];\n    process.env.NODE_ENV === 'development' ? warning(false, \"`insights` function has been deprecated. It is still supported in 4.x releases, but not further. It is replaced by the `insights` middleware.\\n\\nFor more information, visit https://www.algolia.com/doc/guides/getting-insights-and-analytics/search-analytics/click-through-and-conversions/how-to/send-click-and-conversion-events-with-instantsearch/js/\") : void 0;\n\n    if (!aa) {\n      var withInstantSearchUsage = createDocumentationMessageGenerator({\n        name: 'instantsearch'\n      });\n      throw new Error(withInstantSearchUsage('The `insightsClient` option has not been provided to `instantsearch`.'));\n    }\n\n    if (!Array.isArray(payload.objectIDs)) {\n      throw new TypeError('Expected `objectIDs` to be an array.');\n    }\n\n    var inferredPayload = inferPayload({\n      method: method,\n      results: results,\n      hits: hits,\n      objectIDs: payload.objectIDs\n    });\n    aa(method, _objectSpread(_objectSpread({}, inferredPayload), payload));\n  };\n};\n/**\n * @deprecated This function will be still supported in 4.x releases, but not further. It is replaced by the `insights` middleware. For more information, visit https://www.algolia.com/doc/guides/getting-insights-and-analytics/search-analytics/click-through-and-conversions/how-to/send-click-and-conversion-events-with-instantsearch/js/\n * It passes `insights` to `HitsWithInsightsListener` and `InfiniteHitsWithInsightsListener`.\n */\n\n\nexport default function withInsights(connector) {\n  return function (renderFn, unmountFn) {\n    return connector(function (renderOptions, isFirstRender) {\n      var results = renderOptions.results,\n          hits = renderOptions.hits,\n          instantSearchInstance = renderOptions.instantSearchInstance;\n\n      if (results && hits && instantSearchInstance) {\n        var insights = wrapInsightsClient(instantSearchInstance.insightsClient, results, hits);\n        return renderFn(_objectSpread(_objectSpread({}, renderOptions), {}, {\n          insights: insights\n        }), isFirstRender);\n      }\n\n      return renderFn(renderOptions, isFirstRender);\n    }, unmountFn);\n  };\n}","// We aren't using the native `Array.prototype.find` because the refactor away from Lodash is not\n// published as a major version.\n// Relying on the `find` polyfill on user-land, which before was only required for niche use-cases,\n// was decided as too risky.\n// @MAJOR Replace with the native `Array.prototype.find` method\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find\nexport function find(items, predicate) {\n  var value;\n\n  for (var i = 0; i < items.length; i++) {\n    value = items[i]; // inlined for performance: if (Call(predicate, thisArg, [value, i, list])) {\n\n    if (predicate(value, i, items)) {\n      return value;\n    }\n  }\n\n  return undefined;\n}","import { h } from 'preact';\nimport { deserializePayload } from \"../utils/index.js\";\nimport { readDataAttributes, hasDataAttributes } from \"../../helpers/insights.js\";\n\nvar findInsightsTarget = function findInsightsTarget(startElement, endElement, validator) {\n  var element = startElement;\n\n  while (element && !validator(element)) {\n    if (element === endElement) {\n      return null;\n    }\n\n    element = element.parentElement;\n  }\n\n  return element;\n};\n\nvar parseInsightsEvent = function parseInsightsEvent(element) {\n  var serializedPayload = element.getAttribute('data-insights-event');\n\n  if (typeof serializedPayload !== 'string') {\n    throw new Error('The insights middleware expects `data-insights-event` to be a base64-encoded JSON string.');\n  }\n\n  try {\n    return deserializePayload(serializedPayload);\n  } catch (error) {\n    throw new Error('The insights middleware was unable to parse `data-insights-event`.');\n  }\n};\n\nvar insightsListener = function insightsListener(BaseComponent) {\n  function WithInsightsListener(props) {\n    var handleClick = function handleClick(event) {\n      if (props.sendEvent) {\n        // new way with insights middleware\n        var targetWithEvent = findInsightsTarget(event.target, event.currentTarget, function (element) {\n          return element.hasAttribute('data-insights-event');\n        });\n\n        if (targetWithEvent) {\n          var payload = parseInsightsEvent(targetWithEvent);\n          payload.forEach(function (single) {\n            return props.sendEvent(single);\n          });\n        }\n      } // old way, e.g. instantsearch.insights(\"clickedObjectIDsAfterSearch\", { .. })\n\n\n      var insightsTarget = findInsightsTarget(event.target, event.currentTarget, function (element) {\n        return hasDataAttributes(element);\n      });\n\n      if (insightsTarget) {\n        var _readDataAttributes = readDataAttributes(insightsTarget),\n            method = _readDataAttributes.method,\n            _payload = _readDataAttributes.payload;\n\n        props.insights(method, _payload);\n      }\n    };\n\n    return h(\"div\", {\n      onClick: handleClick\n    }, h(BaseComponent, props));\n  }\n\n  return WithInsightsListener;\n};\n\nexport default insightsListener;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport { warning, serializePayload, deserializePayload } from \"../lib/utils/index.js\";\nexport function readDataAttributes(domElement) {\n  var method = domElement.getAttribute('data-insights-method');\n  var serializedPayload = domElement.getAttribute('data-insights-payload');\n\n  if (typeof serializedPayload !== 'string') {\n    throw new Error('The insights helper expects `data-insights-payload` to be a base64-encoded JSON string.');\n  }\n\n  try {\n    var payload = deserializePayload(serializedPayload);\n    return {\n      method: method,\n      payload: payload\n    };\n  } catch (error) {\n    throw new Error('The insights helper was unable to parse `data-insights-payload`.');\n  }\n}\nexport function hasDataAttributes(domElement) {\n  return domElement.hasAttribute('data-insights-method');\n}\nexport function writeDataAttributes(_ref) {\n  var method = _ref.method,\n      payload = _ref.payload;\n\n  if (_typeof(payload) !== 'object') {\n    throw new Error(\"The insights helper expects the payload to be an object.\");\n  }\n\n  var serializedPayload;\n\n  try {\n    serializedPayload = serializePayload(payload);\n  } catch (error) {\n    throw new Error(\"Could not JSON serialize the payload object.\");\n  }\n\n  return \"data-insights-method=\\\"\".concat(method, \"\\\" data-insights-payload=\\\"\").concat(serializedPayload, \"\\\"\");\n}\n/**\n * @deprecated This function will be still supported in 4.x releases, but not further. It is replaced by the `insights` middleware. For more information, visit https://www.algolia.com/doc/guides/getting-insights-and-analytics/search-analytics/click-through-and-conversions/how-to/send-click-and-conversion-events-with-instantsearch/js/\n */\n\nexport default function insights(method, payload) {\n  process.env.NODE_ENV === 'development' ? warning(false, \"`insights` function has been deprecated. It is still supported in 4.x releases, but not further. It is replaced by the `insights` middleware.\\n\\nFor more information, visit https://www.algolia.com/doc/guides/getting-insights-and-analytics/search-analytics/click-through-and-conversions/how-to/send-click-and-conversion-events-with-instantsearch/js/\") : void 0;\n  return writeDataAttributes({\n    method: method,\n    payload: payload\n  });\n}","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { h, render } from 'preact';\nimport cx from 'classnames';\nimport RefinementList from \"../../components/RefinementList/RefinementList.js\";\nimport connectMenu from \"../../connectors/menu/connectMenu.js\";\nimport defaultTemplates from \"./defaultTemplates.js\";\nimport { getContainerNode, createDocumentationMessageGenerator } from \"../../lib/utils/index.js\";\nimport { prepareTemplateProps } from \"../../lib/templating/index.js\";\nimport { component } from \"../../lib/suit.js\";\nvar withUsage = createDocumentationMessageGenerator({\n  name: 'menu'\n});\nvar suit = component('Menu');\n\nvar renderer = function renderer(_ref) {\n  var containerNode = _ref.containerNode,\n      cssClasses = _ref.cssClasses,\n      renderState = _ref.renderState,\n      templates = _ref.templates,\n      showMore = _ref.showMore;\n  return function (_ref2, isFirstRendering) {\n    var refine = _ref2.refine,\n        items = _ref2.items,\n        createURL = _ref2.createURL,\n        instantSearchInstance = _ref2.instantSearchInstance,\n        isShowingMore = _ref2.isShowingMore,\n        toggleShowMore = _ref2.toggleShowMore,\n        canToggleShowMore = _ref2.canToggleShowMore;\n\n    if (isFirstRendering) {\n      renderState.templateProps = prepareTemplateProps({\n        defaultTemplates: defaultTemplates,\n        templatesConfig: instantSearchInstance.templatesConfig,\n        templates: templates\n      });\n      return;\n    }\n\n    var facetValues = items.map(function (facetValue) {\n      return _objectSpread(_objectSpread({}, facetValue), {}, {\n        url: createURL(facetValue.value)\n      });\n    });\n    render(h(RefinementList, {\n      createURL: createURL,\n      cssClasses: cssClasses,\n      facetValues: facetValues,\n      showMore: showMore,\n      templateProps: renderState.templateProps,\n      toggleRefinement: refine,\n      toggleShowMore: toggleShowMore,\n      isShowingMore: isShowingMore,\n      canToggleShowMore: canToggleShowMore\n    }), containerNode);\n  };\n};\n\nvar menu = function menu(widgetParams) {\n  var _ref3 = widgetParams || {},\n      container = _ref3.container,\n      attribute = _ref3.attribute,\n      sortBy = _ref3.sortBy,\n      limit = _ref3.limit,\n      showMore = _ref3.showMore,\n      showMoreLimit = _ref3.showMoreLimit,\n      _ref3$cssClasses = _ref3.cssClasses,\n      userCssClasses = _ref3$cssClasses === void 0 ? {} : _ref3$cssClasses,\n      _ref3$templates = _ref3.templates,\n      templates = _ref3$templates === void 0 ? {} : _ref3$templates,\n      transformItems = _ref3.transformItems;\n\n  if (!container) {\n    throw new Error(withUsage('The `container` option is required.'));\n  }\n\n  var containerNode = getContainerNode(container);\n  var cssClasses = {\n    root: cx(suit(), userCssClasses.root),\n    noRefinementRoot: cx(suit({\n      modifierName: 'noRefinement'\n    }), userCssClasses.noRefinementRoot),\n    list: cx(suit({\n      descendantName: 'list'\n    }), userCssClasses.list),\n    item: cx(suit({\n      descendantName: 'item'\n    }), userCssClasses.item),\n    selectedItem: cx(suit({\n      descendantName: 'item',\n      modifierName: 'selected'\n    }), userCssClasses.selectedItem),\n    link: cx(suit({\n      descendantName: 'link'\n    }), userCssClasses.link),\n    label: cx(suit({\n      descendantName: 'label'\n    }), userCssClasses.label),\n    count: cx(suit({\n      descendantName: 'count'\n    }), userCssClasses.count),\n    showMore: cx(suit({\n      descendantName: 'showMore'\n    }), userCssClasses.showMore),\n    disabledShowMore: cx(suit({\n      descendantName: 'showMore',\n      modifierName: 'disabled'\n    }), userCssClasses.disabledShowMore)\n  };\n  var specializedRenderer = renderer({\n    containerNode: containerNode,\n    cssClasses: cssClasses,\n    renderState: {},\n    templates: templates,\n    showMore: showMore\n  });\n  var makeWidget = connectMenu(specializedRenderer, function () {\n    return render(null, containerNode);\n  });\n  return _objectSpread(_objectSpread({}, makeWidget({\n    attribute: attribute,\n    limit: limit,\n    showMore: showMore,\n    showMoreLimit: showMoreLimit,\n    sortBy: sortBy,\n    transformItems: transformItems\n  })), {}, {\n    $$widgetType: 'ais.menu'\n  });\n};\n\nexport default menu;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { h, createRef, Component } from 'preact';\nimport cx from 'classnames';\nimport { isSpecialClick, isEqual } from \"../../lib/utils/index.js\";\nimport Template from \"../Template/Template.js\";\nimport RefinementListItem from \"./RefinementListItem.js\";\nimport SearchBox from \"../SearchBox/SearchBox.js\";\nvar defaultProps = {\n  cssClasses: {},\n  depth: 0\n};\n\nfunction isHierarchicalMenuItem(facetValue) {\n  return facetValue.data !== undefined;\n}\n\nvar RefinementList = /*#__PURE__*/function (_Component) {\n  _inherits(RefinementList, _Component);\n\n  var _super = _createSuper(RefinementList);\n\n  function RefinementList(props) {\n    var _this;\n\n    _classCallCheck(this, RefinementList);\n\n    _this = _super.call(this, props);\n\n    _defineProperty(_assertThisInitialized(_this), \"searchBox\", createRef());\n\n    _this.handleItemClick = _this.handleItemClick.bind(_assertThisInitialized(_this));\n    return _this;\n  }\n\n  _createClass(RefinementList, [{\n    key: \"shouldComponentUpdate\",\n    value: function shouldComponentUpdate(nextProps) {\n      var areFacetValuesDifferent = !isEqual(this.props.facetValues, nextProps.facetValues);\n      return areFacetValuesDifferent;\n    }\n  }, {\n    key: \"refine\",\n    value: function refine(facetValueToRefine) {\n      this.props.toggleRefinement(facetValueToRefine);\n    }\n  }, {\n    key: \"_generateFacetItem\",\n    value: function _generateFacetItem(facetValue) {\n      var _cx;\n\n      var subItems;\n\n      if (isHierarchicalMenuItem(facetValue) && Array.isArray(facetValue.data) && facetValue.data.length > 0) {\n        var _this$props$cssClasse = this.props.cssClasses,\n            root = _this$props$cssClasse.root,\n            cssClasses = _objectWithoutProperties(_this$props$cssClasse, [\"root\"]);\n\n        subItems = h(RefinementList, _extends({}, this.props, {\n          // We want to keep `root` required for external usage but not for the\n          // sub items.\n          cssClasses: cssClasses,\n          depth: this.props.depth + 1,\n          facetValues: facetValue.data,\n          showMore: false,\n          className: this.props.cssClasses.childList\n        }));\n      }\n\n      var url = this.props.createURL(facetValue.value);\n\n      var templateData = _objectSpread(_objectSpread({}, facetValue), {}, {\n        url: url,\n        attribute: this.props.attribute,\n        cssClasses: this.props.cssClasses,\n        isFromSearch: this.props.isFromSearch\n      });\n\n      var key = facetValue.value;\n\n      if (facetValue.isRefined !== undefined) {\n        key += \"/\".concat(facetValue.isRefined);\n      }\n\n      if (facetValue.count !== undefined) {\n        key += \"/\".concat(facetValue.count);\n      }\n\n      var refinementListItemClassName = cx(this.props.cssClasses.item, (_cx = {}, _defineProperty(_cx, this.props.cssClasses.selectedItem, facetValue.isRefined), _defineProperty(_cx, this.props.cssClasses.disabledItem, !facetValue.count), _defineProperty(_cx, this.props.cssClasses.parentItem, isHierarchicalMenuItem(facetValue) && Array.isArray(facetValue.data) && facetValue.data.length > 0), _cx));\n      return h(RefinementListItem, {\n        templateKey: \"item\",\n        key: key,\n        facetValueToRefine: facetValue.value,\n        handleClick: this.handleItemClick,\n        isRefined: facetValue.isRefined,\n        className: refinementListItemClassName,\n        subItems: subItems,\n        templateData: templateData,\n        templateProps: this.props.templateProps\n      });\n    } // Click events on DOM tree like LABEL > INPUT will result in two click events\n    // instead of one.\n    // No matter the framework, see https://www.google.com/search?q=click+label+twice\n    //\n    // Thus making it hard to distinguish activation from deactivation because both click events\n    // are very close. Debounce is a solution but hacky.\n    //\n    // So the code here checks if the click was done on or in a LABEL. If this LABEL\n    // has a checkbox inside, we ignore the first click event because we will get another one.\n    //\n    // We also check if the click was done inside a link and then e.preventDefault() because we already\n    // handle the url\n    //\n    // Finally, we always stop propagation of the event to avoid multiple levels RefinementLists to fail: click\n    // on child would click on parent also\n\n  }, {\n    key: \"handleItemClick\",\n    value: function handleItemClick(_ref) {\n      var facetValueToRefine = _ref.facetValueToRefine,\n          isRefined = _ref.isRefined,\n          originalEvent = _ref.originalEvent;\n\n      if (isSpecialClick(originalEvent)) {\n        // do not alter the default browser behavior\n        // if one special key is down\n        return;\n      }\n\n      if (!(originalEvent.target instanceof HTMLElement) || !(originalEvent.target.parentNode instanceof HTMLElement)) {\n        return;\n      }\n\n      if (isRefined && originalEvent.target.parentNode.querySelector('input[type=\"radio\"]:checked')) {\n        // Prevent refinement for being reset if the user clicks on an already checked radio button\n        return;\n      }\n\n      if (originalEvent.target.tagName === 'INPUT') {\n        this.refine(facetValueToRefine);\n        return;\n      }\n\n      var parent = originalEvent.target;\n\n      while (parent !== originalEvent.currentTarget) {\n        if (parent.tagName === 'LABEL' && (parent.querySelector('input[type=\"checkbox\"]') || parent.querySelector('input[type=\"radio\"]'))) {\n          return;\n        }\n\n        if (parent.tagName === 'A' && parent.href) {\n          originalEvent.preventDefault();\n        }\n\n        parent = parent.parentNode;\n      }\n\n      originalEvent.stopPropagation();\n      this.refine(facetValueToRefine);\n    }\n  }, {\n    key: \"componentWillReceiveProps\",\n    value: function componentWillReceiveProps(nextProps) {\n      if (this.searchBox.current && !nextProps.isFromSearch) {\n        this.searchBox.current.resetInput();\n      }\n    }\n  }, {\n    key: \"refineFirstValue\",\n    value: function refineFirstValue() {\n      var firstValue = this.props.facetValues && this.props.facetValues[0];\n\n      if (firstValue) {\n        var actualValue = firstValue.value;\n        this.props.toggleRefinement(actualValue);\n      }\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this2 = this;\n\n      var showMoreButtonClassName = cx(this.props.cssClasses.showMore, _defineProperty({}, this.props.cssClasses.disabledShowMore, !(this.props.showMore === true && this.props.canToggleShowMore)));\n      var showMoreButton = this.props.showMore === true && h(Template, _extends({}, this.props.templateProps, {\n        templateKey: \"showMoreText\",\n        rootTagName: \"button\",\n        rootProps: {\n          className: showMoreButtonClassName,\n          disabled: !this.props.canToggleShowMore,\n          onClick: this.props.toggleShowMore\n        },\n        data: {\n          isShowingMore: this.props.isShowingMore\n        }\n      }));\n      var shouldDisableSearchBox = this.props.searchIsAlwaysActive !== true && !(this.props.isFromSearch || !this.props.hasExhaustiveItems);\n      var searchBox = this.props.searchFacetValues && h(\"div\", {\n        className: this.props.cssClasses.searchBox\n      }, h(SearchBox, {\n        ref: this.searchBox,\n        placeholder: this.props.searchPlaceholder,\n        disabled: shouldDisableSearchBox,\n        cssClasses: this.props.cssClasses.searchable,\n        templates: this.props.searchBoxTemplateProps.templates,\n        onChange: function onChange(event) {\n          return _this2.props.searchFacetValues(event.target.value);\n        },\n        onReset: function onReset() {\n          return _this2.props.searchFacetValues('');\n        },\n        onSubmit: function onSubmit() {\n          return _this2.refineFirstValue();\n        } // This sets the search box to a controlled state because\n        // we don't rely on the `refine` prop but on `onChange`.\n        ,\n        searchAsYouType: false\n      }));\n      var facetValues = this.props.facetValues && this.props.facetValues.length > 0 && h(\"ul\", {\n        className: this.props.cssClasses.list\n      }, this.props.facetValues.map(this._generateFacetItem, this));\n      var noResults = this.props.searchFacetValues && this.props.isFromSearch && (!this.props.facetValues || this.props.facetValues.length === 0) && h(Template, _extends({}, this.props.templateProps, {\n        templateKey: \"searchableNoResults\",\n        rootProps: {\n          className: this.props.cssClasses.noResults\n        }\n      }));\n      var rootClassName = cx(this.props.cssClasses.root, _defineProperty({}, this.props.cssClasses.noRefinementRoot, !this.props.facetValues || this.props.facetValues.length === 0), this.props.className);\n      return h(\"div\", {\n        className: rootClassName\n      }, this.props.children, searchBox, facetValues, noResults, showMoreButton);\n    }\n  }]);\n\n  return RefinementList;\n}(Component);\n\n_defineProperty(RefinementList, \"defaultProps\", defaultProps);\n\nexport default RefinementList;","export function isSpecialClick(event) {\n  var isMiddleClick = event.button === 1;\n  return isMiddleClick || event.altKey || event.ctrlKey || event.metaKey || event.shiftKey;\n}","function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nimport { h } from 'preact';\nimport Template from \"../Template/Template.js\";\n\nfunction RefinementListItem(_ref) {\n  var className = _ref.className,\n      handleClick = _ref.handleClick,\n      facetValueToRefine = _ref.facetValueToRefine,\n      isRefined = _ref.isRefined,\n      templateProps = _ref.templateProps,\n      templateKey = _ref.templateKey,\n      templateData = _ref.templateData,\n      subItems = _ref.subItems;\n  return h(\"li\", {\n    className: className,\n    onClick: function onClick(originalEvent) {\n      handleClick({\n        facetValueToRefine: facetValueToRefine,\n        isRefined: isRefined,\n        originalEvent: originalEvent\n      });\n    }\n  }, h(Template, _extends({}, templateProps, {\n    templateKey: templateKey,\n    data: templateData\n  })), subItems);\n}\n\nexport default RefinementListItem;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { h, createRef, Component } from 'preact';\nimport { noop } from \"../../lib/utils/index.js\";\nimport Template from \"../Template/Template.js\";\nvar defaultProps = {\n  query: '',\n  showSubmit: true,\n  showReset: true,\n  showLoadingIndicator: true,\n  autofocus: false,\n  searchAsYouType: true,\n  isSearchStalled: false,\n  disabled: false,\n  onChange: noop,\n  onSubmit: noop,\n  onReset: noop,\n  refine: noop\n};\n\nvar SearchBox = /*#__PURE__*/function (_Component) {\n  _inherits(SearchBox, _Component);\n\n  var _super = _createSuper(SearchBox);\n\n  function SearchBox() {\n    var _this;\n\n    _classCallCheck(this, SearchBox);\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 = _super.call.apply(_super, [this].concat(args));\n\n    _defineProperty(_assertThisInitialized(_this), \"state\", {\n      query: _this.props.query,\n      focused: false\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"input\", createRef());\n\n    _defineProperty(_assertThisInitialized(_this), \"onInput\", function (event) {\n      var _this$props = _this.props,\n          searchAsYouType = _this$props.searchAsYouType,\n          refine = _this$props.refine,\n          onChange = _this$props.onChange;\n      var query = event.target.value;\n\n      if (searchAsYouType) {\n        refine(query);\n      }\n\n      _this.setState({\n        query: query\n      });\n\n      onChange(event);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onSubmit\", function (event) {\n      var _this$props2 = _this.props,\n          searchAsYouType = _this$props2.searchAsYouType,\n          refine = _this$props2.refine,\n          onSubmit = _this$props2.onSubmit;\n      event.preventDefault();\n      event.stopPropagation();\n\n      if (_this.input.current) {\n        _this.input.current.blur();\n      }\n\n      if (!searchAsYouType) {\n        refine(_this.state.query);\n      }\n\n      onSubmit(event);\n      return false;\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onReset\", function (event) {\n      var _this$props3 = _this.props,\n          refine = _this$props3.refine,\n          onReset = _this$props3.onReset;\n      var query = '';\n\n      if (_this.input.current) {\n        _this.input.current.focus();\n      }\n\n      refine(query);\n\n      _this.setState({\n        query: query\n      });\n\n      onReset(event);\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onBlur\", function () {\n      _this.setState({\n        focused: false\n      });\n    });\n\n    _defineProperty(_assertThisInitialized(_this), \"onFocus\", function () {\n      _this.setState({\n        focused: true\n      });\n    });\n\n    return _this;\n  }\n\n  _createClass(SearchBox, [{\n    key: \"resetInput\",\n    value:\n    /**\n     * This public method is used in the RefinementList SFFV search box\n     * to reset the input state when an item is selected.\n     *\n     * @see RefinementList#componentWillReceiveProps\n     * @return {undefined}\n     */\n    function resetInput() {\n      this.setState({\n        query: ''\n      });\n    }\n  }, {\n    key: \"componentWillReceiveProps\",\n    value: function componentWillReceiveProps(nextProps) {\n      /**\n       * when the user is typing, we don't want to replace the query typed\n       * by the user (state.query) with the query exposed by the connector (props.query)\n       * see: https://github.com/algolia/instantsearch.js/issues/4141\n       */\n      if (!this.state.focused && nextProps.query !== this.state.query) {\n        this.setState({\n          query: nextProps.query\n        });\n      }\n    }\n  }, {\n    key: \"render\",\n    value: function render() {\n      var _this$props4 = this.props,\n          cssClasses = _this$props4.cssClasses,\n          placeholder = _this$props4.placeholder,\n          autofocus = _this$props4.autofocus,\n          showSubmit = _this$props4.showSubmit,\n          showReset = _this$props4.showReset,\n          showLoadingIndicator = _this$props4.showLoadingIndicator,\n          templates = _this$props4.templates,\n          isSearchStalled = _this$props4.isSearchStalled;\n      return h(\"div\", {\n        className: cssClasses.root\n      }, h(\"form\", {\n        action: \"\",\n        role: \"search\",\n        className: cssClasses.form,\n        noValidate: true,\n        onSubmit: this.onSubmit,\n        onReset: this.onReset\n      }, h(\"input\", {\n        ref: this.input,\n        value: this.state.query,\n        disabled: this.props.disabled,\n        className: cssClasses.input,\n        type: \"search\",\n        placeholder: placeholder,\n        autoFocus: autofocus,\n        autoComplete: \"off\",\n        autoCorrect: \"off\",\n        autoCapitalize: \"off\" // @ts-expect-error `spellCheck` attribute is missing in preact JSX types\n        ,\n        spellCheck: \"false\",\n        maxLength: 512,\n        onInput: this.onInput,\n        onBlur: this.onBlur,\n        onFocus: this.onFocus\n      }), h(Template, {\n        templateKey: \"submit\",\n        rootTagName: \"button\",\n        rootProps: {\n          className: cssClasses.submit,\n          type: 'submit',\n          title: 'Submit the search query.',\n          hidden: !showSubmit\n        },\n        templates: templates,\n        data: {\n          cssClasses: cssClasses\n        }\n      }), h(Template, {\n        templateKey: \"reset\",\n        rootTagName: \"button\",\n        rootProps: {\n          className: cssClasses.reset,\n          type: 'reset',\n          title: 'Clear the search query.',\n          hidden: !(showReset && this.state.query.trim() && !isSearchStalled)\n        },\n        templates: templates,\n        data: {\n          cssClasses: cssClasses\n        }\n      }), showLoadingIndicator && h(Template, {\n        templateKey: \"loadingIndicator\",\n        rootTagName: \"span\",\n        rootProps: {\n          className: cssClasses.loadingIndicator,\n          hidden: !isSearchStalled\n        },\n        templates: templates,\n        data: {\n          cssClasses: cssClasses\n        }\n      })));\n    }\n  }]);\n\n  return SearchBox;\n}(Component);\n\n_defineProperty(SearchBox, \"defaultProps\", defaultProps);\n\nexport default SearchBox;","function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { checkRendering, createDocumentationMessageGenerator, createSendEventForFacet, noop } from \"../../lib/utils/index.js\";\nvar withUsage = createDocumentationMessageGenerator({\n  name: 'menu',\n  connector: true\n});\nvar DEFAULT_SORT = ['isRefined', 'name:asc'];\n\n/**\n * **Menu** connector provides the logic to build a widget that will give the user the ability to choose a single value for a specific facet. The typical usage of menu is for navigation in categories.\n *\n * This connector provides a `toggleShowMore()` function to display more or less items and a `refine()`\n * function to select an item. While selecting a new element, the `refine` will also unselect the\n * one that is currently selected.\n *\n * **Requirement:** the attribute passed as `attribute` must be present in \"attributes for faceting\" on the Algolia dashboard or configured as attributesForFaceting via a set settings call to the Algolia API.\n */\nvar connectMenu = function connectMenu(renderFn) {\n  var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n  checkRendering(renderFn, withUsage());\n  return function (widgetParams) {\n    var _ref = widgetParams || {},\n        attribute = _ref.attribute,\n        _ref$limit = _ref.limit,\n        limit = _ref$limit === void 0 ? 10 : _ref$limit,\n        _ref$showMore = _ref.showMore,\n        showMore = _ref$showMore === void 0 ? false : _ref$showMore,\n        _ref$showMoreLimit = _ref.showMoreLimit,\n        showMoreLimit = _ref$showMoreLimit === void 0 ? 20 : _ref$showMoreLimit,\n        _ref$sortBy = _ref.sortBy,\n        sortBy = _ref$sortBy === void 0 ? DEFAULT_SORT : _ref$sortBy,\n        _ref$transformItems = _ref.transformItems,\n        transformItems = _ref$transformItems === void 0 ? function (items) {\n      return items;\n    } : _ref$transformItems;\n\n    if (!attribute) {\n      throw new Error(withUsage('The `attribute` option is required.'));\n    }\n\n    if (showMore === true && showMoreLimit <= limit) {\n      throw new Error(withUsage('The `showMoreLimit` option must be greater than `limit`.'));\n    }\n\n    var sendEvent;\n\n    var _createURL;\n\n    var _refine; // Provide the same function to the `renderFn` so that way the user\n    // has to only bind it once when `isFirstRendering` for instance\n\n\n    var isShowingMore = false;\n\n    var toggleShowMore = function toggleShowMore() {};\n\n    function createToggleShowMore(renderOptions, widget) {\n      return function () {\n        isShowingMore = !isShowingMore;\n        widget.render(renderOptions);\n      };\n    }\n\n    function cachedToggleShowMore() {\n      toggleShowMore();\n    }\n\n    function getLimit() {\n      return isShowingMore ? showMoreLimit : limit;\n    }\n\n    return {\n      $$type: 'ais.menu',\n      init: function init(initOptions) {\n        var instantSearchInstance = initOptions.instantSearchInstance;\n        renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(initOptions)), {}, {\n          instantSearchInstance: instantSearchInstance\n        }), true);\n      },\n      render: function render(renderOptions) {\n        var instantSearchInstance = renderOptions.instantSearchInstance;\n        renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(renderOptions)), {}, {\n          instantSearchInstance: instantSearchInstance\n        }), false);\n      },\n      dispose: function dispose(_ref2) {\n        var state = _ref2.state;\n        unmountFn();\n        return state.removeHierarchicalFacet(attribute).setQueryParameter('maxValuesPerFacet', undefined);\n      },\n      getRenderState: function getRenderState(renderState, renderOptions) {\n        return _objectSpread(_objectSpread({}, renderState), {}, {\n          menu: _objectSpread(_objectSpread({}, renderState.menu), {}, _defineProperty({}, attribute, this.getWidgetRenderState(renderOptions)))\n        });\n      },\n      getWidgetRenderState: function getWidgetRenderState(renderOptions) {\n        var results = renderOptions.results,\n            createURL = renderOptions.createURL,\n            instantSearchInstance = renderOptions.instantSearchInstance,\n            helper = renderOptions.helper;\n        var items = [];\n        var canToggleShowMore = false;\n\n        if (!sendEvent) {\n          sendEvent = createSendEventForFacet({\n            instantSearchInstance: instantSearchInstance,\n            helper: helper,\n            attribute: attribute,\n            widgetType: this.$$type\n          });\n        }\n\n        if (!_createURL) {\n          _createURL = function _createURL(facetValue) {\n            return createURL(helper.state.resetPage().toggleFacetRefinement(attribute, facetValue));\n          };\n        }\n\n        if (!_refine) {\n          _refine = function _refine(facetValue) {\n            var _helper$getHierarchic = helper.getHierarchicalFacetBreadcrumb(attribute),\n                _helper$getHierarchic2 = _slicedToArray(_helper$getHierarchic, 1),\n                refinedItem = _helper$getHierarchic2[0];\n\n            sendEvent('click', facetValue ? facetValue : refinedItem);\n            helper.toggleFacetRefinement(attribute, facetValue ? facetValue : refinedItem).search();\n          };\n        }\n\n        if (renderOptions.results) {\n          toggleShowMore = createToggleShowMore(renderOptions, this);\n        }\n\n        if (results) {\n          var facetValues = results.getFacetValues(attribute, {\n            sortBy: sortBy,\n            facetOrdering: sortBy === DEFAULT_SORT\n          });\n          var facetItems = facetValues && !Array.isArray(facetValues) && facetValues.data ? facetValues.data : [];\n          canToggleShowMore = showMore && (isShowingMore || facetItems.length > getLimit());\n          items = transformItems(facetItems.slice(0, getLimit()).map(function (_ref3) {\n            var label = _ref3.name,\n                value = _ref3.escapedValue,\n                path = _ref3.path,\n                item = _objectWithoutProperties(_ref3, [\"name\", \"escapedValue\", \"path\"]);\n\n            return _objectSpread(_objectSpread({}, item), {}, {\n              label: label,\n              value: value\n            });\n          }), {\n            results: results\n          });\n        }\n\n        return {\n          items: items,\n          createURL: _createURL,\n          refine: _refine,\n          sendEvent: sendEvent,\n          canRefine: items.length > 0,\n          widgetParams: widgetParams,\n          isShowingMore: isShowingMore,\n          toggleShowMore: cachedToggleShowMore,\n          canToggleShowMore: canToggleShowMore\n        };\n      },\n      getWidgetUiState: function getWidgetUiState(uiState, _ref4) {\n        var searchParameters = _ref4.searchParameters;\n\n        var _searchParameters$get = searchParameters.getHierarchicalFacetBreadcrumb(attribute),\n            _searchParameters$get2 = _slicedToArray(_searchParameters$get, 1),\n            value = _searchParameters$get2[0];\n\n        if (!value) {\n          return uiState;\n        }\n\n        return _objectSpread(_objectSpread({}, uiState), {}, {\n          menu: _objectSpread(_objectSpread({}, uiState.menu), {}, _defineProperty({}, attribute, value))\n        });\n      },\n      getWidgetSearchParameters: function getWidgetSearchParameters(searchParameters, _ref5) {\n        var uiState = _ref5.uiState;\n        var value = uiState.menu && uiState.menu[attribute];\n        var withFacetConfiguration = searchParameters.removeHierarchicalFacet(attribute).addHierarchicalFacet({\n          name: attribute,\n          attributes: [attribute]\n        });\n        var currentMaxValuesPerFacet = withFacetConfiguration.maxValuesPerFacet || 0;\n        var nextMaxValuesPerFacet = Math.max(currentMaxValuesPerFacet, showMore ? showMoreLimit : limit);\n        var withMaxValuesPerFacet = withFacetConfiguration.setQueryParameter('maxValuesPerFacet', nextMaxValuesPerFacet);\n\n        if (!value) {\n          return withMaxValuesPerFacet.setQueryParameters({\n            hierarchicalFacetsRefinements: _objectSpread(_objectSpread({}, withMaxValuesPerFacet.hierarchicalFacetsRefinements), {}, _defineProperty({}, attribute, []))\n          });\n        }\n\n        return withMaxValuesPerFacet.addHierarchicalFacetRefinement(attribute, value);\n      }\n    };\n  };\n};\n\nexport default connectMenu;","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nimport { isFacetRefined } from \"./isFacetRefined.js\";\nexport function createSendEventForFacet(_ref) {\n  var instantSearchInstance = _ref.instantSearchInstance,\n      helper = _ref.helper,\n      attribute = _ref.attribute,\n      widgetType = _ref.widgetType;\n\n  var sendEventForFacet = function sendEventForFacet() {\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    var eventType = args[0],\n        facetValue = args[1],\n        _args$ = args[2],\n        eventName = _args$ === void 0 ? 'Filter Applied' : _args$;\n\n    if (args.length === 1 && _typeof(args[0]) === 'object') {\n      instantSearchInstance.sendEventToInsights(args[0]);\n    } else if (eventType === 'click' && (args.length === 2 || args.length === 3)) {\n      if (!isFacetRefined(helper, attribute, facetValue)) {\n        // send event only when the facet is being checked \"ON\"\n        instantSearchInstance.sendEventToInsights({\n          insightsMethod: 'clickedFilters',\n          widgetType: widgetType,\n          eventType: eventType,\n          payload: {\n            eventName: eventName,\n            index: helper.getIndex(),\n            filters: [\"\".concat(attribute, \":\").concat(facetValue)]\n          },\n          attribute: attribute\n        });\n      }\n    } else if (process.env.NODE_ENV === 'development') {\n      throw new Error(\"You need to pass two arguments like:\\n  sendEvent('click', facetValue);\\n\\nIf you want to send a custom payload, you can pass one object: sendEvent(customPayload);\\n\");\n    }\n  };\n\n  return sendEventForFacet;\n}","export function isFacetRefined(helper, facet, value) {\n  if (helper.state.isHierarchicalFacet(facet)) {\n    return helper.state.isHierarchicalFacetRefined(facet, value);\n  } else if (helper.state.isConjunctiveFacet(facet)) {\n    return helper.state.isFacetRefined(facet, value);\n  } else {\n    return helper.state.isDisjunctiveFacetRefined(facet, value);\n  }\n}","import { h } from 'preact';\nimport { formatNumber } from \"../../lib/formatNumber.js\";\nimport { cx } from \"../../lib/utils/index.js\";\nvar defaultTemplates = {\n  item: function item(_ref) {\n    var cssClasses = _ref.cssClasses,\n        url = _ref.url,\n        label = _ref.label,\n        count = _ref.count;\n    return h(\"a\", {\n      className: cx(cssClasses.link),\n      href: url\n    }, h(\"span\", {\n      className: cx(cssClasses.label)\n    }, label), h(\"span\", {\n      className: cx(cssClasses.count)\n    }, formatNumber(count)));\n  },\n  showMoreText: function showMoreText(_ref2) {\n    var isShowingMore = _ref2.isShowingMore;\n    return isShowingMore ? 'Show less' : 'Show more';\n  }\n};\nexport default defaultTemplates;","export function formatNumber(value, numberLocale) {\n  return value.toLocaleString(numberLocale);\n}","export function cx(cssClasses) {\n  return Array.isArray(cssClasses) ? cssClasses.filter(Boolean).join(' ') : cssClasses || '';\n}","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { h, render } from 'preact';\nimport cx from 'classnames';\nimport Pagination from \"../../components/Pagination/Pagination.js\";\nimport connectPagination from \"../../connectors/pagination/connectPagination.js\";\nimport { getContainerNode, createDocumentationMessageGenerator } from \"../../lib/utils/index.js\";\nimport { component } from \"../../lib/suit.js\";\nvar suit = component('Pagination');\nvar withUsage = createDocumentationMessageGenerator({\n  name: 'pagination'\n});\nvar defaultTemplates = {\n  previous: '‹',\n  next: '›',\n  first: '«',\n  last: '»'\n};\n\nvar renderer = function renderer(_ref) {\n  var containerNode = _ref.containerNode,\n      cssClasses = _ref.cssClasses,\n      templates = _ref.templates,\n      showFirst = _ref.showFirst,\n      showLast = _ref.showLast,\n      showPrevious = _ref.showPrevious,\n      showNext = _ref.showNext,\n      scrollToNode = _ref.scrollToNode;\n  return function (_ref2, isFirstRendering) {\n    var createURL = _ref2.createURL,\n        currentRefinement = _ref2.currentRefinement,\n        nbPages = _ref2.nbPages,\n        pages = _ref2.pages,\n        isFirstPage = _ref2.isFirstPage,\n        isLastPage = _ref2.isLastPage,\n        refine = _ref2.refine;\n    if (isFirstRendering) return;\n\n    var setCurrentPage = function setCurrentPage(pageNumber) {\n      refine(pageNumber);\n\n      if (scrollToNode !== false) {\n        scrollToNode.scrollIntoView();\n      }\n    };\n\n    render(h(Pagination, {\n      createURL: createURL,\n      cssClasses: cssClasses,\n      currentPage: currentRefinement,\n      templates: templates,\n      nbPages: nbPages,\n      pages: pages,\n      isFirstPage: isFirstPage,\n      isLastPage: isLastPage,\n      setCurrentPage: setCurrentPage,\n      showFirst: showFirst,\n      showLast: showLast,\n      showPrevious: showPrevious,\n      showNext: showNext\n    }), containerNode);\n  };\n};\n\nvar pagination = function pagination(widgetParams) {\n  var _ref3 = widgetParams || {},\n      container = _ref3.container,\n      _ref3$templates = _ref3.templates,\n      userTemplates = _ref3$templates === void 0 ? {} : _ref3$templates,\n      _ref3$cssClasses = _ref3.cssClasses,\n      userCssClasses = _ref3$cssClasses === void 0 ? {} : _ref3$cssClasses,\n      totalPages = _ref3.totalPages,\n      padding = _ref3.padding,\n      _ref3$showFirst = _ref3.showFirst,\n      showFirst = _ref3$showFirst === void 0 ? true : _ref3$showFirst,\n      _ref3$showLast = _ref3.showLast,\n      showLast = _ref3$showLast === void 0 ? true : _ref3$showLast,\n      _ref3$showPrevious = _ref3.showPrevious,\n      showPrevious = _ref3$showPrevious === void 0 ? true : _ref3$showPrevious,\n      _ref3$showNext = _ref3.showNext,\n      showNext = _ref3$showNext === void 0 ? true : _ref3$showNext,\n      _ref3$scrollTo = _ref3.scrollTo,\n      userScrollTo = _ref3$scrollTo === void 0 ? 'body' : _ref3$scrollTo;\n\n  if (!container) {\n    throw new Error(withUsage('The `container` option is required.'));\n  }\n\n  var containerNode = getContainerNode(container);\n  var scrollTo = userScrollTo === true ? 'body' : userScrollTo;\n  var scrollToNode = scrollTo !== false ? getContainerNode(scrollTo) : false;\n  var cssClasses = {\n    root: cx(suit(), userCssClasses.root),\n    noRefinementRoot: cx(suit({\n      modifierName: 'noRefinement'\n    }), userCssClasses.noRefinementRoot),\n    list: cx(suit({\n      descendantName: 'list'\n    }), userCssClasses.list),\n    item: cx(suit({\n      descendantName: 'item'\n    }), userCssClasses.item),\n    firstPageItem: cx(suit({\n      descendantName: 'item',\n      modifierName: 'firstPage'\n    }), userCssClasses.firstPageItem),\n    lastPageItem: cx(suit({\n      descendantName: 'item',\n      modifierName: 'lastPage'\n    }), userCssClasses.lastPageItem),\n    previousPageItem: cx(suit({\n      descendantName: 'item',\n      modifierName: 'previousPage'\n    }), userCssClasses.previousPageItem),\n    nextPageItem: cx(suit({\n      descendantName: 'item',\n      modifierName: 'nextPage'\n    }), userCssClasses.nextPageItem),\n    pageItem: cx(suit({\n      descendantName: 'item',\n      modifierName: 'page'\n    }), userCssClasses.pageItem),\n    selectedItem: cx(suit({\n      descendantName: 'item',\n      modifierName: 'selected'\n    }), userCssClasses.selectedItem),\n    disabledItem: cx(suit({\n      descendantName: 'item',\n      modifierName: 'disabled'\n    }), userCssClasses.disabledItem),\n    link: cx(suit({\n      descendantName: 'link'\n    }), userCssClasses.link)\n  };\n\n  var templates = _objectSpread(_objectSpread({}, defaultTemplates), userTemplates);\n\n  var specializedRenderer = renderer({\n    containerNode: containerNode,\n    cssClasses: cssClasses,\n    templates: templates,\n    showFirst: showFirst,\n    showLast: showLast,\n    showPrevious: showPrevious,\n    showNext: showNext,\n    scrollToNode: scrollToNode\n  });\n  var makeWidget = connectPagination(specializedRenderer, function () {\n    return render(null, containerNode);\n  });\n  return _objectSpread(_objectSpread({}, makeWidget({\n    totalPages: totalPages,\n    padding: padding\n  })), {}, {\n    $$widgetType: 'ais.pagination'\n  });\n};\n\nexport default pagination;","function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { h } from 'preact';\nimport cx from 'classnames';\nimport { isSpecialClick } from \"../../lib/utils/index.js\";\n\nfunction Pagination(props) {\n  function createClickHandler(pageNumber) {\n    return function (event) {\n      if (isSpecialClick(event)) {\n        // do not alter the default browser behavior\n        // if one special key is down\n        return;\n      }\n\n      event.preventDefault();\n      props.setCurrentPage(pageNumber);\n    };\n  }\n\n  return h(\"div\", {\n    className: cx(props.cssClasses.root, _defineProperty({}, props.cssClasses.noRefinementRoot, props.nbPages <= 1))\n  }, h(\"ul\", {\n    className: props.cssClasses.list\n  }, props.showFirst && h(PaginationLink, {\n    ariaLabel: \"First\",\n    className: props.cssClasses.firstPageItem,\n    isDisabled: props.isFirstPage,\n    label: props.templates.first,\n    pageNumber: 0,\n    createURL: props.createURL,\n    cssClasses: props.cssClasses,\n    createClickHandler: createClickHandler\n  }), props.showPrevious && h(PaginationLink, {\n    ariaLabel: \"Previous\",\n    className: props.cssClasses.previousPageItem,\n    isDisabled: props.isFirstPage,\n    label: props.templates.previous,\n    pageNumber: props.currentPage - 1,\n    createURL: props.createURL,\n    cssClasses: props.cssClasses,\n    createClickHandler: createClickHandler\n  }), props.pages.map(function (pageNumber) {\n    return h(PaginationLink, {\n      key: pageNumber,\n      ariaLabel: \"\".concat(pageNumber + 1),\n      className: props.cssClasses.pageItem,\n      isSelected: pageNumber === props.currentPage,\n      label: \"\".concat(pageNumber + 1),\n      pageNumber: pageNumber,\n      createURL: props.createURL,\n      cssClasses: props.cssClasses,\n      createClickHandler: createClickHandler\n    });\n  }), props.showNext && h(PaginationLink, {\n    ariaLabel: \"Next\",\n    className: props.cssClasses.nextPageItem,\n    isDisabled: props.isLastPage,\n    label: props.templates.next,\n    pageNumber: props.currentPage + 1,\n    createURL: props.createURL,\n    cssClasses: props.cssClasses,\n    createClickHandler: createClickHandler\n  }), props.showLast && h(PaginationLink, {\n    ariaLabel: \"Last\",\n    className: props.cssClasses.lastPageItem,\n    isDisabled: props.isLastPage,\n    label: props.templates.last,\n    pageNumber: props.nbPages - 1,\n    createURL: props.createURL,\n    cssClasses: props.cssClasses,\n    createClickHandler: createClickHandler\n  })));\n}\n\nfunction PaginationLink(_ref) {\n  var label = _ref.label,\n      ariaLabel = _ref.ariaLabel,\n      pageNumber = _ref.pageNumber,\n      className = _ref.className,\n      _ref$isDisabled = _ref.isDisabled,\n      isDisabled = _ref$isDisabled === void 0 ? false : _ref$isDisabled,\n      _ref$isSelected = _ref.isSelected,\n      isSelected = _ref$isSelected === void 0 ? false : _ref$isSelected,\n      cssClasses = _ref.cssClasses,\n      createURL = _ref.createURL,\n      createClickHandler = _ref.createClickHandler;\n  return h(\"li\", {\n    className: cx(cssClasses.item, className, isDisabled && cssClasses.disabledItem, isSelected && cssClasses.selectedItem)\n  }, isDisabled ? h(\"span\", {\n    className: cssClasses.link,\n    dangerouslySetInnerHTML: {\n      __html: label\n    }\n  }) : h(\"a\", {\n    className: cssClasses.link,\n    \"aria-label\": ariaLabel,\n    href: createURL(pageNumber),\n    onClick: createClickHandler(pageNumber),\n    dangerouslySetInnerHTML: {\n      __html: label\n    }\n  }));\n}\n\nexport default Pagination;","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { checkRendering, createDocumentationMessageGenerator, noop } from \"../../lib/utils/index.js\";\nimport Paginator from \"./Paginator.js\";\nvar withUsage = createDocumentationMessageGenerator({\n  name: 'pagination',\n  connector: true\n});\n\n/**\n * **Pagination** connector provides the logic to build a widget that will let the user\n * choose the current page of the results.\n *\n * When using the pagination with Algolia, you should be aware that the engine won't provide you pages\n * beyond the 1000th hits by default. You can find more information on the [Algolia documentation](https://www.algolia.com/doc/guides/searching/pagination/#pagination-limitations).\n */\nvar connectPagination = function connectPagination(renderFn) {\n  var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n  checkRendering(renderFn, withUsage());\n  return function (widgetParams) {\n    var _ref = widgetParams || {},\n        totalPages = _ref.totalPages,\n        _ref$padding = _ref.padding,\n        padding = _ref$padding === void 0 ? 3 : _ref$padding;\n\n    var pager = new Paginator({\n      currentPage: 0,\n      total: 0,\n      padding: padding\n    });\n    var connectorState = {};\n\n    function getMaxPage(_ref2) {\n      var nbPages = _ref2.nbPages;\n      return totalPages !== undefined ? Math.min(totalPages, nbPages) : nbPages;\n    }\n\n    return {\n      $$type: 'ais.pagination',\n      init: function init(initOptions) {\n        var instantSearchInstance = initOptions.instantSearchInstance;\n        renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(initOptions)), {}, {\n          instantSearchInstance: instantSearchInstance\n        }), true);\n      },\n      render: function render(renderOptions) {\n        var instantSearchInstance = renderOptions.instantSearchInstance;\n        renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(renderOptions)), {}, {\n          instantSearchInstance: instantSearchInstance\n        }), false);\n      },\n      dispose: function dispose(_ref3) {\n        var state = _ref3.state;\n        unmountFn();\n        return state.setQueryParameter('page', undefined);\n      },\n      getWidgetUiState: function getWidgetUiState(uiState, _ref4) {\n        var searchParameters = _ref4.searchParameters;\n        var page = searchParameters.page || 0;\n\n        if (!page) {\n          return uiState;\n        }\n\n        return _objectSpread(_objectSpread({}, uiState), {}, {\n          page: page + 1\n        });\n      },\n      getWidgetSearchParameters: function getWidgetSearchParameters(searchParameters, _ref5) {\n        var uiState = _ref5.uiState;\n        var page = uiState.page ? uiState.page - 1 : 0;\n        return searchParameters.setQueryParameter('page', page);\n      },\n      getWidgetRenderState: function getWidgetRenderState(_ref6) {\n        var results = _ref6.results,\n            helper = _ref6.helper,\n            state = _ref6.state,\n            createURL = _ref6.createURL;\n\n        if (!connectorState.refine) {\n          connectorState.refine = function (page) {\n            helper.setPage(page);\n            helper.search();\n          };\n        }\n\n        if (!connectorState.createURL) {\n          connectorState.createURL = function (helperState) {\n            return function (page) {\n              return createURL(helperState.setPage(page));\n            };\n          };\n        }\n\n        var page = state.page || 0;\n        var nbPages = getMaxPage(results || {\n          nbPages: 0\n        });\n        pager.currentPage = page;\n        pager.total = nbPages;\n        return {\n          createURL: connectorState.createURL(state),\n          refine: connectorState.refine,\n          canRefine: nbPages > 1,\n          currentRefinement: page,\n          nbHits: (results === null || results === void 0 ? void 0 : results.nbHits) || 0,\n          nbPages: nbPages,\n          pages: results ? pager.pages() : [],\n          isFirstPage: pager.isFirstPage(),\n          isLastPage: pager.isLastPage(),\n          widgetParams: widgetParams\n        };\n      },\n      getRenderState: function getRenderState(renderState, renderOptions) {\n        return _objectSpread(_objectSpread({}, renderState), {}, {\n          pagination: this.getWidgetRenderState(renderOptions)\n        });\n      }\n    };\n  };\n};\n\nexport default connectPagination;","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { range } from \"../../lib/utils/index.js\";\n\nvar Paginator = /*#__PURE__*/function () {\n  function Paginator(params) {\n    _classCallCheck(this, Paginator);\n\n    _defineProperty(this, \"currentPage\", void 0);\n\n    _defineProperty(this, \"total\", void 0);\n\n    _defineProperty(this, \"padding\", void 0);\n\n    this.currentPage = params.currentPage;\n    this.total = params.total;\n    this.padding = params.padding;\n  }\n\n  _createClass(Paginator, [{\n    key: \"pages\",\n    value: function pages() {\n      var total = this.total,\n          currentPage = this.currentPage,\n          padding = this.padding;\n      if (total === 0) return [0];\n      var totalDisplayedPages = this.nbPagesDisplayed(padding, total);\n\n      if (totalDisplayedPages === total) {\n        return range({\n          end: total\n        });\n      }\n\n      var paddingLeft = this.calculatePaddingLeft(currentPage, padding, total, totalDisplayedPages);\n      var paddingRight = totalDisplayedPages - paddingLeft;\n      var first = currentPage - paddingLeft;\n      var last = currentPage + paddingRight;\n      return range({\n        start: first,\n        end: last\n      });\n    }\n  }, {\n    key: \"nbPagesDisplayed\",\n    value: function nbPagesDisplayed(padding, total) {\n      return Math.min(2 * padding + 1, total);\n    }\n  }, {\n    key: \"calculatePaddingLeft\",\n    value: function calculatePaddingLeft(current, padding, total, totalDisplayedPages) {\n      if (current <= padding) {\n        return current;\n      }\n\n      if (current >= total - padding) {\n        return totalDisplayedPages - (total - current);\n      }\n\n      return padding;\n    }\n  }, {\n    key: \"isLastPage\",\n    value: function isLastPage() {\n      return this.currentPage === this.total - 1 || this.total === 0;\n    }\n  }, {\n    key: \"isFirstPage\",\n    value: function isFirstPage() {\n      return this.currentPage === 0;\n    }\n  }]);\n\n  return Paginator;\n}();\n\nexport default Paginator;","function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nexport function range(_ref) {\n  var _ref$start = _ref.start,\n      start = _ref$start === void 0 ? 0 : _ref$start,\n      end = _ref.end,\n      _ref$step = _ref.step,\n      step = _ref$step === void 0 ? 1 : _ref$step;\n  // We can't divide by 0 so we re-assign the step to 1 if it happens.\n  var limitStep = step === 0 ? 1 : step; // In some cases the array to create has a decimal length.\n  // We therefore need to round the value.\n  // Example:\n  //   { start: 1, end: 5000, step: 500 }\n  //   => Array length = (5000 - 1) / 500 = 9.998\n\n  var arrayLength = Math.round((end - start) / limitStep);\n  return _toConsumableArray(Array(arrayLength)).map(function (_, current) {\n    return start + current * limitStep;\n  });\n}","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { h, render } from 'preact';\nimport cx from 'classnames';\nimport { getContainerNode, createDocumentationMessageGenerator } from \"../../lib/utils/index.js\";\nimport { component } from \"../../lib/suit.js\";\nimport connectSearchBox from \"../../connectors/search-box/connectSearchBox.js\";\nimport SearchBox from \"../../components/SearchBox/SearchBox.js\";\nimport defaultTemplates from \"./defaultTemplates.js\";\nvar withUsage = createDocumentationMessageGenerator({\n  name: 'search-box'\n});\nvar suit = component('SearchBox');\n\nvar renderer = function renderer(_ref) {\n  var containerNode = _ref.containerNode,\n      cssClasses = _ref.cssClasses,\n      placeholder = _ref.placeholder,\n      templates = _ref.templates,\n      autofocus = _ref.autofocus,\n      searchAsYouType = _ref.searchAsYouType,\n      showReset = _ref.showReset,\n      showSubmit = _ref.showSubmit,\n      showLoadingIndicator = _ref.showLoadingIndicator;\n  return function (_ref2) {\n    var refine = _ref2.refine,\n        query = _ref2.query,\n        isSearchStalled = _ref2.isSearchStalled;\n    render(h(SearchBox, {\n      query: query,\n      placeholder: placeholder,\n      autofocus: autofocus,\n      refine: refine,\n      searchAsYouType: searchAsYouType,\n      templates: templates,\n      showSubmit: showSubmit,\n      showReset: showReset,\n      showLoadingIndicator: showLoadingIndicator,\n      isSearchStalled: isSearchStalled,\n      cssClasses: cssClasses\n    }), containerNode);\n  };\n};\n/**\n * The searchbox widget is used to let the user set a text based query.\n *\n * This is usually the  main entry point to start the search in an instantsearch context. For that\n * reason is usually placed on top, and not hidden so that the user can start searching right\n * away.\n *\n */\n\n\nvar searchBox = function searchBox(widgetParams) {\n  var _ref3 = widgetParams || {},\n      container = _ref3.container,\n      _ref3$placeholder = _ref3.placeholder,\n      placeholder = _ref3$placeholder === void 0 ? '' : _ref3$placeholder,\n      _ref3$cssClasses = _ref3.cssClasses,\n      userCssClasses = _ref3$cssClasses === void 0 ? {} : _ref3$cssClasses,\n      _ref3$autofocus = _ref3.autofocus,\n      autofocus = _ref3$autofocus === void 0 ? false : _ref3$autofocus,\n      _ref3$searchAsYouType = _ref3.searchAsYouType,\n      searchAsYouType = _ref3$searchAsYouType === void 0 ? true : _ref3$searchAsYouType,\n      _ref3$showReset = _ref3.showReset,\n      showReset = _ref3$showReset === void 0 ? true : _ref3$showReset,\n      _ref3$showSubmit = _ref3.showSubmit,\n      showSubmit = _ref3$showSubmit === void 0 ? true : _ref3$showSubmit,\n      _ref3$showLoadingIndi = _ref3.showLoadingIndicator,\n      showLoadingIndicator = _ref3$showLoadingIndi === void 0 ? true : _ref3$showLoadingIndi,\n      queryHook = _ref3.queryHook,\n      _ref3$templates = _ref3.templates,\n      userTemplates = _ref3$templates === void 0 ? {} : _ref3$templates;\n\n  if (!container) {\n    throw new Error(withUsage('The `container` option is required.'));\n  }\n\n  var containerNode = getContainerNode(container);\n  var cssClasses = {\n    root: cx(suit(), userCssClasses.root),\n    form: cx(suit({\n      descendantName: 'form'\n    }), userCssClasses.form),\n    input: cx(suit({\n      descendantName: 'input'\n    }), userCssClasses.input),\n    submit: cx(suit({\n      descendantName: 'submit'\n    }), userCssClasses.submit),\n    submitIcon: cx(suit({\n      descendantName: 'submitIcon'\n    }), userCssClasses.submitIcon),\n    reset: cx(suit({\n      descendantName: 'reset'\n    }), userCssClasses.reset),\n    resetIcon: cx(suit({\n      descendantName: 'resetIcon'\n    }), userCssClasses.resetIcon),\n    loadingIndicator: cx(suit({\n      descendantName: 'loadingIndicator'\n    }), userCssClasses.loadingIndicator),\n    loadingIcon: cx(suit({\n      descendantName: 'loadingIcon'\n    }), userCssClasses.loadingIcon)\n  };\n\n  var templates = _objectSpread(_objectSpread({}, defaultTemplates), userTemplates);\n\n  var specializedRenderer = renderer({\n    containerNode: containerNode,\n    cssClasses: cssClasses,\n    placeholder: placeholder,\n    templates: templates,\n    autofocus: autofocus,\n    searchAsYouType: searchAsYouType,\n    showReset: showReset,\n    showSubmit: showSubmit,\n    showLoadingIndicator: showLoadingIndicator\n  });\n  var makeWidget = connectSearchBox(specializedRenderer, function () {\n    return render(null, containerNode);\n  });\n  return _objectSpread(_objectSpread({}, makeWidget({\n    queryHook: queryHook\n  })), {}, {\n    $$widgetType: 'ais.searchBox'\n  });\n};\n\nexport default searchBox;","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { checkRendering, createDocumentationMessageGenerator, noop } from \"../../lib/utils/index.js\";\nvar withUsage = createDocumentationMessageGenerator({\n  name: 'search-box',\n  connector: true\n});\n\nvar defaultQueryHook = function defaultQueryHook(query, hook) {\n  return hook(query);\n};\n/**\n * **SearchBox** connector provides the logic to build a widget that will let the user search for a query.\n *\n * The connector provides to the rendering: `refine()` to set the query. The behaviour of this function\n * may be impacted by the `queryHook` widget parameter.\n */\n\n\nvar connectSearchBox = function connectSearchBox(renderFn) {\n  var unmountFn = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : noop;\n  checkRendering(renderFn, withUsage());\n  return function (widgetParams) {\n    var _ref = widgetParams || {},\n        _ref$queryHook = _ref.queryHook,\n        queryHook = _ref$queryHook === void 0 ? defaultQueryHook : _ref$queryHook;\n\n    var _refine;\n\n    var _clear;\n\n    return {\n      $$type: 'ais.searchBox',\n      init: function init(initOptions) {\n        var instantSearchInstance = initOptions.instantSearchInstance;\n        renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(initOptions)), {}, {\n          instantSearchInstance: instantSearchInstance\n        }), true);\n      },\n      render: function render(renderOptions) {\n        var instantSearchInstance = renderOptions.instantSearchInstance;\n        renderFn(_objectSpread(_objectSpread({}, this.getWidgetRenderState(renderOptions)), {}, {\n          instantSearchInstance: instantSearchInstance\n        }), false);\n      },\n      dispose: function dispose(_ref2) {\n        var state = _ref2.state;\n        unmountFn();\n        return state.setQueryParameter('query', undefined);\n      },\n      getRenderState: function getRenderState(renderState, renderOptions) {\n        return _objectSpread(_objectSpread({}, renderState), {}, {\n          searchBox: this.getWidgetRenderState(renderOptions)\n        });\n      },\n      getWidgetRenderState: function getWidgetRenderState(_ref3) {\n        var helper = _ref3.helper,\n            searchMetadata = _ref3.searchMetadata,\n            state = _ref3.state;\n\n        if (!_refine) {\n          _refine = function _refine(query) {\n            queryHook(query, function (q) {\n              return helper.setQuery(q).search();\n            });\n          };\n\n          _clear = function _clear() {\n            helper.setQuery('').search();\n          };\n        }\n\n        return {\n          query: state.query || '',\n          refine: _refine,\n          clear: _clear,\n          widgetParams: widgetParams,\n          isSearchStalled: searchMetadata.isSearchStalled\n        };\n      },\n      getWidgetUiState: function getWidgetUiState(uiState, _ref4) {\n        var searchParameters = _ref4.searchParameters;\n        var query = searchParameters.query || '';\n\n        if (query === '' || uiState && uiState.query === query) {\n          return uiState;\n        }\n\n        return _objectSpread(_objectSpread({}, uiState), {}, {\n          query: query\n        });\n      },\n      getWidgetSearchParameters: function getWidgetSearchParameters(searchParameters, _ref5) {\n        var uiState = _ref5.uiState;\n        return searchParameters.setQueryParameter('query', uiState.query || '');\n      }\n    };\n  };\n};\n\nexport default connectSearchBox;","import { h } from 'preact';\n\nvar _ref2 = h(\"path\", {\n  d: \"M8.114 10L.944 2.83 0 1.885 1.886 0l.943.943L10 8.113l7.17-7.17.944-.943L20 1.886l-.943.943-7.17 7.17 7.17 7.17.943.944L18.114 20l-.943-.943-7.17-7.17-7.17 7.17-.944.943L0 18.114l.943-.943L8.113 10z\"\n});\n\nvar _ref4 = h(\"path\", {\n  d: \"M26.804 29.01c-2.832 2.34-6.465 3.746-10.426 3.746C7.333 32.756 0 25.424 0 16.378 0 7.333 7.333 0 16.378 0c9.046 0 16.378 7.333 16.378 16.378 0 3.96-1.406 7.594-3.746 10.426l10.534 10.534c.607.607.61 1.59-.004 2.202-.61.61-1.597.61-2.202.004L26.804 29.01zm-10.426.627c7.323 0 13.26-5.936 13.26-13.26 0-7.32-5.937-13.257-13.26-13.257C9.056 3.12 3.12 9.056 3.12 16.378c0 7.323 5.936 13.26 13.258 13.26z\"\n});\n\nvar _ref6 = h(\"g\", {\n  fill: \"none\",\n  fillRule: \"evenodd\"\n}, h(\"g\", {\n  transform: \"translate(1 1)\",\n  strokeWidth: \"2\"\n}, h(\"circle\", {\n  strokeOpacity: \".5\",\n  cx: \"18\",\n  cy: \"18\",\n  r: \"18\"\n}), h(\"path\", {\n  d: \"M36 18c0-9.94-8.06-18-18-18\"\n}, h(\"animateTransform\", {\n  attributeName: \"transform\",\n  type: \"rotate\",\n  from: \"0 18 18\",\n  to: \"360 18 18\",\n  dur: \"1s\",\n  repeatCount: \"indefinite\"\n}))));\n\nvar defaultTemplate = {\n  reset: function reset(_ref) {\n    var cssClasses = _ref.cssClasses;\n    return h(\"svg\", {\n      className: cssClasses.resetIcon,\n      viewBox: \"0 0 20 20\",\n      width: \"10\",\n      height: \"10\"\n    }, _ref2);\n  },\n  submit: function submit(_ref3) {\n    var cssClasses = _ref3.cssClasses;\n    return h(\"svg\", {\n      className: cssClasses.submitIcon,\n      width: \"10\",\n      height: \"10\",\n      viewBox: \"0 0 40 40\"\n    }, _ref4);\n  },\n  loadingIndicator: function loadingIndicator(_ref5) {\n    var cssClasses = _ref5.cssClasses;\n    return h(\"svg\", {\n      className: cssClasses.loadingIcon,\n      width: \"16\",\n      height: \"16\",\n      viewBox: \"0 0 38 38\",\n      stroke: \"#444\"\n    }, _ref6);\n  }\n};\nexport default defaultTemplate;","/*! algoliasearch-lite.umd.js | 4.14.2 | © Algolia, inc. | https://github.com/algolia/algoliasearch-client-javascript */\n!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=e||self).algoliasearch=t()}(this,(function(){\"use strict\";function e(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function t(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function r(r){for(var n=1;n<arguments.length;n++){var o=null!=arguments[n]?arguments[n]:{};n%2?t(Object(o),!0).forEach((function(t){e(r,t,o[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(r,Object.getOwnPropertyDescriptors(o)):t(Object(o)).forEach((function(e){Object.defineProperty(r,e,Object.getOwnPropertyDescriptor(o,e))}))}return r}function n(e,t){if(null==e)return{};var r,n,o=function(e,t){if(null==e)return{};var r,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||(o[r]=e[r]);return o}(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(n=0;n<a.length;n++)r=a[n],t.indexOf(r)>=0||Object.prototype.propertyIsEnumerable.call(e,r)&&(o[r]=e[r])}return o}function o(e,t){return function(e){if(Array.isArray(e))return e}(e)||function(e,t){if(!(Symbol.iterator in Object(e)||\"[object Arguments]\"===Object.prototype.toString.call(e)))return;var r=[],n=!0,o=!1,a=void 0;try{for(var u,i=e[Symbol.iterator]();!(n=(u=i.next()).done)&&(r.push(u.value),!t||r.length!==t);n=!0);}catch(e){o=!0,a=e}finally{try{n||null==i.return||i.return()}finally{if(o)throw a}}return r}(e,t)||function(){throw new TypeError(\"Invalid attempt to destructure non-iterable instance\")}()}function a(e){return function(e){if(Array.isArray(e)){for(var t=0,r=new Array(e.length);t<e.length;t++)r[t]=e[t];return r}}(e)||function(e){if(Symbol.iterator in Object(e)||\"[object Arguments]\"===Object.prototype.toString.call(e))return Array.from(e)}(e)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance\")}()}function u(e){var t,r=\"algoliasearch-client-js-\".concat(e.key),n=function(){return void 0===t&&(t=e.localStorage||window.localStorage),t},a=function(){return JSON.parse(n().getItem(r)||\"{}\")};return{get:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}};return Promise.resolve().then((function(){var r=JSON.stringify(e),n=a()[r];return Promise.all([n||t(),void 0!==n])})).then((function(e){var t=o(e,2),n=t[0],a=t[1];return Promise.all([n,a||r.miss(n)])})).then((function(e){return o(e,1)[0]}))},set:function(e,t){return Promise.resolve().then((function(){var o=a();return o[JSON.stringify(e)]=t,n().setItem(r,JSON.stringify(o)),t}))},delete:function(e){return Promise.resolve().then((function(){var t=a();delete t[JSON.stringify(e)],n().setItem(r,JSON.stringify(t))}))},clear:function(){return Promise.resolve().then((function(){n().removeItem(r)}))}}}function i(e){var t=a(e.caches),r=t.shift();return void 0===r?{get:function(e,t){var r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}},n=t();return n.then((function(e){return Promise.all([e,r.miss(e)])})).then((function(e){return o(e,1)[0]}))},set:function(e,t){return Promise.resolve(t)},delete:function(e){return Promise.resolve()},clear:function(){return Promise.resolve()}}:{get:function(e,n){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}};return r.get(e,n,o).catch((function(){return i({caches:t}).get(e,n,o)}))},set:function(e,n){return r.set(e,n).catch((function(){return i({caches:t}).set(e,n)}))},delete:function(e){return r.delete(e).catch((function(){return i({caches:t}).delete(e)}))},clear:function(){return r.clear().catch((function(){return i({caches:t}).clear()}))}}}function s(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{serializable:!0},t={};return{get:function(r,n){var o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{miss:function(){return Promise.resolve()}},a=JSON.stringify(r);if(a in t)return Promise.resolve(e.serializable?JSON.parse(t[a]):t[a]);var u=n(),i=o&&o.miss||function(){return Promise.resolve()};return u.then((function(e){return i(e)})).then((function(){return u}))},set:function(r,n){return t[JSON.stringify(r)]=e.serializable?JSON.stringify(n):n,Promise.resolve(n)},delete:function(e){return delete t[JSON.stringify(e)],Promise.resolve()},clear:function(){return t={},Promise.resolve()}}}function c(e){for(var t=e.length-1;t>0;t--){var r=Math.floor(Math.random()*(t+1)),n=e[t];e[t]=e[r],e[r]=n}return e}function l(e,t){return t?(Object.keys(t).forEach((function(r){e[r]=t[r](e)})),e):e}function f(e){for(var t=arguments.length,r=new Array(t>1?t-1:0),n=1;n<t;n++)r[n-1]=arguments[n];var o=0;return e.replace(/%s/g,(function(){return encodeURIComponent(r[o++])}))}var h={WithinQueryParameters:0,WithinHeaders:1};function d(e,t){var r=e||{},n=r.data||{};return Object.keys(r).forEach((function(e){-1===[\"timeout\",\"headers\",\"queryParameters\",\"data\",\"cacheable\"].indexOf(e)&&(n[e]=r[e])})),{data:Object.entries(n).length>0?n:void 0,timeout:r.timeout||t,headers:r.headers||{},queryParameters:r.queryParameters||{},cacheable:r.cacheable}}var m={Read:1,Write:2,Any:3},p=1,v=2,y=3;function g(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:p;return r(r({},e),{},{status:t,lastUpdate:Date.now()})}function b(e){return\"string\"==typeof e?{protocol:\"https\",url:e,accept:m.Any}:{protocol:e.protocol||\"https\",url:e.url,accept:e.accept||m.Any}}var O=\"GET\",P=\"POST\";function q(e,t){return Promise.all(t.map((function(t){return e.get(t,(function(){return Promise.resolve(g(t))}))}))).then((function(e){var r=e.filter((function(e){return function(e){return e.status===p||Date.now()-e.lastUpdate>12e4}(e)})),n=e.filter((function(e){return function(e){return e.status===y&&Date.now()-e.lastUpdate<=12e4}(e)})),o=[].concat(a(r),a(n));return{getTimeout:function(e,t){return(0===n.length&&0===e?1:n.length+3+e)*t},statelessHosts:o.length>0?o.map((function(e){return b(e)})):t}}))}function w(e,t,n,o){var u=[],i=function(e,t){if(e.method===O||void 0===e.data&&void 0===t.data)return;var n=Array.isArray(e.data)?e.data:r(r({},e.data),t.data);return JSON.stringify(n)}(n,o),s=function(e,t){var n=r(r({},e.headers),t.headers),o={};return Object.keys(n).forEach((function(e){var t=n[e];o[e.toLowerCase()]=t})),o}(e,o),c=n.method,l=n.method!==O?{}:r(r({},n.data),o.data),f=r(r(r({\"x-algolia-agent\":e.userAgent.value},e.queryParameters),l),o.queryParameters),h=0,d=function t(r,a){var l=r.pop();if(void 0===l)throw{name:\"RetryError\",message:\"Unreachable hosts - your application id may be incorrect. If the error persists, contact support@algolia.com.\",transporterStackTrace:A(u)};var d={data:i,headers:s,method:c,url:S(l,n.path,f),connectTimeout:a(h,e.timeouts.connect),responseTimeout:a(h,o.timeout)},m=function(e){var t={request:d,response:e,host:l,triesLeft:r.length};return u.push(t),t},p={onSuccess:function(e){return function(e){try{return JSON.parse(e.content)}catch(t){throw function(e,t){return{name:\"DeserializationError\",message:e,response:t}}(t.message,e)}}(e)},onRetry:function(n){var o=m(n);return n.isTimedOut&&h++,Promise.all([e.logger.info(\"Retryable failure\",x(o)),e.hostsCache.set(l,g(l,n.isTimedOut?y:v))]).then((function(){return t(r,a)}))},onFail:function(e){throw m(e),function(e,t){var r=e.content,n=e.status,o=r;try{o=JSON.parse(r).message}catch(e){}return function(e,t,r){return{name:\"ApiError\",message:e,status:t,transporterStackTrace:r}}(o,n,t)}(e,A(u))}};return e.requester.send(d).then((function(e){return function(e,t){return function(e){var t=e.status;return e.isTimedOut||function(e){var t=e.isTimedOut,r=e.status;return!t&&0==~~r}(e)||2!=~~(t/100)&&4!=~~(t/100)}(e)?t.onRetry(e):2==~~(e.status/100)?t.onSuccess(e):t.onFail(e)}(e,p)}))};return q(e.hostsCache,t).then((function(e){return d(a(e.statelessHosts).reverse(),e.getTimeout)}))}function j(e){var t={value:\"Algolia for JavaScript (\".concat(e,\")\"),add:function(e){var r=\"; \".concat(e.segment).concat(void 0!==e.version?\" (\".concat(e.version,\")\"):\"\");return-1===t.value.indexOf(r)&&(t.value=\"\".concat(t.value).concat(r)),t}};return t}function S(e,t,r){var n=T(r),o=\"\".concat(e.protocol,\"://\").concat(e.url,\"/\").concat(\"/\"===t.charAt(0)?t.substr(1):t);return n.length&&(o+=\"?\".concat(n)),o}function T(e){return Object.keys(e).map((function(t){return f(\"%s=%s\",t,(r=e[t],\"[object Object]\"===Object.prototype.toString.call(r)||\"[object Array]\"===Object.prototype.toString.call(r)?JSON.stringify(e[t]):e[t]));var r})).join(\"&\")}function A(e){return e.map((function(e){return x(e)}))}function x(e){var t=e.request.headers[\"x-algolia-api-key\"]?{\"x-algolia-api-key\":\"*****\"}:{};return r(r({},e),{},{request:r(r({},e.request),{},{headers:r(r({},e.request.headers),t)})})}var N=function(e){var t=e.appId,n=function(e,t,r){var n={\"x-algolia-api-key\":r,\"x-algolia-application-id\":t};return{headers:function(){return e===h.WithinHeaders?n:{}},queryParameters:function(){return e===h.WithinQueryParameters?n:{}}}}(void 0!==e.authMode?e.authMode:h.WithinHeaders,t,e.apiKey),a=function(e){var t=e.hostsCache,r=e.logger,n=e.requester,a=e.requestsCache,u=e.responsesCache,i=e.timeouts,s=e.userAgent,c=e.hosts,l=e.queryParameters,f={hostsCache:t,logger:r,requester:n,requestsCache:a,responsesCache:u,timeouts:i,userAgent:s,headers:e.headers,queryParameters:l,hosts:c.map((function(e){return b(e)})),read:function(e,t){var r=d(t,f.timeouts.read),n=function(){return w(f,f.hosts.filter((function(e){return 0!=(e.accept&m.Read)})),e,r)};if(!0!==(void 0!==r.cacheable?r.cacheable:e.cacheable))return n();var a={request:e,mappedRequestOptions:r,transporter:{queryParameters:f.queryParameters,headers:f.headers}};return f.responsesCache.get(a,(function(){return f.requestsCache.get(a,(function(){return f.requestsCache.set(a,n()).then((function(e){return Promise.all([f.requestsCache.delete(a),e])}),(function(e){return Promise.all([f.requestsCache.delete(a),Promise.reject(e)])})).then((function(e){var t=o(e,2);t[0];return t[1]}))}))}),{miss:function(e){return f.responsesCache.set(a,e)}})},write:function(e,t){return w(f,f.hosts.filter((function(e){return 0!=(e.accept&m.Write)})),e,d(t,f.timeouts.write))}};return f}(r(r({hosts:[{url:\"\".concat(t,\"-dsn.algolia.net\"),accept:m.Read},{url:\"\".concat(t,\".algolia.net\"),accept:m.Write}].concat(c([{url:\"\".concat(t,\"-1.algolianet.com\")},{url:\"\".concat(t,\"-2.algolianet.com\")},{url:\"\".concat(t,\"-3.algolianet.com\")}]))},e),{},{headers:r(r(r({},n.headers()),{\"content-type\":\"application/x-www-form-urlencoded\"}),e.headers),queryParameters:r(r({},n.queryParameters()),e.queryParameters)}));return l({transporter:a,appId:t,addAlgoliaAgent:function(e,t){a.userAgent.add({segment:e,version:t})},clearCache:function(){return Promise.all([a.requestsCache.clear(),a.responsesCache.clear()]).then((function(){}))}},e.methods)},C=function(e){return function(t,r){return t.method===O?e.transporter.read(t,r):e.transporter.write(t,r)}},k=function(e){return function(t){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n={transporter:e.transporter,appId:e.appId,indexName:t};return l(n,r.methods)}},J=function(e){return function(t,n){var o=t.map((function(e){return r(r({},e),{},{params:T(e.params||{})})}));return e.transporter.read({method:P,path:\"1/indexes/*/queries\",data:{requests:o},cacheable:!0},n)}},E=function(e){return function(t,o){return Promise.all(t.map((function(t){var a=t.params,u=a.facetName,i=a.facetQuery,s=n(a,[\"facetName\",\"facetQuery\"]);return k(e)(t.indexName,{methods:{searchForFacetValues:R}}).searchForFacetValues(u,i,r(r({},o),s))})))}},I=function(e){return function(t,r,n){return e.transporter.read({method:P,path:f(\"1/answers/%s/prediction\",e.indexName),data:{query:t,queryLanguages:r},cacheable:!0},n)}},F=function(e){return function(t,r){return e.transporter.read({method:P,path:f(\"1/indexes/%s/query\",e.indexName),data:{query:t},cacheable:!0},r)}},R=function(e){return function(t,r,n){return e.transporter.read({method:P,path:f(\"1/indexes/%s/facets/%s/query\",e.indexName,t),data:{facetQuery:r},cacheable:!0},n)}},D=1,W=2,H=3;function Q(e,t,n){var o,a={appId:e,apiKey:t,timeouts:{connect:1,read:2,write:30},requester:{send:function(e){return new Promise((function(t){var r=new XMLHttpRequest;r.open(e.method,e.url,!0),Object.keys(e.headers).forEach((function(t){return r.setRequestHeader(t,e.headers[t])}));var n,o=function(e,n){return setTimeout((function(){r.abort(),t({status:0,content:n,isTimedOut:!0})}),1e3*e)},a=o(e.connectTimeout,\"Connection timeout\");r.onreadystatechange=function(){r.readyState>r.OPENED&&void 0===n&&(clearTimeout(a),n=o(e.responseTimeout,\"Socket timeout\"))},r.onerror=function(){0===r.status&&(clearTimeout(a),clearTimeout(n),t({content:r.responseText||\"Network request failed\",status:r.status,isTimedOut:!1}))},r.onload=function(){clearTimeout(a),clearTimeout(n),t({content:r.responseText,status:r.status,isTimedOut:!1})},r.send(e.data)}))}},logger:(o=H,{debug:function(e,t){return D>=o&&console.debug(e,t),Promise.resolve()},info:function(e,t){return W>=o&&console.info(e,t),Promise.resolve()},error:function(e,t){return console.error(e,t),Promise.resolve()}}),responsesCache:s(),requestsCache:s({serializable:!1}),hostsCache:i({caches:[u({key:\"\".concat(\"4.14.2\",\"-\").concat(e)}),s()]}),userAgent:j(\"4.14.2\").add({segment:\"Browser\",version:\"lite\"}),authMode:h.WithinQueryParameters};return N(r(r(r({},a),n),{},{methods:{search:J,searchForFacetValues:E,multipleQueries:J,multipleSearchForFacetValues:E,customRequest:C,initIndex:function(e){return function(t){return k(e)(t,{methods:{search:F,searchForFacetValues:R,findAnswers:I}})}}}}))}return Q.version=\"4.14.2\",Q}));\n","import InstantSearch from \"./lib/InstantSearch.js\";\nimport version from \"./lib/version.js\";\nimport { snippet, reverseSnippet, highlight, reverseHighlight, insights, getInsightsAnonymousUserToken } from \"./helpers/index.js\";\nimport { createInfiniteHitsSessionStorageCache } from \"./lib/infiniteHitsCache/index.js\";\nimport { deprecate } from \"./lib/utils/index.js\";\n\n/**\n * InstantSearch is the main component of InstantSearch.js. This object\n * manages the widget and lets you add new ones.\n *\n * Two parameters are required to get you started with InstantSearch.js:\n *  - `indexName`: the main index that you will use for your new search UI\n *  - `searchClient`: the search client to plug to InstantSearch.js\n *\n * The [search client provided by Algolia](algolia.com/doc/api-client/getting-started/what-is-the-api-client/javascript/)\n * needs an `appId` and an `apiKey`. Those parameters can be found in your\n * [Algolia dashboard](https://www.algolia.com/api-keys).\n *\n * If you want to get up and running quickly with InstantSearch.js, have a\n * look at the [getting started](https://www.algolia.com/doc/guides/building-search-ui/getting-started/js/).\n */\nvar instantsearch = function instantsearch(options) {\n  return new InstantSearch(options);\n};\n\ninstantsearch.version = version;\ninstantsearch.createInfiniteHitsSessionStorageCache = deprecate(createInfiniteHitsSessionStorageCache, \"import { createInfiniteHitsSessionStorageCache } from 'instantsearch.js/es/lib/infiniteHitsCache'\");\ninstantsearch.highlight = deprecate(highlight, \"import { highlight } from 'instantsearch.js/es/helpers'\");\ninstantsearch.reverseHighlight = deprecate(reverseHighlight, \"import { reverseHighlight } from 'instantsearch.js/es/helpers'\");\ninstantsearch.snippet = deprecate(snippet, \"import { snippet } from 'instantsearch.js/es/helpers'\");\ninstantsearch.reverseSnippet = deprecate(reverseSnippet, \"import { reverseSnippet } from 'instantsearch.js/es/helpers'\");\ninstantsearch.insights = insights;\ninstantsearch.getInsightsAnonymousUserToken = getInsightsAnonymousUserToken;\nObject.defineProperty(instantsearch, 'widgets', {\n  get: function get() {\n    throw new ReferenceError(\"\\\"instantsearch.widgets\\\" are not available from the ES build.\\n\\nTo import the widgets:\\n\\nimport { searchBox } from 'instantsearch.js/es/widgets'\");\n  }\n});\nObject.defineProperty(instantsearch, 'connectors', {\n  get: function get() {\n    throw new ReferenceError(\"\\\"instantsearch.connectors\\\" are not available from the ES build.\\n\\nTo import the connectors:\\n\\nimport { connectSearchBox } from 'instantsearch.js/es/connectors'\");\n  }\n});\nexport default instantsearch;\nexport * from \"./types/index.js\";\n","function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport algoliasearchHelper from 'algoliasearch-helper';\nimport EventEmitter from '@algolia/events';\nimport index from \"../widgets/index/index.js\";\nimport version from \"./version.js\";\nimport createHelpers from \"./createHelpers.js\";\nimport { createDocumentationMessageGenerator, createDocumentationLink, defer, noop, warning, setIndexHelperState } from \"./utils/index.js\";\nimport { createRouterMiddleware } from \"../middlewares/createRouterMiddleware.js\";\nimport { createMetadataMiddleware, isMetadataEnabled } from \"../middlewares/createMetadataMiddleware.js\";\nvar withUsage = createDocumentationMessageGenerator({\n  name: 'instantsearch'\n});\n\nfunction defaultCreateURL() {\n  return '#';\n} // this purposely breaks typescript's type inference to ensure it's not used\n// as it's used for a default parameter for example\n// source: https://github.com/Microsoft/TypeScript/issues/14829#issuecomment-504042546\n\n\n/**\n * The actual implementation of the InstantSearch. This is\n * created using the `instantsearch` factory function.\n * It emits the 'render' event every time a search is done\n */\nvar InstantSearch = /*#__PURE__*/function (_EventEmitter) {\n  _inherits(InstantSearch, _EventEmitter);\n\n  var _super = _createSuper(InstantSearch);\n\n  function InstantSearch(options) {\n    var _this;\n\n    _classCallCheck(this, InstantSearch);\n\n    _this = _super.call(this);\n\n    _defineProperty(_assertThisInitialized(_this), \"client\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"indexName\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"insightsClient\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"onStateChange\", null);\n\n    _defineProperty(_assertThisInitialized(_this), \"helper\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"mainHelper\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"mainIndex\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"started\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"templatesConfig\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"renderState\", {});\n\n    _defineProperty(_assertThisInitialized(_this), \"_stalledSearchDelay\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_searchStalledTimer\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_isSearchStalled\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_initialUiState\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_initialResults\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_createURL\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_searchFunction\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"_mainHelperSearch\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"middleware\", []);\n\n    _defineProperty(_assertThisInitialized(_this), \"sendEventToInsights\", void 0);\n\n    _defineProperty(_assertThisInitialized(_this), \"scheduleSearch\", defer(function () {\n      if (_this.started) {\n        _this.mainHelper.search();\n      }\n    }));\n\n    _defineProperty(_assertThisInitialized(_this), \"scheduleRender\", defer(function () {\n      if (!_this.mainHelper.hasPendingRequests()) {\n        clearTimeout(_this._searchStalledTimer);\n        _this._searchStalledTimer = null;\n        _this._isSearchStalled = false;\n      }\n\n      _this.mainIndex.render({\n        instantSearchInstance: _assertThisInitialized(_this)\n      });\n\n      _this.emit('render');\n    }));\n\n    _defineProperty(_assertThisInitialized(_this), \"onInternalStateChange\", defer(function () {\n      var nextUiState = _this.mainIndex.getWidgetUiState({});\n\n      _this.middleware.forEach(function (_ref) {\n        var instance = _ref.instance;\n        instance.onStateChange({\n          uiState: nextUiState\n        });\n      });\n    }));\n\n    var _options$indexName = options.indexName,\n        indexName = _options$indexName === void 0 ? null : _options$indexName,\n        numberLocale = options.numberLocale,\n        _options$initialUiSta = options.initialUiState,\n        initialUiState = _options$initialUiSta === void 0 ? {} : _options$initialUiSta,\n        _options$routing = options.routing,\n        routing = _options$routing === void 0 ? null : _options$routing,\n        searchFunction = options.searchFunction,\n        _options$stalledSearc = options.stalledSearchDelay,\n        stalledSearchDelay = _options$stalledSearc === void 0 ? 200 : _options$stalledSearc,\n        _options$searchClient = options.searchClient,\n        searchClient = _options$searchClient === void 0 ? null : _options$searchClient,\n        _options$insightsClie = options.insightsClient,\n        insightsClient = _options$insightsClie === void 0 ? null : _options$insightsClie,\n        _options$onStateChang = options.onStateChange,\n        onStateChange = _options$onStateChang === void 0 ? null : _options$onStateChang;\n\n    if (indexName === null) {\n      throw new Error(withUsage('The `indexName` option is required.'));\n    }\n\n    if (searchClient === null) {\n      throw new Error(withUsage('The `searchClient` option is required.'));\n    }\n\n    if (typeof searchClient.search !== 'function') {\n      throw new Error(\"The `searchClient` must implement a `search` method.\\n\\nSee: https://www.algolia.com/doc/guides/building-search-ui/going-further/backend-search/in-depth/backend-instantsearch/js/\");\n    }\n\n    if (typeof searchClient.addAlgoliaAgent === 'function') {\n      searchClient.addAlgoliaAgent(\"instantsearch.js (\".concat(version, \")\"));\n    }\n\n    process.env.NODE_ENV === 'development' ? warning(insightsClient === null, \"`insightsClient` property has been deprecated. It is still supported in 4.x releases, but not further. It is replaced by the `insights` middleware.\\n\\nFor more information, visit https://www.algolia.com/doc/guides/getting-insights-and-analytics/search-analytics/click-through-and-conversions/how-to/send-click-and-conversion-events-with-instantsearch/js/\") : void 0;\n\n    if (insightsClient && typeof insightsClient !== 'function') {\n      throw new Error(withUsage('The `insightsClient` option should be a function.'));\n    }\n\n    process.env.NODE_ENV === 'development' ? warning(!options.searchParameters, \"The `searchParameters` option is deprecated and will not be supported in InstantSearch.js 4.x.\\n\\nYou can replace it with the `configure` widget:\\n\\n```\\nsearch.addWidgets([\\n  configure(\".concat(JSON.stringify(options.searchParameters, null, 2), \")\\n]);\\n```\\n\\nSee \").concat(createDocumentationLink({\n      name: 'configure'\n    }))) : void 0;\n    _this.client = searchClient;\n    _this.insightsClient = insightsClient;\n    _this.indexName = indexName;\n    _this.helper = null;\n    _this.mainHelper = null;\n    _this.mainIndex = index({\n      indexName: indexName\n    });\n    _this.onStateChange = onStateChange;\n    _this.started = false;\n    _this.templatesConfig = {\n      helpers: createHelpers({\n        numberLocale: numberLocale\n      }),\n      compileOptions: {}\n    };\n    _this._stalledSearchDelay = stalledSearchDelay;\n    _this._searchStalledTimer = null;\n    _this._isSearchStalled = false;\n    _this._createURL = defaultCreateURL;\n    _this._initialUiState = initialUiState;\n    _this._initialResults = null;\n\n    if (searchFunction) {\n      _this._searchFunction = searchFunction;\n    }\n\n    _this.sendEventToInsights = noop;\n\n    if (routing) {\n      var routerOptions = typeof routing === 'boolean' ? undefined : routing;\n\n      _this.use(createRouterMiddleware(routerOptions));\n    }\n\n    if (isMetadataEnabled()) {\n      _this.use(createMetadataMiddleware());\n    }\n\n    return _this;\n  }\n  /**\n   * Hooks a middleware into the InstantSearch lifecycle.\n   */\n\n\n  _createClass(InstantSearch, [{\n    key: \"use\",\n    value: function use() {\n      var _this2 = this;\n\n      for (var _len = arguments.length, middleware = new Array(_len), _key = 0; _key < _len; _key++) {\n        middleware[_key] = arguments[_key];\n      }\n\n      var newMiddlewareList = middleware.map(function (fn) {\n        var newMiddleware = _objectSpread({\n          subscribe: noop,\n          started: noop,\n          unsubscribe: noop,\n          onStateChange: noop\n        }, fn({\n          instantSearchInstance: _this2\n        }));\n\n        _this2.middleware.push({\n          creator: fn,\n          instance: newMiddleware\n        });\n\n        return newMiddleware;\n      }); // If the instance has already started, we directly subscribe the\n      // middleware so they're notified of changes.\n\n      if (this.started) {\n        newMiddlewareList.forEach(function (m) {\n          m.subscribe();\n          m.started();\n        });\n      }\n\n      return this;\n    }\n    /**\n     * Removes a middleware from the InstantSearch lifecycle.\n     */\n\n  }, {\n    key: \"unuse\",\n    value: function unuse() {\n      for (var _len2 = arguments.length, middlewareToUnuse = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        middlewareToUnuse[_key2] = arguments[_key2];\n      }\n\n      this.middleware.filter(function (m) {\n        return middlewareToUnuse.includes(m.creator);\n      }).forEach(function (m) {\n        return m.instance.unsubscribe();\n      });\n      this.middleware = this.middleware.filter(function (m) {\n        return !middlewareToUnuse.includes(m.creator);\n      });\n      return this;\n    } // @major we shipped with EXPERIMENTAL_use, but have changed that to just `use` now\n\n  }, {\n    key: \"EXPERIMENTAL_use\",\n    value: function EXPERIMENTAL_use() {\n      process.env.NODE_ENV === 'development' ? warning(false, 'The middleware API is now considered stable, so we recommend replacing `EXPERIMENTAL_use` with `use` before upgrading to the next major version.') : void 0;\n      return this.use.apply(this, arguments);\n    }\n    /**\n     * Adds a widget to the search instance.\n     * A widget can be added either before or after InstantSearch has started.\n     * @param widget The widget to add to InstantSearch.\n     *\n     * @deprecated This method will still be supported in 4.x releases, but not further. It is replaced by `addWidgets([widget])`.\n     */\n\n  }, {\n    key: \"addWidget\",\n    value: function addWidget(widget) {\n      process.env.NODE_ENV === 'development' ? warning(false, 'addWidget will still be supported in 4.x releases, but not further. It is replaced by `addWidgets([widget])`') : void 0;\n      return this.addWidgets([widget]);\n    }\n    /**\n     * Adds multiple widgets to the search instance.\n     * Widgets can be added either before or after InstantSearch has started.\n     * @param widgets The array of widgets to add to InstantSearch.\n     */\n\n  }, {\n    key: \"addWidgets\",\n    value: function addWidgets(widgets) {\n      if (!Array.isArray(widgets)) {\n        throw new Error(withUsage('The `addWidgets` method expects an array of widgets. Please use `addWidget`.'));\n      }\n\n      if (widgets.some(function (widget) {\n        return typeof widget.init !== 'function' && typeof widget.render !== 'function';\n      })) {\n        throw new Error(withUsage('The widget definition expects a `render` and/or an `init` method.'));\n      }\n\n      this.mainIndex.addWidgets(widgets);\n      return this;\n    }\n    /**\n     * Removes a widget from the search instance.\n     * @deprecated This method will still be supported in 4.x releases, but not further. It is replaced by `removeWidgets([widget])`\n     * @param widget The widget instance to remove from InstantSearch.\n     *\n     * The widget must implement a `dispose()` method to clear its state.\n     */\n\n  }, {\n    key: \"removeWidget\",\n    value: function removeWidget(widget) {\n      process.env.NODE_ENV === 'development' ? warning(false, 'removeWidget will still be supported in 4.x releases, but not further. It is replaced by `removeWidgets([widget])`') : void 0;\n      return this.removeWidgets([widget]);\n    }\n    /**\n     * Removes multiple widgets from the search instance.\n     * @param widgets Array of widgets instances to remove from InstantSearch.\n     *\n     * The widgets must implement a `dispose()` method to clear their states.\n     */\n\n  }, {\n    key: \"removeWidgets\",\n    value: function removeWidgets(widgets) {\n      if (!Array.isArray(widgets)) {\n        throw new Error(withUsage('The `removeWidgets` method expects an array of widgets. Please use `removeWidget`.'));\n      }\n\n      if (widgets.some(function (widget) {\n        return typeof widget.dispose !== 'function';\n      })) {\n        throw new Error(withUsage('The widget definition expects a `dispose` method.'));\n      }\n\n      this.mainIndex.removeWidgets(widgets);\n      return this;\n    }\n    /**\n     * Ends the initialization of InstantSearch.js and triggers the\n     * first search. This method should be called after all widgets have been added\n     * to the instance of InstantSearch.js. InstantSearch.js also supports adding and removing\n     * widgets after the start as an **EXPERIMENTAL** feature.\n     */\n\n  }, {\n    key: \"start\",\n    value: function start() {\n      var _this3 = this;\n\n      if (this.started) {\n        throw new Error(withUsage('The `start` method has already been called once.'));\n      } // This Helper is used for the queries, we don't care about its state. The\n      // states are managed at the `index` level. We use this Helper to create\n      // DerivedHelper scoped into the `index` widgets.\n      // In Vue InstantSearch' hydrate, a main helper gets set before start, so\n      // we need to respect this helper as a way to keep all listeners correct.\n\n\n      var mainHelper = this.mainHelper || algoliasearchHelper(this.client, this.indexName);\n\n      mainHelper.search = function () {\n        // This solution allows us to keep the exact same API for the users but\n        // under the hood, we have a different implementation. It should be\n        // completely transparent for the rest of the codebase. Only this module\n        // is impacted.\n        return mainHelper.searchOnlyWithDerivedHelpers();\n      };\n\n      if (this._searchFunction) {\n        // this client isn't used to actually search, but required for the helper\n        // to not throw errors\n        var fakeClient = {\n          search: function search() {\n            return new Promise(noop);\n          }\n        };\n        this._mainHelperSearch = mainHelper.search.bind(mainHelper);\n\n        mainHelper.search = function () {\n          var mainIndexHelper = _this3.mainIndex.getHelper();\n\n          var searchFunctionHelper = algoliasearchHelper(fakeClient, mainIndexHelper.state.index, mainIndexHelper.state);\n          searchFunctionHelper.once('search', function (_ref2) {\n            var state = _ref2.state;\n            mainIndexHelper.overrideStateWithoutTriggeringChangeEvent(state);\n\n            _this3._mainHelperSearch();\n          }); // Forward state changes from `searchFunctionHelper` to `mainIndexHelper`\n\n          searchFunctionHelper.on('change', function (_ref3) {\n            var state = _ref3.state;\n            mainIndexHelper.setState(state);\n          });\n\n          _this3._searchFunction(searchFunctionHelper);\n\n          return mainHelper;\n        };\n      } // Only the \"main\" Helper emits the `error` event vs the one for `search`\n      // and `results` that are also emitted on the derived one.\n\n\n      mainHelper.on('error', function (_ref4) {\n        var error = _ref4.error;\n\n        if (!(error instanceof Error)) {\n          // typescript lies here, error is in some cases { name: string, message: string }\n          var err = error;\n          error = Object.keys(err).reduce(function (acc, key) {\n            acc[key] = err[key];\n            return acc;\n          }, new Error(err.message));\n        } // If an error is emitted, it is re-thrown by events. In previous versions\n        // we emitted {error}, which is thrown as:\n        // \"Uncaught, unspecified \\\"error\\\" event. ([object Object])\"\n        // To avoid breaking changes, we make the error available in both\n        // `error` and `error.error`\n        // @MAJOR emit only error\n\n\n        error.error = error;\n\n        _this3.emit('error', error);\n      });\n      this.mainHelper = mainHelper;\n      this.middleware.forEach(function (_ref5) {\n        var instance = _ref5.instance;\n        instance.subscribe();\n      });\n      this.mainIndex.init({\n        instantSearchInstance: this,\n        parent: null,\n        uiState: this._initialUiState\n      });\n\n      if (this._initialResults) {\n        var originalScheduleSearch = this.scheduleSearch; // We don't schedule a first search when initial results are provided\n        // because we already have the results to render. This skips the initial\n        // network request on the browser on `start`.\n\n        this.scheduleSearch = defer(noop); // We also skip the initial network request when widgets are dynamically\n        // added in the first tick (that's the case in all the framework-based flavors).\n        // When we add a widget to `index`, it calls `scheduleSearch`. We can rely\n        // on our `defer` util to restore the original `scheduleSearch` value once\n        // widgets are added to hook back to the regular lifecycle.\n\n        defer(function () {\n          _this3.scheduleSearch = originalScheduleSearch;\n        })();\n      } // We only schedule a search when widgets have been added before `start()`\n      // because there are listeners that can use these results.\n      // This is especially useful in framework-based flavors that wait for\n      // dynamically-added widgets to trigger a network request. It avoids\n      // having to batch this initial network request with the one coming from\n      // `addWidgets()`.\n      // Later, we could also skip `index()` widgets and widgets that don't read\n      // the results, but this is an optimization that has a very low impact for now.\n      else if (this.mainIndex.getWidgets().length > 0) {\n          this.scheduleSearch();\n        } // Keep the previous reference for legacy purpose, some pattern use\n      // the direct Helper access `search.helper` (e.g multi-index).\n\n\n      this.helper = this.mainIndex.getHelper(); // track we started the search if we add more widgets,\n      // to init them directly after add\n\n      this.started = true;\n      this.middleware.forEach(function (_ref6) {\n        var instance = _ref6.instance;\n        instance.started();\n      });\n    }\n    /**\n     * Removes all widgets without triggering a search afterwards. This is an **EXPERIMENTAL** feature,\n     * if you find an issue with it, please\n     * [open an issue](https://github.com/algolia/instantsearch.js/issues/new?title=Problem%20with%20dispose).\n     * @return {undefined} This method does not return anything\n     */\n\n  }, {\n    key: \"dispose\",\n    value: function dispose() {\n      this.scheduleSearch.cancel();\n      this.scheduleRender.cancel();\n      clearTimeout(this._searchStalledTimer);\n      this.removeWidgets(this.mainIndex.getWidgets());\n      this.mainIndex.dispose(); // You can not start an instance two times, therefore a disposed instance\n      // needs to set started as false otherwise this can not be restarted at a\n      // later point.\n\n      this.started = false; // The helper needs to be reset to perform the next search from a fresh state.\n      // If not reset, it would use the state stored before calling `dispose()`.\n\n      this.removeAllListeners();\n      this.mainHelper.removeAllListeners();\n      this.mainHelper = null;\n      this.helper = null;\n      this.middleware.forEach(function (_ref7) {\n        var instance = _ref7.instance;\n        instance.unsubscribe();\n      });\n    }\n  }, {\n    key: \"scheduleStalledRender\",\n    value: function scheduleStalledRender() {\n      var _this4 = this;\n\n      if (!this._searchStalledTimer) {\n        this._searchStalledTimer = setTimeout(function () {\n          _this4._isSearchStalled = true;\n\n          _this4.scheduleRender();\n        }, this._stalledSearchDelay);\n      }\n    }\n    /**\n     * Set the UI state and trigger a search.\n     * @param uiState The next UI state or a function computing it from the current state\n     * @param callOnStateChange private parameter used to know if the method is called from a state change\n     */\n\n  }, {\n    key: \"setUiState\",\n    value: function setUiState(uiState) {\n      var _this5 = this;\n\n      var callOnStateChange = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n\n      if (!this.mainHelper) {\n        throw new Error(withUsage('The `start` method needs to be called before `setUiState`.'));\n      } // We refresh the index UI state to update the local UI state that the\n      // main index passes to the function form of `setUiState`.\n\n\n      this.mainIndex.refreshUiState();\n      var nextUiState = typeof uiState === 'function' ? uiState(this.mainIndex.getWidgetUiState({})) : uiState;\n\n      if (this.onStateChange && callOnStateChange) {\n        this.onStateChange({\n          uiState: nextUiState,\n          setUiState: function setUiState(finalUiState) {\n            setIndexHelperState(typeof finalUiState === 'function' ? finalUiState(nextUiState) : finalUiState, _this5.mainIndex);\n\n            _this5.scheduleSearch();\n\n            _this5.onInternalStateChange();\n          }\n        });\n      } else {\n        setIndexHelperState(nextUiState, this.mainIndex);\n        this.scheduleSearch();\n        this.onInternalStateChange();\n      }\n    }\n  }, {\n    key: \"getUiState\",\n    value: function getUiState() {\n      if (this.started) {\n        // We refresh the index UI state to make sure changes from `refine` are taken in account\n        this.mainIndex.refreshUiState();\n      }\n\n      return this.mainIndex.getWidgetUiState({});\n    }\n  }, {\n    key: \"createURL\",\n    value: function createURL() {\n      var nextState = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n      if (!this.started) {\n        throw new Error(withUsage('The `start` method needs to be called before `createURL`.'));\n      }\n\n      return this._createURL(nextState);\n    }\n  }, {\n    key: \"refresh\",\n    value: function refresh() {\n      if (!this.mainHelper) {\n        throw new Error(withUsage('The `start` method needs to be called before `refresh`.'));\n      }\n\n      this.mainHelper.clearCache().search();\n    }\n  }]);\n\n  return InstantSearch;\n}(EventEmitter);\n\nexport default InstantSearch;","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport algoliasearchHelper from 'algoliasearch-helper';\nimport { checkIndexUiState, createDocumentationMessageGenerator, resolveSearchParameters, mergeSearchParameters, warning, isIndexWidget } from \"../../lib/utils/index.js\";\nvar withUsage = createDocumentationMessageGenerator({\n  name: 'index-widget'\n});\n\n/**\n * This is the same content as helper._change / setState, but allowing for extra\n * UiState to be synchronized.\n * see: https://github.com/algolia/algoliasearch-helper-js/blob/6b835ffd07742f2d6b314022cce6848f5cfecd4a/src/algoliasearch.helper.js#L1311-L1324\n */\nfunction privateHelperSetState(helper, _ref) {\n  var state = _ref.state,\n      isPageReset = _ref.isPageReset,\n      _uiState = _ref._uiState;\n\n  if (state !== helper.state) {\n    helper.state = state;\n    helper.emit('change', {\n      state: helper.state,\n      results: helper.lastResults,\n      isPageReset: isPageReset,\n      _uiState: _uiState\n    });\n  }\n}\n\nfunction getLocalWidgetsUiState(widgets, widgetStateOptions) {\n  var initialUiState = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n  return widgets.reduce(function (uiState, widget) {\n    if (isIndexWidget(widget)) {\n      return uiState;\n    }\n\n    if (!widget.getWidgetUiState && !widget.getWidgetState) {\n      return uiState;\n    }\n\n    if (widget.getWidgetUiState) {\n      return widget.getWidgetUiState(uiState, widgetStateOptions);\n    }\n\n    return widget.getWidgetState(uiState, widgetStateOptions);\n  }, initialUiState);\n}\n\nfunction getLocalWidgetsSearchParameters(widgets, widgetSearchParametersOptions) {\n  var initialSearchParameters = widgetSearchParametersOptions.initialSearchParameters,\n      rest = _objectWithoutProperties(widgetSearchParametersOptions, [\"initialSearchParameters\"]);\n\n  return widgets.filter(function (widget) {\n    return !isIndexWidget(widget);\n  }).reduce(function (state, widget) {\n    if (!widget.getWidgetSearchParameters) {\n      return state;\n    }\n\n    return widget.getWidgetSearchParameters(state, rest);\n  }, initialSearchParameters);\n}\n\nfunction resetPageFromWidgets(widgets) {\n  var indexWidgets = widgets.filter(isIndexWidget);\n\n  if (indexWidgets.length === 0) {\n    return;\n  }\n\n  indexWidgets.forEach(function (widget) {\n    var widgetHelper = widget.getHelper();\n    privateHelperSetState(widgetHelper, {\n      state: widgetHelper.state.resetPage(),\n      isPageReset: true\n    });\n    resetPageFromWidgets(widget.getWidgets());\n  });\n}\n\nfunction resolveScopedResultsFromWidgets(widgets) {\n  var indexWidgets = widgets.filter(isIndexWidget);\n  return indexWidgets.reduce(function (scopedResults, current) {\n    return scopedResults.concat.apply(scopedResults, [{\n      indexId: current.getIndexId(),\n      results: current.getResults(),\n      helper: current.getHelper()\n    }].concat(_toConsumableArray(resolveScopedResultsFromWidgets(current.getWidgets()))));\n  }, []);\n}\n\nvar index = function index(widgetParams) {\n  if (widgetParams === undefined || widgetParams.indexName === undefined) {\n    throw new Error(withUsage('The `indexName` option is required.'));\n  }\n\n  var indexName = widgetParams.indexName,\n      _widgetParams$indexId = widgetParams.indexId,\n      indexId = _widgetParams$indexId === void 0 ? indexName : _widgetParams$indexId;\n  var localWidgets = [];\n  var localUiState = {};\n  var localInstantSearchInstance = null;\n  var localParent = null;\n  var helper = null;\n  var derivedHelper = null;\n  return {\n    $$type: 'ais.index',\n    $$widgetType: 'ais.index',\n    getIndexName: function getIndexName() {\n      return indexName;\n    },\n    getIndexId: function getIndexId() {\n      return indexId;\n    },\n    getHelper: function getHelper() {\n      return helper;\n    },\n    getResults: function getResults() {\n      return derivedHelper && derivedHelper.lastResults;\n    },\n    getScopedResults: function getScopedResults() {\n      var widgetParent = this.getParent(); // If the widget is the root, we consider itself as the only sibling.\n\n      var widgetSiblings = widgetParent ? widgetParent.getWidgets() : [this];\n      return resolveScopedResultsFromWidgets(widgetSiblings);\n    },\n    getParent: function getParent() {\n      return localParent;\n    },\n    createURL: function createURL(nextState) {\n      return localInstantSearchInstance._createURL(_defineProperty({}, indexId, getLocalWidgetsUiState(localWidgets, {\n        searchParameters: nextState,\n        helper: helper\n      })));\n    },\n    getWidgets: function getWidgets() {\n      return localWidgets;\n    },\n    addWidgets: function addWidgets(widgets) {\n      var _this = this;\n\n      if (!Array.isArray(widgets)) {\n        throw new Error(withUsage('The `addWidgets` method expects an array of widgets.'));\n      }\n\n      if (widgets.some(function (widget) {\n        return typeof widget.init !== 'function' && typeof widget.render !== 'function';\n      })) {\n        throw new Error(withUsage('The widget definition expects a `render` and/or an `init` method.'));\n      }\n\n      localWidgets = localWidgets.concat(widgets);\n\n      if (localInstantSearchInstance && Boolean(widgets.length)) {\n        privateHelperSetState(helper, {\n          state: getLocalWidgetsSearchParameters(localWidgets, {\n            uiState: localUiState,\n            initialSearchParameters: helper.state\n          }),\n          _uiState: localUiState\n        }); // We compute the render state before calling `init` in a separate loop\n        // to construct the whole render state object that is then passed to\n        // `init`.\n\n        widgets.forEach(function (widget) {\n          if (widget.getRenderState) {\n            var renderState = widget.getRenderState(localInstantSearchInstance.renderState[_this.getIndexId()] || {}, {\n              uiState: localInstantSearchInstance._initialUiState,\n              helper: _this.getHelper(),\n              parent: _this,\n              instantSearchInstance: localInstantSearchInstance,\n              state: helper.state,\n              renderState: localInstantSearchInstance.renderState,\n              templatesConfig: localInstantSearchInstance.templatesConfig,\n              createURL: _this.createURL,\n              scopedResults: [],\n              searchMetadata: {\n                isSearchStalled: localInstantSearchInstance._isSearchStalled\n              }\n            });\n            storeRenderState({\n              renderState: renderState,\n              instantSearchInstance: localInstantSearchInstance,\n              parent: _this\n            });\n          }\n        });\n        widgets.forEach(function (widget) {\n          if (widget.init) {\n            widget.init({\n              helper: helper,\n              parent: _this,\n              uiState: localInstantSearchInstance._initialUiState,\n              instantSearchInstance: localInstantSearchInstance,\n              state: helper.state,\n              renderState: localInstantSearchInstance.renderState,\n              templatesConfig: localInstantSearchInstance.templatesConfig,\n              createURL: _this.createURL,\n              scopedResults: [],\n              searchMetadata: {\n                isSearchStalled: localInstantSearchInstance._isSearchStalled\n              }\n            });\n          }\n        });\n        localInstantSearchInstance.scheduleSearch();\n      }\n\n      return this;\n    },\n    removeWidgets: function removeWidgets(widgets) {\n      var _this2 = this;\n\n      if (!Array.isArray(widgets)) {\n        throw new Error(withUsage('The `removeWidgets` method expects an array of widgets.'));\n      }\n\n      if (widgets.some(function (widget) {\n        return typeof widget.dispose !== 'function';\n      })) {\n        throw new Error(withUsage('The widget definition expects a `dispose` method.'));\n      }\n\n      localWidgets = localWidgets.filter(function (widget) {\n        return widgets.indexOf(widget) === -1;\n      });\n\n      if (localInstantSearchInstance && Boolean(widgets.length)) {\n        var nextState = widgets.reduce(function (state, widget) {\n          // the `dispose` method exists at this point we already assert it\n          var next = widget.dispose({\n            helper: helper,\n            state: state,\n            parent: _this2\n          });\n          return next || state;\n        }, helper.state);\n        localUiState = getLocalWidgetsUiState(localWidgets, {\n          searchParameters: nextState,\n          helper: helper\n        });\n        helper.setState(getLocalWidgetsSearchParameters(localWidgets, {\n          uiState: localUiState,\n          initialSearchParameters: nextState\n        }));\n\n        if (localWidgets.length) {\n          localInstantSearchInstance.scheduleSearch();\n        }\n      }\n\n      return this;\n    },\n    init: function init(_ref2) {\n      var _this3 = this,\n          _instantSearchInstanc;\n\n      var instantSearchInstance = _ref2.instantSearchInstance,\n          parent = _ref2.parent,\n          uiState = _ref2.uiState;\n\n      if (helper !== null) {\n        // helper is already initialized, therefore we do not need to set up\n        // any listeners\n        return;\n      }\n\n      localInstantSearchInstance = instantSearchInstance;\n      localParent = parent;\n      localUiState = uiState[indexId] || {}; // The `mainHelper` is already defined at this point. The instance is created\n      // inside InstantSearch at the `start` method, which occurs before the `init`\n      // step.\n\n      var mainHelper = instantSearchInstance.mainHelper;\n      var parameters = getLocalWidgetsSearchParameters(localWidgets, {\n        uiState: localUiState,\n        initialSearchParameters: new algoliasearchHelper.SearchParameters({\n          index: indexName\n        })\n      }); // This Helper is only used for state management we do not care about the\n      // `searchClient`. Only the \"main\" Helper created at the `InstantSearch`\n      // level is aware of the client.\n\n      helper = algoliasearchHelper({}, parameters.index, parameters); // We forward the call to `search` to the \"main\" instance of the Helper\n      // which is responsible for managing the queries (it's the only one that is\n      // aware of the `searchClient`).\n\n      helper.search = function () {\n        if (instantSearchInstance.onStateChange) {\n          instantSearchInstance.onStateChange({\n            uiState: instantSearchInstance.mainIndex.getWidgetUiState({}),\n            setUiState: function setUiState(nextState) {\n              return instantSearchInstance.setUiState(nextState, false);\n            }\n          }); // We don't trigger a search when controlled because it becomes the\n          // responsibility of `setUiState`.\n\n          return mainHelper;\n        }\n\n        return mainHelper.search();\n      };\n\n      helper.searchWithoutTriggeringOnStateChange = function () {\n        return mainHelper.search();\n      }; // We use the same pattern for the `searchForFacetValues`.\n\n\n      helper.searchForFacetValues = function (facetName, facetValue, maxFacetHits, userState) {\n        var state = helper.state.setQueryParameters(userState);\n        return mainHelper.searchForFacetValues(facetName, facetValue, maxFacetHits, state);\n      };\n\n      derivedHelper = mainHelper.derive(function () {\n        return mergeSearchParameters.apply(void 0, _toConsumableArray(resolveSearchParameters(_this3)));\n      });\n      var indexInitialResults = (_instantSearchInstanc = instantSearchInstance._initialResults) === null || _instantSearchInstanc === void 0 ? void 0 : _instantSearchInstanc[this.getIndexId()];\n\n      if (indexInitialResults) {\n        // We restore the shape of the results provided to the instance to respect\n        // the helper's structure.\n        var results = new algoliasearchHelper.SearchResults(new algoliasearchHelper.SearchParameters(indexInitialResults.state), indexInitialResults.results);\n        derivedHelper.lastResults = results;\n        helper.lastResults = results;\n      } // Subscribe to the Helper state changes for the page before widgets\n      // are initialized. This behavior mimics the original one of the Helper.\n      // It makes sense to replicate it at the `init` step. We have another\n      // listener on `change` below, once `init` is done.\n\n\n      helper.on('change', function (_ref3) {\n        var isPageReset = _ref3.isPageReset;\n\n        if (isPageReset) {\n          resetPageFromWidgets(localWidgets);\n        }\n      });\n      derivedHelper.on('search', function () {\n        // The index does not manage the \"staleness\" of the search. This is the\n        // responsibility of the main instance. It does not make sense to manage\n        // it at the index level because it's either: all of them or none of them\n        // that are stalled. The queries are performed into a single network request.\n        instantSearchInstance.scheduleStalledRender();\n\n        if (process.env.NODE_ENV === 'development') {\n          checkIndexUiState({\n            index: _this3,\n            indexUiState: localUiState\n          });\n        }\n      });\n      derivedHelper.on('result', function (_ref4) {\n        var results = _ref4.results;\n        // The index does not render the results it schedules a new render\n        // to let all the other indices emit their own results. It allows us to\n        // run the render process in one pass.\n        instantSearchInstance.scheduleRender(); // the derived helper is the one which actually searches, but the helper\n        // which is exposed e.g. via instance.helper, doesn't search, and thus\n        // does not have access to lastResults, which it used to in pre-federated\n        // search behavior.\n\n        helper.lastResults = results;\n      }); // We compute the render state before calling `init` in a separate loop\n      // to construct the whole render state object that is then passed to\n      // `init`.\n\n      localWidgets.forEach(function (widget) {\n        if (widget.getRenderState) {\n          var renderState = widget.getRenderState(instantSearchInstance.renderState[_this3.getIndexId()] || {}, {\n            uiState: uiState,\n            helper: helper,\n            parent: _this3,\n            instantSearchInstance: instantSearchInstance,\n            state: helper.state,\n            renderState: instantSearchInstance.renderState,\n            templatesConfig: instantSearchInstance.templatesConfig,\n            createURL: _this3.createURL,\n            scopedResults: [],\n            searchMetadata: {\n              isSearchStalled: instantSearchInstance._isSearchStalled\n            }\n          });\n          storeRenderState({\n            renderState: renderState,\n            instantSearchInstance: instantSearchInstance,\n            parent: _this3\n          });\n        }\n      });\n      localWidgets.forEach(function (widget) {\n        process.env.NODE_ENV === 'development' ? warning( // if it has NO getWidgetState or if it has getWidgetUiState, we don't warn\n        // aka we warn if there's _only_ getWidgetState\n        !widget.getWidgetState || Boolean(widget.getWidgetUiState), 'The `getWidgetState` method is renamed `getWidgetUiState` and will no longer exist under that name in InstantSearch.js 5.x. Please use `getWidgetUiState` instead.') : void 0;\n\n        if (widget.init) {\n          widget.init({\n            uiState: uiState,\n            helper: helper,\n            parent: _this3,\n            instantSearchInstance: instantSearchInstance,\n            state: helper.state,\n            renderState: instantSearchInstance.renderState,\n            templatesConfig: instantSearchInstance.templatesConfig,\n            createURL: _this3.createURL,\n            scopedResults: [],\n            searchMetadata: {\n              isSearchStalled: instantSearchInstance._isSearchStalled\n            }\n          });\n        }\n      }); // Subscribe to the Helper state changes for the `uiState` once widgets\n      // are initialized. Until the first render, state changes are part of the\n      // configuration step. This is mainly for backward compatibility with custom\n      // widgets. When the subscription happens before the `init` step, the (static)\n      // configuration of the widget is pushed in the URL. That's what we want to avoid.\n      // https://github.com/algolia/instantsearch.js/pull/994/commits/4a672ae3fd78809e213de0368549ef12e9dc9454\n\n      helper.on('change', function (event) {\n        var state = event.state;\n        var _uiState = event._uiState;\n        localUiState = getLocalWidgetsUiState(localWidgets, {\n          searchParameters: state,\n          helper: helper\n        }, _uiState || {}); // We don't trigger an internal change when controlled because it\n        // becomes the responsibility of `setUiState`.\n\n        if (!instantSearchInstance.onStateChange) {\n          instantSearchInstance.onInternalStateChange();\n        }\n      });\n\n      if (indexInitialResults) {\n        // If there are initial results, we're not notified of the next results\n        // because we don't trigger an initial search. We therefore need to directly\n        // schedule a render that will render the results injected on the helper.\n        instantSearchInstance.scheduleRender();\n      }\n    },\n    render: function render(_ref5) {\n      var _this4 = this;\n\n      var instantSearchInstance = _ref5.instantSearchInstance;\n\n      if (!this.getResults()) {\n        return;\n      }\n\n      localWidgets.forEach(function (widget) {\n        if (widget.getRenderState) {\n          var renderState = widget.getRenderState(instantSearchInstance.renderState[_this4.getIndexId()] || {}, {\n            helper: _this4.getHelper(),\n            parent: _this4,\n            instantSearchInstance: instantSearchInstance,\n            results: _this4.getResults(),\n            scopedResults: _this4.getScopedResults(),\n            state: _this4.getResults()._state,\n            renderState: instantSearchInstance.renderState,\n            templatesConfig: instantSearchInstance.templatesConfig,\n            createURL: _this4.createURL,\n            searchMetadata: {\n              isSearchStalled: instantSearchInstance._isSearchStalled\n            }\n          });\n          storeRenderState({\n            renderState: renderState,\n            instantSearchInstance: instantSearchInstance,\n            parent: _this4\n          });\n        }\n      });\n      localWidgets.forEach(function (widget) {\n        // At this point, all the variables used below are set. Both `helper`\n        // and `derivedHelper` have been created at the `init` step. The attribute\n        // `lastResults` might be `null` though. It's possible that a stalled render\n        // happens before the result e.g with a dynamically added index the request might\n        // be delayed. The render is triggered for the complete tree but some parts do\n        // not have results yet.\n        if (widget.render) {\n          widget.render({\n            helper: helper,\n            parent: _this4,\n            instantSearchInstance: instantSearchInstance,\n            results: _this4.getResults(),\n            scopedResults: _this4.getScopedResults(),\n            state: _this4.getResults()._state,\n            renderState: instantSearchInstance.renderState,\n            templatesConfig: instantSearchInstance.templatesConfig,\n            createURL: _this4.createURL,\n            searchMetadata: {\n              isSearchStalled: instantSearchInstance._isSearchStalled\n            }\n          });\n        }\n      });\n    },\n    dispose: function dispose() {\n      var _this5 = this;\n\n      localWidgets.forEach(function (widget) {\n        if (widget.dispose) {\n          // The dispose function is always called once the instance is started\n          // (it's an effect of `removeWidgets`). The index is initialized and\n          // the Helper is available. We don't care about the return value of\n          // `dispose` because the index is removed. We can't call `removeWidgets`\n          // because we want to keep the widgets on the instance, to allow idempotent\n          // operations on `add` & `remove`.\n          widget.dispose({\n            helper: helper,\n            state: helper.state,\n            parent: _this5\n          });\n        }\n      });\n      localInstantSearchInstance = null;\n      localParent = null;\n      helper.removeAllListeners();\n      helper = null;\n      derivedHelper.detach();\n      derivedHelper = null;\n    },\n    getWidgetUiState: function getWidgetUiState(uiState) {\n      return localWidgets.filter(isIndexWidget).reduce(function (previousUiState, innerIndex) {\n        return innerIndex.getWidgetUiState(previousUiState);\n      }, _objectSpread(_objectSpread({}, uiState), {}, _defineProperty({}, this.getIndexId(), localUiState)));\n    },\n    getWidgetState: function getWidgetState(uiState) {\n      process.env.NODE_ENV === 'development' ? warning(false, 'The `getWidgetState` method is renamed `getWidgetUiState` and will no longer exist under that name in InstantSearch.js 5.x. Please use `getWidgetUiState` instead.') : void 0;\n      return this.getWidgetUiState(uiState);\n    },\n    getWidgetSearchParameters: function getWidgetSearchParameters(searchParameters, _ref6) {\n      var uiState = _ref6.uiState;\n      return getLocalWidgetsSearchParameters(localWidgets, {\n        uiState: uiState,\n        initialSearchParameters: searchParameters\n      });\n    },\n    refreshUiState: function refreshUiState() {\n      localUiState = getLocalWidgetsUiState(localWidgets, {\n        searchParameters: this.getHelper().state,\n        helper: this.getHelper()\n      }, localUiState);\n    }\n  };\n};\n\nexport default index;\n\nfunction storeRenderState(_ref7) {\n  var renderState = _ref7.renderState,\n      instantSearchInstance = _ref7.instantSearchInstance,\n      parent = _ref7.parent;\n  var parentIndexName = parent ? parent.getIndexId() : instantSearchInstance.mainIndex.getIndexId();\n  instantSearchInstance.renderState = _objectSpread(_objectSpread({}, instantSearchInstance.renderState), {}, _defineProperty({}, parentIndexName, _objectSpread(_objectSpread({}, instantSearchInstance.renderState[parentIndexName]), renderState)));\n}","export function isIndexWidget(widget) {\n  return widget.$$type === 'ais.index';\n}","export function resolveSearchParameters(current) {\n  var parent = current.getParent();\n  var states = [current.getHelper().state];\n\n  while (parent !== null) {\n    states = [parent.getHelper().state].concat(states);\n    parent = parent.getParent();\n  }\n\n  return states;\n}","export default '4.46.3';","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { highlight as _highlight, reverseHighlight as _reverseHighlight, snippet as _snippet, reverseSnippet as _reverseSnippet, insights as _insights } from \"../helpers/index.js\";\nimport { formatNumber as _formatNumber } from \"./formatNumber.js\";\nexport default function hoganHelpers(_ref) {\n  var numberLocale = _ref.numberLocale;\n  return {\n    formatNumber: function formatNumber(value, render) {\n      return _formatNumber(Number(render(value)), numberLocale);\n    },\n    highlight: function highlight(options, render) {\n      try {\n        var highlightOptions = JSON.parse(options);\n        return render(_highlight(_objectSpread(_objectSpread({}, highlightOptions), {}, {\n          hit: this\n        })));\n      } catch (error) {\n        throw new Error(\"\\nThe highlight helper expects a JSON object of the format:\\n{ \\\"attribute\\\": \\\"name\\\", \\\"highlightedTagName\\\": \\\"mark\\\" }\");\n      }\n    },\n    reverseHighlight: function reverseHighlight(options, render) {\n      try {\n        var reverseHighlightOptions = JSON.parse(options);\n        return render(_reverseHighlight(_objectSpread(_objectSpread({}, reverseHighlightOptions), {}, {\n          hit: this\n        })));\n      } catch (error) {\n        throw new Error(\"\\n  The reverseHighlight helper expects a JSON object of the format:\\n  { \\\"attribute\\\": \\\"name\\\", \\\"highlightedTagName\\\": \\\"mark\\\" }\");\n      }\n    },\n    snippet: function snippet(options, render) {\n      try {\n        var snippetOptions = JSON.parse(options);\n        return render(_snippet(_objectSpread(_objectSpread({}, snippetOptions), {}, {\n          hit: this\n        })));\n      } catch (error) {\n        throw new Error(\"\\nThe snippet helper expects a JSON object of the format:\\n{ \\\"attribute\\\": \\\"name\\\", \\\"highlightedTagName\\\": \\\"mark\\\" }\");\n      }\n    },\n    reverseSnippet: function reverseSnippet(options, render) {\n      try {\n        var reverseSnippetOptions = JSON.parse(options);\n        return render(_reverseSnippet(_objectSpread(_objectSpread({}, reverseSnippetOptions), {}, {\n          hit: this\n        })));\n      } catch (error) {\n        throw new Error(\"\\n  The reverseSnippet helper expects a JSON object of the format:\\n  { \\\"attribute\\\": \\\"name\\\", \\\"highlightedTagName\\\": \\\"mark\\\" }\");\n      }\n    },\n    insights: function insights(options, render) {\n      try {\n        var _JSON$parse = JSON.parse(options),\n            method = _JSON$parse.method,\n            payload = _JSON$parse.payload;\n\n        return render(_insights(method, _objectSpread({\n          objectIDs: [this.objectID]\n        }, payload)));\n      } catch (error) {\n        throw new Error(\"\\nThe insights helper expects a JSON object of the format:\\n{ \\\"method\\\": \\\"method-name\\\", \\\"payload\\\": { \\\"eventName\\\": \\\"name of the event\\\" } }\");\n      }\n    }\n  };\n}","import { component } from \"../lib/suit.js\";\nimport { getPropertyByPath, TAG_REPLACEMENT, warning } from \"../lib/utils/index.js\";\nvar suit = component('Highlight');\nexport default function highlight(_ref) {\n  var attribute = _ref.attribute,\n      _ref$highlightedTagNa = _ref.highlightedTagName,\n      highlightedTagName = _ref$highlightedTagNa === void 0 ? 'mark' : _ref$highlightedTagNa,\n      hit = _ref.hit,\n      _ref$cssClasses = _ref.cssClasses,\n      cssClasses = _ref$cssClasses === void 0 ? {} : _ref$cssClasses;\n  var highlightAttributeResult = getPropertyByPath(hit._highlightResult, attribute); // @MAJOR fallback to attribute value if highlight is not found\n\n  process.env.NODE_ENV === 'development' ? warning(highlightAttributeResult, \"Could not enable highlight for \\\"\".concat(attribute, \"\\\", will display an empty string.\\nPlease check whether this attribute exists and is either searchable or specified in `attributesToHighlight`.\\n\\nSee: https://alg.li/highlighting\\n\")) : void 0;\n\n  var _ref2 = highlightAttributeResult || {},\n      _ref2$value = _ref2.value,\n      attributeValue = _ref2$value === void 0 ? '' : _ref2$value; // cx is not used, since it would be bundled as a dependency for Vue & Angular\n\n\n  var className = suit({\n    descendantName: 'highlighted'\n  }) + (cssClasses.highlighted ? \" \".concat(cssClasses.highlighted) : '');\n  return attributeValue.replace(new RegExp(TAG_REPLACEMENT.highlightPreTag, 'g'), \"<\".concat(highlightedTagName, \" class=\\\"\").concat(className, \"\\\">\")).replace(new RegExp(TAG_REPLACEMENT.highlightPostTag, 'g'), \"</\".concat(highlightedTagName, \">\"));\n}","import { TAG_REPLACEMENT, getPropertyByPath, getHighlightedParts, reverseHighlightedParts, concatHighlightedParts, warning } from \"../lib/utils/index.js\";\nimport { component } from \"../lib/suit.js\";\nvar suit = component('ReverseHighlight');\nexport default function reverseHighlight(_ref) {\n  var attribute = _ref.attribute,\n      _ref$highlightedTagNa = _ref.highlightedTagName,\n      highlightedTagName = _ref$highlightedTagNa === void 0 ? 'mark' : _ref$highlightedTagNa,\n      hit = _ref.hit,\n      _ref$cssClasses = _ref.cssClasses,\n      cssClasses = _ref$cssClasses === void 0 ? {} : _ref$cssClasses;\n  var highlightAttributeResult = getPropertyByPath(hit._highlightResult, attribute); // @MAJOR fallback to attribute value if highlight is not found\n\n  process.env.NODE_ENV === 'development' ? warning(highlightAttributeResult, \"Could not enable reverse highlight for \\\"\".concat(attribute, \"\\\", will display an empty string.\\nPlease check whether this attribute exists and is either searchable or specified in `attributesToHighlight`.\\n\\nSee: https://alg.li/highlighting\\n\")) : void 0;\n\n  var _ref2 = highlightAttributeResult || {},\n      _ref2$value = _ref2.value,\n      attributeValue = _ref2$value === void 0 ? '' : _ref2$value; // cx is not used, since it would be bundled as a dependency for Vue & Angular\n\n\n  var className = suit({\n    descendantName: 'highlighted'\n  }) + (cssClasses.highlighted ? \" \".concat(cssClasses.highlighted) : '');\n  var reverseHighlightedValue = concatHighlightedParts(reverseHighlightedParts(getHighlightedParts(attributeValue)));\n  return reverseHighlightedValue.replace(new RegExp(TAG_REPLACEMENT.highlightPreTag, 'g'), \"<\".concat(highlightedTagName, \" class=\\\"\").concat(className, \"\\\">\")).replace(new RegExp(TAG_REPLACEMENT.highlightPostTag, 'g'), \"</\".concat(highlightedTagName, \">\"));\n}","import { TAG_REPLACEMENT } from \"./escape-highlight.js\";\nexport function concatHighlightedParts(parts) {\n  var highlightPreTag = TAG_REPLACEMENT.highlightPreTag,\n      highlightPostTag = TAG_REPLACEMENT.highlightPostTag;\n  return parts.map(function (part) {\n    return part.isHighlighted ? highlightPreTag + part.value + highlightPostTag : part.value;\n  }).join('');\n}","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport { getHighlightFromSiblings } from \"./getHighlightFromSiblings.js\";\nexport function reverseHighlightedParts(parts) {\n  if (!parts.some(function (part) {\n    return part.isHighlighted;\n  })) {\n    return parts.map(function (part) {\n      return _objectSpread(_objectSpread({}, part), {}, {\n        isHighlighted: false\n      });\n    });\n  }\n\n  return parts.map(function (part, i) {\n    return _objectSpread(_objectSpread({}, part), {}, {\n      isHighlighted: !getHighlightFromSiblings(parts, i)\n    });\n  });\n}","import { unescape } from \"./escape-html.js\";\nvar hasAlphanumeric = new RegExp(/\\w/i);\nexport function getHighlightFromSiblings(parts, i) {\n  var _parts, _parts2;\n\n  var current = parts[i];\n  var isNextHighlighted = ((_parts = parts[i + 1]) === null || _parts === void 0 ? void 0 : _parts.isHighlighted) || true;\n  var isPreviousHighlighted = ((_parts2 = parts[i - 1]) === null || _parts2 === void 0 ? void 0 : _parts2.isHighlighted) || true;\n\n  if (!hasAlphanumeric.test(unescape(current.value)) && isPreviousHighlighted === isNextHighlighted) {\n    return isPreviousHighlighted;\n  }\n\n  return current.isHighlighted;\n}","import { TAG_REPLACEMENT, getPropertyByPath, getHighlightedParts, reverseHighlightedParts, concatHighlightedParts, warning } from \"../lib/utils/index.js\";\nimport { component } from \"../lib/suit.js\";\nvar suit = component('ReverseSnippet');\nexport default function reverseSnippet(_ref) {\n  var attribute = _ref.attribute,\n      _ref$highlightedTagNa = _ref.highlightedTagName,\n      highlightedTagName = _ref$highlightedTagNa === void 0 ? 'mark' : _ref$highlightedTagNa,\n      hit = _ref.hit,\n      _ref$cssClasses = _ref.cssClasses,\n      cssClasses = _ref$cssClasses === void 0 ? {} : _ref$cssClasses;\n  var snippetAttributeResult = getPropertyByPath(hit._snippetResult, attribute); // @MAJOR fallback to attribute value if snippet is not found\n\n  process.env.NODE_ENV === 'development' ? warning(snippetAttributeResult, \"Could not enable reverse snippet for \\\"\".concat(attribute, \"\\\", will display an empty string.\\nPlease check whether this attribute exists and is specified in `attributesToSnippet`.\\n\\nSee: https://alg.li/highlighting\\n\")) : void 0;\n\n  var _ref2 = snippetAttributeResult || {},\n      _ref2$value = _ref2.value,\n      attributeValue = _ref2$value === void 0 ? '' : _ref2$value; // cx is not used, since it would be bundled as a dependency for Vue & Angular\n\n\n  var className = suit({\n    descendantName: 'highlighted'\n  }) + (cssClasses.highlighted ? \" \".concat(cssClasses.highlighted) : '');\n  var reverseHighlightedValue = concatHighlightedParts(reverseHighlightedParts(getHighlightedParts(attributeValue)));\n  return reverseHighlightedValue.replace(new RegExp(TAG_REPLACEMENT.highlightPreTag, 'g'), \"<\".concat(highlightedTagName, \" class=\\\"\").concat(className, \"\\\">\")).replace(new RegExp(TAG_REPLACEMENT.highlightPostTag, 'g'), \"</\".concat(highlightedTagName, \">\"));\n}","import { component } from \"../lib/suit.js\";\nimport { TAG_REPLACEMENT, getPropertyByPath, warning } from \"../lib/utils/index.js\";\nvar suit = component('Snippet');\nexport default function snippet(_ref) {\n  var attribute = _ref.attribute,\n      _ref$highlightedTagNa = _ref.highlightedTagName,\n      highlightedTagName = _ref$highlightedTagNa === void 0 ? 'mark' : _ref$highlightedTagNa,\n      hit = _ref.hit,\n      _ref$cssClasses = _ref.cssClasses,\n      cssClasses = _ref$cssClasses === void 0 ? {} : _ref$cssClasses;\n  var snippetAttributeResult = getPropertyByPath(hit._snippetResult, attribute); // @MAJOR fallback to attribute value if snippet is not found\n\n  process.env.NODE_ENV === 'development' ? warning(snippetAttributeResult, \"Could not enable snippet for \\\"\".concat(attribute, \"\\\", will display an empty string.\\nPlease check whether this attribute exists and is specified in `attributesToSnippet`.\\n\\nSee: https://alg.li/highlighting\\n\")) : void 0;\n\n  var _ref2 = snippetAttributeResult || {},\n      _ref2$value = _ref2.value,\n      attributeValue = _ref2$value === void 0 ? '' : _ref2$value; // cx is not used, since it would be bundled as a dependency for Vue & Angular\n\n\n  var className = suit({\n    descendantName: 'highlighted'\n  }) + (cssClasses.highlighted ? \" \".concat(cssClasses.highlighted) : '');\n  return attributeValue.replace(new RegExp(TAG_REPLACEMENT.highlightPreTag, 'g'), \"<\".concat(highlightedTagName, \" class=\\\"\").concat(className, \"\\\">\")).replace(new RegExp(TAG_REPLACEMENT.highlightPostTag, 'g'), \"</\".concat(highlightedTagName, \">\"));\n}","var nextMicroTask = Promise.resolve();\nexport function defer(callback) {\n  var progress = null;\n  var cancelled = false;\n\n  var fn = function fn() {\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    if (progress !== null) {\n      return;\n    }\n\n    progress = nextMicroTask.then(function () {\n      progress = null;\n\n      if (cancelled) {\n        cancelled = false;\n        return;\n      }\n\n      callback.apply(void 0, args);\n    });\n  };\n\n  fn.wait = function () {\n    if (progress === null) {\n      throw new Error('The deferred function should be called before calling `wait()`');\n    }\n\n    return progress;\n  };\n\n  fn.cancel = function () {\n    if (progress === null) {\n      return;\n    }\n\n    cancelled = true;\n  };\n\n  return fn;\n}","import { isIndexWidget } from \"./isIndexWidget.js\";\nimport { checkIndexUiState } from \"./checkIndexUiState.js\";\nexport function setIndexHelperState(finalUiState, indexWidget) {\n  var nextIndexUiState = finalUiState[indexWidget.getIndexId()] || {};\n\n  if (process.env.NODE_ENV === 'development') {\n    checkIndexUiState({\n      index: indexWidget,\n      indexUiState: nextIndexUiState\n    });\n  }\n\n  indexWidget.getHelper().setState(indexWidget.getWidgetSearchParameters(indexWidget.getHelper().state, {\n    uiState: nextIndexUiState\n  }));\n  indexWidget.getWidgets().filter(isIndexWidget).forEach(function (widget) {\n    return setIndexHelperState(finalUiState, widget);\n  });\n}","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport simpleStateMapping from \"../lib/stateMappings/simple.js\";\nimport historyRouter from \"../lib/routers/history.js\";\nimport { isEqual } from \"../lib/utils/index.js\";\nexport var createRouterMiddleware = function createRouterMiddleware() {\n  var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  var _props$router = props.router,\n      router = _props$router === void 0 ? historyRouter() : _props$router,\n      _props$stateMapping = props.stateMapping,\n      stateMapping = _props$stateMapping === void 0 ? simpleStateMapping() : _props$stateMapping;\n  return function (_ref) {\n    var instantSearchInstance = _ref.instantSearchInstance;\n\n    function topLevelCreateURL(nextState) {\n      var uiState = Object.keys(nextState).reduce(function (acc, indexId) {\n        return _objectSpread(_objectSpread({}, acc), {}, _defineProperty({}, indexId, nextState[indexId]));\n      }, instantSearchInstance.mainIndex.getWidgetUiState({}));\n      var route = stateMapping.stateToRoute(uiState);\n      return router.createURL(route);\n    } // casting to UiState here to keep createURL unaware of custom UiState\n    // (as long as it's an object, it's ok)\n\n\n    instantSearchInstance._createURL = topLevelCreateURL;\n    var lastRouteState = undefined;\n    var initialUiState = instantSearchInstance._initialUiState;\n    return {\n      onStateChange: function onStateChange(_ref2) {\n        var uiState = _ref2.uiState;\n        var routeState = stateMapping.stateToRoute(uiState);\n\n        if (lastRouteState === undefined || !isEqual(lastRouteState, routeState)) {\n          router.write(routeState);\n          lastRouteState = routeState;\n        }\n      },\n      subscribe: function subscribe() {\n        instantSearchInstance._initialUiState = _objectSpread(_objectSpread({}, initialUiState), stateMapping.routeToState(router.read()));\n        router.onUpdate(function (route) {\n          instantSearchInstance.setUiState(stateMapping.routeToState(route));\n        });\n      },\n      started: function started() {},\n      unsubscribe: function unsubscribe() {\n        router.dispose();\n      }\n    };\n  };\n};","function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nfunction getIndexStateWithoutConfigure(uiState) {\n  var configure = uiState.configure,\n      trackedUiState = _objectWithoutProperties(uiState, [\"configure\"]);\n\n  return trackedUiState;\n} // technically a URL could contain any key, since users provide it,\n// which is why the input to this function is UiState, not something\n// which excludes \"configure\" as this function does.\n\n\nexport default function simpleStateMapping() {\n  return {\n    stateToRoute: function stateToRoute(uiState) {\n      return Object.keys(uiState).reduce(function (state, indexId) {\n        return _objectSpread(_objectSpread({}, state), {}, _defineProperty({}, indexId, getIndexStateWithoutConfigure(uiState[indexId])));\n      }, {});\n    },\n    routeToState: function routeToState() {\n      var routeState = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n      return Object.keys(routeState).reduce(function (state, indexId) {\n        return _objectSpread(_objectSpread({}, state), {}, _defineProperty({}, indexId, getIndexStateWithoutConfigure(routeState[indexId])));\n      }, {});\n    }\n  };\n}","function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nimport qs from 'qs';\nimport { safelyRunOnBrowser } from \"../utils/index.js\";\n\nvar setWindowTitle = function setWindowTitle(title) {\n  if (title) {\n    // This function is only executed on browsers so we can disable this check.\n    // eslint-disable-next-line no-restricted-globals\n    window.document.title = title;\n  }\n};\n\nvar BrowserHistory = /*#__PURE__*/function () {\n  /**\n   * Initializes a new storage provider that syncs the search state to the URL\n   * using web APIs (`window.location.pushState` and `onpopstate` event).\n   */\n  function BrowserHistory(_ref) {\n    var _this = this;\n\n    var windowTitle = _ref.windowTitle,\n        _ref$writeDelay = _ref.writeDelay,\n        writeDelay = _ref$writeDelay === void 0 ? 400 : _ref$writeDelay,\n        createURL = _ref.createURL,\n        parseURL = _ref.parseURL,\n        getLocation = _ref.getLocation;\n\n    _classCallCheck(this, BrowserHistory);\n\n    _defineProperty(this, \"windowTitle\", void 0);\n\n    _defineProperty(this, \"writeDelay\", void 0);\n\n    _defineProperty(this, \"_createURL\", void 0);\n\n    _defineProperty(this, \"parseURL\", void 0);\n\n    _defineProperty(this, \"getLocation\", void 0);\n\n    _defineProperty(this, \"writeTimer\", void 0);\n\n    _defineProperty(this, \"inPopState\", false);\n\n    _defineProperty(this, \"isDisposed\", false);\n\n    _defineProperty(this, \"latestAcknowledgedHistory\", 0);\n\n    this.windowTitle = windowTitle;\n    this.writeTimer = undefined;\n    this.writeDelay = writeDelay;\n    this._createURL = createURL;\n    this.parseURL = parseURL;\n    this.getLocation = getLocation;\n    safelyRunOnBrowser(function (_ref2) {\n      var window = _ref2.window;\n\n      var title = _this.windowTitle && _this.windowTitle(_this.read());\n\n      setWindowTitle(title);\n      _this.latestAcknowledgedHistory = window.history.length;\n    });\n  }\n  /**\n   * Reads the URL and returns a syncable UI search state.\n   */\n\n\n  _createClass(BrowserHistory, [{\n    key: \"read\",\n    value: function read() {\n      return this.parseURL({\n        qsModule: qs,\n        location: this.getLocation()\n      });\n    }\n    /**\n     * Pushes a search state into the URL.\n     */\n\n  }, {\n    key: \"write\",\n    value: function write(routeState) {\n      var _this2 = this;\n\n      safelyRunOnBrowser(function (_ref3) {\n        var window = _ref3.window;\n\n        var url = _this2.createURL(routeState);\n\n        var title = _this2.windowTitle && _this2.windowTitle(routeState);\n\n        if (_this2.writeTimer) {\n          clearTimeout(_this2.writeTimer);\n        }\n\n        _this2.writeTimer = setTimeout(function () {\n          setWindowTitle(title);\n\n          if (_this2.shouldWrite(url)) {\n            window.history.pushState(routeState, title || '', url);\n            _this2.latestAcknowledgedHistory = window.history.length;\n          }\n\n          _this2.inPopState = false;\n          _this2.writeTimer = undefined;\n        }, _this2.writeDelay);\n      });\n    }\n    /**\n     * Sets a callback on the `onpopstate` event of the history API of the current page.\n     * It enables the URL sync to keep track of the changes.\n     */\n\n  }, {\n    key: \"onUpdate\",\n    value: function onUpdate(callback) {\n      var _this3 = this;\n\n      this._onPopState = function (event) {\n        if (_this3.writeTimer) {\n          clearTimeout(_this3.writeTimer);\n          _this3.writeTimer = undefined;\n        }\n\n        _this3.inPopState = true;\n        var routeState = event.state; // At initial load, the state is read from the URL without update.\n        // Therefore the state object is not available.\n        // In this case, we fallback and read the URL.\n\n        if (!routeState) {\n          callback(_this3.read());\n        } else {\n          callback(routeState);\n        }\n      };\n\n      safelyRunOnBrowser(function (_ref4) {\n        var window = _ref4.window;\n        window.addEventListener('popstate', _this3._onPopState);\n      });\n    }\n    /**\n     * Creates a complete URL from a given syncable UI state.\n     *\n     * It always generates the full URL, not a relative one.\n     * This allows to handle cases like using a <base href>.\n     * See: https://github.com/algolia/instantsearch.js/issues/790\n     */\n\n  }, {\n    key: \"createURL\",\n    value: function createURL(routeState) {\n      return this._createURL({\n        qsModule: qs,\n        routeState: routeState,\n        location: this.getLocation()\n      });\n    }\n    /**\n     * Removes the event listener and cleans up the URL.\n     */\n\n  }, {\n    key: \"dispose\",\n    value: function dispose() {\n      var _this4 = this;\n\n      this.isDisposed = true;\n      safelyRunOnBrowser(function (_ref5) {\n        var window = _ref5.window;\n\n        if (_this4._onPopState) {\n          window.removeEventListener('popstate', _this4._onPopState);\n        }\n      });\n\n      if (this.writeTimer) {\n        clearTimeout(this.writeTimer);\n      }\n\n      this.write({});\n    }\n  }, {\n    key: \"shouldWrite\",\n    value: function shouldWrite(url) {\n      var _this5 = this;\n\n      return safelyRunOnBrowser(function (_ref6) {\n        var window = _ref6.window;\n        // We do want to `pushState` if:\n        // - the router is not disposed, IS.js needs to update the URL\n        // OR\n        // - the last write was from InstantSearch.js\n        // (unlike a SPA, where it would have last written)\n        var lastPushWasByISAfterDispose = !(_this5.isDisposed && _this5.latestAcknowledgedHistory !== window.history.length);\n        return (// When the last state change was through popstate, the IS.js state changes,\n          // but that should not write the URL.\n          !_this5.inPopState && // When the previous pushState after dispose was by IS.js, we want to write the URL.\n          lastPushWasByISAfterDispose && // When the URL is the same as the current one, we do not want to write it.\n          url !== window.location.href\n        );\n      });\n    }\n  }]);\n\n  return BrowserHistory;\n}();\n\nexport default function historyRouter() {\n  var _ref7 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n      _ref7$createURL = _ref7.createURL,\n      createURL = _ref7$createURL === void 0 ? function (_ref8) {\n    var qsModule = _ref8.qsModule,\n        routeState = _ref8.routeState,\n        location = _ref8.location;\n    var protocol = location.protocol,\n        hostname = location.hostname,\n        _location$port = location.port,\n        port = _location$port === void 0 ? '' : _location$port,\n        pathname = location.pathname,\n        hash = location.hash;\n    var queryString = qsModule.stringify(routeState);\n    var portWithPrefix = port === '' ? '' : \":\".concat(port); // IE <= 11 has no proper `location.origin` so we cannot rely on it.\n\n    // IE <= 11 has no proper `location.origin` so we cannot rely on it.\n    if (!queryString) {\n      return \"\".concat(protocol, \"//\").concat(hostname).concat(portWithPrefix).concat(pathname).concat(hash);\n    }\n\n    return \"\".concat(protocol, \"//\").concat(hostname).concat(portWithPrefix).concat(pathname, \"?\").concat(queryString).concat(hash);\n  } : _ref7$createURL,\n      _ref7$parseURL = _ref7.parseURL,\n      parseURL = _ref7$parseURL === void 0 ? function (_ref9) {\n    var qsModule = _ref9.qsModule,\n        location = _ref9.location;\n    // `qs` by default converts arrays with more than 20 items to an object.\n    // We want to avoid this because the data structure manipulated can therefore vary.\n    // Setting the limit to `100` seems a good number because the engine's default is 100\n    // (it can go up to 1000 but it is very unlikely to select more than 100 items in the UI).\n    //\n    // Using an `arrayLimit` of `n` allows `n + 1` items.\n    //\n    // See:\n    //   - https://github.com/ljharb/qs#parsing-arrays\n    //   - https://www.algolia.com/doc/api-reference/api-parameters/maxValuesPerFacet/\n    return qsModule.parse(location.search.slice(1), {\n      arrayLimit: 99\n    });\n  } : _ref7$parseURL,\n      _ref7$writeDelay = _ref7.writeDelay,\n      writeDelay = _ref7$writeDelay === void 0 ? 400 : _ref7$writeDelay,\n      windowTitle = _ref7.windowTitle,\n      _ref7$getLocation = _ref7.getLocation,\n      getLocation = _ref7$getLocation === void 0 ? function () {\n    return safelyRunOnBrowser(function (_ref10) {\n      var window = _ref10.window;\n      return window.location;\n    }, {\n      fallback: function fallback() {\n        throw new Error('You need to provide `getLocation` to the `history` router in environments where `window` does not exist.');\n      }\n    });\n  } : _ref7$getLocation;\n\n  return new BrowserHistory({\n    createURL: createURL,\n    parseURL: parseURL,\n    writeDelay: writeDelay,\n    windowTitle: windowTitle,\n    getLocation: getLocation\n  });\n}","'use strict';\n\nvar stringify = require('./stringify');\nvar parse = require('./parse');\nvar formats = require('./formats');\n\nmodule.exports = {\n    formats: formats,\n    parse: parse,\n    stringify: stringify\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar formats = require('./formats');\nvar has = Object.prototype.hasOwnProperty;\n\nvar arrayPrefixGenerators = {\n    brackets: function brackets(prefix) {\n        return prefix + '[]';\n    },\n    comma: 'comma',\n    indices: function indices(prefix, key) {\n        return prefix + '[' + key + ']';\n    },\n    repeat: function repeat(prefix) {\n        return prefix;\n    }\n};\n\nvar isArray = Array.isArray;\nvar split = String.prototype.split;\nvar push = Array.prototype.push;\nvar pushToArray = function (arr, valueOrArray) {\n    push.apply(arr, isArray(valueOrArray) ? valueOrArray : [valueOrArray]);\n};\n\nvar toISO = Date.prototype.toISOString;\n\nvar defaultFormat = formats['default'];\nvar defaults = {\n    addQueryPrefix: false,\n    allowDots: false,\n    charset: 'utf-8',\n    charsetSentinel: false,\n    delimiter: '&',\n    encode: true,\n    encoder: utils.encode,\n    encodeValuesOnly: false,\n    format: defaultFormat,\n    formatter: formats.formatters[defaultFormat],\n    // deprecated\n    indices: false,\n    serializeDate: function serializeDate(date) {\n        return toISO.call(date);\n    },\n    skipNulls: false,\n    strictNullHandling: false\n};\n\nvar isNonNullishPrimitive = function isNonNullishPrimitive(v) {\n    return typeof v === 'string'\n        || typeof v === 'number'\n        || typeof v === 'boolean'\n        || typeof v === 'symbol'\n        || typeof v === 'bigint';\n};\n\nvar stringify = function stringify(\n    object,\n    prefix,\n    generateArrayPrefix,\n    strictNullHandling,\n    skipNulls,\n    encoder,\n    filter,\n    sort,\n    allowDots,\n    serializeDate,\n    format,\n    formatter,\n    encodeValuesOnly,\n    charset\n) {\n    var obj = object;\n    if (typeof filter === 'function') {\n        obj = filter(prefix, obj);\n    } else if (obj instanceof Date) {\n        obj = serializeDate(obj);\n    } else if (generateArrayPrefix === 'comma' && isArray(obj)) {\n        obj = utils.maybeMap(obj, function (value) {\n            if (value instanceof Date) {\n                return serializeDate(value);\n            }\n            return value;\n        });\n    }\n\n    if (obj === null) {\n        if (strictNullHandling) {\n            return encoder && !encodeValuesOnly ? encoder(prefix, defaults.encoder, charset, 'key', format) : prefix;\n        }\n\n        obj = '';\n    }\n\n    if (isNonNullishPrimitive(obj) || utils.isBuffer(obj)) {\n        if (encoder) {\n            var keyValue = encodeValuesOnly ? prefix : encoder(prefix, defaults.encoder, charset, 'key', format);\n            if (generateArrayPrefix === 'comma' && encodeValuesOnly) {\n                var valuesArray = split.call(String(obj), ',');\n                var valuesJoined = '';\n                for (var i = 0; i < valuesArray.length; ++i) {\n                    valuesJoined += (i === 0 ? '' : ',') + formatter(encoder(valuesArray[i], defaults.encoder, charset, 'value', format));\n                }\n                return [formatter(keyValue) + '=' + valuesJoined];\n            }\n            return [formatter(keyValue) + '=' + formatter(encoder(obj, defaults.encoder, charset, 'value', format))];\n        }\n        return [formatter(prefix) + '=' + formatter(String(obj))];\n    }\n\n    var values = [];\n\n    if (typeof obj === 'undefined') {\n        return values;\n    }\n\n    var objKeys;\n    if (generateArrayPrefix === 'comma' && isArray(obj)) {\n        // we need to join elements in\n        objKeys = [{ value: obj.length > 0 ? obj.join(',') || null : void undefined }];\n    } else if (isArray(filter)) {\n        objKeys = filter;\n    } else {\n        var keys = Object.keys(obj);\n        objKeys = sort ? keys.sort(sort) : keys;\n    }\n\n    for (var j = 0; j < objKeys.length; ++j) {\n        var key = objKeys[j];\n        var value = typeof key === 'object' && typeof key.value !== 'undefined' ? key.value : obj[key];\n\n        if (skipNulls && value === null) {\n            continue;\n        }\n\n        var keyPrefix = isArray(obj)\n            ? typeof generateArrayPrefix === 'function' ? generateArrayPrefix(prefix, key) : prefix\n            : prefix + (allowDots ? '.' + key : '[' + key + ']');\n\n        pushToArray(values, stringify(\n            value,\n            keyPrefix,\n            generateArrayPrefix,\n            strictNullHandling,\n            skipNulls,\n            encoder,\n            filter,\n            sort,\n            allowDots,\n            serializeDate,\n            format,\n            formatter,\n            encodeValuesOnly,\n            charset\n        ));\n    }\n\n    return values;\n};\n\nvar normalizeStringifyOptions = function normalizeStringifyOptions(opts) {\n    if (!opts) {\n        return defaults;\n    }\n\n    if (opts.encoder !== null && typeof opts.encoder !== 'undefined' && typeof opts.encoder !== 'function') {\n        throw new TypeError('Encoder has to be a function.');\n    }\n\n    var charset = opts.charset || defaults.charset;\n    if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n        throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n    }\n\n    var format = formats['default'];\n    if (typeof opts.format !== 'undefined') {\n        if (!has.call(formats.formatters, opts.format)) {\n            throw new TypeError('Unknown format option provided.');\n        }\n        format = opts.format;\n    }\n    var formatter = formats.formatters[format];\n\n    var filter = defaults.filter;\n    if (typeof opts.filter === 'function' || isArray(opts.filter)) {\n        filter = opts.filter;\n    }\n\n    return {\n        addQueryPrefix: typeof opts.addQueryPrefix === 'boolean' ? opts.addQueryPrefix : defaults.addQueryPrefix,\n        allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n        charset: charset,\n        charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n        delimiter: typeof opts.delimiter === 'undefined' ? defaults.delimiter : opts.delimiter,\n        encode: typeof opts.encode === 'boolean' ? opts.encode : defaults.encode,\n        encoder: typeof opts.encoder === 'function' ? opts.encoder : defaults.encoder,\n        encodeValuesOnly: typeof opts.encodeValuesOnly === 'boolean' ? opts.encodeValuesOnly : defaults.encodeValuesOnly,\n        filter: filter,\n        format: format,\n        formatter: formatter,\n        serializeDate: typeof opts.serializeDate === 'function' ? opts.serializeDate : defaults.serializeDate,\n        skipNulls: typeof opts.skipNulls === 'boolean' ? opts.skipNulls : defaults.skipNulls,\n        sort: typeof opts.sort === 'function' ? opts.sort : null,\n        strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n    };\n};\n\nmodule.exports = function (object, opts) {\n    var obj = object;\n    var options = normalizeStringifyOptions(opts);\n\n    var objKeys;\n    var filter;\n\n    if (typeof options.filter === 'function') {\n        filter = options.filter;\n        obj = filter('', obj);\n    } else if (isArray(options.filter)) {\n        filter = options.filter;\n        objKeys = filter;\n    }\n\n    var keys = [];\n\n    if (typeof obj !== 'object' || obj === null) {\n        return '';\n    }\n\n    var arrayFormat;\n    if (opts && opts.arrayFormat in arrayPrefixGenerators) {\n        arrayFormat = opts.arrayFormat;\n    } else if (opts && 'indices' in opts) {\n        arrayFormat = opts.indices ? 'indices' : 'repeat';\n    } else {\n        arrayFormat = 'indices';\n    }\n\n    var generateArrayPrefix = arrayPrefixGenerators[arrayFormat];\n\n    if (!objKeys) {\n        objKeys = Object.keys(obj);\n    }\n\n    if (options.sort) {\n        objKeys.sort(options.sort);\n    }\n\n    for (var i = 0; i < objKeys.length; ++i) {\n        var key = objKeys[i];\n\n        if (options.skipNulls && obj[key] === null) {\n            continue;\n        }\n        pushToArray(keys, stringify(\n            obj[key],\n            key,\n            generateArrayPrefix,\n            options.strictNullHandling,\n            options.skipNulls,\n            options.encode ? options.encoder : null,\n            options.filter,\n            options.sort,\n            options.allowDots,\n            options.serializeDate,\n            options.format,\n            options.formatter,\n            options.encodeValuesOnly,\n            options.charset\n        ));\n    }\n\n    var joined = keys.join(options.delimiter);\n    var prefix = options.addQueryPrefix === true ? '?' : '';\n\n    if (options.charsetSentinel) {\n        if (options.charset === 'iso-8859-1') {\n            // encodeURIComponent('&#10003;'), the \"numeric entity\" representation of a checkmark\n            prefix += 'utf8=%26%2310003%3B&';\n        } else {\n            // encodeURIComponent('✓')\n            prefix += 'utf8=%E2%9C%93&';\n        }\n    }\n\n    return joined.length > 0 ? prefix + joined : '';\n};\n","'use strict';\n\nvar formats = require('./formats');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar hexTable = (function () {\n    var array = [];\n    for (var i = 0; i < 256; ++i) {\n        array.push('%' + ((i < 16 ? '0' : '') + i.toString(16)).toUpperCase());\n    }\n\n    return array;\n}());\n\nvar compactQueue = function compactQueue(queue) {\n    while (queue.length > 1) {\n        var item = queue.pop();\n        var obj = item.obj[item.prop];\n\n        if (isArray(obj)) {\n            var compacted = [];\n\n            for (var j = 0; j < obj.length; ++j) {\n                if (typeof obj[j] !== 'undefined') {\n                    compacted.push(obj[j]);\n                }\n            }\n\n            item.obj[item.prop] = compacted;\n        }\n    }\n};\n\nvar arrayToObject = function arrayToObject(source, options) {\n    var obj = options && options.plainObjects ? Object.create(null) : {};\n    for (var i = 0; i < source.length; ++i) {\n        if (typeof source[i] !== 'undefined') {\n            obj[i] = source[i];\n        }\n    }\n\n    return obj;\n};\n\nvar merge = function merge(target, source, options) {\n    /* eslint no-param-reassign: 0 */\n    if (!source) {\n        return target;\n    }\n\n    if (typeof source !== 'object') {\n        if (isArray(target)) {\n            target.push(source);\n        } else if (target && typeof target === 'object') {\n            if ((options && (options.plainObjects || options.allowPrototypes)) || !has.call(Object.prototype, source)) {\n                target[source] = true;\n            }\n        } else {\n            return [target, source];\n        }\n\n        return target;\n    }\n\n    if (!target || typeof target !== 'object') {\n        return [target].concat(source);\n    }\n\n    var mergeTarget = target;\n    if (isArray(target) && !isArray(source)) {\n        mergeTarget = arrayToObject(target, options);\n    }\n\n    if (isArray(target) && isArray(source)) {\n        source.forEach(function (item, i) {\n            if (has.call(target, i)) {\n                var targetItem = target[i];\n                if (targetItem && typeof targetItem === 'object' && item && typeof item === 'object') {\n                    target[i] = merge(targetItem, item, options);\n                } else {\n                    target.push(item);\n                }\n            } else {\n                target[i] = item;\n            }\n        });\n        return target;\n    }\n\n    return Object.keys(source).reduce(function (acc, key) {\n        var value = source[key];\n\n        if (has.call(acc, key)) {\n            acc[key] = merge(acc[key], value, options);\n        } else {\n            acc[key] = value;\n        }\n        return acc;\n    }, mergeTarget);\n};\n\nvar assign = function assignSingleSource(target, source) {\n    return Object.keys(source).reduce(function (acc, key) {\n        acc[key] = source[key];\n        return acc;\n    }, target);\n};\n\nvar decode = function (str, decoder, charset) {\n    var strWithoutPlus = str.replace(/\\+/g, ' ');\n    if (charset === 'iso-8859-1') {\n        // unescape never throws, no try...catch needed:\n        return strWithoutPlus.replace(/%[0-9a-f]{2}/gi, unescape);\n    }\n    // utf-8\n    try {\n        return decodeURIComponent(strWithoutPlus);\n    } catch (e) {\n        return strWithoutPlus;\n    }\n};\n\nvar encode = function encode(str, defaultEncoder, charset, kind, format) {\n    // This code was originally written by Brian White (mscdex) for the io.js core querystring library.\n    // It has been adapted here for stricter adherence to RFC 3986\n    if (str.length === 0) {\n        return str;\n    }\n\n    var string = str;\n    if (typeof str === 'symbol') {\n        string = Symbol.prototype.toString.call(str);\n    } else if (typeof str !== 'string') {\n        string = String(str);\n    }\n\n    if (charset === 'iso-8859-1') {\n        return escape(string).replace(/%u[0-9a-f]{4}/gi, function ($0) {\n            return '%26%23' + parseInt($0.slice(2), 16) + '%3B';\n        });\n    }\n\n    var out = '';\n    for (var i = 0; i < string.length; ++i) {\n        var c = string.charCodeAt(i);\n\n        if (\n            c === 0x2D // -\n            || c === 0x2E // .\n            || c === 0x5F // _\n            || c === 0x7E // ~\n            || (c >= 0x30 && c <= 0x39) // 0-9\n            || (c >= 0x41 && c <= 0x5A) // a-z\n            || (c >= 0x61 && c <= 0x7A) // A-Z\n            || (format === formats.RFC1738 && (c === 0x28 || c === 0x29)) // ( )\n        ) {\n            out += string.charAt(i);\n            continue;\n        }\n\n        if (c < 0x80) {\n            out = out + hexTable[c];\n            continue;\n        }\n\n        if (c < 0x800) {\n            out = out + (hexTable[0xC0 | (c >> 6)] + hexTable[0x80 | (c & 0x3F)]);\n            continue;\n        }\n\n        if (c < 0xD800 || c >= 0xE000) {\n            out = out + (hexTable[0xE0 | (c >> 12)] + hexTable[0x80 | ((c >> 6) & 0x3F)] + hexTable[0x80 | (c & 0x3F)]);\n            continue;\n        }\n\n        i += 1;\n        c = 0x10000 + (((c & 0x3FF) << 10) | (string.charCodeAt(i) & 0x3FF));\n        /* eslint operator-linebreak: [2, \"before\"] */\n        out += hexTable[0xF0 | (c >> 18)]\n            + hexTable[0x80 | ((c >> 12) & 0x3F)]\n            + hexTable[0x80 | ((c >> 6) & 0x3F)]\n            + hexTable[0x80 | (c & 0x3F)];\n    }\n\n    return out;\n};\n\nvar compact = function compact(value) {\n    var queue = [{ obj: { o: value }, prop: 'o' }];\n    var refs = [];\n\n    for (var i = 0; i < queue.length; ++i) {\n        var item = queue[i];\n        var obj = item.obj[item.prop];\n\n        var keys = Object.keys(obj);\n        for (var j = 0; j < keys.length; ++j) {\n            var key = keys[j];\n            var val = obj[key];\n            if (typeof val === 'object' && val !== null && refs.indexOf(val) === -1) {\n                queue.push({ obj: obj, prop: key });\n                refs.push(val);\n            }\n        }\n    }\n\n    compactQueue(queue);\n\n    return value;\n};\n\nvar isRegExp = function isRegExp(obj) {\n    return Object.prototype.toString.call(obj) === '[object RegExp]';\n};\n\nvar isBuffer = function isBuffer(obj) {\n    if (!obj || typeof obj !== 'object') {\n        return false;\n    }\n\n    return !!(obj.constructor && obj.constructor.isBuffer && obj.constructor.isBuffer(obj));\n};\n\nvar combine = function combine(a, b) {\n    return [].concat(a, b);\n};\n\nvar maybeMap = function maybeMap(val, fn) {\n    if (isArray(val)) {\n        var mapped = [];\n        for (var i = 0; i < val.length; i += 1) {\n            mapped.push(fn(val[i]));\n        }\n        return mapped;\n    }\n    return fn(val);\n};\n\nmodule.exports = {\n    arrayToObject: arrayToObject,\n    assign: assign,\n    combine: combine,\n    compact: compact,\n    decode: decode,\n    encode: encode,\n    isBuffer: isBuffer,\n    isRegExp: isRegExp,\n    maybeMap: maybeMap,\n    merge: merge\n};\n","'use strict';\n\nvar replace = String.prototype.replace;\nvar percentTwenties = /%20/g;\n\nvar Format = {\n    RFC1738: 'RFC1738',\n    RFC3986: 'RFC3986'\n};\n\nmodule.exports = {\n    'default': Format.RFC3986,\n    formatters: {\n        RFC1738: function (value) {\n            return replace.call(value, percentTwenties, '+');\n        },\n        RFC3986: function (value) {\n            return String(value);\n        }\n    },\n    RFC1738: Format.RFC1738,\n    RFC3986: Format.RFC3986\n};\n","'use strict';\n\nvar utils = require('./utils');\n\nvar has = Object.prototype.hasOwnProperty;\nvar isArray = Array.isArray;\n\nvar defaults = {\n    allowDots: false,\n    allowPrototypes: false,\n    arrayLimit: 20,\n    charset: 'utf-8',\n    charsetSentinel: false,\n    comma: false,\n    decoder: utils.decode,\n    delimiter: '&',\n    depth: 5,\n    ignoreQueryPrefix: false,\n    interpretNumericEntities: false,\n    parameterLimit: 1000,\n    parseArrays: true,\n    plainObjects: false,\n    strictNullHandling: false\n};\n\nvar interpretNumericEntities = function (str) {\n    return str.replace(/&#(\\d+);/g, function ($0, numberStr) {\n        return String.fromCharCode(parseInt(numberStr, 10));\n    });\n};\n\nvar parseArrayValue = function (val, options) {\n    if (val && typeof val === 'string' && options.comma && val.indexOf(',') > -1) {\n        return val.split(',');\n    }\n\n    return val;\n};\n\n// This is what browsers will submit when the ✓ character occurs in an\n// application/x-www-form-urlencoded body and the encoding of the page containing\n// the form is iso-8859-1, or when the submitted form has an accept-charset\n// attribute of iso-8859-1. Presumably also with other charsets that do not contain\n// the ✓ character, such as us-ascii.\nvar isoSentinel = 'utf8=%26%2310003%3B'; // encodeURIComponent('&#10003;')\n\n// These are the percent-encoded utf-8 octets representing a checkmark, indicating that the request actually is utf-8 encoded.\nvar charsetSentinel = 'utf8=%E2%9C%93'; // encodeURIComponent('✓')\n\nvar parseValues = function parseQueryStringValues(str, options) {\n    var obj = {};\n    var cleanStr = options.ignoreQueryPrefix ? str.replace(/^\\?/, '') : str;\n    var limit = options.parameterLimit === Infinity ? undefined : options.parameterLimit;\n    var parts = cleanStr.split(options.delimiter, limit);\n    var skipIndex = -1; // Keep track of where the utf8 sentinel was found\n    var i;\n\n    var charset = options.charset;\n    if (options.charsetSentinel) {\n        for (i = 0; i < parts.length; ++i) {\n            if (parts[i].indexOf('utf8=') === 0) {\n                if (parts[i] === charsetSentinel) {\n                    charset = 'utf-8';\n                } else if (parts[i] === isoSentinel) {\n                    charset = 'iso-8859-1';\n                }\n                skipIndex = i;\n                i = parts.length; // The eslint settings do not allow break;\n            }\n        }\n    }\n\n    for (i = 0; i < parts.length; ++i) {\n        if (i === skipIndex) {\n            continue;\n        }\n        var part = parts[i];\n\n        var bracketEqualsPos = part.indexOf(']=');\n        var pos = bracketEqualsPos === -1 ? part.indexOf('=') : bracketEqualsPos + 1;\n\n        var key, val;\n        if (pos === -1) {\n            key = options.decoder(part, defaults.decoder, charset, 'key');\n            val = options.strictNullHandling ? null : '';\n        } else {\n            key = options.decoder(part.slice(0, pos), defaults.decoder, charset, 'key');\n            val = utils.maybeMap(\n                parseArrayValue(part.slice(pos + 1), options),\n                function (encodedVal) {\n                    return options.decoder(encodedVal, defaults.decoder, charset, 'value');\n                }\n            );\n        }\n\n        if (val && options.interpretNumericEntities && charset === 'iso-8859-1') {\n            val = interpretNumericEntities(val);\n        }\n\n        if (part.indexOf('[]=') > -1) {\n            val = isArray(val) ? [val] : val;\n        }\n\n        if (has.call(obj, key)) {\n            obj[key] = utils.combine(obj[key], val);\n        } else {\n            obj[key] = val;\n        }\n    }\n\n    return obj;\n};\n\nvar parseObject = function (chain, val, options, valuesParsed) {\n    var leaf = valuesParsed ? val : parseArrayValue(val, options);\n\n    for (var i = chain.length - 1; i >= 0; --i) {\n        var obj;\n        var root = chain[i];\n\n        if (root === '[]' && options.parseArrays) {\n            obj = [].concat(leaf);\n        } else {\n            obj = options.plainObjects ? Object.create(null) : {};\n            var cleanRoot = root.charAt(0) === '[' && root.charAt(root.length - 1) === ']' ? root.slice(1, -1) : root;\n            var index = parseInt(cleanRoot, 10);\n            if (!options.parseArrays && cleanRoot === '') {\n                obj = { 0: leaf };\n            } else if (\n                !isNaN(index)\n                && root !== cleanRoot\n                && String(index) === cleanRoot\n                && index >= 0\n                && (options.parseArrays && index <= options.arrayLimit)\n            ) {\n                obj = [];\n                obj[index] = leaf;\n            } else if (cleanRoot !== '__proto__') {\n                obj[cleanRoot] = leaf;\n            }\n        }\n\n        leaf = obj;\n    }\n\n    return leaf;\n};\n\nvar parseKeys = function parseQueryStringKeys(givenKey, val, options, valuesParsed) {\n    if (!givenKey) {\n        return;\n    }\n\n    // Transform dot notation to bracket notation\n    var key = options.allowDots ? givenKey.replace(/\\.([^.[]+)/g, '[$1]') : givenKey;\n\n    // The regex chunks\n\n    var brackets = /(\\[[^[\\]]*])/;\n    var child = /(\\[[^[\\]]*])/g;\n\n    // Get the parent\n\n    var segment = options.depth > 0 && brackets.exec(key);\n    var parent = segment ? key.slice(0, segment.index) : key;\n\n    // Stash the parent if it exists\n\n    var keys = [];\n    if (parent) {\n        // If we aren't using plain objects, optionally prefix keys that would overwrite object prototype properties\n        if (!options.plainObjects && has.call(Object.prototype, parent)) {\n            if (!options.allowPrototypes) {\n                return;\n            }\n        }\n\n        keys.push(parent);\n    }\n\n    // Loop through children appending to the array until we hit depth\n\n    var i = 0;\n    while (options.depth > 0 && (segment = child.exec(key)) !== null && i < options.depth) {\n        i += 1;\n        if (!options.plainObjects && has.call(Object.prototype, segment[1].slice(1, -1))) {\n            if (!options.allowPrototypes) {\n                return;\n            }\n        }\n        keys.push(segment[1]);\n    }\n\n    // If there's a remainder, just add whatever is left\n\n    if (segment) {\n        keys.push('[' + key.slice(segment.index) + ']');\n    }\n\n    return parseObject(keys, val, options, valuesParsed);\n};\n\nvar normalizeParseOptions = function normalizeParseOptions(opts) {\n    if (!opts) {\n        return defaults;\n    }\n\n    if (opts.decoder !== null && opts.decoder !== undefined && typeof opts.decoder !== 'function') {\n        throw new TypeError('Decoder has to be a function.');\n    }\n\n    if (typeof opts.charset !== 'undefined' && opts.charset !== 'utf-8' && opts.charset !== 'iso-8859-1') {\n        throw new TypeError('The charset option must be either utf-8, iso-8859-1, or undefined');\n    }\n    var charset = typeof opts.charset === 'undefined' ? defaults.charset : opts.charset;\n\n    return {\n        allowDots: typeof opts.allowDots === 'undefined' ? defaults.allowDots : !!opts.allowDots,\n        allowPrototypes: typeof opts.allowPrototypes === 'boolean' ? opts.allowPrototypes : defaults.allowPrototypes,\n        arrayLimit: typeof opts.arrayLimit === 'number' ? opts.arrayLimit : defaults.arrayLimit,\n        charset: charset,\n        charsetSentinel: typeof opts.charsetSentinel === 'boolean' ? opts.charsetSentinel : defaults.charsetSentinel,\n        comma: typeof opts.comma === 'boolean' ? opts.comma : defaults.comma,\n        decoder: typeof opts.decoder === 'function' ? opts.decoder : defaults.decoder,\n        delimiter: typeof opts.delimiter === 'string' || utils.isRegExp(opts.delimiter) ? opts.delimiter : defaults.delimiter,\n        // eslint-disable-next-line no-implicit-coercion, no-extra-parens\n        depth: (typeof opts.depth === 'number' || opts.depth === false) ? +opts.depth : defaults.depth,\n        ignoreQueryPrefix: opts.ignoreQueryPrefix === true,\n        interpretNumericEntities: typeof opts.interpretNumericEntities === 'boolean' ? opts.interpretNumericEntities : defaults.interpretNumericEntities,\n        parameterLimit: typeof opts.parameterLimit === 'number' ? opts.parameterLimit : defaults.parameterLimit,\n        parseArrays: opts.parseArrays !== false,\n        plainObjects: typeof opts.plainObjects === 'boolean' ? opts.plainObjects : defaults.plainObjects,\n        strictNullHandling: typeof opts.strictNullHandling === 'boolean' ? opts.strictNullHandling : defaults.strictNullHandling\n    };\n};\n\nmodule.exports = function (str, opts) {\n    var options = normalizeParseOptions(opts);\n\n    if (str === '' || str === null || typeof str === 'undefined') {\n        return options.plainObjects ? Object.create(null) : {};\n    }\n\n    var tempObj = typeof str === 'string' ? parseValues(str, options) : str;\n    var obj = options.plainObjects ? Object.create(null) : {};\n\n    // Iterate over the keys and setup the new object\n\n    var keys = Object.keys(tempObj);\n    for (var i = 0; i < keys.length; ++i) {\n        var key = keys[i];\n        var newObj = parseKeys(key, tempObj[key], options, typeof str === 'string');\n        obj = utils.merge(obj, newObj, options);\n    }\n\n    return utils.compact(obj);\n};\n","// eslint-disable-next-line no-restricted-globals\n\n/**\n * Runs code on browser environments safely.\n */\nexport function safelyRunOnBrowser(callback) {\n  var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n    fallback: function fallback() {\n      return undefined;\n    }\n  },\n      fallback = _ref.fallback;\n\n  // eslint-disable-next-line no-restricted-globals\n  if (typeof window === 'undefined') {\n    return fallback();\n  } // eslint-disable-next-line no-restricted-globals\n\n\n  return callback({\n    window: window\n  });\n}","import { safelyRunOnBrowser } from \"../lib/utils/index.js\";\n\nfunction extractPayload(widgets, instantSearchInstance, payload) {\n  var parent = instantSearchInstance.mainIndex;\n  var initOptions = {\n    instantSearchInstance: instantSearchInstance,\n    parent: parent,\n    scopedResults: [],\n    state: parent.getHelper().state,\n    helper: parent.getHelper(),\n    createURL: parent.createURL,\n    uiState: instantSearchInstance._initialUiState,\n    renderState: instantSearchInstance.renderState,\n    templatesConfig: instantSearchInstance.templatesConfig,\n    searchMetadata: {\n      isSearchStalled: instantSearchInstance._isSearchStalled\n    }\n  };\n  widgets.forEach(function (widget) {\n    var widgetParams = {};\n\n    if (widget.getWidgetRenderState) {\n      var renderState = widget.getWidgetRenderState(initOptions);\n\n      if (renderState && renderState.widgetParams) {\n        // casting, as we just earlier checked widgetParams exists, and thus an object\n        widgetParams = renderState.widgetParams;\n      }\n    } // since we destructure in all widgets, the parameters with defaults are set to \"undefined\"\n\n\n    var params = Object.keys(widgetParams).filter(function (key) {\n      return widgetParams[key] !== undefined;\n    });\n    payload.widgets.push({\n      type: widget.$$type,\n      widgetType: widget.$$widgetType,\n      params: params\n    });\n\n    if (widget.$$type === 'ais.index') {\n      extractPayload(widget.getWidgets(), instantSearchInstance, payload);\n    }\n  });\n}\n\nexport function isMetadataEnabled() {\n  return safelyRunOnBrowser(function (_ref) {\n    var _window$navigator, _window$navigator$use;\n\n    var window = _ref.window;\n    return ((_window$navigator = window.navigator) === null || _window$navigator === void 0 ? void 0 : (_window$navigator$use = _window$navigator.userAgent) === null || _window$navigator$use === void 0 ? void 0 : _window$navigator$use.indexOf('Algolia Crawler')) > -1;\n  }, {\n    fallback: function fallback() {\n      return false;\n    }\n  });\n}\n/**\n * Exposes the metadata of mounted widgets in a custom\n * `<meta name=\"instantsearch:widgets\" />` tag. The metadata per widget is:\n * - applied parameters\n * - widget name\n * - connector name\n */\n\nexport function createMetadataMiddleware() {\n  return function (_ref2) {\n    var instantSearchInstance = _ref2.instantSearchInstance;\n    var payload = {\n      widgets: []\n    };\n    var payloadContainer = document.createElement('meta');\n    var refNode = document.querySelector('head');\n    payloadContainer.name = 'instantsearch:widgets';\n    return {\n      onStateChange: function onStateChange() {},\n      subscribe: function subscribe() {\n        // using setTimeout here to delay extraction until widgets have been added in a tick (e.g. Vue)\n        setTimeout(function () {\n          var client = instantSearchInstance.client;\n          payload.ua = client.transporter && client.transporter.userAgent ? client.transporter.userAgent.value : client._ua;\n          extractPayload(instantSearchInstance.mainIndex.getWidgets(), instantSearchInstance, payload);\n          payloadContainer.content = JSON.stringify(payload);\n          refNode.appendChild(payloadContainer);\n        }, 0);\n      },\n      started: function started() {},\n      unsubscribe: function unsubscribe() {\n        payloadContainer.remove();\n      }\n    };\n  };\n}","import { warning } from \"../lib/utils/index.js\";\nexport var ANONYMOUS_TOKEN_COOKIE_KEY = '_ALGOLIA';\n\nfunction getCookie(name) {\n  var prefix = \"\".concat(name, \"=\");\n  var cookies = document.cookie.split(';');\n\n  for (var i = 0; i < cookies.length; i++) {\n    var cookie = cookies[i];\n\n    while (cookie.charAt(0) === ' ') {\n      cookie = cookie.substring(1);\n    }\n\n    if (cookie.indexOf(prefix) === 0) {\n      return cookie.substring(prefix.length, cookie.length);\n    }\n  }\n\n  return undefined;\n}\n\nexport function getInsightsAnonymousUserTokenInternal() {\n  return getCookie(ANONYMOUS_TOKEN_COOKIE_KEY);\n}\n/**\n * @deprecated This function will be still supported in 4.x releases, but not further. It is replaced by the `insights` middleware. For more information, visit https://www.algolia.com/doc/guides/getting-insights-and-analytics/search-analytics/click-through-and-conversions/how-to/send-click-and-conversion-events-with-instantsearch/js/\n */\n\nexport default function getInsightsAnonymousUserToken() {\n  process.env.NODE_ENV === 'development' ? warning(false, \"`getInsightsAnonymousUserToken` function has been deprecated. It is still supported in 4.x releases, but not further. It is replaced by the `insights` middleware.\\n\\nFor more information, visit https://www.algolia.com/doc/guides/getting-insights-and-analytics/search-analytics/click-through-and-conversions/how-to/send-click-and-conversion-events-with-instantsearch/js/\") : void 0;\n  return getInsightsAnonymousUserTokenInternal();\n}","function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport { isEqual, safelyRunOnBrowser } from \"../utils/index.js\";\n\nfunction getStateWithoutPage(state) {\n  var _ref = state || {},\n      page = _ref.page,\n      rest = _objectWithoutProperties(_ref, [\"page\"]);\n\n  return rest;\n}\n\nvar KEY = 'ais.infiniteHits';\nexport default function createInfiniteHitsSessionStorageCache() {\n  return {\n    read: function read(_ref2) {\n      var state = _ref2.state;\n      var sessionStorage = safelyRunOnBrowser(function (_ref3) {\n        var window = _ref3.window;\n        return window.sessionStorage;\n      });\n\n      if (!sessionStorage) {\n        return null;\n      }\n\n      try {\n        var cache = JSON.parse( // @ts-expect-error JSON.parse() requires a string, but it actually accepts null, too.\n        sessionStorage.getItem(KEY));\n        return cache && isEqual(cache.state, getStateWithoutPage(state)) ? cache.hits : null;\n      } catch (error) {\n        if (error instanceof SyntaxError) {\n          try {\n            sessionStorage.removeItem(KEY);\n          } catch (err) {// do nothing\n          }\n        }\n\n        return null;\n      }\n    },\n    write: function write(_ref4) {\n      var state = _ref4.state,\n          hits = _ref4.hits;\n      var sessionStorage = safelyRunOnBrowser(function (_ref5) {\n        var window = _ref5.window;\n        return window.sessionStorage;\n      });\n\n      if (!sessionStorage) {\n        return;\n      }\n\n      try {\n        sessionStorage.setItem(KEY, JSON.stringify({\n          state: getStateWithoutPage(state),\n          hits: hits\n        }));\n      } catch (error) {// do nothing\n      }\n    }\n  };\n}","import { noop } from \"./noop.js\";\n\n/**\n * Logs a warning when this function is called, in development environment only.\n */\nvar deprecate = function deprecate(fn, message) {\n  return fn;\n};\n/**\n * Logs a warning\n * This is used to log issues in development environment only.\n */\n\n\nvar warn = noop;\n/**\n * Logs a warning if the condition is not met.\n * This is used to log issues in development environment only.\n */\n\nvar _warning = noop;\n\nif (process.env.NODE_ENV === 'development') {\n  warn = function warn(message) {\n    // eslint-disable-next-line no-console\n    console.warn(\"[InstantSearch.js]: \".concat(message.trim()));\n  };\n\n  deprecate = function deprecate(fn, message) {\n    var hasAlreadyPrinted = false;\n    return function () {\n      if (!hasAlreadyPrinted) {\n        hasAlreadyPrinted = true;\n        warn(message);\n      }\n\n      return fn.apply(void 0, arguments);\n    };\n  };\n\n  _warning = function warning(condition, message) {\n    if (condition) {\n      return;\n    }\n\n    var hasAlreadyPrinted = _warning.cache[message];\n\n    if (!hasAlreadyPrinted) {\n      _warning.cache[message] = true;\n      warn(message);\n    }\n  };\n\n  _warning.cache = {};\n}\n\nexport { warn, deprecate, _warning as warning };","// Timezone conversion for event pages (list and detail)\n(function() {\n    'use strict';\n\n    function convertToLocalTime() {\n        const timeElements = document.querySelectorAll('[data-event-time]');\n\n        timeElements.forEach(function(element) {\n            const startTimeStr = element.getAttribute('data-start');\n            const endTimeStr = element.getAttribute('data-end');\n            const sourceTimezone = element.getAttribute('data-source-timezone'); // \"+8\"\n\n            if (!startTimeStr) return;\n\n            const dateOnly = element.hasAttribute('data-date-only');\n            const startDate = parseTimeInTimezone(startTimeStr, sourceTimezone);\n            let displayText = '';\n            if (dateOnly) {\n                displayText = formatDate(startDate);\n                if (endTimeStr) {\n                    const endDate = parseTimeInTimezone(endTimeStr, sourceTimezone);\n                    const endDateStr = formatDate(endDate);\n                    if (endDateStr !== displayText) {\n                        displayText += ' - ' + endDateStr;\n                    }\n                }\n            } else if (endTimeStr) {\n                const endDate = parseTimeInTimezone(endTimeStr, sourceTimezone);\n                displayText = formatDateRange(startDate, endDate);\n            } else {\n                displayText = formatDateTime(startDate);\n            }\n\n            // Pass startDate so getTimezoneLabel derives the correct offset and\n            // abbreviation for the event's point in time (respects DST).\n            const timezoneLabel = getTimezoneLabel(startDate);\n            displayText += ' ' + timezoneLabel;\n\n            element.textContent = displayText;\n        });\n    }\n\n    function parseTimeInTimezone(timeStr, timezoneOffset) {\n        const parts = timeStr.split(/[- :]/);\n        const year = parseInt(parts[0], 10);\n        const month = parseInt(parts[1], 10) - 1;\n        const day = parseInt(parts[2], 10);\n        const hour = parseInt(parts[3], 10);\n        const minute = parseInt(parts[4], 10);\n\n        const offsetHours = parseInt(timezoneOffset, 10);\n        const utcTime = Date.UTC(year, month, day, hour - offsetHours, minute, 0);\n\n        return new Date(utcTime);\n    }\n\n    function formatTimezoneOffset(offset) {\n        const sign = offset >= 0 ? '+' : '-';\n        const absOffset = Math.abs(offset);\n        const hours = Math.floor(absOffset);\n        const minutes = Math.round((absOffset - hours) * 60);\n\n        if (minutes === 0) {\n            return sign + hours;\n        } else {\n            return sign + hours + ':' + (minutes < 10 ? '0' : '') + minutes;\n        }\n    }\n\n    function getTimezoneLabel(date) {\n        const offsetStr = formatTimezoneOffset(-date.getTimezoneOffset() / 60);\n\n        try {\n            // Extract the locale-correct abbreviation for the event date via Intl,\n            // which correctly handles DST (e.g. PST vs PDT) and avoids ambiguous\n            // hardcoded mappings like CST (+8 vs -6).\n            const parts = new Intl.DateTimeFormat(undefined, { timeZoneName: 'short' }).formatToParts(date);\n            const abbr = parts.find(p => p.type === 'timeZoneName');\n            if (abbr && abbr.value && !abbr.value.startsWith('UTC') && !abbr.value.startsWith('GMT+') && !abbr.value.startsWith('GMT-')) {\n                return abbr.value + ' (UTC' + offsetStr + ')';\n            }\n        } catch (e) {\n            // fall through to plain offset\n        }\n        return 'UTC' + offsetStr;\n    }\n\n    function formatDate(date) {\n        const year = date.getFullYear();\n        const month = String(date.getMonth() + 1).padStart(2, '0');\n        const day = String(date.getDate()).padStart(2, '0');\n\n        return year + '-' + month + '-' + day;\n    }\n\n    function formatDateTime(date) {\n        const year = date.getFullYear();\n        const month = String(date.getMonth() + 1).padStart(2, '0');\n        const day = String(date.getDate()).padStart(2, '0');\n        const hour = String(date.getHours()).padStart(2, '0');\n        const minute = String(date.getMinutes()).padStart(2, '0');\n\n        return year + '-' + month + '-' + day + ' ' + hour + ':' + minute;\n    }\n\n    function formatDateRange(startDate, endDate) {\n        const startYear = startDate.getFullYear();\n        const startMonth = String(startDate.getMonth() + 1).padStart(2, '0');\n        const startDay = String(startDate.getDate()).padStart(2, '0');\n        const startHour = String(startDate.getHours()).padStart(2, '0');\n        const startMinute = String(startDate.getMinutes()).padStart(2, '0');\n\n        const endYear = endDate.getFullYear();\n        const endMonth = String(endDate.getMonth() + 1).padStart(2, '0');\n        const endDay = String(endDate.getDate()).padStart(2, '0');\n        const endHour = String(endDate.getHours()).padStart(2, '0');\n        const endMinute = String(endDate.getMinutes()).padStart(2, '0');\n\n        const startStr = startYear + '-' + startMonth + '-' + startDay + ' ' + startHour + ':' + startMinute;\n\n        if (startYear === endYear && startMonth === endMonth && startDay === endDay) {\n            return startStr + ' - ' + endHour + ':' + endMinute;\n        } else {\n            const endStr = endYear + '-' + endMonth + '-' + endDay + ' ' + endHour + ':' + endMinute;\n            return startStr + ' - ' + endStr;\n        }\n    }\n\n    if (document.readyState === 'loading') {\n        document.addEventListener('DOMContentLoaded', convertToLocalTime);\n    } else {\n        convertToLocalTime();\n    }\n})();\n"],"names":["$6946bfb4689eabba$var$support","$6946bfb4689eabba$var$deviceCached","$6946bfb4689eabba$var$browser","$parcel$export","e","n","v","s","Object","defineProperty","get","set","enumerable","configurable","_ref3","createElement","Fragment","HighlightPart","key","value","BaseComponent","$parcel$global","globalThis","$parcel$interopDefault","a","__esModule","default","$parcel$modules","$parcel$inits","parcelRequire","id","exports","init","module","call","err","Error","code","register","parcelRegister","instance","createInstance","dir","loadResources","reloadResources","use","changeLanguage","getFixedT","t","exists","setDefaultNamespace","hasLoadedNamespace","loadNamespaces","loadLanguages","$jOMXy","$dM0Cr","$lRfe8","$1oVxX","$1UPzg","$aEHZE","$aKKvr","$2qeFG","$ALbeL","ownKeys$6","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","getOwnPropertyDescriptor","push","apply","_objectSpread$6","target","i","arguments","length","source","forEach","getOwnPropertyDescriptors","defineProperties","consoleLogger","type","log","args","output","warn","error","console","baseLogger","Logger","concreteLogger","options","undefined","prefix","logger","debug","bool","_len","Array","_key","forward","_len2","_key2","_len3","_key3","_len4","_key4","lvl","debugOnly","concat","moduleName","EventEmitter","observers","events","listener","_this","split","event","l","cloned","observer","_cloned","defer","res","rej","promise","Promise","resolve","reject","makeString","getLastOfPath","path","Empty","cleanKey","indexOf","replace","canNotTraverseDeeper","stack","shift","prototype","hasOwnProperty","obj","k","setPath","newValue","_getLastOfPath","getPath","_getLastOfPath3","regexEscape","str","_entityMap","escape","data","isIE10","window","navigator","userAgentData","userAgent","chars","deepFind","keySeparator","paths","current","j","p","slice","join","mix","endsWith","joinedPath","ownKeys$5","_objectSpread$5","ResourceStore","_EventEmitter","hasNativeReflectConstruct","_super","_isNativeReflectConstruct$3","Reflect","construct","sham","Proxy","Boolean","valueOf","result","Super","constructor","ns","defaultNS","ignoreJSONStructure","index","splice","lng","silent","addNamespaces","emit","resources","m","toString","addResource","deep","overwrite","pack","deepExtend","prop","String","hasResourceBundle","removeNamespaces","getResource","compatibilityAPI","getDataByLanguage","find","postProcessor","processors","addPostProcessor","name","handle","translator","processor","process","ownKeys$4","_objectSpread$4","checkedLoadedFor","Translator","_isNativeReflectConstruct$2","services","copy","create","language","interpolation","resolved","nsSeparator","namespaces","wouldCheckForNsInKey","seemsNaturalLanguage","userDefinedKeySeparator","userDefinedNsSeparator","looksLikeObjectPath","possibleChars","c","r","RegExp","map","matched","test","ki","substring","match","interpolator","nestingRegexp","parts","lastKey","_this2","overloadTranslationOptionHandler","isArray","returnDetails","_this$extractFromKey","extractFromKey","namespace","appendNamespaceToCIMode","toLowerCase","usedKey","exactUsedKey","usedLng","usedNS","resUsedKey","resExactUsedKey","resType","joinArrays","handleAsObjectInI18nFormat","i18nFormat","handleAsObject","noObject","returnObjects","returnedObjectHandler","resTypeIsArray","newKeyToUse","deepKey","translate","extendTranslation","usedDefault","needsPluralHandling","count","hasDefaultValue","defaultValueSuffix","pluralResolver","getSuffix","defaultValue","isValidLookup","resForMissing","missingKeyNoValueFallbackToKey","updateMissing","fk","lngs","fallbackLngs","languageUtils","getFallbackCodes","fallbackLng","saveMissingTo","toResolveHierarchy","send","specificDefaultValue","defaultForMissing","missingKeyHandler","backendConnector","saveMissing","saveMissingPlurals","getSuffixes","suffix","appendNamespaceToMissingKey","parseMissingKeyHandler","_this3","parse","defaultVariables","skipInterpolation","nestBef","skipOnVariables","nb","interpolate","na","nest","context","reset","postProcess","postProcessorNames","applyPostProcessor","postProcessPassResolved","i18nResolved","found","_this4","extracted","fallbackNS","needsZeroSuffixLookup","ordinal","shouldUseIntlApi","needsContextHandling","codes","utils","possibleKey","finalKeys","addLookupKeys","pluralSuffix","zeroSuffix","pluralSeparator","contextKey","contextSeparator","pop","returnNull","returnEmptyString","resourceStore","option","capitalize","string","charAt","toUpperCase","LanguageUtil","supportedLngs","formatLanguageCode","specialCases","lowerCaseLng","part","cleanCode","load","nonExplicitSupportedLngs","getLanguagePartFromCode","cleanedLng","isSupportedCode","lngOnly","supportedLng","fallbacks","getScriptPartFromCode","fallbackCode","fallbackCodes","addCode","fc","sets","nr","_rulesPluralsTypes","Number","deprecatedJsonVersions","suffixesOrder","zero","one","two","few","many","other","PluralResolver","rules","compatibilityJSON","Intl","PluralRules","numbers","plurals","_unused","rule","getRule","resolvedOptions","pluralCategories","sort","pluralCategory1","pluralCategory2","pluralCategory","prepend","number","select","getSuffixRetroCompatible","idx","noAbs","Math","abs","simplifyPluralSuffix","returnSuffix","includes","ownKeys$3","_objectSpread$3","deepFindWithDefaults","defaultData","Interpolator","format","escapeValue","iOpts","useRawValueToEscape","prefixEscaped","suffixEscaped","formatSeparator","unescapePrefix","unescapeSuffix","nestingPrefix","nestingPrefixEscaped","nestingSuffix","nestingSuffixEscaped","nestingOptionsSeparator","maxReplaces","alwaysFormat","resetRegExp","regexpStr","regexp","regexpUnescapeStr","regexpUnescape","nestingRegexpStr","replaces","regexSafe","val","handleFormat","interpolationkey","trim","f","missingInterpolationHandler","todos","regex","safeValue","todo","exec","matchedVar","temp","lastIndex","clonedOptions","handleHasOptions","inheritedOptions","sep","optionsString","matchedSingleQuotes","matchedDoubleQuotes","JSON","formatters","doReduce","elem","reduce","ownKeys$2","_objectSpread$2","createCachedFormatter","fn","cache","stringify","formatter","Formatter","formats","opt","NumberFormat","currency","style","datetime","DateTimeFormat","relativetime","RelativeTimeFormat","range","list","ListFormat","_format","mem","_parseFormatStr","parseFormatStr","formatStr","formatName","formatOptions","optStr","opts","_opt$split","_opt$split2","rest","isNaN","parseInt","formatted","valOptions","formatParams","locale","ownKeys$1","_objectSpread$1","Connector","_isNativeReflectConstruct$1","backend","store","waitingReads","maxParallelReads","readingCalls","maxRetries","retryTimeout","state","queue","languages","callback","toLoad","pending","toLoadLanguages","toLoadNamespaces","hasAllNamespaces","reload","pendingCount","loaded","errors","addResourceBundle","q","_getLastOfPath2","done","loadedKeys","fcName","tried","wait","resolver","next","read","setTimeout","bind","then","queueLoad","loadOne","prepareLoading","_this5","fallbackValue","isUpdate","clb","initImmediate","preload","partialBundledLanguages","ret","tDescription","transformOptions","ownKeys","_objectSpread","noop","I18n","_isNativeReflectConstruct","modules","external","bindMemberFunctions","inst","mems","getOwnPropertyNames","getPrototypeOf","isInitialized","isClone","defOpts","createClassOnDemand","ClassOrObject","lu","on","languageDetector","detection","storeApi","_this2$store","storeApiChained","_this2$store2","deferred","finish","initializedStoreOnce","usedCallback","append","resolvedLanguage","setResolvedLanguage","li","lngInLngs","hasLanguageSomeTranslations","isLanguageChangingTo","setLngProps","setLng","getBestMatchFromCodes","cacheUserLanguage","async","detect","keyPrefix","fixedT","resultKey","_this$translator","_this$translator2","_this6","lastLng","loadNotPending","loadState","precheck","preResult","_this7","preloaded","newLngs","rtlLngs","_this8","mergedOptions","clone","membersToCopy","$e6d8aa307cfbe8b4$export$2e2bcd8739ae039","Symbol","iterator","$a0703d0085fc4fb2$export$2e2bcd8739ae039","Constructor","TypeError","$fe9a5bf59b39de5a$export$2e2bcd8739ae039","$k2Kke","$fe9a5bf59b39de5a$var$_defineProperties","props","descriptor","writable","protoProps","staticProps","$e977edce0f75b0db$export$2e2bcd8739ae039","$fEskS","arg","$b650924e9996270c$export$2e2bcd8739ae039","input","hint","prim","toPrimitive","$1054abeafa6bc7e1$export$2e2bcd8739ae039","self","ReferenceError","$165305ab584beb18$export$2e2bcd8739ae039","$5zL6F","subClass","superClass","$40f4c2feb843f2da$export$2e2bcd8739ae039","o","setPrototypeOf","__proto__","$7c1fc3fad5a369a2$export$2e2bcd8739ae039","$7d424663944f7a08$export$2e2bcd8739ae039","$1c3963e2ec4676f7$export$2e2bcd8739ae039","$06e7f5ebe1552031$export$2e2bcd8739ae039","$56R8K","$cZGos","$eXIWw","$cpFa1","arr","$3b86bbcb24b44a1d$export$2e2bcd8739ae039","$975c10fa3ca03dc7$export$2e2bcd8739ae039","iter","from","$ae4970148ece50ad$export$2e2bcd8739ae039","$3MxnJ","minLen","$2c0fbfb5c55051c8$export$2e2bcd8739ae039","len","arr2","$02550737ba08c18f$export$2e2bcd8739ae039","window1","lazySizes","factory","document","Date1","lazySizesDefaults","lazyClass","loadedClass","loadingClass","preloadClass","errorClass","autosizesClass","fastLoadedClass","iframeLoadMode","srcAttr","srcsetAttr","sizesAttr","minSize","customMedia","expFactor","hFac","loadMode","loadHidden","ricTimeout","throttleDelay","lazySizesCfg","lazySizesConfig","lazysizesConfig","getElementsByClassName","cfg","noSupport","running","lastTime","gDelay","rICTimeout","run","idleCallback","waiting","firstFns","secondFns","fns","rafBatch","preloadElems","isCompleted","resetPreloadingTimer","started","eLvW","elvH","eLtop","eLleft","eLright","eLbottom","isBodyHidden","regImg","regIframe","supportScroll","currentExpand","isLoading","lowRuns","resetPreloading","isVisible","isNestedVisible","checkElements","throttledCheckElements","switchLoadingClass","rafedSwitchLoadingClass","rafSwitchLoadingClass","changeIframeSrc","handleSources","lazyUnveil","unveilElement","afterScroll","altLoadmodeScrollListner","onload","autosizesElems","sizeElement","getSizeElement","debouncedUpdateElementsSizes","lazysizes","docElem","documentElement","supportPicture","HTMLPictureElement","_addEventListener","_getAttribute","addEventListener","requestAnimationFrame","requestIdleCallback","regPicture","loadEvents","regClassCache","hasClass","ele","cls","addClass","setAttribute","removeClass","reg","addRemoveLoadEvents","dom","add","action","evt","triggerEvent","detail","noBubbles","noCancelable","createEvent","initEvent","dispatchEvent","updatePolyfill","el","full","polyfill","picturefill","pf","src","reevaluate","elements","getCSS","getComputedStyle","getWidth","parent","width","offsetWidth","_lazysizesWidth","parentNode","rAF","runFns","hidden","_lsFlush","rAFIt","simple","that","debounce","func","timeout","timestamp","later","last","now","loader","body","elemExpand","outerRect","visible","offsetParent","getBoundingClientRect","left","right","top","bottom","eLlen","rect","autoLoadElem","loadedSomething","elemNegativeExpand","elemExpandVal","beforeExpandVal","defaultExpand","preloadExpand","lazyloadElems","_lazyRace","prematureUnveil","expand","clientHeight","clientWidth","_defEx","innerWidth","innerHeight","preloadAfterLoad","isPriority","delay","_lazyCache","getAttribute","contentWindow","location","sourceSrcset","isAuto","sizes","isImg","srcset","isPicture","firesLoad","defaultPrevented","nodeName","clearTimeout","getElementsByTagName","isLoaded","complete","naturalWidth","loading","autoSizer","updateElem","_","persisted","loadingElements","querySelectorAll","img","MutationObserver","observe","childList","subtree","attributes","setInterval","readyState","checkElems","unveil","_aLSL","sources","dataAttr","uP","aC","rC","hC","fire","gW","Date","Hogan","findInScope","key1","scope","doModelGet","Template","codeObj","text","compiler","partials","subs","buf","indent","hChars","coerceToString","rAmp","rLt","rGt","rApos","rQuot","render","ri","ep","symbol","partial","template","base","compile","stackText","activeSub","createSpecializedPartial","stackSubs","stackPartials","PartialTemplate","Substitutions","subsText","rp","rs","section","tail","ctx","inverted","start","end","tags","pass","ms","d","returnFound","names","modelGet","cx","mv","ls","oldTags","delimiters","b","ct","disableLambda","fl","textSource","sub","$l5cY7","appId","apiKey","indexName","$c09122dc9682058c$var$getLocale","pathname","$c09122dc9682058c$var$getLanguageCode","en","translation","search","box","placeholder","submitButtonTitle","resetButtonTitle","tips","menuLabel","blog","customer_story","solution","noResultsText","$c09122dc9682058c$export$2e2bcd8739ae039","getLocale","$f347e48613385d9c$var$flushPending","$f347e48613385d9c$var$flushing","$f347e48613385d9c$var$queue","$f347e48613385d9c$var$dequeueJob","job","$f347e48613385d9c$var$flushJobs","$f347e48613385d9c$var$shouldSchedule","$f347e48613385d9c$var$onAttributeAddeds","$f347e48613385d9c$var$onElRemoveds","$f347e48613385d9c$var$onElAddeds","$f347e48613385d9c$var$onElRemoved","_x_cleanups","$f347e48613385d9c$var$cleanupAttributes","_x_attributeCleanups","entries","$f347e48613385d9c$var$observer","$f347e48613385d9c$var$onMutate","$f347e48613385d9c$var$currentlyObserving","$f347e48613385d9c$var$startObservingMutations","attributeOldValue","$f347e48613385d9c$var$recordQueue","$f347e48613385d9c$var$willProcessRecordQueue","$f347e48613385d9c$var$mutateDom","takeRecords","queueMicrotask","disconnect","$f347e48613385d9c$var$isCollecting","$f347e48613385d9c$var$deferredMutations","mutations","addedNodes","removedNodes","addedAttributes","Map","removedAttributes","_x_ignoreMutationObserver","node","nodeType","attributeName","oldValue","add2","has","remove","hasAttribute","attrs","_x_ignoreSelf","_x_ignore","isConnected","$f347e48613385d9c$var$scope","$f347e48613385d9c$var$mergeProxies","$f347e48613385d9c$var$closestDataStack","$f347e48613385d9c$var$addScopeToNode","data2","referenceNode","_x_dataStack","$f347e48613385d9c$var$refreshScope","element","scope2","existingScope","ShadowRoot","host","objects","thisProxy","Set","flatMap","some","_x_alreadyBound","getter","setter","closestObjectWithKey","$f347e48613385d9c$var$initInterceptors","isObject2","recurse","basePath","_x_interceptor","initialize","Element","$f347e48613385d9c$var$interceptor","mutateObj","initialValue","carry","segment","$f347e48613385d9c$var$set","innerValue","$f347e48613385d9c$var$magics","$f347e48613385d9c$var$injectMagics","utilities","cleanup2","$f347e48613385d9c$var$getElementBoundUtilities","interceptor","$f347e48613385d9c$var$tryCatch","expression","$f347e48613385d9c$var$handleError","error2","assign","message","$f347e48613385d9c$var$shouldAutoEvaluateFunctions","$f347e48613385d9c$var$evaluate","extras","$f347e48613385d9c$var$evaluateLater","$f347e48613385d9c$var$theEvaluatorFunction","$f347e48613385d9c$var$normalEvaluator","overriddenMagics","dataStack","receiver","params","$f347e48613385d9c$var$runIfTypeOfFunction","evaluator","$f347e48613385d9c$var$generateFunctionFromString","$f347e48613385d9c$var$evaluatorMemo","AsyncFunction","rightSideSafeExpression","safeAsyncFunction","finished","completeScope","catch","finally","$f347e48613385d9c$var$prefixAsString","$f347e48613385d9c$var$prefix","subject","$f347e48613385d9c$var$directiveHandlers","$f347e48613385d9c$var$directives","originalAttributeOverride","_x_virtualDirectives","vAttributes","staticAttributes","$f347e48613385d9c$var$attributesOnly","attribute","attr","transformedAttributeMap","directives2","$f347e48613385d9c$var$toTransformedAttributes","newName","oldName","$f347e48613385d9c$var$outNonAlpineAttributes","typeMatch","$f347e48613385d9c$var$alpineAttributeRegex","valueMatch","modifiers","original","$f347e48613385d9c$var$byPriority","directive2","$f347e48613385d9c$var$getDirectiveHandler","handler3","fullHandler","inline","$f347e48613385d9c$var$isDeferringHandlers","$f347e48613385d9c$var$directiveHandlerStacks","$f347e48613385d9c$var$currentHandlerStackKey","runCleanups","cleanups","effect3","cleanupEffect","effectReference","$f347e48613385d9c$var$effect","_x_effects","_x_runEffects","delete","$f347e48613385d9c$var$release","Alpine","$f347e48613385d9c$var$alpine_default","effect","cleanup","evaluateLater","evaluate","$f347e48613385d9c$var$startingWith","replacement","startsWith","$f347e48613385d9c$var$attributeTransformers","transform","$f347e48613385d9c$var$mapAttributes","$f347e48613385d9c$var$DEFAULT","$f347e48613385d9c$var$directiveOrder","typeA","typeB","$f347e48613385d9c$var$dispatch","CustomEvent","bubbles","composed","cancelable","$f347e48613385d9c$var$tickStack","$f347e48613385d9c$var$isHolding","$f347e48613385d9c$var$nextTick","$f347e48613385d9c$var$releaseNextTicks","$f347e48613385d9c$var$walk","children","el2","skip","firstElementChild","nextElementSibling","$f347e48613385d9c$var$warn","$f347e48613385d9c$var$rootSelectorCallbacks","$f347e48613385d9c$var$initSelectorCallbacks","$f347e48613385d9c$var$rootSelectors","$f347e48613385d9c$var$allSelectors","$f347e48613385d9c$var$addRootSelector","selectorCallback","$f347e48613385d9c$var$addInitSelector","$f347e48613385d9c$var$closestRoot","includeInitSelectors","$f347e48613385d9c$var$findClosest","selectors","selector","matches","_x_teleportBack","parentElement","$f347e48613385d9c$var$initTree","walker","flushHandlers","$f347e48613385d9c$var$setClasses","$f347e48613385d9c$var$setClassesFromString","forAdd","forRemove","added","removed","classString","classList","contains","classes","classString2","$f347e48613385d9c$var$setStyles","previousStyles","value2","setProperty","removeAttribute","$f347e48613385d9c$var$once","fallback","called","$f347e48613385d9c$var$registerTransitionObject","setFunction","_x_transition","enter","during","leave","in","before","after","$f347e48613385d9c$var$transition","out","start2","stages","undoStart","undoDuring","undoEnd","interrupted","reachedBefore","reachedEnd","_x_transitioning","cancel","beforeCancels","beforeCancel","duration","transitionDuration","transitionDelay","animationDuration","$f347e48613385d9c$var$modifierValue","rawValue","evaluate2","doesntSpecify","transitioningIn","transitioningOut","wantsAll","wantsOpacity","wantsScale","opacityValue","scaleValue","origin","property","durationIn","durationOut","easing","directiveStorageMap","transformOrigin","transitionProperty","transitionTimingFunction","opacity","_x_toggleAndCascadeWithTransitions","show","hide","nextTick2","visibilityState","clickAwayCompatibleShow","_x_hidePromise","isFromCancelledTransition","closest","$f347e48613385d9c$var$closestHide","_x_hideChildren","hideAfterChildren","all","$f347e48613385d9c$var$isCloning","$f347e48613385d9c$var$skipDuringClone","$f347e48613385d9c$var$bind","_x_bindings","$f347e48613385d9c$var$reactive","char","$f347e48613385d9c$var$bindInputValue","valueA","fromModel","checked","isInteger","tagName","$f347e48613385d9c$var$updateSelect","arrayWrappedValue","selected","_x_undoAddedStyles","_x_undoAddedClasses","$f347e48613385d9c$var$isBooleanAttr","attrName","booleanAttributes","$f347e48613385d9c$var$debounce","$f347e48613385d9c$var$throttle","limit","inThrottle","$f347e48613385d9c$var$stores","$f347e48613385d9c$var$isReactive","$f347e48613385d9c$var$binds","$f347e48613385d9c$var$applyBindingsObject","cleanupRunners","$f347e48613385d9c$var$datas","reactive","release","raw","$f347e48613385d9c$var$raw","version","flushAndStopDeferringMutations","dontAutoEvaluateFunctions","disableEffectScheduling","setReactivityEngine","engine","scheduler","task","closestDataStack","skipDuringClone","addRootSelector","addInitSelector","addScopeToNode","deferMutations","mapAttributes","setEvaluator","newEvaluator","mergeProxies","findClosest","closestRoot","transition","setStyles","mutateDom","directive","throttle","initTree","nextTick","prefixed","newPrefix","plugin","magic","oldEl","newEl","hasRunThroughFirstEl","el3","callback2","storedEffect","bound","$data","bindings","getBindings","$f347e48613385d9c$var$EMPTY_OBJ","freeze","$f347e48613385d9c$var$extend","$f347e48613385d9c$var$hasOwnProperty","$f347e48613385d9c$var$hasOwn","$f347e48613385d9c$var$isArray","$f347e48613385d9c$var$isMap","$f347e48613385d9c$var$toTypeString","$f347e48613385d9c$var$isString","$f347e48613385d9c$var$isSymbol","$f347e48613385d9c$var$isObject","$f347e48613385d9c$var$objectToString","$f347e48613385d9c$var$toRawType","$f347e48613385d9c$var$isIntegerKey","$f347e48613385d9c$var$cacheStringFunction","hit","$f347e48613385d9c$var$camelizeRE","$f347e48613385d9c$var$hyphenateRE","$f347e48613385d9c$var$capitalize","$f347e48613385d9c$var$hasChanged","$f347e48613385d9c$var$targetMap","WeakMap","$f347e48613385d9c$var$effectStack","$f347e48613385d9c$var$ITERATE_KEY","$f347e48613385d9c$var$MAP_KEY_ITERATE_KEY","$f347e48613385d9c$var$uid","$f347e48613385d9c$var$cleanup","deps","$f347e48613385d9c$var$shouldTrack","$f347e48613385d9c$var$trackStack","$f347e48613385d9c$var$resetTracking","$f347e48613385d9c$var$track","$f347e48613385d9c$var$activeEffect","depsMap","dep","onTrack","$f347e48613385d9c$var$trigger","oldTarget","effects","effectsToAdd","allowRecurse","key2","onTrigger","$f347e48613385d9c$var$isNonTrackableKeys","$f347e48613385d9c$var$makeMap","expectsLowerCase","$f347e48613385d9c$var$builtInSymbols","$f347e48613385d9c$var$get2","$f347e48613385d9c$var$createGetter","$f347e48613385d9c$var$shallowGet","$f347e48613385d9c$var$readonlyGet","$f347e48613385d9c$var$shallowReadonlyGet","$f347e48613385d9c$var$arrayInstrumentations","isReadonly","shallow","$f347e48613385d9c$var$shallowReadonlyMap","$f347e48613385d9c$var$readonlyMap","$f347e48613385d9c$var$shallowReactiveMap","$f347e48613385d9c$var$reactiveMap","targetIsArray","$f347e48613385d9c$var$isRef","shouldUnwrap","$f347e48613385d9c$var$readonly","$f347e48613385d9c$var$reactive2","method","$f347e48613385d9c$var$toRaw","$f347e48613385d9c$var$set2","$f347e48613385d9c$var$createSetter","$f347e48613385d9c$var$shallowSet","hadKey","$f347e48613385d9c$var$mutableHandlers","deleteProperty","$f347e48613385d9c$var$readonlyHandlers","$f347e48613385d9c$var$toReactive","$f347e48613385d9c$var$toReadonly","$f347e48613385d9c$var$toShallow","$f347e48613385d9c$var$getProto","$f347e48613385d9c$var$get$1","isShallow","rawTarget","rawKey","has2","wrap","$f347e48613385d9c$var$has$1","$f347e48613385d9c$var$size","$f347e48613385d9c$var$add","proto","$f347e48613385d9c$var$set$1","get3","$f347e48613385d9c$var$checkIdentityKeys","$f347e48613385d9c$var$deleteEntry","$f347e48613385d9c$var$clear","hadItems","size","clear","$f347e48613385d9c$var$createForEach","thisArg","observed","$f347e48613385d9c$var$createIterableMethod","targetIsMap","isPair","innerIterator","isKeyOnly","$f347e48613385d9c$var$createReadonlyMethod","$f347e48613385d9c$var$mutableInstrumentations","$f347e48613385d9c$var$shallowInstrumentations","$f347e48613385d9c$var$readonlyInstrumentations","$f347e48613385d9c$var$shallowReadonlyInstrumentations","$f347e48613385d9c$var$createInstrumentationGetter","instrumentations","$f347e48613385d9c$var$iteratorMethods","$f347e48613385d9c$var$mutableCollectionHandlers","$f347e48613385d9c$var$readonlyCollectionHandlers","$f347e48613385d9c$var$createReactiveObject","baseHandlers","collectionHandlers","proxyMap","existingProxy","targetType","isExtensible","$f347e48613385d9c$var$targetTypeMap","rawType","proxy","__v_isRef","evaluateLater2","firstTime","_x_refs_proxy","$f347e48613385d9c$var$getArrayOfRefObject","refObjects","currentEl","_x_refs","$f347e48613385d9c$var$globalIdMemo","$f347e48613385d9c$var$findAndIncrementId","$f347e48613385d9c$var$warnMissingPluginMagic","magicName","slug","directiveName","root","_x_ids","innerGet","evaluateInnerSet","innerSet","__placeholder","_x_model","_x_removeModelListeners","outerGet","outerSet","querySelector","clone2","content","cloneNode","_x_teleport","_x_forwardEvents","eventName","stopPropagation","appendChild","$f347e48613385d9c$var$handler","$f347e48613385d9c$var$on","listenerTarget","wrapHandler","wrapper","passive","capture","preventDefault","offsetHeight","_x_isShown","removeEventListener","$f347e48613385d9c$var$isKeyEvent","$f347e48613385d9c$var$isListeningForASpecificKeyThatHasntBeenPressed","keyModifiers","debounceIndex","$f347e48613385d9c$var$isNumeric","$f347e48613385d9c$var$keyToModifiers","selectedSystemKeyModifiers","systemKeyModifiers","modifier","activelyPressedKeyModifiers","nextModifier","modifierToKeyMap","ctrl","slash","space","spacebar","cmd","esc","up","down","period","equal","$f347e48613385d9c$var$safeParseNumber","parseFloat","$f347e48613385d9c$var$isNumeric2","$f347e48613385d9c$var$getIterationScopeVariables","iteratorNames","item","items","scopeVariables","collection","$f347e48613385d9c$var$handler2","$f347e48613385d9c$var$warnMissingPluginDirective","directiveName2","evaluateAssignment","assigmentFunction","currentValue","multiple","selectedOptions","removeListener","$event","rightSideOfExpression","evaluateSetModel","_x_forceModelUpdate","activeElement","isSameNode","textContent","innerHTML","bindingProviders","_x_keyExpression","magicContext","dataProviderContext","reactiveData","undo","_x_doHide","_x_doShow","display","removeProperty","toggle","$f347e48613385d9c$var$parseForExpression","forIteratorRE","inMatch","iteratorMatch","evaluateItems","evaluateKey","_x_prevKeys","_x_lookup","lookup","prevKeys","scopes","adds","moves","removes","sames","prevIndex","keyInSpot","keyForSpot","elInSpot","elForSpot","marker","_x_currentIfEl","lastKey2","lastEl","importNode","templateEl","values","_x_undoIf","_isEffect","$f347e48613385d9c$var$createReactiveEffect","active","lazy","onStop","$87debed29d531a5f$var$onCopy","$87debed29d531a5f$var$copy","clipboard","writeText","$87debed29d531a5f$var$Clipboard","getCopyContent","clickHandler","configure","config","onCopy","$1feffb77eb3cfa15$exports","$1feffb77eb3cfa15$var$Prism","_self","lang","uniqueId","plainTextGrammar","manual","Prism","disableWorkerMessageHandler","util","encode","tokens","Token","alias","objId","deepClone","visited","getLanguage","className","setLanguage","currentScript","scripts","isActive","defaultActivation","no","plain","plaintext","txt","extend","redef","insertBefore","inside","insert","grammar","token","newToken","old","DFS","propertyType","plugins","highlightAll","highlightAllUnder","container","env","hooks","highlightElement","insertHighlightedCode","highlightedCode","Worker","worker","filename","onmessage","postMessage","immediateClose","highlight","tokenize","tokenList","LinkedList","addAfter","head","matchGrammar","startNode","startPos","rematch","patterns","cause","patternObj","lookbehind","greedy","pattern","global","flags","currentNode","pos","reach","removeCount","matchPattern","to","matchStr","removeFrom","prev","removeRange","nestedRematch","toArray","array","callbacks","matchedStr","lookbehindLength","newNode","tag","aliases","close","script","highlightAutomaticallyCallback","WorkerGlobalScope","$768c2f4c151a0363$var$isObject","$768c2f4c151a0363$var$extend","markup","includedCdataInside","def","html","mathml","svg","xml","ssml","atom","rss","css","addInlined","addAttribute","clike","javascript","js","msMatchesSelector","webkitMatchesSelector","EXTENSIONS","STATUS_ATTR","STATUS_LOADING","STATUS_LOADED","SELECTOR","pre","success","xhr","extension","autoloader","parseRange","comma","lines","max","min","XMLHttpRequest","open","onreadystatechange","status","responseText","statusText","fileHighlight","logged","Prism1","envVars","commandAfterHeredoc","insideString","bash","entity","variable","toBeCopied","sh","shell","PLUGIN_NAME","NEW_LINE_EXP","lineNumbers","getLine","lineNumberRows","lineNumberStart","lineNumberEnd","lineIndex","resize","resizeElements","assumeViewportIndependence","lastWidth","lineNumbersWrapper","linesNum","counterReset","whiteSpace","codeStyles","currentStyle","infos","codeElement","lineNumberSizer","codeLines","oneLinerHeight","height","lineHeights","sizer","info","line","childIndex","lineNumber","$768c2f4c151a0363$var$ssrDocument","blur","getElementById","childNodes","createElementNS","hash","hostname","href","protocol","$768c2f4c151a0363$export$39b482c5e57630a8","doc","$768c2f4c151a0363$var$ssrWindow","history","replaceState","pushState","go","back","getPropertyValue","Image","screen","matchMedia","cancelAnimationFrame","$768c2f4c151a0363$export$407448d2b89b1813","win","$3e0e2b092da8f124$export$7ccc53e8f1e7dfc5","$3e0e2b092da8f124$export$4368d992c4eafac0","$3e0e2b092da8f124$export$35e795649ee09318","$3e0e2b092da8f124$export$9e5f44173e64f162","noExtend","nextSource","HTMLElement","keysArray","nextIndex","nextKey","desc","__swiper__","$3e0e2b092da8f124$export$2408f22a0fab9ae5","varName","varValue","$3e0e2b092da8f124$export$ffb5f4729a158638","_ref","time","swiper","targetPosition","side","startPosition","startTime","speed","wrapperEl","scrollSnapType","cssModeFrameID","isOutOfBound","animate","getTime","currentPosition","easeProgress","cos","progress","PI","scrollTo","overflow","$3e0e2b092da8f124$export$f1e1789686576879","$3e0e2b092da8f124$export$db3b6bfb95261072","$3e0e2b092da8f124$export$882b5998b3b9117c","$3e0e2b092da8f124$export$39b482c5e57630a8","child","previousSibling","$3e0e2b092da8f124$export$407448d2b89b1813","parents","$3e0e2b092da8f124$export$2d1720544b23b823","includeMargins","$6946bfb4689eabba$var$getSupport","$6946bfb4689eabba$var$calcSupport","document1","smoothScroll","touch","DocumentTouch","$6946bfb4689eabba$var$processLazyPreloader","imageEl","destroyed","slideEl","isElement","slideClass","lazyEl","lazyPreloaderClass","$6946bfb4689eabba$var$unlazy","slides","$6946bfb4689eabba$var$preload","amount","lazyPreloadPrevNext","slidesPerView","slidesPerViewDynamic","ceil","activeIndex","grid","rows","preloadColumns","activeColumn","column","slideIndexLastInView","rewind","loop","realIndex","$6946bfb4689eabba$var$transitionEmit","runCallbacks","direction","step","previousIndex","$6946bfb4689eabba$var$onTouchStart","touchEventsData","evCache","touches","enabled","simulateTouch","pointerType","animating","preventInteractionOnTransition","cssMode","loopFix","originalEvent","targetEl","touchEventsTarget","which","button","isTouched","isMoved","swipingClassHasValue","noSwipingClass","eventPath","composedPath","shadowRoot","noSwipingSelector","isTargetShadow","noSwiping","$6946bfb4689eabba$var$closestElement","__closestFrom","assignedSlot","getRootNode","allowClick","swipeHandler","currentX","pageX","currentY","pageY","startX","startY","edgeSwipeDetection","iOSEdgeSwipeDetection","edgeSwipeThreshold","iOSEdgeSwipeThreshold","allowTouchCallbacks","isScrolling","startMoving","touchStartTime","updateSize","swipeDirection","threshold","allowThresholdMove","focusableElements","shouldPreventDefault","allowTouchMove","touchStartPreventDefault","touchStartForcePreventDefault","isContentEditable","freeMode","onTouchStart","$6946bfb4689eabba$var$onTouchMove","loopFixed","rtlTranslate","rtl","pointerIndex","findIndex","cachedEv","pointerId","targetTouch","preventedByNestedSwiper","prevX","prevY","touchReleaseOnEdges","isVertical","maxTranslate","minTranslate","targetTouches","diffX","diffY","sqrt","touchAngle","isHorizontal","atan2","zoom","touchMoveStopPropagation","nested","diff","touchesDiff","previousX","previousY","oneWayMovement","touchRatio","prevTouchesDirection","touchesDirection","isLoop","startTranslate","getTranslate","setTransition","allowMomentumBounce","grabCursor","allowSlideNext","allowSlidePrev","setGrabCursor","setTranslate","currentTranslate","disableParentSwiper","resistanceRatio","centeredSlides","activeSlideIndex","resistance","followFinger","watchSlidesProgress","updateActiveIndex","updateSlidesClasses","onTouchMove","updateProgress","$6946bfb4689eabba$var$onTouchEnd","currentPos","browser","isSafari","isWebView","slidesGrid","touchEndTime","timeDiff","pathTree","updateClickedSlide","lastClickTime","onTouchEnd","stopIndex","groupSize","slidesSizesGrid","slidesPerGroupSkip","slidesPerGroup","increment","rewindFirstIndex","rewindLastIndex","isBeginning","virtual","isEnd","ratio","longSwipesMs","longSwipes","slideTo","longSwipesRatio","shortSwipes","navigation","nextEl","prevEl","$6946bfb4689eabba$var$onResize","breakpoints","setBreakpoint","snapGrid","isVirtual","updateSlides","isVirtualLoop","slideToLoop","autoplay","paused","resizeTimeout","resume","watchOverflow","checkOverflow","$6946bfb4689eabba$var$onClick","preventClicks","preventClicksPropagation","stopImmediatePropagation","$6946bfb4689eabba$var$onScroll","previousTranslate","scrollLeft","scrollTop","translatesDiff","$6946bfb4689eabba$var$onLoad","autoHeight","update","$6946bfb4689eabba$var$dummyEventAttached","$6946bfb4689eabba$var$dummyEventListener","$6946bfb4689eabba$var$events","device","domMethod","onClick","onScroll","updateOnWindowResize","ios","android","onLoad","$6946bfb4689eabba$var$isGridEnabled","$6946bfb4689eabba$export$4368d992c4eafac0","initialSlide","resizeObserver","createElements","url","setWrapperSize","virtualTranslate","breakpointsBase","spaceBetween","slidesPerGroupAuto","centeredSlidesBounds","slidesOffsetBefore","slidesOffsetAfter","normalizeSlideIndex","centerInsufficientSlides","roundLengths","uniqueNavElements","slideToClickedSlide","loopedSlides","loopPreventsSliding","passiveListeners","maxBackfaceHiddenSlides","containerModifierClass","slideActiveClass","slideVisibleClass","slideNextClass","slidePrevClass","wrapperClass","runCallbacksOnInit","_emitClasses","$6946bfb4689eabba$var$prototypes","eventsEmitter","handler","priority","eventsListeners","once","onceHandler","off","__emitterProxy","onAny","eventsAnyListeners","offAny","eventHandler","unshift","eventsArray","slideSize","getDirectionLabel","getDirectionPropertyValue","label","slidesEl","swiperSize","wrongRTL","previousSlidesLength","slidesLength","offsetBefore","offsetAfter","previousSnapGridLength","previousSlidesGridLength","slidePosition","prevSlideSize","virtualSize","marginLeft","marginRight","marginBottom","marginTop","gridEnabled","initSlides","shouldResetSlideSize","slide","updateSlide","slideStyles","currentTransform","currentWebKitTransform","webkitTransform","paddingLeft","paddingRight","boxSizing","floor","swiperSlideSize","updateWrapperSize","newSlidesGrid","slidesGridItem","groups","slidesBefore","slidesAfter","slideIndex","allSlidesSize","slideSizeValue","maxSnap","snap","allSlidesOffset","snapIndex","addToSnapGrid","addToSlidesGrid","updateSlidesOffset","backFaceHiddenClass","hasClassBackfaceClassAdded","updateAutoHeight","activeSlides","newHeight","getSlideByIndex","getSlideIndexByData","visibleSlides","minusOffset","offsetLeft","offsetTop","swiperSlideOffset","cssOverflowAdjustment","updateSlidesProgress","offsetCenter","visibleSlidesIndexes","slideOffset","slideProgress","originalSlideProgress","slideBefore","slideAfter","originalProgress","multiplier","progressLoop","wasBeginning","wasEnd","isBeginningRounded","isEndRounded","firstSlideIndex","lastSlideIndex","firstSlideTranslate","lastSlideTranslate","translateMax","translateAbs","activeSlide","getFilteredSlide","nextSlide","nextEls","prevSlide","prevEls","previousElementSibling","emitSlidesClasses","newActiveIndex","previousRealIndex","previousSnapIndex","getVirtualRealIndex","aIndex","$6946bfb4689eabba$var$getActiveIndexByTranslate","initialized","slideFound","clickedSlide","clickedIndex","axis","matrix","curTransform","transformMatrix","curStyle","$3e0e2b092da8f124$var$getComputedStyle","WebKitCSSMatrix","MozTransform","OTransform","MsTransform","msTransform","m41","m42","byController","x","y","translateTo","translateBounds","internal","newTranslate","isH","support","behavior","onTranslateToWrapperTransitionEnd","transitionStart","transitionEnd","initial","normalizedTranslate","normalizedGrid","normalizedGridNext","_immediateVirtual","_cssModeVirtualInitialSet","onSlideToWrapperTransitionEnd","newIndex","slideNext","perGroup","_clientLeft","clientLeft","slidePrev","normalize","normalizedSnapGrid","prevSnap","prevSnapIndex","slideReset","slideToClosest","currentSnap","nextSnap","slideToIndex","slideSelector","getSlideIndex","loopCreate","slideRealIndex","_temp","byMousewheel","prependSlidesIndexes","appendSlidesIndexes","isNext","isPrev","slidesPrepended","slidesAppended","swiperLoopMoveDOM","recalcSlides","currentSlideTranslate","newSlideTranslate","controller","control","loopParams","loopDestroy","newSlidesOrder","swiperSlideIndex","moving","isLocked","__preventObserver__","cursor","unsetGrabCursor","attachEvents","detachEvents","breakpoint","getBreakpoint","currentBreakpoint","breakpointParams","breakpointOnlyParams","originalParams","wasMultiRow","isMultiRow","wasEnabled","emitContainerClasses","fill","wasModuleEnabled","isModuleEnabled","disable","enable","directionChanged","needsReLoop","changeDirection","isEnabled","containerEl","currentHeight","points","point","substr","wasLocked","lastSlideRightEdge","addClasses","classNames","suffixes","$6946bfb4689eabba$var$prepareClasses","resultClasses","removeClasses","$6946bfb4689eabba$var$extendedDefaults","$6946bfb4689eabba$export$25ce5a424b770e84","overrides","swipers","newParams","$6946bfb4689eabba$var$calcDevice","platform","ua","screenWidth","screenHeight","ipad","ipod","iphone","macos","iPadScreens","os","$6946bfb4689eabba$var$calcBrowser","needPerspectiveFix","major","minor","num","__modules__","allModulesParams","mod","extendParams","moduleParamName","moduleParams","auto","swiperParams","passedParams","velocity","trunc","clickTimeout","velocities","imagesToLoad","imagesLoaded","setProgress","getSlideClasses","updates","view","exact","spv","breakLoop","translated","newDirection","needUpdate","currentDirection","changeLanguageDirection","mount","mounted","getWrapperSelector","slideSlots","hostEl","destroy","deleteInstance","cleanStyles","extendDefaults","newDefaults","extendedDefaults","defaults","installModule","$d6f86baea06bd282$export$db3b6bfb95261072","checkProps","$452edee79264d178$export$db3b6bfb95261072","prototypeGroup","protoMethod","animationFrame","resizeHandler","createObserver","ResizeObserver","newWidth","_ref2","contentBoxSize","contentRect","inlineSize","blockSize","removeObserver","unobserve","orientationChangeHandler","attach","WebkitMutationObserver","observerUpdate","characterData","observeParents","observeSlideChildren","containerParents","$55f027b5fdc6d312$exports","globalInstall","define","amd","regDescriptors","regCssFit","regCssObject","parentFit","getParent","parentSel","jQuery","getFit","tmpMatch","parentObj","fontFamily","fit","_lazysizesParentFit","_lazysizesParentContainer","objectFit","getImageRatio","media","_lsMedia","calculateSize","displayRatio","imageRatio","retWidth","fitObj","fitElem","$3dc78591d6474e19$var$_extends","$3dc78591d6474e19$var$isSupported","$3dc78591d6474e19$var$isNode","$3dc78591d6474e19$var$isSvg","image","currentSrc","$3dc78591d6474e19$var$getImagesFromSelector","NodeList","isPrototypeOf","$3dc78591d6474e19$var$createOverlay","background","overlay","$3dc78591d6474e19$var$cloneTarget","_template$getBounding","pageYOffset","pageXOffset","position","$3dc78591d6474e19$var$createCustomEvent","eventParams","customEvent","initCustomEvent","$3dc78591d6474e19$var$styleInject","ref","insertAt","firstChild","styleSheet","cssText","createTextNode","mediumZoom","newImages","imagesAccumulator","currentSelector","newImage","images","eventListeners","_animate","viewportWidth","viewportHeight","zoomOptions","margin","_zoomContainer$getBou","zoomContainer","zoomTarget","zoomedHd","naturalHeight","_zoomTarget$getBoundi","scale","translateX","translateY","zoomed","_images","isAnimating","_handleOpenEnd","onerror","clearInterval","getZoomTargetSize","loadEventListener","_handleCloseEnd","removeChild","scrollOffset","keyCode","currentScroll","newOptions","detach","imagesToDetach","eventListener","getOptions","getImages","getZoomedImage","hideOnClick","disabledClass","hiddenClass","lockClass","navigationDisabledClass","makeElementsArray","getEl","toggleEl","disabled","subEl","onPrevClick","onNextClick","initButton","destroyButton","_s","isHidden","pagination","clickable","raf","autoplayTimeLeft","wasPaused","pausedByTouch","touchStartTimeout","slideChanged","pausedByInteraction","timeLeft","waitForTransition","disableOnInteraction","stopOnLastSlide","reverseDirection","pauseOnMouseEnter","autoplayDelayTotal","autoplayDelayCurrent","autoplayStartTime","onTransitionEnd","calcTimeLeft","getSlideDelay","activeSlideEl","delayForce","currentSlideDelay","proceed","stop","pause","onVisibilityChange","onPointerEnter","onPointerLeave","attachMouseEvents","detachMouseEvents","attachDocumentEvents","detachDocumentEvents","bulletSize","pfx","bulletElement","renderBullet","renderProgressbar","renderFraction","renderCustom","progressbarOpposite","dynamicBullets","dynamicMainBullets","formatFractionCurrent","formatFractionTotal","bulletClass","bulletActiveClass","modifierClass","currentClass","totalClass","progressbarFillClass","progressbarOppositeClass","clickableClass","horizontalClass","verticalClass","paginationDisabledClass","bullets","dynamicBulletIndex","isPaginationDisabled","setSideBullets","bulletEl","onBulletClick","newSlideIndex","currentSlideIndex","total","firstIndex","midIndex","classesToRemove","flat","bullet","bulletIndex","firstDisplayedBullet","lastDisplayedBullet","dynamicBulletsLength","bulletsOffset","offsetProp","subElIndex","fractionEl","totalEl","progressbarDirection","scaleX","scaleY","progressEl","paginationHTML","numberOfBullets","scrollbar","cookieStorage","getItem","cookies","cookie","decodeURIComponent","setItem","encodeURIComponent","fetch","json","persist","storage","localStorage","$dc5e95bf63b2a32e$var$storageHas","$dc5e95bf63b2a32e$var$storageSet","as","using","$6c359160e6887998$exports","$ab905b70bbf6a740$exports","$b98b552440c412c7$exports","$5223709f7c606ea7$exports","$5223709f7c606ea7$var$isObjectOrArrayOrFunction","$5223709f7c606ea7$var$_merge","sourceVal","targetVal","$835decef46f26c5e$exports","reduceRight","acc","$1f358bf4e51305f6$exports","arr1","$18a18427f3d6914e$exports","comparator","$0012e4ff1c99fe7e$exports","$0012e4ff1c99fe7e$var$valToNumber","$d5a032e94ef65cbb$exports","excluded","sourceKeys","$c0c10d49c54a249b$exports","$c0e6e601e5d1a93f$exports","userToken","$285f5e4df955497a$exports","$285f5e4df955497a$var$lib","addRefinement","refinementList","isRefined","valueAsString","facetRefinement","removeRefinement","clearRefinement","toggleRefinement","refinementType","hasChanged","newRefinementList","memo","facetList","refinementValue","containsRefinements","$b98b552440c412c7$var$isEqualNumericRefinement","every","$b98b552440c412c7$var$SearchParameters","newParameters","_parseNumbers","facets","disjunctiveFacets","hierarchicalFacets","facetsRefinements","facetsExcludes","disjunctiveFacetsRefinements","numericRefinements","tagRefinements","hierarchicalFacetsRefinements","paramName","isKeyKnown","PARAMETERS","isValueDefined","partialState","numberKeys","parsedValue","insideBoundingBox","geoRect","operators","operator","parsedValues","vPrime","make","facet","rootPath","currentRefinement","getHierarchicalRefinement","clearRefinements","toggleHierarchicalFacetRefinement","validate","currentState","parameters","tagFilters","numericFilters","patch","_clearNumericRefinements","setQueryParameters","clearTags","setIndex","setQuery","newQuery","query","setPage","newPage","page","setFacets","setDisjunctiveFacets","setHitsPerPage","hitsPerPage","setTypoTolerance","typoTolerance","addNumericRefinement","isNumericRefined","getConjunctiveRefinements","facetName","isConjunctiveFacet","getDisjunctiveRefinements","isDisjunctiveFacet","getExcludeRefinements","removeNumericRefinement","paramValue","op","getNumericRefinements","getNumericRefinement","newNumericRefinements","operatorList","outValues","addFacet","addDisjunctiveFacet","addHierarchicalFacet","hierarchicalFacet","isHierarchicalFacet","addFacetRefinement","addExcludeRefinement","addDisjunctiveFacetRefinement","addTagRefinement","isTagRefined","modification","removeFacet","removeDisjunctiveFacet","removeHierarchicalFacet","removeFacetRefinement","removeExcludeRefinement","removeDisjunctiveFacetRefinement","removeTagRefinement","toggleFacetRefinement","toggleConjunctiveFacetRefinement","toggleDisjunctiveFacetRefinement","toggleExcludeFacetRefinement","separator","_getHierarchicalFacetSeparator","getHierarchicalFacetByName","lastIndexOf","addHierarchicalFacetRefinement","isHierarchicalFacetRefined","removeHierarchicalFacetRefinement","toggleTagRefinement","isFacetRefined","isExcludeRefined","isDisjunctiveFacetRefined","refinements","isOperatorDefined","isAttributeValueDefined","$b98b552440c412c7$var$findArray","getRefinedDisjunctiveFacets","disjunctiveNumericRefinedFacets","getRefinedHierarchicalFacets","getUnrefinedDisjunctiveFacets","refinedFacets","managedParameters","getQueryParams","queryParams","setQueryParameter","parameter","nextWithNumbers","previousPlainObject","nextPlainObject","previous","isPreviousValueDefined","isNextValueDefined","resetPage","_getHierarchicalFacetSortBy","sortBy","_getHierarchicalRootPath","_getHierarchicalShowParentLevel","showParentLevel","hierarchicalFacetName","getHierarchicalFacetBreadcrumb","refinement","$b9a4763f536f329f$exports","$e49c9a312dceb9b5$exports","iteratees","orders","criteria","iteratee","$e49c9a312dceb9b5$var$compareAscending","valIsDefined","valIsNull","othIsDefined","othIsNull","$75eb274710432a4f$exports","$d38a2c9c99bdf9ed$exports","$42d739a744cbfc0c$exports","defaultInstructions","sortInstruction","matchingDefault","defaultInstruction","$aaf73120eb76b950$exports","$b9a4763f536f329f$var$escapeFacetValue","escapeFacetValue","unescapeFacetValue","$b9a4763f536f329f$var$unescapeFacetValue","$6b16ac2b1f94f8b3$exports","hierarchicalFacetResult","hierarchicalFacetIndex","hierarchicalFacetRefinement","hierarchicalSeparator","hierarchicalRootPath","hierarchicalShowParentLevel","rootExhaustive","facetResult","exhaustive","results","hierarchicalTree","currentHierarchicalLevel","level","picked","facetValue","tuple","parentPath","facetCount","$6b16ac2b1f94f8b3$var$unescapeFacetValue","escapedValue","$6b16ac2b1f94f8b3$var$escapeFacetValue","$b9a4763f536f329f$var$getIndices","indices","$b9a4763f536f329f$var$assignFacetStats","dest","facetStats","stats","$b9a4763f536f329f$var$SearchResults","mainSubResponse","_rawResults","processingTimeMS","sum","facetsIndices","disjunctiveFacetsIndices","nextDisjunctiveResult","mainFacets","facetKey","facetValueObject","facetNames","facetIndex","idxAttributeName","exhaustiveFacetsCount","isFacetDisjunctive","isFacetConjunctive","facets_stats","disjunctiveFacet","dfacet","facetResults","attributeIndex","dataFromMainRequest","refinedFacet","excludes","_state","$b9a4763f536f329f$var$getFacetStatsIfAvailable","$b9a4763f536f329f$var$getRefinement","resultsFacets","getFacetByName","predicate","DEFAULT_SORT","getFacetValues","facetValues","$b9a4763f536f329f$var$extractNormalizedFacetValues","isExcluded","facetOrdering","$b9a4763f536f329f$var$recSort","sortFn","childNode","sortedChildren","order","ordering","orderedFacets","remainingFacets","reverseOrder","sortRemainingBy","renderingContent","getFacetStats","getRefinements","facetDeclaration","rootFacet","intermediateFacet","newFacet","numericValue","$b57af9a08b47e48e$exports","$d2f3ec49777c2f55$exports","$d2f3ec49777c2f55$var$EventEmitter","_events","_maxListeners","$d2f3ec49777c2f55$var$isFunction","$d2f3ec49777c2f55$var$isObject","defaultMaxListeners","setMaxListeners","er","listeners","addListener","newListener","warned","trace","fired","g","removeAllListeners","listenerCount","evlistener","emitter","$6c0c921167d16aa0$exports","$b57af9a08b47e48e$var$DerivedHelper","mainHelper","main","lastResults","ctor","superCtor","detachDerivedHelper","getModifiedState","$c2fb9d98022cd5ed$exports","$c2fb9d98022cd5ed$var$sortObject","localeCompare","curr","$c2fb9d98022cd5ed$var$requestBuilder","_getQueries","queries","_getHitsSearchParams","_getDisjunctiveFacetSearchParams","filtersMap","hasHierarchicalFacetFilter","filteredFacetFilters","facetFilters","facetFilter","filtered","filterValue","_getHitsHierarchicalFacetsAttributes","_getFacetFilters","_getNumericFilters","_getTagFilters","additionalParams","hierarchicalRootLevel","analytics","clickAnalytics","_getDisjunctiveHierarchicalFacetAttribute","vs","orFilters","attributeToRefine","attributesIndex","allAttributes","hierarchicalRefinement","newAttributes","rootLevel","parentLevel","getSearchForFacetQuery","maxFacetHits","stateForSearchForFacetValues","searchForFacetSearchParameters","facetQuery","$hUnSM","$ab905b70bbf6a740$require$escapeFacetValue","$ab905b70bbf6a740$var$AlgoliaSearchHelper","client","addAlgoliaAgent","setClient","_queryId","_lastQueryIdReceived","derivedHelpers","_currentNbQueries","$ab905b70bbf6a740$var$setCurrentPage","_change","isPageReset","$ab905b70bbf6a740$var$getCurrentPage","$6c359160e6887998$var$algoliasearchHelper","$049fad80b24500a5$export$2fde5bffc340821e","widgets","links","widget","_ref$connector","connector","$75a4fd312a615f00$var$_typeof","$75a4fd312a615f00$export$53b83ca8eaab0383","$75a4fd312a615f00$var$getTag","$6b9ab3bbb605ca60$export$f70730c3d1fc524e","$cdcc1435cfc6072b$var$ownKeys","$cdcc1435cfc6072b$var$_objectSpread","_search","onlyWithDerivedHelpers","searchOnlyWithDerivedHelpers","getQuery","searchOnce","cb","tempState","_originalResponse","findAnswers","derivedHelper","derivedState","attributesForPrediction","nbHits","errorMessage","initIndex","queryLanguages","searchForFacetValues","userState","searchForFacetValuesPromise","clientHasSFFV","clientHasInitIndex","isDisjunctive","algoliaQuery","response","facetHits","addDisjunctiveRefine","addRefine","addFacetExclusion","addExclude","addTag","removeDisjunctiveRefine","removeRefine","removeFacetExclusion","removeExclude","removeTag","toggleFacetExclusion","toggleExclude","toggleRefine","toggleTag","nextPage","previousPage","setCurrentPage","setState","newState","overrideStateWithoutTriggeringChangeEvent","hasRefinements","isDisjunctiveRefined","hasTag","hasTagRefinements","getIndex","getCurrentPage","getPage","getTags","conjRefinements","excludeRefinements","disjRefinements","states","mainQueries","queriesCount","helper","derivedQueries","derivedStateQueries","queryId","_dispatchAlgoliaResponse","_dispatchAlgoliaError","specificResults","formattedResponse","containsRefinement","_hasDisjunctiveRefinements","disjunctiveRefinements","clearCache","newClient","getClient","derive","hasPendingRequests","AlgoliaSearchHelper","SearchParameters","SearchResults","$cdcc1435cfc6072b$var$mergeWithRest","ruleContexts","$cdcc1435cfc6072b$var$_objectWithoutProperties","$cdcc1435cfc6072b$var$_objectWithoutPropertiesLoose","sourceSymbolKeys","propertyIsEnumerable","$cdcc1435cfc6072b$var$mergeRuleContexts","$cdcc1435cfc6072b$export$8049d91f25899769","nextFacets","$dba781b2f4cd6c52$export$8793edee2d425525","$82c6985a45454c6e$var$ownKeys","$82c6985a45454c6e$var$_objectSpread","$82c6985a45454c6e$var$_defineProperty","$82c6985a45454c6e$var$withUsage","$82c6985a45454c6e$var$getInitialSearchParameters","widgetParams","searchParameters","$82c6985a45454c6e$export$2e2bcd8739ae039","renderFn","unmountFn","connectorState","$$type","initOptions","instantSearchInstance","getWidgetRenderState","renderOptions","dispose","getRenderState","renderState","_renderState$configur","widgetRenderState","refine","nextSearchParameters","getWidgetSearchParameters","uiState","getWidgetUiState","$d384af5640276fb9$var$ownKeys","$d384af5640276fb9$var$_objectSpread","$450fc775b2f7950e$var$n","$450fc775b2f7950e$export$41c562ebe57d11e2","$450fc775b2f7950e$var$u","$450fc775b2f7950e$var$t","$450fc775b2f7950e$var$o","$450fc775b2f7950e$var$f","$450fc775b2f7950e$var$e","$450fc775b2f7950e$var$c","$450fc775b2f7950e$var$s","u","$450fc775b2f7950e$var$a","$450fc775b2f7950e$export$c8a8987d4410bf2d","defaultProps","$450fc775b2f7950e$var$v","__k","__","__b","__e","__d","__c","__h","__v","vnode","$450fc775b2f7950e$export$7d1e3a5e95ceca43","$450fc775b2f7950e$export$ffb0004e005737fa","$450fc775b2f7950e$export$16fa2f45be04daa8","$450fc775b2f7950e$var$_","$450fc775b2f7950e$var$b","$450fc775b2f7950e$var$g","__r","debounceRendering","__P","$450fc775b2f7950e$var$j","__n","ownerSVGElement","$450fc775b2f7950e$var$z","$450fc775b2f7950e$var$k","$450fc775b2f7950e$var$w","h","w","C","$450fc775b2f7950e$var$m","$450fc775b2f7950e$var$A","$450fc775b2f7950e$var$N","unmount","$450fc775b2f7950e$var$M","componentWillUnmount","nextSibling","$450fc775b2f7950e$var$$","$450fc775b2f7950e$var$H","$450fc775b2f7950e$var$T","$450fc775b2f7950e$var$I","A","$","H","contextType","__E","$450fc775b2f7950e$var$O","__s","getDerivedStateFromProps","componentWillMount","componentDidMount","componentWillReceiveProps","shouldComponentUpdate","componentWillUpdate","componentDidUpdate","getChildContext","getSnapshotBeforeUpdate","$450fc775b2f7950e$var$L","localName","is","dangerouslySetInnerHTML","__html","$450fc775b2f7950e$var$C","diffed","$450fc775b2f7950e$export$b3890eb0ae9dca99","getDerivedStateFromError","componentDidCatch","forceUpdate","$f8c99c41bd600645$exports","$9efb32683b3714cf$var$ownKeys","$9efb32683b3714cf$var$_objectSpread","$35cb44110fb52d3a$var$ownKeys","$35cb44110fb52d3a$var$_objectSpread","$86d1c5f90fff2f24$export$adc2a8e09aa583ee","rendering","usage","$61d6f7a445550123$export$44b4521aa38272f2","payload","btoa","$61d6f7a445550123$export$706ea24b0964bee9","serialized","atob","$35748c0c4c0cd014$var$_typeof","hasOwn","argType","inner","$35748c0c4c0cd014$var$buildPayloads","widgetType","methodName","isSearchStalled","eventType","hits","hitsArray","queryID","__queryID","hitsChunks","$35748c0c4c0cd014$var$chunk","chunkSize","chunks","objectIDsByChunk","batch","objectID","positionsByChunk","__position","insightsMethod","objectIDs","positions","$fcb98432e82f2808$var$htmlEntities","$fcb98432e82f2808$var$regexUnescapedHtml","$fcb98432e82f2808$var$regexHasUnescapedHtml","$fcb98432e82f2808$var$htmlCharacters","$fcb98432e82f2808$var$regexEscapedHtml","$fcb98432e82f2808$var$regexHasEscapedHtml","$fcb98432e82f2808$export$e8bacd2802a88316","character","$ea7b3b8ada1be339$var$_extends","$ea7b3b8ada1be339$var$ownKeys","$ea7b3b8ada1be339$var$_objectSpread","$ea7b3b8ada1be339$var$_defineProperty","$ea7b3b8ada1be339$export$1e7338a8952eaf35","highlightPreTag","highlightPostTag","$ea7b3b8ada1be339$var$recursiveEscape","$cf783656762e2f5f$var$ownKeys","$cf783656762e2f5f$var$_objectSpread","$cf783656762e2f5f$var$_defineProperty","$cf783656762e2f5f$var$withUsage","$cf783656762e2f5f$export$2e2bcd8739ae039","sendEvent","bindEvent","_ref$escapeHTML","escapeHTML","_ref$transformItems","transformItems","payloads","_isSearchStalled","sendEventToInsights","__escaped","_highlightResult","_snippetResult","$4198f5cd959b5a7d$var$isPrimitive","$4198f5cd959b5a7d$export$248d38f6296296c5","first","second","_i","_Object$keys","$6ebfb0054e7d59cd$exports","$62bac08dc0d55792$exports","rIsWhitespace","rNewline","rCr","rSlash","rLineSep","rParagraphSep","tagChange","scan","tagType","seenTag","lineStart","otag","ctag","addBuf","filterLine","haveSeenTag","noNewLine","lineIsWhitespace","isAllWhitespace","changeDelimiters","closeIndex","allowedInSuper","wrapMain","stringifyPartials","stringifySubstitutions","serialNo","chooseMethod","createPartial","tripleStache","write","generate","tree","walk","asString","makeTemplate","makePartials","Function","codegen","nodes","inPartial","nodelist","buildTree","kind","customTags","instructions","opener","isOpener","isCloser","sectionTags","cacheKey","$71e7bf294e7fa662$var$n","$71e7bf294e7fa662$var$t","$55e67b5a79daa940$export$c0bb0b647f701bb5","$a27ded96fb67a33a$export$a274e22fb40f762e","$fbb6a7bc8836e7ee$exports","$fbb6a7bc8836e7ee$var$_extends","$daf589439909d1f5$exports","$4a8c38fb0b611662$exports","$0eb656e5db79eb8f$var$_excluded","$4411ba54e9717fdd$export$57a0c6fc80bec05c","highlightedTagName","isHighlighted","nonHighlightedTagName","highlighted","nonHighlighted","_ref4","_ref4$highlightedTagN","_ref4$nonHighlightedT","_ref4$separator","_ref4$classNames","partIndex","isLastPart","subPart","subPartIndex","$39c2e329ad4e993d$var$_extends","$39c2e329ad4e993d$export$39dbc3f558091353","_ref$classNames","$39c2e329ad4e993d$var$_objectWithoutProperties","$39c2e329ad4e993d$var$_objectWithoutPropertiesLoose","$d11e96c67ca5e4d5$export$e04d28e65b830ebf","highlightedValue","splitByPreTag","firstValue","splitByPostTag","$4dc7e5862e881a8a$export$d14846335956eefa","$87f1e5e787fe4082$export$45b10814cc054894","$28f44055999237d0$var$_extends","$28f44055999237d0$export$39dbc3f558091353","cssClasses","$28f44055999237d0$var$_objectWithoutProperties","$28f44055999237d0$var$_objectWithoutPropertiesLoose","properties","$a6473540a03affad$var$_extends","$a6473540a03affad$export$f346643e8570b662","$a6473540a03affad$var$_objectWithoutProperties","$a6473540a03affad$var$_objectWithoutPropertiesLoose","$e1b494042a84ad23$var$_extends","$e1b494042a84ad23$var$ownKeys","$e1b494042a84ad23$var$_objectSpread","$e1b494042a84ad23$var$_objectWithoutProperties","$e1b494042a84ad23$var$_objectWithoutPropertiesLoose","$e1b494042a84ad23$export$f346643e8570b662","$32be11c9b927149e$var$_extends","$32be11c9b927149e$export$235f9e0721ad46fa","$32be11c9b927149e$var$_objectWithoutProperties","$32be11c9b927149e$var$_objectWithoutPropertiesLoose","$080713b98092415a$var$_extends","$080713b98092415a$var$ownKeys","$080713b98092415a$var$_objectSpread","$080713b98092415a$var$_objectWithoutProperties","$080713b98092415a$var$_objectWithoutPropertiesLoose","$080713b98092415a$export$235f9e0721ad46fa","$be8ff13b02e36d80$var$_extends","$be8ff13b02e36d80$export$10c56fa12fda26f9","$be8ff13b02e36d80$var$_objectWithoutProperties","$be8ff13b02e36d80$var$_objectWithoutPropertiesLoose","$bd33193f2ef679b8$var$_extends","$bd33193f2ef679b8$export$10c56fa12fda26f9","$bd33193f2ef679b8$var$_objectWithoutProperties","$bd33193f2ef679b8$var$_objectWithoutPropertiesLoose","$3f879671235ebefb$var$_typeof","$3f879671235ebefb$var$ownKeys","$3f879671235ebefb$var$_objectSpread","$3f879671235ebefb$var$_defineProperty","$cae24fad0dd36ab6$var$_extends","$cae24fad0dd36ab6$var$_typeof","$cae24fad0dd36ab6$var$_setPrototypeOf","$cae24fad0dd36ab6$var$_getPrototypeOf","$cae24fad0dd36ab6$var$Template","_Component","$cae24fad0dd36ab6$var$_inherits","$cae24fad0dd36ab6$var$_isNativeReflectConstruct","$cae24fad0dd36ab6$var$_assertThisInitialized","$cae24fad0dd36ab6$var$_classCallCheck","nextProps","templateKey","rootProps","RootTagName","rootTagName","compileOptions","useCustomCompileOptions","templatesConfig","templates","helpers","components","Highlight","ReverseHighlight","Snippet","ReverseSnippet","transformedHelpers","$3f879671235ebefb$var$transformHelpersToHogan","helperKey","spaces","$cae24fad0dd36ab6$var$_defineProperties","$5495c4c3740071e8$var$ownKeys","$5495c4c3740071e8$var$_objectSpread","$5495c4c3740071e8$var$_extends","$86221d5f03b17c54$export$2e2bcd8739ae039","empty","$964d85af6623150d$export$ffb2c7b8d67c359a","selectorOrHTMLElement","isSelectorString","domElement","$1f15ae9d41409849$var$ownKeys","$1f15ae9d41409849$var$_toConsumableArray","$1f15ae9d41409849$var$_arrayWithoutHoles","$1f15ae9d41409849$var$_arrayLikeToArray","$1f15ae9d41409849$var$_iterableToArray","$1f15ae9d41409849$var$_unsupportedIterableToArray","$1f15ae9d41409849$var$_nonIterableSpread","$1f15ae9d41409849$export$2938ff6a58d41f25","defaultTemplates","$1f15ae9d41409849$var$_objectSpread","$1f15ae9d41409849$var$prepareTemplates","allKeys","defaultTemplate","customTemplate","isCustomTemplate","$26d2f3c47ecadc8f$export$d8556a2a8f973135","componentName","descendantName","modifierName","$b60166d8fe31c83e$var$ownKeys","$b60166d8fe31c83e$var$_objectSpread","$b60166d8fe31c83e$var$getQueryID","selectedHits","queryIDs","$b60166d8fe31c83e$export$24bd91850d68b36c","selectedObjectIDs","$62dc5ddd84fbc4d2$var$_typeof","$62dc5ddd84fbc4d2$export$2e2bcd8739ae039","$62dc5ddd84fbc4d2$export$a3453cc0ced8b97c","serializedPayload","$fc9ea6db8b6fe186$var$findInsightsTarget","startElement","endElement","validator","$fc9ea6db8b6fe186$var$parseInsightsEvent","$9169b8376f1e6cf3$var$ownKeys","$9169b8376f1e6cf3$var$_objectSpread","$9169b8376f1e6cf3$var$withUsage","$9169b8376f1e6cf3$var$suit","$9169b8376f1e6cf3$var$HitsWithInsightsListener","templateProps","emptyRoot","__hitIndex","targetWithEvent","currentTarget","single","insightsTarget","_readDataAttributes","_payload","insights","$9169b8376f1e6cf3$var$renderer","containerNode","isFirstRendering","receivedHits","$9169b8376f1e6cf3$export$2e2bcd8739ae039","_ref3$templates","_ref3$cssClasses","userCssClasses","makeWidget","isFirstRender","aa","insightsClient","withInstantSearchUsage","inferredPayload","$$widgetType","$fa160872dd4e1018$export$5b1771037ab7c451","isMiddleClick","altKey","ctrlKey","metaKey","shiftKey","$5f9b8a8a8722915d$var$_extends","$5f9b8a8a8722915d$export$2e2bcd8739ae039","handleClick","facetValueToRefine","templateData","subItems","$5fc4f1c021bd59de$var$_typeof","$5fc4f1c021bd59de$var$_setPrototypeOf","$5fc4f1c021bd59de$var$_assertThisInitialized","$5fc4f1c021bd59de$var$_getPrototypeOf","$5fc4f1c021bd59de$var$_defineProperty","$5fc4f1c021bd59de$var$SearchBox","$5fc4f1c021bd59de$var$_inherits","SearchBox","$5fc4f1c021bd59de$var$_isNativeReflectConstruct","$5fc4f1c021bd59de$var$_classCallCheck","focused","_this$props","searchAsYouType","onChange","_this$props2","onSubmit","_this$props3","onReset","focus","_this$props4","autofocus","showSubmit","showReset","showLoadingIndicator","role","form","noValidate","autoFocus","autoComplete","autoCorrect","autoCapitalize","spellCheck","maxLength","onInput","onBlur","onFocus","submit","title","loadingIndicator","$5fc4f1c021bd59de$var$_defineProperties","$d11c82f490f857bb$var$_typeof","$d11c82f490f857bb$var$ownKeys","$d11c82f490f857bb$var$_objectSpread","$d11c82f490f857bb$var$_defineProperty","$d11c82f490f857bb$var$_extends","$d11c82f490f857bb$var$_setPrototypeOf","$d11c82f490f857bb$var$_assertThisInitialized","$d11c82f490f857bb$var$_getPrototypeOf","$d11c82f490f857bb$var$isHierarchicalMenuItem","$d11c82f490f857bb$var$RefinementList","$d11c82f490f857bb$var$_inherits","RefinementList","$d11c82f490f857bb$var$_isNativeReflectConstruct","$d11c82f490f857bb$var$_classCallCheck","handleItemClick","_cx","_this$props$cssClasse","$d11c82f490f857bb$var$_objectWithoutProperties","$d11c82f490f857bb$var$_objectWithoutPropertiesLoose","depth","showMore","createURL","isFromSearch","refinementListItemClassName","selectedItem","disabledItem","parentItem","searchBox","resetInput","actualValue","showMoreButtonClassName","disabledShowMore","canToggleShowMore","showMoreButton","toggleShowMore","isShowingMore","shouldDisableSearchBox","searchIsAlwaysActive","hasExhaustiveItems","searchFacetValues","searchPlaceholder","searchable","searchBoxTemplateProps","refineFirstValue","_generateFacetItem","noResults","noRefinementRoot","$d11c82f490f857bb$var$_defineProperties","$7d8e1cbc4145c713$var$_typeof","$79ccec92938acb76$var$_slicedToArray","$79ccec92938acb76$var$_arrayWithHoles","$79ccec92938acb76$var$_iterableToArrayLimit","_arr","_n","_d","_e","$79ccec92938acb76$var$_unsupportedIterableToArray","$79ccec92938acb76$var$_arrayLikeToArray","$79ccec92938acb76$var$_nonIterableRest","$79ccec92938acb76$var$ownKeys","$79ccec92938acb76$var$_objectSpread","$79ccec92938acb76$var$_defineProperty","$79ccec92938acb76$var$withUsage","$79ccec92938acb76$var$DEFAULT_SORT","$79ccec92938acb76$export$2e2bcd8739ae039","_createURL","_refine","_ref$limit","_ref$showMore","_ref$showMoreLimit","showMoreLimit","_ref$sortBy","cachedToggleShowMore","menu","_args$","filters","refinedItem","_helper$getHierarchic2","facetItems","$79ccec92938acb76$var$_objectWithoutProperties","$79ccec92938acb76$var$_objectWithoutPropertiesLoose","canRefine","_searchParameters$get2","_ref5","withFacetConfiguration","currentMaxValuesPerFacet","maxValuesPerFacet","withMaxValuesPerFacet","$9fd7029b79ebbbfb$export$f5dd818bff069720","numberLocale","toLocaleString","$ae21d940dbed9e2e$export$a274e22fb40f762e","$ccf77fa7126d6bf2$export$2e2bcd8739ae039","link","showMoreText","$224936184cbbdb1c$var$ownKeys","$224936184cbbdb1c$var$_objectSpread","$224936184cbbdb1c$var$withUsage","$224936184cbbdb1c$var$suit","$224936184cbbdb1c$var$renderer","$224936184cbbdb1c$export$2e2bcd8739ae039","$647bd32ee5070119$var$PaginationLink","ariaLabel","pageNumber","_ref$isDisabled","isDisabled","_ref$isSelected","isSelected","createClickHandler","$647bd32ee5070119$export$2e2bcd8739ae039","nbPages","showFirst","firstPageItem","isFirstPage","showPrevious","previousPageItem","currentPage","pages","pageItem","showNext","nextPageItem","isLastPage","showLast","lastPageItem","$a8bc121827d63987$var$_arrayLikeToArray","$a8bc121827d63987$export$d02631cccf789723","_ref$start","_ref$step","limitStep","$a8bc121827d63987$var$_toConsumableArray","$a8bc121827d63987$var$_arrayWithoutHoles","round","$a8bc121827d63987$var$_iterableToArray","$a8bc121827d63987$var$_unsupportedIterableToArray","$a8bc121827d63987$var$_nonIterableSpread","$bab2b9891e2de79e$var$_defineProperty","$bab2b9891e2de79e$var$Paginator","Paginator","$bab2b9891e2de79e$var$_classCallCheck","padding","totalDisplayedPages","nbPagesDisplayed","calculatePaddingLeft","$bab2b9891e2de79e$var$_defineProperties","$0017bf0f6585ff79$var$ownKeys","$0017bf0f6585ff79$var$_objectSpread","$0017bf0f6585ff79$var$withUsage","$0017bf0f6585ff79$export$2e2bcd8739ae039","totalPages","_ref$padding","pager","_ref6","helperState","$3b17bbd51a64bcdc$var$ownKeys","$3b17bbd51a64bcdc$var$_objectSpread","$3b17bbd51a64bcdc$var$suit","$3b17bbd51a64bcdc$var$withUsage","$3b17bbd51a64bcdc$var$defaultTemplates","$3b17bbd51a64bcdc$var$renderer","scrollToNode","scrollIntoView","$3b17bbd51a64bcdc$export$2e2bcd8739ae039","_ref3$showFirst","_ref3$showLast","_ref3$showPrevious","_ref3$showNext","_ref3$scrollTo","userScrollTo","$a12c3d9b688c0963$var$ownKeys","$a12c3d9b688c0963$var$_objectSpread","$a12c3d9b688c0963$var$withUsage","$a12c3d9b688c0963$var$defaultQueryHook","hook","$a12c3d9b688c0963$export$2e2bcd8739ae039","_clear","_ref$queryHook","queryHook","searchMetadata","$effdadfbac31639d$var$_ref2","$effdadfbac31639d$var$_ref4","$effdadfbac31639d$var$_ref6","fillRule","strokeWidth","strokeOpacity","cy","dur","repeatCount","$effdadfbac31639d$export$2e2bcd8739ae039","resetIcon","viewBox","submitIcon","loadingIcon","stroke","$246b5dcb151969a3$var$ownKeys","$246b5dcb151969a3$var$_objectSpread","$246b5dcb151969a3$var$withUsage","$246b5dcb151969a3$var$suit","$246b5dcb151969a3$var$renderer","$246b5dcb151969a3$export$2e2bcd8739ae039","_ref3$placeholder","_ref3$autofocus","_ref3$searchAsYouType","_ref3$showReset","_ref3$showSubmit","_ref3$showLoadingIndi","$cb353075a6c6fa25$exports","$4e36965025504545$export$a9c9a0d43506297d","$bbcafcaaf02907c9$var$ownKeys","$bbcafcaaf02907c9$var$_objectSpread","$bbcafcaaf02907c9$var$_defineProperty","$bbcafcaaf02907c9$var$_toConsumableArray","$bbcafcaaf02907c9$var$_arrayWithoutHoles","$bbcafcaaf02907c9$var$_arrayLikeToArray","$bbcafcaaf02907c9$var$_iterableToArray","$bbcafcaaf02907c9$var$_unsupportedIterableToArray","$bbcafcaaf02907c9$var$_nonIterableSpread","return","serializable","miss","WithinQueryParameters","WithinHeaders","headers","queryParameters","cacheable","Read","Write","Any","lastUpdate","accept","P","transporterStackTrace","T","connectTimeout","timeouts","connect","responseTimeout","request","triesLeft","onSuccess","onRetry","isTimedOut","hostsCache","onFail","requester","getTimeout","statelessHosts","reverse","N","authMode","hosts","random","requestsCache","responsesCache","mappedRequestOptions","transporter","methods","J","requests","E","R","I","F","Q","setRequestHeader","abort","OPENED","caches","removeItem","multipleQueries","multipleSearchForFacetValues","customRequest","$bbcafcaaf02907c9$var$withUsage","$bbcafcaaf02907c9$var$privateHelperSetState","_uiState","$bbcafcaaf02907c9$var$getLocalWidgetsUiState","widgetStateOptions","initialUiState","getWidgetState","$bbcafcaaf02907c9$var$getLocalWidgetsSearchParameters","widgetSearchParametersOptions","initialSearchParameters","$bbcafcaaf02907c9$var$_objectWithoutProperties","$bbcafcaaf02907c9$var$_objectWithoutPropertiesLoose","$bbcafcaaf02907c9$export$2e2bcd8739ae039","_widgetParams$indexId","indexId","localWidgets","localUiState","localInstantSearchInstance","localParent","getIndexName","getIndexId","getHelper","getResults","getScopedResults","widgetParent","$bbcafcaaf02907c9$var$resolveScopedResultsFromWidgets","indexWidgets","scopedResults","getWidgets","nextState","addWidgets","$bbcafcaaf02907c9$var$storeRenderState","_initialUiState","scheduleSearch","removeWidgets","_instantSearchInstanc","onStateChange","mainIndex","setUiState","searchWithoutTriggeringOnStateChange","indexInitialResults","_initialResults","$bbcafcaaf02907c9$var$resetPageFromWidgets","widgetHelper","scheduleStalledRender","scheduleRender","onInternalStateChange","previousUiState","innerIndex","refreshUiState","_ref7","parentIndexName","$9bacbeef4c25f81e$export$2e2bcd8739ae039","$c84ade2a4f4913d0$var$suit","$c84ade2a4f4913d0$export$2e2bcd8739ae039","_ref$highlightedTagNa","_ref$cssClasses","_ref2$value","highlightAttributeResult","attributeValue","$e2136b4fe8cbe1d7$export$a34fe2fceda1929e","$e2cd73fbcf03a3df$var$hasAlphanumeric","$c5cff96bdf3b7f7e$var$ownKeys","$c5cff96bdf3b7f7e$var$_objectSpread","$c5cff96bdf3b7f7e$export$8d1202a2cf66e93","_parts","_parts2","isNextHighlighted","isPreviousHighlighted","$a9544a7c7ea19d28$var$suit","$a9544a7c7ea19d28$export$2e2bcd8739ae039","reverseHighlightedValue","$007f848d940fdaf1$var$suit","$007f848d940fdaf1$export$2e2bcd8739ae039","snippetAttributeResult","$42f86c36b36dbd78$var$suit","$42f86c36b36dbd78$export$2e2bcd8739ae039","$1895b248d7928836$var$ownKeys","$1895b248d7928836$var$_objectSpread","$8830dcf7f3e53e85$var$nextMicroTask","$8830dcf7f3e53e85$export$260e5c0943f31606","cancelled","$e00cc39de32ae775$export$fd5e8f1329b3d5e0","finalUiState","indexWidget","nextIndexUiState","$8bf1b0cf99a6caf0$var$ownKeys","$8bf1b0cf99a6caf0$var$_objectSpread","$8bf1b0cf99a6caf0$var$_defineProperty","$8bf1b0cf99a6caf0$var$getIndexStateWithoutConfigure","$8bf1b0cf99a6caf0$var$_objectWithoutProperties","$8bf1b0cf99a6caf0$var$_objectWithoutPropertiesLoose","$eb6f7fc63f627fea$exports","$21a857f2c632f015$exports","$c28806fde4f5d743$exports","$e77cc7fa9fbe3dde$exports","$e77cc7fa9fbe3dde$var$replace","$e77cc7fa9fbe3dde$var$percentTwenties","RFC1738","RFC3986","$c28806fde4f5d743$var$has","$c28806fde4f5d743$var$isArray","$c28806fde4f5d743$var$hexTable","$c28806fde4f5d743$var$compactQueue","compacted","$c28806fde4f5d743$var$arrayToObject","plainObjects","arrayToObject","combine","compact","refs","decode","decoder","charset","strWithoutPlus","unescape","defaultEncoder","$0","charCodeAt","isBuffer","isRegExp","maybeMap","mapped","merge","allowPrototypes","mergeTarget","targetItem","$21a857f2c632f015$var$has","$21a857f2c632f015$var$arrayPrefixGenerators","brackets","repeat","$21a857f2c632f015$var$isArray","$21a857f2c632f015$var$split","$21a857f2c632f015$var$push","$21a857f2c632f015$var$pushToArray","valueOrArray","$21a857f2c632f015$var$toISO","toISOString","$21a857f2c632f015$var$defaultFormat","$21a857f2c632f015$var$defaults","addQueryPrefix","allowDots","charsetSentinel","delimiter","encoder","encodeValuesOnly","serializeDate","date","skipNulls","strictNullHandling","$21a857f2c632f015$var$stringify","generateArrayPrefix","objKeys","$21a857f2c632f015$var$isNonNullishPrimitive","keyValue","valuesArray","valuesJoined","$21a857f2c632f015$var$normalizeStringifyOptions","arrayFormat","joined","$85c239e60adf14b2$var$has","$85c239e60adf14b2$var$isArray","$85c239e60adf14b2$var$defaults","arrayLimit","ignoreQueryPrefix","interpretNumericEntities","parameterLimit","parseArrays","$85c239e60adf14b2$var$parseArrayValue","$85c239e60adf14b2$var$parseValues","cleanStr","Infinity","skipIndex","bracketEqualsPos","encodedVal","numberStr","fromCharCode","$85c239e60adf14b2$var$parseObject","chain","valuesParsed","leaf","cleanRoot","$85c239e60adf14b2$var$parseKeys","givenKey","$85c239e60adf14b2$var$normalizeParseOptions","$ae549b2844b692c1$export$39f19eed34acd2f1","$0df67baa85c927c4$var$_defineProperty","tempObj","newObj","$0df67baa85c927c4$var$setWindowTitle","$0df67baa85c927c4$var$BrowserHistory","BrowserHistory","windowTitle","_ref$writeDelay","writeDelay","parseURL","getLocation","$0df67baa85c927c4$var$_classCallCheck","writeTimer","latestAcknowledgedHistory","qsModule","routeState","shouldWrite","inPopState","_onPopState","isDisposed","lastPushWasByISAfterDispose","$0df67baa85c927c4$var$_defineProperties","$cdb20223dbd2984c$var$ownKeys","$cdb20223dbd2984c$var$_objectSpread","$cdb20223dbd2984c$var$_defineProperty","$cdb20223dbd2984c$export$1fe5128387816284","_props$router","router","_ref7$createURL","_ref8","_location$port","port","queryString","portWithPrefix","_ref7$parseURL","_ref7$writeDelay","_ref7$getLocation","_ref9","_ref10","_props$stateMapping","stateMapping","stateToRoute","routeToState","route","lastRouteState","subscribe","onUpdate","unsubscribe","$43df3178656874f3$var$_typeof","$43df3178656874f3$var$ownKeys","$43df3178656874f3$var$_setPrototypeOf","$43df3178656874f3$var$_assertThisInitialized","$43df3178656874f3$var$_getPrototypeOf","$43df3178656874f3$var$_defineProperty","$43df3178656874f3$var$withUsage","$43df3178656874f3$var$defaultCreateURL","$43df3178656874f3$var$InstantSearch","$43df3178656874f3$var$_inherits","InstantSearch","$43df3178656874f3$var$_isNativeReflectConstruct","$43df3178656874f3$var$_classCallCheck","_searchStalledTimer","nextUiState","middleware","_options$indexName","_options$initialUiSta","_options$routing","routing","searchFunction","_options$stalledSearc","stalledSearchDelay","_options$searchClient","searchClient","_options$insightsClie","_options$onStateChang","formatNumber","highlightOptions","reverseHighlight","reverseHighlightOptions","snippet","snippetOptions","reverseSnippet","reverseSnippetOptions","_JSON$parse","_stalledSearchDelay","_searchFunction","_window$navigator","_window$navigator$use","payloadContainer","refNode","_ua","$de3e1eace8c55644$var$extractPayload","newMiddlewareList","newMiddleware","$43df3178656874f3$var$_objectSpread","creator","middlewareToUnuse","fakeClient","_mainHelperSearch","mainIndexHelper","searchFunctionHelper","originalScheduleSearch","callOnStateChange","$43df3178656874f3$var$_defineProperties","$58d1e602d478cf2f$var$getStateWithoutPage","$58d1e602d478cf2f$var$_objectWithoutProperties","$58d1e602d478cf2f$var$_objectWithoutPropertiesLoose","$58d1e602d478cf2f$var$KEY","$e4443cc2a1f06031$export$b680e6b2c82f8c2f","$9a68c624c672fabe$var$instantsearch","createInfiniteHitsSessionStorageCache","sessionStorage","SyntaxError","getInsightsAnonymousUserToken","$f2f086fa702b7d9c$var$getCookie","$de17b4591c7a8a28$var$startAlgoliaSearch","algoliaClient","contentContainer","contentBlank","indexUiState","page_type","searchBoxTips","convertToLocalTime","timeElements","startTimeStr","endTimeStr","sourceTimezone","dateOnly","startDate","parseTimeInTimezone","displayText","formatDate","endDateStr","formatDateRange","endDate","startYear","getFullYear","startMonth","getMonth","padStart","startDay","getDate","startHour","getHours","startMinute","getMinutes","endYear","endMonth","endDay","endHour","endMinute","startStr","formatDateTime","year","month","getTimezoneLabel","offsetStr","formatTimezoneOffset","offset","sign","absOffset","hours","minutes","getTimezoneOffset","abbr","timeZoneName","formatToParts","timeStr","timezoneOffset","day","hour","minute","UTC","vnodeId","isValidElement","rerenderQueue","prevDebounce","EMPTY_OBJ","EMPTY_ARR","IS_NON_DIMENSIONAL","removeNode","normalizedProps","createVNode","createRef","Component","this","getDomSibling","sibling","updateParentDomPointers","enqueueRender","component","commitQueue","oldVNode","oldDom","parentDom","commitRoot","diffChildren","renderResult","newParentVNode","oldParentVNode","globalContext","isSvg","excessDomChildren","isHydrating","childVNode","newDom","firstChildDom","oldChildren","oldChildrenLength","reorderChildren","placeChild","applyRef","tmp","toChildArray","nextDom","sibDom","outer","diffProps","newProps","oldProps","hydrate","setStyle","useCapture","eventProxyCapture","eventProxy","newVNode","isNew","oldState","snapshot","clearProcessingException","provider","componentContext","renderHook","newType","doRender","diffElementNodes","oldHtml","newHtml","parentVNode","skipRemove","replaceNode","cloneElement","createContext","contextId","Consumer","contextValue","Provider","_props","errorInfo","handled"],"version":3,"file":"main.js.map"}