{"version":3,"sources":["webpack/universalModuleDefinition","webpack/bootstrap 7f0661f464388d8314e9","./node_modules/underscore/modules/restArguments.js","./node_modules/underscore/modules/isObject.js","./node_modules/underscore/modules/isNull.js","./node_modules/underscore/modules/isUndefined.js","./node_modules/underscore/modules/isBoolean.js","./node_modules/underscore/modules/isElement.js","./node_modules/underscore/modules/_tagTester.js","./node_modules/underscore/modules/isString.js","./node_modules/underscore/modules/isNumber.js","./node_modules/underscore/modules/isDate.js","./node_modules/underscore/modules/isRegExp.js","./node_modules/underscore/modules/isError.js","./node_modules/underscore/modules/isSymbol.js","./node_modules/underscore/modules/isArrayBuffer.js","./node_modules/underscore/modules/isFunction.js","./node_modules/underscore/modules/_hasObjectTag.js","./node_modules/underscore/modules/_stringTagBug.js","./node_modules/underscore/modules/isDataView.js","./node_modules/underscore/modules/isArray.js","./node_modules/underscore/modules/_has.js","./node_modules/underscore/modules/isArguments.js","./node_modules/underscore/modules/isFinite.js","./node_modules/underscore/modules/isNaN.js","./node_modules/underscore/modules/constant.js","./node_modules/underscore/modules/_createSizePropertyCheck.js","./node_modules/underscore/modules/_shallowProperty.js","./node_modules/underscore/modules/_getByteLength.js","./node_modules/underscore/modules/_isBufferLike.js","./node_modules/underscore/modules/isTypedArray.js","./node_modules/underscore/modules/_getLength.js","./node_modules/underscore/modules/_collectNonEnumProps.js","./node_modules/underscore/modules/keys.js","./node_modules/underscore/modules/isEmpty.js","./node_modules/underscore/modules/isMatch.js","./node_modules/underscore/modules/underscore.js","./node_modules/underscore/modules/_toBufferView.js","./node_modules/underscore/modules/isEqual.js","./node_modules/underscore/modules/allKeys.js","./node_modules/underscore/modules/_methodFingerprint.js","./node_modules/underscore/modules/isMap.js","./node_modules/underscore/modules/isWeakMap.js","./node_modules/underscore/modules/isSet.js","./node_modules/underscore/modules/isWeakSet.js","./node_modules/underscore/modules/values.js","./node_modules/underscore/modules/pairs.js","./node_modules/underscore/modules/invert.js","./node_modules/underscore/modules/functions.js","./node_modules/underscore/modules/_createAssigner.js","./node_modules/underscore/modules/extend.js","./node_modules/underscore/modules/extendOwn.js","./node_modules/underscore/modules/defaults.js","./node_modules/underscore/modules/_baseCreate.js","./node_modules/underscore/modules/create.js","./node_modules/underscore/modules/clone.js","./node_modules/underscore/modules/tap.js","./node_modules/underscore/modules/toPath.js","./node_modules/underscore/modules/_toPath.js","./node_modules/underscore/modules/_deepGet.js","./node_modules/underscore/modules/get.js","./node_modules/underscore/modules/has.js","./node_modules/underscore/modules/identity.js","./node_modules/underscore/modules/matcher.js","./node_modules/underscore/modules/property.js","./node_modules/underscore/modules/_optimizeCb.js","./node_modules/underscore/modules/_baseIteratee.js","./node_modules/underscore/modules/iteratee.js","./node_modules/underscore/modules/_cb.js","./node_modules/underscore/modules/mapObject.js","./node_modules/underscore/modules/noop.js","./node_modules/underscore/modules/propertyOf.js","./node_modules/underscore/modules/times.js","./node_modules/underscore/modules/random.js","./node_modules/underscore/modules/now.js","./node_modules/underscore/modules/_createEscaper.js","./node_modules/underscore/modules/_escapeMap.js","./node_modules/underscore/modules/escape.js","./node_modules/underscore/modules/_unescapeMap.js","./node_modules/underscore/modules/unescape.js","./node_modules/underscore/modules/templateSettings.js","./node_modules/underscore/modules/template.js","./node_modules/underscore/modules/result.js","./node_modules/underscore/modules/uniqueId.js","./node_modules/underscore/modules/chain.js","./node_modules/underscore/modules/_executeBound.js","./node_modules/underscore/modules/partial.js","./node_modules/underscore/modules/bind.js","./node_modules/underscore/modules/_isArrayLike.js","./node_modules/underscore/modules/_flatten.js","./node_modules/underscore/modules/bindAll.js","./node_modules/underscore/modules/memoize.js","./node_modules/underscore/modules/delay.js","./node_modules/underscore/modules/defer.js","./node_modules/underscore/modules/throttle.js","./node_modules/underscore/modules/debounce.js","./node_modules/underscore/modules/wrap.js","./node_modules/underscore/modules/negate.js","./node_modules/underscore/modules/compose.js","./node_modules/underscore/modules/after.js","./node_modules/underscore/modules/before.js","./node_modules/underscore/modules/once.js","./node_modules/underscore/modules/findKey.js","./node_modules/underscore/modules/_createPredicateIndexFinder.js","./node_modules/underscore/modules/findIndex.js","./node_modules/underscore/modules/findLastIndex.js","./node_modules/underscore/modules/sortedIndex.js","./node_modules/underscore/modules/_createIndexFinder.js","./node_modules/underscore/modules/indexOf.js","./node_modules/underscore/modules/lastIndexOf.js","./node_modules/underscore/modules/find.js","./node_modules/underscore/modules/findWhere.js","./node_modules/underscore/modules/each.js","./node_modules/underscore/modules/map.js","./node_modules/underscore/modules/_createReduce.js","./node_modules/underscore/modules/reduce.js","./node_modules/underscore/modules/reduceRight.js","./node_modules/underscore/modules/filter.js","./node_modules/underscore/modules/reject.js","./node_modules/underscore/modules/every.js","./node_modules/underscore/modules/some.js","./node_modules/underscore/modules/contains.js","./node_modules/underscore/modules/invoke.js","./node_modules/underscore/modules/pluck.js","./node_modules/underscore/modules/where.js","./node_modules/underscore/modules/max.js","./node_modules/underscore/modules/min.js","./node_modules/underscore/modules/sample.js","./node_modules/underscore/modules/shuffle.js","./node_modules/underscore/modules/sortBy.js","./node_modules/underscore/modules/_group.js","./node_modules/underscore/modules/groupBy.js","./node_modules/underscore/modules/indexBy.js","./node_modules/underscore/modules/countBy.js","./node_modules/underscore/modules/partition.js","./node_modules/underscore/modules/toArray.js","./node_modules/underscore/modules/size.js","./node_modules/underscore/modules/_keyInObj.js","./node_modules/underscore/modules/pick.js","./node_modules/underscore/modules/omit.js","./node_modules/underscore/modules/initial.js","./node_modules/underscore/modules/first.js","./node_modules/underscore/modules/rest.js","./node_modules/underscore/modules/last.js","./node_modules/underscore/modules/compact.js","./node_modules/underscore/modules/flatten.js","./node_modules/underscore/modules/difference.js","./node_modules/underscore/modules/without.js","./node_modules/underscore/modules/uniq.js","./node_modules/underscore/modules/union.js","./node_modules/underscore/modules/intersection.js","./node_modules/underscore/modules/unzip.js","./node_modules/underscore/modules/zip.js","./node_modules/underscore/modules/object.js","./node_modules/underscore/modules/range.js","./node_modules/underscore/modules/chunk.js","./node_modules/underscore/modules/_chainResult.js","./node_modules/underscore/modules/mixin.js","./node_modules/underscore/modules/underscore-array-methods.js","./node_modules/underscore/modules/index.js","./node_modules/underscore/modules/index-default.js","./node_modules/underscore/modules/index-all.js","./src/utils/Dom.ts","./src/ui/Base/Initialization.ts","./src/GlobalExports.ts","./src/utils/Utils.ts","./src/misc/Assert.ts","./src/strings/Strings.ts","./src/ui/Base/Component.ts","./src/ui/Base/ComponentOptions.ts","./src/misc/Logger.ts","./src/ui/Analytics/AnalyticsActionListMeta.ts","./src/events/QueryEvents.ts","./src/utils/SVGIcons.ts","./src/models/QueryStateModel.ts","./node_modules/underscore/modules/_setup.js","./src/utils/AccessibleButton.ts","./src/utils/SVGDom.ts","./src/events/InitializationEvents.ts","./src/models/Model.ts","./src/ui/SearchInterface/SearchInterface.ts","./src/Core.ts","./src/utils/QueryUtils.ts","./src/utils/StringUtils.ts","./lib/globalize/globalize.min.js-exposed","./src/utils/DeviceUtils.ts","./src/utils/KeyboardUtils.ts","./src/ExternalModulesShim.ts","./src/ui/Templates/Template.ts","./src/models/ComponentOptionsModel.ts","./src/events/ResultListEvents.ts","./src/ui/Base/RegisteredNamedMethods.ts","./src/misc/Defer.ts","./node_modules/d3-array/src/ascending.js","./node_modules/d3-array/src/bisector.js","./node_modules/d3-array/src/bisect.js","./node_modules/d3-array/src/pairs.js","./node_modules/d3-array/src/cross.js","./node_modules/d3-array/src/descending.js","./node_modules/d3-array/src/number.js","./node_modules/d3-array/src/variance.js","./node_modules/d3-array/src/deviation.js","./node_modules/d3-array/src/extent.js","./node_modules/d3-array/src/array.js","./node_modules/d3-array/src/constant.js","./node_modules/d3-array/src/identity.js","./node_modules/d3-array/src/range.js","./node_modules/d3-array/src/ticks.js","./node_modules/d3-array/src/threshold/sturges.js","./node_modules/d3-array/src/histogram.js","./node_modules/d3-array/src/quantile.js","./node_modules/d3-array/src/threshold/freedmanDiaconis.js","./node_modules/d3-array/src/threshold/scott.js","./node_modules/d3-array/src/max.js","./node_modules/d3-array/src/mean.js","./node_modules/d3-array/src/median.js","./node_modules/d3-array/src/merge.js","./node_modules/d3-array/src/min.js","./node_modules/d3-array/src/permute.js","./node_modules/d3-array/src/scan.js","./node_modules/d3-array/src/shuffle.js","./node_modules/d3-array/src/sum.js","./node_modules/d3-array/src/transpose.js","./node_modules/d3-array/src/zip.js","./node_modules/d3-array/src/index.js","./src/utils/DateUtils.ts","./src/events/OmniboxEvents.ts","./src/events/BreadcrumbEvents.ts","./src/ui/Base/BaseComponent.ts","./node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js","./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_global.js","./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_core.js","./src/ui/Facet/FacetUtils.ts","./src/utils/LocalStorageUtils.ts","./src/utils/HashUtils.ts","./src/utils/UrlUtils.ts","./src/controllers/QueryController.ts","./src/ui/Base/RootComponent.ts","./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_wks.js","./src/utils/ComponentsTypes.ts","./src/utils/AccessibilityUtils.ts","./src/ui/Base/QueryBuilder.ts","./src/ui/Analytics/AnalyticsInformation.ts","./src/ui/Base/IComponentOptions.ts","./src/magicbox/Result/Result.ts","./src/rest/SearchEndpoint.ts","./node_modules/d3-color/src/define.js","./node_modules/d3-color/src/color.js","./node_modules/d3-color/src/math.js","./node_modules/d3-color/src/lab.js","./node_modules/d3-color/src/cubehelix.js","./node_modules/d3-color/src/index.js","./src/ui/ResponsiveComponents/ResponsiveComponents.ts","./src/events/SettingsEvents.ts","./src/ui/FormWidgets/TextInput.ts","./src/events/AnalyticsEvents.ts","./src/ui/Templates/UnderscoreTemplate.ts","./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_export.js","./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_hide.js","./src/ui/ResponsiveComponents/ResponsiveComponentsManager.ts","./src/ui/Base/TemplateComponentOptions.ts","./src/ui/FormWidgets/Dropdown.ts","./node_modules/d3-interpolate/src/basis.js","./node_modules/d3-interpolate/src/basisClosed.js","./node_modules/d3-interpolate/src/constant.js","./node_modules/d3-interpolate/src/color.js","./node_modules/d3-interpolate/src/rgb.js","./node_modules/d3-interpolate/src/numberArray.js","./node_modules/d3-interpolate/src/array.js","./node_modules/d3-interpolate/src/date.js","./node_modules/d3-interpolate/src/number.js","./node_modules/d3-interpolate/src/object.js","./node_modules/d3-interpolate/src/string.js","./node_modules/d3-interpolate/src/value.js","./node_modules/d3-interpolate/src/discrete.js","./node_modules/d3-interpolate/src/hue.js","./node_modules/d3-interpolate/src/round.js","./node_modules/d3-interpolate/src/transform/decompose.js","./node_modules/d3-interpolate/src/transform/parse.js","./node_modules/d3-interpolate/src/transform/index.js","./node_modules/d3-interpolate/src/zoom.js","./node_modules/d3-interpolate/src/hsl.js","./node_modules/d3-interpolate/src/lab.js","./node_modules/d3-interpolate/src/hcl.js","./node_modules/d3-interpolate/src/cubehelix.js","./node_modules/d3-interpolate/src/piecewise.js","./node_modules/d3-interpolate/src/quantize.js","./node_modules/d3-interpolate/src/index.js","./src/ui/FormWidgets/Checkbox.ts","./src/ui/Templates/TemplateCache.ts","./src/utils/HighlightUtils.ts","./src/ui/Facet/Facet.ts","./src/ui/ResultLink/ResultLink.ts","./src/rest/Facet/FacetValueState.ts","./src/utils/TimeSpanUtils.ts","./src/MiscModules.ts","./src/ui/Base/ExpressionBuilder.ts","(webpack)/buildin/global.js","./src/utils/JQueryutils.ts","./src/misc/Options.ts","./src/models/ComponentStateModel.ts","./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_an-object.js","./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_descriptors.js","./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_has.js","./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_defined.js","./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_iterators.js","./src/ui/ResponsiveComponents/ResponsiveFacetOptions.ts","./src/ui/FacetsMobileMode/FacetsMobileMode.ts","./src/events/SearchAlertEvents.ts","./src/UtilsModules.ts","./src/events/AdvancedSearchEvents.ts","./src/utils/HistoryStore.ts","./src/ui/FormWidgets/DatePicker.ts","./src/rest/EndpointCaller.ts","./src/ui/ResultList/ResultList.ts","./src/ui/ResponsiveComponents/ResponsiveDropdown/ResponsiveDropdownContent.ts","./src/ui/CategoryFacet/CategoryFacet.ts","./src/ui/Templates/TemplateList.ts","./src/utils/DomUtils.ts","./node_modules/popper.js/dist/esm/popper.js","./src/ui/FormWidgets/RadioButton.ts","./src/events/StandaloneSearchInterfaceEvents.ts","./src/events/PreferencesPanelEvents.ts","./src/EventsModules.ts","./node_modules/moment/moment.js","./src/misc/Version.ts","./node_modules/coveo.analytics/dist/storage.js","./src/events/DebugEvents.ts","./src/ui/Analytics/NoopAnalyticsClient.ts","./src/ui/Templates/HtmlTemplate.ts","./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_object-dp.js","./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_is-object.js","./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_fails.js","./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_to-iobject.js","./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_cof.js","./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_to-integer.js","./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_shared-key.js","./node_modules/@babel/runtime-corejs2/core-js/get-iterator.js","./src/ui/Analytics/PendingSearchEvent.ts","./src/utils/ResultListUtils.ts","./src/ui/Facet/FacetValue.ts","./src/utils/StreamHighlightUtils.ts","./src/ui/Misc/FileTypes.ts","./src/ui/Templates/TemplateHelpers.ts","./src/ui/Templates/DefaultResultTemplate.ts","./src/ui/ResponsiveComponents/ResponsiveDropdown/ResponsiveDropdown.ts","./src/ui/FieldValue/FieldValue.ts","./src/ui/Analytics/SharedAnalyticsCalls.ts","./src/ui/FormWidgets/NumericSpinner.ts","./src/ui/Analytics/PendingSearchAsYouTypeSearchEvent.ts","./src/utils/CookieUtils.ts","./src/ui/Analytics/Analytics.ts","./src/ui/ResponsiveComponents/ResponsiveComponentsUtils.ts","./src/ui/Facet/FacetValueElement.ts","./src/magicbox/Grammars/Basic.ts","./src/events/ResultLayoutEvents.ts","./src/utils/CurrencyUtils.ts","./src/ui/ResponsiveComponents/ResponsiveDropdown/ResponsiveDropdownHeader.ts","./src/ui/Templates/TemplateFieldsEvaluator.ts","./src/utils/EventsUtils.ts","./src/ui/Querybox/Querybox.ts","./src/ui/FormWidgets/FormGroup.ts","./src/ui/DynamicFacet/DynamicFacet.ts","./src/events/SliderEvents.ts","./src/utils/ColorUtils.ts","./src/rest/QueryError.ts","./node_modules/coveo.analytics/dist/analytics.js","./node_modules/coveo.analytics/dist/history.js","./node_modules/coveo.analytics/dist/detector.js","./src/rest/AccessToken.ts","./node_modules/exponential-backoff/dist/options.js","./node_modules/exponential-backoff/dist/delay/delay.base.js","./src/strings/DefaultLanguage.ts","./src/misc/L10N.ts","./src/rest/AnalyticsEndpoint.ts","./src/ControllersModules.ts","./src/controllers/HistoryController.ts","./src/controllers/LocalStorageHistoryController.ts","./src/ui/Templates/TemplateConditionEvaluator.ts","./src/ui/Templates/TemplateFromAScriptTag.ts","./src/ui/Debug/Debug.ts","./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_dom-create.js","./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_property-desc.js","./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_object-create.js","./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_shared.js","./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_library.js","./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_uid.js","./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_enum-bug-keys.js","./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_iter-define.js","./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_set-to-string-tag.js","./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_string-ws.js","./src/utils/PublicPathUtils.ts","./src/ui/Analytics/LiveAnalyticsClient.ts","./src/rest/APIAnalyticsBuilder.ts","./src/ui/Facet/FacetSearchParameters.ts","./src/utils/DependsOnManager.ts","./src/ui/ResponsiveComponents/ResponsiveFacets.ts","./src/magicbox/Grammar.ts","./src/ui/Base/InitializationPlaceholder.ts","./src/utils/EmailUtils.ts","./src/utils/HtmlUtils.ts","./src/utils/AccessibleModal.ts","./src/utils/OSUtils.ts","./src/controllers/DynamicFacetRequestBuilder.ts","./src/ui/DynamicFacet/DynamicFacetHeader/DynamicFacetHeader.ts","./src/rest/Facet/FacetRequest.ts","./src/ui/Base/QueryBuilderExpression.ts","./src/ui/AdvancedSearch/KeywordsInput/KeywordsInput.ts","./node_modules/d3-collection/src/map.js","./node_modules/d3-collection/src/nest.js","./node_modules/d3-collection/src/set.js","./node_modules/d3-collection/src/keys.js","./node_modules/d3-collection/src/values.js","./node_modules/d3-collection/src/entries.js","./node_modules/d3-collection/src/index.js","./node_modules/d3-time/src/interval.js","./node_modules/d3-time/src/millisecond.js","./node_modules/d3-time/src/duration.js","./node_modules/d3-time/src/second.js","./node_modules/d3-time/src/minute.js","./node_modules/d3-time/src/hour.js","./node_modules/d3-time/src/day.js","./node_modules/d3-time/src/week.js","./node_modules/d3-time/src/month.js","./node_modules/d3-time/src/year.js","./node_modules/d3-time/src/utcMinute.js","./node_modules/d3-time/src/utcHour.js","./node_modules/d3-time/src/utcDay.js","./node_modules/d3-time/src/utcWeek.js","./node_modules/d3-time/src/utcMonth.js","./node_modules/d3-time/src/utcYear.js","./node_modules/d3-time/src/index.js","./src/ui/YouTube/YouTubeThumbnail.ts","./src/ui/FacetRange/FacetRange.ts","./src/ui/Folding/Folding.ts","./src/ui/Icon/Icon.ts","./src/ui/Omnibox/Omnibox.ts","./src/ui/FormWidgets/MultiSelect.ts","./src/ui/SearchButton/SearchButton.ts","./src/ui/Sort/Sort.ts","./src/ui/FieldImage/ImageFieldValue.ts","./src/utils/PopupUtils.ts","./src/ui/FacetSlider/FacetSlider.ts","./src/ui/Recommendation/Recommendation.ts","./src/ui/ResultLayoutSelector/ResultLayoutSelector.ts","./src/ui/Tab/Tab.ts","./node_modules/process/browser.js","./src/events/DistanceEvents.ts","./src/ModelsModules.ts","./src/utils/QuerySummaryUtils.ts","./src/ui/MissingTerm/MissingTermManager.ts","./node_modules/xregexp/lib/index.js","./src/utils/StorageUtils.ts","./src/ui/Analytics/RecommendationAnalyticsClient.ts","./src/ui/Base/CoveoUnderscore.ts","./src/utils/AnalyticsUtils.ts","./src/ui/Base/CoveoJQuery.ts","./src/ui/YouTube/YouTubeThumbnailFields.ts","./src/ui/ResultList/ResultListRenderer.ts","./src/ui/ResponsiveComponents/ResponsiveFacetColumn.ts","./src/controllers/FacetQueryController.ts","./src/magicbox/Expression/ExpressionEndOfInput.ts","./src/magicbox/Expression/ExpressionConstant.ts","./src/magicbox/Grammars/Field.ts","./src/magicbox/SuggestionsManager.ts","./src/magicbox/MagicBox.ts","./src/magicbox/MagicBoxUtils.ts","./sass/DynamicFacet/_DynamicFacet.scss","./src/ui/DynamicFacet/DynamicFacetValues/DynamicFacetValueMoreLessButton.ts","./src/ui/DynamicFacet/DynamicFacetValues/DynamicFacetValue.ts","./src/utils/ChatterUtils.ts","./src/events/QuickviewEvents.ts","./src/rest/Subscription.ts","./src/ui/SmartSnippet/SmartSnippetCommon.ts","./src/ui/AdvancedSearch/DateInput/DateInput.ts","./src/ui/AdvancedSearch/DocumentInput/DocumentInput.ts","./node_modules/d3-format/src/formatDecimal.js","./node_modules/d3-format/src/exponent.js","./node_modules/d3-format/src/formatGroup.js","./node_modules/d3-format/src/formatNumerals.js","./node_modules/d3-format/src/formatSpecifier.js","./node_modules/d3-format/src/formatTrim.js","./node_modules/d3-format/src/formatPrefixAuto.js","./node_modules/d3-format/src/formatRounded.js","./node_modules/d3-format/src/formatTypes.js","./node_modules/d3-format/src/identity.js","./node_modules/d3-format/src/locale.js","./node_modules/d3-format/src/defaultLocale.js","./node_modules/d3-format/src/precisionFixed.js","./node_modules/d3-format/src/precisionPrefix.js","./node_modules/d3-format/src/precisionRound.js","./node_modules/d3-format/src/index.js","./node_modules/d3-time-format/src/locale.js","./node_modules/d3-time-format/src/defaultLocale.js","./node_modules/d3-time-format/src/isoFormat.js","./node_modules/d3-time-format/src/isoParse.js","./node_modules/d3-time-format/src/index.js","./src/ui/Quickview/QuickviewDocument.ts","./src/ui/AdvancedSearch/AdvancedSearch.ts","./src/ui/Aggregate/Aggregate.ts","./src/ui/AnalyticsSuggestions/AnalyticsSuggestions.ts","./src/ui/AuthenticationProvider/AuthenticationProvider.ts","./src/ui/Backdrop/Backdrop.ts","./src/ui/Badge/Badge.ts","./src/ui/Breadcrumb/Breadcrumb.ts","./src/ui/CardActionBar/CardActionBar.ts","./src/ui/CardOverlay/CardOverlay.ts","./src/ui/ChatterLikedBy/ChatterLikedBy.ts","./src/ui/ChatterPostAttachment/ChatterPostAttachment.ts","./src/ui/ChatterPostedBy/ChatterPostedBy.ts","./src/ui/ChatterTopic/ChatterTopic.ts","./src/ui/DidYouMean/DidYouMean.ts","./src/ui/Distance/DistanceResources.ts","./src/ui/ErrorReport/ErrorReport.ts","./src/ui/Excerpt/Excerpt.ts","./src/ui/ExportToExcel/ExportToExcel.ts","./src/ui/FieldSuggestions/FieldSuggestions.ts","./src/ui/FacetValueSuggestions/FacetValueSuggestions.ts","./src/ui/FieldTable/FieldTable.ts","./src/ui/FoldingForThread/FoldingForThread.ts","./src/ui/HiddenQuery/HiddenQuery.ts","./src/ui/HierarchicalFacet/HierarchicalFacet.ts","./src/ui/Logo/Logo.ts","./src/ui/Matrix/Matrix.ts","./src/ui/OmniboxResultList/OmniboxResultList.ts","./src/ui/Pager/Pager.ts","./src/ui/PipelineContext/PipelineContext.ts","./src/ui/PreferencesPanel/PreferencesPanel.ts","./src/ui/PrintableUri/PrintableUri.ts","./src/ui/QueryDuration/QueryDuration.ts","./src/ui/QuerySummary/QuerySummary.ts","./src/ui/Quickview/Quickview.ts","./src/ui/ResultActions/ResultActionsMenu.ts","./src/ui/ResultAttachments/ResultAttachments.ts","./src/ui/ResultFolding/ResultFolding.ts","./src/ui/ResultRating/ResultRating.ts","./src/ui/StarRating/StarRating.ts","./src/ui/ResultsFiltersPreferences/ResultsFiltersPreferences.ts","./src/ui/ResultsPerPage/ResultsPerPage.ts","./src/ui/ResultsPreferences/ResultsPreferences.ts","./src/ui/ResultTagging/ResultTagging.ts","./src/ui/FollowItem/FollowItem.ts","./src/ui/SearchAlerts/SearchAlerts.ts","./src/ui/Searchbox/Searchbox.ts","./src/ui/Settings/Settings.ts","./src/ui/ShareQuery/ShareQuery.ts","./src/ui/TemplateLoader/TemplateLoader.ts","./src/ui/Text/Text.ts","./src/ui/Thumbnail/Thumbnail.ts","./src/ui/Triggers/Triggers.ts","./src/ui/SimpleFilter/SimpleFilter.ts","./src/ui/TimespanFacet/TimespanFacet.ts","./src/ui/PromotedResultsBadge/PromotedResultsBadge.ts","./src/ui/DynamicHierarchicalFacet/DynamicHierarchicalFacet.ts","./src/ui/DynamicFacet/DynamicFacetRange.ts","./src/ui/DynamicFacetManager/DynamicFacetManager.ts","./src/ui/MissingTerm/MissingTerms.ts","./src/ui/QuerySuggestPreview/QuerySuggestPreview.ts","./src/ui/CommerceQuery/CommerceQuery.ts","./src/ui/SortDropdown/SortDropdown.ts","./src/ui/SmartSnippet/SmartSnippet.ts","./src/ui/SmartSnippet/SmartSnippetSuggestions.ts","./node_modules/es6-promise/auto.js","./node_modules/es6-promise/dist/es6-promise.js","./src/BaseModules.ts","./src/misc/PromisesShim.ts","./src/misc/CustomEventPolyfill.ts","./sass/_ResponsiveComponents.scss","./node_modules/style-loader/lib/urls.js","./src/rest/AjaxError.ts","./src/rest/MissingAuthenticationError.ts","./node_modules/coveo.analytics/dist/index.js","./node_modules/coveo.analytics/dist/cookieutils.js","./node_modules/whatwg-fetch/fetch.js","./node_modules/coveo.analytics/dist/simpleanalytics.js","./node_modules/coveo.analytics/dist/objectassign.js","./node_modules/coveo.analytics/dist/utils.js","./node_modules/coveo.analytics/dist/donottrack.js","./src/rest/BackOffRequest.ts","./node_modules/exponential-backoff/dist/backoff.js","./node_modules/exponential-backoff/dist/delay/delay.factory.js","./node_modules/exponential-backoff/dist/delay/skip-first/skip-first.delay.js","./node_modules/exponential-backoff/dist/jitter/jitter.factory.js","./node_modules/exponential-backoff/dist/jitter/full/full.jitter.js","./node_modules/exponential-backoff/dist/jitter/no/no.jitter.js","./node_modules/exponential-backoff/dist/delay/always/always.delay.js","./src/rest/Plan.ts","./node_modules/modal-box/bin/ModalBox.min.js","./lib/l10n/l10n.min.js","./lib/globalize/globalize.min.js","./src/RestModules.ts","./src/rest/AnalyticsEndpointCaller.ts","./src/rest/SearchEndpointWithDefaultCallOptions.ts","./src/UIBaseModules.ts","./node_modules/jstimezonedetect/dist/jstz.js","(webpack)/buildin/amd-define.js","(webpack)/buildin/amd-options.js","./sass/Globals.scss","./sass/_SearchButton.scss","./sass/_SearchInterface.scss","./sass/_SearchModalBox.scss","./src/controllers/NoopHistoryController.ts","./src/ui/AriaLive/AriaLive.ts","./sass/accessibility/_ScreenReader.scss","./image/svg/search.svg","./image/svg/more.svg","./image/svg/loading.svg","./image/svg/checkbox-hook-exclusion-more.svg","./image/svg/arrow-up.svg","./image/svg/arrow-down.svg","./image/svg/main-clear.svg","./image/svg/clear-small.svg","./image/svg/clear.svg","./image/svg/close.svg","./image/svg/delete.svg","./image/svg/save.svg","./image/svg/check-yes.svg","./image/svg/or-and.svg","./image/svg/sort.svg","./image/svg/ascending.svg","./image/svg/descending.svg","./image/svg/dropdown-more.svg","./image/svg/dropdown-less.svg","./image/svg/facet-collapse.svg","./image/svg/facet-expand.svg","./image/svg/dropdown-share-query.svg","./image/svg/dropdown-preferences.svg","./image/svg/dropdown-authenticate.svg","./image/svg/dropdown-export.svg","./image/svg/dropdown-follow-query.svg","./image/svg/quickview.svg","./image/svg/pager-right-arrow.svg","./image/svg/pager-left-arrow.svg","./image/svg/replies.svg","./image/svg/video.svg","./image/svg/coveo-logo.svg","./image/svg/coveo-powered-by-logo.svg","./image/svg/tagging-ok.svg","./image/svg/edit.svg","./image/svg/star.svg","./image/svg/list-layout.svg","./image/svg/card-layout.svg","./image/svg/table-layout.svg","./image/svg/plus.svg","./src/ui/Base/ComponentOptionsLoader.ts","./src/ui/Base/ComponentOptionsMerger.ts","./src/ui/Base/ComponentOptionsPostProcessor.ts","./src/ui/Base/ComponentOptionsValidator.ts","./src/utils/Latinize.ts","./sass/_InitializationPlaceholder.scss","./sass/_Debug.scss","./src/ui/Debug/DebugHeader.ts","./sass/vapor/_Checkbox.scss","./src/ui/Debug/DebugForResult.ts","./sass/_MissingTermsBreadcrumb.scss","./node_modules/xregexp/lib/xregexp.js","./node_modules/@babel/runtime-corejs2/core-js/object/create.js","./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/fn/object/create.js","./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/es6.object.create.js","./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_ctx.js","./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_a-function.js","./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_ie8-dom-define.js","./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_to-primitive.js","./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_object-dps.js","./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_object-keys.js","./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_object-keys-internal.js","./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_iobject.js","./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_array-includes.js","./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_to-length.js","./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_to-absolute-index.js","./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_html.js","./node_modules/@babel/runtime-corejs2/helpers/slicedToArray.js","./node_modules/@babel/runtime-corejs2/helpers/arrayWithHoles.js","./node_modules/@babel/runtime-corejs2/core-js/array/is-array.js","./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/fn/array/is-array.js","./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/es6.array.is-array.js","./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_is-array.js","./node_modules/@babel/runtime-corejs2/helpers/iterableToArrayLimit.js","./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/fn/get-iterator.js","./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/web.dom.iterable.js","./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/es6.array.iterator.js","./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_add-to-unscopables.js","./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_iter-step.js","./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_redefine.js","./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_iter-create.js","./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_object-gpo.js","./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_to-object.js","./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/es6.string.iterator.js","./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_string-at.js","./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/core.get-iterator.js","./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/core.get-iterator-method.js","./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_classof.js","./node_modules/@babel/runtime-corejs2/helpers/nonIterableRest.js","./node_modules/@babel/runtime-corejs2/core-js/parse-int.js","./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/fn/parse-int.js","./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/es6.parse-int.js","./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_parse-int.js","./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_string-trim.js","./node_modules/xregexp/lib/addons/build.js","./node_modules/xregexp/lib/addons/matchrecursive.js","./node_modules/xregexp/lib/addons/unicode-base.js","./node_modules/xregexp/lib/addons/unicode-blocks.js","./node_modules/xregexp/tools/output/blocks.js","./node_modules/xregexp/lib/addons/unicode-categories.js","./node_modules/xregexp/tools/output/categories.js","./node_modules/xregexp/lib/addons/unicode-properties.js","./node_modules/xregexp/tools/output/properties.js","./node_modules/xregexp/lib/addons/unicode-scripts.js","./node_modules/xregexp/tools/output/scripts.js","./src/ui/Omnibox/OmniboxAnalytics.ts","./src/ui/SearchInterface/FacetColumnAutoLayoutAdjustment.ts","./src/ui/SearchInterface/FacetValueStateHandler.ts","./src/ui/SearchInterface/ScrollRestorer.ts","(webpack)/buildin/module.js","./sass/_AccessibleButton.scss","./src/ui/Base/InitializationHelper.ts","./src/ui/Analytics/MultiAnalyticsClient.ts","./node_modules/pikaday/pikaday.js","./src/TemplatesModules.ts","./src/ui/ChatterLikedBy/ChatterLikedByFields.ts","./src/ui/ChatterPostAttachment/ChatterPostAttachmentFields.ts","./src/ui/ChatterPostedBy/ChatterPostedByFields.ts","./src/ui/ChatterTopic/ChatterTopicFields.ts","./src/ui/Icon/IconFields.ts","./src/ui/PrintableUri/PrintableUriFields.ts","./src/ui/Quickview/QuickviewFields.ts","./src/ui/ResultLink/ResultLinkFields.ts","./src/ui/FollowItem/FollowItemFields.ts","./src/ui/Thumbnail/ThumbnailFields.ts","./src/SwapVar.ts","./src/ui/Templates/TableTemplate.ts","./src/ui/FocusTrap/FocusTrap.ts","./src/ui/Templates/DefaultRecommendationTemplate.ts","./src/ui/Templates/TemplateToHtml.ts","./src/ui/Templates/CoreHelpers.ts","./src/ui/ResultLink/ResultLinkCommon.ts","./src/rest/AllowedValuesPatternType.ts","./src/ui/Facet/ValueElement.ts","./src/ui/Facet/ValueElementRenderer.ts","./src/ui/Facet/FacetValuesOrder.ts","./src/ui/Facet/FacetSearchElement.ts","./src/ui/Facet/FacetSearchDropdownNavigation/DefaultSearchDropdownNavigator.ts","./src/ui/CategoryFacet/CategoryValueChildrenRenderer.ts","./src/ui/Facet/FacetSettings.ts","./src/ui/Facet/FacetSort.ts","./src/ui/Facet/FacetHeader.ts","./src/ui/Facet/BreadcrumbValueElement.ts","./src/ui/Facet/BreadcrumbValuesList.ts","./src/ui/Facet/FacetSearch.ts","./src/ui/Facet/FacetSearchValuesList.ts","./src/ui/Facet/FacetValuesList.ts","./src/ui/Facet/OmniboxValueElement.ts","./src/ui/Facet/OmniboxValuesList.ts","./src/magicbox/Expression/ExpressionRef.ts","./src/magicbox/Result/RefResult.ts","./src/magicbox/Expression/ExpressionOptions.ts","./src/magicbox/Result/OptionResult.ts","./src/magicbox/Expression/ExpressionRegExp.ts","./src/magicbox/Expression/ExpressionFunction.ts","./src/magicbox/Expression/ExpressionList.ts","./src/magicbox/Grammars/NestedQuery.ts","./src/magicbox/Grammars/Date.ts","./src/magicbox/Grammars/QueryExtension.ts","./src/magicbox/Grammars/SubExpression.ts","./src/magicbox/InputManager.ts","./src/magicbox/QueryProcessor.ts","./src/ui/DynamicFacet/DynamicFacetHeader/DynamicFacetHeaderButton.ts","./src/ui/Sort/SortCriteria.ts","./src/magicbox/Grammars/Complete.ts","./src/magicbox/Grammars/Expressions.ts","./src/events/ResultPreviewsManagerEvents.ts","./src/ui/Querybox/QueryboxOptionsProcessing.ts","./src/ui/Querybox/QueryboxQueryParameters.ts","./sass/DynamicFacet/_DynamicFacetBreadcrumbs.scss","./src/rest/Facet/FacetSortCriteria.ts","./src/ui/Combobox/Combobox.ts","./sass/DynamicFacetSearch/_DynamicFacetSearch.scss","./src/ui/DynamicFacet/DynamicFacetValues/DynamicFacetValueCheckbox.ts","./src/ui/DynamicFacet/DynamicFacetValues/DynamicFacetValues.ts","./src/controllers/DynamicFacetQueryController.ts","./src/ui/DynamicFacet/DynamicFacetValues/DynamicFacetValueRenderer.ts","./src/events/QuerySummaryEvents.ts","./src/ui/Misc/SuggestionForOmnibox.ts","./sass/_FieldSuggestions.scss","./src/misc/AttachShadowPolyfill.ts","./node_modules/d3-scale/src/init.js","./node_modules/d3-scale/src/array.js","./node_modules/d3-scale/src/ordinal.js","./node_modules/d3-scale/src/band.js","./node_modules/d3-scale/src/constant.js","./node_modules/d3-scale/src/number.js","./node_modules/d3-scale/src/continuous.js","./node_modules/d3-scale/src/tickFormat.js","./node_modules/d3-scale/src/linear.js","./node_modules/d3-scale/src/identity.js","./node_modules/d3-scale/src/nice.js","./node_modules/d3-scale/src/log.js","./node_modules/d3-scale/src/symlog.js","./node_modules/d3-scale/src/pow.js","./node_modules/d3-scale/src/quantile.js","./node_modules/d3-scale/src/quantize.js","./node_modules/d3-scale/src/threshold.js","./node_modules/d3-scale/src/time.js","./node_modules/d3-scale/src/utcTime.js","./node_modules/d3-scale/src/sequential.js","./node_modules/d3-scale/src/sequentialQuantile.js","./node_modules/d3-scale/src/diverging.js","./node_modules/d3-scale/src/index.js","./sass/_SimpleFilter.scss","./src/ui/DynamicFacet/IDynamicFacetRange.ts","./node_modules/node-libs-browser/node_modules/util/util.js","./sass/_Result.scss","./sass/_ResultFrame.scss","./sass/_ResultList.scss","./src/ui/ResponsiveComponents/ResponsiveDefaultResultTemplate.ts","./src/ui/ResultList/ResultContainer.ts","./src/ui/ResultList/ResultListCardRenderer.ts","./src/ui/ResultList/ResultListTableRenderer.ts","./sass/_ResultLink.scss","./sass/_ResponsiveFacets.scss","./src/ui/ResponsiveComponents/ResponsiveDropdown/ResponsiveDropdownModalContent.ts","./src/events/FacetsMobileModeEvents.ts","./sass/_FacetHeader.scss","./src/ui/FieldValue/IFieldValueCompatibleFacet.ts","./sass/_Facet.scss","./sass/_FacetFooter.scss","./sass/_FacetBreadcrumb.scss","./sass/_FacetSearch.scss","./src/ui/Facet/FacetSearchUserInputHandler.ts","./src/ui/Facet/FacetSearchDropdownNavigation/SearchDropdownNavigatorFactory.ts","./src/ui/Facet/FacetSearchDropdownNavigation/FacetSearchDropdownNavigator.ts","./src/ui/CategoryFacet/CategoryFacetTemplates.ts","./src/ui/CategoryFacet/CategoryValueRoot.ts","./src/ui/CategoryFacet/CategoryValue.ts","./src/controllers/CategoryFacetQueryController.ts","./sass/_CategoryFacet.scss","./src/ui/CategoryFacet/CategoryFacetSearch.ts","./sass/_CategoryFacetSearch.scss","./src/ui/CategoryFacet/CategoryFacetBreadcrumb.ts","./src/ui/CategoryFacet/CategoryFacetDebug.ts","./src/ui/CategoryFacet/CategoryFacetHeader.ts","./src/ui/CategoryFacet/CategoryFacetValuesTree.ts","./sass/_FacetSettings.scss","./src/ui/Facet/FacetValues.ts","./sass/vapor/_Radio.scss","./src/magicbox/doMagicBoxExport.ts","./src/magicbox/Grammars/Grammars.ts","./src/magicbox/ResultPreviewsManager.ts","./src/magicbox/MagicBoxClear.ts","./sass/_Querybox.scss","./sass/vapor/_FormGroup.scss","./sass/DynamicFacet/_DynamicFacetHeader.scss","./src/ui/DynamicFacet/DynamicFacetHeader/DynamicFacetHeaderCollapseToggle.ts","./src/ui/Combobox/ComboboxInput.ts","./src/ui/Combobox/ComboboxValues.ts","./sass/_Combobox.scss","./src/controllers/FacetRangeQueryController.ts","./sass/_Omnibox.scss","./src/ui/Omnibox/FieldAddon.ts","./src/ui/Omnibox/OldOmniboxAddon.ts","./src/ui/Omnibox/QueryExtensionAddon.ts","./src/ui/Omnibox/QuerySuggestAddon.ts","./sass/vapor/_MultiSelect.scss","./sass/_Sort.scss","./src/ui/ResponsiveComponents/ResponsiveDynamicFacets.ts","./src/ui/DynamicFacet/DynamicFacetBreadcrumbs.ts","./sass/DynamicFacet/_DynamicFacetValues.scss","./src/ui/DynamicFacetSearch/DynamicFacetSearch.ts","./src/controllers/FacetSearchController.ts","./src/ui/DynamicFacetSearch/DynamicFacetSearchValueRenderer.ts","./src/ui/DynamicFacet/DynamicFacetValues/DynamicFacetValueCreator.ts","./sass/_AttachShadowPolyfill.scss","./node_modules/dompurify/dist/purify.js","./src/ui/AdvancedSearch/AdvancedSearchInputFactory.ts","./src/ui/AdvancedSearch/KeywordsInput/AllKeywordsInput.ts","./src/ui/AdvancedSearch/KeywordsInput/ExactKeywordsInput.ts","./src/ui/AdvancedSearch/KeywordsInput/AnyKeywordsInput.ts","./src/ui/AdvancedSearch/KeywordsInput/NoneKeywordsInput.ts","./src/ui/AdvancedSearch/DateInput/AnytimeDateInput.ts","./src/ui/AdvancedSearch/DateInput/InTheLastDateInput.ts","./src/ui/AdvancedSearch/DateInput/BetweenDateInput.ts","./src/ui/AdvancedSearch/DocumentInput/SimpleFieldInput.ts","./src/ui/AdvancedSearch/DocumentInput/AdvancedFieldInput.ts","./src/ui/AdvancedSearch/DocumentInput/SizeInput.ts","./sass/_AdvancedSearch.scss","./sass/_AuthenticationProvider.scss","./sass/_Backdrop.scss","./sass/_Breadcrumb.scss","./sass/_CardActionBar.scss","./src/events/CardOverlayEvents.ts","./sass/_CardOverlay.scss","./sass/_DidYouMean.scss","./src/ui/Distance/GoogleApiPositionProvider.ts","./src/ui/Distance/NavigatorPositionProvider.ts","./src/ui/Distance/StaticPositionProvider.ts","./sass/_ErrorReport.scss","./sass/_Excerpt.scss","./sass/_ExportToExcel.scss","./sass/_FacetSlider.scss","./src/controllers/FacetSliderQueryController.ts","./src/ui/Misc/Slider.ts","./node_modules/d3/dist/package.js","./node_modules/d3-axis/src/array.js","./node_modules/d3-axis/src/identity.js","./node_modules/d3-axis/src/axis.js","./node_modules/d3-axis/src/index.js","./node_modules/d3-dispatch/src/dispatch.js","./node_modules/d3-dispatch/src/index.js","./node_modules/d3-selection/src/namespaces.js","./node_modules/d3-selection/src/namespace.js","./node_modules/d3-selection/src/creator.js","./node_modules/d3-selection/src/selector.js","./node_modules/d3-selection/src/selection/select.js","./node_modules/d3-selection/src/selectorAll.js","./node_modules/d3-selection/src/selection/selectAll.js","./node_modules/d3-selection/src/matcher.js","./node_modules/d3-selection/src/selection/filter.js","./node_modules/d3-selection/src/selection/sparse.js","./node_modules/d3-selection/src/selection/enter.js","./node_modules/d3-selection/src/constant.js","./node_modules/d3-selection/src/selection/data.js","./node_modules/d3-selection/src/selection/exit.js","./node_modules/d3-selection/src/selection/join.js","./node_modules/d3-selection/src/selection/merge.js","./node_modules/d3-selection/src/selection/order.js","./node_modules/d3-selection/src/selection/sort.js","./node_modules/d3-selection/src/selection/call.js","./node_modules/d3-selection/src/selection/nodes.js","./node_modules/d3-selection/src/selection/node.js","./node_modules/d3-selection/src/selection/size.js","./node_modules/d3-selection/src/selection/empty.js","./node_modules/d3-selection/src/selection/each.js","./node_modules/d3-selection/src/selection/attr.js","./node_modules/d3-selection/src/window.js","./node_modules/d3-selection/src/selection/style.js","./node_modules/d3-selection/src/selection/property.js","./node_modules/d3-selection/src/selection/classed.js","./node_modules/d3-selection/src/selection/text.js","./node_modules/d3-selection/src/selection/html.js","./node_modules/d3-selection/src/selection/raise.js","./node_modules/d3-selection/src/selection/lower.js","./node_modules/d3-selection/src/selection/append.js","./node_modules/d3-selection/src/selection/insert.js","./node_modules/d3-selection/src/selection/remove.js","./node_modules/d3-selection/src/selection/clone.js","./node_modules/d3-selection/src/selection/datum.js","./node_modules/d3-selection/src/selection/on.js","./node_modules/d3-selection/src/selection/dispatch.js","./node_modules/d3-selection/src/selection/index.js","./node_modules/d3-selection/src/select.js","./node_modules/d3-selection/src/create.js","./node_modules/d3-selection/src/local.js","./node_modules/d3-selection/src/sourceEvent.js","./node_modules/d3-selection/src/point.js","./node_modules/d3-selection/src/mouse.js","./node_modules/d3-selection/src/selectAll.js","./node_modules/d3-selection/src/touch.js","./node_modules/d3-selection/src/touches.js","./node_modules/d3-selection/src/index.js","./node_modules/d3-drag/src/noevent.js","./node_modules/d3-drag/src/nodrag.js","./node_modules/d3-drag/src/constant.js","./node_modules/d3-drag/src/event.js","./node_modules/d3-drag/src/drag.js","./node_modules/d3-drag/src/index.js","./node_modules/d3-timer/src/timer.js","./node_modules/d3-timer/src/timeout.js","./node_modules/d3-timer/src/interval.js","./node_modules/d3-timer/src/index.js","./node_modules/d3-transition/src/transition/schedule.js","./node_modules/d3-transition/src/interrupt.js","./node_modules/d3-transition/src/selection/interrupt.js","./node_modules/d3-transition/src/transition/tween.js","./node_modules/d3-transition/src/transition/interpolate.js","./node_modules/d3-transition/src/transition/attr.js","./node_modules/d3-transition/src/transition/attrTween.js","./node_modules/d3-transition/src/transition/delay.js","./node_modules/d3-transition/src/transition/duration.js","./node_modules/d3-transition/src/transition/ease.js","./node_modules/d3-transition/src/transition/filter.js","./node_modules/d3-transition/src/transition/merge.js","./node_modules/d3-transition/src/transition/on.js","./node_modules/d3-transition/src/transition/remove.js","./node_modules/d3-transition/src/transition/select.js","./node_modules/d3-transition/src/transition/selectAll.js","./node_modules/d3-transition/src/transition/selection.js","./node_modules/d3-transition/src/transition/style.js","./node_modules/d3-transition/src/transition/styleTween.js","./node_modules/d3-transition/src/transition/text.js","./node_modules/d3-transition/src/transition/textTween.js","./node_modules/d3-transition/src/transition/transition.js","./node_modules/d3-transition/src/transition/end.js","./node_modules/d3-transition/src/transition/index.js","./node_modules/d3-ease/src/linear.js","./node_modules/d3-ease/src/quad.js","./node_modules/d3-ease/src/cubic.js","./node_modules/d3-ease/src/poly.js","./node_modules/d3-ease/src/sin.js","./node_modules/d3-ease/src/math.js","./node_modules/d3-ease/src/exp.js","./node_modules/d3-ease/src/circle.js","./node_modules/d3-ease/src/bounce.js","./node_modules/d3-ease/src/back.js","./node_modules/d3-ease/src/elastic.js","./node_modules/d3-ease/src/index.js","./node_modules/d3-transition/src/selection/transition.js","./node_modules/d3-transition/src/selection/index.js","./node_modules/d3-transition/src/active.js","./node_modules/d3-transition/src/index.js","./node_modules/d3-brush/src/constant.js","./node_modules/d3-brush/src/event.js","./node_modules/d3-brush/src/noevent.js","./node_modules/d3-brush/src/brush.js","./node_modules/d3-brush/src/index.js","./node_modules/d3-chord/src/math.js","./node_modules/d3-chord/src/chord.js","./node_modules/d3-chord/src/array.js","./node_modules/d3-chord/src/constant.js","./node_modules/d3-path/src/path.js","./node_modules/d3-path/src/index.js","./node_modules/d3-chord/src/ribbon.js","./node_modules/d3-chord/src/index.js","./node_modules/d3-contour/src/array.js","./node_modules/d3-contour/src/ascending.js","./node_modules/d3-contour/src/area.js","./node_modules/d3-contour/src/constant.js","./node_modules/d3-contour/src/contains.js","./node_modules/d3-contour/src/noop.js","./node_modules/d3-contour/src/contours.js","./node_modules/d3-contour/src/blur.js","./node_modules/d3-contour/src/density.js","./node_modules/d3-contour/src/index.js","./node_modules/d3-dsv/src/dsv.js","./node_modules/d3-dsv/src/csv.js","./node_modules/d3-dsv/src/tsv.js","./node_modules/d3-dsv/src/autoType.js","./node_modules/d3-dsv/src/index.js","./node_modules/d3-fetch/src/blob.js","./node_modules/d3-fetch/src/buffer.js","./node_modules/d3-fetch/src/text.js","./node_modules/d3-fetch/src/dsv.js","./node_modules/d3-fetch/src/image.js","./node_modules/d3-fetch/src/json.js","./node_modules/d3-fetch/src/xml.js","./node_modules/d3-fetch/src/index.js","./node_modules/d3-force/src/center.js","./node_modules/d3-force/src/constant.js","./node_modules/d3-force/src/jiggle.js","./node_modules/d3-quadtree/src/add.js","./node_modules/d3-quadtree/src/cover.js","./node_modules/d3-quadtree/src/data.js","./node_modules/d3-quadtree/src/extent.js","./node_modules/d3-quadtree/src/quad.js","./node_modules/d3-quadtree/src/find.js","./node_modules/d3-quadtree/src/remove.js","./node_modules/d3-quadtree/src/root.js","./node_modules/d3-quadtree/src/size.js","./node_modules/d3-quadtree/src/visit.js","./node_modules/d3-quadtree/src/visitAfter.js","./node_modules/d3-quadtree/src/x.js","./node_modules/d3-quadtree/src/y.js","./node_modules/d3-quadtree/src/quadtree.js","./node_modules/d3-quadtree/src/index.js","./node_modules/d3-force/src/collide.js","./node_modules/d3-force/src/link.js","./node_modules/d3-force/src/simulation.js","./node_modules/d3-force/src/manyBody.js","./node_modules/d3-force/src/radial.js","./node_modules/d3-force/src/x.js","./node_modules/d3-force/src/y.js","./node_modules/d3-force/src/index.js","./node_modules/d3-geo/src/adder.js","./node_modules/d3-geo/src/math.js","./node_modules/d3-geo/src/noop.js","./node_modules/d3-geo/src/stream.js","./node_modules/d3-geo/src/area.js","./node_modules/d3-geo/src/cartesian.js","./node_modules/d3-geo/src/bounds.js","./node_modules/d3-geo/src/centroid.js","./node_modules/d3-geo/src/constant.js","./node_modules/d3-geo/src/compose.js","./node_modules/d3-geo/src/rotation.js","./node_modules/d3-geo/src/circle.js","./node_modules/d3-geo/src/clip/buffer.js","./node_modules/d3-geo/src/pointEqual.js","./node_modules/d3-geo/src/clip/rejoin.js","./node_modules/d3-geo/src/polygonContains.js","./node_modules/d3-geo/src/clip/index.js","./node_modules/d3-geo/src/clip/antimeridian.js","./node_modules/d3-geo/src/clip/circle.js","./node_modules/d3-geo/src/clip/line.js","./node_modules/d3-geo/src/clip/rectangle.js","./node_modules/d3-geo/src/clip/extent.js","./node_modules/d3-geo/src/length.js","./node_modules/d3-geo/src/distance.js","./node_modules/d3-geo/src/contains.js","./node_modules/d3-geo/src/graticule.js","./node_modules/d3-geo/src/interpolate.js","./node_modules/d3-geo/src/identity.js","./node_modules/d3-geo/src/path/area.js","./node_modules/d3-geo/src/path/bounds.js","./node_modules/d3-geo/src/path/centroid.js","./node_modules/d3-geo/src/path/context.js","./node_modules/d3-geo/src/path/measure.js","./node_modules/d3-geo/src/path/string.js","./node_modules/d3-geo/src/path/index.js","./node_modules/d3-geo/src/transform.js","./node_modules/d3-geo/src/projection/fit.js","./node_modules/d3-geo/src/projection/resample.js","./node_modules/d3-geo/src/projection/index.js","./node_modules/d3-geo/src/projection/conic.js","./node_modules/d3-geo/src/projection/cylindricalEqualArea.js","./node_modules/d3-geo/src/projection/conicEqualArea.js","./node_modules/d3-geo/src/projection/albers.js","./node_modules/d3-geo/src/projection/albersUsa.js","./node_modules/d3-geo/src/projection/azimuthal.js","./node_modules/d3-geo/src/projection/azimuthalEqualArea.js","./node_modules/d3-geo/src/projection/azimuthalEquidistant.js","./node_modules/d3-geo/src/projection/mercator.js","./node_modules/d3-geo/src/projection/conicConformal.js","./node_modules/d3-geo/src/projection/equirectangular.js","./node_modules/d3-geo/src/projection/conicEquidistant.js","./node_modules/d3-geo/src/projection/equalEarth.js","./node_modules/d3-geo/src/projection/gnomonic.js","./node_modules/d3-geo/src/projection/identity.js","./node_modules/d3-geo/src/projection/naturalEarth1.js","./node_modules/d3-geo/src/projection/orthographic.js","./node_modules/d3-geo/src/projection/stereographic.js","./node_modules/d3-geo/src/projection/transverseMercator.js","./node_modules/d3-geo/src/index.js","./node_modules/d3-hierarchy/src/cluster.js","./node_modules/d3-hierarchy/src/hierarchy/count.js","./node_modules/d3-hierarchy/src/hierarchy/each.js","./node_modules/d3-hierarchy/src/hierarchy/eachBefore.js","./node_modules/d3-hierarchy/src/hierarchy/eachAfter.js","./node_modules/d3-hierarchy/src/hierarchy/sum.js","./node_modules/d3-hierarchy/src/hierarchy/sort.js","./node_modules/d3-hierarchy/src/hierarchy/path.js","./node_modules/d3-hierarchy/src/hierarchy/ancestors.js","./node_modules/d3-hierarchy/src/hierarchy/descendants.js","./node_modules/d3-hierarchy/src/hierarchy/leaves.js","./node_modules/d3-hierarchy/src/hierarchy/links.js","./node_modules/d3-hierarchy/src/hierarchy/index.js","./node_modules/d3-hierarchy/src/array.js","./node_modules/d3-hierarchy/src/pack/enclose.js","./node_modules/d3-hierarchy/src/pack/siblings.js","./node_modules/d3-hierarchy/src/accessors.js","./node_modules/d3-hierarchy/src/constant.js","./node_modules/d3-hierarchy/src/pack/index.js","./node_modules/d3-hierarchy/src/treemap/round.js","./node_modules/d3-hierarchy/src/treemap/dice.js","./node_modules/d3-hierarchy/src/partition.js","./node_modules/d3-hierarchy/src/stratify.js","./node_modules/d3-hierarchy/src/tree.js","./node_modules/d3-hierarchy/src/treemap/slice.js","./node_modules/d3-hierarchy/src/treemap/squarify.js","./node_modules/d3-hierarchy/src/treemap/index.js","./node_modules/d3-hierarchy/src/treemap/binary.js","./node_modules/d3-hierarchy/src/treemap/sliceDice.js","./node_modules/d3-hierarchy/src/treemap/resquarify.js","./node_modules/d3-hierarchy/src/index.js","./node_modules/d3-polygon/src/area.js","./node_modules/d3-polygon/src/centroid.js","./node_modules/d3-polygon/src/cross.js","./node_modules/d3-polygon/src/hull.js","./node_modules/d3-polygon/src/contains.js","./node_modules/d3-polygon/src/length.js","./node_modules/d3-polygon/src/index.js","./node_modules/d3-random/src/defaultSource.js","./node_modules/d3-random/src/uniform.js","./node_modules/d3-random/src/normal.js","./node_modules/d3-random/src/logNormal.js","./node_modules/d3-random/src/irwinHall.js","./node_modules/d3-random/src/bates.js","./node_modules/d3-random/src/exponential.js","./node_modules/d3-random/src/index.js","./node_modules/d3-scale-chromatic/src/colors.js","./node_modules/d3-scale-chromatic/src/categorical/category10.js","./node_modules/d3-scale-chromatic/src/categorical/Accent.js","./node_modules/d3-scale-chromatic/src/categorical/Dark2.js","./node_modules/d3-scale-chromatic/src/categorical/Paired.js","./node_modules/d3-scale-chromatic/src/categorical/Pastel1.js","./node_modules/d3-scale-chromatic/src/categorical/Pastel2.js","./node_modules/d3-scale-chromatic/src/categorical/Set1.js","./node_modules/d3-scale-chromatic/src/categorical/Set2.js","./node_modules/d3-scale-chromatic/src/categorical/Set3.js","./node_modules/d3-scale-chromatic/src/categorical/Tableau10.js","./node_modules/d3-scale-chromatic/src/ramp.js","./node_modules/d3-scale-chromatic/src/diverging/BrBG.js","./node_modules/d3-scale-chromatic/src/diverging/PRGn.js","./node_modules/d3-scale-chromatic/src/diverging/PiYG.js","./node_modules/d3-scale-chromatic/src/diverging/PuOr.js","./node_modules/d3-scale-chromatic/src/diverging/RdBu.js","./node_modules/d3-scale-chromatic/src/diverging/RdGy.js","./node_modules/d3-scale-chromatic/src/diverging/RdYlBu.js","./node_modules/d3-scale-chromatic/src/diverging/RdYlGn.js","./node_modules/d3-scale-chromatic/src/diverging/Spectral.js","./node_modules/d3-scale-chromatic/src/sequential-multi/BuGn.js","./node_modules/d3-scale-chromatic/src/sequential-multi/BuPu.js","./node_modules/d3-scale-chromatic/src/sequential-multi/GnBu.js","./node_modules/d3-scale-chromatic/src/sequential-multi/OrRd.js","./node_modules/d3-scale-chromatic/src/sequential-multi/PuBuGn.js","./node_modules/d3-scale-chromatic/src/sequential-multi/PuBu.js","./node_modules/d3-scale-chromatic/src/sequential-multi/PuRd.js","./node_modules/d3-scale-chromatic/src/sequential-multi/RdPu.js","./node_modules/d3-scale-chromatic/src/sequential-multi/YlGnBu.js","./node_modules/d3-scale-chromatic/src/sequential-multi/YlGn.js","./node_modules/d3-scale-chromatic/src/sequential-multi/YlOrBr.js","./node_modules/d3-scale-chromatic/src/sequential-multi/YlOrRd.js","./node_modules/d3-scale-chromatic/src/sequential-single/Blues.js","./node_modules/d3-scale-chromatic/src/sequential-single/Greens.js","./node_modules/d3-scale-chromatic/src/sequential-single/Greys.js","./node_modules/d3-scale-chromatic/src/sequential-single/Purples.js","./node_modules/d3-scale-chromatic/src/sequential-single/Reds.js","./node_modules/d3-scale-chromatic/src/sequential-single/Oranges.js","./node_modules/d3-scale-chromatic/src/sequential-multi/cividis.js","./node_modules/d3-scale-chromatic/src/sequential-multi/cubehelix.js","./node_modules/d3-scale-chromatic/src/sequential-multi/rainbow.js","./node_modules/d3-scale-chromatic/src/sequential-multi/sinebow.js","./node_modules/d3-scale-chromatic/src/sequential-multi/turbo.js","./node_modules/d3-scale-chromatic/src/sequential-multi/viridis.js","./node_modules/d3-scale-chromatic/src/index.js","./node_modules/d3-shape/src/constant.js","./node_modules/d3-shape/src/math.js","./node_modules/d3-shape/src/arc.js","./node_modules/d3-shape/src/curve/linear.js","./node_modules/d3-shape/src/point.js","./node_modules/d3-shape/src/line.js","./node_modules/d3-shape/src/area.js","./node_modules/d3-shape/src/descending.js","./node_modules/d3-shape/src/identity.js","./node_modules/d3-shape/src/pie.js","./node_modules/d3-shape/src/curve/radial.js","./node_modules/d3-shape/src/lineRadial.js","./node_modules/d3-shape/src/areaRadial.js","./node_modules/d3-shape/src/pointRadial.js","./node_modules/d3-shape/src/array.js","./node_modules/d3-shape/src/link/index.js","./node_modules/d3-shape/src/symbol/circle.js","./node_modules/d3-shape/src/symbol/cross.js","./node_modules/d3-shape/src/symbol/diamond.js","./node_modules/d3-shape/src/symbol/star.js","./node_modules/d3-shape/src/symbol/square.js","./node_modules/d3-shape/src/symbol/triangle.js","./node_modules/d3-shape/src/symbol/wye.js","./node_modules/d3-shape/src/symbol.js","./node_modules/d3-shape/src/noop.js","./node_modules/d3-shape/src/curve/basis.js","./node_modules/d3-shape/src/curve/basisClosed.js","./node_modules/d3-shape/src/curve/basisOpen.js","./node_modules/d3-shape/src/curve/bundle.js","./node_modules/d3-shape/src/curve/cardinal.js","./node_modules/d3-shape/src/curve/cardinalClosed.js","./node_modules/d3-shape/src/curve/cardinalOpen.js","./node_modules/d3-shape/src/curve/catmullRom.js","./node_modules/d3-shape/src/curve/catmullRomClosed.js","./node_modules/d3-shape/src/curve/catmullRomOpen.js","./node_modules/d3-shape/src/curve/linearClosed.js","./node_modules/d3-shape/src/curve/monotone.js","./node_modules/d3-shape/src/curve/natural.js","./node_modules/d3-shape/src/curve/step.js","./node_modules/d3-shape/src/offset/none.js","./node_modules/d3-shape/src/order/none.js","./node_modules/d3-shape/src/stack.js","./node_modules/d3-shape/src/offset/expand.js","./node_modules/d3-shape/src/offset/diverging.js","./node_modules/d3-shape/src/offset/silhouette.js","./node_modules/d3-shape/src/offset/wiggle.js","./node_modules/d3-shape/src/order/appearance.js","./node_modules/d3-shape/src/order/ascending.js","./node_modules/d3-shape/src/order/descending.js","./node_modules/d3-shape/src/order/insideOut.js","./node_modules/d3-shape/src/order/reverse.js","./node_modules/d3-shape/src/index.js","./node_modules/d3-voronoi/src/constant.js","./node_modules/d3-voronoi/src/point.js","./node_modules/d3-voronoi/src/RedBlackTree.js","./node_modules/d3-voronoi/src/Edge.js","./node_modules/d3-voronoi/src/Cell.js","./node_modules/d3-voronoi/src/Circle.js","./node_modules/d3-voronoi/src/Beach.js","./node_modules/d3-voronoi/src/Diagram.js","./node_modules/d3-voronoi/src/voronoi.js","./node_modules/d3-voronoi/src/index.js","./node_modules/d3-zoom/src/constant.js","./node_modules/d3-zoom/src/event.js","./node_modules/d3-zoom/src/transform.js","./node_modules/d3-zoom/src/noevent.js","./node_modules/d3-zoom/src/zoom.js","./node_modules/d3-zoom/src/index.js","./node_modules/d3/index.js","./src/ui/ResponsiveComponents/ResponsiveFacetSlider.ts","./src/ui/FacetValueSuggestions/FacetValueSuggestionsProvider.ts","./sass/_FieldTable.scss","./sass/_HiddenQuery.scss","./src/ui/HierarchicalFacet/HierarchicalFacetValuesList.ts","./src/controllers/HierarchicalFacetQueryController.ts","./src/ui/HierarchicalFacet/HierarchicalFacetSearchValuesList.ts","./src/ui/HierarchicalFacet/HierarchicalFacetSearchValueElement.ts","./src/ui/HierarchicalFacet/HierarchicalFacetSearch.ts","./src/ui/HierarchicalFacet/HierarchicalBreadcrumbValuesList.ts","./src/ui/HierarchicalFacet/HierarchicalBreadcrumbValueElement.ts","./src/ui/HierarchicalFacet/OmniboxHierarchicalValuesList.ts","./src/ui/HierarchicalFacet/OmniboxHierarchicalValueElement.ts","./src/ui/HierarchicalFacet/HierarchicalFacetValueElement.ts","./sass/_HierarchicalFacet.scss","./sass/_Matrix.scss","./src/ui/Matrix/Cell.ts","./src/ui/Matrix/DefaultMatrixResultPreviewTemplate.ts","./sass/_OmniboxResultList.scss","./sass/_Pager.scss","./sass/_PreferencesPanel.scss","./sass/_PrintableUri.scss","./sass/_QueryDuration.scss","./sass/_QuerySummary.scss","./sass/_Quickview.scss","./src/ui/Quickview/DefaultQuickviewTemplate.ts","./src/ui/Quickview/QuickviewDocumentIframe.ts","./src/ui/Quickview/QuickviewDocumentHeader.ts","./src/ui/Quickview/QuickviewDocumentWords.ts","./src/ui/Quickview/QuickviewDocumentWord.ts","./src/ui/Quickview/QuickviewDocumentWordColor.ts","./src/ui/Quickview/QuickviewDocumentWordButton.ts","./src/ui/Quickview/QuickviewDocumentPreviewBar.ts","./src/ui/ResponsiveComponents/ResponsiveRecommendation.ts","./src/ui/ResponsiveComponents/ResponsiveDropdown/RecommendationDropdownContent.ts","./sass/_ResponsiveRecommendation.scss","./src/ui/Recommendation/RecommendationQuery.ts","./sass/_Recommendation.scss","./sass/_ResultActionsMenu.scss","./src/ui/ResultAttachments/DefaultResultAttachmentTemplate.ts","./sass/_ResultAttachments.scss","./src/ui/ResultFolding/DefaultFoldingTemplate.ts","./sass/_ResultFolding.scss","./sass/_ResultLayoutSelector.scss","./src/ui/ResponsiveComponents/ResponsiveResultLayout.ts","./sass/_ResultRating.scss","./sass/_StarRating.scss","./sass/_ResultsFiltersPreferences.scss","./sass/_ResultsPerPage.scss","./sass/_ResultsPreferences.scss","./sass/_ResultTagging.scss","./src/ui/SearchAlerts/SearchAlertsMessage.ts","./sass/_Searchbox.scss","./src/utils/SearchBoxResize.ts","./sass/_Settings.scss","./sass/_ShareQuery.scss","./sass/_Tab.scss","./src/ui/ResponsiveComponents/ResponsiveTabs.ts","./sass/_ResponsiveTabs.scss","./sass/_Text.scss","./sass/_Triggers.scss","./src/ui/SimpleFilter/SimpleFilterValues.ts","./sass/_PromotedResultsBadge.scss","./src/controllers/DynamicHierarchicalFacetQueryController.ts","./src/ui/DynamicHierarchicalFacet/DynamicHierarchicalFacetBreadcrumb.ts","./src/ui/DynamicHierarchicalFacet/DynamicHierarchicalFacetValues/DynamicHierarchicalFacetValues.ts","./sass/DynamicHierarchicalFacet/_DynamicHierarchicalFacetValues.scss","./src/ui/DynamicHierarchicalFacet/DynamicHierarchicalFacetValues/DynamicHierarchicalFacetValue.ts","./src/ui/DynamicHierarchicalFacet/DynamicHierarchicalFacetValues/DynamicHierarchicalFacetValueRenderer.ts","./src/ui/DynamicHierarchicalFacetSearch/DynamicHierarchicalFacetSearch.ts","./src/controllers/HierarchicalFacetSearchController.ts","./src/rest/Facet/FacetSearchRequest.ts","./src/ui/DynamicHierarchicalFacetSearch/DynamicHierarchicalFacetSearchValue.ts","./src/ui/DynamicHierarchicalFacetSearch/DynamicHierarchicalFacetSearchValueRenderer.ts","./sass/DynamicHierarchicalFacetSearch/_DynamicHierarchicalFacetSearch.scss","./src/ui/DynamicFacet/DynamicFacetValues/DynamicFacetRangeValueCreator.ts","./src/ui/DynamicFacet/DynamicFacetValues/DynamicFacetRangeValueParser.ts","./src/rest/RangeValue.ts","./src/utils/NumberUtils.ts","./node_modules/node-libs-browser/node_modules/util/support/isBufferBrowser.js","./node_modules/node-libs-browser/node_modules/inherits/inherits_browser.js","./src/controllers/DynamicFacetRangeQueryController.ts","./src/rest/Facet/FacetRangeSortOrder.ts","./sass/_MissingTerms.scss","./sass/_QuerySuggestPreview.scss","./sass/_SortDropdown.scss","./sass/_SmartSnippet.scss","./src/ui/SmartSnippet/UserFeedbackBanner.ts","./src/ui/SmartSnippet/HeightLimiter.ts","./src/ui/SmartSnippet/ExplanationModal.ts","./sass/_ExplanationModal.scss","./sass/_SmartSnippetSuggestions.scss","./src/ui/SmartSnippet/SmartSnippetCollapsibleSuggestion.ts","./node_modules/css-loader/lib/css-base.js","./node_modules/style-loader/lib/addStyles.js","./src/Eager.ts"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD,O;QCVA;QACA;QACA;QACA;QACA;QACA;QACA,QAAQ,oBAAoB;QAC5B;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA,0CAA0C,WAAW,EAAE;QACvD;;QAEA;QACA;QACA;QACA;;QAEA;QACA;QACA;QACA,IAAI;QACJ;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;QACA;QACA,+CAA+C,gDAAgD;QAC/F;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;;QAEA;QACA;QACA;QACA;QACA;QACA;QACA;QACA,KAAK;QACL;QACA;;QAEA;QACA;QACA;QACA,2BAA2B,0BAA0B,EAAE;QACvD,iCAAiC,eAAe;QAChD;QACA;QACA;;QAEA;QACA,sDAAsD,+DAA+D;;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;AACA,eAAe,UAAS;AACxB;AACA,IAAI,OAAO,SAAS,QAAQ,SAAS,mBAAW;AAChD;AACA,SAAS,UAAS,CAAC,SAAI;AACvB;;;ACjB6B;;AAE7B;AACe;AACf,cAAc,SAAI;AAClB;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;;;ACZsC;;AAEtC;AACA;AACA;AACe;AACf;AACA;AACA;AACA;;AAEA,YAAY,yBAAO;;AAEnB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;ACxBgD;;AAEhD;AACA;AACe;AACf;AACA;AACA;AACA,IAAI,cAAa;AACjB;AACA;;;ACVgC;AACoB;AACJ;AACH;AACJ;AACa;AACb;AACZ;AACD;AACkB;;AAE9C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,CAAC;AACpB,mBAAmB,CAAC;AACpB;AACA,kBAAkB,0BAAQ;AAC1B,oBAAoB,0BAAQ;AAC5B;AACA,MAAM,eAAe,sCAAsC,kBAAU;AACrE,SAAS,kBAAU;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,6BAAW,qBAAqB,6BAAW;AACxD;AACA;AACA;AACA,oBAAoB,YAAY,KAAK,YAAY;AACjD;;AAEA;AACA,oBAAoB,oBAAY;AAChC,uBAAuB,cAAa;AACpC,yBAAyB,cAAa;AACtC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,6BAA6B,kBAAU;AACvC,6BAA6B,kBAAU;AACvC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,gBAAgB,SAAI;AACpB;AACA;AACA,QAAQ,SAAI;AACZ;AACA;AACA;AACA,YAAY,GAAG;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACe;AACf;AACA;;;ACzIqC;AACI;AACmB;;AAE5D;AACe;AACf,OAAO,QAAQ;AACf;AACA;AACA;AACA,MAAM,4BAAU,EAAE,mBAAmB;AACrC;AACA;;;ACZwC;AACC;AACN;;AAEnC;AACA;AACA;AACA;AACO;AACP,eAAe,UAAS;AACxB;AACA;AACA;AACA,eAAe,OAAO;AACtB,QAAQ,UAAS;AACjB,mBAAmB,YAAY;AAC/B,WAAW,kBAAU;AACrB;AACA;AACA;AACA;AACA,0CAA0C,kBAAU;AACpD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACO;AACP;AACA;;;ACpCwC;AACI;AAC2B;;AAExD,gDAAM,GAAG,eAAe,CAAC,UAAU,IAAI,SAAS,OAAO,EAAC;;;ACJ/B;AACI;AAC+B;;AAE5D,oDAAM,GAAG,eAAe,CAAC,cAAc,IAAI,SAAS,WAAW,EAAC;;;ACJvC;AACI;AAC2B;;AAExD,gDAAM,GAAG,eAAe,CAAC,UAAU,IAAI,SAAS,OAAO,EAAC;;;ACJ/B;;AAEzB,uDAAS,WAAW,EAAC;;;ACFP;;AAE7B;AACe,SAAS,aAAM;AAC9B,cAAc,SAAI;AAClB;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;;;ACX6B;;AAE7B;AACA;AACe,SAAS,WAAK;AAC7B,cAAc,SAAI;AAClB;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;;;ACZ6B;;AAE7B;AACe;AACf;AACA,cAAc,SAAI;AAClB,wCAAwC,YAAY;AACpD;AACA;AACA;AACA;;;ACVyC;;AAEzC;AACe;AACf;AACA;AACA,QAAQ,kBAAU;AAClB;AACA;AACA;;;ACTA;AACe;AACf;AACA;AACA;AACA;AACA,uBAAuB,gBAAgB;AACvC;AACA;AACA;AACA,qBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;;;ACjBkD;AACf;;AAEnC;AACe,yDAAc,CAAC,OAAO,CAAC,EAAC;;;ACJW;AACrB;;AAE7B;AACA;AACA;AACe,4DAAc,CAAC,SAAI,CAAC,EAAC;;;ACNc;AACf;;AAEnC;AACe,2DAAc,CAAC,OAAO,OAAO,EAAC;;;ACJR;AACM;;AAE3C;AACA;AACA;AACA;;AAEA;AACe;AACf,OAAO,QAAQ;AACf,MAAM,8BAAY,SAAS,sCAAY;AACvC;AACA;AACA;AACA;AACA;AACA;;;ACjB0C;AACH;;AAEvC;AACA;AACA;AACe;AACf,eAAe,UAAU;AACzB,aAAa,SAAS;AACtB;AACA;;;ACVqC;AACF;AACF;;AAEjC;AACe;AACf,OAAO,QAAQ;AACf,SAAS,OAAO,sBAAsB,MAAM,GAAG;AAC/C;;;ACRA;AACA;AACA;AACe;AACf;AACA;AACA;;;ACNgC;AACG;;AAEnC;AACA;AACe;AACf,SAAS,OAAO;AAChB;AACA,CAAC;;;ACR+B;AACX;;AAErB;AACA;AACe,SAAS,cAAM;AAC9B,SAAS,CAAC;AACV;;;ACPA;AACe;AACf;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;;;ACRkC;AACE;AACO;;AAE3C;AACA;AACA;AACA;AACe;AACf,cAAc,OAAO,SAAS,cAAM;AACpC,SAAS,WAAW;AACpB;;;ACX6B;AACK;;AAElC;AACA;AACA;AACe,SAAS,OAAG;AAC3B,SAAS,cAAM;AACf;AACA,iBAAiB,YAAY;AAC7B;AACA,SAAS,GAAI;AACb;AACA;AACA;AACA;;;ACfA;AACe;AACf;AACA;;;ACHuC;AACJ;;AAEnC;AACA;AACe,SAAS,eAAO;AAC/B,UAAU,SAAS,GAAG;AACtB;AACA,WAAW,OAAO;AAClB;AACA;;;ACVoC;AACF;;AAElC;AACA;AACe;AACf,SAAS,cAAM;AACf;AACA,WAAW,OAAO;AAClB;AACA;;;ACVA;AACA;AACA;AACe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACpBqC;AACI;AACJ;AACF;AACA;AACE;AACK;;AAE1C;AACA;AACA;AACe;AACf,4BAA4B,QAAQ;AACpC,MAAM,kBAAU,gBAAgB,UAAU;AAC1C,MAAM,QAAQ,YAAY,OAAO,gBAAgB,eAAO;AACxD,SAAS,QAAQ;AACjB;;;AChBgC;AACc;;AAE9C;AACA;AACA;AACe,SAAS,iBAAQ;AAChC,SAAS,YAAY;AACrB;AACA,CAAC,YAAY,iBAAQ;;;ACTW;AACc;AACT;;AAErC;AACA;AACe;AACf,MAAM,CAAC,cAAc,iBAAQ,SAAS,CAAC;AACvC,SAAS,YAAY;AACrB;;;ACT0B;AACG;;AAE7B;AACA;AACe;AACf,aAAa,EAAE;AACf,cAAc,SAAI;AAClB;AACA;AACA,qBAAqB,gBAAgB;AACrC;AACA;AACA;AACA;AACA;;;ACfA;AACe;;;ACDc;AACF;;AAE3B;AACe;AACf,0BAA0B,IAAI;AAC9B;AACA,WAAW,GAAG;AACd;AACA;;;ACT0C;;AAE1C;AACe;AACf;AACA,aAAa,UAAU;AACvB,iBAAiB,OAAO;AACxB;AACA;;;ACRA;AACe;AACf;AACA;AACA;AACA;AACA;AACA;;;ACPA;AACe;AACf;AACA,CAAC,EAAC;;;ACH2B;;AAE7B;AACA;AACe;AACf;AACA;AACA;AACA;AACA,uBAAuB,SAAI;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;;;AChBA;AACe;AACf,aAAa;AACb,YAAY;AACZ,YAAY;AACZ,cAAc;AACd,cAAc;AACd,cAAc;AACd,CAAC,EAAC;;;ACR8C;AACR;;AAExC;AACe,gEAAa,CAAC,UAAS,CAAC,EAAC;;;ACJP;AACO;;AAExC;AACe,uDAAM,CAAC,UAAS,CAAC,EAAC;;;ACJe;AACJ;;AAE5C;AACe,kEAAa,CAAC,YAAW,CAAC,EAAC;;;ACJV;;AAEhC;AACA;AACe,sDAAC;AAChB;AACA;AACA;AACA,CAAC,EAAC;;;ACRmC;AACL;AACD;;AAE/B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACe,SAAS,iBAAQ;AAChC;AACA,aAAa,QAAQ,GAAG,YAAY,CAAC;;AAErC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL,mBAAmB;AACnB;;AAEA;AACA;AACA,GAAG;AACH,eAAe;;AAEf;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,0BAA0B,EAAE,iBAAiB;AAC7C;AACA;;AAEA;AACA,sBAAsB,8BAA8B;AACpD,yBAAyB;;AAEzB;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA,mCAAmC,CAAC;AACpC;;AAEA;AACA,gDAAgD,iBAAiB;;AAEjE;AACA;;;ACpGyC;AACP;;AAElC;AACA;AACA;AACe,SAAS,aAAM;AAC9B,SAAS,cAAM;AACf;AACA;AACA,WAAW,kBAAU;AACrB;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA,iBAAiB;AACjB;AACA,UAAU,kBAAU;AACpB;AACA;AACA;;;ACrBA;AACA;AACA;AACe;AACf;AACA;AACA;;;ACNgC;;AAEhC;AACe;AACf,iBAAiB,CAAC;AAClB;AACA;AACA;;;ACP0C;AACL;;AAErC;AACA;AACA;AACe;AACf;AACA,aAAa,UAAU;AACvB;AACA,MAAM,QAAQ;AACd;AACA;;;ACZ+C;AACD;AACd;;AAEhC;AACA;AACA;AACA;AACA,cAAc,aAAa;AAC3B;AACA;AACA;AACA;AACA,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA,WAAW,YAAY;AACvB;AACA;AACA,CAAC;;AAED,sBAAsB,CAAC;AACR,2DAAO,EAAC;;;ACvBwB;AACN;AACK;;AAE9C;AACA;AACe,sDAAa;AAC5B,OAAO,kBAAU;AACjB,cAAc,aAAa;AAC3B,WAAW,YAAY;AACvB,GAAG;AACH;AACA,CAAC,CAAC,EAAC;;;ACZiE;AAC5B;;AAExC;AACA;AACA;AACA;AACe,wEAAuB,CAAC,UAAS,CAAC,EAAC;;;ACPV;AACI;AACT;AACQ;;AAE3C;AACe;AACf;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,2BAA2B,UAAS,QAAQ,YAAY;AACxD;AACA,QAAQ,YAAW,YAAY,OAAO,WAAW,mBAAW;AAC5D;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;;AC9B+C;AACX;AACP;;AAE7B;AACA;AACA;AACe,yDAAa;AAC5B,SAAS,OAAO;AAChB;AACA;AACA;AACA;AACA,eAAe,IAAI;AACnB;AACA;AACA,CAAC,CAAC,EAAC;;;AChByB;;AAE5B;AACe,SAAS,eAAO;AAC/B;AACA;AACA;AACA,SAAS,GAAG;AACZ;AACA;AACA;AACA;AACA;;;ACZ+C;;AAE/C;AACA;AACe,uDAAa;AAC5B;AACA;AACA,GAAG;AACH,CAAC,CAAC,EAAC;;;ACRgC;AACJ;AACC;;AAEhC;AACA;AACe,yDAAO,CAAC,KAAK,EAAE,CAAC,IAAI,EAAC;;;ACNT;;AAE3B;AACA;AACA;AACA;AACA,KAAK,eAAe;AACL;AACf;AACA;AACA;;AAEA;AACA,+CAA+C,GAAG;AAClD;AACA;AACA;AACA;;AAEA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AC9C+C;AACpB;;AAE3B;AACA;AACA;AACA;AACe;AACf;;AAEA;AACA,iBAAiB,GAAG;AACpB;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA,kBAAkB,aAAa;AAC/B;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;;;ACvCmC;;AAEnC;AACA;AACA;AACe;AACf,SAAS,eAAO;AAChB;;;ACPA;AACe;AACf;AACA;AACA;AACA;;;ACLA;AACA;AACe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACXA;AACe;AACf;AACA;AACA;AACA;AACA;AACA;;;ACPA;AACA;AACe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACXmC;AACF;;AAEjC;AACA;AACe,wDAAO,CAAC,MAAM,IAAI,EAAC;;;ACLR;AACG;;AAE7B;AACe;AACf,cAAc,EAAE;AAChB,cAAc,SAAI;AAClB,wCAAwC,YAAY;AACpD;AACA;AACA;AACA;;;ACX0B;AACc;;AAExC;AACe;AACf;AACA,gBAAgB,EAAE;AAClB,iBAAiB,UAAS;AAC1B;AACA,UAAU,8BAA8B;AACxC;AACA;AACA;AACA;AACA;;;ACd0E;;AAE1E;AACe,wEAA0B,GAAG,EAAC;;;ACH6B;;AAE1E;AACe,4EAA0B,IAAI,EAAC;;;ACHpB;AACc;;AAExC;AACA;AACe,SAAS,uBAAW;AACnC,aAAa,EAAE;AACf;AACA,sBAAsB,UAAS;AAC/B;AACA;AACA,oDAAoD;AACpD;AACA;AACA;;;ACdwC;AACJ;AACL;;AAE/B;AACe;AACf;AACA,wBAAwB,UAAS;AACjC;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,0BAA0B,uBAAK,yBAAyB,WAAK;AAC7D;AACA;AACA,wCAAwC,0BAA0B;AAClE;AACA;AACA;AACA;AACA;;;AC3B2C;AACJ;AACiB;;AAExD;AACA;AACA;AACA;AACe,6DAAiB,IAAI,SAAS,EAAE,uBAAW,CAAC,EAAC;;;ACRb;AACS;;AAExD;AACA;AACe,iEAAiB,KAAK,aAAa,CAAC,EAAC;;;ACLR;AACL;AACJ;;AAEnC;AACe;AACf,kBAAkB,YAAW,QAAQ,SAAS,GAAG,OAAO;AACxD;AACA;AACA;;;ACT6B;AACM;;AAEnC;AACA;AACe;AACf,SAAS,IAAI,MAAM,eAAO;AAC1B;;;ACP0C;AACE;AACf;;AAE7B;AACA;AACA;AACA;AACe;AACf,aAAa,UAAU;AACvB;AACA,MAAM,YAAW;AACjB,oCAAoC,YAAY;AAChD;AACA;AACA,GAAG;AACH,gBAAgB,SAAI;AACpB,sCAAsC,YAAY;AAClD;AACA;AACA;AACA;AACA;;;ACtB0B;AACkB;AACf;;AAE7B;AACe,SAAS,OAAG;AAC3B,aAAa,EAAE;AACf,eAAe,YAAW,SAAS,SAAI;AACvC;AACA;AACA,qBAAqB,gBAAgB;AACrC;AACA;AACA;AACA;AACA;;;ACf4C;AACf;AACa;;AAE1C;AACe;AACf;AACA;AACA;AACA,iBAAiB,YAAW,SAAS,SAAI;AACzC;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,8BAA8B;AACxC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,wBAAwB,UAAU;AAClC;AACA;;;AC3B8C;;AAE9C;AACA;AACe,uDAAY,GAAG,EAAC;;;ACJe;;AAE9C;AACe,4DAAY,IAAI,EAAC;;;ACHN;AACG;;AAE7B;AACe;AACf;AACA,cAAc,EAAE;AAChB,EAAE,IAAI;AACN;AACA,GAAG;AACH;AACA;;;ACXiC;AACA;AACP;;AAE1B;AACe;AACf,SAAS,MAAM,MAAM,MAAM,CAAC,EAAE;AAC9B;;;ACP0B;AACkB;AACf;;AAE7B;AACe;AACf,cAAc,EAAE;AAChB,eAAe,YAAW,SAAS,SAAI;AACvC;AACA,qBAAqB,gBAAgB;AACrC;AACA;AACA;AACA;AACA;;;ACd0B;AACkB;AACf;;AAE7B;AACe;AACf,cAAc,EAAE;AAChB,eAAe,YAAW,SAAS,SAAI;AACvC;AACA,qBAAqB,gBAAgB;AACrC;AACA;AACA;AACA;AACA;;;ACd4C;AACX;AACE;;AAEnC;AACe;AACf,OAAO,YAAW,aAAa,aAAM;AACrC;AACA,SAAS,OAAO;AAChB;;;ACT+C;AACN;AACd;AACS;AACF;;AAElC;AACe,wDAAa;AAC5B;AACA,MAAM,kBAAU;AAChB;AACA,GAAG;AACH,WAAW,cAAM;AACjB;AACA;AACA;AACA,SAAS,OAAG;AACZ;AACA;AACA;AACA,kBAAkB,OAAO;AACzB;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC,CAAC,EAAC;;;AC3BwB;AACU;;AAErC;AACe;AACf,SAAS,OAAG,MAAM,QAAQ;AAC1B;;;ACNiC;AACE;;AAEnC;AACA;AACe;AACf,SAAS,MAAM,MAAM,eAAO;AAC5B;;;ACP4C;AACX;AACP;AACG;;AAE7B;AACe;AACf;AACA;AACA;AACA,UAAU,YAAW,cAAc,aAAM;AACzC,wCAAwC,YAAY;AACpD;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,eAAe,EAAE;AACjB,IAAI,IAAI;AACR;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;;AC5B4C;AACX;AACP;AACG;;AAE7B;AACe;AACf;AACA;AACA;AACA,UAAU,YAAW,cAAc,aAAM;AACzC,wCAAwC,YAAY;AACpD;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,eAAe,EAAE;AACjB,IAAI,IAAI;AACR;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;;AC5B4C;AACb;AACE;AACO;AACP;;AAEjC;AACA;AACA;AACA;AACe,SAAS,aAAM;AAC9B;AACA,SAAS,YAAW,aAAa,aAAM;AACvC,eAAe,MAAM;AACrB;AACA,eAAe,YAAW,QAAQ,KAAK,QAAQ,aAAM;AACrD,eAAe,UAAS;AACxB;AACA;AACA,qBAAqB,WAAW;AAChC,eAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA;;;AC1BiC;;AAEjC;AACe;AACf,SAAS,aAAM;AACf;;;ACL0B;AACK;AACJ;;AAE3B;AACe;AACf;AACA,aAAa,EAAE;AACf,SAAS,KAAK,CAAC,OAAG;AAClB;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;;ACvB0B;AACG;;AAE7B;AACe;AACf;AACA;AACA,eAAe,EAAE;AACjB,IAAI,IAAI;AACR;AACA;AACA,KAAK;AACL;AACA;AACA;;;ACdgC;AACJ;;AAE5B;AACA;AACe,iDAAK;AACpB,MAAM,GAAG,uCAAuC;AAChD,CAAC,CAAC,EAAC;;;ACP6B;;AAEhC;AACA;AACe,iDAAK;AACpB;AACA,CAAC,CAAC,EAAC;;;ACN6B;AACJ;;AAE5B;AACA;AACA;AACe,iDAAK;AACpB,MAAM,GAAG,6BAA6B;AACtC,CAAC,CAAC,EAAC;;;ACR6B;;AAEhC;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IAAI,CAAC;AACL;AACA,MAAM,sBAAI;AACV,aAAa,WAAW,kBAAkB,CAAC;AAC3C;AACA,GAAG;AACH,SAAS,CAAC;AACV;;;ACjBgC;AACH;AACY;AACG;;AAE5C;AACA,IAAI;AACJ,eAAe,4BAAU;AACzB,EAAE,CAAC;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,WAAW;AACtB;AACA,CAAC;;AAED;AACA,IAAI;AACJ,eAAe,4BAAU;AACzB,EAAE,CAAC;AACH;AACA;AACA,WAAW,WAAW;AACtB;AACA,CAAC;;AAEc,8DAAC,EAAC;;;AC9BjB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACsC;AACwB;;AAE9D;AACA;AACA;AACA;;AAEA;AACA;AACoD;AACJ;AACU;AACJ;AACA;AACF;AACA;AACJ;AACI;AACF;AACE;AACU;AACN;AACN;AACM;AACE;AACN;AACN;AACc;AACV;AACA;AACA;AACJ;AACQ;AACR;AACQ;;AAEtD;AAC4C;AACM;AACF;AACF;AACE;AAEM;AACN;AAEM;AACF;AACJ;AACF;AACJ;AACA;AACA;AACY;;AAEtD;AACA;AACA;AACA;AACA;AACoD;AACA;AACR;AACI;AACI;AACI;AAEN;AACJ;AACE;AACN;AACM;AACI;AACgB;AAChB;AACJ;AACI;AACN;AACM;;AAEpD;AACA;AACA;AACA;AACkD;AACN;AACM;AACA;AACJ;AACA;AACM;AACA;AACR;AACI;AACE;AACJ;AACE;AACJ;;AAE5C;AACA;AACA;AACA;AACkD;AACI;AACQ;AACJ;AACR;AACQ;AAEZ;AACQ;;AAEtD;AACA;AACA;AACA;AAE+C;AAED;AAGE;AAEU;AAEV;AACA;AAEF;AAEF;AAGQ;AACJ;AACF;AACA;AACJ;AACA;AACQ;AACF;AACA;AACE;AACA;AACA;AACI;AACJ;AACN;;AAE5C;AACA;AACA;AAC4C;AACA;;AAE5C;AACA;AACA;AACA;AAG8C;AACI;AACN;AAGA;AACM;AACA;AACA;AAEJ;AACA;AACc;AACJ;AAEN;AACR;AACM;AACF;AACA;;AAE9C;AACA;AACA;AACA;AAC8C;AACU;;;ACvMxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,IAAI;AAC3C;AACA;AACA;AACA;AACyC;AACN;;AAEnC;AACA,IAAI,eAAC,GAAG,KAAK,CAAC,uBAAU;AACxB;AACA,eAAC,KAAK,eAAC;AACP;AACe,iEAAC,EAAC;;;AC1BjB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAC6C;AAClB;;;;;;;;;;ACjB3B,0CAA+D;AAC/D,sCAAwC;AACxC,sCAAwC;AAExC,4CAAmD;AACnD,qCAAuC;AACvC,4CAA4C;AAO5C;;;;;GAKG;AACH;IAWE;;;OAGG;IACH,aAAY,EAAe;QACzB,eAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAClB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,CAAC;IAID;;;;;;;OAOG;IACI,iBAAa,GAApB,UAAqB,IAAY,EAAE,KAAc;QAAE,kBAA8C;aAA9C,UAA8C,EAA9C,qBAA8C,EAA9C,IAA8C;YAA9C,iCAA8C;;QAC/F,IAAM,IAAI,GAAgB,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAEvD,KAAK,IAAM,GAAG,IAAI,KAAK,EAAE;YACvB,IAAI,GAAG,KAAK,WAAW,EAAE;gBACvB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC;aACrC;iBAAM;gBACL,IAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,aAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;gBACnE,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;aACrC;SACF;QAED,iBAAI,CAAC,QAAQ,EAAE,UAAC,KAAiC;YAC/C,IAAI,KAAK,YAAY,WAAW,EAAE;gBAChC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;aACzB;iBAAM,IAAI,qBAAQ,CAAC,KAAK,CAAC,EAAE;gBAC1B,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC;aACzB;iBAAM,IAAI,KAAK,YAAY,GAAG,EAAE;gBAC/B,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;aAC5B;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;OAIG;IACI,oBAAM,GAAb,UAAc,OAAoB;QAChC,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAC/B,CAAC;IAED;;;;OAIG;IACI,iBAAG,GAAV,UAAW,QAAgB;QACzB,IAAI,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;YAC3B,OAAO,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;SAChC;QACD,OAAO,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACrE,CAAC;IAED;;;;OAIG;IACI,kBAAI,GAAX,UAAY,GAAY;QACtB,IAAI,aAAK,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE;YAC1B,OAAO,IAAI,CAAC,EAAE,CAAC,SAAS,IAAI,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC;SACjD;aAAM;YACL,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,IAAI,SAAS,EAAE;gBAClC,IAAI,CAAC,EAAE,CAAC,SAAS,GAAG,GAAG,CAAC;aACzB;iBAAM,IAAI,IAAI,CAAC,EAAE,CAAC,WAAW,IAAI,SAAS,EAAE;gBAC3C,IAAI,CAAC,EAAE,CAAC,WAAW,GAAG,GAAG,CAAC;aAC3B;SACF;IACH,CAAC;IAED;;;;;OAKG;IACW,mBAAe,GAA7B,UAA8B,QAAkB;QAC9C,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC;QACxB,IAAM,GAAG,GAAkB,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC;QACxC,OAAO,CAAC,EAAE,EAAE;YACV,GAAG,CAAC,CAAC,CAAC,GAAgB,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACxC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;;OAGG;IACI,mBAAK,GAAZ,UAAa,cAAuB;QAClC,IAAI,yBAAW,CAAC,aAAa,EAAE,KAAK,IAAI,EAAE;YAChC,sCAAW,EAAE,kCAAW,CAAY;YAC5C,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;YAChB,IAAI,cAAc,EAAE;gBAClB,MAAM,CAAC,QAAQ,CAAC,aAAW,EAAE,aAAW,CAAC,CAAC;aAC3C;SACF;aAAM;YACJ,IAAI,CAAC,EAAU,CAAC,KAAK,CAAC,EAAE,aAAa,EAAE,cAAc,EAAE,CAAC,CAAC;SAC3D;IACH,CAAC;IAED;;OAEG;IACI,mBAAK,GAAZ;QACE,OAAO,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE;YACzB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;SACtC;IACH,CAAC;IAEM,yBAAW,GAAlB,UAAmB,KAAW;QAC5B,IAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC;QACnC,IAAI;YACF,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;SAC5B;QAAC,OAAO,CAAC,EAAE;YACV,IAAK,CAAW,CAAC,IAAI,KAAK,eAAe,EAAE;gBACzC,MAAM,CAAC,CAAC;aACT;YACD,IAAI,SAAS,KAAK,KAAK,CAAC,UAAU,EAAE;gBAClC,MAAM,CAAC,CAAC;aACT;SACF;IACH,CAAC;IAED;;OAEG;IACI,oBAAM,GAAb;QACE,IAAI,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE;YACtB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SACzC;IACH,CAAC;IAED;;OAEG;IACI,kBAAI,GAAX;QACE,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;QAChC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IACnD,CAAC;IAED;;OAEG;IACI,kBAAI,GAAX;QACE,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QAC/B,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAClD,CAAC;IAED;;OAEG;IACI,oBAAM,GAAb;QACE,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;QAC3B,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;IACnD,CAAC;IAED;;;;OAIG;IACI,oBAAM,GAAb,UAAc,OAAiB;QAC7B,IAAI,OAAO,KAAK,SAAS,EAAE;YACzB,IAAI,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,IAAI,OAAO,EAAE;gBACpC,IAAI,CAAC,IAAI,EAAE,CAAC;aACb;iBAAM;gBACL,IAAI,CAAC,IAAI,EAAE,CAAC;aACb;SACF;aAAM;YACL,IAAI,OAAO,EAAE;gBACX,IAAI,CAAC,IAAI,EAAE,CAAC;aACb;iBAAM;gBACL,IAAI,CAAC,IAAI,EAAE,CAAC;aACb;SACF;IACH,CAAC;IAED;;;;OAIG;IACI,uBAAS,GAAhB;QACE,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,MAAM,EAAE;YAClC,OAAO,KAAK,CAAC;SACd;QAED,IAAI,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,QAAQ,EAAE;YACvC,OAAO,KAAK,CAAC;SACd;QAED,IAAI,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE;YACvC,OAAO,KAAK,CAAC;SACd;QAED,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE;YACjC,OAAO,KAAK,CAAC;SACd;QAED,IAAI,IAAI,CAAC,QAAQ,CAAC,8BAA8B,CAAC,EAAE;YACjD,OAAO,KAAK,CAAC;SACd;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACI,0BAAY,GAAnB,UAAoB,IAAY;QAC9B,OAAO,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IACpC,CAAC;IAED;;;;OAIG;IACI,0BAAY,GAAnB,UAAoB,IAAY,EAAE,KAAa;QAC7C,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACpC,CAAC;IAED;;;;OAIG;IACI,kBAAI,GAAX,UAAY,QAAgB;QAC1B,OAAoB,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IACtD,CAAC;IAED;;;;OAIG;IACI,gBAAE,GAAT,UAAU,QAAgB;QACxB,IAAI,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,QAAQ,CAAC,WAAW,EAAE,EAAE;YAC3D,OAAO,IAAI,CAAC;SACb;QACD,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE;YACtB,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;gBACrC,OAAO,IAAI,CAAC;aACb;SACF;QAED,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE;YACtB,IAAI,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE;gBACpD,OAAO,IAAI,CAAC;aACb;SACF;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;OAKG;IACI,qBAAO,GAAd,UAAe,SAAiB;QAC9B,OAAO,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;IAC3D,CAAC;IAED;;;;;OAKG;IACI,oBAAM,GAAb,UAAc,SAAiB;QAC7B,IAAI,IAAI,CAAC,EAAE,CAAC,aAAa,IAAI,SAAS,EAAE;YACtC,OAAO,SAAS,CAAC;SAClB;QACD,OAAO,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;IACzE,CAAC;IAED;;;;;;OAMG;IACI,qBAAO,GAAd,UAAe,SAAiB;QAC9B,IAAM,YAAY,GAAG,EAAE,CAAC;QACxB,IAAI,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACzC,OAAO,WAAW,EAAE;YAClB,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAC/B,WAAW,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;SACtD;QACD,OAAO,YAAY,CAAC;IACtB,CAAC;IAED;;;OAGG;IACI,sBAAQ,GAAf;QACE,OAAO,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAED;;;OAGG;IACI,sBAAQ,GAAf,UAAgB,QAAgB;QAC9B,IAAM,IAAI,GAAG,EAAE,CAAC;QAChB,IAAI,cAAc,GAAgB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC;QAChE,OAAO,cAAc,EAAE,cAAc,GAAgB,cAAc,CAAC,WAAW,EAAE;YAC/E,IAAI,cAAc,IAAI,IAAI,CAAC,EAAE,EAAE;gBAC7B,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE;oBACvD,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;iBAC3B;aACF;SACF;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,qBAAO,GAAf,UAAgB,OAAoB,EAAE,QAAgB;QACpD,IAAM,GAAG,GAAG,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAChD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACnC,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,OAAO,EAAE;gBACtB,OAAO,IAAI,CAAC;aACb;SACF;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;OAIG;IACI,qBAAO,GAAd,UAAe,QAAgB;QAC7B,OAAO,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAC;IACjE,CAAC;IAED;;;;OAIG;IACI,uBAAS,GAAhB,UAAiB,SAAiB;QAChC,IAAI,wBAAwB,IAAI,IAAI,CAAC,EAAE,EAAE;YACvC,OAAO,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC,CAAC;SACvE;IACH,CAAC;IAED;;;;OAIG;IACI,oBAAM,GAAb,UAAc,EAAU;QACtB,OAAO,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IACrC,CAAC;IAQM,sBAAQ,GAAf,UAAgB,SAAc;QAA9B,iBAcC;QAbC,IAAI,oBAAO,CAAC,SAAS,CAAC,EAAE;YACtB,iBAAI,CAAC,SAAS,EAAE,UAAC,IAAY;gBAC3B,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACtB,CAAC,CAAC,CAAC;SACJ;aAAM;YACL,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;gBAC7B,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE;oBACrB,IAAI,CAAC,EAAE,CAAC,SAAS,IAAI,GAAG,GAAG,SAAS,CAAC;iBACtC;qBAAM;oBACL,IAAI,CAAC,EAAE,CAAC,SAAS,GAAG,SAAS,CAAC;iBAC/B;aACF;SACF;IACH,CAAC;IAED;;;OAGG;IACI,yBAAW,GAAlB,UAAmB,SAAiB;QAClC,IAAI,CAAC,EAAE,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,YAAU,SAAS,YAAS,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5G,CAAC;IAED;;;;OAIG;IACI,yBAAW,GAAlB,UAAmB,SAAiB,EAAE,KAAe;QACnD,IAAI,aAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE;YAClC,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;gBAC5B,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;aAC7B;iBAAM;gBACL,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;aAC1B;SACF;aAAM;YACL,IAAI,KAAK,EAAE;gBACT,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;aAC1B;iBAAM;gBACL,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;aAC7B;SACF;IACH,CAAC;IAED;;;OAGG;IACI,qBAAO,GAAd,UAAe,IAAY;QACzB,IAAI,CAAC,EAAE,CAAC,SAAS,GAAG,IAAI,CAAC;IAC3B,CAAC;IAED;;;OAGG;IACI,sBAAQ,GAAf;QACE,+EAA+E;QAC/E,IAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAC7C,IAAI,SAAS,IAAI,SAAS,CAAC,KAAK,EAAE;YAChC,OAAO,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;SACpD;aAAM;YACL,OAAO,EAAE,CAAC;SACX;IACH,CAAC;IAED;;;;OAIG;IACI,sBAAQ,GAAf,UAAgB,SAAiB;QAC/B,OAAO,qBAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,SAAS,CAAC,CAAC;IAC9C,CAAC;IAED;;OAEG;IACI,oBAAM,GAAb;QACE,IAAI,CAAC,EAAE,CAAC,aAAa,IAAI,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACtE,CAAC;IAED;;;OAGG;IACI,yBAAW,GAAlB,UAAmB,OAAoB;QACrC,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;IACtF,CAAC;IAED;;;OAGG;IACI,0BAAY,GAAnB,UAAoB,OAAoB;QACtC,OAAO,CAAC,UAAU,IAAI,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAC1E,CAAC;IAED;;;OAGG;IACI,qBAAO,GAAd,UAAe,SAAsB;QACnC,IAAI,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE;YACtB,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,YAAY,CAAc,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;SAClE;aAAM;YACL,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;SAChC;IACH,CAAC;IASM,gBAAE,GAAT,UAAU,IAAS,EAAE,WAA4C;QAAjE,iBA0BC;QAzBC,IAAI,oBAAO,CAAC,IAAI,CAAC,EAAE;YACjB,iBAAI,CAAC,IAAI,EAAE,UAAC,CAAS;gBACnB,KAAI,CAAC,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;YAC1B,CAAC,CAAC,CAAC;SACJ;aAAM;YACL,IAAM,YAAY,GAAG,IAAI,CAAC,oCAAoC,CAAC,IAAI,CAAC,CAAC;YACrE,IAAM,EAAE,GAAG,yBAAW,CAAC,SAAS,EAAE,CAAC;YACnC,IAAI,IAAI,CAAC,oBAAoB,EAAE,EAAE;gBAC/B,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;aAC3C;iBAAM,IAAI,IAAI,CAAC,EAAE,CAAC,gBAAgB,EAAE;gBACnC,IAAM,EAAE,GAAG,UAAC,CAAc;oBACxB,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;gBAC3B,CAAC,CAAC;gBACF,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;gBAClC,wDAAwD;gBACxD,0EAA0E;gBAC1E,IAAI,YAAY,IAAI,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE;oBACvD,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,YAAY,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;iBAC/D;qBAAM;oBACL,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,YAAY,EAAE,EAAE,EAAE,KAAK,CAAC,CAAC;iBACnD;aACF;iBAAM,IAAI,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;gBACxB,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,IAAI,GAAG,YAAY,EAAE,WAAW,CAAC,CAAC;aACjD;SACF;IACH,CAAC;IAUM,iBAAG,GAAV,UAAW,IAAS,EAAE,WAA6C;QAAnE,iBAaC;QAZC,IAAI,oBAAO,CAAC,IAAI,CAAC,EAAE;YACjB,iBAAI,CAAC,IAAI,EAAE,UAAC,CAAS;gBACnB,KAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;YAC3B,CAAC,CAAC,CAAC;SACJ;aAAM;YACL,IAAM,cAAY,GAAG,IAAI,CAAC,oCAAoC,CAAC,IAAI,CAAC,CAAC;YACrE,IAAM,MAAI,GAAG,UAAC,CAAQ,EAAE,IAAS;gBAC/B,KAAI,CAAC,GAAG,CAAC,cAAY,EAAE,MAAI,CAAC,CAAC;gBAC7B,OAAO,WAAW,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YAC9B,CAAC,CAAC;YACF,IAAI,CAAC,EAAE,CAAC,cAAY,EAAE,MAAI,CAAC,CAAC;SAC7B;IACH,CAAC;IASM,iBAAG,GAAV,UAAW,IAAS,EAAE,WAA4C;QAAlE,iBAmBC;QAlBC,IAAI,oBAAO,CAAC,IAAI,CAAC,EAAE;YACjB,iBAAI,CAAC,IAAI,EAAE,UAAC,CAAS;gBACnB,KAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC;YAC3B,CAAC,CAAC,CAAC;SACJ;aAAM;YACL,IAAM,YAAY,GAAG,IAAI,CAAC,oCAAoC,CAAC,IAAI,CAAC,CAAC;YACrE,IAAM,EAAE,GAAG,yBAAW,CAAC,SAAS,EAAE,CAAC;YACnC,IAAI,IAAI,CAAC,oBAAoB,EAAE,EAAE;gBAC/B,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;aAC5C;iBAAM,IAAI,IAAI,CAAC,EAAE,CAAC,mBAAmB,EAAE;gBACtC,IAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBAC9C,IAAI,OAAO,EAAE;oBACX,IAAI,CAAC,EAAE,CAAC,mBAAmB,CAAC,YAAY,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;iBAC3D;aACF;iBAAM,IAAI,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE;gBACzB,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,YAAY,EAAE,WAAW,CAAC,CAAC;aAClD;SACF;IACH,CAAC;IAED;;;;OAIG;IACI,qBAAO,GAAd,UAAe,IAAY,EAAE,IAA6B;QACxD,IAAM,YAAY,GAAG,IAAI,CAAC,oCAAoC,CAAC,IAAI,CAAC,CAAC;QACrE,IAAI,IAAI,CAAC,oBAAoB,EAAE,EAAE;YAC/B,yBAAW,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;SAC9D;aAAM,IAAI,MAAM,CAAC,aAAa,CAAC,KAAK,SAAS,EAAE;YAC9C,IAAM,OAAK,GAAG,IAAI,WAAW,CAAC,YAAY,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YAC7E,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,OAAK,CAAC,CAAC;SAC9B;aAAM;YACL,IAAI;gBACF,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,oBAAoB,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC;aACtE;YAAC,WAAM;gBACN,IAAI,CAAC,eAAe,EAAE,CAAC;aACxB;SACF;IACH,CAAC;IAED;;;OAGG;IACI,qBAAO,GAAd;QACE,OAAO,GAAG,CAAC,sBAAsB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;IAC5D,CAAC;IAED;;;OAGG;IACI,qBAAO,GAAd;QACE,OAAO,IAAI,CAAC,EAAE,IAAI,IAAI,IAAI,IAAI,CAAC,EAAE,CAAC,YAAY,IAAI,SAAS,CAAC;IAC9D,CAAC;IAED;;;OAGG;IACI,0BAAY,GAAnB,UAAoB,MAAmB;QACrC,IAAI,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC;QAC9B,OAAO,IAAI,IAAI,IAAI,EAAE;YACnB,IAAI,IAAI,IAAI,MAAM,EAAE;gBAClB,OAAO,IAAI,CAAC;aACb;YACD,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;SACxB;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;OAGG;IACI,yBAAW,GAAlB,UAAmB,SAAsB;QACvC,IAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC;QAClC,IAAI,MAAM,EAAE;YACV,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SACzC;QACD,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAED,2CAA2C;IAC3C;;OAEG;IACI,sBAAQ,GAAf;QACE,IAAM,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACzC,IAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC7B,IAAI,YAAY,GAAY,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QAEhD,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE;YAChC,YAAY,GAAG,EAAE,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,CAAC;SAC1C;QAED,IAAI,cAAc,GAAG,QAAQ,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC;QACtE,IAAI,eAAe,GAAG,QAAQ,CAAC,EAAE,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC;QACxE,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC;QAC5D,eAAe,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC;QAE/D,YAAY,GAAG;YACb,GAAG,EAAE,YAAY,CAAC,GAAG,GAAG,cAAc;YACtC,IAAI,EAAE,YAAY,CAAC,IAAI,GAAG,eAAe;SAC1C,CAAC;QAEF,IAAI,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;QAChD,IAAI,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC;QAClD,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC7C,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;QAEhD,OAAO;YACL,GAAG,EAAE,MAAM,CAAC,GAAG,GAAG,YAAY,CAAC,GAAG,GAAG,SAAS;YAC9C,IAAI,EAAE,MAAM,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,GAAG,UAAU;SACnD,CAAC;IACJ,CAAC;IAED,gDAAgD;IAChD;;;OAGG;IACI,0BAAY,GAAnB;QACE,IAAI,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC;QAExC,OAAO,YAAY,YAAY,WAAW,IAAI,EAAE,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,QAAQ,EAAE;YAC3F,mFAAmF;YACnF,YAAY,GAAiB,YAAa,CAAC,YAAY,CAAC;SACzD;QAED,IAAI,CAAC,CAAC,YAAY,YAAY,WAAW,CAAC,EAAE;YAC1C,OAAO,QAAQ,CAAC,eAAe,CAAC;SACjC;QACD,OAAoB,YAAY,CAAC;IACnC,CAAC;IAED,yCAAyC;IACzC;;OAEG;IACI,oBAAM,GAAb;QACE,kFAAkF;QAClF,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,cAAc,EAAE,CAAC,MAAM,EAAE;YACpC,OAAO,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;SAC5B;QAED,IAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE,CAAC;QAE7C,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE;YAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC;YAChC,IAAI,OAAO,GAAG,GAAG,CAAC,eAAe,CAAC;YAElC,OAAO;gBACL,GAAG,EAAE,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,WAAW,GAAG,OAAO,CAAC,SAAS;gBACtD,IAAI,EAAE,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,WAAW,GAAG,OAAO,CAAC,UAAU;aAC1D,CAAC;SACH;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACI,mBAAK,GAAZ;QACE,OAAO,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC;IAC7B,CAAC;IAED;;OAEG;IACI,oBAAM,GAAb;QACE,OAAO,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC;IAC9B,CAAC;IAED;;;;OAIG;IACI,mBAAK,GAAZ,UAAa,IAAY;QAAZ,mCAAY;QACvB,OAAO,EAAE,CAAc,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAClD,CAAC;IAED;;;OAGG;IACI,4BAAc,GAArB,UAAsB,SAAiB;QACrC,IAAM,eAAe,GAAG,OAAK,SAAW,CAAC;QACzC,IAAI,WAAW,GAAG,eAAe,IAAI,IAAI,CAAC,EAAE,CAAC;QAE7C,+CAA+C;QAC/C,qFAAqF;QACrF,qFAAqF;QACrF,yFAAyF;QACzF,qDAAqD;QACrD,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,EAAE,CAAC,YAAY,EAAE;YACxC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;YACjD,WAAW,GAAG,OAAO,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,UAAU,CAAC;YAC5D,IAAI,CAAC,EAAE,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;SAC1C;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;IAEO,kCAAoB,GAA5B,UAA6B,IAAY,EAAE,IAA6B;QACtE,IAAM,KAAK,GAAG,QAAQ,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;QAClD,KAAK,CAAC,eAAe,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAC9C,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,kCAAoB,GAA5B;QACE,OAAO,yBAAW,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,yBAAyB,CAAC;IACnE,CAAC;IAEO,kDAAoC,GAA5C,UAA6C,KAAa;QACxD,kCAAkC;QAClC,QAAQ;QACR,wNAAwN;QACxN,IAAI,KAAK,EAAE;YACT,OAAO,KAAK,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;SAC/C;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,sCAAwB,GAAhC,UAAiC,OAAiB,EAAE,SAAiB;QAApC,oCAAU,IAAI,CAAC,EAAE;QAChD,IAAI,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;YAC/B,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;SACjC;QACD,IAAI,KAAK,GAAG,KAAK,CAAC;QAClB,OAAO,CAAC,KAAK,EAAE;YACb,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;gBACnC,KAAK,GAAG,IAAI,CAAC;aACd;YACD,IAAI,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,MAAM,EAAE;gBAC3C,MAAM;aACP;YACD,IAAI,OAAO,CAAC,aAAa,IAAI,IAAI,EAAE;gBACjC,MAAM;aACP;YACD,IAAI,CAAC,KAAK,EAAE;gBACV,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC;aACjC;SACF;QACD,IAAI,KAAK,EAAE;YACT,OAAO,OAAO,CAAC;SAChB;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,6BAAe,GAAvB;QACE,IAAI,eAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;IACnE,CAAC;IAnzBc,oBAAgB,GAAG,6BAA6B,CAAC;IACjD,0BAAsB,GAAG,OAAO,CAAC;IAChD;;;OAGG;IACW,6BAAyB,GAAG,KAAK,CAAC;IAajC,YAAQ,GAAuE,IAAI,OAAO,EAAE,CAAC;IAiyB9G,UAAC;CAAA;AArzBY,kBAAG;AAuzBhB;IACE,aAAmB,GAAW;QAAX,QAAG,GAAH,GAAG,CAAQ;IAAG,CAAC;IAE3B,oBAAM,GAAb;QACE,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC;IAC9B,CAAC;IAEM,mBAAK,GAAZ;QACE,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC;IAC7B,CAAC;IAEM,qBAAO,GAAd;QACE,OAAO,IAAI,CAAC,iBAAiB,EAAE;YAC7B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW;YACtB,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE;gBACrB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,SAAS;gBAC7C,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;IACvC,CAAC;IAEM,qBAAO,GAAd;QACE,OAAO,IAAI,CAAC,iBAAiB,EAAE;YAC7B,CAAC,CAAC,MAAM,CAAC,WAAW;YACpB,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE;gBACrB,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,UAAU;gBACrC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC;IAC/B,CAAC;IAEO,0BAAY,GAApB;QACE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,IAAI,EAAE,CAAC,KAAK,YAAY,CAAC;IAC/D,CAAC;IAEO,+BAAiB,GAAzB;QACE,OAAO,IAAI,CAAC,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC;IAC5C,CAAC;IACH,UAAC;AAAD,CAAC;AAlCY,kBAAG;AAoChB;IACE,aAAmB,GAAa;QAAb,QAAG,GAAH,GAAG,CAAU;IAAG,CAAC;IAE7B,oBAAM,GAAb;QACE,IAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;QAC3B,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IACxD,CAAC;IAEM,mBAAK,GAAZ;QACE,IAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;QAC3B,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IACtD,CAAC;IACH,UAAC;AAAD,CAAC;AAZY,kBAAG;AAyBhB;IAAmB,cAAc;SAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;QAAd,yBAAc;;IAC/B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,GAAG,EAAE;QAC/C,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;KAChB;SAAM,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,qBAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;QAClD,OAAO,IAAI,GAAG,CAAc,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;KACtC;SAAM;QACL,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC;KACpD;AACH,CAAC;AARD,gBAQC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/4BD,+BAAgC;AAChC,gDAAoE;AACpE,qDAAmG;AACnG,sCAA2C;AAC3C,sCAA2C;AAC3C,sDAA2E;AAC3E,oDAAuE;AACvE,gDAA+D;AAG/D,mCAAqC;AACrC,0CAAkD;AAClD,4CAAsD;AACtD,qCAA0C;AAC1C,wDAAkG;AAClG,yCAAoE;AAEpE,gDAAgG;AAEhG,sDAA8D;AAC9D,uDAAsD;AAiBtD;;;;GAIG;AACH;IAAA;IA0qBA,CAAC;IA/oBC;;;;;;OAMG;IACW,qCAAsB,GAApC,UAAqC,OAAoB,EAAE,OAAW;QACpE,IAAM,QAAQ,GAAG,OAAO,CAAC,qBAAqB,CAAC,IAAI,EAAE,CAAC;QACtD,IAAM,OAAO,GAAG,aAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACpD,OAAO,CAAC,qBAAqB,CAAC,GAAG,OAAO,CAAC;IAC3C,CAAC;IAEa,oCAAqB,GAAnC,UAAoC,OAAoB,EAAE,OAAW;QACnE,IAAM,qBAAqB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;QAE7D,IAAI,YAAgB,CAAC;QACrB,IAAI,aAAK,CAAC,MAAM,CAAC,qBAAqB,CAAC,EAAE;YACvC,YAAY,GAAG,aAAK,CAAC,UAAU,CAAC,qBAAqB,EAAE,OAAO,CAAC,CAAC;SACjE;aAAM;YACL,YAAY,GAAG,OAAO,CAAC;SACxB;QAED,IAAI,OAAO,CAAC,aAAa,EAAE;YACzB,OAAO,cAAc,CAAC,qBAAqB,CAAC,OAAO,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;SAClF;aAAM;YACL,OAAO,YAAY,CAAC;SACrB;IACH,CAAC;IAED;;;;;;OAMG;IACW,0CAA2B,GAAzC,UAA0C,cAAoC;QAC5E,eAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QAC9B,eAAM,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QACjC,eAAM,CAAC,aAAa,CAAC,cAAc,CAAC,YAAY,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC;QAErE,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,oBAAoB,EAAE,cAAc,CAAC,EAAE,CAAC,EAAE;YACvE,cAAc,CAAC,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;YAC5D,IAAI,cAAc,CAAC,OAAO,EAAE;gBAC1B,cAAc,CAAC,gBAAgB,CAAC,cAAc,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC,OAAO,CAAC;aAC7E;SACF;QAED,IAAI,mBAAmB,CAAC,uBAAuB,CAAC,cAAc,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE;YAC1E,mBAAmB,CAAC,uBAAuB,CAAC,cAAc,CAAC,EAAE,CAAC,GAAG,cAAc,CAAC;SACjF;QAED,IAAI,kBAAkB,CAAC,oBAAoB,CAAC,cAAc,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE;YACtE,kBAAkB,CAAC,oBAAoB,CAAC,cAAc,CAAC,EAAE,CAAC,GAAG;gBAC3D,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;oBACjC,OAAO,CAAC,cAAc,CAAC,CAAC;gBAC1B,CAAC,CAAC,CAAC;YACL,CAAC,CAAC;SACH;IACH,CAAC;IAED;;;;;;;;;OASG;IACW,sCAAuB,GAArC,UAAsC,WAAmB,EAAE,MAAgB;QACzE,cAAc,CAAC,oBAAoB,GAAG,aAAK,CAAC,sBAAsB,CAAC,cAAc,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;QAEhH,oFAAoF;QACpF,8FAA8F;QAC9F,IAAM,YAAY,GAAG,YAAE;YACrB,IAAI,cAAc,CAAC,+BAA+B,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE;gBAC9D,cAAc,CAAC,+BAA+B,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC;aAC7D;iBAAM;gBACL,cAAc,CAAC,+BAA+B,CAAC,EAAE,CAAC,GAAG,aAAK,CAAC,sBAAsB,CAC/E,cAAc,CAAC,+BAA+B,CAAC,EAAE,CAAC,EAClD,MAAM,CACP,CAAC;aACH;QACH,CAAC,CAAC;QAEF,YAAY,CAAC,WAAW,CAAC,CAAC;QAC1B,YAAY,CAAC,qBAAS,CAAC,0BAA0B,CAAC,WAAW,CAAC,CAAC,CAAC;IAClE,CAAC;IAED;;;;;;;OAOG;IACW,0CAA2B,GAAzC;QACE,OAAO,cAAc,CAAC,oBAAoB,CAAC;IAC7C,CAAC;IAED;;;;;;;;OAQG;IACW,mDAAoC,GAAlD,UAAmD,WAAmB;QACpE,IAAM,OAAO,GAAG,cAAc,CAAC,+BAA+B,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QAClF,IAAM,OAAO,GAAG,cAAc,CAAC,+BAA+B,CAAC,qBAAS,CAAC,0BAA0B,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE,CAAC;QACxH,OAAO,aAAK,CAAC,sBAAsB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC;IAED;;;;OAIG;IACW,2CAA4B,GAA1C,UAA2C,gBAAwB;QACjE,OAAO,CACL,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,oBAAoB,EAAE,gBAAgB,CAAC;YACjE,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,oBAAoB,EAAE,qBAAS,CAAC,0BAA0B,CAAC,gBAAgB,CAAC,CAAC,CACxG,CAAC;IACJ,CAAC;IAED;;;OAGG;IACW,4CAA6B,GAA3C;QACE,OAAO,cAAc,CAAC,oBAAoB,CAAC;IAC7C,CAAC;IAED;;;OAGG;IACW,wCAAyB,GAAvC;QACE,OAAO,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,uBAAuB,CAAC,CAAC;IAC7D,CAAC;IAED;;;;;;;OAOG;IACW,qCAAsB,GAApC,UAAqC,IAAY;QAC/C,OAAO,mBAAmB,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAC3D,CAAC;IAED;;;;;;OAMG;IACW,kCAAmB,GAAjC,UACE,OAAoB,EACpB,OAAY,EACZ,2BAA4D;QAH9D,iBAkGC;QA7FC,eAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACvB,IAAM,kBAAkB,GAAG,qBAAS,CAAC,GAAG,CAAC,OAAO,EAAE,iCAAe,EAAE,IAAI,CAAC,CAAC;QACzE,IAAI,kBAAkB,EAAE;YACtB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,8FAA8F,EAAE,OAAO,CAAC,CAAC;YAC3H,OAAO,OAAO,CAAC,OAAO,CAAC;gBACrB,IAAI,EAAE,OAAO;aACd,CAAC,CAAC;SACJ;QAED,OAAO,GAAG,cAAc,CAAC,qBAAqB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAEjE,IAAM,0BAA0B,GAAG,UAAO,SAAiB,EAAE,QAAwB;;;;gBACnF,IAAI;oBACI,qCAAqC,GAAG,QAAQ,CAAC,GAAG,CAAC,WAAC;wBAC1D,OAAO,CAAC,CAAC,KAAK,CAAC,eAAK;4BAClB,YAAI,CAAC,MAAM,CAAC,IAAI,CACd,kDAAgD,SAAS,yCAAsC,EAC/F,YAAU,KAAO,CAClB;wBAHD,CAGC,CACF,CAAC;oBACJ,CAAC,CAAC,CAAC;oBACH,sBAAO,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,EAAC;iBAC3D;gBAAC,OAAO,KAAK,EAAE;oBACd,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,6DAA2D,KAAK,0CAAuC,EACvG,YAAU,KAAO,CAClB,CAAC;iBACH;;;aACF,CAAC;QAEF,IAAM,uCAAuC,GAAG,UAAC,SAAiB;YAChE,IAAM,uBAAuB,GAA6B;gBACxD,KAAK,EAAE,EAAE;aACV,CAAC;YACF,QAAE,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,uBAAuB,CAAC,CAAC;YACxD,IAAI,uBAAuB,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC5C,OAAO,0BAA0B,CAAC,SAAS,EAAE,uBAAuB,CAAC,KAAK,CAAC,CAAC;aAC7E;iBAAM;gBACL,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;aAC1B;QACH,CAAC,CAAC;QAEF,cAAc,CAAC,0BAA0B,CAAC,OAAO,EAAE,2CAAoB,CAAC,oBAAoB,CAAC,CAAC;QAC9F,QAAE,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,2CAAoB,CAAC,oBAAoB,CAAC,CAAC;QAE/D,IAAM,yCAAyC,GAAG;;;;4BACjC,qBAAM,cAAc,CAAC,sBAAsB,CAAC,OAAO,EAAE,OAAO,CAAC;;wBAAtE,MAAM,GAAG,SAA6D;wBAE5E,cAAc,CAAC,0BAA0B,CAAC,OAAO,EAAE,2CAAoB,CAAC,6BAA6B,CAAC,CAAC;wBACvG,qBAAM,uCAAuC,CAAC,2CAAoB,CAAC,6BAA6B,CAAC;;wBAAjG,SAAiG,CAAC;wBAElG,QAAE,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,2CAAoB,CAAC,mBAAmB,CAAC,CAAC;wBAE9D,cAAc,CAAC,0BAA0B,CAAC,OAAO,EAAE,2CAAoB,CAAC,mBAAmB,CAAC,CAAC;wBAC7F,qBAAM,uCAAuC,CAAC,2CAAoB,CAAC,mBAAmB,CAAC;;wBAAvF,SAAuF,CAAC;wBAElF,eAAe,GAAoB,qBAAS,CAAC,GAAG,CAAC,OAAO,EAAE,iCAAe,CAAC,CAAC;wBACjF,IAAI,cAAc,CAAC,oCAAoC,CAAC,eAAe,CAAC,EAAE;4BACxE,cAAc,CAAC,kBAAkB,CAAC,eAAe,CAAC,CAAC;4BAC/C,wBAAwB,GAAG,IAAI,CAAC;4BACpC,iGAAiG;4BACjG,IAAI,KAAK,CAAC,gBAAgB,CAAC,EAAE;gCAC3B,wBAAwB,GAAG,CAAC,CAAC,eAAe,YAAY,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;6BAClF;4BACiB,qBAAS,CAAC,GAAG,CAAC,OAAO,EAAE,iCAAe,CAAE,CAAC,YAAY,CAAC;gCACtE,mBAAmB,EAAE,wBAAwB;gCAC7C,YAAY,EAAE,IAAI;6BACnB,CAAC,CAAC;yBACJ;wBACD,sBAAO,MAAM,EAAC;;;aACf,CAAC;QAEF,IAAM,qCAAqC,GAAG,2BAA2B,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAE5F,oEAAoE;QACpE,sDAAsD;QACtD,kFAAkF;QAClF,IAAI,qCAAqC,CAAC,UAAU,EAAE;YACpD,OAAO,qCAAqC,CAAC,UAAU,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC,IAAI,CAAC;gBAC3G,OAAO;oBACL,IAAI,EAAE,OAAO;iBACd,CAAC;YACJ,CAAC,CAAC,CAAC;SACJ;aAAM;YACL,wEAAwE;YACxE,iDAAiD;YACjD,yDAAyD;YACzD,OAAO,yCAAyC,EAAE,CAAC,IAAI,CAAC;gBACtD,OAAO;oBACL,IAAI,EAAE,OAAO;iBACd,CAAC;YACJ,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;IAED;;;;;OAKG;IACW,kCAAmB,GAAjC,UAAkC,OAAoB,EAAE,OAAiB;QAAjB,sCAAiB;QACvE,OAAO,GAAG,cAAc,CAAC,qBAAqB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACjE,IAAM,eAAe,GAAG,IAAI,iCAAe,CAAC,OAAO,EAAE,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QACjG,eAAe,CAAC,OAAO,CAAC,qBAAqB,GAAG,OAAO,CAAC;QACxD,IAAM,cAAc,GAA8B,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,eAAe,CAAC,WAAW,EAAE,EAAE,CAAC;QAChH,OAAO,cAAc,CAAC,mCAAmC,CAAC,OAAO,EAAE,cAAc,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC;IACzG,CAAC;IAED;;;;;OAKG;IACW,4CAA6B,GAA3C,UAA4C,OAAoB,EAAE,OAAiB;QAAjB,sCAAiB;QACjF,OAAO,GAAG,cAAc,CAAC,qBAAqB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAEjE,oFAAoF;QACpF,qFAAqF;QACrF,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;YACrB,OAAO,CAAC,QAAQ,GAAG,EAAE,CAAC;SACvB;QACD,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE;YACpB,OAAO,CAAC,OAAO,GAAG,EAAE,CAAC;SACtB;QACD,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;YACtB,OAAO,CAAC,SAAS,GAAG,EAAE,CAAC;SACxB;QACD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,mBAAmB,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,mBAAmB,EAAE;YAC3H,OAAO,CAAC,QAAQ,CAAC,mBAAmB,GAAG,KAAK,CAAC;YAC7C,OAAO,CAAC,OAAO,CAAC,mBAAmB,GAAG,KAAK,CAAC;YAC5C,OAAO,CAAC,SAAS,CAAC,mBAAmB,GAAG,KAAK,CAAC;SAC/C;QAED,IAAM,eAAe,GAAG,IAAI,2CAAyB,CAAC,OAAO,EAAE,OAAO,CAAC,yBAAyB,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QACrH,eAAe,CAAC,OAAO,CAAC,qBAAqB,GAAG,OAAO,CAAC;QACxD,IAAM,cAAc,GAA8B,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,eAAe,CAAC,WAAW,EAAE,EAAE,CAAC;QAChH,OAAO,cAAc,CAAC,mCAAmC,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IACrF,CAAC;IAED;;;;;OAKG;IACW,0CAA2B,GAAzC,UAA0C,OAAoB,EAAE,OAAiB;QAAjB,sCAAiB;QAC/E,OAAO,GAAG,cAAc,CAAC,qBAAqB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACjE,8GAA8G;QAC9G,IAAM,wBAAwB,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC;QAC/F,yHAAyH;QACzH,wCAAwC;QACxC,IAAI,wBAAwB,CAAC,mBAAmB,EAAE;YAChD,wBAAwB,CAAC,qBAAqB,GAAG,QAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;SAChE;QACD,IAAM,cAAc,GAAG,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,CAAC,OAAO,EAAE,wBAAwB,EAAE,OAAO,CAAC,SAAS,CAAC,CAAC;QACnH,cAAc,CAAC,OAAO,CAAC,qBAAqB,GAAG,OAAO,CAAC;QACvD,IAAM,cAAc,GAA8B,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,cAAc,CAAC,WAAW,EAAE,EAAE,CAAC;QAC/G,OAAO,cAAc,CAAC,mCAAmC,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IACrF,CAAC;IAED;;;;;;;OAOG;IACW,wDAAyC,GAAvD,UACE,aAA0B,EAC1B,MAAoB,EACpB,eAAoB;QAApB,sDAAoB;QAEpB,IAAM,OAAO,YAAQ,EAAE,WAAW,EAAE,eAAe,EAAE,EAAK,MAAM,CAAC,eAAe,CAAC,OAAO,CAAC,qBAAqB,CAAE,CAAC;QACjH,IAAM,QAAQ,gBAAmC,MAAM,CAAC,eAAe,CAAC,WAAW,EAAE,IAAE,aAAa,kBAAE,CAAC;QACvG,IAAM,cAAc,GAA8B;YAChD,OAAO;YACP,QAAQ;YACR,MAAM;SACP,CAAC;QACF,OAAO,cAAc,CAAC,mCAAmC,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;IAC3F,CAAC;IAED;;;;;;;OAOG;IACW,kDAAmC,GAAjD,UACE,OAAoB,EACpB,cAAyC,EACzC,MAAqB;QAHvB,iBA8CC;QA3CC,oCAAqB;QAErB,eAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAEvB,IAAM,oBAAoB,GAAG,2CAAoB,CAAC,uBAAuB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC3F,IAAM,wBAAwB,GAAG,2CAAoB,CAAC,2BAA2B,CAAC,OAAO,EAAE,oBAAoB,CAAC,CAAC;QAEjH,IAAI,UAAU,CAAC;QAEf,IAAM,oCAAoC,GAAG,CAAC,CAAC,KAAK,CAAC,wBAAwB,CAAC;aAC3E,GAAG,CAAC,iCAAuB;YAC1B,IAAM,gBAAgB,GAAG,KAAI,CAAC,iBAAiB,CAC7C,uBAAuB,CAAC,YAAY,EACpC,uBAAuB,CAAC,gBAAgB,EACxC,cAAc,CACf,CAAC;YACF,UAAU,GAAG,gBAAgB,CAAC,UAAU,CAAC;YACzC,OAAO,gBAAgB,CAAC,OAAO,CAAC;QAClC,CAAC,CAAC;aACD,GAAG,CAAC,uBAAa;YAChB,IAAM,UAAU,GAAG,aAAa,EAAE,CAAC;YACnC,IAAI,UAAU,EAAE;gBACd,OAAO,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,cAAM,WAAI,EAAJ,CAAI,CAAC,CAAC;aACjD;YACD,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC,CAAC;aACD,KAAK,EAAE,CAAC;QAEX,IAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,oCAAoC,CAAC;aACjE,IAAI,CAAC,cAAM,WAAI,EAAJ,CAAI,CAAC;aAChB,KAAK,CAAC,WAAC;YACN,iHAAiH;YACjH,kFAAkF;YAClF,iJAAiJ;YACjJ,KAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACrB,KAAI,CAAC,MAAM,CAAC,IAAI,CAAC,6DAA6D,CAAC,CAAC;YAChF,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;QAEL,OAAO;YACL,UAAU;YACV,UAAU;SACX,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACW,kCAAmB,GAAjC,UAAkC,UAAkB,EAAE,OAAgC;QACpF,eAAM,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;QACpC,eAAM,CAAC,aAAa,CAAC,mBAAmB,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAC,CAAC;QAC9E,eAAM,CAAC,aAAa,CAAC,cAAc,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC;QAC9D,eAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACvB,cAAc,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC;IACpD,CAAC;IAED;;;;OAIG;IACW,sCAAuB,GAArC,UAAsC,UAAkB;QACtD,OAAO,aAAK,CAAC,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC;IAC/D,CAAC;IAED;;;;;OAKG;IACW,yCAA0B,GAAxC,UAAyC,UAAkB,EAAE,OAAoB,EAAE,OAAgC;QACjH,eAAM,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;QACpC,eAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAEvB,IAAI,cAAc,CAAC;QACnB,IAAI,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YAC/B,IAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACvC,eAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE,mEAAmE,CAAC,CAAC;YACxG,cAAc,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC7B,UAAU,GAAW,QAAQ,CAAC,CAAC,CAAC,CAAC;SAClC;QAED,IAAM,cAAc,GAAG,qBAAS,CAAC,GAAG,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;QAC9D,eAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QAC9B,eAAM,CAAC,MAAM,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC,CAAC;QAE1C,IAAM,kBAAkB,GAAG,IAAI,GAAG,UAAU,CAAC;QAC7C,IAAI,CAAC,aAAK,CAAC,MAAM,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC,EAAE;YACrD,cAAc,CAAC,kBAAkB,CAAC,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;SACjE;QAED,cAAc,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC;IACvC,CAAC;IAEa,+BAAgB,GAA9B,UACE,OAAoB,EACpB,OAAiB,EACjB,IAAyB,EACzB,YAA4B;QAF5B,sCAAiB;QACjB,wCAAyB;QACzB,kDAA4B;QAE5B,OAAO,GAAG,cAAc,CAAC,qBAAqB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACjE,IAAI,0BAA0B,GAAG,KAAK,CAAC;QACvC,IAAI,IAAI,IAAI,UAAU,EAAE;YACtB,0BAA0B,IAAI,KAAK,GAAG,IAAI,CAAC;SAC5C;QACD,IAAM,MAAM,GAAG,qBAAS,CAAC,eAAe,CAAC,0BAA0B,CAAC,CAAC;QACrE,IAAI,MAAM,EAAE;YACV,IAAI,eAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,2BAA2B,GAAG,0BAA0B,CAAC,CAAC;YACnF,IAAM,cAAc,GAAc,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,cAAO,CAAC,CAAC;YAChF,IAAM,GAAG,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,0BAA0B,CAAC,EAAE,OAAO,CAAC,SAAS,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;YACjH,GAAG,CAAC,OAAO,CAAC,qBAAqB,GAAG,OAAO,CAAC;YAC5C,IAAM,cAAc,GAA8B,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC;YACpG,OAAO,cAAc,CAAC,mCAAmC,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;SACpF;aAAM;YACL,OAAO;gBACL,UAAU,EAAE,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;oBACtC,IAAI,eAAM,CAAC,OAAO,CAAC,CAAC,KAAK,CACvB,qCAAqC,GAAG,0BAA0B,GAAG,wCAAwC,CAC9G,CAAC;oBACF,eAAM,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;oBACrD,MAAM,CAAC,KAAK,CAAC,CAAC;gBAChB,CAAC,CAAC;gBACF,UAAU,EAAE,KAAK;aAClB,CAAC;SACH;IACH,CAAC;IAEa,sCAAuB,GAArC,UAAsC,UAAkB,EAAE,OAAoB,EAAE,IAAW;QACzF,eAAM,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;QACpC,eAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAEvB,IAAM,kBAAkB,GAAkD,cAAc,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAClH,eAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;QAElC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,mCAAmC,GAAG,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QAC7F,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;YACpB,OAAO,kBAAkB,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;SAC/D;aAAM;YACL,OAAO,kBAAkB,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;SAClD;IACH,CAAC;IAEa,yDAA0C,GAAxD,UAAyD,KAAa,EAAE,OAAoB,EAAE,IAAW;QACvG,eAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAC/B,eAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAEvB,IAAI,cAAc,CAAC,uBAAuB,CAAC,KAAK,CAAC,EAAE;YACjD,OAAO,cAAc,CAAC,uBAAuB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;SACrE;aAAM,IAAI,cAAc,CAAC,yCAAyC,CAAC,OAAO,CAAC,EAAE;YAC5E,OAAO,cAAc,CAAC,kCAAkC,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;SAChF;aAAM;YACL,eAAM,CAAC,IAAI,CAAC,+BAA+B,GAAG,KAAK,GAAG,kBAAkB,CAAC,CAAC;SAC3E;IACH,CAAC;IAEa,+BAAgB,GAA9B,UAA+B,eAAgC;QAC7D,OAAO,aAAK,CAAC,gBAAgB,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACxF,CAAC;IAEa,wDAAyC,GAAvD,UAAwD,OAAoB;QAC1E,eAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACvB,OAAO,aAAK,CAAC,MAAM,CAAC,qBAAS,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAC1D,CAAC;IAEa,oEAAqD,GAAnE,UAAoE,OAAoB;QACtF,gGAAgG;QAChG,+BAA+B;QAC/B,IAAI,QAAE,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE;YAC/C,OAAO,IAAI,CAAC;SACb;QACD,OAAO,CACL,cAAc,CAAC,yCAAyC,CAAC,OAAO,CAAC;YACjE,CAAC,4BAAG,CAAC,OAAO,EAAE,iCAAe,EAAE,IAAI,CAAC;YACpC,CAAC,QAAE,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAC7C,CAAC;IACJ,CAAC;IAEc,iDAAkC,GAAjD,UAAkD,UAAkB,EAAE,OAAoB,EAAE,IAAW;QACrG,eAAM,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;QACpC,eAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAEvB,IAAM,cAAc,GAAG,qBAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAC9C,eAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QAE9B,IAAM,MAAM,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;QAC1C,IAAI,aAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;YACxB,OAAO,MAAM,CAAC,KAAK,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;SAC3C;aAAM;YACL,eAAM,CAAC,IAAI,CAAC,kBAAkB,GAAG,UAAU,GAAG,sBAAsB,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;SAC7F;IACH,CAAC;IAEc,iCAAkB,GAAjC,UAAkC,eAAgC;QAChE,IAAM,eAAe,GAAG,qBAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,qBAAS,CAAC,OAAO,EAAE,CAAC,CAAC;QACnF,IAAI,eAAe,IAAI,IAAI,EAAE;YAC3B,IAAM,IAAI,GAAG,qBAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,qBAAS,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,CAAC;YAC7E,eAAe,CAAC,cAAc,CAAC,cAAc,CAAmB,kDAAwB,CAAC,eAAe,CAAC,EAAE,IAAI,CAAC,CAAC;SAClH;aAAM;YACL,IAAI,cAAc,CAAC,gBAAgB,CAAC,eAAe,CAAC,EAAE;gBACpD,eAAe,CAAC,cAAc,CAAC,cAAc,CAAmB,kDAAwB,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;aAC9G;iBAAM;gBACL,eAAe,CAAC,cAAc,CAAC,cAAc,CAAmB,kDAAwB,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;aAC7G;SACF;IACH,CAAC;IAEc,yCAA0B,GAAzC,UAA0C,OAAO,EAAE,KAAa;QAC9D,IAAI,aAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;YACzB,cAAc,CAAC,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;SACjD;IACH,CAAC;IAEc,+BAAgB,GAA/B,UAAgC,MAAM;QACpC,IAAI,aAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;YACxB,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,UAAC,IAAgB;gBAC9B,IAAI,OAAO,IAAI,IAAI,UAAU,EAAE;oBAC7B,IAAI,EAAE,CAAC;iBACR;YACH,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;IAEc,qCAAsB,GAArC,UAAsC,OAAoB,EAAE,OAAa;QAAzE,iBA2CC;QA1CC,IAAI,OAAO,IAAI,OAAO,CAAC,oBAAoB,CAAC,EAAE;YAC5C,IAAM,eAAe,GAAoB,qBAAS,CAAC,GAAG,CAAC,OAAO,EAAE,iCAAe,CAAC,CAAC;YACjF,IAAM,eAAe,GAAoB,qBAAS,CAAC,GAAG,CAAC,OAAO,EAAE,iCAAe,CAAC,CAAC;YACjF,IAAM,mBAAmB,GAAwB,qBAAS,CAAC,GAAG,CAAC,OAAO,EAAE,yCAAmB,CAAC,CAAC;YAC7F,IAAM,eAAe,GAAoB,qBAAS,CAAC,GAAG,CAAC,OAAO,EAAE,iCAAe,CAAC,CAAC;YACjF,IAAM,qBAAqB,GAA0B,qBAAS,CAAC,GAAG,CAAC,OAAO,EAAE,6CAAqB,CAAC,CAAC;YACnG,IAAM,cAAc,GAAG,eAAe,CAAC,cAAc,CAAC;YACtD,eAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;YAC/B,eAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;YAC/B,eAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;YAC/B,eAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;YACnC,eAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YAC9B,IAAM,gBAAc,GAA8B;gBAChD,OAAO,EAAE,OAAO;gBAChB,QAAQ,EAAE;oBACR,eAAe,EAAE,eAAe;oBAChC,eAAe,EAAE,eAAe;oBAChC,eAAe,EAAE,eAAe;oBAChC,cAAc,EAAE,cAAc;oBAC9B,mBAAmB,EAAE,mBAAmB;oBACxC,qBAAqB,EAAE,qBAAqB;oBAC5C,IAAI,EAAE,OAAO;iBACd;aACF,CAAC;YACF,IAAM,kCAAkC,GAAG,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE,UAAC,iBAAwC;gBACvH,IAAM,oBAAoB,GAAG,iBAAiB,CAAC;gBAC/C,IAAI,aAAK,CAAC,aAAa,CAAC,oBAAoB,CAAC,EAAE;oBAC7C,OAAO,cAAc,CAAC,mCAAmC,CAAc,oBAAoB,EAAE,gBAAc,CAAC,CAAC,UAAU,CAAC;iBACzH;qBAAM,IAAI,yBAAW,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,EAAE;oBAC/D,OAAO,cAAc,CAAC,mCAAmC,CAAoB,oBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,gBAAc,CAAC;yBACvH,UAAU,CAAC;iBACf;YACH,CAAC,CAAC,CAAC;YACH,OAAO,OAAO,CAAC,GAAG,CAAC,kCAAkC,CAAC;iBACnD,IAAI,CAAC,iBAAO,IAAI,QAAC,CAAC,KAAK,CAAC,OAAO,CAAC,EAAhB,CAAgB,CAAC;iBACjC,KAAK,CAAC,aAAG;gBACR,KAAI,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBACvB,OAAO,KAAK,CAAC;YACf,CAAC,CAAC,CAAC;SACN;aAAM;YACL,OAAO,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;SAC/B;IACH,CAAC;IAEc,mDAAoC,GAAnD,UAAoD,eAAgC;QAClF,IAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC;QAExC,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO,IAAI,CAAC;SACb;QAED,IAAI,OAAO,CAAC,gBAAgB,KAAK,KAAK,EAAE;YACtC,OAAO,KAAK,CAAC;SACd;QAED,IAAI,OAAO,CAAC,2BAA2B,KAAK,IAAI,EAAE;YAChD,OAAO,IAAI,CAAC;SACb;QAED,IAAM,mBAAmB,GAAG,8BAAK,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACpE,OAAO,mBAAmB,IAAI,EAAE,CAAC;IACnC,CAAC;IA1pBc,qBAAM,GAAG,IAAI,eAAM,CAAC,gBAAgB,CAAC,CAAC;IACvC,mCAAoB,GAAa,EAAE,CAAC;IACpC,+BAAgB,GAAyB,EAAE,CAAC;IAC3C,2BAAY,GAAyB,EAAE,CAAC;IAEvD,oHAAoH;IACpH,sLAAsL;IACvK,mCAAoB,GAAa,EAAE,CAAC;IACnD,6JAA6J;IAC7J,gKAAgK;IACjJ,8CAA+B,GAAyB,EAAE,CAAC;IAipB5E,qBAAC;CAAA;AA1qBY,wCAAc;AA4qB3B;IAAA;IAuHA,CAAC;IAhHe,6CAA0B,GAAxC,UAAyC,IAAY;QACnD,OAAO,kBAAkB,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC;IACzD,CAAC;IAEa,0CAAuB,GAArC,UAAsC,IAAY;QAChD,OAAO,kBAAkB,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;IACrD,CAAC;IAEa,wCAAqB,GAAnC,UAAoC,EAAU,EAAE,IAAyC,EAAE,OAAkB;QAC3G,IAAI,kBAAkB,CAAC,oBAAoB,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE;YACvD,eAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACpB,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,oBAAoB,EAAE,EAAE,CAAC,EAAE;gBACxD,cAAc,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aAC9C;YACD,kBAAkB,CAAC,oBAAoB,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;YACnD,IAAI,OAAO,EAAE;gBACX,cAAc,CAAC,gBAAgB,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC;aAC/C;SACF;aAAM;YACL,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kCAAkC,EAAE,EAAE,CAAC,CAAC;SAC1D;IACH,CAAC;IAEa,qCAAkB,GAAhC,UAAiC,SAAiB,EAAE,OAAiB;QACnE,OAAO,eAAK;YACV,kBAAkB,CAAC,MAAM;iBACtB,IAAI,CAAC,2BAAyB,SAAS,8QACtC,KAAO,CAAC,CAAC;YACb,OAAO,CAAC,cAAO,CAAC,CAAC,CAAC;QACpB,CAAC,CAAC;IACJ,CAAC;IAEa,qCAAkB,GAAhC,UAAiC,EAAU,EAAE,IAAwB;QACnE,IAAI,kBAAkB,CAAC,gBAAgB,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE;YACnD,eAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACpB,kBAAkB,CAAC,gBAAgB,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;SAChD;aAAM;YACL,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,+BAA+B,EAAE,EAAE,CAAC,CAAC;SACvD;IACH,CAAC;IAEa,oCAAiB,GAA/B,UACE,QAAmB,EACnB,gBAAwB,EACxB,cAAyC;QAEzC,IAAM,OAAO,GAAG;YACd,IAAM,QAAQ,GAAyB,EAAE,CAAC;YAC1C,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAC,eAA4B;gBAC5C,IAAI,qBAAS,CAAC,GAAG,CAAC,eAAe,EAAE,gBAAgB,CAAC,IAAI,IAAI,EAAE;oBAC5D,wEAAwE;oBACxE,4EAA4E;oBAC5E,IAAI,YAAY,UAAC;oBACjB,IAAI,aAAK,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;wBACxC,IAAM,wBAAwB,GAAG,cAAc,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;wBAC1E,IAAM,mBAAmB,GAAG,cAAc,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;wBACvE,IAAM,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;wBACzH,YAAY,GAAG,aAAK,CAAC,UAAU,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAC;wBAClE,YAAY,GAAG,aAAK,CAAC,UAAU,CAAC,wBAAwB,EAAE,YAAY,CAAC,CAAC;qBACzE;oBACD,IAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,cAAc,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC;oBAE/E,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,mCAAmC,CAAC,gBAAgB,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC,CAAC;iBAC1H;YACH,CAAC,CAAC,CAAC;YACH,OAAO,QAAQ,CAAC;QAClB,CAAC,CAAC;QAEF,OAAO;YACL,OAAO,EAAE,OAAO;YAChB,UAAU,EAAE,IAAI;SACjB,CAAC;IACJ,CAAC;IAEc,sDAAmC,GAAlD,UACE,gBAAwB,EACxB,OAAoB,EACpB,cAA0C;QAE1C,eAAM,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;QAC1C,eAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAEvB,qFAAqF;QACrF,qIAAqI;QACrI,8HAA8H;QAC9H,IAAI,cAAc,CAAC,qDAAqD,CAAC,OAAO,CAAC,EAAE;YACjF,OAAO,IAAI,CAAC;SACb;QAED,OAAO,kBAAkB,CAAC,0BAA0B,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,UAAC,mBAAyC;YACpH,eAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;YAEnC,IAAI,cAAc,CAAC,qDAAqD,CAAC,OAAO,CAAC,EAAE;gBACjF,OAAO,IAAI,CAAC;aACb;YAED,IAAM,QAAQ,GAAuB,EAAE,CAAC;YACxC,IAAI,OAAO,GAAG,EAAE,CAAC;YACjB,IAAI,MAAoB,CAAC;YAEzB,IAAI,cAAc,IAAI,SAAS,EAAE;gBAC/B,CAAC,CAAC,IAAI,CAAyB,cAAc,CAAC,QAAQ,EAAE,UAAC,KAAK,EAAE,GAAG;oBACjE,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;gBACxB,CAAC,CAAC,CAAC;gBACH,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC;gBACjC,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC;aAChC;YAED,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,GAAG,gBAAgB,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YACrG,OAAO,IAAI,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;IACL,CAAC;IArHc,yBAAM,GAAG,IAAI,eAAM,CAAC,oBAAoB,CAAC,CAAC;IAEzD,6FAA6F;IAC/E,uCAAoB,GAAoD,EAAE,CAAC;IAC3E,mCAAgB,GAAmC,EAAE,CAAC;IAkHtE,yBAAC;CAAA;AAvHY,gDAAkB;AAyH/B;IAAA;IAsFA,CAAC;IAhFe,qCAAiB,GAA/B,UACE,QAAmB,EACnB,gBAAwB,EACxB,cAAyC;QAEzC,IAAM,OAAO,GAAG;YACd,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAC,eAA4B;gBAC5C,IAAI,qBAAS,CAAC,GAAG,CAAC,eAAe,EAAE,gBAAgB,CAAC,IAAI,IAAI,EAAE;oBAC5D,wEAAwE;oBACxE,4EAA4E;oBAC5E,IAAI,YAAY,UAAC;oBACjB,IAAI,aAAK,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE;wBACxC,IAAM,wBAAwB,GAAG,cAAc,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;wBAC1E,IAAM,mBAAmB,GAAG,cAAc,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;wBACvE,IAAM,WAAW,GAAG,cAAc,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;wBACzH,YAAY,GAAG,aAAK,CAAC,UAAU,CAAC,mBAAmB,EAAE,WAAW,CAAC,CAAC;wBAClE,YAAY,GAAG,aAAK,CAAC,UAAU,CAAC,wBAAwB,EAAE,YAAY,CAAC,CAAC;qBACzE;oBACD,IAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,cAAc,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAC;oBAC/E,mBAAmB,CAAC,mCAAmC,CAAC,gBAAgB,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC;iBAC5G;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QAEF,OAAO;YACL,OAAO,EAAE,OAAO;YAChB,UAAU,EAAE,KAAK;SAClB,CAAC;IACJ,CAAC;IAEc,uDAAmC,GAAlD,UACE,gBAAwB,EACxB,OAAoB,EACpB,cAA0C;QAE1C,eAAM,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;QAC1C,eAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAEvB,IAAM,sBAAsB,GAAyB,cAAc,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;QAC7G,IAAM,QAAQ,GAAuB,EAAE,CAAC;QACxC,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,IAAI,MAAoB,CAAC;QAEzB,IAAI,cAAc,IAAI,SAAS,EAAE;YAC/B,CAAC,CAAC,IAAI,CAAyB,cAAc,CAAC,QAAQ,EAAE,UAAC,KAAK,EAAE,GAAG;gBACjE,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACxB,CAAC,CAAC,CAAC;YACH,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC;YACjC,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC;SAChC;QAED,qFAAqF;QACrF,qIAAqI;QACrI,8HAA8H;QAC9H,IAAI,cAAc,CAAC,qDAAqD,CAAC,OAAO,CAAC,EAAE;YACjF,OAAO,IAAI,CAAC;SACb;QAED,mBAAmB,CAAC,MAAM,CAAC,KAAK,CAAC,iCAA+B,gBAAkB,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QACtG,0HAA0H;QAC1H,2GAA2G;QAC3G,0EAA0E;QAC1E,IAAI,sBAAsB,IAAI,IAAI,EAAE;YAClC,kBAAkB,CAAC,0BAA0B,CAAC,gBAAgB,CAAC;iBAC5D,IAAI,CAAC,6BAAmB;gBACvB,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAC7B,wBAAsB,gBAAgB,qEAAgE,CACvG,CAAC;gBACF,IAAI,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;YAC9D,CAAC,CAAC;iBACD,KAAK,CAAC;gBACL,mBAAmB,CAAC,MAAM,CAAC,KAAK,CAC9B,wBAAsB,gBAAgB,+FAAwF,CAC/H,CAAC;YACJ,CAAC,CAAC,CAAC;YACL,OAAO,IAAI,CAAC;SACb;aAAM;YACL,OAAO,IAAI,sBAAsB,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;SACvE;IACH,CAAC;IApFc,0BAAM,GAAG,IAAI,eAAM,CAAC,qBAAqB,CAAC,CAAC;IAE1D,oEAAoE;IACtD,2CAAuB,GAAqC,EAAE,CAAC;IAkF/E,0BAAC;CAAA;AAtFY,kDAAmB;;;;;;;;;;AC/0BhC,+BAAgC;AAEhC,sCAAuC;AACvC,8CAA0D;AAM1D,wBAA+B,gBAAmC;IAChE,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,SAAS,EAAE;QAChC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;KACtB;IACD,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE,UAAC,GAAW;QAC3C,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE;YAChC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;SAC9C;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AATD,wCASC;AAED,oBAA2B,SAA+B,EAAE,cAAwB;IAClF,IAAI,SAAS,CAAC,QAAQ,EAAE;QACtB,SAAS,CAAC,QAAQ,EAAE,CAAC;KACtB;SAAM;QACL,IAAI,eAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,eAAa,SAAS,8BAA2B,CAAC,CAAC;KAC3E;IACD,+BAAc,CAAC,2BAA2B,CAAC,SAAS,CAAC,CAAC;IACtD,cAAc,CAAC,SAAS,CAAC,CAAC;AAC5B,CAAC;AARD,gCAQC;AAED,0BAAiC,GAAQ,EAAE,cAAwB;IACjE,IAAI,GAAG,CAAC,QAAQ,EAAE;QAChB,GAAG,CAAC,QAAQ,EAAE,CAAC;KAChB;IACD,cAAc,CAAC,GAAG,CAAC,CAAC;AACtB,CAAC;AALD,4CAKC;;;;;;;;;;;;;;;;;;AClCD,+BAAgC;AAGhC,IAAM,iBAAiB,GAAG,oBAAoB,CAAC;AAE/C;IAAA;IAicA,CAAC;IAhcQ,iBAAW,GAAlB,UAAmB,GAAQ;QACzB,OAAO,OAAO,GAAG,IAAI,WAAW,CAAC;IACnC,CAAC;IAEM,YAAM,GAAb,UAAc,GAAQ;QACpB,OAAO,GAAG,KAAK,IAAI,CAAC;IACtB,CAAC;IAEM,uBAAiB,GAAxB,UAAyB,GAAQ;QAC/B,OAAO,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACrD,CAAC;IAEM,YAAM,GAAb,UAAc,GAAQ;QACpB,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;IACvC,CAAC;IAEM,qBAAe,GAAtB,UAAuB,GAAW;QAChC,OAAO,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACpC,CAAC;IAEM,qBAAe,GAAtB,UAAuB,KAAU;QAC/B,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACvC,CAAC;IAEM,yBAAmB,GAA1B,UAA2B,GAAW;QACpC,OAAO,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACtE,CAAC;IAEM,sBAAgB,GAAvB,UAAwB,GAAW;QACjC,OAAO,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,EAAE,CAAC;IACvC,CAAC;IAEM,mBAAa,GAApB,UAAqB,GAAW;QAC9B,OAAO,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;IACtC,CAAC;IAEM,sBAAgB,GAAvB,UAAwB,GAAW,EAAE,SAAiB;QACpD,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC;IACrD,CAAC;IAEM,oBAAc,GAArB,UAAsB,GAAW,EAAE,QAAgB;QACjD,OAAO,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,KAAK,QAAQ,CAAC;IAC9E,CAAC;IAEM,qBAAe,GAAtB,UAAuB,GAAQ;QAC7B,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;IAC1C,CAAC;IAEM,kBAAY,GAAnB,UAAoB,GAAQ;QAC1B,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC;IAEM,mBAAa,GAApB,UAAqB,GAAQ;QAC3B,IAAI,MAAM,CAAC,aAAa,CAAC,IAAI,SAAS,EAAE;YACtC,OAAO,GAAG,YAAY,WAAW,CAAC;SACnC;aAAM;YACL,WAAW;YACX,OAAO,GAAG,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,IAAI,CAAC,CAAC;SACjD;IACH,CAAC;IAEM,4BAAsB,GAA7B,UAA8B,GAAW;QACvC,IAAI,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE;YAC/B,OAAO,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;SAC1B;aAAM;YACL,OAAO,SAAS,CAAC;SAClB;IACH,CAAC;IAEM,8BAAwB,GAA/B,UAAgC,GAAW;QACzC,IAAI,CAAC,GAAQ,GAAG,CAAC;QACjB,CAAC,YAAY,YAAY,CAAC;QAC1B,IAAI,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE;YAC/B,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;SACxB;aAAM;YACL,OAAO,SAAS,CAAC;SAClB;IACH,CAAC;IAEM,WAAK,GAAZ,UAAa,GAAW,EAAE,QAAgB;QACxC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAC;IAC3E,CAAC;IAEM,gCAA0B,GAAjC,UAAkC,GAAW;QAC3C,IAAI,KAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE;YAC/B,QAAQ,GAAG,CAAC,WAAW,EAAE,EAAE;gBACzB,KAAK,MAAM,CAAC;gBACZ,KAAK,GAAG,CAAC;gBACT,KAAK,KAAK;oBACR,OAAO,IAAI,CAAC;gBACd,KAAK,OAAO,CAAC;gBACb,KAAK,GAAG,CAAC;gBACT,KAAK,IAAI;oBACP,OAAO,KAAK,CAAC;gBACf;oBACE,OAAO,SAAS,CAAC;aACpB;SACF;aAAM;YACL,OAAO,SAAS,CAAC;SAClB;IACH,CAAC;IAEM,UAAI,GAAX,UAAY,KAAa;QACvB,IAAI,KAAK,IAAI,IAAI,EAAE;YACjB,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IACzC,CAAC;IAEM,wBAAkB,GAAzB,UAA0B,MAAc;QACtC,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YAC3C,IAAI,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE;gBAChC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;aACxB;iBAAM;gBACL,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;aACzD;SACF;QACD,OAAO,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACtB,CAAC;IAEM,wBAAkB,GAAzB,UAA0B,SAAiB;QACzC,OAAO,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,UAAU,KAAK,EAAE,GAAG;YACxD,OAAO,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,4BAAsB,GAA7B,UAA8B,SAAiB;QAC7C,WAAW;QACX,oHAAoH;QACpH,kDAAkD;QAClD,qLAAqL;QACrL,6CAA6C;QAC7C,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;YACzB,OAAO,kBAAkB,CACvB,SAAS;iBACN,OAAO,CAAC,qCAAqC,EAAE,EAAE,CAAC;iBAClD,KAAK,CAAC,EAAE,CAAC;iBACT,OAAO,EAAE;iBACT,IAAI,CAAC,EAAE,CAAC;iBACR,OAAO,CAAC,qCAAqC,EAAE,EAAE,CAAC;iBAClD,KAAK,CAAC,EAAE,CAAC;iBACT,OAAO,EAAE;iBACT,IAAI,CAAC,EAAE,CAAC,CACZ,CAAC;SACH;aAAM;YACL,qFAAqF;YACrF,uDAAuD;YACvD,OAAO,kBAAkB,CAAC,SAAS,CAAC,CAAC;SACtC;IACH,CAAC;IAEM,gBAAU,GAAjB,UAAkB,MAAa,EAAE,MAAa,EAAE,SAAyB;QAAzB,4CAAyB;QACvE,IAAI,SAAS,EAAE;YACb,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;SAClC;aAAM;YACL,IAAI,QAAM,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC9B,OAAO,CAAC,CAAC,GAAG,CAAC,QAAM,EAAE,UAAC,KAAY;gBAChC,OAAO,KAAK,CAAC,MAAM,IAAI,QAAM,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,QAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC;YACxF,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;IAEM,iBAAW,GAAlB,UAAmB,IAAY,EAAE,IAAY;QAC3C,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAC/B,CAAC;IAEM,kBAAY,GAAnB,UAAoB,KAAa;QAC/B,OAAO,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAEM,0BAAoB,GAA3B,UAA4B,GAAW;QACrC,IAAI,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,0BAA0B,EAAE,MAAM,CAAC,CAAC;QAC1D,OAAO,GAAG,CAAC;IACb,CAAC;IAEM,gCAA0B,GAAjC,UAAkC,MAAU,EAAE,IAAY;QACxD,+CAA+C;QAC/C,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAEzB,4DAA4D;QAC5D,IAAI,KAAK,IAAI,IAAI,EAAE;YACjB,IAAI,eAAa,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YACvC,KAAK,GAAG,MAAM,CAAC,eAAa,CAAC,CAAC;YAC9B,iDAAiD;YACjD,IAAI,KAAK,IAAI,IAAI,EAAE;gBACjB,IAAI,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,UAAC,GAAW,IAAK,UAAG,CAAC,WAAW,EAAE,IAAI,eAAa,EAAlC,CAAkC,CAAC,CAAC;gBAC9F,IAAI,WAAW,IAAI,IAAI,EAAE;oBACvB,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;iBAC7B;aACF;SACF;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;OAKG;IACI,iCAA2B,GAAlC,UAAmC,MAAoB,EAAE,UAAyB;QAChF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC1C,IAAI,KAAK,GAAG,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;YACvD,IAAI,KAAK,KAAK,SAAS,EAAE;gBACvB,OAAO,KAAK,CAAC;aACd;SACF;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAEM,mBAAa,GAApB,UAAqB,MAAoB,EAAE,IAAY;QACrD,oEAAoE;QACpE,wBAAwB;QACxB,IAAI,IAAI,IAAI,IAAI,EAAE;YAChB,OAAO,SAAS,CAAC;SAClB;QACD,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE;YAClB,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;SACvB;QACD,IAAI,IAAI,IAAI,EAAE,EAAE;YACd,OAAO,SAAS,CAAC;SAClB;QAED,+CAA+C;QAC/C,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,GAAG,GAAG,IAAI,CAAC,EAAE;YACnC,MAAM,yBAAuB,IAAM,CAAC;SACrC;QACD,uDAAuD;QACvD,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;QACtC,IAAI,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;QACrB,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YACvB,GAAG,GAAG,KAAK,CAAC,0BAA0B,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC;YACzD,IAAI,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE;gBAC1B,OAAO,SAAS,CAAC;aAClB;SACF;QACD,IAAI,KAAK,GAAG,KAAK,CAAC,0BAA0B,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC5D,mDAAmD;QACnD,IAAI,KAAK,IAAI,IAAI,EAAE;YACjB,KAAK,GAAG,KAAK,CAAC,0BAA0B,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;SACxD;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,cAAQ,GAAf,UAAgB,IAAI,EAAE,IAAI,EAAE,OAAuD,EAAE,OAAQ,EAAE,IAAK;QAAxE,sCAAuD;QACjF,IAAI,MAAM,CAAC;QACX,IAAI,OAAO,GAAW,IAAI,CAAC;QAC3B,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,IAAI,KAAK,GAAG;YACV,QAAQ,GAAG,OAAO,CAAC,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;YAChE,OAAO,GAAG,IAAI,CAAC;YACf,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QACrC,CAAC,CAAC;QACF,OAAO;YACL,IAAI,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;YAC/B,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,OAAO,KAAK,KAAK,EAAE;gBAC1C,QAAQ,GAAG,GAAG,CAAC;aAChB;YACD,IAAI,SAAS,GAAG,IAAI,GAAG,CAAC,GAAG,GAAG,QAAQ,CAAC,CAAC;YACxC,OAAO,GAAG,IAAI,CAAC;YACf,IAAI,GAAG,SAAS,CAAC;YACjB,IAAI,SAAS,IAAI,CAAC,EAAE;gBAClB,YAAY,CAAC,OAAO,CAAC,CAAC;gBACtB,OAAO,GAAG,IAAI,CAAC;gBACf,QAAQ,GAAG,GAAG,CAAC;gBACf,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;aACpC;iBAAM,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,QAAQ,KAAK,KAAK,EAAE;gBACjD,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;aAC/C;YACD,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC;IACJ,CAAC;IAEM,gBAAU,GAAjB,UAAkB,MAAM,EAAE,GAAG;QAC3B,IAAI,CAAC,MAAM,EAAE;YACX,MAAM,GAAG,EAAE,CAAC;SACb;QACD,IAAI,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC7B,IAAI,QAAQ,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;QACrC,IAAI,OAAO,EAAE;YACX,MAAM,GAAG,MAAM,IAAI,EAAE,CAAC;YACtB,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC;YACtC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,UAAC,CAAC,EAAE,CAAC,EAAE,GAAG;gBACpB,IAAI,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,WAAW,EAAE;oBACpC,QAAQ,CAAC,CAAC,CAAC,GAAQ,CAAC,CAAC;iBACtB;qBAAM,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;oBACnD,QAAQ,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;iBAC9C;qBAAM;oBACL,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE;wBAC5B,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;qBACrB;iBACF;YACH,CAAC,CAAC,CAAC;SACJ;aAAM;YACL,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;gBAChE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,aAAG;oBACxB,QAAQ,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC9B,CAAC,CAAC,CAAC;aACJ;YACD,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,aAAG;gBACrB,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;oBAC7C,QAAQ,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;iBAC1B;qBAAM;oBACL,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;wBAChB,QAAQ,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;qBAC1B;yBAAM;wBACL,QAAQ,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;qBACzD;iBACF;YACH,CAAC,CAAC,CAAC;SACJ;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEM,yBAAmB,GAA1B,UAA2B,GAAG,EAAE,WAAoC;QAApC,4CAAc,MAAM,CAAC,QAAQ,CAAC,MAAM;QAClE,OAAO,WAAW,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,cAAc,GAAG,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,GAAG,sBAAsB,EAAE,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;IAChI,CAAC;IAEM,gBAAU,GAAjB,UAAkB,GAAW;QAC3B,IAAI,MAAM,GAAG,mFAAmF,CAAC;QACjG,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAEM,cAAQ,GAAf,UAAgB,IAAc,EAAE,IAAY;QAC1C,IAAI,OAAe,CAAC;QACpB,IAAI,iBAAyB,CAAC;QAC9B,OAAO;YAAA,iBAgBN;YAhBgB,cAAc;iBAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;gBAAd,yBAAc;;YAC7B,IAAI,OAAO,IAAI,IAAI,EAAE;gBACnB,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC;oBAC1B,OAAO,GAAG,IAAI,CAAC;gBACjB,CAAC,EAAE,IAAI,CAAC,CAAC;gBACT,iBAAiB,GAAG,UAAU,CAAC;oBAC7B,IAAI,CAAC,KAAK,CAAC,KAAI,EAAE,IAAI,CAAC,CAAC;oBACvB,iBAAiB,GAAG,IAAI,CAAC;gBAC3B,CAAC,CAAC,CAAC;aACJ;iBAAM,IAAI,iBAAiB,IAAI,IAAI,EAAE;gBACpC,YAAY,CAAC,OAAO,CAAC,CAAC;gBACtB,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC;oBAC1B,IAAI,CAAC,KAAK,CAAC,KAAI,EAAE,IAAI,CAAC,CAAC;oBACvB,OAAO,GAAG,IAAI,CAAC;gBACjB,CAAC,EAAE,IAAI,CAAC,CAAC;aACV;QACH,CAAC,CAAC;IACJ,CAAC;IAEM,gBAAU,GAAjB,UAAkB,IAAY;QAC5B,IAAI,MAAM,GAAG,IAAI,GAAG,GAAG,CAAC;QACxB,IAAI,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAClC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;YACd,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE;gBACzB,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;aAC9B;YACD,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;gBAC1B,OAAO,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;aAC7C;SACF;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,gBAAU,GAAjB,UAAkB,UAAkB;QAClC,OAAO,UAAU,CAAC,OAAO,CAAC,eAAe,EAAE,WAAC,IAAI,QAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,EAA/B,CAA+B,CAAC,CAAC;IACnF,CAAC;IAEM,iBAAW,GAAlB,UAAmB,SAAiB;QAClC,OAAO,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,WAAC,IAAI,QAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,EAAlB,CAAkB,CAAC,CAAC;IACjE,CAAC;IAED,8CAA8C;IACvC,cAAQ,GAAf,UAAgB,GAAW;QACzB,IAAI,OAAO,SAAS,IAAI,WAAW,EAAE;YACnC,OAAO,IAAI,SAAS,EAAE,CAAC,eAAe,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;SACzD;aAAM,IAAI,OAAO,aAAa,IAAI,WAAW,IAAI,IAAI,aAAa,CAAC,kBAAkB,CAAC,EAAE;YACvF,IAAI,MAAM,GAAG,IAAI,aAAa,CAAC,kBAAkB,CAAC,CAAC;YACnD,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC;YACvB,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YACpB,OAAO,MAAM,CAAC;SACf;aAAM;YACL,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;SACxC;IACH,CAAC;IAEM,gBAAU,GAAjB,UAAqB,MAAS,EAAE,GAAM;QAAtC,iBAUC;QATC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,aAAG;YACrB,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;gBAC7C,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;aACxB;iBAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;gBACvB,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;aACxB;iBAAM;gBACL,KAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;aACxC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,0BAAoB,GAA3B,UAA+B,MAAS,EAAE,GAAM,EAAE,UAAoB;QAAtE,iBAYC;QAXC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,aAAG;YACrB,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,EAAE,GAAG,CAAC,EAAE;gBAC/B,IAAI,OAAO,GAAG,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;oBAC7C,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;iBACxB;qBAAM,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;oBACvB,MAAM,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;iBACxB;qBAAM;oBACL,KAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;iBACxC;aACF;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,4BAAsB,GAA7B,UAA8B,UAAiB,EAAE,WAAkB;QACjE,IAAI,IAAI,GAAG,CAAC,CAAC,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;QACjD,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3B,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;SACtC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IAEM,8BAAwB,GAA/B,UAAmC,WAA0B,EAAE,YAA2B;QACxF,IAAM,UAAU,GAAkB,EAAE,CAAC;QAErC,IAAM,OAAO,GAAG,UAAC,KAAoB,EAAE,MAAqB;YAC1D,KAAK,IAAM,GAAG,IAAI,KAAK,EAAE;gBACvB,IAAI,KAAK,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,EAAE;oBACzD,UAAU,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC;iBAC9B;aACF;QACH,CAAC,CAAC;QAEF,OAAO,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QACnC,OAAO,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QACnC,OAAO,UAAU,CAAC;IACpB,CAAC;IAEM,kBAAY,GAAnB,UAA8B,EAAU,EAAE,OAAW;QACnD,OAAO,IAAI,OAAO,CAAC,iBAAO,IAAI,iBAAU,CAAC,cAAM,QAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,EAAtD,CAAsD,EAAE,EAAE,CAAC,EAA5E,CAA4E,CAAC,CAAC;IAC9G,CAAC;IAEM,yBAAmB,GAA1B,UAAgD,MAAW,EAAE,KAAU,EAAE,MAAuB;QAC9F,IAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAuB,UAAC,GAAG,EAAE,KAAK;YAAK,qBAAM,GAAG,eAAG,MAAM,CAAC,KAAK,CAAC,IAAG,KAAK,OAAG;;QAApC,CAAoC,EAAE,EAAE,CAAC,CAAC;QAChH,IAAM,aAAa,GAAQ,EAAE,CAAC;QAC9B,KAAK,CAAC,OAAO,CAAC,qBAAW;YACvB,IAAI,SAAS,CAAC,WAAW,CAAC,EAAE;gBAC1B,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC;aAC5C;QACH,CAAC,CAAC,CAAC;QACH,OAAW,aAAa,QAAK,CAAC,CAAC,OAAO,OAAT,CAAC,GAAS,MAAM,SAAK,aAAa,IAAG;IACpE,CAAC;IACH,YAAC;AAAD,CAAC;AAjcY,sBAAK;;;;;;;;;;;;;;;;;;;;ACNlB,sCAAwC;AACxC,qCAAuC;AACvC,+BAAgC;AAEhC;IAAA;IAoFA,CAAC;IAnEQ,WAAI,GAAX,UAAY,OAAgB;QAC1B,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAEM,YAAK,GAAZ,UAAa,SAAkB,EAAE,OAAgB;QAC/C,IAAI,CAAC,SAAS,EAAE;YACd,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SACtB;IACH,CAAC;IAEM,kBAAW,GAAlB,UAAmB,GAAQ;QACzB,MAAM,CAAC,KAAK,CAAC,aAAK,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,4BAA4B,CAAC,CAAC;IACrE,CAAC;IAEM,qBAAc,GAArB,UAAsB,GAAQ;QAC5B,MAAM,CAAC,KAAK,CAAC,CAAC,aAAK,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,gCAAgC,CAAC,CAAC;IAC1E,CAAC;IAEM,aAAM,GAAb,UAAc,GAAQ;QACpB,MAAM,CAAC,KAAK,CAAC,aAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,uBAAuB,CAAC,CAAC;IAC3D,CAAC;IAEM,gBAAS,GAAhB,UAAiB,GAAQ;QACvB,MAAM,CAAC,KAAK,CAAC,CAAC,aAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,2BAA2B,CAAC,CAAC;IAChE,CAAC;IAEM,aAAM,GAAb,UAAc,GAAQ;QACpB,MAAM,CAAC,KAAK,CAAC,CAAC,aAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,uCAAuC,CAAC,CAAC;IACvF,CAAC;IAEM,oBAAa,GAApB,UAAqB,GAAQ;QAC3B,MAAM,CAAC,KAAK,CAAC,aAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE,mCAAmC,CAAC,CAAC;IAClF,CAAC;IAEM,eAAQ,GAAf,UAAgB,GAAQ;QACtB,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,2BAA2B,CAAC,CAAC;IAC7D,CAAC;IAEM,uBAAgB,GAAvB,UAAwB,GAAW,EAAE,KAAa;QAChD,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAC7B,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAC/B,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,0BAA0B,GAAG,KAAK,CAAC,CAAC;IAC5E,CAAC;IAEM,uBAAgB,GAAvB,UAAwB,GAAW;QACjC,MAAM,CAAC,KAAK,CAAC,aAAK,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,qCAAqC,CAAC,CAAC;IACnF,CAAC;IAEM,eAAQ,GAAf,UAAgB,GAAQ;QACtB,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,2BAA2B,CAAC,CAAC;IAC7D,CAAC;IAEM,mBAAY,GAAnB,UAAoB,QAAgB,EAAE,MAAc;QAClD,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,yBAAyB,GAAG,QAAQ,CAAC,CAAC;IAC5F,CAAC;IAEM,2BAAoB,GAA3B,UAA4B,QAAgB,EAAE,MAAc;QAC1D,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,kCAAkC,GAAG,QAAQ,CAAC,CAAC;IACtG,CAAC;IAEM,oBAAa,GAApB,UAAqB,QAAgB,EAAE,MAAc;QACnD,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,0BAA0B,GAAG,QAAQ,CAAC,CAAC;IAC7F,CAAC;IAEM,4BAAqB,GAA5B,UAA6B,QAAgB,EAAE,MAAc;QAC3D,MAAM,CAAC,KAAK,CAAC,MAAM,IAAI,QAAQ,EAAE,QAAQ,GAAG,MAAM,GAAG,mCAAmC,GAAG,QAAQ,CAAC,CAAC;IACvG,CAAC;IAlFc,aAAM,GAAG,IAAI,eAAM,CAAC,QAAQ,CAAC,CAAC;IAEtC,qBAAc,GAAG,UAAC,OAAgB;QACvC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;QAElD,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,KAAK,EAAE;YACtC,OAAO,CAAC,KAAK,EAAE,CAAC;SACjB;QAED,IAAI,aAAK,CAAC,gBAAgB,CAAC,OAAO,CAAC,EAAE;YACnC,MAAM,IAAI,2BAA2B,CAAC,OAAO,CAAC,CAAC;SAChD;aAAM;YACL,MAAM,IAAI,2BAA2B,CAAC,mBAAmB,CAAC,CAAC;SAC5D;IACH,CAAC,CAAC;IAqEJ,aAAC;CAAA;AApFY,wBAAM;AAsFnB;IAAiD,+CAAK;IACpD,qCAAmB,OAAe;QAAlC,YACE,kBAAM,OAAO,CAAC,SACf;QAFkB,aAAO,GAAP,OAAO,CAAQ;;IAElC,CAAC;IAED,8CAAQ,GAAR;QACE,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IACH,kCAAC;AAAD,CAAC,CARgD,KAAK,GAQrD;AARY,kEAA2B;;;;;;;;;;AC1FxC,sCAAoC;AA01BpC;IAAkB,gBAAiB;SAAjB,UAAiB,EAAjB,qBAAiB,EAAjB,IAAiB;QAAjB,2BAAiB;;IAAI,OAAO,WAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC;AAAC,CAAC;AAAlF,cAAkF;AAAA,CAAC;;;;;;;;;;;;;;;;;;;;AC11BnF,sCAA2C;AAE3C,qCAA0C;AAC1C,4CAAsD;AACtD,mCAA0C;AAC1C,gDAA+D;AAC/D,oDAAuE;AACvE,sDAA2E;AAC3E,gDAAoE;AACpE,gDAA2E;AAE3E,qDAA6E;AAC7E,8CAAgD;AAEhD,6CAAuD;AACvD,+BAAgC;AAEhC,6CAAqD;AA2CrD;;;;;;;;;;GAUG;AACH;IAOE;;;OAGG;IACH,yBAAmB,KAAgB;QAAhB,UAAK,GAAL,KAAK,CAAW;QACjC,eAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAZM,wBAAQ,GAAf;QACE,8BAAc,CAAC;YACb,eAAe,EAAE,eAAe;SACjC,CAAC,CAAC;IACL,CAAC;IAoBM,4BAAE,GAAT,UAAU,GAAQ,EAAE,KAAa,EAAE,OAAiB;QAClD,IAAI,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,EAAE;YACxC,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC;SAClD;aAAM;YACL,QAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC;SACtD;IACH,CAAC;IAYM,6BAAG,GAAV,UAAW,GAAQ,EAAE,KAAa,EAAE,OAAiB;QACnD,IAAI,IAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,EAAE;YACxC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC;SACnD;aAAM;YACL,QAAE,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC;SACvD;IACH,CAAC;IAED;;;;;OAKG;IACI,uCAAa,GAApB,UAAwB,KAAa,EAAE,OAAyB;QAC9D,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED;;;;;;OAMG;IACI,wCAAc,GAArB,UAAyB,KAAa,EAAE,OAAyB;QAC/D,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IAC5C,CAAC;IAED;;;;;;OAMG;IACI,sCAAY,GAAnB,UAAuB,SAAiB,EAAE,SAAkB,EAAE,OAA0B;QACtF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC;IACjF,CAAC;IAED;;;;;;OAMG;IACI,4CAAkB,GAAzB,UAA6B,SAAiB,EAAE,SAAkB,EAAE,OAA0B;QAC5F,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,2BAA2B,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC;IACtF,CAAC;IAED;;;;;;;OAOG;IACI,uCAAa,GAApB,UAAwB,SAAiB,EAAE,SAAkB,EAAE,OAA0B;QACvF,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,sBAAsB,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,OAAO,CAAC,CAAC;IAClF,CAAC;IAUM,iCAAO,GAAd,UAAe,GAAQ,EAAE,KAAa,EAAE,IAAa;QAArD,iBAQC;QAPC,IAAI,CAAC,mBAAmB,CAAC;YACvB,IAAI,KAAI,CAAC,0BAA0B,CAAC,GAAG,CAAC,EAAE;gBACxC,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;aAC1B;iBAAM;gBACL,QAAE,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;aAC9B;QACH,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACX,CAAC;IAED;;;;OAIG;IACO,6CAAmB,GAA7B,UAA8B,IAAc;QAA5C,iBAoBC;QAnBC,OAAO;YAAC,cAAc;iBAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;gBAAd,yBAAc;;YACpB,IAAI,CAAC,KAAI,CAAC,KAAK,CAAC,QAAQ,EAAE;gBACxB,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,YAAY,WAAW,EAAE;oBAC1C,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;wBAClB,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;qBACzB;iBACF;qBAAM,IAAI,IAAI,IAAI,KAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;oBACzD,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE;wBACxB,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;qBAClB;yBAAM,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,eAAe,CAAC,EAAE;wBAClD,yGAAyG;wBACzG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;qBAChC;yBAAM;wBACL,IAAI,GAAG,EAAE,CAAC;qBACX;iBACF;gBACD,OAAO,IAAI,CAAC,KAAK,CAAC,KAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;aACrC;QACH,CAAC,CAAC;IACJ,CAAC;IAEO,oDAA0B,GAAlC,UAAmC,GAAQ;QACzC,IAAI,SAAG,CAAC,yBAAyB,KAAK,IAAI,EAAE;YAC1C,OAAO,KAAK,CAAC;SACd;QAED,IAAI,yBAAW,CAAC,SAAS,EAAE,IAAI,yBAAW,CAAC,kBAAkB,CAAC,GAAG,CAAC,EAAE;YAClE,OAAO,IAAI,CAAC;SACb;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,kDAAwB,GAAhC,UAAiC,GAAQ;QACvC,IAAI,SAAG,CAAC,yBAAyB,KAAK,IAAI,EAAE;YAC1C,OAAO,KAAK,CAAC;SACd;QACD,OAAO,yBAAW,CAAC,SAAS,EAAE,IAAI,yBAAW,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC;IAC7E,CAAC;IAEO,gDAAsB,GAA9B,UAA+B,SAAiB,EAAE,SAAkB;QAClE,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IAC9E,CAAC;IAEO,qDAA2B,GAAnC,UAAoC,SAAiB,EAAE,SAAkB;QACvE,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,qBAAqB,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IACpF,CAAC;IAEO,uCAAa,GAArB,UAAsB,KAAY,EAAE,SAAiB,EAAE,SAAkB;QACvE,IAAI,OAAO,CAAC;QACZ,IAAI,SAAS,IAAI,SAAS,EAAE;YAC1B,OAAO,GAAG,KAAK,CAAC,YAAY,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC;SACrD;aAAM;YACL,OAAO,GAAG,KAAK,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;SACzC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IACH,sBAAC;AAAD,CAAC;AA3LY,0CAAe;AA6L5B;;GAEG;AACH;IAA+B,6BAAa;IAkC1C;;;;;;;OAOG;IACH,mBAAmB,OAAoB,EAAS,IAAY,EAAE,QAAiC;QAAjC,wCAAiC;QAA/F,YACE,kBAAM,OAAO,EAAE,IAAI,CAAC,SAerB;QAhBkB,aAAO,GAAP,OAAO,CAAa;QAAS,UAAI,GAAJ,IAAI,CAAQ;QAE1D,KAAI,CAAC,IAAI,GAAG,IAAI,SAAS,CAAC,mBAAmB,CAAC,KAAI,CAAC,CAAC;QACpD,KAAI,CAAC,IAAI,GAAG,QAAQ,CAAC,IAAI,IAAI,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC5D,KAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,eAAe,IAAI,KAAI,CAAC,sBAAsB,EAAE,CAAC;QACjF,KAAI,CAAC,mBAAmB,GAAG,QAAQ,CAAC,mBAAmB,IAAI,KAAI,CAAC,0BAA0B,EAAE,CAAC;QAC7F,KAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,eAAe,IAAI,KAAI,CAAC,sBAAsB,EAAE,CAAC;QACjF,KAAI,CAAC,eAAe,GAAG,QAAQ,CAAC,eAAe,IAAI,KAAI,CAAC,sBAAsB,EAAE,CAAC;QACjF,KAAI,CAAC,qBAAqB,GAAG,QAAQ,CAAC,qBAAqB,IAAI,KAAI,CAAC,4BAA4B,EAAE,CAAC;QACnG,KAAI,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,cAAM,YAAI,CAAC,SAAS,EAAE,EAAhB,CAAgB,CAAC,CAAC;QAEhD,IAAI,KAAI,CAAC,eAAe,IAAI,IAAI,EAAE;YAChC,KAAI,CAAC,eAAe,CAAC,eAAe,CAAC,IAAI,EAAE,KAAI,CAAC,CAAC;SAClD;QAED,KAAI,CAAC,aAAa,EAAE,CAAC;;IACvB,CAAC;IAED;;;OAGG;IACI,+BAAW,GAAlB;QACE,OAA2B;YACzB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;YAC7C,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;YACjD,cAAc,EAAE,IAAI,CAAC,cAAc;SACpC,CAAC;IACJ,CAAC;IAKD,sBAAW,qCAAc;QAHzB;;WAEG;aACH;YACE,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;QAC1B,CAAC;;;OAAA;IAEM,6BAAS,GAAhB;QACE,2BAA2B;IAC7B,CAAC;IAEM,0CAAsB,GAA7B;QACE,OAAwB,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,iCAAe,CAAC,CAAC;IAClF,CAAC;IAEM,0CAAsB,GAA7B;QACE,OAAwB,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,iCAAe,CAAC,CAAC;IAClF,CAAC;IAEM,8CAA0B,GAAjC;QACE,OAA4B,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,yCAAmB,CAAC,CAAC;IAC1F,CAAC;IAEM,0CAAsB,GAA7B;QACE,OAAwB,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,iCAAe,CAAC,CAAC;IAClF,CAAC;IAEM,gDAA4B,GAAnC;QACE,OAA8B,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,6CAAqB,CAAC,CAAC;IAC9F,CAAC;IAEM,6BAAS,GAAhB;QACE,OAAO,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,yCAAmB,EAAE,CAAC;IACvI,CAAC;IAEM,iCAAa,GAApB;QACE,OAAO,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAES,oCAAgB,GAA1B;QACE,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE;YACzC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,+EAA+E,CAAC,CAAC;YAClG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;SAC1C;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,cAAc,CAAC,EAAE;YAC7C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mFAAmF,CAAC,CAAC;YACtG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;SAC9C;IACH,CAAC;IAEO,iCAAa,GAArB;QAAA,iBASC;QARC,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,UAAU,EAAE,UAAC,CAAa;YAC5C,IAAI,CAAC,CAAC,MAAM,EAAE;gBACZ,IAAI,SAAS,GAAG,KAAI,CAAC,SAAS,EAAE,CAAC;gBACjC,IAAI,SAAS,IAAI,IAAI,EAAE;oBACrB,QAAE,CAAC,KAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,yBAAW,CAAC,cAAc,EAAE,KAAI,CAAC,SAAS,EAAE,CAAC,CAAC;iBACrE;aACF;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IACI,aAAG,GAAV,UAAW,OAAoB,EAAE,cAAoB,EAAE,OAAiB;QACtE,eAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAEvB,IAAI,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE;YAC9B,OAAkB,OAAO,CAAC,SAAS,CAAC,0BAA0B,CAAC,cAAc,CAAC,CAAC,CAAC;SACjF;aAAM,IAAI,aAAK,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE;YACvC,eAAM,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;YACjC,OAAkB,OAAO,CAAC,SAAS,CAAC,0BAA0B,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC;SACpF;aAAM;YACL,mEAAmE;YACnE,2BAA2B;YAC3B,IAAI,eAAe,GAAG,6BAAa,CAAC,4BAA4B,CAAC,OAAO,CAAC,CAAC;YAC1E,IAAI,CAAC,OAAO,EAAE;gBACZ,eAAM,CAAC,KAAK,CACV,eAAe,CAAC,MAAM,IAAI,CAAC,EAC3B,2FAA2F,CAC5F,CAAC;aACH;YACD,OAAO,eAAe,CAAC,CAAC,CAAC,CAAC;SAC3B;IACH,CAAC;IAEM,mBAAS,GAAhB,UAAiB,OAAoB,EAAE,OAAwB;QAAxB,yCAAwB;QAC7D,IAAI,aAAa,GAAG,QAAE,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QACxD,eAAM,CAAC,KAAK,CAAC,OAAO,IAAI,aAAa,IAAI,SAAS,CAAC,CAAC;QACpD,OAAO,aAAa,CAAC,aAAa,CAAC,CAAC;IACtC,CAAC;IAEM,6BAAmB,GAA1B,UAA2B,OAAoB,EAAE,MAAoB;QACnE,eAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACvB,eAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACtB,QAAE,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QACpC,OAAO,CAAC,aAAa,CAAC,GAAG,MAAM,CAAC;QAChC,IAAI,MAAM,GAAG,yBAAW,CAAC,SAAS,EAAE,CAAC;QACrC,IAAI,MAAM,EAAE;YACV,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC9B;IACH,CAAC;IAEM,mCAAyB,GAAhC,UAAiC,OAAoB;QACnD,eAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACvB,QAAE,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,mCAAmC,CAAC,CAAC;IAC5D,CAAC;IAEM,qBAAW,GAAlB,UAAmB,OAAoB;QACrC,eAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACvB,IAAM,uBAAuB,GAAG,SAAS,CAAC,cAAc,CAAC,OAAO,EAAE,iCAAe,CAAC,CAAC;QACnF,IAAI,uBAAuB,EAAE;YAC3B,OAAO,uBAAuB,CAAC,OAAO,CAAC;SACxC;QACD,IAAM,sBAAsB,GAAG,SAAS,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QACpE,IAAI,sBAAsB,EAAE;YAC1B,OAAO,sBAAsB,CAAC;SAC/B;QACD,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAEM,wBAAc,GAArB,UAAsB,OAAoB,EAAE,cAAmB;QAC7D,eAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACvB,eAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QAC9B,eAAM,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QAEjC,IAAM,eAAe,GAAG,SAAS,CAAC,0BAA0B,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QAChF,IAAI,KAAkB,CAAC;QAEvB,IAAI,QAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,GAAG,GAAG,eAAe,CAAC,EAAE;YACzC,KAAK,GAAG,OAAO,CAAC;SACjB;aAAM;YACL,mBAAmB;YACnB,IAAM,QAAQ,GAAG,QAAE,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;YAExD,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;gBACrC,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;aACrB;iBAAM;gBACL,IAAM,MAAM,GAAG,QAAE,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;gBAEpD,IAAI,MAAM,EAAE;oBACV,KAAK,GAAG,MAAM,CAAC;iBAChB;aACF;SACF;QACD,IAAI,KAAK,EAAE;YACT,OAAsB,KAAK,CAAC,eAAe,CAAC,CAAC;SAC9C;aAAM;YACL,OAAO,SAAS,CAAC;SAClB;IACH,CAAC;IAEM,kCAAwB,GAA/B,UAAgC,OAAoB;QAClD,IAAI,MAAM,GAAG,QAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACtD,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,QAAE,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;QACrD,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,eAAK;YAC7B,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;IACL,CAAC;IAEc,2BAAiB,GAAhC,UAAiC,OAAoB;QACnD,IAAM,eAAe,GAAG,SAAS,CAAC,4BAA4B,CAAC,OAAO,CAAC,CAAC;QACxE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC/C,IAAM,SAAS,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;YACrC,IAAI,SAAS,YAAY,SAAS,EAAE;gBAClC,OAAO,SAAS,CAAC,IAAI,CAAC;aACvB;SACF;QACD,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;YAC1B,OAAO,IAAI,CAAC;SACb;QACD,OAAO,SAAS,CAAC,iBAAiB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IAC5D,CAAC;IA7PM,6BAAmB,GAA2B,eAAe,CAAC;IA8PvE,gBAAC;CAAA,CA/P8B,6BAAa,GA+P3C;AA/PY,8BAAS;;;;;;;;;;ACvQtB,0CAAgE;AAChE,sCAA2C;AAC3C,sCAA2C;AAE3C,mCAA0C;AAC1C,yCAAgD;AAChD,qCAA0C;AAE1C,wDAAiE;AACjE,wDAAkE;AAClE,+DAAgF;AAChF,2DAAwE;AACxE,kDAoB6B;AAC7B,yDAA2G;AAE3G,IAAM,sBAAsB,GAAG,kBAAkB,CAAC;AAClD,IAAM,eAAe,GAAG,SAAS,CAAC;AAClC,IAAM,SAAS,GAAG,0DAA0D,CAAC;AAE7E;;;;;;;;;;GAUG;AACH;IAAA;IAqoBA,CAAC;IApoBQ,oCAAmB,GAA1B,UAA2B,UAAgD;QACzE,OAAO,mDAAwB,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAClE,CAAC;IAED;;;;;;;;;;;OAWG;IACI,mCAAkB,GAAzB,UAA0B,UAAuC;QAC/D,OAAO,gBAAgB,CAAC,WAAW,CAAU,wCAAoB,CAAC,OAAO,EAAE,gBAAgB,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC;IAC7H,CAAC;IAED;;;;;;;;;;;;;;;;;OAiBG;IACI,kCAAiB,GAAxB,UAAyB,UAA8C;QACrE,OAAO,gBAAgB,CAAC,WAAW,CAAS,wCAAoB,CAAC,MAAM,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;IAC1H,CAAC;IAED;;;;;;;;;;;OAWG;IACI,kCAAiB,GAAxB,UAA2C,UAAiC;QAC1E,OAAO,gBAAgB,CAAC,WAAW,CAAI,wCAAoB,CAAC,MAAM,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;IACrH,CAAC;IAED;;;;;;;;;;;;OAYG;IACI,gCAAe,GAAtB,UAAuB,UAAsC;QAC3D,OAAO,gBAAgB,CAAC,WAAW,CAAS,wCAAoB,CAAC,IAAI,EAAE,gBAAgB,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;IACtH,CAAC;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACI,iCAAgB,GAAvB,UAAwB,UAAsC;QAC5D,OAAO,gBAAgB,CAAC,WAAW,CAAS,wCAAoB,CAAC,KAAK,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;IACzH,CAAC;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACI,kCAAiB,GAAxB,UAAyB,UAAsC;QAC7D,OAAO,gBAAgB,CAAC,WAAW,CAAS,wCAAoB,CAAC,MAAM,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;IAC1H,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACI,gCAAe,GAAtB,UAAkD,UAA0C;QAC1F,OAAO,gBAAgB,CAAC,WAAW,CAAC,wCAAoB,CAAC,IAAI,EAAE,gBAAgB,CAAC,oBAAoB,EAAE,UAAU,CAAM,CAAC;IACzH,CAAC;IAED;;;;OAIG;IACI,sCAAqB,GAA5B,UAAgC,UAA0C;QACxE,OAAO,gBAAgB,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;IACtD,CAAC;IAED;;;;;;;;;;;;;;;;;;OAkBG;IACI,2CAA0B,GAAjC,UAAkC,UAAgD;QAChF,OAAO,gBAAgB,CAAC,WAAW,CACjC,wCAAoB,CAAC,gBAAgB,EACrC,gBAAgB,CAAC,yBAAyB,EAC1C,UAAU,CACX,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;OAYG;IACI,iCAAgB,GAAvB,UAAwB,UAA6C;QACnE,OAAO,gBAAgB,CAAC,WAAW,CAAS,wCAAoB,CAAC,KAAK,EAAE,gBAAgB,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;IACxH,CAAC;IAED;;;;;;;;;;;OAWG;IACI,kCAAiB,GAAxB,UAAyB,UAA8C;QACrE,OAAO,gBAAgB,CAAC,WAAW,CAAW,wCAAoB,CAAC,MAAM,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;IAC5H,CAAC;IAED;;;;;;;;;;;OAWG;IACI,2CAA0B,GAAjC,UAAkC,UAAsC;QACtE,OAAO,gBAAgB,CAAC,WAAW,CAAS,wCAAoB,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,gBAAgB,EAAE,UAAU,CAAC,CAAC;IACpI,CAAC;IAED;;;;;;;;;;;OAWG;IACI,gCAAe,GAAtB,UAA0B,UAA4C;QACpE,OAAO,gBAAgB,CAAC,WAAW,CAAW,wCAAoB,CAAC,IAAI,EAAE,gBAAgB,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;IACxH,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACI,oCAAmB,GAA1B,UAA2B,UAA2C;QACpE,OAAO,gBAAgB,CAAC,WAAW,CAAc,wCAAoB,CAAC,QAAQ,EAAE,gBAAgB,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC;IACnI,CAAC;IAEM,4CAA2B,GAAlC,UAAmC,UAAwD;QACzF,OAAO,gBAAgB,CAAC,WAAW,CACjC,wCAAoB,CAAC,kBAAkB,EACvC,gBAAgB,CAAC,0BAA0B,EAC3C,UAAU,CACX,CAAC;IACJ,CAAC;IAEM,kCAAiB,GAAxB,UAA4B,SAA+B,EAAE,UAAiC;QAC5F,IAAM,UAAU,GAAmC,UAAC,OAAoB,EAAE,IAAY,EAAE,MAAkC;YACxH,IAAM,WAAW,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YAC7E,IAAI,CAAC,aAAK,CAAC,mBAAmB,CAAC,WAAW,CAAC,EAAE;gBAC3C,OAAO,SAAS,CAAC,WAAW,CAAC,CAAC;aAC/B;QACH,CAAC,CAAC;QACF,OAAO,gBAAgB,CAAC,WAAW,CAAI,wCAAoB,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IAC9F,CAAC;IAEM,sCAAqB,GAA5B,UAAgC,SAAiC,EAAE,UAAqD;QACtH,IAAM,UAAU,GAAmC,UAAC,OAAoB,EAAE,IAAY,EAAE,MAAW;YACjG,IAAM,WAAW,GAAG,gBAAgB,CAAC,cAAc,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YAC3E,OAAO,SAAS,CAAC,WAAW,CAAC,CAAC;QAChC,CAAC,CAAC;QACF,OAAO,gBAAgB,CAAC,WAAW,CAAM,wCAAoB,CAAC,IAAI,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IAC9F,CAAC;IAEM,kCAAiB,GAAxB,UAAyB,UAA8C;QACrE,IAAM,UAAU,GAEX,UAAC,OAAoB,EAAE,IAAY,EAAE,MAAoC;YAC5E,IAAM,aAAa,GAAG,iBAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;YAClD,IAAM,aAAa,GAEf,EAAE,CAAC;YACP,IAAM,YAAY,GAEd,EAAE,CAAC;YACP,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC7C,IAAM,GAAG,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;gBAC7B,IAAM,SAAS,GAAG,gBAAgB,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;gBAC7D,aAAa,CAAC,SAAS,CAAC,GAAG,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;aACvD;YACD,gBAAgB,CAAC,WAAW,CAAC,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC;YACvE,IAAM,YAAY,GAEd,EAAE,CAAC;YACP,IAAI,WAAW,GAAG,KAAK,CAAC;YACxB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC7C,IAAM,GAAG,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;gBAC7B,IAAM,SAAS,GAAG,gBAAgB,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;gBAC7D,IAAI,YAAY,CAAC,SAAS,CAAC,IAAI,IAAI,EAAE;oBACnC,YAAY,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;oBAC5C,WAAW,GAAG,IAAI,CAAC;iBACpB;aACF;YACD,OAAO,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC;QAC3C,CAAC,CAAC;QACF,OAAO,gBAAgB,CAAC,WAAW,CAEhC,wCAAoB,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IAC1D,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACI,0CAAyB,GAAhC;QACE,OAAO,gBAAgB,CAAC,WAAW,CAA0B,wCAAoB,CAAC,KAAK,EAAE,gBAAgB,CAAC,wBAAwB,CAAC,CAAC;IACtI,CAAC;IAEM,4BAAW,GAAlB,UAAsB,IAA0B,EAAE,IAAoC,EAAE,SAAoC;QAApC,0CAAoC;QAC1H,IAAM,MAAM,GAAoC,SAAS,CAAC;QAC1D,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;QACnB,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;QACnB,OAAY,MAAM,CAAC;IACrB,CAAC;IAEM,iCAAgB,GAAvB,UAAwB,IAAY,EAAE,UAAmC;QACvE,IAAI,UAAU,IAAI,UAAU,CAAC,QAAQ,EAAE;YACrC,OAAO,UAAU,CAAC,QAAQ,CAAC;SAC5B;QACD,IAAI,IAAI,EAAE;YACR,OAAO,OAAO,GAAG,gBAAgB,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;SAC3D;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,kCAAiB,GAAxB,UAAyB,IAAY;QACnC,OAAO,IAAI,CAAC,OAAO,CAAC,sBAAsB,EAAE,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;IACrE,CAAC;IAEM,+BAAc,GAArB,UAAsB,MAAc,EAAE,IAAY;QAChD,OAAO,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACnE,CAAC;IAED;;;;;;;;;OASG;IACI,qCAAoB,GAA3B,UAA4B,OAAoB,EAAE,SAAc,EAAE,MAAY;QAC5E,OAAO,gBAAgB,CAAC,WAAW,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC;IACxF,CAAC;IAEM,4BAAW,GAAlB,UACE,OAAoB,EACpB,OAEC,EACD,MAAgB,EAChB,WAAmB;QADnB,oCAAgB;QAGhB,IAAI,aAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE;YACnC,MAAM,GAAG,EAAE,CAAC;SACb;QAED,iBAAI,CAAC,OAAO,EAAE,UAAC,gBAAgB,EAAE,IAAI;YACnC,IAAM,KAAK,GAAG,IAAI,8CAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC,IAAI,EAAE,CAAC;YACxF,IAAI,+CAAsB,CAAC,gBAAgB,EAAE,EAAE,KAAK,SAAE,IAAI,QAAE,EAAE,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;YAC9E,IAAI,qDAAyB,CAAC,gBAAgB,EAAE,EAAE,WAAW,eAAE,IAAI,QAAE,KAAK,SAAE,EAAE,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;QACnG,CAAC,CAAC,CAAC;QAEH,IAAI,6DAA6B,CAAC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,WAAW,EAAE,CAAC;QAC9E,OAAO,MAAM,CAAC;IAChB,CAAC;IAEM,qCAAoB,GAA3B,UAA4B,OAAoB,EAAE,IAAY,EAAE,gBAA8C;QAC5G,IAAM,iBAAiB,GAAG,gBAAgB,CAAC,IAAI,CAAC;QAChD,IAAI,CAAC,iBAAiB,EAAE;YACtB,OAAO,IAAI,CAAC;SACb;QAED,OAAO,iBAAiB,CAAC,OAAO,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC;IAC5D,CAAC;IAEM,iCAAgB,GAAvB,UAA0C,OAAoB,EAAE,IAAY,EAAE,MAA8B;QAC1G,OAAO,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,IAAI,gBAAgB,CAAC,qBAAqB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC1I,CAAC;IAEM,+BAAc,GAArB,UAAsB,OAAoB,EAAE,IAAY,EAAE,MAA8B;QACtF,IAAI,WAAW,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAC3E,IAAI,WAAW,IAAI,IAAI,EAAE;YACvB,OAAO,IAAI,CAAC;SACb;QAED,iHAAiH;QACjH,6FAA6F;QAC7F,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,uBAAuB,EAAE,SAAS,CAAC,CAAC;QACtE,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,kCAAkC,EAAE,QAAQ,CAAC,CAAC;QAEhF,IAAI,aAAK,CAAC,iBAAiB,CAAC,mBAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE;YACxD,IAAI,eAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,oBAAkB,WAAW,gBAAa,CAAC,CAAC;YACrE,OAAO,IAAI,CAAC;SACb;QAED,WAAW,GAAG,aAAK,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAC7C,OAAO,WAAW,CAAC;IACrB,CAAC;IAEM,gCAAe,GAAtB,UAAuB,OAAoB,EAAE,IAAY,EAAE,MAAoC;QAC7F,IAAM,KAAK,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QACvE,eAAM,CAAC,KAAK,CAAC,CAAC,aAAK,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,aAAK,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,uBAAuB,CAAC,CAAC;QAC3G,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,yCAAwB,GAA/B,UAAgC,OAAoB,EAAE,IAAY,EAAE,MAAoC;QACtG,IAAI,KAAK,GAAG,SAAG,CAAC,eAAe,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,mBAAS;YAClE,oBAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,QAAQ,EAAE,uBAAuB,CAAC;QAAnE,CAAmE,CACpE,CAAC;QAEF,OAAO,KAAK,CAAC,MAAM,IAAI,CAAC;YACtB,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAS,IAAI,QAAC;gBACtB,KAAK,EAAE,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,2BAA2B,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,uBAAuB,EAAE,EAAE,CAAC;gBACvG,MAAM,EAAE,aAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI;gBACjG,gBAAgB,EAAE,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,2BAA2B,CAAC,IAAI,CAAC;aAC/E,CAAC,EAJqB,CAIrB,CAAC;YACL,CAAC,CAAC,SAAS,CAAC;IAChB,CAAC;IAEM,iCAAgB,GAAvB,UAAwB,OAAoB,EAAE,IAAY,EAAE,MAAoC;QAC9F,IAAM,UAAU,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAC5E,IAAI,UAAU,IAAI,IAAI,EAAE;YACtB,OAAO,IAAI,CAAC;SACb;QACD,IAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QACjD,iBAAI,CAAC,MAAM,EAAE,UAAC,KAAa;YACzB,eAAM,CAAC,KAAK,CAAC,aAAK,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,uBAAuB,CAAC,CAAC;QAC3E,CAAC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC;IAEM,0CAAyB,GAAhC,UAAiC,OAAoB,EAAE,IAAY,EAAE,MAAoC;QACvG,IAAM,cAAc,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAChF,IAAM,MAAM,GAAW,MAAM,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,eAAe,CAAC,CAAC;QACnE,IAAI,MAAM,IAAI,IAAI,IAAI,cAAc,IAAI,IAAI,EAAE;YAC5C,IAAM,aAAW,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACpD,IAAM,OAAO,GAAG,gBAAG,CAAC,aAAW,EAAE,UAAC,IAAI,EAAE,CAAC,IAAK,oBAAW,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAArC,CAAqC,CAAC,CAAC;YACrF,IAAM,UAAU,GAAG,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACnD,IAAI,UAAU,IAAI,IAAI,EAAE;gBACtB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAC1C,IAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC7C,IAAI,MAAM,IAAI,IAAI,EAAE;wBAClB,IAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;wBACrC,IAAI,qBAAQ,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE;4BAC3B,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;yBAC5C;qBACF;iBACF;aACF;YACD,OAAO,cAAc,IAAI,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;SACxE;QACD,OAAO,cAAc,CAAC;IACxB,CAAC;IAEM,iCAAgB,GAAvB,UAAwB,OAAoB,EAAE,IAAY,EAAE,MAAqC;QAC/F,IAAM,cAAc,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAChF,IAAI,cAAc,IAAI,IAAI,EAAE;YAC1B,OAAO,IAAI,CAAC;SACb;QACD,IAAI,WAAW,GAAG,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,aAAK,CAAC,wBAAwB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,aAAK,CAAC,sBAAsB,CAAC,cAAc,CAAC,CAAC;QACxI,IAAI,MAAM,CAAC,GAAG,IAAI,IAAI,IAAI,MAAM,CAAC,GAAG,GAAG,WAAW,EAAE;YAClD,IAAI,eAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CACtB,sBAAoB,IAAI,qDAAgD,WAAW,qBACjF,MAAM,CAAC,GAAG,gDACiC,EAC7C,MAAM,CACP,CAAC;YACF,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC;SAC1B;QACD,IAAI,MAAM,CAAC,GAAG,IAAI,IAAI,IAAI,MAAM,CAAC,GAAG,GAAG,WAAW,EAAE;YAClD,IAAI,eAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CACtB,sBAAoB,IAAI,uDAAkD,WAAW,qBACnF,MAAM,CAAC,GAAG,gDACiC,EAC7C,MAAM,CACP,CAAC;YACF,WAAW,GAAG,MAAM,CAAC,GAAG,CAAC;SAC1B;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;IAEM,kCAAiB,GAAxB,UAAyB,OAAoB,EAAE,IAAY,EAAE,MAAoC;QAC/F,OAAO,aAAK,CAAC,0BAA0B,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;IACpG,CAAC;IAEM,+BAAc,GAArB,UAAsB,OAAoB,EAAE,IAAY,EAAE,MAAmC;QAC3F,IAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,SAAS,CAAC;QAChD,IAAM,cAAc,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAChF,OAAO,aAAK,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACzF,CAAC;IAEM,+BAAc,GAArB,UAAsB,OAAoB,EAAE,IAAY,EAAE,MAAoC,EAAE,KAAU;QACxG,IAAM,YAAY,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAC9E,OAAO,YAAY,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3D,CAAC;IAEM,qCAAoB,GAA3B,UAA+B,OAAoB,EAAE,IAAY,EAAE,MAA8B;QAC/F,IAAM,YAAY,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAC9E,IAAI,YAAY,IAAI,IAAI,EAAE;YACxB,OAAO,IAAI,CAAC;SACb;QACD,IAAI;YACF,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAM,CAAC;SACtC;QAAC,OAAO,SAAS,EAAE;YAClB,IAAI,eAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CACtB,sBAAoB,IAAI,8CAAyC,YAAY,6BAA0B,EACvG,SAAS,CACV,CAAC;YACF,OAAO,IAAI,CAAC;SACb;IACH,CAAC;IAEM,mCAAkB,GAAzB,UACE,OAAoB,EACpB,IAAY,EACZ,MAAoC,EACpC,GAAwB;QAAxB,oCAAwB;QAExB,IAAM,cAAc,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAChF,OAAO,aAAK,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC,CAAC,CAAc,GAAG,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACxG,CAAC;IAEM,2CAA0B,GAAjC,UACE,OAAoB,EACpB,IAAY,EACZ,MAA+C,EAC/C,GAAwB;QAAxB,oCAAwB;QAExB,IAAI,WAAwB,CAAC;QAC7B,sBAAsB;QACtB,IAAM,YAAY,GAAG,MAAM,CAAC,YAAY,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,GAAG,WAAW,CAAC;QAC1G,IAAM,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,gBAAgB,CAAC,qBAAqB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC/G,IAAI,QAAQ,IAAI,IAAI,EAAE;YACpB,WAAW,GAAgB,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;SAC7D;QACD,QAAQ;QACR,IAAI,WAAW,IAAI,IAAI,EAAE;YACvB,IAAI,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;YACzC,IAAI,aAAa,IAAI,IAAI,EAAE;gBACzB,aAAa,GAAG,GAAG,GAAG,IAAI,CAAC;aAC5B;YACD,WAAW,GAAG,gBAAgB,CAAC,gCAAgC,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;SACzF;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;IAEM,iDAAgC,GAAvC,UAAwC,OAAoB,EAAE,QAAgB;QAC5E,eAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAClC,IAAI,QAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE;YAC5B,OAAO,OAAO,CAAC;SAChB;QACD,OAAoB,QAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACjD,CAAC;IAEM,oDAAmC,GAA1C,UAA2C,OAAoB,EAAE,QAAgB;QAC/E,eAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAClC,OAAO,QAAE,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;IAEM,oCAAmB,GAA1B,UAA2B,OAAoB,EAAE,GAAwB;QAAxB,oCAAwB;QACvE,OAAO,GAAG,IAAI,CAAC,wBAAwB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACtD,OAAO,OAAO,YAAY,eAAe,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAM,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;IACtH,CAAC;IAEM,yCAAwB,GAA/B,UAAgC,OAAoB,EAAE,GAAwB;QAAxB,oCAAwB;QAC5E,IAAI,CAAC,OAAO,EAAE;YACZ,OAAO,GAAG,CAAC,IAAI,CAAC;SACjB;QACD,IAAI,gBAAgB,CAAC,mBAAmB,CAAC,OAAO,CAAC,IAAI,OAAO,YAAY,eAAe,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;YACjH,OAAO,OAAO,CAAC;SAChB;QACD,OAAO,gBAAgB,CAAC,wBAAwB,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;IAC/E,CAAC;IAEM,oCAAmB,GAA1B,UAA2B,OAAoB;QAC7C,IAAM,gBAAgB,GAAG,QAAE,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACvD,OAAO,gBAAgB,IAAI,QAAQ,IAAI,gBAAgB,IAAI,MAAM,CAAC;IACpE,CAAC;IAEM,sCAAqB,GAA5B,UAA6B,OAAoB,EAAE,MAA8B;QAC/E,IAAI,oBAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;YACzB,IAAI,gBAAc,CAAC;YACnB,iBAAI,CAAC,MAAM,CAAC,KAAK,EAAE,eAAK;gBACtB,IAAM,2BAA2B,GAAG,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;gBACnG,IAAI,2BAA2B,EAAE;oBAC/B,gBAAc,GAAG,2BAA2B,CAAC;iBAC9C;YACH,CAAC,CAAC,CAAC;YACH,OAAO,gBAAc,CAAC;SACvB;QACD,IAAI,MAAM,CAAC,KAAK,EAAE;YAChB,OAAO,OAAO,CAAC,YAAY,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;SAC9E;aAAM;YACL,OAAO,SAAS,CAAC;SAClB;IACH,CAAC;IACH,uBAAC;AAAD,CAAC;AAroBY,4CAAgB;;;;;;;;;AClD7B,yEAAyE;;AAEzE,0BAA0B;AAC1B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;IACtB,OAAO,GAAQ;QACb,GAAG,EAAE,cAAY,CAAC;QAClB,KAAK,EAAE,cAAY,CAAC;QACpB,IAAI,EAAE,cAAY,CAAC;QACnB,IAAI,EAAE,cAAY,CAAC;QACnB,KAAK,EAAE,cAAY,CAAC;QACpB,MAAM,EAAE,cAAY,CAAC;QACrB,KAAK,EAAE,cAAY,CAAC;QACpB,KAAK,EAAE,cAAY,CAAC;QACpB,GAAG,EAAE,cAAY,CAAC;QAClB,MAAM,EAAE,cAAY,CAAC;QACrB,KAAK,EAAE,cAAY,CAAC;QACpB,cAAc,EAAE,cAAY,CAAC;QAC7B,QAAQ,EAAE,cAAY,CAAC;QACvB,yBAAyB,EAAE,UAAS,OAAY,IAAQ,CAAC;QACzD,OAAO,EAAE,cAAY,CAAC;QACtB,UAAU,EAAE,cAAY,CAAC;QACzB,MAAM,EAAE,cAAY,CAAC;QACrB,IAAI,EAAE,cAAY,CAAC;QACnB,OAAO,EAAE,cAAY,CAAC;QACtB,KAAK,EAAE,cAAY,CAAC;KACrB,CAAC;CACH;AAED,0BAA0B;AAC1B;IAWE,gBAAoB,KAAU;QAAV,UAAK,GAAL,KAAK,CAAK;IAAG,CAAC;IAElC,sBAAK,GAAL;QAAM,eAAe;aAAf,UAAe,EAAf,qBAAe,EAAf,IAAe;YAAf,0BAAe;;QACnB,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,EAAE;YAChC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;SAC1B;IACH,CAAC;IAED,sBAAK,GAAL;QAAM,eAAe;aAAf,UAAe,EAAf,qBAAe,EAAf,IAAe;YAAf,0BAAe;;QACnB,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,EAAE;YAChC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;SAC1B;IACH,CAAC;IAED,qBAAI,GAAJ;QAAK,eAAe;aAAf,UAAe,EAAf,qBAAe,EAAf,IAAe;YAAf,0BAAe;;QAClB,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,EAAE;YAC/B,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;SACzB;IACH,CAAC;IAED,qBAAI,GAAJ;QAAK,eAAe;aAAf,UAAe,EAAf,qBAAe,EAAf,IAAe;YAAf,0BAAe;;QAClB,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,IAAI,EAAE;YAC/B,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;SACzB;IACH,CAAC;IAED,sBAAK,GAAL;QAAM,eAAe;aAAf,UAAe,EAAf,qBAAe,EAAf,IAAe;YAAf,0BAAe;;QACnB,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,EAAE;YAChC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;SAC1B;IACH,CAAC;IAEO,oBAAG,GAAX,UAAY,KAAa,EAAE,KAAY;QACrC,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,GAAG,EAAE;YACpC,IAAI,OAAO,CAAC,KAAK,IAAI,KAAK,IAAI,OAAO,EAAE;gBACrC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;aAClD;iBAAM,IAAI,OAAO,CAAC,IAAI,IAAI,KAAK,IAAI,MAAM,EAAE;gBAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;aACjD;iBAAM,IAAI,OAAO,CAAC,IAAI,IAAI,KAAK,IAAI,MAAM,EAAE;gBAC1C,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;aACjD;iBAAM;gBACL,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;aAChD;YACD,IAAI,MAAM,CAAC,aAAa,EAAE;gBACxB,OAAO,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;gBAClC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;aAChC;SACF;IACH,CAAC;IAEM,aAAM,GAAb;QACE,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IAC9B,CAAC;IAEM,cAAO,GAAd;QACE,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC;IAChC,CAAC;IAlEM,YAAK,GAAG,CAAC,CAAC;IACV,YAAK,GAAG,CAAC,CAAC;IACV,WAAI,GAAG,CAAC,CAAC;IACT,WAAI,GAAG,CAAC,CAAC;IACT,YAAK,GAAG,CAAC,CAAC;IACV,cAAO,GAAG,CAAC,CAAC;IAEZ,YAAK,GAAG,MAAM,CAAC,IAAI,CAAC;IACpB,oBAAa,GAAG,KAAK,CAAC;IA2D/B,aAAC;CAAA;AApEY,wBAAM;;;;;;;;;;AC0MnB,IAAY,mCAKX;AALD,WAAY,mCAAmC;IAC7C,wEAAiC;IACjC,6EAAsC;IACtC,6EAAsC;IACtC,sDAAe;AACjB,CAAC,EALW,mCAAmC,GAAnC,2CAAmC,KAAnC,2CAAmC,QAK9C;AA6EU,gCAAwB,GAAG;IACpC;;;;;OAKG;IACH,aAAa,EAAyB;QACpC,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,WAAW;KAClB;IACD;;;;;;;;OAQG;IACH,eAAe,EAAyB;QACtC,IAAI,EAAE,iBAAiB;QACvB,IAAI,EAAE,WAAW;KAClB;IACD;;;;;;;;OAQG;IACH,aAAa,EAAyB;QACpC,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,MAAM;KACb;IACD;;;;;OAKG;IACH,mBAAmB,EAAyB;QAC1C,IAAI,EAAE,qBAAqB;QAC3B,IAAI,EAAE,MAAM;KACb;IACD;;;;;OAKG;IACH,eAAe,EAAyB;QACtC,IAAI,EAAE,iBAAiB;QACvB,IAAI,EAAE,MAAM;KACb;IACD;;;;;;;;OAQG;IACH,WAAW,EAAyB;QAClC,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,MAAM;KACb;IACD;;;;;OAKG;IACH,eAAe,EAAyB;QACtC,IAAI,EAAE,iBAAiB;QACvB,IAAI,EAAE,YAAY;KACnB;IACD;;;;;OAKG;IACH,cAAc,EAAyB;QACrC,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,YAAY;KACnB;IACD;;;;;OAKG;IACH,kBAAkB,EAAyB;QACzC,IAAI,EAAE,oBAAoB;QAC1B,IAAI,EAAE,YAAY;KACnB;IACD;;;;;;;;OAQG;IACH,eAAe,EAAyB;QACtC,IAAI,EAAE,iBAAiB;QACvB,IAAI,EAAE,YAAY;KACnB;IACD;;;;;OAKG;IACH,wBAAwB,EAAyB;QAC/C,IAAI,EAAE,0BAA0B;QAChC,IAAI,EAAE,YAAY;KACnB;IACD;;;;;OAKG;IACH,kBAAkB,EAAyB;QACzC,IAAI,EAAE,oBAAoB;QAC1B,IAAI,EAAE,YAAY;KACnB;IACD;;;;;;;;OAQG;IACH,WAAW,EAAyB;QAClC,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,UAAU;KACjB;IACD;;;;;;;;OAQG;IACH,aAAa,EAAyB;QACpC,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,UAAU;KACjB;IACD;;;;;;;;;OASG;IACH,iBAAiB,EAAyB;QACxC,IAAI,EAAE,mBAAmB;QACzB,IAAI,EAAE,UAAU;KACjB;IACD;;;;;;;;;OASG;IACH,YAAY,EAAyB;QACnC,IAAI,EAAE,cAAc;QACpB,IAAI,EAAE,UAAU;KACjB;IACD;;;;;;;;OAQG;IACH,kBAAkB,EAAyB;QACzC,IAAI,EAAE,oBAAoB;QAC1B,IAAI,EAAE,SAAS;KAChB;IACD;;;;;;;;OAQG;IACH,mBAAmB,EAAyB;QAC1C,IAAI,EAAE,qBAAqB;QAC3B,IAAI,EAAE,SAAS;KAChB;IACD;;;;;;;;OAQG;IACH,oBAAoB,EAAyB;QAC3C,IAAI,EAAE,sBAAsB;QAC5B,IAAI,EAAE,SAAS;KAChB;IACD;;;;;;;;OAQG;IACH,qBAAqB,EAAyB;QAC5C,IAAI,EAAE,uBAAuB;QAC7B,IAAI,EAAE,SAAS;KAChB;IACD;;;;;;;;OAQG;IACH,gBAAgB,EAAyB;QACvC,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,SAAS;KAChB;IACD;;;;;;;;OAQG;IACH,eAAe,EAAyB;QACtC,IAAI,EAAE,iBAAiB;QACvB,IAAI,EAAE,SAAS;KAChB;IACD;;;;;OAKG;IACH,YAAY,EAAyB;QACnC,IAAI,EAAE,cAAc;QACpB,IAAI,EAAE,SAAS;KAChB;IACD;;;;;;;;OAQG;IACH,aAAa,EAAyB;QACpC,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,OAAO;KACd;IACD;;;;;;;;OAQG;IACH,WAAW,EAAyB;QAClC,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,OAAO;KACd;IACD;;;;;;;;OAQG;IACH,WAAW,EAAyB;QAClC,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,OAAO;KACd;IACD;;;;;;;;OAQG;IACH,gBAAgB,EAAyB;QACvC,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,OAAO;KACd;IACD;;;;;;;;OAQG;IACH,eAAe,EAAyB;QACtC,IAAI,EAAE,iBAAiB;QACvB,IAAI,EAAE,OAAO;KACd;IACD;;;;;;;;OAQG;IACH,WAAW,EAAyB;QAClC,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,OAAO;KACd;IACD;;;;;;;;OAQG;IACH,cAAc,EAAyB;QACrC,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,OAAO;KACd;IACD;;;;;;;;OAQG;IACH,aAAa,EAAyB;QACpC,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,OAAO;KACd;IACD;;;;;;;;OAQG;IACH,YAAY,EAAyB;QACnC,IAAI,EAAE,cAAc;QACpB,IAAI,EAAE,OAAO;KACd;IACD;;;;;;;;OAQG;IACH,cAAc,EAAyB;QACrC,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,OAAO;KACd;IACD,eAAe,EAAyB;QACtC,IAAI,EAAE,iBAAiB;QACvB,IAAI,EAAE,OAAO;KACd;IACD;;;;;OAKG;IACH,aAAa,EAAyB;QACpC,IAAI,EAAE,sBAAsB;QAC5B,IAAI,EAAE,OAAO;KACd;IACD;;;;;OAKG;IACH,aAAa,EAAyB;QACpC,IAAI,EAAE,sBAAsB;QAC5B,IAAI,EAAE,OAAO;KACd;IACD,mBAAmB,EAAyB;QAC1C,IAAI,EAAE,qBAAqB;QAC3B,IAAI,EAAE,eAAe;KACtB;IACD,mBAAmB,EAAyB;QAC1C,IAAI,EAAE,qBAAqB;QAC3B,IAAI,EAAE,eAAe;KACtB;IACD,kBAAkB,EAAyB;QACzC,IAAI,EAAE,oBAAoB;QAC1B,IAAI,EAAE,eAAe;KACtB;IACD,uBAAuB,EAAyB;QAC9C,IAAI,EAAE,yBAAyB;QAC/B,IAAI,EAAE,eAAe;KACtB;IACD,mBAAmB,EAAyB;QAC1C,IAAI,EAAE,qBAAqB;QAC3B,IAAI,EAAE,eAAe;KACtB;IACD;;;;;;;;OAQG;IACH,kBAAkB,EAAyB;QACzC,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,cAAc;KACrB;IACD;;;;;;;;OAQG;IACH,oBAAoB,EAAyB;QAC3C,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,cAAc;KACrB;IACD;;;;;;;;OAQG;IACH,oBAAoB,EAAyB;QAC3C,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,cAAc;KACrB;IACD;;;;;;;;OAQG;IACH,oBAAoB,EAAyB;QAC3C,IAAI,EAAE,sBAAsB;QAC5B,IAAI,EAAE,cAAc;KACrB;IACD;;;;;;;;OAQG;IACH,oBAAoB,EAAyB;QAC3C,IAAI,EAAE,sBAAsB;QAC5B,IAAI,EAAE,cAAc;KACrB;IACD;;;;;OAKG;IACH,SAAS,EAAyB;QAChC,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,QAAQ;KACf;IACD;;;;;OAKG;IACH,eAAe,EAAyB;QACtC,IAAI,EAAE,iBAAiB;QACvB,IAAI,EAAE,QAAQ;KACf;IACD;;;;;OAKG;IACH,UAAU,EAAyB;QACjC,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,QAAQ;KACf;IACD;;;;;OAKG;IACH,aAAa,EAAyB;QACpC,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,WAAW;KAClB;IACD;;;;;OAKG;IACH,cAAc,EAAyB;QACrC,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,WAAW;KAClB;IACD;;;;;OAKG;IACH,uBAAuB,EAAyB;QAC9C,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,cAAc;KACrB;IACD;;;;;OAKG;IACH,wBAAwB,EAAyB;QAC/C,IAAI,EAAE,cAAc;QACpB,IAAI,EAAE,cAAc;KACrB;IACD;;;;;OAKG;IACH,wBAAwB,EAAyB;QAC/C,IAAI,EAAE,cAAc;QACpB,IAAI,EAAE,cAAc;KACrB;IACD;;;;;OAKG;IACH,sBAAsB,EAAyB;QAC7C,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,cAAc;KACrB;IACD;;;;;;;;OAQG;IACH,cAAc,EAAyB;QACrC,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,aAAa;KACpB;IACD;;;;;;;;OAQG;IACH,iBAAiB,EAAyB;QACxC,IAAI,EAAE,mBAAmB;QACzB,IAAI,EAAE,aAAa;KACpB;IACD;;;;;;;;;OASG;IACH,iBAAiB,EAAyB;QACxC,IAAI,EAAE,mBAAmB;QACzB,IAAI,EAAE,aAAa;KACpB;IACD;;;;;OAKG;IACH,cAAc,EAAyB;QACrC,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,aAAa;KACpB;IACD;;;;;OAKG;IACH,uBAAuB,EAAyB;QAC9C,IAAI,EAAE,yBAAyB;QAC/B,IAAI,EAAE,aAAa;KACpB;IACD;;;;;;;;;;;OAWG;IACH,UAAU,EAAyB;QACjC,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,MAAM;KACb;IACD;;;;;;;;;;;OAWG;IACH,UAAU,EAAyB;QACjC,IAAI,EAAE,YAAY;QAClB,IAAI,EAAE,MAAM;KACb;IACD;;;;;;;;;;OAUG;IACH,mBAAmB,EAAyB;QAC1C,IAAI,EAAE,qBAAqB;QAC3B,IAAI,EAAE,eAAe;KACtB;IACD;;;;;;;;OAQG;IACH,WAAW,EAAyB;QAClC,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,gBAAgB;KACvB;IACD;;;;;;;;OAQG;IACH,SAAS,EAAyB;QAChC,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,gBAAgB;KACvB;IACD;;;;;;;;OAQG;IACH,aAAa,EAAyB;QACpC,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,gBAAgB;KACvB;IACD;;;;;OAKG;IACH,cAAc,EAAyB;QACrC,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,gBAAgB;KACvB;IACD;;;;;OAKG;IACH,WAAW,EAAyB;QAClC,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,gBAAgB;KACvB;IACD;;;;;OAKG;IACH,WAAW,EAAyB;QAClC,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,UAAU;KACjB;IACD;;;;;OAKG;IACH,cAAc,EAAyB;QACrC,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,WAAW;KAClB;IACD;;;;;OAKG;IACH,aAAa,EAAyB;QACpC,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,uBAAuB;KAC9B;IACD;;;;;OAKG;IACH,cAAc,EAAyB;QACrC,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,uBAAuB;KAC9B;IACD;;;;;OAKG;IACH,YAAY,EAAyB;QACnC,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,uBAAuB;KAC9B;IACD;;;;;OAKG;IACH,eAAe,EAAyB;QACtC,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,uBAAuB;KAC9B;IACD;;;;;;;;;;;;;OAaG;IACH,UAAU,EAAyB;QACjC,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,QAAQ;KACf;IACD;;;;;OAKG;IACH,aAAa,EAAyB;QACpC,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,MAAM;KACb;IACD;;;;;OAKG;IACH,cAAc,EAAyB;QACrC,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,gBAAgB;KACvB;IACD;;;;;OAKG;IACH,2BAA2B,EAAyB;QAClD,IAAI,EAAE,6BAA6B;QACnC,IAAI,EAAE,gBAAgB;KACvB;IACD;;;;;OAKG;IACH,kBAAkB,EAAyB;QACzC,IAAI,EAAE,oBAAoB;QAC1B,IAAI,EAAE,gBAAgB;KACvB;IACD;;;;;OAKG;IACH,cAAc,EAAyB;QACrC,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,gBAAgB;KACvB;IACD;;;;;OAKG;IACH,0BAA0B,EAAyB;QACjD,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,cAAc;KACrB;IACD;;;;;OAKG;IACH,uBAAuB,EAAyB;QAC9C,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,cAAc;KACrB;IACD;;;;;OAKG;IACH,8BAA8B,EAAyB;QACrD,IAAI,EAAE,oBAAoB;QAC1B,IAAI,EAAE,cAAc;KACrB;IACD;;;;;OAKG;IACH,8BAA8B,EAAyB;QACrD,IAAI,EAAE,oBAAoB;QAC1B,IAAI,EAAE,cAAc;KACrB;IACD;;;;;OAKG;IACH,4BAA4B,EAAyB;QACnD,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,cAAc;KACrB;IACD;;;;;OAKG;IACH,yBAAyB,EAAyB;QAChD,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,cAAc;KACrB;IACD;;;;;;;;;;OAUG;IACH,uBAAuB,EAAyB;QAC9C,IAAI,EAAE,aAAa;QACnB,IAAI,EAAE,cAAc;KACrB;IACD;;;;;;;;;;OAUG;IACH,yBAAyB,EAAyB;QAChD,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,cAAc;KACrB;IACD;;;;;;;;;;OAUG;IACH,oBAAoB,EAAyB;QAC3C,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,cAAc;KACrB;IACD;;;;;OAKG;IACH,mBAAmB,EAAyB;QAC1C,IAAI,EAAE,qBAAqB;QAC3B,IAAI,EAAE,eAAe;KACtB;IACD;;;;;OAKG;IACH,eAAe,EAAyB;QACtC,IAAI,EAAE,uBAAuB;QAC7B,IAAI,EAAE,SAAS;KAChB;IACD;;;;;OAKG;IACH,eAAe,EAAyB;QACtC,IAAI,EAAE,uBAAuB;QAC7B,IAAI,EAAE,SAAS;KAChB;IACD;;;;;OAKG;IACH,cAAc,EAAyB;QACrC,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,aAAa;KACpB;IACD;;;;;OAKG;IACH,iBAAiB,EAAyB;QACxC,IAAI,EAAE,mBAAmB;QACzB,IAAI,EAAE,aAAa;KACpB;IACD;;;;;;;;;;;;;OAaG;IACH,uBAAuB,EAAyB;QAC9C,IAAI,EAAE,yBAAyB;QAC/B,IAAI,EAAE,qBAAqB;KAC5B;IACD;;;;;;;;;;;;;OAaG;IACH,wBAAwB,EAAyB;QAC/C,IAAI,EAAE,0BAA0B;QAChC,IAAI,EAAE,qBAAqB;KAC5B;IACD;;;;;;;;;;;OAWG;IACH,gBAAgB,EAAyB;QACvC,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,cAAc;KACrB;IACD;;;;;;;;;;;OAWG;IACH,mBAAmB,EAAyB;QAC1C,IAAI,EAAE,qBAAqB;QAC3B,IAAI,EAAE,cAAc;KACrB;IACD;;;;;;;;;;;OAWG;IACH,kBAAkB,EAAyB;QACzC,IAAI,EAAE,oBAAoB;QAC1B,IAAI,EAAE,cAAc;KACrB;IACD;;;;;;;;;;;OAWG;IACH,oBAAoB,EAAyB;QAC3C,IAAI,EAAE,sBAAsB;QAC5B,IAAI,EAAE,cAAc;KACrB;IACD;;;;;;;;;;;OAWG;IACH,6BAA6B,EAAyB;QACpD,IAAI,EAAE,+BAA+B;QACrC,IAAI,EAAE,cAAc;KACrB;IACD;;;;;;;;;;;OAWG;IACH,8BAA8B,EAAyB;QACrD,IAAI,EAAE,gCAAgC;QACtC,IAAI,EAAE,cAAc;KACrB;IACD;;;;;;;;;;;OAWG;IACH,sBAAsB,EAAyB;QAC7C,IAAI,EAAE,wBAAwB;QAC9B,IAAI,EAAE,cAAc;KACrB;IACD;;;;;;;;;OASG;IACH,sBAAsB,EAAyB;QAC7C,IAAI,EAAE,wBAAwB;QAC9B,IAAI,EAAE,cAAc;KACrB;IACD;;;;;;;;;OASG;IACH,0BAA0B,EAAyB;QACjD,IAAI,EAAE,4BAA4B;QAClC,IAAI,EAAE,cAAc;KACrB;IACD;;;;;;;;;;;OAWG;IACH,4BAA4B,EAAyB;QACnD,IAAI,EAAE,8BAA8B;QACpC,IAAI,EAAE,yBAAyB;KAChC;IACD;;;;;;;;;;;OAWG;IACH,8BAA8B,EAAyB;QACrD,IAAI,EAAE,gCAAgC;QACtC,IAAI,EAAE,yBAAyB;KAChC;IACD;;;;;;;;;OASG;IACH,gCAAgC,EAAyB;QACvD,IAAI,EAAE,kCAAkC;QACxC,IAAI,EAAE,cAAc;KACrB;IACD;;;;;;;;;OASG;IACH,oCAAoC,EAAyB;QAC3D,IAAI,EAAE,sCAAsC;QAC5C,IAAI,EAAE,cAAc;KACrB;CACF,CAAC;;;;;;;;;;AC72CF;;;;GAIG;AACH;IAAA;IA4HA,CAAC;IA3HC;;;;;;;OAOG;IACW,oBAAQ,GAAG,UAAU,CAAC;IACpC;;;;;;;;;OASG;IACW,yBAAa,GAAG,eAAe,CAAC;IAC9C;;;;;;;;;OASG;IACW,6BAAiB,GAAG,mBAAmB,CAAC;IACtD;;;;;;;OAOG;IACW,uBAAW,GAAG,aAAa,CAAC;IAC1C;;;;;;;OAOG;IACW,gCAAoB,GAAG,sBAAsB,CAAC;IAC5D;;;;;;;OAOG;IACW,wBAAY,GAAG,cAAc,CAAC;IAC5C;;;;;;;OAOG;IACW,4BAAgB,GAAG,kBAAkB,CAAC;IACpD;;;;;;;;;OASG;IACW,gCAAoB,GAAG,sBAAsB,CAAC;IAC5D;;;;;;;OAOG;IACW,sBAAU,GAAG,YAAY,CAAC;IACxC;;;;;;;;;;;OAWG;IACW,6BAAiB,GAAG,mBAAmB,CAAC;IACtD;;;;;;;;;;;OAWG;IACW,iCAAqB,GAAG,uBAAuB,CAAC;IAC9D;;;;;;;OAOG;IACW,qBAAS,GAAG,WAAW,CAAC;IACxB,+BAAmB,GAAG,qBAAqB,CAAC;IAC5D,kBAAC;CAAA;AA5HY,kCAAW;;;;;;;;;;ACxNxB;IAAA;IA6CA,CAAC;IA5Ce,cAAK,GAAG;QACpB,MAAM,EAAE,mBAAO,CAAC,GAAY,CAAC;QAC7B,IAAI,EAAE,mBAAO,CAAC,GAAU,CAAC;QACzB,OAAO,EAAE,mBAAO,CAAC,GAAa,CAAC;QAC/B,yBAAyB,EAAE,mBAAO,CAAC,GAAkC,CAAC;QACtE,OAAO,EAAE,mBAAO,CAAC,GAAc,CAAC;QAChC,SAAS,EAAE,mBAAO,CAAC,GAAgB,CAAC;QAEpC,SAAS,EAAE,mBAAO,CAAC,GAAgB,CAAC;QACpC,UAAU,EAAE,mBAAO,CAAC,GAAiB,CAAC;QACtC,KAAK,EAAE,mBAAO,CAAC,GAAW,CAAC;QAC3B,KAAK,EAAE,mBAAO,CAAC,GAAW,CAAC;QAC3B,MAAM,EAAE,mBAAO,CAAC,GAAY,CAAC;QAC7B,IAAI,EAAE,mBAAO,CAAC,GAAU,CAAC;QACzB,QAAQ,EAAE,mBAAO,CAAC,GAAe,CAAC;QAClC,KAAK,EAAE,mBAAO,CAAC,GAAY,CAAC;QAC5B,IAAI,EAAE,mBAAO,CAAC,GAAU,CAAC;QACzB,SAAS,EAAE,mBAAO,CAAC,GAAe,CAAC;QACnC,UAAU,EAAE,mBAAO,CAAC,GAAgB,CAAC;QACrC,YAAY,EAAE,mBAAO,CAAC,GAAmB,CAAC;QAC1C,YAAY,EAAE,mBAAO,CAAC,GAAmB,CAAC;QAC1C,aAAa,EAAE,mBAAO,CAAC,GAAoB,CAAC;QAC5C,WAAW,EAAE,mBAAO,CAAC,GAAkB,CAAC;QAExC,kBAAkB,EAAE,mBAAO,CAAC,GAA0B,CAAC;QACvD,mBAAmB,EAAE,mBAAO,CAAC,GAA0B,CAAC;QACxD,oBAAoB,EAAE,mBAAO,CAAC,GAA2B,CAAC;QAC1D,cAAc,EAAE,mBAAO,CAAC,GAAqB,CAAC;QAC9C,mBAAmB,EAAE,mBAAO,CAAC,GAA2B,CAAC;QACzD,SAAS,EAAE,mBAAO,CAAC,GAAe,CAAC;QACnC,eAAe,EAAE,mBAAO,CAAC,GAAuB,CAAC;QACjD,cAAc,EAAE,mBAAO,CAAC,GAAsB,CAAC;QAC/C,OAAO,EAAE,mBAAO,CAAC,GAAa,CAAC;QAC/B,KAAK,EAAE,mBAAO,CAAC,GAAW,CAAC;QAC3B,SAAS,EAAE,mBAAO,CAAC,GAAgB,CAAC;QACpC,cAAc,EAAE,mBAAO,CAAC,GAA2B,CAAC;QACpD,SAAS,EAAE,mBAAO,CAAC,GAAgB,CAAC;QACpC,IAAI,EAAE,mBAAO,CAAC,GAAU,CAAC;QACzB,IAAI,EAAE,mBAAO,CAAC,GAAU,CAAC;QACzB,UAAU,EAAE,mBAAO,CAAC,GAAiB,CAAC;QACtC,UAAU,EAAE,mBAAO,CAAC,GAAiB,CAAC;QACtC,WAAW,EAAE,mBAAO,CAAC,GAAkB,CAAC;QACxC,IAAI,EAAE,mBAAO,CAAC,GAAU,CAAC;KAC1B,CAAC;IACJ,eAAC;CAAA;AA7CY,4BAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACFrB,sCAAkD;AAClD,sCAAwC;AAExC,+BAAgC;AAChC,qCAAuC;AAE1B,8BAAsB,GAAG;IACpC,CAAC,EAAE,GAAG;IACN,KAAK,EAAE,OAAO;IACd,CAAC,EAAE,GAAG;IACN,EAAE,EAAE,IAAI;IACR,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,QAAQ;IAChB,EAAE,EAAE,IAAI;IACR,EAAE,EAAE,IAAI;IACR,SAAS,EAAE,WAAW;IACtB,KAAK,EAAE,OAAO;IACd,iBAAiB,EAAE,iBAAiB;IACpC,aAAa,EAAE,cAAc;CAC9B,CAAC;AAYF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH;IAAqC,mCAAK;IA+CxC;;;;OAIG;IACH,yBAAY,OAAoB,EAAE,UAA+B;QAAjE,iBAGC;QAFC,IAAM,MAAM,gBAAQ,eAAe,CAAC,iBAAiB,EAAK,UAAU,CAAE,CAAC;QACvE,0BAAM,OAAO,EAAE,eAAe,CAAC,EAAE,EAAE,MAAM,CAAC,SAAC;;IAC7C,CAAC;IApBM,0BAAU,GAAjB,UAAkB,EAAU,EAAE,OAAuB;QAAvB,wCAAuB;QACnD,OAAO,IAAI,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;IAEM,gCAAgB,GAAvB,UAAwB,EAAU;QAChC,OAAO,IAAI,GAAG,EAAE,GAAG,WAAW,CAAC;IACjC,CAAC;IAEM,mCAAmB,GAA1B,UAA2B,EAAU;QACnC,OAAO,eAAe,CAAC,UAAU,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC;IAC1D,CAAC;IAYD;;;;OAIG;IACI,iDAAuB,GAA9B;QAAA,iBAMC;QALC,OAAO,CAAC,CAAC,CAAC,WAAW,CACnB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,UAAC,KAAK,EAAE,GAAW;YACzC,OAAO,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,aAAK,CAAC,UAAU,CAAC,KAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;QAC5E,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAEM,6BAAG,GAAV,UAAW,SAAiB,EAAE,KAAU,EAAE,OAA0B;QAClE,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QAChC,iBAAM,GAAG,YAAC,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;IAEO,kCAAQ,GAAhB,UAAiB,SAAiB,EAAE,KAAU;QAC5C,IAAI,SAAS,IAAI,eAAe,CAAC,cAAc,CAAC,KAAK,EAAE;YACrD,eAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACvB,eAAM,CAAC,oBAAoB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;SACvC;IACH,CAAC;IA/EM,kBAAE,GAAG,OAAO,CAAC;IAEb,iCAAiB,GAAG;QACzB,CAAC,EAAE,EAAE;QACL,KAAK,EAAE,CAAC;QACR,EAAE,EAAE,EAAE;QACN,CAAC,EAAE,EAAE;QACL,EAAE,EAAE,EAAE;QACN,EAAE,EAAE,EAAE;QACN,IAAI,EAAE,EAAE;QACR,MAAM,EAAE,MAAM;QACd,EAAE,EAAE,EAAE;QACN,SAAS,EAAE,EAAE;QACb,KAAK,EAAE,KAAK;QACZ,eAAe,EAAE,EAAE;QACnB,YAAY,EAAE,EAAE;KACjB,CAAC;IAEK,8BAAc,GAAG;QACtB,CAAC,EAAE,GAAG;QACN,KAAK,EAAE,OAAO;QACd,EAAE,EAAE,IAAI;QACR,CAAC,EAAE,GAAG;QACN,IAAI,EAAE,MAAM;QACZ,MAAM,EAAE,QAAQ;QAChB,EAAE,EAAE,IAAI;QACR,EAAE,EAAE,IAAI;QACR,EAAE,EAAE,IAAI;QACR,SAAS,EAAE,WAAW;QACtB,KAAK,EAAE,OAAO;QACd,eAAe,EAAE,iBAAiB;QAClC,YAAY,EAAE,cAAc;KAC7B,CAAC;IAgDJ,sBAAC;CAAA,CAjFoC,aAAK,GAiFzC;AAjFY,0CAAe;AAmF5B,kBAAyB,KAAY,EAAE,IAAW;IAChD,eAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAErB,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE;QAC5C,iCAAiC;QACjC,OAAO,KAAK,CAAC;KACd;SAAM,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,aAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;QAC9D,iDAAiD;QACjD,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;KAC3B;SAAM,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;QAC9B,2CAA2C;QAC3C,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,OAAO,GAAG,CAAC,CAAC,MAAM,CAAmB,EAAE,eAAe,EAAE,IAAI,EAAE,EAAoB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/F,OAAO,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;KAC1C;SAAM,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;QAC1B,kCAAkC;QAClC,IAAI,MAAI,GAAW,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3B,IAAI,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,OAAO,GAAG,CAAC,CAAC,MAAM,CAAmB,EAAE,eAAe,EAAE,IAAI,EAAE,EAAoB,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/F,eAAM,CAAC,gBAAgB,CAAC,MAAI,CAAC,CAAC;QAC9B,OAAO,KAAK,CAAC,GAAG,CAAC,MAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;KACxC;AACH,CAAC;AAtBD,4BAsBC;;;;;;;;ACvKD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACO;;AAEP;AACA;AACA;AACO;AACP;AACA;AACA;;AAEA;AACO;AACA;;AAEP;AACO;AACP;AACA;AACA;;AAEA;AACO;AACP;;AAEA;AACA;AACO;AACP;AACA;AACA;;AAEA;AACO;AACP;;AAEA;AACO,mBAAmB,eAAe;AAClC;AACP;;AAEA;AACO;;;;;;;;;;;AC1CP,sCAAwC;AAExC,8CAAiE;AACjE,mCAAgC;AAChC,yBAAmC;AAEnC,IAAY,cAKX;AALD,WAAY,cAAc;IACxB,+CAAE;IACF,qDAAK;IACL,mDAAI;IACJ,mDAAI;AACN,CAAC,EALW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QAKzB;AAED;IAkBE;QAhBQ,yBAAoB,GAAG,IAAI,CAAC;QAiBlC,IAAI,CAAC,MAAM,GAAG,IAAI,eAAM,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAEM,oCAAS,GAAhB,UAAiB,KAAsB;QACrC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,sCAAW,GAAlB,UAAmB,OAA0B;QAC3C,IAAI,OAAO,YAAY,WAAW,EAAE;YAClC,IAAI,CAAC,OAAO,GAAG,QAAE,CAAC,OAAO,CAAC,CAAC;SAC5B;aAAM;YACL,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;SACxB;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,oCAAS,GAAhB,UAAiB,KAAa;QAC5B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,8CAAmB,GAA1B;QACE,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,oCAAS,GAAhB,UAAiB,KAAa;QAC5B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,2CAAgB,GAAvB,UAAwB,MAA0B;QAChD,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;QAC1B,IAAI,CAAC,mBAAmB,GAAG,MAAM,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,0CAAe,GAAtB,UAAuB,WAA+B;QACpD,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,kDAAuB,GAA9B,UAA+B,WAA+B;QAC5D,IAAI,CAAC,mBAAmB,GAAG,WAAW,CAAC;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,uDAA4B,GAAnC,UAAoC,MAA0B;QAC5D,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;QAC1B,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,0CAAe,GAAtB,UAAuB,MAA0B;QAC/C,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,+CAAoB,GAA3B,UAA4B,MAA0B;QACpD,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,sDAA2B,GAAlC,UAAmC,MAA0B;QAC3D,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,+CAAoB,GAA3B,UAA4B,MAA0B;QACpD,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,yCAAc,GAArB,UAAsB,MAA0B;QAC9C,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,2CAAgB,GAAvB,UAAwB,MAAqD;QAC3E,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;QAC3B,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,mCAAQ,GAAf,UAAgB,IAAY;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,gCAAK,GAAZ;QACE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,IAAI,CAAC,OAAO,GAAG,QAAE,CAAC,KAAK,CAAC,CAAC;SAC1B;QAED,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACjC,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,8BAA8B,EAAE,CAAC;QACtC,IAAI,CAAC,6BAA6B,EAAE,CAAC;QACrC,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,iDAAiD,EAAE,CAAC;QAEzD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,4EAAiD,GAAzD;QAAA,iBAQC;QAPC,IAAM,gBAAgB,GAAG,iCAAiC,CAAC;QAC3D,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC;QAErD,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,cAAM,eAAE,CAAC,KAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAA3C,CAA2C,CAAC,CAAC;QAClF,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE;YAC3B,QAAE,CAAC,KAAI,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,4CAAiB,GAAzB;QACE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;YACtC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,IAAI,QAAQ,CAAC,CAAC;SAC1D;IACH,CAAC;IAEO,oDAAyB,GAAjC;QACE,IAAI,CAAC,IAAI,CAAC,oBAAoB,EAAE;YAC9B,OAAO;SACR;QAED,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YAC9B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0DAA0D,CAAC,CAAC;YAC9E,OAAO;SACR;QAED,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YAC/C,OAAO;SACR;QAED,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IACtD,CAAC;IAEO,yCAAc,GAAtB;QACE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IAC7C,CAAC;IAEO,6CAAkB,GAA1B;QAAA,iBA8BC;QA7BC,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC5B,IAAI,CAAC,cAAc,EAAE,CAAC;YACtB,IAAI,CAAC,SAAS,CACZ,OAAO,EACP,6BAAa,CAAC,cAAc,CAAC,wBAAQ,CAAC,KAAK,EAAE,UAAC,CAAQ,IAAK,YAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAA3B,CAA2B,CAAC,CACxF,CAAC;YACF,IAAI,CAAC,SAAS,CACZ,SAAS,EACT,6BAAa,CAAC,cAAc,CAAC,wBAAQ,CAAC,QAAQ,EAAE,UAAC,CAAQ;gBACvD,IAAI,CAAC,CAAC,MAAM,YAAY,gBAAgB,EAAE;oBACxC,OAAO;iBACR;gBACD,CAAC,CAAC,cAAc,EAAE,CAAC;YACrB,CAAC,CAAC,CACH,CAAC;YACF,IAAI,CAAC,SAAS,CACZ,OAAO,EACP,6BAAa,CAAC,cAAc,CAAC,wBAAQ,CAAC,QAAQ,EAAE,UAAC,CAAQ;gBACvD,IAAI,CAAC,CAAC,MAAM,YAAY,gBAAgB,EAAE;oBACxC,OAAO;iBACR;gBACD,KAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;YAC9B,CAAC,CAAC,CACH,CAAC;SACH;QAED,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;SAC3C;IACH,CAAC;IAEO,+CAAoB,GAA5B;QACE,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;SACzC;QAED,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;SACrD;IACH,CAAC;IAEO,yDAA8B,GAAtC;QACE,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;SACrD;QACD,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;SAC3C;IACH,CAAC;IAEO,wDAA6B,GAArC;QACE,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;SACrD;QACD,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;SACzC;IACH,CAAC;IAEO,6CAAkB,GAA1B;QAAA,iBAmBC;QAlBC,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,IAAI,CAAC,SAAS,CACZ,OAAO,EACP,6BAAa,CAAC,cAAc,CAAC,wBAAQ,CAAC,QAAQ,EAAE,UAAC,CAAQ,IAAK,YAAI,CAAC,YAAY,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC,CAAC,EAAvC,CAAuC,CAAC,CACvG,CAAC;YACF,IAAI,CAAC,SAAS,CACZ,OAAO,EACP,6BAAa,CAAC,cAAc,CAAC,wBAAQ,CAAC,WAAW,EAAE,UAAC,CAAQ,IAAK,YAAI,CAAC,YAAY,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC,EAA1C,CAA0C,CAAC,CAC7G,CAAC;YACF,IAAI,CAAC,SAAS,CACZ,OAAO,EACP,6BAAa,CAAC,cAAc,CAAC,wBAAQ,CAAC,UAAU,EAAE,UAAC,CAAQ,IAAK,YAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,EAAzC,CAAyC,CAAC,CAC3G,CAAC;YACF,IAAI,CAAC,SAAS,CACZ,OAAO,EACP,6BAAa,CAAC,cAAc,CAAC,wBAAQ,CAAC,UAAU,EAAE,UAAC,CAAQ,IAAK,YAAI,CAAC,YAAY,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC,CAAC,EAAzC,CAAyC,CAAC,CAC3G,CAAC;SACH;IACH,CAAC;IAEO,oCAAS,GAAjB,UAAkB,KAAa,EAAE,MAAgC;QAC/D,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;SACjD;aAAM;YACL,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;SACpC;IACH,CAAC;IACH,uBAAC;AAAD,CAAC;AA5PY,4CAAgB;;;;;;;;;;ACZ7B,0CAAkC;AAElC;IAAA;IA6BA,CAAC;IA5Be,+BAAwB,GAAtC,UAAuC,YAAyB,EAAE,UAAkB;QAClF,IAAM,UAAU,GAAG,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACrD,UAAU,CAAC,YAAY,CAAC,OAAO,EAAE,KAAG,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,UAAY,CAAC,CAAC;IAClF,CAAC;IAEa,oCAA6B,GAA3C,UAA4C,YAAyB,EAAE,aAAqB;QAC1F,IAAM,UAAU,GAAG,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACrD,UAAU,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,CAAC;IAC3F,CAAC;IAEa,+BAAwB,GAAtC,UAAuC,YAAyB,EAAE,UAA2B;QAC3F,IAAM,UAAU,GAAG,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACrD,iBAAI,CAAC,UAAU,EAAE,UAAC,UAAU,EAAE,QAAQ;YACpC,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,UAAU,CAAC;QAC1C,CAAC,CAAC,CAAC;IACL,CAAC;IAEa,oCAA6B,GAA3C,UAA4C,YAAyB,EAAE,eAAmC;QACxG,IAAM,UAAU,GAAG,YAAY,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACrD,iBAAI,CAAC,eAAe,EAAE,UAAC,cAAc,EAAE,YAAY;YACjD,UAAU,CAAC,YAAY,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;IACL,CAAC;IAEc,eAAQ,GAAvB,UAAwB,UAAsB;QAC5C,IAAM,SAAS,GAAG,UAAU,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QACnD,OAAO,SAAS,CAAC,CAAC,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1C,CAAC;IACH,aAAC;AAAD,CAAC;AA7BY,wBAAM;;;;;;;;;;ACInB;;;;;;GAMG;AACH;IAAA;IA+CA,CAAC;IA9CC;;;;;OAKG;IACW,yCAAoB,GAAG,sBAAsB,CAAC;IAC5D;;;;;;;;OAQG;IACW,kDAA6B,GAAG,+BAA+B,CAAC;IAC9E;;;;;;;OAOG;IACW,wCAAmB,GAAG,qBAAqB,CAAC;IAC1D;;;;;;;;;OASG;IACW,wCAAmB,GAAG,qBAAqB,CAAC;IAC1D;;;;;;;OAOG;IACW,yBAAI,GAAG,MAAM,CAAC;IAC9B,2BAAC;CAAA;AA/CY,oDAAoB;;;;;;;;;;;;;;;;;;;;ACdjC,mCAAkC;AAClC,sCAAwC;AACxC,qCAAuC;AACvC,8CAAyD;AACzD,+BAAgC;AAGnB,oBAAY,GAAG;IAC1B,UAAU,EAAE,YAAY;IACxB,UAAU,EAAE,SAAS;IACrB,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,OAAO;IACd,GAAG,EAAE,KAAK;CACX,CAAC;AAqBF;;;;GAIG;AACH;IAA2B,yBAAa;IA0BtC,eAAY,OAAoB,EAAE,EAAU,EAAE,UAAkC;QAAhF,YACE,kBAAM,OAAO,EAAE,EAAE,CAAC,SAMnB;QALC,KAAI,CAAC,cAAc,GAAG,EAAE,CAAC;QAEzB,KAAI,CAAC,iBAAiB,GAAG,aAAK,CAAC,UAAU,CAAC,KAAI,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC;QAC9E,KAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,KAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;;IACtC,CAAC;IAED;;;;;;;;;OASG;IACI,mBAAG,GAAV,UAAW,SAAiB,EAAE,KAAU,EAAE,OAA0B;QAClE,IAAM,KAAK,GAA2B,EAAE,CAAC;QACzC,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACnC,CAAC;IAED;;;;OAIG;IACI,6BAAa,GAApB;QAAA,iBAYC;QAXC,IAAM,UAAU,GAA2B,EAAE,CAAC;QAC9C,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,UAAC,SAAS,EAAE,GAAG;YACrC,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;gBACzB,IAAI,CAAC,aAAK,CAAC,WAAW,CAAC,SAAS,EAAE,KAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,EAAE;oBAC9D,UAAU,CAAC,GAAG,CAAC,GAAG,aAAK,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;iBACnD;aACF;iBAAM,IAAI,SAAS,IAAI,KAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,EAAE;gBACnD,UAAU,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;aAC7B;QACH,CAAC,CAAC,CAAC;QACH,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;;;;;;;;;;;;OAaG;IACI,2BAAW,GAAlB,UAAmB,KAA6B,EAAE,OAA0B;QAA5E,iBAyBC;QAxBC,IAAI,eAAe,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC,CAAC,IAAI,CAAoB,KAAK,EAAE,UAAC,KAAK,EAAE,SAAU;YACjD,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;gBACxC,KAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;aACxC;YACD,KAAK,GAAG,KAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAClD,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,YAAY,EAAE;gBACpC,IAAI,CAAC,KAAI,CAAC,WAAW,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE;oBACvC,OAAO;iBACR;aACF;YACD,IAAI,KAAI,CAAC,uBAAuB,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE;gBAClD,KAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;gBACnC,eAAe,GAAG,IAAI,CAAC;gBACvB,IAAI,OAAO,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;oBACtC,KAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC;iBAC1C;aACF;QACH,CAAC,CAAC,CAAC;QACH,IAAI,eAAe,IAAI,CAAC,OAAO,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YAC3D,IAAI,CAAC,yBAAyB,EAAE,CAAC;YACjC,IAAI,CAAC,QAAQ,EAAE,CAAC;SACjB;IACH,CAAC;IAED;;;;;;;;;OASG;IACI,6BAAa,GAApB,UAAqB,SAAiB,EAAE,KAAU,EAAE,OAA0B;QAC5E,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;YACxC,IAAI,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAC;SACxC;QACD,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;IAC5C,CAAC;IAED;;;;;OAKG;IACI,0BAAU,GAAjB,UAAkB,SAAiB;QACjC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC;IACzD,CAAC;IAED;;;;;;OAMG;IACI,mBAAG,GAAV,UAAW,SAAkB;QAC3B,IAAI,SAAS,IAAI,SAAS,EAAE;YAC1B,OAAO,IAAI,CAAC,UAAU,CAAC;SACxB;aAAM;YACL,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;SACnC;IACH,CAAC;IAED;;;;;;OAMG;IACI,0BAAU,GAAjB,UAAkB,SAAkB;QAClC,IAAI,SAAS,IAAI,SAAS,EAAE;YAC1B,OAAO,IAAI,CAAC,iBAAiB,CAAC;SAC/B;aAAM;YACL,OAAO,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;SAC1C;IACH,CAAC;IAED;;;;OAIG;IACI,qBAAK,GAAZ;QACE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACzC,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;IAED;;;;;;OAMG;IACI,oCAAoB,GAA3B,UAA4B,SAAiB,EAAE,YAAiB;QAC9D,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,GAAG,YAAY,CAAC;QACjD,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,YAAY,CAAC;IAC5C,CAAC;IAED;;;;;;;OAOG;IACI,4BAAY,GAAnB,UAAoB,KAAa;QAC/B,OAAO,IAAI,CAAC,cAAc,GAAG,GAAG,GAAG,KAAK,CAAC;IAC3C,CAAC;IAEO,yCAAyB,GAAjC;QACE,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,+BAA+B,EAAE,CAAC,CAAC;IAC/G,CAAC;IAEO,wCAAwB,GAAhC,UAAiC,IAAY;QAC3C,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5H,CAAC;IAEO,+BAAe,GAAvB,UAAwB,UAAkC;QACxD,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC,CAAC;IACvF,CAAC;IAEO,kCAAkB,GAA1B;QACE,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,0BAA0B,EAAE,CAAC,CAAC;IACzG,CAAC;IAEO,wBAAQ,GAAhB;QACE,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,0BAA0B,EAAE,CAAC,CAAC;IACvG,CAAC;IAEO,8CAA8B,GAAtC,UAAuC,SAAiB;QACtD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;IACrE,CAAC;IAEO,+CAA+B,GAAvC;QACE,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC;IACzC,CAAC;IAEO,0CAA0B,GAAlC;QACE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACzB,CAAC;IAEO,sCAAsB,GAA9B,UAA+B,SAAiB;QAC9C,eAAM,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,EAAE,mBAAiB,SAAS,wBAAqB,CAAC,CAAC;IACnG,CAAC;IAEO,2BAAW,GAAnB,UAAoB,SAAiB,EAAE,KAAU;QAC/C,IAAI,CAAC,aAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,aAAK,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE;YACrF,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE;gBAC1C,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;aAC9C;iBAAM,IAAI,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE;gBAClD,OAAO,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;aAC/C;iBAAM;gBACL,OAAO,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;aAC7C;SACF;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,8BAAc,GAAtB,UAAuB,SAAiB,EAAE,KAAU;QAClD,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE;YACtC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2BAAyB,SAAS,kCAA6B,KAAO,CAAC,CAAC;YAC1F,OAAO,KAAK,CAAC;SACd;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,+BAAe,GAAvB,UAAwB,SAAiB,EAAE,KAAU;QACnD,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,aAAK,CAAC,0BAA0B,CAAC,KAAK,CAAC,KAAK,SAAS,EAAE;YACjF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2BAAyB,SAAS,mCAA8B,KAAO,CAAC,CAAC;YAC3F,OAAO,KAAK,CAAC;SACd;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,6BAAa,GAArB,UAAsB,SAAiB,EAAE,KAAU;QACjD,IAAI,CAAC,aAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,EAAE;YAC/D,IAAM,SAAS,GAAG,OAAO,KAAK,CAAC;YAC/B,IAAM,aAAa,GAAG,OAAO,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC;YAE/D,IAAI,SAAS,KAAK,aAAa,EAAE;gBAC/B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2BAAyB,SAAS,mBAAc,aAAa,iBAAY,SAAW,CAAC,CAAC;gBACxG,OAAO,KAAK,CAAC;aACd;SACF;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,kCAAkB,GAA1B,UAA2B,SAAiB,EAAE,KAAU;QACtD,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE;YAC1C,OAAO,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;SAC5B;aAAM,IAAI,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE;YAClD,IAAI,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;gBACtB,OAAO,KAAK,CAAC;aACd;iBAAM;gBACL,OAAO,aAAK,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC;aAChD;SACF;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,uCAAuB,GAA/B,UAAgC,SAAiB,EAAE,QAAa;QAC9D,IAAI,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC1C,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;YACzE,OAAO,QAAQ,KAAK,QAAQ,CAAC;SAC9B;QACD,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YACvB,OAAO,CAAC,aAAK,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;SAC9C;QACD,IAAI,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE;YACxB,OAAO,CAAC,aAAK,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;SAC/C;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,yBAAS,GAAhB;QACE,OAAO,IAAI,CAAC;IACd,CAAC;IA5SD;;;;;;;;OAQG;IACW,gBAAU,GAAG;QACzB,UAAU,EAAE,YAAY;QACxB,SAAS,EAAE,SAAS;QACpB,MAAM,EAAE,QAAQ;QAChB,KAAK,EAAE,OAAO;QACd,GAAG,EAAE,KAAK;KACX,CAAC;IA8RJ,YAAC;CAAA,CAtT0B,6BAAa,GAsTvC;AAtTY,sBAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvClB,oCAAyC;AACzC,yBAAyB;AACzB,yBAA+B;AAC/B,yBAAkC;AAClC,yBAAiC;AACjC,0CAA8F;AAC9F,mDAAwE;AAExE,+DAAgG;AAChG,uDAAgF;AAChF,gDAAoE;AACpE,qDAAyE;AACzE,4CAOkC;AAClC,gEAAyH;AACzH,sCAA2C;AAC3C,sDAA2E;AAC3E,oDAAuE;AACvE,sCAAsE;AACtE,gDAAuF;AACvF,+CAA2D;AAC3D,mCAAqC;AACrC,0CAAkD;AAClD,qCAA0C;AAC1C,wDAA2G;AAE3G,qDAAuE;AACvE,0CAA2D;AAC3D,8CAAsD;AAEtD,gDAA4D;AAE5D,2DAA8E;AAC9E,8CAAsD;AACtD,uCAAuC;AACvC,oDAAuE;AACvE,kDAA+D;AAE/D,qDAKsD;AACtD,iEAAoF;AACpF,wDAAkE;AAGlE,gDAA8D;AAC9D,gDAAkD;AAsClD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AACH;IAAqC,mCAAa;IAiZhD;;;;;;;;;;OAUG;IACH,yBAAmB,OAAoB,EAAS,OAAiC,EAAS,gBAAiB,EAAS,OAAgB;QAAhB,0CAAgB;QAApI,YACE,kBAAM,OAAO,EAAE,eAAe,CAAC,EAAE,CAAC,SAoCnC;QArCkB,aAAO,GAAP,OAAO,CAAa;QAAS,aAAO,GAAP,OAAO,CAA0B;QAAS,sBAAgB,GAAhB,gBAAgB,CAAC;QAAS,aAAO,GAAP,OAAO,CAAS;QApB7H,wCAAkC,GAAG,KAAK,CAAC;QAuBhD,KAAI,CAAC,OAAO,GAAG,mCAAgB,CAAC,oBAAoB,CAAC,OAAO,EAAE,eAAe,EAAE,OAAO,CAAC,CAAC;QACxF,eAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACvB,eAAM,CAAC,MAAM,CAAC,KAAI,CAAC,OAAO,CAAC,CAAC;QAC5B,KAAI,CAAC,IAAI,GAAG,OAAO,CAAC;QAEpB,KAAI,CAAC,cAAc,EAAE,CAAC;QAEtB,KAAI,CAAC,eAAe,GAAG,IAAI,iCAAe,CAAC,OAAO,CAAC,CAAC;QACpD,KAAI,CAAC,mBAAmB,GAAG,IAAI,yCAAmB,CAAC,OAAO,CAAC,CAAC;QAC5D,KAAI,CAAC,qBAAqB,GAAG,IAAI,6CAAqB,CAAC,OAAO,CAAC,CAAC;QAChE,KAAI,CAAC,cAAc,GAAG,KAAI,CAAC,mBAAmB,EAAE,CAAC;QACjD,KAAI,CAAC,eAAe,GAAG,IAAI,iCAAe,CAAC,OAAO,EAAE,KAAI,CAAC,OAAO,EAAE,KAAI,CAAC,cAAc,EAAE,KAAI,CAAC,CAAC;QAC7F,KAAI,CAAC,sBAAsB,GAAG,IAAI,+CAAsB,CAAC,KAAI,CAAC,CAAC;QAE/D,IAAM,sBAAsB,GAA4B;YACtD,OAAO,EAAE,KAAI,CAAC,OAAO;YACrB,eAAe,EAAE,KAAI,CAAC,eAAe;YACrC,eAAe,EAAE,KAAI,CAAC,eAAe;YACrC,cAAc,EAAE,KAAI,CAAC,cAAc;SACpC,CAAC;QAEF,IAAI,uCAAkB,CAAC,sBAAsB,CAAC,CAAC;QAC/C,KAAI,CAAC,gBAAgB,GAAG,IAAI,mCAAgB,EAAE,CAAC;QAE/C,KAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,KAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAE3C,KAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,KAAI,CAAC,eAAe,CAAC,CAAC;QAEjE,KAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,OAAO,IAAI,OAAO,CAAC;QAE9D,KAAI,CAAC,cAAc,EAAE,CAAC;QACtB,KAAI,CAAC,yBAAyB,EAAE,CAAC;QACjC,KAAI,CAAC,QAAQ,GAAG,IAAI,mBAAQ,CAAC,OAAO,CAAC,CAAC;;IACxC,CAAC;IAED,sBAAW,2CAAc;aAIzB;YACE,IAAI,IAAI,CAAC,2CAA2C,IAAI,IAAI,IAAI,IAAI,CAAC,2CAA2C,IAAI,CAAC,EAAE;gBACrH,OAAO,IAAI,CAAC,2CAA2C,CAAC;aACzD;YACD,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,cAAc,IAAI,IAAI,IAAI,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,cAAc,IAAI,CAAC,EAAE;gBAC3G,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,cAAc,CAAC;aACpD;YACD,kGAAkG;YAClG,gFAAgF;YAChF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yDAAyD,EAAE,IAAI,CAAC,CAAC;YAClF,OAAO,EAAE,CAAC;QACZ,CAAC;aAfD,UAA0B,cAAsB;YAC9C,IAAI,CAAC,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,cAAc,GAAG,cAAc,CAAC;QAC7F,CAAC;;;OAAA;IAeM,6CAAmB,GAA1B;QACE,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAED;;;;;;OAMG;IACI,yCAAe,GAAtB,UAAuB,IAAY,EAAE,SAAwB;QAC3D,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC3C,CAAC;IAED;;;;;OAKG;IACI,yCAAe,GAAtB,UAAuB,IAAY,EAAE,SAAwB;QAC3D,IAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAM,KAAK,GAAG,oBAAO,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAC7C,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;YACd,UAAU,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;SAC7B;IACH,CAAC;IAED;;;OAGG;IACI,qCAAW,GAAlB;QACE,OAAO;YACL,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,eAAe,EAAmB,IAAI;YACtC,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;YAC7C,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;YACjD,cAAc,EAAE,IAAI,CAAC,cAAc;SACpC,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;OAaG;IACI,yCAAe,GAAtB;QACE,IAAI,GAAY,CAAC;QAEjB,IAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;QACtD,IAAI,SAAS,CAAC,OAAO,EAAE;YACrB,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC;SACzB;aAAM;YACL,IAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAA2B,iBAAiB,CAAC,CAAC;YAElF,IAAI,SAAS,IAAI,CAAC,oBAAO,CAAC,SAAS,CAAC,EAAE;gBACpC,IAAM,aAAa,GAAG,kBAAK,CAAC,SAAS,CAAC;qBACnC,GAAG,CAAC,kBAAQ,IAAI,eAAQ,CAAC,UAAU,EAAE,EAArB,CAAqB,CAAC;qBACtC,MAAM,CAAC,UAAC,IAAI,EAAE,OAAO,IAAK,qBAAM,IAAI,EAAK,OAAO,EAAG,EAAzB,CAAyB,EAAE,EAAE,CAAC;qBACxD,KAAK,EAAE,CAAC;gBACX,IAAI,CAAC,oBAAO,CAAC,aAAa,CAAC,EAAE;oBAC3B,GAAG,GAAG,aAAa,CAAC;iBACrB;aACF;SACF;QAED,OAAO,GAAG,CAAC;IACb,CAAC;IASD;;;;OAIG;IACI,uCAAa,GAApB,UAAqB,IAAY;QAC/B,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,EAAE;YACnC,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;SAC9B;QACD,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,kBAAkB,CAAC,EAAE;YACtC,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;SACpC;QACD,OAAO,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IAED;;;OAGG;IACI,gDAAsB,GAA7B,UAA8B,OAAoB;QAAlD,iBAMC;QALC,iBAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,UAAC,UAAU,EAAE,IAAI;YAC7C,UAAU;iBACP,MAAM,CAAC,mBAAS,IAAI,cAAO,IAAI,SAAS,CAAC,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,EAAnE,CAAmE,CAAC;iBACxF,OAAO,CAAC,mBAAS,IAAI,YAAI,CAAC,eAAe,CAAC,IAAI,EAAE,SAAS,CAAC,EAArC,CAAqC,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;IACL,CAAC;IAES,6CAAmB,GAA7B;QACE,IAAM,YAAY,GAAG,6BAAa,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QAChE,IAAI,YAAY,EAAE;YAChB,OAAO,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;SACrF;QACD,OAAO,IAAI,yCAAmB,EAAE,CAAC;IACnC,CAAC;IAEO,6CAAmB,GAA3B,UAA4B,OAAoB,EAAE,OAAe;QAAjE,iBAgBC;QAfC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;YAC/B,IAAI,CAAC,cAAc,GAAG,IAAI,6CAAqB,EAAE,CAAC;YAElD,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,2CAAoB,CAAC,mBAAmB,EAAE;gBAC5D,YAAI,CAAC,eAAe,CAAC,WAAW,cAAM,KAAI,CAAC,eAAe,CAAC,iBAAiB,EAAG;YAA/E,CAA+E,CAChF,CAAC;YACF,OAAO;SACR;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,yBAAyB,EAAE;YAC1C,IAAI,CAAC,cAAc,GAAG,IAAI,6DAA6B,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;YACtH,OAAO;SACR;QAED,IAAI,CAAC,cAAc,GAAG,IAAI,qCAAiB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;IAC5G,CAAC;IAEO,wCAAc,GAAtB;QACE,IAAI,IAAI,CAAC,OAAO,CAAC,2BAA2B,EAAE;YAC5C,IAAI,CAAC,2BAA2B,EAAE,CAAC;SACpC;aAAM;YACL,IAAI,CAAC,8BAA8B,EAAE,CAAC;SACvC;IACH,CAAC;IAEO,6CAAmB,GAA3B;QAAA,iBAcC;QAbC,IAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,aAAK,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QACjF,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,UAAC,CAAC,EAAE,IAAI,IAAK,YAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,EAA1C,CAA0C,CAAC,CAAC;QACxF,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,yBAAW,CAAC,aAAa,EAAE,UAAC,CAAC,EAAE,IAAI,IAAK,YAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAA9B,CAA8B,CAAC,CAAC;QAC5F,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,yBAAW,CAAC,YAAY,EAAE,UAAC,CAAC,EAAE,IAAI,IAAK,YAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAA7B,CAA6B,CAAC,CAAC;QAC1F,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,yBAAW,CAAC,UAAU,EAAE,UAAC,CAAC,EAAE,IAAI,IAAK,YAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAA3B,CAA2B,CAAC,CAAC;QACtF,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,2CAAoB,CAAC,6BAA6B,EAAE,cAAM,YAAI,CAAC,mCAAmC,EAAE,EAA1C,CAA0C,CAAC,CAAC;QAC1H,IAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,aAAK,CAAC,UAAU,CAAC,SAAS,GAAG,iCAAe,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC1H,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,UAAC,CAAC,EAAE,IAA+B,IAAK,YAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAhC,CAAgC,CAAC,CAAC;QAE5G,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC,iCAAe,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QAEjF,IAAM,kBAAkB,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,aAAK,CAAC,UAAU,CAAC,SAAS,GAAG,iCAAe,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;QACpI,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,kBAAkB,EAAE,UAAC,CAAC,EAAE,IAAI,IAAK,YAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAjC,CAAiC,CAAC,CAAC;IAC1F,CAAC;IAEO,wCAAc,GAAtB;QAAA,iBAIC;QAHC,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;YAChC,UAAU,CAAC,cAAM,WAAI,aAAK,CAAC,KAAI,CAAC,OAAO,EAAE,KAAI,CAAC,WAAW,EAAE,CAAC,EAA3C,CAA2C,CAAC,CAAC;SAC/D;IACH,CAAC;IAEO,6CAAmB,GAA3B,UAA4B,OAAoB,EAAE,OAAe,EAAE,eAAgC;QACjG,IAAI,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE;YACxC,IAAI,CAAC,cAAc,GAAG,IAAI,+BAAc,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;SACpE;IACH,CAAC;IAEO,mDAAyB,GAAjC;QACE,IAAI,CAAC,oBAAoB,GAAG,IAAI,2CAAoB,EAAE,CAAC;QACvD,IAAI,CAAC,oBAAoB,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;QACxF,IAAI,CAAC,oBAAoB,CAAC,mBAAmB,CAAC,IAAI,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;QACtF,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QACzE,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAChC,CAAC;IAEO,gDAAsB,GAA9B;QAAA,iBAkBC;QAjBC,IAAI,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,wBAAwB,CAAC,EAAE;YACrD,OAAO;SACR;QAED,mDAEE;YACE,IAAM,YAAY,GAAG,mBAAO,CAAC,EAAyC,CAAC,CAAC;YACxE,IAAM,oBAAoB,GAAG,YAAY,CAAC,gBAAuE,CAAC;YAClH,IAAM,kBAAkB,GAAG,QAAE,CAAC,KAAK,CAAC,CAAC;YACrC,QAAE,CAAC,KAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;YAChD,IAAM,OAAO,GAAG,KAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC;YAC7E,IAAI,oBAAoB,CAAC,kBAAkB,CAAC,EAAE,EAAE,OAAO,EAAE,KAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAC/E,CAAC,yCACD,IAAI,CAEL,CAAC;IACJ,CAAC;IAEO,+CAAqB,GAA7B,UAA8B,IAA+B;QAA7D,iBAeC;QAdC,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;YAC1E,mDAEE;gBACE,IAAM,YAAY,GAAG,mBAAO,CAAC,GAA6C,CAAC,CAAC;gBAC5E,IAAM,sBAAsB,GAAG,YAAY,CAAC,kBAA6E,CAAC;gBAC1H,IAAM,yBAAyB,GAAG,QAAE,CAAC,KAAK,CAAC,CAAC;gBAC5C,QAAE,CAAC,KAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,yBAAyB,CAAC,EAAE,CAAC,CAAC;gBACvD,KAAI,CAAC,kBAAkB,GAAG,IAAI,sBAAsB,CAAC,yBAAyB,CAAC,EAAE,EAAE,KAAI,CAAC,WAAW,EAAE,CAAC,CAAC;YACzG,CAAC,yCACD,IAAI,CAEL,CAAC;SACH;IACH,CAAC;IAEO,yDAA+B,GAAvC,UAAwC,IAAyB;QAC/D,IAAM,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,iCAAe,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QAChF,IAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,iCAAe,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QAE9E,IAAI,EAAE,GAAG,WAAW,CAAC;QACrB,IAAI,CAAC,GAAG,UAAU,CAAC;QAEnB,mCAAmC;QACnC,IAAI,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,SAAS,EAAE;YACjC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACtC,IAAI,EAAE,IAAI,IAAI,CAAC,EAAE,EAAE;gBACjB,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,iCAAe,CAAC,iBAAiB,CAAC,CAAC,CAAC;gBACvD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,iCAAe,CAAC,iBAAiB,CAAC,IAAI,CAAC;gBAChE,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;aACd;SACF;QAED,IAAI,IAAI,IAAI,IAAI,CAAC,CAAC,KAAK,SAAS,EAAE;YAChC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;YACnC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE;gBACf,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,iCAAe,CAAC,iBAAiB,CAAC,IAAI,CAAC;gBAChE,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;aACZ;SACF;QAED,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE;YACnC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;SACxC;QAED,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,EAAE;YACxC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SACpD;QAED,sFAAsF;QACtF,kEAAkE;QAClE,IAAI,IAAI,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,IAAI,YAAY,yBAAyB,CAAC,EAAE;YACnE,IAAI,CAAC,sBAAsB,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;SACzD;IACH,CAAC;IAEO,uCAAa,GAArB,UAAsB,UAAkB;QACtC,IAAM,WAAW,GAAG,6BAAa,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QAC9D,IAAI,WAAW,EAAE;YACf,IAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAM,WAAW,CAAC,EAAE,CAAC,CAAC;YAC1D,mCAAmC;YACnC,IACE,UAAU,IAAI,iCAAe,CAAC,iBAAiB,CAAC,EAAE;gBAClD,gBAAG,CAAC,SAAS,EAAE,UAAC,QAAa,IAAK,QAAC,QAAQ,CAAC,QAAQ,IAAI,UAAU,IAAI,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAvD,CAAuD,CAAC,EAC1F;gBACA,OAAO,UAAU,CAAC;aACnB;YACD,4BAA4B;YAC5B,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;gBACxB,OAAO,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;aAChC;SACF;QACD,OAAO,iCAAe,CAAC,iBAAiB,CAAC,EAAE,CAAC;IAC9C,CAAC;IAEO,kCAAQ,GAAhB,UAAiB,UAAkB,EAAE,KAAa;QAChD,IAAM,MAAM,GAAG,6BAAa,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QACpD,IAAM,WAAW,GAAG,6BAAa,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QAC9D,IAAI,MAAM,EAAE;YACV,IAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAM,MAAM,CAAC,EAAE,CAAC,CAAC;YAChD,IAAI,WAAW,EAAE;gBACf,oBAAoB;gBACpB,IAAI,UAAU,IAAI,iCAAe,CAAC,iBAAiB,CAAC,EAAE,EAAE;oBACtD,IAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAM,WAAW,CAAC,EAAE,CAAC,CAAC;oBAC1D,IAAM,UAAQ,GAAG,iBAAI,CAAC,SAAS,EAAE,UAAC,QAAa,IAAK,iBAAU,IAAI,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAjC,CAAiC,CAAC,CAAC;oBACvF,yCAAyC;oBACzC,IACE,KAAK,IAAI,iCAAe,CAAC,iBAAiB,CAAC,CAAC;wBAC5C,gBAAG,CAAC,IAAI,EAAE,UAAC,GAAQ,IAAK,YAAK,IAAI,GAAG,CAAC,OAAO,CAAC,EAAE,IAAI,UAAQ,CAAC,2BAA2B,CAAC,GAAG,CAAC,OAAO,CAAC,EAA5E,CAA4E,CAAC,EACrG;wBACA,OAAO,KAAK,CAAC;qBACd;oBACD,uCAAuC;oBACvC,IAAM,GAAG,GAAG,iBAAI,CAAC,IAAI,EAAE,UAAC,GAAQ,IAAK,iBAAQ,CAAC,2BAA2B,CAAC,GAAG,CAAC,OAAO,CAAC,EAAjD,CAAiD,CAAC,CAAC;oBACxF,IAAI,GAAG,IAAI,IAAI,EAAE;wBACf,OAAO,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;qBACvB;oBACD,OAAO,iCAAe,CAAC,iBAAiB,CAAC,CAAC,CAAC;iBAC5C;aACF;YACD,8BAA8B;YAC9B,IAAI,KAAK,IAAI,iCAAe,CAAC,iBAAiB,CAAC,CAAC,IAAI,gBAAG,CAAC,IAAI,EAAE,UAAC,GAAQ,IAAK,YAAK,IAAI,GAAG,CAAC,OAAO,CAAC,EAAE,EAAvB,CAAuB,CAAC,EAAE;gBACpG,OAAO,KAAK,CAAC;aACd;YACD,uBAAuB;YACvB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;gBACnB,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;aAC3B;SACF;QACD,OAAO,iCAAe,CAAC,iBAAiB,CAAC,CAAC,CAAC;IAC7C,CAAC;IAEO,iCAAO,GAAf,UAAgB,KAAa,EAAE,MAAc;QAC3C,IAAM,OAAO,GAAG,6BAAa,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QACtD,IAAI,OAAO,EAAE;YACX,IAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAM,OAAO,CAAC,EAAE,CAAC,CAAC;YAClD,wBAAwB;YACxB,IAAM,MAAM,GAAG,6BAAa,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YACpD,IAAI,MAAM,EAAE;gBACV,IAAI,KAAK,IAAI,iCAAe,CAAC,iBAAiB,CAAC,CAAC,EAAE;oBAChD,IAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAM,MAAM,CAAC,EAAE,CAAC,CAAC;oBAChD,IAAM,KAAG,GAAG,iBAAI,CAAC,IAAI,EAAE,UAAC,GAAQ,IAAK,YAAK,IAAI,GAAG,CAAC,OAAO,CAAC,EAAE,EAAvB,CAAuB,CAAC,CAAC;oBAC9D,IAAM,YAAY,GAAG,KAAG,CAAC,OAAO,CAAC,IAAI,CAAC;oBAEtC,qCAAqC;oBACrC,IACE,MAAM,IAAI,iCAAe,CAAC,iBAAiB,CAAC,IAAI;wBAChD,gBAAG,CAAC,KAAK,EAAE,UAAC,IAAS,IAAK,YAAG,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAA9D,CAA8D,CAAC,EACzF;wBACA,OAAO,MAAM,CAAC;qBACf;yBAAM,IAAI,YAAY,IAAI,IAAI,EAAE;wBAC/B,8CAA8C;wBAC9C,OAAO,YAAY,CAAC,QAAQ,EAAE,CAAC;qBAChC;oBACD,mCAAmC;oBACnC,IAAM,IAAI,GAAG,iBAAI,CAAC,KAAK,EAAE,UAAC,IAAS,IAAK,YAAG,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAxC,CAAwC,CAAC,CAAC;oBAClF,IAAI,IAAI,IAAI,IAAI,EAAE;wBAChB,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;qBAChD;oBACD,OAAO,iCAAe,CAAC,iBAAiB,CAAC,IAAI,CAAC;iBAC/C;aACF;YACD,+BAA+B;YAC/B,IAAI,MAAM,IAAI,iCAAe,CAAC,iBAAiB,CAAC,IAAI,IAAI,gBAAG,CAAC,KAAK,EAAE,UAAC,IAAS,IAAK,WAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAlB,CAAkB,CAAC,EAAE;gBACrG,OAAO,MAAM,CAAC;aACf;YACD,wBAAwB;YACxB,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;gBACpB,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;aACpD;SACF;QACD,OAAO,iCAAe,CAAC,iBAAiB,CAAC,IAAI,CAAC;IAChD,CAAC;IAEO,sCAAY,GAApB,UAAqB,WAAmB;QACtC,IAAM,YAAY,GAAG,6BAAa,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QAChE,IAAI,YAAY,EAAE;YAChB,IAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAM,YAAY,CAAC,EAAE,CAAC,CAAC;YAC5D,IAAI,gBAAG,CAAC,UAAU,EAAE,UAAC,SAAc,IAAK,gBAAS,CAAC,SAAS,EAAE,IAAI,WAAW,EAApC,CAAoC,CAAC,EAAE;gBAC7E,OAAO,WAAW,CAAC;aACpB;SACF;QACD,OAAO,iCAAe,CAAC,iBAAiB,CAAC,SAAS,CAAC;IACrD,CAAC;IAEO,gDAAsB,GAA9B,UAA+B,IAA+B;QAC5D,IAAM,YAAY,GAAG,6BAAa,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QAChE,IAAI,YAAY,EAAE;YAChB,IAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAM,YAAY,CAAC,EAAE,CAAC,CAAC;YAC5D,IAAI,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE;gBACpB,IAAM,mBAAmB,GAAG,sBAAS,CAAC,UAAU,EAAE,mBAAS,IAAI,gBAAS,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,KAAK,EAAnC,CAAmC,CAAC,CAAC;gBACpG,IAAI,mBAAmB,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE;oBACtC,kBAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBACrC,iBAAI,CAAC,iBAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,EAAE,mBAAS,IAAI,gBAAS,CAAC,KAAK,EAAE,EAAjB,CAAiB,CAAC,CAAC;iBACpE;gBACD,iBAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,mBAAS,IAAI,gBAAS,CAAC,KAAK,EAAE,EAAjB,CAAiB,CAAC,CAAC;aAC9D;iBAAM;gBACL,iBAAI,CAAC,UAAU,EAAE,mBAAS;oBACxB,SAAS,CAAC,KAAK,EAAE,CAAC;gBACpB,CAAC,CAAC,CAAC;aACJ;SACF;IACH,CAAC;IAEO,6CAAmB,GAA3B,UAA4B,IAA6B;QACvD,IAAI,IAAI,CAAC,OAAO,CAAC,wBAAwB,EAAE;YACzC,IAAI,CAAC,YAAY,CAAC,wBAAwB,GAAG,IAAI,CAAC;SACnD;QAED,IAAI,CAAC,aAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YACnD,IAAI,CAAC,YAAY,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;SACpD;QAED,IAAI,CAAC,aAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;YACrD,IAAI,CAAC,YAAY,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;SACxD;QAED,IAAI,CAAC,aAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE;YACzD,IAAI,CAAC,YAAY,CAAC,eAAe,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC;SACjE;QAED,IAAI,CAAC,aAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;YACxD,IAAI,CAAC,YAAY,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;SAC9D;QAED,IAAI,aAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;YACnD,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;SACnE;QAED,IAAI,aAAK,CAAC,gBAAgB,CAAS,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE;YAC5D,IAAI,CAAC,YAAY,CAAC,WAAW,GAAW,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;SAClE;QAED,IAAI,aAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YACjD,IAAI,CAAC,YAAY,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;SACpD;QAED,IAAI,CAAC,YAAY,CAAC,yBAAyB,GAAG,IAAI,CAAC,OAAO,CAAC,yBAAyB,CAAC;QAErF,IAAI,CAAC,YAAY,CAAC,wBAAwB,GAAG,IAAI,CAAC,OAAO,CAAC,wBAAwB,CAAC;QAEnF,IAAI,CAAC,YAAY,CAAC,2BAA2B,GAAG,IAAI,CAAC,OAAO,CAAC,2BAA2B,CAAC;QAEzF,IAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC;QACpD,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,CAAC,OAAO,EAAE;YACxC,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,iCAAe,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;gBAClE,IAAI,CAAC,YAAY,CAAC,UAAU,GAAG,CAAC,CAAC;gBACjC,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,IAAI,CAAC;gBACrC,IAAI,CAAC,YAAY,CAAC,eAAe,GAAG,CAAC,mBAAmB,CAAC,CAAC;gBAC1D,IAAI,CAAC,YAAY,CAAC,eAAe,GAAG,IAAI,CAAC;aAC1C;SACF;IACH,CAAC;IAEO,4CAAkB,GAA1B,UAA2B,IAA4B;QACrD,IAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;QACnD,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;QACvD,IAAI,CAAC,oDAAoD,CAAC,IAAI,CAAC,CAAC;QAChE,IAAM,aAAa,GAAG,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACrE,IAAI,aAAa,EAAE;YACjB,QAAE,CAAC,aAAa,CAAC,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;SACpD;IACH,CAAC;IAEO,8EAAoD,GAA5D,UAA6D,IAA4B;QACvF,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACzC,OAAO;SACR;QAED,IAAM,wBAAwB,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;QAC5D,IAAM,+BAA+B,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;QACpE,IAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,KAAK,+BAA+B,CAAC;QACxH,IAAM,oBAAoB,GAAG,CAAC,kBAAkB,IAAI,IAAI,CAAC,OAAO,CAAC,kBAAkB,GAAG,+BAA+B,CAAC;QAEtH,IAAI,wBAAwB,IAAI,+BAA+B,IAAI,oBAAoB,EAAE;YACvF,IAAI,CAAC,kCAAkC,GAAG,IAAI,CAAC;YAC/C,IAAI,CAAC,2CAA2C,GAAG,+BAA+B,CAAC;SACpF;aAAM;YACL,IAAI,CAAC,kCAAkC,GAAG,KAAK,CAAC;YAChD,IAAI,CAAC,2CAA2C,GAAG,IAAI,CAAC;SACzD;IACH,CAAC;IAEO,0CAAgB,GAAxB,UAAyB,IAA0B;QACjD,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,CAAC;QAC5C,IAAM,aAAa,GAAG,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACrE,IAAI,aAAa,EAAE;YACjB,QAAE,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC;SACjD;IACH,CAAC;IAEO,6DAAmC,GAA3C;QAAA,iBAeC;QAdC,iBAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,oBAAU;YACtC,UAAU,CAAC,OAAO,CAAC,mBAAS;gBAC1B,IAAI,iEAA+B,CAAC,sBAAsB,CAAC,SAAS,CAAC,EAAE;oBACrE,iEAA+B,CAAC,8BAA8B,CAAC,KAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;iBACzF;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE;YAChC,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,+CAA+C,EAC/C,IAAI,CAAC,gBAAgB,EACrB,kEAAkE,CACnE,CAAC;SACH;IACH,CAAC;IAED,sBAAY,6CAAgB;aAA5B;YACE,IAAM,SAAS,GAAG,EAAE,CAAC;YACrB,IAAM,MAAM,GAAG,iCAAe,CAAC,+BAA+B,CAAC,IAAI,CAAC,CAAC;YAErE,MAAM,CAAC,OAAO,CAAC,eAAK;gBAClB,MAAM,CAAC,OAAO,CAAC,aAAG;oBAChB,IAAI,KAAK,IAAI,GAAG,EAAE;wBAChB,OAAO;qBACR;oBACD,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,KAAK,GAAG,CAAC,OAAO,CAAC,EAAE,EAAE;wBACvC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;wBACtB,OAAO;qBACR;gBACH,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YACH,OAAO,SAAS,CAAC;QACnB,CAAC;;;OAAA;IAEO,4CAAkB,GAA1B,UAA2B,QAAgB,EAAE,MAAa;QAA1D,iBAwBC;QAxB4C,sCAAa;QACxD,IAAM,YAAY,GAAG,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAClE,IAAM,cAAc,GAAG,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACtE,IAAM,aAAa,GAAG,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACrE,IAAM,YAAY,GAAG,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,6BAA6B,CAAC,CAAC;QAC7E,IAAM,qBAAqB,GAAG,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QAE1F,IAAI,YAAY,EAAE;YAChB,QAAE,CAAC,YAAY,CAAC,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,uBAAuB,EAAE,CAAC,CAAC;SACnG;QACD,IAAI,cAAc,EAAE;YAClB,QAAE,CAAC,cAAc,CAAC,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,uBAAuB,EAAE,CAAC,CAAC;SACrG;QACD,IAAI,aAAa,EAAE;YACjB,QAAE,CAAC,aAAa,CAAC,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,uBAAuB,EAAE,CAAC,CAAC;SACpG;QACD,IAAI,qBAAqB,EAAE;YACzB,QAAE,CAAC,qBAAqB,CAAC,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;SACzD;QACD,IAAI,YAAY,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3C,iBAAI,CAAC,YAAY,EAAE,qBAAW;gBAC5B,QAAE,CAAC,WAAW,CAAC,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,KAAI,CAAC,eAAe,CAAC,uBAAuB,EAAE,CAAC,CAAC;YACnG,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;IAEO,qDAA2B,GAAnC;QACE,IAAI,qDAAyB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,6BAA6B,EAAE,CAAC,mBAAmB,EAAE,CAAC;IACpG,CAAC;IAEO,wDAA8B,GAAtC;QAAA,iBAoCC;QAnCC,IAAM,WAAW,GAAG,IAAI,qDAAyB,CAAC,IAAI,CAAC,OAAO,CAAC;aAC5D,4BAA4B,CAAC,yBAAW,CAAC,QAAQ,CAAC;aAClD,6BAA6B,EAAE;aAC/B,qBAAqB,EAAE;aACvB,wBAAwB,EAAE;aAC1B,4BAA4B,EAAE,CAAC;QAElC,QAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,2CAAoB,CAAC,mBAAmB,EAAE;YACzD,WAAW,CAAC,sBAAsB,EAAE,CAAC;YACrC,IAAI,KAAI,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE;gBACvC,WAAW,CAAC,4BAA4B,EAAE,CAAC;aAC5C;QACH,CAAC,CAAC,CAAC;QAEH,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,yBAAW,CAAC,iBAAiB,EAAE,UAAC,CAAC,EAAE,IAAiC;YACtF,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,uBAAuB,EAAE,EAAE;gBAChD,IAAM,SAAS,GAAG,KAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;gBACxD,IAAI,aAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE;oBACrC,KAAI,CAAC,eAAe,CAAC,GAAG,CAAC,wCAAsB,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;oBAC9D,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;iBAC7C;qBAAM;oBACL,KAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yCAAyC,EAAE,0CAA0C,EAAE,KAAI,EAAE,KAAI,CAAC,OAAO,CAAC,CAAC;oBAC5H,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;oBACnB,KAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;oBAE7B,IAAI,qDAAyB,CAAC,KAAI,CAAC,OAAO,CAAC;yBACxC,4BAA4B,CAAC,yBAAW,CAAC,QAAQ,CAAC;yBAClD,6BAA6B,EAAE;yBAC/B,sBAAsB,EAAE;yBACxB,wBAAwB,EAAE;yBAC1B,4BAA4B,EAAE;yBAC9B,4BAA4B,EAAE,CAAC;iBACnC;aACF;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAthCM,kBAAE,GAAG,iBAAiB,CAAC;IAE9B;;;OAGG;IACI,uBAAO,GAA4B;QACxC;;;;;;;;;;;;WAYG;QACH,aAAa,EAAE,mCAAgB,CAAC,kBAAkB,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;QAE3E;;;;;;;;;;;;;;;;;;WAkBG;QACH,6BAA6B,EAAE,mCAAgB,CAAC,kBAAkB,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;QAE1F;;;;;;WAMG;QACH,yBAAyB,EAAE,mCAAgB,CAAC,kBAAkB,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;QAEvF;;;;;;;;;;WAUG;QACH,cAAc,EAAE,mCAAgB,CAAC,iBAAiB,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;QAEhF;;;;;;;;WAQG;QACH,aAAa,EAAE,mCAAgB,CAAC,iBAAiB,CAAC,EAAE,YAAY,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;QAEhF;;;;;;;;;;;;;;WAcG;QACH,UAAU,EAAE,mCAAgB,CAAC,0BAA0B,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;QAE7E;;;;;;;;;;;;;;WAcG;QACH,WAAW,EAAE,mCAAgB,CAAC,gBAAgB,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;QAEpE;;;;;;;;;;;;;;;;WAgBG;QACH,mBAAmB,EAAE,mCAAgB,CAAC,kBAAkB,CAAC;YACvD,UAAU,EAAE,iHAAiH;SAC9H,CAAC;QAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;WA0CG;QACH,qBAAqB,EAAE,mCAAgB,CAAC,2BAA2B,CAAC;YAClE,UAAU,EAAE,iHAAiH;SAC9H,CAAC;QAEF;;;;WAIG;QACH,gBAAgB,EAAE,mCAAgB,CAAC,kBAAkB,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;QAC7E;;;;;;;;;;;;;;WAcG;QACH,2BAA2B,EAAE,mCAAgB,CAAC,kBAAkB,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;QACxF,QAAQ,EAAE,mCAAgB,CAAC,iBAAiB,CAC1C,kBAAQ,IAAI,QAAC,QAAQ,IAAI,IAAI,IAAI,QAAQ,IAAI,+BAAc,CAAC,SAAS,CAAC,CAAC,CAAC,+BAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAtG,CAAsG,EAClH,EAAE,eAAe,EAAE,cAAM,sCAAc,CAAC,SAAS,CAAC,SAAS,CAAC,EAAnC,CAAmC,EAAE,CAC/D;QAED;;;;;;;;;WASG;QACH,QAAQ,EAAE,mCAAgB,CAAC,iBAAiB,CAAC,EAAE,eAAe,EAAE,cAAM,WAAI,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,EAAvB,CAAuB,EAAE,CAAC;QAChG;;;;;;;;WAQG;QACH,eAAe,EAAE,mCAAgB,CAAC,kBAAkB,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;QAE5E;;;;;;;;;;;WAWG;QACH,yBAAyB,EAAE,mCAAgB,CAAC,kBAAkB,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;QAEvF;;;;;;;;WAQG;QACH,wBAAwB,EAAE,mCAAgB,CAAC,kBAAkB,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;QAEtF;;;;;;;;;;;;WAYG;QACH,QAAQ,EAAE,mCAAgB,CAAC,iBAAiB,EAAE;QAE9C;;;;;;;;;;;;;;;;;;;WAmBG;QACH,UAAU,EAAE,mCAAgB,CAAC,iBAAiB,EAAE;QAChD;;;;WAIG;QACH,aAAa,EAAE,mCAAgB,CAAC,iBAAiB,EAAE;QACnD;;;;;;;;WAQG;QACH,0BAA0B,EAAE,mCAAgB,CAAC,iBAAiB,CAAC;YAC7D,YAAY,EAAE,0CAAmB;YACjC,MAAM,EAAE,+BAA+B;SACxC,CAAC;QACF;;;;;;;;WAQG;QACH,yBAAyB,EAAE,mCAAgB,CAAC,iBAAiB,CAAC;YAC5D,YAAY,EAAE,yCAAkB;YAChC,MAAM,EAAE,+BAA+B;SACxC,CAAC;QACF;;;;;;;;;WASG;QACH,cAAc,EAAE,mCAAgB,CAAC,iBAAiB,CAChD,eAAK;YACH,oFAAoF;YACpF,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,OAAO,EAAE;gBACpF,OAAO,KAAK,CAAC;aACd;iBAAM;gBACL,OAAO,CAAC,IAAI,CAAI,KAAK,2EAAwE,CAAC,CAAC;gBAC/F,OAAO,MAAM,CAAC;aACf;QACH,CAAC,EACD;YACE,YAAY,EAAE,MAAM;SACrB,CACF;QACD;;;;;WAKG;QACH,uBAAuB,EAAE,mCAAgB,CAAC,kBAAkB,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;QACrF;;;;;;;;;;;;;;;;;;;;WAoBG;QACH,cAAc,EAAE,mCAAgB,CAAC,mBAAmB,CAAC,EAAE,eAAe,EAAE,iBAAO,IAAI,cAAO,CAAC,aAAa,CAAC,IAAI,EAA1B,CAA0B,EAAE,CAAC;KACjH,CAAC;IAEY,0CAA0B,GAAG,8BAA8B,CAAC;IAgqB5E,sBAAC;CAAA,CAxhCoC,6BAAa,GAwhCjD;AAxhCY,0CAAe;AA8hC5B;IAA+C,6CAAe;IAO5D,mCACS,OAAoB,EACpB,OAA2C,EAC3C,gBAAiB,EACjB,OAAgB;QAAhB,0CAAgB;QAJzB,YAME,kBAAM,OAAO,EAAE,mCAAgB,CAAC,oBAAoB,CAAC,OAAO,EAAE,yBAAyB,EAAE,OAAO,CAAC,EAAE,gBAAgB,EAAE,OAAO,CAAC,SAE9H;QAPQ,aAAO,GAAP,OAAO,CAAa;QACpB,aAAO,GAAP,OAAO,CAAoC;QAC3C,sBAAgB,GAAhB,gBAAgB,CAAC;QACjB,aAAO,GAAP,OAAO,CAAS;QAGvB,QAAE,CAAC,KAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,yBAAW,CAAC,QAAQ,EAAE,UAAC,CAAQ,EAAE,IAAwB,IAAK,YAAI,CAAC,cAAc,CAAC,CAAC,EAAE,IAAI,CAAC,EAA5B,CAA4B,CAAC,CAAC;;IAC/G,CAAC;IAEM,kDAAc,GAArB,UAAsB,CAAQ,EAAE,IAAwB;QACtD,IAAI,IAAI,CAAC,iCAAiC,KAAK,KAAK,EAAE;YACpD,OAAO;SACR;QAED,IAAM,0BAA0B,GAA6B;YAC3D,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa;YACzC,MAAM,EAAE,KAAK;SACd,CAAC;QAEF,QAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,iEAA+B,CAAC,cAAc,EAAE,0BAA0B,CAAC,CAAC;QAElG,IAAI,0BAA0B,CAAC,MAAM,EAAE;YACrC,OAAO;SACR;QAED,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QAEnB,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;YAC5D,IAAI,CAAC,UAAU,CAAC,0BAA0B,CAAC,aAAa,CAAC,CAAC;SAC3D;IACH,CAAC;IAEa,8CAAU,GAAxB,UAAyB,UAAkB;;;;;;wBACnC,eAAe,GAAG,IAAI,CAAC,iBAAiB,CAAC;wBACzB,qBAAM,IAAI,CAAC,eAAe,CAAC,uBAAuB,EAAE;;wBAApE,aAAa,GAAG,SAAoD;wBACpE,cAAc,GAAG,aAAa,IAAI,aAAa,CAAC,cAAc,CAAC;wBAErE,IAAI,CAAC,cAAc,EAAE;4BACnB,sBAAO,IAAI,CAAC,oBAAoB,CAAC,UAAU,EAAE,eAAe,CAAC,EAAC;yBAC/D;wBAED,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;;;;;KACpC;IAEM,iDAAa,GAApB,UAAqB,GAAW;QAC9B,IAAI,CAAC,cAAc,CAAC,cAAc,CAChC,kDAAwB,CAAC,eAAe,EACxC;YACE,YAAY,EAAE,GAAG;YACjB,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,iCAAe,CAAC,cAAc,CAAC,CAAC,CAAC;SAClE,EACD,IAAI,CAAC,OAAO,CACb,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACpC,CAAC;IAEM,wDAAoB,GAA3B,UAA4B,UAAkB,EAAE,cAAuB;QAAvE,iBAcC;QAbC,IAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,wEAAwE;QAE/F,IAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,sDAAsD;QAC9I,IAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QAC/C,IAAM,SAAS,GAAG,cAAc,IAAI,IAAI,CAAC,iBAAiB,CAAC;QAE3D,8GAA8G;QAC9G,+BAA+B;QAC/B,UAAU,CAAC;YACT,KAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,GAAM,IAAI,CAAC,QAAQ,UAAK,IAAI,CAAC,IAAI,GAAG,QAAQ,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,GAAG,SAAW,CAAC;QAC5G,CAAC,EAAE,CAAC,CAAC,CAAC;IACR,CAAC;IAED,sBAAY,wDAAiB;aAA7B;YACE,IAAM,MAAM,gBACP,IAAI,CAAC,6BAA6B,EAClC,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,mBAAmB,CAC5B,CAAC;YAEF,OAAO,qBAAS,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QACxC,CAAC;;;OAAA;IAED,sBAAY,oEAA6B;aAAzC;YACE,IAAM,wBAAwB,GAAG,IAAI,CAAC,cAAc,YAAY,6DAA6B,CAAC;YAC9F,OAAO,wBAAwB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE,CAAC;QAC9E,CAAC;;;OAAA;IAED,sBAAY,0DAAmB;aAA/B;YACE,IAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;YACnC,OAAO,UAAU,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,CAAC;;;OAAA;IAED,sBAAY,iDAAU;aAAtB;YACE,IAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,oBAAoB,EAAE,CAAC;YAC9D,IAAM,iBAAiB,GAAG,UAAU,KAAK,kDAAwB,CAAC,eAAe,CAAC,IAAI,CAAC;YACvF,2GAA2G;YAC3G,OAAO,iBAAiB,CAAC,CAAC,CAAC,kDAAwB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC;QACvF,CAAC;;;OAAA;IAED,sBAAY,0DAAmB;aAA/B;YACE,IAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,mBAAmB,EAAE,CAAC;YACzD,OAAO,MAAM,IAAI,CAAC,oBAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,CAAC;;;OAAA;IAEO,oDAAgB,GAAxB;QACE,OAAO,aAAK,CAAC,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,iCAAe,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IACzF,CAAC;IAlHM,4BAAE,GAAG,2BAA2B,CAAC;IAE1B,iCAAO,GAAsC;QACzD,eAAe,EAAE,mCAAgB,CAAC,kBAAkB,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;KAC7E,CAAC;IA+GJ,gCAAC;CAAA,CApH8C,eAAe,GAoH7D;AApHY,8DAAyB;;;;;;;;;;;;;ACtqCtC,6DAA6D;AAC7D,8EAA8E;AAC9E,iEAAiE;AACjE,IAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC;AAClC,IAAI,CAAC,CAAC,OAAO,YAAY,QAAQ,CAAC,EAAE;IAClC,mBAAO,CAAC,GAAkB,CAAC,CAAC;CAC7B;AAED,iDAAoE;AAA3D,gDAAkB,CAAK;AAChC,mCAA8B;AAC9B,kCAA8B;AAC9B,mCAA8B;AAC9B,mCAAgC;AAChC,mCAAqC;AACrC,mCAAgC;AAChC,mCAAgC;AAChC,mCAAmC;AACnC,kCAA+B;;;;;;;;;;ACd/B,sCAAwC;AACxC,qCAAuC;AACvC,+BAAgC;AAIhC;IAAA;IA8NA,CAAC;IA7NQ,qBAAU,GAAjB;QACE,IAAI,IAAY,CAAC;QACjB,IAAI,OAAO,GAAY,KAAK,CAAC;QAC7B,IAAI,OAAO,MAAM,IAAI,WAAW,IAAI,OAAO,MAAM,CAAC,eAAe,IAAI,WAAW,EAAE;YAChF,IAAI;gBACF,IAAI,GAAG,UAAU,CAAC,kBAAkB,EAAE,CAAC;gBACvC,OAAO,GAAG,IAAI,CAAC;aAChB;YAAC,OAAO,CAAC,EAAE;gBACV,OAAO,GAAG,KAAK,CAAC;aACjB;SACF;QAED,IAAI,CAAC,OAAO,EAAE;YACZ,IAAI,GAAG,UAAU,CAAC,kBAAkB,EAAE,CAAC;SACxC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED,4EAA4E;IACrE,6BAAkB,GAAzB;QACE,qCAAqC;QACrC,OAAO,sCAAsC,CAAC,OAAO,CAAC,OAAO,EAAE,UAAS,CAAC;YACvE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAC9B,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;YACrC,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,6BAAkB,GAAzB;QACE,IAAI,GAAG,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,EAAE,GAAG,UAAS,GAAG;YACnB,IAAI,GAAG,GAAG,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YAC3B,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;gBACrB,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;aACjB;YACD,OAAO,GAAG,CAAC;QACb,CAAC,CAAC;QACF,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACvI,CAAC;IAEM,uCAA4B,GAAnC,UAAoC,KAAU,EAAE,OAAsB;QACpE,UAAU,CAAC,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAC3D,CAAC;IAEM,sCAA2B,GAAlC,UAAmC,KAAU,EAAE,MAAoB;QACjE,UAAU,CAAC,mBAAmB,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IACzD,CAAC;IAEM,gDAAqC,GAA5C,UAA6C,eAAe,EAAE,MAAoB;QAChF,UAAU,CAAC,mBAAmB,CAAC,MAAM,EAAE,iBAAiB,EAAE,eAAe,CAAC,CAAC;IAC7E,CAAC;IAEM,uCAA4B,GAAnC,UAAoC,KAAa,EAAE,OAAsB,EAAE,QAAgB,EAAE,QAAgB,EAAE,YAAoB;QACjI,eAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACrB,eAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACvB,IAAI,KAAK,GAAG,KAAK,CAAC,WAAW,CAAC;QAC9B,UAAU,CAAC,oBAAoB,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC/D,UAAU,CAAC,oBAAoB,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC/D,UAAU,CAAC,oBAAoB,CAAC,OAAO,EAAE,cAAc,EAAE,YAAY,CAAC,CAAC;QACvE,UAAU,CAAC,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,cAAM,SAAE,KAAK,EAAP,CAAO,CAAC,CAAC;IAC1E,CAAC;IAEM,4CAAiC,GAAxC,UAAyC,KAAa,EAAE,OAAsB;QAC5E,UAAU,CAAC,oBAAoB,CAAC,OAAO,EAAE,kBAAkB,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;QACvF,UAAU,CAAC,oBAAoB,CAAC,OAAO,EAAE,oBAAoB,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC7F,CAAC;IAEM,qBAAU,GAAjB,UAAkB,KAAa,EAAE,SAAuB;QAAvB,2CAAuB;QACtD,eAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACrB,OAAO,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAChC,CAAC;IAEM,uBAAY,GAAnB,UAAoB,MAAoB;QACtC,OAAO,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,cAAc,CAAC,CAAC;IACzE,CAAC;IAEM,6BAAkB,GAAzB,UAA0B,MAAoB;QAC5C,OAAO,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,oBAAoB,CAAC,CAAC;IAC/E,CAAC;IAEM,yBAAc,GAArB,UAAsB,MAAoB;QACxC,OAAO,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,gBAAgB,CAAC,CAAC;IAC3E,CAAC;IAEM,uBAAY,GAAnB,UAAoB,MAAoB;QACtC,OAAO,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,cAAc,CAAC,CAAC;IACzE,CAAC;IAEM,qBAAU,GAAjB,UAAkB,MAAoB;QACpC,OAAO,MAAM,CAAC,OAAO,IAAI,SAAS,IAAI,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;IAC7D,CAAC;IAEM,oBAAS,GAAhB,UAAiB,MAAoB;QACnC,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC;IAEM,qBAAU,GAAjB,UAAkB,MAAoB;QACpC,OAAO,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC/B,CAAC;IAEM,wBAAa,GAApB,UAAqB,MAAoB;QACvC,OAAO,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IAClC,CAAC;IAEM,wBAAa,GAApB,UAAqB,MAAoB;QACvC,OAAO,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,SAAS,CAAC;IAC/C,CAAC;IAEM,oBAAS,GAAhB,UAAiB,MAAoB;QACnC,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC;IAEM,sBAAW,GAAlB,UAAmB,MAAoB;QACrC,OAAO,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAChC,CAAC;IAEM,yBAAc,GAArB,UAAsB,MAAoB;QACxC,IAAI,UAAU,CAAC;QACf,IAAI,SAAS,CAAC;QACd,IAAI,WAAW,GAAG,aAAK,CAAC,aAAa,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QAC7D,IAAI,WAAW,EAAE;YACf,SAAS,GAAG,aAAa,CAAC;YAC1B,UAAU,GAAG,WAAW,CAAC;SAC1B;aAAM;YACL,SAAS,GAAG,SAAS,CAAC;YACtB,UAAU,GAAG,aAAK,CAAC,aAAa,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;SACrD;QACD,OAAO;YACL,UAAU,EAAE,UAAU;YACtB,SAAS,EAAE,SAAS;SACrB,CAAC;IACJ,CAAC;IAEM,iCAAsB,GAA7B,UAA8B,GAAW;QACvC,eAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACrB,OAAO,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,+BAA+B,CAAC,GAAG,CAAC,CAAC;YACzH,CAAC,CAAC,GAAG;YACL,CAAC,CAAC,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC;IAEM,yBAAc,GAArB,UAAsB,GAAW;QAC/B,eAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACrB,OAAO,OAAI,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,OAAG,CAAC;IAC7C,CAAC;IAEM,uBAAY,GAAnB,UAAoB,GAAW;QAC7B,eAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACrB,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAChC,CAAC;IAEM,yBAAc,GAArB,UAAsB,GAAW;QAC/B,eAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACrB,OAAO,yBAAyB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7C,CAAC;IAEM,wBAAa,GAApB,UAAqB,GAAW;QAC9B,eAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACrB,OAAO,+GAA+G,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnI,CAAC;IAEM,0CAA+B,GAAtC,UAAuC,GAAW;QAChD,eAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACrB,OAAO,uDAAuD,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3E,CAAC;IAEM,+BAAoB,GAA3B,UAA4B,KAAa,EAAE,QAAgB,EAAE,MAAgB;QAC3E,eAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAC/B,eAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACpC,eAAM,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QAClC,eAAM,CAAC,oBAAoB,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAE9C,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE;YACtB,OAAO,KAAK,GAAG,QAAQ,GAAG,UAAU,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;SACxE;aAAM;YACL,OAAO,KAAK,GAAG,QAAQ,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,aAAG,IAAI,iBAAU,CAAC,sBAAsB,CAAC,GAAG,CAAC,EAAtC,CAAsC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;SAC9G;IACH,CAAC;IAEM,uCAA4B,GAAnC,UAAoC,KAAa,EAAE,MAAgB;QACjE,eAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAC/B,eAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACpC,eAAM,CAAC,oBAAoB,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAE9C,IAAI,MAAc,CAAC;QACnB,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE;YACtB,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,UAAU,CAAC,sBAAsB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;SACtE;aAAM;YACL,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,aAAG,IAAI,iBAAU,CAAC,sBAAsB,CAAC,GAAG,CAAC,EAAtC,CAAsC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;SAC5G;QAED,OAAO,OAAO,GAAG,MAAM,GAAG,GAAG,CAAC;IAChC,CAAC;IAEa,+BAAoB,GAAlC,UAAmC,OAAsB,EAAE,QAAgB,EAAE,KAAU,EAAE,YAAwB;QAC/G,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,UAAC,MAAoB;YAC3C,UAAU,CAAC,mBAAmB,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;YACxD,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;QAChD,CAAC,CAAC,CAAC;IACL,CAAC;IAEa,8BAAmB,GAAjC,UAAkC,MAAoB,EAAE,QAAgB,EAAE,KAAU;QAClF,MAAM,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;QACzB,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,UAAC,KAAmB;YAC9C,KAAK,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;QAC1B,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,aAAK,CAAC,iBAAiB,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE;YACjD,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;SACvC;IACH,CAAC;IAEa,iCAAsB,GAApC,UAAqC,aAAqB,EAAE,YAAoB;QAC9E,IAAI,cAAc,GAAG,kBAAkB,CAAC;QACxC,IAAI,kBAAkB,GAAG,cAAc,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC5D,IAAI,iBAAiB,GAAG,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC1D,IAAI,kBAAkB,IAAI,iBAAiB,EAAE;YAC3C,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;SACrI;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACH,iBAAC;AAAD,CAAC;AA9NY,gCAAU;;;;;;;;;;ACTvB,sCAAwC;AAExC,mCAAkC;AAElC,sCAAwC;AACxC,0CAAsC;AACtC,+BAAgC;AAEhC;IAAA;IA6KA,CAAC;IA5KQ,4BAAgB,GAAvB,UAAwB,KAAa;QACnC,eAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAEvB,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACrC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACnC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAEnC,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,sBAAU,GAAjB,UAAkB,KAAa;QAC7B,eAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACvB,IAAI,GAAG,GAAG,QAAE,CAAC,KAAK,CAAC,CAAC;QACpB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChB,OAAO,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC;IAC1B,CAAC;IAEM,kBAAM,GAAb,UAAc,KAAa,EAAE,KAAa,EAAE,MAAc,EAAE,KAAa;QACvE,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;IAC/E,CAAC;IAEM,wBAAY,GAAnB,UAAoB,KAAa,EAAE,MAAc,EAAE,KAAa;QAC9D,IAAI,KAAK,CAAC,MAAM,GAAG,MAAM,EAAE;YACzB,OAAO,KAAK,CAAC;SACd;QACD,IAAI,QAAQ,GAAG,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QACrC,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACnC,OAAO,WAAW,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC3D,CAAC;IAEM,uBAAW,GAAlB,UAAmB,KAAa;QAC9B,eAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACvB,OAAO,KAAK,CAAC,OAAO,CAAC,qCAAqC,EAAE,MAAM,CAAC,CAAC;IACtE,CAAC;IAEM,yBAAa,GAApB,UAAqB,KAAa,EAAE,YAAoB;QAApB,mDAAoB;QACtD,eAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACvB,IAAI,OAAO,GAAG,WAAW,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAE7C,IAAI,YAAY,EAAE;YAChB,OAAO,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,UAAC,IAAY;gBACjC,IAAI,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,UAAC,MAAc,IAAK,WAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,EAA1B,CAA0B,CAAC,CAAC;gBAC1F,IAAI,MAAM,EAAE;oBACV,OAAO,MAAM,CAAC,MAAM,CAAC;iBACtB;gBACD,OAAO,IAAI,CAAC;YACd,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SACb;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAEM,4BAAgB,GAAvB,UAAwB,KAAa,EAAE,YAAoB;QAApB,mDAAoB;QACzD,eAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAEvB,IAAI,OAAO,GAAG,WAAW,CAAC,aAAa,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;QAE7D,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QACxC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAEvC,OAAO,OAAO,CAAC;IACjB,CAAC;IAEM,yBAAa,GAApB,UAAqB,WAAmB,EAAE,WAAmB,EAAE,sBAA8B;QAC3F,IAAI,KAAK,EACP,OAAO,GAAiB,EAAE,CAAC;QAE7B,OAAO,CAAC,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE;YAC9C,IAAI,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAC5B,IAAI,cAAc,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,MAAM,GAAG,KAAK,CAAC,KAAK,GAAG,cAAc,CAAC,MAAM,CAAC;YACjD,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,MAAM,EAAE,sBAAsB,EAAE,sBAAsB,EAAE,CAAC,CAAC;YAC9G,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE;gBACvB,MAAM;aACP;SACF;QACD,OAAO,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;IAClD,CAAC;IAEM,gCAAoB,GAA3B,UAA4B,WAAmB;QAC7C,eAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAC7B,OAAO,WAAW,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;IAEM,iCAAqB,GAA5B,UAA6B,IAAY,EAAE,IAAY;QACrD,OAAO,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;IAClD,CAAC;IAEM,iBAAK,GAAZ,UAAa,KAAa,EAAE,KAAa;QACvC,IAAI,OAAO,GAAe,EAAE,CAAC;QAC7B,IAAI,GAAa,CAAC;QAClB,OAAO,CAAC,GAAG,GAAG,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,IAAI,EAAE;YACzC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SACnB;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAEM,oBAAQ,GAAf,UAAgB,GAAW;QACzB,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,IAAI,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC;QACrB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;YAC5B,IAAI,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;YACjC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,2BAA2B;SAChD;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC3B,CAAC;IAED,sCAAsC;IAC/B,oBAAQ,GAAf,UAAgB,GAAW;QACzB,OAAO,mBAAQ,CAAC,GAAG,CAAC,CAAC;IACvB,CAAC;IAEM,iCAAqB,GAA5B,UAA6B,GAAW;QACtC,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACpD,CAAC;IAEM,yCAA6B,GAApC,UAAqC,QAAgB,EAAE,MAAoB;QAA3E,iBAeC;QAdC,IAAI,CAAC,QAAQ,EAAE;YACb,OAAO,EAAE,CAAC;SACX;QACD,OAAO,QAAQ,CAAC,OAAO,CAAC,cAAc,EAAE,UAAC,KAAa;YACpD,IAAI,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC/C,IAAI,QAAQ,GAAG,WAAW,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YACvD,IAAI,CAAC,QAAQ,EAAE;gBACb,QAAQ,GAAG,WAAW,CAAC,cAAc,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;aACpD;YACD,IAAI,CAAC,QAAQ,EAAE;gBACb,IAAI,eAAM,CAAC,KAAI,CAAC,CAAC,IAAI,CAAI,GAAG,uEAAkE,MAAM,CAAC,KAAO,CAAC,CAAC;aAC/G;YACD,OAAO,QAAQ,IAAI,KAAK,CAAC;QAC3B,CAAC,CAAC,CAAC;IACL,CAAC;IAEc,0BAAc,GAA7B,UAA8B,MAAc,EAAE,GAAW;QACvD,IAAM,gBAAgB,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC1C,IAAI,MAAM,IAAI,gBAAgB,KAAK,CAAC,CAAC,EAAE;YACrC,IAAI,MAAM,GAAG,GAAG,CAAC,SAAS,CAAC,gBAAgB,GAAG,CAAC,CAAC,CAAC;YACjD,GAAG,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC;YACzC,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;SACjD;QACD,OAAO,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC1C,CAAC;IAEa,oBAAQ,GAAiC;QACrD,CAAC,EAAE,2PAA2P;QAC9P,CAAC,EAAE,+GAA+G;QAClH,CAAC,EAAE,iKAAiK;QACpK,CAAC,EAAE,oLAAoL;QACvL,CAAC,EAAE,mLAAmL;QACtL,CAAC,EAAE,yGAAyG;QAC5G,CAAC,EAAE,2KAA2K;QAC9K,CAAC,EAAE,oJAAoJ;QACvJ,CAAC,EAAE,sRAAsR;QACzR,CAAC,EAAE,6FAA6F;QAChG,CAAC,EAAE,6LAA6L;QAChM,CAAC,EAAE,+LAA+L;QAClM,CAAC,EAAE,qPAAqP;QACxP,CAAC,EAAE,wKAAwK;QAC3K,CAAC,EAAE,8MAA8M;QACjN,CAAC,EAAE,oJAAoJ;QACvJ,CAAC,EAAE,iDAAiD;QACpD,CAAC,EAAE,kKAAkK;QACrK,CAAC,EAAE,oJAAoJ;QACvJ,CAAC,EAAE,6IAA6I;QAChJ,CAAC,EAAE,uKAAuK;QAC1K,CAAC,EAAE,mIAAmI;QACtI,CAAC,EAAE,mGAAmG;QACtG,CAAC,EAAE,oGAAoG;QACvG,CAAC,EAAE,qHAAqH;QACxH,CAAC,EAAE,2GAA2G;KAC/G,CAAC;IACJ,kBAAC;CAAA;AA7KY,kCAAW;;;;;;;ACRxB,qFAAuC,mBAAO,CAAC,GAAsB,E;;;;;;;;;;ACArE,0FAA0F;AAC1F,qDAAuF;AACvF,IAAM,MAAM,GAAG,gEAAgE,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;AAE1G;IAAA;IAuEA,CAAC;IAtEQ,yBAAa,GAApB,UAAqB,SAA+B;QAA/B,wCAAY,SAAS,CAAC,SAAS;QAClD,IAAI,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;YAC5B,OAAO,MAAM,CAAC;SACf;QACD,IAAI,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE;YAClC,OAAO,YAAY,CAAC;SACrB;QACD,IAAI,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE;YAC/B,OAAO,SAAS,CAAC;SAClB;QACD,IAAI,SAAS,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE;YAClC,OAAO,YAAY,CAAC;SACrB;QACD,IAAI,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;YAC9B,OAAO,QAAQ,CAAC;SACjB;QACD,IAAI,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,EAAE;YAC9D,OAAO,MAAM,CAAC;SACf;QACD,IAAI,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;YAC5B,OAAO,MAAM,CAAC;SACf;QACD,IAAI,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;YAC9B,OAAO,QAAQ,CAAC;SACjB;QACD,IAAI,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE;YAC3D,OAAO,IAAI,CAAC;SACb;QACD,IAAI,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;YAC7B,OAAO,OAAO,CAAC;SAChB;QACD,IAAI,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE;YAC/B,OAAO,SAAS,CAAC;SAClB;QACD,IAAI,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;YAC9B,OAAO,QAAQ,CAAC;SACjB;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEM,qBAAS,GAAhB;QACE,OAAO,WAAW,CAAC,aAAa,EAAE,IAAI,SAAS,CAAC;IAClD,CAAC;IAEM,iBAAK,GAAZ;QACE,IAAI,UAAU,GAAG,WAAW,CAAC,aAAa,EAAE,CAAC;QAC7C,OAAO,UAAU,IAAI,QAAQ,IAAI,UAAU,IAAI,MAAM,IAAI,UAAU,IAAI,MAAM,CAAC;IAChF,CAAC;IAEM,0BAAc,GAArB;QACE,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;YACzB,OAAO,IAAI,CAAC;SACb;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,mFAAmF;IACpE,0BAAc,GAA7B,UAA8B,SAA+B;QAA/B,wCAAY,SAAS,CAAC,SAAS;QAC3D,OAAO,SAAS,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,SAAS,CAAC,cAAc,IAAI,SAAS,CAAC,cAAc,GAAG,CAAC,CAAC;IACnG,CAAC;IAED;;;;OAIG;IACI,8BAAkB,GAAzB;QACE,OAAO,IAAI,2CAAoB,EAAE,CAAC,kBAAkB,EAAE,CAAC;IACzD,CAAC;IACH,kBAAC;AAAD,CAAC;AAvEY,kCAAW;;;;;;;;;;ACJxB,qCAAgC;AAChC,+BAAgC;AAEhC,IAAY,QAmBX;AAnBD,WAAY,QAAQ;IAClB,iDAAa;IACb,qCAAO;IACP,0CAAU;IACV,0CAAU;IACV,wCAAS;IACT,sCAAQ;IACR,4CAAW;IACX,gDAAa;IACb,8CAAY;IACZ,kDAAc;IACd,sCAAQ;IACR,wCAAS;IACT,oDAAe;IACf,gDAAa;IACb,sDAAgB;IAChB,oDAAe;IACf,4CAAW;IACX,4CAAW;AACb,CAAC,EAnBW,QAAQ,GAAR,gBAAQ,KAAR,gBAAQ,QAmBnB;AAED;IAAA;IAgEA,CAAC;IA/DQ,uBAAS,GAAhB,UAAiB,GAAG,EAAE,IAAI;QACxB,IAAI,CAAC,aAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE;YACzC,OAAO,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC;SAC5B;aAAM,IAAI,CAAC,aAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YAC9C,OAAO,GAAG,CAAC,KAAK,IAAI,IAAI,CAAC;SAC1B;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,oCAAsB,GAA7B,UAA8B,CAAgB;QAC5C,IAAI,OAAO,GAAG,CAAC,CAAC,OAAO,CAAC;QACxB,IAAI,KAAK,GACP,aAAa,CAAC,iBAAiB,CAAC,OAAO,CAAC;YACxC,OAAO,IAAI,EAAE;YACb,OAAO,IAAI,EAAE,IAAI,2BAA2B;YAC5C,aAAa,CAAC,iBAAiB,CAAC,OAAO,CAAC;YACxC,CAAC,OAAO,GAAG,EAAE,IAAI,OAAO,GAAG,GAAG,CAAC,IAAI,cAAc;YACjD,CAAC,OAAO,GAAG,GAAG,IAAI,OAAO,GAAG,GAAG,CAAC,IAAI,qBAAqB;YACzD,CAAC,OAAO,GAAG,GAAG,IAAI,OAAO,GAAG,GAAG,CAAC,IAAI,kBAAkB;YACtD,OAAO,IAAI,QAAQ,CAAC,SAAS;YAC7B,OAAO,IAAI,QAAQ,CAAC,MAAM;YAC1B,aAAa,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAE1C,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,4CAA8B,GAArC,UAAsC,CAAgB;QACpD,OAAO,aAAa,CAAC,sBAAsB,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAC/F,CAAC;IAEM,iCAAmB,GAA1B,UAA2B,CAAgB;QACzC,OAAO,aAAa,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,SAAS,CAAC,IAAI,aAAa,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACvG,CAAC;IAEM,8BAAgB,GAAvB,UAAwB,OAAe;QACrC,OAAO,CACL,OAAO,IAAI,QAAQ,CAAC,UAAU,IAAI,OAAO,IAAI,QAAQ,CAAC,QAAQ,IAAI,OAAO,IAAI,QAAQ,CAAC,WAAW,IAAI,OAAO,IAAI,QAAQ,CAAC,UAAU,CACpI,CAAC;IACJ,CAAC;IAEM,+BAAiB,GAAxB,UAAyB,OAAe;QACtC,OAAO,OAAO,GAAG,EAAE,IAAI,OAAO,GAAG,EAAE,CAAC;IACtC,CAAC;IAEM,+BAAiB,GAAxB,UAAyB,OAAe;QACtC,OAAO,OAAO,GAAG,EAAE,IAAI,OAAO,GAAG,EAAE,CAAC;IACtC,CAAC;IAED,gGAAgG;IACzF,4BAAc,GAArB,UAAsB,OAA8B,EAAE,MAAgB;QACpE,OAAO,UAAC,CAAgB;YAAE,cAAc;iBAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;gBAAd,6BAAc;;YACtC,IAAI,CAAC,EAAE;gBACL,IAAM,SAAS,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,OAAO,CAAC;gBAC1C,IAAI,SAAS,EAAE;oBACb,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE;wBACxD,MAAM,CAAC,CAAC,CAAC,CAAC;qBACX;yBAAM,IAAI,SAAS,KAAK,OAAO,EAAE;wBAChC,MAAM,CAAC,CAAC,CAAC,CAAC;qBACX;iBACF;aACF;QACH,CAAC,CAAC;IACJ,CAAC;IACH,oBAAC;AAAD,CAAC;AAhEY,sCAAa;;;;;;;;;;ACvBb,gBAAQ,GAAG,mBAAO,CAAC,GAAyC,CAAC,CAAC;AAC9D,oBAAY,GAAG,mBAAO,CAAC,GAAkD,CAAC,CAAC;;;;;;;;;;ACFxF,sCAA2C;AAC3C,mCAAqC;AACrC,4DAA0E;AAC1E,yDAAoE;AAEpE,qDAAoF;AACpF,+BAAgC;AAChC,8CAA4E;AAC5E,qCAA0C;AA6B1C;IAME;QACE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,oBAAoB,GAAG,IAAI,2CAAoB,EAAE,CAAC;IACzD,CAAC;IAED,+CAAG,GAAH;QACE,OAAO;YACL,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,cAAc,EAAE,IAAI,CAAC,cAAc;YACnC,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,oBAAoB,EAAE,IAAI,CAAC,oBAAoB;SAChD,CAAC;IACJ,CAAC;IAED,iDAAK,GAAL,UAAM,KAAkC;QACtC,IAAI,KAAK,EAAE;YACT,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,KAAK,CAAC,CAAC;SACpC;QACD,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;IACpB,CAAC;IACH,wCAAC;AAAD,CAAC;AA5BY,8EAAiC;AA8B9C;IAYE,kBAAmB,YAAuC;QAAvC,iBAAY,GAAZ,YAAY,CAA2B;QAXlD,WAAM,GAAW,IAAI,eAAM,CAAC,IAAI,CAAC,CAAC;QAOnC,WAAM,GAAa,EAAE,CAAC;IAIgC,CAAC;IAEvD,sCAAmB,GAA1B,UACE,MAAoB,EACpB,kBAAyF;QAAzF,8DAAsD,iCAAiC,EAAE;QAEzF,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,IAAI,kBAAkB,CAAC,cAAc,KAAK,KAAK,EAAE;gBAC/C,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;aAClC;YAED,2BAA2B;YAC3B,sEAAsE;YACtE,oDAAoD;YACpD,IAAI,kBAAkB,CAAC,oBAAoB,IAAI,IAAI,EAAE;gBACnD,kBAAkB,CAAC,oBAAoB,GAAG,IAAI,2CAAoB,EAAE,CAAC;aACtE;YAED,4EAA4E;YAC5E,gHAAgH;YAChH,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,kBAAkB,EAAE,EAAE;gBACzF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qEAAqE,EAAE,IAAI,CAAC,CAAC;gBAC/F,OAAO,IAAI,CAAC;aACb;iBAAM,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,IAAI,kBAAkB,CAAC,oBAAoB,CAAC,kBAAkB,EAAE,EAAE;gBAChG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yEAAyE,EAAE,IAAI,CAAC,CAAC;gBACnG,OAAO,IAAI,CAAC;aACb;YAED,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,mBAAmB,EAAE,EAAE;gBAC1F,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sEAAsE,EAAE,IAAI,CAAC,CAAC;gBAChG,OAAO,IAAI,CAAC;aACb;iBAAM,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,IAAI,kBAAkB,CAAC,oBAAoB,CAAC,mBAAmB,EAAE,EAAE;gBACjG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,0EAA0E,EAAE,IAAI,CAAC,CAAC;gBACpG,OAAO,IAAI,CAAC;aACb;YAED,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC,kBAAkB,EAAE,EAAE;gBAC1F,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qEAAqE,EAAE,IAAI,CAAC,CAAC;gBAC/F,OAAO,IAAI,CAAC;aACb;iBAAM,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,IAAI,kBAAkB,CAAC,oBAAoB,CAAC,kBAAkB,EAAE,EAAE;gBACjG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yEAAyE,EAAE,IAAI,CAAC,CAAC;gBACnG,OAAO,IAAI,CAAC;aACb;YAED,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,IAAI,kBAAkB,CAAC,aAAa,IAAI,IAAI,IAAI,kBAAkB,CAAC,aAAa,KAAK,IAAI,CAAC,MAAM,EAAE;gBACvH,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oDAAoD,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC3F,OAAO,IAAI,CAAC;aACb;YACD,IAAI;gBACF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;gBAC7C,8CAA8C;gBAC9C,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;oBACpD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6CAA6C,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;oBACzF,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;iBAClC;gBACD,mDAAmD;gBACnD,IACE,IAAI,CAAC,gBAAgB,IAAI,IAAI;oBAC7B,uDAA0B,CAAC,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,EAAE,MAAM,EAAE,kBAAkB,CAAC,oBAAoB,CAAC,EACpH;oBACA,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6CAA6C,EAAE,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;oBAChG,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;iBAClC;gBACD,+FAA+F;gBAC/F,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,IAAI,iDAAuB,CAAC,qBAAqB,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,EAAE;oBAC3G,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6CAA6C,EAAE,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;oBAC7F,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;iBAClC;gBACD,qDAAqD;gBACrD,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,EAAE;oBACzF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sDAAsD,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;oBAClG,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;iBAClC;aACF;YAAC,OAAO,CAAC,EAAE;gBACV,IAAI,eAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,6BAA6B,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;gBACzF,IAAI,eAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;gBACrD,OAAO,IAAI,CAAC;aACb;SACF;QACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,6DAA6D,EAAE,IAAI,CAAC,CAAC;QACvF,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,2BAAQ,GAAf,UAAgB,KAAa;QAC3B,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE;YACnC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACzB;IACH,CAAC;IAEM,4BAAS,GAAhB,UAAiB,MAAgB;QAC/B,IAAI,aAAK,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE;YACjC,IAAI,CAAC,MAAM,GAAG,aAAK,CAAC,sBAAsB,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;SACjE;IACH,CAAC;IAEM,sCAAmB,GAA1B,UAA2B,UAAkB;QAC3C,IAAM,kCAAkC,GAAG,CAAC,CAAC,GAAG,CAAC,+BAAc,CAAC,6BAA6B,EAAE,EAAE,UAAC,WAAmB;YACnH,IAAM,KAAK,GAAG,IAAI,MAAM,CAAC,UAAQ,WAAa,EAAE,GAAG,CAAC,CAAC;YACrD,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,CAAC,OAAO,CAAC,kCAAkC,CAAC,CAAC;IACvD,CAAC;IAEM,uCAAoB,GAA3B,UAA4B,MAAoB,EAAE,eAAiD;QAAnG,iBAaC;QAbiD,sDAAiD;QACjG,IAAM,aAAa,GAAG,IAAI,iCAAiC,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QACrF,IAAM,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QAE7D,IAAI,IAAI,IAAI,IAAI,EAAE;YAChB,OAAO,IAAI,CAAC;SACb;QAED,OAAO,IAAI,CAAC,sCAAsC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC;YAC5D,IAAM,QAAQ,GAAG,KAAI,CAAC,aAAa,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;YACzD,KAAI,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;YACpE,OAAO,QAAQ,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,gCAAa,GAApB;QACE,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,4BAAS,GAAhB;QACE,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAEM,0BAAO,GAAd;QACE,OAAO,UAAU,CAAC;IACpB,CAAC;IAEM,2CAAwB,GAA/B,UAAgC,SAAiB;QAC/C,6IAA6I;QAC7I,mJAAmJ;QACnJ,IAAI;YACF,IAAI,CAAC,SAAS,GAAG,IAAI,QAAQ,CAAC,KAAK,EAAE,uBAAuB,GAAG,SAAS,GAAG,GAAG,CAAC,CAAC;SACjF;QAAC,OAAO,CAAC,EAAE;YACV,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC;SACnC;IACH,CAAC;IAES,kCAAe,GAAzB;QACE,gGAAgG;QAChG,OAAO,IAAI,CAAC,gBAAgB,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;IACxI,CAAC;IAEO,yDAAsC,GAA9C,UAA+C,IAAY;QACzD,IAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,mBAAS,IAAI,0CAAkB,CAAC,0BAA0B,CAAC,SAAS,CAAC,EAAxD,CAAwD,CAAC,CAAC;QAC7H,OAAO,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACjC,CAAC;IAEO,gCAAa,GAArB,UAAsB,IAAY,EAAE,eAA4C;QAC9E,IAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,eAAe,CAAC,aAAa,CAAC;QAC5D,IAAM,QAAQ,GAAG,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;QACnD,IAAI,OAAO,GAAG,QAAE,CAAC,QAAQ,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;QAExC,IAAI,CAAC,eAAe,CAAC,SAAS,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;YAC/D,OAAO,GAAgB,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACjD;QAED,IAAI,MAAM,EAAE;YACV,QAAE,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,WAAS,MAAM,YAAS,CAAC,CAAC;SAChD;QAED,OAAO,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;QAC3B,OAAO,OAAO,CAAC;IACjB,CAAC;IACH,eAAC;AAAD,CAAC;AAnLY,4BAAQ;;;;;;;;;;;;;;;;;;;;ACnErB,sCAAgC;AAChC,+BAAgC;AAEnB,oCAA4B,GAAG;IAC1C,WAAW,EAAE,YAAY;IACzB,UAAU,EAAE,WAAW;IACvB,UAAU,EAAE,WAAW;CACxB,CAAC;AAQF;IAA2C,yCAAK;IAe9C,+BAAY,OAAoB,EAAE,UAAwC;QAA1E,iBAGC;QAFC,IAAI,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,qBAAqB,CAAC,iBAAiB,EAAE,UAAU,CAAC,CAAC;QAC/E,0BAAM,OAAO,EAAE,qBAAqB,CAAC,EAAE,EAAE,MAAM,CAAC,SAAC;;IACnD,CAAC;IAjBM,wBAAE,GAAG,kBAAkB,CAAC;IAExB,uCAAiB,GAAgC;QACtD,UAAU,EAAE,SAAS;QACrB,SAAS,EAAE,SAAS;QACpB,SAAS,EAAE,SAAS;KACrB,CAAC;IAEK,oCAAc,GAAG;QACtB,UAAU,EAAE,YAAY;QACxB,SAAS,EAAE,WAAW;QACtB,SAAS,EAAE,WAAW;KACvB,CAAC;IAMJ,4BAAC;CAAA,CAnB0C,aAAK,GAmB/C;AAnBY,sDAAqB;;;;;;;;;;AC6ClC;;;;;GAKG;AACH;IAAA;IA4CA,CAAC;IA3CC;;;;OAIG;IACW,oCAAmB,GAAG,qBAAqB,CAAC;IAE1D;;;;;;;OAOG;IACW,mCAAkB,GAAG,oBAAoB,CAAC;IAExD;;;;;;;;;;;;;OAaG;IACW,8BAAa,GAAG,eAAe,CAAC;IAE9C;;;;;;;;OAQG;IACW,6BAAY,GAAG,cAAc,CAAC;IAC9C,uBAAC;CAAA;AA5CY,4CAAgB;;;;;;;;;;;;;;;;;;AClE7B,8CAA2F;AAC3F,sCAA2C;AAC3C,gDAAoE;AACpE,gDAAyE;AAIzE,qDAAyE;AACzE,mCAAqC;AAIrC,yCAA8C;AAC9C,gDAAwG;AAExG,+BAAgC;AAChC,iDAA8D;AAC9D,sCAA2C;AAC3C,2CAAmD;AACnD,gDAA4D;AAE5D,IAAI,4BAA4B,GAAG,IAAI,eAAM,CAAC,wBAAwB,CAAC,CAAC;AAExE;;;;;;;GAOG;AACH,cAAqB,OAAoB,EAAE,OAAiB;IAAjB,sCAAiB;IAC1D,OAAO,+BAAc,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE;QAC1D,OAAO,+BAAc,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC,CAAC,CAAC;AACL,CAAC;AAJD,oBAIC;AAED,+BAAc,CAAC,mBAAmB,CAAC,MAAM,EAAE,UAAC,OAAoB,EAAE,OAAiB;IAAjB,sCAAiB;IACjF,OAAO,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAChC,CAAC,CAAC,CAAC;AAEH;;;;;;;;GAQG;AACH,uBAA8B,OAAoB,EAAE,aAAqB,EAAE,OAAiB;IAAjB,sCAAiB;IAC1F,eAAM,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;IACvC,IAAI,sBAAsB,GAAsC,EAAE,CAAC;IACnE,sBAAsB,CAAC,aAAa,GAAG,aAAa,CAAC;IACrD,sBAAsB,CAAC,gBAAgB,GAAG,KAAK,CAAC;IAChD,sBAAsB,CAAC,aAAa,GAAG,KAAK,CAAC;IAC7C,sBAAsB,gBAAQ,sBAAsB,EAAK,OAAO,CAAC,yBAAyB,CAAE,CAAC;IAE7F,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,yBAAyB,EAAE,sBAAsB,EAAE,CAAC,CAAC;IACvF,OAAO,+BAAc,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE;QAC1D,OAAO,+BAAc,CAAC,6BAA6B,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;AACL,CAAC;AAZD,sCAYC;AAED,+BAAc,CAAC,mBAAmB,CAAC,eAAe,EAAE,UAAC,OAAoB,EAAE,aAAqB,EAAE,OAAiB;IAAjB,sCAAiB;IACjH,aAAa,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;AACjD,CAAC,CAAC,CAAC;AAEH;;;;;;;;;GASG;AACH,4BACE,OAAoB,EACpB,mBAAiC,EACjC,WAAqC,EACrC,OAAiB;IAAjB,sCAAiB;IAEjB,IAAI,qBAAqB,GAA2B,EAAE,CAAC;IACvD,qBAAqB,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;IAChE,qBAAqB,CAAC,WAAW,GAAG,WAAW,CAAC;IAChD,qBAAqB,CAAC,aAAa,GAAG,KAAK,CAAC;IAC5C,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,qBAAqB,EAAE,CAAC,CAAC;IAE3E,2IAA2I;IAC3I,wFAAwF;IACxF,wHAAwH;IACxH,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,IAAI,IAAI,EAAE;QAC7C,mCAAkB,CAAC,qBAAqB,CAAC,gBAAgB,EAAE,cAAM,cAAO,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,CAAC,EAAlD,CAAkD,CAAC,CAAC;QACrH,oCAAmB,CAAC,uBAAuB,CAAC,gBAAgB,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,CAAC;KACnG;IAED,OAAO,mCAAkB,CAAC,0BAA0B,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC;QAC1E,OAAO,+BAAc,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE;YAC1D,OAAO,+BAAc,CAAC,2BAA2B,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAzBD,gDAyBC;AAED,+BAAc,CAAC,mBAAmB,CAChC,oBAAoB,EACpB,UAAC,OAAoB,EAAE,mBAAgC,EAAE,WAAqB,EAAE,OAAiB;IAAxC,8CAAqB;IAAE,sCAAiB;IAC/F,kBAAkB,CAAC,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;AACzE,CAAC,CACF,CAAC;AAEF;;;;;;;;;;;GAWG;AACH,sBAA6B,OAAoB;IAC/C,eAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAEvB,IAAI,eAAe,GAAoB,qBAAS,CAAC,cAAc,CAAC,OAAO,EAAE,iCAAe,CAAC,CAAC;IAC1F,eAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;IAC/B,OAAO,eAAe,CAAC,YAAY,EAAE,CAAC;AACxC,CAAC;AAND,oCAMC;AAED,+BAAc,CAAC,mBAAmB,CAAC,cAAc,EAAE,UAAC,OAAoB;IACtE,OAAO,YAAY,CAAC,OAAO,CAAC,CAAC;AAC/B,CAAC,CAAC,CAAC;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,eAAsB,OAAoB;IAAE,cAAc;SAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;QAAd,6BAAc;;IACxD,eAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACvB,IAAI,KAAK,GAAoB,qBAAS,CAAC,cAAc,CAAC,OAAO,EAAE,iCAAe,CAAC,CAAC;IAChF,OAAO,0BAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC/B,CAAC;AAJD,sBAIC;AAED,+BAAc,CAAC,mBAAmB,CAAC,OAAO,EAAE,UAAC,OAAoB;IAAE,cAAc;SAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;QAAd,6BAAc;;IAC/E,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;QACpB,OAAO,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;KACvD;SAAM;QACL,OAAO,KAAK,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;KAC1C;AACH,CAAC,CAAC,CAAC;AAEH;;;;;;GAMG;AACH,aAAoB,OAAoB,EAAE,cAAe,EAAE,OAAiB;IAC1E,eAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACvB,OAAO,qBAAS,CAAC,GAAG,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;AACzD,CAAC;AAHD,kBAGC;AAED,+BAAc,CAAC,mBAAmB,CAChC,KAAK,EACL,UAAC,OAAoB,EAAE,cAAoB,EAAE,OAAiB;IAC5D,OAAO,GAAG,CAAC,OAAO,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC;AAC/C,CAAC,CACF,CAAC;AAEF,gBAAuB,OAAoB,EAAE,OAAiB;IAC5D,eAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACvB,OAAO,qBAAS,CAAC,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC/C,CAAC;AAHD,wBAGC;AAED,+BAAc,CAAC,mBAAmB,CAChC,QAAQ,EACR,UAAC,OAAoB,EAAE,OAAiB;IACtC,OAAO,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAClC,CAAC,CACF,CAAC;AAEF,iCAAiC,OAAoB;IACnD,IAAI,SAAS,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;IAC3C,IAAI,SAAS,EAAE;QACb,OAAO,SAAS,CAAC,MAAM,CAAC;KACzB;SAAM;QACL,OAAO,SAAS,CAAC;KAClB;AACH,CAAC;AAED,2BAA2B,OAAoB;IAC7C,IAAI,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAS,CAAC,0BAA0B,CAAC,WAAW,CAAC,CAAC;QAClG,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,QAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,qBAAS,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC,CAAC;IACpE,IAAI,gBAAgB,EAAE;QACpB,OAAkB,qBAAS,CAAC,cAAc,CAAC,gBAAgB,EAAE,qBAAS,CAAC,CAAC;KACzE;SAAM;QACL,OAAO,SAAS,CAAC;KAClB;AACH,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,wBACE,OAAoB,EACpB,gBAAuC,EACvC,QAAe,EACf,MAAqB;IAErB,IAAI,MAAM,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;IAC9C,IAAI,MAAM,EAAE;QACV,MAAM,CAAC,cAAc,CAAQ,gBAAgB,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;KAC3E;AACH,CAAC;AAVD,wCAUC;AAED,+BAAc,CAAC,mBAAmB,CAChC,gBAAgB,EAChB,UAAC,OAAoB,EAAE,gBAAuC,EAAE,QAAa,EAAE,MAAqB;IAClG,cAAc,CAAC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AAC9D,CAAC,CACF,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,wBAA+B,OAAoB,EAAE,gBAAuC,EAAE,QAA4B;IACxH,IAAI,MAAM,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;IAC9C,IAAI,MAAM,EAAE;QACV,MAAM,CAAC,cAAc,CAAM,gBAAgB,EAAE,QAAQ,CAAC,CAAC;KACxD;AACH,CAAC;AALD,wCAKC;AAED,+BAAc,CAAC,mBAAmB,CAChC,gBAAgB,EAChB,UAAC,OAAoB,EAAE,gBAAuC,EAAE,QAA4B;IAC1F,cAAc,CAAC,OAAO,EAAE,gBAAgB,EAAE,QAAQ,CAAC,CAAC;AACtD,CAAC,CACF,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,iCACE,OAAoB,EACpB,yBAAgD,EAChD,QAAe;IAEf,IAAI,MAAM,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;IAC9C,IAAI,MAAM,EAAE;QACV,MAAM,CAAC,kBAAkB,CAAQ,yBAAyB,EAAE,QAAQ,CAAC,CAAC;KACvE;AACH,CAAC;AATD,0DASC;AAED,+BAAc,CAAC,mBAAmB,CAChC,yBAAyB,EACzB,UAAC,OAAoB,EAAE,yBAAgD,EAAE,QAA4B;IACnG,uBAAuB,CAAC,OAAO,EAAE,yBAAyB,EAAE,QAAQ,CAAC,CAAC;AACxE,CAAC,CACF,CAAC;AAEF;;;;;;;;;;;;;;;GAeG;AACH,uBACE,OAAoB,EACpB,eAAsC,EACtC,QAAe,EACf,MAAoB;IAEpB,IAAI,MAAM,GAAG,uBAAuB,CAAC,OAAO,CAAC,CAAC;IAC9C,IAAI,MAAM,EAAE;QACV,MAAM,CAAC,aAAa,CAAQ,eAAe,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;KACzE;AACH,CAAC;AAVD,sCAUC;AAED,+BAAc,CAAC,mBAAmB,CAChC,eAAe,EACf,UAAC,OAAoB,EAAE,eAAsC,EAAE,QAA4B,EAAE,MAAoB;IAC/G,aAAa,CAAC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AAC5D,CAAC,CACF,CAAC;AAEF;;;;;GAKG;AACH,iBAAwB,OAAoB,EAAE,YAAsB;IAAtB,gDAAsB;IAClE,+BAAc,CAAC,sBAAsB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;AAC/D,CAAC;AAFD,0BAEC;AAED,+BAAc,CAAC,mBAAmB,CAAC,SAAS,EAAE,UAAC,OAAoB,EAAE,YAAsB;IAAtB,gDAAsB;IACzF,OAAO,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;AACjC,CAAC,CAAC,CAAC;AAEH;;;;;GAKG;AACH,eAAsB,OAAoB,EAAE,UAAkB,EAAE,OAAgC;IAC9F,+BAAc,CAAC,0BAA0B,CAAC,UAAU,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AAC1E,CAAC;AAFD,sBAEC;AAED,+BAAc,CAAC,mBAAmB,CAAC,OAAO,EAAE,UAAC,OAAqB,EAAE,UAAmB,EAAE,OAAiC;IACxH,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;AACtC,CAAC,CAAC,CAAC;AAEH,iBAAwB,OAAoB;IAAE,cAAc;SAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;QAAd,6BAAc;;IAC1D,IAAI,IAAI,EACN,OAAO,GAAQ,EAAE,EACjB,YAAY,CAAC;IACf,8DAA8D;IAC9D,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;QACpB,IAAI,GAAG,UAAU,CAAC;QAClB,YAAY,GAAG,KAAK,CAAC;KACtB;SAAM,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;QAC3B,kCAAkC;QAClC,mDAAmD;QACnD,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,QAAQ,EAAE;YAC9B,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACf,YAAY,GAAG,IAAI,CAAC;SACrB;aAAM,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,QAAQ,EAAE;YACrC,oDAAoD;YACpD,IAAI,GAAG,UAAU,CAAC;YAClB,YAAY,GAAG,KAAK,CAAC;YACrB,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;SACnB;aAAM;YACL,eAAM,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;SACjD;KACF;SAAM,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;QAC3B,uDAAuD;QACvD,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACf,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,YAAY,GAAG,IAAI,CAAC;KACrB;IACD,IAAI,MAAM,GAAQ,EAAE,CAAC;IACrB,MAAM,CAAC,IAAI,IAAI,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,eAAe,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACnF,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACxC,+BAAc,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE;QACnD,OAAO,+BAAc,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;IAC/E,CAAC,CAAC,CAAC;AACL,CAAC;AAlCD,0BAkCC;AAED,+BAAc,CAAC,mBAAmB,CAAC,SAAS,EAAE,UAAC,OAAqB;IAAE,cAAc;SAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;QAAd,6BAAc;;IAClF,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACzB,CAAC,CAAC,CAAC;AAEH,cAAqB,OAAoB;IACvC,QAAE,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,2CAAoB,CAAC,IAAI,CAAC,CAAC;AACjD,CAAC;AAFD,oBAEC;AAED,+BAAc,CAAC,mBAAmB,CAAC,MAAM,EAAE,UAAC,OAAoB;IAC9D,IAAI,CAAC,OAAO,CAAC,CAAC;AAChB,CAAC,CAAC,CAAC;AAEH;;;GAGG;AACH,+BAAsC,IAAY;IAChD,iCAAe,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;AAC9C,CAAC;AAFD,sDAEC;AAED,+BAAc,CAAC,mBAAmB,CAAC,uBAAuB,EAAE,UAAC,IAAY;IACvE,qBAAqB,CAAC,IAAI,CAAC,CAAC;AAC9B,CAAC,CAAC,CAAC;AAEH;;;;;;;;;GASG;AACH,yBAAgC,UAAwG;IAAxG,0CAAa,QAAQ,CAAC,aAAa,CAAC,qBAAS,CAAC,sBAAsB,CAAC,iCAAe,CAAC,EAAE,CAAC,CAAgB;IACtI,IAAM,SAAS,GAAG,iBAAiB,CAAC,UAAU,CAAc,CAAC;IAC7D,IAAI,CAAC,SAAS,EAAE;QACd,OAAO,4BAA4B,CAAC,IAAI,CACtC,uGAAuG,CACxG,CAAC;KACH;IACD,SAAS,CAAC,MAAM,EAAE,CAAC;AACrB,CAAC;AARD,0CAQC;AAED,+BAAc,CAAC,mBAAmB,CAAC,iBAAiB,EAAE;IACpD,eAAe,EAAE,CAAC;AACpB,CAAC,CAAC,CAAC;AAEH;;;;;;;GAOG;AACH,wBAA+B,UAAwG;IAAxG,0CAAa,QAAQ,CAAC,aAAa,CAAC,qBAAS,CAAC,sBAAsB,CAAC,iCAAe,CAAC,EAAE,CAAC,CAAgB;IACrI,IAAM,SAAS,GAAG,iBAAiB,CAAC,UAAU,CAAc,CAAC;IAC7D,IAAI,CAAC,SAAS,EAAE;QACd,OAAO,4BAA4B,CAAC,IAAI,CACtC,uGAAuG,CACxG,CAAC;KACH;IACD,SAAS,CAAC,cAAc,EAAE,CAAC;AAC7B,CAAC;AARD,wCAQC;AAED,+BAAc,CAAC,mBAAmB,CAAC,gBAAgB,EAAE;IACnD,cAAc,EAAE,CAAC;AACnB,CAAC,CAAC,CAAC;AAEH;;;;;;;;;GASG;AACH,0BAAiC,UAAwG;IAAxG,0CAAa,QAAQ,CAAC,aAAa,CAAC,qBAAS,CAAC,sBAAsB,CAAC,iCAAe,CAAC,EAAE,CAAC,CAAgB;IACvI,IAAM,SAAS,GAAG,iBAAiB,CAAC,UAAU,CAAc,CAAC;IAC7D,IAAI,CAAC,SAAS,EAAE;QACd,OAAO,4BAA4B,CAAC,IAAI,CACtC,wGAAwG,CACzG,CAAC;KACH;IACD,SAAS,CAAC,OAAO,EAAE,CAAC;AACtB,CAAC;AARD,4CAQC;AAED,+BAAc,CAAC,mBAAmB,CAAC,kBAAkB,EAAE;IACrD,gBAAgB,EAAE,CAAC;AACrB,CAAC,CAAC,CAAC;AAEH;;;;;;;;;GASG;AACH,8BAAqC,cAAqC;IACxE,+BAAc,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;AACtD,CAAC;AAFD,oDAEC;AAED,+BAAc,CAAC,mBAAmB,CAAC,sBAAsB,EAAE,UAAC,cAAqC;IAC/F,oBAAoB,CAAC,cAAc,CAAC,CAAC;AACvC,CAAC,CAAC,CAAC;AAEH;;;GAGG;AACH,mCAA0C,uBAA+B;IACvE,+BAAc,CAAC,yBAAyB,CAAC,uBAAuB,CAAC,CAAC;AACpE,CAAC;AAFD,8DAEC;AAED,+BAAc,CAAC,mBAAmB,CAAC,2BAA2B,EAAE,UAAC,uBAA+B;IAC9F,yBAAyB,CAAC,uBAAuB,CAAC,CAAC;AACrD,CAAC,CAAC,CAAC;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,cAAwB,EAAU;IAChC,IAAI,mCAAkB,CAAC,oBAAoB,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE;QACvD,OAAyB,mCAAkB,CAAC,0BAA0B,CAAC,EAAE,CAAE,CAAC;KAC7E;SAAM,IAAI,mCAAkB,CAAC,gBAAgB,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE;QAC1D,OAAmB,mCAAkB,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;KACnE;SAAM;QACL,OAAO,OAAO,CAAC,MAAM,CAAC,YAAU,EAAE,sBAAmB,CAAC,CAAC;KACxD;AACH,CAAC;AARD,oBAQC;AAED,+BAAc,CAAC,mBAAmB,CAAC,SAAS,EAAE,UAAC,OAAe;IAC5D,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC;;;;;;;;;;AC3mBH,+BAAgC;AAEhC;IAAA;IA8BA,CAAC;IA3BQ,WAAK,GAAZ,UAAa,IAAgB;QAC3B,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3B,KAAK,CAAC,GAAG,EAAE,CAAC;IACd,CAAC;IAEM,WAAK,GAAZ;QACE,OAAO,KAAK,CAAC,MAAM,EAAE,EAAE,GAAE;IAC3B,CAAC;IAEc,SAAG,GAAlB;QACE,CAAC,CAAC,KAAK,CAAC;YACN,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE;gBAClB,KAAK,CAAC,GAAG,EAAE,CAAC;aACb;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEc,YAAM,GAArB;QACE,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;YAC9B,IAAI,GAAG,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YAC7B,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAC1C,GAAG,EAAE,CAAC;YACN,OAAO,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC;SACnC;aAAM;YACL,OAAO,KAAK,CAAC;SACd;IACH,CAAC;IA5Bc,eAAS,GAAG,EAAE,CAAC;IA6BhC,YAAC;CAAA;AA9BY,sBAAK;;;;;;;;;;ACFH;AACf;AACA,CAAC;;;ACFmC;;AAErB;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA,WAAW,SAAS;AACpB;AACA;;;AChCoC;AACF;;AAElC,sBAAsB,QAAQ,CAAC,SAAS;AACjC;AACA;AACQ,sDAAW,EAAC;;;ACNZ;AACf;AACA;AACA;AACA;AACA,CAAC;;AAEM;AACP;AACA;;;ACT6B;;AAEd;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,+BAA+B,IAAI;;AAEnC,kBAAkB,SAAS;AAC3B,sCAAsC,SAAS;AAC/C;AACA;AACA;;AAEA;AACA,CAAC;;;ACpBc;AACf;AACA,CAAC;;;ACFc;AACf;AACA,CAAC;;;ACF6B;;AAEf;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yBAAyB,MAAM;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yBAAyB,MAAM;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;AChCiC;;AAEnB;AACf,UAAU,QAAQ;AAClB;AACA,CAAC;;;ACLc;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB;AACrB;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB;AACrB;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;ACpCD,IAAI,WAAK;;AAEF,YAAY,WAAK;AACjB,UAAU,WAAK;;;ACHP;AACf;AACA;AACA;AACA,CAAC;;;ACJc;AACf;AACA,CAAC;;;ACFc;AACf;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;;ACZD;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,CAAC;;AAEM;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AClDe;AACf;AACA,CAAC;;;ACF6B;AACA;AACI;AACJ;AACI;AACN;AACK;AACS;;AAE3B;AACf,cAAc,QAAQ;AACtB,eAAe,MAAM;AACrB,kBAAkB,OAAO;;AAEzB;AACA;AACA;AACA;AACA;;AAEA,eAAe,OAAO;AACtB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,WAAW,QAAQ;AACnB,WAAW,KAAK,kCAAkC;AAClD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,eAAe,QAAQ;AACvB;AACA;AACA;AACA;;AAEA;AACA,eAAe,OAAO;AACtB;AACA;AACA,aAAa,MAAM;AACnB;AACA;;AAEA;AACA;;AAEA;AACA,qEAAqE,QAAQ;AAC7E;;AAEA;AACA,sEAAsE,QAAQ;AAC9E;;AAEA;AACA,4FAA4F,QAAQ,CAAC,KAAK,YAAY,QAAQ;AAC9H;;AAEA;AACA,CAAC;;;AC1E6B;;AAEf;AACf,iCAAiC,MAAM;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;ACb4B;AACQ;AACN;AACI;;AAEpB;AACf,WAAW,GAAG,cAAc,MAAM,OAAO,SAAS;AAClD,uCAAuC,QAAQ,iBAAiB,QAAQ;AACxE,CAAC;;;ACRoC;;AAEtB;AACf,wCAAwC,SAAS;AACjD,CAAC;;;ACJc;AACf;AACA;AACA;AACA;;AAEA;AACA,qBAAqB;AACrB;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB;AACrB;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;ACjC6B;;AAEf;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yBAAyB,MAAM;AAC/B;AACA;AACA;;AAEA;AACA;AACA,yBAAyB,MAAM;AAC/B;AACA;AACA;;AAEA;AACA,CAAC;;;ACxBmC;AACN;AACI;;AAEnB;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA,yBAAyB,MAAM;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA,yBAAyB,MAAM;AAC/B;AACA;AACA;AACA;;AAEA,SAAS,QAAQ,cAAc,SAAS;AACxC,CAAC;;;AC3Bc;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;ACpBc;AACf;AACA;AACA;AACA;;AAEA;AACA,qBAAqB;AACrB;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB;AACrB;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;ACjCc;AACf;AACA;AACA;AACA,CAAC;;;ACJmC;;AAErB;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA,iCAAiC,SAAS;;AAE1C;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;ACnBc;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;ACbc;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA,2CAA2C;AAC3C;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;ACnBuB;;AAET;AACf;AACA,uBAAuB,OAAG,SAAS,gBAAM,4BAA4B,SAAS;AAC9E,0DAA0D,SAAS;AACnE;AACA;AACA;AACA;AACA,CAAC;;AAED,SAAS,gBAAM;AACf;AACA;;;ACdoC;;AAErB;AACf,SAAS,aAAS;AAClB,CAAC;;;ACJD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA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c,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1C,CAAC,CAAC;QAEF,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC;AACJ,CAAC;AAED;IACE,OAAO,UAAU,MAAc,EAAE,GAAW,EAAE,UAAwC;QAC9E,gDAAsE,EAApE,kCAAc,EAAE,sBAAQ,CAA6C;QAC7E,UAAU,CAAC,KAAK,GAAG;YAAgC,cAAc;iBAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;gBAAd,yBAAc;;YAC/D,IAAI,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;YAE3C,yBAAyB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,WAAW,CAAC,WAAW,GAAG,WAAW,CAAC;YAChF,OAAO,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1C,CAAC,CAAC;QAEF,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC;AACJ,CAAC;;;;;;;;;;ACp9Cc;AACf;AACA;AACA,CAAC;;AAEM;AACP;AACA;AACA;AACA;;;ACT2C;;AAEpC;;AAEA;AACA;;AAEP;AACA;AACA;AACA,yBAAyB,IAAI;AAC7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAM;AACN;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEA,MAAM,WAAW,MAAM;AACvB;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA,uBAAuB;AACvB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAM,WAAW,MAAM;AACvB;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;;AClXO;AACA;;;ACDoC;AACO;AACP;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,GAAG,OAAO,UAAU;AACzC;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;;AAEe;AACf;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEA,MAAM,WAAW,MAAM,CAAC,KAAK;AAC7B;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iCAAiC,OAAO;AACxC;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,gBAAgB,OAAO;AACvB;AACA;;AAEA,MAAM,WAAW,MAAM,CAAC,KAAK;AAC7B;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,CAAC;;;AC1H0C;AACyB;AACzB;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,qBAAqB,GAAG,OAAO,UAAU;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,OAAO;AACzC;AACA;;AAEe;AACf;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEA,MAAM,uBAAuB,MAAM,CAAC,KAAK;AACzC;AACA,oBAAoB,QAAQ,YAAY,QAAQ;AAChD;AACA,GAAG;AACH;AACA,oBAAoB,MAAM,YAAY,MAAM;AAC5C;AACA,GAAG;AACH;AACA,iDAAiD,OAAO;AACxD;AACA;AACA;AACA;AACA,eAAe,GAAG;AAClB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AACP;AACA,0CAA0C,QAAQ;AAClD;AACA;;AAEe;AACf;AACA,4BAA4B,QAAQ;AACpC;;;AC5ByC;AACV;AACY;AACD;;AAE3B;AACf,cAAc,KAAK;;AAEnB;AACA,2BAA2B,0BAAQ,mBAAmB,0BAAQ;AAC9D;AACA;AACA,kBAAkB,OAAO;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,CAAC,IAAI,EAAC;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,cAAc,0BAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO,yBAAyB,SAAK;AAC9B,+BAA+B,WAAW;;;ACtDlC;AACf;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA,CAAC;;AAEM;AACP;AACA;;;ACb+B;AAC6B;;AAE7C;AACf,UAAU,aAAa,MAAM,WAAW;AACxC,CAAC;;AAEM;AACP;AACA;AACA;AACA;AACA;;AAEA,aAAa,QAAQ,aAAa,SAAK;AACvC,QAAQ,QAAQ;;AAEhB;AACA,eAAe,QAAQ;AACvB;AACA;AACA;;;ACrBe;AACf;AACA;AACA;AACA;AACA,CAAC;;;ACLc;AACf;AACA;AACA;AACA,CAAC;;;ACJ8B;;AAEhB;AACf,YAAY;AACZ,YAAY;AACZ;;AAEA;AACA;;AAEA;AACA;AACA,aAAa,SAAK;AAClB,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;;ACtBgC;;AAEjC;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;;AAEb;AACA;;AAEA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA,2BAA2B;AAC3B;AACA;AACA,wCAAwC;AACxC,2BAA2B;AAC3B;AACA,KAAK,OAAO;AACZ;AACA,cAAc,SAAS,MAAM,SAAS;AACtC;AACA;AACA;;AAEA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,OAAO;AACnC;AACA,SAAS;AACT,CAAC;;;AC/D8B;AACJ;AACa;AACX;AACI;AACA;AACA;AACI;AACuB;;AAE7C;AACf;AACA,wCAAwC,QAAQ;AAChD,0BAA0B,MAAM;AAChC,+BAA+B,4BAAK,eAAe,OAAG,IAAI,MAAM;AAChE,qBAAqB,oBAAK,GAAG,OAAG;AAChC,4BAA4B,IAAI;AAChC,QAAQ,aAAa,MAAM,WAAW;AACtC,2BAA2B,YAAY;AACvC,0FAA0F,MAAM;AAChG,QAAQ,MAAM;AACd,CAAC;;;ACrBc;AACf;AACA;AACA;AACA;AACA,CAAC;;;ACL8B;;AAEhB;AACf,UAAU,SAAG;AACb;AACA;AACA;AACA;AACA,CAAC;;;ACRc;AACf;AACA;AACA;AACA,CAAC;;;ACJD;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;ACzBkD;;AAEnD;AACA;AACA;AACA;;AAEO;AACP,+BAA+B,QAAQ;AACvC;AACA;AACA;AACA;AACA;AACA,SAAS,SAAS;AAClB;;AAEO;AACP,4BAA4B,QAAQ;AACpC;AACA;AACA,iEAAiE,QAAQ;AACzE;AACA,SAAS,SAAS;AAClB;;;ACxBkC;AACY;;AAE9C;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc,aAAa,MAAM,SAAS,GAAG,aAAa,MAAM,SAAS;AACzE,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,gCAAgC,gCAAgC;AAChE,cAAc,sDAAsD,MAAM,OAAO;AACjF,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,cAAc,qDAAqD,MAAM,OAAO;AAChF,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc,aAAa,MAAM,SAAS,GAAG,aAAa,MAAM,SAAS;AACzE,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,eAAe;AACf;AACA;AACA;AACA;AACA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CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,SAAS;AACtB,YAAY;AACZ;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,IAAI;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,cAAc,QAAQ;AACtB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,YAAY;AACvB,WAAW,QAAQ;AACnB,YAAY,OAAO;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,oBAAoB;AAC/B;AACA,WAAW,OAAO;AAClB,YAAY,OAAO;AACnB;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;AAMD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA,iBAAiB,sBAAsB;AACvC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA,oBAAoB;AACpB;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,YAAY,OAAO;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,cAAc,QAAQ;AACtB,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,aAAa,QAAQ;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,WAAW,YAAY;AACvB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;;AAEA,oBAAoB;AACpB;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL,GAAG;AACH;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,WAAW,QAAQ;AACnB,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA,cAAc;AACd;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,MAAM;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,MAAM;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,WAAW;AACtB,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc;AACd,mBAAmB;AACnB,kBAAkB;AAClB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;;AAEA,iBAAiB,qBAAqB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,cAAc,QAAQ;AACtB,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,4CAA4C,gBAAgB;;AAE5D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sEAAsE,gBAAgB;;AAEtF;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,YAAY;AACZ;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,cAAc,QAAQ;AACtB,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,YAAY;AACvB,WAAW,YAAY;AACvB,WAAW,OAAO;AAClB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,qBAAqB,yDAAyD;;AAE9E;AACA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,+BAA+B;AAC/B,2BAA2B;AAC3B,gCAAgC;;AAEhC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,gDAAgD;;AAEhD;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV,UAAU;AACV;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,QAAQ;AACtB,aAAa,MAAM;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,uCAAuC;;AAEvC;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc;AACd;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa,MAAM;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,cAAc;AAC5B;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;;AAEA;AACA;AACA,wBAAwB;AACxB,GAAG;;AAEH;;AAEA;AACA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,8BAA8B;AAC9B,4BAA4B;AAC5B;;AAEA,qCAAqC;AACrC;;AAEA;AACA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,WAAW;AACzB,cAAc,OAAO;AACrB,aAAa,WAAW;AACxB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB;AACA,eAAe,WAAW;AAC1B;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB;AACA,eAAe,WAAW;AAC1B;AACA,eAAe,cAAc;AAC7B;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB;AACA,eAAe,WAAW;AAC1B;AACA;AACA,cAAc,MAAM;AACpB;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,mBAAmB;AACjC;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB;AACA,eAAe,WAAW;AAC1B;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB;AACA,eAAe,WAAW;AAC1B;AACA,eAAe,mBAAmB;AAClC;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB;AACA,eAAe,WAAW;AAC1B;AACA;AACA,cAAc,aAAa;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA,cAAc,mBAAmB;AACjC;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB;AACA,eAAe,WAAW;AAC1B;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB;AACA,eAAe,WAAW;AAC1B;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB;AACA,eAAe,WAAW;AAC1B;AACA;AACA,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA,eAAe,QAAQ;AACvB;AACA,eAAe,WAAW;AAC1B;AACA,eAAe,SAAS;AACxB;AACA;AACA;AACA,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,QAAQ;AACtB,cAAc,QAAQ;AACtB,cAAc,YAAY;AAC1B,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB,cAAc,OAAO;AACrB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA,IAAI;AACJ;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,kBAAkB;AAC9B;AACA;;AAEA;AACA;AACA,YAAY,QAAQ;AACpB;AACA;;AAEA;AACA;AACA,YAAY,QAAQ;AACpB;AACA;;AAEA;AACA;AACA;AACA,YAAY,QAAQ;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA,kCAAkC;;AAElC;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA,kCAAkC;;AAElC;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;;AAEA;AACA;AACA,WAAW,WAAW;AACtB;;AAEA;AACA;AACA,WAAW,WAAW;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,4BAA4B;AACzC,aAAa,YAAY;AACzB,aAAa,OAAO;AACpB,cAAc,OAAO;AACrB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,cAAc;AACd,8BAA8B;;AAE9B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,2BAA2B;AAC3B,iDAAiD,uCAAuC,kDAAkD;AAC1I,KAAK;;AAEL;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;;AAEA,GAAG;AACH;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,SAAS;AACvB;AACA,cAAc,OAAO;AACrB;AACA,cAAc,OAAO;AACrB;AACA;;;AAGA;AACA;AACA;;AAEe,qEAAM,EAAC;AACtB;;;;;;;;;;;ACv9EA,mCAAqC;AAErC,yBAA8B;AAC9B,6CAAqD;AAErD;;GAEG;AACH;IASE;;;;;;OAMG;IACH,qBACS,QAA+E,EAC/E,KAAa,EACb,IAAY,EACX,EAAkB;QAHnB,gDAAgD,WAAwB,IAAM,CAAC;QAG9E,+BAAkB;QAHnB,aAAQ,GAAR,QAAQ,CAAuE;QAC/E,UAAK,GAAL,KAAK,CAAQ;QACb,SAAI,G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B,gEAA2F;AAAlF,2GAA+B;;;;;;;ACdxC;AACA;AACA;AACA;AACA;;AAEA,CAAC;AACD,IAAI,KAA4D;AAChE;AACA;AACA,CAAC,qBAAqB;;AAEtB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA,uBAAuB,SAAS;AAChC;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uBAAuB,yBAAyB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,YAAY;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C;AAC/C,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,IAAI;AACxB;AACA;;AAEA;AACA,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,wGAAwG,IAAI,wBAAwB,IAAI,uDAAuD,IAAI;AACnM,qEAAqE,IAAI;AACzE,4BAA4B;AAC5B;;AAEA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,0CAA0C,YAAY;AACtD;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,YAAY;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,4CAA4C,IAAI;;AAEhD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,gCAAgC;AAChC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mCAAmC;AAC/D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,oBAAoB;AAC3C;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,qBAAqB,EAAE;AACvB,qBAAqB,EAAE;AACvB,0BAA0B,EAAE;AAC5B;AACA;AACA;AACA,wBAAwB,IAAI;AAC5B,wBAAwB,IAAI;AAC5B,6BAA6B,IAAI;AACjC;AACA;AACA;AACA;AACA,wCAAwC,IAAI;AAC5C;AACA;AACA;AACA,mBAAmB,MAAM,wEAAwE,MAAM,mBAAmB,MAAM,qBAAqB,MAAM,EAAE,IAAI;AACjK;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,8CAA8C;AAC9C;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,cAAc;AACjC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,QAAQ;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,OAAO;AAC1B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,oBAAoB;AACpB,2BAA2B;AAC3B;;AAEA;AACA;AACA;AACA,mBAAmB,UAAU;AAC7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,oIAAkC;AAClD;AACA,aAAa;AACb;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,4BAA4B,EAAE,IAAI,EAAE;AACpC;AACA,4BAA4B,EAAE,IAAI,EAAE;AACpC;AACA;AACA,qCAAqC,EAAE;AACvC,+BAA+B,EAAE;AACjC,iCAAiC,EAAE;AACnC,+BAA+B,EAAE;AACjC,6BAA6B,EAAE,IAAI,EAAE;AACrC,4BAA4B,EAAE;AAC9B,mCAAmC,GAAG;AACtC,6BAA6B,EAAE;AAC/B,+BAA+B,EAAE,IAAI,EAAE;AACvC,8BAA8B,EAAE,IAAI,EAAE;AACtC,4BAA4B,EAAE;AAC9B,2BAA2B,EAAE;AAC7B,yBAAyB,EAAE;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wDAAwD,IAAI,0DAA0D,IAAI,qEAAqE,EAAE;AACjM;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,wCAAwC,OAAO;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,OAAO;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB,+BAA+B;AAClD;AACA;;AAEA;AACA,cAAc,OAAO;AACrB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,cAAc;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,gBAAgB;AACnC;AACA;AACA,sCAAsC;AACtC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,kCAAkC,kBAAkB;AACpD;;AAEA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA,aAAa;AACb;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,oBAAoB;AACvC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,cAAc;AACjC;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,SAAS;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,kBAAkB;AAClB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,oBAAoB;AACpB;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,2GAA2G;AAC3G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,iBAAiB;AACpC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,uBAAuB;AAC1C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB;AACtB;AACA;AACA,sBAAsB;AACtB;AACA;AACA,sBAAsB;AACtB;AACA;AACA,sBAAsB;AACtB;AACA;AACA,sBAAsB;AACtB;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mCAAmC,uBAAuB;AAC1D;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mCAAmC,uBAAuB;AAC1D;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,wBAAwB;AACxB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,oCAAoC,OAAO;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oCAAoC,OAAO;AAC3C;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oCAAoC,OAAO;AAC3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oCAAoC,OAAO;AAC3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oCAAoC,OAAO;AAC3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,OAAO;AAC3C;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oCAAoC,OAAO;AAC3C;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,wBAAwB,mBAAmB;AAC3C;AACA;;AAEA;AACA;AACA;;AAEA,qBAAqB,mBAAmB;AACxC;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,QAAQ;AAC3B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,oCAAoC,IAAI;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,KAAK;;AAEL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;;AAEL;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,CAAC;;;;;;;;;;;ACpjLU,eAAO,GAAG;IACnB,GAAG,EAAE,WAAW;IAChB,OAAO,EAAE,WAAW;IACpB,mBAAmB,EAAE,CAAC;CACvB,CAAC;;;;;;;;ACJW;AACb,eAAe,mBAAO,CAAC,GAAY;AACnC,oBAAoB,mBAAO,CAAC,GAAe;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA,oDAAoD,aAAa;AACjE,uDAAuD;AACvD,0DAA0D;AAC1D;AACA,CAAC;AACD;;;;;;;;;;AC3CA;IAAA;IAEA,CAAC;IADe,0BAAc,GAAG,gBAAgB,CAAC;IAClD,kBAAC;CAAA;AAFY,kCAAW;;;;;;;;;;ACOxB;IAAA;QACS,iBAAY,GAAY,KAAK,CAAC;QAC9B,aAAQ,GAAG,IAAI,CAAC;IA+EzB,CAAC;IA3EC,yCAAW,GAAX;QACE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,kDAAoB,GAApB;QACE,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAChC,CAAC;IAED,iDAAmB,GAAnB;QACE,OAAO,IAAI,CAAC,gBAAgB,CAAC;IAC/B,CAAC;IAED,4CAAc,GAAd,UAAsB,WAAkC,EAAE,IAAW;QACnE,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACnD,CAAC;IAED,gDAAkB,GAAlB,UAA0B,WAAkC,EAAE,IAAW;QACvE,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACnD,CAAC;IAED,2CAAa,GAAb,UACE,WAAkC,EAClC,IAAW,EACX,MAAqB,EACrB,OAAqB;QAErB,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACjD,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,4CAAc,GAAd,UAAsB,WAAkC,EAAE,IAAW,EAAE,OAAqB;QAC1F,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACjD,OAAO,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED,2CAAa,GAAb,UAAc,MAAmB;QAC/B,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;YACjC,OAAO,CAAC,EAAE,CAAC,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC;IAED,sDAAwB,GAAxB;QACE,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;YACjC,OAAO,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,+CAAiB,GAAjB;QACE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,kDAAoB,GAApB,cAAwB,CAAC;IAEzB,oDAAsB,GAAtB,cAA0B,CAAC;IAE3B,kDAAoB,GAApB,cAAwB,CAAC;IAEzB,mDAAqB,GAArB;QACE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,8CAAgB,GAAhB,UAAiB,aAAqB,IAAG,CAAC;IAE1C,8CAAgB,GAAhB;QACE,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,gDAAkB,GAAlB;QACE,OAAO,EAAE,CAAC;IACZ,CAAC;IAEO,iDAAmB,GAA3B,UAA4B,KAAa,EAAE,IAAqB;QAC9D,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QAC/B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAC/B,CAAC;IACH,0BAAC;AAAD,CAAC;AAjFY,kDAAmB;;;;;;;;;;;;;;;;;;;;ACPhC,yCAAsC;AACtC,sCAA2C;AAC3C,wDAAiG;AAEjG;IAAkC,gCAAQ;IAKxC,sBAAmB,OAAoB;QAAvC,YACE,kBAAM,cAAM,cAAO,CAAC,SAAS,EAAjB,CAAiB,CAAC,SAE/B;QAHkB,aAAO,GAAP,OAAO,CAAa;QAErC,KAAI,CAAC,sBAAsB,GAAG,IAAI,+CAAsB,CAAC,KAAI,EAAE,KAAI,CAAC,OAAO,CAAC,CAAC;;IAC/E,CAAC;IAED,oCAAa,GAAb;QACE,IAAI,MAAM,GAAG,IAAI,CAAC,sBAAsB,CAAC,aAAa,EAAE,CAAC;QACzD,iDAAiD;QACjD,gDAAgD;QAChD,2CAA2C;QAE3C,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,8BAAO,GAAP;QACE,OAAO,cAAc,CAAC;IACxB,CAAC;IAEM,mBAAM,GAAb,UAAc,OAAoB;QAChC,eAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACvB,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IAEM,uBAAU,GAAjB,UAAkB,QAAgB,EAAE,UAAyC;QAC3E,IAAI,MAAM,GAAG,+CAAsB,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;QAErE,iDAAiD;QACjD,gDAAgD;QAChD,2CAA2C;QAC3C,OAAO,IAAI,YAAY,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAES,sCAAe,GAAzB;QACE,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAtCa,sBAAS,GAAG,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IAuCvD,mBAAC;CAAA,CAxCiC,mBAAQ,GAwCzC;AAxCY,oCAAY;;;;;;;ACJzB,eAAe,mBAAO,CAAC,EAAc;AACrC,qBAAqB,mBAAO,CAAC,GAAmB;AAChD,kBAAkB,mBAAO,CAAC,GAAiB;AAC3C;;AAEA,YAAY,mBAAO,CAAC,EAAgB;AACpC;AACA;AACA;AACA;AACA;AACA,GAAG,YAAY;AACf;AACA;AACA;AACA;;;;;;;ACfA;AACA;AACA;;;;;;;ACFA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;;;;;;ACNA;AACA,cAAc,mBAAO,CAAC,GAAY;AAClC,cAAc,mBAAO,CAAC,EAAY;AAClC;AACA;AACA;;;;;;;ACLA,iBAAiB;;AAEjB;AACA;AACA;;;;;;;ACJA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACLA,aAAa,mBAAO,CAAC,GAAW;AAChC,UAAU,mBAAO,CAAC,GAAQ;AAC1B;AACA;AACA;;;;;;;ACJA,iBAAiB,mBAAO,CAAC,GAAiC,E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACA1D,4CAA8E;AAK9E,sCAA2C;AAC3C,mCAAqC;AACrC,gDAAqE;AACrE,yCAA8C;AAC9C,gDAAoE;AACpE,sCAAyC;AACzC,qDAAqE;AACrE,gDAAgH;AAChH,wDAAgF;AAChF,gDAA+D;AAC/D,0CAAgD;AAChD,sCAA2C;AAG3C;IASE,4BACS,IAAiB,EACjB,QAA2B,EAC3B,mBAAiC,EACjC,WAAoB;QAJ7B,iBAcC;QAbQ,SAAI,GAAJ,IAAI,CAAa;QACjB,aAAQ,GAAR,QAAQ,CAAmB;QAC3B,wBAAmB,GAAnB,mBAAmB,CAAc;QACjC,gBAAW,GAAX,WAAW,CAAS;QAXrB,mBAAc,GAA6B,EAAE,CAAC;QAC9C,YAAO,GAAoB,EAAE,CAAC;QAE5B,cAAS,GAAG,KAAK,CAAC;QAClB,aAAQ,GAAG,KAAK,CAAC;QACjB,iBAAY,GAAmB,EAAE,CAAC;QAQ1C,eAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACpB,eAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACxB,eAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;QAEnC,IAAI,CAAC,OAAO,GAAG,UAAC,GAAU,EAAE,GAA0B;YACpD,KAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACnC,CAAC,CAAC;QACF,QAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,yBAAW,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACrD,CAAC;IAEM,0CAAa,GAApB;QACE,OAAO,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC;IAC9C,CAAC;IAEM,yCAAY,GAAnB;QACE,OAAO,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC;IAC7C,CAAC;IAEM,0CAAa,GAApB,UAAqB,KAA6B;QAChD,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;SACtB;QAED,UAAI,CAAC,UAAU,EAAC,IAAI,WAAI,KAAK,EAAE;;IACjC,CAAC;IAEM,mCAAM,GAAb;QACE,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IACxB,CAAC;IAEM,0CAAa,GAApB;QACE,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,QAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,yBAAW,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YACzD,QAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,yBAAW,CAAC,oBAAoB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;YAClE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;SACrB;IACH,CAAC;IAES,8CAAiB,GAA3B,UAA4B,GAAU,EAAE,IAA2B,EAAE,oBAA6B;QAChG,eAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7B,eAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAE9B,4EAA4E;QAC5E,+EAA+E;QAC/E,6EAA6E;QAC7E,yCAAyC;QAEzC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEvC,IAAM,WAAW,GAAgB,GAAG,CAAC,MAAM,CAAC;QAC5C,IAAM,eAAe,GAAoB,qBAAS,CAAC,GAAG,CAAC,WAAW,EAAE,iCAAe,CAAC,CAAC;QACrF,eAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QAC/B,sFAAsF;QACtF,mIAAmI;QACnI,IAAI,CAAC,oBAAoB,EAAE;YACzB,oBAAoB,GAAG,eAAe,CAAC,eAAe,CAAC,GAAG,CAAC,iCAAe,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;SAC9F;QACD,IAAM,eAAe,GAAG,qBAAS,CAAC,GAAG,CAAC,WAAW,EAAE,iCAAe,CAAC,CAAC;QACpE,eAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QAE/B,IAAI,CAAC,iCAAiC,CAAC,IAAI,EAAE,eAAe,EAAE,oBAAoB,CAAC,CAAC;IACtF,CAAC;IAEa,8DAAiC,GAA/C,UACE,IAA2B,EAC3B,eAAgC,EAChC,oBAA4B;;;;;;;wBAGU,qBAAM,IAAI,CAAC,OAAO;;wBAAhD,YAAY,GAAkB,SAAkB;wBAEtD,eAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;wBAC5B,eAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;wBAEvB,2BAA2B,GAAG,IAAI,CAAC,mBAAmB,CAAC,WAAW,KAAK,kDAAwB,CAAC,cAAc,CAAC,IAAI,CAAC;wBAE1H,IAAI,YAAY,CAAC,gBAAgB,KAAK,IAAI,IAAI,2BAA2B,EAAE;4BACnE,WAAW,gBAAsB,IAAI,CAAC,mBAAmB,CAAE,CAAC;4BAClE,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,eAAe,EAAE,IAAI,CAAC,KAAK,EAAE,YAAY,EAAE,oBAAoB,CAAC,CAAC;4BACnG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;4BACpC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;yBACjC;;;;wBAED,IAAI,eAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAC,CAAC,CAAC;;;wBAGtB,KAAK,GAAG,oBAAO,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;wBACzD,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;wBAErC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;4BAC/B,IAAI,CAAC,KAAK,EAAE,CAAC;yBACd;;;;;KACF;IAEO,kCAAK,GAAb;QAAA,iBA0BC;QAzBC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,eAAM,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAE9D,aAAK,CAAC,KAAK,CAAC;gBACV,IAAI,KAAI,CAAC,WAAW,EAAE;oBACpB,KAAI,CAAC,QAAQ,CAAC,gBAAgB,CAAC,KAAI,CAAC,YAAY,CAAC,CAAC;iBACnD;gBACD,IAAM,eAAe,GAAG,gBAAG,CAAC,KAAI,CAAC,YAAY,EAAE,UAAC,WAAyB;oBACvE,OAAO,yCAAmB,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC;gBAClE,CAAC,CAAC,CAAC;gBACH,QAAE,CAAC,KAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,iCAAe,CAAC,WAAW,EAA8B;oBAC7E,YAAY,EAAE,eAAe;iBAC9B,CAAC,CAAC;gBACH,IAAI,KAAI,CAAC,YAAY,CAAC,MAAM,EAAE;oBAC5B,KAAI,CAAC,YAAY,CAAC,OAAO,CAAC,qBAAW;wBACnC,QAAE,CAAC,KAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,iCAAe,CAAC,mBAAmB,EAAuB;4BAC9E,KAAK,EAAE,kBAAkB;4BACzB,uBAAuB,EAAE,WAAW;yBACrC,CAAC,CAAC;oBACL,CAAC,CAAC,CAAC;iBACJ;YACH,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;IAEO,4CAAe,GAAvB,UACE,WAAyB,EACzB,eAAgC,EAChC,KAAa,EACb,YAA2B,EAC3B,oBAA6B;QAE7B,eAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC3B,eAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QAC/B,eAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACrB,eAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAE5B,IAAM,YAAY,GAAW,eAAe,CAAC,eAAe,CAAC,GAAG,CAAC,iCAAe,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QACnG,WAAW,CAAC,aAAa,GAAG,YAAY,CAAC,QAAQ,CAAC;QAClD,WAAW,CAAC,gBAAgB,GAAG,WAAW,CAAC,gBAAgB,IAAI,YAAY,CAAC,YAAY,CAAC;QACzF,WAAW,CAAC,mBAAmB;YAC7B,WAAW,CAAC,mBAAmB,IAAI,CAAC,YAAY,CAAC,YAAY,IAAI,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAClH,WAAW,CAAC,YAAY,GAAG,WAAW,CAAC,YAAY,IAAI,eAAe,CAAC,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC;QAC7G,WAAW,CAAC,SAAS,GAAG,oBAAoB,IAAI,YAAY,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,wGAAwG;QACvL,WAAW,CAAC,aAAa,GAAG,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC;QAC3C,WAAW,CAAC,UAAU,GAAG,KAAK,CAAC,gBAAgB,CAAC;QAChD,WAAW,CAAC,eAAe,GAAG,YAAY,CAAC,UAAU,CAAC;QACtD,WAAW,CAAC,YAAY,GAAG,YAAY,CAAC,QAAQ,CAAC;QACjD,WAAW,CAAC,UAAU,GAAG,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,eAAe,CAAC;QACnE,WAAW,CAAC,cAAc,GAAG,KAAK,CAAC,eAAe,CAAC;QACnD,WAAW,CAAC,cAAc,GAAG,YAAY,CAAC,SAAS,CAAC;QACpD,WAAW,CAAC,aAAa,GAAG,YAAY,CAAC,QAAQ,CAAC;QAClD,WAAW,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAEzC,mEAAmE;QACnE,0GAA0G;QAC1G,iFAAiF;QACjF,IAAI,KAAK,CAAC,OAAO,IAAI,SAAS,EAAE;YAC9B,iBAAI,CAAC,KAAK,CAAC,OAAO,EAAE,UAAC,KAAa,EAAE,GAAW,IAAK,QAAC,WAAW,CAAC,UAAU,CAAC,aAAW,GAAK,CAAC,GAAG,KAAK,CAAC,EAAlD,CAAkD,CAAC,CAAC;SACzG;QAED,IAAI,YAAY,CAAC,eAAe,IAAI,SAAS,IAAI,YAAY,CAAC,eAAe,CAAC,MAAM,IAAI,CAAC,EAAE;YACzF,WAAW,CAAC,UAAU,CAAC,iBAAiB,CAAC,GAAG,YAAY,CAAC,eAAe,CAAC;SAC1E;IACH,CAAC;IACH,yBAAC;AAAD,CAAC;AAlLY,gDAAkB;;;;;;;;;;ACnB/B,yCAAiD;AACjD,2CAAyD;AACzD,mCAA2B;AAC3B,0CAAkC;AAClC,sCAAwC;AAExC;IAAA;IA0EA,CAAC;IAzEe,2CAA2B,GAAzC,UAA0C,GAAc;QACtD,IAAM,qBAAqB,GAAG,eAAe,CAAC,uBAAuB,CAAC,GAAG,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAEnG,IAAI,qBAAqB,EAAE;YACzB,GAAG,CAAC,OAAO,EAAE,CAAC;YACd,QAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;YACvB,eAAe,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC;SAC/C;aAAM;YACL,GAAG,CAAC,MAAM,EAAE,CAAC;YACb,QAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC;SAC1B;IACH,CAAC;IAEa,uCAAuB,GAArC,UAAsC,IAAiB;QACrD,IAAM,UAAU,GAAG,eAAe,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAC3D,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,KAAK,CAAC;IACxE,CAAC;IAEa,2BAAW,GAAzB,UAA0B,IAAiB;QACzC,IAAM,UAAU,GAAG,eAAe,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAC3D,IAAI,CAAC,UAAU,EAAE;YACf,IAAI,eAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;YAClF,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SAC9B;QAED,IAAM,uBAAuB,GAAG,UAAU,CAAC,eAAe,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC,GAAG,CAAC;QAC/F,IAAI,uBAAuB,GAAG,CAAC,EAAE;YAC/B,OAAO;SACR;QAED,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,WAAW,GAAG,uBAAuB,CAAC,CAAC;IACnE,CAAC;IAEc,iCAAiB,GAAhC,UAAiC,IAAiB;QAChD,IAAM,WAAW,GAAG,eAAe,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QACzD,OAAO,iBAAI,CAAC,WAAW,EAAE,oBAAU;YACjC,IAAM,cAAc,GAAG,UAAU,CAAC,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC;YACpG,OAAO,CAAC,UAAU,CAAC,QAAQ,IAAI,CAAC,cAAc,CAAC;QACjD,CAAC,CAAC,CAAC;IACL,CAAC;IAEc,8BAAc,GAA7B,UAA8B,IAAiB;QAC7C,OAAO,QAAE,CAAC,IAAI,CAAC;aACZ,OAAO,CAAC,MAAI,eAAe,CAAC,QAAQ,EAAI,CAAC;aACzC,GAAG,CAAC,YAAE,IAAI,OAAY,qBAAS,CAAC,GAAG,CAAC,EAAE,EAAE,uBAAU,CAAC,EAAzC,CAAyC,CAAC,CAAC;IAC1D,CAAC;IAEc,wBAAQ,GAAvB;QACE,OAAO,qBAAS,CAAC,mBAAmB,CAAC,uBAAU,CAAC,CAAC;IACnD,CAAC;IAEc,wCAAwB,GAAvC,UAAwC,GAAc;QACpD,IAAM,IAAI,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC;QACtC,IAAM,yBAAyB,GAAG,eAAe,CAAC,+BAA+B,CAAC,IAAI,CAAC,CAAC;QAExF,yBAAyB,IAAI,eAAe,CAAC,yBAAyB,CAAC,GAAG,CAAC,CAAC;IAC9E,CAAC;IAEc,+CAA+B,GAA9C,UAA+C,IAAiB;QAC9D,IAAM,+BAA+B,GAAG,eAAe,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,MAAM,CACjF,oBAAU,IAAI,QAAC,UAAU,CAAC,OAAO,CAAC,oBAAoB,EAAxC,CAAwC,CACvD,CAAC;QAEF,OAAO,+BAA+B,CAAC,MAAM,KAAK,CAAC,CAAC;IACtD,CAAC;IAEc,yCAAyB,GAAxC,UAAyC,GAAc;QACrD,IAAM,WAAW,GAAG,qBAAS,CAAC,0BAA0B,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnE,IAAM,OAAO,GAAG,SAAO,WAAW,6CAAwC,eAAe,CAAC,QAAQ,EAAE,uGAC7D,WAAW,sCAAmC,CAAC;QAEtF,IAAI,eAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;IACH,sBAAC;AAAD,CAAC;AA1EY,0CAAe;;;;;;;;;;ACN5B,sCAA2C;AAC3C,qCAA0C;AAG1C,wCAAuC;AACvC,0CAAgD;AAEhD;;;GAGG;AACH;IAAA;QAOE,aAAQ,GAAY,KAAK,CAAC;QAC1B,aAAQ,GAAY,KAAK,CAAC;QAC1B,oBAAe,GAAY,KAAK,CAAC;IAsGnC,CAAC;IApGC,0BAAK,GAAL;QACE,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IACxB,CAAC;IAED,6CAAwB,GAAxB,UAAyB,QAAoB;QAC3C,eAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACxB,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW,CAAC;QACxC,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QAC5B,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC;IAC9C,CAAC;IAED,0BAAK,GAAL;QACE,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;QAC/B,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;QACvB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,6CAAwB,GAAxB;QACE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;IAED,mCAAc,GAAd,UAAe,KAAa,EAAE,KAAa;QACzC,eAAM,CAAC,oBAAoB,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACtC,IAAI,KAAK,GAAG,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAC5C,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;QACpB,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC;QAC1B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,sCAAiB,GAAjB;QACE,IAAI,KAAK,GAAW,SAAS,CAAC;QAC9B,IAAI,aAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,GAAG,CAAC,EAAE;YAC9C,KAAK,GAAG,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;SAClD;aAAM;YACL,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE;gBACxB,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;aAClD;SACF;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,8CAAyB,GAAzB,UAA0B,MAAc;QACtC,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,EAAE;YAC3B,OAAO,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;SACrD;aAAM;YACL,OAAO,SAAS,CAAC;SAClB;IACH,CAAC;IAEM,iBAAM,GAAb,UAAc,KAAU;QACtB,IAAI,qBAAQ,CAAC,KAAK,CAAC,EAAE;YACnB,OAAO,UAAU,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;SAC1C;aAAM,IAAI,qBAAQ,CAAC,KAAK,CAAC,EAAE;YAC1B,IAAI,sBAAsB,IAAI,KAAK,EAAE;gBACnC,OAAO,UAAU,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;aACjD;iBAAM;gBACL,OAAO,UAAU,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;aAC/C;SACF;aAAM;YACL,MAAM,IAAI,KAAK,CAAC,0BAA0B,GAAG,KAAK,CAAC,CAAC;SACrD;IACH,CAAC;IAEM,0BAAe,GAAtB,UAAuB,KAAa;QAClC,eAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAE/B,IAAI,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;QAClC,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC;QACzB,UAAU,CAAC,WAAW,GAAG,KAAK,CAAC;QAE/B,OAAO,UAAU,CAAC;IACpB,CAAC;IAEM,iCAAsB,GAA7B,UAA8B,YAA2B;QACvD,eAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAE5B,eAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAE5B,IAAI,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;QAClC,UAAU,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC;QACtC,UAAU,CAAC,WAAW,GAAG,aAAK,CAAC,MAAM,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC;QAChH,UAAU,CAAC,WAAW,GAAG,YAAY,CAAC,eAAe,CAAC;QACtD,UAAU,CAAC,aAAa,GAAG,aAAK,CAAC,eAAe,CAAC,YAAY,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACvI,UAAU,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC;QAEtC,OAAO,UAAU,CAAC;IACpB,CAAC;IAEM,+BAAoB,GAA3B,UAA4B,UAA4B;QACtD,eAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QAE1B,IAAI,UAAU,GAAG,IAAI,UAAU,EAAE,CAAC;QAClC,UAAU,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;QACpC,UAAU,CAAC,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC;QAChD,UAAU,CAAC,WAAW,GAAG,UAAU,CAAC,eAAe,CAAC;QAEpD,OAAO,UAAU,CAAC;IACpB,CAAC;IACH,iBAAC;AAAD,CAAC;AA/GY,gCAAU;;;;;;;;;;;;;;;;;;;;ACXvB,wCAA0C;AAC1C,+CAAkD;AAClD,4CAA4C;AAC5C,qCAAgC;AAEhC,mCAA2B;AAC3B,+BAAgC;AAEhC,0CAA0C;AAC1C,oFAAoF;AACpF,IAAM,YAAY,GAAG,0CAA0C,CAAC;AAChE,IAAM,UAAU,GAAG,GAAG,GAAG,YAAY,GAAG,MAAM,CAAC;AAkB/C;IAAmD,iDAAO;IACxD,uCAAmB,QAA4B,EAAS,OAAW,EAAS,UAAiB;QAA1E,uDAA4B;QAAS,qCAAW;QAAS,8CAAiB;QAA7F,YACE,iBAAO,SACR;QAFkB,cAAQ,GAAR,QAAQ,CAAoB;QAAS,aAAO,GAAP,OAAO,CAAI;QAAS,gBAAU,GAAV,UAAU,CAAO;;IAE7F,CAAC;IACH,oCAAC;AAAD,CAAC,CAJkD,iBAAO,GAIzD;AAJY,sEAA6B;AAM1C;IAAA;IAwCA,CAAC;IAvCQ,wCAAmB,GAA1B,UACE,MAAc,EACd,gBAAgC,EAChC,kBAAoC,EACpC,OAAiC;QAEjC,IAAM,IAAI,GAAG,IAAI,6BAA6B,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAChE,IAAM,SAAS,GAAG,yBAAyB,CAAC,MAAM,CAAC,CAAC;QACpD,IAAM,WAAW,GAAG,QAAE,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC/C,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;YAC1B,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,UAAC,IAAiB,EAAE,CAAS;gBAC/C,IAAM,IAAI,GAAG,QAAE,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC7B,IAAI,CAAC,SAAS,GAAG,+BAAc,CAAC,eAAe,CAC7C,IAAI,EACJ,4BAA4B,CAAC,IAAI,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,IAAI,CAAC,EAC9E,EAAE,EACF,IAAI,CAAC,QAAQ,CACd,CAAC;YACJ,CAAC,CAAC,CAAC;SACJ;aAAM;YACL,OAAO,oBAAoB,CAAC,mBAAmB,CAAC,MAAM,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,OAAO,CAAC,CAAC;SACxG;QACD,OAAO,SAAS,CAAC,SAAS,CAAC;IAC7B,CAAC;IAEM,wCAAmB,GAA1B,UACE,MAAc,EACd,gBAAgC,EAChC,kBAAoC,EACpC,OAAiC;QAEjC,IAAM,IAAI,GAAG,IAAI,6BAA6B,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAChE,OAAO,+BAAc,CAAC,eAAe,CACnC,MAAM,EACN,4BAA4B,CAAC,MAAM,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,IAAI,CAAC,EAChF,EAAE,EACF,IAAI,CAAC,QAAQ,CACd,CAAC;IACJ,CAAC;IACH,2BAAC;AAAD,CAAC;AAxCY,oDAAoB;AA0CjC,sCACE,WAAmB,EACnB,gBAAgC,EAChC,kBAAoC,EACpC,IAA6B;IAE7B,IAAM,OAAO,GAAG,EAAE,CAAC;IACnB,IAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC;IAE5F,CAAC,CAAC,IAAI,CAAC,gBAAgB,EAAE,UAAC,KAAe,EAAE,IAAY;QACrD,IAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC;aAC3C,MAAM,CAAC,KAAK,CAAC;aACb,OAAO,EAAE;aACT,UAAU,CAAC,gBAAgB,CAAC;aAC5B,GAAG,CAAC,aAAK,CAAC,oBAAoB,CAAC;aAC/B,MAAM,CAAC,QAAQ,CAAC;aAChB,KAAK,EAAE,CAAC;QAEX,IAAI,sBAAsB,CAAC,MAAM,KAAK,CAAC,EAAE;YACvC,OAAO;SACR;QAED,IAAM,KAAK,GAAG,KAAG,UAAU,GAAG,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,eAAU,YAAY,UAAO,CAAC;QAC5F,IAAM,YAAY,GAAG,yBAAW,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,CAAC;QACtG,IAAI,YAAY,IAAI,SAAS,IAAI,aAAK,CAAC,eAAe,CAAC,YAAY,CAAC,EAAE;YACpE,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SAC5B;IACH,CAAC,CAAC,CAAC;IAEH,CAAC,CAAC,IAAI,CAAC,kBAAkB,EAAE,UAAC,MAAM,EAAE,UAAU;QAC5C,IAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,KAAK,GAAG,UAAU,CAAC;QACvB,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,UAAC,QAAQ,EAAE,CAAC;YACxB,KAAK,IAAI,KAAK,GAAG,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;YACrE,IAAI,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;gBACzB,KAAK,IAAI,KAAK,CAAC;aAChB;YACD,KAAK,IAAI,YAAY,CAAC;YACtB,IAAI,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;gBACzB,KAAK,IAAI,KAAK,CAAC;aAChB;YACD,IAAI,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;gBACzB,KAAK,IAAI,GAAG,CAAC;aACd;QACH,CAAC,CAAC,CAAC;QACH,KAAK,IAAI,GAAG,CAAC;QACb,IAAM,YAAY,GAAG,yBAAW,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC,CAAC;QAC5G,IAAI,YAAY,IAAI,SAAS,IAAI,aAAK,CAAC,eAAe,CAAC,YAAY,CAAC,EAAE;YACpE,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SAC5B;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;SACpB,OAAO,EAAE;SACT,OAAO,EAAE;SACT,IAAI,CAAC,UAAC,SAAqB;QAC1B,OAAO,SAAS,CAAC,MAAM,CAAC;IAC1B,CAAC,CAAC;SACD,MAAM,CAAC,UAAC,SAAqB;QAC5B,OAAO,SAAS,CAAC,MAAM,CAAC;IAC1B,CAAC,CAAC;SACD,GAAG,CAAC,mBAAS;QACZ,IAAM,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC/C,IAAM,eAAe,GAAG,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACnD,IAAM,IAAI,GAAG,aAAa,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QACnD,IAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC;QACpE,OAAO,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE,CAAC,CAAC;IAC5D,CAAC,CAAC;SACD,KAAK,EAAE,CAAC;AACb,CAAC;AArED,oEAqEC;AAED,mCAAmC,MAAc;IAC/C,IAAM,SAAS,GAAG,QAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;IAC/B,SAAS,CAAC,SAAS,GAAG,MAAM,CAAC;IAC7B,OAAO,SAAS,CAAC;AACnB,CAAC;;;;;;;;;;ACvJD,qCAA0C;AAC1C,uCAA0C;AAC1C,sCAA2C;AAC3C,0CAA0C;AAE1C,2EAA2E;AAC3E,6EAA6E;AAC7E,IAAI,gBAA0C,CAAC;AAO/C;IAAA;IAkFA,CAAC;IAjFQ,aAAG,GAAV,UAAW,MAAoB;QAC7B,IAAM,UAAU,GAAW,aAAK,CAAC,aAAa,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QACrE,IAAM,QAAQ,GAAW,aAAK,CAAC,aAAa,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAEjE,0GAA0G;QAC1G,IAAI,aAAK,CAAC,gBAAgB,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,wCAAwC,CAAC,EAAE;YACrG,OAAO,SAAS,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;SAC5C;aAAM,IAAI,aAAK,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE;YAC3C,OAAO,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;SACxC;aAAM;YACL,OAAO;gBACL,gEAAgE;gBAChE,IAAI,EAAE,qBAAqB;gBAC3B,OAAO,EAAE,WAAC,CAAC,SAAS,CAAC;aACtB,CAAC;SACH;IACH,CAAC;IAEM,uBAAa,GAApB,UAAqB,UAAkB,EAAE,sBAA6B;QAA7B,sEAA6B;QACpE,qEAAqE;QACrE,iDAAiD;QACjD,IAAM,qBAAqB,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;QAEvD,IAAM,aAAa,GAAG,gBAAc,qBAAuB,CAAC;QAC5D,2EAA2E;QAC3E,IAAI,eAAe,GAAG,WAAC,CAAC,aAAa,CAAC,CAAC;QACvC,6GAA6G;QAC7G,mDAAmD;QACnD,IAAI,eAAe,CAAC,WAAW,EAAE,IAAI,aAAa,CAAC,WAAW,EAAE,EAAE;YAChE,eAAe,GAAG,sBAAsB,CAAC,CAAC,CAAC,WAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;SACvE;QAED,OAAO,IAAI,CAAC,uBAAuB,CAAC,YAAY,EAAE,qBAAqB,EAAE,eAAe,CAAC,CAAC;IAC5F,CAAC;IAEM,qBAAW,GAAlB,UAAmB,QAAgB,EAAE,sBAA6B;QAA7B,sEAA6B;QAChE,qEAAqE;QACrE,iDAAiD;QACjD,IAAI,mBAAmB,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;QAEjD,0EAA0E;QAC1E,sDAAsD;QACtD,IAAI,mBAAmB,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE;YACjC,mBAAmB,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;SACxD;QAED,IAAM,aAAa,GAAG,cAAY,mBAAqB,CAAC;QACxD,wEAAwE;QACxE,IAAI,eAAe,GAAG,WAAC,CAAC,aAAa,CAAC,CAAC;QACvC,IAAI,eAAe,CAAC,WAAW,EAAE,IAAI,aAAa,CAAC,WAAW,EAAE,EAAE;YAChE,2GAA2G;YAC3G,mDAAmD;YACnD,eAAe,GAAG,sBAAsB,CAAC,CAAC,CAAC,WAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;SACnE;QAED,OAAO,IAAI,CAAC,uBAAuB,CAAC,UAAU,EAAE,mBAAmB,EAAE,eAAe,CAAC,CAAC;IACxF,CAAC;IAEM,6BAAmB,GAA1B;QACE,IAAI,gBAAgB,IAAI,SAAS,EAAE;YACjC,gBAAgB,GAAG,EAAE,CAAC;YACtB,IAAI,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;YAChE,eAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;YAC/B,iBAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,aAAG;gBACvB,IAAI,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;oBACjC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,GAAG,CAAC,cAAc,EAAE,CAAC;iBACzE;qBAAM,IAAI,GAAG,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE;oBAC1C,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,GAAG,CAAC,cAAc,EAAE,CAAC;iBAC3E;YACH,CAAC,CAAC,CAAC;SACJ;QAED,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAEM,iCAAuB,GAA9B,UAA+B,SAAiB,EAAE,SAAiB,EAAE,OAAe;QAClF,OAAO;YACL,IAAI,EAAE,gBAAc,SAAS,SAAI,mBAAM,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAG;YACtE,OAAO,EAAE,mBAAM,CAAC,OAAO,CAAC;SACzB,CAAC;IACJ,CAAC;IACH,gBAAC;AAAD,CAAC;AAlFY,8BAAS;;;;;;;;;;ACftB,sCAA2C;AAC3C,mDAA0D;AAC1D,qCAA0C;AAW1C;;GAEG;AACH;IAAA;IAgDA,CAAC;IA5CQ,mCAAmB,GAA1B,UAA2B,IAAY,EAAE,MAAgD;QACvF,eAAe,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxC,eAAe,CAAC,sBAAsB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACvD,CAAC;IAOD;;;;OAIG;IACI,sCAAsB,GAA7B,UAA8B,IAAY,EAAE,MAA+B;QACzE,eAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAC9B,eAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAEtB,eAAe,CAAC,kCAAkC,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QACjE,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;IACzC,CAAC;IAED;;;;OAIG;IACI,yBAAS,GAAhB,UAAiB,IAAY;QAC3B,OAAO,aAAK,CAAC,0BAA0B,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IACzE,CAAC;IAED;;OAEG;IACI,0BAAU,GAAjB;QACE,OAAO,eAAe,CAAC,OAAO,CAAC;IACjC,CAAC;IAEc,kDAAkC,GAAjD,UAAkD,IAAY,EAAE,MAA+B;QAC7F,eAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QAC9B,eAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACtB,uCAAkB,CAAC,sBAAsB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC1D,CAAC;IA9Cc,uBAAO,GAAwD,EAAE,CAAC;IACnE,4BAAY,GAAa,EAAE,CAAC;IA8C5C,sBAAC;CAAA;AAhDY,0CAAe;;;;;;;;;;;;;;;;;;;;AChB5B,yCAAsG;AACtG,mDAA0D;AAC1D,8CAAgD;AAEhD,sCAA2C;AAC3C,mCAAqC;AACrC,+BAAgC;AAChC,8CAAwD;AAExD;;;;;;;GAOG;AACH;IAA2C,yCAAQ;IACjD;QAAA,YACE,iBAAO,SAIR;QAHC,oHAAoH;QAEpH,KAAI,CAAC,SAAS,CAAC,+BAAc,CAAC,2BAA2B,EAAE,CAAC,CAAC;;IAC/D,CAAC;IAEM,mDAAmB,GAA1B,UAA2B,MAAoB,EAAE,kBAAoD;QAApD,4DAAoD;QACnG,eAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACtB,IAAI,aAAa,GAAG,IAAI,4CAAiC,EAAE,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACtF,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,uCAAkB,CAAC,eAAe,CAAC,CAAC;QAElE,IAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,6BAAa,CAAC,mBAAmB,EAAE,CAAC;aAC3D,GAAG,CAAC,cAAI,IAAI,oCAAa,CAAC,WAAW,CAAC,IAAI,CAAC,EAA/B,CAA+B,CAAC;aAC5C,KAAK,EAAE,CAAC;QAEX,sCAAsC;QACtC,IAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC;aACvC,MAAM,CAAC,kBAAQ,IAAI,eAAQ,CAAC,SAAS,IAAI,IAAI,EAA1B,CAA0B,CAAC;aAC9C,MAAM,CAAC,kBAAQ,IAAI,eAAQ,CAAC,aAAa,IAAI,IAAI,EAA9B,CAA8B,CAAC;aAClD,KAAK,EAAE,CAAC;QAEX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC/C,IAAM,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;YAC7E,IAAI,MAAM,IAAI,IAAI,EAAE;gBAClB,OAAO,MAAM,CAAC;aACf;SACF;QAED,OAAO,IAAI,CAAC,mBAAmB,EAAE,CAAC;IACpC,CAAC;IAEM,yCAAS,GAAhB;QACE,IAAI,gBAAgB,GAAG,CAAC,CAAC,GAAG,CAAC,6BAAa,CAAC,mBAAmB,EAAE,EAAE,cAAI,IAAI,oCAAa,CAAC,WAAW,CAAC,IAAI,CAAC,EAA/B,CAA+B,CAAC,CAAC;QAC3G,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,gBAAgB,EAAE,UAAC,QAAkB,IAAK,eAAQ,CAAC,SAAS,EAAE,EAApB,CAAoB,CAAC,CAAC,CAAC;IAC1F,CAAC;IAEM,uCAAO,GAAd;QACE,OAAO,uBAAuB,CAAC;IACjC,CAAC;IAEM,mDAAmB,GAA1B;QACE,IAAI,cAAc,GAAG,QAAE,CAAC,KAAK,EAAE;YAC7B,SAAS,EAAE,aAAa;YACxB,IAAI,EAAE,SAAS;YACf,SAAS,EAAE,CAAC;SACb,CAAC,CAAC;QAEH,IAAI,UAAU,GAAG,QAAE,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,iBAAiB,EAAE,CAAC,CAAC;QAE3D,cAAc,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAErC,IAAI,OAAO,GAAG,QAAE,CAAC,KAAK,EAAE;YACtB,SAAS,EAAE,cAAc;SAC1B,CAAC,CAAC;QAEH,IAAI,eAAe,GAAG,QAAE,CAAC,KAAK,CAAC,CAAC;QAChC,eAAe,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QAC1C,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACnC,OAAO,eAAe,CAAC,EAAE,CAAC,SAAS,CAAC;IACtC,CAAC;IACH,4BAAC;AAAD,CAAC,CA9D0C,mBAAQ,GA8DlD;AA9DY,sDAAqB;;;;;;;;;;ACflC,mCAA6C;AAC7C,6CAAyD;AACzD,+BAAgC;AAChC,iDAAmE;AACnE,8CAAuE;AACvE,qDAA4E;AAC5E,sCAA8C;AAC9C,uCAA6C;AAE7C,IAAY,uBAGX;AAHD,WAAY,uBAAuB;IACjC,0DAA+B;IAC/B,4DAAiC;AACnC,CAAC,EAHW,uBAAuB,GAAvB,+BAAuB,KAAvB,+BAAuB,QAGlC;AAID;IAcE,4BAAmB,eAA2C,EAAS,cAAwC,EAAS,SAAc;QAAtI,iBAUC;QAVkB,oBAAe,GAAf,eAAe,CAA4B;QAAS,mBAAc,GAAd,cAAc,CAA0B;QAAS,cAAS,GAAT,SAAS,CAAK;QAT/H,aAAQ,GAAY,KAAK,CAAC;QACzB,mBAAc,GAAkB,EAAE,CAAC;QACnC,oBAAe,GAAkB,EAAE,CAAC;QAEpC,6BAAwB,GAAY,IAAI,CAAC;QACzC,8BAAyB,GAAgB,IAAI,CAAC;QAiF9C,kBAAa,GAAG;YACtB,KAAI,CAAC,QAAQ,IAAI,KAAI,CAAC,KAAK,EAAE,CAAC;QAChC,CAAC,CAAC;QA9EA,eAAM,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QAC/B,eAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QAC9B,eAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAEzB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QACnD,IAAI,CAAC,8BAA8B,EAAE,CAAC;QACtC,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACjC,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;IAED,sBAAY,4CAAY;aAAxB,UAAyB,IAAa;YACpC,IAAI,CAAC,IAAI,CAAC,yBAAyB,EAAE;gBACnC,OAAO;aACR;YACD,IAAI,CAAC,yBAAyB,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,CAAC;;;OAAA;IAEM,kDAAqB,GAA5B,UAA6B,OAAiB,EAAE,OAAO;QACrD,eAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACvB,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IACnE,CAAC;IAEM,mDAAsB,GAA7B,UAA8B,OAAiB,EAAE,OAAO;QACtD,eAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACvB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;IACpE,CAAC;IAEM,oCAAO,GAAd;QACE,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;QAC9B,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;QAC/B,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAChC,CAAC;IAEM,iCAAI,GAAX;QACE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC,eAAe,CAAC,gBAAgB,EAAE,CAAC;QACxC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,qBAAW;YACrC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,QAAE,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;IACxE,CAAC;IAEM,kCAAK,GAAZ;QACE,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,qBAAW;YACtC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAC5B,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;QACpC,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,QAAE,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC;IACzE,CAAC;IAEM,mDAAsB,GAA7B;QACE,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC;IACxC,CAAC;IAEM,gDAAmB,GAA1B,UAA2B,mBAAgC;QACzD,IAAI,CAAC,yBAAyB,GAAG,mBAAmB,CAAC;IACvD,CAAC;IAEO,2DAA8B,GAAtC;QAAA,iBAMC;QALC,IAAI,mCAAgB,EAAE;aACnB,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;aACxC,gBAAgB,CAAC,cAAM,QAAC,KAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,KAAI,CAAC,IAAI,EAAE,CAAC,EAA5C,CAA4C,CAAC;aACpE,SAAS,CAAC,WAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC;aAC5E,KAAK,EAAE,CAAC;IACb,CAAC;IAMO,sDAAyB,GAAjC;QACE,QAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,6BAAa,CAAC,cAAc,CAAC,wBAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;IAC9G,CAAC;IAEO,wDAA2B,GAAnC;QACE,QAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,6BAAa,CAAC,cAAc,CAAC,wBAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;IAC/G,CAAC;IAEO,2CAAc,GAAtB;QAAA,iBAIC;QAHC,QAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,2CAAoB,CAAC,IAAI,EAAE;YAC/C,KAAI,CAAC,2BAA2B,EAAE,CAAC;QACrC,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,gDAAmB,GAA3B;QACE,IAAI,IAAI,CAAC,wBAAwB,EAAE;YACjC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;YACvD,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC;YACzD,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,GAAG,kBAAkB,CAAC,8BAA8B,CAAC;YAC1F,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,kBAAkB,CAAC,yCAAyC,CAAC,CAAC;SAC7F;IACH,CAAC;IAEO,uCAAU,GAAlB;QACE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IAC3B,CAAC;IAEO,yCAAY,GAApB;QACE,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;IAC5B,CAAC;IAEO,gDAAmB,GAA3B;QACE,IAAI,IAAI,CAAC,wBAAwB,EAAE;YACjC,+EAA+E;YAC/E,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC;YACzD,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;YAC5C,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,kBAAkB,CAAC,yCAAyC,CAAC,CAAC;SAChG;IACH,CAAC;IAEO,iDAAoB,GAA5B;QAAA,iBASC;QARC,IAAI,eAAe,GAAG,QAAE,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,kBAAkB,CAAC,kCAAkC,EAAE,CAAC,CAAC;QACtG,yBAAW,CAAC,gBAAgB,CAAC,eAAe,CAAC,EAAE,EAAE,eAAe,EAAE;YAChE,IAAI,eAAe,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,IAAI,GAAG,EAAE;gBAC3C,eAAe,CAAC,MAAM,EAAE,CAAC;aAC1B;QACH,CAAC,CAAC,CAAC;QACH,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,cAAM,YAAI,CAAC,KAAK,EAAE,EAAZ,CAAY,CAAC,CAAC;QAChD,OAAO,eAAe,CAAC;IACzB,CAAC;IAEO,gDAAmB,GAA3B;QACE,IAAI,8BAA8B,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC,eAAe,CAAC;QACrF,IAAI,qBAAqB,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC,aAAa,CAAC;QAC1E,IAAI,CAAC,eAAe,GAAG,8BAA8B,CAAC,CAAC,CAAC,QAAE,CAAc,8BAA8B,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAC/G,IAAI,CAAC,MAAM,GAAG,QAAE,CAAC,qBAAqB,CAAC,CAAC;IAC1C,CAAC;IAEO,mDAAsB,GAA9B;QACE,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;SACnE;aAAM;YACL,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;SACtD;IACH,CAAC;IA9Ja,iDAA8B,GAAW,KAAK,CAAC;IAC/C,qDAAkC,GAAW,2BAA2B,CAAC;IACzE,4DAAyC,GAAW,kCAAkC,CAAC;IA6JvG,yBAAC;CAAA;AAhKY,gDAAkB;;;;;;;;;;;;;;;;;;;;AClB/B,0CAAwH;AACxH,6CAAqD;AACrD,sCAA2C;AAE3C,uCAA0C;AAC1C,iDAAgE;AAChE,0CAAwE;AACxE,mCAAqC;AACrC,4CAAsD;AACtD,qCAA0C;AAC1C,wDAAgF;AAChF,yCAA8C;AAE9C,gDAA4D;AAE5D,8CAAwD;AACxD,2CAAiD;AACjD,yDAA+E;AAC/E,iDAA+D;AAC/D,4DAAuG;AACvG,gDAA8D;AAuB9D,4BAA+B,OAAiB,EAAE,OAAW;IAC3D,IAAI,OAAO,IAAI,IAAI,EAAE;QACnB,OAAO,GAAQ,EAAE,CAAC;KACnB;IACK,OAAQ,CAAC,OAAO,GAAG,OAAO,CAAC;IACjC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;;;;;;;GAQG;AACH;IAAgC,8BAAS;IA6KvC;;;;;;;OAOG;IACH,oBACS,OAAoB,EACpB,OAA2B,EAClC,QAA6B,EACtB,MAAqB,EAC5B,iBAAyC;QAAzC,wDAA4B,UAAU,CAAC,EAAE;QAL3C,YAOE,kBAAM,OAAO,EAAE,iBAAiB,EAAE,QAAQ,CAAC,SAgB5C;QAtBQ,aAAO,GAAP,OAAO,CAAa;QACpB,aAAO,GAAP,OAAO,CAAoB;QAE3B,YAAM,GAAN,MAAM,CAAe;QAK5B,KAAI,CAAC,OAAO,GAAG,mCAAgB,CAAC,WAAW,CAAC,OAAO,EAAE,UAAU,CAAC,aAAa,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;QAEvG,IAAI,KAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,EAAE;YAC/B,KAAI,CAAC,yBAAyB,EAAE,CAAC;SAClC;QAED,KAAI,CAAC,MAAM,GAAG,KAAI,CAAC,MAAM,IAAI,KAAI,CAAC,aAAa,EAAE,CAAC;QAClD,eAAM,CAAC,MAAM,CAAC,KAAI,CAAC,MAAM,CAAC,CAAC;QAE3B,IAAI,iDAAuB,CAAC,qBAAqB,CAAC,KAAI,CAAC,OAAO,CAAC,UAAU,EAAE,KAAI,CAAC,MAAM,CAAC,IAAI,CAAC,aAAK,CAAC,iBAAiB,CAAC,KAAI,CAAC,QAAQ,EAAE,CAAC,EAAE;YACpI,KAAI,CAAC,UAAU,EAAE,CAAC;SACnB;aAAM,IAAI,KAAI,CAAC,OAAO,CAAC,aAAa,IAAI,IAAI,EAAE;YAC7C,KAAI,CAAC,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,KAAI,CAAC,OAAO,CAAC,CAAC;SACtD;;IACH,CAAC;IAEO,+BAAU,GAAlB;QACE,IAAI,wBAAwB,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC/C,IAAI,MAAgB,CAAC;QAErB,IAAI,oBAAO,CAAC,wBAAwB,CAAC,EAAE;YACrC,MAAM,GAAG,wBAAwB,CAAC;SACnC;aAAM,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;YACnC,IAAI,qBAAQ,CAAC,wBAAwB,CAAC,EAAE;gBACtC,MAAM,GAAG,gBAAG,CAAC,wBAAwB,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,UAAC,CAAS;oBAC7E,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;gBAClB,CAAC,CAAC,CAAC;aACJ;SACF;aAAM;YACL,wBAAwB,GAAG,wBAAwB,CAAC,QAAQ,EAAE,CAAC;YAC/D,MAAM,GAAG,CAAC,wBAAwB,CAAC,CAAC;SACrC;QACD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,mBAAmB,EAAE;YACjD,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;SAC3B;QACD,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC/B,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,IAAI,IAAI,EAAE;YACpC,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAChC;IACH,CAAC;IAED;;;;OAIG;IACI,6BAAQ,GAAf;QACE,IAAI,KAAK,GAAG,aAAK,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAU,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACzE,IAAI,CAAC,oBAAO,CAAC,KAAK,CAAC,IAAI,qBAAQ,CAAC,KAAK,CAAC,EAAE;YACtC,KAAK,GAAG,IAAI,CAAC;SACd;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;OAIG;IACI,mCAAc,GAArB,UAAsB,KAAa;QACjC,IAAM,OAAO,GAAG,QAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;QAC9B,IAAI,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAEtC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YACvB,4EAA4E;YAC5E,IAAM,MAAM,GAAG,iCAAe,CAAC,SAAS,CAAI,IAAI,CAAC,OAAO,CAAC,MAAM,OAAI,CAAC,IAAI,iCAAe,CAAC,SAAS,CAAC,KAAG,IAAI,CAAC,OAAO,CAAC,MAAQ,CAAC,CAAC;YAE5H,IAAI,aAAK,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;gBACxB,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;aAC3E;iBAAM;gBACL,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,YAAU,IAAI,CAAC,OAAO,CAAC,MAAM,2EAAwE,EACrG,iBAAI,CAAC,iCAAe,CAAC,UAAU,EAAE,CAAC,CACnC,CAAC;aACH;YAED,IAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACjE,IAAI,WAAW,EAAE;gBACf,OAAO,CAAC,YAAY,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;aAC5C;YACD,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,eAAe,EAAE;gBAChH,QAAQ,GAAG,yBAAW,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;aACxD;SACF;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;YAC1B,OAAO,CAAC,SAAS,GAAG,QAAQ,CAAC;SAC9B;aAAM;YACL,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;SACxD;QACD,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QAChD,OAAO,OAAO,CAAC;IACjB,CAAC;IAES,sCAAiB,GAA3B;QACE,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAEO,8CAAyB,GAAjC;QAAA,iBAcC;QAbC,IAAI,CAAC,OAAO,GAAG,mCAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;QACjH,IAAM,QAAQ,GAAG,iBAAI,CAAC,UAAU,CAAC,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,CAAC;QACtE,IAAM,MAAM,GAAG,mBAAM,CAAC,QAAQ,EAAE,mBAAS;YACvC,IAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,CAAC;YACnF,IAAI,gBAAgB,EAAE;gBACpB,IAAM,OAAO,GAAG,gBAAgB,CAAC,OAAO,CAAC;gBACzC,OAAO,OAAO,IAAI,IAAI,IAAI,qBAAQ,CAAC,OAAO,EAAE,KAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;aAClE;YACD,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,iBAAI,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,UAAC,KAAK,EAAE,GAAG;YACvE,OAAO,CAAC,qBAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,qCAAgB,GAAxB;QACE,IAAM,aAAa,GAAG,mCAAgB,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,EAAE,EAAE,CAAC,CAAC;QAC3F,IAAI,aAAK,CAAC,gBAAgB,CAAC,aAAa,CAAC,EAAE;YACzC,OAAO,mBAAM,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,IAAI,CAAC,GAAG,GAAG,aAAa,GAAG,GAAG,CAAC,CAAC,CAAC;SAChF;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;IACpC,CAAC;IAEO,gCAAW,GAAnB,UAAoB,IAAY,EAAE,MAAc;QAC9C,IAAM,eAAe,GAAyB;YAC5C,iBAAiB,EAAE,IAAI;YACvB,4BAA4B,EAAE,KAAK;YACnC,oBAAoB,EAAE,KAAK;YAC3B,oBAAoB,EAAE,KAAK;SAC5B,CAAC;QAEF,IAAI,MAAM,IAAI,MAAM,EAAE;YACpB,OAAO,qBAAS,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;SAC1E;aAAM,IAAI,MAAM,IAAI,UAAU,IAAI,MAAM,IAAI,eAAe,EAAE;YAC5D,OAAO,qBAAS,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,eAAe,CAAC,CAAC;SAC9E;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAEO,sCAAiB,GAAzB,UAA0B,MAAgB;QAA1C,iBASC;QARC,iBAAI,CAAC,MAAM,EAAE,UAAC,KAAK,EAAE,KAAK;YACxB,IAAI,KAAK,IAAI,SAAS,EAAE;gBACtB,KAAI,CAAC,iBAAiB,EAAE,CAAC,WAAW,CAAC,KAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;gBACjE,IAAI,KAAK,KAAK,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC/B,KAAI,CAAC,iBAAiB,EAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC;iBAC9F;aACF;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,sCAAiB,GAAzB;QACE,IAAM,OAAO,GAAG,QAAE,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,qBAAqB,EAAE,EAAE,mBAAM,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;QACnG,OAAO,OAAO,CAAC,EAAE,CAAC;IACpB,CAAC;IAES,4CAAuB,GAAjC;QACE,IAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACtC,QAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAC3C,2EAA2E;QAC3E,QAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;IACxC,CAAC;IAEO,qCAAgB,GAAxB,UAAyB,OAAoB,EAAE,kBAA0B,EAAE,kBAA0B;QACnG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,CAAC,CAAC;IACnE,CAAC;IAEO,+BAAU,GAAlB,UAAmB,KAAa;QAC9B,KAAkB,UAAgB,EAAhB,SAAI,CAAC,SAAS,EAAE,EAAhB,cAAgB,EAAhB,IAAgB;YAA7B,IAAI,KAAK;YACZ,IAAM,OAAO,GAAG,KAAK,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;YACtD,IAAI,OAAO,EAAE;gBACX,OAAO,OAAO,CAAC;aAChB;SACF;QACD,OAAO,uBAAU,CAAC,yBAAyB,CAAC,IAAI,CAAC,OAAO,CAAC,KAAe,EAAE,KAAK,CAAC,CAAC;IACnF,CAAC;IAEO,8BAAS,GAAjB;QAAA,iBAUC;QATC,IAAM,MAAM,GAAG,iCAAe,CAAC,+BAA+B,CAAC,IAAI,CAAC,eAAe,CAAC;aACjF,MAAM,CAAC,wDAA2B,CAAC;aACnC,MAAM,CAAC,eAAK,IAAI,QAAC,KAAK,CAAC,QAAQ,EAAf,CAAe,CAAC,CAAC;QAEpC,IAAM,oBAAoB,GAAG,MAAM,CAAC,MAAM,CAAC,eAAK,IAAI,YAAK,CAAC,OAAO,CAAC,EAAE,KAAK,KAAI,CAAC,OAAO,CAAC,KAAK,EAAvC,CAAuC,CAAC,CAAC;QAC7F,IAAI,oBAAoB,CAAC,MAAM,EAAE;YAC/B,OAAO,oBAAoB,CAAC;SAC7B;QACD,OAAO,MAAM,CAAC,MAAM,CAAC,eAAK,IAAI,YAAK,CAAC,OAAO,CAAC,KAAK,KAAK,KAAI,CAAC,OAAO,CAAC,KAAK,EAA1C,CAA0C,CAAC,CAAC;IAC5E,CAAC;IAED,sBAAY,2CAAmB;aAA/B;YACE,KAAkB,UAAgB,EAAhB,SAAI,CAAC,SAAS,EAAE,EAAhB,cAAgB,EAAhB,IAAgB;gBAA7B,IAAI,KAAK;gBACZ,IAAI,KAAK,CAAC,wBAAwB,EAAE;oBAClC,OAAO,IAAI,CAAC;iBACb;aACF;YACD,OAAO,KAAK,CAAC;QACf,CAAC;;;OAAA;IAEO,+BAAU,GAAlB,UAAmB,OAAoB,EAAE,kBAA0B,EAAE,kBAA0B;QAA/F,iBAUC;QATC,IAAM,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;QAEhC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YAClB,OAAO;SACR;QAED,IAAM,eAAe,GAAG,CAAC,CAAC,iBAAI,CAAC,MAAM,EAAE,eAAK,IAAI,YAAK,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,EAA1C,CAA0C,CAAC,CAAC;QAC5F,IAAM,YAAY,GAAG,cAAM,YAAI,CAAC,oBAAoB,CAAC,eAAe,EAAE,MAAM,EAAE,kBAAkB,CAAC,EAAtE,CAAsE,CAAC;QAClG,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,YAAY,CAAC,CAAC;IACzF,CAAC;IAEO,0CAAqB,GAA7B,UAA8B,OAAoB,EAAE,UAAmB,EAAE,KAAa,EAAE,YAAwB;QAC9G,IAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,WAAC,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,WAAC,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAC7E,IAAI,mCAAgB,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,KAAK,EAAE,CAAC;QAEpG,IAAI,UAAU,EAAE;YACd,QAAE,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;SACxC;QACD,QAAE,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IAC1C,CAAC;IAEO,yCAAoB,GAA5B,UAA6B,eAAwB,EAAE,MAAoC,EAAE,KAAa;QACxG,MAAM,CAAC,OAAO,CAAC,eAAK;YAClB,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IAEO,iCAAY,GAApB,UAAqB,KAAa;QAAlC,iBASC;QARC,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC;YACrC,kBAAkB,EAAE;gBAClB,YAAI,CAAC,cAAc,CAAC,cAAc,CAA2B,kDAAwB,CAAC,aAAa,EAAE;oBACnG,OAAO,EAAE,KAAI,CAAC,OAAO,CAAC,KAAK;oBAC3B,UAAU,EAAE,KAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE;oBACzC,UAAU,EAAE,KAAK,CAAC,WAAW,EAAE;iBAChC,CAAC;YAJF,CAIE;SACL,CAAC,CAAC;IACL,CAAC;IAxaM,aAAE,GAAG,YAAY,CAAC;IAElB,mBAAQ,GAAG;QAChB,8BAAc,CAAC;YACb,UAAU,EAAE,UAAU;SACvB,CAAC,CAAC;IACL,CAAC,CAAC;IAEF;;;OAGG;IACI,kBAAO,GAAuB;QACnC;;;;WAIG;QACH,KAAK,EAAE,mCAAgB,CAAC,gBAAgB,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAEpF;;;;;;;;WAQG;QACH,KAAK,EAAE,mCAAgB,CAAC,iBAAiB,CAAC,EAAE,cAAc,EAAE,UAAC,KAAK,EAAE,OAAO,IAAK,YAAK,IAAI,OAAO,CAAC,KAAK,EAAtB,CAAsB,EAAE,CAAC;QAEzG;;;;WAIG;QACH,SAAS,EAAE,mCAAgB,CAAC,kBAAkB,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;QAEvE;;;;;;;;WAQG;QACH,WAAW,EAAE,mCAAgB,CAAC,kBAAkB,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;QAEzE;;;;;;;WAOG;QACH,SAAS,EAAE,mCAAgB,CAAC,iBAAiB,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC;QAE3F;;;;;;;;;WASG;QACH,gBAAgB,EAAE,mCAAgB,CAAC,iBAAiB,CAAC,EAAE,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;QAEnG;;;;;WAKG;QACH,MAAM,EAAE,mCAAgB,CAAC,iBAAiB,EAAE;QAE5C;;WAEG;QACH,aAAa,EAAE,mCAAgB,CAAC,iBAAiB,CAAoC;YACnF,UAAU,EAAE;gBACV,IAAI,EAAE,mCAAgB,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACxE,MAAM,EAAE,mCAAgB,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAC1E,KAAK,EAAE,mCAAgB,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAEzE,MAAM,EAAE,mCAAgB,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAE1E,QAAQ,EAAE,mCAAgB,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,UAAU,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC1F,MAAM,EAAE,mCAAgB,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;gBAE5E,4BAA4B,EAAE,mCAAgB,CAAC,kBAAkB,CAC/D,kBAAkB,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,CAAC,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAC1F;gBACD,oBAAoB,EAAE,mCAAgB,CAAC,kBAAkB,CACvD,kBAAkB,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,CAAC,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAC1F;gBACD,oBAAoB,EAAE,mCAAgB,CAAC,kBAAkB,CACvD,kBAAkB,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,CAAC,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAC1F;gBACD,iBAAiB,EAAE,mCAAgB,CAAC,kBAAkB,CACpD,kBAAkB,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,CAAC,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAC3F;gBACD,kBAAkB,EAAE,mCAAgB,CAAC,kBAAkB,CACrD,kBAAkB,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,CAAC,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAC1F;gBACD,qBAAqB,EAAE,mCAAgB,CAAC,kBAAkB,CACxD,kBAAkB,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,CAAC,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAC1F;gBACD,iBAAiB,EAAE,mCAAgB,CAAC,kBAAkB,CACpD,kBAAkB,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,CAAC,EAAE,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC,CAC3F;gBACD,gBAAgB,EAAE,mCAAgB,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,CAAC,CAAC,CAAC;gBAEvH,aAAa,EAAE,mCAAgB,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;gBAChF,EAAE,EAAE,mCAAgB,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;gBACrE,WAAW,EAAE,mCAAgB,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC1F,YAAY,EAAE,mCAAgB,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;gBAEhF,GAAG,EAAE,mCAAgB,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;gBACtE,MAAM,EAAE,mCAAgB,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;gBACzE,KAAK,EAAE,mCAAgB,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;gBACxE,WAAW,EAAE,mCAAgB,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;gBAE9E,SAAS,EAAE,mCAAgB,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC;gBACxG,IAAI,EAAE,mCAAgB,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC;gBACnG,cAAc,EAAE,mCAAgB,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;gBAErF,MAAM,EAAE,mCAAgB,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAAC,SAAS,EAAE,aAAa,EAAE,YAAY,CAAC,EAAE,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,CAAC;aAChI;SACF,CAAC;QAEF;;;;;;WAMG;QACH,WAAW,EAAE,mCAAgB,CAAC,0BAA0B,EAAE;QAE1D;;;;;;;;;;;;;;;;;;;WAmBG;QACH,UAAU,EAAE,mCAAgB,CAAC,yBAAyB,EAAE;KACzD,CAAC;IAEK,wBAAa,GAAG,iBAAI,CAAC,UAAU,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IAE1D,wBAAa,GAAQ;QAC1B,aAAa,EAAE,UAAU,CAAC,OAAO,CAAC,aAAa;KAChD,CAAC;IA+PJ,iBAAC;CAAA,CA1a+B,qBAAS,GA0axC;AA1aY,gCAAU;AA4avB,+BAAc,CAAC,2BAA2B,CAAC,UAAU,CAAC,CAAC;;;;;;;;;;ACvevD,wDAAkH;AAElH,iCAAwC,MAAwB;IAC9D,MAAM,CAAC,cAAc,CAAmB,kDAAwB,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;AACxF,CAAC;AAFD,0DAEC;AAED,sBAA6B,MAAwB,EAAE,aAAqB;IAC1E,MAAM,CAAC,cAAc,CAA4B,kDAAwB,CAAC,WAAW,EAAE;QACrF,aAAa;KACd,CAAC,CAAC;AACL,CAAC;AAJD,oCAIC;;;;;;;;;;ACXD,6CAAqD;AACrD,uCAA0C;AAC1C,mCAAqC;AACrC,uCAA4C;AAC5C,yCAAgD;AAGhD;;GAEG;AACH;IAUE;;;;;;;OAOG;IACH,wBACS,QAA2F,EAC3F,GAAe,EACf,GAAY,EACX,KAAc;QAHf,gDAAsD,cAA8B,IAAM,CAAC;QAC3F,6BAAe;QADf,aAAQ,GAAR,QAAQ,CAAmF;QAC3F,QAAG,GAAH,GAAG,CAAY;QACf,QAAG,GAAH,GAAG,CAAS;QACX,UAAK,GAAL,KAAK,CAAS;QAEtB,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAtBa,uBAAQ,GAAtB;QACE,8BAAc,CAAC;YACb,cAAc,EAAE,cAAc;SAC/B,CAAC,CAAC;IACL,CAAC;IAoBD;;OAEG;IACI,8BAAK,GAAZ;QACE,IAAI,CAAC,eAAe,EAAE,CAAC,KAAK,GAAG,EAAE,CAAC;QAClC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAED;;;OAGG;IACI,mCAAU,GAAjB;QACE,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;;OAGG;IACI,iCAAQ,GAAf;QACE,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC,KAAK,CAAC;IACtC,CAAC;IAED;;;OAGG;IACI,oCAAW,GAAlB;QACE,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;IAC9F,CAAC;IAED;;;OAGG;IACI,sCAAa,GAApB;QACE,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;IAC5F,CAAC;IAED;;;;;;OAMG;IACI,iCAAQ,GAAf,UAAgB,KAAa;QAC3B,IAAI,IAAI,CAAC,GAAG,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE;YAChC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;SAClB;QACD,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE;YACpB,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;SAClB;QACD,IAAI,CAAC,eAAe,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;QAChD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IAED;;;OAGG;IACI,8BAAK,GAAZ;QACE,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAEO,qCAAY,GAApB;QACE,IAAM,cAAc,GAAG,QAAE,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,uBAAuB,EAAE,CAAC,CAAC;QACzE,IAAM,WAAW,GAAG,QAAE,CAAC,OAAO,EAAE;YAC9B,SAAS,EAAE,oBAAoB;YAC/B,IAAI,EAAE,MAAM;YACZ,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,WAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;SAC9C,CAAC,CAAC;QAEH,IAAM,KAAK,GAAG,QAAE,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC,CAAC;QACxD,IAAM,OAAO,GAAG,QAAE,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,kBAAkB,EAAE,EAAE,mBAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACrF,eAAM,CAAC,wBAAwB,CAAC,OAAO,CAAC,EAAE,EAAE,sBAAsB,CAAC,CAAC;QACpE,IAAM,SAAS,GAAG,QAAE,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,oBAAoB,EAAE,EAAE,mBAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC3F,eAAM,CAAC,wBAAwB,CAAC,SAAS,CAAC,EAAE,EAAE,wBAAwB,CAAC,CAAC;QACxE,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACzB,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC3B,cAAc,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACtC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAChC,IAAI,CAAC,OAAO,GAAG,cAAc,CAAC,EAAE,CAAC;IACnC,CAAC;IAEO,mCAAU,GAAlB;QAAA,iBAiBC;QAhBC,IAAM,EAAE,GAAG,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACtD,QAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE;YACjB,KAAI,CAAC,QAAQ,CAAC,KAAI,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,IAAM,IAAI,GAAG,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAC1D,QAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE;YACnB,KAAI,CAAC,QAAQ,CAAC,KAAI,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;QAEH,IAAM,WAAW,GAAqB,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrE,QAAE,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE;YAC1B,IAAI,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE;gBACrC,KAAI,CAAC,QAAQ,CAAC,KAAI,CAAC,CAAC;aACrB;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,wCAAe,GAAvB;QACE,OAAyB,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACxE,CAAC;IACH,qBAAC;AAAD,CAAC;AAxIY,wCAAc;;;;;;;;;;;;;;;;;;;;ACV3B,oDAA0D;AAE1D,mCAAqC;AACrC,qDAAyE;AAIzE,gDAAqE;AACrE,yCAA8C;AAC9C,gDAA+D;AAC/D,+BAAgC;AAEhC;IAAuD,qDAAkB;IAOvE,2CAAmB,IAAiB,EAAS,QAA2B,EAAS,mBAAiC,EAAS,WAAW;QAAtI,YACE,kBAAM,IAAI,EAAE,QAAQ,EAAE,mBAAmB,EAAE,WAAW,CAAC,SAMxD;QAPkB,UAAI,GAAJ,IAAI,CAAa;QAAS,cAAQ,GAAR,QAAQ,CAAmB;QAAS,yBAAmB,GAAnB,mBAAmB,CAAc;QAAS,iBAAW,GAAX,WAAW;QAN/H,wBAAkB,GAAG,IAAI,CAAC;QAIzB,kBAAY,GAAG,EAAE,CAAC;QAIxB,KAAI,CAAC,mBAAmB,GAAG;YACzB,KAAI,CAAC,cAAc,EAAE,CAAC;QACxB,CAAC,CAAC;QACF,MAAM,CAAC,gBAAgB,CAAC,cAAc,EAAE,KAAI,CAAC,mBAAmB,CAAC,CAAC;QAClE,QAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,2CAAoB,CAAC,IAAI,EAAE,cAAM,YAAI,CAAC,UAAU,EAAE,EAAjB,CAAiB,CAAC,CAAC;;IAClE,CAAC;IAES,6DAAiB,GAA3B,UAA4B,CAAQ,EAAE,IAA2B;QAAjE,iBAmBC;QAlBC,IAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACzB,sEAAsE;QACtE,qFAAqF;QACrF,uDAAuD;QACvD,IAAM,WAAW,GAA6B,CAAC,CAAC,MAAM,CAAC;QACvD,IAAM,eAAe,GAAoB,qBAAS,CAAC,GAAG,CAAC,WAAW,EAAE,iCAAe,CAAC,CAAC;QACrF,IAAI,CAAC,kBAAkB,CAAC,eAAe,CAAC,eAAe,CAAC,GAAG,CAAC,iCAAe,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/F,IAAI,CAAC,aAAa,GAAG,IAAI,OAAO,CAAC,iBAAO;YACtC,KAAI,CAAC,cAAc,GAAG;gBACpB,IAAI,CAAC,KAAI,CAAC,qBAAqB,EAAE,EAAE;oBACjC,OAAO,CAAC,KAAI,CAAC,CAAC;oBACd,iBAAM,iBAAiB,aAAC,KAAK,EAAE,IAAI,EAAE,KAAI,CAAC,YAAY,CAAC,CAAC;iBACzD;YACH,CAAC,CAAC;YACF,CAAC,CAAC,KAAK,CAAC;gBACN,KAAI,CAAC,cAAc,EAAE,CAAC;YACxB,CAAC,EAAE,KAAI,CAAC,kBAAkB,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,wDAAY,GAAnB;QACE,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,IAAI,CAAC,cAAc,EAAE,CAAC;SACvB;IACH,CAAC;IAEM,4DAAgB,GAAvB,UAAwB,GAAW,EAAE,OAAY;QAC/C,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,UAAC,WAAyB;YAClD,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;QACxC,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,UAAU,EAAE;YACxC,IAAI,CAAC,mBAAmB,CAAC,UAAU,GAAG,EAAE,CAAC;SAC1C;QACD,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;IACrD,CAAC;IAEM,4DAAgB,GAAvB,UAAwB,QAA+B;QACrD,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,UAAC,WAAyB;YAClD,WAAW,CAAC,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC;YACxC,WAAW,CAAC,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC;QACzC,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,mBAAmB,CAAC,WAAW,GAAG,QAAQ,CAAC,IAAI,CAAC;QACrD,IAAI,CAAC,mBAAmB,CAAC,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC;IACtD,CAAC;IAEM,8DAAkB,GAAzB,UAA0B,KAAa;QACrC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;IAC5B,CAAC;IAEM,yDAAa,GAApB;QACE,iBAAM,aAAa,WAAE,CAAC;QACtB,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC5B,MAAM,CAAC,mBAAmB,CAAC,cAAc,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;YACrE,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC;SACtC;IACH,CAAC;IAEO,sDAAU,GAAlB;QACE,MAAM,CAAC,mBAAmB,CAAC,cAAc,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACvE,CAAC;IAEO,0DAAc,GAAtB;QACE,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,EAAE;YACjC,IAAI,CAAC,YAAY,EAAE,CAAC;SACrB;IACH,CAAC;IAEO,iEAAqB,GAA7B;QACE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnB,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,IAAI,CAAC,MAAM,EAAE,CAAC;gBACd,OAAO,IAAI,CAAC;aACb;iBAAM;gBACL,OAAO,KAAK,CAAC;aACd;SACF;aAAM;YACL,OAAO,IAAI,CAAC;SACb;IACH,CAAC;IACH,wCAAC;AAAD,CAAC,CAhGsD,uCAAkB,GAgGxE;AAhGY,8EAAiC;;;;;;;;;;ACZ9C,oHAAoH;AACpH;IAAA;IA+DA,CAAC;IA5DQ,UAAG,GAAV,UAAW,IAAY,EAAE,KAAa,EAAE,UAAmB;QACzD,IAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC;QAC/B,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE;YAChC,2DAA2D;YAC3D,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;SAC7D;aAAM;YACL,yCAAyC;YACzC,EAAE;YACF,qDAAqD;YACrD,8CAA8C;YAC9C,4BAA4B;YAC5B,EAAE;YACF,iDAAiD;YACjD,uCAAuC;YACvC,+BAA+B;YAC/B,IAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACpC,WAAW,CAAC,KAAK,EAAE,CAAC;YACpB,IAAI,MAAM,GAAG,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAEzC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;YAEpE,0DAA0D;YAC1D,wCAAwC;YACxC,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,EAAE;gBACzD,+BAA+B;gBAC/B,MAAM,GAAG,GAAG,GAAG,IAAI,CAAC;gBACpB,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;aACrE;SACF;IACH,CAAC;IAEc,kBAAW,GAA1B,UAA2B,IAAY,EAAE,KAAa,EAAE,UAAmB,EAAE,MAAe;QAC1F,IAAM,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACrE,IAAM,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,cAAY,MAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QACxD,OAAO,KAAG,IAAI,CAAC,MAAM,GAAG,IAAI,SAAI,KAAK,GAAG,OAAO,GAAG,YAAY,2BAAwB,CAAC;IACzF,CAAC;IAEc,wBAAiB,GAAhC,UAAiC,UAAkB;QACjD,OAAO,eAAa,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,UAAU,CAAC,CAAC,WAAW,EAAI,CAAC;IACxE,CAAC;IAEM,UAAG,GAAV,UAAW,IAAY;QACrB,IAAM,MAAM,GAAG,KAAG,IAAI,CAAC,MAAM,GAAG,IAAI,MAAG,CAAC;QACxC,IAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACtC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAClC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;YACd,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;gBAC1B,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;aAC9B;YAED,IAAI,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;gBAC1B,OAAO,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;aAC7C;SACF;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,YAAK,GAAZ,UAAa,IAAY;QACvB,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IA7Dc,aAAM,GAAW,QAAQ,CAAC;IA8D3C,aAAC;CAAA;AA/DY,wBAAM;;;;;;;;;;;;;;;;;;;;ACDnB,yCAA8C;AAG9C,gDAA4D;AAC5D,mDAAiE;AACjE,+CAA2D;AAC3D,sCAA2C;AAC3C,4CAAsG;AACtG,sDAA2E;AAC3E,mCAAqC;AACrC,sCAAsE;AAGtE,qCAA0C;AAC1C,qDAAuE;AACvE,qDAA4D;AAC5D,sDAA8D;AAC9D,wDAA+F;AAC/F,+DAAgF;AAChF,+BAAgC;AAChC,6CAAqD;AACrD,oDAA0D;AAC1D,mEAAwF;AACxF,6CAAqD;AACrD,gDAAoF;AACpF,2CAAoD;AACpD,qDAA8D;AAC9D,qDAAyE;AAkBzE;;;;;;;;;;GAUG;AAEH;IAA+B,6BAAS;IA8JtC;;;;;;OAMG;IACH,mBAAmB,OAAoB,EAAS,OAA+B,EAAS,QAA6B;QAArE,sCAA+B;QAA/E,YACE,kBAAM,OAAO,EAAE,SAAS,CAAC,EAAE,EAAE,QAAQ,CAAC,SA+CvC;QAhDkB,aAAO,GAAP,OAAO,CAAa;QAAS,aAAO,GAAP,OAAO,CAAwB;QAAS,cAAQ,GAAR,QAAQ,CAAqB;QAEnH,KAAI,CAAC,OAAO,GAAG,mCAAgB,CAAC,oBAAoB,CAAC,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAElF,KAAI,CAAC,gBAAgB,EAAE,CAAC;QAExB,IAAI,KAAI,CAAC,WAAW,IAAI,IAAI,EAAE;YAC5B,KAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;YAC5E,KAAI,CAAC,MAAM,CAAC,KAAK,CACf,kJAAgJ,EAChJ,KAAI,CAAC,OAAO,CACb,CAAC;;SAEH;aAAM;YACL,KAAI,CAAC,OAAO,CAAC,KAAK,GAAG,KAAI,CAAC,WAAW,CAAC,KAAK,CAAC;YAC5C,KAAI,CAAC,WAAW,CAAC,kBAAkB,CAAC,kBAAQ;gBAC1C,KAAI,CAAC,OAAO,CAAC,KAAK,GAAG,QAAQ,CAAC;gBAC9B,KAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,WAAW,GAAG,QAAQ,CAAC;YACrE,CAAC,CAAC,CAAC;SACJ;QAED,KAAI,CAAC,yBAAyB,EAAE,CAAC;QACjC,eAAM,CAAC,MAAM,CAAC,KAAI,CAAC,MAAM,CAAC,CAAC;QAE3B,QAAE,CAAC,KAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,yBAAW,CAAC,aAAa,EAAE,UAAC,CAAC,EAAE,IAA6B,IAAK,YAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAA9B,CAA8B,CAAC,CAAC;QAClH,KAAI,CAAC,IAAI,CAAC,aAAa,CAAC,yBAAW,CAAC,UAAU,EAAE,UAAC,IAA0B,IAAK,YAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAA3B,CAA2B,CAAC,CAAC;QAC7G,KAAI,CAAC,IAAI,CAAC,aAAa,CAAC,2CAAoB,CAAC,6BAA6B,EAAE,cAAM,YAAI,CAAC,gBAAgB,EAAE,EAAvB,CAAuB,CAAC,CAAC;QAE3G,IAAI,KAAI,CAAC,OAAO,CAAC,sBAAsB,IAAI,KAAI,CAAC,yBAAyB,EAAE;YACzE,KAAI,CAAC,IAAI,CAAC,aAAa,CAAC,iCAAe,CAAC,mBAAmB,EAAE,UAAC,IAAyB,IAAK,YAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAA7B,CAA6B,CAAC,CAAC;SAC5H;QAED,mGAAmG;QACnG,wEAAwE;QACxE,IAAI,CAAC,KAAI,CAAC,qBAAqB,EAAE;YAC/B,IAAI,gBAAgB,GAAG,QAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,qBAAS,CAAC,mBAAmB,CAAC,6CAAqB,CAAC,CAAC,CAAC;YACpG,IAAI,gBAAgB,EAAE;gBACpB,KAAI,CAAC,qBAAqB,GAAG,gBAAgB,CAAC,qBAAS,CAAC,mBAAmB,CAAC,6CAAqB,CAAC,CAAC,CAAC;aACrG;SACF;QAED,IAAI,KAAI,CAAC,qBAAqB,EAAE;YAC9B,KAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,6CAAqB,CAAC,cAAc,CAAC,SAAS,EAAE,KAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YACvG,IAAI,OAAK,GAAG,KAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,aAAK,CAAC,UAAU,CAAC,SAAS,GAAG,6CAAqB,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC;YACjI,QAAE,CAAC,KAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,OAAK,EAAE,UAAC,CAAC,EAAE,IAA+B,IAAK,YAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAjC,CAAiC,CAAC,CAAC;SACpG;QAED,KAAI,CAAC,cAAc,EAAE,CAAC;;IACxB,CAAC;IAlNM,kBAAQ,GAAf;QACE,8BAAc,CAAC;YACb,kBAAkB,EAAE,uCAAkB;YACtC,iCAAiC,EAAE,qEAAiC;YACpE,wBAAwB,EAAE,kDAAwB;YAClD,mBAAmB,EAAE,yCAAmB;YACxC,mBAAmB,EAAE,yCAAmB;YACxC,oBAAoB,EAAE,2CAAoB;YAC1C,SAAS,EAAE,SAAS;SACrB,CAAC,CAAC;IACL,CAAC;IA0MD;;;;;;;;;;;;;;;;;;;OAmBG;IACI,kCAAc,GAArB,UAAyB,WAAkC,EAAE,IAAO;QAClE,IAAI,CAAC,MAAM,CAAC,cAAc,CAAI,WAAW,EAAE,IAAI,CAAC,CAAC;IACnD,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACI,sCAAkB,GAAzB,UAA6B,WAAkC,EAAE,IAAO;QACtE,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IACpD,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACI,kCAAc,GAArB,UAAyB,WAAkC,EAAE,IAAO,EAAE,OAAmC,EAAE,MAAqB;QAA1D,oCAAuB,IAAI,CAAC,OAAO;QACvG,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IACjE,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACI,iCAAa,GAApB,UACE,WAAkC,EAClC,IAAgC,EAChC,MAAoB,EACpB,OAAmC;QAAnC,oCAAuB,IAAI,CAAC,OAAO;QAEnC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAChE,CAAC;IAED;;;;;;;;;OASG;IACI,oCAAgB,GAAvB,UAAwB,aAAqB;QAC3C,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;IAC9C,CAAC;IAED;;;OAGG;IACI,oCAAgB,GAAvB;QACE,OAAO,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;IACxC,CAAC;IAED;;;OAGG;IACI,sCAAkB,GAAzB;QACE,OAAO,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;IAC1C,CAAC;IAED;;OAEG;IACI,0BAAM,GAAb;QACE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;SACxE;QACD,iBAAM,MAAM,WAAE,CAAC;QACf,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACjC,IAAI,CAAC,6BAA6B,EAAE,CAAC;QACrC,IAAI,CAAC,sBAAsB,EAAE,CAAC,aAAa,EAAE,CAAC;IAChD,CAAC;IAED;;;;OAIG;IACI,kCAAc,GAArB;QACE,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,YAAY,yCAAmB,EAAE;YAC/D,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0DAA0D,CAAC,CAAC;SACrF;QACD,IAAI,2CAAoB,EAAE,CAAC,KAAK,EAAE,CAAC;QACnC,IAAI,CAAC,sBAAsB,EAAE,CAAC,YAAY,EAAE,CAAC;IAC/C,CAAC;IAED;;OAEG;IACI,2BAAO,GAAd;QACE,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;SACzE;QACD,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,MAAM,CAAC,sBAAsB,EAAE,CAAC;QACrC,IAAI,CAAC,MAAM,GAAG,IAAI,yCAAmB,EAAE,CAAC;QACxC,IAAI,CAAC,6BAA6B,EAAE,CAAC;QACrC,IAAI,CAAC,sBAAsB,EAAE,CAAC,cAAc,EAAE,CAAC;QAC/C,iBAAM,OAAO,WAAE,CAAC;IAClB,CAAC;IAEO,iDAA6B,GAArC;QACE,IAAI,CAAC,eAAe,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC;IACpD,CAAC;IAED;;;;;;;;;OASG;IACI,sCAAkB,GAAzB,UAA0B,IAAyB;QACjD,IAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC;QACpD,IAAI;YACI,MAAO,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACzC;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qEAAmE,aAAa,YAAO,KAAK,OAAI,CAAC,CAAC;SACrH;IACH,CAAC;IAES,+CAA2B,GAArC;QACE,OAAO,IAAI,qCAAiB,CAAC;YAC3B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,QAAQ;YACjC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY;SACxC,CAAC,CAAC;IACL,CAAC;IAEO,kCAAc,GAAtB;QACE,IAAM,IAAI,GAAG,IAAI,2CAAoB,EAAE,CAAC;QAExC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,IAAI,CAAC,QAAQ,GAAG,uBAAU,CAAC,UAAU,EAAE,CAAC;SACzC;IACH,CAAC;IAEO,6CAAyB,GAAjC;QACE,IAAI,aAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;YACjD,IAAI,QAAQ,GAAG,IAAI,CAAC,2BAA2B,EAAE,CAAC;YAClD,IAAI,yBAAyB,SAAa,CAAC;YAC3C,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE;gBAC7B,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;oBACpC,yBAAyB,GAAG,IAAI,CAAC,IAAI,CAAC;iBACvC;qBAAM;oBACL,yBAAyB,GAAG,IAAI,CAAC,OAAO,CAAC;iBAC1C;aACF;YAED,IAAI,gBAAgB,GAAG,QAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,qBAAS,CAAC,0BAA0B,CAAC,gBAAgB,CAAC,CAAC,CAAC;YACtG,IAAI,CAAC,0BAA0B,CAAC,QAAQ,EAAE,yBAAyB,EAAE,gBAAgB,CAAC,CAAC;SACxF;aAAM;YACL,IAAI,CAAC,MAAM,GAAG,IAAI,yCAAmB,EAAE,CAAC;SACzC;IACH,CAAC;IAEO,8CAA0B,GAAlC,UAAmC,QAA2B,EAAE,yBAAsC,EAAE,gBAAyB;QAC/H,IAAI,gBAAgB,EAAE;YACpB,IAAI,CAAC,MAAM,GAAG,IAAI,6DAA6B,CAC7C,QAAQ,EACR,yBAAyB,EACzB,IAAI,CAAC,OAAO,CAAC,IAAI,EACjB,IAAI,CAAC,OAAO,CAAC,eAAe,EAC5B,IAAI,CAAC,OAAO,CAAC,SAAS,EACtB,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAC7B,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAChC,IAAI,CAAC,OAAO,CAAC,SAAS,EACtB,IAAI,CAAC,OAAO,CAAC,WAAW,EACxB,IAAI,CAAC,WAAW,EAAE,CACnB,CAAC;SACH;aAAM;YACL,IAAI,CAAC,MAAM,GAAG,IAAI,yCAAmB,CACnC,QAAQ,EACR,yBAAyB,EACzB,IAAI,CAAC,OAAO,CAAC,IAAI,EACjB,IAAI,CAAC,OAAO,CAAC,eAAe,EAC5B,IAAI,CAAC,OAAO,CAAC,SAAS,EACtB,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAC7B,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAChC,IAAI,CAAC,OAAO,CAAC,SAAS,EACtB,IAAI,CAAC,OAAO,CAAC,WAAW,EACxB,IAAI,CAAC,WAAW,EAAE,CACnB,CAAC;SACH;IACH,CAAC;IAEO,oCAAgB,GAAxB;QACE,IAAI,CAAC,8BAA8B,EAAE,CAAC;QACtC,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,EAAE;YAC5B,IAAI,CAAC,4CAA4C,EAAE,CAAC;SACrD;IACH,CAAC;IAEO,kDAA8B,GAAtC;QACE,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,EAAE;YAC9B,IAAI,CAAC,WAAW,GAAG,IAAI,yBAAW,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;SACvF;IACH,CAAC;IAEO,gEAA4C,GAApD;QACE,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC;YAEpD,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC;SAC7D;QAED,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC,eAAe,EAAE;YACtD,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;SACjG;IACH,CAAC;IAED,sBAAY,sCAAe;aAA3B;YACE,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,QAAQ,IAAI,+BAAc,CAAC,eAAe,CAAC;QACjF,CAAC;;;OAAA;IAEO,uCAAmB,GAA3B,UAA4B,IAA6B;QACvD,eAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAEpB,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;IACvD,CAAC;IAEO,0CAAsB,GAA9B,UAA+B,IAA+B;QAC5D,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;IACtC,CAAC;IAEO,oCAAgB,GAAxB,UAAyB,IAA0B;QACjD,eAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAEpB,IAAI,CAAC,MAAM,CAAC,cAAc,CACxB,kDAAwB,CAAC,UAAU,EACnC;YACE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACnB,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE;YACjB,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE;YACjB,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE;YACjB,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;YAC1B,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO;SACjC,EACD,IAAI,CAAC,OAAO,CACb,CAAC;IACJ,CAAC;IAED,sBAAY,gDAAyB;aAArC;YACE,IAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC;YACpD,IAAI,CAAC,aAAa,EAAE;gBAClB,OAAO,KAAK,CAAC;aACd;YACD,IAAI,CAAO,MAAO,CAAC,aAAa,CAAC,EAAE;gBACjC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kEAAgE,aAAa,oBAAiB,CAAC,CAAC;gBACjH,OAAO,KAAK,CAAC;aACd;YACD,OAAO,IAAI,CAAC;QACd,CAAC;;;OAAA;IAEa,gBAAM,GAApB,UAAqB,OAAoB,EAAE,OAA0B,EAAE,QAA4B;QACjG,IAAI,QAAQ,GAAG,qBAAS,CAAC,sBAAsB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC9D,IAAI,KAAK,GAAkB,EAAE,CAAC;QAC9B,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,QAAE,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;QACpD,IAAI,CAAC,QAAE,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,qBAAS,CAAC,0BAA0B,CAAC,gBAAgB,CAAC,CAAC,EAAE;YACjF,KAAK,GAAG,IAAI,CAAC,2CAA2C,CAAC,KAAK,CAAC,CAAC;SACjE;QACD,KAAK,CAAC,IAAI,CAAC,QAAE,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,qBAAS,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QAC1E,IAAI,QAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE;YAC5B,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SACrB;QACD,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAEzB,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE;YACrB,OAAO,SAAS,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;SACzD;aAAM,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3B,OAAO,IAAI,2CAAoB,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,YAAE,IAAI,gBAAS,CAAC,SAAS,CAAC,EAAE,EAAE,OAAO,EAAE,QAAQ,CAAC,EAA1C,CAA0C,CAAC,CAAC,CAAC;SACjG;aAAM;YACL,OAAO,IAAI,yCAAmB,EAAE,CAAC;SAClC;IACH,CAAC;IAEc,qDAA2C,GAA1D,UAA2D,KAAoB;QAC7E,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,iBAAO;YAC5B,OAAO,QAAE,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,qBAAS,CAAC,0BAA0B,CAAC,gBAAgB,CAAC,CAAC,KAAK,SAAS,CAAC;QACnG,CAAC,CAAC,CAAC;IACL,CAAC;IAEc,mBAAS,GAAxB,UAAyB,OAAoB,EAAE,OAA0B,EAAE,QAA4B;QACrG,6EAA6E;QAC7E,yDAAyD;QACzD,8BAA8B;QAC9B,IAAI,cAAc,GAAG,qBAAS,CAAC,GAAG,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;QAC7D,IAAI,cAAc,YAAY,SAAS,EAAE;YACvC,OAAmB,cAAe,CAAC,MAAM,CAAC;SAC3C;aAAM;YACL,OAAO,IAAI,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC,MAAM,CAAC;SACzD;IACH,CAAC;IAEO,oCAAgB,GAAxB;QACE,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;YACrB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qDAAqD,CAAC,CAAC;YACxE,IAAI,CAAC,OAAO,EAAE,CAAC;SAChB;IACH,CAAC;IAEO,8BAAU,GAAlB;QACE,IAAM,UAAU,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,IAAI,MAAM,CAAC,UAAU,IAAU,SAAU,CAAC,YAAY,CAAC,CAAC;QAC7H,IAAM,oBAAoB,GAAS,SAAU,CAAC,oBAAoB,CAAC;QACnE,OAAO,UAAU,KAAK,CAAC,CAAC,IAAI,oBAAoB,CAAC;IACnD,CAAC;IA7lBM,YAAE,GAAG,WAAW,CAAC;IAcxB,sGAAsG;IACtG,+DAA+D;IAE/D;;;OAGG;IACI,iBAAO,GAAsB;QAClC;;;;WAIG;QACH,IAAI,EAAE,mCAAgB,CAAC,iBAAiB,EAAE;QAE1C;;;;WAIG;QACH,eAAe,EAAE,mCAAgB,CAAC,iBAAiB,EAAE;QAErD;;;;WAIG;QACH,KAAK,EAAE,mCAAgB,CAAC,iBAAiB,EAAE;QAE3C;;;;;;;;WAQG;QACH,QAAQ,EAAE,mCAAgB,CAAC,iBAAiB,CAAC;YAC3C,cAAc,EAAE,eAAK;gBACnB,IAAI,CAAC,KAAK,EAAE;oBACV,OAAO,qCAAiB,CAAC,wBAAwB,CAAC,+BAAc,CAAC,eAAe,CAAC,CAAC;iBACnF;gBAED,IAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;gBAExD,IAAI,QAAQ,EAAE;oBACL,0CAAY,CAAyB;oBAC5C,OAAO,YAAY,GAAG,OAAO,CAAC;iBAC/B;gBAED,OAAO,KAAK,CAAC;YACf,CAAC;SACF,CAAC;QAEF;;;;;;;;;WASG;QACH,SAAS,EAAE,mCAAgB,CAAC,kBAAkB,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;QAEvE;;;;;;;;;;;;;WAaG;QACH,SAAS,EAAE,mCAAgB,CAAC,iBAAiB,CAAC,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC;QAE1E;;;;;;;WAOG;QACH,gBAAgB,EAAE,mCAAgB,CAAC,iBAAiB,EAAE;QAEtD;;;;;;;WAOG;QACH,mBAAmB,EAAE,mCAAgB,CAAC,iBAAiB,EAAE;QACzD,WAAW,EAAE,mCAAgB,CAAC,kBAAkB,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;QAExE;;;;;;WAMG;QACH,YAAY,EAAE,mCAAgB,CAAC,iBAAiB,EAAE;QAElD;;;;;;WAMG;QACH,sBAAsB,EAAE,mCAAgB,CAAC,kBAAkB,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;QAEpF;;;;;;;;;WASG;QACH,gBAAgB,EAAE,mCAAgB,CAAC,iBAAiB,CAAC,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC;KACpF,CAAC;IA2cJ,gBAAC;CAAA,CA/lB8B,qBAAS,GA+lBvC;AA/lBY,8BAAS;;;;;;;;;;ACxDtB,0DAA2F;AAE3F;IAAA;IA4CA,CAAC;IAvCQ,+CAAqB,GAA5B,UAA6B,IAAS,EAAE,kBAAuB;QAC7D,OAAO,qDAAyB,CAAC,4BAA4B,CAAC,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;IACzH,CAAC;IAEM,8CAAoB,GAA3B,UAA4B,IAAS;QACnC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAChD,CAAC;IAEM,+CAAqB,GAA5B,UAA6B,IAAS;QACpC,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACjD,CAAC;IAEM,wDAA8B,GAArC,UAAsC,IAAS;QAC7C,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IAC1D,CAAC;IAEM,2CAAiB,GAAxB,UAAyB,IAAS;QAChC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACzC,CAAC;IAEM,6CAAmB,GAA1B,UAA2B,IAAS;QAClC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC5C,CAAC;IAEM,4CAAkB,GAAzB,UAA0B,IAAS;QACjC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAC1C,CAAC;IAEM,8CAAoB,GAA3B,UAA4B,IAAS;QACnC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAC7C,CAAC;IAEM,qDAA2B,GAAlC,UAAmC,IAAS;QAC1C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IACnD,CAAC;IAEM,uDAA6B,GAApC,UAAqC,IAAS;QAC5C,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;IACtD,CAAC;IA1Cc,4CAAkB,GAAW,kBAAkB,CAAC;IAChD,6CAAmB,GAAW,oBAAoB,CAAC;IACnD,sDAA4B,GAAW,4BAA4B,CAAC;IAyCrF,gCAAC;CAAA;AA5CY,8DAAyB;;;;;;;;;ACHtC,iCAAiC;;;;;;;;;;;;AAIjC,8CAA8C;AAM9C;IAAuC,qCAAY;IACjD,2BAAmB,KAAY,EAAS,UAAsB,EAAS,0BAAmC;QAA1G,YACE,kBAAM,KAAK,EAAE,UAAU,CAAC,SACzB;QAFkB,WAAK,GAAL,KAAK,CAAO;QAAS,gBAAU,GAAV,UAAU,CAAY;QAAS,gCAA0B,GAA1B,0BAA0B,CAAS;;IAE1G,CAAC;IAEM,qCAAS,GAAhB;QACE,iBAAM,SAAS,YAAC;YACd,eAAe,EAAE,IAAI,CAAC,0BAA0B;YAChD,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB;SAC9C,CAAC,CAAC;IACL,CAAC;IACH,wBAAC;AAAD,CAAC,CAXsC,2BAAY,GAWlD;AAXY,8CAAiB;;;;;;;;;;ACR9B,uCAA0C;AAC1C,uCAAoD;AAEvC,oBAAY,GAAG,aAAa,CAAC;AAC7B,iBAAS,GAAG,SAAS,CAAC;AAEtB,aAAK,GAAe;IAC/B,gBAAgB,EAAE,CAAC,MAAM,EAAE,cAAc,CAAC;IAC1C,QAAQ,EAAE;QACR,YAAY,EAAE,oBAAoB;QAClC,cAAc,EAAE,OAAO;QACvB,YAAY,EAAE,oBAAoB;QAClC,cAAc,EAAE,OAAO;QACvB,MAAM,EAAE,wBAAwB;QAChC,IAAI,EAAE,UAAC,KAAa,EAAE,GAAY,EAAE,UAAsB;YACxD,IAAM,KAAK,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,oBAAY,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,KAAK,GAAG,iBAAS,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;YACzH,IAAI,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAChC,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,KAAK,IAAI,CAAC,EAAE;gBACvC,MAAM,GAAG,IAAI,CAAC;aACf;YACD,IAAM,MAAM,GAAG,IAAI,eAAM,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;YAChF,IAAI,MAAM,CAAC,SAAS,EAAE,IAAI,GAAG,IAAI,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;gBACnE,OAAO,IAAI,yBAAgB,CAAC,MAAM,CAAC,CAAC;aACrC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;KACF;CACF,CAAC;;;;;;;;;;AC1BF;IAAA;IAEA,CAAC;IADe,uCAAoB,GAAG,sBAAsB,CAAC;IAC9D,yBAAC;CAAA;AAFY,gDAAkB;;;;;;;;;;;;;;;;;;;;ACH/B,sCAAwC;AACxC,wCAA0C;AAC1C,qCAAuC;AACvC,wCAAuC;AAkBvC;IAA6C,kDAAO;IAApD;QAAA,qEAGC;QAFC,cAAQ,GAAW,CAAC,CAAC;;IAEvB,CAAC;IAAD,qCAAC;AAAD,CAAC,CAH4C,iBAAO,GAGnD;AAED;IAAA;IAuBA,CAAC;IAtBQ,8BAAgB,GAAvB,UAAwB,KAAa,EAAE,OAAkC;QACvE,IAAI,aAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE;YAClC,OAAO,EAAE,CAAC;SACX;QACD,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAEtB,eAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAEvB,OAAO,GAAG,IAAI,8BAA8B,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAE9D,IAAI,QAAQ,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC;QACzD,IAAI,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;QAE7B,IAAI,aAAK,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YAC1C,QAAQ,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;SAClC;QAED,IAAI,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;QACrE,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC;QAEzB,OAAO,GAAG,CAAC;IACb,CAAC;IACH,oBAAC;AAAD,CAAC;AAvBY,sCAAa;;;;;;;;;;AC1B1B,mCAA6C;AAC7C,sCAA8C;AAC9C;IAIE,kCAAY,aAAqB,EAAS,OAAY;QAAZ,YAAO,GAAP,OAAO,CAAK;QACpD,eAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QAC/B,eAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAEvB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAS,aAAa,qBAAkB,CAAC,CAAC;QAChE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAC,sBAAsB,CAAC,CAAC;IACzE,CAAC;IAEM,uCAAI,GAAX;QACE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAC,4BAA4B,CAAC,CAAC;IAC/E,CAAC;IAEM,wCAAK,GAAZ;QACE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,wBAAwB,CAAC,4BAA4B,CAAC,CAAC;IAClF,CAAC;IAEM,0CAAO,GAAd;QACE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;IACxB,CAAC;IAEM,uCAAI,GAAX;QACE,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IAC5C,CAAC;IAEM,uCAAI,GAAX;QACE,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IAC/C,CAAC;IA7Ba,+CAAsB,GAAG,uBAAuB,CAAC;IACjD,qDAA4B,GAAW,8BAA8B,CAAC;IA6BtF,+BAAC;CAAA;AA/BY,4DAAwB;;;;;;;;;;ACArC,0CAAwC;AAExC;IAAA;IA6BA,CAAC;IA5Be,6CAAqB,GAAnC,UAAoC,SAA2B,EAAE,MAAoB;QACnF,IAAI,sBAAsB,GAAG,IAAI,CAAC;QAClC,IAAI,CAAC,SAAS;YAAE,OAAO,IAAI,CAAC;QAC5B,iBAAI,CAAC,SAAS,EAAE,UAAC,OAAuB;YACtC,IAAI,gBAAgB,GAAG,KAAK,CAAC;YAC7B,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;gBACnB,gBAAgB,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC;aACtD;iBAAM;gBACL,iBAAI,CAAC,OAAO,CAAC,MAAM,EAAE,eAAK;oBACxB,IAAI,CAAC,gBAAgB,EAAE;wBACrB,IAAM,UAAU,GAAsB,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;wBAChE,IAAM,WAAW,GAAG,uBAAuB,CAAC,oBAAoB,CAAC,UAAU,CAAC,CAAC;wBAC7E,gBAAgB,GAAG,uBAAuB,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;qBACxE;gBACH,CAAC,CAAC,CAAC;aACJ;YACD,sBAAsB,GAAG,sBAAsB,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;QACvH,CAAC,CAAC,CAAC;QACH,OAAO,sBAAsB,CAAC;IAChC,CAAC;IAEc,4CAAoB,GAAnC,UAAoC,UAA6B;QAC/D,OAAO,OAAO,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;IACpE,CAAC;IAEc,+BAAO,GAAtB,UAAuB,WAAqB,EAAE,KAAa;QACzD,OAAO,iBAAI,CAAC,WAAW,EAAE,oBAAU,IAAI,iBAAU,CAAC,WAAW,EAAE,IAAI,KAAK,CAAC,WAAW,EAAE,EAA/C,CAA+C,CAAC,IAAI,SAAS,CAAC;IACvG,CAAC;IACH,8BAAC;AAAD,CAAC;AA7BY,0DAAuB;;;;;;;;;;ACJpC,+BAAgC;AAEhC;IAAA;IAsBA,CAAC;IAnBC,kCAAkC;IACpB,4BAAgB,GAA9B,UAA+B,OAAoB,EAAE,mBAA2B,EAAE,QAAQ;QACxF,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,gBAAM;YAC1B,IAAI,MAAM,IAAI,EAAE,EAAE;gBAChB,mBAAmB,GAAG,mBAAmB,CAAC,WAAW,EAAE,CAAC;aACzD;YACD,OAAO,CAAC,gBAAgB,CAAC,MAAM,GAAG,mBAAmB,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;IACL,CAAC;IAED,kCAAkC;IACpB,+BAAmB,GAAjC,UAAkC,OAAoB,EAAE,mBAA2B,EAAE,QAAQ;QAC3F,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,gBAAM;YAC1B,IAAI,MAAM,IAAI,EAAE,EAAE;gBAChB,mBAAmB,GAAG,mBAAmB,CAAC,WAAW,EAAE,CAAC;aACzD;YACD,OAAO,CAAC,mBAAmB,CAAC,MAAM,GAAG,mBAAmB,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC7E,CAAC,CAAC,CAAC;IACL,CAAC;IApBc,oBAAQ,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;IAqB7D,kBAAC;CAAA;AAtBY,kCAAW;;;;;;;;;;;;;;;;;;;;ACFxB,yBAA2B;AAC3B,4CAAgF;AAChF,gEAA+F;AAC/F,6CAAqD;AACrD,yCAAiD;AACjD,0CAA2E;AAE3E,sCAA2C;AAC3C,sCAA6E;AAC7E,gDAAuF;AACvF,uCAA0C;AAC1C,mCAAqC;AACrC,wDAAkG;AAClG,yCAA8C;AAE9C,gDAA4D;AAC5D,8CAAwD;AACxD,2DAAwE;AACxE,yDAAoE;AAgBpE;;;;;;;;;;;GAWG;AACH;IAA8B,4BAAS;IAmKrC;;;;;;;;OAQG;IACH,kBAAmB,OAAoB,EAAS,OAA0B,EAAS,QAA6B;QAAhH,YACE,kBAAM,OAAO,EAAE,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,SAwDtC;QAzDkB,aAAO,GAAP,OAAO,CAAa;QAAS,aAAO,GAAP,OAAO,CAAmB;QAAS,cAAQ,GAAR,QAAQ,CAAqB;QAG9G,IAAI,OAAO,YAAY,gBAAgB,EAAE;YACvC,KAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;SACrE;QAED,KAAI,CAAC,OAAO,GAAG,mCAAgB,CAAC,oBAAoB,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QACjF,IAAI,qDAAyB,CAAC,KAAI,CAAC,CAAC,WAAW,EAAE,CAAC;QAElD,QAAE,CAAC,KAAI,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,6BAA6B,EAAE,KAAI,CAAC,OAAO,CAAC,iBAAiB,IAAI,KAAK,CAAC,CAAC;QACrG,KAAI,CAAC,QAAQ,GAAG,yBAAc,CAC5B,OAAO,EACP,IAAI,iBAAO,CAAC,OAAO,EAAE;YACnB,KAAK,EAAE,kBAAkB;YACzB,IAAI,EAAE,iBAAiB;YACvB,MAAM,EAAE,IAAI;YACZ,IAAI,EAAE,OAAO;SACd,CAAC,EACF;YACE,MAAM,EAAE,IAAI;SACb,CACF,CAAC;QAEF,IAAM,KAAK,GAAG,QAAE,CAAC,KAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtD,IAAI,KAAK,EAAE;YACT,QAAE,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,YAAY,EAAE,KAAI,CAAC,OAAO,CAAC,WAAW,IAAI,WAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;SAC/E;QAED,KAAI,CAAC,IAAI,CAAC,aAAa,CAAC,yBAAW,CAAC,aAAa,EAAE,UAAC,IAA6B,IAAK,YAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,EAA9B,CAA8B,CAAC,CAAC;QACtH,KAAI,CAAC,IAAI,CAAC,aAAa,CAAC,iEAA+B,CAAC,cAAc,EAAE,cAAM,YAAI,CAAC,gBAAgB,EAAE,EAAvB,CAAuB,CAAC,CAAC;QACvG,KAAI,CAAC,IAAI,CAAC,YAAY,CAAC,oBAAY,CAAC,UAAU,EAAE,wCAAsB,CAAC,CAAC,EAAE,UAAC,IAA+B;YACxG,YAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC;QAAlC,CAAkC,CACnC,CAAC;QAEF,IAAI,KAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE;YACtC,QAAE,CAAC,KAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,0BAA0B,CAAC,CAAC;YACtD,KAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG;gBACvB,KAAI,CAAC,eAAe,EAAE,CAAC;YACzB,CAAC,CAAC;SACH;QAED,KAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG;YACvB,KAAI,CAAC,MAAM,EAAE,CAAC;QAChB,CAAC,CAAC;QAEF,KAAI,CAAC,QAAQ,CAAC,MAAM,GAAG;YACrB,KAAI,CAAC,gBAAgB,EAAE,CAAC;QAC1B,CAAC,CAAC;QAEF,KAAI,CAAC,QAAQ,CAAC,OAAO,GAAG;YACtB,KAAI,CAAC,gBAAgB,EAAE,CAAC;YACxB,IAAI,KAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE;gBACpC,KAAI,CAAC,cAAc,CAAC,cAAc,CAAmB,kDAAwB,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;gBAClG,KAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;aAC7B;QACH,CAAC,CAAC;;IACJ,CAAC;IAED;;;;;OAKG;IACI,yBAAM,GAAb;QACE,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC;QAChC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,cAAc,CAAC,cAAc,CAAmB,kDAAwB,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;QACnG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED;;;;OAIG;IACI,0BAAO,GAAd,UAAe,IAAY;QACzB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAED;;;;OAIG;IACI,wBAAK,GAAZ;QACE,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;IAED;;;;OAIG;IACI,0BAAO,GAAd;QACE,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;IACjC,CAAC;IAED;;;;OAIG;IACI,4BAAS,GAAhB;QACE,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;IACnC,CAAC;IAED;;;;OAIG;IACI,qCAAkB,GAAzB;QACE,OAAO,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE,CAAC;IAC5C,CAAC;IAED;;;;OAIG;IACI,4BAAS,GAAhB;QACE,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;IACnC,CAAC;IAED;;;;;;OAMG;IACI,iCAAc,GAArB,UAAsB,KAAsC;QAC1D,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;IAEO,sCAAmB,GAA3B,UAA4B,IAA6B;QACvD,eAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACpB,eAAM,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAEjC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACzC,IAAI,iDAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7F,CAAC;IAEO,kCAAe,GAAvB,UAAwB,eAAwB;QAC9C,YAAY,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAC1C,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACnC,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE;YAC1C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC;gBAChC,eAAe,EAAE,eAAe;gBAChC,mBAAmB,EAAE,IAAI;aAC1B,CAAC,CAAC;SACJ;IACH,CAAC;IAEO,mCAAgB,GAAxB;QACE,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,iCAAe,CAAC,cAAc,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACtF,CAAC;IAEO,0CAAuB,GAA/B,UAAgC,IAA+B;QAC7D,eAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACpB,IAAI,CAAC,GAAW,IAAI,CAAC,KAAK,CAAC;QAC3B,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE;YAChC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;SAC1B;IACH,CAAC;IAEO,kCAAe,GAAvB;QAAA,iBAMC;QALC,YAAY,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;QAC1C,IAAI,CAAC,sBAAsB,GAAG,MAAM,CAAC,UAAU,CAAC;YAC9C,KAAI,CAAC,cAAc,CAAC,kBAAkB,CAAmB,kDAAwB,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;YAC1G,KAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACxC,CAAC;IA5VM,WAAE,GAAG,UAAU,CAAC;IAEhB,iBAAQ,GAAG;QAChB,8BAAc,CAAC;YACb,QAAQ,EAAE,QAAQ;YAClB,uBAAuB,EAAE,iDAAuB;SACjD,CAAC,CAAC;IACL,CAAC,CAAC;IAEF;;;OAGG;IACW,gBAAO,GAAqB;QACxC;;;;;;WAMG;QACH,qBAAqB,EAAE,mCAAgB,CAAC,kBAAkB,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC;QAEhH;;;;;WAKG;QACH,oBAAoB,EAAE,mCAAgB,CAAC,iBAAiB,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC;QAEnH;;;;;;;;;;;;;;;;;;;;;;;WAuBG;QACH,iBAAiB,EAAE,mCAAgB,CAAC,kBAAkB,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC;QAE5G;;;;;;;;;;;;;WAaG;QACH,eAAe,EAAE,mCAAgB,CAAC,kBAAkB,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,kBAAkB,EAAE,CAAC;QAE1G;;;;;;;;;;;;WAYG;QACH,mBAAmB,EAAE,mCAAgB,CAAC,kBAAkB,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC;QAE5G;;;;;;;;;;;;;;;;WAgBG;QACH,wBAAwB,EAAE,mCAAgB,CAAC,kBAAkB,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC;QAEnH;;;;;;;;;;;WAWG;QACH,kBAAkB,EAAE,mCAAgB,CAAC,kBAAkB,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;QAEhF;;;;;;;;;;;;WAYG;QACH,oBAAoB,EAAE,mCAAgB,CAAC,iBAAiB,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAC;QAEnH;;;;;;;;;;WAUG;QACH,qBAAqB,EAAE,mCAAgB,CAAC,iBAAiB,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,EAAE,oBAAoB,EAAE,CAAC;QAEhH;;;;WAIG;QACH,mBAAmB,EAAE,mCAAgB,CAAC,kBAAkB,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;KAClF,CAAC;IAkMJ,eAAC;CAAA,CA9V6B,qBAAS,GA8VtC;AA9VY,4BAAQ;AA+VrB,+BAAc,CAAC,2BAA2B,CAAC,QAAQ,CAAC,CAAC;;;;;;;;;;AC5YrD,mCAA0C;AAC1C,+BAAgC;AAEhC,yBAAkC;AAClC,6CAAqD;AAErD;;GAEG;AACH;IAUE;;;;OAIG;IACH,mBAAY,QAAuB,EAAE,KAAa;QAAlD,iBAOC;QANC,IAAI,CAAC,YAAY,GAAG,QAAE,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,wBAAwB,EAAE,CAAC,CAAC;QACxE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9B,IAAI,CAAC,OAAO,GAAG,QAAE,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,kBAAkB,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QACpF,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAC,OAAoB;YACpC,KAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;IACL,CAAC;IAlBM,kBAAQ,GAAf;QACE,8BAAc,CAAC;YACb,SAAS,EAAE,SAAS;SACrB,CAAC,CAAC;IACL,CAAC;IAgBD;;;OAGG;IACI,yBAAK,GAAZ;QACE,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;IACzB,CAAC;IACH,gBAAC;AAAD,CAAC;AA/BY,8BAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACVtB,yBAA4C;AAE5C,0CAA0D;AAC1D,mCAAqC;AACrC,6CAAqD;AACrD,yCAA8C;AAE9C,gDAA4D;AAC5D,8CAAwD;AACxD,uDAAwF;AACxF,yDAA0F;AAC1F,yDAAoE;AACpE,oDAA6E;AAC7E,oDAA6E;AAC7E,4CAA4G;AAC5G,gDAA+D;AAC/D,6DAA4F;AAC5F,qCAA0C;AAC1C,sCAA8E;AAC9E,sCAA2C;AAG3C,mDAA4F;AAC5F,uCAA0C;AAC1C,4CAAsD;AACtD,iDAA+F;AAC/F,wDAA4H;AAK5H,oDAA8E;AAC9E,iDAA8D;AAE9D,8CAA0D;AAC1D,kDAA2G;AAC3G,0DAAyF;AACzF,sCAA2C;AAC3C,2CAAiD;AAEjD;;;;;;;;;;;;;;;GAeG;AACH;IAAkC,gCAAS;IA0RzC;;;;;;OAMG;IACH,sBACS,OAAoB,EAC3B,OAA8B,EAC9B,QAA6B,EAC7B,OAAiC;QAAjC,oCAAkB,YAAY,CAAC,EAAE;QAJnC,YAME,kBAAM,OAAO,EAAE,OAAO,EAAE,QAAQ,CAAC,SAclC;QAnBQ,aAAO,GAAP,OAAO,CAAa;QAzBrB,8BAAwB,GAAG,IAAI,CAAC;QAWjC,yBAAmB,GAAG,KAAK,CAAC;QAE5B,oBAAc,GAAG,IAAI,CAAC;QACtB,4BAAsB,GAAG,IAAI,CAAC;QAC9B,8BAAwB,GAAG,KAAK,CAAC;QAyZhC,qCAA+B,GAAG,UAAC,mBAA6B;YACtE,IAAM,qBAAqB,GAAG,KAAI,CAAC,MAAM,CAAC,cAAc,CAAC;YACzD,IAAM,wBAAwB,GAAG,mBAAmB,CAAC,MAAM,CAAC,eAAK,IAAI,YAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAtB,CAAsB,CAAC,CAAC;YAE7F,IAAM,cAAc,GAAG,uBAAU,CAAC,wBAAwB,EAAE,qBAAqB,CAAC,CAAC;YACnF,IAAM,gBAAgB,GAAG,uBAAU,CAAC,qBAAqB,EAAE,wBAAwB,CAAC,CAAC;YAErF,IAAI,aAAK,CAAC,eAAe,CAAC,cAAc,CAAC,EAAE;gBACzC,KAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;aAC3C;YAED,IAAI,aAAK,CAAC,eAAe,CAAC,gBAAgB,CAAC,EAAE;gBAC3C,KAAI,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;aAC/C;QACH,CAAC,CAAC;QAvZA,KAAI,CAAC,OAAO,GAAG,mCAAgB,CAAC,oBAAoB,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;QAErF,KAAI,CAAC,+BAA+B,EAAE,CAAC;QACvC,KAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,KAAI,CAAC,eAAe,EAAE,CAAC;QACvB,KAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,KAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,KAAI,CAAC,wBAAwB,EAAE,CAAC;QAChC,KAAI,CAAC,UAAU,EAAE,CAAC;QAClB,KAAI,CAAC,6BAA6B,EAAE,CAAC;QACrC,KAAI,CAAC,WAAW,GAAG,KAAI,CAAC,OAAO,CAAC,cAAc,IAAI,KAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC;QAElF,iDAAuB,CAAC,IAAI,CAAC,KAAI,CAAC,IAAI,EAAE,KAAI,EAAE,KAAI,CAAC,OAAO,CAAC,CAAC;;IAC9D,CAAC;IAED,sBAAW,mCAAS;aAApB;YACE,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC;;;OAAA;IAED,sBAAW,mCAAS;aAApB;YACE,OAAO,wBAAS,CAAC,QAAQ,CAAC;QAC5B,CAAC;;;OAAA;IAED;;;;;;;OAOG;IACI,kCAAW,GAAlB,UAAmB,KAAa;QAC9B,eAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACrB,IAAI,CAAC,oBAAoB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IACrC,CAAC;IAED;;;;;;;OAOG;IACI,2CAAoB,GAA3B,UAA4B,MAAgB;QAA5C,iBAQC;QAPC,eAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACtB,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,0BAA0B,EAAE,MAAM,CAAC,CAAC;QACrD,MAAM,CAAC,OAAO,CAAC,eAAK;YAClB,KAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;QAClC,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAED;;;;;;;OAOG;IACI,oCAAa,GAApB,UAAqB,KAAa;QAChC,eAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACrB,IAAI,CAAC,sBAAsB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IACvC,CAAC;IAED;;;OAGG;IACI,uCAAgB,GAAvB,UAAwB,KAAa;QACnC,OAAO,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;IAED;;;;;;;OAOG;IACI,6CAAsB,GAA7B,UAA8B,MAAgB;QAA9C,iBAQC;QAPC,eAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACtB,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,4BAA4B,EAAE,MAAM,CAAC,CAAC;QACvD,MAAM,CAAC,OAAO,CAAC,eAAK;YAClB,KAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;QACpC,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAED;;;;;;OAMG;IACI,wCAAiB,GAAxB,UAAyB,KAAa;QACpC,eAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACrB,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC1C,UAAU,CAAC,YAAY,EAAE,CAAC;QAC1B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE,UAAU,CAAC,CAAC;QAC1D,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAED;;;;OAIG;IACI,8CAAuB,GAA9B,UAA+B,KAAa;QAC1C,eAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACrB,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;IACpC,CAAC;IAED;;;;OAIG;IACI,+CAAwB,GAA/B,UAAgC,KAAa;QAC3C,OAAO,uBAAU,CAAC,+BAA+B,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAe,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IACpH,CAAC;IAED;;;;;OAKG;IACI,qCAAc,GAArB,UAAsB,wBAAsD;QAA5E,iBAKC;QALqB,sEAA2B,IAAI,CAAC,OAAO,CAAC,cAAc;QAC1E,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACrC,IAAI,CAAC,2BAA2B,CAAC,+BAA+B,CAAC,wBAAwB,CAAC,CAAC;QAC3F,IAAI,CAAC,uBAAuB,CAAC,cAAM,YAAI,CAAC,6BAA6B,CAAC,kDAAwB,CAAC,oBAAoB,CAAC,EAAjF,CAAiF,CAAC,CAAC;IACxH,CAAC;IAED;;;;OAIG;IACI,qCAAc,GAArB;QAAA,iBAKC;QAJC,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACrC,IAAI,CAAC,2BAA2B,CAAC,4BAA4B,EAAE,CAAC;QAChE,IAAI,CAAC,uBAAuB,CAAC,cAAM,YAAI,CAAC,6BAA6B,CAAC,kDAAwB,CAAC,oBAAoB,CAAC,EAAjF,CAAiF,CAAC,CAAC;IACxH,CAAC;IAED;;;;;;OAMG;IACI,4BAAK,GAAZ;QACE,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE;YAC/B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;YACxC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACvB,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;SACtB;QACD,IAAI,CAAC,8BAA8B,EAAE,CAAC;QACtC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAED;;OAEG;IACI,qCAAc,GAArB;QACE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;IACrD,CAAC;IAED;;OAEG;IACI,6BAAM,GAAb;QACE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;YAChC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uGAAmG,CAAC,CAAC;SAC9H;QACD,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,OAAO;SACR;QACD,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACxC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAED;;OAEG;IACI,+BAAQ,GAAf;QACE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;YAChC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,yGAAqG,CAAC,CAAC;SAChI;QACD,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,OAAO;SACR;QACD,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAC1C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAED;;;;;;OAMG;IACI,oDAA6B,GAApC;QACE,IAAI,CAAC,2BAA2B,CAAC,6BAA6B,EAAE,CAAC;IACnE,CAAC;IAED;;;;;;;;OAQG;IACI,iDAA0B,GAAjC;QACE,IAAI,CAAC,2BAA2B,CAAC,0BAA0B,EAAE,CAAC;IAChE,CAAC;IAEM,qDAA8B,GAArC;QACE,IAAI,CAAC,2BAA2B,CAAC,8BAA8B,EAAE,CAAC;IACpE,CAAC;IAEM,kCAAW,GAAlB;QACE,IAAI,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE;YAClC,iCAAe,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACxC;IACH,CAAC;IAED,sBAAW,6CAAmB;aAA9B;YACE,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,oBAAU,IAAI,iBAAU,CAAC,mBAAmB,EAA9B,CAA8B,CAAC,CAAC;QACpF,CAAC;;;OAAA;IAED,sBAAW,kDAAwB;aAAnC;YACE,OAAO;gBACL,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE;gBACpC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE;gBACnB,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;gBACzB,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,aAAa,EAAE,IAAI,CAAC,QAAQ;aAC7B,CAAC;QACJ,CAAC;;;OAAA;IAED,sBAAW,iDAAuB;aAAlC;YACE,OAAO;gBACL,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE;gBACzC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE;gBACxB,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;aAC/B,CAAC;QACJ,CAAC;;;OAAA;IAEM,wCAAiB,GAAxB,UAAyB,WAAkC,EAAE,SAA8B;QACzF,IAAI,CAAC,cAAc,CAAC,cAAc,CAAsB,WAAW,EAAE,SAAS,CAAC,CAAC;IAClF,CAAC;IAEM,+CAAwB,GAA/B,UAAgC,YAA0B;QACxD,eAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC5B,IAAI,CAAC,2BAA2B,CAAC,wBAAwB,CAAC,YAAY,CAAC,CAAC;IAC1E,CAAC;IAEM,4CAAqB,GAA5B;QACE,IAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,qBAAqB,EAAE,CAAC;QACjE,YAAY,IAAI,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACvE,CAAC;IAEM,2CAAoB,GAA3B;QACE,OAAO,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,CAAC;IACtC,CAAC;IAED,sBAAW,yCAAe;aAA1B;YACE,OAAO,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC;QACrC,CAAC;;;OAAA;IAEO,sCAAe,GAAvB;QAAA,iBAKC;QAJC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,yBAAW,CAAC,WAAW,EAAE,cAAM,YAAI,CAAC,SAAS,EAAE,EAAhB,CAAgB,CAAC,CAAC;QACzE,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,yBAAW,CAAC,iBAAiB,EAAE,UAAC,IAAiC,IAAK,YAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,EAAlC,CAAkC,CAAC,CAAC;QAClI,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,yBAAW,CAAC,oBAAoB,EAAE,UAAC,IAA4B,IAAK,YAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,EAArC,CAAqC,CAAC,CAAC;QACnI,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,yBAAW,CAAC,UAAU,EAAE,cAAM,YAAI,CAAC,UAAU,EAAE,EAAjB,CAAiB,CAAC,CAAC;IAC3E,CAAC;IAEO,2CAAoB,GAA5B;QACE,IAAI,CAAC,mBAAmB,GAAG,iCAAe,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACvE,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;QACxE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,oBAAY,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACvF,CAAC;IAES,2CAAoB,GAA9B;QAAA,iBAOC;QANC,IAAI,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE;YACpC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,mCAAgB,CAAC,kBAAkB,EAAE,UAAC,IAAkC;gBAC9F,YAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC;YAAnC,CAAmC,CACpC,CAAC;YACF,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,mCAAgB,CAAC,eAAe,EAAE,cAAM,YAAI,CAAC,KAAK,EAAE,EAAZ,CAAY,CAAC,CAAC;SAC/E;IACH,CAAC;IAES,iCAAU,GAApB;QACE,IAAI,CAAC,MAAM,GAAG,IAAI,uCAAkB,CAAC,IAAI,EAAE,mDAAwB,CAAC,CAAC;IACvE,CAAC;IAEO,+CAAwB,GAAhC;QACE,IAAM,gBAAgB,GAAG,iCAAe,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACrE,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;IACrE,CAAC;IAES,sDAA+B,GAAzC;QACE,IAAI,CAAC,2BAA2B,GAAG,IAAI,yDAA2B,CAAC,IAAI,CAAC,CAAC;IAC3E,CAAC;IAEO,8CAAuB,GAA/B,UAAgC,IAAiC;QAC/D,mFAAmF;QACnF,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC5B,OAAO;SACR;QAED,eAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACpB,eAAM,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACjC,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACjD,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAEO,yCAAkB,GAA1B,UAA2B,OAAsB;QAC/C,+EAA+E;QAC/E,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC5B,OAAO;SACR;QAED,IAAI,aAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YAC3C,OAAO,IAAI,CAAC,mBAAmB,EAAE,CAAC;SACnC;QAED,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IAEM,yCAAkB,GAAzB,UAA0B,OAAsB;QAAhD,iBAgBC;QAfC,IAAM,KAAK,GAAG,sBAAS,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;QACtE,IAAM,aAAa,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QAElE,IAAI,CAAC,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACtD,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QAEpE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QAC1B,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACrB,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC7B,IAAM,OAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC;YACxC,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;YACjC,kBAAK,CAAC,cAAM,YAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAK,CAAC,EAAxB,CAAwB,CAAC,CAAC;SACvC;IACH,CAAC;IAEO,kCAAW,GAAnB,UAAoB,aAA6B;QAC/C,IAAI,CAAC,mBAAmB,GAAG,aAAa,CAAC,mBAAmB,CAAC;QAC7D,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;QAC9C,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YAC3B,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;SACpD;IACH,CAAC;IAEO,iCAAU,GAAlB;QACE,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;QACjC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC;IAEO,8CAAuB,GAA/B,UAAgC,IAAgC;QAC9D,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE;YAClC,OAAO;SACR;QAED,IAAM,mBAAmB,GAAa,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAChF,IAAI,CAAC,mBAAmB,EAAE;YACxB,OAAO;SACR;QAED,IAAI,CAAC,+BAA+B,CAAC,mBAAmB,CAAC,CAAC;IAC5D,CAAC;IAkBO,+CAAwB,GAAhC,UAAiC,IAAkC;QACjE,eAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAEpB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE;YAChC,OAAO;SACR;QAED,IAAM,WAAW,GAAG,IAAI,iDAAuB,CAAC,IAAI,EAAE,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;QAC3F,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;IAC1D,CAAC;IAEO,2CAAoB,GAA5B;QAAA,iBAOC;QANC,IAAM,SAAS,GAAoB;YACjC,KAAK,EAAE,cAAM,YAAI,CAAC,KAAK,EAAE,EAAZ,CAAY;YACzB,GAAG,EAAE,IAAI;SACV,CAAC;QAEF,IAAI,CAAC,gBAAgB,GAAG,IAAI,mCAAgB,CAAC,SAAS,CAAC,CAAC;IAC1D,CAAC;IAEM,gCAAS,GAAhB;QACE,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9B,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAEO,6CAAsB,GAA9B;QACE,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAEO,4CAAqB,GAA7B;QAAA,iBAYC;QAXC,IAAI,CAAC,MAAM,GAAG,IAAI,uCAAkB,CAAC;YACnC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE;YACnB,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK;YACzB,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc;YAC3C,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY;YACvC,KAAK,EAAE,cAAM,YAAI,CAAC,KAAK,EAAE,EAAZ,CAAY;YACzB,cAAc,EAAE,cAAM,YAAI,CAAC,cAAc,EAAE,EAArB,CAAqB;YAC3C,QAAQ,EAAE,cAAM,YAAI,CAAC,QAAQ,EAAE,EAAf,CAAe;YAC/B,MAAM,EAAE,cAAM,YAAI,CAAC,MAAM,EAAE,EAAb,CAAa;SAC5B,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAChD,CAAC;IAEO,4CAAqB,GAA7B;QACE,IAAI,IAAI,CAAC,OAAO,CAAC,iBAAiB,KAAK,KAAK,EAAE;YAC5C,OAAO;SACR;QAED,IAAI,CAAC,MAAM,GAAG,IAAI,uCAAkB,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAChD,CAAC;IAEO,4CAAqB,GAA7B;QACE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACjD,CAAC;IAEO,4CAAqB,GAA7B;QACE,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC;QACtC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QAC/E,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;IACvC,CAAC;IAEO,uCAAgB,GAAxB;QACE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;QACvD,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7C,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,+BAA+B,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAChF,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAC5E,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAChF,CAAC;IAEO,0CAAmB,GAA3B;QACE,IAAI,IAAI,CAAC,OAAO,CAAC,iBAAiB,KAAK,KAAK,EAAE;YAC5C,OAAO;SACR;QAED,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,OAAO,QAAE,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;SAClE;QAED,QAAE,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACpH,CAAC;IAEM,sCAAe,GAAtB,UAAuB,kBAA+B;QACpD,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAE1B,IAAM,OAAO,GAAkB,kBAAkB,CAAC,CAAC,CAAC,EAAE,kBAAkB,sBAAE,CAAC,CAAC,CAAC,EAAE,wBAAwB,EAAE,IAAI,EAAE,CAAC;QAEhH,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;IAEY,8CAAuB,GAApC,UAAqC,kBAA+B;;;;;;wBAClE,IAAI,CAAC,kBAAkB,EAAE,CAAC;wBAC1B,kBAAkB,IAAI,kBAAkB,EAAE,CAAC;;;;wBAGzB,qBAAM,IAAI,CAAC,2BAA2B,CAAC,eAAe,EAAE;;wBAAlE,OAAO,GAAG,SAAwD;wBACxE,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC;;;;wBAEjC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;;;;;;KAE7B;IAEO,yCAAkB,GAA1B;QACE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;IAC5B,CAAC;IAEO,0CAAmB,GAA3B;QACE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,4FAA4F,CAAC,CAAC;QAChH,IAAI,CAAC,OAAO,EAAE,CAAC;QACf,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAEO,oDAA6B,GAArC;QACE,IAAI,IAAI,CAAC,OAAO,CAAC,kBAAkB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;YACnE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iFAAiF,CAAC,CAAC;SACrG;IACH,CAAC;IAEO,oDAA6B,GAArC,UAAsC,KAA4B;QAChE,IAAI,CAAC,cAAc,CAAC,cAAc,CAAsB,KAAK,EAAE,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7G,CAAC;IAEO,4BAAK,GAAb;QAAA,iBAKC;QAJC,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAClC,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,eAAe,CAAC,cAAM,YAAI,CAAC,sBAAsB,EAAE,EAA7B,CAA6B,CAAC,CAAC;IAC5D,CAAC;IAEO,6CAAsB,GAA9B;QACE,IAAI,CAAC,iBAAiB,CAAC,kDAAwB,CAAC,oBAAoB,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACtG,CAAC;IAt0BM,eAAE,GAAG,cAAc,CAAC;IACpB,qBAAQ,GAAG,cAAM,qCAAc,CAAC,EAAE,YAAY,gBAAE,CAAC,EAAhC,CAAgC,CAAC;IAEzD;;;OAGG;IACI,oBAAO,gBACT,+CAAsB;QAEzB;;;;;;;;;;;;;;;;;WAiBG;QACH,EAAE,EAAE,mCAAgB,CAAC,iBAAiB,CAAC;YACrC,cAAc,EAAE,UAAC,KAAU,EAAE,OAA6B;gBAAzC,kCAAU;gBACzB,IAAM,aAAa,GAAG,EAAE,CAAC;gBACzB,IAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;gBAC9D,IAAI,aAAK,CAAC,gBAAgB,CAAC,cAAc,CAAC,EAAE;oBAC1C,OAAO,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,GAAG,CAAC,CAAC,CAAC;iBACnD;gBAED,OAAO,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,GAAG,CAAC,CAAC,CAAC;YACnD,CAAC;YACD,OAAO,EAAE,eAAe;SACzB,CAAC;QAEF;;;;;;WAMG;QACH,KAAK,EAAE,mCAAgB,CAAC,0BAA0B,CAAC;YACjD,eAAe,EAAE,cAAM,kBAAC,CAAC,SAAS,CAAC,EAAZ,CAAY;YACnC,OAAO,EAAE,eAAe;YACxB,QAAQ,EAAE,EAAE;SACb,CAAC;QAEF;;;;;;;;;;WAUG;QACH,KAAK,EAAE,mCAAgB,CAAC,gBAAgB,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;QAEtF;;;;;;;;;;;;;;;;;;WAkBG;QACH,YAAY,EAAqB,mCAAgB,CAAC,iBAAiB,CAAC;YAClE,cAAc,EAAE,eAAK;gBACnB,IAAI,CAAC,KAAK,EAAE;oBACV,OAAO,SAAS,CAAC;iBAClB;gBAED,IAAI,uCAAmB,CAAC,KAAK,CAAC,EAAE;oBAC9B,OAAO,KAAK,CAAC;iBACd;gBAED,IAAI,eAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,uFAAuF,CAAC,CAAC;gBAChH,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,OAAO,EAAE,SAAS;SACnB,CAAC;QAEF;;;;;;;;;;;;;;WAcG;QACH,UAAU,EAAE,mCAAgB,CAAC,eAAe,CAAS,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;QAE5E;;;;;WAKG;QACH,cAAc,EAAE,mCAAgB,CAAC,iBAAiB,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;QAEzG;;WAEG;QACH,cAAc,EAAE,mCAAgB,CAAC,kBAAkB,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;QAErG;;WAEG;QACH,iBAAiB,EAAE,mCAAgB,CAAC,kBAAkB,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;QAExG;;;;WAIG;QACH,cAAc,EAAE,mCAAgB,CAAC,kBAAkB,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;QAErG;;;;;;;;;WASG;QACH,iBAAiB,EAAE,mCAAgB,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;QAEhF;;;;WAIG;QACH,+BAA+B,EAAE,mCAAgB,CAAC,kBAAkB,CAAC;YACnE,YAAY,EAAE,IAAI;YAClB,OAAO,EAAE,WAAW;YACpB,MAAM,EAAE,mBAAmB;SAC5B,CAAC;QAEF;;WAEG;QACH,kBAAkB,EAAE,mCAAgB,CAAC,kBAAkB,CAAC,EAAE,YAAY,EAAE,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;QAEpI;;;;WAIG;QACH,mBAAmB,EAAE,mCAAgB,CAAC,kBAAkB,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;QAE1G;;WAEG;QACH,0BAA0B,EAAE,mCAAgB,CAAC,iBAAiB,CAAC;YAC7D,eAAe,EAAE,cAAM,QAAC,yBAAW,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAtC,CAAsC;YAC7D,GAAG,EAAE,CAAC;YACN,MAAM,EAAE,qBAAqB;YAC7B,OAAO,EAAE,eAAe;SACzB,CAAC;QAEF;;;;;;;WAOG;QACH,YAAY,EAAE,mCAAgB,CAAC,eAAe,CAAqB,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;QAExF;;;;;;;;WAQG;QACH,SAAS,EAAE,mCAAgB,CAAC,iBAAiB,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC;QAE3E;;;;;;;;;;;WAWG;QACH,kBAAkB,EAAE,mCAAgB,CAAC,iBAAiB,CACpD;YACE,OAAO,IAAI,CAAC;QACd,CAAC,EACD,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,eAAe,EAAE,CAClD;QAED;;;;;;;;WAQG;QACH,cAAc,EAAE,mCAAgB,CAAC,iBAAiB,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;QAErF;;;;;;;;;;WAUG;QACH,gBAAgB,EAAE,mCAAgB,CAAC,kBAAkB,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;QAE/E;;;;;;WAMG;QACH,YAAY,EAAE,mCAAgB,CAAC,iBAAiB,CAAC,EAAE,YAAY,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,IACrF;IAkkBJ,mBAAC;CAAA,CAx0BiC,qBAAS,GAw0B1C;AAx0BY,oCAAY;AA00BzB,+BAAc,CAAC,2BAA2B,CAAC,YAAY,CAAC,CAAC;AACzD,YAAY,CAAC,QAAQ,EAAE,CAAC;;;;;;;;;;AC73BxB;IAAA;IAKA,CAAC;IAJe,uBAAU,GAAG,YAAY,CAAC;IAC1B,wBAAW,GAAG,aAAa,CAAC;IAC5B,qBAAQ,GAAG,UAAU,CAAC;IACtB,+BAAkB,GAAG,oBAAoB,CAAC;IAC1D,mBAAC;CAAA;AALY,oCAAY;;;;;;;;;;ACNzB;IAAA;IAgEA,CAAC;IA/DQ,mBAAQ,GAAf,UAAgB,CAAC,EAAE,CAAC,EAAE,CAAC;QACrB,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAEZ,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACpB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QACxB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAE9B,QAAQ,CAAC,GAAG,CAAC,EAAE;YACb,KAAK,CAAC;gBACJ,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC1B,MAAM;YACR,KAAK,CAAC;gBACJ,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC1B,MAAM;YACR,KAAK,CAAC;gBACJ,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC1B,MAAM;YACR,KAAK,CAAC;gBACJ,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC1B,MAAM;YACR,KAAK,CAAC;gBACJ,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC1B,MAAM;YACR,KAAK,CAAC;gBACJ,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC1B,MAAM;SACT;QAED,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;IACzE,CAAC;IAEM,mBAAQ,GAAf,UAAgB,CAAC,EAAE,CAAC,EAAE,CAAC;QACrB,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;QAC5C,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EACzB,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1B,IAAI,CAAC,EACH,CAAC,EACD,CAAC,GAAG,GAAG,CAAC;QAEV,IAAI,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC;QAClB,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC;QAE3B,IAAI,GAAG,IAAI,GAAG,EAAE;YACd,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa;SACrB;aAAM;YACL,QAAQ,GAAG,EAAE;gBACX,KAAK,CAAC;oBACJ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;oBAClC,MAAM;gBACR,KAAK,CAAC;oBACJ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBACpB,MAAM;gBACR,KAAK,CAAC;oBACJ,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBACpB,MAAM;aACT;YACD,CAAC,IAAI,CAAC,CAAC;SACR;QAED,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACnB,CAAC;IACH,iBAAC;AAAD,CAAC;AAhEY,gCAAU;;;;;;;;;;ACEvB,sCAAwC;AAExC;IAOE,oBAAY,aAA6B;QACvC,IAAI,CAAC,MAAM,GAAG,aAAa,CAAC,UAAU,CAAC;QACvC,IAAI,CAAC,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC;QAC1C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;QAChD,IAAI,CAAC,oBAAoB,GAAG,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC;QAE/D,eAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7B,eAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACtC,eAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrC,CAAC;IACH,iBAAC;AAAD,CAAC;AAjBY,gCAAU;;;;;;;;ACJV;AACb,gBAAgB,mBAAO,CAAC,GAAW;AACnC,mBAAO,CAAC,GAAc;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,8CAA8C,cAAc;AAC5D;;;;;;;;ACjFa;AACb,gBAAgB,mBAAO,CAAC,GAAW;AACnC,eAAe,mBAAO,CAAC,GAAY;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA,mBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA,8CAA8C,cAAc;AAC5D;;;;;;;;AChGa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnCA,sCAAwC;AACxC,0CAAsC;AAItC,IAAY,mBAGX;AAHD,WAAY,mBAAmB;IAC7B,8DAAuC;IACvC,8DAAuC;AACzC,CAAC,EAHW,mBAAmB,GAAnB,2BAAmB,KAAnB,2BAAmB,QAG9B;AAED;IAME,qBAAmB,KAAa,EAAS,KAA6B;QAAtE,iBAQC;QARkB,UAAK,GAAL,KAAK,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EAAE,mCAAgB,CAAC,iBAAiB,EAAE;QAE9C;;;;;;;;;;;;;;;;;;WAkBG;QACH,UAAU,EAAE,mCAAgB,CAAC,iBAAiB,EAAE;QAEhD;;;;;;;;;;;WAWG;QACH,oBAAoB,EAAE,mCAAgB,CAAC,kBAAkB,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC;QAE/G;;;;;;;WAOG;QACH,mBAAmB,EAAE,mCAAgB,CAAC,0BAA0B,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,CAAC;KACnG,CAAC;IA0MJ,UAAC;CAAA,CAtWwB,qBAAS,GAsWjC;AAtWY,kBAAG;AAwWhB,+BAAc,CAAC,2BAA2B,CAAC,GAAG,CAAC,CAAC;;;;;;;ACvahD;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;;;;AAIA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qCAAqC;;AAErC;AACA;AACA;;AAEA,2BAA2B;AAC3B;AACA;AACA;AACA,4BAA4B,UAAU;;;;;;;;;;AChJtC;;;;;GAKG;AACH;IAAA;IAkCA,CAAC;IAjCC;;;;;;;OAOG;IACW,iCAAkB,GAAG,oBAAoB,CAAC;IAExD;;;;;;;;;;OAUG;IACW,kCAAmB,GAAG,qBAAqB,CAAC;IAE1D;;;;;;;;OAQG;IACW,oCAAqB,GAAG,uBAAuB,CAAC;IAChE,qBAAC;CAAA;AAlCY,wCAAc;;;;;;;;;;AC7C3B,sCAAuC;AAA9B,6BAAK;AACd,gDAA2D;AAAlD,2DAAe;AACxB,sDAAuE;AAA9D,6EAAqB;AAC9B,oDAAmE;AAA1D,uEAAmB;;;;;;;;;;ACH5B,wCAAuC;AACvC,0CAAyC;AAGzC,uCAAuC;AACvC,uDAAwD;AAExD,mCAA2B;AAc3B;IAAA;IAmGA,CAAC;IAlGe,yBAAO,GAArB,UAAsB,IAAiB,EAAE,IAA4B;QACnE,IAAM,cAAc,GAAG,iBAAiB,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;QACrE,IAAM,OAAO,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAE1D,OAAO,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;IAEa,6BAAW,GAAzB,UAA0B,IAAiB,EAAE,IAA4B;QACvE,IAAM,cAAc,GAAG,iBAAiB,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;QACrE,IAAM,OAAO,GAAG,iBAAiB,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAE9D,OAAO,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;IAEa,kCAAgB,GAA9B,UAA+B,QAAgB,EAAE,WAAmB;QAClE,IAAM,QAAQ,GAAG,cAAc,CAAC;QAChC,OAAO,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACjE,CAAC;IAEc,uCAAqB,GAApC,UAAqC,IAAiB;QACpD,IAAI,iBAAiB,CAAC,oBAAoB,CAAC,IAAI,CAAC,EAAE;YAChD,OAAO,iBAAiB,CAAC,0BAA0B,CAAC;SACrD;QAED,OAAO,iBAAiB,CAAC,oBAAoB,CAAC;IAChD,CAAC;IAEc,sCAAoB,GAAnC,UAAoC,IAAiB;QACnD,IAAM,kBAAkB,GAAG,kBAAkB,CAAC;QAC9C,IAAM,WAAW,GAAG,QAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;QAEzD,OAAO,gBAAG,CAAC,WAAW,EAAE,oBAAU;YAChC,IAAM,OAAO,GAAwB,4BAAG,CAAC,UAAU,CAAS,CAAC,OAAO,CAAC;YACrE,OAAO,OAAO,IAAI,OAAO,CAAC,oBAAoB,CAAC;QACjD,CAAC,CAAC,CAAC;IACL,CAAC;IAEc,sCAAoB,GAAnC,UAAoC,IAA4B,EAAE,OAAwB;QACxF,IAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;QACjD,IAAM,QAAQ,GAAoB;YAChC,cAAc,EAAE,WAAC,CAAC,2BAA2B,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,KAAK,EAAE,YAAY,CAAC;YAC5H,cAAc,EAAE,WAAC,CAAC,kBAAkB,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,UAAU,EAAE,YAAY,CAAC;SACrG,CAAC;QAEF,OAAO,iBAAiB,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACxD,CAAC;IAEc,4CAA0B,GAAzC,UAA0C,IAA4B,EAAE,OAAwB;QAC9F,IAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;QACjD,IAAM,QAAQ,GAAoB;YAChC,cAAc,EAAE,WAAC,CAAC,yBAAyB,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,KAAK,EAAE,YAAY,CAAC;YAC7F,cAAc,EAAE,WAAC,CAAC,gBAAgB,EAAE,OAAO,CAAC,UAAU,EAAE,YAAY,CAAC;SACtE,CAAC;QAEF,OAAO,iBAAiB,CAAC,YAAY,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACxD,CAAC;IAEc,8BAAY,GAA3B,UAA4B,IAA4B,EAAE,OAAwB;QAChF,IAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;QACjD,IAAM,cAAc,GAAG,iBAAiB,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEnE,IAAI,CAAC,YAAY,EAAE;YACjB,OAAO,EAAE,CAAC;SACX;QAED,OAAO,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC,cAAc,CAAC;IAC1E,CAAC;IAEc,uCAAqB,GAApC,UAAqC,IAA4B;QAC/D,IAAM,OAAO,GAAG,iBAAiB,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAE1D,OAAO;YACL,KAAK,EAAE,iBAAiB,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC;YACvD,IAAI,EAAE,iBAAiB,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,CAAC;YACrD,UAAU,EAAE,iBAAiB,CAAC,eAAe,CAAC,OAAO,CAAC,UAAU,CAAC;YACjE,KAAK,EAAE,iBAAiB,CAAC,eAAe,CAAC,OAAO,CAAC,KAAK,CAAC;SACxD,CAAC;IACJ,CAAC;IAEc,iCAAe,GAA9B,UAA+B,IAAY;QACzC,OAAO,QAAE,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,iBAAiB,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,SAAS,CAAC;IACzE,CAAC;IAEc,mCAAiB,GAAhC,UAAiC,IAA4B;QAC3D,IAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC;QAClC,IAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC;QAElC,IAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,WAAW,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;QACrE,IAAM,IAAI,GAAG,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC9F,IAAM,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;QAC3E,IAAM,KAAK,GAAG,iBAAiB,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;QAE9D,OAAO,EAAE,KAAK,SAAE,IAAI,QAAE,UAAU,cAAE,KAAK,SAAE,CAAC;IAC5C,CAAC;IAEc,+BAAa,GAA5B,UAA6B,KAAa;QACxC,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/C,CAAC;IACH,wBAAC;AAAD,CAAC;AAnGY,8CAAiB;;;;;;;;;;ACrB9B,yBAAyC;AACzC,mCAAqC;AACrC,wDAAuG;AAEvG,qCAAmE;AAGnE,yCAAgD;AAChD,sCAA6E;AAC7E,gDAAsE;AACtE,uCAAoC;AAEpC,0CAAoC;AACpC,mDAA+D;AAE/D;IAQE,4BAAoB,IAA6B;QAAjD,iBAaC;QAbmB,SAAI,GAAJ,IAAI,CAAyB;QAC/C,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,kBAAW,CAAC,iBAAiB,EAAE,UAAC,KAAK,EAAE,IAAiC;YAC1F,OAAO,KAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,WAAS,oBAAY,CAAC,UAAU,GAAG,wCAAsB,CAAC,CAAG,EAAE,UAAC,GAAG,EAAE,IAA+B;YACtH,YAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;QAA5B,CAA4B,CAC7B,CAAC;QAEF,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,uBAAgB,CAAC,kBAAkB,EAAE,UAAC,GAAG,EAAE,IAAkC;YAC/F,KAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QACH,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,uBAAgB,CAAC,eAAe,EAAE,UAAC,GAAG,EAAE,IAA+B,IAAK,YAAI,CAAC,qBAAqB,EAAE,EAA5B,CAA4B,CAAC,CAAC;IAChI,CAAC;IAEO,gDAAmB,GAA3B,UAA4B,IAAiC;QAC3D,IAAM,kBAAkB,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QACzE,kBAAkB,CAAC,OAAO,CAAC,cAAI;YAC7B,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,sBAAY,mDAAmB;aAA/B;YACE,OAAW,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,cAAc,CAAC,SAAE;QAC5D,CAAC;;;OAAA;IAEO,yDAA4B,GAApC,UAAqC,KAAe;QAClD,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,cAAc,EAAM,KAAK,SAAE,CAAC;IAC5D,CAAC;IAEO,qDAAwB,GAAhC,UAAiC,IAAkC;QACjE,IAAI,IAAI,CAAC,mBAAmB,CAAC,MAAM,KAAK,CAAC,EAAE;YACzC,OAAO;SACR;QAED,IAAM,YAAY,GAAG,IAAI,CAAC,uBAAuB,EAAE,CAAC;QACpD,IAAM,mBAAmB,GAAG,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAE7E,YAAY,CAAC,OAAO,CAAC,cAAI,IAAI,eAAE,CAAC,mBAAmB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAvC,CAAuC,CAAC,CAAC;QAEtE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;YACpB,OAAO,EAAE,mBAAmB,CAAC,EAAE;SAChC,CAAC,CAAC;IACL,CAAC;IAEO,oDAAuB,GAA/B;QAAA,iBAeC;QAdC,OAAO,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,cAAI;YACtC,IAAM,aAAa,GAAG,QAAE,CACtB,QAAQ,EACR;gBACE,IAAI,EAAE,QAAQ;gBACd,SAAS,EAAE,6DAA6D;aACzE,EACD,QAAE,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,uCAAuC,EAAE,EAAE,mBAAM,CAAC,IAAI,CAAC,CAAC,EAChF,QAAE,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,qCAAqC,EAAE,EAAE,mBAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAC3F,CAAC;YAEF,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,cAAM,YAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAnC,CAAmC,CAAC,CAAC;YACrE,OAAO,aAAa,CAAC;QACvB,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,qDAAwB,GAAhC,UAAiC,YAAqB;QACpD,OAAO,QAAE,CACP,KAAK,EACL;YACE,SAAS,EAAE,6BAA6B;SACzC,EACD,QAAE,CACA,kCAAa,CAAC,YAAY,EAAE,MAAM,CAAC,EACnC;YACE,SAAS,EAAE,qCAAqC;SACjD,EACD,QAAC,CAAC,aAAa,CAAC,CACjB,CACF,CAAC;IACJ,CAAC;IAEO,qDAAwB,GAAhC,UAAiC,IAAY;QAC3C,IAAM,uBAAuB,GAAG,IAAI,CAAC,mBAAmB,CAAC;QACzD,IAAM,SAAS,GAAG,uBAAuB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACxD,uBAAuB,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QAC7C,IAAI,CAAC,4BAA4B,CAAC,uBAAuB,CAAC,CAAC;QAC3D,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;IAC3C,CAAC;IAEO,0DAA6B,GAArC,UAAsC,IAAY;QAChD,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,cAAc,CAAwB,kDAAwB,CAAC,iBAAiB,EAAE;YACzG,WAAW,EAAE,IAAI;SAClB,CAAC,CAAC;IACL,CAAC;IAEO,kDAAqB,GAA7B;QACE,IAAI,CAAC,4BAA4B,CAAC,EAAE,CAAC,CAAC;IACxC,CAAC;IAEO,8CAAiB,GAAzB,UAA0B,IAA+B;QACvD,IAAI,CAAC,2CAA2C,CAAC,IAAI,CAAC,CAAC;QAEvD,IAAM,kBAAkB,GAAG,QAAQ,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;QACtE,IAAI,CAAC,kBAAkB,EAAE;YACvB,OAAO;SACR;QAED,IAAI,UAAU,GAAe,UAAG,CAAc,kBAAkB,CAAC,CAAC;QAClE,IAAI,UAAU,EAAE;YACd,UAAU,CAAC,cAAc,EAAE,CAAC;YAC5B,QAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,uBAAgB,CAAC,gBAAgB,CAAC,CAAC;SAClE;IACH,CAAC;IAEO,wEAA2C,GAAnD,UAAoD,IAAI;QACtD,IAAI,sBAAsB,GAAG,IAAI,CAAC,mBAAmB,CAAC;QACtD,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,cAAI;YACnC,IAAM,KAAK,GAAG,OAAO,CAAI,kBAAkB,CAAC,YAAY,SAAI,IAAI,SAAI,kBAAkB,CAAC,YAAc,EAAE,GAAG,CAAC,CAAC;YAC5G,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;gBAC3B,IAAM,SAAS,GAAG,sBAAsB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACvD,sBAAsB,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;aAC7C;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,4BAA4B,CAAC,sBAAsB,CAAC,CAAC;IAC5D,CAAC;IAjIM,qBAAE,GAAG,oBAAoB,CAAC;IACjC,iGAAiG;IACjG,+DAA+D;IAC/D,yDAAyD;IACzD,2DAA2D;IACpD,+BAAY,GAAG,uCAAuC,CAAC;IA6HhE,yBAAC;CAAA;AAnIY,gDAAkB;;;;;;;;ACflB;;AAEb,6BAA6B,mBAAO,CAAC,EAAsD;;AAE3F;AACA;AACA,CAAC;AACD;;AAEA,sCAAsC,mBAAO,CAAC,GAAW;;AAEzD,oCAAoC,mBAAO,CAAC,GAAgB;;AAE5D,6CAA6C,mBAAO,CAAC,GAAyB;;AAE9E,0CAA0C,mBAAO,CAAC,GAAuB;;AAEzE,4CAA4C,mBAAO,CAAC,GAAyB;;AAE7E,gDAAgD,mBAAO,CAAC,GAA6B;;AAErF,gDAAgD,mBAAO,CAAC,GAA6B;;AAErF,6CAA6C,mBAAO,CAAC,GAA0B;;AAE/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oC;;;;;;;;;AChCA;IAGE,sBAAoB,EAAU,EAAE,eAA+C;QAA/C,2DAA+C;QAA3D,OAAE,GAAF,EAAE,CAAQ;QAC5B,wEAAwE;QACxE,sEAAsE;QACtE,IAAI;YACF,QAAQ,eAAe,EAAE;gBACvB,KAAK,OAAO;oBACV,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,YAAY,CAAC;oBACnC,MAAM;gBACR,KAAK,SAAS;oBACZ,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,cAAc,CAAC;oBACrC,MAAM;gBACR;oBACE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;aACvB;SACF;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;SACrB;IACH,CAAC;IAEM,2BAAI,GAAX,UAAY,IAAO;QACjB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,OAAO;SACR;QACD,IAAI;YACF,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;SAClE;QAAC,OAAO,KAAK,EAAE,GAAE;IACpB,CAAC;IAEM,2BAAI,GAAX;QACE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,OAAO,IAAI,CAAC;SACb;QAED,IAAI;YACF,IAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;YACzD,OAAO,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SACnC;QAAC,OAAO,KAAK,EAAE;YACd,OAAO,IAAI,CAAC;SACb;IACH,CAAC;IAEM,6BAAM,GAAb,UAAc,GAAY;QACxB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,OAAO;SACR;QAED,IAAI;YACF,IAAI,GAAG,IAAI,SAAS,EAAE;gBACpB,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;aAC/C;iBAAM;gBACL,IAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC3B,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;gBACnB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACnB;SACF;QAAC,OAAO,KAAK,EAAE,GAAE;IACpB,CAAC;IAEO,oCAAa,GAArB;QACE,OAAO,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC;IAC5B,CAAC;IACH,mBAAC;AAAD,CAAC;AA/DY,oCAAY;;;;;;;;;;;;;;;;;;;;ACFzB,qDAA4D;AAC5D,wDAA4F;AAI5F,yCAA8C;AAG9C,gDAAqE;AACrE,+BAAgC;AAChC;IAAmD,iDAAmB;IAGpE,uCACS,QAA2B,EAC3B,WAAwB,EACxB,MAAc,EACd,eAAuB,EACvB,SAAkB,EAClB,gBAAwB,EACxB,mBAA2B,EAC3B,YAAoB,EACpB,WAAoB,EACpB,QAA4B;QAVrC,YAYE,kBACE,QAAQ,EACR,WAAW,EACX,MAAM,EACN,eAAe,EACf,SAAS,EACT,gBAAgB,EAChB,mBAAmB,EACnB,YAAY,EACZ,WAAW,EACX,QAAQ,CACT,SAEF;QAxBQ,cAAQ,GAAR,QAAQ,CAAmB;QAC3B,iBAAW,GAAX,WAAW,CAAa;QACxB,YAAM,GAAN,MAAM,CAAQ;QACd,qBAAe,GAAf,eAAe,CAAQ;QACvB,eAAS,GAAT,SAAS,CAAS;QAClB,sBAAgB,GAAhB,gBAAgB,CAAQ;QACxB,yBAAmB,GAAnB,mBAAmB,CAAQ;QAC3B,kBAAY,GAAZ,YAAY,CAAQ;QACpB,iBAAW,GAAX,WAAW,CAAS;QACpB,cAAQ,GAAR,QAAQ,CAAoB;QAcnC,KAAI,CAAC,cAAc,GAAmB,KAAI,CAAC,QAAQ,CAAC,eAAe,CAAC;;IACtE,CAAC;IAEM,sDAAc,GAArB,UAA6B,WAAkC,EAAE,IAAW;QAC1E,IAAI,WAAW,IAAI,kDAAwB,CAAC,aAAa,EAAE;YACzD,WAAW,GAAG,kDAAwB,CAAC,2BAA2B,CAAC;SACpE;QACD,iBAAM,cAAc,YAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAC1C,CAAC;IAEM,qDAAa,GAApB,UACE,WAAkC,EAClC,IAAW,EACX,MAAoB,EACpB,OAAoB;QAEpB,IAAI,WAAW,IAAI,kDAAwB,CAAC,YAAY,EAAE;YACxD,WAAW,GAAG,kDAAwB,CAAC,kBAAkB,CAAC;SAC3D;QAED,IAAM,QAAQ,GAAG,CAAC,iBAAM,aAAa,YAAC,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QAE3E,IAAI,IAAI,CAAC,cAAc,CAAC,kBAAkB,IAAI,IAAI,CAAC,cAAc,CAAC,iBAAiB,IAAI,IAAI,EAAE;YAC3F,qHAAqH;YACrH,IAAI,aAAa,GAAoB,qBAAS,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,mBAAmB,EAAE,iCAAe,CAAC,CAAC;YACrH,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,kBAAkB,CAAC;YACzD,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC;YACxD,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;SAC/F;QACD,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,mBAAS,IAAI,QAAC,CAAC,KAAK,CAAC,SAAS,CAAC,EAAlB,CAAkB,CAAC,CAAC;IACrE,CAAC;IAES,uDAAe,GAAzB,UAA0B,OAAoB;QAC5C,OAAO,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;IACrC,CAAC;IACH,oCAAC;AAAD,CAAC,CA9DkD,yCAAmB,GA8DrE;AA9DY,sEAA6B;;;;;;;;;;ACV1C,+BAAgC;AAGhC,0BAAkB,GAAG,CAAC,CAAC;AACvB,kBAAkB,EAAE,CAAC;AACrB;IACE,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,SAAS,EAAE;QAChC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;KACtB;IACD,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,SAAS,EAAE;QACrC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACzB,mBAAmB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1C,0BAAkB,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;KAC3C;AACH,CAAC;AAED,6BAA6B,EAA8D;QAA5D,sCAAgB;IAC7C,gBAAgB,CAAC,QAAQ,GAAG,+BAA+B,CAAC;IAC5D,gBAAgB,CAAC,WAAW,GAAG,gCAAgC,CAAC;IAChE,gBAAgB,CAAC,MAAM,GAAG,gCAAgC,CAAC;AAC7D,CAAC;AAED,IAAM,kBAAkB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;AACvC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AAChB,4FAA4F;AAC5F,mGAAmG;AACnG,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,GAAG;IACvB,MAAM,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC;IACjC,OAAO,CAAC,CAAC;AACX,CAAC,CAAC;AAEF,mBAAmB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;;;;;;;;;;AC/BjC,wDAA0G;AAE1G;IAAA;IAUA,CAAC;IATQ,mCAAoB,GAA3B,UAA4B,cAAqC;QAC/D,IAAI,cAAc,CAAC,IAAI,IAAI,cAAc,CAAC,IAAI,EAAE;YAC9C,kDAAwB,CAAC,cAAc,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC;SAChE;IACH,CAAC;IAEM,wCAAyB,GAAhC,UAAiC,uBAA+B;QAC9D,OAAO,kDAAwB,CAAC,uBAAuB,CAAC,CAAC;IAC3D,CAAC;IACH,qBAAC;AAAD,CAAC;AAVY,wCAAc;;;;;;;;;;ACF3B,8CAAkD;AAClD,+BAAgC;AAQhC,IAAI,CAAC,eAAe,EAAE,EAAE;IACtB,6DAA6D;IAC7D,mIAAmI;IACnI,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE;QAC5C,eAAe,EAAE,CAAC;IACpB,CAAC,CAAC,CAAC;CACJ;AAED;IACE,IAAI,CAAC,eAAe,EAAE,EAAE;QACtB,OAAO,KAAK,CAAC;KACd;IAED,sBAAc,GAAG,SAAS,EAAE,CAAC;IAE7B,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,SAAS,EAAE;QAChC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;KACtB;IACD,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,SAAS,EAAE;QACrC,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,GAAG,sBAAc,CAAC;KACvC;IAED,sBAAc,CAAC,EAAE,CAAC,KAAK,GAAG;QAAS,cAAc;aAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;YAAd,yBAAc;;QAC/C,IAAI,WAAgB,CAAC;QACrB,IAAI,CAAC,IAAI,CAAC,UAAC,KAAa,EAAE,OAAoB;YAC5C,IAAI,yBAA8B,CAAC;YACnC,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;gBACvB,IAAI,KAAK,GAAW,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC5B,yBAAyB,GAAG,+BAAc,CAAC,0CAA0C,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;aACtH;iBAAM;gBACL,oFAAoF;gBACpF,yBAAyB,GAAG,+BAAc,CAAC,uBAAuB,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;aAC1F;YAED,gDAAgD;YAChD,WAAW,GAAG,WAAW,IAAI,yBAAyB,CAAC;QACzD,CAAC,CAAC,CAAC;QACH,OAAO,WAAW,CAAC;IACrB,CAAC,CAAC;IAEF,OAAO,IAAI,CAAC;AACd,CAAC;AAjCD,0CAiCC;AAED;IACE,OAAO,qBAAqB,EAAE,IAAI,0BAA0B,EAAE,CAAC;AACjE,CAAC;AAFD,0CAEC;AAED;IACE,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,SAAS,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,SAAS,CAAC;AAC3E,CAAC;AAED;IACE,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,SAAS,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,SAAS,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,MAAM,IAAI,SAAS,CAAC;AACvG,CAAC;AAED;IACE,IAAI,cAAuB,CAAC;IAC5B,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE;QACf,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;KAC9B;SAAM;QACL,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;KACvC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC;;;;;;;;;;ACxED,8CAAwD;AAE3C,cAAM,GAAG,CAAC,gBAAgB,CAAC,CAAC;AAEzC;IACE,+BAAc,CAAC,uBAAuB,CAAC,kBAAkB,EAAE,cAAM,CAAC,CAAC;AACrE,CAAC;AAFD,wCAEC;;;;;;;;;;ACLD,yCAA8C;AAE9C,+BAAiC;AAEjC;IACE,4BAAsB,iBAAqC,EAAY,sBAAgC;QAAjF,sBAAiB,GAAjB,iBAAiB,CAAoB;QAAY,2BAAsB,GAAtB,sBAAsB,CAAU;IAAG,CAAC;IAE3G,0CAAa,GAAb,UACE,cAA6B,EAC7B,MAAc,EACd,uBAA+E;QAHjF,iBAqBC;QAnBC,uCAAc;QAGd,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE,MAAM,CAAC,EAAE,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CACnH,UAAC,EAAoB;gBAAnB,iBAAS,EAAE,eAAO;YAClB,IAAM,eAAe,GAAG,QAAQ,CAAC,sBAAsB,EAAE,CAAC;YAC1D,IAAI,SAAS,EAAE;gBACb,eAAe,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;aACxC;YACD,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,uBAAa;gBAClC,eAAe,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;gBAC3C,uBAAuB,CAAC,qBAAS,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC,CAAC;YAC7E,CAAC,CAAC,CAAC;YACH,IAAI,OAAO,EAAE;gBACX,eAAe,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;aACtC;YACD,KAAI,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;QACvE,CAAC,CACF,CAAC;IACJ,CAAC;IAES,6CAAgB,GAA1B,UAA2B,cAA6B,EAAE,MAAe;QACvE,OAAO,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,sBAAsB,EAAE,CAAC,CAAC;IAC5D,CAAC;IAES,2CAAc,GAAxB,UAAyB,cAA6B,EAAE,MAAe;QACrE,OAAO,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,sBAAsB,EAAE,CAAC,CAAC;IAC5D,CAAC;IACH,yBAAC;AAAD,CAAC;AAjCY,gDAAkB;;;;;;;;;;ACL/B,yBAAmC;AACnC,4CAA+E;AAC/E,sCAA2C;AAC3C,uCAA0C;AAC1C,mCAA0C;AAC1C,qCAA0C;AAC1C,yCAA8C;AAC9C,gDAAqE;AACrE,qDAA8D;AAC9D,4DAA+H;AAC/H,2DAAwE;AACxE,oDAA6E;AAC7E,0DAAuH;AACvH,0DAAyF;AACzF,0CAA4C;AAC5C,gDAA8D;AAC9D,gEAAqG;AACrG,iDAAkG;AAClG,wDAA6E;AAE7E;IAiCE,+BAAmB,SAAc,EAAS,EAAU,EAAE,OAAoC,EAAE,kBAAuC;QAAhH,cAAS,GAAT,SAAS,CAAK;QAAS,OAAE,GAAF,EAAE,CAAQ;QAxB5C,4BAAuB,GAAU,EAAE,CAAC;QACpC,mCAA8B,GAAc,EAAE,CAAC;QAwBrD,IAAI,CAAC,eAAe,GAAoB,qBAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,iCAAe,EAAE,KAAK,CAAC,CAAC;QACjG,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;QACzD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;QACvD,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACjC,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAClC,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC9B,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC1D,CAAC;IA3Ba,0BAAI,GAAlB,UAAmB,8BAA8B,EAAE,IAAiB,EAAE,SAAS,EAAE,OAAoC,EAAE,EAAU;QAC/H,IAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,MAAM,EAAE;YACX,OAAO;SACR;QAED,yDAA2B,CAAC,QAAQ,CAAC,qBAAqB,EAAE,QAAE,CAAC,IAAI,CAAC,EAAE,uBAAuB,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QACnH,yDAA2B,CAAC,QAAQ,CAAC,8BAA8B,EAAE,QAAE,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IACzG,CAAC;IAEc,gCAAU,GAAzB,UAA0B,IAAiB;QACzC,IAAM,MAAM,GAAG,QAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACpD,IAAI,CAAC,MAAM,EAAE;YACX,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,+EAA+E,CAAC,CAAC;SACnG;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAaD,sBAAY,4DAAyB;aAArC;YACE,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,CAAmB,mCAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACpH,CAAC;;;OAAA;IAED,sBAAY,0DAAuB;aAAnC;YACE,IAAM,yBAAyB,GAAG,IAAI,CAAC,yBAAyB,CAAC;YACjE,IAAI,CAAC,yBAAyB,EAAE;gBAC9B,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,+FAA+F,CAAC,CAAC;gBACnI,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,gBAAgB,EAAE,KAAK;oBACvB,uBAAuB,EAAE,IAAI;iBAC9B,CAAC;aACH;YAED,OAAO,yBAAyB,CAAC,OAAO,CAAC;QAC3C,CAAC;;;OAAA;IAEM,iDAAiB,GAAxB,UAAyB,MAAiB;QACxC,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,8BAA8B,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAC1E,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,mDAAmB,GAA1B;QACE,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;IAC9B,CAAC;IAEM,iDAAiB,GAAxB;QACE,IAAI,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,qDAAyB,CAAC,qBAAqB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YAC5F,IAAI,CAAC,iBAAiB,EAAE,CAAC;SAC1B;aAAM,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,qDAAyB,CAAC,qBAAqB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YACnG,IAAI,CAAC,iBAAiB,EAAE,CAAC;SAC1B;QACD,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;YAC1B,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,gBAAgB,EAAE,CAAC;SAClD;IACH,CAAC;IAEM,oDAAoB,GAA3B;QACE,iBAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,mBAAS;YAC1C,IAAI,SAAS,CAAC,WAAW,IAAI,SAAS,CAAC,WAAW,CAAC,yBAAyB,EAAE;gBAC5E,SAAS,CAAC,WAAW,CAAC,oBAAoB,EAAE,CAAC;aAC9C;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,6CAAa,GAArB;QACE,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACzB,OAAO,CACL,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;gBACtB,CAAC,aAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,2CAAoB,EAAE,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CACjH,CAAC;SACH;QACD,QAAQ,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC,iBAAiB,EAAE,EAAE;YACrE,KAAK,OAAO,CAAC;YACb,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC;YACd,KAAK,MAAM;gBACT,OAAO,CACL,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE;oBACtB,CAAC,aAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAChI,CAAC;YACJ;gBACE,OAAO,KAAK,CAAC;SAChB;IACH,CAAC;IAEO,iDAAiB,GAAzB;QACE,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,4BAA4B,EAAE,CAAC;QACpC,QAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAI,yDAA2B,CAAC,iCAAmC,CAAC,CAAC,CAAC,MAAM,CACjG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CACxC,CAAC;QACF,qDAAyB,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC/D,CAAC;IAEO,iDAAiB,GAAzB;QACE,IAAI,CAAC,iCAAiC,EAAE,CAAC;QACzC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACxB,qDAAyB,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACjE,CAAC;IAEO,6CAAa,GAArB,UAAsB,kBAAuC;QAC3D,IAAI,eAAe,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAClD,IAAI,cAAc,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAChD,IAAI,QAAQ,GAAG,kBAAkB,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,uCAAkB,CAAC,eAAe,EAAE,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACjI,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,uBAAuB,EAAE;YACzD,QAAQ,CAAC,sBAAsB,EAAE,CAAC;SACnC;QACD,IAAI,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,EAAE;YACjD,QAAQ,CAAC,mBAAmB,CAAC,IAAI,CAAC,uBAAuB,CAAC,eAAe,CAAC,CAAC;SAC5E;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEO,oDAAoB,GAA5B;QAAA,iBAiBC;QAhBC,IAAI,sBAAsB,GAAG,QAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;QAC5E,IAAI,iBAAiB,GAAG,QAAE,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,wCAAwC,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAC;QACnH,IAAI,QAAQ,GAAG,QAAE,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,8BAA8B,EAAE,CAAC,CAAC;QACxE,QAAQ,CAAC,IAAI,CAAC,WAAC,CAAC,YAAY,CAAC,CAAC,CAAC;QAC/B,iBAAiB,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACtC,sBAAsB,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;QACrD,IAAI,IAAI,CAAC,uBAAuB,CAAC,OAAO,EAAE;YACxC,OAAO,IAAI,+DAA8B,CAAC,OAAO,EAAE,sBAAsB,EAAE,WAAC,CAAC,sBAAsB,CAAC,EAAE,cAAM,YAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,EAArB,CAAqB,CAAC,CAAC;SACpI;QACD,OAAO,IAAI,qDAAyB,CAClC,OAAO,EACP,sBAAsB,EACtB,IAAI,CAAC,SAAS,EACd,qBAAqB,CAAC,kBAAkB,EACxC,qBAAqB,CAAC,oBAAoB,CAC3C,CAAC;IACJ,CAAC;IAEO,mDAAmB,GAA3B;QACE,IAAI,qBAAqB,GAAG,QAAE,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,OAAO,GAAG,QAAE,CAAC,GAAG,CAAC,CAAC;QACtB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACvC,qBAAqB,CAAC,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACjD,IAAI,cAAc,GAAG,IAAI,mDAAwB,CAAC,OAAO,EAAE,qBAAqB,CAAC,CAAC;QAClF,OAAO,cAAc,CAAC;IACxB,CAAC;IAEO,oDAAoB,GAA5B,UAA6B,iBAAyB;QACpD,IAAM,0BAA0B,GAAG,IAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC;QAC3E,IAAI,CAAC,UAAU,GAAG,aAAK,CAAC,iBAAiB,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,0BAA0B,CAAC;IACzH,CAAC;IAEO,sDAAsB,GAA9B;QACE,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;IACxE,CAAC;IAEO,mDAAmB,GAA3B;QAAA,iBAIC;QAHC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,yBAAW,CAAC,SAAS,EAAE,cAAM,YAAI,CAAC,eAAe,EAAE,EAAtB,CAAsB,CAAC,CAAC;QACvE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,yBAAW,CAAC,YAAY,EAAE,UAAC,CAAQ,EAAE,IAA4B,IAAK,YAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAA7B,CAA6B,CAAC,CAAC;QACvH,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,yBAAW,CAAC,UAAU,EAAE,cAAM,YAAI,CAAC,gBAAgB,EAAE,EAAvB,CAAuB,CAAC,CAAC;IAC3E,CAAC;IAEO,yDAAyB,GAAjC;QAAA,iBAcC;QAbC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CACtC,QAAQ,EACR,qBAAQ,CAAC;YACP,iBAAI,CAAC,KAAI,CAAC,uBAAuB,EAAE,mBAAS;gBAC1C,IAAI,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC;gBACxC,IAAI,WAAW,IAAI,WAAW,CAAC,yBAAyB,IAAI,CAAC,KAAI,CAAC,6BAA6B,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE;oBACnH,SAAS,CAAC,WAAW,CAAC,qBAAqB,CAAC,KAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;iBACvF;qBAAM,IAAI,WAAW,IAAI,SAAS,CAAC,WAAW,CAAC,yBAAyB,EAAE;oBACzE,SAAS,CAAC,WAAW,CAAC,qBAAqB,EAAE,CAAC;iBAC/C;YACH,CAAC,CAAC,CAAC;QACL,CAAC,EAAE,qBAAqB,CAAC,oBAAoB,CAAC,CAC/C,CAAC;IACJ,CAAC;IAEO,0DAA0B,GAAlC;QACE,IAAM,yBAAyB,GAAG,IAAI,CAAC,yBAAyB,CAAC;QACjE,IAAI,yBAAyB,EAAE;YAC7B,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CACjC,cAAM,eAAE,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,+CAAsB,CAAC,WAAW,CAAC,EAAjF,CAAiF,EACvF,yBAAyB,CAC1B,CAAC;YACF,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAClC,cAAM,eAAE,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,+CAAsB,CAAC,WAAW,CAAC,EAAjF,CAAiF,EACvF,yBAAyB,CAC1B,CAAC;SACH;IACH,CAAC;IAEO,iEAAiC,GAAzC;QAAA,iBAMC;QALC,iBAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,UAAC,SAAS,EAAE,KAAK;YAClD,IAAI,SAAS,CAAC,OAAO,EAAE;gBACrB,SAAS,CAAC,OAAO,CAAC,gBAAgB,GAAG,KAAI,CAAC,8BAA8B,CAAC,KAAK,CAAC,CAAC;aACjF;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,4DAA4B,GAApC;QACE,iBAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE,mBAAS;YAC1C,IAAI,SAAS,CAAC,OAAO,EAAE;gBACrB,SAAS,CAAC,OAAO,CAAC,gBAAgB,GAAG,KAAK,CAAC;aAC5C;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,6DAA6B,GAArC,UAAsC,kBAA+B;QACnE,IAAI,QAAQ,GAAG,kBAAkB,CAAC,qBAAqB,EAAE,CAAC,GAAG,CAAC;QAC9D,IAAI,WAAW,GAAG,kBAAkB,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;QACpE,IAAI,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC,qBAAqB,EAAE,CAAC,GAAG,CAAC;QACvF,IAAI,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC,qBAAqB,EAAE,CAAC,MAAM,CAAC;QAE7F,WAAW,GAAG,WAAW,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QAEjD,OAAO,QAAQ,IAAI,WAAW,IAAI,WAAW,IAAI,cAAc,CAAC;IAClE,CAAC;IAEO,sDAAsB,GAA9B;QACE,IAAI,mBAA2B,CAAC;QAChC,iCAAe,CAAC,+BAA+B,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,OAAO,CAAC,eAAK;YACvG,IAAM,OAAO,GAAG,KAAK,CAAC,OAAsC,CAAC;YAE7D,IAAI,CAAC,mBAAmB,IAAI,OAAO,CAAC,mBAAmB,EAAE;gBACvD,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC;aACnD;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,mBAAmB,EAAE;YACxB,mBAAmB,GAAG,WAAC,CAAC,qBAAqB,CAAC,mCAAmC,CAAC,CAAC;SACpF;QAED,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAEO,+CAAe,GAAvB;QACE,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;IACtC,CAAC;IAEO,gDAAgB,GAAxB;QACE,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;IACtC,CAAC;IAEO,kDAAkB,GAA1B,UAA2B,IAA4B;QACrD,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,KAAK,CAAC,EAAE;YACjC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;SACrC;aAAM;YACL,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;SACrC;IACH,CAAC;IA9Qa,0CAAoB,GAAG,GAAG,CAAC;IAE1B,4BAAM,GAAG,IAAI,eAAM,CAAC,kBAAkB,CAAC,CAAC;IACxC,wCAAkB,GAAW,GAAG,CAAC;IACjC,0CAAoB,GAAW,IAAI,CAAC,CAAC,oDAAoD;IACzF,yDAAmC,GAAG,SAAS,CAAC;IA0QjE,4BAAC;CAAA;AAhRY,sDAAqB;;;;;;;;;ACpBlC,6CAA6C;;AAK7C,kDAAiE;AAEjE,qCAAuC;AAEvC,uDAA0E;AAC1E,sCAAwC;AAExC,2CAAoD;AAIpD,+BAAgC;AAChC,wDAA2E;AAE3E;IAWE,8BAAmB,KAAY;QAAZ,UAAK,GAAL,KAAK,CAAO;IAAG,CAAC;IAEnC;;OAEG;IACI,iDAAkB,GAAzB;QACE,IAAI,CAAC,uBAAuB,GAAG,SAAS,CAAC;QACzC,IAAI,CAAC,6BAA6B,GAAG,SAAS,CAAC;QAC/C,IAAI,CAAC,qCAAqC,GAAG,SAAS,CAAC;IACzD,CAAC;IAED;;;OAGG;IACI,yDAA0B,GAAjC;QAAA,iBAoBC;QAnBC,IAAM,OAAO,GAAG,IAAI,qCAAiB,EAAE,CAAC;QACxC,IAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QACjD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YACvB,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE;gBAC7B,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAC,KAAiB;oBACjC,OAAO,CAAC,kBAAkB,CAAS,KAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;gBACpF,CAAC,CAAC,CAAC;aACJ;iBAAM;gBACL,OAAO,CAAC,kBAAkB,CAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAC,KAAiB,IAAK,YAAK,CAAC,KAAK,EAAX,CAAW,CAAC,CAAC,CAAC;aACzH;SACF;QACD,IAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QACjD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YACvB,OAAO,CAAC,0BAA0B,CAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,UAAC,KAAiB,IAAK,YAAK,CAAC,KAAK,EAAX,CAAW,CAAC,CAAC,CAAC;SAC3H;QACD,IAAI,aAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,EAAE;YAC/D,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;SAClD;QACD,OAAO,OAAO,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;IAED;;;OAGG;IACI,yDAA0B,GAAjC,UAAkC,YAA0B;QAC1D,eAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAE5B,IAAM,aAAa,GAAG,IAAI,CAAC,0BAA0B,EAAE,CAAC;QACxD,IAAM,cAAc,GAAG,IAAI,CAAC,yBAAyB,CAAC,aAAa,CAAC,CAAC;QAErE,IAAM,mBAAmB,GAAG,IAAI,CAAC,0BAA0B,CAAC,YAAY,CAAC,CAAC;QAC1E,IAAI,CAAC,aAAK,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,IAAI,CAAC,+CAAsB,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE;YACzG,cAAc,CAAC,aAAa,GAAG,mBAAmB,CAAC,KAAK,CAAC;YACzD,cAAc,CAAC,qBAAqB,GAAG,mBAAmB,CAAC,QAAQ,CAAC;YACpE,cAAc,CAAC,qBAAqB,GAAG,mBAAmB,CAAC,QAAQ,CAAC;YACpE,IAAI,CAAC,6BAA6B,GAAG,mBAAmB,CAAC,eAAe,CAAC;YACzE,IAAI,CAAC,kCAAkC,GAAG,mBAAmB,CAAC,KAAK,CAAC;YACpE,IAAI,CAAC,qCAAqC,GAAG,mBAAmB,CAAC,QAAQ,CAAC;YAC1E,IAAI,CAAC,qCAAqC,GAAG,mBAAmB,CAAC,QAAQ,CAAC;SAC3E;aAAM;YACL,IAAM,KAAK,GAAG,YAAY,CAAC,8BAA8B,EAAE,CAAC;YAC5D,IAAI,CAAC,6BAA6B,GAAG,KAAK,CAAC,eAAe,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC;YAChG,IAAI,CAAC,kCAAkC,GAAG,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;YACjF,IAAI,CAAC,qCAAqC,GAAG,KAAK,CAAC,QAAQ,CAAC;YAC5D,IAAI,CAAC,qCAAqC,GAAG,KAAK,CAAC,QAAQ,CAAC;SAC7D;QACD,IAAI,CAAC,uBAAuB,GAAG,YAAY,CAAC,eAAe,CAAC,MAAM,CAAC;QACnE,IAAI,CAAC,kBAAkB,GAAG,cAAc,CAAC;QACzC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACpD,CAAC;IAED;;;;;OAKG;IACI,qCAAM,GAAb,UAAc,MAA6B,EAAE,SAA4B;QAAzE,iBAgDC;QAhD4C,wCAAY,MAAM,CAAC,SAAS;QACvE,yFAAyF;QACzF,MAAM,CAAC,+BAA+B,GAAG,KAAK,CAAC;QAC/C,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;YACjC,IAAM,QAAQ,GAAG,UAAC,WAAgC;gBAChD,IAAM,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC;gBACrC,WAAW,GAAG,KAAI,CAAC,iCAAiC,CAAC,WAAW,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;gBACxF,IAAI,uBAAU,CAAC,sBAAsB,CAAC,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE;oBAClF,kIAAkI;oBAClI,MAAM,CAAC,SAAS,IAAI,CAAC,CAAC;oBACtB,OAAO,KAAI,CAAC,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;iBAChD;qBAAM;oBACL,OAAO,CAAC,WAAW,CAAC,CAAC;iBACtB;YACH,CAAC,CAAC;YAEF,IAAM,aAAa,GAAG,KAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;YACzE,KAAI,CAAC,oBAAoB,GAAG,aAAa,CAAC;YAE1C,aAAa;iBACV,IAAI,CAAC,UAAC,YAA2B;gBAChC,IAAI,KAAI,CAAC,oBAAoB,IAAI,aAAa,EAAE;oBAC9C,oFAAoF;oBACpF,gEAAgE;oBAChE,qFAAqF;oBACrF,IAAM,eAAa,GAAoB,EAAE,CAAC;oBAC1C,IAAI,YAAY,CAAC,cAAc,IAAI,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;wBACjE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,UAAC,CAAgB;4BAC7D,IAAI,CAAC,CAAC,WAAW,EAAE;gCACjB,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,EAAE;oCAClE,eAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;iCACvB;6BACF;iCAAM;gCACL,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE;oCAC5D,eAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;iCACvB;6BACF;wBACH,CAAC,CAAC,CAAC;qBACJ;oBACD,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,eAAa,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;iBACpD;qBAAM;oBACL,MAAM,EAAE,CAAC;iBACV;YACH,CAAC,CAAC;iBACD,KAAK,CAAC,UAAC,KAAqB;gBAC3B,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,wCAAS,GAAhB,UAAiB,qBAA6B;QAA9C,iBAaC;QAZC,IAAM,MAAM,GAAG,IAAI,6CAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrD,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,OAAO,CAAC,CAAC;QACxG,MAAM,CAAC,SAAS,GAAG,qBAAqB,CAAC;QACzC,OAAO,IAAI,CAAC,KAAK;aACd,WAAW,EAAE;aACb,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;aACzB,IAAI,CAAC,UAAC,OAAsB;YAC3B,IAAI,KAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,IAAI,OAAO,IAAI,OAAO,CAAC,cAAc,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;gBACtG,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,KAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;aACtG;YACD,OAAO,OAAO,CAAC;QACjB,CAAC,CAAC,CAAC;IACP,CAAC;IAEM,yDAA0B,GAAjC,UAAkC,WAAyB;QACzD,IAAM,MAAM,GAAG,IAAI,6CAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrD,IAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;QAChC,KAAK,CAAC,EAAE,GAAG,CAAG,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAI,IAAI,CAAC,0BAA0B,EAAI,CAAC;QAC9E,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,UAAC,UAAsB;YACzC,UAAU,CAAC,eAAe,GAAG,IAAI,CAAC;QACpC,CAAC,CAAC,CAAC;QACH,KAAK,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,UAAC,UAAsB,IAAK,iBAAU,CAAC,KAAK,EAAhB,CAAgB,CAAC,CAAC,CAAC,CAAC;QACnH,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,+BAA+B,GAAG,KAAK,CAAC;QACzD,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC;IAES,yDAA0B,GAApC;QACE,4FAA4F;QAC5F,yCAAyC;QACzC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,IAAI,SAAS,EAAE;YACjD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC;SACzC;aAAM,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,IAAI,SAAS,EAAE;YACrD,iFAAiF;YACjF,kEAAkE;YAClE,OAAO,IAAI,CAAC,+BAA+B,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,4BAA4B,EAAE,CAAC,CAAC;SACjH;aAAM;YACL,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,4BAA4B,EAAE,EAAE,UAAC,UAAsB,IAAK,iBAAU,CAAC,KAAK,EAAhB,CAAgB,CAAC,CAAC;SACjG;IACH,CAAC;IAES,wDAAyB,GAAnC,UAAoC,aAAwB,EAAE,gBAAgC;QAAhC,0DAAgC;QAC5F,IAAI,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC;QACpD,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,EAAE;YACzC,sHAAsH;YACtH,IAAM,UAAU,GAAG,IAAI,CAAC,+BAA+B,CACrD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,EAC7B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CACxE,CAAC;YACF,mBAAmB,GAAG,IAAI,CAAC,GAAG,CAAC,mBAAmB,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;SACxE;QACD,IAAM,cAAc,GAAoB;YACtC,KAAK,EAAU,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK;YACvC,qBAAqB,EAAE,mBAAmB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACxF,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY;YAC7C,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc;YACjD,+BAA+B,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK;SAC9F,CAAC;QACF,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE;YAClC,cAAc,CAAC,WAAW,GAAW,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;SACrE;QACD,IAAI,aAAa,IAAI,IAAI,EAAE;YACzB,cAAc,CAAC,aAAa,GAAG,aAAa,CAAC;SAC9C;QAED,IAAI,gBAAgB,IAAI,aAAK,CAAC,gBAAgB,CAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;YACxF,cAAc,CAAC,cAAc,GAAG;gBAC9B;oBACE,KAAK,EAAU,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa;oBAC/C,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,sBAAsB;iBACrD;aACF,CAAC;SACH;QACD,OAAO,cAAc,CAAC;IACxB,CAAC;IAES,2DAA4B,GAAtC;QACE,IAAI,WAAW,GAAiB,EAAE,CAAC;QACnC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,2BAA2B,EAAE;YACxE,IAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YACjD,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE;gBACxB,OAAO,SAAS,CAAC;aAClB;YACD,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;SAC/C;aAAM;YACL,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;SAC1C;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,sBAAY,kDAAgB;aAA5B;YACE,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;QACxF,CAAC;;;OAAA;IAEO,8DAA+B,GAAvC,UAAwC,UAAoB,EAAE,WAAyB;QACrF,+EAA+E;QAC/E,+BAA+B;QAC/B,sEAAsE;QAEtE,IAAM,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,UAAU,EAAE,UAAC,GAAW;YAC9C,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC;QAC3B,CAAC,CAAC,CAAC;QACH,IAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC;aAClC,MAAM,CAAC,UAAC,UAAsB;YAC7B,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;QAChE,CAAC,CAAC;aACD,GAAG,CAAC,UAAC,UAAsB;YAC1B,OAAO,UAAU,CAAC,KAAK,CAAC;QAC1B,CAAC,CAAC;aACD,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IAChD,CAAC;IAEO,yDAA0B,GAAlC,UAAmC,YAA0B;QAC3D,IAAI,sBAAsB,GAAG,YAAY,CAAC,8BAA8B,EAAE,CAAC;QAE3E,IAAI,IAAI,CAAC,sCAAsC,EAAE,EAAE;YACjD,sBAAsB,GAAG,IAAI,CAAC,qCAAqC,CAAC,YAAY,EAAE,sBAAsB,CAAC,CAAC;SAC3G;aAAM;YACL,sBAAsB,CAAC,KAAK,EAAE,CAAC;SAChC;QACD,IAAI,IAAI,CAAC,wCAAwC,EAAE,EAAE;YACnD,sBAAsB,GAAG,IAAI,CAAC,uCAAuC,CAAC,YAAY,EAAE,sBAAsB,CAAC,CAAC;SAC7G;QAED,sBAAsB,GAAG,IAAI,CAAC,kCAAkC,CAAC,YAAY,EAAE,sBAAsB,CAAC,CAAC;QACvG,IAAI,+CAAsB,CAAC,OAAO,CAAC,sBAAsB,CAAC,EAAE;YAC1D,OAAO,IAAI,CAAC;SACb;QACD,OAAO,sBAAsB,CAAC;IAChC,CAAC;IAEO,qEAAsC,GAA9C;QACE,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE;YAC7B,OAAO,KAAK,CAAC;SACd;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,2BAA2B,EAAE,EAAE;YACnD,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,uEAAwC,GAAhD;QACE,OAAO,aAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACvD,CAAC;IAEO,oEAAqC,GAA7C,UAA8C,YAA0B,EAAE,SAAiC;QACzG,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,2BAA2B,EAAE,EAAE;YACnD,IAAM,aAAa,GAAG,IAAI,CAAC,0BAA0B,EAAE,CAAC;YACxD,SAAS,GAAG,YAAY,CAAC,oCAAoC,CAAC,aAAa,CAAC,CAAC;YAC7E,IAAI,+CAAsB,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;gBAC7C,SAAS,CAAC,QAAQ,GAAG,MAAM,CAAC;aAC7B;SACF;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,sEAAuC,GAA/C,UAAgD,YAA0B,EAAE,SAAiC;QAC3G,IAAI,aAAK,CAAC,aAAa,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YACxC,SAAS,CAAC,KAAK,GAAG,YAAY,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;SACnD;QACD,IAAI,aAAK,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE;YAC3C,IAAM,uCAAuC,GAAG,YAAY,CAAC,kBAAkB,CAAC,OAAO,EAAE;gBACvF,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,YAAY,CAAC,kBAAkB,CAAC,KAAK,EAAE,GAAG,GAAG,CAAC;YAClD,SAAS,CAAC,QAAQ,GAAG,KAAG,uCAAuC,GAAG,IAAI,CAAC,gBAAkB,CAAC;SAC3F;aAAM;YACL,SAAS,CAAC,QAAQ,GAAM,SAAS,CAAC,QAAQ,SAAI,IAAI,CAAC,gBAAkB,CAAC;SACvE;QAED,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE;YACvB,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,6CAA6C,CAAC,YAAY,CAAC,CAAC;SACvF;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,4EAA6C,GAArD,UAAsD,YAA0B;QAC9E,IAAM,UAAU,GAAG,IAAI,qCAAiB,EAAE,CAAC;QAC3C,IAAM,uBAAuB,GAAG,YAAY,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC;QAE3E,uBAAuB,CAAC,OAAO,CAAC,cAAI,IAAI,iBAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAApB,CAAoB,CAAC,CAAC;QAE9D,IAAM,8BAA8B,GAAG,IAAI,CAAC,0BAA0B,EAAE,CAAC;QACzE,UAAU,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC;QAElD,OAAO,UAAU,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;IAEO,iEAAkC,GAA1C,UAA2C,YAA0B,EAAE,SAAiC;QACtG,IAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC;aAC1C,IAAI,EAAE;aACN,IAAI,CAAC,UAAC,GAAW;YAChB,IAAI,aAAK,CAAC,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,aAAK,CAAC,iBAAiB,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,EAAE;gBAClF,OAAO,SAAS,CAAC,GAAG,CAAC,CAAC;aACvB;QACH,CAAC,CAAC;aACD,KAAK,EAAE,CAAC;QAEX,IAAI,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,MAAM,IAAI,CAAC,EAAE;YAC1C,SAAS,GAAG,SAAS,CAAC;SACvB;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,gEAAiC,GAAzC,UAA0C,WAA+B,EAAE,mBAA2B;QAAtG,iBAQC;QAPC,IAAM,KAAK,GAAG,uBAAU,CAAC,2BAA2B,CAAC,mBAAmB,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;QAEvH,OAAO,CAAC,CAAC,MAAM,CAAmB,WAAW,EAAE,oBAAU;YACvD,IAAM,SAAS,GAAG,CAAC,CAAC,OAAO,CAAC,KAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,KAAI,CAAC,kCAAkC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAC3H,IAAM,KAAK,GAAG,KAAI,CAAC,KAAK,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;YACrD,OAAO,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,yDAA0B,GAAlC,UAAmC,MAAuB;QAA1D,iBAEC;QADC,OAAO,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,UAAC,KAAoB,IAAK,YAAI,CAAC,kCAAkC,CAAC,KAAK,CAAC,KAAK,CAAC,EAApD,CAAoD,CAAC,CAAC;IAC1G,CAAC;IAEO,iEAAkC,GAA1C,UAA2C,KAAa;QAAxD,iBAMC;QALC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,EAAE,sBAAY;YAC1D,IAAM,YAAY,GAAG,KAAI,CAAC,mCAAmC,CAAC,KAAI,CAAC,yBAAyB,CAAC,YAAY,CAAC,CAAC,CAAC;YAC5G,IAAM,KAAK,GAAG,IAAI,MAAM,CAAC,MAAI,YAAY,MAAG,EAAE,IAAI,CAAC,CAAC;YACpD,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,wDAAyB,GAAjC,UAAkC,IAAY;QAC5C,qGAAqG;QACrG,+DAA+D;QAC/D,OAAO,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC;IAEO,kEAAmC,GAA3C,UAA4C,IAAY;QACtD,yEAAyE;QACzE,iFAAiF;QACjF,kDAAkD;QAClD,yFAAyF;QACzF,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACvD,CAAC;IACH,2BAAC;AAAD,CAAC;AAzXY,oDAAoB;;;;;;;;;;ACjBpB,4BAAoB,GAAe;IAC9C,EAAE,EAAE,cAAc;IAClB,KAAK,EAAE,IAAI;CACZ,CAAC;;;;;;;;;;ACJF,uCAA0C;AAC1C,uCAAoD;AAEpD;IACE,4BAAmB,KAAa,EAAS,EAAU;QAAhC,UAAK,GAAL,KAAK,CAAQ;QAAS,OAAE,GAAF,EAAE,CAAQ;IAAG,CAAC;IAEhD,kCAAK,GAAZ,UAAa,KAAa,EAAE,GAAY;QACtC,8CAA8C;QAC9C,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,MAAM,GAAG,IAAI,eAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QAClE,sEAAsE;QACtE,kEAAkE;QAClE,IAAI,OAAO,IAAI,GAAG,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;YACtD,OAAO,IAAI,yBAAgB,CAAC,MAAM,CAAC,CAAC;SACrC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAEM,qCAAQ,GAAf;QACE,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IACH,yBAAC;AAAD,CAAC;AAlBY,gDAAkB;;;;;;;;;;ACJ/B,uCAAgC;AAEhC,sCAA8B;AACjB,aAAK,GAAe;IAC/B,gBAAgB,EAAE,CAAC,kBAAkB,EAAE,YAAY,EAAE,OAAO,CAAC;IAC7D,QAAQ,EAAE;QACR,UAAU,EAAE,8CAA8C;QAC1D,mBAAmB,EAAE,CAAC,iBAAiB,EAAE,mBAAmB,CAAC;QAC7D,eAAe,EAAE,6CAA6C;QAC9D,iBAAiB,EAAE,2DAA2D;QAC9E,gBAAgB,EAAE,0CAA0C;QAC5D,KAAK,EAAE,cAAc;QACrB,SAAS,EAAE,0BAA0B;QACrC,aAAa,EAAE,SAAS;QACxB,oBAAoB,EAAE,WAAW;QACjC,UAAU,EAAE,CAAC,WAAW,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,EAAE,kBAAkB,CAAC;QAChH,iBAAiB,EAAE,CAAC,cAAc,EAAE,MAAM,EAAE,QAAQ,CAAC;QACrD,gBAAgB,EAAE,CAAC,cAAc,EAAE,qBAAqB,CAAC;QACzD,cAAc,EAAE,6CAA6C;QAC7D,oBAAoB,EAAE,yCAAyC;QAC/D,mBAAmB,EAAE,OAAO;QAC5B,mBAAmB,EAAE,gBAAgB;QACrC,WAAW,EAAE,sCAAsC;KACpD;IACD,OAAO,EAAE,CAAC,WAAI,EAAE,aAAK,CAAC;CACvB,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzBF,0CAAqD;AACrD,8CAAgF;AAChF,yCAAiD;AACjD,mCAAuC;AAEvC,uDAAgE;AAChE,gDAAoE;AACpE,2CAAiD;AAmBjD,IAAY,SAKX;AALD,WAAY,SAAS;IACnB,sBAAS;IACT,0BAAa;IACb,0BAAa;IACb,4BAAe;AACjB,CAAC,EALW,SAAS,GAAT,iBAAS,KAAT,iBAAS,QAKpB;AAED;IA+BE,4BACU,OAAoB,EACpB,iBAA8B,EAC9B,YAA0B,EAClC,OAAmC;QAJrC,iBAiCC;QAhCS,YAAO,GAAP,OAAO,CAAa;QACpB,sBAAiB,GAAjB,iBAAiB,CAAa;QAC9B,iBAAY,GAAZ,YAAY,CAAc;QA1B5B,wBAAmB,GAAG,gCAA8B,uBAAU,CAAC,UAAU,EAAI,CAAC;QAC9E,+BAA0B,GAAG,4BAA4B,CAAC;QA4BhE,IAAI,CAAC,IAAI,GAAG,qBAAS,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC3C,IAAI,CAAC,OAAO,GAAG,qBAAQ,CAAC,OAAO,EAA6B;YAC1D,eAAe,EAAE,sBAAsB;YACvC,aAAa,EAAE,oBAAoB;SACpC,CAAC,CAAC;QACH,4FAA4F;QAC5F,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,SAAS,EAAE;YACrC,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,GAAG,CAAC;SAC5B;QAED,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,WAAC;YAChC,KAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;QAEH,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,UAAU,EAAE,WAAC;YAC/B,KAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,oBAAoB,GAAG,IAAI,+BAAc,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;QAClF,IAAI,CAAC,qBAAqB,GAAG,IAAI,6CAAqB,CAAC,OAAO,EAAE;YAC9D,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,aAAa;YACzC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO;SAC9B,CAAC,CAAC;QACH,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAC;QAC3D,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAClC,IAAI,CAAC,2BAA2B,EAAE,CAAC;IACrC,CAAC;IArDD,sBAAW,8CAAc;aAAzB;YACE,OAAO,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC;QACvE,CAAC;;;OAAA;IAED,sBAAW,wCAAQ;aAAnB;YACE,OAAO,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QAC3E,CAAC;;;OAAA;IAED,sBAAW,2CAAW;aAAtB;YACE,OAAO,IAAI,CAAC,qBAAqB,CAAC,WAAW,CAAC;QAChD,CAAC;;;OAAA;IAED,sBAAY,iDAAiB;aAA7B;YAAA,iBAMC;YALC,OAAO,iBAAI,CACT,IAAI,CAAC,kBAAkB,EACvB,oBAAU;gBACR,eAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,QAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,KAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,MAAM,GAAG,CAAC;YAA9H,CAA8H,CACjI,CAAC;QACJ,CAAC;;;OAAA;IAqCM,4CAAe,GAAtB,UAAuB,CAAC;QACtB,IAAM,MAAM,GAAG,QAAE,CAAc,CAAC,CAAC,MAAM,CAAC,CAAC;QACzC,IAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QAC7D,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE;YACjD,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;SACvC;aAAM,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE;YAClE,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;SACxC;IACH,CAAC;IAEM,2CAAc,GAArB,UAAsB,CAAC;QACrB,IAAM,MAAM,GAAG,QAAE,CAAc,CAAC,CAAC,MAAM,CAAC,CAAC;QACzC,IAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QAEnE,6IAA6I;QAC7I,IAAI,CAAC,CAAC,aAAa,IAAI,QAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,OAAO,EAAE,EAAE;YACpD,IAAM,oBAAoB,GAAG,QAAE,CAAc,CAAC,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;YACpG,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,QAAE,CAAc,CAAC,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE;gBAC3H,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;aACtC;iBAAM,IAAI,oBAAoB,CAAC,MAAM,IAAI,CAAC,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;gBACvE,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;aAC7C;SACF;aAAM;YACL,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;gBAC/C,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;aACtC;iBAAM,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;gBACnC,IAAI,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;aAC7C;SACF;QACD,QAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,6BAAa,CAAC,qBAAqB,CAAC,CAAC;IAC7D,CAAC;IAEY,qCAAQ,GAArB;;;;4BACE,qBAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;;wBAA/B,SAA+B,CAAC;;;;;KACjC;IAEY,mCAAM,GAAnB;;;;4BACE,qBAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;;wBAA7B,SAA6B,CAAC;;;;;KAC/B;IAEY,qCAAQ,GAArB;;;;4BACE,qBAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;;wBAA/B,SAA+B,CAAC;;;;;KACjC;IAEY,sCAAS,GAAtB;;;;4BACE,qBAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;;wBAAhC,SAAgC,CAAC;;;;;KAClC;IAEM,kEAAqC,GAA5C;QACE,IAAM,QAAQ,GAAG,IAAI,CAAC,sBAAsB,CAAC;QAC7C,IAAI,QAAQ,EAAE;YACZ,QAAE,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;YACvC,wEAAwE;YACxE,gEAAgE;YAChE,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;YACnC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;SAC1B;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEM,wDAA2B,GAAlC;QACE,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;IACrC,CAAC;IAEY,+CAAkB,GAA/B,UAAgC,WAAqD;;;;;4BACvD,qBAAM,IAAI,CAAC,oBAAoB,CAAC,cAAc,CAAC,WAAW,CAAC;;wBAAjF,KAAsB,SAA2D,EAA/E,OAAO,eAAE,MAAM;wBACvB,IAAI,MAAM,KAAK,iCAAgB,CAAC,SAAS,EAAE;4BACzC,sBAAO,EAAE,EAAC;yBACX;wBACD,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;wBAChC,sBAAO,OAAO,EAAC;;;;KAChB;IAEM,6CAAgB,GAAvB;QACE,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;IAC7B,CAAC;IAEM,8CAAiB,GAAxB,UAAyB,WAAyB;QAAlD,iBAgCC;QA/BC,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;QAChC,IAAI,CAAC,YAAY,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAE1C,IAAI,CAAC,kBAAkB,GAAG,WAAW,CAAC;QAEtC,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,yBAAyB,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;QAC7E,IAAI,CAAC,YAAY,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC;QAEjD,IAAI,CAAC,qBAAqB,CAAC,wCAAwC,CAAC,IAAI,CAAC,CAAC;QAE1E,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;YACxB,IAAI,CAAC,2BAA2B,EAAE,CAAC;YACnC,QAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,6BAAa,CAAC,qBAAqB,CAAC,CAAC;YAC3D,OAAO;SACR;QAED,WAAW;aACR,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,QAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,EAA/B,CAA+B,CAAC;aAC/C,OAAO,CAAC,oBAAU;YACjB,IAAM,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,KAAI,CAAC,+BAA+B,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAI,CAAC,uBAAuB,CAAC,UAAU,CAAC,CAAC;YAE7H,GAAG,CAAC,YAAY,CAAC,IAAI,EAAE,0BAAwB,oBAAO,CAAC,WAAW,EAAE,UAAU,CAAG,CAAC,CAAC;YACnF,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YACnC,GAAG,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;YAC3C,GAAG,CAAC,YAAY,CAAC,YAAY,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;YAE3C,GAAG,CAAC,YAAY,CAAC,GAAG,UAAU,CAAC;YAC/B,KAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEL,QAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,6BAAa,CAAC,oBAAoB,CAAC,CAAC;IAC5D,CAAC;IAED,sBAAW,kDAAkB;aAA7B;YACE,IAAI,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,sBAAsB,CAAC,EAAE;gBAC7D,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,sBAAsB,CAAe,CAAC;aACpE;YACD,OAAO,IAAI,CAAC;QACd,CAAC;;;OAAA;IAEa,qDAAwB,GAAtC,UAAuC,UAAuB;;;;;wBAC5D,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;wBACnC,IAAI,CAAC,sBAAsB,GAAG,UAAU,CAAC;wBACzC,qBAAM,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,iBAAiB,CAAC;;wBAA3D,SAA2D,CAAC;;;;;KAC7D;IAEO,4DAA+B,GAAvC,UAAwC,OAAoB;QAC1D,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAChC,IAAI,CAAC,sBAAsB,GAAG,OAAO,CAAC;IACxC,CAAC;IAEO,kDAAqB,GAA7B,UAA8B,UAAuB;QACnD,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;QACnC,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACtD,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;IACrC,CAAC;IAEO,sDAAyB,GAAjC;QACE,OAAO,QAAE,CAAC,KAAK,EAAE;YACf,SAAS,EAAE,IAAI,CAAC,0BAA0B;YAC1C,EAAE,EAAE,IAAI,CAAC,mBAAmB;YAC5B,IAAI,EAAE,SAAS;YACf,SAAS,EAAE,oBAAoB;SAChC,CAAC,CAAC;IACL,CAAC;IAEO,oDAAuB,GAA/B,UAAgC,UAAsB;QAAtD,iBAwCC;QAvCC,IAAM,GAAG,GAAG,QAAE,CAAC,KAAK,EAAE;YACpB,SAAS,EAAE,0BAAwB,IAAI,CAAC,OAAO,CAAC,eAAiB;SAClE,CAAC,CAAC;QAEH,UAAU,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC;QAExB,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE;YACd,KAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,gBAAgB,EAAE;YACvB,KAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,IAAI,UAAU,CAAC,IAAI,EAAE;YACnB,GAAG,CAAC,EAAE,CAAC,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC;YACnC,OAAO,GAAG,CAAC;SACZ;QAED,IAAI,UAAU,CAAC,IAAI,EAAE;YACnB,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YAE1B,OAAO,GAAG,CAAC;SACZ;QAED,IAAI,UAAU,CAAC,SAAS,EAAE;YACxB,GAAG,CAAC,QAAQ,CAAC,gCAAgC,CAAC,CAAC;YAC/C,IAAM,eAAe,GAAG,QAAE,CACxB,KAAK,EACL;gBACE,SAAS,EAAE,sCAAsC;aAClD,EACD,UAAU,CAAC,SAAS,CACrB,CAAC;YACF,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;YAC/B,OAAO,GAAG,CAAC;SACZ;QAED,OAAO,GAAG,CAAC;IACb,CAAC;IAEO,6CAAgB,GAAxB,UAAyB,UAAsB;QAC7C,UAAU,CAAC,QAAQ,EAAE,CAAC;QACtB,QAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,6BAAa,CAAC,qBAAqB,EAA0B,EAAE,UAAU,EAAE,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;IACtH,CAAC;IAEO,wDAA2B,GAAnC;QACE,wGAAwG;QACxG,2CAA2C;QAC3C,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,QAAE,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IACnE,CAAC;IAEO,4DAA+B,GAAvC,UAAwC,GAAgB;QACtD,yFAAyF;QACzF,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAM,KAAK,GAAG,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;QAC5H,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QACjC,OAAO,QAAE,CAAC,GAAG,CAAC,CAAC;IACjB,CAAC;IAEa,iCAAI,GAAlB,UAAmB,SAAoB;;;;;;6BACjC,IAAI,CAAC,qBAAqB,CAAC,qBAAqB,EAAhD,wBAAgD;wBAClD,qBAAM,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC;;wBAAvC,SAAuC,CAAC;wBACxC,sBAAO;;wBAET,IAAI,SAAS,KAAK,SAAS,CAAC,KAAK,IAAI,SAAS,KAAK,SAAS,CAAC,IAAI,EAAE;4BAC3D,YAAY,GAAG,IAAI,CAAC,qBAAqB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;4BACnE,IAAI,YAAY,EAAE;gCAChB,IAAI,CAAC,+BAA+B,CAAC,YAAY,CAAC,CAAC;gCACnD,sBAAO;6BACR;yBACF;wBACD,qBAAM,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC;;wBAA1C,SAA0C,CAAC;;;;;KAC5C;IAEa,iDAAoB,GAAlC,UAAmC,SAAoB;;;;;;wBAC/C,iBAAiB,GAAG,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAI,IAAI,CAAC,OAAO,CAAC,aAAe,CAAC,CAAC;wBAC5E,WAAW,GAAG,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,MAAI,IAAI,CAAC,OAAO,CAAC,eAAiB,CAAC,CAAC;wBAC3E,YAAY,GAAG,oBAAO,CAAC,WAAW,EAAE,iBAAiB,CAAC,CAAC;wBAEzD,KAAK,GAAG,SAAS,KAAK,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,CAAC;wBAC7E,KAAK,GAAG,CAAC,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,WAAW,CAAC,MAAM,CAAC;wBAE1D,qBAAM,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;;wBAAjD,SAAiD,CAAC;;;;;KACnD;IAEa,+CAAkB,GAAhC,UAAiC,UAAuB;;;;;6BAClD,UAAU,EAAV,wBAAU;wBACZ,qBAAM,IAAI,CAAC,wBAAwB,CAAC,UAAU,CAAC;;wBAA/C,SAA+C,CAAC;;;wBAEhD,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;wBACnC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,eAAe,CAAC,uBAAuB,CAAC,CAAC;;4BAGnE,sBAAO,UAAU,EAAC;;;;KACnB;IAEa,8CAAiB,GAA/B,UAAgC,SAAoB;;;;;;wBAC5C,iBAAiB,GAAG,IAAI,CAAC,qBAAqB,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC;6BAClF,CAAC,iBAAiB,EAAlB,wBAAkB;wBACpB,qBAAM,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,GAAG,CAAC;;wBAA3E,SAA2E,CAAC;wBAC5E,sBAAO;;wBAET,IAAI,CAAC,+BAA+B,CAAC,iBAAiB,CAAC,CAAC;;;;;KACzD;IAEO,wCAAW,GAAnB,UAAoB,QAAQ;QAC1B,IAAI,QAAQ,EAAE;YACZ,IAAI,QAAQ,CAAC,YAAY,CAAC,EAAE;gBAC1B,OAAO,QAAQ,CAAC,YAAY,CAAC,CAAC;aAC/B;YACD,IAAI,QAAQ,CAAC,oBAAoB,CAAC,EAAE;gBAClC,OAAO,IAAI,CAAC;aACb;YACD,IAAI,QAAQ,YAAY,WAAW,EAAE;gBACnC,OAAO;oBACL,IAAI,EAAE,QAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE;iBAC1B,CAAC;aACH;SACF;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,8CAAiB,GAAzB,UAA0B,OAAoB;QAC5C,IAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QACjF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACxC,IAAM,IAAI,GAAgB,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC3C,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;SACjC;QACD,QAAE,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QACjD,IAAI,CAAC,2BAA2B,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACpD,CAAC;IAEa,qDAAwB,GAAtC,UAAuC,UAAsB;;;;;wBAC3D,QAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,6BAAa,CAAC,oBAAoB,EAA0B;4BAChF,UAAU,EAAE,UAAU,CAAC,IAAI;yBAC5B,CAAC,CAAC;wBACH,qBAAM,IAAI,CAAC,qBAAqB,CAAC,wCAAwC,CAAC,UAAU,CAAC;;wBAArF,SAAqF,CAAC;;;;;KACvF;IAEO,iDAAoB,GAA5B,UAA6B,UAAuB;QAClD,QAAE,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QACvD,IAAI,CAAC,2BAA2B,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IACxD,CAAC;IAEO,wDAA2B,GAAnC,UAAoC,OAAoB,EAAE,KAAa;QACrE,IAAI,QAAE,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,eAAe,CAAC,EAAE;YAC7C,IAAI,CAAC,YAAY,CAAC,gBAAgB,GAAG,OAAO,CAAC;YAC7C,QAAE,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;SAClD;IACH,CAAC;IAEO,uDAA0B,GAAlC;QACE,IAAI,CAAC,qCAAqC,EAAE,CAAC;QAC7C,IAAI,CAAC,kCAAkC,EAAE,CAAC;IAC5C,CAAC;IAEO,kEAAqC,GAA7C;QACE,IAAM,QAAQ,GAAG,QAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAE5C,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QACxC,QAAQ,CAAC,YAAY,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;IACpD,CAAC;IAEO,+DAAkC,GAA1C;QACE,IAAM,KAAK,GAAG,QAAE,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAE1C,IAAI,CAAC,YAAY,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC1C,IAAI,CAAC,YAAY,CAAC,QAAQ,GAAG,KAAK,CAAC;QACnC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;QAC1D,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAChE,CAAC;IAEO,oDAAuB,GAA/B,UAAgC,QAAqB;QACnD,IAAM,kBAAkB,GAAG,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,MAAI,IAAI,CAAC,OAAO,CAAC,eAAiB,CAAC,CAAC;QACxF,OAAO,oBAAO,CAAC,kBAAkB,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;IACpD,CAAC;IACH,yBAAC;AAAD,CAAC;AApYY,gDAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjC/B,0CAAqD;AACrD,qCAAmC;AACnC,mCAAkC;AAClC,kDAAsD;AAEtD,8CAA8C;AAC9C,+CAAgD;AAEhD,oDAAsE;AAStE;IA+BE,0BAAmB,OAAoB,EAAS,OAAgB,EAAS,OAAqB;QAArB,sCAAqB;QAA9F,iBAyDC;QAzDkB,YAAO,GAAP,OAAO,CAAa;QAAS,YAAO,GAAP,OAAO,CAAS;QAAS,YAAO,GAAP,OAAO,CAAc;QAdtF,oBAAe,GAAiB,EAAE,CAAC;QAezC,IAAI,wBAAW,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YACpC,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC;SAC7B;QACD,QAAE,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QAClC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YACvB,QAAE,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;SAC1C;QAED,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACrC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAE3C,IAAI,cAAc,GAAG,QAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAC1D,IAAI,CAAC,cAAc,EAAE;YACnB,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAC/C,cAAc,CAAC,SAAS,GAAG,iBAAiB,CAAC;YAC7C,OAAO,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;SACrC;QAED,IAAI,CAAC,YAAY,GAAG,IAAI,2BAAY,CAClC,cAAc,EACd,UAAC,IAAI,EAAE,cAAc;YACnB,IAAI,CAAC,cAAc,EAAE;gBACnB,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACnB,KAAI,CAAC,cAAc,EAAE,CAAC;gBACtB,KAAI,CAAC,QAAQ,IAAI,KAAI,CAAC,QAAQ,EAAE,CAAC;aAClC;iBAAM;gBACL,KAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;gBACnB,KAAI,CAAC,QAAQ,IAAI,KAAI,CAAC,QAAQ,CAAC,KAAI,CAAC,uBAAuB,CAAC,CAAC;aAC9D;QACH,CAAC,EACD,IAAI,CACL,CAAC;QAEF,IAAI,CAAC,YAAY,CAAC,UAAU,GAAG;YAC7B,KAAI,CAAC,UAAU,IAAI,KAAI,CAAC,UAAU,EAAE,CAAC;QACvC,CAAC,CAAC;QAEF,IAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;QACnD,IAAI,aAAa,EAAE;YACjB,IAAI,CAAC,eAAe,CAAC,KAAK,GAAG,aAAa,CAAC;SAC5C;QAED,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAElD,IAAM,oBAAoB,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC3D,oBAAoB,CAAC,SAAS,GAAG,uBAAuB,CAAC;QACzD,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;QAE/C,IAAI,CAAC,kBAAkB,GAAG,IAAI,uCAAkB,CAAC,oBAAoB,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE;YACtG,eAAe,EAAE,IAAI,CAAC,OAAO,CAAC,yBAAyB;YACvD,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,uBAAuB;YACnD,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,iBAAiB;SACxC,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,GAAG,IAAI,6BAAa,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAlED,sBAAY,qDAAuB;aAAnC;YACE,OAAO,iBAAI,CAAC,IAAI,CAAC,eAAe,EAAE,oBAAU,IAAI,iBAAU,CAAC,IAAI,EAAf,CAAe,CAAC,CAAC;QACnE,CAAC;;;OAAA;IAED,sBAAY,iDAAmB;aAA/B;YACE,IAAM,uBAAuB,GAAG,IAAI,CAAC,uBAAuB,CAAC;YAC7D,OAAO,uBAAuB,CAAC,CAAC,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACrE,CAAC;;;OAAA;IA6DM,oCAAS,GAAhB;QACE,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAEM,6CAAkB,GAAzB;QACE,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAEM,kCAAO,GAAd,UAAe,IAAY;QACzB,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,oBAAoB,EAAE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACpE,IAAI,CAAC,aAAa,CAAC,2BAA2B,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAEhE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAE3C,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IACpD,CAAC;IAEM,oCAAS,GAAhB,UAAiB,KAAa;QAC5B,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAEM,oCAAS,GAAhB;QACE,OAAO,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC;IACvC,CAAC;IAEM,yCAAc,GAArB,UAAsB,KAA8C;QAClE,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,KAAK,CAAC,CAAC;IAChE,CAAC;IAEO,uCAAY,GAApB;QAAA,iBA+DC;QA9DC,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG;YACzB,QAAE,CAAC,KAAI,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,oBAAoB,CAAC,CAAC;YACnD,KAAI,CAAC,MAAM,IAAI,KAAI,CAAC,MAAM,EAAE,CAAC;YAC7B,IAAI,CAAC,KAAI,CAAC,OAAO,CAAC,MAAM,EAAE;gBACxB,KAAI,CAAC,eAAe,EAAE,CAAC;aACxB;QACH,CAAC,CAAC;QAEF,IAAI,CAAC,YAAY,CAAC,OAAO,GAAG;YAC1B,QAAE,CAAC,KAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;YAChD,KAAI,CAAC,cAAc,EAAE,CAAC;YACtB,KAAI,CAAC,OAAO,IAAI,KAAI,CAAC,OAAO,EAAE,CAAC;QACjC,CAAC,CAAC;QAEF,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,UAAC,GAAW;YACxC,IAAI,KAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,EAAE;gBACrC,OAAO,KAAK,CAAC;aACd;YACD,IAAI,GAAG,KAAK,eAAQ,CAAC,KAAK,EAAE;gBAC1B,IAAM,UAAU,GAAG,KAAI,CAAC,kBAAkB,CAAC,qCAAqC,EAAE,CAAC;gBACnF,IAAI,UAAU,IAAI,IAAI,EAAE;oBACtB,KAAI,CAAC,QAAQ,IAAI,KAAI,CAAC,QAAQ,EAAE,CAAC;iBAClC;gBACD,OAAO,KAAK,CAAC;aACd;iBAAM,IAAI,GAAG,KAAK,eAAQ,CAAC,MAAM,EAAE;gBAClC,KAAI,CAAC,eAAe,EAAE,CAAC;gBACvB,KAAI,CAAC,IAAI,EAAE,CAAC;aACb;iBAAM;gBACL,KAAI,CAAC,kBAAkB,CAAC,2BAA2B,EAAE,CAAC;aACvD;YACD,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QAEF,IAAI,CAAC,YAAY,CAAC,cAAc,GAAG;YACjC,KAAI,CAAC,cAAc,EAAE,CAAC;QACxB,CAAC,CAAC;QAEF,IAAI,CAAC,YAAY,CAAC,OAAO,GAAG,UAAC,GAAW;YACtC,KAAI,CAAC,MAAM,IAAI,KAAI,CAAC,MAAM,EAAE,CAAC;YAC7B,IAAI,CAAC,KAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,EAAE;gBACtC,OAAO,IAAI,CAAC;aACb;YACD,QAAQ,GAAG,EAAE;gBACX,KAAK,eAAQ,CAAC,QAAQ;oBACpB,KAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,CAAC;oBACjC,MAAM;gBACR,KAAK,eAAQ,CAAC,UAAU;oBACtB,KAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC;oBACnC,MAAM;gBACR,KAAK,eAAQ,CAAC,UAAU;oBACtB,KAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,CAAC;oBACnC,MAAM;gBACR,KAAK,eAAQ,CAAC,WAAW;oBACvB,KAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,CAAC;oBACpC,MAAM;aACT;YACD,IAAI,KAAI,CAAC,kBAAkB,CAAC,kBAAkB,EAAE;gBAC9C,KAAI,CAAC,iBAAiB,CAAC,KAAI,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,CAAC;aACpE;YACD,KAAI,CAAC,QAAQ,IAAI,KAAI,CAAC,QAAQ,EAAE,CAAC;YACjC,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;IACJ,CAAC;IAEY,yCAAc,GAA3B;;;;;4BACsB,qBAAM,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;;wBAAxH,WAAW,GAAG,SAA0G;wBAC9H,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,CAAC;wBACzC,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;wBAC9D,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;;;;;KACjC;IAEO,kDAAuB,GAA/B,UAAgC,GAAa;QAC3C,QAAQ,GAAG,EAAE;YACX,KAAK,eAAQ,CAAC,QAAQ,CAAC;YACvB,KAAK,eAAQ,CAAC,UAAU;gBACtB,OAAO,IAAI,CAAC;YACd,KAAK,eAAQ,CAAC,UAAU,CAAC;YACzB,KAAK,eAAQ,CAAC,WAAW;gBACvB,IAAI,IAAI,CAAC,kBAAkB,CAAC,QAAQ,IAAI,IAAI,CAAC,kBAAkB,CAAC,WAAW,EAAE;oBAC3E,OAAO,IAAI,CAAC;iBACb;SACJ;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,iDAAsB,GAA9B,UAA+B,WAAyB;QAAxD,iBASC;QARC,iBAAI,CAAC,WAAW,EAAE,UAAC,UAAsB;YACvC,IAAI,UAAU,CAAC,QAAQ,IAAI,IAAI,IAAI,UAAU,CAAC,IAAI,IAAI,IAAI,EAAE;gBAC1D,UAAU,CAAC,QAAQ,GAAG;oBACpB,KAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;oBAC9B,KAAI,CAAC,QAAQ,IAAI,KAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;gBAC7C,CAAC,CAAC;aACH;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,gCAAK,GAAZ;QACE,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;QAChD,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;IAC5B,CAAC;IAEM,+BAAI,GAAX;QACE,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;IAC3B,CAAC;IAEY,0CAAe,GAA5B;;;gBACE,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;gBAC1C,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,CAAC;gBAC3C,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;;;;KACxB;IAEO,4CAAiB,GAAzB,UAA0B,UAAsB;QAC9C,IAAI,UAAU,IAAI,IAAI,IAAI,UAAU,CAAC,IAAI,IAAI,IAAI,EAAE;YACjD,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,mBAAmB,CAAC,CAAC;SAC7E;aAAM;YACL,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;SAC3F;IACH,CAAC;IAEM,kCAAO,GAAd;QACE,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;IACtC,CAAC;IAEM,4CAAiB,GAAxB;QACE,OAAO,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,CAAC;IAC/C,CAAC;IAEM,gCAAK,GAAZ;QACE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACjB,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;IACjC,CAAC;IAEM,yCAAc,GAArB;QACE,OAAO,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC;IAChD,CAAC;IACH,uBAAC;AAAD,CAAC;AAlQY,4CAAgB;AAoQ7B,wBAA+B,OAAoB,EAAE,OAAgB,EAAE,OAAiB;IACtF,OAAO,IAAI,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACzD,CAAC;AAFD,wCAEC;AAED,+BAAsC,QAAoB;IACxD,IAAI,uBAAuB,IAAI,MAAM,EAAE;QACrC,OAAO,MAAM,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;KAC/C;IACD,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC;AAC9B,CAAC;AALD,sDAKC;AAED,mCAAgB,EAAE,CAAC;;;;;;;;;;AChSnB,+BAAiC;AAEjC;IAAA;IAwBA,CAAC;IAvBQ,0BAAY,GAAnB,UAAoB,GAAG;QACrB,OAAO,GAAG,CAAC,OAAO,CAAC,qCAAqC,EAAE,MAAM,CAAC,CAAC;IACpE,CAAC;IAEM,2BAAa,GAApB,UACE,IAAY,EACZ,SAAiB,EACjB,UAAkB,EAClB,UAA2C,EAC3C,eAA4B;QAL9B,iBAcC;QAXC,+CAAkB;QAClB,gEAA2C;QAC3C,sDAA4B;QAE5B,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE;YACzB,OAAO,IAAI,CAAC;SACb;QACD,IAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAM,WAAW,GAAG,GAAG,GAAG,OAAO,GAAG,WAAW,GAAG,OAAO,GAAG,OAAO,CAAC;QACpE,IAAM,KAAK,GAAG,IAAI,MAAM,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,UAAC,IAAI,EAAE,KAAK,EAAE,QAAQ,IAAK,YAAI,CAAC,UAAU,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,EAAE,IAAI,CAAC,EAAnE,CAAmE,CAAC,CAAC;IAC7H,CAAC;IAEc,wBAAU,GAAG,UAAC,SAAiB,EAAE,IAAY;QAC1D,OAAO,mBAAgB,SAAS,WAAK,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,YAAS,CAAC;IAC/D,CAAC,CAAC;IACJ,oBAAC;CAAA;AAxBY,sCAAa;;;;;;;ACF1B,yC;;;;;;;;;ACAA,mCAAwC;AASxC;IAGE,6CAAY,OAAgD;QAC1D,IAAM,GAAG,GAAG,QAAE,CACZ,QAAQ,EACR;YACE,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,IAAI,EAAE,QAAQ;SACf,EACD,OAAO,CAAC,KAAK,CACd,CAAC;QAEF,IAAI,CAAC,OAAO,GAAG,QAAE,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;QAClD,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,cAAM,cAAO,CAAC,MAAM,EAAE,EAAhB,CAAgB,CAAC,CAAC;IAC1C,CAAC;IACH,0CAAC;AAAD,CAAC;AAjBY,kFAAmC;;;;;;;;;;;;;;;;;;ACThD,wCAAuC;AAEvC,gDAAsE;AACtE,wDAAwG;AACxG,uCAA6C;AAE7C,8CAA6D;AAG7D;IAYE,2BAAY,UAAwC,EAAU,KAAoB,EAAE,aAAkC;QAAxD,UAAK,GAAL,KAAK,CAAe;QAF1E,YAAO,GAAgB,IAAI,CAAC;QAGlC,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;QAC9B,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;QAC9B,IAAI,CAAC,GAAG,GAAG,UAAU,CAAC,GAAG,CAAC;QAC1B,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,YAAY,CAAC;QAC5C,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC;QAC9B,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC,eAAe,CAAC;QAClD,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;QACpC,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC,YAAY,CAAC;QAC5C,IAAI,CAAC,QAAQ,GAAG,IAAI,aAAa,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACjD,CAAC;IAED,sBAAW,yCAAU;aAArB;YACE,OAAO,IAAI,CAAC,KAAK,KAAK,iCAAe,CAAC,QAAQ,CAAC;QACjD,CAAC;;;OAAA;IAED,sBAAW,qCAAM;aAAjB;YACE,OAAO,IAAI,CAAC,KAAK,KAAK,iCAAe,CAAC,IAAI,CAAC;QAC7C,CAAC;;;OAAA;IAEM,wCAAY,GAAnB;QACE,IAAI,CAAC,KAAK,KAAK,iCAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;IAC5E,CAAC;IAEM,kCAAM,GAAb;QACE,IAAI,CAAC,KAAK,GAAG,iCAAe,CAAC,QAAQ,CAAC;IACxC,CAAC;IAEM,oCAAQ,GAAf;QACE,IAAI,CAAC,KAAK,GAAG,iCAAe,CAAC,IAAI,CAAC;IACpC,CAAC;IAEM,kCAAM,GAAb,UAAc,GAAgC;QAC5C,IAAM,KAAK,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;QACxD,OAAO,KAAK,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;IAC1D,CAAC;IAEM,iCAAK,GAAZ;QACE,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACzB,OAAO;SACR;QACD,IAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,aAAa,CAAc,wBAAwB,CAAC,CAAC;QAC3F,IAAI,CAAC,QAAQ,EAAE;YACb,OAAO;SACR;QACD,QAAQ,CAAC,KAAK,EAAE,CAAC;IACnB,CAAC;IAED,sBAAW,6CAAc;aAAzB;YACE,OAAO,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;QACtD,CAAC;;;OAAA;IAED,sBAAW,8CAAe;aAA1B;YACE,IAAM,WAAW,GAAG,WAAC,CAAC,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;YAEhF,OAAU,IAAI,CAAC,YAAY,SAAI,WAAa,CAAC;QAC/C,CAAC;;;OAAA;IAED,sBAAY,sCAAO;aAAnB;YACE,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,KAAK,wBAAS,CAAC,QAAQ,CAAC;QACrD,CAAC;;;OAAA;IAED,sBAAY,6CAAc;aAA1B;YACE,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAI,IAAI,CAAC,KAAK,UAAK,IAAI,CAAC,GAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;QAClE,CAAC;;;OAAA;IAED,sBAAY,8CAAe;aAA3B;YACE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;gBACjB,OAAO,IAAI,CAAC;aACb;YAED,OAAO;gBACL,KAAK,EAAE,KAAG,IAAI,CAAC,KAAO;gBACtB,GAAG,EAAE,KAAG,IAAI,CAAC,GAAK;gBAClB,YAAY,EAAE,IAAI,CAAC,YAAY;aAChC,CAAC;QACJ,CAAC;;;OAAA;IAED,sBAAW,kDAAmB;aAA9B;YACE,oBACK,IAAI,CAAC,KAAK,CAAC,wBAAwB,EACnC,IAAI,CAAC,eAAe,IACvB,KAAK,EAAE,IAAI,CAAC,cAAc,EAC1B,aAAa,EAAE,IAAI,CAAC,QAAQ,EAC5B,YAAY,EAAE,IAAI,CAAC,YAAY,EAC/B,KAAK,EAAE,IAAI,CAAC,KAAK,IACjB;QACJ,CAAC;;;OAAA;IAED,sBAAY,6CAAc;aAA1B;YACE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;gBACjB,OAAO,IAAI,CAAC;aACb;YAED,OAAO;gBACL,eAAe,EAAE,KAAG,IAAI,CAAC,KAAO;gBAChC,aAAa,EAAE,KAAG,IAAI,CAAC,GAAK;gBAC5B,sBAAsB,EAAE,IAAI,CAAC,YAAY;aAC1C,CAAC;QACJ,CAAC;;;OAAA;IAED,sBAAW,iDAAkB;aAA7B;YACE,oBACK,IAAI,CAAC,KAAK,CAAC,uBAAuB,EAClC,IAAI,CAAC,cAAc,IACtB,UAAU,EAAE,IAAI,CAAC,cAAc,IAC/B;QACJ,CAAC;;;OAAA;IAEM,sDAA0B,GAAjC;QACE,IAAM,MAAM,GACV,IAAI,CAAC,KAAK,KAAK,iCAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,kDAAwB,CAAC,kBAAkB,CAAC,CAAC,CAAC,kDAAwB,CAAC,oBAAoB,CAAC;QAExI,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAChE,CAAC;IAEO,kCAAM,GAAd;QACE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QACtC,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,sBAAW,8CAAe;aAA1B;YACE,IAAI,IAAI,CAAC,OAAO,EAAE;gBAChB,OAAO,IAAI,CAAC,OAAO,CAAC;aACrB;YAED,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;QACvB,CAAC;;;OAAA;IACH,wBAAC;AAAD,CAAC;AA5IY,8CAAiB;;;;;;;;;;ACT9B;IAAA;IAQA,CAAC;IAPQ,qBAAQ,GAAf,UAAgB,SAAiB,EAAE,QAAgB,EAAE,WAAmB;QACtE,OAAO,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAClD,CAAC;IAEM,oCAAuB,GAA9B,UAA+B,OAAoB,EAAE,gBAAyB,EAAE,YAAqB;QACnG,OAAO,OAAO,CAAC;IACjB,CAAC;IACH,mBAAC;AAAD,CAAC;AARY,oCAAY;;;;;;;;;;ACWzB;;;GAGG;AACH;IAAA;IA2BA,CAAC;IA1BC;;;;;;;;;;OAUG;IACW,+BAAe,GAAG,iBAAiB,CAAC;IAElD;;;;;;;;;;;OAWG;IACW,6BAAa,GAAG,eAAe,CAAC;IAChD,sBAAC;CAAA;AA3BY,0CAAe;;;;;;;;;;ACbf,yBAAiB,GAAG;IAC/B,WAAW,EAAE,aAAa;IAC1B,cAAc,EAAE,gBAAgB;CACjC,CAAC;;;;;;;;;;ACLF,2CAAqC;AAErC,mCAAsC;AACtC,kDAAqE;AAExD,8BAAsB,GAAG,UAAC,gBAAwB,IAAK,4HAK/D,gBAAgB,yDAIhB,gBAAgB,mDAGpB,EAZmE,CAYnE,CAAC;AAEF,mCAA0C,cAAwE;IAChH,OAAO,CACL,cAAc,CAAC,aAAa;QAC5B,oBAAQ,CAAC,cAAc,CAAC,aAAa,EAAE;YACrC,YAAY,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;SAC7B,CAAC,CACH,CAAC;AACJ,CAAC;AAPD,8DAOC;AAEY,6BAAqB,GAAG,UACnC,qBAAkC,EAClC,qBAA8B,EAC9B,YAA+C;IAE/C,SAAG,CAAC,eAAe,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,UAAC,IAAuB;QAC/F,sCAAmB,CAAC,IAAI,EAAE,cAAM,mBAAY,CAAC,IAAI,CAAC,EAAlB,CAAkB,CAAC,CAAC;QACpD,IAAI,CAAC,MAAM,GAAG,qBAAqB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;IAC1D,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;;;;;;;;;;ACpCF,qDAA4E;AAE5E,mCAAwC;AACxC,4CAA4D;AAC5D,+BAAgC;AAEhC;IAKE,mBAAmB,SAAiB,EAAS,IAAiB;QAA3C,cAAS,GAAT,SAAS,CAAQ;QAAS,SAAI,GAAJ,IAAI,CAAa;QAC5D,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAEM,yBAAK,GAAZ;QACE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAEM,yBAAK,GAAZ;QACE,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAEM,8BAAU,GAAjB;QACE,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAIM,8BAAU,GAAjB;QACE,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC;IACjC,CAAC;IAEM,+BAAW,GAAlB,UAAmB,YAA0B;QAC3C,IAAI;YACF,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC5B,IAAI,KAAK,EAAE;gBACT,YAAY,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;aAC5C;YACD,IAAI,CAAC,kBAAkB,EAAE,CAAC;SAC3B;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;SAC7B;IACH,CAAC;IAES,4BAAQ,GAAlB;QACE,OAAyB,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1D,CAAC;IAEO,mCAAe,GAAvB,UAAwB,OAAe;QACrC,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,KAAK,GAAG,QAAE,CACb,KAAK,EACL;YACE,SAAS,EAAE,oCAAoC;SAChD,EACD,OAAO,CACR,CAAC,EAAE,CAAC;QACL,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IAEO,sCAAkB,GAA1B;QACE,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,QAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;SACzB;IACH,CAAC;IAEO,gCAAY,GAApB;QAAA,iBAaC;QAZC,IAAI,CAAC,KAAK,GAAG,IAAI,yBAAW,CAC1B;YACE,KAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,KAAI,CAAC,qBAAqB,EAAE,CAAC;QAC/B,CAAC,EACD,IAAI,CAAC,SAAS,EACd,kCAAkC,CACnC,CAAC;QACF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QACvC,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,0CAA0C,CAAC,CAAC;QACtE,QAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,4BAA4B,CAAC,CAAC;QACjE,QAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,QAAQ,CAAC,6BAA6B,CAAC,CAAC;IACpE,CAAC;IAEO,uCAAmB,GAA3B;QACE,IAAI,QAAQ,GAAG,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QAClE,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,iBAAO;YACH,OAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC;QAC9C,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,yCAAqB,GAA7B;QACE,IAAI,QAAQ,GAAG,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;QACpD,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,iBAAO;YACH,OAAQ,CAAC,QAAQ,GAAG,KAAK,CAAC;QAC/C,CAAC,CAAC,CAAC;IACL,CAAC;IAES,4BAAQ,GAAlB;QACE,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,QAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,2CAAoB,CAAC,qBAAqB,CAAC,CAAC;SACnE;aAAM,IAAI,IAAI,CAAC,OAAO,EAAE;YACvB,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,2CAAoB,CAAC,qBAAqB,CAAC,CAAC;SACtE;IACH,CAAC;IACH,gBAAC;AAAD,CAAC;AAjGqB,8BAAS;;;;;;;;;;ACL/B,mCAAwC;AACxC,qDAA4E;AAC5E,uCAA6C;AAE7C;IAGE,uBAAmB,SAAiB,EAAS,IAAiB;QAA3C,cAAS,GAAT,SAAS,CAAQ;QAAS,SAAI,GAAJ,IAAI,CAAa;IAAG,CAAC;IAE3D,6BAAK,GAAZ,cAAgB,CAAC;IAEV,6BAAK,GAAZ;QACE,IAAI,aAAa,GAAG,QAAE,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,8CAA8C,EAAE,CAAC,CAAC;QAC7F,IAAI,KAAK,GAAG,QAAE,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,6BAA6B,EAAE,CAAC,CAAC;QACrE,KAAK,CAAC,IAAI,CAAC,WAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QAC9B,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,aAAa,CAAC,EAAE,CAAC;QAChC,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAEM,gCAAQ,GAAf;QACE,OAAO,EAAE,CAAC;IACZ,CAAC;IAEM,mCAAW,GAAlB,UAAmB,YAA0B;QAC3C,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC5B,IAAI,KAAK,EAAE;YACT,YAAY,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;SACtD;IACH,CAAC;IAES,gCAAQ,GAAlB;QACE,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,QAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,2CAAoB,CAAC,qBAAqB,CAAC,CAAC;SACnE;aAAM,IAAI,IAAI,CAAC,OAAO,EAAE;YACvB,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,2CAAoB,CAAC,qBAAqB,CAAC,CAAC;SACtE;IACH,CAAC;IACH,oBAAC;AAAD,CAAC;AAlCY,sCAAa;;;;;;;;;;ACNX;AACf;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACO;AACP,+FAA+F;AAC/F;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACnBsD;;AAEvC;AACf,aAAa,kBAAkB;AAC/B,CAAC;;;ACJc;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;;ACjBc;AACf;AACA;AACA;AACA,KAAK;AACL;AACA,CAAC;;;ACND;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA,sDAAsD;;AAE/C;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC9CA;AACe;AACf,iDAAiD,OAAO;AACxD;AACA,4BAA4B;AAC5B,qCAAqC,QAAQ;AAC7C,qCAAqC,oBAAoB;AACzD;AACA;AACA;AACA,CAAC;;;ACVqD;;AAE/C;;AAEQ;AACf,UAAU,kBAAkB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,kBAAkB,+BAA+B;AAC7F,CAAC;;;ACfqD;;AAEvC;AACf,UAAU,kBAAkB;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;ACV8C;AACM;AACN;;AAEhC;AACf,uBAAuB,6BAA6B,EAAE;AACtD,oBAAoB,kCAAkC,EAAE;AACxD,oBAAoB,eAAe,EAAE;AACrC,OAAO,aAAa;AACpB,uBAAuB,2BAA2B,EAAE;AACpD,uBAAuB,qBAAqB,EAAE;AAC9C,uBAAuB,yBAAyB,EAAE;AAClD,oBAAoB,kCAAkC,EAAE;AACxD,uBAAuB,QAAQ,aAAa,aAAa,EAAE;AAC3D,OAAO,aAAa;AACpB,OAAO,gBAAgB;AACvB,oBAAoB,iDAAiD,EAAE;AACvE,oBAAoB,mCAAmC;AACvD,CAAC,EAAC;;;AClBa;AACf;AACA,CAAC;;;ACFoC;AACM;AACM;AACE;AACV;AACE;AACU;AAChB;;AAErC;AACA;;AAEe;AACf,gFAAgF,QAAQ,GAAG,WAAW;AACtG;AACA;AACA;AACA,iDAAiD,QAAQ,GAAG,cAAc;AAC1E;AACA;AACA;;AAEA;AACA,gBAAgB,eAAe;;AAE/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,cAAc,WAAW;;AAEzB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,WAAW;AAChC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,0BAA0B,UAAU;;AAEpC;AACA;;AAEA;AACA;AACA,mDAAmD,cAAc;;AAEjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,sEAAsE;AACtE,sEAAsE;AACtE,qIAAqI;AACrI,qEAAqE;AACrE;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,mCAAmC,eAAe;AAClD,gDAAgD,YAAQ;AACxD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;;ACnJsC;;AAEvC,IAAI,oBAAM;AACH,IAAI,oBAAM;AACV,IAAI,0BAAY;;AAEvB;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAEc;AACf,EAAE,oBAAM,GAAG,UAAY;AACvB,EAAE,oBAAM,GAAG,oBAAM;AACjB,EAAE,0BAAY,GAAG,oBAAM;AACvB,SAAS,oBAAM;AACf;;;ACnBqC;;AAEtB;AACf,sBAAsB,YAAQ;AAC9B,CAAC;;;ACJoC;;AAEtB;AACf,yDAAyD,YAAQ,qBAAqB,YAAQ;AAC9F,CAAC;;;ACJoC;;AAEtB;AACf;AACA,qBAAqB,YAAQ,QAAQ,YAAQ;AAC7C,CAAC;;;ACLD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAwF;AACpC;AAC6B;AACnB;AACE;AACF;;;;;;;;;;;;;ACM7C;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,UAAU;AACV;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,wBAAS,cAAc,gCAAS;AACxE,iBAAiB,qBAAM;AACvB;AACA;AACA;AACA,SAAS;AACT;AACA,wCAAwC,yBAAU,cAAc,iCAAU;AAC1E,iBAAiB,sBAAO;AACxB;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA,KAAK;AACL;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA,KAAK;AACL;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA,KAAK;AACL;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA;AACA;;AAEA,YAAY,4BAA4B;AACxC;AACA;AACA,kCAAkC;;AAElC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,cAAc;AACd;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iBAAiB,sBAAO,OAAO,+BAAQ;AACvC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,aAAa,yBAAU,OAAO,+BAAQ;AACtC;;AAEA;AACA;AACA,mCAAmC,mCAAY,MAAM,2BAAY;AACjE;;AAEA;AACA;AACA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;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA,CAAC,yCAAyC,UAAc;AACxD;AACA,CAAC;AACD;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,UAAU,IAAI;AACd;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA,uBAAuB;;AAEvB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,iBAAiB,wBAAwB;AACzC;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,mBAAmB,6CAA6C;AAChE;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,SAAS;AACT;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA,KAAK;AACL;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;AACA;AACA,UAAU,MAAM;AAChB,UAAU,OAAO;AACjB;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,UAAU,MAAM;AAChB;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA,qBAAqB,YAAY;AACjC;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;AACA;AACA,UAAU,IAAI;AACd;AACA,WAAW,QAAQ;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;AACA,UAAU,SAAS;AACnB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;A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;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,wCAAwC,mBAAmB;AAC3D;AACA;;AAEA;AACA;AACA,kCAAkC,oBAAoB;AACtD;AACA;;AAEA;AACA;AACA,wCAAwC,4BAA4B;AACpE;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA,uDAAuD;AACvD,SAAS;AACT;AACA,SAAS;AACT,8EAA8E;AAC9E;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,8BAA8B,uBAAuB;AACrD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA,uCAAuC,0BAA0B;AACjE;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA,+BAA+B,0BAA0B,eAAe;AACxE;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,OAAO;;AAEP;AACA,KAAK;AACL;AACA;AACA,CAAC;;;;;;;;AC5cY;AACb,gBAAgB,mBAAO,CAAC,GAAa;AACrC,qBAAqB,mBAAO,CAAC,GAAgB;AAC7C,cAAc,mBAAO,CAAC,GAAS;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;A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;AACT,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,CAAC;AACD,mC;;;;;;;ACnHa;AACb,8CAA8C,cAAc;AAC5D,yBAAyB,mBAAO,CAAC,GAA+B;AAChE,qBAAqB,mBAAO,CAAC,GAAuB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yC;;;;;;;AChBa;AACb;AACA;AACA;AACA,cAAc,gBAAgB,sCAAsC,iBAAiB,EAAE;AACvF,6BAA6B,uDAAuD;AACpF;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA,CAAC;AACD;AACA,2BAA2B,+DAA+D,gBAAgB,EAAE,EAAE;AAC9G;AACA,mCAAmC,MAAM,6BAA6B,EAAE,YAAY,WAAW,EAAE;AACjG,kCAAkC,MAAM,iCAAiC,EAAE,YAAY,WAAW,EAAE;AACpG,+BAA+B,qFAAqF;AACpH;AACA,KAAK;AACL;AACA;AACA,aAAa,6BAA6B,0BAA0B,aAAa,EAAE,qBAAqB;AACxG,gBAAgB,qDAAqD,oEAAoE,aAAa,EAAE;AACxJ,sBAAsB,sBAAsB,qBAAqB,GAAG;AACpE;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC,kCAAkC,SAAS;AAC3C,kCAAkC,WAAW,UAAU;AACvD,yCAAyC,cAAc;AACvD;AACA,6GAA6G,OAAO,UAAU;AAC9H,gFAAgF,iBAAiB,OAAO;AACxG,wDAAwD,gBAAgB,QAAQ,OAAO;AACvF,8CAA8C,gBAAgB,gBAAgB,OAAO;AACrF;AACA,iCAAiC;AACjC;AACA;A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jD,wDAAc;AACvB,8CAAyE;AAAhE,qDAAc,CAAe;AACtC,6CAAwD;AAA/C,uDAAe;AACxB,2CAAyD;AAAhD,4CAAU;AACnB,4DAAoG;AAA3F,+FAA2B;AACpC,oDAAqG;AAA5F,oEAAkB;AAC3B,0DAAiH;AAAxG,sFAAwB;AACjC,0DAAmH;AAA1G,yFAAyB;;;;;;;AClBlC,kFAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA,mBAAmB,KAAK;AACxB,qBAAqB;AACrB;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,OAAO,KAAK;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;;AAEA,+BAA+B,sBAAsB;;AAErD;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,yBAAyB;AACzB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,2BAA2B,sBAAsB;AACjD;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,mCAAmC,wBAAwB;AAC3D;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA,+BAA+B,uCAAuC;AACtE;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,kBAAkB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;;AAGD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,iBAAi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E,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,KAAK;IACR,CAAC,EAAE,KAAK;IACR,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,KAAK;IACR,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,KAAK;IACR,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,GAAG;IACN,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,IAAI;IACP,CAAC,EAAE,IAAI;IACP,CAAC,EAA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CA;AACA;AACA,KAAK,sBAAsB;AAC3B;;;AAGA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa;AACb;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,cAAc;AACzB,aAAa;AACb;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;;;AAGA;AACA;AACA;AACA,kCAAkC,eAAe;AACjD;AACA,2CAA2C,aAAa;AACxD,+BAA+B,aAAa;AAC5C;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa;AACb;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;;;AAGA;AACA;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA,KAAK;;;AAGL;AACA;AACA,GAAG,EAAE;;AAEL;AACA;AACA;;AAEA;AACA,kEAAkE,gEAAgE;AAClI;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,cAAc;AACzB,aAAa,OAAO;AACpB;;;AAGA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,OAAO,+DAA+D;AACnF;;;AAGA;AACA;AACA;AACA;AACA;AACA,QAAQ;;AAER;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAQ;;AAER;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ,qBAAqB;AACxC;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ,qBAAqB;AACxC;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,EAAE;AACf;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;AACD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,cAAc;AACzB,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA,4BAA4B,EAAE;AAC9B,4BAA4B,EAAE;AAC9B,4BAA4B,EAAE;AAC9B;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;;AAGH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe;;AAEf;AACA;AACA,qCAAqC;AACrC;;AAEA;AACA;AACA;AACA,8EAA8E;AAC9E;;AAEA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;;AAGD,2BAA2B;AAC3B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,0BAA0B;AAC1B;AACA;AACA,8BAA8B;;AAE9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,gBAAgB,OAAO;AACvB,eAAe,OAAO;AACtB;AACA,wBAAwB,OAAO;AAC/B;AACA;AACA,kBAAkB,QAAQ;AAC1B;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,+CAA+C;AAC/C;AACA;AACA;AACA;AACA;AACA,cAAc,aAAa;AAC3B,mBAAmB,SAAS,EAAE,oBAAoB;AAClD,MAAM;AACN;AACA,qCAAqC;AACrC,sCAAsC;AACtC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,8EAA8E,mEAAmE;AACjJ;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,GAAG,EAAE;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA,EAAE,+BAA+B;;;AAGjC;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;;;AAGA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,eAAe;AAC1B;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA,mEAAmE,EAAE;AACrE,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,8CAA8C;;AAE9C;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,qBAAqB;;AAErB,mCAAmC;AACnC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,SAAS;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,OAAO;AACpB;AACA;AACA;AACA,qBAAqB;AACrB;;;AAGA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,cAAc;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,0CAA0C;AAC1C;AACA;AACA;AACA,WAAW,EAAE;AACb,aAAa,QAAQ;AACrB;AACA;AACA,8BAA8B;AAC9B,8BAA8B;AAC9B,sCAAsC;AACtC,sCAAsC;AACtC;;;AAGA;AACA;AACA,EAAE;;AAEF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA;AACA,aAAa,aAAa;AAC1B;AACA;AACA;AACA;AACA,8BAA8B;AAC9B,sCAAsC;AACtC,qCAAqC;AACrC;AACA;AACA,+BAA+B;AAC/B,qCAAqC;AACrC,oCAAoC;AACpC;;;AAGA;AACA;AACA;AACA,8CAA8C;;AAE9C;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,aAAa,MAAM;AACnB;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,yCAAyC;AAC/C,MAAM;AACN;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,uEAAuE,mEAAmE;AAC1I;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,2CAA2C,EAAE;AAC7C;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,cAAc;AACzB,WAAW,gBAAgB;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,EAAE;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,WAAW,IAAI,YAAY;AAChF;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA,kDAAkD;AAClD;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA,GAAG;;;AAGH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iFAAiF,KAAK;AACtF;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,MAAM;AACjB,aAAa,OAAO;AACpB;AACA;AACA;AACA,iCAAiC,KAAK;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA,2EAA2E,mEAAmE;AAC9I;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,cAAc;AACzB,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,WAAW,eAAe;AAC1B;AACA,aAAa,QAAQ;AACrB;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA,yCAAyC;AACzC,yCAAyC;AACzC;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,cAAc;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,MAAM;AACjB,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB,sBAAsB,OAAO;AAC7B,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA,+CAA+C,oBAAoB;AACnE;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,4DAA4D;;AAE5D;AACA,oBAAoB;;AAEpB;AACA;AACA,OAAO;;AAEP,KAAK;AACL;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,uEAAuE,mEAAmE;AAC1I;;AAEA;AACA;AACA,qFAAqF;AACrF,+BAA+B;;AAE/B;AACA,OAAO;AACP;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,EAAE;AACT;;AAEA;AACA,mCAAmC;;AAEnC,uBAAuB,aAAa;AACpC;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;;;AAGL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,qBAAqB,kBAAkB;AACvC;;AAEA;AACA;AACA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,aAAa,QAAQ;AACrB;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB,aAAa,MAAM;AACnB;AACA;;;AAGA;AACA;AACA;AACA;AACA,GAAG;AACH,oDAAoD;;AAEpD;AACA;AACA;;AAEA;AACA;AACA;AACA,uBAAuB,EAAE;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,cAAc;AACzB,WAAW,gBAAgB;AAC3B,aAAa,OAAO;AACpB;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;;;AAGL;AACA,GAAG;AACH,iBAAiB;AACjB,GAAG,uBAAuB;;;AAG1B;AACA;AACA;AACA;AACA,yEAAyE,aAAa;AACtF;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;;;AAGT,uBAAuB,yBAAyB;AAChD;AACA;AACA;AACA;AACA,OAAO;AACP;;;AAGA;AACA;AACA,OAAO;;;AAGP;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA,4EAA4E,eAAe;AAC3F;AACA;;AAEA;;AAEA;AACA,wCAAwC;;AAExC;AACA,qCAAqC,EAAE;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,iBAAiB;;AAE9C;AACA;AACA,WAAW;;;AAGX;;AAEA;AACA;AACA;;AAEA;AACA,SAAS;;;AAGT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;;;AAGT,mCAAmC,iBAAiB;AACpD;AACA,sDAAsD,GAAG;AACzD;AACA,wEAAwE,EAAE;AAC1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,SAAS;;;AAGT;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,cAAc;AACzB,WAAW,OAAO;AAClB,aAAa,MAAM;AACnB;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,8CAA8C;AAC9C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA,2EAA2E,EAAE,EAAE,YAAY,iBAAiB,EAAE;AAC9G;AACA;AACA;AACA;;AAEA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA,oDAAoD,IAAI;AACxD;AACA;AACA;AACA,uBAAuB,IAAI;AAC3B;AACA;;AAEA,sBAAsB,cAAc;AACpC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;;AAEA,iEAAiE,KAAK;AACtE,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;;AAGA;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;AACD;AACA,CAAC;AACD;AACA,mBAAmB;AACnB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;AACD;AACA;AACA,CAAC;AACD;AACA;AACA,oC;;;;;;AC99DA,iBAAiB,mBAAO,CAAC,GAAkC,E;;;;;;ACA3D,mBAAO,CAAC,GAAiC;AACzC,cAAc,mBAAO,CAAC,EAAqB;AAC3C;AACA;AACA;;;;;;;ACJA,cAAc,mBAAO,CAAC,EAAW;AACjC;AACA,8BAA8B,SAAS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;;AAE/C;AACA;AACA;AACA;AACA,GAAG,YAAY;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACtBA;AACA;AACA;;AAEA,kC;;;;;;ACJA,iBAAiB,mBAAO,CAAC,GAA8B,E;;;;;;ACAvD,mBAAO,CAAC,GAA0B;AAClC,iBAAiB,mBAAO,CAAC,EAAkB;;;;;;;ACD3C,cAAc,mBAAO,CAAC,EAAW;AACjC,gBAAgB,mBAAO,CAAC,GAAc;AACtC;AACA,0DAA0D,sBAAsB;;;;;;;ACHhF,gBAAgB,mBAAO,CAAC,EAAW;AACnC,YAAY,mBAAO,CAAC,GAAgB;AACpC,SAAS,mBAAO,CAAC,GAAc;AAC/B;;AAEA;AACA;AACA;AACA,CAAC;;;;;;;ACRD,cAAc,mBAAO,CAAC,EAAW;AACjC,cAAc,mBAAO,CAAC,EAAY;AAClC,YAAY,mBAAO,CAAC,GAAU;AAC9B,aAAa,mBAAO,CAAC,GAAc;AACnC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;;;;;;;AC7Ba;;AAEb;AACA;AACA,CAAC;AACD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,UAAU,KAAK,UAAU;AAC3D;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,cAAc;AAC3B,aAAa,QAAQ;AACrB;AACA,eAAe,OAAO;AACtB;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,qCAAqC,uCAAuC;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,eAAe,SAAS;AACxB;AACA;AACA;AACA;AACA,sCAAsC,IAAI,OAAO,IAAI;AACrD;AACA;AACA,uCAAuC,MAAM,cAAc,QAAQ;AACnE,wBAAwB;AACxB,yCAAyC;AACzC;;;AAGA;AACA;AACA,qGAAqG,aAAa;AAClH;AACA;;AAEA,2FAA2F;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO,kCAAkC,MAAM;AAC5D,WAAW,MAAM,+BAA+B,MAAM;AACtD;AACA,aAAa,OAAO;AACpB;AACA,aAAa,OAAO;AACpB,eAAe,OAAO;AACtB;AACA;AACA,yCAAyC,OAAO,IAAI,SAAS;AAC7D,+BAA+B,KAAK,OAAO,KAAK;AAChD;AACA;AACA,QAAQ;AACR;AACA,MAAM;AACN,wBAAwB;AACxB,yCAAyC;AACzC;;;AAGA;AACA,wBAAwB;AACxB;AACA;;AAEA;AACA,sDAAsD;;AAEtD;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;;AAGA,sDAAsD;;AAEtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;;AAExB;AACA;AACA;AACA,SAAS;;;AAGT;AACA;AACA,mDAAmD;AACnD;;AAEA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,sBAAsB;;AAEtB;AACA;AACA,aAAa;;AAEb,WAAW;AACX,yCAAyC;;AAEzC;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA,OAAO;;;AAGP;AACA;AACA,iDAAiD;;AAEjD;AACA;AACA,SAAS;;AAET,OAAO;AACP,gCAAgC;;AAEhC;AACA;AACA;;AAEA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,oC;;;;;;;AClPa;;AAEb;AACA;AACA,CAAC;AACD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,aAAa,OAAO;AACpB,eAAe,MAAM;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA,SAAS,4DAA4D;AACrE,SAAS,6DAA6D;AACtE,SAAS,6DAA6D;AACtE,SAAS,6DAA6D;AACtE,SAAS;AACT;AACA;AACA;AACA,gBAAgB,EAAE,KAAK,cAAc,QAAQ,MAAM;AACnD,mCAAmC,KAAK;AACxC;AACA;AACA,MAAM;AACN;AACA,SAAS,iDAAiD;AAC1D,SAAS,iDAAiD;AAC1D,SAAS,6BAA6B,oBAAoB;AAC1D,SAAS,uCAAuC,QAAQ,KAAK;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,2CAA2C;;AAE3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,8CAA8C;AAC9C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sDAAsD;;AAEtD;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;;;AAGP;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,oC;;;;;;;ACvNa;;AAEb,6BAA6B,mBAAO,CAAC,EAAsD;;AAE3F;AACA;AACA,CAAC;AACD;;AAEA,2CAA2C,mBAAO,CAAC,GAA6C;;AAEhG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,GAAG,gEAAgE,GAAG;AAC7F,WAAW,IAAI;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB;;AAEnB;AACA;AACA,2BAA2B;;AAE3B;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,GAAG;;;AAGH;AACA;AACA;AACA,GAAG;;;AAGH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA,GAAG;;;AAGH;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA,4DAA4D,GAAG,OAAO,GAAG,OAAO,IAAI;AACpF;;;AAGA,8FAA8F,EAAE;AAChG,eAAe,SAAS,IAAI;AAC5B;AACA;AACA;AACA;AACA,qGAAqG,mBAAmB,GAAG,OAAO;;AAElI,mDAAmD;;AAEnD,iDAAiD,+EAA+E;;AAEhI,+CAA+C;;AAE/C;;AAEA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,aAAa,MAAM;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN,kBAAkB,OAAO,KAAK,YAAY,iBAAiB;AAC3D;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mEAAmE,gEAAgE;AACnI;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,OAAO;AACP;;AAEA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,OAAO;AACpB;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA,oC;;;;;;;ACpRa;;AAEb,6BAA6B,mBAAO,CAAC,EAAsD;;AAE3F;AACA;AACA,CAAC;AACD;;AAEA,qCAAqC,mBAAO,CAAC,GAA2B;;AAExE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS,aAAa;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,oC;;;;;;ACnCA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;;;;;;;AC7oCa;;AAEb,6BAA6B,mBAAO,CAAC,EAAsD;;AAE3F;AACA;AACA,CAAC;AACD;;AAEA,yCAAyC,mBAAO,CAAC,GAA+B;;AAEhF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D,GAAG,SAAS,iBAAiB;AAC3F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,oC;;;;;;ACnCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,+BAA+B,eAAe,GAAG;AACjD;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,yBAAyB;AACzB,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,mCAAmC;AACnC;AACA,KAAK;AACL;AACA;AACA;AACA,yBAAyB;AACzB,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;;;;;;;ACxNa;;AAEb,6BAA6B,mBAAO,CAAC,EAAsD;;AAE3F;AACA;AACA,CAAC;AACD;;AAEA,yCAAyC,mBAAO,CAAC,GAA+B;;AAEhF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,wCAAwC;;AAExC;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA,oC;;;;;;ACxEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;;;;;;;ACxCa;;AAEb,6BAA6B,mBAAO,CAAC,EAAsD;;AAE3F;AACA;AACA,CAAC;AACD;;AAEA,sCAAsC,mBAAO,CAAC,GAA4B;;AAE1E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD,MAAM;AAC3D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,oC;;;;;;AClCA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,4BAA4B;AAC5B;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;;;;;;;;;AC5lBA,0CAAgE;AAWhE;IAQE;QAPO,mBAAc,GAAa,EAAE,CAAC;QAE9B,gBAAW,GAAa,EAAE,CAAC;QAGjB,yBAAoB,GAAG,GAAG,CAAC;IAE7B,CAAC;IAET,2DAAgC,GAAvC;QACE,IAAI,CAAC,YAAY,GAAG,iBAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAE9C,OAAO;YACL,cAAc,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC;YACzD,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;YACzC,WAAW,EAAE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC;YACnD,YA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AC,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,CAAC;IAC3D,CAAC;IACH,2BAAC;AAAD,CAAC;AA1GY,oDAAoB;;;;;;;ACTjC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,QAAQ,IAA2B;AACnC;AACA;AACA,aAAa,UAAU,mBAAO,CAAC,GAAQ,EAAE,EAAE;AAC3C;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,iBAAiB,kBAAkB,EAAE;AACrC;AACA,SAAS;AACT,KAAK;AACL;AACA;AACA,CAAC;AACD;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB,wCAAwC;AACxC;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6BAA6B,QAAQ;AACrC;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA,sBAAsB,4BAA4B;AAClD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA,KAAK;;;AAGL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,gDAAgD;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D;AAC5D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA,aAAa;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;;AAGA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC;AACnC;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,wDAAwD,gBAAgB;AACxE;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,oDAAoD,gBAAgB;AACpE;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;;AAEA;AACA,SAAS;;AAET;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,aAAa;AACb;AACA;;AAEA;AACA,SAAS;;AAET;AACA;AACA,2BAA2B,4BAA4B;AACvD;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,2BAA2B,yBAAyB;AACpD;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,WAAW;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,CAAC;;;;;;;;;;AC5tCD,iDAAiE;AAAxD,2DAAe;AACxB,6CAA2D;AAAlD,kDAAY;AACrB,8CAA6D;AAApD,qDAAa;AACtB,8CAA2D;AAAlD,kDAAY;AACrB,mDAAuE;AAA9D,oEAAkB;;;;;;;;;;ACJ3B,8CAAwD;AAExD,IAAM,MAAM,GAAG,CAAC,WAAW,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC;AAE5E;IACE,+BAAc,CAAC,uBAAuB,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;AACnE,CAAC;AAFD,wCAEC;;;;;;;;;;ACND,8CAAwD;AAExD,IAAM,MAAM,GAAG,CAAC,oBAAoB,EAAE,cAAc,EAAE,mBAAmB,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AAElG;IACE,+BAAc,CAAC,uBAAuB,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;AAC1E,CAAC;AAFD,wCAEC;;;;;;;;;;ACND,8CAAwD;AAExD,IAAM,MAAM,GAAG,CAAC,aAAa,EAAE,eAAe,EAAE,cAAc,EAAE,UAAU,EAAE,gBAAgB,EAAE,YAAY,EAAE,cAAc,CAAC,CAAC;AAE5H;IACE,+BAAc,CAAC,uBAAuB,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;AACpE,CAAC;AAFD,wCAEC;;;;;;;;;;ACND,8CAAwD;AAExD,IAAM,MAAM,GAAG,CAAC,wBAAwB,CAAC,CAAC;AAE1C;IACE,+BAAc,CAAC,uBAAuB,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;AACjE,CAAC;AAFD,wCAEC;;;;;;;;;;ACND,8CAAwD;AAExD,IAAM,MAAM,GAAG,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;AAE1C;IACE,+BAAc,CAAC,uBAAuB,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AACzD,CAAC;AAFD,wCAEC;;;;;;;;;;ACND,8CAAwD;AAExD,IAAM,MAAM,GAAG,CAAC,SAAS,CAAC,CAAC;AAE3B;IACE,+BAAc,CAAC,uBAAuB,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;AACjE,CAAC;AAFD,wCAEC;;;;;;;;;;ACND,8CAAwD;AAExD,IAAM,MAAM,GAAG;IACb,SAAS;IACT,YAAY;IACZ,QAAQ;IACR,QAAQ;IACR,MAAM,CAAC,kCAAkC;CAC1C,CAAC;AAEF;IACE,+BAAc,CAAC,uBAAuB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AAC9D,CAAC;AAFD,wCAEC;;;;;;;;;;ACZD,8CAAwD;AAE3C,cAAM,GAAG;IACpB,kBAAkB;IAClB,YAAY;IACZ,eAAe;IACf,SAAS;IACT,YAAY;IACZ,QAAQ;IACR,QAAQ,CAAC,YAAY;CACtB,CAAC;AAEF;IACE,+BAAc,CAAC,uBAAuB,CAAC,YAAY,EAAE,cAAM,CAAC,CAAC;AAC/D,CAAC;AAFD,wCAEC;;;;;;;;;;ACdD,8CAAwD;AAExD,IAAM,MAAM,GAAG,CAAC,SAAS,CAAC,CAAC;AAE3B;IACE,+BAAc,CAAC,uBAAuB,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;AAC/D,CAAC;AAFD,wCAEC;;;;;;;;;;ACND,8CAAwD;AAExD,IAAM,MAAM,GAAG;IACb,kBAAkB;IAClB,YAAY;IACZ,eAAe;IACf,SAAS;IACT,YAAY;IACZ,QAAQ,CAAC,WAAW;CACrB,CAAC;AAEF;IACE,+BAAc,CAAC,uBAAuB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AAC9D,CAAC;AAFD,wCAEC;;;;;;;;;;ACbD,+BAAgC;AAEhC,yDAAyD;AACzD,wFAAwF;AACxF,0GAA0G;AAC1G,4GAA4G;AAE5G,iBAAwB,KAAU;IAChC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,SAAS,EAAE;QAChC,MAAM,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;KACzB;SAAM;QACL,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,WAAC;YACrB,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;KACJ;IACD,IAAI,MAAM,CAAC,WAAW,CAAC,IAAI,SAAS,EAAE;QACpC,IAAI,SAAS,GAAG,UAAS,CAAC,EAAE,CAAC;YAC3B,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE;gBACf,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;oBACvB,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;iBACb;aACF;YACD;gBACE,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;YACvB,CAAC;YAED,CAAC,CAAC,SAAS,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;QACzF,CAAC,CAAC;QACF,MAAM,CAAC,WAAW,CAAC,GAAG,SAAS,CAAC;KACjC;AACH,CAAC;AAvBD,0BAuBC;;;;;;;;;;;;;;;;;;;;AC9BD,yCAAoD;AACpD,6CAA8C;AAC9C,+BAAiC;AAEjC;IAAmC,iCAAY;IAA/C;QAAA,qEA2CC;QAvBS,qBAAe,GAAG,iPAEsF,CAAC;QAEzG,2BAAqB,GAAG;YAC9B,cAAc,EAAE,2VAKoD;YACpE,cAAc,EAAE,0FAEe;SAChC,CAAC;;IASJ,CAAC;IA1CC,+CAAuB,GAAvB,UAAwB,IAAkB;QACxC,IAAM,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAC,IAAI,QAAC,CAAC,IAAI,KAAK,IAAI,EAAf,CAAe,CAAC,CAAC;QACnE,IAAI,aAAa,EAAE;YACjB,OAAO,aAAa,CAAC,mBAAmB,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;SACzD;aAAM;YACL,OAAO,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;SACzC;IACH,CAAC;IACD,gDAAwB,GAAxB,UAAyB,IAAkB;QAA3C,iBASC;QARC,IAAM,aAAa,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAC,IAAI,QAAC,CAAC,IAAI,KAAK,IAAI,EAAf,CAAe,CAAC,CAAC;QACnE,IAAI,aAAa,EAAE;YACjB,OAAO,aAAa,CAAC,oBAAoB,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;SAC1D;aAAM;YACL,IAAM,IAAI,GAAG,IAAI,mBAAQ,CAAC,cAAM,YAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAhC,CAAgC,CAAC,CAAC;YAClE,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC;YACtB,OAAO,IAAI,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC;SAC7C;IACH,CAAC;IAkBS,2CAAmB,GAA7B;QAAA,iBAEC;QADC,OAAO,IAAI,mBAAQ,CAAC,cAAM,YAAI,CAAC,eAAe,EAApB,CAAoB,CAAC,CAAC;IAClD,CAAC;IAED,2CAAmB,GAAnB,UAAoB,IAAkB;QACpC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAC,IAAI,QAAC,CAAC,IAAI,KAAK,IAAI,EAAf,CAAe,CAAC,CAAC;IACtD,CAAC;IACH,oBAAC;AAAD,CAAC,CA3CkC,2BAAY,GA2C9C;AA3CY,sCAAa;;;;;;;;;;ACJ1B,sCAAyC;AACzC,0CAA4C;AAC5C,mCAA0C;AAM1C;IAaE,mBACU,SAAsB,EACtB,OAEP;QAFO;YACN,iBAAiB,EAAE,oBAAoB;SACxC;QAHO,cAAS,GAAT,SAAS,CAAa;QACtB,YAAO,GAAP,OAAO,CAEd;QAED,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAfD,sBAAY,wCAAiB;aAA7B;YACE,OAAO,kBAAK,CAAC,SAAG,CAAC,eAAe,CAAC,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC;iBAC/F,MAAM,CAAC,iBAAO,IAAI,eAAE,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAvB,CAAuB,CAAC;iBAC1C,MAAM,CAAC,iBAAO,IAAI,cAAO,CAAC,QAAQ,EAAhB,CAAgB,CAAC;iBACnC,KAAK,EAAE,CAAC;QACb,CAAC;;;OAAA;IAYM,2BAAO,GAAd;QACE,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAC3D,QAAQ,CAAC,mBAAmB,CAAC,UAAU,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAC7D,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACvB,CAAC;IAEO,0BAAM,GAAd;QAAA,iBAKC;QAJC,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,YAAY,GAAG,WAAC,IAAI,YAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAjB,CAAiB,CAAC,CAAC,CAAC;QACnF,QAAQ,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,aAAa,GAAG,WAAC,IAAI,YAAI,CAAC,UAAU,CAAC,CAAC,CAAC,EAAlB,CAAkB,CAAC,CAAC,CAAC;QACtF,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACnC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,CAAC;IAEO,sCAAkB,GAA1B;QACE,OAAO,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE;YACjC,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC,eAAe,CAAC,aAAa,CAAC,CAAC;SAC1D;IACH,CAAC;IAEO,+BAAW,GAAnB,UAAoB,OAAoB;QACtC,IAAI,OAAO,CAAC,YAAY,CAAC,aAAa,CAAC,EAAE;YACvC,OAAO;SACR;QACD,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAClC,OAAO,CAAC,YAAY,CAAC,aAAa,EAAE,KAAG,IAAM,CAAC,CAAC;IACjD,CAAC;IAEO,gCAAY,GAApB,UAAqB,cAA2B;QAAhD,iBAOC;QANC,IAAM,MAAM,GAAG,cAAc,CAAC,aAAa,CAAC;QAC5C,IAAI,MAAM,EAAE;YACV,oBAAO,CAAC,QAAE,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,cAAc,CAAC,CAAC,OAAO,CAAC,uBAAa;gBAClE,KAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;YAClC,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;IAEO,iCAAa,GAArB,UAAsB,cAA2B;QAC/C,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;QAClC,IAAM,MAAM,GAAG,cAAc,CAAC,aAAa,CAAC;QAC5C,IAAI,MAAM,IAAI,MAAM,KAAK,QAAQ,CAAC,IAAI,EAAE;YACtC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;SAC5B;IACH,CAAC;IAEO,uCAAmB,GAA3B,UAA4B,OAAoB,EAAE,QAAgB;QAAhB,2CAAgB;QAChE,IAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC;QACxC,IAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,YAAY,KAAK,CAAC,CAAC,EAAE;YACvB,OAAO,IAAI,CAAC;SACb;QACD,OAAO,QAAQ,CAAC,CAAC,YAAY,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC5F,CAAC;IAEO,gCAAY,GAApB,UAAqB,OAAoB,EAAE,QAAgB;QAAhB,2CAAgB;QACzD,IAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC5D,IAAI,OAAO,EAAE;YACX,OAAO,CAAC,KAAK,EAAE,CAAC;SACjB;IACH,CAAC;IAEO,qCAAiB,GAAzB;QACE,IAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC;QACxC,IAAI,QAAQ,CAAC,MAAM,EAAE;YACnB,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;SACrB;IACH,CAAC;IAEO,mCAAe,GAAvB,UAAwB,UAAuB,EAAE,UAAuB;QACtE,IAAI,CAAC,UAAU,EAAE;YACf,OAAO,KAAK,CAAC;SACd;QACD,OAAO,UAAU,CAAC,uBAAuB,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,2BAA2B,CAAC;IAC7F,CAAC;IAEO,iCAAa,GAArB,UAAsB,UAAuB,EAAE,UAAuB;QAAtE,iBAaC;QAZC,aAAK,CAAC,KAAK,CAAC;YACV,IAAI,CAAC,KAAI,CAAC,OAAO,EAAE;gBACjB,OAAO;aACR;YACD,KAAI,CAAC,OAAO,GAAG,KAAK,CAAC;YACrB,IAAI,UAAU,IAAI,KAAI,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE;gBACjD,KAAI,CAAC,YAAY,CAAC,UAAU,EAAE,KAAI,CAAC,eAAe,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC;aAC7E;iBAAM;gBACL,KAAI,CAAC,iBAAiB,EAAE,CAAC;aAC1B;YACD,KAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACtB,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,kCAAc,GAAtB,UAAuB,OAAoB;QACzC,OAAO,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;IAEO,mCAAe,GAAvB,UAAwB,OAAoB;QAC1C,OAAO,OAAO,IAAI,OAAO,KAAK,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC;IAC5D,CAAC;IAEO,6BAAS,GAAjB,UAAkB,CAAa;QAC7B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,OAAO;SACR;QACD,IAAM,UAAU,GAAG,CAAC,CAAC,aAA4B,CAAC;QAClD,IAAM,iBAAiB,GAAG,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QAC3D,IAAI,iBAAiB,EAAE;YACrB,OAAO;SACR;QACD,IAAM,UAAU,GAAG,CAAC,CAAC,MAAqB,CAAC;QAC3C,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE;YACrC,OAAO;SACR;QACD,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE;YACpC,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;SACtC;IACH,CAAC;IAEO,8BAAU,GAAlB,UAAmB,CAAa;QAC9B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;YACjB,OAAO;SACR;QACD,IAAM,UAAU,GAAG,CAAC,CAAC,aAA4B,CAAC;QAClD,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE;YACrC,OAAO;SACR;QACD,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE;YACnD,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,MAAqB,EAAE,UAAU,CAAC,CAAC;SACzD;IACH,CAAC;IACH,gBAAC;AAAD,CAAC;AAvJY,8BAAS;;;;;;;;;;;;;;;;;;;;ACRtB,yCAAsC;AAGtC;IAAmD,iDAAQ;IAA3D;;IA4BA,CAAC;IA3BC,2DAAmB,GAAnB,UAAoB,MAAqB;QACvC,IAAI,QAAQ,GAAG,iwBAeN,CAAC;QACV,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,4DAAoB,GAApB,UAAqB,MAAqB;QAA1C,iBAMC;QALC,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;YACjC,IAAI,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACxC,GAAG,CAAC,SAAS,GAAG,KAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;YACjD,OAAO,CAAC,GAAG,CAAC,CAAC;QACf,CAAC,CAAC,CAAC;IACL,CAAC;IACH,oCAAC;AAAD,CAAC,CA5BkD,mBAAQ,GA4B1D;AA5BY,sEAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACD1C,qCAA4F;AAI5F,2CAAsD;AAEtD,0CAAgD;AAChD,mCAAqC;AACrC,sCAA2C;AAQ3C;IACE,wBAAmB,IAAqB;QAArB,SAAI,GAAJ,IAAI,CAAiB;IAAG,CAAC;IAE/B,qCAAY,GAAzB,UACE,OAAsB,EACtB,MAA2B,EAC3B,yBAAyC;;;;;gBAEnC,GAAG,GAAyC,EAAE,CAAC;gBAC/C,eAAe,GAAG,gBAAG,CAAC,OAAO,CAAC,OAAO,EAAE,UAAC,MAAoB,EAAE,KAAa;oBAC/E,OAAO,KAAI,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,yBAAyB,CAAC,CAAC,IAAI,CAAC,UAAC,aAA0B;wBACjG,IAAI,aAAa,IAAI,IAAI,EAAE;4BACzB,GAAG,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;yBAC/C;wBACD,uBAAU,CAAC,4BAA4B,GAAG,IAAI,CAAC;wBAC/C,OAAO,aAAa,CAAC;oBACvB,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;gBAEH,+HAA+H;gBAC/H,2IAA2I;gBAC3I,sBAAO,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC;wBACvC,OAAO,kBAAK,CAAC,mBAAM,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;oBAC3C,CAAC,CAAC,EAAC;;;KACJ;IAEY,oCAAW,GAAxB,UACE,MAAoB,EACpB,MAA2B,EAC3B,yBAAyC;;;;;;wBAEzC,aAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;wBACtB,iBAAU,CAAC,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;wBAChF,iBAAU,CAAC,qCAAqC,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;wBACpF,uBAAU,CAAC,4BAA4B,GAAG,MAAM,CAAC;wBAC3B,qBAAM,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC;;wBAA5D,aAAa,GAAG,SAA4C;wBAElE,IAAI,aAAa,IAAI,IAAI,EAAE;4BACzB,gBAAS,CAAC,mBAAmB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;yBACtD;wBACD,yBAAyB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;wBAEvC,qBAAM,IAAI,CAAC,gCAAgC,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,UAAU;;wBAA7E,SAA6E,CAAC;wBAE9E,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;wBACnC,sBAAO,aAAa,EAAC;;;;KACtB;IAEM,yDAAgC,GAAvC,UAAwC,OAAoB,EAAE,MAAoB;QAChF,aAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACvB,OAAO,qBAAc,CAAC,yCAAyC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACnF,CAAC;IAEO,0CAAiB,GAAzB,UAA0B,MAAoB,EAAE,MAA2B;QACzE,OAAO,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,oBAAoB,CAAC,MAAM,EAAE;YAC3D,SAAS,EAAE,IAAI;YACf,cAAc,EAAE,IAAI;YACpB,aAAa,EAAE,MAAM;YACrB,oBAAoB,EAAE,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,oBAAoB;SACrE,CAAC,CAAC;IACL,CAAC;IAEO,uCAAc,GAAtB,UAAuB,OAAoB;QACzC,IAAM,kBAAkB,GAAG,CAAC,CAAC,QAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAClE,IAAI,kBAAkB,EAAE;YACtB,OAAO;SACR;QAED,IAAM,GAAG,GAAG,4FAA0F,CAAC;QACvG,IAAI,eAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC1D,CAAC;IACH,qBAAC;AAAD,CAAC;AAvEY,wCAAc;;;;;;;;;;;;;;;;;;AClB3B,iDAA6E;AAE7E,+CAA4E;AAE5E,0CAAwE;AACxE,+CAAoF;AACpF,2CAAyG;AAEzG,qCAA0C;AAC1C,4CAAsD;AACtD,8CAA4E;AAC5E,4CAAoD;AACpD,2CAAoD;AACpD,4CAAsD;AACtD,mCAAqC;AACrC,+CAA2D;AAC3D,sDAAwE;AACxE,2CAAiD;AACjD,wCAAuC;AAEvC,+BAAgC;AAChC,yCAA8C;AAC9C,8CAAgD;AAgYhD;IACE;IAAsB,CAAC;IAEvB;;;;OAIG;IACW,oCAAwB,GAAtC,UAAuC,KAAsB;QAC3D,CAAC,CAAC,IAAI,CAAC,iCAAe,CAAC,UAAU,EAAE,EAAE,UAAC,MAA+B,EAAE,IAAY;YACjF,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,SAAS,EAAE;gBAC5B,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;aACtB;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IACH,kBAAC;AAAD,CAAC;AAfY,kCAAW;AAiBxB,iCAAe,CAAC,mBAAmB,CAAC,kBAAkB,EAAE,UAAC,KAAa;IACpE,OAAO,aAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,yBAAW,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC/E,CAAC,CAAC,CAAC;AAEH,IAAM,cAAc,GAAG,UAAC,OAAe,EAAE,OAAwB;IAC/D,IAAM,WAAW,GAAG,+BAAc,CAAC,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACjF,IAAI,aAAK,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;QACpC,OAAO,+BAAc,CAAC,eAAe,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,EAAE,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,IAAI,WAAW,CAAC,CAAC;KAClI;SAAM;QACL,OAAO,WAAW,CAAC,KAAK,CAAC;KAC1B;AACH,CAAC,CAAC;AAEF,iCAAe,CAAC,sBAAsB,CAAC,SAAS,EAAE,UAAC,OAAe,EAAE,MAAc,EAAE,UAAyB,EAAE,QAAiB;IAC9H,OAAO,cAAc,CAAC,OAAO,EAAE;QAC7B,MAAM;QACN,UAAU;QACV,QAAQ;KACT,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,iCAAe,CAAC,sBAAsB,CAAC,WAAW,EAAE,UAAC,OAAe,EAAE,OAAwB;IAC5F,OAAO,cAAc,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC1C,CAAC,CAAC,CAAC;AAEH,IAAM,kBAAkB,GAAG,UAAC,OAAe,EAAE,OAAwB;IACnE,IAAM,WAAW,GAAG,+BAAc,CAAC,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACxE,IAAI,aAAK,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;QACpC,OAAO,+BAAc,CAAC,eAAe,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,EAAE,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,IAAI,WAAW,CAAC,CAAC;KAClI;SAAM;QACL,OAAO,WAAW,CAAC,KAAK,CAAC;KAC1B;AACH,CAAC,CAAC;AAEF,iCAAe,CAAC,sBAAsB,CAAC,aAAa,EAAE,UAAC,OAAe,EAAE,MAAc,EAAE,UAAyB,EAAE,QAAiB;IAClI,OAAO,kBAAkB,CAAC,OAAO,EAAE;QACjC,MAAM;QACN,UAAU;QACV,QAAQ;KACT,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,iCAAe,CAAC,mBAAmB,CAAC,eAAe,EAAE,UAAC,OAAe,EAAE,OAAwB;IAC7F,OAAO,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC9C,CAAC,CAAC,CAAC;AAEH,IAAM,iBAAiB,GAAG,UAAC,OAAe,EAAE,OAAwB;IAClE,IAAM,WAAW,GAAG,+BAAc,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAEvE,IAAI,aAAK,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;QACpC,OAAO,+BAAc,CAAC,eAAe,CAAC,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,EAAE,WAAW,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,IAAI,WAAW,CAAC,CAAC;KAClI;SAAM;QACL,OAAO,WAAW,CAAC,KAAK,CAAC;KAC1B;AACH,CAAC,CAAC;AAEF,iCAAe,CAAC,sBAAsB,CAAC,YAAY,EAAE,UAAC,OAAe,EAAE,MAAc,EAAE,UAAyB,EAAE,QAAiB;IACjI,OAAO,iBAAiB,CAAC,OAAO,EAAE;QAChC,MAAM;QACN,UAAU;QACV,QAAQ;KACT,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,iCAAe,CAAC,sBAAsB,CAAC,cAAc,EAAE,UAAC,OAAe,EAAE,OAAwB;IAC/F,OAAO,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC7C,CAAC,CAAC,CAAC;AAEH,IAAM,gBAAgB,GAAG,UAAC,OAAe,EAAE,OAA2B;IACpE,IAAI,aAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE;QACzB,IAAI,aAAK,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;YACpC,OAAO,+BAAc,CAAC,eAAe,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,IAAI,WAAW,CAAC,CAAC;SAC3G;aAAM;YACL,OAAO,OAAO,CAAC;SAChB;KACF;SAAM;QACL,OAAO,SAAS,CAAC;KAClB;AACH,CAAC,CAAC;AAEF,iCAAe,CAAC,sBAAsB,CAAC,WAAW,EAAE,UAAC,OAAe,EAAE,UAAwB,EAAE,QAAiB;IAC/G,OAAO,gBAAgB,CAAC,OAAO,EAAE;QAC/B,UAAU;QACV,QAAQ;KACT,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,iCAAe,CAAC,sBAAsB,CAAC,aAAa,EAAE,UAAC,OAAe,EAAE,OAA2B;IACjG,OAAO,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAC5C,CAAC,CAAC,CAAC;AAEH,IAAM,0BAA0B,GAAG,UAAC,OAAe,EAAE,OAAsC;IACzF,IAAI,aAAK,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,aAAK,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,aAAK,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE;QAC/G,IAAI,0BAA0B,CAAC,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,kBAAkB,CAAC,EAAE;YACpF,OAAO,2CAAoB,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,kBAAkB,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;SAC9H;aAAM;YACL,OAAO,OAAO,CAAC;SAChB;KACF;SAAM;QACL,OAAO,SAAS,CAAC;KAClB;AACH,CAAC,CAAC;AAEF,iCAAe,CAAC,sBAAsB,CACpC,qBAAqB,EACrB,UACE,OAAe,EACf,gBAA4C,EAC5C,kBAAgD,EAChD,IAA8B;IAF9B,sDAAmB,uBAAuB,EAAE;IAC5C,0DAAqB,yBAAyB,EAAE;IAGhD,OAAO,0BAA0B,CAAC,OAAO,EAAE;QACzC,gBAAgB;QAChB,kBAAkB;QAClB,IAAI;KACL,CAAC,CAAC;AACL,CAAC,CACF,CAAC;AAEF,iCAAe,CAAC,sBAAsB,CAAC,uBAAuB,EAAE,UAAC,OAAe,EAAE,OAAsC;IACtH,IAAM,aAAa,cACjB,gBAAgB,EAAE,uBAAuB,EAAE,EAC3C,kBAAkB,EAAE,yBAAyB,EAAE,IAC5C,OAAO,CACX,CAAC;IACF,OAAO,0BAA0B,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;AAC5D,CAAC,CAAC,CAAC;AAEH,IAAM,0BAA0B,GAAG,UAAC,OAAe,EAAE,OAAsC;IACzF,IAAI,aAAK,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,aAAK,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,aAAK,CAAC,MAAM,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE;QAC/G,IAAI,0BAA0B,CAAC,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,kBAAkB,CAAC,EAAE;YACpF,OAAO,2CAAoB,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,gBAAgB,EAAE,OAAO,CAAC,kBAAkB,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;SAC9H;aAAM;YACL,OAAO,OAAO,CAAC;SAChB;KACF;SAAM;QACL,OAAO,SAAS,CAAC;KAClB;AACH,CAAC,CAAC;AAEF,iCAAe,CAAC,sBAAsB,CACpC,qBAAqB,EACrB,UACE,OAAe,EACf,gBAA4C,EAC5C,kBAAgD,EAChD,IAA8B;IAF9B,sDAAmB,uBAAuB,EAAE;IAC5C,0DAAqB,yBAAyB,EAAE;IAGhD,OAAO,0BAA0B,CAAC,OAAO,EAAE;QACzC,gBAAgB;QAChB,kBAAkB;QAClB,IAAI;KACL,CAAC,CAAC;AACL,CAAC,CACF,CAAC;AAEF,iCAAe,CAAC,sBAAsB,CAAC,uBAAuB,EAAE,UAAC,OAAe,EAAE,OAAsC;IACtH,IAAM,aAAa,cACjB,gBAAgB,EAAE,uBAAuB,EAAE,EAC3C,kBAAkB,EAAE,yBAAyB,EAAE,IAC5C,OAAO,CACX,CAAC;IACF,OAAO,0BAA0B,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;AAC5D,CAAC,CAAC,CAAC;AAEH,iCAAe,CAAC,mBAAmB,CAAC,QAAQ,EAAE,UAAC,KAAU,EAAE,OAAuC;IAChG,IAAI,CAAC,aAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;QACxB,OAAO,SAAS,CAAC;KAClB;IAED,IAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAClC,IAAM,MAAM,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC;IACzE,IAAI,CAAC,MAAM,EAAE;QACX,OAAO,yBAAW,CAAC,UAAU,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;KACvD;IAED,OAAO,yBAAW,CAAC,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,EAAU,MAAM,CAAC,CAAC,CAAC;AAC/E,CAAC,CAAC,CAAC;AAEH,iCAAe,CAAC,mBAAmB,CAAC,MAAM,EAAE,UAAC,KAAU,EAAE,OAA8B;IACrF,OAAO,qBAAS,CAAC,YAAY,CAAC,qBAAS,CAAC,2BAA2B,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;AACvF,CAAC,CAAC,CAAC;AAEH,iCAAe,CAAC,mBAAmB,CAAC,MAAM,EAAE,UAAC,KAAU,EAAE,OAA8B;IACrF,OAAO,qBAAS,CAAC,YAAY,CAAC,qBAAS,CAAC,2BAA2B,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;AACvF,CAAC,CAAC,CAAC;AAEH,iCAAe,CAAC,mBAAmB,CAAC,UAAU,EAAE,UAAC,KAAU,EAAE,OAA8B;IACzF,OAAO,qBAAS,CAAC,gBAAgB,CAAC,qBAAS,CAAC,2BAA2B,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,CAAC;AAC3F,CAAC,CAAC,CAAC;AAEH,iCAAe,CAAC,mBAAmB,CAAC,eAAe,EAAE,UAAC,KAAU,EAAE,OAA8B;IAC9F,IAAI,cAAc,GAAyB,EAAE,CAAC;IAC9C,cAAc,CAAC,qBAAqB,GAAG,IAAI,CAAC;IAC5C,IAAI,YAAY,GAAyB,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IAC3E,OAAO,KAAK,CAAC,CAAC,CAAC,qBAAS,CAAC,gBAAgB,CAAC,qBAAS,CAAC,2BAA2B,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACpH,CAAC,CAAC,CAAC;AAEH,iCAAe,CAAC,mBAAmB,CAAC,UAAU,EAAE,UAAC,KAAU,EAAE,OAAkC;IAC7F,OAAO,6BAAa,CAAC,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;AACxD,CAAC,CAAC,CAAC;AAEH,iCAAe,CAAC,mBAAmB,CAAC,UAAU,EAAE,UAAC,KAAU,EAAE,OAA0D;IAA1D,sCAAmC,cAAc,EAAE,KAAK,EAAE;IACrH,OAAO,IAAI,wBAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC,SAAS,EAAE,CAAC;AACjE,CAAC,CAAC,CAAC;AAEH,iCAAe,CAAC,mBAAmB,CAAC,OAAO,EAAE,UAAC,KAAwB;IAAE,cAAc;SAAd,UAAc,EAAd,qBAAc,EAAd,IAAc;QAAd,6BAAc;;IACpF,+GAA+G;IAC/G,IAAI,aAAqB,CAAC;IAC1B,IAAI,EAAU,CAAC;IACf,IAAI,WAAmB,CAAC;IACxB,IAAI,YAAqB,CAAC;IAC1B,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE;QACvB,aAAa,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;QACzC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACnB,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC;QACrC,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;KACxC;SAAM;QACL,aAAa,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACxB,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACb,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACtB,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;KACxB;IACD,IAAI,WAAW,IAAI,SAAS,EAAE;QAC5B,WAAW,GAAG,CAAC,CAAC;KACjB;IACD,IAAI,YAAY,IAAI,SAAS,EAAE;QAC7B,YAAY,GAAG,KAAK,CAAC;KACtB;IACD,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE;QACrB,IAAI,eAAe,GAAG,uBAAU,CAAC,2CAA2C,CAAS,KAAK,CAAC,CAAC;QAC5F,OAAO,uBAAU,CAAC,0BAA0B,CAAC,eAAe,EAAE,aAAa,EAAE,EAAE,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;KAC7G;SAAM,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;QAC3B,OAAO,uBAAU,CAAC,0BAA0B,CAAW,KAAK,EAAE,aAAa,EAAE,EAAE,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;KAC7G;SAAM;QACL,OAAO,SAAS,CAAC;KAClB;AACH,CAAC,CAAC,CAAC;AAEH,iCAAe,CAAC,sBAAsB,CAAC,mBAAmB,EAAE,UAAC,MAAmB;IAC9E,QAAE,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;IACvC,IAAI,QAAE,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,+BAA+B,CAAC,EAAE;QACxD,CAAC,CAAC,IAAI,CAAC,QAAE,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,+BAA+B,CAAC,EAAE,iBAAO;YAClE,QAAE,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;KACJ;SAAM,IAAI,QAAE,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE;QACrD,QAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;QACpD,CAAC,CAAC,IAAI,CAAC,QAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,gCAAgC,CAAC,EAAE,iBAAO;YACjF,QAAE,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;KACJ;IACD,OAAO,SAAS,CAAC;AACnB,CAAC,CAAC,CAAC;AAEH,iCAAe,CAAC,mBAAmB,CAAC,QAAQ,EAAE,UAAC,IAAY,EAAE,OAA6B;IACxF,OAAO,uBAAW,CAAC,WAAW,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;AAChD,CAAC,CAAC,CAAC;AAEH,iCAAe,CAAC,mBAAmB,CAAC,OAAO,EAAE,UAAC,GAAW,EAAE,OAA4B,EAAE,MAA2C;IAA3C,kCAAuB,kBAAkB,EAAE;IAClI,IAAI,OAAO,IAAI,OAAO,CAAC,WAAW,EAAE;QAClC,OAAO,sBAAU,CAAC,UAAU,CAAC,yBAAW,CAAC,6BAA6B,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,EAAE;YACnG,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,KAAK,EAAE,OAAO,CAAC,KAAK;SACrB,CAAC,CAAC;KACJ;IACD,OAAO,sBAAU,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;AAC7C,CAAC,CAAC,CAAC;AAEH,iCAAe,CAAC,sBAAsB,CACpC,WAAW,EACX,UAAC,MAA2C,EAAE,QAA4B,EAAE,OAA4B;IAAvG,kCAAuB,kBAAkB,EAAE;IAAE,+CAA4B;IACxE,IAAI,uBAAU,CAAC,YAAY,CAAC,MAAM,CAAC,EAAE;QACnC,OAAO,sBAAU,CAAC,oBAAoB,CAAC,MAAM,EAAE,+BAAc,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;KAC7F;AACH,CAAC,CACF,CAAC;AAEF,iCAAe,CAAC,sBAAsB,CAAC,oBAAoB,EAAE,UAAC,MAA2C,EAAE,OAAY;IAAzD,kCAAuB,kBAAkB,EAAE;IAAE,sCAAY;IACrH,IAAI,IAAI,GAAG,qBAAS,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IAC7C,IAAI,IAAI,EAAE;QACR,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,SAAS,CAAC;KACnD;AACH,CAAC,CAAC,CAAC;AAEH,iCAAe,CAAC,sBAAsB,CAAC,YAAY,EAAE,UAAC,KAAa;IACjE,OAAO,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,sCAAsC;SACvD,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,uCAAuC;SAC9D,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,gDAAgD;SACxE,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;SACvB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC3B,CAAC,CAAC,CAAC;AAEH,iCAAe,CAAC,sBAAsB,CAAC,eAAe,EAAE,UAAC,eAAsC,EAAE,IAAW;IAAX,kCAAW;IAC1G,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,IAAI,GAAG,kBAAkB,EAAE,CAAC;IAChC,IAAI,mBAAmB,GAAG,KAAK,CAAC;IAChC,IAAI,MAAM,GAAG,eAAe,CAAC;IAC7B,IAAI,WAAW,CAAC;IAChB,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,UAAC,KAAK,EAAE,GAAI,EAAE,GAAI;QACxC,IAAI,KAAK,IAAI,SAAS,EAAE;YACtB,WAAW,GAAG,GAAG,CAAC;SACnB;IACH,CAAC,CAAC,CAAC;IACH,IAAI,WAAW,IAAI,SAAS,EAAE;QAC5B,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;KAC/C;IACD,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,UAAC,SAAS,EAAE,EAAG,EAAE,GAAI;QAClC,IAAI,CAAC,mBAAmB,IAAI,CAAC,IAAI,EAAE;YACjC,mBAAmB,GAAG,mBAAmB,IAAI,SAAS,CAAC;YACvD,GAAG,IAAI,iCAAe,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;SACvE;IACH,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,mBAAmB,IAAI,WAAW,IAAI,SAAS,EAAE;QACpD,GAAG,IAAI,iCAAe,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;KAC3E;IACD,OAAO,GAAG,CAAC;AACb,CAAC,CAAC,CAAC;AAEH,IAAM,WAAW,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;AAE9D,iCAAe,CAAC,mBAAmB,CAAC,MAAM,EAAE,UAAC,KAAU,EAAE,OAAsB;IAC7E,IAAI,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC/B,IAAI,SAAS,GAAG,OAAO,IAAI,IAAI,IAAI,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IACrF,IAAI,IAAI,GAAG,OAAO,IAAI,IAAI,IAAI,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACtE,OAAO,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE;QACnD,IAAI,IAAI,IAAI,CAAC;QACb,IAAI,EAAE,CAAC;KACR;IACD,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;IAC5E,OAAO,IAAI,GAAG,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;AACxC,CAAC,CAAC,CAAC;AAEH,iCAAe,CAAC,mBAAmB,CAAC,mBAAmB,EAAE,UAAC,KAAa;IACrE,OAAO,uBAAU,CAAC,yBAAyB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;AAClE,CAAC,CAAC,CAAC;AAEH,iCAAe,CAAC,sBAAsB,CAAC,cAAc,EAAE,UAAC,EAAU,EAAE,SAAyB,EAAE,IAAU;IAArC,4CAAyB;IAC3F,IAAI,aAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE;QACjC,IAAI,GAAG,kBAAkB,EAAE,CAAC;KAC7B;IACD,IAAI,SAAS,EAAE;QACb,OAAO,6BAAa,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,mBAAmB,CAAC,IAAI,EAAE;YAC7D,cAAc,EAAE,KAAK;SACtB,CAAC,CAAC;KACJ;IACD,OAAO,EAAE,CAAC;AACZ,CAAC,CAAC,CAAC;AAEH,iCAAe,CAAC,sBAAsB,CAAC,sBAAsB,EAAE,UAAC,IAAY;IAC1E,IAAI,aAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE;QACjC,OAAO,SAAS,CAAC;KAClB;SAAM;QACL,OAAO,yBAAW,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;KAC/C;AACH,CAAC,CAAC,CAAC;AAEH,iCAAe,CAAC,sBAAsB,CAAC,gBAAgB,EAAE;IACvD,OAAO,yBAAW,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,yBAAW,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC3E,CAAC,CAAC,CAAC;AAEH;IACE,IAAI,KAAK,CAAC;IACV,IAAI,UAAU,GAAG,qBAAS,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;IACzD,IAAI,UAAU,EAAE;QACd,KAAK,GAAG,UAAU,CAAC,4BAA4B,CAAC;KACjD;IACD,IAAI,CAAC,KAAK,EAAE;QACV,IAAI,SAAS,GAAG,qBAAS,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QACvD,IAAI,SAAS,EAAE;YACb,KAAK,GAAG,SAAS,CAAC,4BAA4B,CAAC;SAChD;KACF;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;IACE,IAAI,kBAAkB,GAAG,kBAAkB,EAAE,CAAC;IAC9C,IAAI,kBAAkB,EAAE;QACtB,OAAO,kBAAkB,CAAC,gBAAgB,CAAC;KAC5C;AACH,CAAC;AAED;IACE,IAAI,kBAAkB,GAAG,kBAAkB,EAAE,CAAC;IAC9C,IAAI,kBAAkB,EAAE;QACtB,OAAO,kBAAkB,CAAC,kBAAkB,CAAC;KAC9C;AACH,CAAC;AAED,oCAAoC,gBAAgB,EAAE,kBAAkB;IACtE,OAAO,aAAK,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,IAAI,aAAK,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;AAC9G,CAAC;;;;;;;;;;AChzBD,0CAAkC;AAClC,mCAAqC;AAErC,6BAAoC,OAAoB,EAAE,YAAwB;IAChF,IAAM,eAAe,GAAG,iBAAI,CAAC,cAAM,mBAAY,EAAE,EAAd,CAAc,CAAC,CAAC;IAEnD,QAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,aAAa,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,CAAC,EAAE,eAAe,CAAC,CAAC;IAClF,IAAI,cAAsB,CAAC;IAC3B,QAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE;QAC3B,cAAc,GAAG,MAAM,CAAC,UAAU,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IACH,QAAE,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,UAAU,EAAE;QACzB,IAAI,cAAc,EAAE;YAClB,YAAY,CAAC,cAAc,CAAC,CAAC;SAC9B;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAbD,kDAaC;;;;;;;;;;AChBD;;GAEG;AACH,IAAY,wBAqBX;AArBD,WAAY,wBAAwB;IAClC;;OAEG;IACH,6CAAiB;IACjB;;OAEG;IACH,mDAAuB;IACvB;;OAEG;IACH,2CAAe;IACf;;OAEG;IACH,yDAA6B;IAC7B;;OAEG;IACH,iDAAqB;AACvB,CAAC,EArBW,wBAAwB,GAAxB,gCAAwB,KAAxB,gCAAwB,QAqBnC;;;;;;;;;;ACpBD,sDAA8D;AAC9D,qCAA0C;AAC1C,wDAA4H;AAC5H,mCAAqC;AACrC,8CAAoE;AAYpE;IAIE,sBACS,KAAY,EACZ,UAAsB,EACtB,QAAqE,EACrE,SAAsE;QAHtE,UAAK,GAAL,KAAK,CAAO;QACZ,eAAU,GAAV,UAAU,CAAY;QACtB,aAAQ,GAAR,QAAQ,CAA6D;QACrE,cAAS,GAAT,SAAS,CAA6D;IAC5E,CAAC;IAEG,4BAAK,GAAZ;QACE,IAAI,CAAC,QAAQ,GAAG,IAAI,2CAAoB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,CAAC;QAC9E,IAAI,CAAC,SAAS,CAAC,EAAE,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;QACzF,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,gCAAS,GAAhB,UAAiB,aAAyC;QACxD,IAAI,CAAC,aAAK,CAAC,iBAAiB,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE;YACzD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;SACvB;aAAM;YACL,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;SACxB;QACD,IAAI,CAAC,4BAA4B,CAAC,aAAa,CAAC,CAAC;QACjD,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;YAC5B,IAAI,CAAC,kCAAkC,CAAC,aAAa,CAAC,CAAC;SACxD;aAAM;YACL,IAAI,CAAC,0BAA0B,CAAC,aAAa,CAAC,CAAC;SAChD;IACH,CAAC;IAEM,6BAAM,GAAb;QACE,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,KAAK,CAAC;QACjC,IAAI,CAAC,QAAQ,CAAC,6BAA6B,EAAE,CAAC;IAChD,CAAC;IAEM,+BAAQ,GAAf;QACE,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,KAAK,CAAC;QACjC,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,KAAK,CAAC;QACjC,IAAI,CAAC,QAAQ,CAAC,6BAA6B,EAAE,CAAC;IAChD,CAAC;IAEM,8BAAO,GAAd;QACE,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,KAAK,CAAC;QACjC,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC;QAChC,IAAI,CAAC,QAAQ,CAAC,6BAA6B,EAAE,CAAC;IAChD,CAAC;IAEM,gCAAS,GAAhB;QACE,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,KAAK,CAAC;QACjC,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,KAAK,CAAC;QACjC,IAAI,CAAC,QAAQ,CAAC,6BAA6B,EAAE,CAAC;IAChD,CAAC;IAEM,0CAAmB,GAA1B;QAAA,iBAiBC;QAhBC,IAAI,WAAkC,CAAC;QACvC,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;YAC5B,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,kDAAwB,CAAC,qBAAqB,CAAC,CAAC,CAAC,kDAAwB,CAAC,cAAc,CAAC;SACzH;aAAM;YACL,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,kDAAwB,CAAC,mBAAmB,CAAC,CAAC,CAAC,kDAAwB,CAAC,YAAY,CAAC;SACrH;QAED,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE/C,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,cAAM,YAAI,CAAC,SAAS,CAAC,KAAI,EAAE,WAAW,CAAC,EAAjC,CAAiC,CAAC,CAAC;SACrE;aAAM;YACL,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;gBACzB,YAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAsB,WAAW,EAAE,KAAI,CAAC,qBAAqB,EAAE,CAAC;YAAxG,CAAwG,CACzG,CAAC;SACH;IACH,CAAC;IAES,wCAAiB,GAA3B,UAA4B,aAAyC;QAArE,iBAqBC;QApBC,IAAI,CAAC,KAAK,CAAC,2BAA2B,GAAG,aAAa,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QACrG,IAAI,WAAkC,CAAC;QACvC,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;YAC5B,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,kDAAwB,CAAC,qBAAqB,CAAC,CAAC,CAAC,kDAAwB,CAAC,cAAc,CAAC;YACxH,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SAC5C;aAAM;YACL,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;gBAC5B,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,kDAAwB,CAAC,oBAAoB,CAAC,CAAC,CAAC,kDAAwB,CAAC,aAAa,CAAC;aACvH;iBAAM;gBACL,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,kDAAwB,CAAC,kBAAkB,CAAC,CAAC,CAAC,kDAAwB,CAAC,WAAW,CAAC;aACnH;YACD,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SAC/C;QACD,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,cAAM,YAAI,CAAC,QAAQ,CAAC,KAAI,EAAE,WAAW,CAAC,EAAhC,CAAgC,CAAC,CAAC;SACpE;aAAM;YACL,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;gBACzB,YAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAsB,WAAW,EAAE,KAAI,CAAC,qBAAqB,EAAE,CAAC;YAAxG,CAAwG,CACzG,CAAC;SACH;IACH,CAAC;IAES,yCAAkB,GAA5B,UAA6B,aAAyC;QACpE,IAAI,CAAC,KAAK,CAAC,2BAA2B,GAAG,aAAa,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QACrG,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC7B,CAAC;IAES,+DAAwC,GAAlD,UAAmD,aAAyC;QAA5F,iBAmBC;QAlBC,IAAM,UAAU,GAAG;YACjB,IAAI,aAAa,CAAC,QAAQ,EAAE;gBAC1B,KAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;aAC/B;YACD,IAAI,aAAa,CAAC,aAAa,EAAE;gBAC/B,KAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;aACrD;YACD,KAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;YACtC,KAAI,CAAC,uBAAuB,EAAE,CAAC;YAC/B,OAAO,KAAK,CAAC;QACf,CAAC,CAAC;QAEF,QAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,WAAC;YACnC,CAAC,CAAC,eAAe,EAAE,CAAC;YACpB,UAAU,EAAE,CAAC;QACf,CAAC,CAAC,CAAC;QAEH,QAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,6BAAa,CAAC,cAAc,CAAC,CAAC,wBAAQ,CAAC,QAAQ,EAAE,wBAAQ,CAAC,KAAK,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC;IACjI,CAAC;IAES,wDAAiC,GAA3C,UAA4C,aAAyC;QAArF,iBAeC;QAdC,IAAM,aAAa,GAAG,UAAC,KAAY;YACjC,IAAI,aAAa,CAAC,aAAa,EAAE;gBAC/B,KAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;aACrD;YAED,KAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;YAEvC,KAAI,CAAC,uBAAuB,EAAE,CAAC;YAC/B,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,KAAK,CAAC,cAAc,EAAE,CAAC;QACzB,CAAC,CAAC;QACF,QAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QAEzD,QAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,6BAAa,CAAC,cAAc,CAAC,CAAC,wBAAQ,CAAC,QAAQ,EAAE,wBAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC,CAAC,CAAC;IAChI,CAAC;IAES,uDAAgC,GAA1C,UAA2C,aAAyC;QAApF,iBAcC;QAbC,IAAM,YAAY,GAAG,UAAC,KAAY;YAChC,IAAI,aAAa,CAAC,QAAQ,EAAE;gBAC1B,KAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;aAC/B;YAED,KAAI,CAAC,uBAAuB,EAAE,CAAC;YAC/B,QAAE,CAAC,KAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC7C,KAAK,CAAC,cAAc,EAAE,CAAC;QACzB,CAAC,CAAC;QAEF,QAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAElD,QAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,6BAAa,CAAC,cAAc,CAAC,CAAC,wBAAQ,CAAC,QAAQ,EAAE,wBAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC;IACnI,CAAC;IAES,yDAAkC,GAA5C,UAA6C,aAAyC;QACpF,IAAI,CAAC,wCAAwC,CAAC,aAAa,CAAC,CAAC;QAC7D,IAAI,CAAC,iCAAiC,CAAC,aAAa,CAAC,CAAC;IACxD,CAAC;IAES,iDAA0B,GAApC,UAAqC,aAAyC;QAC5E,IAAI,CAAC,gCAAgC,CAAC,aAAa,CAAC,CAAC;QACrD,IAAI,CAAC,iCAAiC,CAAC,aAAa,CAAC,CAAC;IACxD,CAAC;IAES,mDAA4B,GAAtC,UAAuC,aAAyC;QAAhF,iBAOC;QANC,QAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE;YACtC,IAAI,aAAa,CAAC,aAAa,EAAE;gBAC/B,KAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;aACrD;YACD,KAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;IACL,CAAC;IAES,wCAAiB,GAA3B,UAA4B,QAAgC;QAC1D,QAAQ,CAAC,YAAY,EAAE,CAAC;QACxB,QAAQ,CAAC,KAAK,EAAE,CAAC;IACnB,CAAC;IAEO,8CAAuB,GAA/B;QACE,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,oBAAoB,EAAE;YACvF,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,oBAAoB,EAAE,CAAC;SAC/C;IACH,CAAC;IAEO,4CAAqB,GAA7B;QACE,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;YAC9B,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE;YAC/C,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK;YACjC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK;SACrC,CAAC;IACJ,CAAC;IACH,mBAAC;AAAD,CAAC;AAlMY,oCAAY;;;;;;;;;;AClBzB,mCAAqC;AACrC,qCAA0C;AAC1C,uCAA0C;AAC1C,yCAA8C;AAC9C,+BAAgC;AAChC,yCAAgD;AAChD,uCAA4C;AAE5C;IAYE,8BAAmB,KAAY,EAAS,UAAsB;QAA3C,UAAK,GAAL,KAAK,CAAO;QAAS,eAAU,GAAV,UAAU,CAAY;IAAG,CAAC;IAI3D,qCAAM,GAAb,UAAc,OAAY;QACxB,IAAI,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;YACtB,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,UAAC,CAAc;gBAC7B,IAAI,CAAC,EAAE;oBACL,QAAE,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;iBAChB;YACH,CAAC,CAAC,CAAC;SACJ;aAAM;YACL,IAAI,OAAO,EAAE;gBACX,QAAE,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC;aACtB;SACF;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,oCAAK,GAAZ;QACE,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAChC,IAAI,CAAC,6BAA6B,EAAE,CAAC;QACrC,IAAI,CAAC,yCAAyC,EAAE,CAAC;QACjD,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,4DAA6B,GAApC;QACE,QAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,gBAAgB,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC1E,QAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,gBAAgB,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC5E,CAAC;IAED,sBAAW,mDAAiB;aAA5B;YACE,OAAO,IAAI,CAAC,eAAe,CAAC;QAC9B,CAAC;;;OAAA;IAES,+CAAgB,GAA1B;QACE,IAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAC5C,IAAM,WAAW,GAAG,QAAE,CAAC,KAAK,EAAE;YAC5B,SAAS,EAAE,WAAC,CAAC,6BAA6B,EAAE,IAAI,CAAC,OAAO,EAAE,WAAC,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;YACjH,SAAS,EAAE,2BAA2B;YACtC,QAAQ,EAAE,CAAC;YACX,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,UAAU,CAAC,QAAQ,EAAE;SACnC,CAAC,CAAC,EAAE,CAAC;QACN,IAAI,CAAC,6BAA6B,CAAC,WAAW,CAAC,CAAC;QAChD,WAAW,CAAC,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,mBAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAQ,CAAC,KAAK,CAAC,yBAAyB,CAAC;QACpG,eAAM,CAAC,wBAAwB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC;QAC/H,eAAM,CAAC,6BAA6B,CAAC,WAAW,EAAE,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,CAAC;QAC7E,OAAO,WAAW,CAAC;IACrB,CAAC;IAES,sDAAuB,GAAjC;QACE,IAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,yBAAyB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;QACxG,IAAI,aAAK,CAAC,gBAAgB,CAAC,aAAa,CAAC,EAAE;YACzC,IAAM,IAAI,GAAG,QAAE,CAAC,MAAM,EAAE;gBACtB,SAAS,EAAE,kCAAkC;aAC9C,CAAC,CAAC,EAAE,CAAC;YACN,QAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC7B,OAAO,IAAI,CAAC;SACb;aAAM;YACL,OAAO,SAAS,CAAC;SAClB;IACH,CAAC;IAES,iDAAkB,GAA5B;QACE,IAAM,QAAQ,GAAG,QAAE,CAAC,OAAO,EAAE;YAC3B,IAAI,EAAE,UAAU;YAChB,UAAU,EAAE,IAAI;YAChB,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC,CAAC,EAAE,CAAC;QAEN,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QAC7G,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QAEhH,qBAAS,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC;QAC7C,OAAO,QAAQ,CAAC;IAClB,CAAC;IAES,wDAAyB,GAAnC;QACE,IAAM,QAAQ,GAAG,QAAE,CAAC,KAAK,EAAE;YACzB,SAAS,EAAE,4BAA4B;YACvC,QAAQ,EAAE,CAAC;SACZ,CAAC,CAAC,EAAE,CAAC;QACN,QAAQ,CAAC,SAAS,GAAG,mBAAQ,CAAC,KAAK,CAAC,yBAAyB,CAAC;QAC9D,eAAM,CAAC,wBAAwB,CAAC,QAAQ,EAAE,gCAAgC,CAAC,CAAC;QAC5E,IAAI,CAAC,6BAA6B,CAAC,QAAQ,CAAC,CAAC;QAC7C,OAAO,QAAQ,CAAC;IAClB,CAAC;IAES,6CAAc,GAAxB;QACE,IAAM,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACjC,IAAI,aAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;YACtB,OAAO,QAAE,CAAC,KAAK,EAAE;gBACf,SAAS,EAAE,mCAAmC;gBAC9C,GAAG,EAAE,IAAI,CAAC,YAAY,EAAE;aACzB,CAAC,CAAC,EAAE,CAAC;SACP;aAAM;YACL,OAAO,IAAI,CAAC,wBAAwB,EAAE,CAAC;SACxC;IACH,CAAC;IAES,2CAAY,GAAtB;QACE,IAAI,aAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;YAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SACtD;aAAM;YACL,OAAO,SAAS,CAAC;SAClB;IACH,CAAC;IAES,uDAAwB,GAAlC;QACE,OAAO,QAAE,CAAC,KAAK,EAAE;YACf,SAAS,EAAE,oCAAoC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK;SACnH,CAAC,CAAC,EAAE,CAAC;IACR,CAAC;IAES,gDAAiB,GAA3B;QACE,IAAM,YAAY,GAAG,QAAE,CAAC,MAAM,EAAE;YAC9B,SAAS,EAAE,2BAA2B;YACtC,KAAK,EAAE,IAAI,CAAC,OAAO;YACnB,qBAAqB,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK;SAC7C,CAAC,CAAC,EAAE,CAAC;QAEN,QAAE,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpC,OAAO,YAAY,CAAC;IACtB,CAAC;IAES,8CAAe,GAAzB;QACE,IAAI,aAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACtC,IAAM,YAAY,GAAG,QAAE,CAAC,MAAM,EAAE;gBAC9B,SAAS,EAAE,yBAAyB;aACrC,CAAC,CAAC,EAAE,CAAC;YACN,QAAE,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAClC,OAAO,YAAY,CAAC;SACrB;aAAM;YACL,OAAO,SAAS,CAAC;SAClB;IACH,CAAC;IAED,sBAAY,yCAAO;aAAnB;YACE,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACrD,CAAC;;;OAAA;IAED,sBAAY,uCAAK;aAAjB;YACE,OAAO,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC;QAC7C,CAAC;;;OAAA;IAEO,4DAA6B,GAArC,UAAsC,IAAiB;QAAvD,iBAGC;QAFC,QAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,cAAM,eAAE,CAAC,KAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,EAA3C,CAA2C,CAAC,CAAC;QACxE,QAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,cAAM,eAAE,CAAC,KAAI,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,eAAe,CAAC,EAA9C,CAA8C,CAAC,CAAC;IAC5E,CAAC;IAEO,4CAAa,GAArB;QACE,IAAI,CAAC,QAAQ,GAAG,QAAE,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,0CAA0C,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC;QAElH,IAAI,CAAC,QAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,YAAY,CAAC,EAAE;YACnD,QAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC;SAChD;QAED,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAClE,CAAC;IAEO,iDAAkB,GAA1B;QACE,IAAI,CAAC,KAAK,GAAG,QAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,yBAAyB,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,CAAC;QACrF,IAAI,CAAC,+BAA+B,EAAE,CAAC;QACvC,IAAI,CAAC,mCAAmC,EAAE,CAAC;QAC3C,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxC,CAAC;IAEO,uDAAwB,GAAhC;QACE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC3C,IAAI,CAAC,8BAA8B,EAAE,CAAC;QACtC,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC9C,CAAC;IAEO,6DAA8B,GAAtC;QAAA,iBAQC;QAPC,QAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE;YACnC,QAAE,CAAC,KAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,gCAAgC,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;QAEH,QAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,UAAU,EAAE;YAClC,QAAE,CAAC,KAAI,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,gCAAgC,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,8DAA+B,GAAvC;QACE,IAAI,CAAC,aAAK,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE;YAChD,OAAO;SACR;QAED,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAEpD,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE;YACvB,OAAO;SACR;QAED,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC3C,QAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,2BAA2B,CAAC,CAAC;IACvD,CAAC;IAEO,kEAAmC,GAA3C;QACE,IAAI,CAAC,sBAAsB,GAAG,QAAE,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,iCAAiC,EAAE,CAAC,CAAC,EAAE,CAAC;QAE7F,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,IAAI,CAAC,4BAA4B,EAAE,CAAC;QACpC,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACjC,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAE/B,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;IACtD,CAAC;IAEO,oDAAqB,GAA7B;QACE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1C,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzD,CAAC;IAEO,2DAA4B,GAApC;QACE,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACxD,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;IAChE,CAAC;IAEO,sDAAuB,GAA/B;QACE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAEzC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,OAAO;SACR;QAED,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAC3D,CAAC;IAEO,wDAAyB,GAAjC;QACE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC7C,IAAI,CAAC,sBAAsB,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC7D,CAAC;IAEO,wEAAyC,GAAjD;QACE,IAAM,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAClC,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC9C,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAClC,EAAE,CAAC,YAAY,CAAC,cAAc,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IACpD,CAAC;IAED,sBAAY,2CAAS;aAArB;YACE,IAAM,WAAW,GAAG,WAAC,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;YAC3E,OAAO,KAAG,WAAC,CAAC,6BAA6B,EAAE,IAAI,CAAC,OAAO,EAAE,WAAW,CAAG,CAAC;QAC1E,CAAC;;;OAAA;IAED,sBAAY,6CAAW;aAAvB;YACE,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;gBAC5B,OAAO,OAAO,CAAC;aAChB;YACD,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;QACrD,CAAC;;;OAAA;IACH,2BAAC;AAAD,CAAC;AA3QY,oDAAoB;;;;;;;;;;ACRjC,4CAAsD;AAGtD,+BAAgC;AAEhC;IACE,0BAAmB,KAAY,EAAS,SAAoB;QAAzC,UAAK,GAAL,KAAK,CAAO;QAAS,cAAS,GAAT,SAAS,CAAW;IAAG,CAAC;IAIzD,wCAAa,GAApB,UAAqB,WAAkB;QACrC,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE;YAC/C,IAAI,IAAI,CAAC,eAAe,EAAE;gBACxB,OAAO,IAAI,CAAC,4BAA4B,CAAC,WAAW,CAAC,CAAC;aACvD;YAED,IAAI,IAAI,CAAC,qBAAqB,EAAE;gBAC9B,OAAO,IAAI,CAAC,8BAA8B,CAAC,WAAW,CAAC,CAAC;aACzD;SACF;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;IAEM,yDAA8B,GAArC,UAAsC,MAAoB;QACxD,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,4BAA4B,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IACnF,CAAC;IAEM,+DAAoC,GAA3C,UAA4C,MAAoB;QAC9D,OAAO,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,IAAI,CAAC,8BAA8B,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAC3F,CAAC;IAED,sBAAY,6CAAe;aAA3B;YACE,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,IAAI,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,IAAI,SAAS,CAAC;QAClG,CAAC;;;OAAA;IAED,sBAAY,mDAAqB;aAAjC;YACE,OAAO,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QAC/D,CAAC;;;OAAA;IAEO,uDAA4B,GAApC,UAAqC,WAAyB;QAC5D,IAAI,oBAAoB,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,EAAE,oBAAU,IAAI,iBAAU,CAAC,WAAW,EAAE,EAAxB,CAAwB,CAAC,CAAC;QACxG,IAAI,cAAc,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,UAAC,UAAU,EAAE,CAAC;YACpD,+DAA+D;YAC/D,8IAA8I;YAC9I,IAAI,KAAK,GAAG,CAAC,CAAC,SAAS,CAAC,oBAAoB,EAAE,oBAAU;gBACtD,OAAO,CACL,yBAAW,CAAC,qBAAqB,CAAS,UAAU,EAAE,UAAU,CAAC,KAAK,CAAC;oBACvE,CAAC,UAAU,CAAC,WAAW,IAAI,IAAI,IAAI,yBAAW,CAAC,qBAAqB,CAAS,UAAU,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC,CAClH,CAAC;YACJ,CAAC,CAAC,CAAC;YACH,IAAI,KAAK,IAAI,CAAC,CAAC,EAAE;gBACf,KAAK,GAAG,CAAC,GAAG,oBAAoB,CAAC,MAAM,CAAC;aACzC;YACD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QAClD,CAAC,CAAC,CAAC;QACH,IAAI,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QAC/C,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,mBAAmB,IAAI,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACvF,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACvC,CAAC;IAEO,yDAA8B,GAAtC,UAAuC,WAAyB;QAAhE,iBAUC;QATC,IAAI,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,UAAC,UAAU,EAAE,WAAW;YACpD,OAAO,KAAI,CAAC,KAAK,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,aAAa,CAAC,KAAI,CAAC,KAAK,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE;gBACrH,WAAW,EAAE,MAAM;aACpB,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE;YAC9D,MAAM,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;SAC3B;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IACH,uBAAC;AAAD,CAAC;AAlEY,4CAAgB;;;;;;;;;;ACP7B,mCAA0C;AAC1C,yCAAgD;AAChD,uCAA4C;AAC5C,yCAA8C;AAC9C,uCAA0C;AAC1C,6CAAsD;AAEtD,6DAA4E;AAC5E,0CAAsC;AAEtC,gEAAgH;AAChH,8CAAqD;AAErD;IAgBE,4BAAoB,WAAyB;QAAzB,gBAAW,GAAX,WAAW,CAAc;QATtC,yBAAoB,GAAY,KAAK,CAAC;QAIrC,oBAAe,GAAG,KAAK,CAAC;QACxB,kBAAa,GAAG,qBAAQ,CAAC,4BAA4B,CAAC,CAAC;QACvD,yBAAoB,GAAG,qBAAQ,CAAC,6BAA6B,CAAC,CAAC;QAIrE,IAAI,CAAC,2BAA2B,GAAG,IAAI,yDAA2B,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACrF,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;IAEM,kCAAK,GAAZ,UAAa,sBAAmC;QAAhD,iBAuCC;QAtCC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC5C,QAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;QAE/C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC3C,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAExC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACjC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEnC,IAAI,CAAC,+BAA+B,EAAE,CAAC;QAEvC,IAAI,CAAC,KAAK,GAAG,QAAE,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,0BAA0B,EAAE,KAAK,EAAE,WAAC,CAAC,OAAO,EAAE,WAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,EAAE,mBAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAC3H,eAAM,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,EAAE,8BAA8B,CAAC,CAAC;QAC5E,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC;QAClC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEpC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACrC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAEvC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACtC,qBAAS,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/C,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEtC,QAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,UAAC,CAAgB;YAC1C,KAAI,CAAC,2BAA2B,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;QACH,QAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,UAAC,CAAQ;YAClC,sBAAsB,IAAI,sBAAsB,EAAE,CAAC;QACrD,CAAC,CAAC,CAAC;QACH,QAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,UAAC,CAAQ;YAClC,KAAI,CAAC,sBAAsB,EAAE,CAAC;QAChC,CAAC,CAAC,CAAC;QACH,QAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,UAAC,CAAa,IAAK,YAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAnB,CAAmB,CAAC,CAAC;QAElE,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAChC,IAAI,CAAC,2BAA2B,EAAE,CAAC;QAEnC,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAEO,8CAAiB,GAAzB;QAAA,iBAUC;QATC,IAAI,CAAC,aAAa,GAAG,QAAE,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,aAAa,EAAE,SAAS,EAAE,4BAA4B,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC;QACvH,QAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,cAAM,YAAI,CAAC,iBAAiB,EAAE,EAAxB,CAAwB,CAAC,CAAC;QACpE,QAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,UAAC,CAAgB;YAClD,IAAI,CAAC,CAAC,KAAK,KAAK,wBAAQ,CAAC,MAAM,EAAE;gBAC/B,KAAI,CAAC,WAAW,CAAC,oBAAoB,EAAE,CAAC;aACzC;QACH,CAAC,CAAC,CAAC;QACH,QAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,UAAU,EAAE,UAAC,KAAiB,IAAK,YAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,EAAnC,CAAmC,CAAC,CAAC;QAClG,QAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,CAAC;IAChC,CAAC;IAEO,wCAAW,GAAnB,UAAoB,CAAa;QAC/B,IAAM,MAAM,GAAG,CAAC,CAAC,aAA4B,CAAC;QAC9C,IAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;QACjC,IAAM,qBAAqB,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAElE,IAAI,eAAe,IAAI,CAAC,qBAAqB,EAAE;YAC7C,IAAI,CAAC,WAAW,CAAC,oBAAoB,EAAE,CAAC;SACzC;IACH,CAAC;IAEO,oDAAuB,GAA/B,UAAgC,CAAa;QAC3C,IAAM,MAAM,GAAG,CAAC,CAAC,aAA4B,CAAC;QAC9C,IAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;QACjC,IAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACnD,IAAM,qBAAqB,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QAElE,IAAI,eAAe,IAAI,CAAC,cAAc,IAAI,CAAC,qBAAqB,EAAE;YAChE,IAAI,CAAC,WAAW,CAAC,oBAAoB,EAAE,CAAC;SACzC;IACH,CAAC;IAEO,wDAA2B,GAAnC;QAAA,iBAQC;QAPC,IAAM,MAAM,GAA0B;YACpC,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,gBAAgB,EAAE,UAAC,GAAY,IAAK,QAAC,KAAI,CAAC,eAAe,GAAG,GAAG,CAAC,EAA5B,CAA4B;SACjE,CAAC;QAEF,IAAI,CAAC,uBAAuB,GAAG,+DAA8B,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC1F,CAAC;IAEO,0CAAa,GAArB;QACE,OAAO,QAAE,CAAC,KAAK,EAAE;YACf,SAAS,EAAE,2BAA2B;YACtC,YAAY,EAAE,SAAS;YACvB,YAAY,EAAE,MAAM;SACrB,CAAC,CAAC,EAAE,CAAC;IACR,CAAC;IAEM,4DAA+B,GAAtC;QACE,IAAI,CAAC,SAAS,IAAI,QAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5C,QAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;IAEM,0DAA6B,GAApC;QACE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IACjC,CAAC;IAEM,4DAA+B,GAAtC;QACE,QAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC;QAC1B,QAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;IAEM,qDAAwB,GAA/B;QAAA,iBAYC;QAXC,yBAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,gBAAgB,EAAE,eAAK;YAC/D,IAAI,KAAK,CAAC,aAAa,IAAI,MAAM,EAAE;gBACjC,KAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;aAClC;QACH,CAAC,CAAC,CAAC;QAEH,yBAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE,eAAK;YAC7D,IAAI,KAAK,CAAC,aAAa,IAAI,MAAM,EAAE;gBACjC,KAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;aACnC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,kDAAqB,GAA5B;QAAA,iBAmBC;QAlBC,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,EAAE;YAC9B,QAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAChD,QAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,CAAC;YAE9B,IAAI,QAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,MAAM,EAAE;gBACnD,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;aACvC;YACD,IAAI,SAAS,GAAG,QAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAChC,IAAI,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,MAAM,IAAI,IAAI,CAAC,oBAAoB,EAAE;gBACnE,IAAI,QAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,MAAM,EAAE;oBACnD,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;iBACvC;gBACD,yBAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE;oBACxD,yBAAW,CAAC,mBAAmB,CAAC,KAAI,CAAC,MAAM,EAAE,cAAc,EAAE,KAAI,CAAC,CAAC;gBACrE,CAAC,CAAC,CAAC;aACJ;SACF;QACD,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;IAEM,+CAAkB,GAAzB,UAA0B,KAAU;QAClC,IAAI,CAAC,uBAAuB,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACzD,CAAC;IAED,sBAAW,6CAAa;aAAxB;YACE,OAAO,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC;QACpD,CAAC;;;OAAA;IAEM,kDAAqB,GAA5B;QACE,IAAI,CAAC,uBAAuB,CAAC,gBAAgB,EAAE,CAAC;IAClD,CAAC;IAEM,gDAAmB,GAA1B;QACE,IAAI,CAAC,uBAAuB,CAAC,oBAAoB,EAAE,CAAC;IACtD,CAAC;IAEM,iEAAoC,GAA3C,UAA4C,KAAa;QACvD,IAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;QAChD,QAAQ,CAAC,OAAO,CAAC,iBAAO;YACtB,OAAO,CAAC,SAAS,GAAG,QAAE,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,yCAAyC,CAAC,CAAC;QACnG,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,kDAAqB,GAA5B,UAA6B,EAAe;QAC1C,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACnC,IAAI,CAAC,6BAA6B,CAAC,EAAE,CAAC,CAAC;IACzC,CAAC;IAEM,kDAAqB,GAA5B;QACE,QAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,CAAC;QAC/B,IAAI,CAAC,aAAa,CAAC,WAAW,CAC5B,QAAE,CACA,IAAI,EACJ,EAAE,EAAE,EAAE,IAAI,CAAC,oBAAoB,EAAE,SAAS,EAAE,6BAA6B,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,EAC9H,WAAC,CAAC,eAAe,CAAC,CACnB,CAAC,EAAE,CACL,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,uBAAuB,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAC9E,CAAC;IAEM,sDAAyB,GAAhC,UAAiC,UAAkB,EAAE,eAAuB,EAAE,iBAA0B;QACtG,IAAI,YAAY,GACd,UAAU,KAAK,EAAE;YACf,CAAC,CAAC,WAAC,CAAC,gBAAgB,EAAE,eAAe,EAAE,UAAU,EAAE,eAAe,CAAC;YACnE,CAAC,CAAC,WAAC,CAAC,yBAAyB,EAAE,eAAe,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;QAEjF,IAAI,iBAAiB,EAAE;YACrB,YAAY,GAAM,YAAY,UAAK,WAAC,CAAC,qBAAqB,CAAC,MAAG,CAAC;SAChE;QAED,IAAI,CAAC,WAAW,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;IAChD,CAAC;IAEM,kCAAK,GAAZ;QACE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACnB,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAChC,CAAC;IAEO,mDAAsB,GAA9B;QACE,IAAI,IAAI,CAAC,WAAW,CAAC,yBAAyB,IAAI,IAAI,EAAE;YACtD,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,CAAC;YACpC,IAAI,CAAC,iBAAiB,EAAE,CAAC;SAC1B;IACH,CAAC;IAEO,0DAA6B,GAArC,UAAsC,EAAe;QAArD,iBAqBC;QApBC,QAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE;YACrB,KAAI,CAAC,kBAAkB,CAAC,QAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,gEAAgE;QAChE,IAAI,aAAa,GAAG,KAAK,CAAC;QAC1B,IAAI,aAAa,GAAG,KAAK,CAAC;QAC1B,QAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,cAAM,QAAC,aAAa,GAAG,KAAK,CAAC,EAAvB,CAAuB,CAAC,CAAC;QACtD,QAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,cAAM,QAAC,aAAa,GAAG,IAAI,CAAC,EAAtB,CAAsB,CAAC,CAAC;QACrD,QAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,cAAM,QAAC,aAAa,GAAG,IAAI,CAAC,EAAtB,CAAsB,CAAC,CAAC;QAErD,QAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,kBAAkB,EAAE;YAC5B,IAAI,CAAC,aAAa,IAAI,CAAC,aAAa,EAAE;gBACpC,UAAU,CAAC;oBACT,KAAI,CAAC,WAAW,CAAC,oBAAoB,EAAE,CAAC;gBAC1C,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,uFAAuF;aAC/F;YACD,aAAa,GAAG,KAAK,CAAC;YACtB,aAAa,GAAG,KAAK,CAAC;QACxB,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,qDAAwB,GAA/B;QACE,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,QAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,CAAC;QAC9B,QAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,EAAE,CAAC;IAClC,CAAC;IAEM,6CAAgB,GAAvB;QACE,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;SACvB;IACH,CAAC;IAEO,+CAAkB,GAA1B;QACE,IAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAChD,SAAS,CAAC,SAAS,GAAG,mBAAQ,CAAC,KAAK,CAAC,MAAM,CAAC;QAC5C,QAAE,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,8BAA8B,CAAC,CAAC;QACvD,eAAM,CAAC,wBAAwB,CAAC,SAAS,EAAE,kCAAkC,CAAC,CAAC;QAC/E,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QACnC,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,0CAAa,GAArB;QACE,IAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,SAAS,GAAG,mBAAQ,CAAC,KAAK,CAAC,OAAO,CAAC;QACxC,QAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,mCAAmC,CAAC,CAAC;QACvD,eAAM,CAAC,wBAAwB,CAAC,IAAI,EAAE,uCAAuC,CAAC,CAAC;QAC/E,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,8CAAiB,GAAzB;QACE,OAAyB,QAAE,CAAC,OAAO,EAAE;YACnC,SAAS,EAAE,0BAA0B;YACrC,IAAI,EAAE,MAAM;YACZ,cAAc,EAAE,KAAK;YACrB,WAAW,EAAE,KAAK;YAClB,SAAS,EAAE,WAAC,CAAC,oBAAoB,EAAE,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC;YAC/D,YAAY,EAAE,MAAM;YACpB,gBAAgB,EAAE,MAAM;SACzB,CAAC,CAAC,EAAE,CAAC;IACR,CAAC;IAEO,8CAAiB,GAAzB;QACE,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;SAC9B;aAAM;YACL,IAAI,CAAC,2BAA2B,CAAC,8BAA8B,EAAE,CAAC;SACnE;IACH,CAAC;IAEO,8CAAiB,GAAzB;QACE,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YACjC,OAAO;SACR;QAED,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAC/C,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAC5D,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAC7D,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;QACjD,IAAI,CAAC,WAAW,CAAC,6CAA6C,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACrF,CAAC;IAEO,iDAAoB,GAA5B;QACE,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YACjC,OAAO;SACR;QAED,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,WAAW,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;QAC5C,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,uBAAuB,CAAC,CAAC;QACpD,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;QAClD,IAAI,CAAC,WAAW,CAAC,8CAA8C,EAAE,CAAC;IACpE,CAAC;IACH,yBAAC;AAAD,CAAC;AAnUY,gDAAkB;;;;;;;;;;ACb/B,0CAAyC;AACzC,mCAA6C;AAe7C;IAGE,wCAAoB,MAA6B;QAA7B,WAAM,GAAN,MAAM,CAAuB;IAAG,CAAC;IAE9C,2DAAkB,GAAzB,UAA0B,KAAU;QAClC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,mCAAmC,CAAC,CAAC;QAC1F,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,KAAK,CAAC,QAAQ,CAAC,mCAAmC,CAAC,CAAC;QACpD,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAEM,yDAAgB,GAAvB;QACE,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAEM,6DAAoB,GAA3B;QACE,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC7B,CAAC;IAEM,8DAAqB,GAA5B;QACE,IAAI,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,kBAAkB,CAAC;QAC1D,IAAI,CAAC,UAAU,EAAE;YACf,UAAU,GAAG,kBAAK,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;SACjD;QACD,IAAI,CAAC,kBAAkB,CAAC,QAAE,CAAc,UAAU,CAAC,CAAC,CAAC;QACrD,IAAI,CAAC,yCAAyC,EAAE,CAAC;IACnD,CAAC;IAEM,4DAAmB,GAA1B;QACE,IAAI,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,sBAAsB,CAAC;QAClE,IAAI,CAAC,cAAc,EAAE;YACnB,cAAc,GAAG,iBAAI,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;SACpD;QACD,IAAI,CAAC,kBAAkB,CAAC,QAAE,CAAc,cAAc,CAAC,CAAC,CAAC;QACzD,IAAI,CAAC,yCAAyC,EAAE,CAAC;IACnD,CAAC;IAEO,kFAAyC,GAAjD;QACE,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,mCAAmC,CAAC,CAAC;QACjE,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,CAAC;IACjE,CAAC;IAED,sBAAY,yDAAa;aAAzB;YACE,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;QACnC,CAAC;;;OAAA;IAEO,6DAAoB,GAA5B,UAA6B,MAAW;QACtC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,uBAAuB,EAAE,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;QAEnF,IAAM,wBAAwB,GAAG,QAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACxF,wBAAwB,IAAI,wBAAwB,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;QAE5F,MAAM,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC;IACH,qCAAC;AAAD,CAAC;AAxDY,wEAA8B;;;;;;;;;;ACd3C,+CAAqE;AAGrE,0CAAkC;AAElC;IAGE,uCACU,OAAY,EACZ,sBAA8C,EAC9C,aAAkC,EAClC,aAA4B;QAH5B,YAAO,GAAP,OAAO,CAAK;QACZ,2BAAsB,GAAtB,sBAAsB,CAAwB;QAC9C,kBAAa,GAAb,aAAa,CAAqB;QAClC,kBAAa,GAAb,aAAa,CAAe;QAN/B,aAAQ,GAAoB,EAAE,CAAC;IAOnC,CAAC;IAEG,qDAAa,GAApB;QACE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,oCAAoC,CAAC,CAAC;QAC/D,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAK;YACzB,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;IACrB,CAAC;IAEM,sDAAc,GAArB,UAAsB,MAA6B;QAAnD,iBAIC;QAHC,iBAAI,CAAC,MAAM,EAAE,eAAK;YAChB,KAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC;QACjD,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,sDAAc,GAArB,UAAsB,KAA0B;QAC9C,IAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACrD,OAAO,aAAa,CAAC;IACvB,CAAC;IAEO,mDAAW,GAAnB,UAAoB,KAA0B,EAAE,OAAgB;QAC9D,IAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAC3D,IAAM,uBAAuB,GAAG;YAC9B,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,KAAK,EAAE,KAAK,CAAC,eAAe;YAC5B,IAAI;SACL,CAAC;QACF,IAAM,aAAa,GAAG,IAAI,6BAAa,CACrC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAC3B,uBAAuB,EACvB,IAAI,CAAC,sBAAsB,EAC3B,IAAI,CAAC,aAAa,CACnB,CAAC;QACF,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC9B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAClC,OAAO,aAAa,CAAC;IACvB,CAAC;IACH,oCAAC;AAAD,CAAC;AA9CY,sEAA6B;;;;;;;;;;;;;;;;;;;;ACP1C,0CAA+B;AAC/B,yBAAgC;AAChC,0CAA2F;AAC3F,qDAAyE;AACzE,gDAA+D;AAC/D,uCAA0C;AAC1C,iDAAgE;AAChE,mCAAqC;AACrC,8CAAoE;AACpE,kDAAkE;AAClE,uCAA4C;AAC5C,yCAAgD;AAChD,qCAA0C;AAC1C,wDAAqG;AAErG,2CAA+D;AAY/D;;GAEG;AACH;IAAmC,iCAAS;IAgC1C,uBAAmB,KAAe,EAAS,KAAY;QAAvD,YACE,kBAAM,KAAK,EAAE,KAAK,CAAC,SAEpB;QAHkB,WAAK,GAAL,KAAK,CAAU;QAAS,WAAK,GAAL,KAAK,CAAO;QAjB/C,+BAAyB,GAAG,KAAK,CAAC;QAClC,qBAAe,GAAG,cAAM,YAAI,CAAC,KAAK,EAAE,EAAZ,CAAY,CAAC;QAErC,4CAAsC,GAA4B,EAAE,CAAC;QAgB3E,KAAI,CAAC,2BAA2B,EAAE,CAAC;;IACrC,CAAC;IAfD,sBAAY,qCAAU;aAAtB;YACE,OAAO,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,eAAe,CAAC,KAAK,KAAG,IAAM,CAAC;QAChG,CAAC;aAED,UAAuB,QAAiB;YACtC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,eAAe,EAAE,KAAG,QAAU,CAAC,CAAC;QACnE,CAAC;;;OAJA;IAMD,sBAAY,qDAA0B;aAAtC;YACE,OAAO,iBAAI,CAAC,QAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,iBAAO,IAAI,cAAO,CAAC,QAAQ,IAAI,CAAC,EAArB,CAAqB,CAAC,CAAC;QAC9F,CAAC;;;OAAA;IAOD;;;OAGG;IACI,6BAAK,GAAZ;QAAA,iBAuCC;QAtCC,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAE1B,IAAI,aAAK,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;YAC5C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC3C,IAAI,IAAI,CAAC,0BAA0B,EAAE,EAAE;gBACrC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;aACtD;SACF;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,wBAAwB,EAAE;YAC/C,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;YACrD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;SACxD;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE;YACrC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC3C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,gBAAgB,EAAE,CAAC;SAC5C;QAED,IAAM,YAAY,GAAG;YACnB,KAAI,CAAC,oBAAoB,CAAC,KAAI,CAAC,gBAAgB,CAAC,CAAC;YACjD,KAAI,CAAC,oBAAoB,CAAC,KAAI,CAAC,iBAAiB,CAAC,CAAC;YAClD,KAAI,CAAC,oBAAoB,CAAC,KAAI,CAAC,WAAW,CAAC,CAAC;YAC5C,KAAI,CAAC,oBAAoB,CAAC,KAAI,CAAC,WAAW,CAAC,CAAC;QAC9C,CAAC,CAAC;QAEF,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACjC,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAExB,IAAI,aAAK,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;YAC5C,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YACzD,iBAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,WAAC;gBAC3B,KAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;YAC/B,CAAC,CAAC,CAAC;YACH,YAAY,EAAE,CAAC;SAChB;aAAM;YACL,YAAY,EAAE,CAAC;SAChB;QACD,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED;;OAEG;IACI,sCAAc,GAArB;QACE,IAAI,IAAI,CAAC,sBAAsB,EAAE;YAC/B,2DAA2D;YAC3D,iDAAiD;YACjD,IAAM,KAAK,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,CAAC;YACjD,IAAM,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACzF,IAAM,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACzF,IAAM,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACzF,IACE,CAAC,aAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC;gBAC/B,aAAK,CAAC,YAAY,CAAC,oBAAoB,CAAC;gBACxC,aAAK,CAAC,YAAY,CAAC,oBAAoB,CAAC;gBACxC,CAAC,aAAK,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,EAC7C;gBACA,IAAM,KAAK,GAA2B,EAAE,CAAC;gBACzC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC;gBACpD,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC;gBACpD,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC;gBACpD,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;gBAC9C,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;aACjC;SACF;aAAM;YACL,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,oFAAoF,CAAC,CAAC;SAC9G;IACH,CAAC;IAED;;OAEG;IACI,iCAAS,GAAhB;QACE,IAAI,IAAI,CAAC,sBAAsB,EAAE;YAC/B,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC;gBAC/B,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC;gBACrE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC;gBACrE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,sBAAsB,CAAC;aACtE,CAAC,CAAC;SACJ;aAAM;YACL,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,oFAAoF,CAAC,CAAC;SAC9G;IACH,CAAC;IAED;;OAEG;IACI,6BAAK,GAAZ;QACE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,OAAO;SACR;QACD,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,QAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,EAAE,CAAC;IAClC,CAAC;IAED;;OAEG;IACI,4BAAI,GAAX;QAAA,iBA2BC;QA1BC,QAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACxD,IAAI,mBAAM,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAEpD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QAEvB,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,EAAE;YACxC,QAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC,QAAE,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC,CAAC;YACvF,QAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,QAAE,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC,CAAC;SACvF;QAED,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,wBAAwB,EAAE;YAC/C,QAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC,aAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;SACjG;QAED,iBAAI,CAAC,IAAI,CAAC,YAAY,EAAE,UAAC,QAA+B,EAAE,CAAC;YACzD,IAAI,KAAI,CAAC,UAAU,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;gBACvD,KAAI,CAAC,UAAU,CAAC,KAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;aAClD;iBAAM;gBACL,KAAI,CAAC,YAAY,CAAC,KAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;aACpD;QACH,CAAC,CAAC,CAAC;QAEH,IAAM,cAAc,GAAG,IAAI,CAAC,0BAA0B,CAAC;QACvD,IAAI,cAAc,EAAE;YAClB,cAAc,CAAC,KAAK,EAAE,CAAC;SACxB;IACH,CAAC;IAEM,mCAAW,GAAlB,UAAmB,QAAgB;QACjC,OAAO,iBAAI,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,kBAAQ;YAC9C,OAAO,QAAE,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,WAAW,EAAE,IAAI,QAAQ,CAAC,OAAO,CAAC,sBAAsB,EAAE,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC;QACjI,CAAC,CAAC,CAAC;IACL,CAAC;IAED,sBAAW,iCAAM;aAAjB;YACE,OAAO,IAAI,CAAC,cAAc,CAAC;QAC7B,CAAC;;;OAAA;IAEO,2CAAmB,GAA3B;QAAA,iBAeC;QAdC,IAAI,CAAC,cAAc,GAAG,QAAE,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,6BAA6B,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC;QAC1G,IAAI,CAAC,cAAc,CAAC,SAAS,GAAG,mBAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;QACpD,eAAM,CAAC,wBAAwB,CAAC,IAAI,CAAC,cAAc,EAAE,+BAA+B,CAAC,CAAC;QAEtF,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAEvD,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QAExB,IAAI,mCAAgB,EAAE;aACnB,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC;aAChC,SAAS,CAAC,WAAC,CAAC,UAAU,CAAC,CAAC;aACxB,eAAe,CAAC,WAAC,IAAI,YAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,EAAjC,CAAiC,CAAC;aACvD,uBAAuB,CAAC,WAAC,IAAI,YAAI,CAAC,yBAAyB,CAAC,CAAC,CAAC,EAAjC,CAAiC,CAAC;aAC/D,KAAK,EAAE,CAAC;IACb,CAAC;IAEO,oDAA4B,GAApC,UAAqC,EAAe;QAApD,iBAUC;QATC,IAAM,UAAU,GAAG,cAAM,QAAC,KAAI,CAAC,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC,cAAM,YAAI,CAAC,KAAK,EAAE,EAAZ,CAAY,EAAE,GAAG,CAAC,CAAC,EAAhE,CAAgE,CAAC;QAC1F,IAAM,UAAU,GAAG,cAAM,mBAAY,CAAC,KAAI,CAAC,YAAY,CAAC,EAA/B,CAA+B,CAAC;QAEzD,QAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;QACpC,QAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;QACpC,QAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CACP,OAAO,EACP,6BAAa,CAAC,cAAc,CAAC,wBAAQ,CAAC,MAAM,EAAE,cAAM,YAAI,CAAC,mBAAmB,EAAE,EAA1B,CAA0B,CAAC,CAChF,CAAC;IACJ,CAAC;IAEO,2CAAmB,GAA3B;QACE,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC;IAEO,0CAAkB,GAA1B;QAAA,iBASC;QARC,IAAI,CAAC,aAAa,GAAG,QAAE,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,4BAA4B,EAAE,CAAC,CAAC,EAAE,CAAC;QAC/E,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACtD,QAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,UAAU,EAAE,UAAC,CAAa;YAClD,IAAI,CAAC,CAAC,aAAa,IAAI,KAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAqB,CAAC,EAAE;gBAC3E,OAAO;aACR;YACD,KAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,wCAAgB,GAAxB;QACE,IAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,mCAAmC,CAAC,CAAC;QAC3E,IAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,uCAAuC,EAAE,mBAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACrG,IAAM,gBAAgB,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAE3C,IAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAChD,QAAE,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,yCAAyC,CAAC,CAAC;QAClE,QAAE,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,WAAC,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,CAAC;QACvC,gBAAgB,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAExC,IAAM,SAAS,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC/C,iBAAI,CAAC,SAAS,EAAE,WAAC;YACf,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QACH,WAAW,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;QACzC,WAAW,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;QAC1C,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC;IACxD,CAAC;IAEO,6CAAqB,GAA7B;QAAA,iBAmBC;QAlBC,IAAI,KAAK,GAAG,gBAAG,CAAC,IAAI,CAAC,YAAY,EAAE,qBAAW;YAC5C,IAAI,qBAAQ,CAAC,KAAI,CAAC,sCAAsC,EAAE,WAAW,CAAC,EAAE;gBACtE,OAAO,SAAS,CAAC;aAClB;iBAAM;gBACL,IAAM,IAAI,GAAG,KAAI,CAAC,SAAS,CAAC,WAAC,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;gBAC3E,QAAE,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,gBAAgB,EAAE,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,sBAAsB,EAAE,EAAE,CAAC,CAAC,CAAC;gBAE5G,IAAI,mCAAgB,EAAE;qBACnB,WAAW,CAAC,IAAI,CAAC;qBACjB,gBAAgB,CAAC,UAAC,CAAQ,IAAK,YAAI,CAAC,qBAAqB,CAAC,CAAC,EAAE,WAAW,CAAC,EAA1C,CAA0C,CAAC;qBAC1E,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC;qBAC5B,KAAK,EAAE,CAAC;gBAEX,OAAO,IAAI,CAAC;aACb;QACH,CAAC,CAAC,CAAC;QACH,KAAK,GAAG,oBAAO,CAAC,KAAK,CAAC,CAAC;QACvB,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,+CAAuB,GAA/B;QACE,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,QAAQ,EAAE;YACpC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;SAC7C;aAAM;YACL,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;YAChC,IAAI,IAAI,CAAC,yBAAyB,EAAE;gBAClC,IAAI,CAAC,yBAAyB,GAAG,KAAK,CAAC;gBACvC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;aAC3C;SACF;IACH,CAAC;IAEO,kDAA0B,GAAlC;QAAA,iBAQC;QAPC,IAAM,0CAA0C,GAAG,mBAAM,CAAC,IAAI,CAAC,YAAY,EAAE,UAAC,oBAA2C;YACvH,OAAO,oBAAoB,CAAC,eAAe,CAAC;QAC9C,CAAC,CAAC,CAAC;QACH,IAAM,WAAW,GAAG,mBAAM,CAAC,0CAA0C,EAAE,iCAAuB;YAC5F,OAAO,sBAAS,CAAC,KAAI,CAAC,YAAY,EAAE,EAAE,IAAI,EAAE,uBAAuB,CAAC,WAAW,EAAE,CAAC,IAAI,SAAS,CAAC;QAClG,CAAC,CAAC,CAAC;QACH,OAAO,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;IAChC,CAAC;IAEO,6CAAqB,GAA7B;QAAA,iBAsCC;QArCC,IAAM,yBAAyB,GAAG,IAAI,CAAC,iCAAiC,CAAC,WAAW,CAAC,CAAC;QACtF,IAAM,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC,sDAAsD,EAAE,mBAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACvH,IAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,uDAAuD,EAAE,mBAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QAC1H,IAAM,uBAAuB,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClD,IAAM,SAAS,GAAG,IAAI,CAAC,0BAA0B,CAAC,WAAW,CAAC,CAAC;QAE/D,uBAAuB,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAC/C,yBAAyB,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;QACrD,yBAAyB,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC;QAC/D,IAAI,mCAAgB,EAAE;aACnB,WAAW,CAAC,SAAS,CAAC;aACtB,mBAAmB,EAAE;aACrB,gBAAgB,CAAC,cAAM,YAAI,CAAC,oBAAoB,CAAC,SAAS,EAAE,WAAW,CAAC,EAAjD,CAAiD,CAAC;aACzE,KAAK,EAAE,CAAC;QACX,IAAI,CAAC,eAAe,CAAC,yBAAyB,CAAC,CAAC;QAEhD,IAAM,0BAA0B,GAAG,IAAI,CAAC,iCAAiC,CAAC,YAAY,CAAC,CAAC;QACxF,IAAM,wBAAwB,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACnD,IAAM,UAAU,GAAG,IAAI,CAAC,0BAA0B,CAAC,YAAY,CAAC,CAAC;QAEjE,wBAAwB,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QACjD,0BAA0B,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QACvD,0BAA0B,CAAC,WAAW,CAAC,wBAAwB,CAAC,CAAC;QACjE,IAAI,mCAAgB,EAAE;aACnB,WAAW,CAAC,UAAU,CAAC;aACvB,mBAAmB,EAAE;aACrB,gBAAgB,CAAC,cAAM,YAAI,CAAC,oBAAoB,CAAC,UAAU,EAAE,YAAY,CAAC,EAAnD,CAAmD,CAAC;aAC3E,KAAK,EAAE,CAAC;QACX,IAAI,CAAC,eAAe,CAAC,0BAA0B,CAAC,CAAC;QAEjD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE;YACpC,QAAE,CAAC,yBAAyB,CAAC,CAAC,QAAQ,CAAC,+BAA+B,CAAC,CAAC;YACxE,QAAE,CAAC,0BAA0B,CAAC,CAAC,QAAQ,CAAC,+BAA+B,CAAC,CAAC;SAC1E;aAAM;YACL,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAC9D;QACD,OAAO,CAAC,yBAAyB,EAAE,0BAA0B,CAAC,CAAC;IACjE,CAAC;IAEO,6CAAqB,GAA7B;QAAA,iBAyBC;QAxBC,IAAM,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,yCAAyC,CAAC,CAAC;QACtF,IAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,6CAA6C,EAAE,mBAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACxG,IAAM,cAAc,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAEzC,IAAI,CAAC,sBAAsB,GAAG,IAAI,qCAAiB,CAAc,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACzG,IAAI,CAAC,sBAAsB,GAAG,iCAAe,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAChF,IAAI,CAAC,sBAAsB,GAAG,iCAAe,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;QACvF,IAAI,CAAC,sBAAsB,GAAG,iCAAe,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAEtF,IAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACpD,QAAE,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,2BAA2B,CAAC,CAAC;QACxD,aAAa,CAAC,YAAY,CAAC,OAAO,EAAE,WAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC;QACzD,QAAE,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,WAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC;QAC5C,cAAc,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;QAE1C,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACnC,gBAAgB,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QAC7C,IAAI,mCAAgB,EAAE;aACnB,WAAW,CAAC,gBAAgB,CAAC;aAC7B,gBAAgB,CAAC,cAAM,YAAI,CAAC,oBAAoB,EAAE,EAA3B,CAA2B,CAAC;aACnD,mBAAmB,EAAE;aACrB,KAAK,EAAE,CAAC;QAEX,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAEO,8CAAsB,GAA9B;QAAA,iBAeC;QAdC,IAAM,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,0CAA0C,CAAC,CAAC;QACxF,IAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,8CAA8C,EAAE,mBAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;QACzG,IAAM,eAAe,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAC1C,IAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,WAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAC5D,eAAe,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QAC5C,iBAAiB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACpC,iBAAiB,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;QAC/C,IAAI,mCAAgB,EAAE;aACnB,WAAW,CAAC,iBAAiB,CAAC;aAC9B,gBAAgB,CAAC,cAAM,YAAI,CAAC,qBAAqB,EAAE,EAA5B,CAA4B,CAAC;aACpD,mBAAmB,EAAE;aACrB,KAAK,EAAE,CAAC;QAEX,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAEO,wCAAgB,GAAxB;QAAA,iBAmBC;QAlBC,IAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,mCAAmC,CAAC,CAAC;QAC3E,IAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,uCAAuC,EAAE,mBAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QACnG,IAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACpC,IAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,WAAC,CAAC,UAAU,CAAC,CAAC,CAAC;QAC/C,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAEhC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC9B,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QACnC,IAAI,mCAAgB,EAAE;aACnB,WAAW,CAAC,WAAW,CAAC;aACxB,gBAAgB,CAAC;YAChB,KAAI,CAAC,KAAK,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC;YACvC,KAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC,CAAC;aACD,SAAS,CAAC,WAAC,CAAC,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;aACvD,KAAK,EAAE,CAAC;QAEX,OAAO,WAAW,CAAC;IACrB,CAAC;IAEO,wCAAgB,GAAxB;QAAA,iBAoBC;QAnBC,IAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,mCAAmC,CAAC,CAAC;QAC3E,IAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,uCAAuC,EAAE,mBAAQ,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACjG,IAAM,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACpC,IAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,WAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC7C,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAEhC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC9B,WAAW,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;QAEnC,IAAI,mCAAgB,EAAE;aACnB,WAAW,CAAC,WAAW,CAAC;aACxB,gBAAgB,CAAC;YAChB,KAAI,CAAC,KAAK,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;YACrC,KAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC,CAAC;aACD,SAAS,CAAC,WAAC,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;aACrD,KAAK,EAAE,CAAC;QAEX,OAAO,WAAW,CAAC;IACrB,CAAC;IAEO,iCAAS,GAAjB,UAAkB,SAAkB,EAAE,OAAgB;QACpD,IAAI,SAAS,IAAI,OAAO,EAAE;YACxB,IAAM,IAAI,GAAG,QAAE,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,sBAAsB,EAAE,EAAE,OAAO,CAAC,CAAC;YACvE,eAAM,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,CAAC,CAAC;YACpD,OAAO,IAAI,CAAC,EAAE,CAAC;SAChB;aAAM;YACL,OAAO,QAAE,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,CAAC,EAAE,CAAC;SAClD;IACH,CAAC;IAEO,kDAA0B,GAAlC,UAAmC,SAAiB;QAClD,IAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,WAAC,CAAC,SAAS,CAAC,CAAC,CAAC;QAC1C,IAAI,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;QAC3C,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAAE,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;QAC7D,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,yDAAiC,GAAzC,UAA0C,SAAiB;QACzD,OAAO,IAAI,CAAC,YAAY,CAAC,yCAAyC,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC;IAChG,CAAC;IAEO,iCAAS,GAAjB,UAAkB,KAAa,EAAE,KAAa;QAAb,qCAAa;QAC5C,OAAO,QAAE,CACP,KAAK,EACL;YACE,SAAS,EAAE,2BAA2B;YACtC,KAAK,EAAE,KAAK;SACb,EACD,mBAAM,CAAC,KAAK,CAAC,CACd,CAAC,EAAE,CAAC;IACP,CAAC;IAEO,kCAAU,GAAlB;QACE,IAAM,IAAI,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC3C,QAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,4BAA4B,CAAC,CAAC;QAChD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,oCAAY,GAApB,UAAqB,SAAiB;QACpC,IAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC9C,QAAE,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,8BAA8B,EAAE,SAAS,CAAC,CAAC,CAAC;QAClE,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,iDAAyB,GAAjC,UAAkC,KAAY;QAC5C,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,IAAM,mBAAmB,GAAG,CAAC,aAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;QACvF,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IACnD,CAAC;IAEO,6CAAqB,GAA7B,UAA8B,CAAQ,EAAE,WAAkC;QACxE,IAAI,IAAI,CAAC,UAAU,IAAI,WAAW,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,IAAI,WAAW,CAAC,IAAI,EAAE;YACrF,IAAI,CAAC,UAAU,GAAG,WAAW,CAAC;YAC9B,IAAI,WAAW,CAAC,eAAe,IAAI,qBAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,EAAE;gBACzH,IAAI,CAAC,wBAAwB,EAAE,CAAC;aACjC;iBAAM;gBACL,IAAI,CAAC,uBAAuB,EAAE,CAAC;aAChC;YACD,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC/C,IAAI,CAAC,UAAU,CAAc,CAAC,CAAC,MAAM,CAAC,CAAC;YACvC,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAChC;IACH,CAAC;IAEO,4CAAoB,GAA5B,UAA6B,IAAiB,EAAE,SAAiB;QAAjE,iBAaC;QAZC,IAAI,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,KAAK,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE;YACpG,IAAI,CAAC,UAAU,GAAG,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;YAC5E,iBAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,WAAC;gBAC3B,KAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YAC1B,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACtB,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,QAAQ,IAAI,IAAI,CAAC,mBAAmB,IAAI,SAAS,EAAE;gBAC7E,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC;gBACrC,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;aACvC;YACD,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAChC;IACH,CAAC;IAEO,4CAAoB,GAA5B;QACE,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAEO,6CAAqB,GAA7B;QAAA,iBAWC;QAVC,IAAI,CAAC,sBAAsB,CAAC,MAAM,EAAE,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACnB,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;YACzB,YAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAsB,kDAAwB,CAAC,aAAa,EAAE;gBACpG,OAAO,EAAE,KAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;gBAC9B,UAAU,EAAE,KAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE;gBAC/C,UAAU,EAAE,KAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK;aACrC,CAAC;QAJF,CAIE,CACH,CAAC;IACJ,CAAC;IAEO,wCAAgB,GAAxB;QAAA,iBAEC;QADC,QAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,2CAAoB,CAAC,IAAI,EAAE,cAAM,YAAI,CAAC,UAAU,EAAE,EAAjB,CAAiB,CAAC,CAAC;IAC7E,CAAC;IAEO,iDAAyB,GAAjC;QAAA,iBAEC;QADC,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,cAAM,YAAI,CAAC,eAAe,EAAE,EAAtB,CAAsB,CAAC,CAAC;IACnE,CAAC;IAEM,+CAAuB,GAA9B,UAA+B,gBAAwC;QAAvE,iBAaC;QAb8B,sDAAmB,IAAI,CAAC,gBAAgB;QACrE,IAAI,KAAkB,CAAC;QACvB,iBAAI,CAAC,gBAAgB,EAAE,mBAAS;YAC9B,IAAI,CAAC,KAAK,EAAE;gBACV,KAAK,GAAG,iBAAI,CAAC,KAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,UAAC,SAAsB;oBAC5D,OAAO,KAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;gBACtF,CAAC,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,KAAK,EAAE;YACV,KAAK,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;SAC7B;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,gDAAwB,GAAhC;QAAA,iBAOC;QANC,iBAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,mBAAS;YACnC,QAAE,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,+BAA+B,CAAC,CAAC;YAC3D,QAAE,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;YACxF,KAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,uBAAuB,EAAE,CAAC,CAAC;IAClD,CAAC;IAEO,+CAAuB,GAA/B;QAAA,iBAMC;QALC,iBAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,mBAAS;YACnC,QAAE,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,+BAA+B,CAAC,CAAC;YACxD,QAAE,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC,YAAY,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;YACvF,KAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,gCAAQ,GAAhB,UAAiB,OAAoB;QACnC,OAAO,QAAE,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;IAC3D,CAAC;IAEO,uCAAe,GAAvB,UAAwB,OAAoB;QAA5C,iBAEC;QADC,iBAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,WAAC,IAAI,YAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAApB,CAAoB,CAAC,CAAC;IAC1D,CAAC;IAEO,kCAAU,GAAlB,UAAmB,IAAiB;QAClC,IAAI,IAAI,EAAE;YACR,QAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;YACpC,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;SAC3C;IACH,CAAC;IAEO,oCAAY,GAApB,UAAqB,IAAiB;QACpC,IAAI,IAAI,EAAE;YACR,QAAE,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;YACvC,IAAI,CAAC,YAAY,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;SAC5C;IACH,CAAC;IAEO,mDAA2B,GAAnC;QAAA,iBAWC;QAVC,iBAAI,CAAC,IAAI,CAAC,YAAY,EAAE,UAAC,WAAkC,EAAE,CAAS;YACpE,IAAI,WAAW,CAAC,WAAW,IAAI,IAAI,EAAE;gBACnC,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBACrD,IAAI,KAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,WAAW,CAAC,WAAW,EAAE;wBACxD,KAAI,CAAC,sCAAsC,CAAC,IAAI,CAAC,KAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;wBACvE,MAAM;qBACP;iBACF;aACF;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,4CAAoB,GAA5B,UAA6B,QAAqB;QAChD,IAAI,CAAC,aAAK,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE;YACtC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;SAC1C;IACH,CAAC;IAEO,kCAAU,GAAlB;QACE,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;IAC9D,CAAC;IACH,oBAAC;AAAD,CAAC,CAnlBkC,qBAAS,GAmlB3C;AAnlBY,sCAAa;;;;;;;;;;AC3B1B,uCAA0C;AAC1C,+CAAgD;AAChD,qCAA0C;AAC1C,+BAAgC;AAgBhC;IAmEE,mBAAY,KAAe,EAAS,KAAY;QAAhD,iBAkBC;QAlBmC,UAAK,GAAL,KAAK,CAAO;QAJzC,iBAAY,GAA4B,EAAE,CAAC;QAE3C,wBAAmB,GAAG,WAAW,CAAC;QAGvC,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,wBAAc;YAC1B,IAAI,eAAe,GAAG,6BAAa,CAAC,cAAc,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC,CAAC;YACjF,IAAI,eAAe,IAAI,SAAS,EAAE;gBAChC,KAAI,CAAC,YAAY,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;aACzC;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,kCAAkC,EAAE,CAAC;QAC1C,IAAI,aAAK,CAAC,eAAe,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;YAC5C,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,IAAI,SAAS,EAAE;gBAChD,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,IAAI,CAAwB,IAAI,CAAC,YAAY,EAAE,qBAAW;oBAC5E,OAAO,WAAW,CAAC,IAAI,IAAI,KAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC;gBAC7D,CAAC,CAAC,CAAC;aACJ;YACD,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;gBACpB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;aACxC;SACF;IACH,CAAC;IAEO,sDAAkC,GAA1C;QACE,IAAI,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC,KAAK,YAAY,KAAK,CAAC,UAAU,EAAE;YAC9D,IAAI,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC;YAC5B,IAAI,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;gBAChC,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;aACxB;SACF;IACH,CAAC;IA7Fa,wBAAc,GAA8C;QACxE,KAAK,EAAE;YACL,KAAK,EAAE,WAAC,CAAC,OAAO,CAAC;YACjB,eAAe,EAAE,KAAK;YACtB,WAAW,EAAE,WAAC,CAAC,kBAAkB,CAAC;YAClC,IAAI,EAAE,OAAO;SACd;QACD,WAAW,EAAE;YACX,KAAK,EAAE,WAAC,CAAC,aAAa,CAAC;YACvB,eAAe,EAAE,KAAK;YACtB,WAAW,EAAE,WAAC,CAAC,wBAAwB,CAAC;YACxC,IAAI,EAAE,aAAa;SACpB;QACD,cAAc,EAAE;YACd,KAAK,EAAE,WAAC,CAAC,OAAO,CAAC;YACjB,eAAe,EAAE,IAAI;YACrB,WAAW,EAAE,WAAC,CAAC,kBAAkB,CAAC;YAClC,IAAI,EAAE,gBAAgB;YACtB,WAAW,EAAE,iBAAiB;SAC/B;QACD,eAAe,EAAE;YACf,KAAK,EAAE,WAAC,CAAC,OAAO,CAAC;YACjB,eAAe,EAAE,IAAI;YACrB,WAAW,EAAE,WAAC,CAAC,kBAAkB,CAAC;YAClC,IAAI,EAAE,iBAAiB;YACvB,WAAW,EAAE,gBAAgB;SAC9B;QACD,sBAAsB,EAAE;YACtB,KAAK,EAAE,WAAC,CAAC,OAAO,CAAC;YACjB,eAAe,EAAE,IAAI;YACrB,WAAW,EAAE,WAAC,CAAC,kBAAkB,CAAC;YAClC,IAAI,EAAE,wBAAwB;YAC9B,WAAW,EAAE,yBAAyB;SACvC;QACD,uBAAuB,EAAE;YACvB,KAAK,EAAE,WAAC,CAAC,OAAO,CAAC;YACjB,eAAe,EAAE,IAAI;YACrB,WAAW,EAAE,WAAC,CAAC,kBAAkB,CAAC;YAClC,IAAI,EAAE,yBAAyB;YAC/B,WAAW,EAAE,wBAAwB;SACtC;QACD,SAAS,EAAE;YACT,KAAK,EAAE,WAAC,CAAC,mBAAmB,CAAC;YAC7B,eAAe,EAAE,KAAK;YACtB,WAAW,EAAE,WAAC,CAAC,8BAA8B,CAAC;YAC9C,IAAI,EAAE,WAAW;SAClB;QACD,MAAM,EAAE;YACN,KAAK,EAAE,WAAC,CAAC,QAAQ,CAAC;YAClB,eAAe,EAAE,KAAK;YACtB,WAAW,EAAE,WAAC,CAAC,mBAAmB,CAAC;YACnC,IAAI,EAAE,QAAQ;SACf;QACD,MAAM,EAAE;YACN,KAAK,EAAE,WAAC,CAAC,QAAQ,CAAC;YAClB,eAAe,EAAE,IAAI;YACrB,WAAW,EAAE,WAAC,CAAC,mBAAmB,CAAC;YACnC,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,QAAQ;SACtB;KACF,CAAC;IAkCJ,gBAAC;CAAA;AA/FY,8BAAS;;;;;;;;;;AClBtB,mCAAqC;AACrC,uCAA0C;AAC1C,wDAAkI;AAClI,yBAA8B;AAC9B,yCAAgD;AAChD,uCAA4C;AAC5C,iDAAgE;AAgBhE;IAWE,qBAAmB,OAA4B;QAA5B,YAAO,GAAP,OAAO,CAAqB;QAC7C,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC7C,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;IAClD,CAAC;IAEM,2BAAK,GAAZ;QACE,IAAI,YAAY,GAAG,QAAE,CAAC,KAAK,EAAE;YAC3B,SAAS,EAAE,kCAAkC;SAC9C,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,SAAS,EAAE;YAClC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YACpC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SACvC;QACD,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QACvC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC7C,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACtC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QAE1C,IAAI,eAAe,GAAG,QAAE,CAAC,KAAK,EAAE;YAC9B,SAAS,EAAE,qCAAqC;SACjD,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACxC,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAE3C,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;YACtB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAClD,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;YAC7C,QAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,sBAAsB,CAAC,CAAC;SACpF;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;YAC9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC5G,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;SAC/C;aAAM,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;YACjC,IAAI,CAAC,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;SACzF;QACD,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;QAE7C,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAEM,iCAAW,GAAlB;QACE,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;YACtB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;YACzC,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC7B,IAAI,CAAC,6BAA6B,EAAE,CAAC;SACtC;IACH,CAAC;IAEM,gCAAU,GAAjB;QACE,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;YACtB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC;YAC1C,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC7B,IAAI,CAAC,6BAA6B,EAAE,CAAC;SACtC;IACH,CAAC;IAEM,mCAAa,GAApB;QACE,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,aAAa,EAAE;YAC9C,QAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,CAAC;YAChC,QAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,CAAC;SAC/B;QACD,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;IAClE,CAAC;IAEM,iCAAW,GAAlB;QACE,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,aAAa,EAAE;YAC9C,QAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,CAAC;YAC9B,QAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,CAAC;SACjC;QACD,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC;IACrE,CAAC;IAEM,mDAA6B,GAApC;QACE,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,sBAAsB,EAAE;YAC3E,IAAI,UAAU,GAAG,EAAE,CAAC;YACpB,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE;gBAC5G,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;aAC/D;YACD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,UAAU,CAAC,CAAC;SAC5F;IACH,CAAC;IAEO,2CAAqB,GAA7B;QACE,IAAM,UAAU,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC9C,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,QAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;SAClD;QACD,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC;IACpC,CAAC;IAEO,+BAAS,GAAjB;QACE,IAAI,eAAe,CAAC;QACpB,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;YACrB,eAAe,GAAG,oBAAoB,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;SAC5D;aAAM;YACL,eAAe,GAAG,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;SAChE;QACD,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACjD,QAAE,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAEO,wCAAkB,GAA1B;QACE,IAAI,CAAC,WAAW,GAAG,QAAE,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,mCAAmC,EAAE,EAAE,mBAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;QAC5G,eAAM,CAAC,wBAAwB,CAAC,IAAI,CAAC,WAAW,EAAE,uCAAuC,CAAC,CAAC;QAC3F,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;QAC7C,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAEO,yCAAmB,GAA3B;QAAA,iBAiBC;QAhBC,IAAM,KAAK,GAAG,WAAC,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,WAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QACpF,IAAM,IAAI,GAAG,QAAE,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,QAAQ,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,mBAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5H,eAAM,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,EAAE,kBAAkB,CAAC,CAAC;QAC7D,IAAM,MAAM,GAAG,QAAE,CAAC,KAAK,EAAE;YACvB,SAAS,EAAE,6BAA6B;YACxC,KAAK,EAAE,KAAK;SACb,CAAC,CAAC;QACH,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEvB,IAAI,mCAAgB,EAAE;aACnB,WAAW,CAAC,MAAM,CAAC;aACnB,SAAS,CAAC,KAAK,CAAC;aAChB,gBAAgB,CAAC,cAAM,YAAI,CAAC,mBAAmB,EAAE,EAA1B,CAA0B,CAAC;aAClD,KAAK,EAAE,CAAC;QAEX,OAAO,MAAM,CAAC,EAAE,CAAC;IACnB,CAAC;IAEO,yCAAmB,GAA3B;QAAA,iBAmBC;QAlBC,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE;YACrC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;SACjC;aAAM;YACL,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;SAClC;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE;YACtD,IAAM,aAAW,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;YACrE,IAAM,gBAAc,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;YACxE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC;gBACjC,YAAI,CAAC,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAA8B,kDAAwB,CAAC,WAAW,EAAE;oBAClH,OAAO,EAAE,KAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;oBACtC,UAAU,EAAE,KAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE;oBACzC,mBAAmB,EAAE,gBAAc;oBACnC,kBAAkB,EAAE,aAAW;oBAC/B,UAAU,EAAE,KAAI,CAAC,OAAO,CAAC,KAAK;iBAC/B,CAAC;YANF,CAME,CACH,CAAC;SACH;IACH,CAAC;IAEO,gCAAU,GAAlB;QACE,IAAM,KAAK,GAAG,QAAE,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,0BAA0B,EAAE,CAAC,CAAC;QACnE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC/B,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACtC,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;QACtC,KAAK,CAAC,YAAY,CAAC,YAAY,EAAK,WAAC,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAG,CAAC,CAAC;QAC5E,OAAO,KAAK,CAAC,EAAE,CAAC;IAClB,CAAC;IAEM,iCAAW,GAAlB;QAAA,iBAaC;QAZC,IAAM,MAAM,GAAG,QAAE,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,2BAA2B,EAAE,EAAE,mBAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAE/F,eAAM,CAAC,wBAAwB,CAAC,MAAM,CAAC,EAAE,EAAE,+BAA+B,CAAC,CAAC;QAE5E,IAAI,mCAAgB,EAAE;aACnB,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;aACtB,SAAS,CAAC,WAAC,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;aACzC,eAAe,CAAC,cAAM,YAAI,CAAC,aAAa,EAAE,EAApB,CAAoB,CAAC;aAC3C,uBAAuB,CAAC,cAAM,YAAI,CAAC,aAAa,EAAE,EAApB,CAAoB,CAAC;aACnD,KAAK,EAAE,CAAC;QAEX,OAAO,MAAM,CAAC,EAAE,CAAC;IACnB,CAAC;IAEO,mCAAa,GAArB;QACE,IAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;QAC3D,GAAG,CAAC,KAAK,EAAE,CAAC;QACZ,GAAG,CAAC,cAAc,CAAC,cAAc,CAAsB,kDAAwB,CAAC,aAAa,EAAE;YAC7F,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE;YACvB,UAAU,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE;YACxC,UAAU,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK;SAC9B,CAAC,CAAC;QACH,GAAG,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;IACrC,CAAC;IACH,kBAAC;AAAD,CAAC;AApMY,kCAAW;;;;;;;;;AC1BxB,iCAAiC;;AAEjC,yBAAkC;AAClC,0CAA4C;AAC5C,sCAA2C;AAC3C,iDAAgE;AAChE,mCAA0C;AAC1C,yCAAgD;AAChD,wDAAqG;AAGrG,uCAA0C;AAO1C;IACE,gCAAmB,KAAY,EAAS,UAAsB;QAA3C,UAAK,GAAL,KAAK,CAAO;QAAS,eAAU,GAAV,UAAU,CAAY;IAAG,CAAC;IAE3D,sCAAK,GAAZ;QACE,eAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEzB,6BAAmE,EAAjE,wBAAS,EAAE,oBAAO,EAAE,gBAAK,EAAE,gCAAa,CAA0B;QAE1E,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC7B,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC3B,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAEnC,OAAO,aAAa,CAAC;IACvB,CAAC;IAEM,qDAAoB,GAA3B;QACE,IAAM,YAAY,GAAG;YACnB,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC;YAC3C,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE;YACnC,IAAI,CAAC,UAAU,CAAC,yBAAyB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC;SAClF,CAAC;QACF,OAAO,oBAAO,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzC,CAAC;IAEO,8CAAa,GAArB;QACE,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,cAAc,EAAE;YAChC,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE;YACxB,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE;YAC5B,aAAa,EAAE,IAAI,CAAC,kBAAkB,EAAE;SACzC,CAAC;IACJ,CAAC;IAEO,+CAAc,GAAtB;QAAA,iBAkBC;QAjBC,IAAM,SAAS,GAAG,QAAE,CAAC,KAAK,EAAE;YAC1B,SAAS,EAAE,8BAA8B;SAC1C,CAAC,CAAC;QAEH,SAAS,CAAC,WAAW,CAAC,gBAAgB,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAClE,SAAS,CAAC,WAAW,CAAC,gBAAgB,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAElE,IAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,gBAAgB,CAAC;QAC9E,IAAM,KAAK,GAAG,WAAC,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAE1E,IAAI,mCAAgB,EAAE;aACnB,WAAW,CAAC,SAAS,CAAC;aACtB,SAAS,CAAC,KAAK,CAAC;aAChB,gBAAgB,CAAC,cAAM,YAAI,CAAC,YAAY,EAAE,EAAnB,CAAmB,CAAC;aAC3C,KAAK,EAAE,CAAC;QAEX,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,mDAAkB,GAA1B;QACE,OAAO,QAAE,CAAC,IAAI,EAAE;YACd,SAAS,EAAE,wCAAwC;SACpD,CAAC,CAAC;IACL,CAAC;IAEO,2CAAU,GAAlB;QACE,IAAM,KAAK,GAAG,QAAE,CACd,MAAM,EACN;YACE,SAAS,EAAE,8BAA8B;SAC1C,EACD,mBAAQ,CAAC,KAAK,CAAC,SAAS,CACzB,CAAC;QAEF,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,6CAAY,GAApB;QACE,IAAM,OAAO,GAAG,QAAE,CAAC,MAAM,EAAE;YACzB,SAAS,EAAE,gCAAgC;SAC5C,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAC1D,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,6CAAY,GAApB;QAAA,iBAgBC;QAfC,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE;YAC5B,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;SAClD;aAAM;YACL,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;SACjD;QACD,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC;YACzB,YAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAsB,kDAAwB,CAAC,eAAe,EAAE;gBACtG,OAAO,EAAE,KAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;gBAC9B,UAAU,EAAE,KAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE;gBAC/C,UAAU,EAAE,KAAI,CAAC,UAAU,CAAC,KAAK;gBACjC,UAAU,EAAE,KAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK;aACrC,CAAC;QALF,CAKE,CACH,CAAC;QAEF,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAEO,iDAAgB,GAAxB;QACE,IAAM,UAAU,GAAG,kBAAK,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,aAAa,CAAY,YAAY,CAAC,CAAC,CAAC;QAC5F,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACjD,CAAC;IACH,6BAAC;AAAD,CAAC;AArGY,wDAAsB;;;;;;;;;;AClBnC,wCAAuC;AACvC,0CAAiD;AACjD,sCAA2C;AAC3C,uCAA0C;AAC1C,mCAAqC;AAIrC,iDAAgE;AAChE,mDAA+D;AAM/D;IAME,6BACS,KAAY,EACZ,WAAyB,EACzB,2BAAyD,EAC/C,OAAqC;QAH/C,UAAK,GAAL,KAAK,CAAO;QACZ,gBAAW,GAAX,WAAW,CAAc;QACzB,gCAA2B,GAA3B,2BAA2B,CAA8B;QAC/C,YAAO,GAAP,OAAO,CAA8B;QAEtD,IAAI,CAAC,uBAAuB,EAAE,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,QAAE,CAAC,KAAK,EAAE;YACpB,SAAS,EAAE,wBAAwB;SACpC,CAAC,CAAC,EAAE,CAAC;QAEN,IAAM,KAAK,GAAG,QAAE,CAAC,kCAAa,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;QACnF,KAAK,CAAC,QAAQ,CAAC,8BAA8B,CAAC,CAAC;QAC/C,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,GAAG,GAAG,CAAC,CAAC;QAC3C,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAEhC,IAAI,CAAC,cAAc,GAAG,QAAE,CAAC,IAAI,EAAE;YAC7B,SAAS,EAAE,+BAA+B;SAC3C,CAAC,CAAC,EAAE,CAAC;QAEN,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC7C,CAAC;IAEM,mCAAK,GAAZ;QACE,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE;YAC9B,IAAI,CAAC,cAAc,EAAE,CAAC;SACvB;QACD,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAEM,2CAAa,GAApB;QACE,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,OAAO,CACF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,OAAI;gBAC/B,QAAE,CAAC,IAAI,CAAC,IAAI,CAAC;qBACV,OAAO,CAAC,+BAA+B,CAAC;qBACxC,GAAG,CAAC,UAAC,KAAkB;oBACtB,OAAO,QAAE,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC1B,CAAC,CAAC;qBACD,IAAI,CAAC,IAAI,CAAC,CACd,CAAC;SACH;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAEO,2CAAa,GAArB;QAAA,iBAKC;QAJC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAC,KAAiB;YACtC,IAAM,iBAAiB,GAAG,IAAI,KAAI,CAAC,2BAA2B,CAAC,KAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;YAC1F,KAAI,CAAC,cAAc,CAAC,WAAW,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,4CAAc,GAAtB;QAAA,iBA0CC;QAzCC,IAAM,gBAAgB,GAAG,mBAAM,CAAC,IAAI,CAAC,SAAS,EAAE,UAAC,KAAiB,IAAK,YAAK,CAAC,QAAQ,EAAd,CAAc,CAAC,CAAC,MAAM,CAAC;QAC9F,IAAM,gBAAgB,GAAG,mBAAM,CAAC,IAAI,CAAC,SAAS,EAAE,UAAC,KAAiB,IAAK,YAAK,CAAC,QAAQ,EAAd,CAAc,CAAC,CAAC,MAAM,CAAC;QAC9F,eAAM,CAAC,KAAK,CAAC,gBAAgB,GAAG,gBAAgB,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QAE3E,IAAM,YAAY,GAAG,QAAE,CACrB,KAAK,EACL;YACE,SAAS,EAAE,8BAA8B;SAC1C,EACD,QAAE,CACA,MAAM,EACN;YACE,SAAS,EAAE,oCAAoC;SAChD,EACD,WAAC,CAAC,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC,gBAAgB,GAAG,gBAAgB,EAAE,IAAI,CAAC,CAAC,CACxE,CACF,CAAC;QAEF,IAAM,cAAc,GAAG,QAAE,CACvB,IAAI,EACJ;YACE,SAAS,EAAE,wCAAwC;SACpD,EACD,YAAY,CACb,CAAC;QAEF,IAAM,oBAAoB,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAC,KAAiB,IAAK,WAAI,KAAI,CAAC,2BAA2B,CAAC,KAAI,CAAC,KAAK,EAAE,KAAK,CAAC,EAAvD,CAAuD,CAAC,CAAC;QAChI,IAAM,OAAO,GAAG,oBAAoB,CAAC,GAAG,CAAC,iBAAO,IAAI,cAAO,CAAC,oBAAoB,EAAE,EAA9B,CAA8B,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAE/F,IAAI,mCAAgB,EAAE;aACnB,WAAW,CAAC,YAAY,CAAC;aACzB,SAAS,CAAC,OAAO,CAAC;aAClB,gBAAgB,CAAC;YAChB,YAAY,CAAC,MAAM,EAAE,CAAC;YACtB,oBAAoB,CAAC,OAAO,CAAC,oBAAU;gBACrC,KAAI,CAAC,cAAc,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;YACzD,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;aACD,KAAK,EAAE,CAAC;QAEX,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;IACrD,CAAC;IAEO,qDAAuB,GAA/B;QACE,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,0BAA0B,EAAE;YAC3E,IAAI,CAAC,SAAS,GAAG,iBAAI,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;YACvF,IAAI,CAAC,QAAQ,GAAG,kBAAK,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;SACxF;aAAM;YACL,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;YACpB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC;SAClC;IACH,CAAC;IACH,0BAAC;AAAD,CAAC;AAjHY,kDAAmB;;;;;;;;;ACfhC,iCAAiC;;AAGjC,sCAAgC;AAChC,mCAAqC;AACrC,qCAA0C;AAC1C,qDAAyE;AACzE,uDAAgE;AAChE,wDAAqG;AAErG,uCAA0C;AAC1C,sCAA2C;AAC3C,4CAA0C;AAC1C,4CAAsD;AAEtD,mDAAwD;AACxD,oDAAqD;AACrD,gDAAqE;AACrE,2DAA8F;AAC9F,kDAAsD;AACtD,yBAA8B;AAC9B,0CAAwD;AACxD,oDAA0D;AAG1D;;GAEG;AACH;IAWE,qBAAmB,KAAY,EAAS,0BAAuD,EAAU,IAAiB;QAA1H,iBAiBC;QAjBkB,UAAK,GAAL,KAAK,CAAO;QAAS,+BAA0B,GAA1B,0BAA0B,CAA6B;QAAU,SAAI,GAAJ,IAAI,CAAa;QAPnH,sBAAiB,GAAG,IAAI,CAAC;QAKxB,uBAAkB,GAAG,IAAI,CAAC;QAGhC,IAAI,CAAC,kBAAkB,GAAG,IAAI,uCAAkB,CAAC,IAAI,CAAC,CAAC;QACvD,IAAI,CAAC,QAAQ,GAAG,qBAAQ,CAAC;YACvB,uGAAuG;YACvG,gGAAgG;YAChG,IAAI,KAAI,CAAC,KAAK,YAAY,aAAK,IAAI,KAAI,CAAC,KAAK,CAAC,eAAe,YAAY,iCAAe,EAAE;gBACxF,IAAI,KAAI,CAAC,2BAA2B,EAAE,EAAE;oBACtC,KAAI,CAAC,qBAAqB,EAAE,CAAC;iBAC9B;aACF;QACH,CAAC,EAAE,GAAG,CAAC,CAAC;QACR,IAAI,CAAC,eAAe,GAAG,UAAC,CAAQ;YAC9B,KAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC,CAAC;QACF,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjD,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,UAAC,CAAQ,IAAK,YAAI,CAAC,eAAe,CAAC,CAAC,CAAC,EAAvB,CAAuB,CAAC,CAAC;QAC1E,QAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,2CAAoB,CAAC,IAAI,EAAE,cAAM,YAAI,CAAC,UAAU,EAAE,EAAjB,CAAiB,CAAC,CAAC;IACxE,CAAC;IAED,sBAAW,kCAAS;aAApB;YACE,OAAO,aAAK,CAAC,EAAE,CAAC;QAClB,CAAC;;;OAAA;IAED,sBAAW,mCAAU;aAArB;YACE,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QACzE,CAAC;;;OAAA;IAED;;;OAGG;IACI,2BAAK,GAAZ;QACE,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC;IAChC,CAAC;IAED;;OAEG;IACI,2CAAqB,GAA5B;QACE,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,EAAE,CAAC;IAClD,CAAC;IAEM,qCAAe,GAAtB;QACE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,0BAA0B,EAAE,CAAC,CAAC;IAChE,CAAC;IAED;;OAEG;IACI,0CAAoB,GAA3B;QACE,IAAI,CAAC,+BAA+B,EAAE,CAAC;QACvC,IAAI,CAAC,KAAK,CAAC,8BAA8B,EAAE,CAAC;QAC5C,QAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,CAAC;QAC/B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,QAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,+BAA+B,CAAC,CAAC;QAC7D,QAAE,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC;QAC5D,IAAI,CAAC,kBAAkB,CAAC,wBAAwB,EAAE,CAAC;QACnD,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;QACtB,QAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;QACtB,IAAI,CAAC,yBAAyB,GAAG,SAAS,CAAC;IAC7C,CAAC;IAED;;;OAGG;IACI,2CAAqB,GAA5B,UAA6B,MAA6B;QAA1D,iBAoCC;QAnCC,IAAI,CAAC,+BAA+B,EAAE,CAAC;QACvC,IAAI,CAAC,kBAAkB,CAAC,+BAA+B,EAAE,CAAC;QAE1D,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;QAEtD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAEzE,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAC3B,IAAI,CAAC,kBAAkB;iBACpB,IAAI,CAAC,UAAC,WAA+B;gBACpC,KAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CACtC,kDAAwB,CAAC,WAAW,EACpC;oBACE,OAAO,EAAE,KAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;oBAC9B,UAAU,EAAE,KAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE;oBAC/C,UAAU,EAAE,KAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK;iBACrC,EACD,KAAI,CAAC,KAAK,CAAC,IAAI,CAChB,CAAC;gBACF,KAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE,WAAW,CAAC,CAAC;gBAC9D,KAAI,CAAC,4BAA4B,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;gBACvD,KAAI,CAAC,kBAAkB,CAAC,+BAA+B,EAAE,CAAC;gBAC1D,KAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;YACtC,CAAC,CAAC;iBACD,KAAK,CAAC,UAAC,KAAqB;gBAC3B,0EAA0E;gBAC1E,iEAAiE;gBACjE,IAAI,aAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;oBACvB,KAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,qCAAqC,EAAE,KAAK,CAAC,CAAC;oBACtE,KAAI,CAAC,kBAAkB,CAAC,+BAA+B,EAAE,CAAC;iBAC3D;gBACD,KAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;gBACpC,OAAO,IAAI,CAAC;YACd,CAAC,CAAC,CAAC;SACN;IACH,CAAC;IAED;;OAEG;IACI,2BAAK,GAAZ;QACE,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;IAClC,CAAC;IAED,sBAAW,sCAAa;aAAxB;YACE,OAAO,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC;QAC/C,CAAC;;;OAAA;IAED,sBAAW,6CAAoB;aAA/B;YACE,OAAO,IAAI,CAAC,kBAAkB,CAAC,oBAAoB,CAAC;QACtD,CAAC;;;OAAA;IAED,sBAAW,+BAAM;aAAjB;YACE,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC;QACxC,CAAC;;;OAAA;IAEM,mEAA6C,GAApD,UAAqD,oBAAiC;QACpF,IAAI,CAAC,KAAK,CAAC,6CAA6C,CAAC,oBAAoB,CAAC,CAAC;IACjF,CAAC;IAEM,oEAA8C,GAArD;QACE,IAAI,CAAC,KAAK,CAAC,8CAA8C,EAAE,CAAC;IAC9D,CAAC;IAEM,iDAA2B,GAAlC;QACE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,IAAI,CAAC,wCAAwC,EAAE,CAAC;QAChD,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE;YACxB,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;YAChC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,0BAA0B,EAAE,CAAC,CAAC;SAC1D;aAAM,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;YACnC,4FAA4F;YAC5F,IAAI,CAAC,yBAAyB,GAAG,SAAS,CAAC;YAC3C,QAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,CAAC;YAC/B,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;YAC/B,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,0BAA0B,EAAE,CAAC,CAAC;SAC1D;IACH,CAAC;IAEM,oDAA8B,GAArC,UAAsC,KAAoB;QACxD,IAAI,KAAK,CAAC,QAAQ,EAAE;YAClB,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,0BAA0B,EAAE,CAAC,CAAC;SAC/D;aAAM;YACL,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,OAAO,IAAI,MAAM,EAAE;gBAC9C,IAAI,CAAC,kCAAkC,EAAE,CAAC;gBAC1C,IAAI,CAAC,oBAAoB,EAAE,CAAC;aAC7B;iBAAM,IAAI,QAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,gCAAgC,CAAC,EAAE;gBAC/D,IAAI,CAAC,6BAA6B,EAAE,CAAC;aACtC;SACF;IACH,CAAC;IAEM,qDAA+B,GAAtC,UAAuC,KAAoB;QACzD,IAAI,KAAK,CAAC,QAAQ,EAAE;YAClB,IAAI,CAAC,yCAAyC,EAAE,CAAC;YACjD,IAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;SACvB;IACH,CAAC;IAEM,sCAAgB,GAAvB,UAAwB,MAAsF;QAA9G,iBAKC;QALuB,kCAAgC,IAAI,CAAC,+CAA+C,EAAE;QAC5G,IAAI,CAAC,+BAA+B,EAAE,CAAC;QACvC,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,UAAU,CAAC;YAC1C,KAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;QACrC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC1C,CAAC;IAEM,iCAAW,GAAlB;QACE,OAAO,QAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC;IACtE,CAAC;IAEM,mDAA6B,GAApC;QACE,OAAO,IAAI,CAAC,kBAAkB,CAAC,6BAA6B,EAAE,CAAC;IACjE,CAAC;IAEM,oCAAc,GAArB,UAAsB,IAAY;QAChC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACvD,CAAC;IAED,sBAAY,8BAAK;aAAjB;YACE,OAAO,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;QACvC,CAAC;;;OAAA;IAED,sBAAY,8BAAK;aAAjB;YACE,OAAO,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;QACvC,CAAC;;;OAAA;IAEO,iDAA2B,GAAnC;QACE,OAAO,CAAC,qDAAyB,CAAC,qBAAqB,CAAC,QAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,QAAE,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;IACrI,CAAC;IAEO,qCAAe,GAAvB;QAAA,iBAIC;QAHC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,cAAM,YAAI,CAAC,sBAAsB,EAAE,EAA7B,CAA6B,CAAC,CAAC;QACnE,QAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,cAAM,YAAI,CAAC,sBAAsB,EAAE,EAA7B,CAA6B,CAAC,CAAC;QACnF,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAEO,gCAAU,GAAlB;QACE,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACpD,QAAQ,CAAC,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;IAC9D,CAAC;IAEO,0CAAoB,GAA5B,UAA6B,KAAY;QACvC,IAAI,IAAI,CAAC,yBAAyB,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,aAAa,IAAI,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE;YACrI,IAAI,CAAC,oBAAoB,EAAE,CAAC;SAC7B;IACH,CAAC;IAEO,4CAAsB,GAA9B;QACE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;QACtB,QAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;QACtB,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC9B,CAAC;IAEO,4CAAsB,GAA9B;QACE,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE;YACxB,QAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;SACvB;aAAM;YACL,QAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;YACtB,QAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,+BAA+B,CAAC,CAAC;SAC9D;IACH,CAAC;IACO,qDAA+B,GAAvC;QACE,IAAI,aAAK,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE;YACzC,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;YACtC,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;SACrC;QACD,IAAI,aAAK,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE;YACzC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,KAAK,CAAC,cAAO,CAAC,CAAC,CAAC;YACxD,IAAI,CAAC,kBAAkB,GAAG,SAAS,CAAC;SACrC;QAED,IAAI,CAAC,kBAAkB,CAAC,+BAA+B,EAAE,CAAC;IAC5D,CAAC;IAEO,kCAAY,GAApB;QACE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;IACvC,CAAC;IAEO,kDAA4B,GAApC,UAAqC,WAA+B,EAAE,qBAA4C;QAChH,eAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC3B,WAAW,GAAG,IAAI,mCAAgB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;QAChG,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;YAC1B,QAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,+BAA+B,CAAC,CAAC;YAC7D,IAAI,CAAC,KAAK,CAAC,4BAA4B,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;YAC7E,IAAI,CAAC,oBAAoB,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAAC;YAC9D,IAAI,CAAC,qBAAqB,CAAC,SAAS,EAAE;gBACpC,IAAI,CAAC,wBAAwB,EAAE,CAAC;aACjC;YACD,IAAI,CAAC,wCAAwC,EAAE,CAAC;YAChD,IAAI,CAAC,kCAAkC,EAAE,CAAC;YAC1C,IAAI,CAAC,kBAAkB,CAAC,yBAAyB,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,yBAAyB,CAAC,MAAM,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;SACpI;aAAM;YACL,IAAI,qBAAqB,CAAC,SAAS,EAAE;gBACnC,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;aAChC;iBAAM;gBACL,QAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,+BAA+B,CAAC,CAAC;gBAC1D,IAAI,CAAC,wBAAwB,EAAE,CAAC;gBAChC,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,EAAE,CAAC;aACjD;SACF;IACH,CAAC;IAEO,0CAAoB,GAA5B,UAA6B,WAA+B,EAAE,qBAA4C;QAA1G,iBA8BC;QA7BC,eAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAC3B,IAAI,CAAC,qBAAqB,CAAC,SAAS,EAAE;YACpC,QAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,KAAK,EAAE,CAAC;SAChC;QAED,IAAM,mBAAmB,GAAG,aAAK,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,aAAa,CAAC,CAAC;QAExF,IAAI,mBAAmB,EAAE;YACvB,IAAI,CAAC,4BAA4B,EAAE,CAAC;SACrC;QAED,IAAI,WAAW,GAAG,gBAAG,CAAC,WAAW,EAAE,oBAAU;YAC3C,OAAO,uBAAU,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QACH,iBAAI,CAAC,IAAI,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,KAAK,EAAE,qCAAiB,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,UAAC,WAAwB;YACnH,KAAI,CAAC,kBAAkB,CAAC,qBAAqB,CAAC,WAAW,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,yBAAyB,EAAE;YAClC,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,kBAAK,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;SACrG;aAAM;YACL,IAAI,CAAC,yBAAyB,GAAG,kBAAK,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;SAC9D;QAED,iBAAI,CAAC,QAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,OAAO,CAAC,yBAAyB,CAAC,EAAE,UAAC,IAAiB,EAAE,KAAa;YAC/F,QAAE,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,wBAAsB,KAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,oBAAe,KAAO,CAAC,CAAC;YAC/F,QAAE,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YACxC,QAAE,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC;YAChD,QAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,+BAA+B,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,kDAA4B,GAApC;QAAA,iBAMC;QALC,IAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAC/C,QAAE,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,wBAAwB,EAAE,+BAA+B,EAAE,+BAA+B,CAAC,CAAC,CAAC;QACrH,QAAE,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,WAAC,CAAC,WAAW,CAAC,CAAC,CAAC;QACnC,QAAE,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,cAAM,YAAI,CAAC,6BAA6B,EAAE,EAApC,CAAoC,CAAC,CAAC;QACtE,IAAI,CAAC,kBAAkB,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC;IAC3D,CAAC;IAEO,gDAA0B,GAAlC;QACE,IAAI,MAAM,GAAG,IAAI,6CAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnD,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,6BAA6B,EAAE,CAAC,CAAC;QAC9D,MAAM,CAAC,SAAS,GAAG,KAAK,CAAC;QACzB,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,gDAA0B,GAAlC;QACE,IAAI,MAAM,GAAG,IAAI,CAAC,+CAA+C,EAAE,CAAC;QACpE,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,OAAO,MAAM,CAAC;IAChB,CAAC;IAES,qEAA+C,GAAzD;QACE,IAAI,MAAM,GAAG,IAAI,6CAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnD,MAAM,CAAC,uCAAuC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACnE,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,6BAA6B,EAAE,CAAC,CAAC;QAC9D,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,8CAAwB,GAAhC;QACE,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAEO,8DAAwC,GAAhD;QACE,IAAI,MAAM,GAAG,IAAI,CAAC,6BAA6B,EAAE,CAAC;QAClD,IAAI,KAAK,GAAG,IAAI,MAAM,CAAC,GAAG,GAAG,yBAAW,CAAC,gBAAgB,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,wBAAwB,CAAC,GAAG,GAAG,EAAE,IAAI,CAAC,CAAC;QAC5H,IAAI,CAAC,kBAAkB,CAAC,oCAAoC,CAAC,KAAK,CAAC,CAAC;IACtE,CAAC;IAEO,wDAAkC,GAA1C;QACE,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,QAAE,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3E,CAAC;IAEO,oCAAc,GAAtB,UAAuB,MAA2B;QAA3B,kCAAS,IAAI,CAAC,aAAa;QAChD,OAAO,QAAE,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,yBAAyB,CAAC,CAAC;IACvD,CAAC;IAEO,wDAAkC,GAA1C;QACE,IAAI,OAAO,GAAG,QAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QAChF,eAAM,CAAC,KAAK,CAAC,OAAO,IAAI,SAAS,CAAC,CAAC;QAEnC,IAAM,aAAa,GAAG,QAAE,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,gCAAgC,CAAC,CAAC;QAE7E,IAAI,aAAa,EAAE;YACjB,IAAM,WAAW,GAAG,QAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;YACnE,WAAW,CAAC,KAAK,EAAE,CAAC;YACpB,OAAO;SACR;QAED,IAAM,QAAQ,GAAqB,QAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAE9E,IAAI,QAAQ,EAAE;YACZ,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC;YACxB,QAAE,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;SAChC;aAAM;YACL,OAAO,CAAC,KAAK,EAAE,CAAC;SACjB;IACH,CAAC;IAEO,+DAAyC,GAAjD;QACE,IAAI,OAAO,GAAG,QAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QAChF,eAAM,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC;QAC9B,IAAI,YAAY,GAAG,QAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAClE,IAAI,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,GAAG,CAAC,QAAE,CAAC,YAAY,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAE3E,YAAY,CAAC,mBAAmB,EAAE,CAAC;IACrC,CAAC;IAES,mDAA6B,GAAvC;QAAA,iBAqBC;QApBC,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE,CAAC;QAElC,IAAI,gBAAgB,GAAG,IAAI,6CAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7D,gBAAgB,CAAC,SAAS,GAAG,IAAI,CAAC;QAClC,gBAAgB,CAAC,gBAAgB,CAAC,IAAI,CAAC,6BAA6B,EAAE,CAAC,CAAC;QACxE,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,UAAC,WAA+B;YAC5F,KAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,8BAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACrB,IAAI,WAAW,GAAG,gBAAG,CAAC,WAAW,EAAE,oBAAU;gBAC3C,IAAI,UAAU,GAAG,KAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;gBACzD,IAAI,CAAC,aAAK,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;oBAC7B,UAAU,GAAG,uBAAU,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;iBAC5C;gBACD,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC;gBAC3B,UAAU,CAAC,QAAQ,GAAG,KAAK,CAAC;gBAC5B,OAAO,UAAU,CAAC;YACpB,CAAC,CAAC,CAAC;YACH,KAAI,CAAC,KAAK,CAAC,oCAAoC,CAAC,WAAW,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC9B,CAAC;IACH,kBAAC;AAAD,CAAC;AA5ZY,kCAAW;;;;;;;;;;ACxBxB,+BAAgC;AAMhC;IACE,+BAAmB,KAAY,EAAS,sBAA+C;QAApE,UAAK,GAAL,KAAK,CAAO;QAAS,2BAAsB,GAAtB,sBAAsB,CAAyB;IAAG,CAAC;IAEpF,qCAAK,GAAZ,UAAa,WAAyB;QAAtC,iBAcC;QAbC,IAAI,iBAAiB,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,oBAAU;YACnD,OAAO,CACL,CAAC,CAAC,IAAI,CAAC,KAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,UAAC,mBAA+B;gBACjE,OAAO,mBAAmB,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC;YACvD,CAAC,CAAC,IAAI,UAAU,CACjB,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,CAAC,GAAG,CAAC,iBAAiB,EAAE,oBAAU;YACxC,IAAM,YAAY,GAAG,IAAI,KAAI,CAAC,sBAAsB,CAAC,KAAI,CAAC,KAAK,EAAE,UAAU,EAAE,KAAI,CAAC,KAAK,CAAC,2BAA2B,CAAC,CAAC,KAAK,EAAE,CAAC;YAC7H,YAAY,CAAC,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;YACtE,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;YAChE,OAAO,YAAY,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACxC,CAAC,CAAC,CAAC;IACL,CAAC;IACH,4BAAC;AAAD,CAAC;AAlBY,sDAAqB;;;;;;;;;ACVlC,iCAAiC;;AAEjC,mDAAiF;AAEjF,mCAAqC;AAErC,4CAA0C;AAC1C,qCAA0C;AAC1C,2CAA0C;AAC1C,+BAAgC;AAEhC;IAOE,yBAAmB,KAAY,EAAS,sBAA+C;QAApE,UAAK,GAAL,KAAK,CAAO;QAAS,2BAAsB,GAAtB,sBAAsB,CAAyB;QANvF,wDAAwD;QAChD,cAAS,GAA2C,EAAE,CAAC;QAGvD,uBAAkB,GAAmB,EAAE,CAAC;IAE0C,CAAC;IAEpF,+BAAK,GAAZ;QACE,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QACnD,QAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;QACvD,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAEM,kDAAwB,GAA/B;QACE,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACjC,CAAC;IAEM,gCAAM,GAAb;QACE,OAAO,CAAC,CAAC,OAAO,CAAe,IAAI,CAAC,SAAS,CAAC,CAAC;IACjD,CAAC;IAEM,0CAAgB,GAAvB;QACE,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,UAAC,CAAe;YAC1C,OAAO,CAAC,CAAC,UAAU,CAAC;QACtB,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,6BAAG,GAAV,UAAW,KAA0B;QACnC,IAAI,MAAM,CAAC;QACX,IAAI,KAAK,YAAY,uBAAU,EAAE;YAC/B,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC;SACtB;aAAM;YACL,KAAK,GAAG,aAAK,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YACrC,MAAM,GAAG,KAAK,CAAC;SAChB;QACD,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;QACrC,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IAC9C,CAAC;IAEM,gCAAM,GAAb,UAAc,KAA0B;QACtC,IAAI,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnC,YAAY,CAAC,MAAM,EAAE,CAAC;QACtB,OAAO,YAAY,CAAC;IACtB,CAAC;IAEM,kCAAQ,GAAf,UAAgB,KAA0B;QACxC,IAAI,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnC,YAAY,CAAC,QAAQ,EAAE,CAAC;QACxB,OAAO,YAAY,CAAC;IACtB,CAAC;IAEM,iCAAO,GAAd,UAAe,KAA0B;QACvC,IAAI,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnC,YAAY,CAAC,OAAO,EAAE,CAAC;QACvB,OAAO,YAAY,CAAC;IACtB,CAAC;IAEM,mCAAS,GAAhB,UAAiB,KAA0B;QACzC,IAAI,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnC,YAAY,CAAC,SAAS,EAAE,CAAC;QACzB,OAAO,YAAY,CAAC;IACtB,CAAC;IAEM,sCAAY,GAAnB,UAAoB,KAA0B;QAC5C,IAAI,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,YAAY,CAAC,UAAU,CAAC,QAAQ,EAAE;YACpC,YAAY,CAAC,QAAQ,EAAE,CAAC;SACzB;aAAM;YACL,YAAY,CAAC,MAAM,EAAE,CAAC;SACvB;QACD,OAAO,YAAY,CAAC;IACtB,CAAC;IAEM,uCAAa,GAApB,UAAqB,KAA0B;QAC7C,IAAI,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,YAAY,CAAC,UAAU,CAAC,QAAQ,EAAE;YACpC,YAAY,CAAC,SAAS,EAAE,CAAC;SAC1B;aAAM;YACL,YAAY,CAAC,OAAO,EAAE,CAAC;SACxB;QACD,OAAO,YAAY,CAAC;IACtB,CAAC;IAEM,iCAAO,GAAd,UAAe,cAAsB;QAArC,iBAqBC;QApBC,QAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,KAAK,EAAE,CAAC;QAChC,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;QAC7B,IAAI,SAAS,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5C,IAAI,SAAS,GAAG,cAAc,CAAC;QAC/B,IAAI,WAAW,GAAG,QAAQ,CAAC,sBAAsB,EAAE,CAAC;QACpD,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,UAAC,UAAsB,EAAE,KAAc,EAAE,IAAK;YAC9D,IAAI,KAAI,CAAC,yBAAyB,CAAC,UAAU,CAAC,EAAE;gBAC9C,KAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;gBAC3C,SAAS,IAAI,CAAC,CAAC;aAChB;iBAAM,IAAI,KAAK,GAAG,SAAS,EAAE;gBAC5B,IAAI,YAAY,GAAG,IAAI,KAAI,CAAC,sBAAsB,CAAC,KAAI,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;gBACjF,KAAI,CAAC,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,GAAG,YAAY,CAAC;gBAC9D,IAAI,gBAAgB,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAC9D,WAAW,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;gBAC1C,KAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;aAC5C;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;QAE7C,uBAAU,CAAC,+BAA+B,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC;IAC9E,CAAC;IAES,8CAAoB,GAA9B;QACE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;IACpC,CAAC;IAEO,mDAAyB,GAAjC,UAAkC,UAAsB;QACtD,OAAO,CACL,UAAU,CAAC,WAAW,IAAI,CAAC;YAC3B,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC,IAAI,UAAU,CAAC,KAAK,IAAI,SAAS,CAAC;YACxD,CAAC,UAAU,CAAC,QAAQ;YACpB,CAAC,UAAU,CAAC,QAAQ;YACpB,CAAC,IAAI,CAAC,KAAK,CAAC,2BAA2B,CACxC,CAAC;IACJ,CAAC;IAEO,kDAAwB,GAAhC,UAAiC,KAAU;QACzC,IAAI,UAAsB,CAAC;QAC3B,IAAI,KAAK,YAAY,uBAAU,EAAE;YAC/B,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAc,KAAM,CAAC,KAAK,CAAC,CAAC;YAC9D,IAAI,UAAU,IAAI,IAAI,EAAE;gBACtB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBAC7B,UAAU,GAAG,KAAK,CAAC;aACpB;SACF;aAAM;YACL,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC1C,IAAI,UAAU,IAAI,IAAI,EAAE;gBACtB,UAAU,GAAG,uBAAU,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;gBAC/C,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;aACnC;SACF;QAED,IAAI,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QACzC,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,KAAK,IAAI,SAAS,EAAE;YACtB,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,qCAAiB,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;YAClF,KAAK,CAAC,KAAK,EAAE,CAAC;SACf;aAAM;YACL,KAAK,CAAC,UAAU,GAAG,UAAU,CAAC;SAC/B;IACH,CAAC;IACH,sBAAC;AAAD,CAAC;AAnJY,0CAAe;;;;;;;;;ACX5B,iCAAiC;;;;;;;;;;;;AAKjC,8CAA8C;AAa9C;IAAyC,uCAAY;IACnD,6BACS,KAAY,EACZ,UAAsB,EACtB,QAAgC,EACvC,QAAqE,EACrE,SAAsE;QALxE,YAOE,kBAAM,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,CAAC,SAC9C;QAPQ,WAAK,GAAL,KAAK,CAAO;QACZ,gBAAU,GAAV,UAAU,CAAY;QACtB,cAAQ,GAAR,QAAQ,CAAwB;;IAKzC,CAAC;IAEM,uCAAS,GAAhB;QACE,iBAAM,SAAS,YAAC,EAAE,eAAe,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC7F,CAAC;IACH,0BAAC;AAAD,CAAC,CAdwC,2BAAY,GAcpD;AAdY,kDAAmB;;;;;;;;;;AClBhC,iCAAiC;AACjC,0CAAkD;AAClD,mCAAqC;AACrC,qCAA0C;AAI1C,2CAA0C;AAK1C;IACE,2BACS,KAAY,EACZ,WAAyB,EACzB,aAAqC,EACrC,wBAAmD;QAHnD,UAAK,GAAL,KAAK,CAAO;QACZ,gBAAW,GAAX,WAAW,CAAc;QACzB,kBAAa,GAAb,aAAa,CAAwB;QACrC,6BAAwB,GAAxB,wBAAwB,CAA2B;IACzD,CAAC;IAEG,iCAAK,GAAZ;QAAA,iBAMC;QALC,IAAM,IAAI,GAAkB,EAAE,CAAC;QAC/B,iBAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAC,UAAsB;YAC5C,IAAI,CAAC,IAAI,CAAC,KAAI,CAAC,qBAAqB,CAAC,UAAU,EAAE,KAAI,CAAC,aAAa,CAAC,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;IAEO,iDAAqB,GAA7B,UAA8B,UAAsB,EAAE,aAAqC;QAA3F,iBAqBC;QApBC,IAAM,cAAc,GAAG,UAAC,IAAkB,EAAE,KAA4B,IAAK,YAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,EAAnC,CAAmC,CAAC;QACjH,IAAM,eAAe,GAAG,UAAC,IAAkB,EAAE,KAA4B,IAAK,YAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,EAAnC,CAAmC,CAAC;QAClH,IAAM,mBAAmB,GAAG,IAAI,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,cAAc,EAAE,eAAe,CAAC,CAAC;QACtI,IAAM,iBAAiB,GAAG,mBAAmB,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC;QAExE,IAAM,KAAK,GAAG,aAAa,CAAC,uBAAuB,CAAC,KAAK,CAAC;QAC1D,IAAM,aAAa,GAAG,aAAa,CAAC,uBAAuB,CAAC,IAAI,CAAC;QACjE,IAAM,OAAO,GAAG,QAAE,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QACzE,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;QAE7G,IAAM,UAAU,GAAG,QAAE,CAAC,IAAI,EAAE;YAC1B,SAAS,EAAE,sEAAsE;SAClF,CAAC,CAAC,EAAE,CAAC;QACN,UAAU,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC;QAC1C,QAAE,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,gBAAgB,EAAE;YAClC,IAAM,KAAK,GAAG,QAAE,CAAC,iBAAiB,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACjE,QAAE,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QACH,UAAU,CAAC,oBAAoB,CAAC,GAAG,IAAI,CAAC;QACxC,OAAO,UAAU,CAAC;IACpB,CAAC;IAEO,oDAAwB,GAAhC,UAAiC,IAAmB;QAClD,IAAM,MAAM,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACzC,IAAI,aAAK,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE;YAC5B,OAAO,SAAS,CAAC;SAClB;aAAM;YACL,IAAM,KAAG,GAAG,QAAE,CAAC,KAAK,EAAE;gBACpB,SAAS,EAAE,2BAA2B;aACvC,CAAC,CAAC,EAAE,CAAC;YACN,KAAG,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACxB,iBAAI,CAAC,IAAI,EAAE,WAAC;gBACV,KAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACrB,CAAC,CAAC,CAAC;YACH,uBAAU,CAAC,+BAA+B,CAAC,IAAI,CAAC,KAAK,EAAE,KAAG,CAAC,CAAC;YAC5D,OAAO,KAAG,CAAC;SACZ;IACH,CAAC;IAEO,8CAAkB,GAA1B;QACE,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACvC,IAAM,MAAM,GAAG,QAAE,CAAC,KAAK,EAAE;YACvB,SAAS,EAAE,4BAA4B;SACxC,CAAC,CAAC,EAAE,CAAC;QACN,QAAE,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvB,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,iDAAqB,GAA7B,UAA8B,UAAkB,EAAE,KAAa,EAAE,aAAqB;QACpF,IAAM,SAAS,GAAG,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAM,QAAQ,GAAG,SAAS,GAAG,aAAa,CAAC,MAAM,CAAC;QAClD,OAAO,CACL,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC;YAC9B,gCAAgC;YAChC,UAAU,CAAC,KAAK,CAAC,SAAS,EAAE,QAAQ,CAAC;YACrC,SAAS;YACT,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,CAC3B,CAAC;IACJ,CAAC;IAEO,6CAAiB,GAAzB,UAA0B,IAAkB,EAAE,KAA4B;QACxE,IAAM,mBAAmB,GAAG,kBAAK,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAC7D,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAA6B,KAAK,EAAE;YAC1E,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,uBAAuB,CAAC,IAAI;YACtD,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;YAC9B,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE;YAC/C,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK;YACpC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK;YACjC,WAAW,EAAE,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC;YAC1C,iBAAiB,EAAE,oBAAO,CAAC,mBAAmB,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;SACvE,CAAC,CAAC;IACL,CAAC;IACH,wBAAC;AAAD,CAAC;AAzFY,8CAAiB;;;;;;;;;;ACX9B,uCAA0C;AAE1C,2CAAgD;AAChD,sDAA8D;AAC9D,+BAAiC;AAEjC;IACE,uBAAmB,GAAW,EAAS,UAA2B,EAAS,EAAU,EAAS,OAAgB;QAA3F,QAAG,GAAH,GAAG,CAAQ;QAAS,eAAU,GAAV,UAAU,CAAiB;QAAS,OAAE,GAAF,EAAE,CAAQ;QAAS,YAAO,GAAP,OAAO,CAAS;IAAG,CAAC;IAElH,6BAAK,GAAL,UAAM,KAAa,EAAE,GAAY;QAC/B,IAAI,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC/C,IAAI,GAAG,IAAI,IAAI,EAAE;YACf,MAAM,IAAI,KAAK,CAAC,uBAAuB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;SACrD;QACD,IAAI,IAAI,CAAC,UAAU,IAAI,GAAG,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,EAAE;YACrD,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;SACxC;aAAM;YACL,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;SACxC;IACH,CAAC;IAED,iCAAS,GAAT,UAAU,KAAa,EAAE,GAAY,EAAE,GAAe;QACpD,IAAI,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACtC,IAAI,OAAO,GAAG,SAAS,CAAC,SAAS,EAAE,CAAC;QACpC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,IAAI,GAAG,EAAE;YACtC,IAAI,GAAG,EAAE;gBACP,mBAAmB;gBACnB,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE;oBACrB,OAAO,IAAI,qBAAS,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;iBAClD;gBACD,0FAA0F;gBAC1F,IAAI,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,aAAa,EAAE,EAAE,gBAAM,IAAI,aAAM,CAAC,UAAU,IAAI,2CAAoB,EAAzC,CAAyC,CAAC,EAAE;oBACzF,OAAO,IAAI,qBAAS,CAAC,CAAC,IAAI,eAAM,CAAC,IAAI,EAAE,2CAAoB,EAAE,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;iBAC/F;gBACD,OAAO,SAAS,CAAC;aAClB;YACD,8DAA8D;YAC9D,OAAO,IAAI,qBAAS,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;SAC7C;QACD,OAAO,IAAI,qBAAS,CAAC,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC7E,CAAC;IAED,iCAAS,GAAT,UAAU,KAAa,EAAE,GAAY,EAAE,GAAe;QACpD,IAAI,UAAU,GAAa,EAAE,CAAC;QAC9B,IAAI,SAAiB,CAAC;QACtB,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,OAAgB,CAAC;QAErB,gEAAgE;QAChE,GAAG;YACD,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;YACvC,OAAO,GAAG,SAAS,CAAC,SAAS,EAAE,CAAC;YAChC,IAAI,OAAO,EAAE;gBACX,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC3B,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC;aACnD;SACF,QAAQ,OAAO,IAAI,SAAS,CAAC,KAAK,IAAI,QAAQ,EAAE;QAEjD,6BAA6B;QAC7B,IAAI,iBAAiB,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAS,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAE/G,0EAA0E;QAC1E,IAAI,UAAU,CAAC,MAAM,GAAG,iBAAiB,EAAE;YACzC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SAC5B;aAAM,IAAI,GAAG,EAAE;YACd,wEAAwE;YACxE,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;gBACzB,IAAI,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC9B,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;gBACxC,IAAI,SAAS,CAAC,SAAS,EAAE,EAAE;oBACzB,gEAAgE;oBAChE,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC;iBAC/C;qBAAM;oBACL,wGAAwG;oBACxG,UAAU,CAAC,IAAI,CAAC,IAAI,eAAM,CAAC,IAAI,EAAE,2CAAoB,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;oBAC7F,8IAA8I;oBAC9I,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;iBAClE;aACF;iBAAM,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE;gBAC5B,6FAA6F;gBAC7F,IAAI,UAAU,GAAG,IAAI,eAAM,CAAC,IAAI,EAAE,2CAAoB,EAAE,KAAK,CAAC,CAAC;gBAC/D,OAAO,IAAI,qBAAS,CAAC,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;aAC5D;SACF;QACD,OAAO,IAAI,qBAAS,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;IAC3D,CAAC;IAEM,gCAAQ,GAAf;QACE,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;IACH,oBAAC;AAAD,CAAC;AApFY,sCAAa;;;;;;;;;;;;;;;;;;;;ACP1B,uCAAkC;AAElC,+BAAiC;AAEjC;IAA+B,6BAAM;IAEnC,mBAAY,OAAiB,EAAS,UAAsB,EAAS,KAAa,EAAE,UAAkB;QAAtG,YACE,kBAAM,OAAO,EAAE,UAAU,EAAE,KAAK,CAAC,SAOlC;QARqC,gBAAU,GAAV,UAAU,CAAY;QAAS,WAAK,GAAL,KAAK,CAAQ;QAEhF,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,UAAU,EAAE;YACjC,KAAI,CAAC,WAAW,GAAG,UAAU,CAAC;YAC9B,IAAI,KAAI,CAAC,WAAW,IAAI,IAAI,EAAE;gBAC5B,KAAI,CAAC,WAAW,CAAC,MAAM,GAAG,KAAI,CAAC;aAChC;SACF;;IACH,CAAC;IAED;;OAEG;IACI,6BAAS,GAAhB;QACE,IAAI,MAAM,GAAG,iBAAM,SAAS,WAAE,CAAC;QAC/B,oCAAoC;QACpC,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,EAAE;YAC5B,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC,CAAC;SACpD;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACI,yBAAK,GAAZ,UAAa,IAAe;QAC1B,4DAA4D;QAC5D,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE;YACnE,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvD,IAAI,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACzB,+EAA+E;YAC/E,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE;gBAC5C,IAAI,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBACnC,gFAAgF;gBAChF,IAAI,UAAU,GAAa,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,mBAAS;oBACzH,gBAAS,CAAC,KAAK,EAAE;gBAAjB,CAAiB,CAClB,CAAC;gBACF,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAC1C,OAAO,IAAI,eAAM,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;aAC5D;SACF;QACD,OAAO,iBAAM,KAAK,YAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IACH,gBAAC;AAAD,CAAC,CA7C8B,eAAM,GA6CpC;AA7CY,8BAAS;;;;;;;;;;ACDtB,8CAAsD;AAEtD;IACE,2BAAmB,KAAsB,EAAS,EAAU;QAAzC,UAAK,GAAL,KAAK,CAAiB;QAAS,OAAE,GAAF,EAAE,CAAQ;IAAG,CAAC;IAEhE,iCAAK,GAAL,UAAM,KAAa,EAAE,GAAY;QAC/B,IAAI,WAAW,GAAa,EAAE,CAAC;QAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC1C,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;YAChD,IAAI,SAAS,CAAC,SAAS,EAAE,EAAE;gBACzB,OAAO,IAAI,2BAAY,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;aAC9D;YACD,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SAC7B;QACD,OAAO,IAAI,2BAAY,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,CAAC;IAC1D,CAAC;IAEM,oCAAQ,GAAf;QACE,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;IACH,wBAAC;AAAD,CAAC;AAlBY,8CAAiB;;;;;;;;;;;;;;;;;;;;ACL9B,uCAAkC;AAClC,+BAAiC;AAGjC;IAAkC,gCAAM;IACtC,sBAAoB,MAAc,EAAS,UAAsB,EAAS,KAAa,EAAS,WAAqB;QAArH,YACE,kBAAM,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,CAAC,SAI3D;QALmB,YAAM,GAAN,MAAM,CAAQ;QAAS,gBAAU,GAAV,UAAU,CAAY;QAAS,WAAK,GAAL,KAAK,CAAQ;QAAS,iBAAW,GAAX,WAAW,CAAU;QAEnH,CAAC,CAAC,OAAO,CAAC,KAAI,CAAC,WAAW,EAAE,mBAAS;YACnC,SAAS,CAAC,MAAM,GAAG,KAAI,CAAC;QAC1B,CAAC,CAAC,CAAC;;IACL,CAAC;IAED;;OAEG;IACI,gCAAS,GAAhB;QAAA,iBAUC;QATC,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE;YACvB,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;SAClC;QACD,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,UAAC,MAAgB,EAAE,MAAc,IAAK,aAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,EAAjC,CAAiC,EAAE,MAAM,CAAC,CAAC;QACrH,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,gBAAM,IAAI,aAAM,CAAC,KAAK,IAAI,KAAI,CAAC,KAAK,EAA1B,CAA0B,CAAC,EAAE;YAC5E,OAAO,CAAC,IAAI,CAAC,CAAC;SACf;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACI,4BAAK,GAAZ,UAAa,IAAe;QAC1B,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE;YACrC,qDAAqD;YACrD,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YAC/D,oFAAoF;YACpF,IAAI,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACzB,IAAI,IAAI,IAAI,IAAI,EAAE;gBAChB,OAAO,IAAI,eAAM,CAAC,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;aACtD;YACD,OAAO,IAAI,eAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;SAC5E;QACD,qDAAqD;QACrD,OAAO,IAAI,eAAM,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,mBAAS,IAAI,gBAAS,CAAC,KAAK,EAAE,EAAjB,CAAiB,CAAC,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAChH,CAAC;IACH,mBAAC;AAAD,CAAC,CAxCiC,eAAM,GAwCvC;AAxCY,oCAAY;;;;;;;;;;ACFzB,uCAA0C;AAC1C,uCAAoD;AAEpD;IACE,0BAAmB,KAAa,EAAS,EAAU,EAAE,OAAgB;QAAlD,UAAK,GAAL,KAAK,CAAQ;QAAS,OAAE,GAAF,EAAE,CAAQ;IAAqB,CAAC;IAEzE,gCAAK,GAAL,UAAM,KAAa,EAAE,GAAY;QAC/B,IAAI,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrC,qDAAqD;QACrD,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,KAAK,IAAI,CAAC,EAAE;YACvC,MAAM,GAAG,IAAI,CAAC;SACf;QACD,IAAI,MAAM,GAAG,IAAI,eAAM,CAAC,MAAM,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QACxE,sEAAsE;QACtE,kEAAkE;QAClE,IAAI,MAAM,CAAC,SAAS,EAAE,IAAI,GAAG,IAAI,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE;YACnE,OAAO,IAAI,yBAAgB,CAAC,MAAM,CAAC,CAAC;SACrC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAEM,mCAAQ,GAAf;QACE,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;IACH,uBAAC;AAAD,CAAC;AArBY,4CAAgB;;;;;;;;;;ACG7B;IACE,4BAAmB,IAAgC,EAAS,EAAU,EAAS,OAAgB;QAA5E,SAAI,GAAJ,IAAI,CAA4B;QAAS,OAAE,GAAF,EAAE,CAAQ;QAAS,YAAO,GAAP,OAAO,CAAS;IAAG,CAAC;IAE5F,kCAAK,GAAZ,UAAa,KAAa,EAAE,GAAY;QACtC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IACrC,CAAC;IAEM,qCAAQ,GAAf;QACE,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;IACH,yBAAC;AAAD,CAAC;AAVY,gDAAkB;;;;;;;;;;ACR/B,uCAA0C;AAG1C;IACE,wBAAoB,KAAmB,EAAS,EAAU;QAAtC,UAAK,GAAL,KAAK,CAAc;QAAS,OAAE,GAAF,EAAE,CAAQ;QACxD,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE;YACrB,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,GAAG,+BAA+B,CAAC,CAAC;SACvE;IACH,CAAC;IAED,8BAAK,GAAL,UAAM,KAAa,EAAE,GAAY;QAC/B,IAAI,UAAU,GAAa,EAAE,CAAC;QAC9B,IAAI,SAAiB,CAAC;QACtB,IAAI,QAAQ,GAAG,KAAK,CAAC;QAErB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC1C,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACzB,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACpE,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC3B,oDAAoD;YACpD,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE;gBAC1B,MAAM;aACP;iBAAM;gBACL,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC;aACnD;SACF;QACD,OAAO,IAAI,eAAM,CAAC,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IAC7C,CAAC;IAEM,iCAAQ,GAAf;QACE,OAAO,IAAI,CAAC,EAAE,CAAC;IACjB,CAAC;IACH,qBAAC;AAAD,CAAC;AA7BY,wCAAc;;;;;;;;;;ACF3B,uCAAgC;AAErB,mBAAW,GAAe;IACnC,gBAAgB,EAAE,CAAC,aAAa,CAAC;IACjC,QAAQ,EAAE;QACR,WAAW,EAAE,8CAA8C;QAC3D,WAAW,EAAE,WAAW;QACxB,UAAU,EAAE,CAAC,aAAa,CAAC;KAC5B;IACD,OAAO,EAAE,CAAC,aAAK,CAAC;CACjB,CAAC;;;;;;;;;;ACVF,uCAAgC;AAEnB,YAAI,GAAe;IAC9B,QAAQ,EAAE;QACR,IAAI,EAAE,kCAAkC;QACxC,QAAQ,EAAE,YAAY;QACtB,SAAS,EAAE,kBAAkB;QAC7B,OAAO,EAAE,6BAA6B;QACtC,SAAS,EAAE,kCAAkC;QAC7C,YAAY,EAAE,CAAC,sBAAsB,EAAE,kBAAkB,CAAC;QAC1D,gBAAgB,EAAE,qBAAqB;QACvC,oBAAoB,EAAE,6CAA6C;QACnE,uBAAuB,EAAE,8BAA8B;KACxD;IACD,OAAO,EAAE,CAAC,aAAK,CAAC;CACjB,CAAC;;;;;;;;;;AChBF,uCAAgC;AAEnB,sBAAc,GAAe;IACxC,gBAAgB,EAAE,CAAC,gBAAgB,CAAC;IACpC,QAAQ,EAAE;QACR,cAAc,EAAE,kDAAkD;QAClE,kBAAkB,EAAE,KAAK;QACzB,uBAAuB,EAAE,uDAAuD;QAChF,0BAA0B,EAAE,6CAA6C;QACzE,sBAAsB,EAAE,qEAAqE;QAC7F,0BAA0B,EAAE,KAAK;QACjC,2BAA2B,EAAE,CAAC,cAAc,EAAE,aAAa,CAAC;KAC7D;IACD,OAAO,EAAE,CAAC,aAAK,CAAC;CACjB,CAAC;;;;;;;;;;ACZW,qBAAa,GAAe;IACvC,gBAAgB,EAAE,CAAC,eAAe,CAAC;IACnC,QAAQ,EAAE;QACR,aAAa,EAAE,iBAAiB;KACjC;CACF,CAAC;;;;;;;;;;ACPF,+BAAgC;AAChC,qCAAoC;AACpC,uCAAuC;AACvC,mCAAkC;AAClC,8CAAkD;AAIlD;IAkCE,sBAAY,OAAoB,EAAU,QAAyD,EAAU,QAA0B;QAA7F,aAAQ,GAAR,QAAQ,CAAiD;QAAU,aAAQ,GAAR,QAAQ,CAAkB;QAxB/H,aAAQ,GAAY,KAAK,CAAC;QAyBhC,IAAI,CAAC,IAAI,GAAG,gBAAS,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC3C,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC9C,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,oBAAoB,CAAC;QAE/C,IAAI,CAAC,kBAAkB,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACzD,IAAI,CAAC,kBAAkB,CAAC,SAAS,GAAG,+BAA+B,CAAC;QACpE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAEnD,IAAI,CAAC,kBAAkB,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QACzD,IAAI,CAAC,kBAAkB,CAAC,SAAS,GAAG,sBAAsB,CAAC;QAC3D,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;QAEnD,IAAI,CAAC,KAAK,GAAG,QAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAqB,CAAC;QAC3D,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACf,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAC7C,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACnC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SACjC;aAAM;YACL,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;SACjD;QAED,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,4BAA4B,EAAE,CAAC;IACtC,CAAC;IApCD,sBAAW,kCAAQ;aAAnB,UAAoB,UAAmB;YACrC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,eAAe,EAAE,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC;QAClE,CAAC;;;OAAA;IAED,sBAAW,0CAAgB;aAA3B,UAA4B,OAAoB;YAC9C,IAAI,OAAO,EAAE;gBACX,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,uBAAuB,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;aAC9D;iBAAM;gBACL,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,uBAAuB,CAAC,CAAC;aACrD;QACH,CAAC;;;OAAA;IA4BD;;OAEG;IACK,kCAAW,GAAnB;QACE,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;YACzC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;YACrC,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACjB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC;aACxC;SACF;IACH,CAAC;IAED;;OAEG;IACK,sCAAe,GAAvB;QACE,QAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,KAAK,EAAE,CAAC;QACpC,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC;IACnE,CAAC;IAED;;OAEG;IACK,2CAAoB,GAA5B;QACE,QAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,KAAK,EAAE,CAAC;QACpC,IAAI,CAAC,kBAAkB,CAAC,SAAS,GAAG,EAAE,CAAC;QACvC,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,EAAE;YAC/B,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;SACpH;IACH,CAAC;IAED;;OAEG;IACI,gCAAS,GAAhB,UAAiB,MAAc,EAAE,cAAuB;QACtD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnB,IAAI,CAAC,eAAe,EAAE,CAAC;QAEvB,gDAAgD;QAChD,IAAI,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;YACvH,IAAI,CAAC,oBAAoB,EAAE,CAAC;SAC7B;aAAM;YACL,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;SACxC;QAED,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED;;OAEG;IACI,wCAAiB,GAAxB,UAAyB,cAAsB;QAC7C,IAAI,cAAc,IAAI,IAAI,IAAI,cAAc,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,EAAE;YACxG,cAAc,GAAG,IAAI,CAAC;SACvB;QACD,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED;;OAEG;IACI,gCAAS,GAAhB,UAAiB,KAAa;QAC5B,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACnB,IAAU,IAAI,CAAC,KAAM,CAAC,eAAe,EAAE;YACrC,IAAI,KAAK,GAAS,IAAI,CAAC,KAAM,CAAC,eAAe,EAAE,CAAC;YAChD,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;YAC/B,KAAK,CAAC,MAAM,EAAE,CAAC;SAChB;aAAM,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,IAAI,IAAI,EAAE;YAC5C,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACnB,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;SAC5C;IACH,CAAC;IAEM,gCAAS,GAAhB;QACE,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC;IACnC,CAAC;IAOO,mCAAY,GAApB,UAAqB,KAAY;QAAjC,iBAqBC;QArBoB,oCAAY;QAC/B,IAAI,QAAQ,GAAG;YACb,2DAA2D;YAC3D,IAAI,KAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,KAAI,CAAC,QAAQ,CAAC,WAAW,EAAE;gBACzD,KAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;gBAC1C,KAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,KAAI,CAAC,KAAK,CAAC,UAAU,CAAC;gBACjD,KAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,KAAI,CAAC,KAAK,CAAC,SAAS,CAAC;gBAC/C,KAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC;aAC5C;YACD,KAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;YAC9B,sCAAsC;YACtC,IAAI,KAAI,CAAC,QAAQ,EAAE;gBACjB,KAAI,CAAC,YAAY,EAAE,CAAC;aACrB;QACH,CAAC,CAAC;QACF,6EAA6E;QAC7E,IAAI,CAAC,KAAK,EAAE;YACV,QAAQ,EAAE,CAAC;SACZ;aAAM,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,EAAE;YACzC,IAAI,CAAC,iBAAiB,GAAG,qBAAqB,CAAC,QAAQ,CAAC,CAAC;SAC1D;IACH,CAAC;IAEO,mCAAY,GAApB;QAAA,iBAiCC;QAhCC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG;YAClB,KAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;YACtB,UAAU,CAAC;gBACT,IAAI,CAAC,KAAI,CAAC,QAAQ,EAAE;oBAClB,KAAI,CAAC,MAAM,IAAI,KAAI,CAAC,MAAM,EAAE,CAAC;iBAC9B;YACH,CAAC,EAAE,GAAG,CAAC,CAAC;YACR,KAAI,CAAC,YAAY,EAAE,CAAC;QACtB,CAAC,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG;YACnB,IAAI,CAAC,KAAI,CAAC,QAAQ,EAAE;gBAClB,KAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;gBACrB,KAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,KAAI,CAAC,OAAO,IAAI,KAAI,CAAC,OAAO,EAAE,CAAC;aAChC;QACH,CAAC,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,WAAC;YACtB,KAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,WAAC;YACpB,KAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAChB,CAAC,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG;YACjB,UAAU,CAAC;gBACT,KAAI,CAAC,aAAa,EAAE,CAAC;YACvB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG;YACnB,UAAU,CAAC;gBACT,KAAI,CAAC,aAAa,EAAE,CAAC;YACvB,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;IACJ,CAAC;IAEO,mDAA4B,GAApC;QACE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;QAC/C,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACxC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAC5C,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;QACpD,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;QACrD,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAK,WAAC,CAAC,cAAc,CAAC,UAAK,WAAC,CAAC,kBAAkB,CAAG,CAAC,CAAC;IACrF,CAAC;IAEM,4BAAK,GAAZ;QAAA,iBAMC;QALC,2BAA2B;QAC3B,UAAU,CAAC;YACT,KAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACnB,KAAI,CAAC,SAAS,CAAC,KAAI,CAAC,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,2BAAI,GAAX;QACE,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;SACnB;IACH,CAAC;IAEO,8BAAO,GAAf,UAAgB,CAAgB;QAAhC,iBAqBC;QApBC,QAAQ,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,KAAK,EAAE;YAC5B,KAAK,wBAAQ,CAAC,GAAG;gBACf,4GAA4G;gBAC5G,0FAA0F;gBAC1F,6DAA6D;gBAC7D,6HAA6H;gBAC7H,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAChB,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC;gBAChC,MAAM;YACR;gBACE,CAAC,CAAC,eAAe,EAAE,CAAC;gBACpB,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE;oBAClE,qBAAqB,CAAC;wBACpB,KAAI,CAAC,aAAa,EAAE,CAAC;oBACvB,CAAC,CAAC,CAAC;iBACJ;qBAAM;oBACL,CAAC,CAAC,cAAc,EAAE,CAAC;iBACpB;gBACD,MAAM;SACT;IACH,CAAC;IAEO,4BAAK,GAAb,UAAc,CAAgB;QAC5B,QAAQ,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,KAAK,EAAE;YAC5B,KAAK,wBAAQ,CAAC,UAAU,CAAC;YACzB,KAAK,wBAAQ,CAAC,WAAW;gBACvB,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;gBAC7B,MAAM;YACR;gBACE,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE;oBAChE,IAAI,CAAC,aAAa,EAAE,CAAC;iBACtB;qBAAM;oBACL,CAAC,CAAC,cAAc,EAAE,CAAC;iBACpB;gBACD,MAAM;SACT;IACH,CAAC;IAEO,2CAAoB,GAA5B,UAA6B,CAAgB;QAC3C,IAAM,mBAAmB,GAAG,QAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAI,gBAAS,CAAC,0BAA0B,CAAC,qBAAqB,CAAG,CAAC,CAAC;QAClH,IAAI,CAAC,mBAAmB,EAAE;YACxB,IAAI,CAAC,cAAc,EAAE,CAAC;SACvB;QAED,IAAM,YAAY,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC;QAClF,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC;IAC3D,CAAC;IAEO,+BAAQ,GAAhB;QACE,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACrC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;IAC/B,CAAC;IAEO,oCAAa,GAArB;QACE,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE;YACzC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;SACxC;IACH,CAAC;IAEM,+BAAQ,GAAf;QACE,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;IAC1B,CAAC;IAEM,wCAAiB,GAAxB;QACE,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IACH,mBAAC;AAAD,CAAC;AAvSY,oCAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACRzB,0CAAqC;AAMrC,IAAY,gBAIX;AAJD,WAAY,gBAAgB;IAC1B,+DAAQ;IACR,+DAAQ;IACR,iEAAS;AACX,CAAC,EAJW,gBAAgB,GAAhB,wBAAgB,KAAhB,wBAAgB,QAI3B;AAOD;;;GAGG;AACH,sBAAyB,QAAuB;IAC9C,OAAO,IAAI,OAAO,CAAI,UAAC,OAAO,EAAE,MAAM,IAAK,eAAQ,CAAC,OAAO,CAAC,eAAK,IAAI,cAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,EAA5C,CAA4C,CAAC,EAAvE,CAAuE,CAAC,CAAC;AACtH,CAAC;AAED;IAKE,wBAAY,OAA6C;QAA7C,sCAA6C;QACvD,IAAI,CAAC,OAAO,cAAK,OAAO,EAAE,GAAG,IAAK,OAAO,CAAE,CAAC;IAC9C,CAAC;IAED;;OAEG;IACU,uCAAc,GAA3B,UAA4B,OAA+B;;;;;gBACzD,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAC5B,IAAI,CAAC,gBAAgB,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBAC5C,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,eAAK,IAAI,QAAC,KAAK,YAAY,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAA3D,CAA2D,CAAC,CAAC;gBAEvG,sBAAO,YAAY,CAAC;wBAClB,IAAI,CAAC,gCAAgC,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,cAAM,YAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAnD,CAAmD,CAAC;wBACnH,IAAI,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,cAAM,YAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAApD,CAAoD,CAAC;wBACvF,IAAI,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,cAAM,YAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAnD,CAAmD,CAAC;qBACtF,CAAC,EAAC;;;KACJ;IAEY,6CAAoB,GAAjC;;;gBACE,IAAI,IAAI,CAAC,QAAQ,EAAE;oBACjB,IAAI,CAAC,QAAQ,EAAE,CAAC;iBACjB;;;;KACF;IAED,sBAAY,0CAAc;aAA1B;YACE,OAAO,oBAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,gBAAM,IAAI,QAAC,CAAC,MAAM,EAAR,CAAQ,CAAC,EAAE,IAAI,CAAC,CAAC;QACzE,CAAC;;;OAAA;IAEO,4CAAmB,GAA3B,UAA4B,MAAwB;QAClD,OAAO;YACL,MAAM;YACN,OAAO,EAAE,MAAM,KAAK,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;SAC1E,CAAC;IACJ,CAAC;IAEa,yDAAgC,GAA9C,UAA+C,OAAuB;;;;;;wBAC9D,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC;wBACrC,qBAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,UAAC,KAAK,EAAE,CAAC,IAAK,YAAK,CAAC,IAAI,CAAC,eAAK,IAAI,QAAC,MAAM,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,EAAnB,CAAmB,CAAC,EAAxC,CAAwC,CAAC,CAAC;;wBAAtF,SAAsF,CAAC;;;;;KACxF;IAEO,wCAAe,GAAvB;QAAA,iBAOC;QANC,OAAO,IAAI,OAAO,CAAO,iBAAO;YAC9B,KAAI,CAAC,QAAQ,GAAG;gBACd,KAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;gBACrB,OAAO,EAAE,CAAC;YACZ,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,uCAAc,GAAtB;QAAA,iBAEC;QADC,OAAO,IAAI,OAAO,CAAO,iBAAO,IAAI,iBAAU,CAAC,cAAM,cAAO,EAAE,EAAT,CAAS,EAAE,KAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAjD,CAAiD,CAAC,CAAC;IACzF,CAAC;IACH,qBAAC;AAAD,CAAC;AA1DY,wCAAc;;;;;;;;;;ACzB3B,mCAA6C;AAC7C,uCAA+C;AAY/C;IAIE,kCAAoB,WAA6C;QAA7C,gBAAW,GAAX,WAAW,CAAkC;QAC/D,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAEO,yCAAM,GAAd;QACE,IAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;QAE3E,IAAI,CAAC,MAAM,GAAG,QAAE,CACd,QAAQ,EACR;YACE,SAAS,EAAE,sCAAkC,IAAI,CAAC,WAAW,CAAC,SAAS,IAAI,EAAE,CAAE,EAAC,IAAI,EAAE;YACtF,IAAI,EAAE,QAAQ;SACf,EACD,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAC5D,CAAC;QAEF,IAAI,CAAC,WAAW,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAE5E,IAAI,OAAO,EAAE;YACX,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAC/D,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAC1D,eAAM,CAAC,wBAAwB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;SACjF;QAED,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE;YAC9B,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;SACpE;QAED,IAAI,IAAI,CAAC,WAAW,CAAC,aAAa,KAAK,SAAS,EAAE;YAChD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;SAC7C;QAED,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;IAChC,CAAC;IAEM,yCAAM,GAAb,UAAc,aAAsB;QAClC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;IACpC,CAAC;IACH,+BAAC;AAAD,CAAC;AA1CY,4DAAwB;;;;;;;;;;ACbrC,0CAA4D;AAC5D,sCAA2C;AAG3C,IAAY,UAIX;AAJD,WAAY,UAAU;IACpB,qCAAuB;IACvB,2BAAa;IACb,yBAAW;AACb,CAAC,EAJW,UAAU,GAAV,kBAAU,KAAV,kBAAU,QAIrB;AAED,IAAY,eAGX;AAHD,WAAY,eAAe;IACzB,0CAAuB;IACvB,4CAAyB;AAC3B,CAAC,EAHW,eAAe,GAAf,uBAAe,KAAf,uBAAe,QAG1B;AAED;IAGE;;;;OAIG;IACH,uBAAmB,IAAgB,EAAS,SAAoC;QAApC,0CAAoC;QAA7D,SAAI,GAAJ,IAAI,CAAY;QAAS,cAAS,GAAT,SAAS,CAA2B;QAC9E,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE;YACpC,eAAM,CAAC,KAAK,CACV,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EACnB,IAAI,wDAAmD,mBAAM,CAAC,UAAU,CAAC,4CAAyC,CACtH,CAAC;SACH;QACD,IAAI,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAAE;YAC1C,eAAM,CAAC,KAAK,CACV,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAC7B,SAAS,kEAA6D,mBAAM,CAAC,eAAe,CAAG,CACnG,CAAC;SACH;aAAM;YACL,eAAM,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC;SAC/B;IACH,CAAC;IAEO,wCAAgB,GAAxB,UAAyB,SAAiB;QACxC,OAAO,kBAAK,CAAC,eAAe,CAAC;aAC1B,MAAM,EAAE;aACR,QAAQ,CAAC,SAAgB,CAAC;aAC1B,KAAK,EAAE,CAAC;IACb,CAAC;IAEO,mCAAW,GAAnB,UAAoB,IAAY;QAC9B,OAAO,kBAAK,CAAC,UAAU,CAAC;aACrB,MAAM,EAAE;aACR,QAAQ,CAAC,IAAW,CAAC;aACrB,KAAK,EAAE,CAAC;IACb,CAAC;IAEc,yBAAW,GAA1B,UAA2B,QAAgB;QACzC,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;IACnC,CAAC;IAEc,gCAAkB,GAAjC,UAAkC,IAAY;QAC5C,OAAO,qBAAQ,CAAC,aAAa,CAAC,qBAAqB,EAAE,IAAI,CAAC,IAAI,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAChG,CAAC;IA5Cc,mCAAqB,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IA6C3D,oBAAC;CAAA;AA9CY,sCAAa;AAgD1B;IAGE,sBAAY,iBAAyB;QAArC,iBAMC;QARO,aAAQ,GAAoB,EAAE,CAAC;QAGrC,IAAM,QAAQ,GAAG,iBAAiB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9C,QAAQ,CAAC,OAAO,CAAC,mBAAS;YACxB,IAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YACtC,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC,CAAe,EAAE,KAAK,CAAC,CAAC,CAAoB,CAAC,CAAC,CAAC;QAC7F,CAAC,CAAC,CAAC;IACL,CAAC;IAED,sBAAW,mCAAS;aAApB;YACE,OAAO,kBAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC;QACxC,CAAC;;;OAAA;IAED,sBAAW,8BAAI;aAAf;YACE,OAAO,kBAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC;QACnC,CAAC;;;OAAA;IAED;;;OAGG;IACI,kBAAK,GAAZ,UAAa,QAAgB;QAC3B,OAAO,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IAED;;;OAGG;IACI,wCAAiB,GAAxB,UAAyB,YAA0B;QACjD,eAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC5B,YAAY,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,EAAE;aACxC,KAAK,CAAC,GAAG,CAAC;aACV,IAAI,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;IAED;;OAEG;IACI,+BAAQ,GAAf;QACE,OAAO,IAAI,CAAC,QAAQ;aACjB,GAAG,CAAC,mBAAS;YACZ,OAAO,SAAS,CAAC,SAAS,CAAC,CAAC,CAAI,SAAS,CAAC,IAAI,SAAI,SAAS,CAAC,SAAW,CAAC,CAAC,CAAC,KAAG,SAAS,CAAC,IAAM,CAAC;QAChG,CAAC,CAAC;aACD,IAAI,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;IAED;;;OAGG;IACI,6BAAM,GAAb,UAAc,QAAsB;QAClC,OAAO,QAAQ,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;IAChD,CAAC;IACH,mBAAC;AAAD,CAAC;AAxDY,oCAAY;;;;;;;;;;AC9DzB,6CAA4C;AAC5C,gDAAkD;AAClD,uCAAgC;AAChC,uCAAgC;AAChC,+CAAgD;AAEnC,gBAAQ,GAAe;IAClC,OAAO,EAAE,CAAC,yBAAW,EAAE,+BAAc,EAAE,6BAAa,EAAE,aAAK,EAAE,aAAK,CAAC;CACpE,CAAC;;;;;;;;;;ACTF,yCAAqC;AAErC,+BAAgC;AAShC,wBACE,WAAqB,EACrB,gBAA0B,EAC1B,QAAyC,EACzC,UAAsB;IAEtB,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,oBAAU;QACvC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,UAAU,CAAC,EAAE;YACxC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SAC9B;IACH,CAAC,CAAC,CAAC;IACH,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,oBAAU;QAC5C,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,gBAAgB,EAAE,UAAU,CAAC,EAAE;YAC7C,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SACnC;IACH,CAAC,CAAC,CAAC;IACH,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,UAAC,aAA4B,EAAE,EAAU;QACnE,IAAI,CAAC,CAAC,EAAE,IAAI,QAAQ,CAAC,EAAE;YACrB,QAAQ,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC;SAC9B;aAAM;YACL,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE;gBACvD,CAAC,CAAC,IAAI,CAAW,aAAa,EAAE,UAAC,KAAa;oBACjC,QAAQ,CAAC,EAAE,CAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACvC,CAAC,CAAC,CAAC;aACJ;iBAAM;gBACL,CAAC,CAAC,IAAI,CAAW,aAAa,EAAE,UAAC,KAAa;oBACjC,QAAQ,CAAC,EAAE,CAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACvC,CAAC,CAAC,CAAC;gBACH,MAAM,IAAI,KAAK,CAAC,gBAAgB,GAAG,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;aAC5H;SACF;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED;IAA4B,qBAA4B;SAA5B,UAA4B,EAA5B,qBAA4B,EAA5B,IAA4B;QAA5B,gCAA4B;;IACtD,IAAI,WAAW,GAAa,EAAE,CAAC;IAC/B,IAAI,eAAe,GAAa,EAAE,CAAC;IACnC,IAAI,QAAQ,GAAoC;QAC9C,KAAK,EAAE,CAAC,aAAa,EAAE,OAAO,CAAC;QAC/B,WAAW,EAAE,gEAAgE;QAC7E,eAAe,EAAE,sBAAsB;QACvC,UAAU,EAAE,WAAW;QACvB,eAAe,EAAE,eAAe;QAChC,cAAc,EAAE,IAAI;QACpB,MAAM,EAAE,IAAI;QACZ,KAAK,EAAE,OAAO;KACf,CAAC;IACF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;QAC3C,cAAc,CAAC,WAAW,EAAE,eAAe,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,oBAAU;YACvC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,UAAU,CAAC,EAAE;gBACxC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aAC9B;QACH,CAAC,CAAC,CAAC;KACJ;IACD,WAAW,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACpC,OAAO;QACL,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,QAAQ;KACtB,CAAC;AACJ,CAAC;AA1BD,kCA0BC;AAED;IAAmC,qBAA4B;SAA5B,UAA4B,EAA5B,qBAA4B,EAA5B,IAA4B;QAA5B,gCAA4B;;IAC7D,IAAI,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACnD,OAAO,IAAI,iBAAO,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;AACzD,CAAC;AAHD,gDAGC;;;;;;;;;;ACtCD;;;;GAIG;AACH;IAAA;IAgBA,CAAC;IAfC;;;OAGG;IACW,uDAA2B,GAAG,6BAA6B,CAAC;IAC1E;;;OAGG;IACW,8DAAkC,GAAG,oCAAoC,CAAC;IACxF;;;OAGG;IACW,wDAA4B,GAAG,8BAA8B,CAAC;IAC9E,kCAAC;CAAA;AAhBY,kEAA2B;;;;;;;;;;;;;;;;;;ACzCxC,sDAA2E;AAE3E;IACE,mCAAmB,KAAyB;QAAzB,UAAK,GAAL,KAAK,CAAoB;IAAG,CAAC;IAEhD,sBAAY,8CAAO;aAAnB;YACE,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;QAC5B,CAAC;aAED,UAAoB,OAA2C;YAC7D,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;QAC/B,CAAC;;;OAJA;IAMM,+CAAW,GAAlB;QACE,IAAI,CAAC,OAAO,gBAAQ,IAAI,CAAC,OAAO,EAAK,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,GAAG,CAAC,6CAAqB,CAAC,cAAc,CAAC,SAAS,CAAC,CAAE,CAAC;QAC5H,IAAI,CAAC,mCAAmC,EAAE,CAAC;QAC3C,IAAI,CAAC,wCAAwC,EAAE,CAAC;IAClD,CAAC;IAEO,uEAAmC,GAA3C;QACE,IAAI,IAAI,CAAC,OAAO,CAAC,mBAAmB,IAAI,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,2BAA2B,KAAK,KAAK,EAAE;YAChH,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CACpB,iMAAiM,EACjM,IAAI,CAAC,KAAK,CACX,CAAC;YACF,IAAI,CAAC,OAAO,CAAC,mBAAmB,GAAG,KAAK,CAAC;SAC1C;IACH,CAAC;IAEO,4EAAwC,GAAhD;QACE,IACE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,2BAA2B,KAAK,IAAI;YACvE,IAAI,CAAC,OAAO,CAAC,mBAAmB,KAAK,KAAK;YAC1C,IAAI,CAAC,OAAO,CAAC,qBAAqB,KAAK,IAAI,EAC3C;YACA,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,iFAAiF,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACtH,IAAI,CAAC,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;SACzC;IACH,CAAC;IACH,gCAAC;AAAD,CAAC;AArCY,8DAAyB;;;;;;;;;;ACFtC,+BAAgC;AAChC,4CAA0C;AAE1C;IAGE,iCAAoB,OAAyB;QAAzB,YAAO,GAAP,OAAO,CAAkB;IAAG,CAAC;IAElC,sCAAc,GAA7B;QACE,sCAAsC;QACtC,+EAA+E;QAC/E,uHAAuH;QACvH,qHAAqH;QACrH,0GAA0G;QAC1G,yKAAyK;QACzK,+DAA+D;QAE/D,4HAA4H;QAC5H,IAAI,CAAC,uBAAuB,CAAC,uBAAuB,EAAE;YACpD,uBAAuB,CAAC,uBAAuB,GAAG,IAAI,CAAC;YACvD,mBAAK,CAAC,KAAK,CAAC,cAAM,8BAAuB,CAAC,mBAAmB,EAAE,EAA7C,CAA6C,CAAC,CAAC;YACjE,OAAO,KAAK,CAAC;SACd;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEa,2CAAmB,GAAjC;QACE,uBAAuB,CAAC,uBAAuB,GAAG,KAAK,CAAC;IAC1D,CAAC;IAEM,+CAAa,GAApB,UAAqB,YAA0B,EAAE,SAAiB;QAChE,IAAI,CAAC,uBAAuB,CAAC,cAAc,EAAE,EAAE;YAC7C,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;gBAChC,YAAY,CAAC,eAAe,GAAG,IAAI,CAAC;aACrC;YAED,IAAI,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE;gBACpC,YAAY,CAAC,mBAAmB,GAAG,IAAI,CAAC;aACzC;YAED,IAAI,IAAI,CAAC,OAAO,CAAC,wBAAwB,EAAE;gBACzC,YAAY,CAAC,wBAAwB,GAAG,IAAI,CAAC;aAC9C;YAED,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;gBACzB,YAAY,CAAC,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC;gBAChE,YAAY,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBACvC,IAAI,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE;oBACnC,YAAY,CAAC,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC;oBAClE,IAAI,IAAI,CAAC,OAAO,CAAC,oBAAoB,EAAE;wBACrC,YAAY,CAAC,oBAAoB,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC;qBACvE;oBACD,IAAI,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE;wBACtC,YAAY,CAAC,qBAAqB,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC;qBACzE;iBACF;aACF;SACF;IACH,CAAC;IAtDc,+CAAuB,GAAG,KAAK,CAAC;IAuDjD,8BAAC;CAAA;AAxDY,0DAAuB;;;;;;;ACLpC,yC;;;;;;;;;ACAA;;;GAGG;AACH,IAAY,iBAmBX;AAnBD,WAAY,iBAAiB;IAC3B;;;;;;;;OAQG;IACH,oCAAe;IACf;;OAEG;IACH,kDAA6B;IAC7B;;OAEG;IACH,gDAA2B;AAC7B,CAAC,EAnBW,iBAAiB,GAAjB,yBAAiB,KAAjB,yBAAiB,QAmB5B;AAED,6BAAoC,YAAoB;IACtD,OAAO,CAAC,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;AAC3C,CAAC;AAFD,kDAEC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3BD,mCAAqC;AACrC,+CAAgD;AAChD,0CAAgD;AAChD,yCAAgD;AAChD,uCAA4C;AAC5C,gDAAkD;AAClD,yBAA2B;AAC3B,qCAA0C;AAC1C,uCAA0C;AAG1C;IAaE,kBAAmB,OAAyB;QAAzB,YAAO,GAAP,OAAO,CAAkB;QAPpC,mBAAc,GAA8B;YAClD,gBAAgB,EAAE,EAAE;YACpB,WAAW,EAAE,KAAK;SACnB,CAAC;QACM,oBAAe,GAAG,GAAG,CAAC;QACtB,uBAAkB,GAAG,KAAK,CAAC;QA8G3B,qBAAgB,GAAG,qBAAQ,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,eAAe,EAAE;YAC7E,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,IAAI;SACf,CAAC,CAAC;QA9GD,IAAI,CAAC,OAAO,gBACP,IAAI,CAAC,cAAc,EACnB,IAAI,CAAC,OAAO,CAChB,CAAC;QAEF,IAAI,CAAC,EAAE,GAAG,qBAAQ,CAAC,iBAAiB,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAEO,yBAAM,GAAd;QACE,IAAI,CAAC,OAAO,GAAG,QAAE,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,4BAA0B,IAAI,CAAC,OAAO,CAAC,gBAAkB,EAAE,CAAC,CAAC,EAAE,CAAC;QACtG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,4BAA4B,EAAE,CAAC;QACpC,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAEO,uCAAoB,GAA5B;QACE,IAAI,CAAC,KAAK,GAAG,IAAI,6BAAa,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC;IAEO,+CAA4B,GAApC;QACE,IAAI,CAAC,oBAAoB,GAAG,QAAE,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,+BAA+B,EAAE,EAAE,mBAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;QACjH,eAAM,CAAC,wBAAwB,CAAC,IAAI,CAAC,oBAAoB,EAAE,mCAAmC,CAAC,CAAC;QAChG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAC5D,CAAC;IAEO,sCAAmB,GAA3B,UAA4B,IAAa;QACvC,QAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;IAEO,wCAAqB,GAA7B;QACE,IAAI,CAAC,MAAM,GAAG,IAAI,+BAAc,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAChD,CAAC;IAEM,2BAAQ,GAAf;QACE,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;IAC1B,CAAC;IAEO,8BAAW,GAAnB;QACE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;QAC1B,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAEO,gCAAa,GAArB;QACE,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,CAAC;QAC/B,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;IACjC,CAAC;IAEM,gCAAa,GAApB,UAAqB,KAAa;QAAlC,iBASC;QARC,IAAI,aAAK,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;YAC9B,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;SAC3B;QAED,IAAI,CAAC,gBAAgB,CACnB,cAAM,YAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,EAAjC,CAAiC,EACvC,cAAM,YAAI,CAAC,MAAM,CAAC,WAAW,EAAE,EAAzB,CAAyB,CAChC,CAAC;IACJ,CAAC;IAEM,8BAAW,GAAlB;QACE,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE;YAChC,OAAO;SACR;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE;YACpC,OAAO;SACR;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;YAC5B,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;SACxB;QAED,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAEM,gDAA6B,GAApC,UAAqC,UAA4C;QAC/E,IAAI,CAAC,KAAK,CAAC,6BAA6B,CAAC,UAAU,CAAC,CAAC;IACvD,CAAC;IAEM,iCAAc,GAArB;QACE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE;YAC5B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,WAAC,CAAC,eAAe,CAAC,CAAC,CAAC;YACrD,OAAO;SACR;QAED,IAAI,IAAI,GAAG,WAAC,CAAC,yBAAyB,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QAClH,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,sBAAsB,EAAE,EAAE;YAC/E,IAAI,GAAM,IAAI,UAAK,WAAC,CAAC,qBAAqB,CAAC,MAAG,CAAC;SAChD;QAED,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAEM,qCAAkB,GAAzB;QAAA,iBAOC;QANC,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE,CAAC;QAC/B,IAAI,CAAC,OAAO,CAAC,UAAU;YACrB,IAAI,CAAC,gBAAgB,CACnB,cAAM,YAAI,CAAC,OAAO,CAAC,UAAU,CAAC,iBAAiB,EAAE,EAA3C,CAA2C,EACjD,cAAM,YAAI,CAAC,MAAM,CAAC,mBAAmB,EAAE,EAAjC,CAAiC,CACxC,CAAC;IACN,CAAC;IAOa,iCAAc,GAA5B,UAA6B,OAA2B,EAAE,QAAmB;;;;;;wBAC3E,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;wBAChC,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;wBAEd,qBAAM,OAAO,EAAE;;wBAA1B,QAAQ,GAAG,SAAe;wBAChC,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;wBAEhC,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE;4BAC5B,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;4BACzC,QAAQ,IAAI,QAAQ,EAAE,CAAC;yBACxB;;;;;KACF;IACH,eAAC;AAAD,CAAC;AA1IY,4BAAQ;;;;;;;ACXrB,yC;;;;;;;;;ACAA,yCAAsD;AAEtD,mCAAwC;AAExC;IAIE,mCAAoB,UAA6B,EAAE,YAAuB;QAAvB,4DAAsB,CAAC;QAAtD,eAAU,GAAV,UAAU,CAAmB;QAC/C,IAAI,CAAC,QAAQ,GAAG,IAAI,mBAAQ,CAC1B,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EACvB,IAAI,CAAC,UAAU,CAAC,YAAY,EAC5B,IAAI,CAAC,UAAU,CAAC,eAAe,EAC/B,MAAI,IAAI,CAAC,UAAU,CAAC,cAAc,MAAG,CACtC,CAAC;QAEF,IAAM,KAAK,GAAG,QAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAChF,IAAM,WAAW,GAAG,QAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;QAE7F,IAAI,KAAK,IAAI,WAAW,EAAE;YACxB,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;YAC1D,KAAK,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;YAC1C,WAAW,CAAC,YAAY,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;SACjD;QAED,IAAI,CAAC,UAAU,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC1D,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC;IAC5C,CAAC;IACH,gCAAC;AAAD,CAAC;AAxBY,8DAAyB;;;;;;;;;;ACJtC,yBAAkD;AAClD,mCAAwC;AACxC,0CAAqD;AAGrD,gDAAsE;AACtE,uCAA6C;AAE7C,iEAAwF;AACxF,qCAA6C;AAC7C,oDAAmF;AAMnF;IASE,4BAAoB,KAAoB,EAAE,YAA4C;QAAlE,UAAK,GAAL,KAAK,CAAe;QAPhC,SAAI,GAAG,QAAE,CAAC,IAAI,EAAE;YACtB,SAAS,EAAE,4BAA4B;YACvC,iBAAiB,EAAE,4CAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YACjE,IAAI,EAAE,OAAO;SACd,CAAC,CAAC,EAAE,CAAC;QAIJ,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjD,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAEM,+CAAkB,GAAzB,UAA0B,QAAwB;QAAlD,iBAEC;QADC,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,UAAC,UAAU,EAAE,KAAK,IAAK,YAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,UAAU,EAAE,KAAK,CAAC,EAAvD,CAAuD,CAAC,CAAC;IACzH,CAAC;IAEM,0CAAa,GAApB,UAAqB,KAAe;QAClC,IAAI,CAAC,WAAW,GAAG,aAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,eAAK,IAAI,YAAK,CAAC,KAAK,EAAX,CAAW,CAAC,CAAC;IAC9F,CAAC;IAEM,wCAAW,GAAlB;QACE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,gBAAgB,EAAE,CAAC;IAC1D,CAAC;IAED,sBAAW,8CAAc;aAAzB;YACE,OAAO,IAAI,CAAC,WAAW,CAAC;QAC1B,CAAC;;;OAAA;IAED,sBAAW,yCAAS;aAApB;YACE,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,oBAAU,IAAI,iBAAU,CAAC,KAAK,EAAhB,CAAgB,CAAC,CAAC;QAC9D,CAAC;;;OAAA;IAED,sBAAW,8CAAc;aAAzB;YACE,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,eAAK,IAAI,YAAK,CAAC,UAAU,EAAhB,CAAgB,CAAC,CAAC,GAAG,CAAC,UAAC,EAAS;oBAAP,gBAAK;gBAAO,YAAK;YAAL,CAAK,CAAC,CAAC;QACtF,CAAC;;;OAAA;IAED,sBAAY,qDAAqB;aAAjC;YACE,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,eAAK,IAAI,YAAK,CAAC,UAAU,EAAhB,CAAgB,CAAC,CAAC,GAAG,CAAC,UAAC,EAAgB;oBAAd,8BAAY;gBAAO,mBAAY;YAAZ,CAAY,CAAC,CAAC;QACpG,CAAC;;;OAAA;IAED,sBAAW,4CAAY;aAAvB;YACE,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,eAAK,IAAI,QAAC,KAAK,CAAC,MAAM,EAAb,CAAa,CAAC,CAAC;QACzD,CAAC;;;OAAA;IAED,sBAAY,+CAAe;aAA3B;YACE,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,eAAK,IAAI,QAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,eAAe,GAAG,CAAC,EAA1C,CAA0C,CAAC,CAAC;QACtF,CAAC;;;OAAA;IAED,sBAAW,iDAAiB;aAA5B;YACE,OAAO,CAAC,CAAC,sBAAS,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,iCAAe,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC5E,CAAC;;;OAAA;IAED,sBAAW,+CAAe;aAA1B;YACE,OAAO,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;QACpC,CAAC;;;OAAA;IAED,sBAAW,6CAAa;aAAxB;YACE,OAAO,CAAC,CAAC,sBAAS,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,iCAAe,CAAC,IAAI,EAAE,CAAC,CAAC;QACxE,CAAC;;;OAAA;IAEM,qCAAQ,GAAf;QACE,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,eAAK,IAAI,YAAK,CAAC,QAAQ,EAAE,EAAhB,CAAgB,CAAC,CAAC;IACtD,CAAC;IAED,sBAAW,yCAAS;aAApB;YACE,OAAO,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;QACtC,CAAC;;;OAAA;IAED,sBAAW,kDAAkB;aAA7B;YACE,OAAO,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;QACvC,CAAC;;;OAAA;IAEM,6CAAgB,GAAvB,UAAwB,GAA+B;QACrD,IAAM,KAAK,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;QACxD,IAAM,UAAU,GAAG,iBAAI,CAAC,IAAI,CAAC,WAAW,EAAE,oBAAU,IAAI,iBAAU,CAAC,MAAM,CAAC,KAAK,CAAC,EAAxB,CAAwB,CAAC,CAAC;QAClF,OAAO,UAAU,IAAI,UAAU,CAAC,UAAU,CAAC;IAC7C,CAAC;IAEM,gCAAG,GAAV,UAAW,GAA+B;QACxC,IAAM,KAAK,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;QACxD,IAAM,UAAU,GAAG,iBAAI,CAAC,IAAI,CAAC,WAAW,EAAE,oBAAU,IAAI,iBAAU,CAAC,MAAM,CAAC,KAAK,CAAC,EAAxB,CAAwB,CAAC,CAAC;QAElF,IAAI,UAAU,EAAE;YACd,OAAO,UAAU,CAAC;SACnB;QAED,IAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAC/D,IAAI,CAAC,aAAa,EAAE;YAClB,OAAO,IAAI,CAAC;SACb;QAED,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACrC,OAAO,aAAa,CAAC;IACvB,CAAC;IAEM,kCAAK,GAAZ,UAAa,KAAa;QACxB,IAAM,UAAU,GAAG,iBAAI,CAAC,IAAI,CAAC,WAAW,EAAE,oBAAU,IAAI,iBAAU,CAAC,MAAM,CAAC,KAAK,CAAC,EAAxB,CAAwB,CAAC,CAAC;QAClF,IAAI,CAAC,UAAU,EAAE;YACf,OAAO;SACR;QACD,UAAU,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAEO,0CAAa,GAArB;QAAA,iBAYC;QAXC,IAAM,QAAQ,GAAG,IAAI,qEAAmC,CAAC;YACvD,SAAS,EAAE,+BAA+B;YAC1C,SAAS,EAAE,WAAC,CAAC,sBAAsB,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAC9D,KAAK,EAAE,WAAC,CAAC,UAAU,CAAC;YACpB,MAAM,EAAE;gBACN,KAAI,CAAC,KAAK,CAAC,0BAA0B,EAAE,CAAC;gBACxC,KAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;YAC9B,CAAC;SACF,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC,OAAO,CAAC;IAC1B,CAAC;IAEO,0CAAa,GAArB;QAAA,iBAYC;QAXC,IAAM,QAAQ,GAAG,IAAI,qEAAmC,CAAC;YACvD,SAAS,EAAE,+BAA+B;YAC1C,SAAS,EAAE,WAAC,CAAC,sBAAsB,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAC9D,KAAK,EAAE,WAAC,CAAC,UAAU,CAAC;YACpB,MAAM,EAAE;gBACN,KAAI,CAAC,KAAK,CAAC,0BAA0B,EAAE,CAAC;gBACxC,KAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;YAC9B,CAAC;SACF,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC,OAAO,CAAC;IAC1B,CAAC;IAED,sBAAY,oDAAoB;aAAhC;YACE,IAAM,wBAAwB,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC;YAE7F,OAAO,wBAAwB,IAAI,IAAI,CAAC,aAAa,CAAC;QACxD,CAAC;;;OAAA;IAEO,+CAAkB,GAA1B,UAA2B,QAA0B;QACnD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE;YACtC,OAAO;SACR;QAED,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC7B,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;SAC5C;QAED,IAAI,IAAI,CAAC,KAAK,CAAC,mBAAmB,EAAE;YAClC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;SAC5C;IACH,CAAC;IAEO,0DAA6B,GAArC,UAAsC,QAA0B;QAC9D,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YAC3B,OAAO;SACR;QAED,IAAM,cAAc,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7D,QAAQ,CAAC,WAAW,CAClB,QAAE,CACA,IAAI,EACJ;YACE,SAAS,EAAE,sCAAsC;YACjD,SAAS,EAAK,WAAC,CAAC,mBAAmB,CAAC,UAAK,cAAgB;SAC1D,EACD,mBAAM,CAAC,cAAc,CAAC,CACvB,CAAC,EAAE,CACL,CAAC;IACJ,CAAC;IAEM,mCAAM,GAAb;QACE,IAAM,QAAQ,GAAG,QAAQ,CAAC,sBAAsB,EAAE,CAAC;QACnD,QAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;QAEtB,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,oBAAU;YACrC,QAAQ,CAAC,WAAW,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAElC,IAAI,CAAC,6BAA6B,CAAC,QAAQ,CAAC,CAAC;QAE7C,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAChC,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IACH,yBAAC;AAAD,CAAC;AA1LY,gDAAkB;;;;;;;;;;;;;;;;;;ACf/B,sCAAwC;AAExC,4CAAoD;AACpD,0CAAuC;AAGvC,4DAA0E;AAE1E;IAOE,qCAAsB,KAAoB;QAApB,UAAK,GAAL,KAAK,CAAe;QAJlC,wBAAmB,GAAG,KAAK,CAAC;QAC5B,qBAAgB,GAAG,KAAK,CAAC;QACzB,yBAAoB,GAAG,KAAK,CAAC;QAGnC,IAAI,CAAC,cAAc,GAAG,IAAI,uDAA0B,CAAC;YACnD,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;YAC9B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS;YAC3B,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS;YAC1B,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY;YAC7C,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc;YACjD,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB;SACtD,CAAC,CAAC;QACH,IAAI,CAAC,4BAA4B,EAAE,CAAC;QACpC,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAEO,2DAAqB,GAA7B;QAAA,iBAMC;QALC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,yBAAW,CAAC,WAAW,EAAE;YACrD,KAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;YACjC,KAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;YAC9B,KAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;QACpC,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,qEAA+B,GAAtC,UAAuC,wBAAgC;QACrE,IAAI,CAAC,uBAAuB,IAAI,wBAAwB,CAAC;IAC3D,CAAC;IAEM,kEAA4B,GAAnC;QACE,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC;IACnE,CAAC;IAEM,oEAA8B,GAArC;QACE,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;IACnC,CAAC;IAEM,mEAA6B,GAApC;QACE,IAAI,IAAI,CAAC,uCAAuC,EAAE;YAChD,OAAO;SACR;QAED,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAClC,CAAC;IAEM,gEAA0B,GAAjC;QACE,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAC/B,CAAC;IAED,sBAAY,gFAAuC;aAAnD;YACE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,kBAAkB,EAAE;gBACnD,OAAO,KAAK,CAAC;aACd;YAED,IAAI,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,iCAAiC,EAAE;gBACjE,OAAO,KAAK,CAAC;aACd;YAED,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,IAAI,CAAC,uBAAuB,CAAC;QAClE,CAAC;;;OAAA;IAED;;;OAGG;IACI,8DAAwB,GAA/B,UAAgC,YAA0B;QACxD,eAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAE5B,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAC1D,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,YAAY,CAAC,YAAY,CAAC,gBAAgB,GAAG,IAAI,CAAC;SACnD;IACH,CAAC;IAEM,uDAAiB,GAAxB;QACE,oBACK,IAAI,CAAC,cAAc,CAAC,wBAAwB,EAAE,IACjD,aAAa,EAAE,IAAI,CAAC,aAAa,EACjC,cAAc,EAAE,IAAI,CAAC,cAAc,EACnC,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,EAC7C,iBAAiB,EAAE,IAAI,CAAC,oBAAoB,EAC5C,eAAe,EAAE,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,IACjF;IACJ,CAAC;IAEM,qDAAe,GAAtB;QACE,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;QACxD,8FAA8F;QAC9F,+CAA+C;QAC/C,KAAK,CAAC,eAAe,GAAG,CAAC,CAAC;QAE1B,IAAM,yBAAyB,GAAG,sBAAS,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9F,IAAI,yBAAyB,KAAK,CAAC,CAAC,EAAE;YACpC,KAAK,CAAC,MAAM,CAAC,yBAAyB,CAAC,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;SACpE;aAAM,IAAI,KAAK,CAAC,MAAM,EAAE;YACvB,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;SAC7C;aAAM;YACL,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;SAC3C;QAED,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAChE,CAAC;IAED,sBAAc,sDAAa;aAA3B;YACE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,UAAC,EAAgB;oBAAd,gBAAK,EAAE,gBAAK;gBAAO,QAAC;oBACjE,KAAK;oBACL,KAAK;iBACN,CAAC;YAHgE,CAGhE,CAAC,CAAC;QACN,CAAC;;;OAAA;IAED,sBAAc,uDAAc;aAA5B;YACE,IAAI,IAAI,CAAC,mBAAmB,EAAE;gBAC5B,OAAO,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;aAClC;YAED,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,uBAAuB,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QACvF,CAAC;;;OAAA;IACH,kCAAC;AAAD,CAAC;AAxHY,kEAA2B;;;;;;;;;;ACTxC,mCAA6C;AAE7C,2DAAwE;AAGxE;IAIE,mCAAoB,UAA6B,EAAU,KAAoB;QAA3D,eAAU,GAAV,UAAU,CAAmB;QAAU,UAAK,GAAL,KAAK,CAAe;IAAG,CAAC;IAE5E,0CAAM,GAAb;QACE,IAAI,CAAC,GAAG,GAAG,QAAE,CAAC,IAAI,EAAE;YAClB,SAAS,EAAE,2BAA2B;YACtC,IAAI,EAAE,MAAM;YACZ,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK;SACjC,CAAC,CAAC;QAEH,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,6BAA6B,EAAE,CAAC;QAErC,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;IACrB,CAAC;IAEO,uDAAmB,GAA3B;QACE,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,gBAAgB,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IACrE,CAAC;IAEO,kDAAc,GAAtB;QACE,IAAI,CAAC,aAAa,GAAG,IAAI,qDAAyB,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAClG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC9C,CAAC;IAEO,iEAA6B,GAArC;QAAA,iBAIC;QAHC,IAAM,cAAc,GAAG,QAAE,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrE,QAAE,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,SAAS,EAAE,cAAM,YAAI,CAAC,SAAS,EAAE,EAAhB,CAAgB,CAAC,CAAC;QACzD,QAAE,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,UAAU,EAAE,cAAM,YAAI,CAAC,UAAU,EAAE,EAAjB,CAAiB,CAAC,CAAC;IAC7D,CAAC;IAEO,6CAAS,GAAjB;QACE,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;IACrC,CAAC;IAEO,8CAAU,GAAlB;QACE,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC;IACxC,CAAC;IAEO,gDAAY,GAApB;QAAA,iBASC;QARC,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACpD,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,KAAK,CAAC,6BAA6B,EAAE,CAAC;QAC3C,IAAI,CAAC,KAAK,CAAC,0BAA0B,EAAE,CAAC;QACxC,IAAI,CAAC,KAAK,CAAC,8BAA8B,EAAE,CAAC;QAC5C,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QACzB,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QAC1D,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,cAAM,YAAI,CAAC,UAAU,CAAC,0BAA0B,EAAE,EAA5C,CAA4C,CAAC,CAAC;IACjF,CAAC;IACH,gCAAC;AAAD,CAAC;AArDY,8DAAyB;;;;;;;;;;ACAtC;;GAEG;AACH;IAAA;IAQA,CAAC;IAPC;;;;;OAKG;IACW,mCAAgB,GAAG,kBAAkB,CAAC;IACtD,yBAAC;CAAA;AARY,gDAAkB;;;;;;;;;;ACP/B,yCAAgD;AAChD,mCAAqC;AACrC,+BAAgC;AAyBhC;IACE,8BACS,SAAwC,EACxC,QAAkE,EAClE,UAAoE;QAFpE,cAAS,GAAT,SAAS,CAA+B;QACxC,aAAQ,GAAR,QAAQ,CAA0D;QAClE,eAAU,GAAV,UAAU,CAA0D;IAC1E,CAAC;IAEG,kDAAmB,GAA1B,UAA2B,OAAsC,EAAE,IAA+B;QAChG,IAAI,OAAoB,CAAC;QACzB,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE;YACvB,OAAO,GAAG,QAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YACvB,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;gBACzB,IAAI,MAAM,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBACvC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;aAC7B;YACD,IAAI,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAChD,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,aAAG;gBACd,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YAC3B,CAAC,CAAC,CAAC;SACJ;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,iDAAkB,GAA1B;QACE,OAAO,QAAE,CACP,KAAK,EACL,SAAS,EACT,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC;YAC7B,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK;SACzC,CAAC,CACH,CAAC,EAAE,CAAC;IACP,CAAC;IAEO,+CAAgB,GAAxB,UAAyB,OAAsC,EAAE,IAA+B;QAAhG,iBAuBC;QAtBC,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAM;YACpB,IAAI,GAAG,GAAG,QAAE,CACV,KAAK,EACL,SAAS,EACT,KAAI,CAAC,SAAS,CAAC,GAAG,CAAC;gBACjB,QAAQ,EAAE,MAAM,CAAC,KAAK;gBACtB,IAAI,EAAE,mBAAQ,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC;aACjF,CAAC,CACH,CAAC,EAAE,CAAC;YACL,QAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE;gBAClB,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAI,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAC/C,CAAC,CAAC,CAAC;YACH,QAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,gBAAgB,EAAE;gBAC3B,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAI,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAC/C,CAAC,CAAC,CAAC;YACH,QAAE,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE;gBACtB,KAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAI,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YACjD,CAAC,CAAC,CAAC;YACH,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;QACH,OAAO,GAAG,CAAC;IACb,CAAC;IACH,2BAAC;AAAD,CAAC;AAzDY,oDAAoB;;;;;;;AC5BjC,yC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA,mCAAkC;AAClC,yBAAuC;AAQvC,sBAAmC,OAAoB,EAAE,OAAwC;;;;;;oBACzF,cAAc,GAAG,EAAE,SAAS,EAAE,qBAAqB,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC;yBAG/F,OAAO,CAAC,SAAS,EAAjB,wBAAiB;oBACnB,mBAAmB,GAAG,QAAE,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC;oBAChD,MAAM,GAAG,IAAI,OAAO,CAAC,iBAAO,IAAI,0BAAmB,CAAC,gBAAgB,CAAC,MAAM,EAAE,cAAM,cAAO,EAAE,EAAT,CAAS,CAAC,EAA7D,CAA6D,CAAC,CAAC;oBACrG,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;oBACzC,qBAAM,MAAM;;oBAAZ,SAAY,CAAC;oBACb,WAAW,GAAI,mBAAyC,CAAC,eAAe,CAAC,IAAI,CAAC;;;oBAE9E,mBAAmB,GAAG,QAAE,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC;oBACnD,WAAW,GAAG,mBAAmB,CAAC;oBAClC,OAAO,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;;;oBAG3C,WAAW,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;oBACzB,mBAAmB,GAAG,QAAE,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,CAAC,CAAC,EAAE,CAAC;oBACvE,WAAW,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;oBAC7C,gBAAgB,CAAC,mBAAmB,EAAE,mBAAmB,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;oBAClF,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE;wBAC3B,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,GAAG,EAAE,cAAM,0BAAmB,EAAnB,CAAmB,EAAE,CAAC,CAAC;qBAClF;oBAED,sBAAO,mBAAmB,EAAC;;;;CAC5B;AAzBD,oCAyBC;AAED,0BAA0B,eAA4B,EAAE,OAAoB,EAAE,QAAmB;IAC/F,IAAI,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC;IACpC,IAAI,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC;IAEtC,IAAM,cAAc,GAAG,IAAI,gBAAgB,CAAC;QAC1C,IAAI,SAAS,KAAK,OAAO,CAAC,WAAW,IAAI,UAAU,KAAK,OAAO,CAAC,YAAY,EAAE;YAC5E,OAAO;SACR;QACD,SAAS,GAAG,OAAO,CAAC,WAAW,CAAC;QAChC,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC;QAClC,eAAe,CAAC,KAAK,CAAC,KAAK,GAAM,OAAO,CAAC,WAAW,OAAI,CAAC;QACzD,eAAe,CAAC,KAAK,CAAC,MAAM,GAAM,OAAO,CAAC,YAAY,OAAI,CAAC;QAC3D,IAAI,QAAQ,EAAE;YACZ,QAAQ,EAAE,CAAC;SACZ;IACH,CAAC,CAAC,CAAC;IACH,cAAc,CAAC,OAAO,CAAC,OAAO,EAAE;QAC9B,UAAU,EAAE,IAAI;QAChB,aAAa,EAAE,IAAI;QACnB,SAAS,EAAE,IAAI;QACf,OAAO,EAAE,IAAI;KACd,CAAC,CAAC;AACL,CAAC;;;;;;;;;;;;;;AC1DM;AACP;AACA;AACA,+BAA+B;AAC/B,8CAA8C;AAC9C;AACA;AACA;;AAEO;AACP;AACA;AACA,sCAAsC;AACtC,4DAA4D;AAC5D;AACA;AACA;;;;;;AChBA;;AAEO;AACA;;;ACH2B;AACJ;AACG;;AAE1B,gBAAgB;;AAER;AACf,cAAc,wCAAG;AACjB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yBAAyB,wCAAG;AAC5B;AACA;AACA;AACA;;AAEA;AACA,uCAAuC,KAAK;AAC5C;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,EAAE,SAAS;;AAEX;AACA;;;AC5C2C;AACV;AACD;;AAEjB;AACf,cAAc,OAAO;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,4BAAQ,qBAAqB,yBAAyB,EAAE;AACzE;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,SAAS;AAClB;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEO;AACP;AACA;;;;;;ACnGe;AACf;AACA;AACA;AACA,CAAC;;;ACJc;AACf;AACA,CAAC;;;ACF+B;AACoE;AACjE;AACD;AACJ;;AAE9B;;AAEO;AACP;AACA;;AAEA;AACA;AACA,qBAAqB,oBAAoB;AACzC,QAAQ,QAAQ;AAChB;;AAEA;AACA;AACA;AACA,sBAAsB,oCAAoC;AAC1D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,kBAAkB;AACxC;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,YAAY,6BAAM;AAClB;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA,oBAAoB,yCAAgB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,wFAAwF,+CAAiB;AACzG;;AAEA;AACA,wCAAwC,GAAG,SAAS,MAAM;AAC1D;;AAEA;AACA,uCAAuC,KAAK;AAC5C;;AAEA;AACA,mBAAmB,KAAK,wBAAwB,8CAAgB;AAChE;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;;;;;;AC3HkC;AAC+E;;AAElG;AACf,aAAa,+BAAQ;AACrB;AACA,cAAc,gDAAe;AAC7B;AACA;AACA;AACA,4DAA4D,gDAAe;AAC3E,aAAa,6CAAY;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,+CAAc;AAC1E;AACA;AACA;AACA;AACA,4DAA4D,+CAAc;AAC1E;AACA;AACA;AACA,SAAS,uCAAM;AACf,CAAC;;;AC5B6C;AACU;AACvB;AACK;;AAE/B;AACP;;AAEA;AACA;AACA,WAAW,4BAAK;AAChB;;AAEA;AACA;AACA,WAAW,cAAU;AACrB;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,WAAW,oCAAa;;AAExB;AACA;AACA;AACA,aAAa,oCAAa;AAC1B,KAAK;AACL;AACA;AACA,aAAa,oCAAa;AAC1B;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEe;AACf,cAAc,UAAU,CAAC,QAAQ,EAAE,QAAQ;;AAE3C;AACA,WAAW,IAAI;AACf;;AAEA,EAAE,SAAS;;AAEX;AACA;;;ACvE4B;AACO;AACL;;AAEf,SAAS,iBAAQ;AAChC;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA,wCAAwC,GAAG,SAAS,MAAM;AAC1D;;AAEA;AACA;AACA;;AAEA;AACA,WAAW,iBAAQ;AACnB;;AAEA,8BAA8B,GAAG,cAAc,MAAM;;AAErD,SAAS,SAAS;AAClB;;;AC5Be;AACf;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;;ACjB8B;AACE;AACP;AACqB;AACd;;AAEjC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,0BAA0B;AAC/C;;AAEA;AACA;AACA;AACA;AACA,8CAA8C,2BAA2B,EAAE;AAC3E;;AAEA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uBAAuB,OAAO;AAC9B,gCAAgC,UAAU;AAC1C;AACA;AACA;AACA;AACA;AACA,OAAO,YAAY,OAAO;AAC1B,uCAAuC,QAAQ;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,UAAU,4BAAK;AACf;;AAEA;AACA;;AAEA;AACA;AACA,qDAAqD,uCAAM;AAC3D;AACA;AACA,6DAA6D;AAC7D;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kBAAkB,IAAI;AACtB,0BAA0B,kCAAkC,EAAE;AAC9D,yBAAyB,iCAAiC;AAC1D,KAAK;AACL;;AAEA;AACA;;AAEe;AACf,sBAAsB,WAAW;;AAEjC;AACA,WAAW,IAAI;AACf;;AAEA,EAAE,SAAS;;AAEX;AACA;;;AChJmC;AACY;AACd;;AAEjC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEO;AACP;;AAEA;AACA;AACA;;AAEA,SAAS,SAAS;AAClB;;AAEe;AACf,wBAAwB,WAAW;;AAEnC;AACA,WAAW,IAAI;AACf;;AAEA,SAAS,SAAS;AAClB;;;AClCmC;AACsB;AACxB;;AAEjC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEO;AACP,wBAAwB,QAAQ,EAAE,QAAQ;AAC1C;;AAEA;AACA,sCAAsC,QAAQ,EAAE,QAAQ;AACxD;AACA;AACA;;AAEA;AACA;AACA;;AAEA,SAAS,SAAS;AAClB;;AAEe;AACf,qBAAqB,WAAW;;AAEhC;AACA,WAAW,IAAI;AACf;;AAEA,EAAE,SAAS;;AAEX;AACA;;AAEO;AACP;AACA;;;ACjDkE;AACpC;AACG;;AAElB;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,wCAAwC,+BAAS;AACjD;AACA;;AAEA;AACA,2CAA2C,6BAAM;AACjD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,oCAAoC,OAAO;AAC3C,gBAAgB,wBAAS;AACzB;AACA;;AAEA;AACA,uCAAuC,KAAK;AAC5C;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,SAAS;AAClB;;;ACzDgC;AACF;AACK;AACF;;AAElB;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,0BAA0B,6BAAM;AAChC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,4CAA4C,KAAK;AACjD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,SAAS,OAAO,SAAS;AAClC;;;ACxDgC;AACF;AACG;;AAElB;AACf;AACA;AACA;AACA;;AAEA;AACA,0BAA0B,6BAAM;AAChC;;AAEA;AACA,wCAAwC,KAAK;AAC7C;;AAEA;AACA,uCAAuC,KAAK;AAC5C;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,SAAS;AAClB;;;;;;;;;ACvC4C;AACsE;AACxE;AACd;AAC4B;AACvB;AACP;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,SAAS,WAAM;AACf;AACA;;AAEO;AACP,cAAc,UAAU,CAAC,QAAQ,EAAE,QAAQ;AAC3C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,cAAc,+BAAQ,cAAc,aAAa,EAAE;AACnD;AACA,eAAe,+BAAQ;AACvB;AACA,OAAO;AACP;AA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4B,KAA5B,oCAA4B,QAavC;AAED,iCAAwC,gBAAwB;IAC9D,OAAO,CAAC,CAAC,4BAA4B,CAAC,gBAAgB,CAAC,CAAC;AAC1D,CAAC;AAFD,0DAEC;;;;;;;ACzBD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,iBAAiB;AACpC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,sBAAsB;AACzC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,uBAAuB,SAAS;AAChC;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,WAAW,OAAO;AAClB,WAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,4CAA4C,KAAK;;AAEjD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,mCAAmC,OAAO;AAC1C;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;;AAGA;AACA;AACA,yDAAyD;AACzD;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA;AACA,WAAW;AACX;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,mBAAO,CAAC,GAAoB;;AAE/C;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,SAAS;AACpB;AACA,WAAW,SAAS;AACpB;AACA,mBAAmB,mBAAO,CAAC,GAAU;;AAErC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,mBAAmB,sBAAsB;AACzC;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,mBAAmB,sBAAsB;AACzC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,kCAAkC;AAC7D,2BAA2B,mDAAmD;AAC9E;;AAEA;AACA;AACA;AACA;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AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,0CAA0C,SAAS;;AAEnD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B;;AAE7B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4FAA4F,aAAa;AACzG;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,4EAA4E,eAAe;AAC3F;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,i/BAAi/B;;AAEj/B;AACA,uYAAuY;AACvY;AACA;AACA;;AAEA;AACA,+SAA+S;AAC/S;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,8BAA8B,EAAE,iBAAiB,EAAE,KAAK;;AAExD;AACA,qDAAqD;;AAErD,yCAAyC;;AAEzC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,0BAA0B;AACvC,aAAa,SAAS;AACtB,cAAc,mBAAmB;AACjC;AACA;;;AAGA;AACA;AACA;AACA,KAAK;AACL;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qEAAqE;AACrE;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,0CAA0C;AAC1C;;AAEA;AACA,0CAA0C;AAC1C;AACA;AACA,kBAAkB,qBAAqB;AACvC,kBAAkB,qBAAqB;AACvC,kBAAkB,QAAQ;AAC1B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,6CAA6C;AAC7C;;AAEA;AACA,2CAA2C;AAC3C;;AAEA;AACA,iDAAiD;AACjD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,OAAO;AACvB;AACA;;;AAGA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;;AAGA;AACA;AACA,qKAAqK;;AAErK;AACA;AACA,OAAO;AACP;;AAEA,wDAAwD;AACxD,wDAAwD;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8DAA8D;AAC9D,sDAAsD;AACtD,sDAAsD;AACtD;AACA,sDAAsD;;AAEtD,sDAAsD;;AAEtD,qEAAqE;;AAErE,2DAA2D;;AAE3D,mDAAmD;;AAEnD,2CAA2C;;AAE3C,6DAA6D;;AAE7D,6DAA6D;;AAE7D,2CAA2C;;AAE3C,gDAAgD;;AAEhD,+DAA+D;;AAE/D,gDAAgD;;AAEhD,uCAAuC;;AAEvC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA,kCAAkC;AAClC;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,OAAO;AACP;;;AAGA;AACA;AACA;;AAEA;AACA;;AAEA,oDAAoD;AACpD,6CAA6C,wDAAwD;AACrG;AACA;AACA;;AAEA,kDAAkD;AAClD;AACA;AACA;;AAEA,kCAAkC;AAClC;AACA;AACA,qCAAqC;AACrC;AACA;AACA;AACA;AACA,gBAAgB,QAAQ;AACxB,iBAAiB,QAAQ;AACzB;AACA;AACA;;AAEA;AACA,0CAA0C;AAC1C;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;;AAGA;AACA;AACA,SAAS;AACT;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;;;AAGA;AACA;AACA,SAAS;AACT;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS;AACT;;;AAGA;AACA,OAAO;AACP;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,gBAAgB,KAAK;AACrB;;;AAGA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,OAAO;AACvB,gBAAgB,KAAK;AACrB;;;AAGA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT,OAAO;AACP;AACA;AACA;AACA,SAAS;AACT;;AAEA,iCAAiC;;AAEjC;AACA;AACA;AACA;AACA,WAAW;AACX,SAAS;AACT;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,OAAO;AACvB,gBAAgB,SAAS;AACzB;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA;;;AAGA;AACA;;AAEA;AACA;AACA,SAAS,YAAY;AACrB;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAgB,SAAS;AACzB,gBAAgB,SAAS;AACzB;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,KAAK;AACrB,gBAAgB,QAAQ;AACxB;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,KAAK;AACrB,gBAAgB,QAAQ;AACxB;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,OAAO;AACvB,gBAAgB,KAAK;AACrB,gBAAgB,OAAO;AACvB;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,KAAK;AACtB,iBAAiB,QAAQ;AACzB;;;AAGA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA,OAAO;AACP;;;AAGA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;;AAEA,wCAAwC,QAAQ;AAChD;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAgB,OAAO;AACvB,gBAAgB,OAAO;AACvB,gBAAgB,OAAO;AACvB,gBAAgB,QAAQ;AACxB;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C;;;AAG3C,uFAAuF,+DAA+D;AACtJ;AACA;AACA;AACA;AACA;AACA,sTAAsT;AACtT;AACA;AACA;;AAEA,OAAO,wCAAwC,sFAAsF,oKAAoK,qHAAqH,mBAAmB;AACjb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,KAAK;AACrB;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,qCAAqC;;AAErC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,4CAA4C;;AAE5C;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;;;AAGA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA,8CAA8C;;;AAG9C;AACA;AACA;;;AAGA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;;AAEA;AACA,SAAS;AACT;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iBAAiB;AACjC;;;AAGA;AACA;;AAEA;AACA;;;AAGA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,YAAY;AAC3B,eAAe,OAAO;AACtB;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS;AACT;AACA,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;;AAGA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;;AAGA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,OAAO;AACvB,gBAAgB,OAAO;AACvB,gBAAgB,OAAO;AACvB,gBAAgB,QAAQ;AACxB;;;AAGA;AACA;AACA;AACA,uBAAuB;AACvB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,eAAe,SAAS;AACxB;;;AAGA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB,gBAAgB,SAAS;AACzB;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,OAAO;AACvB;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA,CAAC;AACD;;;;;;;;;;AC7oDA,kDAAoE;AACpE,oDAAwE;AACxE,kDAAoE;AACpE,mDAAsE;AACtE,kDAAgE;AAChE,oDAAoE;AACpE,kDAAgE;AAEhE,kDAAoE;AACpE,oDAAwE;AACxE,2CAAsD;AAGtD;IACE,oCAAoB,QAAyB,EAAU,IAAiB;QAApD,aAAQ,GAAR,QAAQ,CAAiB;QAAU,SAAI,GAAJ,IAAI,CAAa;IAAG,CAAC;IAErE,2CAAM,GAAb,UAAc,IAAY,EAAE,OAA+B;QACzD,QAAQ,IAAI,EAAE;YACZ,KAAK,cAAc;gBACjB,OAAO,IAAI,CAAC,sBAAsB,EAAE,CAAC;YACvC,KAAK,gBAAgB;gBACnB,OAAO,IAAI,CAAC,wBAAwB,EAAE,CAAC;YACzC,KAAK,cAAc;gBACjB,OAAO,IAAI,CAAC,sBAAsB,EAAE,CAAC;YACvC,KAAK,eAAe;gBAClB,OAAO,IAAI,CAAC,uBAAuB,EAAE,CAAC;YACxC,KAAK,UAAU;gBACb,OAAO,IAAI,CAAC,sBAAsB,EAAE,CAAC;YACvC,KAAK,WAAW;gBACd,OAAO,IAAI,CAAC,wBAAwB,EAAE,CAAC;YACzC,KAAK,cAAc;gBACjB,OAAO,IAAI,CAAC,sBAAsB,EAAE,CAAC;YACvC,KAAK,gBAAgB;gBACnB,OAAO,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;YAClE,KAAK,yBAAyB;gBAC5B,OAAO,IAAI,CAAC,wBAAwB,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;YACpE,KAAK,eAAe;gBAClB,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC;YAChC;gBACE,OAAO,IAAI,CAAC;SACf;IACH,CAAC;IAEM,2DAAsB,GAA7B;QACE,OAAO,IAAI,mCAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAEM,6DAAwB,GAA/B;QACE,OAAO,IAAI,uCAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAEM,2DAAsB,GAA7B;QACE,OAAO,IAAI,mCAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAEM,4DAAuB,GAA9B;QACE,OAAO,IAAI,qCAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1C,CAAC;IAEM,2DAAsB,GAA7B;QACE,OAAO,IAAI,mCAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAEM,6DAAwB,GAA/B;QACE,OAAO,IAAI,uCAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAEM,2DAAsB,GAA7B;QACE,OAAO,IAAI,mCAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAEM,2DAAsB,GAA7B,UAA8B,IAAY,EAAE,KAAa;QACvD,OAAO,IAAI,mCAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACrE,CAAC;IAEM,6DAAwB,GAA/B,UAAgC,IAAY,EAAE,KAAa;QACzD,OAAO,IAAI,uCAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACxD,CAAC;IAEM,oDAAe,GAAtB;QACE,OAAO,IAAI,qBAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IACH,iCAAC;AAAD,CAAC;AArEY,gEAA0B;;;;;;;;;;;;;;;;;;;;ACdvC,+CAAgD;AAChD,uCAA6C;AAE7C;IAAsC,oCAAa;IACjD,0BAAmB,IAAiB;QAApC,YACE,kBAAM,WAAC,CAAC,eAAe,CAAC,EAAE,IAAI,CAAC,SAChC;QAFkB,UAAI,GAAJ,IAAI,CAAa;;IAEpC,CAAC;IAEM,mCAAQ,GAAf;QACE,IAAM,KAAK,GAAG,iBAAM,QAAQ,WAAE,CAAC;QAC/B,IAAI,CAAC,KAAK,EAAE;YACV,OAAO,EAAE,CAAC;SACX;QACD,OAAO,QAAM,KAAK,QAAK,CAAC;IAC1B,CAAC;IACH,uBAAC;AAAD,CAAC,CAZqC,6BAAa,GAYlD;AAZY,4CAAgB;;;;;;;;;;;;;;;;;;;;ACH7B,+CAAgD;AAChD,uCAA6C;AAE7C;IAAwC,sCAAa;IACnD,4BAAmB,IAAiB;QAApC,YACE,kBAAM,WAAC,CAAC,aAAa,CAAC,EAAE,IAAI,CAAC,SAC9B;QAFkB,UAAI,GAAJ,IAAI,CAAa;;IAEpC,CAAC;IAEM,qCAAQ,GAAf;QACE,IAAM,KAAK,GAAG,iBAAM,QAAQ,WAAE,CAAC;QAC/B,IAAI,CAAC,KAAK,EAAE;YACV,OAAO,EAAE,CAAC;SACX;QACD,OAAO,UAAO,KAAK,UAAM,CAAC;IAC5B,CAAC;IACH,yBAAC;AAAD,CAAC,CAZuC,6BAAa,GAYpD;AAZY,gDAAkB;;;;;;;;;;;;;;;;;;;;ACH/B,+CAAgD;AAChD,uCAA6C;AAE7C;IAAsC,oCAAa;IACjD,0BAAmB,IAAiB;QAApC,YACE,kBAAM,WAAC,CAAC,iBAAiB,CAAC,EAAE,IAAI,CAAC,SAClC;QAFkB,UAAI,GAAJ,IAAI,CAAa;;IAEpC,CAAC;IAEM,mCAAQ,GAAf;QACE,IAAM,KAAK,GAAG,iBAAM,QAAQ,WAAE,CAAC;QAC/B,IAAI,CAAC,KAAK,EAAE;YACV,OAAO,EAAE,CAAC;SACX;QACD,OAAO,iBACJ,QAAQ,WAAE;aACV,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;aACpB,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,iBAAO,IAAI,iBAAO,OAAO,UAAM,EAApB,CAAoB,CAAC;aACpC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClB,CAAC;IACH,uBAAC;AAAD,CAAC,CAjBqC,6BAAa,GAiBlD;AAjBY,4CAAgB;;;;;;;;;;;;;;;;;;;;ACH7B,+CAAgD;AAChD,uCAA6C;AAE7C;IAAuC,qCAAa;IAClD,2BAAmB,IAAiB;QAApC,YACE,kBAAM,WAAC,CAAC,kBAAkB,CAAC,EAAE,IAAI,CAAC,SACnC;QAFkB,UAAI,GAAJ,IAAI,CAAa;;IAEpC,CAAC;IAEM,oCAAQ,GAAf;QACE,IAAM,KAAK,GAAG,iBAAM,QAAQ,WAAE,CAAC;QAC/B,IAAI,CAAC,KAAK,EAAE;YACV,OAAO,EAAE,CAAC;SACX;QACD,OAAO,KAAK;aACT,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;aACpB,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,iBAAO,IAAI,qBAAW,OAAO,UAAM,EAAxB,CAAwB,CAAC;aACxC,IAAI,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;IACH,wBAAC;AAAD,CAAC,CAhBsC,6BAAa,GAgBnD;AAhBY,8CAAiB;;;;;;;;;;;;;;;;;;;;ACH9B,2CAAwC;AACxC,uCAA6C;AAC7C,mCAAwC;AACxC,qDAA4E;AAE5E;IAAsC,oCAAS;IAC7C,0BAAmB,IAAiB;QAApC,YACE,kBAAM,WAAC,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,SAC1B;QAFkB,UAAI,GAAJ,IAAI,CAAa;;IAEpC,CAAC;IAEM,mCAAQ,GAAf;QACE,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,gCAAK,GAAZ;QAAA,iBAYC;QAXC,iBAAM,KAAK,WAAE,CAAC;QACd,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAC5B,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC;QACrB,QAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE;YACrB,IAAI,KAAI,CAAC,IAAI,EAAE;gBACb,QAAE,CAAC,KAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,2CAAoB,CAAC,qBAAqB,CAAC,CAAC;aACnE;iBAAM;gBACL,QAAE,CAAC,KAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,2CAAoB,CAAC,qBAAqB,CAAC,CAAC;aACtE;QACH,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IACH,uBAAC;AAAD,CAAC,CAtBqC,qBAAS,GAsB9C;AAtBY,4CAAgB;;;;;;;;;;;;;;;;;;;;ACL7B,2CAAwC;AACxC,mCAAwC;AACxC,uCAA6C;AAC7C,yCAAsD;AACtD,gDAAkE;AAClE,0CAAqD;AAErD;IAAwC,sCAAS;IAI/C,4BAAmB,IAAiB;QAApC,YACE,kBAAM,WAAC,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,SAC5B;QAFkB,UAAI,GAAJ,IAAI,CAAa;;IAEpC,CAAC;IAEM,kCAAK,GAAZ;QACE,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;IAEM,kCAAK,GAAZ;QACE,iBAAM,KAAK,WAAE,CAAC;QACd,IAAM,KAAK,GAAG,QAAE,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,kCAAkC,EAAE,CAAC,CAAC;QAC1D,KAAK,CAAC,EAAG,CAAC,QAAQ,GAAG,IAAI,CAAC;QAEhD,IAAI,CAAC,OAAO,GAAG,IAAI,+BAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,WAAC,CAAC,WAAW,CAAC,CAAC,CAAC;QAClG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC;QAExC,IAAI,CAAC,QAAQ,GAAG,IAAI,mBAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,SAAS,EAAE,WAAC,CAAC,WAAW,CAAC,CAAC,CAAC;QACtG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAChE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QAEzC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAEnC,QAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC3D,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAEM,qCAAQ,GAAf;QACE,IAAM,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC;QAC/B,IAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QACxC,IAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC;QAEpD,IAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QACxB,IAAI,IAAI,IAAI,QAAQ,EAAE;YACpB,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,CAAC;SAC9C;aAAM;YACL,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;SAC5C;QAED,OAAO,IAAI,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,GAAG,qBAAS,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACnF,CAAC;IACH,yBAAC;AAAD,CAAC,CA7CuC,qBAAS,GA6ChD;AA7CY,gDAAkB;;;;;;;;;;;;;;;;;;;;ACP/B,2CAAwC;AACxC,2CAA0D;AAC1D,uCAA6C;AAC7C,mCAAwC;AACxC,0CAAqD;AACrD,8CAAwD;AAExD;IAAsC,oCAAS;IAI7C,0BAAmB,IAAiB;QAApC,YACE,kBAAM,WAAC,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,SAC1B;QAFkB,UAAI,GAAJ,IAAI,CAAa;QAH7B,qBAAe,GAAe,IAAI,uBAAU,CAAC,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAI,CAAC,CAAC,CAAC;QACvE,sBAAgB,GAAe,IAAI,uBAAU,CAAC,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAI,CAAC,CAAC,CAAC;;IAI/E,CAAC;IAEM,gCAAK,GAAZ;QACE,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;QAC7B,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,CAAC;IAChC,CAAC;IAEM,gCAAK,GAAZ;QACE,iBAAM,KAAK,WAAE,CAAC;QACd,IAAM,SAAS,GAAG,QAAE,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,kCAAkC,EAAE,CAAC,CAAC;QAC9D,SAAS,CAAC,EAAG,CAAC,QAAQ,GAAG,IAAI,CAAC;QAEpD,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,CAAC,CAAC;QACpD,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAClC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC,CAAC;QAErD,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAEM,mCAAQ,GAAf;QACE,IAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;QACtD,IAAM,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC;QACxD,IAAM,iBAAiB,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC;QAC1D,IAAM,kBAAkB,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC;QAE5D,IAAI,KAAK,GAAG,EAAE,CAAC;QAEf,IAAI,IAAI,CAAC,UAAU,EAAE,EAAE;YACrB,IAAI,SAAS,IAAI,UAAU,EAAE;gBAC3B,IAAM,QAAQ,GAAG,wBAAQ,CAAC,SAAS,CACjC,qBAAS,CAAC,2BAA2B,CAAC,SAAS,CAAC,EAChD,qBAAS,CAAC,2BAA2B,CAAC,kBAAkB,CAAC,CAC1D,CAAC;gBACF,IAAI,QAAQ,CAAC,eAAe,EAAE,GAAG,CAAC,EAAE;oBAClC,MAAM,WAAC,CAAC,2BAA2B,CAAC,CAAC;iBACtC;aACF;YACD,IAAI,iBAAiB,EAAE;gBACrB,KAAK,IAAI,aAAW,iBAAiB,MAAG,CAAC;aAC1C;YACD,IAAI,kBAAkB,EAAE;gBACtB,KAAK,IAAI,aAAW,kBAAkB,MAAG,CAAC;aAC3C;SACF;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,mCAAQ,GAAhB;QACE,IAAM,GAAG,GAAG,QAAE,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,2BAA2B,EAAE,CAAC,CAAC;QAClE,GAAG,CAAC,IAAI,CAAC,WAAC,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QACjC,OAAO,GAAG,CAAC,EAAE,CAAC;IAChB,CAAC;IACH,uBAAC;AAAD,CAAC,CA3DqC,qBAAS,GA2D9C;AA3DY,4CAAgB;;;;;;;;;;;;;;;;;;;;ACP7B,+BAAgC;AAGhC,2CAA0D;AAC1D,mCAAwC;AACxC,6CAAuD;AACvD,yCAAsD;AACtD,+CAAgD;AAEhD;IAAsC,oCAAa;IAIjD,0BAAmB,SAAiB,EAAS,SAAiB,EAAU,QAAyB,EAAS,IAAiB;QAA3H,YACE,kBAAM,SAAS,EAAE,IAAI,CAAC,SACvB;QAFkB,eAAS,GAAT,SAAS,CAAQ;QAAS,eAAS,GAAT,SAAS,CAAQ;QAAU,cAAQ,GAAR,QAAQ,CAAiB;QAAS,UAAI,GAAJ,IAAI,CAAa;;IAE3H,CAAC;IAEM,gCAAK,GAAZ;QACE,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;IAEM,gCAAK,GAAZ;QAAA,iBAOC;QANC,IAAI,UAAU,GAAG,QAAE,CAAC,iBAAM,KAAK,WAAE,CAAC,CAAC;QACnC,IAAI,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC;YAC3B,UAAU,CAAC,MAAM,CAAC,KAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAEM,mCAAQ,GAAf;QACE,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1D,IAAI,YAAY,GAAG,IAAI,2BAAY,EAAE,CAAC;QACtC,IAAI,KAAK,EAAE;YACT,YAAY,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;YAClF,OAAO,YAAY,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;SAChC;aAAM;YACL,OAAO,EAAE,CAAC;SACX;IACH,CAAC;IAEO,2CAAgB,GAAxB;QAAA,iBAoBC;QAnBC,OAAO,IAAI,CAAC,QAAQ;aACjB,eAAe,CAAC;YACf,KAAK,EAAE,IAAI,CAAC,SAAS;YACrB,qBAAqB,EAAE,EAAE;SAC1B,CAAC;aACD,IAAI,CAAC,UAAC,MAA0B;YAC/B,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC,CAAC;YACnB,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,UAAC,KAAuB;gBACrC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC5B,CAAC,CAAC,CAAC;YACH,KAAI,CAAC,QAAQ,GAAG,IAAI,mBAAQ,CAC1B,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAI,CAAC,EACxB,OAAO,EACP,UAAC,GAAW;gBACV,OAAO,uBAAU,CAAC,yBAAyB,CAAC,KAAI,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;YACnE,CAAC,EACD,KAAI,CAAC,SAAS,CACf,CAAC;QACJ,CAAC,CAAC,CAAC;IACP,CAAC;IACH,uBAAC;AAAD,CAAC,CArDqC,6BAAa,GAqDlD;AArDY,4CAAgB;;;;;;;;;;;;;;;;;;;;ACT7B,yCAAsD;AACtD,0CAAwD;AACxD,mCAAwC;AACxC,+CAAgD;AAChD,6CAAuD;AAEvD;IAAwC,sCAAa;IAKnD,4BAAmB,SAAiB,EAAS,SAAiB,EAAS,IAAiB;QAAxF,YACE,kBAAM,SAAS,EAAE,IAAI,CAAC,SACvB;QAFkB,eAAS,GAAT,SAAS,CAAQ;QAAS,eAAS,GAAT,SAAS,CAAQ;QAAS,UAAI,GAAJ,IAAI,CAAa;;IAExF,CAAC;IAEM,kCAAK,GAAZ;QACE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAClB,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAEM,kCAAK,GAAZ;QACE,IAAM,UAAU,GAAG,QAAE,CAAC,iBAAM,KAAK,WAAE,CAAC,CAAC;QACrC,IAAI,CAAC,IAAI,GAAG,IAAI,mBAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,EAAE,gBAAgB,EAAE,SAAS,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACzH,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QAC1C,IAAI,CAAC,KAAK,GAAG,IAAI,qBAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACrE,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;QAC3C,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAEM,qCAAQ,GAAf;QACE,IAAI,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QACvC,IAAI,OAAO,GAAG,IAAI,2BAAY,EAAE,CAAC;QACjC,IAAI,UAAU,EAAE;YACd,QAAQ,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE;gBAC5B,KAAK,UAAU;oBACb,OAAO,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;oBACjF,OAAO,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;gBAE5B,KAAK,gBAAgB;oBACnB,OAAO,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;oBAClF,OAAO,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;gBAC5B;oBACE,OAAO,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;oBAClF,OAAO,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;aAC7B;SACF;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IACH,yBAAC;AAAD,CAAC,CA3CuC,6BAAa,GA2CpD;AA3CY,gDAAkB;;;;;;;;;;;;;;;;;;;;ACN/B,uCAA6C;AAC7C,mCAAwC;AACxC,6CAAuD;AACvD,yCAAsD;AACtD,gDAAkE;AAClE,+CAAgD;AAEhD;IAA+B,6BAAa;IAS1C,mBAAmB,IAAiB;QAApC,YACE,kBAAM,MAAM,EAAE,IAAI,CAAC,SACpB;QAFkB,UAAI,GAAJ,IAAI,CAAa;;IAEpC,CAAC;IAEM,yBAAK,GAAZ;QACE,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACxB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;IAEM,yBAAK,GAAZ;QACE,IAAM,SAAS,GAAG,QAAE,CAAC,iBAAM,KAAK,WAAE,CAAC,CAAC;QACpC,IAAM,gBAAgB,GAAG,QAAE,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,+BAA+B,EAAE,CAAC,CAAC;QAEnF,IAAI,CAAC,UAAU,GAAG,IAAI,mBAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,WAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QAChG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC/C,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC;QAEtD,IAAI,CAAC,SAAS,GAAG,IAAI,+BAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,SAAS,EAAE,WAAC,CAAC,WAAW,CAAC,CAAC,CAAC;QACpG,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,CAAC,CAAC;QAErD,IAAI,CAAC,UAAU,GAAG,IAAI,mBAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,WAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAC3G,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;QACjD,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC;QACtD,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;QACtC,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAEM,4BAAQ,GAAf;QACE,IAAI,IAAI,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACjC,IAAI,YAAY,GAAG,IAAI,2BAAY,EAAE,CAAC;QACtC,IAAI,IAAI,EAAE;YACR,QAAQ,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE;gBAClC,KAAK,SAAS;oBACZ,YAAY,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;oBACtG,OAAO,YAAY,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;gBACjC;oBACE,YAAY,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;oBACtG,OAAO,YAAY,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;aAClC;SACF;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAEO,kCAAc,GAAtB;QACE,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,CAAC;QAC1C,QAAQ,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE;YAClC,KAAK,IAAI;gBACP,OAAO,IAAI,GAAG,IAAI,CAAC;YACrB,KAAK,IAAI;gBACP,OAAO,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAClC;gBACE,OAAO,IAAI,CAAC;SACf;IACH,CAAC;IA9Da,eAAK,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC9B,eAAK,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IA8D9C,gBAAC;CAAA,CAhE8B,6BAAa,GAgE3C;AAhEY,8BAAS;;;;;;;ACPtB,yC;;;;;;ACAA,yC;;;;;;ACAA,yC;;;;;;ACAA,yC;;;;;;ACAA,yC;;;;;;;;;ACAA;;GAEG;AACH;IAAA;IAcA,CAAC;IAbC;;;;OAIG;IACW,iCAAe,GAAG,iBAAiB,CAAC;IAElD;;;;OAIG;IACW,kCAAgB,GAAG,kBAAkB,CAAC;IACtD,wBAAC;CAAA;AAdY,8CAAiB;;;;;;;ACH9B,yC;;;;;;ACAA,yC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAA,+CAA2D;AAG3D,IAAM,mBAAmB,GAAG,qDAAqD,CAAC;AAWlF;;;;;;GAMG;AACH;IACE,mCAAoB,YAAoB;QAApB,iBAAY,GAAZ,YAAY,CAAQ;IAAG,CAAC;IAE/B,+CAAW,GAAxB;;;;;4BACuB,qBAAM,IAAI,+BAAc,EAAE,CAAC,IAAI,CAAuB;4BACzE,eAAe,EAAE,KAAK;4BACtB,MAAM,EAAE,MAAM;4BACd,WAAW,EAAE,CAAC,SAAO,IAAI,CAAC,YAAc,CAAC;4BACzC,WAAW,EAAE,EAAE;4BACf,YAAY,EAAE,MAAM;4BACpB,GAAG,EAAE,mBAAmB;yBACzB,CAAC;;wBAPI,YAAY,GAAG,SAOnB;wBACI,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC;wBAC5C,sBAAO;gCACL,SAAS,EAAE,QAAQ,CAAC,GAAG;gCACvB,QAAQ,EAAE,QAAQ,CAAC,GAAG;6BACvB,EAAC;;;;KACH;IACH,gCAAC;AAAD,CAAC;AAlBY,8DAAyB;;;;;;;;;;ACnBtC;;;;;;;GAOG;AACH;IAAA;IAgBA,CAAC;IAfQ,+CAAW,GAAlB;QACE,OAAO,IAAI,OAAO,CAAuB,UAAC,OAAO,EAAE,MAAM;YACvD,SAAS,CAAC,WAAW,CAAC,kBAAkB,CACtC,kBAAQ;gBACN,OAAO,CAAC;oBACN,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ;oBAClC,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAC,SAAS;iBACrC,CAAC,CAAC;YACL,CAAC,EACD,eAAK;gBACH,MAAM,CAAC,KAAK,CAAC,CAAC;YAChB,CAAC,CACF,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IACH,gCAAC;AAAD,CAAC;AAhBY,8DAAyB;;;;;;;;;;ACRtC;;;GAGG;AACH;IACE,gCAAoB,QAAgB,EAAU,SAAiB;QAA3C,aAAQ,GAAR,QAAQ,CAAQ;QAAU,cAAS,GAAT,SAAS,CAAQ;IAAG,CAAC;IAE5D,4CAAW,GAAlB;QACE,OAAO,OAAO,CAAC,OAAO,CAAC;YACrB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC,CAAC;IACL,CAAC;IACH,6BAAC;AAAD,CAAC;AATY,wDAAsB;;;;;;;ACNnC,yC;;;;;;ACAA,yC;;;;;;ACAA,yC;;;;;;ACAA,yC;;;;;;;;ACAA,yDAAyD;;;;;;;;;;AAEzD,0CAAqD;AACrD,4CAA4E;AAC5E,sCAAwC;AAGxC,kDAAiE;AACjE,6CAAuD;AAEvD,0CAA+C;AAC/C,2CAAiD;AAEjD,qCAAuC;AAEvC;IAME,oCAAmB,KAAkB;QAArC,iBAEC;QAFkB,UAAK,GAAL,KAAK,CAAa;QACnC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,yBAAW,CAAC,YAAY,EAAE,UAAC,IAA4B,IAAK,YAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAA7B,CAA6B,CAAC,CAAC;IAC3H,CAAC;IAEM,uDAAkB,GAAzB;QACE,IAAI,CAAC,uBAAuB,GAAG,SAAS,CAAC;IAC3C,CAAC;IAEM,+DAA0B,GAAjC,UAAkC,YAA0B;QAC1D,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE;YAC5B,IAAI,CAAC,kCAAkC,CAAC,YAAY,CAAC,CAAC;SACvD;QACD,IAAI,CAAC,mCAAmC,CAAC,YAAY,CAAC,CAAC;IACzD,CAAC;IAEO,8DAAyB,GAAjC;QACE,IAAM,YAAY,GAAoB;YACpC,KAAK,EAAU,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK;YACvC,+BAA+B,EAAE,IAAI;YACrC,aAAa,EAAE,SAAS;SACzB,CAAC;QACF,OAAO,YAAY,CAAC;IACtB,CAAC;IAEM,+DAA0B,GAAjC,UAAkC,QAA6D;QAA7D,uCAAY,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;QAC7F,IAAM,OAAO,GAAG,IAAI,qCAAiB,EAAE,CAAC;QACxC,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,SAAS,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE;YACxD,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,kBAAkB,EAAE;gBACzC,IAAI,CAAC,0CAA0C,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;aACpF;iBAAM;gBACL,IAAI,CAAC,0CAA0C,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;aACpF;SACF;QACD,OAAO,OAAO,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;IAEO,uDAAkB,GAA1B,UAA2B,IAA4B;QAAvD,iBAuBC;QAtBC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE;YACrC,IAAM,MAAM,GAAG,IAAI,eAAM,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM,CAAC,KAAK,CACV,qDAAmD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,kEAA+D,CAC3I,CAAC;YACF,MAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;YACtD,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACrB,OAAO;SACR;QAED,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,wBAAwB,IAAI,SAAS,EAAE;YAChG,IAAI,CAAC,wBAAwB,GAAG,EAAE,CAAC;YACnC,IAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;YACjF,IAAM,SAAS,GAAG,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5D,iBAAI,CAAC,SAAS,EAAE,kBAAQ;gBACtB,IAAM,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC5C,KAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC;oBACjC,KAAK,EAAE,KAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,KAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;oBAClH,GAAG,EAAE,KAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,KAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;iBACjH,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;IAEO,0DAAqB,GAA7B,UAA8B,IAA4B;QACxD,IAAI,IAAI,CAAC,uBAAuB,IAAI,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE;YAC1G,IAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACvF,IAAI,UAAU,IAAI,CAAC,uBAAU,CAAC,aAAa,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;gBAC7D,OAAO,KAAK,CAAC;aACd;SACF;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,+EAA0C,GAAlD,UAAmD,KAAU,EAAE,GAAQ,EAAE,OAA0B;QACjG,IAAI,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;YACtE,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE;gBAChC,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;gBACxC,GAAG,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;aACrC;YACD,OAAO,CAAC,kBAAkB,CAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,KAAK,GAAG,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC;SAC1F;IACH,CAAC;IAEO,+EAA0C,GAAlD,UAAmD,KAAU,EAAE,GAAQ,EAAE,OAA0B;QACjG,IAAI,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAC5C,IAAI,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QACxC,IAAI,aAAa,GAAG,KAAK,CAAC;QAC1B,IAAI,WAAW,GAAG,GAAG,CAAC;QACtB,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE;YAChC,aAAa,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;YAChD,WAAW,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;YAC5C,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;YACtD,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;SACnD;aAAM;YACL,aAAa,IAAI,EAAE,CAAC;YACpB,WAAW,IAAI,EAAE,CAAC;YAClB,YAAY,IAAI,EAAE,CAAC;YACnB,UAAU,IAAI,EAAE,CAAC;SAClB;QACD,IAAI,aAAa,IAAI,YAAY,IAAI,WAAW,IAAI,UAAU,EAAE;YAC9D,OAAO,CAAC,kBAAkB,CAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC;SACrF;aAAM,IAAI,aAAa,IAAI,YAAY,IAAI,WAAW,IAAI,UAAU,EAAE;YACrE,OAAO,CAAC,kBAAkB,CAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;SACnF;aAAM;YACL,IAAI,CAAC,0CAA0C,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;SACtE;IACH,CAAC;IAEO,uEAAkC,GAA1C,UAA2C,YAA0B;QACnE,IAAI,CAAC,wBAAwB,GAAG,YAAY,CAAC,eAAe,CAAC,MAAM,CAAC;QACpE,IAAM,2BAA2B,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAC;QAErE,IAAI,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE;YACnC,2BAA2B,CAAC,WAAW,GAAG,IAAI,CAAC,yCAAyC,EAAE,CAAC;YAC3F,2BAA2B,CAAC,uBAAuB,GAAG,KAAK,CAAC;SAC7D;aAAM;YACL,2BAA2B,CAAC,uBAAuB,GAAG,IAAI,CAAC;SAC5D;QAED,IAAI,CAAC,kCAAkC,CAAC,2BAA2B,CAAC,CAAC;QAErE,IAAM,MAAM,GAAG,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAC,yBAAyB,EAAE,CAAC,CAAC;QACvF,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,2BAA2B,EAAE,YAAY,CAAC,CAAC;QAE7E,2BAA2B,CAAC,YAAY,GAAG,QAAQ,CAAC;QACpD,2BAA2B,CAAC,qBAAqB,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;QACnF,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;IACjE,CAAC;IAEO,wEAAmC,GAA3C,UAA4C,YAA0B;QACpE,IAAI,CAAC,uBAAuB,GAAG,YAAY,CAAC,eAAe,CAAC,MAAM,CAAC;QAEnE,IAAM,4BAA4B,GAAG,IAAI,CAAC,qCAAqC,CAAC,YAAY,CAAC,CAAC;QAC9F,IAAI,CAAC,4CAA4C,CAAC,YAAY,EAAE,4BAA4B,CAAC,CAAC;IAChG,CAAC;IAEO,yDAAoB,GAA5B,UAA6B,MAAc,EAAE,cAA+B,EAAE,YAA0B;QACtG,IAAI,UAAkC,CAAC;QACvC,IAAI,MAAM,IAAI,SAAS,EAAE;YACvB,UAAU,GAAG,YAAY,CAAC,oCAAoC,CAAC,MAAM,CAAC,CAAC;SACxE;aAAM;YACL,UAAU,GAAG,YAAY,CAAC,8BAA8B,EAAE,CAAC;SAC5D;QAED,IAAM,wBAAwB,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,IAAI,MAAM,CAAC;QAE5E,cAAc,CAAC,aAAa,GAAG,IAAI,CAAC,+BAA+B,CAAC,cAAc,CAAC,aAAa,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC;QACpH,cAAc,CAAC,qBAAqB,GAAG,IAAI,CAAC,+BAA+B,CAAC,cAAc,CAAC,qBAAqB,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;QACvI,cAAc,CAAC,qBAAqB,GAAG,IAAI,CAAC,+BAA+B,CAAC,cAAc,CAAC,qBAAqB,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;QACvI,cAAc,CAAC,qBAAqB,GAAG,IAAI,CAAC,+BAA+B,CACzE,cAAc,CAAC,qBAAqB,EACpC,wBAAwB,CACzB,CAAC;IACJ,CAAC;IAEO,8EAAyC,GAAjD;QACQ,uCAA+C,EAA7C,gBAAK,EAAE,YAAG,CAAoC;QACtD,IAAM,QAAQ,GAAgB;YAC5B,KAAK,EAAE,KAAK;YACZ,GAAG,EAAE,GAAG;YACR,YAAY,EAAE,IAAI;YAClB,KAAK,EAAE,QAAQ;SAChB,CAAC;QAEF,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,SAAS,EAAE;YAC/C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;SACrC;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;YACnE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;SACzE;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACjE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;SACrE;QACD,IAAI,IAAI,CAAC,wBAAwB,IAAI,SAAS,EAAE;YAC9C,OAAO,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;SACxC;aAAM;YACL,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;SAClC;IACH,CAAC;IAEO,qDAAgB,GAAxB,UAAyB,iBAA8B;QACrD,OAAO,gBAAG,CAAC,IAAI,CAAC,wBAAwB,EAAE,eAAK;YAC7C,OAAO;gBACL,KAAK,EAAE,KAAK,CAAC,KAAK;gBAClB,GAAG,EAAE,KAAK,CAAC,GAAG;gBACd,YAAY,EAAE,iBAAiB,CAAC,YAAY;gBAC5C,KAAK,EAAE,iBAAiB,CAAC,KAAK;aAC/B,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,+CAAU,GAAlB,UAAmB,iBAA8B;QAAjD,iBAiBC;QAhBC,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACvC,IAAM,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;QACrG,OAAO,gBAAG,CAAC,kBAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,cAAI;YAC1D,IAAI,QAAQ,GAAG,KAAK,GAAG,IAAI,GAAG,OAAO,CAAC;YACtC,IAAI,MAAM,GAAG,KAAK,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,OAAO,CAAC;YAC1C,IAAI,KAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE;gBAChC,QAAQ,GAAG,KAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;gBACvC,MAAM,GAAG,KAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;aACpC;YACD,OAAO;gBACL,YAAY,EAAE,iBAAiB,CAAC,YAAY;gBAC5C,KAAK,EAAE,iBAAiB,CAAC,KAAK;gBAC9B,KAAK,EAAE,QAAQ;gBACf,GAAG,EAAE,MAAM;aACZ,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,4DAAuB,GAA/B;QACE,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACrC,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QACjC,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE;YAChC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YACjC,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;SAC9B;QACD,OAAO;YACL,KAAK;YACL,GAAG;SACJ,CAAC;IACJ,CAAC;IAEO,iDAAY,GAApB,UAAqB,KAAU;QAC7B,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE;gBACjB,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;aACvB;YACD,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3B,IAAI,CAAC,qBAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBAC5B,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC,CAAC;gBACxD,IAAI,CAAC,qBAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;oBAC5B,uGAAuG;oBACvG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,EAAE,KAAK,EAAE,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;oBAClF,OAAO,SAAS,CAAC;iBAClB;aACF;YACD,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;SAC3B;aAAM;YACL,OAAO,SAAS,CAAC;SAClB;IACH,CAAC;IAEO,wDAAmB,GAA3B,UAA4B,QAAa;QACvC,IAAI,QAAQ,EAAE;YACZ,OAAO,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;SAC9F;aAAM;YACL,OAAO,SAAS,CAAC;SAClB;IACH,CAAC;IAEO,+DAA0B,GAAlC,UAAmC,KAAa;QAC9C,OAAO,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IACrD,CAAC;IAEO,iFAA4C,GAApD,UAAqD,YAA0B,EAAE,mBAAoC;QACnH,qHAAqH;QACrH,2IAA2I;QAC3I,oEAAoE;QAEpE,IAAI,CAAC,mCAAmC,GAAG,YAAY,CAAC,eAAe,CAAC,MAAM,CAAC;QAC/E,IAAM,0BAA0B,GAAG,kBAAK,CAAC,mBAAmB,CAAC,CAAC;QAE9D,0DAA0D;QAC1D,OAAO,0BAA0B,CAAC,aAAa,CAAC;QAChD,qEAAqE;QACrE,OAAO,0BAA0B,CAAC,qBAAqB,CAAC;QACxD,+GAA+G;QAE/G,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,EAAE;YACpC,0BAA0B,CAAC,qBAAqB,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC;SACrF;QAED,IAAI,CAAC,kCAAkC,CAAC,0BAA0B,CAAC,CAAC;QAEpE,iGAAiG;QACjG,mKAAmK;QACnK,iIAAiI;QACjI,IACE,0BAA0B,CAAC,aAAa,KAAK,SAAS;YACtD,0BAA0B,CAAC,qBAAqB,KAAK,SAAS;YAC9D,0BAA0B,CAAC,qBAAqB,KAAK,SAAS,EAC9D;YACA,0BAA0B,CAAC,qBAAqB,GAAG,MAAM,CAAC;SAC3D;QAED,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IAChE,CAAC;IAEO,0EAAqC,GAA7C,UAA8C,YAA0B;QACtE,IAAI,qBAAqB,GAAG,CAAC,CAAC;QAE9B,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,EAAE;YAC1B,qBAAqB,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;SACxD;QAED,IAAI,WAA0B,CAAC;QAC/B,IAAI,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE;YACnC,WAAW,GAAG;6BAEP,IAAI,CAAC,uBAAuB,EAAE,IACjC,KAAK,EAAE,QAAQ,EACf,YAAY,EAAE,KAAK;aAEtB,CAAC;SACH;QAED,qEAAqE;QACrE,sEAAsE;QACtE,IAAM,4BAA4B,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACtE,4BAA4B,CAAC,qBAAqB,GAAG,qBAAqB,CAAC;QAC3E,4BAA4B,CAAC,YAAY,GAAG,QAAQ,CAAC;QACrD,4BAA4B,CAAC,uBAAuB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC;QACxF,4BAA4B,CAAC,WAAW,GAAG,WAAW,CAAC;QACvD,IAAM,MAAM,GAAG,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAC,yBAAyB,EAAE,CAAC,CAAC;QACvF,IAAI,CAAC,oBAAoB,CAAC,MAAM,EAAE,4BAA4B,EAAE,YAAY,CAAC,CAAC;QAC9E,IAAI,CAAC,kCAAkC,CAAC,4BAA4B,CAAC,CAAC;QAEtE,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;QAEhE,OAAO,4BAA4B,CAAC;IACtC,CAAC;IAEO,uEAAkC,GAA1C,UAA2C,cAA+B;QACxE,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE;YAChC,wDAAwD;YACxD,iHAAiH;YACjH,iDAAiD;YACjD,kHAAkH;YAClH,gBAAgB;YAChB,gEAAgE;YAChE,0FAA0F;YAC1F,8DAA8D;YAC9D,kDAAkD;YAClD,oFAAoF;YACpF,sHAAsH;YACtH,yHAAyH;YAEzH,IAAM,2BAA2B,GAAG,IAAI,2BAAY,EAAE,CAAC;YACvD,2BAA2B,CAAC,UAAU,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAe,EAAE,GAAG,EAAE;gBACjG,IAAI,CAAC,mBAAmB,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;aACtC,CAAC,CAAC;YACH,IAAI,cAAc,CAAC,qBAAqB,EAAE;gBACxC,cAAc,CAAC,qBAAqB,IAAI,MAAI,2BAA2B,CAAC,UAAU,CAAC,KAAK,EAAI,CAAC;aAC9F;iBAAM;gBACL,cAAc,CAAC,qBAAqB,GAAG,2BAA2B,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;aACvF;SACF;IACH,CAAC;IAEO,oEAA+B,GAAvC,UAAwC,KAAa,EAAE,KAAa;QAClE,IAAI,aAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE;YAClC,OAAO,KAAK,CAAC;SACd;QAED,IAAI,aAAK,CAAC,iBAAiB,CAAC,KAAK,CAAC,EAAE;YAClC,OAAO,KAAK,IAAI,EAAE,CAAC;SACpB;aAAM;YACL,OAAO,KAAK,GAAG,GAAG,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;SACpC;IACH,CAAC;IACH,iCAAC;AAAD,CAAC;AA7WY,gEAA0B;;;;;;;;;;ACfvC,oCAAsD;AACtD,0CAAkD;AAClD,wCAAuC;AACvC,0CAAqD;AACrD,8CAAkF;AAClF,sCAA2C;AAC3C,4CAAsD;AACtD,mCAA0C;AAC1C,qCAA0C;AA0D7B,2BAAmB,GAAG,GAAG,CAAC;AAEvC;IASE,gBAAmB,OAAoB,EAAS,OAAuB,EAAS,IAAiB;QAAjG,iBAsCC;QAtCkB,YAAO,GAAP,OAAO,CAAa;QAAS,YAAO,GAAP,OAAO,CAAgB;QAAS,SAAI,GAAJ,IAAI,CAAa;QAR1F,UAAK,GAAa,EAAE,CAAC;QAS1B,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE;YAC1B,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;YAC5D,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;SACzD;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,SAAS,EAAE;YACrC,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC;SAC1B;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;YAC/C,IAAI,CAAC,UAAU,EAAE,CAAC;SACnB;QAED,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;YACtB,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;SAC1C;QAED,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;QACvC,iBAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,UAAC,CAAc;YAC3C,KAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEH,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;YAC5B,IAAI,CAAC,WAAW,GAAG,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC;YACzC,iBAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,EAAE,UAAC,CAAc;gBAC5C,KAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YAC9B,CAAC,CAAC,CAAC;SACJ;aAAM;YACL,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAC9C,IAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;YACxC,QAAE,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;YAC5C,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAChC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SACnD;QAED,IAAI,CAAC,aAAa,GAAG,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC;IACvD,CAAC;IAEM,yBAAQ,GAAf;QACE,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;YAC5B,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;YAC/B,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;SAC7F;aAAM;YACL,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SACnD;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE;YACtB,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;SACzB;QACD,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;IAEM,gCAAe,GAAtB,UAAuB,MAAyD;QAAzD,mCAAoB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC;QAC9E,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;QAC5B,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;YAC5B,IAAI,CAAC,WAAW,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC;YACpD,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;SAC7F;aAAM;YACL,IAAI,MAAM,IAAI,SAAS,EAAE;gBACvB,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;aAC3B;iBAAM;gBACL,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;aACvC;YACD,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SACnD;QACD,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;IAEM,4BAAW,GAAlB;QACE,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;YAC5B,OAAO,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;SACvC;aAAM;YACL,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC;SAC7C;IACH,CAAC;IAEM,mCAAkB,GAAzB;QACE,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;YAC5B,OAAO,IAAI,CAAC,WAAW,CAAC,kBAAkB,EAAE,CAAC;SAC9C;aAAM;YACL,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC,CAAC;SAC5C;IACH,CAAC;IAEM,0BAAS,GAAhB;QACE,IAAI,IAAI,CAAC,aAAa,IAAI,SAAS,EAAE;YACnC,OAAO,IAAI,CAAC,aAAa,CAAC;SAC3B;aAAM;YACL,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;gBAC5B,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC;aACpC;iBAAM;gBACL,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC;aAC3D;SACF;IACH,CAAC;IAEM,oCAAmB,GAA1B,UAA2B,MAAgB;QACzC,OAAO,IAAI,CAAC,aAAa,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;IACzD,CAAC;IAEM,2BAAU,GAAjB;QACE,OAAO,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;IACzC,CAAC;IAEM,0BAAS,GAAhB,UAAiB,MAAgB;QAC/B,IAAI,MAAM,IAAI,SAAS,EAAE;YACvB,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACpD,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;SACnD;QACD,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC;QAC5B,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;YAC5B,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAClC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;SAC7F;aAAM;YACL,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACtC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SACnD;QACD,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;IAEM,0BAAS,GAAhB,UAAiB,IAAyB;QACxC,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC7B;IACH,CAAC;IAEO,kCAAiB,GAAzB;QACE,IAAI,CAAC,YAAY,CAAC,YAAY,GAAG,CAAC,CAAC;QACnC,IAAI,CAAC,YAAY,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;IAC7D,CAAC;IAEO,+BAAc,GAAtB;QACE,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,SAAS,EAAE;YAC1C,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;SAC/E;aAAM,IAAI,IAAI,CAAC,OAAO,CAAC,cAAc,IAAI,SAAS,EAAE;YACnD,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;SAC1F;aAAM,IACL,IAAI,CAAC,OAAO,CAAC,gBAAgB,IAAI,SAAS;YAC1C,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,SAAS,IAAI,SAAS;YACpD,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EACpC;YACA,IAAI,CAAC,aAAa,CAAC,YAAY,EAAE,CAAC;SACnC;aAAM;YACL,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;SACjC;IACH,CAAC;IAEO,2BAAU,GAAlB;QACE,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;YACzB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;SAC1E;aAAM;YACL,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,2BAAmB,EAAE;gBAC5C,IAAI,eAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,2CAAyC,2BAAmB,4BAAyB,CAAC,CAAC;gBAC7G,IAAI,CAAC,OAAO,CAAC,KAAK,GAAG,2BAAmB,CAAC;aAC1C;YACD,IAAM,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YAC1F,IAAI,OAAO,GAAG,CAAC,EAAE;gBACf,IAAI,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;gBACrC,IAAI,oBAAoB,GAAG,CAAC,CAAC;gBAC7B,OAAO,WAAW,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,oBAAoB,IAAI,2BAAmB,EAAE;oBACrF,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;oBAC7B,WAAW,IAAI,OAAO,CAAC;oBACvB,oBAAoB,EAAE,CAAC;iBACxB;aACF;iBAAM;gBACL,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBACpC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;aACnC;SACF;IACH,CAAC;IACH,aAAC;AAAD,CAAC;AAtLY,wBAAM;AAwLnB;IAIE,oBAAmB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;IAAG,CAAC;IAE9B,0BAAK,GAAZ;QACE,IAAI,CAAC,UAAU,GAAG,QAAE,CAAC,KAAK,EAAE;YAC1B,SAAS,EAAE,oCAAoC;SAChD,CAAC,CAAC,EAAE,CAAC;QAEN,IAAI,CAAC,UAAU,GAAG,QAAE,CAAC,KAAK,EAAE;YAC1B,SAAS,EAAE,gCAAgC;SAC5C,CAAC,CAAC,EAAE,CAAC;QAEN,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAC5C,CAAC;IAEM,mCAAc,GAArB,UAAsB,SAAuB,EAAE,SAAwB;QACrE,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE;YACnC,IAAM,KAAK,GAAG,CAAC,SAAS,CAAC,UAAU,EAAE,GAAG,SAAS,CAAC,UAAU,EAAE,CAAC,GAAG,GAAG,CAAC;YACtE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,GAAG,GAAG,CAAC;YAC1C,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,GAAG,SAAS,CAAC,UAAU,EAAE,GAAG,GAAG,GAAG,GAAG,CAAC;YAChE,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,GAAG,SAAS,CAAC,UAAU,EAAE,GAAG,GAAG,GAAG,GAAG,CAAC;SAClE;aAAM;YACL,IAAM,KAAK,GAAG,SAAS,CAAC,UAAU,EAAE,GAAG,GAAG,CAAC;YAC3C,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,GAAG,GAAG,CAAC;SAC3C;IACH,CAAC;IACH,iBAAC;AAAD,CAAC;AAED,oGAAoG;AACpG,YAAY;AACZ,0BAA0B;AAC1B;IAgBE,sBAAmB,MAAc,EAAU,KAAa;QAArC,WAAM,GAAN,MAAM,CAAQ;QAAU,UAAK,GAAL,KAAK,CAAQ;QAJhD,mBAAc,GAAG,yBAAW,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC;QAC3E,mBAAc,GAAG,yBAAW,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC;QAC1E,iBAAY,GAAG,yBAAW,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;IAElB,CAAC;IAErD,4BAAK,GAAZ;QACE,IAAI,CAAC,OAAO,GAAG,QAAE,CAAC,KAAK,EAAE;YACvB,SAAS,EAAE,qBAAqB;SACjC,CAAC,CAAC,EAAE,CAAC;QAEN,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,GAAG,IAAI,CAAC;QACzC,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAEM,kCAAW,GAAlB;QACE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;IACjC,CAAC;IAEM,4BAAK,GAAZ;QACE,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC;IACnC,CAAC;IAEM,+BAAQ,GAAf,UAAgB,KAAa;QAC3B,IAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC/C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;IAC5D,CAAC;IAEM,kCAAW,GAAlB;QACE,IAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC;QACrC,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE;YAC3B,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;SACnE;aAAM;YACL,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC;SACzB;IACH,CAAC;IAEM,iCAAU,GAAjB,UAAkB,QAAqC;QAArC,sCAAmB,IAAI,CAAC,WAAW,EAAE;QACrD,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,IAAI,CAAC,EAAE;YACxC,OAAO,CAAC,CAAC;SACV;QACD,OAAO,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAClE,CAAC;IAEM,+BAAQ,GAAf;QACE,IAAM,KAAK,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;QACpH,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,yCAAkB,GAAzB,UAA0B,KAAa;QACrC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACvG,CAAC;IAEM,0CAAmB,GAA1B,UAA2B,QAAgB;QACzC,IAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC1C,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,GAAG,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACrG,CAAC;IAEM,0CAAmB,GAA1B,UAA2B,KAAa;QACtC,IAAM,OAAO,GAAG,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC;IACnD,CAAC;IAEO,iCAAU,GAAlB;QAAA,iBAeC;QAdC,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,UAAC,CAAa;YACrD,KAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;QACH,IAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,IAAI,QAAQ,CAAC;QACrD,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,EAAE,UAAC,CAAa;YACtD,IAAI,KAAI,CAAC,cAAc,IAAI,WAAW,IAAI,KAAI,CAAC,WAAW,EAAE;gBAC1D,CAAC,CAAC,cAAc,EAAE,CAAC;aACpB;YACD,KAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,gBAAgB,CAAC,IAAI,CAAC,YAAY,EAAE;YACtC,KAAI,CAAC,cAAc,EAAE,CAAC;QACxB,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,oCAAa,GAArB;QACE,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,KAAK,SAAS,EAAE;YAClD,OAAO,cAAc,CAAC;SACvB;QACD,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,KAAK,SAAS,EAAE;YACtD,OAAO,kBAAkB,CAAC;SAC3B;QACD,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK,SAAS,EAAE;YACtD,OAAO,eAAe,CAAC;SACxB;QACD,OAAO,YAAY,CAAC;IACtB,CAAC;IAEO,uCAAgB,GAAxB,UAAyB,CAAa;QACpC,IAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;QAC1C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,CAAC,CAAC;QACjC,IAAI,CAAC,eAAe,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;QACvG,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;QAChE,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QAC7C,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,GAAG,MAAM,CAAC;QACnD,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC;QACvC,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;QAC1C,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,2BAAY,CAAC,UAAU,EAAwB;YACtE,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,IAAI,CAAC,MAAM;SACpB,CAAC,CAAC;QACH,CAAC,CAAC,eAAe,EAAE,CAAC;IACtB,CAAC;IAEO,mCAAY,GAApB,UAAqB,CAAa;QAChC,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;YACvB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;YACvB,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,2BAAY,CAAC,WAAW,EAAyB;gBACxE,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE,IAAI,CAAC,MAAM;aACpB,CAAC,CAAC;SACJ;IACH,CAAC;IAEO,qCAAc,GAAtB;QACE,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC;YAChE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;YAC7C,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;YAC7C,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,2BAAY,CAAC,QAAQ,EAAsB;gBAClE,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE,IAAI,CAAC,MAAM;aACpB,CAAC,CAAC;SACJ;QACD,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAC3B,CAAC;IAEO,0CAAmB,GAA3B;QACE,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,EAAE;YACnB,IAAI,IAAI,CAAC,UAAU,IAAI,SAAS,EAAE;gBAChC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC;aACpD;YACD,IAAI,IAAI,CAAC,UAAU,GAAG,EAAE,EAAE;gBACxB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;aACjD;iBAAM;gBACL,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;aAC7C;SACF;IACH,CAAC;IAEO,uCAAgB,GAAxB,UAAyB,CAAa;QACpC,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,IAAI,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE;YACnC,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YAC7B,IAAI,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;SAC9B;aAAM,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,EAAE;YAC7B,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC;YACf,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC;SAChB;aAAM,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,EAAE;YACjC,IAAI,GAAG,CAAC,CAAC,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,eAAe,CAAC,UAAU,CAAC;YAClF,IAAI,GAAG,CAAC,CAAC,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC;SACjF;QACD,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC;IAC9B,CAAC;IAEO,qCAAc,GAAtB,UAAuB,CAAa;QAClC,IAAM,GAAG,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;QACrC,IAAM,KAAK,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC;QAC1C,IAAI,YAAY,CAAC;QACjB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC/C,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE;YAC7D,IAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAC1C,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC;YACtC,YAAY,GAAG,UAAU,CAAC,KAAK,CAAC;SACjC;QACD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC/D,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAChE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC;QACzD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QACjD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QAC/C,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC;QAC5D,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE;YAC7D,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,YAAY,CAAC;SACtD;aAAM;YACL,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;SACzD;IACH,CAAC;IAEO,iCAAU,GAAlB,UAAmB,KAAa;QAAhC,iBAmBC;QAlBC,IAAM,KAAK,GAAG,gBAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,UAAC,IAAI,EAAE,CAAC;YAC3C,OAAO,IAAI,CAAC,GAAG,CAAC,KAAI,CAAC,UAAU,GAAG,KAAI,CAAC,mBAAmB,CAAC,KAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpF,CAAC,CAAC,CAAC;QACH,IAAM,SAAS,GAAG,gBAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,UAAC,IAAI,EAAE,CAAC;YAC/C,OAAO,IAAI,CAAC,GAAG,CAAC,KAAI,CAAC,aAAa,GAAG,KAAI,CAAC,mBAAmB,CAAC,KAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvF,CAAC,CAAC,CAAC;QACH,IAAM,SAAS,GAAG,gBAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,UAAC,IAAI,EAAE,CAAC;YAC/C,OAAO,IAAI,CAAC,GAAG,CAAC,KAAI,CAAC,YAAY,GAAG,KAAI,CAAC,mBAAmB,CAAC,KAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtF,CAAC,CAAC,CAAC;QACH,IAAM,OAAO,GAAG,gBAAG,CAAC,KAAK,CAAC,CAAC;QAC3B,IAAM,WAAW,GAAG,gBAAG,CAAC,SAAS,CAAC,CAAC;QACnC,IAAM,eAAe,GAAG,gBAAG,CAAC,SAAS,CAAC,CAAC;QACvC,IAAI,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;QAC7D,IAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAO,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;QACpE,IAAM,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAO,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC,CAAC;QAC5E,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAC9C,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAClD,OAAO,EAAE,QAAQ,EAAE,IAAI,CAAC,mBAAmB,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC;IACjF,CAAC;IACH,mBAAC;AAAD,CAAC;AA5NY,oCAAY;AA8NzB;IAIE,qBAAmB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;QAC/B,IAAI,CAAC,WAAW,GAAG,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC/C,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAClD,CAAC;IAEM,2BAAK,GAAZ;QACE,IAAM,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QAC3C,IAAM,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;QAC7C,QAAE,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;QAC9C,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IACjC,CAAC;IAEM,gDAA0B,GAAjC,UAAkC,MAAiB;QACjD,IAAI,MAAM,IAAI,SAAS,EAAE;YACvB,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;YAC/B,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC;SAC3B;aAAM;YACL,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACrC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;SACvC;QACD,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAEM,8BAAQ,GAAf,UAAgB,MAAgB;QAC9B,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACxC,CAAC;IAEM,iCAAW,GAAlB;QACE,IAAI,CAAC,WAAW,CAAC,YAAY,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,WAAW,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;QACjE,IAAI,CAAC,YAAY,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;QAChE,IAAI,CAAC,YAAY,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;IACpE,CAAC;IAEM,iCAAW,GAAlB;QACE,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,CAAC;IAC3E,CAAC;IAEM,wCAAkB,GAAzB;QACE,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC,CAAC;IACzE,CAAC;IAEM,8BAAQ,GAAf;QACE,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC;IACrE,CAAC;IACH,kBAAC;AAAD,CAAC;AAED;IAME,uBAAmB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;QAC/B,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACnB,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,MAAM,EAAE;YACvF,IAAI,CAAC,SAAS;gBACZ,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,SAAS,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;SACjI;aAAM,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,EAAE;YAC1F,IAAI,CAAC,SAAS;gBACZ,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;YAC5H,IAAI,CAAC,QAAQ;gBACX,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,QAAQ,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC;SAC1H;IACH,CAAC;IAEM,6BAAK,GAAZ;QACE,IAAI,CAAC,OAAO,GAAG,QAAE,CAAC,KAAK,EAAE;YACvB,SAAS,EAAE,sBAAsB;SAClC,CAAC,CAAC,EAAE,CAAC;QACN,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAEM,kCAAU,GAAjB;QACE,OAAO,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IACjC,CAAC;IAEM,4CAAoB,GAA3B,UAA4B,MAAgB;QAC1C,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAEM,qDAA6B,GAApC,UAAqC,MAAgB;QACnD,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IACtC,CAAC;IAEM,kCAAU,GAAjB;QACE,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;IAChD,CAAC;IAEM,oCAAY,GAAnB;QACE,IAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;QAChD,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CACnB;YACE,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;YACtD,GAAG;YACH,IAAI,CAAC,SAAS;YACd,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;YACtD,GAAG;SACJ,CAAC,IAAI,CAAC,GAAG,CAAC,CACZ,CAAC;IACJ,CAAC;IAEM,qCAAa,GAApB,UAAqB,GAAW;QAC9B,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAEO,uCAAe,GAAvB,UAAwB,MAAgC;QAAhC,kCAAS,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE;QACtD,IAAI,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QACtB,IAAI,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;QAEvB,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE;YACjC,IAAM,WAAW,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;YACpC,IAAM,YAAY,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;YACtC,WAAW,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACjC,YAAY,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YAClC,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,IAAI,cAAc,CAAC,CAAC;YACxF,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,IAAI,cAAc,CAAC,CAAC;YAC1F,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;SACpB;aAAM;YACL,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACnD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;SACtD;QACD,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACjF,CAAC;IACH,oBAAC;AAAD,CAAC;AAED;IAUE,qBAAmB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;QAC/B,IAAI,CAAC,GAAG,GAAG,WAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC9D,IAAI,CAAC,CAAC,GAAG,oBAAS,EAAE,CAAC;QACrB,IAAI,CAAC,CAAC,GAAG,sBAAW,EAAE,CAAC;QACvB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,aAAK,CAAC,UAAU,CACjD;YACE,GAAG,EAAE,EAAE;YACP,KAAK,EAAE,CAAC;YACR,IAAI,EAAE,CAAC;YACP,MAAM,EAAE,EAAE;SACX,EACD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,IAAI,EAAE,CACvC,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,iBAAiB,IAAI,GAAG,CAAC;QACjG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC;QAExE,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAEM,0BAAI,GAAX,UAAY,IAAuC;QAAvC,8BAA2B,IAAI,CAAC,OAAO;QACjD,IAAI,IAAI,EAAE;YACR,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE;gBACxB,mCAAmC;gBACnC,IAAI,GAAG,IAAI,CAAC,2CAA2C,CAAC,IAAI,CAAC,CAAC;aAC/D;YACD,IAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;YACzD,IAAM,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;YAC3D,IAAM,KAAK,GAAG,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;YAChH,IAAM,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;YAClH,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE;gBAChE,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;gBACxC,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;gBAClC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;gBAE1B,IAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACzD,IAAM,mBAAmB,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;gBACpD,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,mBAAmB,CAAC,CAAC;gBAC/D,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,mBAAmB,CAAC,CAAC;aAChE;YAED,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;SACrB;IACH,CAAC;IAEO,kCAAY,GAApB;QACE,IAAI,CAAC,OAAO,GAAG,QAAE,CAAC,KAAK,EAAE;YACvB,SAAS,EAAE,sBAAsB;SAClC,CAAC,CAAC,EAAE,CAAC;QAEN,IAAI,CAAC,YAAY,GAAG,QAAE,CAAC,KAAK,EAAE;YAC5B,SAAS,EAAE,4BAA4B;SACxC,CAAC,CAAC,EAAE,CAAC;QAEN,IAAI,CAAC,cAAc,GAAG,QAAE,CAAC,MAAM,EAAE;YAC/B,SAAS,EAAE,eAAe;SAC3B,CAAC,CAAC,EAAE,CAAC;QAEN,IAAI,CAAC,YAAY,GAAG,QAAE,CAAC,MAAM,EAAE;YAC7B,SAAS,EAAE,aAAa;SACzB,CAAC,CAAC,EAAE,CAAC;QAEN,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC3C,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC7C,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC3C,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QACxB,QAAE,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC;IAEO,iEAA2C,GAAnD,UAAoD,IAAwB;QAA5E,iBAcC;QAbC,OAAO,gBAAG,CAAC,IAAI,EAAE,UAAC,CAAmB;YACnC,0HAA0H;YAC1H,uIAAuI;YACvI,sFAAsF;YACtF,uLAAuL;YACvL,8GAA8G;YAC9G,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,EAAE;gBACpB,IAAM,OAAO,GAAG,CAAC,KAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,GAAG,KAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC;gBACxG,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC;gBAC5C,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC;aACzC;YACD,OAAO,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,mCAAa,GAArB,UAAsB,KAAa,EAAE,MAAc;QACjD,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;QACzB,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACpB,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;IACnE,CAAC;IAEO,oCAAc,GAAtB,UAAuB,IAAwB;QAC7C,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,CAAC,CAAC,MAAM,CACX,gBAAG,CAAC,IAAI,EAAE,WAAC;YACT,OAAO,CAAC,CAAC,KAAK,CAAC;QACjB,CAAC,CAAC,CACH,CAAC;QACF,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;YACZ,CAAC;YACD,QAAK,CAAC,IAAI,EAAE,WAAC;gBACX,OAAO,CAAC,CAAC,CAAC,CAAC;YACb,CAAC,CAAC;SACH,CAAC,CAAC;IACL,CAAC;IAEO,6CAAuB,GAA/B,UAAgC,IAAwB;QACtD,IAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACtD,OAAO,OAAO,IAAI,CAAC,CAAC;IACtB,CAAC;IAEO,2CAAqB,GAA7B,UAA8B,IAAwB;QACpD,IAAM,cAAc,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;QAC1D,IAAI,CAAC,gCAAgC,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;QAC5D,IAAI,CAAC,0BAA0B,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;IACxD,CAAC;IAEO,sDAAgC,GAAxC,UAAyC,IAAwB,EAAE,cAAsB;QACvF,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,cAAc,EAAE;YAC/E,IAAM,gBAAgB,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;YACnE,IAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,2BAAmB,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,cAAc,CAAC,CAAC,CAAC;YACtG,IAAI,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YAChC,KAAK,IAAI,CAAC,GAAG,gBAAgB,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;gBACzC,IAAI,CAAC,OAAO,CAAmB,EAAE,KAAK,EAAE,WAAW,GAAG,cAAc,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBAChG,WAAW,IAAI,cAAc,CAAC;aAC/B;SACF;IACH,CAAC;IAEO,gDAA0B,GAAlC,UAAmC,IAAwB,EAAE,cAAsB;QACjF,IAAM,aAAa,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QACtC,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE;YACrD,IAAM,eAAe,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC;YAC1E,IAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,2BAAmB,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,GAAG,cAAc,CAAC,CAAC,CAAC;YACnG,IAAI,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,GAAG,CAAC;YAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE,CAAC,EAAE,EAAE;gBACvC,IAAI,CAAC,IAAI,CAAmB,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,WAAW,GAAG,cAAc,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC7F,WAAW,IAAI,cAAc,CAAC;aAC/B;SACF;IACH,CAAC;IAEO,yCAAmB,GAA3B,UAA4B,KAAa,EAAE,MAAc;QACvD,IAAM,GAAG,GAAG,QAAE,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAChD,GAAG,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,GAAG,IAAI,CAAC,CAAC;QACxC,GAAG,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;QAC1C,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;IACtI,CAAC;IAEO,qCAAe,GAAvB,UACE,IAAkE,EAClE,KAAa,EACb,MAAc,EACd,mBAA6B;QAE7B,IAAI;aACD,KAAK,EAAE;aACP,MAAM,CAAC,MAAM,CAAC;aACd,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,CAAC;aAC5D,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;aACjC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;aACjD,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC;aACjC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC;aACjC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,EAAE,CAAC;aACvC,EAAE,CAAC,WAAW,EAAE,IAAI,CAAC,uBAAuB,CAAC,MAAM,CAAC,CAAC;aACrD,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,sBAAsB,EAAE,CAAC,CAAC;IACnD,CAAC;IAEO,4CAAsB,GAA9B,UACE,IAAkE,EAClE,MAAc,EACd,mBAA6B;QAE7B,IAAI;aACD,UAAU,EAAE;aACZ,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC;aACjC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;aACjC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC,mBAAmB,CAAC,CAAC;aAC5D,UAAU,EAAE;aACZ,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC;aACrD,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC;aACjC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC;IACvD,CAAC;IAEO,iCAAW,GAAnB,UAAoB,mBAA6B,EAAE,CAAmB,EAAE,CAAS;QAC/E,IAAI,CAAC,CAAC,KAAK,IAAI,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,mBAAmB,CAAC,CAAC,CAAC,EAAE;YACxE,OAAO,cAAc,CAAC;SACvB;aAAM,IAAI,mBAAmB,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE;YACxE,OAAO,cAAc,CAAC;SACvB;aAAM,IAAI,mBAAmB,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE;YACxG,OAAO,cAAc,CAAC;SACvB;aAAM;YACL,OAAO,EAAE,CAAC;SACX;IACH,CAAC;IAEO,gCAAU,GAAlB,UAAmB,CAAmB,EAAE,MAAc;QACpD,QAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAChF,QAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC3C,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QAExB,sCAAsC;QACtC,IAAM,yBAAyB,GAAG,EAAE,CAAC;QACrC,IAAM,2BAA2B,GAAG,EAAE,CAAC;QACvC,IAAM,gBAAgB,GAAG,CAAC,CAAC;QAE3B,IAAM,0BAA0B,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,yBAAyB,CAAC;QAC/E,IAAM,eAAe,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QAC/C,IAAM,kBAAkB,GAAG,yBAAyB,GAAG,eAAe,GAAG,gBAAgB,CAAC;QAE1F,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,GAAM,0BAA0B,OAAI,CAAC;QAC5D,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,GAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,OAAI,CAAC;QACrD,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,GAAM,kBAAkB,OAAI,CAAC;QAEzD,IAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;QACzD,IAAM,WAAW,GAAG,IAAI,SAAG,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;QAE5C,IAAM,6BAA6B,GAAG,WAAW,CAAC,KAAK,GAAG,WAAW,GAAG,2BAA2B,CAAC;QAEpG,IAAI,6BAA6B,EAAE;YACjC,IAAM,6BAA6B,GAAG,WAAW,GAAG,WAAW,CAAC,KAAK,GAAG,2BAA2B,CAAC;YACpG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,GAAM,0BAA0B,GAAG,6BAA6B,OAAI,CAAC;YAC5F,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,GAAM,kBAAkB,GAAG,6BAA6B,OAAI,CAAC;SAC1F;IACH,CAAC;IAEO,qCAAe,GAAvB;QAAA,iBAEC;QADC,OAAO,UAAC,CAAmB,IAAK,YAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAf,CAAe,CAAC;IAClD,CAAC;IAEO,qCAAe,GAAvB;QAAA,iBAEC;QADC,OAAO,UAAC,CAAmB,IAAK,YAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAX,CAAW,CAAC;IAC9C,CAAC;IAEO,0CAAoB,GAA5B,UAA6B,MAAc;QAA3C,iBAEC;QADC,OAAO,UAAC,CAAmB,IAAK,aAAM,GAAG,KAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAApB,CAAoB,CAAC;IACvD,CAAC;IAEO,yCAAmB,GAA3B,UAA4B,mBAA6B;QAAzD,iBAEC;QADC,OAAO,UAAC,CAAC,EAAE,CAAC,IAAK,sBAAa,KAAI,CAAC,WAAW,CAAC,mBAAmB,EAAE,CAAC,EAAE,CAAC,CAAG,EAA1D,CAA0D,CAAC;IAC9E,CAAC;IAEO,yCAAmB,GAA3B;QAAA,iBAQC;QAPC,OAAO,UAAC,CAAmB,EAAE,CAAC;YAC5B,QAAE,CAAC,KAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,2BAAY,CAAC,kBAAkB,EAA2B;gBACxF,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,GAAG,EAAE,CAAC,CAAC,GAAG;gBACV,KAAK,EAAE,CAAC,CAAC,CAAC;aACX,CAAC,CAAC;QACL,CAAC,CAAC;IACJ,CAAC;IAEO,6CAAuB,GAA/B,UAAgC,MAAc;QAA9C,iBAEC;QADC,OAAO,UAAC,CAAmB,IAAK,YAAI,CAAC,UAAU,CAAC,CAAC,EAAE,MAAM,CAAC,EAA1B,CAA0B,CAAC;IAC7D,CAAC;IAEO,4CAAsB,GAA9B;QAAA,iBAEC;QADC,OAAO,cAAM,eAAE,CAAC,KAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAvB,CAAuB,CAAC;IACvC,CAAC;IACH,kBAAC;AAAD,CAAC;;;;;;;;;;;AC54BM,IAAI,YAAI;AACR;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,IAAI,cAAM;AACV,kBAAkB;AAClB;AACA,eAAe,+WAA+W,oBAAoB,sMAAsM,oBAAoB,sBAAsB,oBAAoB,MAAM,oBAAoB;AAChrB,uBAAuB;AACvB,oBAAoB;;;;;;ACfpB;;;ACAQ;AACf;AACA,CAAC;;;ACF6B;AACI;;AAElC,IAAI,QAAG;AACP,IAAI,UAAK;AACT,IAAI,WAAM;AACV,IAAI,SAAI;AACR;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,SAAS,WAAM;AACf,sDAAsD;AACtD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,SAAS,SAAI;AACb;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,QAAG,eAAe,SAAI;AAC3C,qBAAqB,SAAI,eAAe,UAAK;AAC7C,6BAA6B,QAAG,eAAe,WAAM;;AAErD;AACA;AACA,yGAAyG,QAAQ;AACjH;AACA;AACA;AACA;AACA,sCAAsC,WAAM;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,+BAA+B,QAAG,sBAAsB,WAAM;;AAE9D;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,0CAA0C,kFAAkF,EAAE;;AAE9H;AACA;AACA,0CAA0C,gCAAgC,6DAA6D,EAAE;AACzI;;AAEA;;AAEA;AACA,8BAA8B,SAAI,cAAc,UAAK;AACrD;AACA;;AAEA;AACA;AACA,wCAAwC,+BAA+B,EAAE;;AAEzE;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,wCAAwC,UAAK,wBAAwB,SAAI;;AAEzE;AACA,0BAA0B,wBAAwB,EAAE;AACpD;;AAEA;AACA;AACA;;AAEA;AACA,2BAA2B,KAAK;AAChC;;AAEA;AACA,gEAAgE,KAAK;AACrE;;AAEA;AACA,+DAA+D,KAAK;AACpE;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEO;AACP,SAAS,SAAI,CAAC,QAAG;AACjB;;AAEO;AACP,SAAS,SAAI,CAAC,UAAK;AACnB;;AAEO;AACP,SAAS,SAAI,CAAC,WAAM;AACpB;;AAEO;AACP,SAAS,SAAI,CAAC,SAAI;AAClB;;;ACxKgB;;;ACLhB,YAAY;;AAEZ;AACA,8CAA8C,IAAI,OAAO;AACzD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA,iBAAiB;AACjB;AACA;AACA,GAAG;AACH;AACA,kFAAkF,OAAO;AACzF;AACA,+CAA+C,OAAO;AACtD,GAAG;AACH;AACA;AACA,mDAAmD,OAAO;AAC1D;AACA;;AAEA;AACA,qCAAqC,OAAO;AAC5C;AACA;AACA;AACA;AACA;;AAEA;AACA,kCAAkC,OAAO;AACzC;AACA;AACA;AACA;AACA;AACA,mCAAmC,4BAA4B;AAC/D;AACA;;AAEe,yDAAQ,EAAC;;;ACnF0B;;;ACA3C;;AAEQ;AACf;AACA;AACA;AACA;AACA;AACA,CAAC,EAAC;;;ACRoC;;AAEvB;AACf;AACA;AACA,SAAS,UAAU,2BAA2B,OAAO,UAAU,sBAAsB;AACrF,CAAC;;;ACNmC;AACD;;AAEnC;AACA;AACA;AACA;AACA,mBAAmB,KAAK,8CAA8C,KAAK;AAC3E;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEe;AACf,iBAAiB,SAAS;AAC1B;AACA;AACA;AACA,CAAC;;;ACxBD;;AAEe;AACf;AACA;AACA;AACA,CAAC;;;ACNiC;AACC;;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CA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,iBAAiB,SAAS;;AAE1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;;ACxDc;AACf;AACA;AACA,0BAA0B;AAC1B,CAAC;;;ACJmC;;AAEpC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAEM;AACP;AACA,SAAS,UAAW;AACpB;;;AClCA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AC3BD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEe;AACf;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;;AC1ED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;ACxBD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;ACxBD;AACA;AACA;;AAEe;AACf;AACA,CAAC;;;ACND;AACA;AACA;;AAEe;AACf;AACA,CAAC;;;ACNgC;;AAElB;AACf,mDAAmD,OAAO;AAC1D;AACA;AACA,GAAG;AACH,CAAC;;;ACPgC;AACE;;AAEnC;AACA;AACA;;AAEe;AACf,mDAAmD,OAAO;AAC1D,uFAAuF,YAAQ;AAC/F;AACA;AACA,GAAG;AACH,CAAC;;;ACbD,SAAS,aAAM;AACf;AACA;AACA;;AAEe;AACf,mBAAmB,aAAM;AACzB,CAAC;;;ACPD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEe;AACf;AACA,CAAC;;;ACZc;AACf;AACA;AACA;AACA,CAAC;;;ACJD;;AAEO,IAAI,QAAK;;AAEhB;AACA,MAAM,UAAO;AACb,0BAA0B,UAAO;AACjC,oBAAoB;AACpB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,QAAK,CAAC;AACvB,IAAI,QAAK;AACT;AACA;AACA,KAAK;AACL,MAAM,QAAK;AACX;AACA;AACA;;AAEA,SAAS,iBAAc;AACvB;AACA;AACA;AACA,YAAY;AACZ,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,0CAA0C,OAAO;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;;AAEe;AACf,kBAAkB,iBAAc;;AAEhC;AACA;AACA,6CAA6C,OAAO;AACpD,4BAA4B,OAAO;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,OAAO;AACpB;AACA,CAAC;;AAEM;AACP,eAAe,QAAK;AACpB,uBAAuB,QAAK;AAC5B,EAAE,QAAK;AACP;AACA;AACA,GAAG;AACH,IAAI,QAAK;AACT;AACA;;;AC1GoC;;AAEpC;AACA,eAAe,UAAW;AAC1B;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA,CAAC;;;ACjCuC;AACM;AACN;AACJ;AACE;AACF;AACA;AACE;AACA;AACF;AACA;AACE;AACF;AACA;AACE;AACF;AACA;AACE;AACM;AACF;AACN;AACA;AACE;AACA;AACE;AACA;AACA;AACF;AACA;AACN;AACY;;AAErC,IAAI,cAAI;;AAER;AACP;AACA;AACA;;AAEA,SAAS,mBAAS;AAClB,qDAAqD,cAAI;AACzD;;AAEA,sBAAsB,mBAAS;AAC/B;AACA,UAAU,gBAAgB;AAC1B,aAAa,SAAmB;AAChC,UAAU,gBAAgB;AAC1B,QAAQ,cAAc;AACtB,SAAS,eAAe;AACxB,QAAQ,cAAc;AACtB,QAAQ,IAAc;AACtB,SAAS,eAAe;AACxB,SAAS,eAAe;AACxB,QAAQ,cAAc;AACtB,QAAQ,IAAc;AACtB,SAAS,eAAe;AACxB,QAAQ,cAAc;AACtB,QAAQ,cAAc;AACtB,SAAS,eAAe;AACxB,QAAQ,IAAc;AACtB,QAAQ,IAAc;AACtB,SAAS,KAAe;AACxB,YAAY,QAAkB;AAC9B,WAAW,OAAiB;AAC5B,QAAQ,cAAc;AACtB,QAAQ,IAAc;AACtB,SAAS,eAAe;AACxB,SAAS,eAAe;AACxB,UAAU,MAAgB;AAC1B,UAAU,MAAgB;AAC1B,UAAU,gBAAgB;AAC1B,SAAS,KAAe;AACxB,SAAS,KAAe;AACxB,MAAM,YAAY;AAClB,YAAY,kBAAkB;AAC9B;;AAEe,qEAAS,EAAC;;;AC9EyB;;AAEnC;AACf;AACA,YAAY,SAAS;AACrB,YAAY,SAAS,eAAe,cAAI;AACxC,CAAC;;;ACN+B;AACF;;AAEf;AACf,SAAS,UAAM,CAAC,OAAO;AACvB,CAAC;;;ACLD;;AAEe;AACf;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;;AC1BqC;;AAEtB;AACf,gBAAgB,QAAK;AACrB;AACA;AACA,CAAC;;;ACNc;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;;ACZuC;AACZ;;AAEb;AACf,cAAc,WAAW;AACzB;AACA,SAAS,SAAK;AACd,CAAC;;;ACPiD;;AAEnC;AACf;AACA,YAAY,SAAS;AACrB,YAAY,SAAS,qCAAqC,cAAI;AAC9D,CAAC;;;ACNuC;AACZ;;AAEb;AACf,4DAA4D,WAAW;;AAEvE,0DAA0D,OAAO;AACjE;AACA,aAAa,SAAK;AAClB;AACA;;AAEA;AACA,CAAC;;;ACbuC;AACZ;;AAEb;AACf,iCAAiC,WAAW;;AAE5C,0EAA0E,OAAO;AACjF,gBAAgB,SAAK;AACrB;;AAEA;AACA,CAAC;;;ACX0C;AACE;AACJ;AACI;AACJ;AACQ;AACE;AACJ;AACJ;AACM;AACM;AACR;AACM;AACC;AACb;AACI;AACF;AACO;;;ACjBf;;AAE5B;AACP,EAAE,QAAK;AACP;;AAEe;AACf,EAAE,QAAK;AACP,EAAE,QAAK;AACP,CAAC;;;ACTmC;AACD;;AAEpB;AACf;AACA,kBAAkB,UAAM,4BAA4B,OAAO;AAC3D;AACA,qCAAqC,OAAO;AAC5C,GAAG;AACH;AACA;AACA;AACA,CAAC;;AAEM;AACP;AACA,kBAAkB,UAAM;AACxB;AACA,+BAA+B,OAAO;AACtC,2BAA2B,kCAAkC,EAAE;AAC/D;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;;AC3Be;AACf;AACA;AACA;AACA,CAAC;;;ACJc;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;AChBqC;AACiC;AAC1B;AACQ;AACf;AACF;;AAEnC;AACA;AACA,UAAU,QAAK,aAAa,QAAK;AACjC;;AAEA;AACA;AACA;;AAEA;AACA,sBAAsB,GAAG,QAAK,OAAO,QAAK,GAAG;AAC7C;;AAEA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA,mBAAmB;AACnB,kBAAkB,YAAQ;AAC1B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,yEAAyE,KAAK;AAC9E;AACA,IAAI,UAAM,CAAC,QAAK;AAChB,IAAI,MAAM,CAAC,QAAK;AAChB,IAAI,aAAa;AACjB;AACA,iBAAiB,QAAK;AACtB,iBAAiB,QAAK;AACtB;AACA;;AAEA;AACA,IAAI,OAAO;AACX;AACA,eAAe,QAAK,4BAA4B,QAAK;AACrD;AACA;AACA;AACA;;AAEA;AACA,IAAI,UAAM,CAAC,QAAK;AAChB,IAAI,OAAO,CAAC,QAAK;AACjB,IAAI,OAAO;AACX;AACA;;AAEA;AACA;AACA,kBAAkB,QAAK;AACvB;AACA;;AAEA,eAAe,OAAO;AACtB,0DAA0D,SAAK;AAC/D,QAAQ,aAAa;AACrB;AACA;AACA;AACA;;AAEA;AACA,kBAAkB,QAAK;AACvB;;AAEA,eAAe,OAAO;AACtB;AACA,QAAQ,OAAO;AACf;AACA;AACA;AACA;;AAEA;AACA,kBAAkB,QAAK;AACvB;;AAEA;AACA,yCAAyC,oBAAoB,EAAE,OAAO;AACtE,eAAe,OAAO;AACtB;AACA,QAAQ,aAAa;AACrB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,SAAS,WAAW,KAAK,SAAS;AAClC,WAAW,QAAK;AAChB;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,2DAA2D;AAC3D,kDAAkD;AAClD,0DAA0D;AAC1D;AACA,MAAM,WAAW,KAAK,SAAS;AAC/B;AACA;;AAEA;AACA,sEAAsE,YAAQ;AAC9E;;AAEA;AACA,yEAAyE,YAAQ;AACjF;;AAEA;AACA,uEAAuE,YAAQ;AAC/E;;AAEA;AACA,yEAAyE,YAAQ;AACjF;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;;ACtKyC;AACgC;;;;;;ACD1E,IAAI,WAAK;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qIAAqI,mBAAmB;;AAEjJ;AACP;AACA;;AAEA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;;AAEO;AACP,QAAQ;AACR,IAAI,WAAK,CAAC;AACV;AACA;AACA;AACA;AACA;AACA,IAAI,WAAK;AACT;;AAEA;AACA;AACA,EAAE,WAAK;AACP;AACA;AACA,GAAG;AACH,IAAI,WAAK;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAM,WAAK,SAAS;AACpB;AACA,8BAA8B;AAC9B;AACA;AACA;AACA,GAAG;AACH;AACA,IAAI,WAAK;AACT;AACA;;;AC7GiC;;AAElB;AACf,cAAc,KAAK;AACnB;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;;ACVqC;;AAEvB;AACf,cAAc,KAAK;AACnB;AACA,wCAAwC,GAAG;AAC3C;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;;ACRmB;;AAIE;;AAIC;;;ACZc;AACG;;AAExC,cAAc,YAAQ;AACtB;;AAEO;AACA;AACA;AACA;AACA;AACA;AACA;;AAEQ;AACf;AACA;AACA;AACA,EAAE,eAAM;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;;AAEM,SAAS,aAAI;AACpB,iBAAiB,YAAG;AACpB,0DAA0D;AAC1D;AACA;;AAEO,SAAS,YAAG;AACnB,iBAAiB,YAAG;AACpB,0DAA0D;AAC1D;AACA;;AAEO,SAAS,YAAG;AACnB;AACA;AACA;AACA;;AAEA,SAAS,eAAM;AACf;AACA;;AAEA;AACA;AACA;AACA,eAAe,KAAK;;AAEpB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,2CAA2C;AAC3C,sCAAsC,WAAO;;AAE7C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,wDAAwD;AACxD;AACA,0DAA0D;AAC1D;AACA,IAAI,WAAO;AACX;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,wCAAwC;AACxC;;AAEA;AACA;AACA,uBAAuB,OAAO;AAC9B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oCAAoC;AACpC;AACA;AACA;;;ACxJiE;;AAElD;AACf;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA,kDAAkD,eAAe,UAAU;AAC3E,8BAA8B,QAAQ,qBAAqB,MAAM;AACjE,qBAAqB,KAAK;AAC1B;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;ACvBuC;;AAEzB;AACf;AACA,IAAI,SAAS;AACb,GAAG;AACH,CAAC;;;ACNsC;;AAEvC;AACA;AACA;AACA,mBAAmB,YAAG;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA,wCAAwC,OAAO;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,mBAAmB,YAAG;AACtB;;AAEA;AACA;AACA;AACA;AACA;AACA,oBAAoB,yBAAyB,2BAA2B,OAAO;AAC/E;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEe;AACf;;AAEA;;AAEA;AACA,gBAAgB,YAAG;AACnB,wCAAwC,OAAO;AAC/C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAEM;AACP;;AAEA;AACA,mBAAmB,YAAG;AACtB,2CAA2C;AAC3C,GAAG;;AAEH;AACA,WAAW,YAAG;AACd;AACA;;;;;;AChF+B;AACqD;;AAErE;AACf;AACA,kCAAkC,+CAAiB;AACnD,qBAAqB,6BAAK,GAAG,4CAAc;AAC3C,aAAa,qCAAK,eAAe,4CAAc;AAC/C,QAAQ,+CAAiB;AACzB,CAAC;;;ACT8E;AACxC;AACD;AACK;;AAE3C,SAAS,eAAU;AACnB;AACA;AACA;AACA;;AAEA,SAAS,iBAAY;AACrB;AACA;AACA;AACA;;AAEA,SAAS,iBAAY;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,mBAAc;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,iBAAY;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,mBAAc;AACvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,iBAAiB,SAAS,uCAAuC,qDAAoB,GAAG,sBAAW;AACnG;AACA,0BAA0B,mBAAc,GAAG,iBAAY,eAAe,UAAU;AAChF,0CAA0C,iBAAY,GAAG,eAAU;AACnE,0BAA0B,mBAAc,GAAG,iBAAY;AACvD,CAAC;;;AC7EsC;;AAEvC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA,iBAAiB,SAAS;AAC1B;AACA,CAAC;;;AC3CuC;;AAExC;AACA;AACA,IAAI,aAAI;AACR;AACA;;AAEA;AACA;AACA,IAAI,aAAI;AACR;AACA;;AAEe;AACf;;AAEA;AACA;AACA;AACA;AACA,QAAQ,YAAG;AACX,CAAC;;;ACtBsC;;AAEvC;AACA;AACA,IAAI,YAAG;AACP;AACA;;AAEA;AACA;AACA,IAAI,YAAG;AACP;AACA;;AAEe;AACf;;AAEA;AACA;AACA;AACA;AACA,QAAQ,YAAG;AACX,CAAC;;;ACtBsC;;AAEvC;AACA;AACA;AACA,IAAI,YAAG;AACP;AACA;;AAEe;AACf;;AAEA;AACA;AACA,QAAQ,YAAG;AACX,CAAC;;;ACfoC;AACC;;AAEvB;AACf,2CAA2C,OAAO;;AAElD,qFAAqF,OAAO;AAC5F,4FAA4F,OAAO;AACnG;AACA;AACA;AACA;AACA;;AAEA,aAAa,UAAU;AACvB,CAAC;;;ACfqC;;AAEvB;AACf;;AAEA,+JAA+J,OAAO;AACtK,wHAAwH,OAAO;AAC/H;AACA;AACA;AACA;AACA;;AAEA,QAAQ,QAAQ;AAChB;AACA;;AAEA,aAAa,UAAU;AACvB,CAAC;;;AClB4C;;AAE7C,SAAS,QAAK;AACd;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA,sBAAsB,QAAK,SAAS,aAAI,GAAG,YAAG;AAC9C;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEe;AACf;;AAEA;AACA,QAAQ,YAAG;AACX;AACA,CAAC;;;AC/BD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA,CAAC;;;ACVqC;AACA;AACM;;AAE7B;AACf;AACA;;AAEA,6CAA6C,YAAQ;;AAErD,qFAAqF,OAAO;AAC5F,+GAA+G,OAAO;AACtH;AACA;AACA;AACA,QAAQ,mBAAQ,qCAAqC,YAAG;AACxD;AACA;AACA;;AAEA,aAAa,UAAU;AACvB,CAAC;;;ACrBwC;AACH;AACM;;AAE7B;AACf;AACA;;AAEA,6CAA6C,WAAW;;AAExD,yFAAyF,OAAO;AAChG,8DAA8D,OAAO;AACrE;AACA,yFAAyF,YAAG,uCAAuC,OAAO;AAC1I;AACA,YAAY,mBAAQ;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,aAAa,UAAU;AACvB,CAAC;;;ACzBsC;;AAEvC,IAAI,mBAAS,GAAG,aAAS;;AAEV;AACf,aAAa,mBAAS;AACtB,CAAC;;;ACN8E;AAC5C;AACD;AACI;AACK;;AAE3C;AACA;AACA;AACA;AACA;AACA,kBAAkB,UAAK;AACvB,oDAAoD,UAAK;AACzD;AACA;AACA;AACA;AACA;;AAEA,SAAS,iBAAW;AACpB;AACA;AACA;AACA;;AAEA,SAAS,mBAAa;AACtB;AACA;AACA;AACA;AACA,kBAAkB,UAAK;AACvB;AACA;AACA;AACA;AACA;;AAEA,SAAS,mBAAa;AACtB;AACA;AACA;AACA;AACA,kBAAkB,UAAK;AACvB;AACA;AACA,6EAA6E,UAAK;AAClF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,YAAG;AACtB;AACA,qEAAqE,iBAAW;;AAEhF;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEe;AACf,yCAAyC,qDAAoB,GAAG,sBAAW;AAC3E;AACA;AACA,+BAA+B,iBAAW;AAC1C;AACA,wBAAwB,mBAAa,UAAU,UAAU;AACzD;AACA;AACA,wBAAwB,mBAAa;AACrC;AACA,CAAC;;;AC/ED;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA,CAAC;;;ACvBqC;;AAEtC,SAAS,iBAAY;AACrB;AACA;AACA;AACA;;AAEA,SAAS,iBAAY;AACrB;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA,QAAQ,iBAAY,CAAC,UAAU;AAC/B,QAAQ,iBAAY;AACpB,CAAC;;;ACnBD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA,CAAC;;;ACvB4C;AACD;;AAE7B;AACf;AACA;AACA,YAAY,KAAK;;AAEjB,2DAA2D,OAAO;AAClE,8DAA8D,OAAO;AACrE;AACA,sBAAsB,YAAG;AACzB,QAAQ,mBAAQ;AAChB;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;;AAEA,aAAa,UAAU;AACvB,CAAC;;;ACvBiC;;AAEnB;AACf;AACA;AACA,kBAAkB,cAAc;AAChC,eAAe,mBAAmB,6BAA6B;;AAE/D;AACA,qBAAqB,YAAG;AACxB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;AACL,GAAG;AACH,CAAC;;;ACzBsC;AACC;AACU;AACR;AACM;AACR;AACI;AACF;AACN;AACQ;AACA;AACM;AACA;AACR;AACU;AACZ;AACU;AACE;AACV;AACJ;;AAEtC,IAAI,aAAE;;AAEC;AACP;AACA;AACA;AACA;AACA;;AAEe,SAAS,yBAAU;AAClC,SAAS,aAAS;AAClB;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AAE,QAAK;AACP;;AAEe;AACf,EAAE,QAAK;AACP,EAAE,QAAK;AACP,CAAC;;;ACToC;AACW;AACL;AAC2B;AAC9B;AACH;AACD;AACgB;;AAEpD,iBAAiB,aAAa;AAC9B,kBAAkB,cAAc;AAChC,mBAAmB,eAAe;AAClC,mBAAmB;;AAEnB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,WAAW,SAAK,SAAS,QAAK;AAC9B;AACA;;AAEA,IAAI,OAAC;AACL;AACA,0BAA0B,UAAI;AAC9B,yBAAyB,gEAAgE,EAAE;AAC3F,wBAAwB,mCAAmC;AAC3D;;AAEA,IAAI,OAAC;AACL;AACA,0BAA0B,UAAI;AAC9B,yBAAyB,gEAAgE,EAAE;AAC3F,wBAAwB,mCAAmC;AAC3D;;AAEA;AACA;AACA,4DAA4D,UAAI;AAChE,uBAAuB,wCAAwC,EAAE;AACjE,wBAAwB,WAAW;AACnC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,UAAI;AACb,UAAU;AACV;;AAEA;AACA,SAAS,mBAAa;AACtB,UAAU,QAAK,aAAa,QAAK;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,sBAAgB;AACzB;AACA;;AAEA;AACA,SAAS,WAAK;AACd;AACA;AACA;;AAEA,SAAS,WAAK;AACd;AACA;AACA;;AAEO;AACP;AACA;AACA;;AAEO;AACP,SAAS,WAAK,CAAC,OAAC;AAChB;;AAEO;AACP,SAAS,WAAK,CAAC,OAAC;AAChB;;AAEe;AACf,SAAS,WAAK;AACd,CAAC;;AAED,SAAS,WAAK;AACd;AACA,eAAe,mBAAa;AAC5B,kBAAkB,sBAAgB;AAClC;AACA,kBAAkB,YAAQ;AAC1B;AACA;;AAEA;AACA;AACA;AACA;AACA,aAAa,UAAI;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,WAAK;AAC5B,UAAU,UAAM;AAChB;AACA;AACA;AACA;AACA,SAAS;;AAET;AACA,aAAa,UAAI;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,sCAAsC,eAAe,EAAE;;AAEvD;;AAEA;AACA,oCAAoC,mCAAmC,EAAE;AACzE,qCAAqC,wBAAwB,EAAE;;AAE/D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,yCAAyC,gDAAgD,EAAE;AAC3F,uDAAuD,gCAAgC,EAAE;AACzF;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,iDAAW;;AAE/B;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW;AACX,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,YAAY,SAAS;AACrB;AACA;AACA;AACA,WAAW;AACX;AACA;;AAEA;AACA;AACA;;AAEA;AACA,gBAAgB,UAAM;AACtB,oBAAoB,WAAK;;AAEzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,kCAAkC,gHAAgH,EAAE;AACpJ,kCAAkC,gGAAgG,EAAE;AACpI,sCAAsC,uGAAuG,EAAE;AAC/I,uCAAuC,uGAAuG,EAAE;AAChJ;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA,MAAM,WAAW,KAAK,SAAU;AAChC;AACA;;AAEA;AACA,wBAAwB,QAAK;AAC7B;;AAEA;AACA,eAAe,QAAK;AACpB,wBAAwB,QAAK,2EAA2E,QAAK;AAC7G,wBAAwB,OAAC;AACzB,wBAAwB,OAAC;AACzB,gBAAgB,WAAK;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,QAAK;AAClD;AACA;AACA,kBAAkB,QAAK,mBAAmB,QAAK,iCAAiC,KAAK;AACrF;AACA;AACA;;AAEA;AACA;AACA;AACA,sBAAsB,OAAC,+BAA+B,OAAC;AACvD,sBAAsB,OAAC,wBAAwB,OAAC;AAChD;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,gBAAgB,UAAM;AACtB;;AAEA;AACA;;AAEA,QAAQ,QAAK;AACb;AACA;AACA,KAAK;AACL,iBAAiB,UAAM,CAAC,QAAK;AAC7B;AACA;AACA;AACA;AACA;;AAEA,MAAM,MAAW,CAAC,QAAK;AACvB;;AAEA,IAAI,qBAAa;AACjB,IAAI,SAAS;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,WAAO;AACb;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,uDAAuD;AACvD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,MAAM,qBAAa;AACnB,UAAU,QAAK;AACf,YAAY,QAAK;AACjB;AACA,6CAA6C,oBAAoB,EAAE,OAAO;AAC1E,OAAO;AACP,QAAQ,OAAU,CAAC,QAAK;AACxB;AACA;AACA;AACA;AACA,uDAAuD;AACvD,UAAU,WAAK;AACf;AACA;;AAEA;AACA,cAAc,QAAK;AACnB,kBAAkB;AAClB;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,UAAU;AAC5B;AACA,wCAAwC;AACxC,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,WAAO;AACb;;AAEA;AACA,cAAc,QAAK;AACnB,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,mCAAmC;AACnC,mCAAmC;AACnC;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA,gBAAgB,QAAK;AACrB;AACA;AACA;AACA,aAAa;AACb,qCAAqC;AACrC,qCAAqC;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,WAAO;AACb;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iCAAiC;AACjC;AACA;AACA;AACA;;AAEA;AACA,sEAAsE,qBAAQ;AAC9E;;AAEA;AACA,sEAAsE,qBAAQ;AAC9E;;AAEA;AACA,yEAAyE,qBAAQ;AACjF;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;ACzkBoB;;;ACLb;AACA;AACA,IAAI,OAAE;AACN,IAAI,WAAM,GAAG,OAAE;AACf,IAAI,QAAG,GAAG,OAAE;AACZ;;;ACLwB;AACC;;AAEhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,4BAAK;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,kBAAkB;AAClB,oBAAoB;AACpB;AACA;AACA;AACA,yBAAyB,4BAAK;AAC9B;AACA;;AAEA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;AACA;AACA;AACA,QAAQ,GAAG,IAAI,QAAG;AAClB,wBAAwB,QAAG;;AAE3B;AACA;AACA,kBAAkB;AAClB,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW;AACX,gBAAgB;AAChB;AACA;AACA;AACA;AACA,iBAAiB;AACjB,iBAAiB,+BAA+B;AAChD;AACA;AACA;;AAEA;AACA;;AAEA;AACA,0CAA0C,GAAG;AAC7C;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;;ACxHM,IAAI,WAAK;;;ACAD;AACf;AACA;AACA;AACA,CAAC;;;ACJD,IAAI,OAAE;AACN,IAAI,QAAG,OAAO,OAAE;AAChB,IAAI,YAAO;AACX,iBAAiB,QAAG,GAAG,YAAO;;AAE9B;AACA;AACA,6BAA6B;AAC7B;AACA;;AAEA,SAAS,SAAI;AACb;AACA;;AAEA,iBAAiB,SAAI;AACrB;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,uBAAuB,YAAO;;AAE9B;AACA;AACA;AACA,iDAAiD,YAAO;AACxD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,OAAE;AAC9B;AACA;;AAEA;AACA,8BAA8B,YAAO;AACrC;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,uCAAuC,YAAO,8BAA8B,YAAO;AACnF;AACA;;AAEA;AACA;;AAEA;AACA,0BAA0B,QAAG,GAAG,QAAG;;AAEnC;AACA;AACA;AACA;;AAEA;AACA,kBAAkB,YAAO;AACzB,qDAAqD,OAAE;AACvD;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEe,sDAAI,EAAC;;;ACjIsB;;;ACAZ;AACI;AACM;AACX;;AAE7B;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,eAAe,WAAK;AACpB;AACA;AACA;AACA,6CAA6C,WAAM;AACnD,2CAA2C,WAAM;AACjD,mBAAmB,GAAG;AACtB,mBAAmB,GAAG;AACtB;AACA,6CAA6C,WAAM;AACnD,2CAA2C,WAAM;;AAEjD,qCAAqC,QAAI;;AAEzC;AACA;AACA,qCAAqC;AACrC,0CAA0C,GAAG,YAAY,GAAG;AAC5D;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,sEAAsE,qBAAQ;AAC9E;;AAEA;AACA,0EAA0E,qBAAQ;AAClF;;AAEA;AACA,wEAAwE,qBAAQ;AAChF;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;;ACtFwC;AACE;;;;;;ACD3C,IAAI,WAAK;;AAEF,IAAI,eAAK,GAAG,WAAK;;;ACFT;AACf;AACA,CAAC;;;ACFc;AACf;AACA;AACA;AACA,CAAC;;;ACJc;AACf;AACA;AACA;AACA,CAAC;;;ACJc;AACf;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA,6CAA6C,OAAO;AACpD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,QAAQ;AACR;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;AC1Be,0DAAa;;;ACAuC;AACrC;AACM;AACV;AACQ;AACA;AACR;;AAE1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA,kBAAkB,+BAAgB;AAClC;;AAEA;AACA;;AAEA;AACA;AACA,mBAAmB,6BAAM;AACzB,WAAW,+BAAQ;AACnB,WAAW,4BAAK;AAChB,KAAK;AACL,2BAA2B,aAAS;AACpC;;AAEA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,UAAU,QAAI;AACd;AACA,KAAK;;AAEL;AACA,mDAAmD,OAAO;AAC1D,YAAY,QAAQ;AACpB;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,+DAA+D;AAC/D;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX,+DAA+D;AAC/D;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,OAAO;AACP,iEAAiE;AACjE;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,4FAA4F,uBAAQ,CAAC,eAAK,YAAY,uBAAQ;AAC9H;;AAEA;AACA,2DAA2D,QAAI;AAC/D;;AAEA;AACA,CAAC;;;AC1MD;AACA;AACA;AACO;AACP;AACA;AACA;AACA,iBAAiB,OAAO;AACxB,2BAA2B,WAAW;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACO;AACP;AACA;AACA;AACA,iBAAiB,OAAO;AACxB,2BAA2B,WAAW;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC1C8C;AAChB;AACM;AACF;AACA;;AAElC;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,uBAAQ;;AAE1B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,IAAI,KAAK,EAAE,mCAAmC,GAAG,mCAAmC;AACpF,IAAI,KAAK,EAAE,mCAAmC,GAAG,mCAAmC;AACpF,IAAI,KAAK,EAAE,mCAAmC,GAAG,mCAAmC;AACpF,IAAI,KAAK,EAAE,mCAAmC,GAAG,mCAAmC;AACpF,IAAI,KAAK,EAAE,mCAAmC,GAAG,mCAAmC;AACpF,IAAI,KAAK,EAAE,mCAAmC,GAAG,mCAAmC;;AAEpF;;AAEA;AACA;AACA,iBAAiB,0BAAG;AACpB,WAAW,+BAAQ;AACnB,WAAW,4BAAK;AAChB;AACA;;AAEA,WAAW,YAAQ;AACnB;AACA;AACA;AACA;AACA;;AAEA;AACA,0CAA0C;AAC1C;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iEAAiE,uBAAQ;AACzE;;AAEA;AACA,iEAAiE,uBAAQ;AACzE;;AAEA;AACA,sEAAsE,uBAAQ;AAC9E;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,4FAA4F,uBAAQ,CAAC,eAAK,YAAY,uBAAQ;AAC9H;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;ACpI8C;AACK;;;ACDpD,YAAY;AACZ,YAAY;AACZ;AACA;AACA;;AAEA;AACA,oCAAoC;AACpC;AACA,GAAG,gBAAgB;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;;AAEpB;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,gCAAgC,YAAY,yCAAyC;AACrF;AACA;;AAEA;AACA;AACA;AACA,gCAAgC,YAAY,yCAAyC;AACrF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;ACnK0B;;AAE3B,UAAU,GAAG;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;;;ACVoB;;AAE3B,UAAU,GAAG;;AAEN;AACA;AACA;AACA;AACA;AACA;AACA;;;ACVQ;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE;AACpH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,+F;;ACnB8C;AACyE;AACA;AACrE;;;ACHlD;AACA;AACA;AACA;;AAEe;AACf;AACA,CAAC;;;ACPD;AACA;AACA;AACA;;AAEe;AACf;AACA,CAAC;;;ACPD;AACA;AACA;AACA;;AAEe;AACf;AACA,CAAC;;;ACPoD;AACxB;;AAE7B;AACA;AACA;AACA,WAAW,QAAI;AACf;AACA,KAAK;AACL;AACA;;AAEe,SAAS,OAAG;AAC3B;AACA,eAAe,GAAS;AACxB,SAAS,QAAI;AACb;AACA,GAAG;AACH;;AAEO,IAAI,OAAG,YAAY,QAAQ;AAC3B,IAAI,OAAG,YAAY,QAAQ;;;ACrBnB;AACf;AACA;AACA;AACA;AACA,+BAA+B,gBAAgB;AAC/C;AACA,GAAG;AACH,CAAC;;;ACRD;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA,CAAC;;;ACR4B;;AAE7B;AACA;AACA,WAAW,QAAI;AACf;AACA,KAAK;AACL;AACA;;AAEe,iEAAyB,EAAC;;AAElC,IAAI,QAAI;;AAER;;;ACdmC;AACI;AACI;AACN;AACF;AACA;AACS;;;ACNpC;AACf;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA,eAAe,OAAO;AACtB;AACA;;AAEA,iDAAiD,OAAO;AACxD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;;ACnCc;AACf;AACA;AACA;AACA,CAAC;;;ACJc;AACf;AACA,CAAC;;;ACFc;AACf;AACA;AACA,SAAS,OAAG;AACZ,CAAC;;AAED,SAAS,OAAG;AACZ,wCAAwC;;AAExC;AACA;AACA,cAAc,QAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,mDAAmD;AACnD,oDAAoD;AACpD;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,mDAAmD;AACnD,oDAAoD;AACpD,GAAG;AACH;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,aAAa,OAAO;AACpB,IAAI,OAAG;AACP;;AAEA;AACA;;;ACnFe;AACf,kDAAkD;;AAElD;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,yCAAyC;AACzC,yCAAyC;AACzC,yCAAyC;AACzC,yCAAyC;AACzC;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;;;AC1Cc;AACf;AACA;AACA,8CAA8C;AAC9C,GAAG;AACH;AACA,CAAC;;;ACNc;AACf;AACA;AACA;AACA,CAAC;;;ACJc;AACf;AACA;AACA;AACA;AACA;AACA,CAAC;;;ACN4B;;AAEd;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,2BAA2B,QAAI;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,YAAY,QAAI;AAChB,YAAY,QAAI;AAChB,YAAY,QAAI;AAChB,YAAY,QAAI;AAChB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;ACrEc;AACf,0FAA0F;;AAE1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,mDAAmD;AACnD,oDAAoD;AACpD;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAEM;AACP,kCAAkC,OAAO;AACzC;AACA;;;AC7De;AACf;AACA,CAAC;;;ACFc;AACf;AACA;AACA,gCAAgC;AAChC,GAAG;AACH;AACA,CAAC;;;ACN4B;;AAEd;AACf;AACA,2BAA2B,QAAI;AAC/B;AACA;AACA;AACA,0CAA0C,QAAI;AAC9C,0CAA0C,QAAI;AAC9C,0CAA0C,QAAI;AAC9C,0CAA0C,QAAI;AAC9C;AACA;AACA;AACA,CAAC;;;ACf4B;;AAEd;AACf;AACA,iCAAiC,QAAI;AACrC;AACA;AACA;AACA;AACA,0CAA0C,QAAI;AAC9C,0CAA0C,QAAI;AAC9C,0CAA0C,QAAI;AAC9C,0CAA0C,QAAI;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;ACpBM,SAAS,UAAQ;AACxB;AACA;;AAEe;AACf;AACA,CAAC;;;ACNM,SAAS,UAAQ;AACxB;AACA;;AAEe;AACf;AACA,CAAC;;;ACNwD;AACrB;AACF;AACI;AACJ;AACmC;AACnC;AACA;AACE;AACU;AACN;AACA;;AAEzB;AACf,sCAAsC,UAAQ,kBAAkB,UAAQ;AACxE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc,gBAAgB;AAC9B,+CAA+C;AAC/C;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA,YAAY,gDAAgD;AAC5D;AACA,mBAAmB,OAAO;AAC1B;AACA,sCAAsC,qDAAqD;AAC3F;AACA;AACA;AACA;;AAEA;AACA;;AAEA,gBAAgB,GAAQ;AACxB,mBAAmB,MAAW;AAC9B,kBAAkB,SAAU;AAC5B,iBAAiB,QAAS;AAC1B,mBAAmB,UAAW;AAC9B,iBAAiB,IAAS;AAC1B,mBAAmB,UAAW;AAC9B,sBAAsB,SAAc;AACpC,iBAAiB,QAAS;AAC1B,iBAAiB,QAAS;AAC1B,kBAAkB,KAAU;AAC5B,uBAAuB,UAAe;AACtC,cAAc,KAAM;AACpB,cAAc,KAAM;;;ACxE8B;;;ACAhB;AACJ;AACO;;AAErC,SAAS,SAAC;AACV;AACA;;AAEA,SAAS,SAAC;AACV;AACA;;AAEe;AACf;AACA;AACA;AACA;;AAEA,6CAA6C,qBAAQ;;AAErD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,gBAAgB;AACnC,aAAa,QAAQ,QAAQ,SAAC,EAAE,SAAC;AACjC,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,MAAM;AACnC,6BAA6B,MAAM;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,4BAA4B,OAAO;AACnC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,sEAAsE,qBAAQ;AAC9E;;AAEA;AACA,CAAC;;;ACjGiC;AACJ;AACI;;AAElC,SAAS,UAAK;AACd;AACA;;AAEA,SAAS,SAAI;AACb;AACA;AACA;AACA;;AAEe;AACf,WAAW,UAAK;AAChB;AACA;AACA,iBAAiB,qBAAQ;AACzB;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA,qCAAqC,gBAAgB;AACrD,uDAAuD,OAAO;AAC9D;AACA,2DAA2D,MAAM;AACjE,2DAA2D,MAAM;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,mBAAmB,wCAAG;AACtB;;AAEA,qCAAqC,OAAO;AAC5C;AACA,yDAAyD,SAAI;AAC7D,yDAAyD,SAAI;AAC7D;AACA;AACA;;AAEA,oCAAoC,OAAO;AAC3C;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,qCAAqC,OAAO;AAC5C;AACA;AACA;;AAEA;AACA;;AAEA,qCAAqC,OAAO;AAC5C;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,wEAAwE,qBAAQ;AAChF;;AAEA;AACA,wEAAwE,qBAAQ;AAChF;;AAEA;AACA,CAAC;;;ACnHoC;AACH;AACH;;AAExB,SAAS,YAAC;AACjB;AACA;;AAEO,SAAS,YAAC;AACjB;AACA;;AAEA;AACA;;AAEe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,wCAAG;AAClB,gBAAgB,KAAK;AACrB,cAAc,YAAQ;;AAEtB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA,mBAAmB,gBAAgB;AACnC;;AAEA;AACA;AACA,OAAO;;AAEP,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,2CAA2C,OAAO;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA,CAAC;;;ACtJiC;AACJ;AACO;AACH;;AAEnB;AACf;AACA;AACA;AACA,iBAAiB,qBAAQ;AACzB;AACA;AACA;AACA;;AAEA;AACA,oCAAoC,QAAQ,QAAQ,YAAC,EAAE,YAAC;AACxD,0BAA0B,OAAO;AACjC;;AAEA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;;AAEA;AACA;;AAEA;AACA;AACA,yBAAyB,OAAO;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,yCAAyC;AACzC;AACA;AACA,yBAAyB,MAAM;AAC/B,yBAAyB,MAAM;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,yCAAyC;AACzC;AACA,uBAAuB,MAAM;AAC7B,uBAAuB,MAAM;AAC7B;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;;AAEA;AACA,wEAAwE,qBAAQ;AAChF;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;;ACjHiC;;AAEnB;AACf;AACA,iBAAiB,qBAAQ;AACzB;AACA;;AAEA,6CAA6C,qBAAQ;AACrD;AACA;;AAEA;AACA,qCAAqC,OAAO;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,wEAAwE,qBAAQ;AAChF;;AAEA;AACA,sEAAsE,qBAAQ;AAC9E;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;;ACxDiC;;AAEnB;AACf,iBAAiB,qBAAQ;AACzB;AACA;AACA;;AAEA,mCAAmC,qBAAQ;;AAE3C;AACA,2CAA2C,OAAO;AAClD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,wEAAwE,qBAAQ;AAChF;;AAEA;AACA,iEAAiE,qBAAQ;AACzE;;AAEA;AACA,CAAC;;;ACxCiC;;AAEnB;AACf,iBAAiB,qBAAQ;AACzB;AACA;AACA;;AAEA,mCAAmC,qBAAQ;;AAE3C;AACA,2CAA2C,OAAO;AAClD;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,eAAe,OAAO;AACtB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,wEAAwE,qBAAQ;AAChF;;AAEA;AACA,iEAAiE,qBAAQ;AACzE;;AAEA;AACA,CAAC;;;ACxC+C;AACE;AACN;AACQ;AACJ;AACQ;AAClB;AACA;;;;;;ACPtC;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,eAAe;AACf,GAAG;AACH;AACA,IAAI,SAAG;AACP,IAAI,SAAG;AACP;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;;AAEA,SAAS,SAAG;AACZ;AACA;AACA;AACA;AACA;;;ACvCO,IAAI,YAAO;AACX;AACA,IAAI,WAAE;AACN,IAAI,eAAM,GAAG,WAAE;AACf,gBAAgB,WAAE;AAClB,IAAI,YAAG,GAAG,WAAE;;AAEZ,oBAAoB,WAAE;AACtB,cAAc,WAAE;;AAEhB;AACA;AACA;AACA,IAAI,QAAG;AACP;AACA;AACA;AACA;AACA;AACA,IAAI,QAAG;AACP,IAAI,SAAI,6BAA6B,mCAAmC;AACxE;AACA;;AAEA;AACP,8BAA8B,WAAE;AAChC;;AAEO;AACP,iBAAiB,eAAM,aAAa,eAAM;AAC1C;;AAEO;AACP,cAAc,QAAG;AACjB;;;AClCe,SAAS,SAAI;;;ACA5B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA,GAAG;AACH;AACA;AACA,CAAC;;;ACpE8B;AACoC;AACtC;AACI;;AAE1B,kBAAkB,KAAK;;AAE9B,cAAc,KAAK;AACnB,IAAI,aAAQ;AACZ;AACA,IAAI,YAAO;AACX,IAAI,YAAO;AACX,IAAI,YAAO;;AAEJ;AACP,SAAS,SAAI;AACb,aAAa,SAAI;AACjB,WAAW,SAAI;AACf;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,+BAA+B,YAAG;AAClC,iDAAiD,SAAI;AACrD,GAAG;AACH;AACA,gBAAgB,YAAG;AACnB;AACA;;AAEA;AACA;AACA;;AAEA;AACA,YAAY,aAAQ;AACpB;;AAEA;AACA;AACA,EAAE,aAAQ;AACV,YAAY,OAAO,SAAS,OAAO;AACnC,EAAE,YAAO,WAAW,YAAO,GAAG,QAAG,iBAAiB,SAAS,GAAG,YAAO,GAAG,QAAG;AAC3E;;AAEA;AACA,YAAY,OAAO,SAAS,OAAO;AACnC,kBAAkB,SAAS,CAAC;;AAE5B;AACA;AACA;AACA,yBAAyB,YAAO;AAChC;AACA;AACA,eAAe,QAAG;AAClB,eAAe,QAAG;AAClB,UAAU,YAAO;AACjB,UAAU,YAAO,gBAAgB,QAAG;AACpC,yBAAyB,QAAG;AAC5B,kBAAkB,KAAK;;AAEvB;AACA,EAAE,YAAO,WAAW,YAAO,WAAW,YAAO;AAC7C;;AAEe;AACf;AACA,EAAE,UAAM;AACR;AACA,CAAC;;;ACzEqD;;AAE/C,SAAS,mBAAS;AACzB,UAAU,KAAK,8BAA8B,IAAI;AACjD;;AAEO,SAAS,mBAAS;AACzB,0DAA0D,QAAG;AAC7D,mBAAmB,QAAG,mBAAmB,QAAG,UAAU,QAAG;AACzD;;AAEO;AACP;AACA;;AAEO;AACP;AACA;;AAEA;AACO;AACP;AACA;;AAEO;AACP;AACA;;AAEA;AACO;AACP,UAAU,IAAI;AACd;AACA;;;AChC+B;AACmB;AAC6C;AACtC;AACxB;;AAEjC,IAAI,cAAO,EAAE,WAAI,EAAE,cAAO,EAAE,WAAI;AAChC,IAAI,cAAO;AACX,IAAI,eAAQ,EAAE,YAAK;AACnB,IAAI,SAAE;AACN,eAAe,KAAK;AACpB;AACA,IAAI,YAAK;;AAET;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,UAAU;AACd,GAAG;AACH;AACA,IAAI,UAAU;AACd;AACA;AACA;AACA,QAAQ,WAAW,MAAM,cAAO,KAAK,cAAO,SAAS,WAAI,KAAK,WAAI;AAClE,wBAAwB,YAAO,EAAE,WAAI;AACrC,yBAAyB,YAAO,EAAE,WAAI;AACtC,IAAI,YAAK,MAAM,cAAO,EAAE,YAAK,MAAM,cAAO;AAC1C,GAAG;AACH;AACA,IAAI,cAAO,KAAK,cAAO,SAAS,WAAI,KAAK,WAAI;AAC7C;AACA;;AAEA;AACA,cAAc,YAAK,IAAI,cAAO,WAAW,cAAO;AAChD,YAAY,WAAI,EAAE,WAAI;AACtB,YAAY,WAAI,EAAE,WAAI;AACtB;;AAEA,SAAS,gBAAS;AAClB,UAAU,mBAAS,WAAW,OAAO,QAAQ,OAAO;AACpD,MAAM,SAAE;AACR,iBAAiB,cAAc,CAAC,SAAE;AAClC;AACA,qBAAqB,cAAc;AACnC,IAAI,yBAAyB;AAC7B,iBAAiB,mBAAS;AAC1B,yBAAyB,cAAO;AAChC;AACA,kCAAkC,OAAO;AACzC;AACA,uBAAuB,GAAG;AAC1B,+BAA+B,cAAO;AACtC,6BAA6B,OAAO;AACpC,iBAAiB,WAAI,EAAE,WAAI;AAC3B,KAAK,wEAAwE,cAAO;AACpF,8BAA8B,OAAO;AACrC,iBAAiB,WAAI,EAAE,WAAI;AAC3B,KAAK;AACL,gBAAgB,WAAI,EAAE,WAAI;AAC1B,gBAAgB,WAAI,EAAE,WAAI;AAC1B;AACA;AACA,mBAAmB,cAAO;AAC1B,YAAY,YAAK,CAAC,cAAO,YAAY,YAAK,CAAC,cAAO,EAAE,cAAO,GAAG,cAAO;AACrE,OAAO;AACP,YAAY,YAAK,SAAS,cAAO,IAAI,YAAK,CAAC,cAAO,EAAE,cAAO,GAAG,cAAO;AACrE;AACA,KAAK;AACL,UAAU,cAAO,IAAI,cAAO;AAC5B,qBAAqB,cAAO,EAAE,cAAO;AACrC,qBAAqB,cAAO,EAAE,cAAO;AACrC,OAAO;AACP,qBAAqB,cAAO;AAC5B,cAAc,YAAK,CAAC,cAAO,YAAY,YAAK,CAAC,cAAO,EAAE,cAAO,GAAG,cAAO;AACvE,SAAS;AACT,cAAc,YAAK,SAAS,cAAO,IAAI,YAAK,CAAC,cAAO,EAAE,cAAO,GAAG,cAAO;AACvE;AACA;AACA;AACA,GAAG;AACH,gBAAgB,YAAK,IAAI,cAAO,WAAW,cAAO;AAClD;AACA,YAAY,WAAI,EAAE,WAAI;AACtB,YAAY,WAAI,EAAE,WAAI;AACtB,EAAE,SAAE,MAAM,cAAO;AACjB;;AAEA;AACA,uBAAuB,gBAAS;AAChC;;AAEA;AACA,EAAE,YAAK,MAAM,cAAO,EAAE,YAAK,MAAM,cAAO;AACxC;AACA,EAAE,SAAE;AACJ;;AAEA;AACA,MAAM,SAAE;AACR,yBAAyB,cAAO;AAChC,iBAAiB,GAAG;AACpB,GAAG;AACH,IAAI,eAAQ,WAAW,YAAK;AAC5B;AACA,EAAE,UAAU;AACZ,EAAE,gBAAS;AACX;;AAEA;AACA,EAAE,UAAU;AACZ;;AAEA;AACA,kBAAkB,eAAQ,EAAE,YAAK;AACjC,EAAE,UAAU;AACZ,MAAM,GAAG,aAAa,YAAO,EAAE,cAAO,KAAK,cAAO;AAClD,EAAE,YAAK,MAAM,cAAO,EAAE,YAAK,MAAM,cAAO;AACxC,EAAE,SAAE;AACJ;;AAEA;AACA;AACA;AACA,SAAS,YAAK;AACd;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEe;AACf;;AAEA,EAAE,WAAI,GAAG,cAAO,KAAK,cAAO,GAAG,WAAI;AACnC;AACA,EAAE,UAAM;;AAER;AACA;AACA;;AAEA;AACA,4CAA4C,OAAO;AACnD;AACA;AACA,YAAY,YAAK,eAAe,YAAK;AACrC,YAAY,YAAK,eAAe,YAAK;AACrC,OAAO;AACP;AACA;AACA;;AAEA;AACA;AACA,2EAA2E,QAAQ;AACnF;AACA,mBAAmB,YAAK,4CAA4C,cAAO,SAAS,cAAO;AAC3F;AACA;;AAEA,WAAW,YAAK;;AAEhB,SAAS,cAAO,iBAAiB,WAAI;AACrC;AACA,UAAU,cAAO,EAAE,WAAI,IAAI,cAAO,EAAE,WAAI;AACxC,CAAC;;;AClL0F;AAC9D;AACI;;AAEjC;AACA,IAAI,WAAE,EAAE,WAAE;AACV,IAAI,WAAE,EAAE,WAAE;AACV;AACA,IAAI,iBAAQ,EAAE,cAAK;AACnB,IAAI,WAAE,EAAE,WAAE,KAAK;;AAEf;AACA,UAAU,SAAI;AACd;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,YAAY,OAAO,SAAS,OAAO;AACnC,eAAe,QAAG;AAClB,kCAAkC,QAAG,mBAAmB,QAAG,UAAU,QAAG;AACxE;;AAEA;AACA;AACA,EAAE,WAAE,SAAS,WAAE;AACf,EAAE,WAAE,SAAS,WAAE;AACf;AACA;;AAEA;AACA;AACA;;AAEA;AACA,YAAY,OAAO,SAAS,OAAO;AACnC,eAAe,QAAG;AAClB,EAAE,WAAE,YAAY,QAAG;AACnB,EAAE,WAAE,YAAY,QAAG;AACnB,OAAO,QAAG;AACV;AACA,yBAAyB,WAAE,EAAE,WAAE;AAC/B;;AAEA;AACA,YAAY,OAAO,SAAS,OAAO;AACnC,eAAe,QAAG;AAClB,mBAAmB,QAAG;AACtB,mBAAmB,QAAG;AACtB,UAAU,QAAG;AACb,UAAU,KAAK,CAAC,IAAI,MAAM,WAAE,mCAAmC,WAAE,iBAAiB,WAAE,OAAO,WAAE,YAAY,WAAE,OAAO,WAAE;AACpH;AACA,EAAE,WAAE,SAAS,WAAE,IAAI,WAAE;AACrB,EAAE,WAAE,SAAS,WAAE,IAAI,WAAE;AACrB;AACA,yBAAyB,WAAE,EAAE,WAAE;AAC/B;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,oBAAoB,iBAAQ,EAAE,cAAK;AACnC;AACA;;AAEA;AACA,EAAE,iBAAQ,WAAW,cAAK;AAC1B,YAAY,OAAO,SAAS,OAAO;AACnC;AACA,eAAe,QAAG;AAClB,EAAE,WAAE,YAAY,QAAG;AACnB,EAAE,WAAE,YAAY,QAAG;AACnB,OAAO,QAAG;AACV,yBAAyB,WAAE,EAAE,WAAE;AAC/B;;AAEA;AACA,YAAY,OAAO,SAAS,OAAO;AACnC,eAAe,QAAG;AAClB,mBAAmB,QAAG;AACtB,mBAAmB,QAAG;AACtB,UAAU,QAAG;AACb,WAAW,WAAE;AACb,oBAAoB,WAAE;AACtB,WAAW,WAAE,OAAO,WAAE;AACtB,UAAU,IAAI;AACd,UAAU,IAAI;AACd,sBAAsB;AACtB;AACA;AACA;AACA;AACA,EAAE,WAAE,SAAS,WAAE,IAAI,WAAE;AACrB,EAAE,WAAE,SAAS,WAAE,IAAI,WAAE;AACrB;AACA,yBAAyB,WAAE,EAAE,WAAE;AAC/B;;AAEe;AACf;AACA,EAAE,WAAE,GAAG,WAAE;AACT,EAAE,WAAE,GAAG,WAAE;AACT;AACA,EAAE,UAAM;;AAER;AACA;AACA;AACA;;AAEA;AACA,UAAU,QAAQ;AAClB,QAAQ,WAAE,MAAM,WAAE;AAClB;AACA,aAAa,YAAO,MAAM,WAAE,MAAM,WAAE;AACpC;AACA;AACA,YAAY,QAAQ;AACpB;;AAEA,UAAU,KAAK,SAAS,OAAO,EAAE,IAAI,KAAK,IAAI,OAAO,OAAO;AAC5D,CAAC;;;AC3Ic;AACf;AACA;AACA;AACA,CAAC;;;ACJc;;AAEf;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;;ACXkC;AAC6C;;AAEhF;AACA,UAAU,GAAG,WAAW,WAAE,iCAAiC,YAAG,IAAI,YAAG;AACrE;;AAEA;;AAEO;AACP,yBAAyB,YAAG,8BAA8B,OAAO;AACjE;AACA;AACA;AACA;;AAEA;AACA;AACA,4CAA4C,WAAE,YAAY,YAAG,aAAa,WAAE,YAAY,YAAG;AAC3F;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,oBAAoB,QAAG;AACvB,oBAAoB,QAAG;AACvB,sBAAsB,QAAG;AACzB,sBAAsB,QAAG;;AAEzB;AACA,iBAAiB,QAAG;AACpB,YAAY,QAAG;AACf,YAAY,QAAG;AACf,YAAY,QAAG;AACf;AACA;AACA,MAAM,KAAK;AACX,MAAM,IAAI;AACV;AACA;;AAEA;AACA,iBAAiB,QAAG;AACpB,YAAY,QAAG;AACf,YAAY,QAAG;AACf,YAAY,QAAG;AACf;AACA;AACA,MAAM,KAAK;AACX,MAAM,IAAI;AACV;AACA;;AAEA;AACA;;AAEe;AACf,qCAAqC,OAAO,cAAc,OAAO,kCAAkC,OAAO;;AAE1G;AACA,0CAA0C,OAAO,mBAAmB,OAAO;AAC3E,6BAA6B,OAAO,oBAAoB,OAAO;AAC/D;;AAEA;AACA,iDAAiD,OAAO,mBAAmB,OAAO;AAClF,6BAA6B,OAAO,oBAAoB,OAAO;AAC/D;;AAEA;AACA,CAAC;;;AC3E8E;AAC1C;AACoC;AAC7B;;AAE5C;AACO;AACP;AACA,kBAAkB,QAAG;AACrB,kBAAkB,QAAG;AACrB;AACA;AACA,8BAA8B,YAAG;AACjC;AACA,GAAG;AACH;AACA;AACA,6DAA6D,YAAG;AAChE;AACA,yBAAyB,iCAAiC;AAC1D,YAAY,mBAAS,0BAA0B,QAAG,kBAAkB,QAAG;AACvE;AACA;AACA;;AAEA;AACA;AACA,UAAU,mBAAS;AACnB,EAAE,yBAAyB;AAC3B,eAAe,IAAI;AACnB,+CAA+C,YAAG,GAAG,YAAO,IAAI,YAAG;AACnE;;AAEe;AACf,eAAe,mBAAQ;AACvB,eAAe,mBAAQ;AACvB,kBAAkB,mBAAQ;AAC1B;AACA;AACA,gBAAgB;;AAEhB;AACA;AACA,YAAY,OAAO,UAAU,OAAO;AACpC;;AAEA;AACA;AACA,4CAA4C,OAAO;AACnD,+CAA+C,OAAO;AACtD;AACA,aAAa,aAAa,SAAS,OAAO,UAAU,OAAO;AAC3D;AACA,SAAS;AACT;AACA;AACA;;AAEA;AACA,sEAAsE,mBAAQ;AAC9E;;AAEA;AACA,sEAAsE,mBAAQ;AAC9E;;AAEA;AACA,yEAAyE,mBAAQ;AACjF;;AAEA;AACA,CAAC;;;ACvE6B;;AAEf;AACf;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL,aAAa,SAAI;AACjB;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;ACvBsC;;AAExB;AACf,SAAS,GAAG,gBAAgB,YAAO,IAAI,GAAG,gBAAgB,YAAO;AACjE,CAAC;;;ACJyC;AACP;;AAEnC;AACA;AACA;AACA,iBAAiB;AACjB,iBAAiB;AACjB,iBAAiB;AACjB,yBAAyB;AACzB;;AAEA;AACA;AACA;AACe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,QAAQ,UAAU;AAClB;AACA;AACA,mBAAmB,OAAO;AAC1B;AACA;AACA;AACA;AACA,mBAAmB,YAAO;AAC1B;;AAEA;AACA;AACA;AACA;AACA,GAAG;;AAEH;;AAEA;AACA,EAAE,WAAI;AACN,EAAE,WAAI;;AAEN,8BAA8B,OAAO;AACrC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,OAAO;AAC/C,SAAS;AACT;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,qCAAqC,QAAQ;AAC7C,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,CAAC;;AAED,SAAS,WAAI;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACtG+B;AACqD;AACY;;AAEhG,IAAI,mBAAG,GAAG,KAAK;;AAEf;AACA,MAAM,GAAG,cAAc,WAAE;AACzB;AACA;AACA,WAAW,SAAI,eAAe,GAAG,aAAa,WAAE,IAAI,YAAG,GAAG,WAAE;AAC5D;;AAEe;AACf;AACA;AACA,eAAe,QAAG;AAClB,gBAAgB,QAAG,WAAW,QAAG;AACjC;AACA;;AAEA,EAAE,mBAAG;;AAEL,0BAA0B,eAAM,GAAG,YAAO;AAC1C,iCAAiC,eAAM,GAAG,YAAO;;AAEjD,qCAAqC,OAAO;AAC5C;AACA;AACA;AACA;AACA;AACA,+BAA+B,SAAS;AACxC,kBAAkB,QAAG;AACrB,kBAAkB,QAAG;;AAErB,mBAAmB,OAAO;AAC1B;AACA;AACA,iCAAiC,SAAS;AAC1C,oBAAoB,QAAG;AACvB,oBAAoB,QAAG;AACvB;AACA;AACA;AACA,oCAAoC,WAAE;AACtC;;AAEA,MAAM,mBAAG,KAAK,KAAK,YAAY,QAAG,oCAAoC,QAAG;AACzE,6CAA6C,YAAG;;AAEhD;AACA;AACA;AACA,kBAAkB,cAAc,CAAC,mBAAS,UAAU,mBAAS;AAC7D,QAAQ,yBAAyB;AACjC,2BAA2B,cAAc;AACzC,QAAQ,yBAAyB;AACjC,4DAA4D,IAAI;AAChE;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,YAAO,YAAY,YAAO,IAAI,mBAAG,IAAI,YAAO;AAC/D,CAAC;;;AC9EoC;AACA;AACM;AACS;AACrB;;AAEhB;AACf;AACA;AACA,qBAAqB,WAAU;AAC/B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,mBAAmB,4BAAK;AACxB,0BAA0B,eAAe;AACzC;AACA;AACA,UAAU,MAAU,WAAW,wBAAmB;AAClD,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,OAAO;AAC5B;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;;AAEA;AACA;AACA,SAAS,wBAAmB;AAC5B,oCAAoC,eAAM,GAAG,YAAO,GAAG,eAAM;AAC7D,oCAAoC,eAAM,GAAG,YAAO,GAAG,eAAM;AAC7D;;;AClI8B;AACsC;;AAErD,8DAAI;AACnB,cAAc,aAAa,EAAE;AAC7B;AACA;AACA,IAAI,WAAE,GAAG,eAAM;AACf,CAAC,EAAC;;AAEF;AACA,uCAAuC,sBAAsB;AAC7D;AACA;AACA;AACA;AACA;AACA,YAAY;;AAEZ;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,gCAAgC,WAAE,IAAI,WAAE;AACxC,kBAAkB,GAAG;AACrB,UAAU,GAAG,SAAS,WAAE,IAAI,YAAO,GAAG;AACtC,6DAA6D,eAAM,IAAI,eAAM;AAC7E;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,sCAAsC,WAAE,GAAG;AAClD,YAAY,GAAG,oBAAoB,YAAO,qBAAqB,YAAO,CAAC;AACvE,YAAY,GAAG,oBAAoB,YAAO,qBAAqB,YAAO;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA,uBAAuB;AACvB;AACA;AACA;;AAEA;AACA;AACA;AACA,0BAA0B,QAAG;AAC7B,SAAS,GAAG,sBAAsB,YAAO;AACzC,QAAQ,IAAI,EAAE,QAAG,oBAAoB,QAAG,UAAU,QAAG;AACrD,YAAY,QAAG,oBAAoB,QAAG,UAAU,QAAG;AACnD;AACA;AACA;;AAEA;AACA;AACA;AACA,sBAAsB,eAAM;AAC5B,kBAAkB,WAAE;AACpB;AACA,iBAAiB,WAAE;AACnB,iBAAiB,WAAE;AACnB,iBAAiB,WAAE;AACnB;AACA,kBAAkB,WAAE;AACpB,kBAAkB,WAAE;AACpB,kBAAkB,WAAE;AACpB,GAAG,UAAU,GAAG,oBAAoB,YAAO;AAC3C,mCAAmC,WAAE,IAAI,WAAE;AAC3C;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;;AC3FwH;AAC9E;AACsB;AACtB;AACZ;;AAEf;AACf,WAAW,QAAG;AACd,kBAAkB,OAAO;AACzB;AACA,sBAAsB,GAAG,OAAO,YAAO,CAAC;;AAExC;AACA,IAAI,YAAY;AAChB;;AAEA;AACA,WAAW,QAAG,WAAW,QAAG;AAC5B;;AAEA;AACA,kEAAkE;AAClE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,WAAE,IAAI,WAAE;AACxD;AACA;AACA;AACA,yBAAyB,UAAU,oBAAoB,UAAU;AACjE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,UAAU;AACxC;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,aAAa,mBAAS;AACtB,aAAa,mBAAS;;AAEtB;AACA;AACA;AACA,aAAa,cAAc;AAC3B,eAAe,YAAY;AAC3B;AACA;;AAEA;AACA;;AAEA;AACA;AACA,gBAAgB,cAAc;AAC9B,YAAY,cAAc;AAC1B,YAAY,cAAc;AAC1B,IAAI,mBAAmB;;AAEvB;AACA;AACA,YAAY,YAAY;AACxB,aAAa,YAAY;AACzB,2BAA2B,YAAY;;AAEvC;;AAEA,YAAY,IAAI;AAChB,YAAY,cAAc;AAC1B,IAAI,mBAAmB;AACvB,QAAQ,mBAAS;;AAEjB;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,gBAAgB,GAAG,SAAS,WAAE,IAAI,YAAO;AACzC,oCAAoC,YAAO;;AAE3C;;AAEA;AACA;AACA;AACA,sCAAsC,GAAG,mBAAmB,YAAO;AACnE;AACA,kBAAkB,WAAE;AACpB,eAAe,cAAc;AAC7B,MAAM,mBAAmB;AACzB,iBAAiB,mBAAS;AAC1B;AACA;;AAEA;AACA;AACA;AACA,mCAAmC,WAAE;AACrC;AACA,+BAA+B;AAC/B,mCAAmC;AACnC,4BAA4B;AAC5B,gCAAgC;AAChC;AACA;;AAEA,SAAS,QAAI,gEAAgE,WAAE,WAAW,WAAE;AAC5F,CAAC;;;AChLc;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA,CAAC;;;AC1DuC;AACH;AACJ;AACI;AACN;;AAE/B;;AAEA;AACA;;AAEe;;AAEf;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA,WAAW,GAAG,cAAc,YAAO;AACnC,UAAU,GAAG,cAAc,YAAO;AAClC,UAAU,GAAG,cAAc,YAAO;AAClC,gCAAgC;AAChC;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,uBAAuB,WAAU;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,yCAAyC,OAAO;AAChD,kHAAkH,OAAO;AACzH;AACA,yBAAyB,yEAAyE;AAClG,gBAAgB,0EAA0E;AAC1F;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gCAAgC,4BAAK;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,MAAU;AACpB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,cAAc,SAAQ;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;ACvK2C;;AAE5B;AACf;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,+DAA+D,aAAa;AAC5E,KAAK;AACL;AACA;AACA;AACA;AACA,CAAC;;;ACnB8B;AAC+B;AACjC;AACI;;AAEjC,gBAAgB,KAAK;AACrB,IAAI,cAAO;AACX,IAAI,cAAO;AACX,IAAI,cAAO;;AAEX;AACA,UAAU,SAAI;AACd,SAAS,SAAI;AACb;AACA,WAAW,SAAI;AACf,gBAAgB,SAAI;AACpB,cAAc,SAAI;AAClB;;AAEA;AACA;AACA;AACA;;AAEA;AACA,8CAA8C,SAAI;AAClD;;AAEA;AACA,YAAY,OAAO,SAAS,OAAO;AACnC,EAAE,cAAO,WAAW,cAAO,GAAG,QAAG,OAAO,cAAO,GAAG,QAAG;AACrD;AACA;;AAEA;AACA,YAAY,OAAO,SAAS,OAAO;AACnC,eAAe,QAAG;AAClB,eAAe,QAAG;AAClB,cAAc,GAAG,UAAU,cAAO;AAClC,iBAAiB,QAAG;AACpB,iBAAiB,QAAG;AACpB;AACA,UAAU,cAAO,YAAY,cAAO;AACpC,UAAU,cAAO,YAAY,cAAO;AACpC,gBAAgB,KAAK,CAAC,IAAI;AAC1B,EAAE,cAAO,WAAW,cAAO,WAAW,cAAO;AAC7C;;AAEe;AACf;AACA,EAAE,UAAM;AACR;AACA,CAAC;;;ACpDgC;;AAEjC,IAAI,oBAAW;AACf,IAAI,eAAM,IAAI,iCAAiC,oBAAW;;AAE3C;AACf,EAAE,oBAAW;AACb,EAAE,oBAAW;AACb,SAAS,UAAM,CAAC,eAAM;AACtB,CAAC;;;ACT+D;AACd;AACN;;AAE5C;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,SAAS,YAAQ;AACjB;;AAEA;AACA;AACA,yCAAyC,OAAO;AAChD,SAAS,YAAQ;AACjB;AACA;AACA,WAAW,YAAQ;AACnB;AACA;AACA;AACA;AACA,6DAA6D,QAAQ;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,WAAW,eAAe;AAC1B;;AAEA;AACA;AACA;;AAEA;AACA,qBAAqB,OAAO,aAAa,OAAO;AAChD;;AAEe;AACf;AACA;AACA;AACA,CAAC;;;AChG8B;AACc;;AAE7C;AACA,UAAU,4BAAK,UAAU,YAAO;AAChC,sBAAsB,2BAA2B,eAAe,EAAE,EAAE;AACpE;;AAEA;AACA,UAAU,4BAAK,UAAU,YAAO;AAChC,sBAAsB,2BAA2B,eAAe,EAAE,EAAE;AACpE;;AAEe,SAAS,mBAAS;AACjC;AACA;AACA;AACA;AACA;;AAEA;AACA,YAAY;AACZ;;AAEA;AACA,WAAW,4BAAK,CAAC,IAAI;AACrB,gBAAgB,4BAAK,CAAC,IAAI;AAC1B,gBAAgB,4BAAK,CAAC,IAAI,4CAA4C,QAAQ,GAAG,WAAW,YAAO,CAAC,EAAE;AACtG,gBAAgB,4BAAK,CAAC,IAAI,4CAA4C,QAAQ,GAAG,WAAW,YAAO,CAAC,EAAE;AACtG;;AAEA;AACA,8CAA8C,SAAS,8CAA8C,EAAE;AACvG;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iCA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CA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC;;AAEpC;AACA;AACA;AACA;AACA,gCAAgC,uBAAuB,sCAAsC,EAAE;AAC/F,8BAA8B,qBAAqB,sCAAsC;AACzF;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,cAAc,mBAAS;AACvB;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;ACrGuD;AACZ;AACM;AACb;AACE;AACsB;AACf;AACD;AACqB;AAC5B;;AAErC,uBAAuB,WAAW;AAClC;AACA,0BAA0B,OAAO,MAAM,OAAO;AAC9C;AACA,CAAC;;AAED;AACA,SAAS,WAAW;AACpB;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,QAAG;AACpB,iBAAiB,QAAG;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe,SAAS,qBAAU;AAClC,uCAAuC,gBAAgB,EAAE;AACzD;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,iBAAgB;AAC9C,wCAAwC,YAAQ;AAChD;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,6CAA6C,OAAO,aAAa,OAAO;AACxE;;AAEA;AACA;AACA,gCAAgC,OAAO,aAAa,OAAO;AAC3D;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,8CAA8C,WAAU,aAAa,OAAO,mBAAmB,iBAAgB,sBAAsB,OAAO;AAC5I;;AAEA;AACA,iFAAiF,YAAQ,IAAI,aAAa;AAC1G;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,qDAAqD,OAAO,qBAAqB,OAAO,0BAA0B,OAAO,QAAQ,OAAO;AACxI;;AAEA;AACA,0DAA0D,OAAO,0BAA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;AAEjC;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG,QAAQ,GAAG,UAAU,YAAO;AAC/B;AACA;AACA;AACA;AACA;;AAEe;AACf,SAAS,qBAAU;AACnB;AACA,CAAC;;;AC3BkD;AACJ;AACX;;AAE7B;AACP,UAAU,QAAG,MAAM,QAAG,KAAK,QAAG;AAC9B;;AAEA,yBAAyB,eAAe,CAAC,IAAI;;AAE9B;AACf,SAAS,qBAAU;AACnB;AACA,sBAAsB,YAAO;AAC7B,CAAC;;;ACdyC;AACK;AACX;;AAE7B;AACP,WAAW,QAAG,aAAa,QAAG;AAC9B,eAAe,QAAG,SAAS,QAAG;AAC9B;;AAEA,0BAA0B,eAAe;AACzC,aAAa,IAAI;AACjB,CAAC;;AAEc;AACf,SAAS,qBAAU;AACnB;AACA;AACA,CAAC;;;ACjBsD;AACN;;AAE1C;AACP,UAAU,GAAG,CAAC,GAAG,EAAE,eAAM;AACzB;;AAEA;AACA,kBAAkB,IAAI,CAAC,GAAG,OAAO,eAAM;AACvC;;AAEe;AACf,UAAU,kBAAkB;AAC5B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,CAAC;;;AC1B4C;AACI;AACI;AACJ;AACqB;AACZ;AACA;AACM;AACX;AACA;AACiC;AAC3B;AACV;AACE;AACS;AACM;AACqE;AACQ;AACxB;AACA;AACQ;AACxB;AACoB;AAC5B;AAC/B;AAC0C;AACX;AACoB;AACJ;AACI;AACoB;AAClF;AACJ;AACM;;;ACjCvD;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;;ACnFD,SAAS,WAAK;AACd;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,wBAAwB,WAAK;AAC7B,CAAC;;;ACXc;AACf;AACA;AACA;AACA;AACA;AACA,oDAAoD,OAAO;AAC3D;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;;ACZc;AACf;AACA;AACA;AACA,+CAA+C,QAAQ;AACvD;AACA;AACA;AACA;AACA,CAAC;;;ACTc;AACf;AACA;AACA;AACA,kDAAkD,OAAO;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;ACZc;AACf;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;;;ACRc;AACf;AACA;AACA;AACA;AACA,GAAG;AACH,CAAC;;;ACNc;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC7Be;AACf;AACA;AACA;AACA;AACA;AACA,CAAC;;;ACNc;AACf;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;;ACNc;AACf;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,CAAC;;;ACRc;AACf;AACA;AACA,wBAAwB;AACxB,kBAAkB,kCAAkC;AACpD;AACA,GAAG;AACH;AACA,CAAC;;;ACRmC;AACF;AACY;AACF;AACZ;AACE;AACA;AACU;AACI;AACV;AACF;;AAErB;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,qBAAqB,QAAQ;AAC7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAS,eAAU;AACnB,QAAQ,cAAS;AACjB,aAAa,SAAc;AAC3B,cAAc,UAAe;AAC7B,OAAO,aAAQ;AACf,QAAQ,cAAS;AACjB,QAAQ,cAAS;AACjB,aAAa,SAAc;AAC3B,eAAe,WAAgB;AAC/B,UAAU,MAAW;AACrB,SAAS,eAAU;AACnB;AACA;;;AC9EO,IAAI,4BAAK;;AAET;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;ACf2C;;AAE5B;AACf,4BAA4B,OAAO,CAAC,4BAAK;;AAEzC;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;AAED;AACA;;AAEA;;AAEA;AACA,aAAa,cAAc;AAC3B;AACA;AACA;AACA;AACA;;AAEA;AACA,aAAa,kBAAkB;AAC/B,mBAAmB,cAAc;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,iBAAiB,cAAc;AAC/B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;ACrHmC;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAAS,aAAI;AACb;AACA;AACA;AACA;;AAEO;AACP;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,UAAU,aAAI,aAAa,aAAI,aAAa,aAAI;AAChD;AACA;AACA;;AAEA;AACA,mBAAmB,OAAO;AAC1B,6CAA6C,aAAI;;AAEjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,mBAAmB,wCAAwC,KAAK,OAAO;;AAEvE;AACA,aAAa,OAAO;;AAEpB;AACA;;AAEe;AACf;AACA;AACA,CAAC;;;ACrHM;AACP;AACA;;AAEO;AACP;AACA;AACA;;;ACPO;AACP;AACA;;AAEe;AACf;AACA;AACA;AACA,CAAC;;;ACRyC;AACD;AACa;;AAEtD,SAAS,kBAAa;AACtB;AACA;;AAEe;AACf;AACA;AACA;AACA,gBAAgB,YAAY;;AAE5B;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,iCAAiC,kBAAa;AAC9C,kCAAkC,YAAY;AAC9C;AACA;AACA;AACA;AACA;;AAEA;AACA,wCAAwC,QAAQ;AAChD;;AAEA;AACA;AACA;;AAEA;AACA,uEAAuE,yBAAQ;AAC/E;;AAEA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,wBAAwB,OAAO;AAC/B,UAAU,WAAW;AACrB,wBAAwB,OAAO;AAC/B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AC9Ee;AACf;AACA;AACA;AACA;AACA,CAAC;;;ACLc;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;;ACX0C;AACC;;AAE7B;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,aAAS;AACxC;AACA;;AAEA;AACA;AACA;AACA,QAAQ,IAAW;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;;ACnDuC;AACiB;;AAEzD,IAAI,kBAAS;AACb,eAAe,UAAU;AACzB;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEe;AACf;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,eAAe,OAAO;AACtB,yCAAyC,IAAI;AAC7C;AACA,kBAAkB,kBAAS;AAC3B;AACA;AACA;;AAEA,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA,OAAO;AACP,2BAA2B,kBAAS;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,oCAAoC,oCAAoC,KAAK,EAAE,aAAa,aAAa;AACzG;AACA;;AAEA;AACA;;AAEA;AACA,oCAAoC,QAAQ;AAC5C;;AAEA;AACA,0CAA0C,QAAQ;AAClD;;AAEA;AACA,CAAC;;;ACxEyC;;AAE1C,SAAS,sBAAiB;AAC1B;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAgB;AAChB,gBAAgB;AAChB,aAAa;AACb,aAAa;AACb,aAAa;AACb,aAAa;AACb,gBAAgB;AAChB,aAAa;AACb;;AAEA,mCAAmC,IAAI;;AAEvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,qBAAqB,QAAQ;AAC7B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACe;AACf,mBAAmB,sBAAiB;AACpC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;;AC5Oc;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,CAAC;;;ACXmC;AACE;;AAE/B,IAAI,YAAG;;AAEP;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,oCAAoC;AACpC;AACA;AACA;AACA;;AAEA;AACA,UAAU,QAAQ;AAClB;AACA;AACA;AACA;AACA;AACA,gCAAgC,uBAAuB,OAAO;AAC9D;AACA;;AAEA;AACA,qBAAqB,8DAA8D;AACnF,kBAAkB,IAAW;AAC7B,SAAS,aAAY;AACrB;AACA;;AAEA;AACA;;AAEe;;AAEf;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC,EAAE,YAAG,CAAC,EAAC;;;ACjE2B;AACE;AACI;AACa;;AAEvC;AACf,aAAa,QAAQ;AACrB;AACA;AACA;AACA;AACA,qBAAqB,YAAY;AACjC,mBAAmB,YAAY;AAC/B,qBAAqB,YAAY;AACjC,sBAAsB,YAAY;AAClC,oBAAoB,YAAY;;AAEhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B,aAAS;AACxC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,sCAAsC,QAAQ;AAC9C;;AAEA;AACA;AACA;;AAEA;AACA,4EAA4E,yBAAQ;AACpF;;AAEA;AACA;AACA;;AAEA;AACA,0EAA0E,yBAAQ;AAClF;;AAEA;AACA,4EAA4E,yBAAQ;AACpF;;AAEA;AACA,6EAA6E,yBAAQ;AACrF;;AAEA;AACA,2EAA2E,yBAAQ;AACnF;;AAEA;AACA,CAAC;;;AC7Fc;AACf;AACA;AACA;;AAEA,6BAA6B,OAAO;AACpC;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,CAAC;;;AC7C4B;AACE;;AAEhB;AACf,sBAAsB,aAAK,GAAG,IAAI;AAClC,CAAC;;;ACLmC;AACE;AACW;;AAElC;;AAEf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iDAAiD,OAAO;AACxD,sBAAsB,IAAW;AACjC,aAAa,aAAY;AACzB;AACA;AACA,KAAK;AACL,gCAAgC,aAAa;AAC7C;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC,EAAE,YAAG,CAAC,EAAC;;;ACnCwC;AACU;AACV;AACW;AACF;AACL;AACF;AACR;AACY;AACO;AACJ;AACE;AACQ;AACF;AACI;;;ACdtD;AACf;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;ACdc;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;ACnBD;AACA;AACA;AACA;AACe;AACf;AACA,CAAC;;;ACN8B;;AAE/B;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,OAAO;AACxB,uBAAuB,KAAK;AAC5B;AACA;;AAEA,gCAAgC;AAChC;;AAEe;AACf;;AAEA;AACA;AACA;AACA;;AAEA,aAAa,OAAO;AACpB;AACA,aAAa,OAAO;;AAEpB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,mCAAmC,QAAQ;AAC3C,qBAAqB,qCAAqC;;AAE1D;AACA,CAAC;;;AChDc;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,OAAO;AACxB;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;ACfc;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;ACtBgD;AACQ;AACR;AACQ;AACJ;;;ACJtC;AACf;AACA,CAAC;;;ACF2C;;AAE7B;AACf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,CAAC,EAAE,iBAAa,CAAC,EAAC;;;AChB0B;;AAE7B;AACf;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,OAAO;;AAEP;AACA;AACA;;AAEA;;AAEA;AACA,CAAC,EAAE,iBAAa,CAAC,EAAC;;;AC3B0B;AACd;;AAEf;AACf;AACA,uBAAuB,UAAM;AAC7B;AACA;AACA;AACA;;AAEA;;AAEA;AACA,CAAC,EAAE,iBAAa,CAAC,EAAC;;;ACd0B;;AAE7B;AACf;AACA;AACA,8BAA8B,OAAO;AACrC;AACA;AACA;;AAEA;;AAEA;AACA,CAAC,EAAE,iBAAa,CAAC,EAAC;;;ACb0B;AACR;;AAErB;AACf;AACA,0BAA0B,SAAS;AACnC;AACA;AACA;AACA;;AAEA;;AAEA;AACA,CAAC,EAAE,iBAAa,CAAC,EAAC;;;ACd0B;;AAE7B;AACf;AACA;AACA;AACA;AACA;;AAEA;;AAEA;A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A;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,8BAA8B,4BAA4B;AAC1D,8BAA8B,4BAA4B;AAC1D,8BAA8B,4BAA4B,4FAA4F;AACtJ,eAAe,WAAK,aAAa;AACjC;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA,CAAC;;;ACnDgC;;AAEjC;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,8BAA8B;AAC9B,8BAA8B;AAC9B,8BAA8B,oFAAoF,0EAA0E;AAC5L,8BAA8B;AAC9B,eAAe,WAAK,aAAa;AACjC;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA,CAAC;;;ACtCgC;;AAEjC;AACA,oBAAoB,KAAK;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEe;;AAEf;AACA,4BAA4B,KAAK;AACjC;;AAEA;AACA;AACA;;AAEA;AACA,CAAC,OAAO,EAAC;;;ACvDF,SAAS,cAAK;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,uDAAuD;AACvD,cAAc,cAAK,2BAA2B;AAC9C;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,8BAA8B,sEAAsE;AACpG,8BAA8B,4BAA4B;AAC1D,8BAA8B;AAC9B,eAAe,cAAK,aAAa;AACjC;AACA;AACA;AACA;AACA;;AAEe;;AAEf;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC,IAAI,EAAC;;;AC5DwB;AACM;;AAE7B;AACP;AACA;AACA;;AAEA;AACA,aAAa,iBAAI;AACjB,WAAW,iBAAI;AACf;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,8BAA8B,4BAA4B;AAC1D,8BAA8B,kDAAkD;AAChF,8BAA8B,4BAA4B;AAC1D,eAAe,cAAK,aAAa;AACjC;AACA;AACA;AACA;AACA;;AAEe;;AAEf;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC,IAAI,EAAC;;;AC5D8B;;AAE7B;AACP;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,8BAA8B;AAC9B,8BAA8B;AAC9B,8BAA8B,kGAAkG;AAChI,8BAA8B;AAC9B,eAAe,cAAK,aAAa;AACjC;AACA;AACA;AACA;AACA;;AAEe;;AAEf;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC,IAAI,EAAC;;;AChD6B;AACI;;AAEhC,SAAS,gBAAK;AACrB;AACA;AACA;AACA;;AAEA,oBAAoB,gBAAO;AAC3B;AACA;AACA;AACA;AACA;;AAEA,oBAAoB,gBAAO;AAC3B;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,uDAAuD;AACvD,6CAA6C;AAC7C;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,8BAA8B,sEAAsE;AACpG,8BAA8B;AAC9B,8BAA8B;AAC9B,eAAe,gBAAK,aAAa;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEe;;AAEf;AACA,wDAAwD,QAAQ;AAChE;;AAEA;AACA;AACA;;AAEA;AACA,CAAC,MAAM,EAAC;;;ACvF2C;AACrB;AACQ;;AAEtC;AACA;AACA;AACA;;AAEA;AACA,aAAa,iBAAI;AACjB,WAAW,iBAAI;AACf;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,8BAA8B,4BAA4B;AAC1D,8BAA8B,kDAAkD;AAChF,8BAA8B,4BAA4B;AAC1D,eAAe,gBAAK,aAAa;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEe;;AAEf;AACA,8DAA8D,cAAc;AAC5E;;AAEA;AACA;AACA;;AAEA;AACA,CAAC,MAAM,EAAC;;;ACzEuC;AACT;;AAEtC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,8BAA8B;AAC9B,8BAA8B;AAC9B,8BAA8B,kGAAkG;AAChI,8BAA8B;AAC9B,eAAe,gBAAK,aAAa;AACjC;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEe;;AAEf;AACA,4DAA4D,YAAY;AACxE;;AAEA;AACA;AACA;;AAEA;AACA,CAAC,MAAM,EAAC;;;AC7DsB;;AAE9B;AACA;AACA;;AAEA;AACA,aAAa,iBAAI;AACjB,WAAW,iBAAI;AACf;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA,CAAC;;;ACxBD,SAAS,aAAI;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,aAAI,OAAO,aAAI;AACzB;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,SAAS,cAAK;AACd;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,uDAAuD;AACvD,cAAc,cAAK,yCAAyC;AAC5D;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA,iDAAiD;AACjD;AACA,8BAA8B,sEAAsE;AACpG,8BAA8B;AAC9B,8BAA8B,CAAC,cAAK,kDAAkD;AACtF,eAAe,cAAK,0CAA0C;AAC9D;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,0BAA0B,4BAA4B,EAAE;AACxD,yBAAyB,2BAA2B,EAAE;AACtD,0BAA0B,4BAA4B,EAAE;AACxD,iDAAiD,mDAAmD;AACpG;;AAEO;AACP;AACA;;AAEO;AACP;AACA;;;ACvGA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA,gCAAgC,QAAQ;AACxC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,WAAW;AACxB;AACA,aAAa,OAAO;AACpB;AACA,iBAAiB,QAAQ;AACzB;AACA,aAAa,WAAW;AACxB;AACA;;AAEe;AACf;AACA,CAAC;;;AChED;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,8BAA8B,sEAAsE;AACpG,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf;AACA,CAAC;;AAEM;AACP;AACA;;AAEO;AACP;AACA;;;ACpDe;AACf;AACA,iEAAiE,OAAO;AACxE;AACA,eAAe,OAAO;AACtB;AACA;AACA;AACA,CAAC;;;ACRc;AACf;AACA;AACA;AACA,CAAC;;;ACJgC;AACI;AACK;AACF;;AAExC;AACA;AACA;;AAEe;AACf,aAAa,qBAAQ;AACrB,cAAc,UAAS;AACvB,eAAe,WAAU;AACzB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,eAAe,OAAO;AACtB,iEAAiE,OAAO;AACxE;AACA;AACA;AACA;AACA;;AAEA,+BAA+B,OAAO;AACtC;AACA;;AAEA;AACA;AACA;;AAEA;AACA,oEAAoE,qBAAQ,CAAC,wBAAK;AAClF;;AAEA;AACA,qEAAqE,qBAAQ;AAC7E;;AAEA;AACA,mDAAmD,UAAS,iCAAiC,qBAAQ,CAAC,wBAAK;AAC3G;;AAEA;AACA,oDAAoD,WAAU;AAC9D;;AAEA;AACA,CAAC;;;ACxD4B;;AAEd;AACf;AACA,gDAAgD,OAAO;AACvD,mBAAmB,OAAO;AAC1B,sBAAsB,OAAO;AAC7B;AACA,EAAE,WAAI;AACN,CAAC;;;ACTc;AACf;AACA,mEAAmE,OAAO;AAC1E,4BAA4B,OAAO;AACnC;AACA;AACA,OAAO;AACP;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,CAAC;;;ACb4B;;AAEd;AACf;AACA,0DAA0D,OAAO;AACjE,0BAA0B,OAAO;AACjC;AACA;AACA,EAAE,WAAI;AACN,CAAC;;;ACT4B;;AAEd;AACf;AACA,kCAAkC,OAAO;AACzC,mCAAmC,OAAO;AAC1C;AACA;AACA;AACA;AACA,qBAAqB,OAAO;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,WAAI;AACN,CAAC;;;ACvB4B;;AAEd;AACf;AACA,SAAS,UAAI,8BAA8B,4BAA4B,EAAE;AACzE,CAAC;;AAED;AACA;AACA;AACA;AACA;;;ACX6B;;AAEd;AACf,wBAAwB,aAAG;AAC3B,SAAS,UAAI,8BAA8B,0BAA0B,EAAE;AACvE,CAAC;;AAEM,SAAS,aAAG;AACnB;AACA;AACA;AACA;;;ACXuC;;AAExB;AACf,SAAS,eAAS;AAClB,CAAC;;;ACJwC;AACN;;AAEpB;AACf;AACA;AACA;AACA,wBAAwB,aAAG;AAC3B,cAAc,UAAU;AACxB;AACA;AACA;AACA;;AAEA,aAAa,OAAO;AACpB;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;;AAEA;AACA,CAAC;;;AC1B4B;;AAEd;AACf,SAAS,UAAI;AACb,CAAC;;;ACJuC;AACE;AACA;AACF;AACqC;AACA;AACrB;AACiB;;AAElB;AACI;AACF;AACI;AACF;AACJ;AACQ;AACV;;AAEc;AACJ;AACR;AACE;AACgB;AACJ;AACR;AACgB;AACJ;AACR;AACI;AACZ;AACoC;AAClC;AACsD;;AAErE;AACoB;AACM;AACV;AACY;AACR;AACM;AACF;AACE;AACF;AACV;AACM;;;;;;;;;AC7CjD;AACf;AACA;AACA;AACA,CAAC;;;ACJM,SAAS,WAAC;AACjB;AACA;;AAEO,SAAS,WAAC;AACjB;AACA;;;ACNA;AACA,gBAAgB;AAChB;;AAEO;AACP;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,KAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;;AAEA;AACA;AACA,yBAAyB,gBAAgB,QAAQ;;AAEjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEe,iEAAY,EAAC;;;AC5OoB;;AAEzC;AACP;AACA,cAAc,aAAK;AACnB;AACA;AACA;AACA;AACA,EAAE,KAAK;AACP,EAAE,KAAK;AACP;AACA;;AAEO;AACP;AACA;AACA;AACA;;AAEO;AACP;AACA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA,0CAA0C;;AAE1C;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEO;AACP,UAAU,aAAK;AACf;;AAEA;AACA,4BAA4B,aAAK;AACjC;AACA,iDAAiD,eAAO;AACxD,mDAAmD,eAAO;AAC1D,aAAa,aAAK;AAClB;AACA;AACA;;;ACvKwC;AACQ;;AAEzC;AACP,SAAS,KAAK;AACd;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEO;AACP;AACA;;AAEO;AACP;AACA;;AAEO;AACP,sBAAsB,KAAK,+BAA+B,OAAO;AACjE,gBAAgB,KAAK;AACrB;AACA;AACA,iBAAiB,OAAO,uDAAuD,aAAK;AACpF,iCAAiC,4BAA4B,EAAE;AAC/D,iBAAiB,OAAO;AACxB,iBAAiB,OAAO;AACxB;AACA;AACA;;AAEO;AACP,eAAe,KAAK;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,gBAAgB;AACjC,eAAe,KAAK;AACpB;AACA;AACA;;AAEA;AACA;AACA,aAAa,aAAK;AAClB;AACA;AACA;;AAEA;AACA;AACA;AACA,oCAAoC,aAAK;AACzC,wCAAwC,aAAK;AAC7C,sCAAsC,eAAO,8BAA8B,eAAO;AAClF,yCAAyC,aAAK,MAAM,gBAAgB;AACpE,oCAAoC,eAAO,gBAAgB,eAAO,gCAAgC,eAAO;AACzG,sCAAsC,eAAO,gBAAgB,eAAO,4BAA4B,eAAO;AACvG,sCAAsC,eAAO,gBAAgB,eAAO,gCAAgC,eAAO;AAC3G,sCAAsC,eAAO,gBAAgB,eAAO,4BAA4B,eAAO;AACvG;AACA;AAC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A;AACA;;AAEA,EAAE,iBAAiB;;AAEnB;AACA;AACA;AACA;AACA;AACA,IAAI,SAAS;AACb,IAAI,SAAS;AACb;;AAEA,eAAe,aAAK;AACpB;;AAEA;AACA,EAAE,eAAO;AACT,EAAE,aAAK;AACP;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,oDAAoD,QAAQ,iBAAiB,iBAAiB,EAAE;AAChG;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,GAAG;;AAEH;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;;AAEH;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO;AACP,KAAK;;AAEL;;AAEA;AACA;AACA;;;AC7IkC;AACe;AACN;;AAE5B;AACf,UAAU,WAAM;AAChB,UAAU,WAAM;AAChB;;AAEA;AACA,eAAe,OAAO;AACtB,0CAA0C,eAAO,IAAI,eAAO,6BAA6B,eAAO,IAAI,eAAO;AAC3G;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iEAAiE,uBAAQ;AACzE;;AAEA;AACA,iEAAiE,uBAAQ;AACzE;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;;AC/C4C;;;ACA9B;AACf;AACA;AACA;AACA,CAAC;;;ACJc;AACf;AACA;AACA;AACA;;;ACJO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEO,IAAI,kBAAQ;;AAEnB,mBAAS;;AAEM,SAAS,mBAAS;AACjC,6DAA6D,kBAAQ;AACrE;AACA;;;AClDmC;;AAE5B,SAAS,yBAAa;AAC7B,EAAE,QAAK;AACP;;AAEe;AACf,EAAE,QAAK;AACP,EAAE,QAAK;AACP,CAAC;;;ACToC;AACW;AACD;AACuB;AAC9B;AACH;AACF;AACgB;AACC;;AAEpD;AACA,SAAS,kBAAa;AACtB,UAAU,QAAK,aAAa,QAAK;AACjC;;AAEA,SAAS,kBAAa;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,wBAAwB,kBAAQ;AAChC;;AAEA;AACA,UAAU,QAAK,WAAW,QAAK,0BAA0B,QAAK;AAC9D;;AAEA,SAAS,qBAAgB;AACzB;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEe;AACf,eAAe,kBAAa;AAC5B,eAAe,kBAAa;AAC5B;AACA;AACA,kBAAkB,qBAAgB;AAClC;AACA;AACA;AACA,oBAAoB,6CAAe;AACnC,kBAAkB,YAAQ;AAC1B;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,OAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA,uBAAuB,kBAAQ;AAC/B;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA,+CAA+C,SAAS;AACxD;;AAEA;AACA;AACA,oEAAoE,SAAS;AAC7E;;AAEA;AACA;AACA;;AAEA;AACA;AACA,sCAAsC,kCAAkC,EAAE;AAC1E,mDAAmD,gCAAgC,EAAE;AACrF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B,kBAAkB,4BAA4B,SAAS,SAAS,sCAAsC;AACtG;AACA;AACA,SAAS;AACT;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,MAAM,WAAW,KAAK,SAAS;AAC/B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,YAAY,KAAK;;AAEjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAM,SAAS;AACf;AACA;;AAEA,IAAI,mBAAO;AACX;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,YAAY,UAAM,CAAC,QAAK;AACxB,YAAY,KAAK;AACjB,aAAa,QAAK;AAClB,aAAa,QAAK;;AAElB,IAAI,MAAW,CAAC,QAAK;AACrB,IAAI,yBAAa;AACjB;AACA,IAAI,SAAS;AACb;;AAEA;AACA,MAAM,mBAAO;AACb;AACA,iBAAiB,QAAK,oBAAoB,QAAK;AAC/C;AACA;AACA,sEAAsE,KAAK;AAC3E;;AAEA;AACA;AACA,MAAM,OAAU,CAAC,QAAK;AACtB,MAAM,mBAAO;AACb;AACA;AACA;;AAEA;AACA;AACA;AACA,aAAa,KAAK;AAClB;AACA,qBAAqB,QAAK;AAC1B;;AAEA,IAAI,mBAAO;AACX,sBAAsB,UAAM;AAC5B,SAAS,UAAM;AACf;;AAEA;AACA;AACA,kBAAkB,QAAK;AACvB;AACA,qCAAqC,QAAK;AAC1C;;AAEA,IAAI,yBAAa;AACjB,eAAe,OAAO;AACtB,0BAA0B,SAAK;AAC/B;AACA;AACA;AACA;;AAEA;;AAEA;AACA,6DAA6D,sBAAsB,EAAE;AACrF,MAAM,SAAS;AACf;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB,QAAK;AACvB;;AAEA,IAAI,mBAAO;AACX;AACA;AACA,eAAe,OAAO;AACtB,0BAA0B,SAAK;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,kBAAkB,QAAK;AACvB;;AAEA,IAAI,yBAAa;AACjB;AACA,yCAAyC,oBAAoB,EAAE;AAC/D,eAAe,OAAO;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,UAAM;AACtB;AACA;AACA;AACA;;AAEA;AACA,0EAA0E,oBAAQ;AAClF;;AAEA;AACA,sEAAsE,oBAAQ;AAC9E;;AAEA;AACA,yEAAyE,oBAAQ;AACjF;;AAEA;AACA,sEAAsE,oBAAQ;AAC9E;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,CAAC;;;AClayC;AACwC;;;ACDlF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAA0C;AACjB;AACD;AACC;AACA;AACK;AACL;AACE;AACC;AACJ;AACD;AACC;AACC;AACA;AACC;AACH;AACM;AACE;AACP;AACG;AACC;AACF;AACD;AACU;AACN;AACJ;AACD;AACO;AACN;AACK;AACH;AACH;;;;;;;;;;;;;;;;;;;;AC/BxB,uDAAgE;AAEhE,6CAAyD;AAIzD,+BAAgC;AAEhC;IAA2C,yCAAqB;IAO9D,+BAAmB,SAAc,EAAS,EAAU,EAAE,OAAoC,EAAE,kBAAuC;QAAnI,YACE,kBAAM,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,kBAAkB,CAAC,SAElD;QAHkB,eAAS,GAAT,SAAS,CAAK;QAAS,QAAE,GAAF,EAAE,CAAQ;QAN5C,kBAAY,GAAkB,EAAE,CAAC;QAQvC,KAAI,CAAC,qBAAqB,EAAE,CAAC;;IAC/B,CAAC;IAPa,0BAAI,GAAlB,UAAmB,IAAiB,EAAE,SAAS,EAAE,OAAoC;QACnF,6CAAqB,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,yBAAW,CAAC,EAAE,CAAC,CAAC;IAC9F,CAAC;IAOM,iDAAiB,GAAxB,UAAyB,MAAiB;QACxC,iBAAM,iBAAiB,YAAC,MAAM,CAAC,CAAC;QAChC,IAAI,MAAM,YAAY,yBAAW,EAAE;YACjC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC/B,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,qDAAqB,GAA7B;QACE,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC;IACxE,CAAC;IAEM,qDAAqB,GAA5B;QACE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,qBAAW,IAAI,kBAAW,CAAC,oBAAoB,EAAE,EAAlC,CAAkC,CAAC,CAAC;IAC/E,CAAC;IACH,4BAAC;AAAD,CAAC,CA5B0C,6CAAqB,GA4B/D;AA5BY,sDAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC6DlC;IACE,uCAAoB,eAAgC,EAAU,OAA8C;QAAxF,oBAAe,GAAf,eAAe,CAAiB;QAAU,YAAO,GAAP,OAAO,CAAuC;IAAG,CAAC;IAEnG,sDAAc,GAA3B,UAA4B,cAAyC;;;;;4BAC7C,qBAAM,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC;;wBAAhE,aAAa,GAAG,SAAgD;wBACtE,sBAAO,IAAI,CAAC,qBAAqB,CAAC,aAAa,CAAC,SAAS,EAAE,aAAa,CAAC,SAAS,CAAC,EAAC;;;;KACrF;IAEO,6DAAqB,GAA7B,UACE,cAA0C,EAC1C,mBAAyC;QAF3C,iBAgBC;QAZC,OAAO,cAAc,CAAC,MAAM,CAAC,UAAC,SAAS,EAAE,aAAa;YACpD,IAAM,cAAc,GAAG,aAAa,CAAC,MAAM,CAAC,GAAG,CAAC,yBAAe;gBAC7D,OAAiC;oBAC/B,eAAe,EAAE,eAAe,CAAC,eAAe;oBAChD,OAAO,EAAE,aAAa,CAAC,OAAO;oBAC9B,KAAK,EAAE,eAAe,CAAC,KAAK;oBAC5B,KAAK,EAAE,KAAI,CAAC,4BAA4B,CAAC,eAAe,EAAE,mBAAmB,CAAC;oBAC9E,KAAK,EAAE,KAAI,CAAC,OAAO,CAAC,KAAK;iBAC1B,CAAC;YACJ,CAAC,CAAC,CAAC;YACH,OAAO,SAAS,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QAC1C,CAAC,EAAE,EAAE,CAAC,CAAC;IACT,CAAC;IAEa,6DAAqB,GAAnC,UAAoC,cAAyC;;;;;;;wBAErE,sBAAsB,GAAG,IAAI,CAAC,+BAA+B,EAAE,CAAC;wBAChE,UAAU,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;wBAEjD,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;4BAC3B,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;yBAC1C;wBAEK,wBAAwB,GAAG,cAAc,CAAC,GAAG,CAAC,iBAAO;4BACzD,IAAM,cAAc,GAAO,UAAU,SAAE,OAAO,CAAC,IAAI,GAAE,IAAI,CAAC,GAAG,CAAC,CAAC;4BAC/D,OAAO,KAAI,CAAC,0BAA0B,CAAC,cAAc,CAAC,CAAC;wBACzD,CAAC,CAAC,CAAC;wBAEG,QAAQ,GAAO,wBAAwB,SAAE,sBAAsB,EAAC,CAAC;wBACxD,qBAAM,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC,oBAAoB,CAAC;gCAC3E,KAAK,EAAE,QAAQ;6BAChB,CAAC;;wBAFI,MAAM,GAAG,SAEb;wBAEI,SAAS,GAAG,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;wBACzD,SAAS,GAA+B,MAAM,CAAC,GAAG,CAAC,UAAC,KAAK,EAAE,CAAC;4BAChE,OAAiC;gCAC/B,OAAO,EAAE,cAAc,CAAC,CAAC,CAAC;gCAC1B,MAAM,EAAE,KAAK;6BACd,CAAC;wBACJ,CAAC,CAAC,CAAC;wBAEH,sBAAuC;gCACrC,SAAS;gCACT,SAAS;6BACV,EAAC;;;;KACH;IAEO,oEAA4B,GAApC,UAAqC,UAA4B,EAAE,SAA+B;QAChG,IAAM,wBAAwB,GAAG,SAAS,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,aAAa,CAAC;QACpG,IAAM,yBAAyB,GAAW,CAAC,wBAAwB,GAAG,UAAU,CAAC,eAAe,CAAC,GAAG,wBAAwB,GAAG,GAAG,CAAC;QACnI,OAAO;YACL,yBAAyB;SAC1B,CAAC;IACJ,CAAC;IAEO,iEAAyB,GAAjC,UAAkC,KAAyB;QACzD,IAAM,WAAW,GAAG,EAAE,CAAC;QACvB,KAAK,CAAC,OAAO,CAAC,eAAK,IAAI,QAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,EAAlD,CAAkD,CAAC,CAAC;QAC3E,OAAO;YACL,WAAW,EAAE,WAAW;YACxB,aAAa,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,eAAe;SACvD,CAAC;IACJ,CAAC;IAEO,kEAA0B,GAAlC,UAAmC,cAAsB;QACvD,OAAO;YACL,KAAK,EAAU,IAAI,CAAC,OAAO,CAAC,KAAK;YACjC,aAAa,EAAE,IAAI;YACnB,qBAAqB,EAAE,CAAC;YACxB,aAAa,EAAE,cAAc;SAC9B,CAAC;IACJ,CAAC;IAEO,uEAA+B,GAAvC;QACE,OAAO;YACL,KAAK,EAAU,IAAI,CAAC,OAAO,CAAC,KAAK;SAClC,CAAC;IACJ,CAAC;IAEO,8DAAsB,GAA9B;QACE,IAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;QACtD,IAAM,qBAAqB,GACzB,SAAS,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,mCAAmC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAEzH,OAAO,CAAC,qBAAqB,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,cAAI,IAAI,QAAC,CAAC,IAAI,EAAN,CAAM,CAAC,CAAC;IACtE,CAAC;IAEO,2EAAmC,GAA3C,UAA4C,KAAa,EAAE,UAAkB;QAC3E,IAAM,yBAAyB,GAAG,SAAS,CAAC;QAC5C,IAAM,uBAAuB,GAAG,OAAO,CAAC;QACxC,OAAO,UAAU;aACd,OAAO,CAAC,IAAI,MAAM,CAAI,KAAK,UAAK,yBAA2B,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC;aACvE,OAAO,CAAC,IAAI,MAAM,CAAI,KAAK,UAAK,uBAAyB,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAC3E,CAAC;IACH,oCAAC;AAAD,CAAC;AA1GY,sEAA6B;;;;;;;ACrE1C,yC;;;;;;ACAA,yC;;;;;;;;ACAA,6CAA6C;;;;;;;;;;;;AAE7C,iDAA2D;AAI3D,+BAAgC;AAEhC;IAAiD,+CAAe;IAG9D,qCAAmB,KAAwB,EAAS,sBAA+C;QAAnG,YACE,kBAAM,KAAK,EAAE,sBAAsB,CAAC,SACrC;QAFkB,WAAK,GAAL,KAAK,CAAmB;QAAS,4BAAsB,GAAtB,sBAAsB,CAAyB;;IAEnG,CAAC;IAEM,qDAAe,GAAtB,UAAuB,oBAAgD;QAAvE,iBAyDC;QAzDsB,8DAAuB,IAAI,CAAC,oBAAoB;QACrE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,oCAAoC,EAAE;YACpD,IAAI,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,oBAAoB,EAAE,UAAC,SAAqB,EAAE,GAAW;gBAC7E,OAAO;oBACL,SAAS,EAAE,SAAS;oBACpB,GAAG,EAAE,GAAG;iBACT,CAAC;YACJ,CAAC,CAAC,CAAC;YAEH,qJAAqJ;YACrJ,6GAA6G;YAC7G,IACE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC;gBAClC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY;gBAC/B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EACpE;gBACA,IAAI,UAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;gBAEzF,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,UAAC,KAAK,EAAE,MAAM;oBACvC,IAAI,eAAe,GACjB,CAAC,CAAC,IAAI,CAAC,KAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,UAAC,SAA0B;wBAC9D,OAAO,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;oBACzF,CAAC,CAAC,IAAI,IAAI,CAAC;oBAEb,IAAI,gBAAgB,GAClB,CAAC,CAAC,IAAI,CAAC,KAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,UAAC,SAA0B;wBAC9D,OAAO,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;oBACzF,CAAC,CAAC,IAAI,IAAI,CAAC;oBAEb,IAAI,eAAe,IAAI,gBAAgB,EAAE;wBACvC,IAAI,UAAU,GAAG,KAAI,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;wBAC7D,IAAI,WAAW,GAAG,KAAI,CAAC,KAAK,CAAC,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;wBAC/D,IAAI,QAAQ,GAAG,UAAU,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;wBACrD,OAAO,UAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;qBAC5C;oBACD,OAAO,KAAK,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;gBAChC,CAAC,CAAC,CAAC;aACJ;YAED,2FAA2F;YAC3F,uGAAuG;YACvG,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,UAAC,KAAK,EAAE,MAAM;gBACvC,IAAI,KAAK,CAAC,SAAS,CAAC,QAAQ,KAAK,MAAM,CAAC,SAAS,CAAC,QAAQ,EAAE;oBAC1D,IAAI,kBAAkB,GAAG,KAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;oBAC3E,IAAI,mBAAmB,GAAG,KAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;oBAC7E,IAAI,kBAAkB,CAAC,gBAAgB,KAAK,mBAAmB,CAAC,gBAAgB,EAAE;wBAChF,OAAO,KAAK,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;qBAC/B;yBAAM;wBACL,OAAO,kBAAkB,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;qBACrD;iBACF;qBAAM;oBACL,OAAO,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC1C;YACH,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;SACxC;QACD,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IAES,0DAAoB,GAA9B;QACE,IAAI,IAAI,CAAC,KAAK,CAAC,oCAAoC,EAAE;YACnD,OAAO,IAAI,CAAC,oBAAoB,CAAC;SAClC;aAAM;YACL,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC;SAC/B;IACH,CAAC;IACH,kCAAC;AAAD,CAAC,CAzEgD,iCAAe,GAyE/D;AAzEY,kEAA2B;;;;;;;;;ACRxC,qEAAqE;AACrE,kDAAkD;;;;;;;;;;;;AAElD,sDAA8D;AAI9D,2CAAoD;AACpD,+BAAgC;AAEhC;IAAsD,oDAAoB;IACxE,0CAAmB,KAAwB;QAA3C,YACE,kBAAM,KAAK,CAAC,SACb;QAFkB,WAAK,GAAL,KAAK,CAAmB;;IAE3C,CAAC;IAEM,iDAAM,GAAb,UAAc,MAA6B,EAAE,SAA4B;QAAzE,iBAwBC;QAxB4C,wCAAY,MAAM,CAAC,SAAS;QACvE,8FAA8F;QAC9F,IAAI,KAAK,GAAG,uBAAU,CAAC,2BAA2B,CAChD,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,6BAA6B,EAAE,EACtD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,wBAAwB,CAC5C,CAAC;QACF,OAAO,IAAI,OAAO,CAAqB,iBAAO;YAC5C,IAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,KAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE,CAAC;iBACrD,OAAO,EAAE;iBACT,MAAM,CAAC,UAAC,CAAkB;gBACzB,OAAO,CACL,KAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,IAAI;oBAC7D,CAAC,CAAC,CAAC,QAAQ,CAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa,EAAE,mBAAS,IAAI,gBAAS,CAAC,WAAW,EAAE,EAAvB,CAAuB,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CACtH,CAAC;YACJ,CAAC,CAAC;iBACD,KAAK,CAAC,KAAI,CAAC,KAAK,CAAC,OAAO,CAAC,2BAA2B,CAAC;iBACrD,KAAK,EAAE,CAAC;YAEX,IAAM,WAAW,GAAuB,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,UAAC,CAAkB;gBACtE,OAAY,CAAC,CAAC,UAAU,CAAC;YAC3B,CAAC,CAAC,CAAC;YAEH,OAAO,CAAC,WAAW,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;IACL,CAAC;IAES,uEAA4B,GAAtC;QACE,OAAO,EAAE,CAAC;IACZ,CAAC;IACH,uCAAC;AAAD,CAAC,CAlCqD,2CAAoB,GAkCzE;AAlCY,4EAAgC;;;;;;;;;ACV7C,0CAA0C;;;;;;;;;;;;AAG1C,uDAAuE;AACvE,qEAA4F;AAE5F;IAAuD,qDAAqB;IAC1E,2CAAmB,KAAY;QAA/B,YACE,kBAAM,KAAK,EAAE,yEAAmC,CAAC,SAClD;QAFkB,WAAK,GAAL,KAAK,CAAO;;IAE/B,CAAC;IACH,wCAAC;AAAD,CAAC,CAJsD,6CAAqB,GAI3E;AAJY,8EAAiC;;;;;;;;;;;;;;;;;;;;ACN9C,mDAA+D;AAK/D;IAAyD,uDAAiB;IACxE,6CAAmB,KAAwB,EAAS,UAAsB,EAAS,0BAAmC;QAAtH,YACE,kBAAM,KAAK,EAAE,UAAU,EAAE,0BAA0B,CAAC,SACrD;QAFkB,WAAK,GAAL,KAAK,CAAmB;QAAS,gBAAU,GAAV,UAAU,CAAY;QAAS,gCAA0B,GAA1B,0BAA0B,CAAS;;IAEtH,CAAC;IAEM,gEAAkB,GAAzB,UAA0B,aAAyC;QACjE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACjC,iBAAM,iBAAiB,YAAC,aAAa,CAAC,CAAC;IACzC,CAAC;IAEM,iEAAmB,GAA1B,UAA2B,aAAyC;QAClE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACjC,iBAAM,kBAAkB,YAAC,aAAa,CAAC,CAAC;IAC1C,CAAC;IACH,0CAAC;AAAD,CAAC,CAdwD,qCAAiB,GAczE;AAdY,kFAAmC;;;;;;;;;ACLhD,6CAA6C;;;;;;;;;;;;AAE7C,6CAAmD;AAGnD,uDAAuE;AAEvE,4CAAiD;AACjD,qCAA0C;AAC1C,oDAAqD;AACrD,+BAAgC;AAEhC;IAA6C,2CAAW;IACtD,iCAAmB,KAAwB,EAAS,0BAAuD,EAAE,IAAiB;QAA9H,YACE,kBAAM,KAAK,EAAE,0BAA0B,EAAE,IAAI,CAAC,SAC/C;QAFkB,WAAK,GAAL,KAAK,CAAmB;QAAS,gCAA0B,GAA1B,0BAA0B,CAA6B;;IAE3G,CAAC;IAES,iFAA+C,GAAzD;QACE,IAAI,MAAM,GAAG,iBAAM,+CAA+C,WAAE,CAAC;QACrE,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC;QACvD,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,yBAAyB,EAAE;YACpD,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,yBAAyB,CAAC,CAAC;SACtG;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAES,+DAA6B,GAAvC;QAAA,iBAcC;QAbC,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAAE,CAAC;QAElC,IAAI,gBAAgB,GAAG,IAAI,6CAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7D,gBAAgB,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC;QACvD,gBAAgB,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC;QACjE,gBAAgB,CAAC,gBAAgB,CAAC,IAAI,CAAC,6BAA6B,EAAE,CAAC,CAAC;QACxE,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,UAAC,WAA+B;YAC5F,KAAI,CAAC,oBAAoB,EAAE,CAAC;YAC5B,8BAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACrB,IAAI,WAAW,GAAG,KAAI,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;YACnD,KAAI,CAAC,KAAK,CAAC,oCAAoC,CAAC,WAAW,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC9B,CAAC;IAEO,gDAAc,GAAtB,UAAuB,WAA+B;QAAtD,iBAOC;QANC,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,oBAAU;YAC5B,IAAI,SAAS,GAAG,KAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACnE,MAAM,CAAC,IAAI,CAAC,KAAI,CAAC,8BAA8B,CAAC,SAAS,CAAC,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;IAEO,gEAA8B,GAAtC,UAAuC,SAA0B;QAAjE,iBAgBC;QAfC,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC,KAAK,CAAC;QAC5C,IAAI,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QACnD,IAAI,CAAC,aAAK,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE;YAC7B,UAAU,GAAG,uBAAU,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;SAC5C;QACD,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC;QAC3B,UAAU,CAAC,QAAQ,GAAG,KAAK,CAAC;QAC5B,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACxB,IAAI,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;QAC9B,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,eAAK;YAClB,IAAI,cAAc,GAAG,KAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAC9E,MAAM,CAAC,IAAI,CAAC,KAAI,CAAC,8BAA8B,CAAC,cAAc,CAAC,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC;IACH,8BAAC;AAAD,CAAC,CAxD4C,yBAAW,GAwDvD;AAxDY,0DAAuB;;;;;;;;;ACZpC,6CAA6C;;;;;;;;;;;;AAE7C,sDAAoE;AAGpE,oEAA0F;AAC1F,mCAAqC;AACrC,+BAAgC;AAMhC;IAAsD,oDAAmB;IACvE,0CACS,KAAwB,EACxB,WAAyB,EACzB,cAAyD,EAChE,OAAkD;QAJpD,YAME,kBAAM,KAAK,EAAE,WAAW,EAAE,uEAAkC,EAAE,OAAO,CAAC,SACvE;QANQ,WAAK,GAAL,KAAK,CAAmB;QACxB,iBAAW,GAAX,WAAW,CAAc;QACzB,oBAAc,GAAd,cAAc,CAA2C;;IAIlE,CAAC;IAEM,wDAAa,GAApB;QACE,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,IAAI,MAAM,GACL,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,OAAI;gBAC/B,CAAC,CAAC,GAAG,CAAC,QAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,+BAA+B,CAAC,EAAE,UAAC,KAAkB;oBAC/E,CAAC,CAAC,IAAI,CAAC,QAAE,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,0CAA0C,CAAC,EAAE,mBAAS;wBAC7E,6BAA6B;wBAC7B,QAAE,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAC/B,CAAC,CAAC,CAAC;oBACH,OAAO,QAAE,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC1B,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChB,OAAO,MAAM,CAAC;SACf;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IACH,uCAAC;AAAD,CAAC,CA1BqD,0CAAmB,GA0BxE;AA1BY,4EAAgC;;;;;;;;;;;;;;;;;;;;ACb7C,wDAAyE;AAIzE,+BAAgC;AAEhC;IAAwD,sDAAsB;IAC5E,4CAAmB,KAAwB,EAAS,UAAsB;QAA1E,YACE,kBAAM,KAAK,EAAE,UAAU,CAAC,SACzB;QAFkB,WAAK,GAAL,KAAK,CAAmB;QAAS,gBAAU,GAAV,UAAU,CAAY;;IAE1E,CAAC;IAEM,kDAAK,GAAZ;QACE,IAAI,KAAK,GAAG,iBAAM,KAAK,WAAE,CAAC;QAC1B,KAAK,CAAC,QAAQ,CAAC,gCAAgC,CAAC,CAAC;QACjD,IAAI,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,iCAAiC,CAAC,CAAC;QAC5D,IAAI,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;QACjF,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,WAAC;YACtB,OAAO,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAC;QACjG,OAAO,KAAK,CAAC;IACf,CAAC;IACH,yCAAC;AAAD,CAAC,CAhBuD,+CAAsB,GAgB7E;AAhBY,gFAAkC;;;;;;;;;ACN/C,kEAAkE;;;;;;;;;;;;AAElE,mDAA+D;AAI/D,iEAAoF;AAEpF;IAAmD,iDAAiB;IAClE,uCAAmB,KAAwB,EAAS,WAAyB,EAAS,aAAqC;QAA3H,YACE,kBAAM,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,iEAA+B,CAAC,SAC1E;QAFkB,WAAK,GAAL,KAAK,CAAmB;QAAS,iBAAW,GAAX,WAAW,CAAc;QAAS,mBAAa,GAAb,aAAa,CAAwB;;IAE3H,CAAC;IACH,oCAAC;AAAD,CAAC,CAJkD,qCAAiB,GAInE;AAJY,sEAA6B;;;;;;;;;ACR1C,6CAA6C;;;;;;;;;;;;AAE7C,qDAAmE;AAMnE;IAAqD,mDAAmB;IACtE,yCAAmB,KAAwB,EAAS,UAAsB,EAAS,QAAgC;QAAnH,YACE,kBAAM,KAAK,EAAE,UAAU,EAAE,QAAQ,CAAC,SACnC;QAFkB,WAAK,GAAL,KAAK,CAAmB;QAAS,gBAAU,GAAV,UAAU,CAAY;QAAS,cAAQ,GAAR,QAAQ,CAAwB;;IAEnH,CAAC;IAEM,4DAAkB,GAAzB,UAA0B,aAAyC;QACjE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACjC,iBAAM,iBAAiB,YAAC,aAAa,CAAC,CAAC;IACzC,CAAC;IAEM,6DAAmB,GAA1B,UAA2B,aAAyC;QAClE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACjC,iBAAM,kBAAkB,YAAC,aAAa,CAAC,CAAC;IAC1C,CAAC;IACH,sCAAC;AAAD,CAAC,CAdoD,yCAAmB,GAcvE;AAdY,0EAA+B;;;;;;;;;ACR5C,6CAA6C;;;;;;;;;;;;AAE7C,mDAA+D;AAI/D;IAAmD,iDAAiB;IAClE,uCAAmB,KAAwB,EAAS,UAAsB,EAAS,0BAAmC;QAAtH,YACE,kBAAM,KAAK,EAAE,UAAU,EAAE,0BAA0B,CAAC,SACrD;QAFkB,WAAK,GAAL,KAAK,CAAmB;QAAS,gBAAU,GAAV,UAAU,CAAY;QAAS,gCAA0B,GAA1B,0BAA0B,CAAS;;IAEtH,CAAC;IACH,oCAAC;AAAD,CAAC,CAJkD,qCAAiB,GAInE;AAJY,sEAA6B;;;;;;;ACN1C,yC;;;;;;ACAA,yC;;;;;;;;;ACAA,mCAAqC;AACrC,+BAAgC;AAEhC;;GAEG;AACH;IAKE,cAAY,KAAc,EAAE,EAAgB;QAAhC,iCAAc;QAFlB,kBAAa,GAAG,KAAK,CAAC;QAG5B,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED;;;OAGG;IACI,uBAAQ,GAAf;QACE,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED;;;OAGG;IACI,sBAAO,GAAd;QACE,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;;OAGG;IACI,uBAAQ,GAAf,UAAgB,KAAU;QACxB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;IAED;;;OAGG;IACI,sBAAO,GAAd,UAAe,IAAiB;QAC9B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;IACtB,CAAC;IAED;;;;OAIG;IACI,yBAAU,GAAjB,UAAkB,QAAgB,EAAE,QAAgB;QAClD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,gBAAgB,GAAG,QAAE,CAAC,KAAK,EAAE;YAC/B,SAAS,EAAE,kCAAkC;SAC9C,CAAC,CAAC;QACH,gBAAgB,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC9C,gBAAgB,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC9C,gBAAgB,CAAC,EAAE,CAAC,OAAO,EAAE,UAAC,CAAa;YACzC,CAAC,CAAC,eAAe,EAAE,CAAC;QACtB,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;QAC9C,IAAI,SAAS,GAAG,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC;QAC9E,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,UAAC,CAAc;YAC/B,QAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACf,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACI,4BAAa,GAApB;QACE,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,SAAS,GAAG,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;QAC3E,IAAI,SAAS,EAAE;YACb,QAAE,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,CAAC;SACxB;IACH,CAAC;IAED;;;OAGG;IACI,4BAAa,GAApB,UAAqB,QAAgB;QACnC,IAAI,IAAI,CAAC,aAAa,EAAE;YACtB,IAAI,OAAO,GAAG,QAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;YACzE,OAAO,CAAC,SAAS,IAAI,QAAQ,CAAC;YAC9B,QAAE,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;SACpB;IACH,CAAC;IACH,WAAC;AAAD,CAAC;AAtFY,oBAAI;;;;;;;;;;;;;;;;;;;;ACNjB,yCAA8E;AAE9E,mCAAqC;AACrC,wCAAuC;AAEvC;IAAwD,sDAAQ;IAC9D,4CAAoB,aAAqB,EAAU,MAAc;QAAjE,YACE,iBAAO,SACR;QAFmB,mBAAa,GAAb,aAAa,CAAQ;QAAU,YAAM,GAAN,MAAM,CAAQ;;IAEjE,CAAC;IAED,gEAAmB,GAAnB,UAAoB,MAAqB,EAAE,kBAAgD;QACzF,IAAI,OAAO,GACT,kCAAkC;YAClC,gCAAgC;YAChC,+FAA+F;YAC/F,6CAA6C;YAC7C,QAAQ;YACR,+EAA+E;YAC/E,iCAAiC;YACjC,QAAQ;YACR,iIAAiI;YACjI,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC;YAChF,QAAQ;YACR,QAAQ;YACR,QAAQ,CAAC;QACX,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,iEAAoB,GAApB,UAAqB,MAAqB,EAAE,kBAAgD;QAA5F,iBAIC;QAHC,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;YACjC,OAAO,QAAE,CAAC,KAAK,EAAE,SAAS,EAAE,KAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QACnE,CAAC,CAAC,CAAC;IACL,CAAC;IACH,yCAAC;AAAD,CAAC,CA5BuD,mBAAQ,GA4B/D;AA5BY,gFAAkC;;;;;;;ACL/C,yC;;;;;;ACAA,yC;;;;;;ACAA,yC;;;;;;ACAA,yC;;;;;;ACAA,yC;;;;;;ACAA,yC;;;;;;ACAA,yC;;;;;;;;;;;;;;;;;;;ACAA,yCAAiD;AAGjD;IAA8C,4CAAQ;IACpD;eACE,iBAAO;IACT,CAAC;IAED,sDAAmB,GAAnB,UAAoB,WAA0B;QAC5C,OAAO,4FAA4F,CAAC;IACtG,CAAC;IACH,+BAAC;AAAD,CAAC,CAR6C,mBAAQ,GAQrD;AARY,4DAAwB;;;;;;;;;;ACHrC,0CAAkC;AAClC,qCAA4C;AAE5C,mCAA0C;AAE1C;IAIE;QACE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;IAClC,CAAC;IAED,sBAAW,sDAAiB;aAA5B;YACE,OAAO,IAAI,CAAC,aAAa,CAAC;QAC5B,CAAC;;;OAAA;IAED,sBAAW,6CAAQ;aAAnB;YACE,OAAO,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,QAAQ,CAAC;QACnD,CAAC;;;OAAA;IAED,sBAAW,yCAAI;aAAf;YACE,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QAC5B,CAAC;;;OAAA;IAED,sBAAW,2CAAM;aAAjB;YACE,OAAO,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC;QAC1C,CAAC;;;OAAA;IAEM,wDAAsB,GAA7B;QACE,IAAM,IAAI,GAAG,QAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QACnE,OAAO,IAAI,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,YAAY,CAAC;IAC9D,CAAC;IAEM,wCAAM,GAAb,UAAc,YAA0B,EAAE,KAAa;QAAvD,iBAgBC;QAfC,IAAI,IAAI,CAAC,0BAA0B,EAAE,EAAE;YACrC,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;SAC7B;QAED,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;YACjC,gFAAgF;YAChF,4EAA4E;YAC5E,KAAI,CAAC,aAAa,CAAC,MAAM,GAAG;gBAC1B,OAAO,CAAC,KAAI,CAAC,aAAa,CAAC,CAAC;YAC9B,CAAC,CAAC;YAEF,KAAI,CAAC,kCAAkC,CAAC,YAAY,CAAC,CAAC;YACtD,KAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;YACjC,KAAI,CAAC,aAAa,CAAC,KAAK,GAAG,KAAK,CAAC;QACnC,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,6CAAW,GAAlB,UAAmB,KAAgB;QAAnC,iBAwBC;QAvBC,IAAI,IAAI,CAAC,0BAA0B,EAAE,EAAE;YACrC,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;SAC7B;QAED,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;YACjC,IAAI,YAAY,GAAG,EAAE,CAAC;YACtB,QAAQ,KAAK,CAAC,MAAM,EAAE;gBACpB,KAAK,GAAG;oBACN,YAAY,GAAG,QAAC,CAAC,aAAa,CAAC,CAAC;oBAChC,MAAM;gBACR;oBACE,YAAY,GAAG,QAAC,CAAC,YAAY,CAAC,CAAC;oBAC/B,MAAM;aACT;YAED,IAAM,aAAa,GAAG,QAAQ,CAAC,cAAc,CAAC,kBAAkB,EAAE,CAAC;YACnE,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,uDAAyD,CAAC;YAChG,QAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAE1C,KAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;YAElC,OAAO,CAAC,KAAI,CAAC,aAAa,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,4DAA0B,GAAlC;QACE,OAAO,IAAI,CAAC,aAAa,CAAC,eAAe,IAAI,IAAI,CAAC;IACpD,CAAC;IAEO,6CAAW,GAAnB;QACE,IAAM,MAAM,GAAG,QAAE,CAAC,QAAQ,EAAE;YAC1B,OAAO,EAAE,qDAAqD;YAC9D,GAAG,EAAE,aAAa;SACnB,CAAC,CAAC;QACH,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,EAAuB,CAAC;QAEpD,IAAM,aAAa,GAAG,QAAE,CAAC,KAAK,EAAE;YAC9B,SAAS,EAAE,qBAAqB;SACjC,CAAC,CAAC;QACH,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAEhC,OAAO,aAAa,CAAC;IACvB,CAAC;IAEO,+CAAa,GAArB,UAAsB,YAA0B;QAC9C,IAAI,CAAC,gCAAgC,CAAC,YAAY,CAAC,CAAC;QACpD,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,YAAY,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC5E,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;IAEO,kEAAgC,GAAxC,UAAyC,YAA0B;QACjE,yEAAyE;QACzE,8DAA8D;QAC9D,wDAAwD;QACxD,iBAAI,CAAC,QAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,cAAI;YAC3C,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,oEAAkC,GAA1C,UAA2C,YAA0B;QACnE,IAAM,KAAK,GAAG,QAAE,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,EAAsB,CAAC;QAEvE,qFAAqF;QACrF,mFAAmF;QACnF,mFAAmF;QACnF,mFAAmF;QACnF,oEAAoE;QACpE,EAAE;QACF,mGAAmG;QACnG,IAAM,aAAa,GAAG,8MASnB,CAAC;QAEJ,IAAM,OAAO,GAAG,mPAQZ,kBAAW,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,cACzC,CAAC;QAEJ,IAAI,kBAAW,CAAC,KAAK,EAAE,EAAE;YACvB,QAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YACvD,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,GAAG,aAAa,CAAC;SAC/D;QAED,KAAK,CAAC,WAAW,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;QACpD,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IACH,8BAAC;AAAD,CAAC;AApJY,0DAAuB;;;;;;;;;;ACLpC,mCAA0C;AAG1C;IAGE;QACE,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;IAClC,CAAC;IAEM,yCAAO,GAAd,UAAe,UAAuC;QACpD,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;IACrC,CAAC;IAEO,6CAAW,GAAnB;QACE,IAAM,MAAM,GAAG,QAAE,CAAC,KAAK,EAAE;YACvB,SAAS,EAAE,wBAAwB;SACpC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC;IACH,8BAAC;AAAD,CAAC;AAjBY,0DAAuB;;;;;;;;;;ACHpC,mCAAqC;AACrC,0CAAkC;AAElC,uDAAgE;AAChE,mDAAuD;AAGvD;IAGE,gCAAmB,MAA+B,EAAS,MAAoB;QAA5D,WAAM,GAAN,MAAM,CAAyB;QAAS,WAAM,GAAN,MAAM,CAAc;QAFxE,UAAK,GAA0C,EAAE,CAAC;QAGvD,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAEO,6CAAY,GAApB;QAAA,iBAsBC;QArBC,iBAAI,CAAC,QAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,YAAS,oCAAgB,QAAI,CAAC,EAAE,UAAC,OAAoB,EAAE,KAAa;YACpG,IAAM,aAAa,GAAG,IAAI,6CAAqB,CAAC,KAAI,CAAC,MAAM,CAAC,CAAC;YAC7D,aAAa,CAAC,yCAAyC,CAAC,OAAO,CAAC,CAAC;YAEjE,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE;gBACvB,OAAO;aACR;YAED,IAAM,qBAAqB,GAAG,KAAI,CAAC,KAAK,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;YAExE,IAAI,CAAC,qBAAqB,EAAE;gBAC1B,KAAI,CAAC,KAAK,CAAC,aAAa,CAAC,eAAe,CAAC,GAAG,aAAa,CAAC;aAC3D;iBAAM;gBACL,qBAAqB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;gBAE1C,6FAA6F;gBAC7F,IAAI,qBAAqB,CAAC,UAAU,IAAI,aAAa,CAAC,UAAU,EAAE;oBAChE,qBAAqB,CAAC,IAAI,IAAI,aAAa,CAAC,IAAI,CAAC;iBAClD;aACF;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IACH,6BAAC;AAAD,CAAC;AA9BY,wDAAsB;;;;;;;;;;ACPnC,0CAAwD;AACxD,qCAAyC;AACzC,sCAA2C;AAE3C,mCAAqC;AACrC,mDAAuD;AACvD,4DAA0E;AAE1E;IAaE,+BAAmB,MAAoB;QAApB,WAAM,GAAN,MAAM,CAAc;QAXhC,UAAK,GAAW,CAAC,CAAC;QAKlB,aAAQ,GAAkB,EAAE,CAAC;QAC7B,8BAAyB,GAAG,CAAC,CAAC,CAAC;QAMpC,IAAI,CAAC,MAAM,GAAG,IAAI,eAAM,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAEM,0CAAU,GAAjB,UAAkB,OAAoB;QACpC,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAEM,+CAAe,GAAtB;QACE,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACjC,IAAI,IAAI,CAAC,yBAAyB,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;YAC1D,IAAI,CAAC,yBAAyB,GAAG,CAAC,CAAC;SACpC;QACD,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACvD,CAAC;IAEM,gDAAgB,GAAvB;QACE,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACjC,IAAI,IAAI,CAAC,yBAAyB,GAAG,CAAC,EAAE;YACtC,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;SAC3D;QACD,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACvD,CAAC;IAEM,0CAAU,GAAjB,UAAkB,QAAgB;QAChC,IAAI,CAAC,yBAAyB,GAAG,QAAQ,CAAC;QAC1C,IAAI,IAAI,CAAC,yBAAyB,GAAG,CAAC,IAAI,IAAI,CAAC,yBAAyB,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE;YAChG,IAAI,CAAC,yBAAyB,GAAG,CAAC,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,+CAA6C,QAAU,CAAC,CAAC;SAC3E;QACD,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACvD,CAAC;IAEM,yEAAyC,GAAhD,UAAiD,OAAoB;QACnE,IAAM,MAAM,GAAG,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;QAEpD,IAAI,MAAM,EAAE;YACV,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,iBAAiB,CAAC;YAChD,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,4BAA4B,CAAC;YACtD,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,eAAe,CAAC;YAC5C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAClC,IAAI,CAAC,KAAK,GAAG,IAAI,uDAA0B,CAAC,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;YAE3E,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;SAC1B;IACH,CAAC;IAEM,4CAAY,GAAnB,UAAoB,OAAoB;QACtC,OAAO,OAAO,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,iBAAiB,CAAC;IAC7D,CAAC;IAEO,mDAAmB,GAA3B;QAAA,iBASC;QARC,IAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACrE,IAAM,aAAa,GAAG,oBAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;QAC7D,cAAc,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;QAClD,cAAc,CAAC,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAC3D,aAAa,CAAC,OAAO,CAAC,iBAAO;YAC3B,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC;YACzB,OAAO,CAAC,KAAK,CAAC,eAAe,GAAG,KAAI,CAAC,KAAK,CAAC,SAAS,CAAC;QACvD,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,kDAAkB,GAA1B;QACE,IAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;QAC9D,OAAO,CAAC,cAAc,EAAE,CAAC;IAC3B,CAAC;IAEO,uCAAO,GAAf,UAAgB,OAAoB;QAClC,IAAM,sBAAsB,GAAG,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;QACrE,OAAO,IAAI,CAAC,mBAAmB,CAAC,sBAAsB,CAAC,CAAC;IAC1D,CAAC;IAEO,mDAAmB,GAA3B,UAA4B,SAAiB;QAA7C,iBAgBC;QAfC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE;YACjD,OAAO,SAAS,CAAC;SAClB;QAED,IAAM,KAAK,GAAG,iBAAI,CAAC,iBAAI,CAAC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,UAAC,YAAoB;YAC1E,qFAAqF;YACrF,qCAAqC;YACrC,IAAM,iBAAiB,GAAG,kBAAW,CAAC,qBAAqB,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;YACrF,IAAM,cAAc,GAClB,iBAAI,CAAC,KAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,YAAY,CAAC,EAAE,UAAC,SAAiB,IAAK,yBAAW,CAAC,qBAAqB,CAAC,SAAS,EAAE,SAAS,CAAC,EAAvD,CAAuD,CAAC;gBAChI,SAAS,CAAC;YACZ,OAAO,iBAAiB,IAAI,cAAc,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,OAAO,KAAK,IAAI,SAAS,CAAC;IAC5B,CAAC;IAEO,uDAAuB,GAA/B,UAAgC,OAAoB;QAClD,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE;YAC/B,OAAO,QAAE,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;SACjC;QAED,IAAM,QAAQ,GAAG,QAAE,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAC;QACxC,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE;YACxB,OAAO,QAAE,CAAC,kBAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC;SACzC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;IAEO,sDAAsB,GAA9B,UAA+B,OAAoB;QACjD,IAAM,KAAK,GAAG,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,oCAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;QAErG,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE;YAC/B,OAAO,IAAI,CAAC;SACb;QAED,OAAO;YACL,iBAAiB,EAAE,KAAK,CAAC,CAAC,CAAC;YAC3B,4BAA4B,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YACpD,eAAe,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;SACxC,CAAC;IACJ,CAAC;IACH,4BAAC;AAAD,CAAC;AAvIY,sDAAqB;;;;;;;;;;ACRlC,4CAAoD;AAEpD;IAKE,oCAAmB,SAAiB;QAAjB,cAAS,GAAT,SAAS,CAAQ;QAClC,IAAM,YAAY,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,YAAY,EAAE;YAChB,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACvC,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACvC,IAAI,CAAC,CAAC,GAAG,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;SACxC;IACH,CAAC;IAEM,2CAAM,GAAb;QACE,OAAO,UAAO,GAAG,GAAG,IAAI,CAAC,CAAC,YAAK,GAAG,GAAG,IAAI,CAAC,CAAC,YAAK,GAAG,GAAG,IAAI,CAAC,CAAC,OAAG,CAAC;IAClE,CAAC;IAEM,6CAAQ,GAAf;QACE,IAAM,GAAG,GAAG,uBAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QACxD,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACZ,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE;YACd,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;SACZ;QACD,IAAM,GAAG,GAAG,uBAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACxD,OAAO,SAAO,GAAG,CAAC,CAAC,CAAC,UAAK,GAAG,CAAC,CAAC,CAAC,UAAK,GAAG,CAAC,CAAC,CAAC,MAAG,CAAC;IAChD,CAAC;IACH,iCAAC;AAAD,CAAC;AA3BY,gEAA0B;;;;;;;;;;ACDvC,mCAAqC;AAIrC;IAEE,qCAAmB,IAA2B,EAAS,UAAuC,EAAS,MAA+B;QAAnH,SAAI,GAAJ,IAAI,CAAuB;QAAS,eAAU,GAAV,UAAU,CAA6B;QAAS,WAAM,GAAN,MAAM,CAAyB;QACpI,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;IAC1B,CAAC;IAEM,4CAAM,GAAb;QACE,IAAM,QAAQ,GAAG,QAAE,CAAC,MAAM,EAAE;YAC1B,SAAS,EAAE,0BAA0B;SACtC,CAAC,CAAC;QAEH,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;QAErC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;QAE3C,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;QAE7C,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;QAC9D,QAAQ,CAAC,EAAE,CAAC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;QAE3D,OAAO,QAAQ,CAAC,EAAE,CAAC;IACrB,CAAC;IAEO,+CAAS,GAAjB;QAAA,iBAWC;QAVC,IAAM,IAAI,GAAG,QAAE,CACb,MAAM,EACN;YACE,SAAS,EAAE,+BAA+B;SAC3C,EACE,IAAI,CAAC,IAAI,CAAC,IAAI,UAAK,IAAI,CAAC,IAAI,CAAC,KAAK,MAAG,CACzC,CAAC;QAEF,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,cAAM,YAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAApB,CAAoB,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,8CAAQ,GAAhB,UAAiB,QAAiB;QAChC,IAAI,OAAoB,CAAC;QACzB,IAAI,QAAQ,EAAE;YACZ,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACvC,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC7C;aAAM;YACL,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YACtC,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC5C;QAED,8EAA8E;QAC9E,mFAAmF;QACnF,oEAAoE;QACpE,IAAI,IAAI,CAAC,MAAM,CAAC,sBAAsB,EAAE,EAAE;YACxC,IAAM,GAAG,GAAG,QAAE,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACvC,QAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;SAC5B;QAED,OAAO,CAAC,cAAc,EAAE,CAAC;IAC3B,CAAC;IAEO,iDAAW,GAAnB,UAAoB,SAAwB;QAA5C,iBAaC;QAZC,IAAM,KAAK,GAAG,QAAE,CAAC,MAAM,EAAE;YACvB,SAAS,EAAE,8BAA4B,SAAS,WAAQ;SACzD,CAAC,CAAC;QAEH,IAAM,SAAS,GAAG,QAAE,CAAC,MAAM,EAAE;YAC3B,SAAS,EAAE,8BAA4B,SAAS,gBAAa;SAC9D,CAAC,CAAC;QAEH,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAE3B,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,cAAM,YAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,IAAI,CAAC,EAAhC,CAAgC,CAAC,CAAC;QAC1D,OAAO,KAAK,CAAC;IACf,CAAC;IACH,kCAAC;AAAD,CAAC;AAvEY,kEAA2B;;;;;;;;;;ACHxC,mCAA0C;AAC1C,0CAAkD;AAElD,sCAA2C;AAE3C;IAIE,qCAAmB,MAA+B,EAAS,KAA6B;QAArE,WAAM,GAAN,MAAM,CAAyB;QAAS,UAAK,GAAL,KAAK,CAAwB;QAFjF,mBAAc,GAAgF,IAAI,GAAG,EAAE,CAAC;QAG7G,IAAI,CAAC,MAAM,GAAG,IAAI,eAAM,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAEM,qDAAe,GAAtB,UAAuB,IAA2B;QAChD,IAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClD,IAAI,CAAC,WAAW,EAAE;YAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,oCAAoC,EAAE,IAAI,CAAC,CAAC;YAC7D,OAAO,IAAI,CAAC;SACb;QAED,WAAW,CAAC,QAAQ,EAAE,CAAC;QAEvB,IAAI,WAAW,CAAC,QAAQ,IAAI,WAAW,CAAC,UAAU,CAAC,MAAM,EAAE;YACzD,WAAW,CAAC,QAAQ,GAAG,CAAC,CAAC;SAC1B;QACD,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC/B,OAAO,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IACtD,CAAC;IAEM,sDAAgB,GAAvB,UAAwB,IAA2B;QACjD,IAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClD,IAAI,CAAC,WAAW,EAAE;YAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,wCAAwC,EAAE,IAAI,CAAC,CAAC;YACjE,OAAO,IAAI,CAAC;SACb;QAED,WAAW,CAAC,QAAQ,EAAE,CAAC;QAEvB,IAAI,WAAW,CAAC,QAAQ,GAAG,CAAC,EAAE;YAC5B,WAAW,CAAC,QAAQ,GAAG,WAAW,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;SAC1D;QACD,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC/B,OAAO,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IACtD,CAAC;IAEM,gDAAU,GAAjB,UAAkB,QAAgB,EAAE,IAA2B;QAC7D,IAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClD,IAAI,CAAC,WAAW,EAAE;YAChB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uCAAuC,EAAE,IAAI,CAAC,CAAC;YAChE,OAAO,IAAI,CAAC;SACb;QAED,WAAW,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAEhC,IAAI,WAAW,CAAC,QAAQ,GAAG,CAAC,IAAI,WAAW,CAAC,QAAQ,IAAI,WAAW,CAAC,UAAU,CAAC,MAAM,EAAE;YACrF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,gDAA8C,QAAU,CAAC,CAAC;YAC3E,WAAW,CAAC,QAAQ,GAAG,CAAC,CAAC;SAC1B;QACD,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC/B,OAAO,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IACtD,CAAC;IAEO,yDAAmB,GAA3B,UAA4B,IAA2B;QAAvD,iBAUC;QATC,IAAM,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClD,IAAM,cAAc,GAAG,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAEpE,IAAM,aAAa,GAAG,oBAAO,CAAC,WAAW,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;QAEtE,cAAc,CAAC,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAC3D,cAAc,CAAC,KAAK,CAAC,MAAM,GAAG,eAAa,IAAI,CAAC,KAAK,CAAC,MAAM,EAAI,CAAC;QAEjE,aAAa,CAAC,OAAO,CAAC,iBAAO,IAAI,YAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,IAAI,CAAC,EAArC,CAAqC,CAAC,CAAC;IAC1E,CAAC;IAEO,sDAAgB,GAAxB;QAAA,iBA6BC;QA5BC,IAAM,UAAU,GAAG,QAAE,CAAC,KAAK,CAAC,CAAC;QAE7B,UAAU,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;QACnC,UAAU,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,GAAG,OAAO,CAAC;QACvC,UAAU,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC;QAC9B,UAAU,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;QAClC,UAAU,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QAEpC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAE5C,iBAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,cAAI;YACzB,iBAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,iBAAO;gBACzB,IAAM,SAAS,GAAG,KAAI,CAAC,2BAA2B,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;gBAErE,IAAI,KAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;oBACjC,KAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;iBAC1D;qBAAM;oBACL,KAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,EAAE;wBAC5B,UAAU,EAAE,CAAC,SAAS,CAAC;wBACvB,QAAQ,EAAE,CAAC,CAAC;qBACb,CAAC,CAAC;iBACJ;gBAED,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAC/B,CAAC,CAAC,CAAC;YAEH,KAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,iEAA2B,GAAnC,UAAoC,OAAoB,EAAE,IAA2B;QACnF,IAAM,SAAS,GAAG,IAAI,SAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAC;QACzD,IAAM,eAAe,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC,GAAG,CAAC;QAE5D,IAAM,WAAW,GAAG,QAAE,CAAC,KAAK,CAAC,CAAC;QAC9B,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;QAC3C,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,GAAM,eAAe,GAAG,SAAS,GAAG,GAAG,MAAG,CAAC;QACnE,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;QACpC,WAAW,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,CAAC;QACpC,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAC7C,OAAO,WAAW,CAAC;IACrB,CAAC;IAEO,uDAAiB,GAAzB,UAA0B,OAAoB,EAAE,IAA2B;QACzE,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,eAAa,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAI,CAAC;QAC5D,OAAO,CAAC,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;IACvD,CAAC;IAEO,iEAA2B,GAAnC,UAAoC,IAA2B;QAC7D,IAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC;gCAEtD,CAAC;YACR,IAAM,sCAAsC,GAAG,kBAAK,CAAC,aAAa,CAAC;iBAChE,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;iBACzB,IAAI,CAAC,wBAAc,IAAI,qBAAc,CAAC,KAAK,CAAC,GAAG,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAtD,CAAsD,CAAC;iBAC9E,KAAK,EAAE,CAAC;YAEX,IAAI,sCAAsC,EAAE;gBAC1C,QAAE,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;gBAC9B,aAAa,CAAC,CAAC,CAAC,GAAG,sCAAsC,CAAC;aAC3D;QACH,CAAC;QAVD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE;oBAApC,CAAC;SAUT;IACH,CAAC;IACH,kCAAC;AAAD,CAAC;AAtIY,kEAA2B;;;;;;;;;;ACPxC,4DAA+H;AAC/H,2DAAwE;AACxE,gDAAqE;AACrE,qCAA0C;AAC1C,mCAA0C;AAC1C,sCAA2C;AAC3C,gDAAkE;AAClE,+DAAmG;AACnG,0DAAyF;AACzF,oDAA6E;AAC7E,uCAA0C;AAC1C,yCAA8C;AAC9C,uDAAqD;AACrD,4CAAoG;AACpG,+BAAgC;AAEhC,yBAA2C;AAC3C,4CAA0C;AAE1C;IAwCE,kCACS,SAAc,EACd,EAAU,EACjB,OAAoC,EAC7B,kBAAuC;QAHvC,cAAS,GAAT,SAAS,CAAK;QACd,OAAE,GAAF,EAAE,CAAQ;QAEV,uBAAkB,GAAlB,kBAAkB,CAAqB;QAE9C,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QACvD,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC;QACvD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC;QAC3D,IAAI,CAAC,eAAe,GAAoB,qBAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,iCAAe,EAAE,KAAK,CAAC,CAAC;QACjG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;QACvD,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;IA5Ca,6BAAI,GAAlB,UAAmB,IAAiB,EAAE,SAAS,EAAE,OAAoC;QACnF,IAAI,MAAM,GAAG,IAAI,eAAM,CAAC,0BAA0B,CAAC,CAAC;QACpD,IAAI,SAAS,GAAG,IAAI,CAAC,uCAAuC,CAAC,IAAI,CAAC,CAAC;QACnE,IAAI,CAAC,SAAS,EAAE;YACd,MAAM,CAAC,IAAI,CAAC,iGAAiG,CAAC,CAAC;YAC/G,OAAO;SACR;QAED,IAAI,CAAC,QAAE,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,EAAE;YAChD,MAAM,CAAC,IAAI,CAAC,oGAAoG,CAAC,CAAC;YAClH,OAAO;SACR;QAED,yDAA2B,CAAC,QAAQ,CAClC,wBAAwB,EACxB,QAAE,CAAC,SAAS,CAAC,EACb,+BAAc,CAAC,EAAE,EACjB,SAAS,EACT,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,uBAAuB,EAAE,QAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAC7D,CAAC;IACJ,CAAC;IAEc,gEAAuC,GAAtD,UAAuD,IAAiB;QACtE,IAAI,SAAS,GAAG,QAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,qBAAS,CAAC,mBAAmB,CAAC,iCAAe,CAAC,CAAC,CAAC;QACjF,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE;YAChB,OAAO,QAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;SACzB;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAkBM,oDAAiB,GAAxB;QACE,IAAI,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,qDAAyB,CAAC,8BAA8B,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YACrG,IAAI,CAAC,iBAAiB,EAAE,CAAC;SAC1B;aAAM,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,qDAAyB,CAAC,8BAA8B,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YAC5G,IAAI,CAAC,iBAAiB,EAAE,CAAC;SAC1B;QAED,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE;YAC1B,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,gBAAgB,EAAE,CAAC;SAClD;IACH,CAAC;IAEM,sDAAmB,GAA1B;QACE,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;IAC9B,CAAC;IAEO,gDAAa,GAArB;QACE,IAAM,4BAA4B,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC;QAC/E,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACzB,OAAO,4BAA4B,CAAC;SACrC;QAED,QAAQ,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC,iBAAiB,EAAE,EAAE;YACrE,KAAK,OAAO;gBACV,OAAO,IAAI,CAAC;YACd,KAAK,MAAM;gBACT,OAAO,4BAA4B,CAAC;YACtC;gBACE,OAAO,KAAK,CAAC;SAChB;IACH,CAAC;IAEO,oDAAiB,GAAzB;QAAA,iBAaC;QAZC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,IAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAI,yDAA2B,CAAC,iCAAmC,CAAC,CAAC;QACxG,IAAI,CAAC,MAAM,EAAE;YACX,6FAA6F;YAC7F,oDAAoD;YACpD,mBAAK,CAAC,KAAK,CAAC,cAAM,YAAI,CAAC,iBAAiB,EAAE,EAAxB,CAAwB,CAAC,CAAC;SAC7C;aAAM;YACL,QAAE,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC3D,IAAI,CAAC,4BAA4B,EAAE,CAAC;YACpC,qDAAyB,CAAC,2BAA2B,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACtE,qDAAyB,CAAC,2BAA2B,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;SAChF;IACH,CAAC;IAEO,oDAAiB,GAAzB;QACE,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACnC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QACxB,qDAAyB,CAAC,6BAA6B,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACxE,qDAAyB,CAAC,6BAA6B,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IACnF,CAAC;IAEO,gDAAa,GAArB,UAAsB,kBAAuC;QAC3D,IAAI,eAAe,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAClD,IAAI,cAAc,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAChD,IAAI,QAAQ,GAAG,kBAAkB,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,uCAAkB,CAAC,eAAe,EAAE,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACjI,QAAQ,CAAC,sBAAsB,EAAE,CAAC;QAClC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEO,sDAAmB,GAA3B;QACE,IAAI,qBAAqB,GAAG,QAAE,CAAC,GAAG,CAAC,CAAC;QACpC,IAAI,OAAO,GAAG,QAAE,CAAC,GAAG,CAAC,CAAC;QACtB,OAAO,CAAC,IAAI,CAAC,WAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC;QAC1C,qBAAqB,CAAC,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACjD,IAAI,cAAc,GAAG,IAAI,mDAAwB,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,CAAC;QAC3F,OAAO,cAAc,CAAC;IACxB,CAAC;IAEO,uDAAoB,GAA5B;QACE,IAAI,sBAA2B,CAAC;QAChC,IAAI,oBAAoB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;QAC/E,IAAI,oBAAoB,EAAE;YACxB,sBAAsB,GAAG,QAAE,CAAC,oBAAoB,CAAC,CAAC;SACnD;aAAM;YACL,sBAAsB,GAAG,QAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,GAAG,qBAAS,CAAC,mBAAmB,CAAC,+BAAc,CAAC,CAAC,CAAC,CAAC;SACvG;QAED,IAAI,eAAe,GAAG,IAAI,6DAA6B,CAAC,gBAAgB,EAAE,sBAAsB,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAClH,OAAO,eAAe,CAAC;IACzB,CAAC;IAEO,6DAA0B,GAAlC,UAAmC,OAAoC;QACrE,IAAI,UAAU,CAAC;QACf,IAAI,aAAK,CAAC,iBAAiB,CAAC,OAAO,CAAC,oBAAoB,CAAC,EAAE;YACzD,UAAU,GAAG,wBAAwB,CAAC,qBAAqB,CAAC;SAC7D;aAAM;YACL,UAAU,GAAG,OAAO,CAAC,oBAAoB,CAAC;SAC3C;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IAEO,kDAAe,GAAvB;QACE,IAAM,YAAY,GAAG,EAAE,CAAC;QACxB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,qBAAS,CAAC,sBAAsB,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,4BAAkB;YAChG,IAAM,WAAW,GAAG,qBAAS,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YACtD,WAAW,IAAI,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;QACH,OAAO,YAAY,CAAC;IACtB,CAAC;IAEO,4CAAS,GAAjB;QACE,IAAM,MAAM,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,qBAAS,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,sBAAY;YACpF,IAAM,KAAK,GAAG,qBAAS,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YAC1C,KAAK,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,8DAA2B,GAAnC;QACE,IAAI,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,eAAK,IAAI,QAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,EAAvC,CAAuC,CAAC,CAAC;IAC7E,CAAC;IAEO,+DAA4B,GAApC;QACE,IAAI,CAAC,SAAS,EAAE,CAAC,OAAO,CAAC,eAAK,IAAI,QAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,GAAG,KAAK,CAAC,EAAxC,CAAwC,CAAC,CAAC;IAC9E,CAAC;IAEO,wDAAqB,GAA7B;QACE,IAAI,CAAC,eAAe,EAAE,CAAC,OAAO,CAAC,qBAAW,IAAI,kBAAW,CAAC,oBAAoB,EAAE,EAAlC,CAAkC,CAAC,CAAC;IACpF,CAAC;IAEO,wDAAqB,GAA7B;QACE,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC;IACxE,CAAC;IAEO,wDAAqB,GAA7B;QACE,OAAO,QAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,GAAG,qBAAS,CAAC,mBAAmB,CAAC,+BAAc,CAAC,CAAC,CAAC,CAAC;IACtF,CAAC;IAEO,sDAAmB,GAA3B;QAAA,iBAOC;QANC,IAAI,sBAAsB,GAAmB,4BAAG,CAAC,IAAI,CAAC,kBAAkB,CAAC,EAAE,EAAE,iCAAe,CAAC,CAAC;QAC9F,IAAI,sBAAsB,IAAI,sBAAsB,CAAC,OAAO,CAAC,eAAe,EAAE;YAC5E,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,yBAAW,CAAC,YAAY,EAAE,UAAC,CAAQ,EAAE,IAA4B,IAAK,YAAI,CAAC,gCAAgC,CAAC,IAAI,CAAC,EAA3C,CAA2C,CAAC,CAAC;YACrI,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,yBAAW,CAAC,SAAS,EAAE,UAAC,CAAQ,EAAE,IAAyB,IAAK,YAAI,CAAC,6BAA6B,EAAE,EAApC,CAAoC,CAAC,CAAC;SACzH;QACD,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,yBAAW,CAAC,UAAU,EAAE,cAAM,YAAI,CAAC,8BAA8B,EAAE,EAArC,CAAqC,CAAC,CAAC;IACzF,CAAC;IAEO,mEAAgC,GAAxC,UAAyC,IAA4B;QACnE,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,KAAK,CAAC,EAAE;YACjC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YACtB,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;SACrC;aAAM;YACL,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;SACrC;IACH,CAAC;IAEO,gEAA6B,GAArC;QACE,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;IACtC,CAAC;IAEO,iEAA8B,GAAtC;QACE,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;IACtC,CAAC;IArNa,0DAAiC,GAAW,yCAAyC,CAAC;IACtF,8CAAqB,GAAG,IAAI,CAAC;IAqN7C,+BAAC;CAAA;AAvNY,4DAAwB;;;;;;;;;;ACnBrC,0DAAoG;AACpG,mCAA6C;AAE7C;IAKE,uCAAY,aAAqB,EAAS,OAAY,EAAU,SAAc;QAApC,YAAO,GAAP,OAAO,CAAK;QAAU,cAAS,GAAT,SAAS,CAAK;QAC5E,IAAI,CAAC,YAAY,GAAG,WAAS,aAAa,sBAAmB,CAAC;QAC9D,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACzC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,qDAAyB,CAAC,sBAAsB,CAAC,CAAC;IAC1E,CAAC;IAEM,wDAAgB,GAAvB;QACE,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;QAEnC,IAAI,sBAAsB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAC1E,QAAE,CAAC,sBAAsB,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,qDAAyB,CAAC,sBAAsB,CAAC,CAAC;QACxE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAEzC,+EAA+E;QAC/E,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC;QAEnD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,6BAA6B,CAAC,8BAA8B,CAAC,CAAC;IACtF,CAAC;IAEM,oDAAY,GAAnB;QACE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,qDAAyB,CAAC,sBAAsB,CAAC,CAAC;QACxE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAEzC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,6BAA6B,CAAC,8BAA8B,CAAC,CAAC;IACzF,CAAC;IAEM,+CAAO,GAAd;QACE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC5C,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,qDAAyB,CAAC,sBAAsB,CAAC,CAAC;IAC7E,CAAC;IAlCa,4DAA8B,GAAG,6BAA6B,CAAC;IAmC/E,oCAAC;CAAA;AApCY,sEAA6B;;;;;;;ACH1C,yC;;;;;;;;;;;;;;;;;;;ACAA,yCAA8C;AAC9C,gDAA4D;AAE5D,qCAA0C;AAC1C,4CAAgF;AAChF,8CAAwD;AACxD,mCAAqC;AACrC,+BAAgC;AAIhC;IAAyC,uCAAS;IAWhD,6BAAmB,OAAoB,EAAS,OAAqC,EAAE,QAA6B;QAApH,YACE,kBAAM,OAAO,EAAE,mBAAmB,CAAC,EAAE,EAAE,QAAQ,CAAC,SAajD;QAdkB,aAAO,GAAP,OAAO,CAAa;QAAS,aAAO,GAAP,OAAO,CAA8B;QAEnF,KAAI,CAAC,OAAO,GAAG,mCAAgB,CAAC,oBAAoB,CAAC,OAAO,EAAE,mBAAmB,EAAE,OAAO,CAAC,CAAC;QAE5F,IAAI,KAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,QAAQ,EAAE;YACnD,IAAI;gBACF,KAAI,CAAC,OAAO,GAAG,aAAK,CAAC,kBAAkB,CAAC,QAAE,CAAC,KAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;aAClE;YAAC,OAAO,CAAC,EAAE;;aAEX;YACD,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,KAAI,CAAC,OAAO,CAAC,IAAI,KAAI,CAAC,OAAO,IAAI,EAAE,EAAE;gBACtD,KAAI,CAAC,IAAI,CAAC,aAAa,CAAC,yBAAW,CAAC,aAAa,EAAE,KAAI,CAAC,mBAAmB,CAAC,CAAC;aAC9E;SACF;;IACH,CAAC;IAEO,iDAAmB,GAA3B,UAA4B,IAA6B;QACvD,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACzD,CAAC;IA5BM,sBAAE,GAAG,qBAAqB,CAAC;IAElC;;;OAGG;IACI,2BAAO,GAAgC,EAAE,CAAC;IAuBnD,0BAAC;CAAA,CA9BwC,qBAAS,GA8BjD;AA9BY,kDAAmB;AAgChC,+BAAc,CAAC,2BAA2B,CAAC,mBAAmB,CAAC,CAAC;;;;;;;AC3ChE,yC;;;;;;ACAA,yC;;;;;;;;;;;;;;;;;;;ACAA,yCAAiD;AAGjD;IAAqD,mDAAQ;IAC3D;eACE,iBAAO;IACT,CAAC;IAED,6DAAmB,GAAnB,UAAoB,WAA0B;QAC5C,OAAO,iHAAiH,CAAC;IAC3H,CAAC;IACH,sCAAC;AAAD,CAAC,CARoD,mBAAQ,GAQ5D;AARY,0EAA+B;;;;;;;ACH5C,yC;;;;;;;;;;;;;;;;;;;ACAA,yCAAiD;AAGjD;IAA4C,0CAAQ;IAClD;eACE,iBAAO;IACT,CAAC;IAED,oDAAmB,GAAnB,UAAoB,WAA0B;QAC5C,OAAO,8JAA8J,CAAC;IACxK,CAAC;IAED,wCAAO,GAAP;QACE,OAAO,wBAAwB,CAAC;IAClC,CAAC;IACH,6BAAC;AAAD,CAAC,CAZ2C,mBAAQ,GAYnD;AAZY,wDAAsB;;;;;;;ACHnC,yC;;;;;;ACAA,yC;;;;;;;;;ACAA,0CAAsD;AACtD,sCAA2C;AAC3C,mCAA0C;AAC1C,yCAA8C;AAC9C,sDAAoF;AAEpF,gDAAqE;AACrE,4DAA+H;AAG/H;IAaE,gCAAmB,SAAc,EAAS,EAAU,EAAE,OAAoC,EAAE,kBAAuC;QAAnI,iBAKC;QALkB,cAAS,GAAT,SAAS,CAAK;QAAS,OAAE,GAAF,EAAE,CAAQ;QAClD,IAAI,CAAC,eAAe,GAAoB,qBAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,iCAAe,EAAE,KAAK,CAAC,CAAC;QACjG,SAAS,CAAC,EAAE,CAAC,gBAAgB,EAAE;YAC7B,KAAI,CAAC,iBAAiB,EAAE,CAAC;QAC3B,CAAC,CAAC,CAAC;IACL,CAAC;IAda,2BAAI,GAAlB,UAAmB,IAAiB,EAAE,SAA+B,EAAE,OAAoC;QACzG,IAAI,CAAC,QAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAI,qBAAS,CAAC,mBAAmB,CAAC,2CAAoB,CAAG,CAAC,EAAE;YAC7E,IAAI,MAAM,GAAG,IAAI,eAAM,CAAC,wBAAwB,CAAC,CAAC;YAClD,MAAM,CAAC,KAAK,CAAC,6EAA6E,CAAC,CAAC;YAC5F,OAAO;SACR;QACD,yDAA2B,CAAC,QAAQ,CAAC,sBAAsB,EAAE,QAAE,CAAC,IAAI,CAAC,EAAE,2CAAoB,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IACtH,CAAC;IASM,kDAAiB,GAAxB,UAAyB,MAAiB;QACxC,IAAI,MAAM,YAAY,2CAAoB,EAAE;YAC1C,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;YAC3B,OAAO,IAAI,CAAC;SACb;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,kDAAiB,GAAxB;QACE,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;YACxB,IAAI,CAAC,uBAAuB,CAAgB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;SACtF;aAAM,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;YAChC,IAAI,CAAC,uBAAuB,CAAgB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;SACtF;aAAM;YACL,IAAI,CAAC,uBAAuB,CAAgB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;SACvF;IACH,CAAC;IAEO,wDAAuB,GAA/B,UAAgC,YAA2B;QACzD,IAAM,gBAAgB,GAAG,uBAAU,CAAM,2CAAoB,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;QAC1F,IAAM,eAAe,GAAG,yBAAY,CAAM,2CAAoB,CAAC,YAAY,EAAE,YAAY,CAAC,CAAC;QAC3F,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;QACnD,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;IACnD,CAAC;IAEO,8CAAa,GAArB;QACE,QAAQ,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC,iBAAiB,EAAE,EAAE;YACrE,KAAK,OAAO;gBACV,OAAO,IAAI,CAAC;YACd,KAAK,MAAM;gBACT,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC,mBAAmB,EAAE,CAAC;YACnG;gBACE,OAAO,KAAK,CAAC;SAChB;IACH,CAAC;IAEO,+CAAc,GAAtB;QACE,QAAQ,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC,iBAAiB,EAAE,EAAE;YACrE,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC;YACd,KAAK,MAAM;gBACT,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC,oBAAoB,EAAE,CAAC;YACpG;gBACE,OAAO,KAAK,CAAC;SAChB;IACH,CAAC;IACH,6BAAC;AAAD,CAAC;AAlEY,wDAAsB;;;;;;;ACVnC,yC;;;;;;ACAA,yC;;;;;;ACAA,yC;;;;;;ACAA,yC;;;;;;ACAA,yC;;;;;;ACAA,yC;;;;;;;;;;;;;;;;;;;ACAA,yCAA8C;AAC9C,gDAA4D;AAE5D,kDAKwC;AACxC,4CAAuD;AACvD,8CAAuF;AACvF,4CAAsG;AACtG,uCAA0C;AAC1C,mCAA0C;AAC1C,+BAAgC;AAEhC,yCAAgD;AAChD,uCAA4C;AAM5C;;;;;GAKG;AACH;IAAyC,uCAAS;IAmBhD;;;;;;OAMG;IACH,6BAAmB,OAAoB,EAAS,OAAmC,EAAS,QAA6B;QAAzH,YACE,kBAAM,OAAO,EAAE,mBAAmB,CAAC,EAAE,EAAE,QAAQ,CAAC,SAMjD;QAPkB,aAAO,GAAP,OAAO,CAAa;QAAS,aAAO,GAAP,OAAO,CAA4B;QAAS,cAAQ,GAAR,QAAQ,CAAqB;QAGvH,KAAI,CAAC,IAAI,CAAC,aAAa,CAAC,sCAAkB,CAAC,mBAAmB,EAAE,UAAC,IAA4B,IAAK,YAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,EAApC,CAAoC,CAAC,CAAC;QACxI,KAAI,CAAC,IAAI,CAAC,cAAc,CAAC,sCAAkB,CAAC,gBAAgB,EAAE,UAAC,IAA4B,IAAK,YAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,EAAjC,CAAiC,CAAC,CAAC;QACnI,KAAI,CAAC,IAAI,CAAC,cAAc,CAAC,sCAAkB,CAAC,mBAAmB,EAAE,cAAM,YAAI,CAAC,KAAK,EAAE,EAAZ,CAAY,CAAC,CAAC;QACrF,KAAI,CAAC,IAAI,CAAC,cAAc,CAAC,yBAAW,CAAC,QAAQ,EAAE,cAAM,YAAI,CAAC,KAAK,EAAE,EAAZ,CAAY,CAAC,CAAC;;IACrE,CAAC;IAEM,yCAAW,GAAlB;QACE,OAAO,8BAA8B,CAAC;IACxC,CAAC;IAEM,mDAAqB,GAA5B,UAA6B,KAAc,EAAE,aAAqB;QAAlE,iBAkCC;QAlC4C,qDAAqB;QAChE,IAAI,wBAAwB,GAA0C;YACpE,IAAI,EAAE,EAAE;SACT,CAAC;QAEF,IAAI,0BAA0B,GAAG;YAC/B,OAAO,CAAC,CAAC,GAAG,CAAC,wBAAwB,CAAC,IAAI,EAAE,cAAI;gBAC9C,IAAI,GAAG,KAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,CAAC;gBAC7C,OAAO,MAAG,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,IAAG,IAAI,IAAG,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAE,CAAC;YAClF,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACf,CAAC,CAAC;QAEF,QAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,sCAAkB,CAAC,2BAA2B,EAAE,wBAAwB,CAAC,CAAC;QAChG,IAAI,iBAAiB,GAAG,MAAG,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,IAAG,0BAA0B,EAAE,IAAG,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAE,CAAC;QAEvH,IAAI,yBAAiC,CAAC;QAEtC,IAAI,KAAK,IAAI,wBAAwB,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;YACtD,yBAAyB,GAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,SAAI,iBAAmB,CAAC;SACvE;QAED,IAAI,KAAK,IAAI,wBAAwB,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;YACtD,yBAAyB,GAAG,KAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAG,CAAC;SAClD;QAED,IAAI,CAAC,KAAK,IAAI,wBAAwB,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;YACvD,yBAAyB,GAAG,KAAG,iBAAmB,CAAC;SACpD;QAED,IAAI,CAAC,KAAK,IAAI,wBAAwB,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;YACvD,yBAAyB,GAAG,aAAa,CAAC,CAAC,CAAC,WAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAC,CAAC,YAAY,CAAC,CAAC,CAAC;SAC3F;QAED,OAAO,yBAAyB,CAAC;IACnC,CAAC;IAED;;;;;OAKG;IACI,yCAAW,GAAlB,UAAmB,GAAQ,EAAE,OAAe,EAAE,KAAc;QAA5D,iBAoCC;QAnCC,IAAI,CAAC,OAAO,GAAG,QAAE,CAAC,KAAK,EAAE;YACvB,SAAS,EAAE,8BAA8B;SAC1C,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,SAAS,GAAG,iIAEkC,OAAO,oFACV,mBAAQ,CAAC,KAAK,CAAC,yBAAyB,yBAC1F,CAAC;QAEV,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAAC;QACtE,IAAI,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;QAChF,eAAM,CAAC,wBAAwB,CAAC,WAAW,EAAE,yCAAyC,CAAC,CAAC;QACxF,QAAE,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,cAAM,YAAI,CAAC,KAAK,EAAE,EAAZ,CAAY,CAAC,CAAC;QAEhD,uBAAU,CAAC,aAAa,CACtB,IAAI,CAAC,OAAO,CAAC,EAAE,EACf,GAAG,CAAC,EAAE,EACN,IAAI,CAAC,IAAI,EACT;YACE,UAAU,EAAE,qCAAwB,CAAC,SAAS;YAC9C,QAAQ,EAAE,mCAAsB,CAAC,MAAM;YACvC,cAAc,EAAE,EAAE;YAClB,cAAc,EAAE,IAAI;SACrB,EACD,IAAI,CAAC,IAAI,CACV,CAAC;QAEF,IAAI,CAAC,eAAe,EAAE,CAAC;QAEvB,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,YAAY,EAAE;YAC5B,KAAI,CAAC,eAAe,EAAE,CAAC;QACzB,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,YAAY,EAAE;YAC5B,KAAI,CAAC,cAAc,EAAE,CAAC;QACxB,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,wDAA0B,GAAlC,UAAmC,IAA+C;QAChF,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YACpB,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;SACvB;aAAM,IAAI,IAAI,CAAC,WAAW,EAAE;YAC3B,IAAI,GAAG,6CAA6C,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC;SACzF;aAAM;YACL,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC7B;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,uDAAyB,GAAjC,UAAkC,IAA4B;QAC5D,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE;YACpB,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,gCAAiB,CAAC,WAAW,EAAE;gBAC3D,IAAI,UAAU,GAA8B,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC;gBACzE,IAAI,CAAC,WAAW,CAAC,QAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,WAAC,CAAC,iCAAiC,EAAE,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;aACnI;iBAAM;gBACL,IAAI,CAAC,WAAW,CAAC,QAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,WAAC,CAAC,4BAA4B,CAAC,EAAE,KAAK,CAAC,CAAC;aACxE;SACF;IACH,CAAC;IAEO,oDAAsB,GAA9B,UAA+B,IAAgC;QAC7D,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE;YACpB,IAAI,CAAC,WAAW,CAAC,QAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,WAAC,CAAC,mBAAmB,CAAC,EAAE,IAAI,CAAC,CAAC;SAC9D;IACH,CAAC;IAEO,6CAAe,GAAvB;QAAA,iBAKC;QAJC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAChC,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC;YACpC,KAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IAC9B,CAAC;IAEO,4CAAc,GAAtB;QACE,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAClC,CAAC;IAEO,mCAAK,GAAb;QACE,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,EAAE;YACxB,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAChC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACtB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;SACrB;IACH,CAAC;IArKM,sBAAE,GAAG,uBAAuB,CAAC;IAEpC;;;OAGG;IACI,2BAAO,GAA+B;QAC3C;;;;WAIG;QACH,UAAU,EAAE,mCAAgB,CAAC,iBAAiB,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;KAC/E,CAAC;IAyJJ,0BAAC;CAAA,CAvKwC,qBAAS,GAuKjD;AAvKY,kDAAmB;;;;;;;AC7BhC,yC;;;;;;;;;ACAA,mCAA2B;AAE3B;IAAA;IAyCA,CAAC;IAxCe,sBAAM,GAApB,UAAqB,OAAoB,EAAE,IAAY;QAAvD,iBAiBC;QAhBC,IAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;QAC7C,IAAM,eAAe,GAAkB,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;QACzE,IAAM,aAAa,GAAgB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAE1D,IAAM,cAAc,GAAG,aAAW,IAAI,yBAAoB,IAAI,QAAK,CAAC;QACpE,IAAM,gBAAgB,GAAG,aAAW,IAAI,OAAI,CAAC;QAE7C,+IAA+I;QAC/I,IAAM,kBAAkB,GAAG,cAAW,IAAI,GAAG,CAAC,SAAK,CAAC;QAEpD,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QAC3C,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC;QAEnD,eAAe,CAAC,OAAO,CAAC,qBAAW;YACjC,KAAI,CAAC,UAAU,CAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;IACL,CAAC;IAEc,0BAAU,GAAzB,UAA0B,OAAoB,EAAE,KAAa;QAC3D,OAAO,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC;IACjC,CAAC;IAEc,4BAAY,GAA3B,UAA4B,OAAoB;QAC9C,OAAO,QAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,QAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACjF,CAAC;IAEc,mCAAmB,GAAlC,UAAmC,OAAoB;QACrD,OAAO;YACL,QAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC;YACtC,QAAE,CAAC,QAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;YACtD,QAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC;YACnC,QAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC;YACpC,QAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC;SACxC,CAAC;IACJ,CAAC;IAEc,wBAAQ,GAAvB,UAAwB,OAAoB;QAC1C,OAAO,QAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC9C,CAAC;IACH,sBAAC;AAAD,CAAC;AAzCY,0CAAe;;;;;;;ACF5B,yC;;;;;;ACAA,yC;;;;;;ACAA,yC;;;;;;;;;ACAA,yBAAiC;AACjC,0CAAgD;AAChD,qDAAyE;AACzE,sCAA2C;AAC3C,uCAA0C;AAC1C,mCAA0C;AAC1C,6CAAsD;AACtD,uCAA4C;AAC5C,yCAAgD;AAChD,qCAA0C;AAC1C,yCAA8C;AAC9C,gDAAqE;AACrE,qCAAiC;AACjC,qDAA8D;AAC9D,4DAA+H;AAC/H,2DAAwE;AACxE,iDAAgE;AAChE,0CAA+B;AAC/B,8CAAoE;AAEpE;IAiBE,wBAAoB,SAAc,EAAS,EAAU;QAAjC,cAAS,GAAT,SAAS,CAAK;QAAS,OAAE,GAAF,EAAE,CAAQ;QAF7C,4BAAuB,GAAG,KAAK,CAAC;QAGtC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,sBAAsB,EAAE,CAAC;QACzD,IAAI,CAAC,eAAe,GAAoB,qBAAS,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,iCAAe,EAAE,KAAK,CAAC,CAAC;QACjG,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QACnD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACjD,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACjC,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAChC,IAAI,CAAC,UAAU,GAAG,QAAE,CAAc,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC;QAC7E,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,CAAC,eAAe,GAAO,IAAI,CAAC,gBAAgB,QAAC,CAAC;IACpD,CAAC;IAEa,mBAAI,GAAlB,UAAmB,IAAiB,EAAE,SAAoB,EAAE,OAAoC;QAC9F,IAAI,CAAC,MAAM,GAAG,IAAI,eAAM,CAAC,gBAAgB,CAAC,CAAC;QAC3C,IAAI,CAAC,QAAE,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,EAAE;YACxC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,6EAA6E,CAAC,CAAC;YAChG,OAAO;SACR;QACD,yDAA2B,CAAC,QAAQ,CAAC,cAAc,EAAE,QAAE,CAAC,IAAI,CAAC,EAAE,SAAG,CAAC,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAC7F,CAAC;IAEM,0CAAiB,GAAxB;QACE,IAAI,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,qDAAyB,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YAC3F,IAAI,CAAC,iBAAiB,EAAE,CAAC;SAC1B;aAAM,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,qDAAyB,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YAClG,IAAI,CAAC,iBAAiB,EAAE,CAAC;SAC1B;QAED,IAAI,IAAI,CAAC,uBAAuB,EAAE,EAAE;YAClC,IAAI,CAAC,iBAAiB,EAAE,CAAC;SAC1B;aAAM,IAAI,IAAI,CAAC,4BAA4B,EAAE,EAAE;YAC9C,IAAI,CAAC,sBAAsB,EAAE,CAAC;SAC/B;QAED,IAAI,IAAI,CAAC,cAAc,EAAE,EAAE;YACzB,IAAI,CAAC,aAAa,EAAE,CAAC;SACtB;IACH,CAAC;IAEO,sCAAa,GAArB;QACE,uDAAuD;QACvD,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;YACzB,OAAO,IAAI,CAAC,4BAA4B,EAAE,CAAC;SAC5C;QACD,QAAQ,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC,iBAAiB,EAAE,EAAE;YACrE,KAAK,OAAO,CAAC;YACb,KAAK,QAAQ;gBACX,OAAO,IAAI,CAAC;YACd,KAAK,MAAM,CAAC;YACZ;gBACE,OAAO,IAAI,CAAC,4BAA4B,EAAE,CAAC;SAC9C;IACH,CAAC;IAEO,qDAA4B,GAApC;QACE,IAAM,WAAW,GAAG,IAAI,CAAC,eAAe;YACtC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,oBAAoB,CAAC,oBAAoB,EAAE;YAClE,CAAC,CAAC,IAAI,2CAAoB,EAAE,CAAC,oBAAoB,EAAE,CAAC;QACtD,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,WAAW,EAAE;YACzC,OAAO,IAAI,CAAC;SACb;aAAM,IAAI,CAAC,qDAAyB,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE;YAC1E,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;SAC/C;aAAM;YACL,OAAO,IAAI,CAAC,wBAAwB,EAAE,CAAC;SACxC;IACH,CAAC;IAEO,0CAAiB,GAAzB;QACE,qDAAyB,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC9D,CAAC;IAEO,0CAAiB,GAAzB;QACE,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,qDAAyB,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAChE,CAAC;IAEO,gDAAuB,GAA/B;QACE,OAAO,CACL,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,WAAW,KAAK,CAAC,CAAC;YAChF,qDAAyB,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAC/D,CAAC;IACJ,CAAC;IAEO,0CAAiB,GAAzB;QACE,IAAI,UAAU,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAI,cAAc,CAAC,gCAAkC,CAAC,EAAE;YAChF,IAAM,mBAAmB,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;YACjF,IAAI,mBAAmB,EAAE;gBACvB,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC;aACvD;iBAAM;gBACL,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;aACxD;SACF;QACD,KAAK,IAAI,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE;YACzD,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;YAErC,IAAI,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;gBAC3C,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CAAC;aACxC;YAED,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;YAEvC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE;gBAC3C,MAAM;aACP;SACF;IACH,CAAC;IAEO,qDAA4B,GAApC;QACE,OAAO,CACL,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YACvC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,WAAW,KAAK,CAAC;YACpC,qDAAyB,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC;YAC9D,CAAC,IAAI,CAAC,eAAe,EAAE,CACxB,CAAC;IACJ,CAAC;IAEO,+CAAsB,GAA9B;QAAA,iBAkBC;QAjBC,IAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAE5C,IAAI,OAAoB,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE;YACzE,OAAO,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC;YAC/B,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC;YACzC,IAAI,CAAC,wBAAwB,CAAC,QAAE,CAAC,OAAO,CAAC,CAAC,CAAC;SAC5C;QAED,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE;YAC1C,IAAM,cAAc,GAAG,mBAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,aAAG,IAAI,QAAC,KAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAxB,CAAwB,CAAC,CAAC;YACtF,IAAI,CAAC,qBAAqB,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC,CAAC;SAClD;QAED,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE;YAC1B,IAAI,CAAC,eAAe,EAAE,CAAC;SACxB;IACH,CAAC;IAEO,sCAAa,GAArB;QAAA,iBASC;QARC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE;YAC3B,IAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC;YAC5C,OAAO,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE;gBAC9B,IAAM,OAAO,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC;gBACrC,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC;aAC1C;YACD,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,aAAG,IAAI,YAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,EAA3B,CAA2B,CAAC,CAAC;SAClE;IACH,CAAC;IAEO,iDAAwB,GAAhC;QACE,IAAM,iBAAiB,GAAG,QAAE,CAAc,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QAE9E,IAAM,cAAc,GAAG,iBAAiB,CAAC,IAAI,CAAC,MAAI,cAAc,CAAC,gCAAkC,CAAC,CAAC;QACrG,IAAI,cAAc,EAAE;YAClB,iBAAiB,CAAC,EAAE,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;SAClD;QAED,iBAAiB,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU,CAAC;QACjD,iBAAiB,CAAC,EAAE,CAAC,KAAK,CAAC,UAAU,GAAG,QAAQ,CAAC;QAEjD,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE;YAC3B,iBAAI,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,aAAG;gBACjD,iBAAiB,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;YACxD,CAAC,CAAC,CAAC;SACJ;QACD,iBAAiB,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAEnD,qDAAyB,CAAC,mBAAmB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC9D,IAAM,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;QACzG,qDAAyB,CAAC,iBAAiB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAE5D,iBAAiB,CAAC,MAAM,EAAE,CAAC;QAC3B,OAAO,aAAa,CAAC;IACvB,CAAC;IAEO,sCAAa,GAArB,UAAsB,EAAe;QACnC,OAAO,EAAE,CAAC,WAAW,GAAG,EAAE,CAAC,WAAW,CAAC;IACzC,CAAC;IAEO,4CAAmB,GAA3B;QACE,IAAM,cAAc,GAAG,QAAE,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,2BAAyB,cAAc,CAAC,gCAAkC,EAAE,CAAC,CAAC;QAC1H,IAAM,OAAO,GAAG,QAAE,CAAC,GAAG,CAAC,CAAC;QACxB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACvC,IAAM,IAAI,GAAG,QAAE,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,iBAAiB,EAAE,EAAE,mBAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACpF,eAAM,CAAC,wBAAwB,CAAC,IAAI,CAAC,EAAE,EAAE,qBAAqB,CAAC,CAAC;QAChE,OAAO,CAAC,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAChC,cAAc,CAAC,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC1C,OAAO,cAAc,CAAC;IACxB,CAAC;IAEO,iDAAwB,GAAhC;QAAA,iBAiBC;QAhBC,IAAM,MAAM,GAAG,UAAC,KAAY;YAC1B,IAAI,KAAI,CAAC,cAAc,EAAE,EAAE;gBACzB,KAAI,CAAC,aAAa,EAAE,CAAC;aACtB;iBAAM;gBACL,KAAI,CAAC,YAAY,EAAE,CAAC;aACrB;YAED,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE;gBAC1B,KAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;aACrC;QACH,CAAC,CAAC;QACF,IAAI,mCAAgB,EAAE;aACnB,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC;aAChC,gBAAgB,CAAC,MAAM,CAAC;aACxB,SAAS,CAAC,IAAI,CAAC,sBAAsB,EAAE,CAAC;aACxC,KAAK,EAAE,CAAC;IACb,CAAC;IAEO,6CAAoB,GAA5B;QACE,IAAM,eAAe,GAAG,QAAE,CAAC,KAAK,EAAE;YAChC,SAAS,EAAE,2BAA2B,GAAG,iCAAe,CAAC,0BAA0B;SACpF,CAAC,CAAC;QACH,IAAM,WAAW,GAAG,QAAE,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,CAAC;QAC9D,eAAe,CAAC,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAC/C,OAAO,eAAe,CAAC;IACzB,CAAC;IAEO,kDAAyB,GAAjC;QAAA,iBAeC;QAdC,IAAI,CAAC,qBAAqB,GAAG;YAC3B,IAAI,KAAI,CAAC,cAAc,EAAE,EAAE;gBACzB,KAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;aACrC;QACH,CAAC,CAAC;QAEF,IAAI,CAAC,qBAAqB,GAAG,eAAK;YAChC,IAAI,CAAC,KAAI,CAAC,uBAAuB,EAAE;gBACjC,KAAI,CAAC,aAAa,EAAE,CAAC;aACtB;YACD,KAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;QACvC,CAAC,CAAC;QACF,QAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;QAChE,QAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACnE,CAAC;IAEO,uCAAc,GAAtB;QACE,OAAO,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,cAAc,CAAC,yBAAyB,CAAC,CAAC;IAChF,CAAC;IAEO,sCAAa,GAArB;QACE,QAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACtE,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;QAC9B,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,cAAc,CAAC,yBAAyB,CAAC,CAAC;IAC5E,CAAC;IAEO,qCAAY,GAApB;QACE,QAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACrE,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,cAAc,CAAC,yBAAyB,CAAC,CAAC;IACzE,CAAC;IAEO,8CAAqB,GAA7B,UAA8B,GAAgB;QAC5C,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE;YAClC,OAAO;SACR;QAED,QAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,yBAAyB,CAAC,CAAC;QAC3D,IAAM,IAAI,GAAG,QAAE,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACjD,IAAM,WAAW,GAAG,QAAE,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QACxC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC;IAEO,mDAA0B,GAAlC,UAAmC,GAAgB;QACjD,IAAI,CAAC,IAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,EAAE;YACvC,OAAO;SACR;QAED,QAAE,CAAC,GAAkB,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,yBAAyB,CAAC,CAAC;QAC7E,QAAE,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,MAAM,EAAE,CAAC;IACjC,CAAC;IAEO,4CAAmB,GAA3B,UAA4B,GAAgB;QAC1C,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC;IAClE,CAAC;IAEO,iDAAwB,GAAhC,UAAiC,GAAgB;QAC/C,OAAO,GAAG,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,eAAe,CAAC;IAClE,CAAC;IAEO,wCAAe,GAAvB;QACE,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,cAAc,CAAC,yBAAyB,CAAC,CAAC;QAC1E,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC;QAC7B,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;IAChC,CAAC;IAEO,wCAAe,GAAvB;QACE,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,IAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YACvD,OAAO,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC;SACzB;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,0CAAiB,GAAzB;QAAA,iBA8CC;QA7CC,iBAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,GAAG,qBAAS,CAAC,0BAA0B,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,oBAAU;YAC1F,IAAM,GAAG,GAAG,QAAE,CAAC,UAAU,CAAC,CAAC;YAC3B,IAAM,aAAa,GAAG,eAAK;gBACzB,IAAM,gBAAgB,GAAG,KAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC;gBAErD,IAAI,KAAK,CAAC,YAAY,IAAI,SAAS,EAAE;oBACnC,IAAI,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,IAAI,GAAG,EAAE;wBAC/B,QAAE,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,yBAAyB,CAAC,CAAC;wBACxE,GAAG,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;wBAClC,GAAG,CAAC,WAAW,CAAC,cAAc,CAAC,yBAAyB,CAAC,CAAC;wBAE1D,KAAI,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC;wBAEnC,sHAAsH;wBACtH,6BAA6B;wBAC7B,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC;wBACxC,MAAM,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC;wBAElD,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,GAAG,gBAAgB,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;qBAC7D;yBAAM,IAAI,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,IAAI,GAAG,EAAE;wBACtC,KAAI,CAAC,aAAa,EAAE,CAAC;wBACrB,yBAAW,CAAC,mBAAmB,CAAC,GAAG,CAAC,EAAE,EAAE,eAAe,EAAE,aAAa,CAAC,CAAC;wBACxE,KAAI,CAAC,iBAAiB,EAAE,CAAC;qBAC1B;iBACF;YACH,CAAC,CAAC;YAEF,IAAM,YAAY,GAAG;gBACnB,IAAI,KAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE;oBAC7B,IAAI,gBAAgB,GAAG,KAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,CAAC;oBACnD,IAAI,gBAAgB,EAAE;wBACpB,yBAAW,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,EAAE,eAAe,EAAE,aAAa,CAAC,CAAC;wBACrE,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,GAAG,gBAAgB,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;qBAC7D;iBACF;YACH,CAAC,CAAC;YAEF,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,cAAM,mBAAY,EAAE,EAAd,CAAc,CAAC,CAAC;YACtC,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,6BAAa,CAAC,cAAc,CAAC,wBAAQ,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC;YAC5E,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,UAAC,CAAa;gBAC3B,IAAI,CAAC,CAAC,aAAa,IAAI,CAAC,KAAI,CAAC,eAAe,CAAC,CAAC,CAAC,aAA4B,CAAC,EAAE;oBAC5E,KAAI,CAAC,aAAa,EAAE,CAAC;iBACtB;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,uCAAc,GAAtB;QAAA,iBAIC;QAHC,QAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,2CAAoB,CAAC,IAAI,EAAE;YAC/C,QAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,OAAO,EAAE,KAAI,CAAC,qBAAqB,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,sCAAa,GAArB;QACE,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QAEzD,IAAI,mBAAM,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,IAAI,CAAC,eAAe,CAAC,EAAE,EAAE;YAC1D,SAAS,EAAE;gBACT,eAAe,EAAE;oBACf,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE;iBACrC;aACF;SACF,CAAC,CAAC;IACL,CAAC;IAEO,iDAAwB,GAAhC,UAAiC,GAAQ;QACvC,IAAM,mBAAmB,GAAG,iBAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACxD,IAAI,CAAC,mBAAmB,EAAE;YACxB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChC,OAAO;SACR;QAED,IAAM,yBAAyB,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;QAC3H,IAAI,yBAAyB,EAAE;YAC7B,GAAG,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;SACtC;aAAM;YACL,GAAG,CAAC,YAAY,CAAC,mBAAmB,CAAC,CAAC;SACvC;IACH,CAAC;IAEO,+CAAsB,GAA9B;QACE,IAAI,mBAA2B,CAAC;QAChC,iBAAI,CAAC,QAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,GAAG,qBAAS,CAAC,mBAAmB,CAAC,SAAG,CAAC,CAAC,EAAE,oBAAU;YAC9G,IAAM,GAAG,GAAQ,qBAAS,CAAC,GAAG,CAAC,UAAU,EAAE,SAAG,CAAC,CAAC;YAChD,IAAI,CAAC,mBAAmB,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,mBAAmB,EAAE;gBAClE,mBAAmB,GAAG,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC;aACvD;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,mBAAmB,EAAE;YACxB,mBAAmB,GAAG,WAAC,CAAC,cAAc,CAAC,mCAAmC,CAAC,CAAC;SAC7E;QAED,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAEO,sCAAa,GAArB,UAAsB,GAAsB;QAC1C,OAAO,QAAE,CAAC,GAAkB,CAAC,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;IAC3D,CAAC;IAEO,wCAAe,GAAvB,UAAwB,GAAsB;QAC5C,OAAO,QAAE,CAAC,GAAkB,CAAC,CAAC,QAAQ,CAAC,cAAc,CAAC,yBAAyB,CAAC,CAAC;IACnF,CAAC;IAED,sBAAY,4CAAgB;aAA5B;YAAA,iBAYC;YAXC,IAAM,aAAa,GAAG,EAAE,CAAC;YACzB,iBAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,EAAE,sBAAY;gBAC3C,IAAI,aAAK,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE;oBACrC,IAAM,KAAK,GAAG,QAAE,CAAC,YAAY,CAAC,CAAC;oBAC/B,IAAM,uBAAuB,GAAG,KAAK,CAAC,QAAQ,CAAC,qBAAS,CAAC,0BAA0B,CAAC,KAAI,CAAC,EAAE,CAAC,CAAC,CAAC;oBAC9F,IAAI,CAAC,KAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,uBAAuB,EAAE;wBAC3D,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;qBAC9B;iBACF;YACH,CAAC,CAAC,CAAC;YACH,OAAO,aAAa,CAAC;QACvB,CAAC;;;OAAA;IAED,sBAAY,6CAAiB;aAA7B;YACE,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE;gBACzB,OAAO,EAAE,CAAC;aACX;YACD,OAAO,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,MAAI,cAAc,CAAC,yBAA2B,CAAC,CAAC;QACtF,CAAC;;;OAAA;IAlbc,kDAAmC,GAAG,MAAM,CAAC;IAC7C,wCAAyB,GAAG,oBAAoB,CAAC;IACjD,+CAAgC,GAAM,cAAc,CAAC,yBAAyB,YAAS,CAAC;IACxF,wCAAyB,GAAG,8BAA8B,CAAC;IAgb5E,qBAAC;CAAA;AApbY,wCAAc;;;;;;;ACpB3B,yC;;;;;;ACAA,yC;;;;;;ACAA,yC;;;;;;;;;ACAA,yBAA+B;AAE/B,+BAAgC;AAKhC;IAIE,4BAAmB,YAA0B,EAAS,OAA6B;QAAhE,iBAAY,GAAZ,YAAY,CAAc;QAAS,YAAO,GAAP,OAAO,CAAsB;QAH3E,yBAAoB,GAAa,EAAE,CAAC;IAG0C,CAAC;IAEhF,iDAAoB,GAA3B;QACE,OAAO,IAAI,CAAC,oBAAoB,CAAC;IACnC,CAAC;IAEM,oCAAO,GAAd,UAAe,IAA4B;QAA3C,iBAUC;QATC,IAAI,CAAC,oBAAoB,GAAG,EAAE,CAAC;QAC/B,IAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC;QAClD,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,IAAI,SAAS,EAAE;YAC1D,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,eAAK;gBAC/C,IAAI,KAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE;oBAC5D,KAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;iBACnD;YACH,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;IAEM,oDAAuB,GAA9B,UAA+B,IAAiC;QAC9D,IAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACvC,IAAI,CAAC,0BAA0B,CAAC,YAAY,CAAC,CAAC;IAChD,CAAC;IAEO,uDAA0B,GAAlC,UAAmC,YAA0B;QAC3D,IAAM,cAAc,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACxD,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAClD,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC;IAC1D,CAAC;IAEO,sDAAyB,GAAjC;QACE,IAAI,cAAc,GAAoB;YACpC,KAAK,EAAU,IAAI,CAAC,OAAO,CAAC,KAAK;YACjC,qBAAqB,EAAE,IAAI,CAAC,OAAO,CAAC,qBAAqB;YACzD,cAAc,EAAE,IAAI;YACpB,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,YAAY;SACrD,CAAC;QACF,OAAO,cAAc,CAAC;IACxB,CAAC;IACH,yBAAC;AAAD,CAAC;AA1CY,gDAAkB;;;;;;;ACP/B,yC;;;;;;;;;;;;;;;;;ACAA,sCAAwC;AAGxC,4CAAoD;AACpD,gDAAgE;AAEhE,0CAAuC;AAEvC,4DAA0E;AAG1E;IAME,iDAAoB,KAAgC;QAAhC,UAAK,GAAL,KAAK,CAA2B;QAH5C,qBAAgB,GAAG,KAAK,CAAC;QACzB,yBAAoB,GAAG,KAAK,CAAC;QAGnC,IAAI,CAAC,cAAc,GAAG,IAAI,uDAA0B,CAAC;YACnD,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;YAC9B,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS;YAC3B,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS;YAC1B,YAAY,EAAqB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY;YAChE,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc;YACjD,mBAAmB,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,mBAAmB;YAC3D,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB;YACrD,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ;YACrC,yEAAyE;YACzE,gBAAgB,EAAE,KAAK;SACxB,CAAC,CAAC;QACH,IAAI,CAAC,4BAA4B,EAAE,CAAC;QACpC,IAAI,CAAC,qBAAqB,EAAE,CAAC;IAC/B,CAAC;IAEO,uEAAqB,GAA7B;QAAA,iBAKC;QAJC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,yBAAW,CAAC,WAAW,EAAE;YACrD,KAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;YAC9B,KAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;QACpC,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,iFAA+B,GAAtC,UAAuC,wBAAgC;QACrE,IAAI,CAAC,uBAAuB,IAAI,wBAAwB,CAAC;IAC3D,CAAC;IAEM,8EAA4B,GAAnC;QACE,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC;IACnE,CAAC;IAEM,4EAA0B,GAAjC;QACE,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAC/B,CAAC;IAEM,gFAA8B,GAArC;QACE,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;IACnC,CAAC;IAEM,0EAAwB,GAA/B,UAAgC,YAA0B;QACxD,eAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAE5B,YAAY,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAC1D,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,YAAY,CAAC,YAAY,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;SACpE;IACH,CAAC;IAEM,mEAAiB,GAAxB;QACE,oBACK,IAAI,CAAC,cAAc,CAAC,wBAAwB,EAAE,IACjD,aAAa,EAAE,IAAI,CAAC,aAAa,EACjC,iBAAiB,EAAE,IAAI,CAAC,oBAAoB,EAC5C,cAAc,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,uBAAuB,EACrF,eAAe,EAAE,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,IACjF;IACJ,CAAC;IAEM,iEAAe,GAAtB;QACE,IAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,YAAY,EAAE,CAAC;QACxD,8FAA8F;QAC9F,+CAA+C;QAC/C,KAAK,CAAC,eAAe,GAAG,CAAC,CAAC;QAE1B,IAAM,yBAAyB,GAAG,sBAAS,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9F,IAAI,yBAAyB,KAAK,CAAC,CAAC,EAAE;YACpC,KAAK,CAAC,MAAM,CAAC,yBAAyB,CAAC,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;SACpE;aAAM,IAAI,KAAK,CAAC,MAAM,EAAE;YACvB,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;SAC7C;aAAM;YACL,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC;SAC3C;QAED,OAAO,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAChE,CAAC;IAED,sBAAY,kEAAa;aAAzB;YAAA,iBAIC;YAHC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,gBAAgB;gBACvC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,sBAAY,IAAI,YAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,EAApC,CAAoC,CAAC;gBAC5F,CAAC,CAAC,EAAE,CAAC;QACT,CAAC;;;OAAA;IAEO,mEAAiB,GAAzB,UAA0B,UAA0C;QAClE,OAAO;YACL,KAAK,EAAE,UAAU,CAAC,KAAK;YACvB,KAAK,EAAE,UAAU,CAAC,KAAK;YACvB,QAAQ,EAAE,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC;YAChD,gBAAgB,EAAE,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC;YACzD,aAAa,EAAE,UAAU,CAAC,aAAa;SACxC,CAAC;IACJ,CAAC;IAEO,uEAAqB,GAA7B,UAA8B,UAA0C;QAAxE,iBAEC;QADC,OAAO,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,sBAAY,IAAI,YAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,EAApC,CAAoC,CAAC,CAAC;IACtI,CAAC;IAEO,wEAAsB,GAA9B,UAA+B,UAA0C;QACvE,OAAO,UAAU,CAAC,KAAK,KAAK,iCAAe,CAAC,QAAQ,CAAC;IACvD,CAAC;IACH,8CAAC;AAAD,CAAC;AA1GY,0FAAuC;;;;;;;;;;ACXpD,yBAAuD;AACvD,mCAAqC;AACrC,yCAAgD;AAEhD,uCAA0C;AAC1C,wDAAgF;AAChF,mDAA+D;AAM/D;IAGE,4CAAoB,KAAgC,EAAmB,OAAqD;QAAxG,UAAK,GAAL,KAAK,CAA2B;QAAmB,YAAO,GAAP,OAAO,CAA8C;QAC1H,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAEO,mDAAM,GAAd;QAAA,iBAQC;QAPC,IAAI,CAAC,OAAO,GAAG,QAAE,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,sDAAsD,EAAE,CAAC,CAAC,EAAE,CAAC;QAEnG,IAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC;QACpD,IAAM,YAAY,GAAG,YAAY,CAAC,GAAG,CAAC,kBAAQ,IAAI,YAAI,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,EAA/B,CAA+B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAE/F,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC5B,IAAI,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAC;IAC5C,CAAC;IAEO,iEAAoB,GAA5B;QACE,IAAM,YAAY,GAAG,QAAE,CACrB,kCAAa,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,EAC9D,EAAE,SAAS,EAAE,sCAAsC,EAAE,EAClD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,MAAG,CAC/B,CAAC,EAAE,CAAC;QACL,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;IACzC,CAAC;IAEO,mEAAsB,GAA9B,UAA+B,OAAe;QAA9C,iBAgBC;QAfC,IAAM,YAAY,GAAG,QAAE,CACrB,QAAQ,EACR;YACE,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,sCAAsC;YACjD,SAAS,EAAE,WAAC,CAAC,gBAAgB,EAAE,OAAO,CAAC;SACxC,EACD,OAAO,CACR,CAAC,EAAE,CAAC;QACL,IAAM,YAAY,GAAG,QAAE,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,4CAA4C,EAAE,EAAE,mBAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;QAC1H,YAAY,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QAEvC,QAAE,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,cAAM,YAAI,CAAC,iBAAiB,EAAE,EAAxB,CAAwB,CAAC,CAAC;QAE7D,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;IACzC,CAAC;IAEO,8DAAiB,GAAzB;QAAA,iBAGC;QAFC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACnB,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,cAAM,YAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,kDAAwB,CAAC,eAAe,CAAC,EAAtE,CAAsE,CAAC,CAAC;IAC3G,CAAC;IACH,yCAAC;AAAD,CAAC;AAhDY,gFAAkC;;;;;;;;;;ACZ/C,yBAA0E;AAE1E,+DAAgF;AAChF,2CAAoD;AACpD,mCAAwC;AACxC,0CAAkC;AAClC,gDAAsE;AACtE,qCAA6C;AAC7C,uCAA6C;AAC7C,iEAA4H;AAE5H,yCAAmD;AACnD,0CAAqD;AACrD,oDAAmG;AAEnG;IASE,wCAAoB,KAAgC;QAAhC,UAAK,GAAL,KAAK,CAA2B;QAR5C,gBAAW,GAAqC,EAAE,CAAC;QACnD,kBAAa,GAAa,EAAE,CAAC;QAC7B,SAAI,GAAG,QAAE,CAAC,IAAI,EAAE;YACtB,SAAS,EAAE,yCAAyC;YACpD,iBAAiB,EAAE,4CAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;YACjE,IAAI,EAAE,OAAO;SACd,CAAC,CAAC,EAAE,CAAC;IAEiD,CAAC;IAEhD,2DAAkB,GAA1B,UAA2B,KAAa;QACtC,IAAI,WAAW,GAAG,uBAAU,CAAC,yBAAyB,CAAS,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAChG,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC;IAC/D,CAAC;IAEM,2DAAkB,GAAzB,UAA0B,QAAwB;QAAlD,iBAGC;QAFC,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,uBAAa,IAAI,YAAI,CAAC,4BAA4B,CAAC,aAAa,CAAC,EAAhD,CAAgD,CAAC,CAAC;IAC5G,CAAC;IAEM,sDAAa,GAApB,UAAqB,UAAsB;QACzC,IAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,cAAI,IAAI,4BAAS,CAAC,WAAW,CAAC,IAAI,CAAC,EAA3B,CAA2B,CAAC,CAAC;QAClE,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;YAC1B,IAAI,CAAC,WAAW,GAAG,aAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,EAAE,eAAK,IAAI,4BAAS,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,EAAjC,CAAiC,CAAC,CAAC;SACnH;aAAM;YACL,IAAM,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACnE,gBAAgB,CAAC,QAAQ,GAAG,aAAK,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,QAAQ,EAAE,KAAK,EAAE,eAAK,IAAI,4BAAS,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,EAAjC,CAAiC,CAAC,CAAC;SACrI;IACH,CAAC;IAEO,qEAA4B,GAApC,UAAqC,aAAkC,EAAE,IAAmB;QAA5F,iBA4BC;QA5BwE,gCAAmB;QAC1F,IAAM,OAAO,GAAO,IAAI,SAAE,aAAa,CAAC,KAAK,EAAC,CAAC;QAC/C,IAAM,YAAY,GAAG,uBAAU,CAAC,+BAA+B,CAC7D,aAAa,CAAC,KAAK,EACnB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAe,EAClC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAChC,CAAC;QACF,IAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ;YACrC,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,uBAAa,IAAI,YAAI,CAAC,4BAA4B,CAAC,aAAa,EAAE,OAAO,CAAC,EAAzD,CAAyD,CAAC;YACxG,CAAC,CAAC,EAAE,CAAC;QAEP,IAAI,aAAa,CAAC,KAAK,KAAK,iCAAe,CAAC,QAAQ,EAAE;YACpD,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC;SAC9B;QAED,OAAO,IAAI,6DAA6B,CACtC;YACE,KAAK,EAAE,aAAa,CAAC,KAAK;YAC1B,eAAe,EAAE,aAAa,CAAC,eAAe;YAC9C,KAAK,EAAE,aAAa,CAAC,KAAK;YAC1B,mBAAmB,EAAE,aAAa,CAAC,mBAAmB;YACtD,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,aAAa,CAAC,WAAW;YACtC,YAAY;YACZ,QAAQ;SACT,EACD,IAAI,CAAC,KAAK,CACX,CAAC;IACJ,CAAC;IAED,sBAAW,0DAAc;aAAzB;YACE,OAAO,IAAI,CAAC,WAAW,CAAC;QAC1B,CAAC;;;OAAA;IAED,sBAAW,4DAAgB;aAA3B;YACE,OAAO,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;QACrC,CAAC;;;OAAA;IAED,sBAAW,wDAAY;aAAvB;YACE,OAAW,IAAI,CAAC,aAAa,SAAE;QACjC,CAAC;;;OAAA;IAEM,oDAAW,GAAlB;QACE,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACtB,IAAI,CAAC,SAAS,EAAE,CAAC;IACnB,CAAC;IAEM,kDAAS,GAAhB;QACE,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;IAC1B,CAAC;IAEO,0DAAiB,GAAzB,UAA0B,IAAc;QACtC,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACnC,IAAI,UAA0C,CAAC;QAC/C,IAAI,aAAa,GAAO,IAAI,QAAC,CAAC;;YAG5B,IAAM,KAAK,GAAG,aAAa,CAAC,KAAK,EAAE,CAAC;YACpC,UAAU,GAAG,iBAAI,CAAC,WAAW,EAAE,oBAAU,IAAI,iBAAU,CAAC,KAAK,KAAK,KAAK,EAA1B,CAA0B,CAAC,CAAC;YAEzE,IAAI,CAAC,UAAU,EAAE;gCACR,IAAI;aACZ;YACD,WAAW,GAAG,UAAU,CAAC,QAAQ,CAAC;QACpC,CAAC;QARD;;;;iBAQS,aAAa,CAAC,MAAM,EAAE;QAE/B,OAAO,UAAU,CAAC;IACpB,CAAC;IAEO,iEAAwB,GAAhC,UAAiC,IAAc,EAAE,QAA+C;QAA/C,wCAA+C;QAC9F,IAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACpC,OAAO,IAAI,6DAA6B,CACtC;YACE,KAAK;YACL,IAAI;YACJ,YAAY,EAAE,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC;YAC5C,eAAe,EAAE,CAAC;YAClB,KAAK,EAAE,iCAAe,CAAC,IAAI;YAC3B,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM;YAC7B,mBAAmB,EAAE,KAAK;YAC1B,QAAQ;SACT,EACD,IAAI,CAAC,KAAK,CACX,CAAC;IACJ,CAAC;IAEO,sEAA6B,GAArC,UAAsC,IAAc;QAClD,IAAM,kBAAkB,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACxD,IAAI,kBAAkB,EAAE;YACtB,OAAO,kBAAkB,CAAC;SAC3B;QAED,IAAM,aAAa,GAAG,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,CAAC;QAC1D,IAAM,aAAa,GAAG,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;QAE5H,aAAa,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAClC,OAAO,aAAa,CAAC;IACvB,CAAC;IAEO,mEAA0B,GAAlC,UAAmC,WAA6C,EAAE,IAAc,EAAE,KAAS;QAA3G,iBAYC;QAZiG,iCAAS;QACzG,IAAM,mBAAmB,GAAG,WAAW,CAAC,MAAM,CAAC,oBAAU;YACvD,IAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YACxC,OAAO,aAAK,CAAC,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QAEH,mBAAmB,CAAC,OAAO,CAAC,oBAAU;YACpC,UAAU,CAAC,KAAK,GAAG,iCAAe,CAAC,IAAI,CAAC;YACxC,UAAU,CAAC,QAAQ,GAAG,KAAI,CAAC,0BAA0B,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;QAC9F,CAAC,CAAC,CAAC;QAEH,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAEO,gEAAuB,GAA/B,UAAgC,IAAc;QAC5C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAC7E,CAAC;IAEM,mDAAU,GAAjB,UAAkB,IAAc;QAC9B,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;QAClD,IAAI,CAAC,aAAa,GAAO,IAAI,QAAC,CAAC;IACjC,CAAC;IAEO,6DAAoB,GAA5B;QAAA,iBAkBC;QAjBC,IAAM,WAAW,GAAG,QAAE,CACpB,QAAQ,EACR;YACE,SAAS,EAAE,sCAAsC;YACjD,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU;SACrC,EACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAC9B,CAAC;QACF,WAAW,CAAC,WAAW,CAAC,2BAA2B,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;QAElG,IAAM,SAAS,GAAG,QAAE,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,mDAAmD,EAAE,EAAE,mBAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC1H,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAElC,IAAM,KAAK,GAAG,QAAE,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,WAAW,CAAC,CAAC;QACtD,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,cAAM,YAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAjC,CAAiC,CAAC,CAAC;QAC3D,QAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAClC,CAAC;IAEO,sDAAa,GAArB;QAAA,iBAYC;QAXC,IAAM,QAAQ,GAAG,IAAI,qEAAmC,CAAC;YACvD,SAAS,EAAE,4CAA4C;YACvD,SAAS,EAAE,WAAC,CAAC,sBAAsB,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAC9D,KAAK,EAAE,WAAC,CAAC,UAAU,CAAC;YACpB,MAAM,EAAE;gBACN,KAAI,CAAC,KAAK,CAAC,0BAA0B,EAAE,CAAC;gBACxC,KAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;YAC9B,CAAC;SACF,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC,OAAO,CAAC;IAC1B,CAAC;IAEO,sDAAa,GAArB;QAAA,iBAYC;QAXC,IAAM,QAAQ,GAAG,IAAI,qEAAmC,CAAC;YACvD,SAAS,EAAE,4CAA4C;YACvD,SAAS,EAAE,WAAC,CAAC,sBAAsB,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YAC9D,KAAK,EAAE,WAAC,CAAC,UAAU,CAAC;YACpB,MAAM,EAAE;gBACN,KAAI,CAAC,KAAK,CAAC,0BAA0B,EAAE,CAAC;gBACxC,KAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;YAC9B,CAAC;SACF,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC,OAAO,CAAC;IAC1B,CAAC;IAED,sBAAY,gEAAoB;aAAhC;YACE,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC;QACrE,CAAC;;;OAAA;IAED,sBAAY,gEAAoB;aAAhC;YACE,OAAO,IAAI,CAAC,KAAK,CAAC,mBAAmB,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC;QAClE,CAAC;;;OAAA;IAEO,2DAAkB,GAA1B,UAA2B,QAA0B;QACnD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE;YACtC,OAAO;SACR;QAED,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC7B,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;SAC5C;QAED,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC7B,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;SAC5C;IACH,CAAC;IAEM,+CAAM,GAAb;QACE,IAAM,QAAQ,GAAG,QAAQ,CAAC,sBAAsB,EAAE,CAAC;QACnD,QAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;QAEtB,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,oBAAU;YACjC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEH,QAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,CAAC,kBAAkB,EAAE,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC3E,IAAI,CAAC,aAAa,CAAC,MAAM,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAEzD,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAElC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAChC,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IACH,qCAAC;AAAD,CAAC;AAhPY,wEAA8B;;;;;;;ACf3C,yC;;;;;;;;;ACAA,wCAAuC;AACvC,gDAAsE;AACtE,uEAAgG;AAChG,uCAA6C;AAC7C,iEAA4H;AAM5H,wDAAmF;AAEnF;IAKE,uCAAoB,UAAoD,EAAU,KAAgC;QAA9F,eAAU,GAAV,UAAU,CAA0C;QAAU,UAAK,GAAL,KAAK,CAA2B;QAH1G,YAAO,GAAgB,IAAI,CAAC;QAIlC,IAAI,CAAC,QAAQ,GAAG,IAAI,6EAAqC,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5E,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACpG,CAAC;IAED,sBAAW,gDAAK;aAAhB;YACE,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QAC/B,CAAC;;;OAAA;IAED,sBAAW,+CAAI;aAAf;YACE,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAC9B,CAAC;;;OAAA;IAED,sBAAW,gDAAK;aAAhB;YACE,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QAC/B,CAAC;aAED,UAAiB,KAAsB;YACrC,IAAI,CAAC,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC;QAChC,CAAC;;;OAJA;IAMD,sBAAW,8DAAmB;aAA9B;YACE,OAAO,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC;QAC7C,CAAC;;;OAAA;IAED,sBAAW,0DAAe;aAA1B;YACE,OAAO,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC;QACzC,CAAC;;;OAAA;IAED,sBAAW,uDAAY;aAAvB;YACE,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;QACtC,CAAC;;;OAAA;IAED,sBAAW,mDAAQ;aAAnB;YACE,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAClC,CAAC;aAED,UAAoB,QAA0C;YAC5D,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACtC,CAAC;;;OAJA;IAMD,sBAAW,sDAAW;aAAtB;YACE,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;QACrC,CAAC;;;OAAA;IAED,sBAAW,iDAAM;aAAjB;YACE,OAAO,IAAI,CAAC,KAAK,KAAK,iCAAe,CAAC,IAAI,CAAC;QAC7C,CAAC;;;OAAA;IAED,sBAAW,qDAAU;aAArB;YACE,OAAO,IAAI,CAAC,KAAK,KAAK,iCAAe,CAAC,QAAQ,CAAC;QACjD,CAAC;;;OAAA;IAEM,8CAAM,GAAb;QACE,IAAI,CAAC,KAAK,GAAG,iCAAe,CAAC,QAAQ,CAAC;IACxC,CAAC;IAED,sBAAW,0DAAe;aAA1B;YACE,IAAM,WAAW,GAAG,WAAC,CAAC,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;YAChF,OAAU,IAAI,CAAC,YAAY,SAAI,WAAa,CAAC;QAC/C,CAAC;;;OAAA;IAED,sBAAW,yDAAc;aAAzB;YACE,OAAO,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;QACtD,CAAC;;;OAAA;IAEO,qDAAa,GAArB;QAAA,iBAaC;QAZC,IAAM,QAAQ,GAAG,IAAI,qEAAmC,CAAC;YACvD,SAAS,EAAE,6DAA6D;YACxE,SAAS,EAAE,WAAC,CAAC,6BAA6B,EAAE,IAAI,CAAC,YAAY,CAAC;YAC9D,KAAK,EAAE,WAAC,CAAC,UAAU,CAAC;YACpB,MAAM,EAAE;gBACN,KAAI,CAAC,KAAK,CAAC,0BAA0B,EAAE,CAAC;gBACxC,KAAI,CAAC,aAAa,GAAG,KAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC;gBACvD,KAAI,CAAC,KAAK,CAAC,uBAAuB,EAAE,CAAC;YACvC,CAAC;SACF,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC,OAAO,CAAC;IAC1B,CAAC;IAEO,qDAAa,GAArB;QAAA,iBAaC;QAZC,IAAM,QAAQ,GAAG,IAAI,qEAAmC,CAAC;YACvD,SAAS,EAAE,6DAA6D;YACxE,SAAS,EAAE,WAAC,CAAC,6BAA6B,EAAE,IAAI,CAAC,YAAY,CAAC;YAC9D,KAAK,EAAE,WAAC,CAAC,UAAU,CAAC;YACpB,MAAM,EAAE;gBACN,KAAI,CAAC,KAAK,CAAC,0BAA0B,EAAE,CAAC;gBACxC,KAAI,CAAC,aAAa,IAAI,KAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC;gBACxD,KAAI,CAAC,KAAK,CAAC,uBAAuB,EAAE,CAAC;YACvC,CAAC;SACF,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC,OAAO,CAAC;IAC1B,CAAC;IAED,sBAAY,+DAAoB;aAAhC;YACE,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC;QAClE,CAAC;;;OAAA;IAED,sBAAY,+DAAoB;aAAhC;YACE,OAAO,IAAI,CAAC,mBAAmB,CAAC;QAClC,CAAC;;;OAAA;IAEO,0DAAkB,GAA1B,UAA2B,QAA0B;QACnD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE;YACtC,OAAO;SACR;QAED,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC7B,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;SAC5C;QAED,IAAI,IAAI,CAAC,oBAAoB,EAAE;YAC7B,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;SAC5C;IACH,CAAC;IAEM,8CAAM,GAAb,UAAc,QAA0B;QACtC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QACtC,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEnC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,oBAAU,IAAI,iBAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,EAA3B,CAA2B,CAAC,CAAC;QACjE,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAElC,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAEM,kEAA0B,GAAjC;QACE,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,kDAAwB,CAAC,kBAAkB,CAAC,CAAC;IAC5E,CAAC;IACH,oCAAC;AAAD,CAAC;AAxIY,sEAA6B;;;;;;;;;;ACZ1C,mCAA6C;AAC7C,yCAAmD;AAEnD,qCAA6C;AAE7C;IAGE,+CAAoB,UAA0C,EAAU,KAAgC;QAApF,eAAU,GAAV,UAAU,CAAgC;QAAU,UAAK,GAAL,KAAK,CAA2B;IAAG,CAAC;IAErG,sDAAM,GAAb;QAAA,iBAaC;QAZC,IAAI,CAAC,MAAM,GAAG,QAAE,CAAC,QAAQ,EAAE;YACzB,SAAS,EAAE,wCAAwC;YACnD,IAAI,EAAE,QAAQ;YACd,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,eAAe;SAC3C,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,cAAM,YAAI,CAAC,YAAY,EAAE,EAAnB,CAAmB,CAAC,CAAC;QAEnD,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAE1B,OAAO,QAAE,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;IACtF,CAAC;IAEO,2DAAW,GAAnB;QACE,IAAM,KAAK,GAAG,QAAE,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,8CAA8C,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC;QAC7H,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QACzC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC;IAEO,2DAAW,GAAnB;QACE,IAAM,KAAK,GAAG,QAAE,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,8CAA8C,EAAE,EAAE,MAAI,IAAI,CAAC,UAAU,CAAC,cAAc,MAAG,CAAC,CAAC;QAC/H,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC;IAEO,kEAAkB,GAA1B;QACE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,gBAAgB,EAAE,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QACtE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,kBAAkB,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACnE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,2BAA2B,EAAE,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACnF,IAAI,CAAC,UAAU,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;QAC3E,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACpD,IAAI,CAAC,sBAAsB,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC3D,CAAC;IAEO,gEAAgB,GAAxB;QACE,IAAM,SAAS,GAAG,QAAE,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,mDAAmD,EAAE,EAAE,mBAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC1H,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACpC,CAAC;IAEO,kEAAkB,GAA1B;QACE,IAAM,SAAS,GAAG,QAAE,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,oDAAoD,EAAE,EAAE,mBAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC3H,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACnC,CAAC;IAED,sBAAY,mEAAgB;aAA5B;YACE,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC5G,CAAC;;;OAAA;IAED,sBAAY,sEAAmB;aAA/B;YACE,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC;QAChH,CAAC;;;OAAA;IAED,sBAAY,yEAAsB;aAAlC;YACE,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC;QACzG,CAAC;;;OAAA;IAED,sBAAY,0EAAuB;aAAnC;YACE,IAAM,0BAA0B,GAAG,aAAK,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACvH,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,IAAI,0BAA0B,CAAC;QAClE,CAAC;;;OAAA;IAEO,4DAAY,GAApB;QAAA,iBAMC;QALC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,KAAK,CAAC,0BAA0B,EAAE,CAAC;QACxC,IAAI,CAAC,KAAK,CAAC,8BAA8B,EAAE,CAAC;QAC5C,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QACzB,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,cAAM,YAAI,CAAC,UAAU,CAAC,0BAA0B,EAAE,EAA5C,CAA4C,CAAC,CAAC;IACjF,CAAC;IACH,4CAAC;AAAD,CAAC;AA1EY,sFAAqC;;;;;;;;;;ACJlD,mEAAwG;AACxG,0CAAgD;AAChD,uCAA0C;AAG1C,qEAA4F;AAE5F,yBAAwD;AACxD,yBAAgF;AAEhF;IAKE,wCAAoB,KAAgC;QAAhC,UAAK,GAAL,KAAK,CAA2B;QAClD,IAAI,CAAC,iCAAiC,GAAG,IAAI,qEAAiC,CAAC,KAAK,CAAC,CAAC;QAEtF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;IAC9B,CAAC;IAEO,8CAAK,GAAb;QAAA,iBAmBC;QAlBC,IAAI,CAAC,QAAQ,GAAG,IAAI,mBAAQ,CAAC;YAC3B,KAAK,EAAE,WAAC,CAAC,oBAAoB,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;YACxD,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,QAAQ;YAC7C,aAAa,EAAE,eAAK,IAAI,YAAI,CAAC,iCAAiC,CAAC,MAAM,CAAC,KAAK,CAAC,EAApD,CAAoD;YAC5E,wBAAwB,EAAE,UAAC,QAA8B,IAAK,YAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,EAAvC,CAAuC;YACrG,aAAa,EAAE,IAAI,CAAC,aAAa;YACjC,eAAe,EAAE,WAAC,CAAC,QAAQ,CAAC;YAC5B,gBAAgB,EAAE,4BAA4B;YAC9C,WAAW,EAAE,IAAI;YACjB,UAAU,EAAE;gBACV,iBAAiB,EAAE,cAAM,YAAI,CAAC,iCAAiC,CAAC,gBAAgB,EAAE,EAAzD,CAAyD;gBAClF,sBAAsB,EAAE,cAAM,YAAI,CAAC,iCAAiC,CAAC,mBAAmB,EAA1D,CAA0D;gBACxF,iBAAiB,EAAE,GAAG;aACvB;YACD,uBAAuB,EAAE,qDAAqD;SAC/E,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;IAC/B,CAAC;IAEO,wDAAe,GAAvB,UAAwB,KAAa;QACnC,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;IACzD,CAAC;IAEO,iEAAwB,GAAhC,UAAiC,QAA8B;QAA/D,iBAgBC;QAfC,OAAO,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,eAAK;YAC9B,IAAM,UAAU,GAAG,IAAI,yEAAmC,CACxD;gBACE,QAAQ,EAAM,KAAK,CAAC,IAAI,SAAE,KAAK,CAAC,QAAQ,EAAC;gBACzC,iFAAiF;gBACjF,YAAY,EAAE,KAAI,CAAC,eAAe,CAAC,KAAK,CAAC,YAAY,CAAC;gBACtD,eAAe,EAAE,KAAK,CAAC,KAAK;aAC7B,EACD,KAAI,CAAC,KAAK,CACX,CAAC;YACF,OAAO;gBACL,KAAK,EAAE,UAAU;gBACjB,OAAO,EAAE,UAAU,CAAC,eAAe;aACpC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,sDAAa,GAArB,UAAsB,EAAyB;YAAvB,gBAAK;QACmB,KAAK,CAAC,QAAS,CAAC,YAAY,EAAE,CAAC;IAC/E,CAAC;IACH,qCAAC;AAAD,CAAC;AAzDY,wEAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACV3C,oDAAwF;AACxF,0CAAqC;AAErC,4DAAyE;AAEzE;IAOE,2CAAoB,KAAgC;QAAhC,UAAK,GAAL,KAAK,CAA2B;QAN5C,UAAK,GAAG,EAAE,CAAC;QACX,cAAS,GAAG,CAAC,CAAC;QACd,6BAAwB,GAAG,CAAC,CAAC;QAE9B,wBAAmB,GAAG,IAAI,CAAC;IAEqB,CAAC;IAExD,sBAAY,2DAAY;aAAxB;YACE,OAAO,CAAC,oBAAO,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC;QACzD,CAAC;;;OAAA;IAED,sBAAY,6DAAc;aAA1B;YACE,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,SAAS,CAAC;QAC5F,CAAC;;;OAAA;IAED,sBAAY,sDAAO;aAAnB;YACE,OAAO;gBACL,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS;gBAC3B,gBAAgB,EAAE,sDAAyB,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;gBAC/D,IAAI,EAAE,oCAAe,CAAC,YAAY;gBAClC,cAAc,EAAE,IAAI,CAAC,cAAc;gBACnC,WAAW,EAAE,IAAI,CAAC,YAAY;gBAC9B,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ;gBACrC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY;gBACzC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,YAAY,EAAE;gBACxD,mBAAmB,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,mBAAmB;gBAC3D,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,MAAI,IAAI,CAAC,KAAK,MAAG,CAAC,CAAC,CAAC,GAAG;aACnD,CAAC;QACJ,CAAC;;;OAAA;IAEa,0DAAc,GAA5B;;;;;4BACmB,qBAAM,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC;;wBAAnF,QAAQ,GAAG,SAAwE;wBACzF,IAAI,CAAC,mBAAmB,GAAG,QAAQ,CAAC,mBAAmB,CAAC;wBACxD,sBAAO,QAAQ,EAAC;;;;KACjB;IAEM,kDAAM,GAAb,UAAc,KAAa;QACzB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACnB,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;IAC/B,CAAC;IAEM,4DAAgB,GAAvB;QACE,IAAI,CAAC,SAAS,EAAE,CAAC;QACjB,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;IAC/B,CAAC;IACH,wCAAC;AAAD,CAAC;AAhDY,8EAAiC;;;;;;;;;;ACJ9C;;GAEG;AACH,IAAY,eASX;AATD,WAAY,eAAe;IACzB;;OAEG;IACH,wCAAqB;IACrB;;OAEG;IACH,gDAA6B;AAC/B,CAAC,EATW,eAAe,GAAf,uBAAe,KAAf,uBAAe,QAS1B;;;;;;;;;;ACVD,6EAA4G;AAC5G,wDAAgF;AAEhF;IAIE,6CAAoB,UAA0D,EAAU,KAAgC;QAApG,eAAU,GAAV,UAAU,CAAgD;QAAU,UAAK,GAAL,KAAK,CAA2B;QACtH,IAAI,CAAC,QAAQ,GAAG,IAAI,yFAA2C,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC/E,CAAC;IAED,sBAAW,yDAAQ;aAAnB;YACE,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAClC,CAAC;;;OAAA;IAED,sBAAW,6DAAY;aAAvB;YACE,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;QACtC,CAAC;;;OAAA;IAED,sBAAW,gEAAe;aAA1B;YACE,OAAO,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC;QACzC,CAAC;;;OAAA;IAED,sBAAW,gEAAe;aAA1B;YACE,IAAI,IAAI,CAAC,OAAO,EAAE;gBAChB,OAAO,IAAI,CAAC,OAAO,CAAC;aACrB;YAED,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;QACvB,CAAC;;;OAAA;IAEM,wEAA0B,GAAjC;QACE,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,kDAAwB,CAAC,kBAAkB,CAAC,CAAC;IAC5E,CAAC;IAEO,oDAAM,GAAd;QACE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QACtC,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IACH,0CAAC;AAAD,CAAC;AApCY,kFAAmC;;;;;;;;;;ACLhD,mCAAqC;AACrC,uCAA0C;AAE1C,IAAM,iBAAiB,GAAG,CAAC,CAAC;AAC5B,IAAM,eAAe,GAAG,CAAC,CAAC;AAC1B,IAAM,cAAc,GAAG,GAAG,CAAC;AAE3B,IAAM,eAAe,GAAG,+CAA+C,CAAC;AACxE,IAAM,gBAAgB,GAAM,eAAe,YAAS,CAAC;AACrD,IAAM,eAAe,GAAM,eAAe,WAAQ,CAAC;AACnD,IAAM,eAAe,GAAM,eAAe,mBAAgB,CAAC;AAC3D,IAAM,cAAc,GAAM,eAAe,UAAO,CAAC;AACjD,IAAM,uBAAuB,GAAM,cAAc,cAAW,CAAC;AAC7D,IAAM,qBAAqB,GAAM,cAAc,YAAS,CAAC;AACzD,IAAM,mBAAmB,GAAM,cAAc,UAAO,CAAC;AACrD,IAAM,wBAAwB,GAAM,cAAc,eAAY,CAAC;AAElD,6DAAqD,GAAG;IACnE,eAAe;IACf,gBAAgB;IAChB,eAAe;IACf,eAAe;IACf,cAAc;IACd,uBAAuB;IACvB,qBAAqB;IACrB,mBAAmB;IACnB,wBAAwB;CACzB,CAAC;AAEF;IACE,qDAAoB,UAA+C,EAAU,KAAgC;QAAzF,eAAU,GAAV,UAAU,CAAqC;QAAU,UAAK,GAAL,KAAK,CAA2B;IAAG,CAAC;IAEjH,sBAAY,qEAAY;aAAxB;YACE,IAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACzD,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE;gBACtB,OAAO,EAAE,KAAK,EAAE,CAAC,WAAC,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC;aACxC;YACD,IAAI,UAAU,CAAC,MAAM,GAAG,iBAAiB,GAAG,eAAe,EAAE;gBAC3D,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,iBAAiB,CAAC,EAAE,GAAG,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC;aACnG;YACD,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;QAC/B,CAAC;;;OAAA;IAED,sBAAY,8DAAK;aAAjB;YACQ,0BAAkC,EAAhC,gBAAK,EAAE,YAAG,CAAuB;YACzC,IAAM,WAAW,GAAG,WAAC,CAAC,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;YACvG,OAAO,WAAC,CACN,qCAAqC,EAClC,IAAI,CAAC,UAAU,CAAC,YAAY,SAAI,WAAa,EAC5C,KAAK,QAAK,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CACtC,CAAC;QACJ,CAAC;;;OAAA;IAEM,4DAAM,GAAb;QACE,IAAM,OAAO,GAAG,QAAE,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,eAAe,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QAEzH,OAAO,OAAO,CAAC,EAAE,CAAC;IACpB,CAAC;IAEM,kEAAY,GAAnB;QAAA,iBAMC;QALC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,CAAC,KAAK,CAAC,0BAA0B,EAAE,CAAC;QACxC,IAAI,CAAC,KAAK,CAAC,8BAA8B,EAAE,CAAC;QAC5C,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QACzB,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,cAAM,YAAI,CAAC,UAAU,CAAC,0BAA0B,EAAE,EAA5C,CAA4C,CAAC,CAAC;IACjF,CAAC;IAEO,kEAAY,GAApB;QACE,OAAO,QAAE,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACxH,CAAC;IAEO,iEAAW,GAAnB;QACE,OAAO,QAAE,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,eAAe,EAAE,EAAE,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IAClF,CAAC;IAEO,wEAAkB,GAA1B;QACE,IAAM,OAAO,GAAG,QAAE,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,eAAe,EAAE,CAAC,CAAC;QAC3D,OAAO,CAAC,IAAI,CAAC,MAAI,IAAI,CAAC,UAAU,CAAC,eAAe,MAAG,CAAC,CAAC;QACrD,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,gEAAU,GAAlB;QAAA,iBAyBC;QAxBC,IAAM,OAAO,GAAG,QAAE,CAChB,IAAI,EACJ;YACE,SAAS,EAAE,cAAc;YACzB,UAAU,EAAE,IAAI;SACjB,EACD,IAAI,CAAC,gBAAgB,EAAE,CACxB,CAAC;QACI,0BAAkC,EAAhC,gBAAK,EAAE,YAAG,CAAuB;QACzC,KAAK,CAAC,OAAO,CAAC,UAAC,IAAI,EAAE,KAAK;YACxB,IAAI,KAAK,GAAG,CAAC,EAAE;gBACb,OAAO,CAAC,MAAM,CAAC,KAAI,CAAC,mBAAmB,EAAE,CAAC,EAAE,CAAC,CAAC;aAC/C;YACD,OAAO,CAAC,MAAM,CAAC,KAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QACH,IAAI,GAAG,EAAE;YACP,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,EAAE,CAAC,CAAC;YAC9C,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,EAAE,CAAC,CAAC;YACzC,GAAG,CAAC,OAAO,CAAC,cAAI;gBACd,OAAO,CAAC,MAAM,CAAC,KAAI,CAAC,mBAAmB,EAAE,CAAC,EAAE,CAAC,CAAC;gBAC9C,OAAO,CAAC,MAAM,CAAC,KAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;YAC/C,CAAC,CAAC,CAAC;SACJ;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,sEAAgB,GAAxB;QACE,IAAM,OAAO,GAAG,QAAE,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,qBAAqB,EAAE,CAAC,CAAC;QAC/D,OAAO,CAAC,IAAI,CAAI,WAAC,CAAC,kCAAkC,CAAC,MAAG,CAAC,CAAC;QAC1D,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,oEAAc,GAAtB;QACE,OAAO,QAAE,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,uBAAuB,EAAE,EAAE,KAAK,CAAC,CAAC;IACjE,CAAC;IAEO,oEAAc,GAAtB,UAAuB,IAAY;QACjC,IAAM,OAAO,GAAG,QAAE,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC,CAAC;QAC7D,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnB,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,yEAAmB,GAA3B;QACE,OAAO,QAAE,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,wBAAwB,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,cAAc,CAAC,CAAC;IAChG,CAAC;IACH,kDAAC;AAAD,CAAC;AAlGY,kGAA2C;;;;;;;AC/BxD,yC;;;;;;;;;ACCA,mDAAwD;AAExD,gDAAsE;AACtE,8DAA8E;AAG9E,2DAAwE;AAExE;IAGE,uCAAoB,KAAyB;QAAzB,UAAK,GAAL,KAAK,CAAoB;QAC3C,IAAI,CAAC,MAAM,GAAG,IAAI,2DAA4B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC7D,CAAC;IAEM,wDAAgB,GAAvB;QAAA,iBAGC;QAFC,IAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QACzC,OAAO,MAAM,CAAC,GAAG,CAAC,UAAC,KAAK,EAAE,KAAK,IAAK,YAAI,CAAC,eAAe,CAAC,KAAK,EAAE,KAAK,CAAC,EAAlC,CAAkC,CAAC,CAAC,MAAM,CAAC,oBAAU,IAAI,QAAC,CAAC,UAAU,EAAZ,CAAY,CAAC,CAAC;IAC7G,CAAC;IAEO,uDAAe,GAAvB,UAAwB,gBAA6B,EAAE,KAAa;QAClE,IAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;QACrD,IAAI,CAAC,KAAK,EAAE;YACV,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAqB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,YAAS,EAAE,gBAAgB,CAAC,CAAC;YACxG,OAAO,IAAI,CAAC;SACb;QAED,IAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAEvF,OAAO,IAAI,qCAAiB,CAC1B;YACE,YAAY;YACZ,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC;YACrC,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,YAAY;YAClC,eAAe,EAAE,CAAC;YAClB,KAAK,EAAE,iCAAe,CAAC,IAAI;YAC3B,QAAQ,EAAE,KAAK,GAAG,CAAC;SACpB,EACD,IAAI,CAAC,KAAK,EACV,qDAAyB,CAC1B,CAAC;IACJ,CAAC;IAEM,0DAAkB,GAAzB,UAA0B,aAAkC,EAAE,KAAa;QACzE,IAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;QACrD,0DAA0D;QAClD,4DAAY,CAAkC;QAEtD,OAAO,IAAI,qCAAiB,CAC1B;YACE,KAAK,EAAE,aAAa,CAAC,KAAK;YAC1B,eAAe,EAAE,aAAa,CAAC,eAAe;YAC9C,KAAK,EAAE,aAAa,CAAC,KAAK;YAC1B,GAAG,EAAE,aAAa,CAAC,GAAG;YACtB,YAAY,EAAE,aAAa,CAAC,YAAY;YACxC,KAAK;YACL,YAAY;YACZ,QAAQ,EAAE,KAAK,GAAG,CAAC;SACpB,EACD,IAAI,CAAC,KAAK,EACV,qDAAyB,CAC1B,CAAC;IACJ,CAAC;IAEM,uDAAe,GAAtB,UAAuB,KAAa;QAClC,IAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACvC,IAAI,CAAC,KAAK,EAAE;YACV,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,CAAC;YAC5D,OAAO,IAAI,CAAC;SACb;QAED,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;IAC9E,CAAC;IACH,oCAAC;AAAD,CAAC;AAnEY,sEAA6B;;;;;;;;;;;;;;;;;;ACT1C,wCAAuC;AACvC,4CAAiF;AACjF,6CAAyD;AACzD,sCAA8B;AAC9B,0CAAqD;AACrD,oDAAyF;AACzF,sCAA8C;AAC9C,qCAA8C;AAC9C,0CAAyC;AAEzC;IACE,sCAAoB,KAAyB;QAAzB,UAAK,GAAL,KAAK,CAAoB;IAAG,CAAC;IAEjD,sBAAY,qDAAW;aAAvB;YACE,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;QACxC,CAAC;;;OAAA;IAED,sBAAY,wDAAc;aAA1B;YACE,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC;QAC3C,CAAC;;;OAAA;IAEO,6DAAsB,GAA9B,UAA+B,KAAgB;QAC7C,IAAM,UAAU,GAAG,qBAAS,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAC1D,IAAI,CAAC,qBAAS,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;YAClC,IAAI,eAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;YACxD,OAAO,IAAI,CAAC;SACb;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;IAEO,kEAA2B,GAAnC,UAAoC,KAAgB;QAClD,QAAQ,IAAI,CAAC,WAAW,EAAE;YACxB,KAAK,iDAA4B,CAAC,MAAM;gBACtC,IAAM,gBAAgB,GAAG,wBAAW,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC;oBACvE,CAAC,CAAC,yBAAW,CAAC,aAAa,CAAC,KAAG,KAAO,CAAC;oBACvC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC;gBACxC,OAAO,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,MAAI,gBAAkB,CAAC,CAAC;YAEzD,KAAK,iDAA4B,CAAC,QAAQ;gBACxC,OAAO,oBAAa,CAAC,gBAAgB,CAAC,UAAU,CAAC,KAAG,KAAO,CAAC,EAAE;oBAC5D,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc;oBACzC,QAAQ,EAAE,yBAAW,CAAC,aAAa,CAAC,KAAG,KAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBACxD,CAAC,CAAC;YAEL,KAAK,iDAA4B,CAAC,IAAI;gBACpC,OAAO,qBAAS,CAAC,YAAY,CAAC,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,EAAE;oBAChE,iBAAiB,EAAE,KAAK;oBACxB,qBAAqB,EAAE,KAAK;oBAC5B,kBAAkB,EAAE,KAAK;oBACzB,oBAAoB,EAAE,KAAK;oBAC3B,4BAA4B,EAAE,KAAK;oBACnC,oBAAoB,EAAE,KAAK;iBAC5B,CAAC,CAAC;YAEL;gBACE,OAAO,KAAG,KAAO,CAAC;SACrB;IACH,CAAC;IAEM,yDAAkB,GAAzB,UAA0B,KAAkB;QAC1C,IAAM,cAAc,GAAG,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QACrE,IAAM,YAAY,GAAG,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAEjE,OAAU,cAAc,SAAI,IAAI,CAAC,cAAc,SAAI,YAAc,CAAC;IACpE,CAAC;IAEO,yDAAkB,GAA1B,UAA2B,KAAgB;QACzC,QAAQ,IAAI,CAAC,WAAW,EAAE;YACxB,KAAK,iDAA4B,CAAC,MAAM,CAAC;YACzC,KAAK,iDAA4B,CAAC,QAAQ;gBACxC,OAAO,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;YACzC,KAAK,iDAA4B,CAAC,IAAI;gBACpC,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;YACvC;gBACE,OAAO,KAAG,KAAO,CAAC;SACrB;IACH,CAAC;IAEO,0DAAmB,GAA3B,UAA4B,KAAgB;QAC1C,IAAM,MAAM,GAAG,UAAU,CAAC,KAAG,KAAO,CAAC,CAAC;QACtC,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;IACvC,CAAC;IAEO,wDAAiB,GAAzB,UAA0B,KAAgB;QACxC,IAAM,WAAW,GAAG,qBAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC;QACnF,OAAO,WAAW,KAAK,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC;IAC7D,CAAC;IAEM,+CAAQ,GAAf,UAAgB,gBAA6B;QAC3C,IAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAC9D,IAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QAE1D,IAAI,aAAM,CAAC,KAAK,CAAC,IAAI,aAAM,CAAC,GAAG,CAAC,EAAE;YAChC,OAAO,IAAI,CAAC;SACb;QAED,oBACK,gBAAgB,IACnB,KAAK;YACL,GAAG,SACH;IACJ,CAAC;IAEM,kDAAW,GAAlB,UAAmB,KAAkB;QACnC,IAAM,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,0BAAa,CAAC,SAAS,CAAC,CAAC,CAAC,0BAAa,CAAC,SAAS,CAAC;QACrF,OAAU,KAAK,CAAC,KAAK,UAAK,KAAK,CAAC,GAAG,GAAG,KAAO,CAAC;IAChD,CAAC;IAEM,4CAAK,GAAZ,UAAa,KAAa;QACxB,IAAM,UAAU,GAAG,IAAI,MAAM,CAAC,qBAAmB,0BAAa,CAAC,SAAS,SAAI,0BAAa,CAAC,SAAS,OAAI,CAAC,CAAC;QACzG,IAAM,WAAW,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,WAAW,EAAE;YAChB,OAAO,IAAI,CAAC;SACb;QAED,IAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QACtD,IAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;QACpD,IAAI,aAAM,CAAC,KAAK,CAAC,IAAI,aAAM,CAAC,GAAG,CAAC,EAAE;YAChC,OAAO,IAAI,CAAC;SACb;QAED,OAAO;YACL,KAAK;YACL,GAAG;YACH,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,0BAAa,CAAC,SAAS;SACzD,CAAC;IACJ,CAAC;IACH,mCAAC;AAAD,CAAC;AAtHY,oEAA4B;;;;;;;;;;ACVzC,IAAY,aAGX;AAHD,WAAY,aAAa;IACvB,kCAAiB;IACjB,kCAAiB;AACnB,CAAC,EAHW,aAAa,GAAb,qBAAa,KAAb,qBAAa,QAGxB;;;;;;;;;;ACHD,sCAA8B;AAM9B;IAAA;IAKA,CAAC;IAJQ,yBAAa,GAApB,UAAqB,KAAsB;QACzC,IAAM,aAAa,GAAG,iBAAiB,CAAC,IAAI,CAAC,KAAG,KAAO,CAAC,CAAC;QACzD,OAAO,aAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAC7D,CAAC;IACH,kBAAC;AAAD,CAAC;AALY,kCAAW;;;;;;;ACNxB;AACA;AACA;AACA;AACA;AACA,C;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,CAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtBA,6DAA4E;AAI5E;IAAsD,oDAA2B;IAAjF;;IAkCA,CAAC;IA/BQ,4DAAiB,GAAxB;QACE,oBACK,IAAI,CAAC,cAAc,CAAC,wBAAwB,EAAE,IACjD,aAAa,EAAE,IAAI,CAAC,aAAa,EACjC,cAAc,EAAE,IAAI,CAAC,cAAc,EACnC,mBAAmB,EAAE,KAAK,EAC1B,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,EAC1C,uBAAuB,EAAE,CAAC,IAAI,CAAC,sBAAsB,IACrD;IACJ,CAAC;IAED,sBAAc,4DAAc;aAA5B;YACE,OAAO,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC;QAC5G,CAAC;;;OAAA;IAED,sBAAY,oEAAsB;aAAlC;YACE,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;QAC5C,CAAC;;;OAAA;IAED,sBAAc,2DAAa;aAA3B;YACE,IAAI,CAAC,IAAI,CAAC,sBAAsB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE;gBAC/D,OAAO,EAAE,CAAC;aACX;YAED,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,UAAC,EAAmC;oBAAjC,gBAAK,EAAE,YAAG,EAAE,8BAAY,EAAE,gBAAK;gBAAO,QAAC;oBACpF,KAAK;oBACL,GAAG;oBACH,YAAY;oBACZ,KAAK;iBACN,CAAC;YALmF,CAKnF,CAAC,CAAC;QACN,CAAC;;;OAAA;IACH,uCAAC;AAAD,CAAC,CAlCqD,yDAA2B,GAkChF;AAlCY,4EAAgC;;;;;;;;;;ACJ7C,IAAY,mBASX;AATD,WAAY,mBAAmB;IAC7B;;OAEG;IACH,8CAAuB;IACvB;;OAEG;IACH,gDAAyB;AAC3B,CAAC,EATW,mBAAmB,GAAnB,2BAAmB,KAAnB,2BAAmB,QAS9B;AAED,+BAAsC,SAAiB;IACrD,OAAO,CAAC,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC;AAC1C,CAAC;AAFD,sDAEC;;;;;;;ACbD,yC;;;;;;ACAA,yC;;;;;;ACAA,yC;;;;;;ACAA,yC;;;;;;;;;;;;;;;;;ACAA,mCAAqC;AACrC,uCAA0C;AAC1C,yCAAgD;AAChD,0CAAsC;AAEtC,IAAM,cAAc,GAAG,4BAA4B,CAAC;AACpD,IAAM,mBAAmB,GAAM,cAAc,eAAY,CAAC;AAC1D,IAAM,eAAe,GAAM,cAAc,WAAQ,CAAC;AAClD,IAAM,2BAA2B,GAAM,cAAc,aAAU,CAAC;AAChE,IAAM,oBAAoB,GAAM,cAAc,gBAAa,CAAC;AAC5D,IAAM,mBAAmB,GAAM,cAAc,eAAY,CAAC;AAC1D,IAAM,uBAAuB,GAAM,cAAc,mBAAgB,CAAC;AAClE,IAAM,0BAA0B,GAAM,cAAc,YAAS,CAAC;AAC9D,IAAM,iCAAiC,GAAM,0BAA0B,YAAS,CAAC;AACjF,IAAM,cAAc,GAAM,0BAA0B,UAAO,CAAC;AAC5D,IAAM,qBAAqB,GAAM,cAAc,iBAAc,CAAC;AAC9D,IAAM,4BAA4B,GAAM,qBAAqB,YAAS,CAAC;AAEvE,IAAK,WAIJ;AAJD,WAAK,WAAW;IACd,mDAAO;IACP,2CAAG;IACH,yCAAE;AACJ,CAAC,EAJI,WAAW,KAAX,WAAW,QAIf;AAaY,oCAA4B,GAAG;IAC1C,cAAc;IACd,mBAAmB;IACnB,eAAe;IACf,2BAA2B;IAC3B,oBAAoB;IACpB,mBAAmB;IACnB,uBAAuB;IACvB,0BAA0B;IAC1B,iCAAiC;IACjC,cAAc;IACd,qBAAqB;IACrB,4BAA4B;CAC7B,CAAC;AAEF;IAQE,4BAA6B,uBAAoD,EAAmB,mBAA+B;QAAtG,4BAAuB,GAAvB,uBAAuB,CAA6B;QAAmB,wBAAmB,GAAnB,mBAAmB,CAAY;QAN3H,aAAQ,GAAG,WAAW,CAAC,OAAO,CAAC;QAOrC,IAAI,CAAC,OAAO,GAAG,qBAAQ,CAAC,eAAe,CAAC,CAAC;IAC3C,CAAC;IAEM,kCAAK,GAAZ;QACE,OAAO,QAAE,CACP,KAAK,EACL;YACE,SAAS,EAAE,cAAc;YACzB,QAAQ,EAAE,QAAQ;SACnB,EACD,IAAI,CAAC,cAAc,EAAE,EACrB,IAAI,CAAC,mBAAmB,EAAE,CAC3B,CAAC,EAAE,CAAC;IACP,CAAC;IAEM,kCAAK,GAAZ;QACE,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC;QACpC,QAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC;QACxD,QAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QACzD,QAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,uBAAuB,CAAC,CAAC;QACvD,QAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QACxD,QAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,WAAW,CAAC,iCAAiC,CAAC,CAAC;QACvE,QAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,4BAA4B,CAAC,CAAC;IAChE,CAAC;IAEO,2CAAc,GAAtB;QACE,OAAO,QAAE,CACP,KAAK,EACL;YACE,SAAS,EAAE,mBAAmB;YAC9B,cAAc,EAAE,IAAI,CAAC,OAAO;SAC7B,EACD,IAAI,CAAC,UAAU,EAAE,EACjB,IAAI,CAAC,YAAY,EAAE,CACpB,CAAC,EAAE,CAAC;IACP,CAAC;IAEO,uCAAU,GAAlB;QACE,OAAO,QAAE,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,eAAe,EAAE,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,WAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,EAAE,CAAC;IACzG,CAAC;IAEO,gDAAmB,GAA3B;QAAA,iBAcC;QAbC,IAAI,CAAC,cAAc,GAAG,QAAE,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,0BAA0B,EAAE,CAAC,CAAC,EAAE,CAAC;QAE9E,IAAM,IAAI,GAAG,QAAE,CAAC,MAAM,EAAE,EAAE,EAAE,WAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,EAAE,CAAC;QAChE,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAEtC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC;YACjC,IAAI,EAAE,WAAC,CAAC,8BAA8B,CAAC;YACvC,SAAS,EAAE,qBAAqB;YAChC,MAAM,EAAE,cAAM,YAAI,CAAC,mBAAmB,EAAE,EAA1B,CAA0B;SACzC,CAAC,CAAC;QACH,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAEjD,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAEO,yCAAY,GAApB;QAAA,iBAmCC;QAlCC,IAAM,gBAAgB,GAAG,QAAE,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,2BAA2B,EAAE,CAAC,CAAC,EAAE,CAAC;QAElF,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC;YAChC,IAAI,EAAE,WAAC,CAAC,KAAK,CAAC;YACd,SAAS,EAAE,oBAAoB;YAC/B,MAAM,EAAE,cAAM,YAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,EAA7B,CAA6B;YAC3C,IAAI,EAAE;gBACJ,SAAS,EAAE,cAAc;gBACzB,OAAO,EAAE,mBAAQ,CAAC,KAAK,CAAC,QAAQ;aACjC;YACD,UAAU,EAAE;gBACV,WAAW,EAAE,KAAK;gBAClB,eAAe,EAAE,IAAI,CAAC,OAAO;aAC9B;SACF,CAAC,CAAC;QACH,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QACrD,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAE7C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC;YAC/B,IAAI,EAAE,WAAC,CAAC,IAAI,CAAC;YACb,SAAS,EAAE,mBAAmB;YAC9B,MAAM,EAAE,cAAM,YAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAA9B,CAA8B;YAC5C,IAAI,EAAE;gBACJ,SAAS,EAAE,cAAc;gBACzB,OAAO,EAAE,mBAAQ,CAAC,KAAK,CAAC,UAAU;aACnC;YACD,UAAU,EAAE;gBACV,WAAW,EAAE,KAAK;gBAClB,eAAe,EAAE,IAAI,CAAC,OAAO;aAC9B;SACF,CAAC,CAAC;QACH,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE5C,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAEO,wCAAW,GAAnB,UAAoB,OAAuB;QACzC,IAAM,MAAM,GAAG,QAAE,CAAC,QAAQ,eAAO,CAAC,OAAO,CAAC,UAAU,IAAI,EAAE,CAAC,IAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,IAAG,CAAC,EAAE,CAAC;QAEhH,IAAI,OAAO,CAAC,IAAI,EAAE;YAChB,IAAM,IAAI,GAAG,QAAE,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;YACxF,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACzB,IAAM,IAAI,GAAG,QAAE,CAAC,MAAM,EAAE,EAAE,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;YAC7C,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;SAC1B;aAAM;YACL,MAAM,CAAC,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;SACjC;QAED,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,cAAM,cAAO,CAAC,MAAM,EAAE,EAAhB,CAAgB,CAAC,CAAC;QAEzD,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,+CAAkB,GAA1B,UAA2B,QAAiB;QAC1C,IAAI,IAAI,CAAC,QAAQ,KAAK,WAAW,CAAC,OAAO,IAAI,QAAQ,KAAK,CAAC,IAAI,CAAC,QAAQ,KAAK,WAAW,CAAC,GAAG,CAAC,EAAE;YAC7F,OAAO;SACR;QACD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,CAAC;QAC5D,QAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,CAAC,uBAAuB,EAAE,QAAQ,CAAC,CAAC;QAClE,QAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,YAAY,CAAC,cAAc,EAAE,KAAG,QAAU,CAAC,CAAC;QAC/D,QAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,uBAAuB,EAAE,CAAC,QAAQ,CAAC,CAAC;QAClE,QAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC,cAAc,EAAE,KAAG,CAAC,QAAU,CAAC,CAAC;QAC/D,QAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,QAAQ,CAAC,iCAAiC,CAAC,CAAC;QACpE,QAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,4BAA4B,EAAE,CAAC,QAAQ,CAAC,CAAC;QACzE,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC;IAEO,gDAAmB,GAA3B;QACE,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC7B,CAAC;IACH,yBAAC;AAAD,CAAC;AAzIY,gDAAkB;;;;;;;;;;AClD/B,mCAAqC;AACrC,yCAAgD;AAChD,uCAA0C;AAE1C,IAAM,cAAc,GAAG,sBAAsB,CAAC;AAC9C,IAAM,0BAA0B,GAAM,cAAc,sBAAmB,CAAC;AACxE,IAAM,4BAA4B,GAAM,cAAc,wBAAqB,CAAC;AAC5E,IAAM,gBAAgB,GAAM,cAAc,YAAS,CAAC;AACpD,IAAM,sBAAsB,GAAM,gBAAgB,WAAQ,CAAC;AAC3D,IAAM,qBAAqB,GAAM,gBAAgB,UAAO,CAAC;AACzD,IAAM,uBAAuB,GAAM,gBAAgB,YAAS,CAAC;AAEhD,+BAAuB,GAAG;IACrC,0BAA0B;IAC1B,4BAA4B;IAC5B,gBAAgB;IAChB,sBAAsB;IACtB,qBAAqB;IACrB,uBAAuB;CACxB,CAAC;AAEF;IAkBE,uBACU,gBAA6B,EAC7B,cAA2B,EAC3B,WAAmB,EACnB,QAAwC;QAHxC,qBAAgB,GAAhB,gBAAgB,CAAa;QAC7B,mBAAc,GAAd,cAAc,CAAa;QAC3B,gBAAW,GAAX,WAAW,CAAQ;QACnB,aAAQ,GAAR,QAAQ,CAAgC;QArB1C,eAAU,GAAG,KAAK,CAAC;QAuBzB,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAChC,CAAC;IApBD,sBAAW,uCAAY;aAAvB;YACE,OAAO,IAAI,CAAC,MAAM,CAAC;QACrB,CAAC;;;OAAA;IAED,sBAAY,iCAAM;aAAlB,UAAmB,MAAc;YAC/B,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,MAAM,GAAM,MAAM,OAAI,CAAC;QACrD,CAAC;;;OAAA;IAED,sBAAY,wCAAa;aAAzB;YACE,OAAO,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC;QAC1C,CAAC;;;OAAA;IAYM,8CAAsB,GAA7B;QACE,IAAI,CAAC,sBAAsB,EAAE,CAAC;IAChC,CAAC;IAEO,mCAAW,GAAnB;QAAA,iBAUC;QATC,IAAI,CAAC,MAAM,GAAG,QAAE,CACd,QAAQ,EACR,EAAE,SAAS,EAAE,gBAAgB,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAC,CAAC,UAAU,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,EACnH,CAAC,IAAI,CAAC,WAAW,GAAG,QAAE,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,sBAAsB,EAAE,CAAC,CAAC,EAAE,CAAC,EACzE,CAAC,IAAI,CAAC,UAAU,GAAG,QAAE,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,qBAAqB,EAAE,CAAC,CAAC,EAAE,CAAC,CACxE,CAAC,EAAE,CAAC;QACL,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,cAAM,YAAI,CAAC,MAAM,EAAE,EAAb,CAAa,CAAC,CAAC;QAC3D,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAEO,8CAAsB,GAA9B;QACE,IAAM,cAAc,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC;QAC7D,QAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,WAAW,CAAC,0BAA0B,EAAE,cAAc,CAAC,CAAC;QAClF,QAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,uBAAuB,EAAE,cAAc,CAAC,CAAC;QACrE,IAAI,cAAc,EAAE;YAClB,IAAI,CAAC,wBAAwB,EAAE,CAAC;SACjC;aAAM;YACL,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,wBAAwB,EAAE,CAAC;YAChC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC;SACzC;IACH,CAAC;IAEO,oCAAY,GAApB;QACE,IAAI,CAAC,WAAW,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,WAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,WAAC,CAAC,UAAU,CAAC,CAAC;QAC7E,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,cAAc,EAAE,KAAG,IAAI,CAAC,UAAY,CAAC,CAAC;QAC/D,IAAI,CAAC,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,mBAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAQ,CAAC,KAAK,CAAC,SAAS,CAAC;IAClG,CAAC;IAEO,gDAAwB,GAAhC;QACE,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,QAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,WAAW,CAAC,4BAA4B,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACrF,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;IACxE,CAAC;IAEO,8BAAM,GAAd;QACE,IAAI,CAAC,UAAU,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC;QACnC,IAAI,CAAC,wBAAwB,EAAE,CAAC;QAChC,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SAChC;IACH,CAAC;IACH,oBAAC;AAAD,CAAC;AA5EY,sCAAa;;;;;;;;;;ACrB1B,iDAA8D;AAC9D,uCAA0C;AAC1C,mCAA0C;AAC1C,4CAAyD;AACzD,yBAAmC;AAgBnC,IAAM,cAAc,GAAG,8BAA8B,CAAC;AACtD,IAAM,iBAAiB,GAAM,cAAc,aAAU,CAAC;AACtD,IAAM,6BAA6B,GAAM,cAAc,yBAAsB,CAAC;AAC9E,IAAM,iBAAiB,GAAM,cAAc,kBAAe,CAAC;AAC3D,IAAM,uBAAuB,GAAM,iBAAiB,WAAQ,CAAC;AAC7D,IAAM,yBAAyB,GAAM,cAAc,aAAU,CAAC;AAC9D,IAAM,0BAA0B,GAAM,yBAAyB,cAAW,CAAC;AAC3E,IAAM,uBAAuB,GAAM,yBAAyB,WAAQ,CAAC;AACrE,IAAM,yBAAyB,GAAM,cAAc,qBAAkB,CAAC;AACtE,IAAM,qBAAqB,GAAM,cAAc,iBAAc,CAAC;AAC9D,IAAM,uBAAuB,GAAM,cAAc,mBAAgB,CAAC;AAClE,IAAM,UAAU,GAAG,yBAAyB,CAAC;AAEhC,kCAA0B,GAAG;IACxC,cAAc;IACd,iBAAiB;IACjB,6BAA6B;IAC7B,iBAAiB;IACjB,uBAAuB;IACvB,yBAAyB;IACzB,0BAA0B;IAC1B,uBAAuB;IACvB,yBAAyB;IACzB,qBAAqB;IACrB,uBAAuB;CACxB,CAAC;AAEF;IAQE,0BAAmB,OAAiC;QAApD,iBAIC;QAJkB,YAAO,GAAP,OAAO,CAA0B;QAF5C,yBAAoB,GAAG,KAAK,CAAC;QAGnC,IAAI,CAAC,KAAK,GAAG,IAAI,iCAAe,CAAC,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE;YACvG,WAAW,EAAE,cAAM,YAAI,CAAC,UAAU,EAAE,EAAjB,CAAiB;SACrC,CAAC,CAAC;IACL,CAAC;IAEO,qCAAU,GAAlB;QACE,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,MAAI,iBAAiB,WAAQ,CAAC,CAAC;IACzE,CAAC;IAED,sBAAW,qCAAO;aAAlB;YACE,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE;gBAC3D,OAAO,IAAI,CAAC;aACb;YACD,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC;QACpC,CAAC;;;OAAA;IAEM,+BAAI,GAAX,UAAY,MAAmB;QAA/B,iBAcC;QAbC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;YACd,MAAM;YACN,KAAK,EAAE,QAAE,CAAC,MAAM,EAAE,EAAE,EAAE,WAAC,CAAC,wCAAwC,CAAC,CAAC,CAAC,EAAE;YACrE,OAAO,EAAE,IAAI,CAAC,YAAY,EAAE;YAC5B,UAAU,EAAE;gBACV,IAAI,KAAI,CAAC,oBAAoB,EAAE;oBAC7B,KAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;oBACxB,KAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;iBACnC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;SACF,CAAC,CAAC;QACH,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;IACnC,CAAC;IAEO,uCAAY,GAApB;QACE,OAAO,QAAE,CACP,KAAK,EACL;YACE,SAAS,EAAE,iBAAiB;SAC7B,EACD,IAAI,CAAC,uBAAuB,EAAE,EAC9B,IAAI,CAAC,mBAAmB,EAAE,CAC3B,CAAC,EAAE,CAAC;IACP,CAAC;IAEO,kDAAuB,GAA/B;QACE,IAAM,cAAc,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAClD,OAAO,QAAE,CACP,KAAK,EACL;YACE,SAAS,EAAE,6BAA6B;SACzC,EACD,IAAI,CAAC,YAAY,EAAE,EACnB,cAAc,CACf,CAAC,EAAE,CAAC;IACP,CAAC;IAEO,8CAAmB,GAA3B;QACE,OAAO,QAAE,CACP,KAAK,EACL;YACE,SAAS,EAAE,yBAAyB;SACrC,EACD,IAAI,CAAC,eAAe,EAAE,EACtB,IAAI,CAAC,iBAAiB,EAAE,CACzB,CAAC;IACJ,CAAC;IAEO,uCAAY,GAApB;QAAA,iBAMC;QALC,IAAM,gBAAgB,GAAG,QAAE,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,iBAAiB,EAAE,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC,CAAC,EAAE,CAAC;QACvG,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAM,IAAI,YAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,EAAnC,CAAmC,CAAC,CAAC;QACvF,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;QACzB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,qBAAW,IAAI,uBAAgB,CAAC,WAAW,CAAC,WAAW,CAAC,UAAU,EAAE,CAAC,EAAtD,CAAsD,CAAC,CAAC;QAC5F,OAAO,gBAAgB,CAAC;IAC1B,CAAC;IAEO,4CAAiB,GAAzB;QACE,OAAO,QAAE,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,uBAAuB,EAAE,EAAE,WAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,EAAE,CAAC;IAChG,CAAC;IAEO,8CAAmB,GAA3B;QACE,OAAO,CAAC,IAAI,CAAC,cAAc,GAAG,QAAE,CAC9B,KAAK,EACL,EAAE,SAAS,EAAE,kBAAgB,yBAA2B,EAAE,EAC1D,QAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,uBAAuB,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,WAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EACrF,CAAC,IAAI,CAAC,eAAe,GAAG,QAAE,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,0BAA0B,EAAE,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;aAC9G,EAAyB,CAAC,CAC9B,CAAC,CAAC;IACL,CAAC;IAEO,0CAAe,GAAvB;QAAA,iBAQC;QAPC,IAAM,MAAM,GAAG,QAAE,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,qBAAqB,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,WAAC,CAAC,MAAM,CAAC,CAAC,CAAC;QAC7F,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE;YACjB,KAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,CAAC;YAC/B,KAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;YAClC,KAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC,EAAE,CAAC;IACnB,CAAC;IAEO,4CAAiB,GAAzB;QAAA,iBAIC;QAHC,IAAM,MAAM,GAAG,QAAE,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,uBAAuB,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,WAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QACjG,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,cAAM,YAAI,CAAC,KAAK,CAAC,KAAK,EAAE,EAAlB,CAAkB,CAAC,CAAC;QAC7C,OAAO,MAAM,CAAC,EAAE,CAAC;IACnB,CAAC;IAEO,iDAAsB,GAA9B,UAA+B,MAAe;QAA9C,iBAcC;QAbC,OAAO,IAAI,yBAAW,CACpB,qBAAW;YACT,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,EAAE;gBAC7B,OAAO;aACR;YACD,KAAI,CAAC,cAAc,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YACpE,KAAI,CAAC,eAAe,CAAC,QAAQ,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC;YACnD,KAAI,CAAC,cAAc,GAAG,MAAM,CAAC;QAC/B,CAAC,EACD,MAAM,CAAC,KAAK,EACZ,QAAQ,EACR,kBAAgB,MAAM,CAAC,EAAI,CAC5B,CAAC;IACJ,CAAC;IACH,uBAAC;AAAD,CAAC;AAhIY,4CAAgB;;;;;;;AC/C7B,yC;;;;;;ACAA,yC;;;;;;;;;;;;;;;;;ACCA,0CAAsC;AACtC,iDAAgE;AAChE,yCAAgD;AAChD,sDAA+D;AAC/D,mCAA0C;AAC1C,uCAA0C;AAE1C,wDAK8C;AAC9C,2CAAsD;AAEtD,qCAA0C;AAE1C,oDAAwF;AAExF,IAAM,kBAAkB,GAAG,0CAA0C,CAAC;AACtE,IAAM,wBAAwB,GAAM,kBAAkB,WAAQ,CAAC;AAC/D,IAAM,8BAA8B,GAAM,wBAAwB,WAAQ,CAAC;AAC3E,IAAM,iCAAiC,GAAM,wBAAwB,cAAW,CAAC;AACjF,IAAM,0BAA0B,GAAM,kBAAkB,aAAU,CAAC;AACnE,IAAM,oCAAoC,GAAM,0BAA0B,eAAY,CAAC;AACvF,IAAM,iCAAiC,GAAM,0BAA0B,YAAS,CAAC;AACjF,IAAM,gBAAgB,GAAM,0BAA0B,aAAU,CAAC;AACjE,IAAM,qBAAqB,GAAM,gBAAgB,SAAM,CAAC;AACxD,IAAM,gBAAgB,GAAM,kBAAkB,YAAS,CAAC;AACxD,IAAM,sBAAsB,GAAM,gBAAgB,WAAQ,CAAC;AAC3D,IAAM,oBAAoB,GAAM,gBAAgB,SAAM,CAAC;AAE1C,mDAA2C,GAAG;IACzD,kBAAkB;IAClB,wBAAwB;IACxB,8BAA8B;IAC9B,iCAAiC;IACjC,0BAA0B;IAC1B,oCAAoC;IACpC,iCAAiC;IACjC,gBAAgB;IAChB,qBAAqB;IACrB,gBAAgB;IAChB,sBAAsB;IACtB,oBAAoB;CACrB,CAAC;AAEF;IAUE,2CACmB,OAUhB;QAVgB,YAAO,GAAP,OAAO,CAUvB;QApBc,YAAO,GAAG,qBAAQ,CAAC,8BAA8B,CAAC,CAAC;QACnD,cAAS,GAAG,qBAAQ,CAAC,0BAA0B,CAAC,CAAC;QACjD,eAAU,GAAG,qBAAQ,CAAC,iCAAiC,CAAC,CAAC;QAKlE,aAAQ,GAAG,KAAK,CAAC;IActB,CAAC;IAEJ,sBAAW,sDAAO;aAAlB;YACE,OAAO,IAAI,CAAC,aAAa,CAAC;QAC5B,CAAC;;;OAAA;IAEM,iDAAK,GAAZ;QACE,IAAM,oBAAoB,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;QACjI,IAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QACpE,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,OAAO,QAAE,CACP,IAAI,EACJ;YACE,SAAS,EAAE,kBAAkB;YAC7B,cAAc,EAAE,IAAI,CAAC,OAAO;SAC7B,EACD,KAAK,EACL,oBAAoB,CACrB,CAAC,EAAmB,CAAC;IACxB,CAAC;IAEO,sDAAU,GAAlB,UAAmB,QAAgB;QACjC,IAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QACjD,QAAQ,CAAC,SAAS,GAAG,QAAQ,CAAC;QAC9B,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEO,sDAAU,GAAlB,UAAmB,QAAgB;QAAnC,iBAOC;QANC,IAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC9C,IAAM,KAAK,GAAG,QAAE,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,8BAA8B,EAAE,EAAE,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1F,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrB,IAAM,KAAK,GAAG,QAAE,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,wBAAwB,EAAE,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;QACnF,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,cAAM,YAAI,CAAC,MAAM,EAAE,EAAb,CAAa,CAAC,CAAC;QACvC,OAAO,KAAK,CAAC;IACf,CAAC;IAEO,yDAAa,GAArB,UAAsB,QAAgB;QAAtC,iBAcC;QAbC,IAAI,CAAC,QAAQ,GAAG,QAAE,CAAC,KAAK,EAAE;YACxB,IAAI,EAAE,QAAQ;YACd,QAAQ,EAAE,CAAC;YACX,YAAY,EAAE,IAAI,CAAC,SAAS;YAC5B,SAAS,EAAE,iCAAiC;YAC5C,EAAE,EAAE,IAAI,CAAC,UAAU;SACpB,CAAC,CAAC;QACH,IAAI,mCAAgB,EAAE;aACnB,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC;aAC1B,SAAS,CAAC,WAAC,CAAC,sBAAsB,EAAE,QAAQ,CAAC,CAAC;aAC9C,uBAAuB,CAAC,cAAM,YAAI,CAAC,MAAM,EAAE,EAAb,CAAa,CAAC;aAC5C,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAEO,qEAAyB,GAAjC,UAAkC,cAA8C,EAAE,KAAuB;QAAzG,iBAgBC;QAfC,IAAM,eAAe,GAAG,QAAE,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,CAAC;QACnE,IAAI,CAAC,yBAAyB,GAAG,QAAE,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,oCAAoC,EAAE,EAAE,eAAe,CAAC,CAAC;QACjH,IAAI,CAAC,oBAAoB,GAAG,QAAE,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,0BAA0B,EAAE,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACrI,IAAI,CAAC,aAAa,GAAG,mCAAY,CAAC,eAAe,CAAC,EAAE,EAAE;YACpD,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,WAAC,CAAC,uBAAuB,EAAE,cAAc,CAAC,QAAQ,CAAC;YAC1D,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;SAClC,CAAC,CAAC,IAAI,CAAC,oBAAU;YAChB,UAAU,CAAC,WAAW,CAAC,KAAI,CAAC,yBAAyB,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;QACnF,CAAC,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YACvB,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,EAAE,CAAC,CAAC;YAChE,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,EAAE,CAAC,EAAE,CAAC,CAAC;SACnE;QACD,OAAO,IAAI,CAAC,oBAAoB,CAAC;IACnC,CAAC;IAEO,qEAAyB,GAAjC,UAAkC,cAA8C,EAAE,KAAuB;QAAzG,iBAMC;QALC,IAAM,OAAO,GAAG,QAAE,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,qBAAqB,EAAE,EAAE,8CAAyB,CAAC,cAAc,CAAC,CAAC,CAAC;QAC3G,0CAAqB,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,cAAI,IAAI,YAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,EAAvC,CAAuC,CAAC,CAAC;QACvH,IAAM,SAAS,GAAG,QAAE,CAAC,KAAK,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;QACzC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACxB,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,4DAAgB,GAAxB;QACE,IAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;QACpD,IAAI,CAAC,IAAI,CAAC,aAAK,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,MAAO,EAAU,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;QACtF,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,0DAAc,GAAtB;QACE,IAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;QAClD,IAAI,CAAC,IAAI,CAAE,IAAI,CAAC,EAAwB,CAAC,IAAI,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,qDAAS,GAAjB,UAAkB,SAAiB;QAAnC,iBAaC;QAZC,IAAM,OAAO,GAAG,QAAE,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,qBAAmB,SAAW,EAAE,CAAC,CAAC;QACvE,IAAI,uBAAU,CACZ,OAAO,CAAC,EAAE,EACV;YACE,YAAY,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY;YACvC,YAAY,EAAE,cAAI,IAAI,YAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,EAAE,EAAE,IAAI,CAAC,EAA9C,CAA8C;YACpE,qBAAqB,EAAE,IAAI,CAAC,OAAO,CAAC,qBAAqB;SAC1D,eACI,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAE,aAAa,EAAE,IAAI,CAAC,oBAAoB,CAAC,EAAE,KACvE,IAAI,CAAC,OAAO,CAAC,MAAM,CACpB,CAAC;QACF,OAAO,OAAO,CAAC;IACjB,CAAC;IAEO,kDAAM,GAAd;QACE,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC/B,IAAI,CAAC,cAAc,EAAE,CAAC;QACtB,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,mBAAmB,EAAE,CAAC;SAC5B;aAAM;YACL,IAAI,CAAC,qBAAqB,EAAE,CAAC;SAC9B;IACH,CAAC;IAEO,gEAAoB,GAA5B;QACE,IAAM,MAAM,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7D,IAAI,CAAC,MAAM,EAAE;YACX,OAAO;SACR;QACD,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAC7F,CAAC;IAEO,0DAAc,GAAtB;QACE,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,eAAe,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;QACtE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,mBAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACzF,IAAI,CAAC,oBAAoB,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;QACnF,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,iCAAiC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzF,IAAI,CAAC,oBAAoB,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAI,IAAI,CAAC,yBAAyB,CAAC,EAAE,CAAC,YAAY,OAAI,CAAC,CAAC,CAAC,KAAK,CAAC;QAC1H,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC9B,CAAC;IAEO,+DAAmB,GAA3B;QACE,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,cAAc,CACxD,kDAAwB,CAAC,4BAA4B,EACrD;YACE,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;YACtC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,UAAU;SACnD,EACD,IAAI,CAAC,QAAQ,CAAC,EAAE,CACjB,CAAC;IACJ,CAAC;IAEO,iEAAqB,GAA7B;QACE,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,cAAc,CACxD,kDAAwB,CAAC,8BAA8B,EACvD;YACE,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;YACtC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,UAAU;SACnD,EACD,IAAI,CAAC,QAAQ,CAAC,EAAE,CACjB,CAAC;IACJ,CAAC;IAEO,mEAAuB,GAA/B,UAAgC,OAAoB,EAAE,IAAY;QAChE,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,aAAa,CACvD,kDAAwB,CAAC,gCAAgC,EACzD;YACE,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;YACtC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK;YACxC,MAAM,EAAE,aAAK,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC;YAC1D,WAAW,EAAE,IAAI;YACjB,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,UAAU;SACnD,EACD,IAAI,CAAC,OAAO,CAAC,MAAM,EACnB,OAAO,CACR,CAAC;IACJ,CAAC;IAEO,wEAA4B,GAApC,UAAqC,IAAuB;QAC1D,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,aAAa,CACvD,kDAAwB,CAAC,oCAAoC,EAC7D;YACE,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS;YACtC,QAAQ,EAAE,IAAI,CAAC,SAAS;YACxB,OAAO,EAAE,IAAI,CAAC,IAAI;YAClB,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,UAAU;SACnD,EACD,IAAI,CAAC,OAAO,CAAC,MAAM,EACnB,IAAI,CACL,CAAC;IACJ,CAAC;IACH,wCAAC;AAAD,CAAC;AA5MY,8EAAiC;;;;;;;AChD9C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,gBAAgB,iBAAiB;AACjC;AACA;AACA,wCAAwC,gBAAgB;AACxD,IAAI;AACJ;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iBAAiB;AACjC;AACA;AACA;AACA;AACA,YAAY,oBAAoB;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACjDA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACD;AACA,CAAC;;AAED;AACA;AACA;;AAEA,cAAc,mBAAO,CAAC,GAAQ;;AAE9B;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA,iBAAiB,mBAAmB;AACpC;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,iBAAiB,sBAAsB;AACvC;;AAEA;AACA,mBAAmB,2BAA2B;;AAE9C;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAgB,mBAAmB;AACnC;AACA;;AAEA;AACA;;AAEA,iBAAiB,2BAA2B;AAC5C;AACA;;AAEA,QAAQ,uBAAuB;AAC/B;AACA;AACA,GAAG;AACH;;AAEA,iBAAiB,uBAAuB;AACxC;AACA;;AAEA,2BAA2B;AAC3B;AACA;AACA;;AAEA;AACA;AACA;;AAEA,gBAAgB,iBAAiB;AACjC;AACA;AACA;AACA;AACA;AACA,cAAc;;AAEd,kDAAkD,sBAAsB;AACxE;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA,GAAG;AACH;AACA;AACA;AACA,EAAE;AACF;AACA,EAAE;AACF;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,EAAE;AACF;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;;AAEA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,EAAE;AACF;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,uDAAuD;AACvD;;AAEA,6BAA6B,mBAAmB;;AAEhD;;AAEA;;AAEA;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7WA,kCAAuB;AAEvB,6CAAyD;AAAhD,+CAAW;AACpB,gDAAkG;AAAzF,2DAAe;AAAE,+EAAyB;AACnD,6CAA4D;AAAnD,wCAAc,CAAK;AAC5B,iDAAoE;AAA3D,gDAAkB,CAAK;AAChC,gDAAwD;AAA/C,wDAAc;AACvB,0CAA8C;AAA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","file":"CoveoJsSearch.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Coveo__temporary\"] = factory();\n\telse\n\t\troot[\"Coveo__temporary\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition"," \t// install a JSONP callback for chunk loading\n \tvar parentJsonpFunction = window[\"webpackJsonpCoveo__temporary\"];\n \twindow[\"webpackJsonpCoveo__temporary\"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [], result;\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules);\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t};\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// objects to store loaded and loading chunks\n \tvar installedChunks = {\n \t\t88: 0,\n \t\t1: 0,\n \t\t2: 0,\n \t\t3: 0,\n \t\t4: 0,\n \t\t5: 0,\n \t\t6: 0,\n \t\t7: 0,\n \t\t8: 0,\n \t\t9: 0,\n \t\t10: 0,\n \t\t11: 0,\n \t\t12: 0,\n \t\t13: 0,\n \t\t14: 0,\n \t\t15: 0,\n \t\t16: 0,\n \t\t17: 0,\n \t\t18: 0,\n \t\t19: 0,\n \t\t20: 0,\n \t\t21: 0,\n \t\t22: 0,\n \t\t23: 0,\n \t\t24: 0,\n \t\t25: 0,\n \t\t26: 0,\n \t\t27: 0,\n \t\t28: 0,\n \t\t29: 0,\n \t\t30: 0,\n \t\t31: 0,\n \t\t32: 0,\n \t\t33: 0,\n \t\t34: 0,\n \t\t35: 0,\n \t\t36: 0,\n \t\t37: 0,\n \t\t38: 0,\n \t\t39: 0,\n \t\t40: 0,\n \t\t41: 0,\n \t\t42: 0,\n \t\t43: 0,\n \t\t44: 0,\n \t\t45: 0,\n \t\t46: 0,\n \t\t47: 0,\n \t\t48: 0,\n \t\t49: 0,\n \t\t50: 0,\n \t\t51: 0,\n \t\t52: 0,\n \t\t53: 0,\n \t\t54: 0,\n \t\t55: 0,\n \t\t56: 0,\n \t\t57: 0,\n \t\t58: 0,\n \t\t59: 0,\n \t\t60: 0,\n \t\t61: 0,\n \t\t62: 0,\n \t\t63: 0,\n \t\t64: 0,\n \t\t65: 0,\n \t\t66: 0,\n \t\t67: 0,\n \t\t68: 0,\n \t\t69: 0,\n \t\t70: 0,\n \t\t71: 0,\n \t\t72: 0,\n \t\t73: 0,\n \t\t74: 0,\n \t\t75: 0,\n \t\t76: 0,\n \t\t77: 0,\n \t\t78: 0,\n \t\t79: 0,\n \t\t80: 0,\n \t\t81: 0,\n \t\t82: 0,\n \t\t83: 0,\n \t\t84: 0,\n \t\t85: 0,\n \t\t86: 0,\n \t\t87: 0\n \t};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData === 0) {\n \t\t\treturn new Promise(function(resolve) { resolve(); });\n \t\t}\n\n \t\t// a Promise means \"currently loading\".\n \t\tif(installedChunkData) {\n \t\t\treturn installedChunkData[2];\n \t\t}\n\n \t\t// setup Promise in chunk cache\n \t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t});\n \t\tinstalledChunkData[2] = promise;\n\n \t\t// start chunk loading\n \t\tvar head = document.getElementsByTagName('head')[0];\n \t\tvar script = document.createElement('script');\n \t\tscript.type = \"text/javascript\";\n \t\tscript.charset = 'utf-8';\n \t\tscript.async = true;\n \t\tscript.timeout = 120000;\n\n \t\tif (__webpack_require__.nc) {\n \t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t}\n \t\tscript.src = __webpack_require__.p + \"\" + ({\"0\":\"RelevanceInspector\",\"3\":\"FacetsMobileMode\"}[chunkId]||chunkId) + \"__\" + \"7f0661f464388d8314e9\" + \".js\";\n \t\tvar timeout = setTimeout(onScriptComplete, 120000);\n \t\tscript.onerror = script.onload = onScriptComplete;\n \t\tfunction onScriptComplete() {\n \t\t\t// avoid mem leaks in IE.\n \t\t\tscript.onerror = script.onload = null;\n \t\t\tclearTimeout(timeout);\n \t\t\tvar chunk = installedChunks[chunkId];\n \t\t\tif(chunk !== 0) {\n \t\t\t\tif(chunk) {\n \t\t\t\t\tchunk[1](new Error('Loading chunk ' + chunkId + ' failed.'));\n \t\t\t\t}\n \t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t}\n \t\t};\n \t\thead.appendChild(script);\n\n \t\treturn promise;\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"js/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 808);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 7f0661f464388d8314e9","// Some functions take a variable number of arguments, or a few expected\n// arguments at the beginning and then a variable number of values to operate\n// on. This helper accumulates all remaining arguments past the function’s\n// argument length (or an explicit `startIndex`), into an array that becomes\n// the last argument. Similar to ES6’s \"rest parameter\".\nexport default function restArguments(func, startIndex) {\n  startIndex = startIndex == null ? func.length - 1 : +startIndex;\n  return function() {\n    var length = Math.max(arguments.length - startIndex, 0),\n        rest = Array(length),\n        index = 0;\n    for (; index < length; index++) {\n      rest[index] = arguments[index + startIndex];\n    }\n    switch (startIndex) {\n      case 0: return func.call(this, rest);\n      case 1: return func.call(this, arguments[0], rest);\n      case 2: return func.call(this, arguments[0], arguments[1], rest);\n    }\n    var args = Array(startIndex + 1);\n    for (index = 0; index < startIndex; index++) {\n      args[index] = arguments[index];\n    }\n    args[startIndex] = rest;\n    return func.apply(this, args);\n  };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/restArguments.js\n// module id = null\n// module chunks = ","// Is a given variable an object?\nexport default function isObject(obj) {\n  var type = typeof obj;\n  return type === 'function' || type === 'object' && !!obj;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isObject.js\n// module id = null\n// module chunks = ","// Is a given value equal to null?\nexport default function isNull(obj) {\n  return obj === null;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isNull.js\n// module id = null\n// module chunks = ","// Is a given variable undefined?\nexport default function isUndefined(obj) {\n  return obj === void 0;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isUndefined.js\n// module id = null\n// module chunks = ","import { toString } from './_setup.js';\n\n// Is a given value a boolean?\nexport default function isBoolean(obj) {\n  return obj === true || obj === false || toString.call(obj) === '[object Boolean]';\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isBoolean.js\n// module id = null\n// module chunks = ","// Is a given value a DOM element?\nexport default function isElement(obj) {\n  return !!(obj && obj.nodeType === 1);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isElement.js\n// module id = null\n// module chunks = ","import { toString } from './_setup.js';\n\n// Internal function for creating a `toString`-based type tester.\nexport default function tagTester(name) {\n  var tag = '[object ' + name + ']';\n  return function(obj) {\n    return toString.call(obj) === tag;\n  };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_tagTester.js\n// module id = null\n// module chunks = ","import tagTester from './_tagTester.js';\n\nexport default tagTester('String');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isString.js\n// module id = null\n// module chunks = ","import tagTester from './_tagTester.js';\n\nexport default tagTester('Number');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isNumber.js\n// module id = null\n// module chunks = ","import tagTester from './_tagTester.js';\n\nexport default tagTester('Date');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isDate.js\n// module id = null\n// module chunks = ","import tagTester from './_tagTester.js';\n\nexport default tagTester('RegExp');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isRegExp.js\n// module id = null\n// module chunks = ","import tagTester from './_tagTester.js';\n\nexport default tagTester('Error');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isError.js\n// module id = null\n// module chunks = ","import tagTester from './_tagTester.js';\n\nexport default tagTester('Symbol');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isSymbol.js\n// module id = null\n// module chunks = ","import tagTester from './_tagTester.js';\n\nexport default tagTester('ArrayBuffer');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isArrayBuffer.js\n// module id = null\n// module chunks = ","import tagTester from './_tagTester.js';\nimport { root } from './_setup.js';\n\nvar isFunction = tagTester('Function');\n\n// Optimize `isFunction` if appropriate. Work around some `typeof` bugs in old\n// v8, IE 11 (#1621), Safari 8 (#1929), and PhantomJS (#2236).\nvar nodelist = root.document && root.document.childNodes;\nif (typeof /./ != 'function' && typeof Int8Array != 'object' && typeof nodelist != 'function') {\n  isFunction = function(obj) {\n    return typeof obj == 'function' || false;\n  };\n}\n\nexport default isFunction;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isFunction.js\n// module id = null\n// module chunks = ","import tagTester from './_tagTester.js';\n\nexport default tagTester('Object');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_hasObjectTag.js\n// module id = null\n// module chunks = ","import { supportsDataView } from './_setup.js';\nimport hasObjectTag from './_hasObjectTag.js';\n\n// In IE 10 - Edge 13, `DataView` has string tag `'[object Object]'`.\n// In IE 11, the most common among them, this problem also applies to\n// `Map`, `WeakMap` and `Set`.\nexport var hasStringTagBug = (\n      supportsDataView && hasObjectTag(new DataView(new ArrayBuffer(8)))\n    ),\n    isIE11 = (typeof Map !== 'undefined' && hasObjectTag(new Map));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_stringTagBug.js\n// module id = null\n// module chunks = ","import tagTester from './_tagTester.js';\nimport isFunction from './isFunction.js';\nimport isArrayBuffer from './isArrayBuffer.js';\nimport { hasStringTagBug } from './_stringTagBug.js';\n\nvar isDataView = tagTester('DataView');\n\n// In IE 10 - Edge 13, we need a different heuristic\n// to determine whether an object is a `DataView`.\nfunction ie10IsDataView(obj) {\n  return obj != null && isFunction(obj.getInt8) && isArrayBuffer(obj.buffer);\n}\n\nexport default (hasStringTagBug ? ie10IsDataView : isDataView);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isDataView.js\n// module id = null\n// module chunks = ","import { nativeIsArray } from './_setup.js';\nimport tagTester from './_tagTester.js';\n\n// Is a given value an array?\n// Delegates to ECMA5's native `Array.isArray`.\nexport default nativeIsArray || tagTester('Array');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isArray.js\n// module id = null\n// module chunks = ","import { hasOwnProperty } from './_setup.js';\n\n// Internal function to check whether `key` is an own property name of `obj`.\nexport default function has(obj, key) {\n  return obj != null && hasOwnProperty.call(obj, key);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_has.js\n// module id = null\n// module chunks = ","import tagTester from './_tagTester.js';\nimport has from './_has.js';\n\nvar isArguments = tagTester('Arguments');\n\n// Define a fallback version of the method in browsers (ahem, IE < 9), where\n// there isn't any inspectable \"Arguments\" type.\n(function() {\n  if (!isArguments(arguments)) {\n    isArguments = function(obj) {\n      return has(obj, 'callee');\n    };\n  }\n}());\n\nexport default isArguments;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isArguments.js\n// module id = null\n// module chunks = ","import { _isFinite } from './_setup.js';\nimport isSymbol from './isSymbol.js';\n\n// Is a given object a finite number?\nexport default function isFinite(obj) {\n  return !isSymbol(obj) && _isFinite(obj) && !isNaN(parseFloat(obj));\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isFinite.js\n// module id = null\n// module chunks = ","import { _isNaN } from './_setup.js';\nimport isNumber from './isNumber.js';\n\n// Is the given value `NaN`?\nexport default function isNaN(obj) {\n  return isNumber(obj) && _isNaN(obj);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isNaN.js\n// module id = null\n// module chunks = ","// Predicate-generating function. Often useful outside of Underscore.\nexport default function constant(value) {\n  return function() {\n    return value;\n  };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/constant.js\n// module id = null\n// module chunks = ","import { MAX_ARRAY_INDEX } from './_setup.js';\n\n// Common internal logic for `isArrayLike` and `isBufferLike`.\nexport default function createSizePropertyCheck(getSizeProperty) {\n  return function(collection) {\n    var sizeProperty = getSizeProperty(collection);\n    return typeof sizeProperty == 'number' && sizeProperty >= 0 && sizeProperty <= MAX_ARRAY_INDEX;\n  }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_createSizePropertyCheck.js\n// module id = null\n// module chunks = ","// Internal helper to generate a function to obtain property `key` from `obj`.\nexport default function shallowProperty(key) {\n  return function(obj) {\n    return obj == null ? void 0 : obj[key];\n  };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_shallowProperty.js\n// module id = null\n// module chunks = ","import shallowProperty from './_shallowProperty.js';\n\n// Internal helper to obtain the `byteLength` property of an object.\nexport default shallowProperty('byteLength');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_getByteLength.js\n// module id = null\n// module chunks = ","import createSizePropertyCheck from './_createSizePropertyCheck.js';\nimport getByteLength from './_getByteLength.js';\n\n// Internal helper to determine whether we should spend extensive checks against\n// `ArrayBuffer` et al.\nexport default createSizePropertyCheck(getByteLength);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_isBufferLike.js\n// module id = null\n// module chunks = ","import { supportsArrayBuffer, nativeIsView, toString } from './_setup.js';\nimport isDataView from './isDataView.js';\nimport constant from './constant.js';\nimport isBufferLike from './_isBufferLike.js';\n\n// Is a given value a typed array?\nvar typedArrayPattern = /\\[object ((I|Ui)nt(8|16|32)|Float(32|64)|Uint8Clamped|Big(I|Ui)nt64)Array\\]/;\nfunction isTypedArray(obj) {\n  // `ArrayBuffer.isView` is the most future-proof, so use it when available.\n  // Otherwise, fall back on the above regular expression.\n  return nativeIsView ? (nativeIsView(obj) && !isDataView(obj)) :\n                isBufferLike(obj) && typedArrayPattern.test(toString.call(obj));\n}\n\nexport default supportsArrayBuffer ? isTypedArray : constant(false);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isTypedArray.js\n// module id = null\n// module chunks = ","import shallowProperty from './_shallowProperty.js';\n\n// Internal helper to obtain the `length` property of an object.\nexport default shallowProperty('length');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_getLength.js\n// module id = null\n// module chunks = ","import { nonEnumerableProps, ObjProto } from './_setup.js';\nimport isFunction from './isFunction.js';\nimport has from './_has.js';\n\n// Internal helper to create a simple lookup structure.\n// `collectNonEnumProps` used to depend on `_.contains`, but this led to\n// circular imports. `emulatedSet` is a one-off solution that only works for\n// arrays of strings.\nfunction emulatedSet(keys) {\n  var hash = {};\n  for (var l = keys.length, i = 0; i < l; ++i) hash[keys[i]] = true;\n  return {\n    contains: function(key) { return hash[key]; },\n    push: function(key) {\n      hash[key] = true;\n      return keys.push(key);\n    }\n  };\n}\n\n// Internal helper. Checks `keys` for the presence of keys in IE < 9 that won't\n// be iterated by `for key in ...` and thus missed. Extends `keys` in place if\n// needed.\nexport default function collectNonEnumProps(obj, keys) {\n  keys = emulatedSet(keys);\n  var nonEnumIdx = nonEnumerableProps.length;\n  var constructor = obj.constructor;\n  var proto = isFunction(constructor) && constructor.prototype || ObjProto;\n\n  // Constructor is a special case.\n  var prop = 'constructor';\n  if (has(obj, prop) && !keys.contains(prop)) keys.push(prop);\n\n  while (nonEnumIdx--) {\n    prop = nonEnumerableProps[nonEnumIdx];\n    if (prop in obj && obj[prop] !== proto[prop] && !keys.contains(prop)) {\n      keys.push(prop);\n    }\n  }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_collectNonEnumProps.js\n// module id = null\n// module chunks = ","import isObject from './isObject.js';\nimport { nativeKeys, hasEnumBug } from './_setup.js';\nimport has from './_has.js';\nimport collectNonEnumProps from './_collectNonEnumProps.js';\n\n// Retrieve the names of an object's own properties.\n// Delegates to **ECMAScript 5**'s native `Object.keys`.\nexport default function keys(obj) {\n  if (!isObject(obj)) return [];\n  if (nativeKeys) return nativeKeys(obj);\n  var keys = [];\n  for (var key in obj) if (has(obj, key)) keys.push(key);\n  // Ahem, IE < 9.\n  if (hasEnumBug) collectNonEnumProps(obj, keys);\n  return keys;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/keys.js\n// module id = null\n// module chunks = ","import getLength from './_getLength.js';\nimport isArray from './isArray.js';\nimport isString from './isString.js';\nimport isArguments from './isArguments.js';\nimport keys from './keys.js';\n\n// Is a given array, string, or object empty?\n// An \"empty\" object has no enumerable own-properties.\nexport default function isEmpty(obj) {\n  if (obj == null) return true;\n  // Skip the more expensive `toString`-based type checks if `obj` has no\n  // `.length`.\n  var length = getLength(obj);\n  if (typeof length == 'number' && (\n    isArray(obj) || isString(obj) || isArguments(obj)\n  )) return length === 0;\n  return getLength(keys(obj)) === 0;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isEmpty.js\n// module id = null\n// module chunks = ","import keys from './keys.js';\n\n// Returns whether an object has a given set of `key:value` pairs.\nexport default function isMatch(object, attrs) {\n  var _keys = keys(attrs), length = _keys.length;\n  if (object == null) return !length;\n  var obj = Object(object);\n  for (var i = 0; i < length; i++) {\n    var key = _keys[i];\n    if (attrs[key] !== obj[key] || !(key in obj)) return false;\n  }\n  return true;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isMatch.js\n// module id = null\n// module chunks = ","import { VERSION } from './_setup.js';\n\n// If Underscore is called as a function, it returns a wrapped object that can\n// be used OO-style. This wrapper holds altered versions of all functions added\n// through `_.mixin`. Wrapped objects may be chained.\nexport default function _(obj) {\n  if (obj instanceof _) return obj;\n  if (!(this instanceof _)) return new _(obj);\n  this._wrapped = obj;\n}\n\n_.VERSION = VERSION;\n\n// Extracts the result from a wrapped and chained object.\n_.prototype.value = function() {\n  return this._wrapped;\n};\n\n// Provide unwrapping proxies for some methods used in engine operations\n// such as arithmetic and JSON stringification.\n_.prototype.valueOf = _.prototype.toJSON = _.prototype.value;\n\n_.prototype.toString = function() {\n  return String(this._wrapped);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/underscore.js\n// module id = null\n// module chunks = ","import getByteLength from './_getByteLength.js';\n\n// Internal function to wrap or shallow-copy an ArrayBuffer,\n// typed array or DataView to a new view, reusing the buffer.\nexport default function toBufferView(bufferSource) {\n  return new Uint8Array(\n    bufferSource.buffer || bufferSource,\n    bufferSource.byteOffset || 0,\n    getByteLength(bufferSource)\n  );\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_toBufferView.js\n// module id = null\n// module chunks = ","import _ from './underscore.js';\nimport { toString, SymbolProto } from './_setup.js';\nimport getByteLength from './_getByteLength.js';\nimport isTypedArray from './isTypedArray.js';\nimport isFunction from './isFunction.js';\nimport { hasStringTagBug }  from './_stringTagBug.js';\nimport isDataView from './isDataView.js';\nimport keys from './keys.js';\nimport has from './_has.js';\nimport toBufferView from './_toBufferView.js';\n\n// We use this string twice, so give it a name for minification.\nvar tagDataView = '[object DataView]';\n\n// Internal recursive comparison function for `_.isEqual`.\nfunction eq(a, b, aStack, bStack) {\n  // Identical objects are equal. `0 === -0`, but they aren't identical.\n  // See the [Harmony `egal` proposal](https://wiki.ecmascript.org/doku.php?id=harmony:egal).\n  if (a === b) return a !== 0 || 1 / a === 1 / b;\n  // `null` or `undefined` only equal to itself (strict comparison).\n  if (a == null || b == null) return false;\n  // `NaN`s are equivalent, but non-reflexive.\n  if (a !== a) return b !== b;\n  // Exhaust primitive checks\n  var type = typeof a;\n  if (type !== 'function' && type !== 'object' && typeof b != 'object') return false;\n  return deepEq(a, b, aStack, bStack);\n}\n\n// Internal recursive comparison function for `_.isEqual`.\nfunction deepEq(a, b, aStack, bStack) {\n  // Unwrap any wrapped objects.\n  if (a instanceof _) a = a._wrapped;\n  if (b instanceof _) b = b._wrapped;\n  // Compare `[[Class]]` names.\n  var className = toString.call(a);\n  if (className !== toString.call(b)) return false;\n  // Work around a bug in IE 10 - Edge 13.\n  if (hasStringTagBug && className == '[object Object]' && isDataView(a)) {\n    if (!isDataView(b)) return false;\n    className = tagDataView;\n  }\n  switch (className) {\n    // These types are compared by value.\n    case '[object RegExp]':\n      // RegExps are coerced to strings for comparison (Note: '' + /a/i === '/a/i')\n    case '[object String]':\n      // Primitives and their corresponding object wrappers are equivalent; thus, `\"5\"` is\n      // equivalent to `new String(\"5\")`.\n      return '' + a === '' + b;\n    case '[object Number]':\n      // `NaN`s are equivalent, but non-reflexive.\n      // Object(NaN) is equivalent to NaN.\n      if (+a !== +a) return +b !== +b;\n      // An `egal` comparison is performed for other numeric values.\n      return +a === 0 ? 1 / +a === 1 / b : +a === +b;\n    case '[object Date]':\n    case '[object Boolean]':\n      // Coerce dates and booleans to numeric primitive values. Dates are compared by their\n      // millisecond representations. Note that invalid dates with millisecond representations\n      // of `NaN` are not equivalent.\n      return +a === +b;\n    case '[object Symbol]':\n      return SymbolProto.valueOf.call(a) === SymbolProto.valueOf.call(b);\n    case '[object ArrayBuffer]':\n    case tagDataView:\n      // Coerce to typed array so we can fall through.\n      return deepEq(toBufferView(a), toBufferView(b), aStack, bStack);\n  }\n\n  var areArrays = className === '[object Array]';\n  if (!areArrays && isTypedArray(a)) {\n      var byteLength = getByteLength(a);\n      if (byteLength !== getByteLength(b)) return false;\n      if (a.buffer === b.buffer && a.byteOffset === b.byteOffset) return true;\n      areArrays = true;\n  }\n  if (!areArrays) {\n    if (typeof a != 'object' || typeof b != 'object') return false;\n\n    // Objects with different constructors are not equivalent, but `Object`s or `Array`s\n    // from different frames are.\n    var aCtor = a.constructor, bCtor = b.constructor;\n    if (aCtor !== bCtor && !(isFunction(aCtor) && aCtor instanceof aCtor &&\n                             isFunction(bCtor) && bCtor instanceof bCtor)\n                        && ('constructor' in a && 'constructor' in b)) {\n      return false;\n    }\n  }\n  // Assume equality for cyclic structures. The algorithm for detecting cyclic\n  // structures is adapted from ES 5.1 section 15.12.3, abstract operation `JO`.\n\n  // Initializing stack of traversed objects.\n  // It's done here since we only need them for objects and arrays comparison.\n  aStack = aStack || [];\n  bStack = bStack || [];\n  var length = aStack.length;\n  while (length--) {\n    // Linear search. Performance is inversely proportional to the number of\n    // unique nested structures.\n    if (aStack[length] === a) return bStack[length] === b;\n  }\n\n  // Add the first object to the stack of traversed objects.\n  aStack.push(a);\n  bStack.push(b);\n\n  // Recursively compare objects and arrays.\n  if (areArrays) {\n    // Compare array lengths to determine if a deep comparison is necessary.\n    length = a.length;\n    if (length !== b.length) return false;\n    // Deep compare the contents, ignoring non-numeric properties.\n    while (length--) {\n      if (!eq(a[length], b[length], aStack, bStack)) return false;\n    }\n  } else {\n    // Deep compare objects.\n    var _keys = keys(a), key;\n    length = _keys.length;\n    // Ensure that both objects contain the same number of properties before comparing deep equality.\n    if (keys(b).length !== length) return false;\n    while (length--) {\n      // Deep compare each member\n      key = _keys[length];\n      if (!(has(b, key) && eq(a[key], b[key], aStack, bStack))) return false;\n    }\n  }\n  // Remove the first object from the stack of traversed objects.\n  aStack.pop();\n  bStack.pop();\n  return true;\n}\n\n// Perform a deep comparison to check if two objects are equal.\nexport default function isEqual(a, b) {\n  return eq(a, b);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isEqual.js\n// module id = null\n// module chunks = ","import isObject from './isObject.js';\nimport { hasEnumBug } from './_setup.js';\nimport collectNonEnumProps from './_collectNonEnumProps.js';\n\n// Retrieve all the enumerable property names of an object.\nexport default function allKeys(obj) {\n  if (!isObject(obj)) return [];\n  var keys = [];\n  for (var key in obj) keys.push(key);\n  // Ahem, IE < 9.\n  if (hasEnumBug) collectNonEnumProps(obj, keys);\n  return keys;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/allKeys.js\n// module id = null\n// module chunks = ","import getLength from './_getLength.js';\nimport isFunction from './isFunction.js';\nimport allKeys from './allKeys.js';\n\n// Since the regular `Object.prototype.toString` type tests don't work for\n// some types in IE 11, we use a fingerprinting heuristic instead, based\n// on the methods. It's not great, but it's the best we got.\n// The fingerprint method lists are defined below.\nexport function ie11fingerprint(methods) {\n  var length = getLength(methods);\n  return function(obj) {\n    if (obj == null) return false;\n    // `Map`, `WeakMap` and `Set` have no enumerable keys.\n    var keys = allKeys(obj);\n    if (getLength(keys)) return false;\n    for (var i = 0; i < length; i++) {\n      if (!isFunction(obj[methods[i]])) return false;\n    }\n    // If we are testing against `WeakMap`, we need to ensure that\n    // `obj` doesn't have a `forEach` method in order to distinguish\n    // it from a regular `Map`.\n    return methods !== weakMapMethods || !isFunction(obj[forEachName]);\n  };\n}\n\n// In the interest of compact minification, we write\n// each string in the fingerprints only once.\nvar forEachName = 'forEach',\n    hasName = 'has',\n    commonInit = ['clear', 'delete'],\n    mapTail = ['get', hasName, 'set'];\n\n// `Map`, `WeakMap` and `Set` each have slightly different\n// combinations of the above sublists.\nexport var mapMethods = commonInit.concat(forEachName, mapTail),\n    weakMapMethods = commonInit.concat(mapTail),\n    setMethods = ['add'].concat(commonInit, forEachName, hasName);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_methodFingerprint.js\n// module id = null\n// module chunks = ","import tagTester from './_tagTester.js';\nimport { isIE11 } from './_stringTagBug.js';\nimport { ie11fingerprint, mapMethods }  from './_methodFingerprint.js';\n\nexport default isIE11 ? ie11fingerprint(mapMethods) : tagTester('Map');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isMap.js\n// module id = null\n// module chunks = ","import tagTester from './_tagTester.js';\nimport { isIE11 } from './_stringTagBug.js';\nimport { ie11fingerprint, weakMapMethods }  from './_methodFingerprint.js';\n\nexport default isIE11 ? ie11fingerprint(weakMapMethods) : tagTester('WeakMap');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isWeakMap.js\n// module id = null\n// module chunks = ","import tagTester from './_tagTester.js';\nimport { isIE11 } from './_stringTagBug.js';\nimport { ie11fingerprint, setMethods }  from './_methodFingerprint.js';\n\nexport default isIE11 ? ie11fingerprint(setMethods) : tagTester('Set');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isSet.js\n// module id = null\n// module chunks = ","import tagTester from './_tagTester.js';\n\nexport default tagTester('WeakSet');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/isWeakSet.js\n// module id = null\n// module chunks = ","import keys from './keys.js';\n\n// Retrieve the values of an object's properties.\nexport default function values(obj) {\n  var _keys = keys(obj);\n  var length = _keys.length;\n  var values = Array(length);\n  for (var i = 0; i < length; i++) {\n    values[i] = obj[_keys[i]];\n  }\n  return values;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/values.js\n// module id = null\n// module chunks = ","import keys from './keys.js';\n\n// Convert an object into a list of `[key, value]` pairs.\n// The opposite of `_.object` with one argument.\nexport default function pairs(obj) {\n  var _keys = keys(obj);\n  var length = _keys.length;\n  var pairs = Array(length);\n  for (var i = 0; i < length; i++) {\n    pairs[i] = [_keys[i], obj[_keys[i]]];\n  }\n  return pairs;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/pairs.js\n// module id = null\n// module chunks = ","import keys from './keys.js';\n\n// Invert the keys and values of an object. The values must be serializable.\nexport default function invert(obj) {\n  var result = {};\n  var _keys = keys(obj);\n  for (var i = 0, length = _keys.length; i < length; i++) {\n    result[obj[_keys[i]]] = _keys[i];\n  }\n  return result;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/invert.js\n// module id = null\n// module chunks = ","import isFunction from './isFunction.js';\n\n// Return a sorted list of the function names available on the object.\nexport default function functions(obj) {\n  var names = [];\n  for (var key in obj) {\n    if (isFunction(obj[key])) names.push(key);\n  }\n  return names.sort();\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/functions.js\n// module id = null\n// module chunks = ","// An internal function for creating assigner functions.\nexport default function createAssigner(keysFunc, defaults) {\n  return function(obj) {\n    var length = arguments.length;\n    if (defaults) obj = Object(obj);\n    if (length < 2 || obj == null) return obj;\n    for (var index = 1; index < length; index++) {\n      var source = arguments[index],\n          keys = keysFunc(source),\n          l = keys.length;\n      for (var i = 0; i < l; i++) {\n        var key = keys[i];\n        if (!defaults || obj[key] === void 0) obj[key] = source[key];\n      }\n    }\n    return obj;\n  };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_createAssigner.js\n// module id = null\n// module chunks = ","import createAssigner from './_createAssigner.js';\nimport allKeys from './allKeys.js';\n\n// Extend a given object with all the properties in passed-in object(s).\nexport default createAssigner(allKeys);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/extend.js\n// module id = null\n// module chunks = ","import createAssigner from './_createAssigner.js';\nimport keys from './keys.js';\n\n// Assigns a given object with all the own properties in the passed-in\n// object(s).\n// (https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Object/assign)\nexport default createAssigner(keys);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/extendOwn.js\n// module id = null\n// module chunks = ","import createAssigner from './_createAssigner.js';\nimport allKeys from './allKeys.js';\n\n// Fill in a given object with default properties.\nexport default createAssigner(allKeys, true);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/defaults.js\n// module id = null\n// module chunks = ","import isObject from './isObject.js';\nimport { nativeCreate } from './_setup.js';\n\n// Create a naked function reference for surrogate-prototype-swapping.\nfunction ctor() {\n  return function(){};\n}\n\n// An internal function for creating a new object that inherits from another.\nexport default function baseCreate(prototype) {\n  if (!isObject(prototype)) return {};\n  if (nativeCreate) return nativeCreate(prototype);\n  var Ctor = ctor();\n  Ctor.prototype = prototype;\n  var result = new Ctor;\n  Ctor.prototype = null;\n  return result;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_baseCreate.js\n// module id = null\n// module chunks = ","import baseCreate from './_baseCreate.js';\nimport extendOwn from './extendOwn.js';\n\n// Creates an object that inherits from the given prototype object.\n// If additional properties are provided then they will be added to the\n// created object.\nexport default function create(prototype, props) {\n  var result = baseCreate(prototype);\n  if (props) extendOwn(result, props);\n  return result;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/create.js\n// module id = null\n// module chunks = ","import isObject from './isObject.js';\nimport isArray from './isArray.js';\nimport extend from './extend.js';\n\n// Create a (shallow-cloned) duplicate of an object.\nexport default function clone(obj) {\n  if (!isObject(obj)) return obj;\n  return isArray(obj) ? obj.slice() : extend({}, obj);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/clone.js\n// module id = null\n// module chunks = ","// Invokes `interceptor` with the `obj` and then returns `obj`.\n// The primary purpose of this method is to \"tap into\" a method chain, in\n// order to perform operations on intermediate results within the chain.\nexport default function tap(obj, interceptor) {\n  interceptor(obj);\n  return obj;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/tap.js\n// module id = null\n// module chunks = ","import _ from './underscore.js';\nimport isArray from './isArray.js';\n\n// Normalize a (deep) property `path` to array.\n// Like `_.iteratee`, this function can be customized.\nexport default function toPath(path) {\n  return isArray(path) ? path : [path];\n}\n_.toPath = toPath;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/toPath.js\n// module id = null\n// module chunks = ","import _ from './underscore.js';\nimport './toPath.js';\n\n// Internal wrapper for `_.toPath` to enable minification.\n// Similar to `cb` for `_.iteratee`.\nexport default function toPath(path) {\n  return _.toPath(path);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_toPath.js\n// module id = null\n// module chunks = ","// Internal function to obtain a nested property in `obj` along `path`.\nexport default function deepGet(obj, path) {\n  var length = path.length;\n  for (var i = 0; i < length; i++) {\n    if (obj == null) return void 0;\n    obj = obj[path[i]];\n  }\n  return length ? obj : void 0;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_deepGet.js\n// module id = null\n// module chunks = ","import toPath from './_toPath.js';\nimport deepGet from './_deepGet.js';\nimport isUndefined from './isUndefined.js';\n\n// Get the value of the (deep) property on `path` from `object`.\n// If any property in `path` does not exist or if the value is\n// `undefined`, return `defaultValue` instead.\n// The `path` is normalized through `_.toPath`.\nexport default function get(object, path, defaultValue) {\n  var value = deepGet(object, toPath(path));\n  return isUndefined(value) ? defaultValue : value;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/get.js\n// module id = null\n// module chunks = ","import _has from './_has.js';\nimport toPath from './_toPath.js';\n\n// Shortcut function for checking if an object has a given property directly on\n// itself (in other words, not on a prototype). Unlike the internal `has`\n// function, this public version can also traverse nested properties.\nexport default function has(obj, path) {\n  path = toPath(path);\n  var length = path.length;\n  for (var i = 0; i < length; i++) {\n    var key = path[i];\n    if (!_has(obj, key)) return false;\n    obj = obj[key];\n  }\n  return !!length;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/has.js\n// module id = null\n// module chunks = ","// Keep the identity function around for default iteratees.\nexport default function identity(value) {\n  return value;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/identity.js\n// module id = null\n// module chunks = ","import extendOwn from './extendOwn.js';\nimport isMatch from './isMatch.js';\n\n// Returns a predicate for checking whether an object has a given set of\n// `key:value` pairs.\nexport default function matcher(attrs) {\n  attrs = extendOwn({}, attrs);\n  return function(obj) {\n    return isMatch(obj, attrs);\n  };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/matcher.js\n// module id = null\n// module chunks = ","import deepGet from './_deepGet.js';\nimport toPath from './_toPath.js';\n\n// Creates a function that, when passed an object, will traverse that object’s\n// properties down the given `path`, specified as an array of keys or indices.\nexport default function property(path) {\n  path = toPath(path);\n  return function(obj) {\n    return deepGet(obj, path);\n  };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/property.js\n// module id = null\n// module chunks = ","// Internal function that returns an efficient (for current engines) version\n// of the passed-in callback, to be repeatedly applied in other Underscore\n// functions.\nexport default function optimizeCb(func, context, argCount) {\n  if (context === void 0) return func;\n  switch (argCount == null ? 3 : argCount) {\n    case 1: return function(value) {\n      return func.call(context, value);\n    };\n    // The 2-argument case is omitted because we’re not using it.\n    case 3: return function(value, index, collection) {\n      return func.call(context, value, index, collection);\n    };\n    case 4: return function(accumulator, value, index, collection) {\n      return func.call(context, accumulator, value, index, collection);\n    };\n  }\n  return function() {\n    return func.apply(context, arguments);\n  };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_optimizeCb.js\n// module id = null\n// module chunks = ","import identity from './identity.js';\nimport isFunction from './isFunction.js';\nimport isObject from './isObject.js';\nimport isArray from './isArray.js';\nimport matcher from './matcher.js';\nimport property from './property.js';\nimport optimizeCb from './_optimizeCb.js';\n\n// An internal function to generate callbacks that can be applied to each\n// element in a collection, returning the desired result — either `_.identity`,\n// an arbitrary callback, a property matcher, or a property accessor.\nexport default function baseIteratee(value, context, argCount) {\n  if (value == null) return identity;\n  if (isFunction(value)) return optimizeCb(value, context, argCount);\n  if (isObject(value) && !isArray(value)) return matcher(value);\n  return property(value);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_baseIteratee.js\n// module id = null\n// module chunks = ","import _ from './underscore.js';\nimport baseIteratee from './_baseIteratee.js';\n\n// External wrapper for our callback generator. Users may customize\n// `_.iteratee` if they want additional predicate/iteratee shorthand styles.\n// This abstraction hides the internal-only `argCount` argument.\nexport default function iteratee(value, context) {\n  return baseIteratee(value, context, Infinity);\n}\n_.iteratee = iteratee;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/iteratee.js\n// module id = null\n// module chunks = ","import _ from './underscore.js';\nimport baseIteratee from './_baseIteratee.js';\nimport iteratee from './iteratee.js';\n\n// The function we call internally to generate a callback. It invokes\n// `_.iteratee` if overridden, otherwise `baseIteratee`.\nexport default function cb(value, context, argCount) {\n  if (_.iteratee !== iteratee) return _.iteratee(value, context);\n  return baseIteratee(value, context, argCount);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_cb.js\n// module id = null\n// module chunks = ","import cb from './_cb.js';\nimport keys from './keys.js';\n\n// Returns the results of applying the `iteratee` to each element of `obj`.\n// In contrast to `_.map` it returns an object.\nexport default function mapObject(obj, iteratee, context) {\n  iteratee = cb(iteratee, context);\n  var _keys = keys(obj),\n      length = _keys.length,\n      results = {};\n  for (var index = 0; index < length; index++) {\n    var currentKey = _keys[index];\n    results[currentKey] = iteratee(obj[currentKey], currentKey, obj);\n  }\n  return results;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/mapObject.js\n// module id = null\n// module chunks = ","// Predicate-generating function. Often useful outside of Underscore.\nexport default function noop(){}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/noop.js\n// module id = null\n// module chunks = ","import noop from './noop.js';\nimport get from './get.js';\n\n// Generates a function for a given object that returns a given property.\nexport default function propertyOf(obj) {\n  if (obj == null) return noop;\n  return function(path) {\n    return get(obj, path);\n  };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/propertyOf.js\n// module id = null\n// module chunks = ","import optimizeCb from './_optimizeCb.js';\n\n// Run a function **n** times.\nexport default function times(n, iteratee, context) {\n  var accum = Array(Math.max(0, n));\n  iteratee = optimizeCb(iteratee, context, 1);\n  for (var i = 0; i < n; i++) accum[i] = iteratee(i);\n  return accum;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/times.js\n// module id = null\n// module chunks = ","// Return a random integer between `min` and `max` (inclusive).\nexport default function random(min, max) {\n  if (max == null) {\n    max = min;\n    min = 0;\n  }\n  return min + Math.floor(Math.random() * (max - min + 1));\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/random.js\n// module id = null\n// module chunks = ","// A (possibly faster) way to get the current timestamp as an integer.\nexport default Date.now || function() {\n  return new Date().getTime();\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/now.js\n// module id = null\n// module chunks = ","import keys from './keys.js';\n\n// Internal helper to generate functions for escaping and unescaping strings\n// to/from HTML interpolation.\nexport default function createEscaper(map) {\n  var escaper = function(match) {\n    return map[match];\n  };\n  // Regexes for identifying a key that needs to be escaped.\n  var source = '(?:' + keys(map).join('|') + ')';\n  var testRegexp = RegExp(source);\n  var replaceRegexp = RegExp(source, 'g');\n  return function(string) {\n    string = string == null ? '' : '' + string;\n    return testRegexp.test(string) ? string.replace(replaceRegexp, escaper) : string;\n  };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_createEscaper.js\n// module id = null\n// module chunks = ","// Internal list of HTML entities for escaping.\nexport default {\n  '&': '&amp;',\n  '<': '&lt;',\n  '>': '&gt;',\n  '\"': '&quot;',\n  \"'\": '&#x27;',\n  '`': '&#x60;'\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_escapeMap.js\n// module id = null\n// module chunks = ","import createEscaper from './_createEscaper.js';\nimport escapeMap from './_escapeMap.js';\n\n// Function for escaping strings to HTML interpolation.\nexport default createEscaper(escapeMap);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/escape.js\n// module id = null\n// module chunks = ","import invert from './invert.js';\nimport escapeMap from './_escapeMap.js';\n\n// Internal list of HTML entities for unescaping.\nexport default invert(escapeMap);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_unescapeMap.js\n// module id = null\n// module chunks = ","import createEscaper from './_createEscaper.js';\nimport unescapeMap from './_unescapeMap.js';\n\n// Function for unescaping strings from HTML interpolation.\nexport default createEscaper(unescapeMap);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/unescape.js\n// module id = null\n// module chunks = ","import _ from './underscore.js';\n\n// By default, Underscore uses ERB-style template delimiters. Change the\n// following template settings to use alternative delimiters.\nexport default _.templateSettings = {\n  evaluate: /<%([\\s\\S]+?)%>/g,\n  interpolate: /<%=([\\s\\S]+?)%>/g,\n  escape: /<%-([\\s\\S]+?)%>/g\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/templateSettings.js\n// module id = null\n// module chunks = ","import defaults from './defaults.js';\nimport _ from './underscore.js';\nimport './templateSettings.js';\n\n// When customizing `_.templateSettings`, if you don't want to define an\n// interpolation, evaluation or escaping regex, we need one that is\n// guaranteed not to match.\nvar noMatch = /(.)^/;\n\n// Certain characters need to be escaped so that they can be put into a\n// string literal.\nvar escapes = {\n  \"'\": \"'\",\n  '\\\\': '\\\\',\n  '\\r': 'r',\n  '\\n': 'n',\n  '\\u2028': 'u2028',\n  '\\u2029': 'u2029'\n};\n\nvar escapeRegExp = /\\\\|'|\\r|\\n|\\u2028|\\u2029/g;\n\nfunction escapeChar(match) {\n  return '\\\\' + escapes[match];\n}\n\n// In order to prevent third-party code injection through\n// `_.templateSettings.variable`, we test it against the following regular\n// expression. It is intentionally a bit more liberal than just matching valid\n// identifiers, but still prevents possible loopholes through defaults or\n// destructuring assignment.\nvar bareIdentifier = /^\\s*(\\w|\\$)+\\s*$/;\n\n// JavaScript micro-templating, similar to John Resig's implementation.\n// Underscore templating handles arbitrary delimiters, preserves whitespace,\n// and correctly escapes quotes within interpolated code.\n// NB: `oldSettings` only exists for backwards compatibility.\nexport default function template(text, settings, oldSettings) {\n  if (!settings && oldSettings) settings = oldSettings;\n  settings = defaults({}, settings, _.templateSettings);\n\n  // Combine delimiters into one regular expression via alternation.\n  var matcher = RegExp([\n    (settings.escape || noMatch).source,\n    (settings.interpolate || noMatch).source,\n    (settings.evaluate || noMatch).source\n  ].join('|') + '|$', 'g');\n\n  // Compile the template source, escaping string literals appropriately.\n  var index = 0;\n  var source = \"__p+='\";\n  text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {\n    source += text.slice(index, offset).replace(escapeRegExp, escapeChar);\n    index = offset + match.length;\n\n    if (escape) {\n      source += \"'+\\n((__t=(\" + escape + \"))==null?'':_.escape(__t))+\\n'\";\n    } else if (interpolate) {\n      source += \"'+\\n((__t=(\" + interpolate + \"))==null?'':__t)+\\n'\";\n    } else if (evaluate) {\n      source += \"';\\n\" + evaluate + \"\\n__p+='\";\n    }\n\n    // Adobe VMs need the match returned to produce the correct offset.\n    return match;\n  });\n  source += \"';\\n\";\n\n  var argument = settings.variable;\n  if (argument) {\n    // Insure against third-party code injection. (CVE-2021-23358)\n    if (!bareIdentifier.test(argument)) throw new Error(\n      'variable is not a bare identifier: ' + argument\n    );\n  } else {\n    // If a variable is not specified, place data values in local scope.\n    source = 'with(obj||{}){\\n' + source + '}\\n';\n    argument = 'obj';\n  }\n\n  source = \"var __t,__p='',__j=Array.prototype.join,\" +\n    \"print=function(){__p+=__j.call(arguments,'');};\\n\" +\n    source + 'return __p;\\n';\n\n  var render;\n  try {\n    render = new Function(argument, '_', source);\n  } catch (e) {\n    e.source = source;\n    throw e;\n  }\n\n  var template = function(data) {\n    return render.call(this, data, _);\n  };\n\n  // Provide the compiled source as a convenience for precompilation.\n  template.source = 'function(' + argument + '){\\n' + source + '}';\n\n  return template;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/template.js\n// module id = null\n// module chunks = ","import isFunction from './isFunction.js';\nimport toPath from './_toPath.js';\n\n// Traverses the children of `obj` along `path`. If a child is a function, it\n// is invoked with its parent as context. Returns the value of the final\n// child, or `fallback` if any child is undefined.\nexport default function result(obj, path, fallback) {\n  path = toPath(path);\n  var length = path.length;\n  if (!length) {\n    return isFunction(fallback) ? fallback.call(obj) : fallback;\n  }\n  for (var i = 0; i < length; i++) {\n    var prop = obj == null ? void 0 : obj[path[i]];\n    if (prop === void 0) {\n      prop = fallback;\n      i = length; // Ensure we don't continue iterating.\n    }\n    obj = isFunction(prop) ? prop.call(obj) : prop;\n  }\n  return obj;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/result.js\n// module id = null\n// module chunks = ","// Generate a unique integer id (unique within the entire client session).\n// Useful for temporary DOM ids.\nvar idCounter = 0;\nexport default function uniqueId(prefix) {\n  var id = ++idCounter + '';\n  return prefix ? prefix + id : id;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/uniqueId.js\n// module id = null\n// module chunks = ","import _ from './underscore.js';\n\n// Start chaining a wrapped Underscore object.\nexport default function chain(obj) {\n  var instance = _(obj);\n  instance._chain = true;\n  return instance;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/chain.js\n// module id = null\n// module chunks = ","import baseCreate from './_baseCreate.js';\nimport isObject from './isObject.js';\n\n// Internal function to execute `sourceFunc` bound to `context` with optional\n// `args`. Determines whether to execute a function as a constructor or as a\n// normal function.\nexport default function executeBound(sourceFunc, boundFunc, context, callingContext, args) {\n  if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args);\n  var self = baseCreate(sourceFunc.prototype);\n  var result = sourceFunc.apply(self, args);\n  if (isObject(result)) return result;\n  return self;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_executeBound.js\n// module id = null\n// module chunks = ","import restArguments from './restArguments.js';\nimport executeBound from './_executeBound.js';\nimport _ from './underscore.js';\n\n// Partially apply a function by creating a version that has had some of its\n// arguments pre-filled, without changing its dynamic `this` context. `_` acts\n// as a placeholder by default, allowing any combination of arguments to be\n// pre-filled. Set `_.partial.placeholder` for a custom placeholder argument.\nvar partial = restArguments(function(func, boundArgs) {\n  var placeholder = partial.placeholder;\n  var bound = function() {\n    var position = 0, length = boundArgs.length;\n    var args = Array(length);\n    for (var i = 0; i < length; i++) {\n      args[i] = boundArgs[i] === placeholder ? arguments[position++] : boundArgs[i];\n    }\n    while (position < arguments.length) args.push(arguments[position++]);\n    return executeBound(func, bound, this, this, args);\n  };\n  return bound;\n});\n\npartial.placeholder = _;\nexport default partial;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/partial.js\n// module id = null\n// module chunks = ","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport executeBound from './_executeBound.js';\n\n// Create a function bound to a given object (assigning `this`, and arguments,\n// optionally).\nexport default restArguments(function(func, context, args) {\n  if (!isFunction(func)) throw new TypeError('Bind must be called on a function');\n  var bound = restArguments(function(callArgs) {\n    return executeBound(func, bound, context, this, args.concat(callArgs));\n  });\n  return bound;\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/bind.js\n// module id = null\n// module chunks = ","import createSizePropertyCheck from './_createSizePropertyCheck.js';\nimport getLength from './_getLength.js';\n\n// Internal helper for collection methods to determine whether a collection\n// should be iterated as an array or as an object.\n// Related: https://people.mozilla.org/~jorendorff/es6-draft.html#sec-tolength\n// Avoids a very nasty iOS 8 JIT bug on ARM-64. #2094\nexport default createSizePropertyCheck(getLength);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_isArrayLike.js\n// module id = null\n// module chunks = ","import getLength from './_getLength.js';\nimport isArrayLike from './_isArrayLike.js';\nimport isArray from './isArray.js';\nimport isArguments from './isArguments.js';\n\n// Internal implementation of a recursive `flatten` function.\nexport default function flatten(input, depth, strict, output) {\n  output = output || [];\n  if (!depth && depth !== 0) {\n    depth = Infinity;\n  } else if (depth <= 0) {\n    return output.concat(input);\n  }\n  var idx = output.length;\n  for (var i = 0, length = getLength(input); i < length; i++) {\n    var value = input[i];\n    if (isArrayLike(value) && (isArray(value) || isArguments(value))) {\n      // Flatten current level of array or arguments object.\n      if (depth > 1) {\n        flatten(value, depth - 1, strict, output);\n        idx = output.length;\n      } else {\n        var j = 0, len = value.length;\n        while (j < len) output[idx++] = value[j++];\n      }\n    } else if (!strict) {\n      output[idx++] = value;\n    }\n  }\n  return output;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_flatten.js\n// module id = null\n// module chunks = ","import restArguments from './restArguments.js';\nimport flatten from './_flatten.js';\nimport bind from './bind.js';\n\n// Bind a number of an object's methods to that object. Remaining arguments\n// are the method names to be bound. Useful for ensuring that all callbacks\n// defined on an object belong to it.\nexport default restArguments(function(obj, keys) {\n  keys = flatten(keys, false, false);\n  var index = keys.length;\n  if (index < 1) throw new Error('bindAll must be passed function names');\n  while (index--) {\n    var key = keys[index];\n    obj[key] = bind(obj[key], obj);\n  }\n  return obj;\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/bindAll.js\n// module id = null\n// module chunks = ","import has from './_has.js';\n\n// Memoize an expensive function by storing its results.\nexport default function memoize(func, hasher) {\n  var memoize = function(key) {\n    var cache = memoize.cache;\n    var address = '' + (hasher ? hasher.apply(this, arguments) : key);\n    if (!has(cache, address)) cache[address] = func.apply(this, arguments);\n    return cache[address];\n  };\n  memoize.cache = {};\n  return memoize;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/memoize.js\n// module id = null\n// module chunks = ","import restArguments from './restArguments.js';\n\n// Delays a function for the given number of milliseconds, and then calls\n// it with the arguments supplied.\nexport default restArguments(function(func, wait, args) {\n  return setTimeout(function() {\n    return func.apply(null, args);\n  }, wait);\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/delay.js\n// module id = null\n// module chunks = ","import partial from './partial.js';\nimport delay from './delay.js';\nimport _ from './underscore.js';\n\n// Defers a function, scheduling it to run after the current call stack has\n// cleared.\nexport default partial(delay, _, 1);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/defer.js\n// module id = null\n// module chunks = ","import now from './now.js';\n\n// Returns a function, that, when invoked, will only be triggered at most once\n// during a given window of time. Normally, the throttled function will run\n// as much as it can, without ever going more than once per `wait` duration;\n// but if you'd like to disable the execution on the leading edge, pass\n// `{leading: false}`. To disable execution on the trailing edge, ditto.\nexport default function throttle(func, wait, options) {\n  var timeout, context, args, result;\n  var previous = 0;\n  if (!options) options = {};\n\n  var later = function() {\n    previous = options.leading === false ? 0 : now();\n    timeout = null;\n    result = func.apply(context, args);\n    if (!timeout) context = args = null;\n  };\n\n  var throttled = function() {\n    var _now = now();\n    if (!previous && options.leading === false) previous = _now;\n    var remaining = wait - (_now - previous);\n    context = this;\n    args = arguments;\n    if (remaining <= 0 || remaining > wait) {\n      if (timeout) {\n        clearTimeout(timeout);\n        timeout = null;\n      }\n      previous = _now;\n      result = func.apply(context, args);\n      if (!timeout) context = args = null;\n    } else if (!timeout && options.trailing !== false) {\n      timeout = setTimeout(later, remaining);\n    }\n    return result;\n  };\n\n  throttled.cancel = function() {\n    clearTimeout(timeout);\n    previous = 0;\n    timeout = context = args = null;\n  };\n\n  return throttled;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/throttle.js\n// module id = null\n// module chunks = ","import restArguments from './restArguments.js';\nimport now from './now.js';\n\n// When a sequence of calls of the returned function ends, the argument\n// function is triggered. The end of a sequence is defined by the `wait`\n// parameter. If `immediate` is passed, the argument function will be\n// triggered at the beginning of the sequence instead of at the end.\nexport default function debounce(func, wait, immediate) {\n  var timeout, previous, args, result, context;\n\n  var later = function() {\n    var passed = now() - previous;\n    if (wait > passed) {\n      timeout = setTimeout(later, wait - passed);\n    } else {\n      timeout = null;\n      if (!immediate) result = func.apply(context, args);\n      // This check is needed because `func` can recursively invoke `debounced`.\n      if (!timeout) args = context = null;\n    }\n  };\n\n  var debounced = restArguments(function(_args) {\n    context = this;\n    args = _args;\n    previous = now();\n    if (!timeout) {\n      timeout = setTimeout(later, wait);\n      if (immediate) result = func.apply(context, args);\n    }\n    return result;\n  });\n\n  debounced.cancel = function() {\n    clearTimeout(timeout);\n    timeout = args = context = null;\n  };\n\n  return debounced;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/debounce.js\n// module id = null\n// module chunks = ","import partial from './partial.js';\n\n// Returns the first function passed as an argument to the second,\n// allowing you to adjust arguments, run code before and after, and\n// conditionally execute the original function.\nexport default function wrap(func, wrapper) {\n  return partial(wrapper, func);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/wrap.js\n// module id = null\n// module chunks = ","// Returns a negated version of the passed-in predicate.\nexport default function negate(predicate) {\n  return function() {\n    return !predicate.apply(this, arguments);\n  };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/negate.js\n// module id = null\n// module chunks = ","// Returns a function that is the composition of a list of functions, each\n// consuming the return value of the function that follows.\nexport default function compose() {\n  var args = arguments;\n  var start = args.length - 1;\n  return function() {\n    var i = start;\n    var result = args[start].apply(this, arguments);\n    while (i--) result = args[i].call(this, result);\n    return result;\n  };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/compose.js\n// module id = null\n// module chunks = ","// Returns a function that will only be executed on and after the Nth call.\nexport default function after(times, func) {\n  return function() {\n    if (--times < 1) {\n      return func.apply(this, arguments);\n    }\n  };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/after.js\n// module id = null\n// module chunks = ","// Returns a function that will only be executed up to (but not including) the\n// Nth call.\nexport default function before(times, func) {\n  var memo;\n  return function() {\n    if (--times > 0) {\n      memo = func.apply(this, arguments);\n    }\n    if (times <= 1) func = null;\n    return memo;\n  };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/before.js\n// module id = null\n// module chunks = ","import partial from './partial.js';\nimport before from './before.js';\n\n// Returns a function that will be executed at most one time, no matter how\n// often you call it. Useful for lazy initialization.\nexport default partial(before, 2);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/once.js\n// module id = null\n// module chunks = ","import cb from './_cb.js';\nimport keys from './keys.js';\n\n// Returns the first key on an object that passes a truth test.\nexport default function findKey(obj, predicate, context) {\n  predicate = cb(predicate, context);\n  var _keys = keys(obj), key;\n  for (var i = 0, length = _keys.length; i < length; i++) {\n    key = _keys[i];\n    if (predicate(obj[key], key, obj)) return key;\n  }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/findKey.js\n// module id = null\n// module chunks = ","import cb from './_cb.js';\nimport getLength from './_getLength.js';\n\n// Internal function to generate `_.findIndex` and `_.findLastIndex`.\nexport default function createPredicateIndexFinder(dir) {\n  return function(array, predicate, context) {\n    predicate = cb(predicate, context);\n    var length = getLength(array);\n    var index = dir > 0 ? 0 : length - 1;\n    for (; index >= 0 && index < length; index += dir) {\n      if (predicate(array[index], index, array)) return index;\n    }\n    return -1;\n  };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_createPredicateIndexFinder.js\n// module id = null\n// module chunks = ","import createPredicateIndexFinder from './_createPredicateIndexFinder.js';\n\n// Returns the first index on an array-like that passes a truth test.\nexport default createPredicateIndexFinder(1);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/findIndex.js\n// module id = null\n// module chunks = ","import createPredicateIndexFinder from './_createPredicateIndexFinder.js';\n\n// Returns the last index on an array-like that passes a truth test.\nexport default createPredicateIndexFinder(-1);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/findLastIndex.js\n// module id = null\n// module chunks = ","import cb from './_cb.js';\nimport getLength from './_getLength.js';\n\n// Use a comparator function to figure out the smallest index at which\n// an object should be inserted so as to maintain order. Uses binary search.\nexport default function sortedIndex(array, obj, iteratee, context) {\n  iteratee = cb(iteratee, context, 1);\n  var value = iteratee(obj);\n  var low = 0, high = getLength(array);\n  while (low < high) {\n    var mid = Math.floor((low + high) / 2);\n    if (iteratee(array[mid]) < value) low = mid + 1; else high = mid;\n  }\n  return low;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/sortedIndex.js\n// module id = null\n// module chunks = ","import getLength from './_getLength.js';\nimport { slice } from './_setup.js';\nimport isNaN from './isNaN.js';\n\n// Internal function to generate the `_.indexOf` and `_.lastIndexOf` functions.\nexport default function createIndexFinder(dir, predicateFind, sortedIndex) {\n  return function(array, item, idx) {\n    var i = 0, length = getLength(array);\n    if (typeof idx == 'number') {\n      if (dir > 0) {\n        i = idx >= 0 ? idx : Math.max(idx + length, i);\n      } else {\n        length = idx >= 0 ? Math.min(idx + 1, length) : idx + length + 1;\n      }\n    } else if (sortedIndex && idx && length) {\n      idx = sortedIndex(array, item);\n      return array[idx] === item ? idx : -1;\n    }\n    if (item !== item) {\n      idx = predicateFind(slice.call(array, i, length), isNaN);\n      return idx >= 0 ? idx + i : -1;\n    }\n    for (idx = dir > 0 ? i : length - 1; idx >= 0 && idx < length; idx += dir) {\n      if (array[idx] === item) return idx;\n    }\n    return -1;\n  };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_createIndexFinder.js\n// module id = null\n// module chunks = ","import sortedIndex from './sortedIndex.js';\nimport findIndex from './findIndex.js';\nimport createIndexFinder from './_createIndexFinder.js';\n\n// Return the position of the first occurrence of an item in an array,\n// or -1 if the item is not included in the array.\n// If the array is large and already in sort order, pass `true`\n// for **isSorted** to use binary search.\nexport default createIndexFinder(1, findIndex, sortedIndex);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/indexOf.js\n// module id = null\n// module chunks = ","import findLastIndex from './findLastIndex.js';\nimport createIndexFinder from './_createIndexFinder.js';\n\n// Return the position of the last occurrence of an item in an array,\n// or -1 if the item is not included in the array.\nexport default createIndexFinder(-1, findLastIndex);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/lastIndexOf.js\n// module id = null\n// module chunks = ","import isArrayLike from './_isArrayLike.js';\nimport findIndex from './findIndex.js';\nimport findKey from './findKey.js';\n\n// Return the first value which passes a truth test.\nexport default function find(obj, predicate, context) {\n  var keyFinder = isArrayLike(obj) ? findIndex : findKey;\n  var key = keyFinder(obj, predicate, context);\n  if (key !== void 0 && key !== -1) return obj[key];\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/find.js\n// module id = null\n// module chunks = ","import find from './find.js';\nimport matcher from './matcher.js';\n\n// Convenience version of a common use case of `_.find`: getting the first\n// object containing specific `key:value` pairs.\nexport default function findWhere(obj, attrs) {\n  return find(obj, matcher(attrs));\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/findWhere.js\n// module id = null\n// module chunks = ","import optimizeCb from './_optimizeCb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// The cornerstone for collection functions, an `each`\n// implementation, aka `forEach`.\n// Handles raw objects in addition to array-likes. Treats all\n// sparse array-likes as if they were dense.\nexport default function each(obj, iteratee, context) {\n  iteratee = optimizeCb(iteratee, context);\n  var i, length;\n  if (isArrayLike(obj)) {\n    for (i = 0, length = obj.length; i < length; i++) {\n      iteratee(obj[i], i, obj);\n    }\n  } else {\n    var _keys = keys(obj);\n    for (i = 0, length = _keys.length; i < length; i++) {\n      iteratee(obj[_keys[i]], _keys[i], obj);\n    }\n  }\n  return obj;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/each.js\n// module id = null\n// module chunks = ","import cb from './_cb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Return the results of applying the iteratee to each element.\nexport default function map(obj, iteratee, context) {\n  iteratee = cb(iteratee, context);\n  var _keys = !isArrayLike(obj) && keys(obj),\n      length = (_keys || obj).length,\n      results = Array(length);\n  for (var index = 0; index < length; index++) {\n    var currentKey = _keys ? _keys[index] : index;\n    results[index] = iteratee(obj[currentKey], currentKey, obj);\n  }\n  return results;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/map.js\n// module id = null\n// module chunks = ","import isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\nimport optimizeCb from './_optimizeCb.js';\n\n// Internal helper to create a reducing function, iterating left or right.\nexport default function createReduce(dir) {\n  // Wrap code that reassigns argument variables in a separate function than\n  // the one that accesses `arguments.length` to avoid a perf hit. (#1991)\n  var reducer = function(obj, iteratee, memo, initial) {\n    var _keys = !isArrayLike(obj) && keys(obj),\n        length = (_keys || obj).length,\n        index = dir > 0 ? 0 : length - 1;\n    if (!initial) {\n      memo = obj[_keys ? _keys[index] : index];\n      index += dir;\n    }\n    for (; index >= 0 && index < length; index += dir) {\n      var currentKey = _keys ? _keys[index] : index;\n      memo = iteratee(memo, obj[currentKey], currentKey, obj);\n    }\n    return memo;\n  };\n\n  return function(obj, iteratee, memo, context) {\n    var initial = arguments.length >= 3;\n    return reducer(obj, optimizeCb(iteratee, context, 4), memo, initial);\n  };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_createReduce.js\n// module id = null\n// module chunks = ","import createReduce from './_createReduce.js';\n\n// **Reduce** builds up a single result from a list of values, aka `inject`,\n// or `foldl`.\nexport default createReduce(1);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/reduce.js\n// module id = null\n// module chunks = ","import createReduce from './_createReduce.js';\n\n// The right-associative version of reduce, also known as `foldr`.\nexport default createReduce(-1);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/reduceRight.js\n// module id = null\n// module chunks = ","import cb from './_cb.js';\nimport each from './each.js';\n\n// Return all the elements that pass a truth test.\nexport default function filter(obj, predicate, context) {\n  var results = [];\n  predicate = cb(predicate, context);\n  each(obj, function(value, index, list) {\n    if (predicate(value, index, list)) results.push(value);\n  });\n  return results;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/filter.js\n// module id = null\n// module chunks = ","import filter from './filter.js';\nimport negate from './negate.js';\nimport cb from './_cb.js';\n\n// Return all the elements for which a truth test fails.\nexport default function reject(obj, predicate, context) {\n  return filter(obj, negate(cb(predicate)), context);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/reject.js\n// module id = null\n// module chunks = ","import cb from './_cb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Determine whether all of the elements pass a truth test.\nexport default function every(obj, predicate, context) {\n  predicate = cb(predicate, context);\n  var _keys = !isArrayLike(obj) && keys(obj),\n      length = (_keys || obj).length;\n  for (var index = 0; index < length; index++) {\n    var currentKey = _keys ? _keys[index] : index;\n    if (!predicate(obj[currentKey], currentKey, obj)) return false;\n  }\n  return true;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/every.js\n// module id = null\n// module chunks = ","import cb from './_cb.js';\nimport isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Determine if at least one element in the object passes a truth test.\nexport default function some(obj, predicate, context) {\n  predicate = cb(predicate, context);\n  var _keys = !isArrayLike(obj) && keys(obj),\n      length = (_keys || obj).length;\n  for (var index = 0; index < length; index++) {\n    var currentKey = _keys ? _keys[index] : index;\n    if (predicate(obj[currentKey], currentKey, obj)) return true;\n  }\n  return false;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/some.js\n// module id = null\n// module chunks = ","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport indexOf from './indexOf.js';\n\n// Determine if the array or object contains a given item (using `===`).\nexport default function contains(obj, item, fromIndex, guard) {\n  if (!isArrayLike(obj)) obj = values(obj);\n  if (typeof fromIndex != 'number' || guard) fromIndex = 0;\n  return indexOf(obj, item, fromIndex) >= 0;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/contains.js\n// module id = null\n// module chunks = ","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport map from './map.js';\nimport deepGet from './_deepGet.js';\nimport toPath from './_toPath.js';\n\n// Invoke a method (with arguments) on every item in a collection.\nexport default restArguments(function(obj, path, args) {\n  var contextPath, func;\n  if (isFunction(path)) {\n    func = path;\n  } else {\n    path = toPath(path);\n    contextPath = path.slice(0, -1);\n    path = path[path.length - 1];\n  }\n  return map(obj, function(context) {\n    var method = func;\n    if (!method) {\n      if (contextPath && contextPath.length) {\n        context = deepGet(context, contextPath);\n      }\n      if (context == null) return void 0;\n      method = context[path];\n    }\n    return method == null ? method : method.apply(context, args);\n  });\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/invoke.js\n// module id = null\n// module chunks = ","import map from './map.js';\nimport property from './property.js';\n\n// Convenience version of a common use case of `_.map`: fetching a property.\nexport default function pluck(obj, key) {\n  return map(obj, property(key));\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/pluck.js\n// module id = null\n// module chunks = ","import filter from './filter.js';\nimport matcher from './matcher.js';\n\n// Convenience version of a common use case of `_.filter`: selecting only\n// objects containing specific `key:value` pairs.\nexport default function where(obj, attrs) {\n  return filter(obj, matcher(attrs));\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/where.js\n// module id = null\n// module chunks = ","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport cb from './_cb.js';\nimport each from './each.js';\n\n// Return the maximum element (or element-based computation).\nexport default function max(obj, iteratee, context) {\n  var result = -Infinity, lastComputed = -Infinity,\n      value, computed;\n  if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {\n    obj = isArrayLike(obj) ? obj : values(obj);\n    for (var i = 0, length = obj.length; i < length; i++) {\n      value = obj[i];\n      if (value != null && value > result) {\n        result = value;\n      }\n    }\n  } else {\n    iteratee = cb(iteratee, context);\n    each(obj, function(v, index, list) {\n      computed = iteratee(v, index, list);\n      if (computed > lastComputed || computed === -Infinity && result === -Infinity) {\n        result = v;\n        lastComputed = computed;\n      }\n    });\n  }\n  return result;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/max.js\n// module id = null\n// module chunks = ","import isArrayLike from './_isArrayLike.js';\nimport values from './values.js';\nimport cb from './_cb.js';\nimport each from './each.js';\n\n// Return the minimum element (or element-based computation).\nexport default function min(obj, iteratee, context) {\n  var result = Infinity, lastComputed = Infinity,\n      value, computed;\n  if (iteratee == null || typeof iteratee == 'number' && typeof obj[0] != 'object' && obj != null) {\n    obj = isArrayLike(obj) ? obj : values(obj);\n    for (var i = 0, length = obj.length; i < length; i++) {\n      value = obj[i];\n      if (value != null && value < result) {\n        result = value;\n      }\n    }\n  } else {\n    iteratee = cb(iteratee, context);\n    each(obj, function(v, index, list) {\n      computed = iteratee(v, index, list);\n      if (computed < lastComputed || computed === Infinity && result === Infinity) {\n        result = v;\n        lastComputed = computed;\n      }\n    });\n  }\n  return result;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/min.js\n// module id = null\n// module chunks = ","import isArrayLike from './_isArrayLike.js';\nimport clone from './clone.js';\nimport values from './values.js';\nimport getLength from './_getLength.js';\nimport random from './random.js';\n\n// Sample **n** random values from a collection using the modern version of the\n// [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher–Yates_shuffle).\n// If **n** is not specified, returns a single random element.\n// The internal `guard` argument allows it to work with `_.map`.\nexport default function sample(obj, n, guard) {\n  if (n == null || guard) {\n    if (!isArrayLike(obj)) obj = values(obj);\n    return obj[random(obj.length - 1)];\n  }\n  var sample = isArrayLike(obj) ? clone(obj) : values(obj);\n  var length = getLength(sample);\n  n = Math.max(Math.min(n, length), 0);\n  var last = length - 1;\n  for (var index = 0; index < n; index++) {\n    var rand = random(index, last);\n    var temp = sample[index];\n    sample[index] = sample[rand];\n    sample[rand] = temp;\n  }\n  return sample.slice(0, n);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/sample.js\n// module id = null\n// module chunks = ","import sample from './sample.js';\n\n// Shuffle a collection.\nexport default function shuffle(obj) {\n  return sample(obj, Infinity);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/shuffle.js\n// module id = null\n// module chunks = ","import cb from './_cb.js';\nimport pluck from './pluck.js';\nimport map from './map.js';\n\n// Sort the object's values by a criterion produced by an iteratee.\nexport default function sortBy(obj, iteratee, context) {\n  var index = 0;\n  iteratee = cb(iteratee, context);\n  return pluck(map(obj, function(value, key, list) {\n    return {\n      value: value,\n      index: index++,\n      criteria: iteratee(value, key, list)\n    };\n  }).sort(function(left, right) {\n    var a = left.criteria;\n    var b = right.criteria;\n    if (a !== b) {\n      if (a > b || a === void 0) return 1;\n      if (a < b || b === void 0) return -1;\n    }\n    return left.index - right.index;\n  }), 'value');\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/sortBy.js\n// module id = null\n// module chunks = ","import cb from './_cb.js';\nimport each from './each.js';\n\n// An internal function used for aggregate \"group by\" operations.\nexport default function group(behavior, partition) {\n  return function(obj, iteratee, context) {\n    var result = partition ? [[], []] : {};\n    iteratee = cb(iteratee, context);\n    each(obj, function(value, index) {\n      var key = iteratee(value, index, obj);\n      behavior(result, value, key);\n    });\n    return result;\n  };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_group.js\n// module id = null\n// module chunks = ","import group from './_group.js';\nimport has from './_has.js';\n\n// Groups the object's values by a criterion. Pass either a string attribute\n// to group by, or a function that returns the criterion.\nexport default group(function(result, value, key) {\n  if (has(result, key)) result[key].push(value); else result[key] = [value];\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/groupBy.js\n// module id = null\n// module chunks = ","import group from './_group.js';\n\n// Indexes the object's values by a criterion, similar to `_.groupBy`, but for\n// when you know that your index values will be unique.\nexport default group(function(result, value, key) {\n  result[key] = value;\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/indexBy.js\n// module id = null\n// module chunks = ","import group from './_group.js';\nimport has from './_has.js';\n\n// Counts instances of an object that group by a certain criterion. Pass\n// either a string attribute to count by, or a function that returns the\n// criterion.\nexport default group(function(result, value, key) {\n  if (has(result, key)) result[key]++; else result[key] = 1;\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/countBy.js\n// module id = null\n// module chunks = ","import group from './_group.js';\n\n// Split a collection into two arrays: one whose elements all pass the given\n// truth test, and one whose elements all do not pass the truth test.\nexport default group(function(result, value, pass) {\n  result[pass ? 0 : 1].push(value);\n}, true);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/partition.js\n// module id = null\n// module chunks = ","import isArray from './isArray.js';\nimport { slice } from './_setup.js';\nimport isString from './isString.js';\nimport isArrayLike from './_isArrayLike.js';\nimport map from './map.js';\nimport identity from './identity.js';\nimport values from './values.js';\n\n// Safely create a real, live array from anything iterable.\nvar reStrSymbol = /[^\\ud800-\\udfff]|[\\ud800-\\udbff][\\udc00-\\udfff]|[\\ud800-\\udfff]/g;\nexport default function toArray(obj) {\n  if (!obj) return [];\n  if (isArray(obj)) return slice.call(obj);\n  if (isString(obj)) {\n    // Keep surrogate pair characters together.\n    return obj.match(reStrSymbol);\n  }\n  if (isArrayLike(obj)) return map(obj, identity);\n  return values(obj);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/toArray.js\n// module id = null\n// module chunks = ","import isArrayLike from './_isArrayLike.js';\nimport keys from './keys.js';\n\n// Return the number of elements in a collection.\nexport default function size(obj) {\n  if (obj == null) return 0;\n  return isArrayLike(obj) ? obj.length : keys(obj).length;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/size.js\n// module id = null\n// module chunks = ","// Internal `_.pick` helper function to determine whether `key` is an enumerable\n// property name of `obj`.\nexport default function keyInObj(value, key, obj) {\n  return key in obj;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_keyInObj.js\n// module id = null\n// module chunks = ","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport optimizeCb from './_optimizeCb.js';\nimport allKeys from './allKeys.js';\nimport keyInObj from './_keyInObj.js';\nimport flatten from './_flatten.js';\n\n// Return a copy of the object only containing the allowed properties.\nexport default restArguments(function(obj, keys) {\n  var result = {}, iteratee = keys[0];\n  if (obj == null) return result;\n  if (isFunction(iteratee)) {\n    if (keys.length > 1) iteratee = optimizeCb(iteratee, keys[1]);\n    keys = allKeys(obj);\n  } else {\n    iteratee = keyInObj;\n    keys = flatten(keys, false, false);\n    obj = Object(obj);\n  }\n  for (var i = 0, length = keys.length; i < length; i++) {\n    var key = keys[i];\n    var value = obj[key];\n    if (iteratee(value, key, obj)) result[key] = value;\n  }\n  return result;\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/pick.js\n// module id = null\n// module chunks = ","import restArguments from './restArguments.js';\nimport isFunction from './isFunction.js';\nimport negate from './negate.js';\nimport map from './map.js';\nimport flatten from './_flatten.js';\nimport contains from './contains.js';\nimport pick from './pick.js';\n\n// Return a copy of the object without the disallowed properties.\nexport default restArguments(function(obj, keys) {\n  var iteratee = keys[0], context;\n  if (isFunction(iteratee)) {\n    iteratee = negate(iteratee);\n    if (keys.length > 1) context = keys[1];\n  } else {\n    keys = map(flatten(keys, false, false), String);\n    iteratee = function(value, key) {\n      return !contains(keys, key);\n    };\n  }\n  return pick(obj, iteratee, context);\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/omit.js\n// module id = null\n// module chunks = ","import { slice } from './_setup.js';\n\n// Returns everything but the last entry of the array. Especially useful on\n// the arguments object. Passing **n** will return all the values in\n// the array, excluding the last N.\nexport default function initial(array, n, guard) {\n  return slice.call(array, 0, Math.max(0, array.length - (n == null || guard ? 1 : n)));\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/initial.js\n// module id = null\n// module chunks = ","import initial from './initial.js';\n\n// Get the first element of an array. Passing **n** will return the first N\n// values in the array. The **guard** check allows it to work with `_.map`.\nexport default function first(array, n, guard) {\n  if (array == null || array.length < 1) return n == null || guard ? void 0 : [];\n  if (n == null || guard) return array[0];\n  return initial(array, array.length - n);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/first.js\n// module id = null\n// module chunks = ","import { slice } from './_setup.js';\n\n// Returns everything but the first entry of the `array`. Especially useful on\n// the `arguments` object. Passing an **n** will return the rest N values in the\n// `array`.\nexport default function rest(array, n, guard) {\n  return slice.call(array, n == null || guard ? 1 : n);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/rest.js\n// module id = null\n// module chunks = ","import rest from './rest.js';\n\n// Get the last element of an array. Passing **n** will return the last N\n// values in the array.\nexport default function last(array, n, guard) {\n  if (array == null || array.length < 1) return n == null || guard ? void 0 : [];\n  if (n == null || guard) return array[array.length - 1];\n  return rest(array, Math.max(0, array.length - n));\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/last.js\n// module id = null\n// module chunks = ","import filter from './filter.js';\n\n// Trim out all falsy values from an array.\nexport default function compact(array) {\n  return filter(array, Boolean);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/compact.js\n// module id = null\n// module chunks = ","import _flatten from './_flatten.js';\n\n// Flatten out an array, either recursively (by default), or up to `depth`.\n// Passing `true` or `false` as `depth` means `1` or `Infinity`, respectively.\nexport default function flatten(array, depth) {\n  return _flatten(array, depth, false);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/flatten.js\n// module id = null\n// module chunks = ","import restArguments from './restArguments.js';\nimport flatten from './_flatten.js';\nimport filter from './filter.js';\nimport contains from './contains.js';\n\n// Take the difference between one array and a number of other arrays.\n// Only the elements present in just the first array will remain.\nexport default restArguments(function(array, rest) {\n  rest = flatten(rest, true, true);\n  return filter(array, function(value){\n    return !contains(rest, value);\n  });\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/difference.js\n// module id = null\n// module chunks = ","import restArguments from './restArguments.js';\nimport difference from './difference.js';\n\n// Return a version of the array that does not contain the specified value(s).\nexport default restArguments(function(array, otherArrays) {\n  return difference(array, otherArrays);\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/without.js\n// module id = null\n// module chunks = ","import isBoolean from './isBoolean.js';\nimport cb from './_cb.js';\nimport getLength from './_getLength.js';\nimport contains from './contains.js';\n\n// Produce a duplicate-free version of the array. If the array has already\n// been sorted, you have the option of using a faster algorithm.\n// The faster algorithm will not work with an iteratee if the iteratee\n// is not a one-to-one function, so providing an iteratee will disable\n// the faster algorithm.\nexport default function uniq(array, isSorted, iteratee, context) {\n  if (!isBoolean(isSorted)) {\n    context = iteratee;\n    iteratee = isSorted;\n    isSorted = false;\n  }\n  if (iteratee != null) iteratee = cb(iteratee, context);\n  var result = [];\n  var seen = [];\n  for (var i = 0, length = getLength(array); i < length; i++) {\n    var value = array[i],\n        computed = iteratee ? iteratee(value, i, array) : value;\n    if (isSorted && !iteratee) {\n      if (!i || seen !== computed) result.push(value);\n      seen = computed;\n    } else if (iteratee) {\n      if (!contains(seen, computed)) {\n        seen.push(computed);\n        result.push(value);\n      }\n    } else if (!contains(result, value)) {\n      result.push(value);\n    }\n  }\n  return result;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/uniq.js\n// module id = null\n// module chunks = ","import restArguments from './restArguments.js';\nimport uniq from './uniq.js';\nimport flatten from './_flatten.js';\n\n// Produce an array that contains the union: each distinct element from all of\n// the passed-in arrays.\nexport default restArguments(function(arrays) {\n  return uniq(flatten(arrays, true, true));\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/union.js\n// module id = null\n// module chunks = ","import getLength from './_getLength.js';\nimport contains from './contains.js';\n\n// Produce an array that contains every item shared between all the\n// passed-in arrays.\nexport default function intersection(array) {\n  var result = [];\n  var argsLength = arguments.length;\n  for (var i = 0, length = getLength(array); i < length; i++) {\n    var item = array[i];\n    if (contains(result, item)) continue;\n    var j;\n    for (j = 1; j < argsLength; j++) {\n      if (!contains(arguments[j], item)) break;\n    }\n    if (j === argsLength) result.push(item);\n  }\n  return result;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/intersection.js\n// module id = null\n// module chunks = ","import max from './max.js';\nimport getLength from './_getLength.js';\nimport pluck from './pluck.js';\n\n// Complement of zip. Unzip accepts an array of arrays and groups\n// each array's elements on shared indices.\nexport default function unzip(array) {\n  var length = array && max(array, getLength).length || 0;\n  var result = Array(length);\n\n  for (var index = 0; index < length; index++) {\n    result[index] = pluck(array, index);\n  }\n  return result;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/unzip.js\n// module id = null\n// module chunks = ","import restArguments from './restArguments.js';\nimport unzip from './unzip.js';\n\n// Zip together multiple lists into a single array -- elements that share\n// an index go together.\nexport default restArguments(unzip);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/zip.js\n// module id = null\n// module chunks = ","import getLength  from './_getLength.js';\n\n// Converts lists into objects. Pass either a single array of `[key, value]`\n// pairs, or two parallel arrays of the same length -- one of keys, and one of\n// the corresponding values. Passing by pairs is the reverse of `_.pairs`.\nexport default function object(list, values) {\n  var result = {};\n  for (var i = 0, length = getLength(list); i < length; i++) {\n    if (values) {\n      result[list[i]] = values[i];\n    } else {\n      result[list[i][0]] = list[i][1];\n    }\n  }\n  return result;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/object.js\n// module id = null\n// module chunks = ","// Generate an integer Array containing an arithmetic progression. A port of\n// the native Python `range()` function. See\n// [the Python documentation](https://docs.python.org/library/functions.html#range).\nexport default function range(start, stop, step) {\n  if (stop == null) {\n    stop = start || 0;\n    start = 0;\n  }\n  if (!step) {\n    step = stop < start ? -1 : 1;\n  }\n\n  var length = Math.max(Math.ceil((stop - start) / step), 0);\n  var range = Array(length);\n\n  for (var idx = 0; idx < length; idx++, start += step) {\n    range[idx] = start;\n  }\n\n  return range;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/range.js\n// module id = null\n// module chunks = ","import { slice } from './_setup.js';\n\n// Chunk a single array into multiple arrays, each containing `count` or fewer\n// items.\nexport default function chunk(array, count) {\n  if (count == null || count < 1) return [];\n  var result = [];\n  var i = 0, length = array.length;\n  while (i < length) {\n    result.push(slice.call(array, i, i += count));\n  }\n  return result;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/chunk.js\n// module id = null\n// module chunks = ","import _ from './underscore.js';\n\n// Helper function to continue chaining intermediate results.\nexport default function chainResult(instance, obj) {\n  return instance._chain ? _(obj).chain() : obj;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_chainResult.js\n// module id = null\n// module chunks = ","import _ from './underscore.js';\nimport each from './each.js';\nimport functions from './functions.js';\nimport { push } from './_setup.js';\nimport chainResult from './_chainResult.js';\n\n// Add your own custom functions to the Underscore object.\nexport default function mixin(obj) {\n  each(functions(obj), function(name) {\n    var func = _[name] = obj[name];\n    _.prototype[name] = function() {\n      var args = [this._wrapped];\n      push.apply(args, arguments);\n      return chainResult(this, func.apply(_, args));\n    };\n  });\n  return _;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/mixin.js\n// module id = null\n// module chunks = ","import _ from './underscore.js';\nimport each from './each.js';\nimport { ArrayProto } from './_setup.js';\nimport chainResult from './_chainResult.js';\n\n// Add all mutator `Array` functions to the wrapper.\neach(['pop', 'push', 'reverse', 'shift', 'sort', 'splice', 'unshift'], function(name) {\n  var method = ArrayProto[name];\n  _.prototype[name] = function() {\n    var obj = this._wrapped;\n    if (obj != null) {\n      method.apply(obj, arguments);\n      if ((name === 'shift' || name === 'splice') && obj.length === 0) {\n        delete obj[0];\n      }\n    }\n    return chainResult(this, obj);\n  };\n});\n\n// Add all accessor `Array` functions to the wrapper.\neach(['concat', 'join', 'slice'], function(name) {\n  var method = ArrayProto[name];\n  _.prototype[name] = function() {\n    var obj = this._wrapped;\n    if (obj != null) obj = method.apply(obj, arguments);\n    return chainResult(this, obj);\n  };\n});\n\nexport default _;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/underscore-array-methods.js\n// module id = null\n// module chunks = ","// Named Exports\n// =============\n\n//     Underscore.js 1.13.1\n//     https://underscorejs.org\n//     (c) 2009-2021 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors\n//     Underscore may be freely distributed under the MIT license.\n\n// Baseline setup.\nexport { VERSION } from './_setup.js';\nexport { default as restArguments } from './restArguments.js';\n\n// Object Functions\n// ----------------\n// Our most fundamental functions operate on any JavaScript object.\n// Most functions in Underscore depend on at least one function in this section.\n\n// A group of functions that check the types of core JavaScript values.\n// These are often informally referred to as the \"isType\" functions.\nexport { default as isObject } from './isObject.js';\nexport { default as isNull } from './isNull.js';\nexport { default as isUndefined } from './isUndefined.js';\nexport { default as isBoolean } from './isBoolean.js';\nexport { default as isElement } from './isElement.js';\nexport { default as isString } from './isString.js';\nexport { default as isNumber } from './isNumber.js';\nexport { default as isDate } from './isDate.js';\nexport { default as isRegExp } from './isRegExp.js';\nexport { default as isError } from './isError.js';\nexport { default as isSymbol } from './isSymbol.js';\nexport { default as isArrayBuffer } from './isArrayBuffer.js';\nexport { default as isDataView } from './isDataView.js';\nexport { default as isArray } from './isArray.js';\nexport { default as isFunction } from './isFunction.js';\nexport { default as isArguments } from './isArguments.js';\nexport { default as isFinite } from './isFinite.js';\nexport { default as isNaN } from './isNaN.js';\nexport { default as isTypedArray } from './isTypedArray.js';\nexport { default as isEmpty } from './isEmpty.js';\nexport { default as isMatch } from './isMatch.js';\nexport { default as isEqual } from './isEqual.js';\nexport { default as isMap } from './isMap.js';\nexport { default as isWeakMap } from './isWeakMap.js';\nexport { default as isSet } from './isSet.js';\nexport { default as isWeakSet } from './isWeakSet.js';\n\n// Functions that treat an object as a dictionary of key-value pairs.\nexport { default as keys } from './keys.js';\nexport { default as allKeys } from './allKeys.js';\nexport { default as values } from './values.js';\nexport { default as pairs } from './pairs.js';\nexport { default as invert } from './invert.js';\nexport { default as functions,\n         default as methods   } from './functions.js';\nexport { default as extend } from './extend.js';\nexport { default as extendOwn,\n         default as assign    } from './extendOwn.js';\nexport { default as defaults } from './defaults.js';\nexport { default as create } from './create.js';\nexport { default as clone } from './clone.js';\nexport { default as tap } from './tap.js';\nexport { default as get } from './get.js';\nexport { default as has } from './has.js';\nexport { default as mapObject } from './mapObject.js';\n\n// Utility Functions\n// -----------------\n// A bit of a grab bag: Predicate-generating functions for use with filters and\n// loops, string escaping and templating, create random numbers and unique ids,\n// and functions that facilitate Underscore's chaining and iteration conventions.\nexport { default as identity } from './identity.js';\nexport { default as constant } from './constant.js';\nexport { default as noop } from './noop.js';\nexport { default as toPath } from './toPath.js';\nexport { default as property } from './property.js';\nexport { default as propertyOf } from './propertyOf.js';\nexport { default as matcher,\n         default as matches } from './matcher.js';\nexport { default as times } from './times.js';\nexport { default as random } from './random.js';\nexport { default as now } from './now.js';\nexport { default as escape } from './escape.js';\nexport { default as unescape } from './unescape.js';\nexport { default as templateSettings } from './templateSettings.js';\nexport { default as template } from './template.js';\nexport { default as result } from './result.js';\nexport { default as uniqueId } from './uniqueId.js';\nexport { default as chain } from './chain.js';\nexport { default as iteratee } from './iteratee.js';\n\n// Function (ahem) Functions\n// -------------------------\n// These functions take a function as an argument and return a new function\n// as the result. Also known as higher-order functions.\nexport { default as partial } from './partial.js';\nexport { default as bind } from './bind.js';\nexport { default as bindAll } from './bindAll.js';\nexport { default as memoize } from './memoize.js';\nexport { default as delay } from './delay.js';\nexport { default as defer } from './defer.js';\nexport { default as throttle } from './throttle.js';\nexport { default as debounce } from './debounce.js';\nexport { default as wrap } from './wrap.js';\nexport { default as negate } from './negate.js';\nexport { default as compose } from './compose.js';\nexport { default as after } from './after.js';\nexport { default as before } from './before.js';\nexport { default as once } from './once.js';\n\n// Finders\n// -------\n// Functions that extract (the position of) a single element from an object\n// or array based on some criterion.\nexport { default as findKey } from './findKey.js';\nexport { default as findIndex } from './findIndex.js';\nexport { default as findLastIndex } from './findLastIndex.js';\nexport { default as sortedIndex } from './sortedIndex.js';\nexport { default as indexOf } from './indexOf.js';\nexport { default as lastIndexOf } from './lastIndexOf.js';\nexport { default as find,\n         default as detect } from './find.js';\nexport { default as findWhere } from './findWhere.js';\n\n// Collection Functions\n// --------------------\n// Functions that work on any collection of elements: either an array, or\n// an object of key-value pairs.\nexport { default as each,\n         default as forEach } from './each.js';\nexport { default as map,\n         default as collect } from './map.js';\nexport { default as reduce,\n         default as foldl,\n         default as inject } from './reduce.js';\nexport { default as reduceRight,\n         default as foldr       } from './reduceRight.js';\nexport { default as filter,\n         default as select } from './filter.js';\nexport { default as reject } from './reject.js';\nexport { default as every,\n         default as all   } from './every.js';\nexport { default as some,\n         default as any  } from './some.js';\nexport { default as contains,\n         default as includes,\n         default as include  } from './contains.js';\nexport { default as invoke } from './invoke.js';\nexport { default as pluck } from './pluck.js';\nexport { default as where } from './where.js';\nexport { default as max } from './max.js';\nexport { default as min } from './min.js';\nexport { default as shuffle } from './shuffle.js';\nexport { default as sample } from './sample.js';\nexport { default as sortBy } from './sortBy.js';\nexport { default as groupBy } from './groupBy.js';\nexport { default as indexBy } from './indexBy.js';\nexport { default as countBy } from './countBy.js';\nexport { default as partition } from './partition.js';\nexport { default as toArray } from './toArray.js';\nexport { default as size } from './size.js';\n\n// `_.pick` and `_.omit` are actually object functions, but we put\n// them here in order to create a more natural reading order in the\n// monolithic build as they depend on `_.contains`.\nexport { default as pick } from './pick.js';\nexport { default as omit } from './omit.js';\n\n// Array Functions\n// ---------------\n// Functions that operate on arrays (and array-likes) only, because they’re\n// expressed in terms of operations on an ordered list of values.\nexport { default as first,\n         default as head,\n         default as take  } from './first.js';\nexport { default as initial } from './initial.js';\nexport { default as last } from './last.js';\nexport { default as rest,\n         default as tail,\n         default as drop } from './rest.js';\nexport { default as compact } from './compact.js';\nexport { default as flatten } from './flatten.js';\nexport { default as without } from './without.js';\nexport { default as uniq,\n         default as unique } from './uniq.js';\nexport { default as union } from './union.js';\nexport { default as intersection } from './intersection.js';\nexport { default as difference } from './difference.js';\nexport { default as unzip,\n         default as transpose } from './unzip.js';\nexport { default as zip } from './zip.js';\nexport { default as object } from './object.js';\nexport { default as range } from './range.js';\nexport { default as chunk } from './chunk.js';\n\n// OOP\n// ---\n// These modules support the \"object-oriented\" calling style. See also\n// `underscore.js` and `index-default.js`.\nexport { default as mixin } from './mixin.js';\nexport { default } from './underscore-array-methods.js';\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/index.js\n// module id = null\n// module chunks = ","// Default Export\n// ==============\n// In this module, we mix our bundled exports into the `_` object and export\n// the result. This is analogous to setting `module.exports = _` in CommonJS.\n// Hence, this module is also the entry point of our UMD bundle and the package\n// entry point for CommonJS and AMD users. In other words, this is (the source\n// of) the module you are interfacing with when you do any of the following:\n//\n// ```js\n// // CommonJS\n// var _ = require('underscore');\n//\n// // AMD\n// define(['underscore'], function(_) {...});\n//\n// // UMD in the browser\n// // _ is available as a global variable\n// ```\nimport * as allExports from './index.js';\nimport { mixin } from './index.js';\n\n// Add all of the Underscore functions to the wrapper object.\nvar _ = mixin(allExports);\n// Legacy Node.js API.\n_._ = _;\n// Export the Underscore API.\nexport default _;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/index-default.js\n// module id = null\n// module chunks = ","// ESM Exports\n// ===========\n// This module is the package entry point for ES module users. In other words,\n// it is the module they are interfacing with when they import from the whole\n// package instead of from a submodule, like this:\n//\n// ```js\n// import { map } from 'underscore';\n// ```\n//\n// The difference with `./index-default`, which is the package entry point for\n// CommonJS, AMD and UMD users, is purely technical. In ES modules, named and\n// default exports are considered to be siblings, so when you have a default\n// export, its properties are not automatically available as named exports. For\n// this reason, we re-export the named exports in addition to providing the same\n// default export as in `./index-default`.\nexport { default } from './index-default.js';\nexport * from './index.js';\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/index-all.js\n// module id = null\n// module chunks = ","import { each, isString, isArray, contains } from 'underscore';\nimport { Assert } from '../misc/Assert';\nimport { Logger } from '../misc/Logger';\nimport { IStringMap } from '../rest/GenericParam';\nimport { JQueryUtils } from '../utils/JQueryutils';\nimport { Utils } from '../utils/Utils';\nimport { DeviceUtils } from './DeviceUtils';\n\nexport interface IOffset {\n  left: number;\n  top: number;\n}\n\n/**\n * This is essentially an helper class for dom manipulation.<br/>\n * This is intended to provide some basic functionality normally offered by jQuery.<br/>\n * To minimize the multiple jQuery conflict we have while integrating in various system, we implemented the very small subset that the framework needs.<br/>\n * See {@link $$}, which is a function that wraps this class constructor, for less verbose code.\n */\nexport class Dom {\n  private static CLASS_NAME_REGEX = /-?[_a-zA-Z]+[_a-zA-Z0-9-]*/g;\n  private static ONLY_WHITE_SPACE_REGEX = /^\\s*$/;\n  /**\n   * Whether to always register, remove, and trigger events using standard JavaScript rather than attempting to use jQuery first.\n   * @type boolean\n   */\n  public static useNativeJavaScriptEvents = false;\n\n  public el: HTMLElement;\n\n  /**\n   * Create a new Dom object with the given HTMLElement\n   * @param el The HTMLElement to wrap in a Dom object\n   */\n  constructor(el: HTMLElement) {\n    Assert.exists(el);\n    this.el = el;\n  }\n\n  private static handlers: WeakMap<(evt: Event, data: any) => void, (e: CustomEvent) => void> = new WeakMap();\n\n  /**\n   * Helper function to quickly create an HTMLElement\n   * @param type The type of the element (e.g. div, span)\n   * @param props The props (id, className, attributes) of the element<br/>\n   * Can be either specified in dashed-case strings ('my-attribute') or camelCased keys (myAttribute),\n   * the latter of which will automatically get replaced to dash-case.\n   * @param innerHTML The contents of the new HTMLElement, either in string form or as another HTMLElement\n   */\n  static createElement(type: string, props?: Object, ...children: Array<string | HTMLElement | Dom>): HTMLElement {\n    const elem: HTMLElement = document.createElement(type);\n\n    for (const key in props) {\n      if (key === 'className') {\n        elem.className = props['className'];\n      } else {\n        const attr = key.indexOf('-') !== -1 ? key : Utils.toDashCase(key);\n        elem.setAttribute(attr, props[key]);\n      }\n    }\n\n    each(children, (child: string | HTMLElement | Dom) => {\n      if (child instanceof HTMLElement) {\n        elem.appendChild(child);\n      } else if (isString(child)) {\n        elem.innerHTML += child;\n      } else if (child instanceof Dom) {\n        elem.appendChild(child.el);\n      }\n    });\n\n    return elem;\n  }\n\n  /**\n   * Adds the element to the children of the current element\n   * @param element The element to append\n   * @returns {string}\n   */\n  public append(element: HTMLElement) {\n    this.el.appendChild(element);\n  }\n\n  /**\n   * Get the css value of the specified property.<br/>\n   * @param property The property\n   * @returns {string}\n   */\n  public css(property: string): string {\n    if (this.el.style[property]) {\n      return this.el.style[property];\n    }\n    return window.getComputedStyle(this.el).getPropertyValue(property);\n  }\n\n  /**\n   * Get or set the text content of the HTMLElement.<br/>\n   * @param txt Optional. If given, this will set the text content of the element. If not, will return the text content.\n   * @returns {string}\n   */\n  public text(txt?: string): string {\n    if (Utils.isUndefined(txt)) {\n      return this.el.innerText || this.el.textContent;\n    } else {\n      if (this.el.innerText != undefined) {\n        this.el.innerText = txt;\n      } else if (this.el.textContent != undefined) {\n        this.el.textContent = txt;\n      }\n    }\n  }\n\n  /**\n   * Performant way to transform a NodeList to an array of HTMLElement, for manipulation<br/>\n   * http://jsperf.com/nodelist-to-array/72\n   * @param nodeList a {NodeList} to convert to an array\n   * @returns {HTMLElement[]}\n   */\n  public static nodeListToArray(nodeList: NodeList): HTMLElement[] {\n    let i = nodeList.length;\n    const arr: HTMLElement[] = new Array(i);\n    while (i--) {\n      arr[i] = <HTMLElement>nodeList.item(i);\n    }\n    return arr;\n  }\n\n  /**\n   * Focuses on an element.\n   * @param preserveScroll Whether or not to scroll the page to the focused element.\n   */\n  public focus(preserveScroll: boolean) {\n    if (DeviceUtils.getDeviceName() === 'IE') {\n      const { pageXOffset, pageYOffset } = window;\n      this.el.focus();\n      if (preserveScroll) {\n        window.scrollTo(pageXOffset, pageYOffset);\n      }\n    } else {\n      (this.el as any).focus({ preventScroll: preserveScroll });\n    }\n  }\n\n  /**\n   * Empty (remove all child) from the element;\n   */\n  public empty(): void {\n    while (this.el.firstChild) {\n      this.removeChild(this.el.firstChild);\n    }\n  }\n\n  public removeChild(child: Node) {\n    const oldParent = child.parentNode;\n    try {\n      this.el.removeChild(child);\n    } catch (e) {\n      if ((e as Error).name !== 'NotFoundError') {\n        throw e;\n      }\n      if (oldParent === child.parentNode) {\n        throw e;\n      }\n    }\n  }\n\n  /**\n   * Empty the element and all childs from the dom;\n   */\n  public remove(): void {\n    if (this.el.parentNode) {\n      this.el.parentNode.removeChild(this.el);\n    }\n  }\n\n  /**\n   * Show the element by setting display to block;\n   */\n  public show(): void {\n    this.el.style.display = 'block';\n    $$(this.el).setAttribute('aria-hidden', 'false');\n  }\n\n  /**\n   * Hide the element;\n   */\n  public hide(): void {\n    this.el.style.display = 'none';\n    $$(this.el).setAttribute('aria-hidden', 'true');\n  }\n\n  /**\n   * Show the element by setting display to an empty string.\n   */\n  public unhide(): void {\n    this.el.style.display = '';\n    $$(this.el).setAttribute('aria-hidden', 'false');\n  }\n\n  /**\n   * Toggle the element visibility.<br/>\n   * Optional visible parameter, if specified will set the element visibility\n   * @param visible Optional parameter to display or hide the element\n   */\n  public toggle(visible?: boolean): void {\n    if (visible === undefined) {\n      if (this.el.style.display == 'block') {\n        this.hide();\n      } else {\n        this.show();\n      }\n    } else {\n      if (visible) {\n        this.show();\n      } else {\n        this.hide();\n      }\n    }\n  }\n\n  /**\n   * Tries to determine if an element is \"visible\", in a generic manner.\n   *\n   * This is not meant to be a \"foolproof\" method, but only a superficial \"best effort\" detection is performed.\n   */\n  public isVisible() {\n    if (this.css('display') === 'none') {\n      return false;\n    }\n\n    if (this.css('visibility') === 'hidden') {\n      return false;\n    }\n\n    if (this.hasClass('coveo-tab-disabled')) {\n      return false;\n    }\n\n    if (this.hasClass('coveo-hidden')) {\n      return false;\n    }\n\n    if (this.hasClass('coveo-hidden-dependant-facet')) {\n      return false;\n    }\n\n    return true;\n  }\n\n  /**\n   * Returns the value of the specified attribute.\n   * @param name The name of the attribute\n   */\n  public getAttribute(name: string): string {\n    return this.el.getAttribute(name);\n  }\n\n  /**\n   * Sets the value of the specified attribute.\n   * @param name The name of the attribute\n   * @param value The value to set\n   */\n  public setAttribute(name: string, value: string) {\n    this.el.setAttribute(name, value);\n  }\n\n  /**\n   * Find a child element, given a CSS selector\n   * @param selector A CSS selector, can be a .className or #id\n   * @returns {HTMLElement}\n   */\n  public find(selector: string): HTMLElement {\n    return <HTMLElement>this.el.querySelector(selector);\n  }\n\n  /**\n   * Check if the element match the selector.<br/>\n   * The selector can be a class, an id or a tag.<br/>\n   * Eg : .is('.foo') or .is('#foo') or .is('div').\n   */\n  public is(selector: string): boolean {\n    if (this.el.tagName.toLowerCase() == selector.toLowerCase()) {\n      return true;\n    }\n    if (selector[0] == '.') {\n      if (this.hasClass(selector.substr(1))) {\n        return true;\n      }\n    }\n\n    if (selector[0] == '#') {\n      if (this.el.getAttribute('id') == selector.substr(1)) {\n        return true;\n      }\n    }\n\n    return false;\n  }\n\n  /**\n   * Get the first element that matches the classname by testing the element itself and traversing up through its ancestors in the DOM tree.\n   *\n   * Stops at the body of the document\n   * @param className A CSS classname\n   */\n  public closest(className: string): HTMLElement {\n    return this.traverseAncestorForClass(this.el, className);\n  }\n\n  /**\n   * Get the first element that matches the classname by testing the element itself and traversing up through its ancestors in the DOM tree.\n   *\n   * Stops at the body of the document\n   * @returns {any}\n   */\n  public parent(className: string): HTMLElement {\n    if (this.el.parentElement == undefined) {\n      return undefined;\n    }\n    return this.traverseAncestorForClass(this.el.parentElement, className);\n  }\n\n  /**\n   *  Get all the ancestors of the current element that match the given className\n   *\n   *  Return an empty array if none found.\n   * @param className\n   * @returns {HTMLElement[]}\n   */\n  public parents(className: string): HTMLElement[] {\n    const parentsFound = [];\n    let parentFound = this.parent(className);\n    while (parentFound) {\n      parentsFound.push(parentFound);\n      parentFound = new Dom(parentFound).parent(className);\n    }\n    return parentsFound;\n  }\n\n  /**\n   * Return all children\n   * @returns {HTMLElement[]}\n   */\n  public children(): HTMLElement[] {\n    return Dom.nodeListToArray(this.el.children);\n  }\n\n  /**\n   * Return all siblings\n   * @returns {HTMLElement[]}\n   */\n  public siblings(selector: string): HTMLElement[] {\n    const sibs = [];\n    let currentElement = <HTMLElement>this.el.parentNode.firstChild;\n    for (; currentElement; currentElement = <HTMLElement>currentElement.nextSibling) {\n      if (currentElement != this.el) {\n        if (this.matches(currentElement, selector) || !selector) {\n          sibs.push(currentElement);\n        }\n      }\n    }\n    return sibs;\n  }\n\n  private matches(element: HTMLElement, selector: string) {\n    const all = document.querySelectorAll(selector);\n    for (let i = 0; i < all.length; i++) {\n      if (all[i] === element) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  /**\n   * Find all children that match the given CSS selector\n   * @param selector A CSS selector, can be a .className\n   * @returns {HTMLElement[]}\n   */\n  public findAll(selector: string): HTMLElement[] {\n    return Dom.nodeListToArray(this.el.querySelectorAll(selector));\n  }\n\n  /**\n   * Find the child elements using a className\n   * @param className Class of the childs elements to find\n   * @returns {HTMLElement[]}\n   */\n  public findClass(className: string): HTMLElement[] {\n    if ('getElementsByClassName' in this.el) {\n      return Dom.nodeListToArray(this.el.getElementsByClassName(className));\n    }\n  }\n\n  /**\n   * Find an element using an ID\n   * @param id ID of the element to find\n   * @returns {HTMLElement}\n   */\n  public findId(id: string): HTMLElement {\n    return document.getElementById(id);\n  }\n\n  /**\n   * Add a class to the element. Takes care of not adding the same class if the element already has it.\n   * @param className Classname to add to the element\n   */\n  public addClass(classNames: string[]): void;\n  public addClass(className: string): void;\n  public addClass(className: any): void {\n    if (isArray(className)) {\n      each(className, (name: string) => {\n        this.addClass(name);\n      });\n    } else {\n      if (!this.hasClass(className)) {\n        if (this.el.className) {\n          this.el.className += ' ' + className;\n        } else {\n          this.el.className = className;\n        }\n      }\n    }\n  }\n\n  /**\n   * Remove the class on the element. Works even if the element does not possess the class.\n   * @param className Classname to remove on the the element\n   */\n  public removeClass(className: string): void {\n    this.el.className = this.el.className.replace(new RegExp(`(^|\\\\s)${className}(\\\\s|$)`, 'g'), '$1').trim();\n  }\n\n  /**\n   * Toggle the class on the element.\n   * @param className Classname to toggle\n   * @param swtch If true, add the class regardless and if false, remove the class\n   */\n  public toggleClass(className: string, swtch?: boolean): void {\n    if (Utils.isNullOrUndefined(swtch)) {\n      if (this.hasClass(className)) {\n        this.removeClass(className);\n      } else {\n        this.addClass(className);\n      }\n    } else {\n      if (swtch) {\n        this.addClass(className);\n      } else {\n        this.removeClass(className);\n      }\n    }\n  }\n\n  /**\n   * Sets the inner html of the element\n   * @param html The html to set\n   */\n  public setHtml(html: string) {\n    this.el.innerHTML = html;\n  }\n\n  /**\n   * Return an array with all the classname on the element. Empty array if the element has not classname\n   * @returns {any|Array}\n   */\n  public getClass(): string[] {\n    // SVG elements got a className property, but it's not a string, it's an object\n    const className = this.getAttribute('class');\n    if (className && className.match) {\n      return className.match(Dom.CLASS_NAME_REGEX) || [];\n    } else {\n      return [];\n    }\n  }\n\n  /**\n   * Check if the element has the given class name\n   * @param className Classname to verify\n   * @returns {boolean}\n   */\n  public hasClass(className: string): boolean {\n    return contains(this.getClass(), className);\n  }\n\n  /**\n   * Detach the element from the DOM.\n   */\n  public detach(): void {\n    this.el.parentElement && this.el.parentElement.removeChild(this.el);\n  }\n\n  /**\n   * Insert the current node after the given reference node\n   * @param refNode\n   */\n  public insertAfter(refNode: HTMLElement): void {\n    refNode.parentNode && refNode.parentNode.insertBefore(this.el, refNode.nextSibling);\n  }\n\n  /**\n   * Insert the current node before the given reference node\n   * @param refNode\n   */\n  public insertBefore(refNode: HTMLElement): void {\n    refNode.parentNode && refNode.parentNode.insertBefore(this.el, refNode);\n  }\n\n  /**\n   * Insert the given node as the first child of the current node\n   * @param toPrepend\n   */\n  public prepend(toPrepend: HTMLElement) {\n    if (this.el.firstChild) {\n      new Dom(toPrepend).insertBefore(<HTMLElement>this.el.firstChild);\n    } else {\n      this.el.appendChild(toPrepend);\n    }\n  }\n\n  /**\n   * Bind an event handler on the element. Accepts either one (a string) or multiple (Array<String>) event type.<br/>\n   * @param types The {string} or {Array<String>} of types on which to bind an event handler\n   * @param eventHandle The function to execute when the event is triggered\n   */\n  public on(types: string[], eventHandle: (evt: Event, data: any) => void): void;\n  public on(type: string, eventHandle: (evt: Event, data: any) => void): void;\n  public on(type: any, eventHandle: (evt: Event, data: any) => void): void {\n    if (isArray(type)) {\n      each(type, (t: string) => {\n        this.on(t, eventHandle);\n      });\n    } else {\n      const modifiedType = this.processEventTypeToBeJQueryCompatible(type);\n      const jq = JQueryUtils.getJQuery();\n      if (this.shouldUseJQueryEvent()) {\n        jq(this.el).on(modifiedType, eventHandle);\n      } else if (this.el.addEventListener) {\n        const fn = (e: CustomEvent) => {\n          eventHandle(e, e.detail);\n        };\n        Dom.handlers.set(eventHandle, fn);\n        // Mark touch events as passive for performance reasons:\n        // https://github.com/WICG/EventListenerOptions/blob/gh-pages/explainer.md\n        if (modifiedType && modifiedType.indexOf('touch') != -1) {\n          this.el.addEventListener(modifiedType, fn, { passive: true });\n        } else {\n          this.el.addEventListener(modifiedType, fn, false);\n        }\n      } else if (this.el['on']) {\n        this.el['on']('on' + modifiedType, eventHandle);\n      }\n    }\n  }\n\n  /**\n   * Bind an event handler on the element. Accepts either one (a string) or multiple (Array<String>) event type.<br/>\n   * The event handler will execute only ONE time.\n   * @param types The {string} or {Array<String>} of types on which to bind an event handler\n   * @param eventHandle The function to execute when the event is triggered\n   */\n  public one(types: string[], eventHandle: (evt: Event, args?: any) => void): void;\n  public one(type: string, eventHandle: (evt: Event, args?: any) => void): void;\n  public one(type: any, eventHandle: (evt: Event, args?: any) => void): void {\n    if (isArray(type)) {\n      each(type, (t: string) => {\n        this.one(t, eventHandle);\n      });\n    } else {\n      const modifiedType = this.processEventTypeToBeJQueryCompatible(type);\n      const once = (e: Event, args: any) => {\n        this.off(modifiedType, once);\n        return eventHandle(e, args);\n      };\n      this.on(modifiedType, once);\n    }\n  }\n\n  /**\n   * Remove an event handler on the element. Accepts either one (a string) or multiple (Array<String>) event type.<br/>\n   * @param types The {string} or {Array<String>} of types on which to remove an event handler\n   * @param eventHandle The function to remove on the element\n   */\n  public off(types: string[], eventHandle: (evt: Event, arg?: any) => void): void;\n  public off(type: string, eventHandle: (evt: Event, arg?: any) => void): void;\n  public off(type: any, eventHandle: (evt: Event, arg?: any) => void): void {\n    if (isArray(type)) {\n      each(type, (t: string) => {\n        this.off(t, eventHandle);\n      });\n    } else {\n      const modifiedType = this.processEventTypeToBeJQueryCompatible(type);\n      const jq = JQueryUtils.getJQuery();\n      if (this.shouldUseJQueryEvent()) {\n        jq(this.el).off(modifiedType, eventHandle);\n      } else if (this.el.removeEventListener) {\n        const handler = Dom.handlers.get(eventHandle);\n        if (handler) {\n          this.el.removeEventListener(modifiedType, handler, false);\n        }\n      } else if (this.el['off']) {\n        this.el['off']('on' + modifiedType, eventHandle);\n      }\n    }\n  }\n\n  /**\n   * Trigger an event on the element.\n   * @param type The event type to trigger\n   * @param data\n   */\n  public trigger(type: string, data?: { [key: string]: any }): void {\n    const modifiedType = this.processEventTypeToBeJQueryCompatible(type);\n    if (this.shouldUseJQueryEvent()) {\n      JQueryUtils.getJQuery()(this.el).trigger(modifiedType, data);\n    } else if (window['CustomEvent'] !== undefined) {\n      const event = new CustomEvent(modifiedType, { detail: data, bubbles: true });\n      this.el.dispatchEvent(event);\n    } else {\n      try {\n        this.el.dispatchEvent(this.buildIE11CustomEvent(modifiedType, data));\n      } catch {\n        this.oldBrowserError();\n      }\n    }\n  }\n\n  /**\n   * Check if the element is \"empty\" (has no innerHTML content). Whitespace is considered empty</br>\n   * @returns {boolean}\n   */\n  public isEmpty(): boolean {\n    return Dom.ONLY_WHITE_SPACE_REGEX.test(this.el.innerHTML);\n  }\n\n  /**\n   * Check if the element is not a locked node (`{ toString(): string }`) and thus have base element properties.\n   * @returns {boolean}\n   */\n  public isValid(): boolean {\n    return this.el != null && this.el.getAttribute != undefined;\n  }\n\n  /**\n   * Check if the element is a descendant of parent\n   * @param other\n   */\n  public isDescendant(parent: HTMLElement): boolean {\n    let node = this.el.parentNode;\n    while (node != null) {\n      if (node == parent) {\n        return true;\n      }\n      node = node.parentNode;\n    }\n    return false;\n  }\n\n  /**\n   * Replace the current element with the other element, then detach the current element\n   * @param otherElem\n   */\n  public replaceWith(otherElem: HTMLElement): void {\n    const parent = this.el.parentNode;\n    if (parent) {\n      new Dom(otherElem).insertAfter(this.el);\n    }\n    this.detach();\n  }\n\n  // based on http://api.jquery.com/position/\n  /**\n   * Return the position relative to the offset parent.\n   */\n  public position(): IOffset {\n    const offsetParent = this.offsetParent();\n    const offset = this.offset();\n    let parentOffset: IOffset = { top: 0, left: 0 };\n\n    if (!$$(offsetParent).is('html')) {\n      parentOffset = $$(offsetParent).offset();\n    }\n\n    let borderTopWidth = parseInt($$(offsetParent).css('borderTopWidth'));\n    let borderLeftWidth = parseInt($$(offsetParent).css('borderLeftWidth'));\n    borderTopWidth = isNaN(borderTopWidth) ? 0 : borderTopWidth;\n    borderLeftWidth = isNaN(borderLeftWidth) ? 0 : borderLeftWidth;\n\n    parentOffset = {\n      top: parentOffset.top + borderTopWidth,\n      left: parentOffset.left + borderLeftWidth\n    };\n\n    let marginTop = parseInt(this.css('marginTop'));\n    let marginLeft = parseInt(this.css('marginLeft'));\n    marginTop = isNaN(marginTop) ? 0 : marginTop;\n    marginLeft = isNaN(marginLeft) ? 0 : marginLeft;\n\n    return {\n      top: offset.top - parentOffset.top - marginTop,\n      left: offset.left - parentOffset.left - marginLeft\n    };\n  }\n\n  // based on https://api.jquery.com/offsetParent/\n  /**\n   * Returns the offset parent. The offset parent is the closest parent that is positioned.\n   * An element is positioned when its position property is not 'static', which is the default.\n   */\n  public offsetParent(): HTMLElement {\n    let offsetParent = this.el.offsetParent;\n\n    while (offsetParent instanceof HTMLElement && $$(offsetParent).css('position') === 'static') {\n      // Will break out if it stumbles upon an non-HTMLElement and return documentElement\n      offsetParent = (<HTMLElement>offsetParent).offsetParent;\n    }\n\n    if (!(offsetParent instanceof HTMLElement)) {\n      return document.documentElement;\n    }\n    return <HTMLElement>offsetParent;\n  }\n\n  // based on http://api.jquery.com/offset/\n  /**\n   * Return the position relative to the document.\n   */\n  public offset(): IOffset {\n    // In <=IE11, calling getBoundingClientRect on a disconnected node throws an error\n    if (!this.el.getClientRects().length) {\n      return { top: 0, left: 0 };\n    }\n\n    const rect = this.el.getBoundingClientRect();\n\n    if (rect.width || rect.height) {\n      let doc = this.el.ownerDocument;\n      let docElem = doc.documentElement;\n\n      return {\n        top: rect.top + window.pageYOffset - docElem.clientTop,\n        left: rect.left + window.pageXOffset - docElem.clientLeft\n      };\n    }\n    return rect;\n  }\n\n  /**\n   * Returns the offset width of the element\n   */\n  public width(): number {\n    return this.el.offsetWidth;\n  }\n\n  /**\n   * Returns the offset height of the element\n   */\n  public height(): number {\n    return this.el.offsetHeight;\n  }\n\n  /**\n   * Clone the node\n   * @param deep true if the children of the node should also be cloned, or false to clone only the specified node.\n   * @returns {Dom}\n   */\n  public clone(deep = false): Dom {\n    return $$(<HTMLElement>this.el.cloneNode(deep));\n  }\n\n  /**\n   * Determine if an element support a particular native DOM event.\n   * @param eventName The event to evaluate. Eg: touchstart, touchend, click, scroll.\n   */\n  public canHandleEvent(eventName: string): boolean {\n    const eventToEvaluate = `on${eventName}`;\n    let isSupported = eventToEvaluate in this.el;\n\n    // This is a protection against false negative.\n    // Some browser will incorrectly report that the event is not supported at this point\n    // To make sure, we need to try and set a fake function as a property on the element,\n    // and then check if it got hooked properly as a 'function' or as something else, meaning\n    // the property is really not defined on the element.\n    if (!isSupported && this.el.setAttribute) {\n      this.el.setAttribute(eventToEvaluate, 'return;');\n      isSupported = typeof this.el[eventToEvaluate] == 'function';\n      this.el.removeAttribute(eventToEvaluate);\n    }\n\n    return isSupported;\n  }\n\n  private buildIE11CustomEvent(type: string, data?: { [key: string]: any }) {\n    const event = document.createEvent('CustomEvent');\n    event.initCustomEvent(type, true, true, data);\n    return event;\n  }\n\n  private shouldUseJQueryEvent() {\n    return JQueryUtils.getJQuery() && !Dom.useNativeJavaScriptEvents;\n  }\n\n  private processEventTypeToBeJQueryCompatible(event: string): string {\n    // From https://api.jquery.com/on/\n    // [...]\n    // > In addition, the .trigger() method can trigger both standard browser event names and custom event names to call attached handlers. Event names should only contain alphanumerics, underscore, and colon characters.\n    if (event) {\n      return event.replace(/[^a-zA-Z0-9\\:\\_]/g, '');\n    }\n    return event;\n  }\n\n  private traverseAncestorForClass(current = this.el, className: string): HTMLElement {\n    if (className.indexOf('.') == 0) {\n      className = className.substr(1);\n    }\n    let found = false;\n    while (!found) {\n      if ($$(current).hasClass(className)) {\n        found = true;\n      }\n      if (current.tagName.toLowerCase() == 'body') {\n        break;\n      }\n      if (current.parentElement == null) {\n        break;\n      }\n      if (!found) {\n        current = current.parentElement;\n      }\n    }\n    if (found) {\n      return current;\n    }\n    return undefined;\n  }\n\n  private oldBrowserError() {\n    new Logger(this).error('CANNOT TRIGGER EVENT FOR OLDER BROWSER');\n  }\n}\n\nexport class Win {\n  constructor(public win: Window) {}\n\n  public height(): number {\n    return this.win.innerHeight;\n  }\n\n  public width(): number {\n    return this.win.innerWidth;\n  }\n\n  public scrollY(): number {\n    return this.supportPageOffset()\n      ? this.win.pageYOffset\n      : this.isCSS1Compat()\n      ? this.win.document.documentElement.scrollTop\n      : this.win.document.body.scrollTop;\n  }\n\n  public scrollX(): number {\n    return this.supportPageOffset()\n      ? window.pageXOffset\n      : this.isCSS1Compat()\n      ? document.documentElement.scrollLeft\n      : document.body.scrollLeft;\n  }\n\n  private isCSS1Compat() {\n    return (this.win.document.compatMode || '') === 'CSS1Compat';\n  }\n\n  private supportPageOffset() {\n    return this.win.pageXOffset !== undefined;\n  }\n}\n\nexport class Doc {\n  constructor(public doc: Document) {}\n\n  public height(): number {\n    const body = this.doc.body;\n    return Math.max(body.scrollHeight, body.offsetHeight);\n  }\n\n  public width(): number {\n    const body = this.doc.body;\n    return Math.max(body.scrollWidth, body.offsetWidth);\n  }\n}\n\n/**\n * Convenience wrapper for the {@link Dom} class. Used to do $$(element).<br/>\n * If passed with an argument which is not an HTMLElement, it will call {@link Dom.createElement}.\n * @param el The HTMLElement to wrap in a Dom object\n * @param type See {@link Dom.createElement}\n * @param props See {@link Dom.createElement}\n * @param ...children See {@link Dom.createElement}\n */\nexport function $$(dom: Dom): Dom;\nexport function $$(html: HTMLElement): Dom;\nexport function $$(type: string, props?: IStringMap<any>, ...children: Array<string | HTMLElement | Dom>): Dom;\nexport function $$(...args: any[]): Dom {\n  if (args.length === 1 && args[0] instanceof Dom) {\n    return args[0];\n  } else if (args.length === 1 && !isString(args[0])) {\n    return new Dom(<HTMLElement>args[0]);\n  } else {\n    return new Dom(Dom.createElement.apply(Dom, args));\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/Dom.ts","import * as _ from 'underscore';\nimport { QueryController } from '../../controllers/QueryController';\nimport { IInitializationEventArgs, InitializationEvents } from '../../events/InitializationEvents';\nimport { Assert } from '../../misc/Assert';\nimport { Logger } from '../../misc/Logger';\nimport { ComponentOptionsModel } from '../../models/ComponentOptionsModel';\nimport { ComponentStateModel } from '../../models/ComponentStateModel';\nimport { QueryStateModel } from '../../models/QueryStateModel';\nimport { IStringMap } from '../../rest/GenericParam';\nimport { IQueryResult } from '../../rest/QueryResult';\nimport { $$ } from '../../utils/Dom';\nimport { HashUtils } from '../../utils/HashUtils';\nimport { JQueryUtils } from '../../utils/JQueryutils';\nimport { Utils } from '../../utils/Utils';\nimport { analyticsActionCauseList, IAnalyticsNoMeta } from '../Analytics/AnalyticsActionListMeta';\nimport { Component, IComponentDefinition } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { SearchInterface, StandaloneSearchInterface } from '../SearchInterface/SearchInterface';\nimport { IJQuery } from './CoveoJQuery';\nimport { InitializationHelper } from './InitializationHelper';\nimport { get, state } from './RegisteredNamedMethods';\nimport { IResultsComponentBindings } from './ResultsComponentBindings';\n\n/**\n * Represent the initialization parameters required to init a new component.\n */\nexport interface IInitializationParameters {\n  options: any;\n  result?: IQueryResult;\n  bindings: IComponentBindings;\n}\n\nexport interface IInitResult {\n  initResult: Promise<boolean>;\n  isLazyInit: boolean;\n}\n\n/**\n * The main purpose of this class is to initialize the framework (a.k.a the code executed when calling `Coveo.init`).<br/>\n * It's also in charge or registering the available components, as well as the method that we expost to the global Coveo scope.<br/>\n * For example, the `Coveo.executeQuery` function will be registed in this class by the {@link QueryController}.\n */\nexport class Initialization {\n  // This is the only difference between an \"eager\" initialization and a \"lazy\" initialization\n  // This function will be set to EagerInitialization.functionGeneratorForComponents or LazyInitialization.functionGeneratorForComponents\n  // This is done in Eager.ts or Lazy.ts (the entry point)\n  // In eager mode, the generator return an array of function. Each function returns \"void\" when called. After all the function have been called, all the components are initialized, synchronously.\n  // In lazy mode, the generator return an array of function. Each function return an array of Promise when called. When all the promises are resolved, the components are correctly initialized, asynchronously.\n  // We need the 2 different mode for a specific reason :\n  // In eager mode, when someone calls Coveo.init, this means the initialization is synchronous, and someone can then immediately start interacting with components.\n  // In lazy mode, when someone calls Coveo.init, they have to wait for the returned promise to resolve before interacting with components.\n  public static componentsFactory: (\n    elements: HTMLElement[],\n    componentClassId: string,\n    initParameters: IInitializationParameters\n  ) => { factory: () => Promise<Component>[] | void; isLazyInit: boolean };\n\n  private static logger = new Logger('Initialization');\n  public static registeredComponents: String[] = [];\n  public static componentAliases: IStringMap<String[]> = {};\n  private static namedMethods: { [s: string]: any } = {};\n\n  // List of every fields that are needed by components when doing a query (the fieldsToInclude property in the query)\n  // Since results components are lazy loaded after the first query (when doing the rendering) we need to register the needed fields before their implementation are loaded in the page.\n  private static fieldsNeededForQuery: string[] = [];\n  // List of every fields that are needed by components when doing a query (the fieldsToInclude property in the query), linked to the component that needs them\n  // It is a bit different from `fieldsNeededForQuery` because we can, in some scenarios, optimize to only get fields for components that are actually in the page\n  private static fieldsNeededForQueryByComponent: IStringMap<string[]> = {};\n\n  /**\n   * Register a new set of options for a given element.<br/>\n   * When the element is eventually initialized as a component, those options will be used / merged to create the final option set to use for this component.<br/>\n   * Note that this function should not normally be called directly, but instead using the global `Coveo.options` function\n   * @param element\n   * @param options\n   */\n  public static registerDefaultOptions(element: HTMLElement, options: {}): void {\n    const existing = element['CoveoDefaultOptions'] || {};\n    const updated = Utils.extendDeep(existing, options);\n    element['CoveoDefaultOptions'] = updated;\n  }\n\n  public static resolveDefaultOptions(element: HTMLElement, options: {}): {} {\n    const optionsForThisElement = element['CoveoDefaultOptions'];\n\n    let optionsSoFar: {};\n    if (Utils.exists(optionsForThisElement)) {\n      optionsSoFar = Utils.extendDeep(optionsForThisElement, options);\n    } else {\n      optionsSoFar = options;\n    }\n\n    if (element.parentElement) {\n      return Initialization.resolveDefaultOptions(element.parentElement, optionsSoFar);\n    } else {\n      return optionsSoFar;\n    }\n  }\n\n  /**\n   * Register a new Component to be recognized by the framework.\n   * This essentially mean that when we call `Coveo.init`, the Initialization class will scan the DOM for known component (which have registed themselves with this call) and create a new component on each element.\n   *\n   * This is meant to register the component to be loaded \"eagerly\" (Immediately available when the UI scripts are included)\n   * @param componentClass\n   */\n  public static registerAutoCreateComponent(componentClass: IComponentDefinition): void {\n    Assert.exists(componentClass);\n    Assert.exists(componentClass.ID);\n    Assert.doesNotExists(Initialization.namedMethods[componentClass.ID]);\n\n    if (!_.contains(Initialization.registeredComponents, componentClass.ID)) {\n      Initialization.registeredComponents.push(componentClass.ID);\n      if (componentClass.aliases) {\n        Initialization.componentAliases[componentClass.ID] = componentClass.aliases;\n      }\n    }\n\n    if (EagerInitialization.eagerlyLoadedComponents[componentClass.ID] == null) {\n      EagerInitialization.eagerlyLoadedComponents[componentClass.ID] = componentClass;\n    }\n\n    if (LazyInitialization.lazyLoadedComponents[componentClass.ID] == null) {\n      LazyInitialization.lazyLoadedComponents[componentClass.ID] = () => {\n        return new Promise((resolve, reject) => {\n          resolve(componentClass);\n        });\n      };\n    }\n  }\n\n  /**\n   * Set the fields that the component needs to add to the query.\n   *\n   * This is used when the {@link ResultList.options.autoSelectFieldsToInclude } is set to `true` (which is `true` by default).\n   *\n   * The framework tries to only include the needed fields from the index, for performance reasons.\n   *\n   * @param componentId The id for the result template component (see [Result Templates](https://docs.coveo.com/en/413/)).\n   * @param fields\n   */\n  public static registerComponentFields(componentId: string, fields: string[]) {\n    Initialization.fieldsNeededForQuery = Utils.concatWithoutDuplicate(Initialization.fieldsNeededForQuery, fields);\n\n    // Register with both name (eg : Facet and CoveoFacet) to reduce possible confusion.\n    // The id concept for component is fuzzy for a lot of people (include the Coveo prefix or not)\n    const registerById = id => {\n      if (Initialization.fieldsNeededForQueryByComponent[id] == null) {\n        Initialization.fieldsNeededForQueryByComponent[id] = fields;\n      } else {\n        Initialization.fieldsNeededForQueryByComponent[id] = Utils.concatWithoutDuplicate(\n          Initialization.fieldsNeededForQueryByComponent[id],\n          fields\n        );\n      }\n    };\n\n    registerById(componentId);\n    registerById(Component.computeCssClassNameForType(componentId));\n  }\n\n  /**\n   * Returns all the fields that the framework currently knows should be added to the query.\n   *\n   * This is used when the {@link ResultList.options.autoSelectFieldsToInclude } is set to `true` (which is `true` by default).\n   *\n   * The framework tries to only include the needed fields from the index, for performance reasons.\n   * @returns {string[]}\n   */\n  public static getRegisteredFieldsForQuery() {\n    return Initialization.fieldsNeededForQuery;\n  }\n\n  /**\n   * Returns all the fields that the framework currently knows should be added to the query, for a given component.\n   *\n   * This is used when the {@link ResultList.options.autoSelectFieldsToInclude } is set to `true` (which is `true` by default).\n   *\n   * The framework tries to only include the needed fields from the index, for performance reasons.\n   * @param componentId\n   * @returns {string[]|Array}\n   */\n  public static getRegisteredFieldsComponentForQuery(componentId: string): string[] {\n    const basicId = Initialization.fieldsNeededForQueryByComponent[componentId] || [];\n    const coveoId = Initialization.fieldsNeededForQueryByComponent[Component.computeCssClassNameForType(componentId)] || [];\n    return Utils.concatWithoutDuplicate(basicId, coveoId);\n  }\n\n  /**\n   * Check if a component is already registered, using it's ID (e.g. : 'Facet').\n   * @param componentClassId\n   * @returns {boolean}\n   */\n  public static isComponentClassIdRegistered(componentClassId: string): boolean {\n    return (\n      _.contains(Initialization.registeredComponents, componentClassId) ||\n      _.contains(Initialization.registeredComponents, Component.computeCssClassNameForType(componentClassId))\n    );\n  }\n\n  /**\n   * Return the list of all known components (the list of ID for each component), whether they are actually loaded or not.\n   * @returns {string[]}\n   */\n  public static getListOfRegisteredComponents() {\n    return Initialization.registeredComponents;\n  }\n\n  /**\n   * Return the list of all components that are currently eagerly loaded.\n   * @returns {string[]}\n   */\n  public static getListOfLoadedComponents() {\n    return _.keys(EagerInitialization.eagerlyLoadedComponents);\n  }\n\n  /**\n   * Return the component class definition, using it's ID (e.g. : 'CoveoFacet').\n   *\n   * This means the component needs to be eagerly loaded.\n   *\n   * @param name\n   * @returns {IComponentDefinition}\n   */\n  public static getRegisteredComponent(name: string) {\n    return EagerInitialization.eagerlyLoadedComponents[name];\n  }\n\n  /**\n   * Initialize the framework. Note that this function should not normally be called directly, but instead using a globally registered function (e.g.: Coveo.init), or {@link Initialization.initSearchInterface} or {@link Initialization.initStandaloneSearchInterface} <br/>\n   * (e.g. : `Coveo.init` or `Coveo.initSearchbox`).\n   * @param element The element on which to initialize the interface.\n   * @param options The options for all components (eg: {Searchbox : {enableSearchAsYouType : true}}).\n   * @param initSearchInterfaceFunction The function to execute to create the {@link SearchInterface} component. Different init call will create different {@link SearchInterface}.\n   */\n  public static initializeFramework(\n    element: HTMLElement,\n    options: any,\n    initSearchInterfaceFunction: (...args: any[]) => IInitResult\n  ): Promise<{ elem: HTMLElement }> {\n    Assert.exists(element);\n    const alreadyInitialized = Component.get(element, QueryController, true);\n    if (alreadyInitialized) {\n      this.logger.error('This DOM element has already been initialized as a search interface, skipping initialization', element);\n      return Promise.resolve({\n        elem: element\n      });\n    }\n\n    options = Initialization.resolveDefaultOptions(element, options);\n\n    const waitForAllPromisesToFinish = async (eventType: string, promises: Promise<any>[]) => {\n      try {\n        const promisesWithErrorsHandledIndividually = promises.map(p => {\n          return p.catch(error =>\n            this.logger.warn(\n              `An error occurred when trying to defer the \\\"${eventType}\\\" event. The defer will be ignored.`,\n              `Error: ${error}`\n            )\n          );\n        });\n        return Promise.all(promisesWithErrorsHandledIndividually);\n      } catch (error) {\n        this.logger.error(\n          `An unexpected error occurred when trying to defer the \\\"${event}\\\" event. All defers will be ignored.`,\n          `Error: ${error}`\n        );\n      }\n    };\n\n    const triggerInitializationEventWithArguments = (eventType: string) => {\n      const initializationEventArgs: IInitializationEventArgs = {\n        defer: []\n      };\n      $$(element).trigger(eventType, initializationEventArgs);\n      if (initializationEventArgs.defer.length > 0) {\n        return waitForAllPromisesToFinish(eventType, initializationEventArgs.defer);\n      } else {\n        return Promise.resolve();\n      }\n    };\n\n    Initialization.performInitFunctionsOption(options, InitializationEvents.beforeInitialization);\n    $$(element).trigger(InitializationEvents.beforeInitialization);\n\n    const toExecuteOnceSearchInterfaceIsInitialized = async () => {\n      const result = await Initialization.initExternalComponents(element, options);\n\n      Initialization.performInitFunctionsOption(options, InitializationEvents.afterComponentsInitialization);\n      await triggerInitializationEventWithArguments(InitializationEvents.afterComponentsInitialization);\n\n      $$(element).trigger(InitializationEvents.restoreHistoryState);\n\n      Initialization.performInitFunctionsOption(options, InitializationEvents.afterInitialization);\n      await triggerInitializationEventWithArguments(InitializationEvents.afterInitialization);\n\n      const searchInterface = <SearchInterface>Component.get(element, SearchInterface);\n      if (Initialization.shouldExecuteFirstQueryAutomatically(searchInterface)) {\n        Initialization.logFirstQueryCause(searchInterface);\n        let shouldLogInActionHistory = true;\n        // We should not log an action history if the interface is a standalone recommendation component.\n        if (Coveo['Recommendation']) {\n          shouldLogInActionHistory = !(searchInterface instanceof Coveo['Recommendation']);\n        }\n        (<QueryController>Component.get(element, QueryController)).executeQuery({\n          logInActionsHistory: shouldLogInActionHistory,\n          isFirstQuery: true\n        });\n      }\n      return result;\n    };\n\n    const resultOfSearchInterfaceInitialization = initSearchInterfaceFunction(element, options);\n\n    // We are executing a \"lazy\" initialization, which returns a Promise\n    // eg : CoveoJsSearch.Lazy.js was included in the page\n    // this means that we can only execute the function after the promise has resolved\n    if (resultOfSearchInterfaceInitialization.isLazyInit) {\n      return resultOfSearchInterfaceInitialization.initResult.then(toExecuteOnceSearchInterfaceIsInitialized).then(() => {\n        return {\n          elem: element\n        };\n      });\n    } else {\n      // Else, we are executing an \"eager\" initialization, which returns void;\n      // eg : CoveoJsSearch.js was included in the page\n      // this mean that this function gets executed immediately\n      return toExecuteOnceSearchInterfaceIsInitialized().then(() => {\n        return {\n          elem: element\n        };\n      });\n    }\n  }\n\n  /**\n   * Create a new standard search interface. This is the function executed when calling `Coveo.init`.\n   * @param element\n   * @param options\n   * @returns {IInitResult}\n   */\n  public static initSearchInterface(element: HTMLElement, options: any = {}): IInitResult {\n    options = Initialization.resolveDefaultOptions(element, options);\n    const searchInterface = new SearchInterface(element, options.SearchInterface, options.Analytics);\n    searchInterface.options.originalOptionsObject = options;\n    const initParameters: IInitializationParameters = { options: options, bindings: searchInterface.getBindings() };\n    return Initialization.automaticallyCreateComponentsInside(element, initParameters, ['Recommendation']);\n  }\n\n  /**\n   * Create a new standalone search interface (standalone search box). This is the function executed when calling `Coveo.initSearchbox`.\n   * @param element\n   * @param options\n   * @returns {IInitResult}\n   */\n  public static initStandaloneSearchInterface(element: HTMLElement, options: any = {}): IInitResult {\n    options = Initialization.resolveDefaultOptions(element, options);\n\n    // Set trigger query on clear to false for standalone search interface automatically\n    // Take care of not overriding any options that could have been set by external code.\n    if (!options.Querybox) {\n      options.Querybox = {};\n    }\n    if (!options.Omnibox) {\n      options.Omnibox = {};\n    }\n    if (!options.Searchbox) {\n      options.Searchbox = {};\n    }\n    if (!options.Querybox.triggerQueryOnClear || !options.Omnibox.triggerQueryOnClear || !options.Searchbox.triggerOnQueryClear) {\n      options.Querybox.triggerQueryOnClear = false;\n      options.Omnibox.triggerQueryOnClear = false;\n      options.Searchbox.triggerQueryOnClear = false;\n    }\n\n    const searchInterface = new StandaloneSearchInterface(element, options.StandaloneSearchInterface, options.Analytics);\n    searchInterface.options.originalOptionsObject = options;\n    const initParameters: IInitializationParameters = { options: options, bindings: searchInterface.getBindings() };\n    return Initialization.automaticallyCreateComponentsInside(element, initParameters);\n  }\n\n  /**\n   * Create a new recommendation search interface. This is the function executed when calling `Coveo.initRecommendation`.\n   * @param element\n   * @param options\n   * @returns {IInitResult}\n   */\n  public static initRecommendationInterface(element: HTMLElement, options: any = {}): IInitResult {\n    options = Initialization.resolveDefaultOptions(element, options);\n    // Since a recommendation interface inherits from a search interface, we need to merge those if passed on init\n    const optionsForRecommendation = _.extend({}, options.SearchInterface, options.Recommendation);\n    // If there is a main search interface, modify the loading animation for the recommendation interface to a \"noop\" element\n    // We don't want 2 animation overlapping\n    if (optionsForRecommendation.mainSearchInterface) {\n      optionsForRecommendation.firstLoadingAnimation = $$('span').el;\n    }\n    const recommendation = new window['Coveo']['Recommendation'](element, optionsForRecommendation, options.Analytics);\n    recommendation.options.originalOptionsObject = options;\n    const initParameters: IInitializationParameters = { options: options, bindings: recommendation.getBindings() };\n    return Initialization.automaticallyCreateComponentsInside(element, initParameters);\n  }\n\n  /**\n   * Scan the result element and all its children for known components. Initialize every known result component found.\n   *\n   * See also : {@link Initialization.automaticallyCreateComponentsInside}.\n   * @param resultElement The root element to scan for known components\n   * @param result The result which needs to be passed to each result component constructor.\n   * @param optionsToInject A set of options to inject for the components found inside the resultElement. These options will be merged with any options passed during the \"init\" call of the search interface.\n   */\n  public static automaticallyCreateComponentsInsideResult(\n    resultElement: HTMLElement,\n    result: IQueryResult,\n    optionsToInject = {}\n  ): IInitResult {\n    const options = { ...{ initOptions: optionsToInject }, ...result.searchInterface.options.originalOptionsObject };\n    const bindings: IResultsComponentBindings = { ...result.searchInterface.getBindings(), resultElement };\n    const initParameters: IInitializationParameters = {\n      options,\n      bindings,\n      result\n    };\n    return Initialization.automaticallyCreateComponentsInside(resultElement, initParameters);\n  }\n\n  /**\n   * Scan the element and all its children for known components. Initialize every known component found.\n   *\n   * @param element\n   * @param initParameters\n   * @param ignore\n   * @returns {IInitResult}\n   */\n  public static automaticallyCreateComponentsInside(\n    element: HTMLElement,\n    initParameters: IInitializationParameters,\n    ignore: string[] = []\n  ): IInitResult {\n    Assert.exists(element);\n\n    const htmlElementsToIgnore = InitializationHelper.findDOMElementsToIgnore(element, ignore);\n    const htmlElementsToInitialize = InitializationHelper.findDOMElementsToInitialize(element, htmlElementsToIgnore);\n\n    let isLazyInit;\n\n    const constructorForEachComponentsInstance = _.chain(htmlElementsToInitialize)\n      .map(htmlElementToInitialize => {\n        const resultsOfFactory = this.componentsFactory(\n          htmlElementToInitialize.htmlElements,\n          htmlElementToInitialize.componentClassId,\n          initParameters\n        );\n        isLazyInit = resultsOfFactory.isLazyInit;\n        return resultsOfFactory.factory;\n      })\n      .map(codeToExecute => {\n        const codeResult = codeToExecute();\n        if (codeResult) {\n          return Promise.all(codeResult).then(() => true);\n        }\n        return Promise.resolve(true);\n      })\n      .value();\n\n    const initResult = Promise.all(constructorForEachComponentsInstance)\n      .then(() => true)\n      .catch(e => {\n        // We log the fatal error on init, but then we try to continue the initialization for the rest of the components.\n        // In most case, this would be caused by a fatal error in a component constructor.\n        // In some cases, it might be for a minor component not essential to basic function of the interface, meaning we could still salvage things here.\n        this.logger.error(e);\n        this.logger.warn(`Skipping initialization of previous component in error ... `);\n        return true;\n      });\n\n    return {\n      initResult,\n      isLazyInit\n    };\n  }\n\n  /**\n   * Register a new globally available method in the Coveo namespace (e.g.: `Coveo.init`).\n   * @param methodName The method name to register.\n   * @param handler The function to execute when the method is called.\n   */\n  public static registerNamedMethod(methodName: string, handler: (...args: any[]) => any) {\n    Assert.isNonEmptyString(methodName);\n    Assert.doesNotExists(EagerInitialization.eagerlyLoadedComponents[methodName]);\n    Assert.doesNotExists(Initialization.namedMethods[methodName]);\n    Assert.exists(handler);\n    Initialization.namedMethods[methodName] = handler;\n  }\n\n  /**\n   * Check if the method is already registed.\n   * @param methodName\n   * @returns {boolean}\n   */\n  public static isNamedMethodRegistered(methodName: string): boolean {\n    return Utils.exists(Initialization.namedMethods[methodName]);\n  }\n\n  /**\n   * 'Monkey patch' (replace the function with a new one) a given method on a component instance.\n   * @param methodName\n   * @param element\n   * @param handler\n   */\n  public static monkeyPatchComponentMethod(methodName: string, element: HTMLElement, handler: (...args: any[]) => any) {\n    Assert.isNonEmptyString(methodName);\n    Assert.exists(handler);\n\n    let componentClass;\n    if (methodName.indexOf('.') > 0) {\n      const splitArg = methodName.split('.');\n      Assert.check(splitArg.length == 2, 'Invalid method name, correct syntax is CoveoComponent.methodName.');\n      componentClass = splitArg[0];\n      methodName = <string>splitArg[1];\n    }\n\n    const boundComponent = Component.get(element, componentClass);\n    Assert.exists(boundComponent);\n    Assert.exists(boundComponent[methodName]);\n\n    const originalMethodName = '__' + methodName;\n    if (!Utils.exists(boundComponent[originalMethodName])) {\n      boundComponent[originalMethodName] = boundComponent[methodName];\n    }\n\n    boundComponent[methodName] = handler;\n  }\n\n  public static initBoxInterface(\n    element: HTMLElement,\n    options: any = {},\n    type: string = 'Standard',\n    injectMarkup: boolean = true\n  ): IInitResult {\n    options = Initialization.resolveDefaultOptions(element, options);\n    let fromInitTypeToBoxReference = 'Box';\n    if (type != 'Standard') {\n      fromInitTypeToBoxReference += 'For' + type;\n    }\n    const boxRef = Component.getComponentRef(fromInitTypeToBoxReference);\n    if (boxRef) {\n      new Logger(element).info('Initializing box of type ' + fromInitTypeToBoxReference);\n      const injectFunction: () => any = injectMarkup ? boxRef.getInjection : () => {};\n      const box = new boxRef(element, options[fromInitTypeToBoxReference], options.Analytics, injectFunction, options);\n      box.options.originalOptionsObject = options;\n      const initParameters: IInitializationParameters = { options: options, bindings: box.getBindings() };\n      return Initialization.automaticallyCreateComponentsInside(element, initParameters);\n    } else {\n      return {\n        initResult: new Promise((resolve, reject) => {\n          new Logger(element).error(\n            'Trying to initialize box of type : ' + fromInitTypeToBoxReference + ' but not found in code (not compiled)!'\n          );\n          Assert.fail('Cannot initialize unknown type of box');\n          reject(false);\n        }),\n        isLazyInit: false\n      };\n    }\n  }\n\n  public static dispatchNamedMethodCall(methodName: string, element: HTMLElement, args: any[]): any {\n    Assert.isNonEmptyString(methodName);\n    Assert.exists(element);\n\n    const namedMethodHandler: (element: HTMLElement, ...args: any[]) => any = Initialization.namedMethods[methodName];\n    Assert.exists(namedMethodHandler);\n\n    Initialization.logger.trace('Dispatching named method call of ' + methodName, element, args);\n    if (args.length != 0) {\n      return namedMethodHandler.apply(null, [element].concat(args));\n    } else {\n      return namedMethodHandler.apply(null, [element]);\n    }\n  }\n\n  public static dispatchNamedMethodCallOrComponentCreation(token: string, element: HTMLElement, args: any[]): any {\n    Assert.isNonEmptyString(token);\n    Assert.exists(element);\n\n    if (Initialization.isNamedMethodRegistered(token)) {\n      return Initialization.dispatchNamedMethodCall(token, element, args);\n    } else if (Initialization.isThereASingleComponentBoundToThisElement(element)) {\n      return Initialization.dispatchMethodCallOnBoundComponent(token, element, args);\n    } else {\n      Assert.fail('No method or component named ' + token + ' are registered.');\n    }\n  }\n\n  public static isSearchFromLink(searchInterface: SearchInterface) {\n    return Utils.isNonEmptyString(searchInterface.getBindings().queryStateModel.get('q'));\n  }\n\n  public static isThereASingleComponentBoundToThisElement(element: HTMLElement): boolean {\n    Assert.exists(element);\n    return Utils.exists(Component.get(element, null, true));\n  }\n\n  public static isThereANonSearchInterfaceComponentBoundToThisElement(element: HTMLElement): boolean {\n    // We automatically consider \"Recommendation\" component to be a special case of search interface\n    // and thus do not check those.\n    if ($$(element).hasClass('CoveoRecommendation')) {\n      return true;\n    }\n    return (\n      Initialization.isThereASingleComponentBoundToThisElement(element) &&\n      !get(element, SearchInterface, true) &&\n      !$$(element).hasClass('CoveoRecommendation')\n    );\n  }\n\n  private static dispatchMethodCallOnBoundComponent(methodName: string, element: HTMLElement, args: any[]): any {\n    Assert.isNonEmptyString(methodName);\n    Assert.exists(element);\n\n    const boundComponent = Component.get(element);\n    Assert.exists(boundComponent);\n\n    const method = boundComponent[methodName];\n    if (Utils.exists(method)) {\n      return method.apply(boundComponent, args);\n    } else {\n      Assert.fail('No method named ' + methodName + ' exist on component ' + boundComponent.type);\n    }\n  }\n\n  private static logFirstQueryCause(searchInterface: SearchInterface) {\n    const firstQueryCause = HashUtils.getValue('firstQueryCause', HashUtils.getHash());\n    if (firstQueryCause != null) {\n      const meta = HashUtils.getValue('firstQueryMeta', HashUtils.getHash()) || {};\n      searchInterface.usageAnalytics.logSearchEvent<IAnalyticsNoMeta>(analyticsActionCauseList[firstQueryCause], meta);\n    } else {\n      if (Initialization.isSearchFromLink(searchInterface)) {\n        searchInterface.usageAnalytics.logSearchEvent<IAnalyticsNoMeta>(analyticsActionCauseList.searchFromLink, {});\n      } else {\n        searchInterface.usageAnalytics.logSearchEvent<IAnalyticsNoMeta>(analyticsActionCauseList.interfaceLoad, {});\n      }\n    }\n  }\n\n  private static performInitFunctionsOption(options, event: string) {\n    if (Utils.exists(options)) {\n      Initialization.performFunctions(options[event]);\n    }\n  }\n\n  private static performFunctions(option) {\n    if (Utils.exists(option)) {\n      _.each(option, (func: () => void) => {\n        if (typeof func == 'function') {\n          func();\n        }\n      });\n    }\n  }\n\n  private static initExternalComponents(element: HTMLElement, options?: any): Promise<Boolean> {\n    if (options && options['externalComponents']) {\n      const searchInterface = <SearchInterface>Component.get(element, SearchInterface);\n      const queryStateModel = <QueryStateModel>Component.get(element, QueryStateModel);\n      const componentStateModel = <ComponentStateModel>Component.get(element, ComponentStateModel);\n      const queryController = <QueryController>Component.get(element, QueryController);\n      const componentOptionsModel = <ComponentOptionsModel>Component.get(element, ComponentOptionsModel);\n      const usageAnalytics = searchInterface.usageAnalytics;\n      Assert.exists(searchInterface);\n      Assert.exists(queryStateModel);\n      Assert.exists(queryController);\n      Assert.exists(componentStateModel);\n      Assert.exists(usageAnalytics);\n      const initParameters: IInitializationParameters = {\n        options: options,\n        bindings: {\n          searchInterface: searchInterface,\n          queryStateModel: queryStateModel,\n          queryController: queryController,\n          usageAnalytics: usageAnalytics,\n          componentStateModel: componentStateModel,\n          componentOptionsModel: componentOptionsModel,\n          root: element\n        }\n      };\n      const initializationOfExternalComponents = _.map(options['externalComponents'], (externalComponent: HTMLElement | IJQuery) => {\n        const elementToInstantiate = externalComponent;\n        if (Utils.isHtmlElement(elementToInstantiate)) {\n          return Initialization.automaticallyCreateComponentsInside(<HTMLElement>elementToInstantiate, initParameters).initResult;\n        } else if (JQueryUtils.isInstanceOfJQuery(elementToInstantiate)) {\n          return Initialization.automaticallyCreateComponentsInside(<HTMLElement>(<any>elementToInstantiate).get(0), initParameters)\n            .initResult;\n        }\n      });\n      return Promise.all(initializationOfExternalComponents)\n        .then(results => _.first(results))\n        .catch(err => {\n          this.logger.error(err);\n          return false;\n        });\n    } else {\n      return Promise.resolve(false);\n    }\n  }\n\n  private static shouldExecuteFirstQueryAutomatically(searchInterface: SearchInterface) {\n    const options = searchInterface.options;\n\n    if (!options) {\n      return true;\n    }\n\n    if (options.autoTriggerQuery === false) {\n      return false;\n    }\n\n    if (options.allowQueriesWithoutKeywords === true) {\n      return true;\n    }\n\n    const currentStateOfQuery = state(searchInterface.element).get('q');\n    return currentStateOfQuery != '';\n  }\n}\n\nexport class LazyInitialization {\n  private static logger = new Logger('LazyInitialization');\n\n  // Map of every component to a promise that resolve with their implementation (lazily loaded)\n  public static lazyLoadedComponents: IStringMap<() => Promise<IComponentDefinition>> = {};\n  public static lazyLoadedModule: IStringMap<() => Promise<any>> = {};\n\n  public static getLazyRegisteredComponent(name: string): Promise<IComponentDefinition> {\n    return LazyInitialization.lazyLoadedComponents[name]();\n  }\n\n  public static getLazyRegisteredModule(name: string): Promise<any> {\n    return LazyInitialization.lazyLoadedModule[name]();\n  }\n\n  public static registerLazyComponent(id: string, load: () => Promise<IComponentDefinition>, aliases?: string[]): void {\n    if (LazyInitialization.lazyLoadedComponents[id] == null) {\n      Assert.exists(load);\n      if (!_.contains(Initialization.registeredComponents, id)) {\n        Initialization.registeredComponents.push(id);\n      }\n      LazyInitialization.lazyLoadedComponents[id] = load;\n      if (aliases) {\n        Initialization.componentAliases[id] = aliases;\n      }\n    } else {\n      this.logger.warn('Component being registered twice', id);\n    }\n  }\n\n  public static buildErrorCallback(chunkName: string, resolve: Function) {\n    return error => {\n      LazyInitialization.logger\n        .warn(`Cannot load chunk for ${chunkName}. You may need to add the coveo-script class on the script tag that includes the Coveo framework. More details [here](https://docs.coveo.com/en/295/javascript-search-framework/lazy-versus-eager-component-loading#fixing-code-chunks-loading-path-issues).\n        ${error}`);\n      resolve(() => {});\n    };\n  }\n\n  public static registerLazyModule(id: string, load: () => Promise<any>): void {\n    if (LazyInitialization.lazyLoadedModule[id] == null) {\n      Assert.exists(load);\n      LazyInitialization.lazyLoadedModule[id] = load;\n    } else {\n      this.logger.warn('Module being registered twice', id);\n    }\n  }\n\n  public static componentsFactory(\n    elements: Element[],\n    componentClassId: string,\n    initParameters: IInitializationParameters\n  ): { factory: () => Promise<Component>[]; isLazyInit: boolean } {\n    const factory = () => {\n      const promises: Promise<Component>[] = [];\n      _.each(elements, (matchingElement: HTMLElement) => {\n        if (Component.get(matchingElement, componentClassId) == null) {\n          // If options were provided, lookup options for this component class and\n          // also for the element id. Merge them and pass those to the factory method.\n          let optionsToUse;\n          if (Utils.exists(initParameters.options)) {\n            const optionsForComponentClass = initParameters.options[componentClassId];\n            const optionsForElementId = initParameters.options[matchingElement.id];\n            const initOptions = initParameters.options['initOptions'] ? initParameters.options['initOptions'][componentClassId] : {};\n            optionsToUse = Utils.extendDeep(optionsForElementId, initOptions);\n            optionsToUse = Utils.extendDeep(optionsForComponentClass, optionsToUse);\n          }\n          const initParamToUse = _.extend({}, initParameters, { options: optionsToUse });\n\n          promises.push(LazyInitialization.createComponentOfThisClassOnElement(componentClassId, matchingElement, initParamToUse));\n        }\n      });\n      return promises;\n    };\n\n    return {\n      factory: factory,\n      isLazyInit: true\n    };\n  }\n\n  private static createComponentOfThisClassOnElement(\n    componentClassId: string,\n    element: HTMLElement,\n    initParameters?: IInitializationParameters\n  ): Promise<Component> {\n    Assert.isNonEmptyString(componentClassId);\n    Assert.exists(element);\n\n    // If another component exist on that element, we do not want to re-initialize again.\n    // The exception being the \"SearchInterface\", since in some case we want end user to initialize directly on the root of the interface\n    // For example, when we are initializing a standalone search box, we might want to target the div for the search box directly.\n    if (Initialization.isThereANonSearchInterfaceComponentBoundToThisElement(element)) {\n      return null;\n    }\n\n    return LazyInitialization.getLazyRegisteredComponent(componentClassId).then((lazyLoadedComponent: IComponentDefinition) => {\n      Assert.exists(lazyLoadedComponent);\n\n      if (Initialization.isThereANonSearchInterfaceComponentBoundToThisElement(element)) {\n        return null;\n      }\n\n      const bindings: IComponentBindings = {};\n      let options = {};\n      let result: IQueryResult;\n\n      if (initParameters != undefined) {\n        _.each(<{ [key: string]: any }>initParameters.bindings, (value, key) => {\n          bindings[key] = value;\n        });\n        options = initParameters.options;\n        result = initParameters.result;\n      }\n\n      LazyInitialization.logger.trace('Creating component of class ' + componentClassId, element, options);\n      return new lazyLoadedComponent(element, options, bindings, result);\n    });\n  }\n}\n\nexport class EagerInitialization {\n  private static logger = new Logger('EagerInitialization');\n\n  // Map of every component with their implementation (eagerly loaded)\n  public static eagerlyLoadedComponents: IStringMap<IComponentDefinition> = {};\n\n  public static componentsFactory(\n    elements: Element[],\n    componentClassId: string,\n    initParameters: IInitializationParameters\n  ): { factory: () => void; isLazyInit: boolean } {\n    const factory = () => {\n      _.each(elements, (matchingElement: HTMLElement) => {\n        if (Component.get(matchingElement, componentClassId) == null) {\n          // If options were provided, lookup options for this component class and\n          // also for the element id. Merge them and pass those to the factory method.\n          let optionsToUse;\n          if (Utils.exists(initParameters.options)) {\n            const optionsForComponentClass = initParameters.options[componentClassId];\n            const optionsForElementId = initParameters.options[matchingElement.id];\n            const initOptions = initParameters.options['initOptions'] ? initParameters.options['initOptions'][componentClassId] : {};\n            optionsToUse = Utils.extendDeep(optionsForElementId, initOptions);\n            optionsToUse = Utils.extendDeep(optionsForComponentClass, optionsToUse);\n          }\n          const initParamToUse = _.extend({}, initParameters, { options: optionsToUse });\n          EagerInitialization.createComponentOfThisClassOnElement(componentClassId, matchingElement, initParamToUse);\n        }\n      });\n    };\n\n    return {\n      factory: factory,\n      isLazyInit: false\n    };\n  }\n\n  private static createComponentOfThisClassOnElement(\n    componentClassId: string,\n    element: HTMLElement,\n    initParameters?: IInitializationParameters\n  ): Component {\n    Assert.isNonEmptyString(componentClassId);\n    Assert.exists(element);\n\n    const eagerlyLoadedComponent: IComponentDefinition = Initialization.getRegisteredComponent(componentClassId);\n    const bindings: IComponentBindings = {};\n    let options = {};\n    let result: IQueryResult;\n\n    if (initParameters != undefined) {\n      _.each(<{ [key: string]: any }>initParameters.bindings, (value, key) => {\n        bindings[key] = value;\n      });\n      options = initParameters.options;\n      result = initParameters.result;\n    }\n\n    // If another component exist on that element, we do not want to re-initialize again.\n    // The exception being the \"SearchInterface\", since in some case we want end user to initialize directly on the root of the interface\n    // For example, when we are initializing a standalone search box, we might want to target the div for the search box directly.\n    if (Initialization.isThereANonSearchInterfaceComponentBoundToThisElement(element)) {\n      return null;\n    }\n\n    EagerInitialization.logger.trace(`Creating component of class ${componentClassId}`, element, options);\n    // This is done so that external code that extends a base component does not have to have two code path for lazy vs eager;\n    // If we do not find the eager component registered, we can instead try to load the one found in lazy mode.\n    // If it still fails there... tough luck. The component simply won't work.\n    if (eagerlyLoadedComponent == null) {\n      LazyInitialization.getLazyRegisteredComponent(componentClassId)\n        .then(lazyLoadedComponent => {\n          EagerInitialization.logger.warn(\n            `Component of class ${componentClassId} was not found in \"Eager\" mode. Using lazy mode as a fallback.`\n          );\n          new lazyLoadedComponent(element, options, bindings, result);\n        })\n        .catch(() => {\n          EagerInitialization.logger.error(\n            `Component of class ${componentClassId} was not found in \"Eager\" mode nor \"Lazy\" mode. It will not be initialized properly...`\n          );\n        });\n      return null;\n    } else {\n      return new eagerlyLoadedComponent(element, options, bindings, result);\n    }\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Base/Initialization.ts","import * as _ from 'underscore';\nimport { IComponentDefinition } from './ui/Base/Component';\nimport { Logger } from './misc/Logger';\nimport { Initialization } from './ui/Base/Initialization';\n\nexport interface IExportedGlobally {\n  [moduleName: string]: any;\n}\n\nexport function exportGlobally(toExportGlobally: IExportedGlobally) {\n  if (window['Coveo'] == undefined) {\n    window['Coveo'] = {};\n  }\n  _.each(_.keys(toExportGlobally), (key: string) => {\n    if (window['Coveo'][key] == null) {\n      window['Coveo'][key] = toExportGlobally[key];\n    }\n  });\n}\n\nexport function lazyExport(component: IComponentDefinition, promiseResolve: Function) {\n  if (component.doExport) {\n    component.doExport();\n  } else {\n    new Logger(this).error(`Component ${component} has no export function !`);\n  }\n  Initialization.registerAutoCreateComponent(component);\n  promiseResolve(component);\n}\n\nexport function lazyExportModule(mod: any, promiseResolve: Function) {\n  if (mod.doExport) {\n    mod.doExport();\n  }\n  promiseResolve(mod);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/GlobalExports.ts","import { IQueryResult } from '../rest/QueryResult';\nimport * as _ from 'underscore';\nimport { IStringMap } from '../rest/GenericParam';\n\nconst isCoveoFieldRegex = /^@[a-zA-Z0-9_\\.]+$/;\n\nexport class Utils {\n  static isUndefined(obj: any): boolean {\n    return typeof obj == 'undefined';\n  }\n\n  static isNull(obj: any): boolean {\n    return obj === null;\n  }\n\n  static isNullOrUndefined(obj: any): boolean {\n    return Utils.isUndefined(obj) || Utils.isNull(obj);\n  }\n\n  static exists(obj: any): boolean {\n    return !Utils.isNullOrUndefined(obj);\n  }\n\n  static toNotNullString(str: string): string {\n    return _.isString(str) ? str : '';\n  }\n\n  static anyTypeToString(value: any): string {\n    return value ? value.toString() : '';\n  }\n\n  static isNullOrEmptyString(str: string): boolean {\n    return Utils.isNullOrUndefined(str) || !Utils.isNonEmptyString(str);\n  }\n\n  static isNonEmptyString(str: string): boolean {\n    return _.isString(str) && str !== '';\n  }\n\n  static isEmptyString(str: string): boolean {\n    return !Utils.isNonEmptyString(str);\n  }\n\n  static stringStartsWith(str: string, startWith: string): boolean {\n    return str.slice(0, startWith.length) == startWith;\n  }\n\n  static stringEndsWith(str: string, endsWith: string): boolean {\n    return str.substring(str.length - endsWith.length, str.length) === endsWith;\n  }\n\n  static isNonEmptyArray(obj: any): boolean {\n    return _.isArray(obj) && obj.length > 0;\n  }\n\n  static isEmptyArray(obj: any): boolean {\n    return !Utils.isNonEmptyArray(obj);\n  }\n\n  static isHtmlElement(obj: any): obj is HTMLElement {\n    if (window['HTMLElement'] != undefined) {\n      return obj instanceof HTMLElement;\n    } else {\n      // IE 8 FIX\n      return obj && obj.nodeType && obj.nodeType == 1;\n    }\n  }\n\n  static parseIntIfNotUndefined(str: string): number {\n    if (Utils.isNonEmptyString(str)) {\n      return parseInt(str, 10);\n    } else {\n      return undefined;\n    }\n  }\n\n  static parseFloatIfNotUndefined(str: string): number {\n    let a: any = 't';\n    a instanceof HTMLDocument;\n    if (Utils.isNonEmptyString(str)) {\n      return parseFloat(str);\n    } else {\n      return undefined;\n    }\n  }\n\n  static round(num: number, decimals: number) {\n    return Math.round(num * Math.pow(10, decimals)) / Math.pow(10, decimals);\n  }\n\n  static parseBooleanIfNotUndefined(str: string): boolean {\n    if (Utils.isNonEmptyString(str)) {\n      switch (str.toLowerCase()) {\n        case 'true':\n        case '1':\n        case 'yes':\n          return true;\n        case 'false':\n        case '0':\n        case 'no':\n          return false;\n        default:\n          return undefined;\n      }\n    } else {\n      return undefined;\n    }\n  }\n\n  static trim(value: string): string {\n    if (value == null) {\n      return null;\n    }\n    return value.replace(/^\\s+|\\s+$/g, '');\n  }\n\n  static encodeHTMLEntities(rawStr: string) {\n    let ret = [];\n    for (let i = rawStr.length - 1; i >= 0; i--) {\n      if (/^[a-z0-9]/i.test(rawStr[i])) {\n        ret.unshift(rawStr[i]);\n      } else {\n        ret.unshift(['&#', rawStr.charCodeAt(i), ';'].join(''));\n      }\n    }\n    return ret.join('');\n  }\n\n  static decodeHTMLEntities(rawString: string) {\n    return rawString.replace(/&#(\\d+);/g, function (match, dec) {\n      return String.fromCharCode(dec);\n    });\n  }\n\n  static safeEncodeURIComponent(rawString: string) {\n    // yiiip...\n    // Explanation : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/encodeURIComponent\n    // Solution : https://stackoverflow.com/a/17109094\n    // Basically some unicode character (low-high surrogate) will throw an \"invalid malformed URI\" error when being encoded as an URI component, and the pair of character is incomplete.\n    // This simply removes those pesky characters\n    if (_.isString(rawString)) {\n      return encodeURIComponent(\n        rawString\n          .replace(/[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])/g, '')\n          .split('')\n          .reverse()\n          .join('')\n          .replace(/[\\uDC00-\\uDFFF](?![\\uD800-\\uDBFF])/g, '')\n          .split('')\n          .reverse()\n          .join('')\n      );\n    } else {\n      // If the passed value is not a string, we probably don't want to do anything here...\n      // The base browser function should be resilient enough\n      return encodeURIComponent(rawString);\n    }\n  }\n\n  static arrayEqual(array1: any[], array2: any[], sameOrder: boolean = true): boolean {\n    if (sameOrder) {\n      return _.isEqual(array1, array2);\n    } else {\n      let arrays = [array1, array2];\n      return _.all(arrays, (array: any[]) => {\n        return array.length == arrays[0].length && _.difference(array, arrays[0]).length == 0;\n      });\n    }\n  }\n\n  static objectEqual(obj1: Object, obj2: Object): boolean {\n    return _.isEqual(obj1, obj2);\n  }\n\n  static isCoveoField(field: string): boolean {\n    return isCoveoFieldRegex.test(field);\n  }\n\n  static escapeRegexCharacter(str: string) {\n    let ret = str.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n    return ret;\n  }\n\n  static getCaseInsensitiveProperty(object: {}, name: string): any {\n    // First try using a fast case-sensitive lookup\n    let value = object[name];\n\n    // Then try a fast case-sensitive lookup with lowercase name\n    if (value == null) {\n      let lowerCaseName = name.toLowerCase();\n      value = object[lowerCaseName];\n      // Then try a slow scanning of all the properties\n      if (value == null) {\n        let matchingKey = _.find(_.keys(object), (key: string) => key.toLowerCase() == lowerCaseName);\n        if (matchingKey != null) {\n          value = object[matchingKey];\n        }\n      }\n    }\n    return value;\n  }\n\n  /**\n   * Get the value of the first field from the array and defined in the result.\n   *\n   * @param result a QueryResult in which to ge the fieldvalue.\n   * @param name One or multiple fieldNames to get the value.\n   */\n  static getFirstAvailableFieldValue(result: IQueryResult, fieldNames: Array<string>): string | undefined {\n    for (let i = 0; i < fieldNames.length; i++) {\n      let value = Utils.getFieldValue(result, fieldNames[i]);\n      if (value !== undefined) {\n        return value;\n      }\n    }\n    return undefined;\n  }\n\n  static getFieldValue(result: IQueryResult, name: string): any {\n    // Be as forgiving as possible about the field name, since we expect\n    // user provided values.\n    if (name == null) {\n      return undefined;\n    }\n    name = Utils.trim(name);\n    if (name[0] == '@') {\n      name = name.substr(1);\n    }\n    if (name == '') {\n      return undefined;\n    }\n\n    // At this point the name should be well formed\n    if (!Utils.isCoveoField('@' + name)) {\n      throw `Not a valid field : ${name}`;\n    }\n    // Handle namespace field values of the form sf.Foo.Bar\n    let parts = name.split('.').reverse();\n    let obj = result.raw;\n    while (parts.length > 1) {\n      obj = Utils.getCaseInsensitiveProperty(obj, parts.pop());\n      if (Utils.isUndefined(obj)) {\n        return undefined;\n      }\n    }\n    let value = Utils.getCaseInsensitiveProperty(obj, parts[0]);\n    // If still nothing, look at the root of the result\n    if (value == null) {\n      value = Utils.getCaseInsensitiveProperty(result, name);\n    }\n    return value;\n  }\n\n  static throttle(func, wait, options: { leading?: boolean; trailing?: boolean } = {}, context?, args?) {\n    let result;\n    let timeout: number = null;\n    let previous = 0;\n    let later = function () {\n      previous = options.leading === false ? 0 : new Date().getTime();\n      timeout = null;\n      result = func.apply(context, args);\n    };\n    return function () {\n      let now = new Date().getTime();\n      if (!previous && options.leading === false) {\n        previous = now;\n      }\n      let remaining = wait - (now - previous);\n      context = this;\n      args = arguments;\n      if (remaining <= 0) {\n        clearTimeout(timeout);\n        timeout = null;\n        previous = now;\n        result = func.apply(context, args);\n      } else if (!timeout && options.trailing !== false) {\n        timeout = window.setTimeout(later, remaining);\n      }\n      return result;\n    };\n  }\n\n  static extendDeep(target, src): {} {\n    if (!target) {\n      target = {};\n    }\n    let isArray = _.isArray(src);\n    let toReturn = (isArray && []) || {};\n    if (isArray) {\n      target = target || [];\n      toReturn = toReturn['concat'](target);\n      _.each(src, (e, i, obj) => {\n        if (typeof target[i] === 'undefined') {\n          toReturn[i] = <any>e;\n        } else if (typeof e === 'object' && !_.isElement(e)) {\n          toReturn[i] = Utils.extendDeep(target[i], e);\n        } else {\n          if (target.indexOf(e) === -1) {\n            toReturn['push'](e);\n          }\n        }\n      });\n    } else {\n      if (target && typeof target === 'object' && !_.isElement(target)) {\n        _.each(_.keys(target), key => {\n          toReturn[key] = target[key];\n        });\n      }\n      _.each(_.keys(src), key => {\n        if (typeof src[key] !== 'object' || !src[key]) {\n          toReturn[key] = src[key];\n        } else {\n          if (!target[key]) {\n            toReturn[key] = src[key];\n          } else {\n            toReturn[key] = Utils.extendDeep(target[key], src[key]);\n          }\n        }\n      });\n    }\n    return toReturn;\n  }\n\n  static getQueryStringValue(key, queryString = window.location.search) {\n    return queryString.replace(new RegExp('^(?:.*[&\\\\?]' + key.replace(/[\\.\\+\\*]/g, '\\\\$&') + '(?:\\\\=([^&]*))?)?.*$', 'i'), '$1');\n  }\n\n  static isValidUrl(str: string): boolean {\n    let regexp = /(ftp|http|https):\\/\\/(\\w+:{0,1}\\w*@)?(\\S+)(:[0-9]+)?(\\/|\\/([\\w#!:.?+=&%@!\\-\\/]))?/;\n    return regexp.test(str);\n  }\n\n  static debounce(func: Function, wait: number) {\n    let timeout: number;\n    let stackTraceTimeout: number;\n    return function (...args: any[]) {\n      if (timeout == null) {\n        timeout = window.setTimeout(() => {\n          timeout = null;\n        }, wait);\n        stackTraceTimeout = setTimeout(() => {\n          func.apply(this, args);\n          stackTraceTimeout = null;\n        });\n      } else if (stackTraceTimeout == null) {\n        clearTimeout(timeout);\n        timeout = window.setTimeout(() => {\n          func.apply(this, args);\n          timeout = null;\n        }, wait);\n      }\n    };\n  }\n\n  static readCookie(name: string) {\n    let nameEQ = name + '=';\n    let ca = document.cookie.split(';');\n    for (let i = 0; i < ca.length; i++) {\n      let c = ca[i];\n      while (c.charAt(0) == ' ') {\n        c = c.substring(1, c.length);\n      }\n      if (c.indexOf(nameEQ) == 0) {\n        return c.substring(nameEQ.length, c.length);\n      }\n    }\n    return null;\n  }\n\n  static toDashCase(camelCased: string) {\n    return camelCased.replace(/([a-z][A-Z])/g, g => g[0] + '-' + g[1].toLowerCase());\n  }\n\n  static toCamelCase(dashCased: string) {\n    return dashCased.replace(/-([a-z])/g, g => g[1].toUpperCase());\n  }\n\n  // Based on http://stackoverflow.com/a/8412989\n  static parseXml(xml: string): XMLDocument {\n    if (typeof DOMParser != 'undefined') {\n      return new DOMParser().parseFromString(xml, 'text/xml');\n    } else if (typeof ActiveXObject != 'undefined' && new ActiveXObject('Microsoft.XMLDOM')) {\n      var xmlDoc = new ActiveXObject('Microsoft.XMLDOM');\n      xmlDoc.async = 'false';\n      xmlDoc.loadXML(xml);\n      return xmlDoc;\n    } else {\n      throw new Error('No XML parser found');\n    }\n  }\n\n  static copyObject<T>(target: T, src: T) {\n    _.each(_.keys(src), key => {\n      if (typeof src[key] !== 'object' || !src[key]) {\n        target[key] = src[key];\n      } else if (!target[key]) {\n        target[key] = src[key];\n      } else {\n        this.copyObject(target[key], src[key]);\n      }\n    });\n  }\n\n  static copyObjectAttributes<T>(target: T, src: T, attributes: string[]) {\n    _.each(_.keys(src), key => {\n      if (_.contains(attributes, key)) {\n        if (typeof src[key] !== 'object' || !src[key]) {\n          target[key] = src[key];\n        } else if (!target[key]) {\n          target[key] = src[key];\n        } else {\n          this.copyObject(target[key], src[key]);\n        }\n      }\n    });\n  }\n\n  static concatWithoutDuplicate(firstArray: any[], secondArray: any[]) {\n    let diff = _.difference(secondArray, firstArray);\n    if (diff && diff.length > 0) {\n      firstArray = firstArray.concat(diff);\n    }\n    return firstArray;\n  }\n\n  static differenceBetweenObjects<T>(firstObject: IStringMap<T>, secondObject: IStringMap<T>) {\n    const difference: IStringMap<T> = {};\n\n    const addDiff = (first: IStringMap<T>, second: IStringMap<T>) => {\n      for (const key in first) {\n        if (first[key] !== second[key] && difference[key] == null) {\n          difference[key] = first[key];\n        }\n      }\n    };\n\n    addDiff(firstObject, secondObject);\n    addDiff(secondObject, firstObject);\n    return difference;\n  }\n\n  static resolveAfter<T = void>(ms: number, returns?: T): Promise<T> {\n    return new Promise(resolve => setTimeout(() => (returns !== undefined ? resolve(returns) : resolve()), ms));\n  }\n\n  static reorderValuesByKeys<T, K extends string>(values: T[], order: K[], getKey: (value: T) => K) {\n    const valuesMap = values.reduce<{ [key: string]: T }>((map, value) => ({ ...map, [getKey(value)]: value }), {});\n    const orderedValues: T[] = [];\n    order.forEach(keyToAppend => {\n      if (valuesMap[keyToAppend]) {\n        orderedValues.push(valuesMap[keyToAppend]);\n      }\n    });\n    return [...orderedValues, ..._.without(values, ...orderedValues)];\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/Utils.ts","import { Logger } from '../misc/Logger';\nimport { Utils } from '../utils/Utils';\nimport * as _ from 'underscore';\n\nexport class Assert {\n  private static logger = new Logger('Assert');\n\n  static failureHandler = (message?: string) => {\n    Assert.logger.error('Assertion Failed!', message);\n\n    if (window['console'] && console.trace) {\n      console.trace();\n    }\n\n    if (Utils.isNonEmptyString(message)) {\n      throw new PreconditionFailedException(message);\n    } else {\n      throw new PreconditionFailedException('Assertion Failed!');\n    }\n  };\n\n  static fail(message?: string) {\n    Assert.failureHandler(message);\n  }\n\n  static check(condition: boolean, message?: string) {\n    if (!condition) {\n      Assert.fail(message);\n    }\n  }\n\n  static isUndefined(obj: any) {\n    Assert.check(Utils.isUndefined(obj), 'Value should be undefined.');\n  }\n\n  static isNotUndefined(obj: any) {\n    Assert.check(!Utils.isUndefined(obj), 'Value should not be undefined.');\n  }\n\n  static isNull(obj: any) {\n    Assert.check(Utils.isNull(obj), 'Value should be null.');\n  }\n\n  static isNotNull(obj: any) {\n    Assert.check(!Utils.isNull(obj), 'Value should not be null.');\n  }\n\n  static exists(obj: any) {\n    Assert.check(!Utils.isNullOrUndefined(obj), 'Value should not be null or undefined');\n  }\n\n  static doesNotExists(obj: any) {\n    Assert.check(Utils.isNullOrUndefined(obj), 'Value should be null or undefined');\n  }\n\n  static isString(obj: any) {\n    Assert.check(_.isString(obj), 'Value should be a string.');\n  }\n\n  static stringStartsWith(str: string, start: string) {\n    Assert.isNonEmptyString(str);\n    Assert.isNonEmptyString(start);\n    Assert.check(str.indexOf(start) == 0, 'Value should start with ' + start);\n  }\n\n  static isNonEmptyString(str: string) {\n    Assert.check(Utils.isNonEmptyString(str), 'Value should be a non-empty string.');\n  }\n\n  static isNumber(obj: any) {\n    Assert.check(_.isNumber(obj), 'Value should be a number.');\n  }\n\n  static isLargerThan(expected: number, actual: number) {\n    Assert.check(actual > expected, 'Value ' + actual + ' should be larger than ' + expected);\n  }\n\n  static isLargerOrEqualsThan(expected: number, actual: number) {\n    Assert.check(actual >= expected, 'Value ' + actual + ' should be larger or equal than ' + expected);\n  }\n\n  static isSmallerThan(expected: number, actual: number) {\n    Assert.check(actual < expected, 'Value ' + actual + ' should be smaller than ' + expected);\n  }\n\n  static isSmallerOrEqualsThan(expected: number, actual: number) {\n    Assert.check(actual <= expected, 'Value ' + actual + ' should be smaller or equal than ' + expected);\n  }\n}\n\nexport class PreconditionFailedException extends Error {\n  constructor(public message: string) {\n    super(message);\n  }\n\n  toString() {\n    return this.message;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/misc/Assert.ts","import { L10N } from '../misc/L10N';\nexport function l(str : \"html\");\nexport function l(str : \"filetype_html\");\nexport function l(str : \"wiki\");\nexport function l(str : \"filetype_wiki\");\nexport function l(str : \"webscraperwebpage\");\nexport function l(str : \"filetype_webscraperwebpage\");\nexport function l(str : \"image\");\nexport function l(str : \"filetype_image\");\nexport function l(str : \"folder\");\nexport function l(str : \"filetype_folder\");\nexport function l(str : \"txt\");\nexport function l(str : \"filetype_txt\");\nexport function l(str : \"zip\");\nexport function l(str : \"filetype_zip\");\nexport function l(str : \"olefile\");\nexport function l(str : \"filetype_olefile\");\nexport function l(str : \"gmailmessage\");\nexport function l(str : \"filetype_gmailmessage\");\nexport function l(str : \"pdf\");\nexport function l(str : \"filetype_pdf\");\nexport function l(str : \"swf\");\nexport function l(str : \"filetype_swf\");\nexport function l(str : \"xml\");\nexport function l(str : \"filetype_xml\");\nexport function l(str : \"vsd\");\nexport function l(str : \"filetype_vsd\");\nexport function l(str : \"svg\");\nexport function l(str : \"filetype_svg\");\nexport function l(str : \"svm\");\nexport function l(str : \"filetype_svm\");\nexport function l(str : \"rssitem\");\nexport function l(str : \"filetype_rssitem\");\nexport function l(str : \"doc\");\nexport function l(str : \"filetype_doc\");\nexport function l(str : \"docx\");\nexport function l(str : \"filetype_docx\");\nexport function l(str : \"xls\");\nexport function l(str : \"filetype_xls\");\nexport function l(str : \"ppt\");\nexport function l(str : \"filetype_ppt\");\nexport function l(str : \"video\");\nexport function l(str : \"filetype_video\");\nexport function l(str : \"youtube\");\nexport function l(str : \"filetype_youtube\");\nexport function l(str : \"saleforceitem\");\nexport function l(str : \"filetype_saleforceitem\");\nexport function l(str : \"dynamicscrmitem\");\nexport function l(str : \"filetype_dynamicscrmitem\");\nexport function l(str : \"salesforceitem\");\nexport function l(str : \"filetype_salesforceitem\");\nexport function l(str : \"odt\");\nexport function l(str : \"filetype_odt\");\nexport function l(str : \"box\");\nexport function l(str : \"filetype_box\");\nexport function l(str : \"jiraissue\");\nexport function l(str : \"filetype_jiraissue\");\nexport function l(str : \"box user\");\nexport function l(str : \"filetype_box user\");\nexport function l(str : \"cfpage\");\nexport function l(str : \"filetype_cfpage\");\nexport function l(str : \"cfcomment\");\nexport function l(str : \"filetype_cfcomment\");\nexport function l(str : \"cfspace\");\nexport function l(str : \"filetype_cfspace\");\nexport function l(str : \"cfblogentry\");\nexport function l(str : \"filetype_cfblogentry\");\nexport function l(str : \"confluencespace\");\nexport function l(str : \"filetype_confluencespace\");\nexport function l(str : \"exchangemessage\");\nexport function l(str : \"filetype_exchangemessage\");\nexport function l(str : \"exchangeappointment\");\nexport function l(str : \"filetype_exchangeappointment\");\nexport function l(str : \"exchangenote\");\nexport function l(str : \"filetype_exchangenote\");\nexport function l(str : \"exchangetask\");\nexport function l(str : \"filetype_exchangetask\");\nexport function l(str : \"exchangeperson\");\nexport function l(str : \"filetype_exchangeperson\");\nexport function l(str : \"activedirperson\");\nexport function l(str : \"filetype_activedirperson\");\nexport function l(str : \"exchangeactivity\");\nexport function l(str : \"filetype_exchangeactivity\");\nexport function l(str : \"exchangecalendarmessage\");\nexport function l(str : \"filetype_exchangecalendarmessage\");\nexport function l(str : \"exchangedocument\");\nexport function l(str : \"filetype_exchangedocument\");\nexport function l(str : \"exchangedsn\");\nexport function l(str : \"filetype_exchangedsn\");\nexport function l(str : \"exchangefreebusy\");\nexport function l(str : \"filetype_exchangefreebusy\");\nexport function l(str : \"exchangegroup\");\nexport function l(str : \"filetype_exchangegroup\");\nexport function l(str : \"exchangerssfeed\");\nexport function l(str : \"filetype_exchangerssfeed\");\nexport function l(str : \"exchangejunkmessage\");\nexport function l(str : \"filetype_exchangejunkmessage\");\nexport function l(str : \"exchangeofficecom\");\nexport function l(str : \"filetype_exchangeofficecom\");\nexport function l(str : \"lithiummessage\");\nexport function l(str : \"filetype_lithiummessage\");\nexport function l(str : \"lithiumthread\");\nexport function l(str : \"filetype_lithiumthread\");\nexport function l(str : \"lithiumboard\");\nexport function l(str : \"filetype_lithiumboard\");\nexport function l(str : \"lithiumcategory\");\nexport function l(str : \"filetype_lithiumcategory\");\nexport function l(str : \"lithiumcommunity\");\nexport function l(str : \"filetype_lithiumcommunity\");\nexport function l(str : \"people\");\nexport function l(str : \"objecttype_people\");\nexport function l(str : \"message\");\nexport function l(str : \"objecttype_message\");\nexport function l(str : \"feed\");\nexport function l(str : \"objecttype_feed\");\nexport function l(str : \"thread\");\nexport function l(str : \"objecttype_thread\");\nexport function l(str : \"file\");\nexport function l(str : \"objecttype_file\");\nexport function l(str : \"board\");\nexport function l(str : \"objecttype_board\");\nexport function l(str : \"category\");\nexport function l(str : \"objecttype_category\");\nexport function l(str : \"account\");\nexport function l(str : \"objecttype_account\");\nexport function l(str : \"annotation\");\nexport function l(str : \"objecttype_annotation\");\nexport function l(str : \"campaign\");\nexport function l(str : \"objecttype_campaign\");\nexport function l(str : \"case\");\nexport function l(str : \"objecttype_case\");\nexport function l(str : \"contact\");\nexport function l(str : \"objecttype_contact\");\nexport function l(str : \"contract\");\nexport function l(str : \"objecttype_contract\");\nexport function l(str : \"event\");\nexport function l(str : \"objecttype_event\");\nexport function l(str : \"email\");\nexport function l(str : \"objecttype_email\");\nexport function l(str : \"goal\");\nexport function l(str : \"objecttype_goal\");\nexport function l(str : \"incident\");\nexport function l(str : \"objecttype_incident\");\nexport function l(str : \"invoice\");\nexport function l(str : \"objecttype_invoice\");\nexport function l(str : \"lead\");\nexport function l(str : \"objecttype_lead\");\nexport function l(str : \"list\");\nexport function l(str : \"objecttype_list\");\nexport function l(str : \"solution\");\nexport function l(str : \"objecttype_solution\");\nexport function l(str : \"report\");\nexport function l(str : \"objecttype_report\");\nexport function l(str : \"task\");\nexport function l(str : \"objecttype_task\");\nexport function l(str : \"user\");\nexport function l(str : \"objecttype_user\");\nexport function l(str : \"attachment\");\nexport function l(str : \"objecttype_attachment\");\nexport function l(str : \"casecomment\");\nexport function l(str : \"objecttype_casecomment\");\nexport function l(str : \"opportunity\");\nexport function l(str : \"objecttype_opportunity\");\nexport function l(str : \"opportunityproduct\");\nexport function l(str : \"objecttype_opportunityproduct\");\nexport function l(str : \"feeditem\");\nexport function l(str : \"objecttype_feeditem\");\nexport function l(str : \"feedcomment\");\nexport function l(str : \"objecttype_feedcomment\");\nexport function l(str : \"note\");\nexport function l(str : \"objecttype_note\");\nexport function l(str : \"product\");\nexport function l(str : \"objecttype_product\");\nexport function l(str : \"partner\");\nexport function l(str : \"objecttype_partner\");\nexport function l(str : \"queueitem\");\nexport function l(str : \"objecttype_queueitem\");\nexport function l(str : \"quote\");\nexport function l(str : \"objecttype_quote\");\nexport function l(str : \"salesliterature\");\nexport function l(str : \"objecttype_salesliterature\");\nexport function l(str : \"salesorder\");\nexport function l(str : \"objecttype_salesorder\");\nexport function l(str : \"service\");\nexport function l(str : \"objecttype_service\");\nexport function l(str : \"socialprofile\");\nexport function l(str : \"objecttype_socialprofile\");\nexport function l(str : \"kbdocumentation\");\nexport function l(str : \"objecttype_kbdocumentation\");\nexport function l(str : \"kbtechnicalarticle\");\nexport function l(str : \"objecttype_kbtechnicalarticle\");\nexport function l(str : \"kbsolution\");\nexport function l(str : \"objecttype_kbsolution\");\nexport function l(str : \"kbknowledgearticle\");\nexport function l(str : \"objecttype_kbknowledgearticle\");\nexport function l(str : \"kbattachment\");\nexport function l(str : \"objecttype_kbattachment\");\nexport function l(str : \"kbarticle\");\nexport function l(str : \"objecttype_kbarticle\");\nexport function l(str : \"kbarticlecomment\");\nexport function l(str : \"objecttype_kbarticlecomment\");\nexport function l(str : \"knowledgearticle\");\nexport function l(str : \"objecttype_knowledgearticle\");\nexport function l(str : \"topic\");\nexport function l(str : \"objecttype_topic\");\nexport function l(str : \"dashboard\");\nexport function l(str : \"objecttype_dashboard\");\nexport function l(str : \"contentversion\");\nexport function l(str : \"objecttype_contentversion\");\nexport function l(str : \"collaborationgroup\");\nexport function l(str : \"objecttype_collaborationgroup\");\nexport function l(str : \"phonecall\");\nexport function l(str : \"objecttype_phonecall\");\nexport function l(str : \"appointment\");\nexport function l(str : \"objecttype_appointment\");\nexport function l(str : \"sn_hr_core_case\");\nexport function l(str : \"filetype_sn_hr_core_case\");\nexport function l(str : \"sc_cat_item\");\nexport function l(str : \"filetype_sc_cat_item\");\nexport function l(str : \"sn_customerservice_case\");\nexport function l(str : \"filetype_sn_customerservice_case\");\nexport function l(str : \"kb_social_qa_answer\");\nexport function l(str : \"filetype_kb_social_qa_answer\");\nexport function l(str : \"kb_social_qa_question\");\nexport function l(str : \"filetype_kb_social_qa_question\");\nexport function l(str : \"kb_social_qa_comment\");\nexport function l(str : \"filetype_kb_social_qa_comment\");\nexport function l(str : \"filetype_incident\");\nexport function l(str : \"kb_knowledge\");\nexport function l(str : \"filetype_kb_knowledge\");\nexport function l(str : \"spportal\");\nexport function l(str : \"filetype_spportal\");\nexport function l(str : \"spsite\");\nexport function l(str : \"filetype_spsite\");\nexport function l(str : \"spuserprofile\");\nexport function l(str : \"filetype_spuserprofile\");\nexport function l(str : \"sparea\");\nexport function l(str : \"filetype_sparea\");\nexport function l(str : \"spannouncement\");\nexport function l(str : \"filetype_spannouncement\");\nexport function l(str : \"spannouncementlist\");\nexport function l(str : \"filetype_spannouncementlist\");\nexport function l(str : \"spcontact\");\nexport function l(str : \"filetype_spcontact\");\nexport function l(str : \"spcontactlist\");\nexport function l(str : \"filetype_spcontactlist\");\nexport function l(str : \"spcustomlist\");\nexport function l(str : \"filetype_spcustomlist\");\nexport function l(str : \"spdiscussionboard\");\nexport function l(str : \"filetype_spdiscussionboard\");\nexport function l(str : \"spdiscussionboardlist\");\nexport function l(str : \"filetype_spdiscussionboardlist\");\nexport function l(str : \"spdocumentlibrarylist\");\nexport function l(str : \"filetype_spdocumentlibrarylist\");\nexport function l(str : \"spevent\");\nexport function l(str : \"filetype_spevent\");\nexport function l(str : \"speventlist\");\nexport function l(str : \"filetype_speventlist\");\nexport function l(str : \"spformlibrarylist\");\nexport function l(str : \"filetype_spformlibrarylist\");\nexport function l(str : \"spissue\");\nexport function l(str : \"filetype_spissue\");\nexport function l(str : \"spissuelist\");\nexport function l(str : \"filetype_spissuelist\");\nexport function l(str : \"splink\");\nexport function l(str : \"filetype_splink\");\nexport function l(str : \"splinklist\");\nexport function l(str : \"filetype_splinklist\");\nexport function l(str : \"sppicturelibrarylist\");\nexport function l(str : \"filetype_sppicturelibrarylist\");\nexport function l(str : \"spsurvey\");\nexport function l(str : \"filetype_spsurvey\");\nexport function l(str : \"spsurveylist\");\nexport function l(str : \"filetype_spsurveylist\");\nexport function l(str : \"sptask\");\nexport function l(str : \"filetype_sptask\");\nexport function l(str : \"sptasklist\");\nexport function l(str : \"filetype_sptasklist\");\nexport function l(str : \"spagenda\");\nexport function l(str : \"filetype_spagenda\");\nexport function l(str : \"spagendalist\");\nexport function l(str : \"filetype_spagendalist\");\nexport function l(str : \"spattendee\");\nexport function l(str : \"filetype_spattendee\");\nexport function l(str : \"spattendeelist\");\nexport function l(str : \"filetype_spattendeelist\");\nexport function l(str : \"spcustomgridlist\");\nexport function l(str : \"filetype_spcustomgridlist\");\nexport function l(str : \"spdecision\");\nexport function l(str : \"filetype_spdecision\");\nexport function l(str : \"spdecisionlist\");\nexport function l(str : \"filetype_spdecisionlist\");\nexport function l(str : \"spobjective\");\nexport function l(str : \"filetype_spobjective\");\nexport function l(str : \"spobjectivelist\");\nexport function l(str : \"filetype_spobjectivelist\");\nexport function l(str : \"sptextbox\");\nexport function l(str : \"filetype_sptextbox\");\nexport function l(str : \"sptextboxlist\");\nexport function l(str : \"filetype_sptextboxlist\");\nexport function l(str : \"spthingstobring\");\nexport function l(str : \"filetype_spthingstobring\");\nexport function l(str : \"spthingstobringlist\");\nexport function l(str : \"filetype_spthingstobringlist\");\nexport function l(str : \"sparealisting\");\nexport function l(str : \"filetype_sparealisting\");\nexport function l(str : \"spmeetingserie\");\nexport function l(str : \"filetype_spmeetingserie\");\nexport function l(str : \"spmeetingserielist\");\nexport function l(str : \"filetype_spmeetingserielist\");\nexport function l(str : \"spsitedirectory\");\nexport function l(str : \"filetype_spsitedirectory\");\nexport function l(str : \"spsitedirectorylist\");\nexport function l(str : \"filetype_spsitedirectorylist\");\nexport function l(str : \"spdatasource\");\nexport function l(str : \"filetype_spdatasource\");\nexport function l(str : \"spdatasourcelist\");\nexport function l(str : \"filetype_spdatasourcelist\");\nexport function l(str : \"splisttemplatecataloglist\");\nexport function l(str : \"filetype_splisttemplatecataloglist\");\nexport function l(str : \"spwebpartcataloglist\");\nexport function l(str : \"filetype_spwebpartcataloglist\");\nexport function l(str : \"spwebtemplatecataloglist\");\nexport function l(str : \"filetype_spwebtemplatecataloglist\");\nexport function l(str : \"spworkspacepagelist\");\nexport function l(str : \"filetype_spworkspacepagelist\");\nexport function l(str : \"spunknownlist\");\nexport function l(str : \"filetype_spunknownlist\");\nexport function l(str : \"spadministratortask\");\nexport function l(str : \"filetype_spadministratortask\");\nexport function l(str : \"spadministratortasklist\");\nexport function l(str : \"filetype_spadministratortasklist\");\nexport function l(str : \"spareadocumentlibrarylist\");\nexport function l(str : \"filetype_spareadocumentlibrarylist\");\nexport function l(str : \"spblogcategory\");\nexport function l(str : \"filetype_spblogcategory\");\nexport function l(str : \"spblogcategorylist\");\nexport function l(str : \"filetype_spblogcategorylist\");\nexport function l(str : \"spblogcomment\");\nexport function l(str : \"filetype_spblogcomment\");\nexport function l(str : \"spblogcommentlist\");\nexport function l(str : \"filetype_spblogcommentlist\");\nexport function l(str : \"spblogpost\");\nexport function l(str : \"filetype_spblogpost\");\nexport function l(str : \"spblogpostlist\");\nexport function l(str : \"filetype_spblogpostlist\");\nexport function l(str : \"spdataconnectionlibrarylist\");\nexport function l(str : \"filetype_spdataconnectionlibrarylist\");\nexport function l(str : \"spdistributiongroup\");\nexport function l(str : \"filetype_spdistributiongroup\");\nexport function l(str : \"spdistributiongrouplist\");\nexport function l(str : \"filetype_spdistributiongrouplist\");\nexport function l(str : \"spipfslist\");\nexport function l(str : \"filetype_spipfslist\");\nexport function l(str : \"spkeyperformanceindicator\");\nexport function l(str : \"filetype_spkeyperformanceindicator\");\nexport function l(str : \"spkeyperformanceindicatorlist\");\nexport function l(str : \"filetype_spkeyperformanceindicatorlist\");\nexport function l(str : \"splanguagesandtranslator\");\nexport function l(str : \"filetype_splanguagesandtranslator\");\nexport function l(str : \"splanguagesandtranslatorlist\");\nexport function l(str : \"filetype_splanguagesandtranslatorlist\");\nexport function l(str : \"spmasterpagescataloglist\");\nexport function l(str : \"filetype_spmasterpagescataloglist\");\nexport function l(str : \"spnocodeworkflowlibrarylist\");\nexport function l(str : \"filetype_spnocodeworkflowlibrarylist\");\nexport function l(str : \"spprojecttask\");\nexport function l(str : \"filetype_spprojecttask\");\nexport function l(str : \"spprojecttasklist\");\nexport function l(str : \"filetype_spprojecttasklist\");\nexport function l(str : \"sppublishingpageslibrarylist\");\nexport function l(str : \"filetype_sppublishingpageslibrarylist\");\nexport function l(str : \"spreportdocumentlibrarylist\");\nexport function l(str : \"filetype_spreportdocumentlibrarylist\");\nexport function l(str : \"spreportlibrarylist\");\nexport function l(str : \"filetype_spreportlibrarylist\");\nexport function l(str : \"spslidelibrarylist\");\nexport function l(str : \"filetype_spslidelibrarylist\");\nexport function l(str : \"sptab\");\nexport function l(str : \"filetype_sptab\");\nexport function l(str : \"sptablist\");\nexport function l(str : \"filetype_sptablist\");\nexport function l(str : \"sptranslationmanagementlibrarylist\");\nexport function l(str : \"filetype_sptranslationmanagementlibrarylist\");\nexport function l(str : \"spuserinformation\");\nexport function l(str : \"filetype_spuserinformation\");\nexport function l(str : \"spuserinformationlist\");\nexport function l(str : \"filetype_spuserinformationlist\");\nexport function l(str : \"spwikipagelibrarylist\");\nexport function l(str : \"filetype_spwikipagelibrarylist\");\nexport function l(str : \"spworkflowhistory\");\nexport function l(str : \"filetype_spworkflowhistory\");\nexport function l(str : \"spworkflowhistorylist\");\nexport function l(str : \"filetype_spworkflowhistorylist\");\nexport function l(str : \"spworkflowprocess\");\nexport function l(str : \"filetype_spworkflowprocess\");\nexport function l(str : \"spworkflowprocesslist\");\nexport function l(str : \"filetype_spworkflowprocesslist\");\nexport function l(str : \"sppublishingimageslibrarylist\");\nexport function l(str : \"filetype_sppublishingimageslibrarylist\");\nexport function l(str : \"spcirculation\");\nexport function l(str : \"filetype_spcirculation\");\nexport function l(str : \"spcirculationlist\");\nexport function l(str : \"filetype_spcirculationlist\");\nexport function l(str : \"spdashboardslibrarylist\");\nexport function l(str : \"filetype_spdashboardslibrarylist\");\nexport function l(str : \"spdataconnectionforperformancepointlibrarylist\");\nexport function l(str : \"filetype_spdataconnectionforperformancepointlibrarylist\");\nexport function l(str : \"sphealthreport\");\nexport function l(str : \"filetype_sphealthreport\");\nexport function l(str : \"sphealthreportlist\");\nexport function l(str : \"filetype_sphealthreportlist\");\nexport function l(str : \"sphealthrule\");\nexport function l(str : \"filetype_sphealthrule\");\nexport function l(str : \"sphealthrulelist\");\nexport function l(str : \"filetype_sphealthrulelist\");\nexport function l(str : \"spimedictionary\");\nexport function l(str : \"filetype_spimedictionary\");\nexport function l(str : \"spimedictionarylist\");\nexport function l(str : \"filetype_spimedictionarylist\");\nexport function l(str : \"spperformancepointcontent\");\nexport function l(str : \"filetype_spperformancepointcontent\");\nexport function l(str : \"spperformancepointcontentlist\");\nexport function l(str : \"filetype_spperformancepointcontentlist\");\nexport function l(str : \"spphonecallmemo\");\nexport function l(str : \"filetype_spphonecallmemo\");\nexport function l(str : \"spphonecallmemolist\");\nexport function l(str : \"filetype_spphonecallmemolist\");\nexport function l(str : \"sprecordlibrarylist\");\nexport function l(str : \"filetype_sprecordlibrarylist\");\nexport function l(str : \"spresource\");\nexport function l(str : \"filetype_spresource\");\nexport function l(str : \"spresourcelist\");\nexport function l(str : \"filetype_spresourcelist\");\nexport function l(str : \"spprocessdiagramslibrarylist\");\nexport function l(str : \"filetype_spprocessdiagramslibrarylist\");\nexport function l(str : \"spsitethemeslibrarylist\");\nexport function l(str : \"filetype_spsitethemeslibrarylist\");\nexport function l(str : \"spsolutionslibrarylist\");\nexport function l(str : \"filetype_spsolutionslibrarylist\");\nexport function l(str : \"spwfpublibrarylist\");\nexport function l(str : \"filetype_spwfpublibrarylist\");\nexport function l(str : \"spwhereabout\");\nexport function l(str : \"filetype_spwhereabout\");\nexport function l(str : \"spwhereaboutlist\");\nexport function l(str : \"filetype_spwhereaboutlist\");\nexport function l(str : \"spdocumentlink\");\nexport function l(str : \"filetype_spdocumentlink\");\nexport function l(str : \"spdocumentset\");\nexport function l(str : \"filetype_spdocumentset\");\nexport function l(str : \"spmicrofeedpost\");\nexport function l(str : \"filetype_spmicrofeedpost\");\nexport function l(str : \"spmicrofeedlist\");\nexport function l(str : \"filetype_spmicrofeedlist\");\nexport function l(str : \"splistfolder\");\nexport function l(str : \"filetype_splistfolder\");\nexport function l(str : \"slackmessage\");\nexport function l(str : \"filetype_slackmessage\");\nexport function l(str : \"slackchannel\");\nexport function l(str : \"filetype_slackchannel\");\nexport function l(str : \"slackfile\");\nexport function l(str : \"filetype_slackfile\");\nexport function l(str : \"slackuser\");\nexport function l(str : \"filetype_slackuser\");\nexport function l(str : \"youtubevideo\");\nexport function l(str : \"filetype_youtubevideo\");\nexport function l(str : \"youtubeplaylistitem\");\nexport function l(str : \"filetype_youtubeplaylistitem\");\nexport function l(str : \"youtubeplaylist\");\nexport function l(str : \"filetype_youtubeplaylist\");\nexport function l(str : \"Unknown\");\nexport function l(str : \"And\");\nexport function l(str : \"Authenticating\" , param0: string);\nexport function l(str : \"Clear\" , param0: string);\nexport function l(str : \"CompleteQuery\");\nexport function l(str : \"Exclude\" , param0: string);\nexport function l(str : \"EnterTag\");\nexport function l(str : \"Next\");\nexport function l(str : \"Last\");\nexport function l(str : \"Link\");\nexport function l(str : \"Or\");\nexport function l(str : \"Previous\");\nexport function l(str : \"QueryDidntMatchAnyDocuments\");\nexport function l(str : \"QueryException\" , param0: string);\nexport function l(str : \"Me\");\nexport function l(str : \"Remove\");\nexport function l(str : \"Search\");\nexport function l(str : \"SearchFor\" , param0: string);\nexport function l(str : \"SubmitSearch\");\nexport function l(str : \"ShareQuery\");\nexport function l(str : \"Preferences\");\nexport function l(str : \"LinkOpeningSettings\");\nexport function l(str : \"Reauthenticate\" , param0: string);\nexport function l(str : \"ResultsFilteringExpression\");\nexport function l(str : \"FiltersInYourPreferences\");\nexport function l(str : \"Create\");\nexport function l(str : \"SearchIn\" , param0: string);\nexport function l(str : \"Seconds\" , param0: string, count: number);\nexport function l(str : \"ShowingResultsOf\" , param0: string, param1: string, param2: string, count: number);\nexport function l(str : \"ShowingResultsOfWithQuery\" , param0: string, param1: string, param2: string, param3: string, count: number);\nexport function l(str : \"SwitchTo\" , param0: string);\nexport function l(str : \"Unexclude\" , param0: string);\nexport function l(str : \"ClearAllFilters\");\nexport function l(str : \"SkipLogin\");\nexport function l(str : \"LoginInProgress\");\nexport function l(str : \"Login\");\nexport function l(str : \"GetStarted\");\nexport function l(str : \"More\");\nexport function l(str : \"NMore\" , param0: string);\nexport function l(str : \"Less\");\nexport function l(str : \"Settings\");\nexport function l(str : \"Score\");\nexport function l(str : \"ScoreDescription\");\nexport function l(str : \"Occurrences\");\nexport function l(str : \"OccurrencesDescription\");\nexport function l(str : \"Label\");\nexport function l(str : \"Of\");\nexport function l(str : \"LabelDescription\");\nexport function l(str : \"Value\");\nexport function l(str : \"ValueDescription\");\nexport function l(str : \"AlphaAscending\");\nexport function l(str : \"AlphaDescending\");\nexport function l(str : \"ChiSquare\");\nexport function l(str : \"Nosort\");\nexport function l(str : \"NosortDescription\");\nexport function l(str : \"RelativeFrequency\");\nexport function l(str : \"RelativeFrequencyDescription\");\nexport function l(str : \"DateDistribution\");\nexport function l(str : \"Custom\");\nexport function l(str : \"CustomDescription\");\nexport function l(str : \"ComputedField\");\nexport function l(str : \"Ascending\");\nexport function l(str : \"Descending\");\nexport function l(str : \"noResultFor\" , param0: string);\nexport function l(str : \"noResult\");\nexport function l(str : \"autoCorrectedQueryTo\" , param0: string);\nexport function l(str : \"didYouMean\" , param0: string);\nexport function l(str : \"SuggestedResults\");\nexport function l(str : \"SuggestedQueries\");\nexport function l(str : \"MostRelevantItems\");\nexport function l(str : \"AllItems\");\nexport function l(str : \"ShowLess\");\nexport function l(str : \"ShowMore\");\nexport function l(str : \"HideFacet\");\nexport function l(str : \"ShowFacet\");\nexport function l(str : \"AndOthers\" , param0: string, count: number);\nexport function l(str : \"Others\" , param0: string, count: number);\nexport function l(str : \"MostRelevantPosts\");\nexport function l(str : \"CompleteThread\");\nexport function l(str : \"ShowCompleteThread\");\nexport function l(str : \"ShowOnlyTopMatchingPosts\");\nexport function l(str : \"MostRelevantReplies\");\nexport function l(str : \"AllConversation\");\nexport function l(str : \"ShowAllConversation\");\nexport function l(str : \"ShowAllReplies\");\nexport function l(str : \"ShowOnlyMostRelevantReplies\");\nexport function l(str : \"Close\");\nexport function l(str : \"Open\");\nexport function l(str : \"OpenInOutlookWhenPossible\");\nexport function l(str : \"AlwaysOpenInNewWindow\");\nexport function l(str : \"Quickview\");\nexport function l(str : \"NoQuickview\");\nexport function l(str : \"ErrorReport\");\nexport function l(str : \"OopsError\");\nexport function l(str : \"ProblemPersists\");\nexport function l(str : \"GoBack\");\nexport function l(str : \"Reset\");\nexport function l(str : \"Retry\");\nexport function l(str : \"MoreInfo\");\nexport function l(str : \"Username\");\nexport function l(str : \"Password\");\nexport function l(str : \"PostedBy\");\nexport function l(str : \"CannotConnect\");\nexport function l(str : \"BadUserPass\");\nexport function l(str : \"PleaseEnterYourCredentials\" , param0: string);\nexport function l(str : \"PleaseEnterYourSearchPage\");\nexport function l(str : \"Collapse\");\nexport function l(str : \"Collapsable\");\nexport function l(str : \"Expand\");\nexport function l(str : \"CollapseFacet\" , param0: string);\nexport function l(str : \"ExpandFacet\" , param0: string);\nexport function l(str : \"ShowLessFacetResults\" , param0: string);\nexport function l(str : \"ShowMoreFacetResults\" , param0: string);\nexport function l(str : \"ShowLessCategoryResults\" , param0: string);\nexport function l(str : \"ShowMoreCategoryResults\" , param0: string);\nexport function l(str : \"ShowLessHierarchicalResults\" , param0: string);\nexport function l(str : \"ShowMoreHierarchicalResults\" , param0: string);\nexport function l(str : \"SearchFacetResults\" , param0: string);\nexport function l(str : \"Today\");\nexport function l(str : \"Yesterday\");\nexport function l(str : \"Tomorrow\");\nexport function l(str : \"Duration\" , param0: string);\nexport function l(str : \"IndexDuration\" , param0: string);\nexport function l(str : \"ProxyDuration\" , param0: string);\nexport function l(str : \"ClientDuration\" , param0: string);\nexport function l(str : \"Unavailable\");\nexport function l(str : \"Reply\");\nexport function l(str : \"ReplyAll\");\nexport function l(str : \"Forward\");\nexport function l(str : \"From\");\nexport function l(str : \"Caption\");\nexport function l(str : \"Expression\");\nexport function l(str : \"Tab\");\nexport function l(str : \"Tabs\");\nexport function l(str : \"EnterExpressionName\");\nexport function l(str : \"EnterExpressionToFilterWith\");\nexport function l(str : \"SelectTab\");\nexport function l(str : \"SelectAll\");\nexport function l(str : \"PageUrl\");\nexport function l(str : \"ErrorSavingToDevice\");\nexport function l(str : \"ErrorReadingFromDevice\");\nexport function l(str : \"AppIntro\");\nexport function l(str : \"TryDemo\");\nexport function l(str : \"ContactUs\");\nexport function l(str : \"NewToCoveo\");\nexport function l(str : \"LetUsHelpGetStarted\");\nexport function l(str : \"LikesThis\" , param0: string, count: number);\nexport function l(str : \"CannotConnectSearchPage\");\nexport function l(str : \"AreYouSureDeleteFilter\" , param0: string, param1: string);\nexport function l(str : \"OnlineHelp\");\nexport function l(str : \"Done\");\nexport function l(str : \"SaveFacetState\");\nexport function l(str : \"ClearFacetState\");\nexport function l(str : \"DisplayingTheOnlyMessage\");\nexport function l(str : \"NoNetworkConnection\");\nexport function l(str : \"UnknownConnection\");\nexport function l(str : \"EthernetConnection\");\nexport function l(str : \"WiFi\");\nexport function l(str : \"CELL\");\nexport function l(str : \"CELL_2G\");\nexport function l(str : \"CELL_3G\");\nexport function l(str : \"CELL_4G\");\nexport function l(str : \"Relevance\");\nexport function l(str : \"Date\");\nexport function l(str : \"Amount\");\nexport function l(str : \"QueryExceptionNoException\");\nexport function l(str : \"QueryExceptionInvalidSyntax\");\nexport function l(str : \"QueryExceptionInvalidCustomField\");\nexport function l(str : \"QueryExceptionInvalidDate\");\nexport function l(str : \"QueryExceptionInvalidExactPhrase\");\nexport function l(str : \"QueryExceptionInvalidDateOp\");\nexport function l(str : \"QueryExceptionInvalidNear\");\nexport function l(str : \"QueryExceptionInvalidWeightedNear\");\nexport function l(str : \"QueryExceptionInvalidTerm\");\nexport function l(str : \"QueryExceptionTooManyTerms\");\nexport function l(str : \"QueryExceptionWildcardTooGeneral\");\nexport function l(str : \"QueryExceptionInvalidSortField\");\nexport function l(str : \"QueryExceptionInvalidSmallStringOp\");\nexport function l(str : \"QueryExceptionRequestedResultsMax\");\nexport function l(str : \"QueryExceptionAggregatedMirrorDead\");\nexport function l(str : \"QueryExceptionAggregatedMirrorQueryTimeOut\");\nexport function l(str : \"QueryExceptionAggregatedMirrorInvalidBuildNumber\");\nexport function l(str : \"QueryExceptionAggregatedMirrorCannotConnect\");\nexport function l(str : \"QueryExceptionNotEnoughLeadingCharsWildcard\");\nexport function l(str : \"QueryExceptionSecurityInverterNotFound\");\nexport function l(str : \"QueryExceptionSecurityInverterAccessDenied\");\nexport function l(str : \"QueryExceptionAggregatedMirrorCannotImpersonate\");\nexport function l(str : \"QueryExceptionUnexpected\");\nexport function l(str : \"QueryExceptionAccessDenied\");\nexport function l(str : \"QueryExceptionSuperUserTokenInvalid\");\nexport function l(str : \"QueryExceptionSuperUserTokenExpired\");\nexport function l(str : \"QueryExceptionLicenseQueriesExpired\");\nexport function l(str : \"QueryExceptionLicenseSuperUserTokenNotSupported\");\nexport function l(str : \"QueryExceptionInvalidSession\");\nexport function l(str : \"QueryExceptionInvalidDocument\");\nexport function l(str : \"QueryExceptionSearchDisabled\");\nexport function l(str : \"FileType\");\nexport function l(str : \"ShowAttachment\");\nexport function l(str : \"OnFeed\" , param0: string);\nexport function l(str : \"Author\");\nexport function l(str : \"NoTitle\");\nexport function l(str : \"CurrentSelections\");\nexport function l(str : \"AllContent\");\nexport function l(str : \"CancelLastAction\");\nexport function l(str : \"SearchTips\");\nexport function l(str : \"CheckSpelling\");\nexport function l(str : \"TryUsingFewerKeywords\");\nexport function l(str : \"SelectFewerFilters\");\nexport function l(str : \"Document\");\nexport function l(str : \"Time\");\nexport function l(str : \"StartDate\");\nexport function l(str : \"StartTime\");\nexport function l(str : \"DurationTitle\");\nexport function l(str : \"UserQuery\");\nexport function l(str : \"ShowUserActions\");\nexport function l(str : \"NoData\");\nexport function l(str : \"EventType\");\nexport function l(str : \"GoToFullSearch\");\nexport function l(str : \"GoToEdition\");\nexport function l(str : \"RemoveContext\");\nexport function l(str : \"BoxAttachToCase\");\nexport function l(str : \"AttachToCase\");\nexport function l(str : \"Attach\");\nexport function l(str : \"Attached\");\nexport function l(str : \"Detach\");\nexport function l(str : \"Details\");\nexport function l(str : \"AdditionalFilters\");\nexport function l(str : \"SelectNonContextualSearch\");\nexport function l(str : \"CopyPasteToSupport\");\nexport function l(str : \"FollowQueryDescription\");\nexport function l(str : \"SearchAlerts_Panel\");\nexport function l(str : \"SearchAlerts_PanelDescription\");\nexport function l(str : \"SearchAlerts_PanelNoSearchAlerts\");\nexport function l(str : \"SearchAlerts_Fail\");\nexport function l(str : \"SearchAlerts_Type\");\nexport function l(str : \"SearchAlerts_Content\");\nexport function l(str : \"SearchAlerts_Actions\");\nexport function l(str : \"EmptyQuery\");\nexport function l(str : \"SearchAlerts_Type_followQuery\");\nexport function l(str : \"SearchAlerts_Type_followDocument\");\nexport function l(str : \"SearchAlerts_unFollowing\");\nexport function l(str : \"SearchAlerts_follow\");\nexport function l(str : \"SearchAlerts_followed\");\nexport function l(str : \"SearchAlerts_followQuery\");\nexport function l(str : \"Subscription_StopFollowingQuery\");\nexport function l(str : \"SearchAlerts_Frequency\");\nexport function l(str : \"SubscriptionsManageSubscriptions\");\nexport function l(str : \"SubscriptionsMessageFollowQuery\" , param0: string);\nexport function l(str : \"SubscriptionsMessageFollow\" , param0: string);\nexport function l(str : \"Expiration\");\nexport function l(str : \"Monthly\");\nexport function l(str : \"Daily\");\nexport function l(str : \"Monday\");\nexport function l(str : \"Tuesday\");\nexport function l(str : \"Wednesday\");\nexport function l(str : \"Thursday\");\nexport function l(str : \"Friday\");\nexport function l(str : \"Saturday\");\nexport function l(str : \"Sunday\");\nexport function l(str : \"NextDay\" , param0: string);\nexport function l(str : \"LastDay\" , param0: string);\nexport function l(str : \"StartTypingCaseForSuggestions\");\nexport function l(str : \"ExportToExcel\");\nexport function l(str : \"ExportToExcelDescription\");\nexport function l(str : \"CaseCreationNoResults\");\nexport function l(str : \"SortBy\");\nexport function l(str : \"BoxCreateArticle\");\nexport function l(str : \"Facets\");\nexport function l(str : \"AdvancedSearch\");\nexport function l(str : \"Keywords\");\nexport function l(str : \"AllTheseWords\");\nexport function l(str : \"ExactPhrase\");\nexport function l(str : \"AnyOfTheseWords\");\nexport function l(str : \"NoneOfTheseWords\");\nexport function l(str : \"Anytime\");\nexport function l(str : \"InTheLast\");\nexport function l(str : \"Days\");\nexport function l(str : \"Months\");\nexport function l(str : \"Month\");\nexport function l(str : \"Year\");\nexport function l(str : \"Between\");\nexport function l(str : \"Language\");\nexport function l(str : \"Size\");\nexport function l(str : \"AtLeast\");\nexport function l(str : \"AtMost\");\nexport function l(str : \"Contains\");\nexport function l(str : \"DoesNotContain\");\nexport function l(str : \"Matches\");\nexport function l(str : \"Bytes\");\nexport function l(str : \"card\");\nexport function l(str : \"table\");\nexport function l(str : \"ResultLinks\");\nexport function l(str : \"EnableQuerySyntax\");\nexport function l(str : \"On\");\nexport function l(str : \"Off\");\nexport function l(str : \"Automatic\");\nexport function l(str : \"ResultsPerPage\");\nexport function l(str : \"PreviousMonth\");\nexport function l(str : \"NextMonth\");\nexport function l(str : \"Title\");\nexport function l(str : \"FiltersInAdvancedSearch\");\nexport function l(str : \"NoEndpoints\" , param0: string);\nexport function l(str : \"InvalidToken\");\nexport function l(str : \"AddSources\");\nexport function l(str : \"TryAgain\");\nexport function l(str : \"CoveoOnlineHelp\");\nexport function l(str : \"CannotAccess\" , param0: string);\nexport function l(str : \"CoveoOrganization\");\nexport function l(str : \"SearchAPIDuration\" , param0: string);\nexport function l(str : \"LastUpdated\");\nexport function l(str : \"AllDates\");\nexport function l(str : \"WithinLastDay\");\nexport function l(str : \"WithinLastWeek\");\nexport function l(str : \"WithinLastMonth\");\nexport function l(str : \"WithinLastYear\");\nexport function l(str : \"RelevanceInspector\");\nexport function l(str : \"KeywordInCategory\" , param0: string, param1: string);\nexport function l(str : \"Result\");\nexport function l(str : \"ResultCount\" , param0: string, count: number);\nexport function l(str : \"ShowingResults\" , param0: string, count: number);\nexport function l(str : \"ShowingResultsWithQuery\" , param0: string, param1: string, count: number);\nexport function l(str : \"NumberOfVideos\");\nexport function l(str : \"AllCategories\");\nexport function l(str : \"Recommended\");\nexport function l(str : \"Featured\");\nexport function l(str : \"CoveoHomePage\");\nexport function l(str : \"SizeValue\");\nexport function l(str : \"UnitMeasurement\");\nexport function l(str : \"Toggle\");\nexport function l(str : \"FilterOn\" , param0: string);\nexport function l(str : \"RemoveFilterOn\" , param0: string);\nexport function l(str : \"Enter\");\nexport function l(str : \"InsertAQuery\");\nexport function l(str : \"PressEnterToSend\");\nexport function l(str : \"SortResultsBy\" , param0: string);\nexport function l(str : \"SortResultsByAscending\" , param0: string);\nexport function l(str : \"SortResultsByDescending\" , param0: string);\nexport function l(str : \"DisplayResultsAs\" , param0: string);\nexport function l(str : \"FacetTitle\" , param0: string);\nexport function l(str : \"IncludeValueWithResultCount\" , param0: string, param1: string);\nexport function l(str : \"ExcludeValueWithResultCount\" , param0: string, param1: string);\nexport function l(str : \"PageNumber\" , param0: string);\nexport function l(str : \"DisplayResultsPerPage\" , param0: string);\nexport function l(str : \"GroupByAndFacetRequestsCannotCoexist\");\nexport function l(str : \"MustContain\");\nexport function l(str : \"Missing\");\nexport function l(str : \"Filters\");\nexport function l(str : \"FiltersDropdown\");\nexport function l(str : \"OpenFiltersDropdown\");\nexport function l(str : \"CloseFiltersDropdown\");\nexport function l(str : \"NoValuesFound\");\nexport function l(str : \"To\");\nexport function l(str : \"DeselectFilterValues\" , param0: string);\nexport function l(str : \"Rated\" , param0: string, param1: string, count: number);\nexport function l(str : \"RatedBy\" , param0: string, count: number);\nexport function l(str : \"NoRatings\");\nexport function l(str : \"Pagination\");\nexport function l(str : \"ThumbnailOf\" , param0: string);\nexport function l(str : \"CollapsedUriParts\");\nexport function l(str : \"HierarchicalFacetValueIndentedUnder\" , param0: string, param1: string);\nexport function l(str : \"HierarchicalFacetValuePathPrefix\");\nexport function l(str : \"UsefulnessFeedbackRequest\");\nexport function l(str : \"UsefulnessFeedbackThankYou\");\nexport function l(str : \"UsefulnessFeedbackExplainWhy\");\nexport function l(str : \"UsefulnessFeedbackExplainWhyImperative\");\nexport function l(str : \"UsefulnessFeedbackDoesNotAnswer\");\nexport function l(str : \"UsefulnessFeedbackPartiallyAnswers\");\nexport function l(str : \"UsefulnessFeedbackWasNotAQuestion\");\nexport function l(str : \"Yes\");\nexport function l(str : \"No\");\nexport function l(str : \"Other\");\nexport function l(str : \"Send\");\nexport function l(str : \"Edit\");\nexport function l(str : \"Delete\");\nexport function l(str : \"Save\");\nexport function l(str : \"UsefulnessFeedbackReason\");\nexport function l(str : \"AnswerSnippet\");\nexport function l(str : \"AnswerSpecificSnippet\" , param0: string);\nexport function l(str : \"SuggestedQuestions\");\nexport function l(str : \"ExpandQuestionAnswer\" , param0: string);\nexport function l(str : \"MoreValuesAvailable\");\nexport function l(str : \"Breadcrumb\");\nexport function l(str : \"OrganizationIsPaused\");\nexport function l(str : \"OrganizationWillResume\");\nexport function l(str : \"UpdatingResults\");\nexport function l(str : \"QuerySuggestionsAvailable\" , param0: string, count: number);\nexport function l(str : \"QuerySuggestionsUnavailable\");\nexport function l(...params : any[]);\nexport function l(...params : any[]) { return L10N.format.apply(this, arguments) };\n\n\n\n// WEBPACK FOOTER //\n// ./src/strings/Strings.ts","import { Assert } from '../../misc/Assert';\nimport { IQueryResult } from '../../rest/QueryResult';\nimport { Utils } from '../../utils/Utils';\nimport { JQueryUtils } from '../../utils/JQueryutils';\nimport { $$, Dom } from '../../utils/Dom';\nimport { QueryStateModel } from '../../models/QueryStateModel';\nimport { ComponentStateModel } from '../../models/ComponentStateModel';\nimport { ComponentOptionsModel } from '../../models/ComponentOptionsModel';\nimport { QueryController } from '../../controllers/QueryController';\nimport { SearchInterface } from '../../ui/SearchInterface/SearchInterface';\nimport { IAnalyticsClient } from '../../ui/Analytics/AnalyticsClient';\nimport { NoopAnalyticsClient } from '../../ui/Analytics/NoopAnalyticsClient';\nimport { BaseComponent } from './BaseComponent';\nimport { IComponentBindings } from './ComponentBindings';\nimport { DebugEvents } from '../../events/DebugEvents';\nimport * as _ from 'underscore';\nimport { Model } from '../../models/Model';\nimport { exportGlobally } from '../../GlobalExports';\n\n/**\n * Definition for a Component.\n */\nexport interface IComponentDefinition {\n  /**\n   * The static ID that each component need to be identified.<br/>\n   * For example, SearchButton -> static ID : SearchButton -> className : CoveoSearchButton\n   */\n  ID: string;\n  aliases?: string[];\n  /**\n   * The generated `className` for this component.<br/>\n   * For example, SearchButton -> static ID : SearchButton -> className : CoveoSearchButton\n   */\n  className?: string;\n  /**\n   * Function that can be called to export one or multiple module in the global scope.\n   */\n  doExport?: () => void;\n  /**\n   * Constructor for each component\n   * @param element The HTMLElement on which the component will instantiate.\n   * @param options The available options for the component.\n   * @param bindings The bindings (or environment) for the component.For exemple, the {@link QueryController} or {@link SearchInterface}. Optional, if not provided, the component will resolve those automatically. This has a cost on performance, though, since it has to traverses it's parents to find the correct elements.\n   * @param args Optional arguments, depending on the component type. For example, ResultComponent will receive the result there.\n   */\n  new (element: HTMLElement, options: any, bindings: IComponentBindings, ...args: any[]): Component;\n  /**\n   * The available options for the component.\n   */\n  options?: any;\n  /**\n   * The optional parent of the component, which will be a component itself.\n   */\n  parent?: IComponentDefinition;\n  /**\n   * The optional index fields that the component possess or display.\n   */\n  fields?: string[];\n}\n\n/**\n * The `ComponentEvents` class is used by the various Coveo Component to trigger events and bind event handlers. It adds\n * logic to execute handlers or triggers only when a component is \"enabled\", which serves as a way to avoid executing\n * handlers on components that are invisible and inactive in the query.\n *\n * Typically, a component is disabled when it is not active in the current [`Tab`]{@link Tab}. It can also be disabled\n * by external code, however.\n *\n * To manually enable or disable a component, simply use its [`enable`]{@link Component.enable} or\n * [`disable`]{@link Component.disable} method.\n */\nexport class ComponentEvents {\n  static doExport() {\n    exportGlobally({\n      ComponentEvents: ComponentEvents\n    });\n  }\n\n  /**\n   * Creates a new `ComponentEvents` instance for a [`Component`]{@link Component}.\n   * @param owner The [`Component`]{@link Component} that owns the event handlers and triggers.\n   */\n  constructor(public owner: Component) {\n    Assert.exists(owner);\n  }\n\n  /**\n   * Executes the handler for an event on a target element.\n   *\n   * Executes only if the component is enabled (see the [`enable`]{@link Component.enable} method).\n   * @param el The element from which the event originates.\n   * @param event The event for which to register a handler.\n   * @param handler The function to execute when the event is triggered.\n   */\n  public on(el: HTMLElement | Window | Document, event: string, handler: Function);\n  public on(el: Dom, event: string, handler: Function);\n  public on(arg: any, event: string, handler: Function) {\n    if (this.shouldTreatElementAsJQuery(arg)) {\n      arg.on(event, this.wrapToCallIfEnabled(handler));\n    } else {\n      $$(arg).on(event, this.wrapToCallIfEnabled(handler));\n    }\n  }\n\n  /**\n   * Executes the handler for the given event on the given target element.<br/>\n   * Execute only if the component is \"enabled\" (see {@link Component.enable}).<br/>\n   * Execute the handler only ONE time.\n   * @param el The target on which the event will originate.\n   * @param event The event for which to register an handler.\n   * @param handler The function to execute when the event is triggered.\n   */\n  public one(el: HTMLElement, event: string, handler: Function);\n  public one(el: Dom, event: string, handler: Function);\n  public one(arg: any, event: string, handler: Function) {\n    if (this.shouldTreatElementAsJQuery(arg)) {\n      arg.one(event, this.wrapToCallIfEnabled(handler));\n    } else {\n      $$(arg).one(event, this.wrapToCallIfEnabled(handler));\n    }\n  }\n\n  /**\n   * Bind on the \"root\" of the Component. The root is typically the {@link SearchInterface}.<br/>\n   * Bind an event using native javascript code.\n   * @param event The event for which to register an handler.\n   * @param handler The function to execute when the event is triggered.\n   */\n  public onRootElement<T>(event: string, handler: (args: T) => any) {\n    this.on(this.owner.root, event, handler);\n  }\n\n  /**\n   * Bind on the \"root\" of the Component. The root is typically the {@link SearchInterface}.<br/>\n   * Bind an event using native javascript code.\n   * The handler will execute only ONE time.\n   * @param event The event for which to register an handler.\n   * @param handler The function to execute when the event is triggered.\n   */\n  public oneRootElement<T>(event: string, handler: (args: T) => any) {\n    this.one(this.owner.root, event, handler);\n  }\n\n  /**\n   * Bind an event related specially to the query state model.<br/>\n   * This will build the correct string event and execute the handler only if the component is activated.\n   * @param eventType The event type for which to register an event.\n   * @param attribute The attribute for which to register an event.\n   * @param handler The handler to execute when the query state event is triggered.\n   */\n  public onQueryState<T>(eventType: string, attribute?: string, handler?: (args: T) => any) {\n    this.onRootElement(this.getQueryStateEventName(eventType, attribute), handler);\n  }\n\n  /**\n   * Bind an event related specially to the component option model.\n   * This will build the correct string event and execute the handler only if the component is activated.\n   * @param eventType The event type for which to register an event.\n   * @param attribute The attribute for which to register an event.\n   * @param handler The handler to execute when the query state event is triggered.\n   */\n  public onComponentOptions<T>(eventType: string, attribute?: string, handler?: (args: T) => any) {\n    this.onRootElement(this.getComponentOptionEventName(eventType, attribute), handler);\n  }\n\n  /**\n   * Bind an event related specially to the query state model.<br/>\n   * This will build the correct string event and execute the handler only if the component is activated.<br/>\n   * Will execute only once.\n   * @param eventType The event type for which to register an event.\n   * @param attribute The attribute for which to register an event.\n   * @param handler The handler to execute when the query state event is triggered.\n   */\n  public oneQueryState<T>(eventType: string, attribute?: string, handler?: (args: T) => any) {\n    this.oneRootElement(this.getQueryStateEventName(eventType, attribute), handler);\n  }\n\n  /**\n   * Trigger an event on the target element, with optional arguments.\n   * @param el The target HTMLElement on which to trigger the event.\n   * @param event The event to trigger.\n   * @param args The optional argument to pass to the handlers.\n   */\n  public trigger(el: HTMLElement, event: string, args?: Object);\n  public trigger(el: Dom, event: string, args?: Object);\n  public trigger(arg: any, event: string, args?: Object) {\n    this.wrapToCallIfEnabled(() => {\n      if (this.shouldTreatElementAsJQuery(arg)) {\n        arg.trigger(event, args);\n      } else {\n        $$(arg).trigger(event, args);\n      }\n    })(args);\n  }\n\n  /**\n   * Execute the function only if the component is enabled.\n   * @param func The function to execute if the component is enabled.\n   * @returns {function(...[any]): *}\n   */\n  protected wrapToCallIfEnabled(func: Function) {\n    return (...args: any[]) => {\n      if (!this.owner.disabled) {\n        if (args && args[0] instanceof CustomEvent) {\n          if (args[0].detail) {\n            args = [args[0].detail];\n          }\n        } else if (args && this.shouldTreatEventAsJQuery(args[0])) {\n          if (args[1] != undefined) {\n            args = [args[1]];\n          } else if (args[0].hasOwnProperty('originalEvent')) {\n            // If the event is a jQuery Event but no args are found, let's use the ones of the originalEvent, if any.\n            args = [args[0].originalEvent];\n          } else {\n            args = [];\n          }\n        }\n        return func.apply(this.owner, args);\n      }\n    };\n  }\n\n  private shouldTreatElementAsJQuery(arg: any) {\n    if (Dom.useNativeJavaScriptEvents === true) {\n      return false;\n    }\n\n    if (JQueryUtils.getJQuery() && JQueryUtils.isInstanceOfJQuery(arg)) {\n      return true;\n    }\n\n    return false;\n  }\n\n  private shouldTreatEventAsJQuery(arg: any) {\n    if (Dom.useNativeJavaScriptEvents === true) {\n      return false;\n    }\n    return JQueryUtils.getJQuery() && JQueryUtils.isInstanceOfJqueryEvent(arg);\n  }\n\n  private getQueryStateEventName(eventType: string, attribute?: string): string {\n    return this.getModelEvent(this.owner.queryStateModel, eventType, attribute);\n  }\n\n  private getComponentOptionEventName(eventType: string, attribute?: string): string {\n    return this.getModelEvent(this.owner.componentOptionsModel, eventType, attribute);\n  }\n\n  private getModelEvent(model: Model, eventType: string, attribute?: string) {\n    var evtName;\n    if (eventType && attribute) {\n      evtName = model.getEventName(eventType + attribute);\n    } else {\n      evtName = model.getEventName(eventType);\n    }\n    return evtName;\n  }\n}\n\n/**\n * The base class for every component in the framework.\n */\nexport class Component extends BaseComponent {\n  static ComponentEventClass: typeof ComponentEvents = ComponentEvents;\n  /**\n   * Allows the component to bind events and execute them only when it is enabled.\n   * @type {Coveo.ComponentEvents}\n   */\n  public bind: ComponentEvents;\n  /**\n   * A reference to the root HTMLElement (the {@link SearchInterface}).\n   */\n  public root: HTMLElement;\n  /**\n   * Contains the state of the query. Allows to get/set values. Trigger query state event when modified. Each component can listen to those events.\n   */\n  public queryStateModel: QueryStateModel;\n  /**\n   * Contains the state of different components (enabled vs disabled). Allows to get/set values. Triggers component state event when modified. Each component can listen to those events.\n   */\n  public componentStateModel: ComponentStateModel;\n  /**\n   * Contains the singleton that allows to trigger queries.\n   */\n  public queryController: QueryController;\n  /**\n   * A reference to the root of every component, the {@link SearchInterface}.\n   */\n  public searchInterface: SearchInterface;\n  /**\n   * Contains the state of options for different components. Mainly used by {@link ResultLink}.\n   */\n  public componentOptionsModel: ComponentOptionsModel;\n  public ensureDom: Function;\n  public options?: any;\n\n  /**\n   * Create a new Component. Resolve all {@link IComponentBindings} if not provided.<br/>\n   * Create a new Logger for this component.\n   * Attach the component to the {@link SearchInterface}.<br/>\n   * @param element The HTMLElement on which to create the component. Used to bind data on the element.\n   * @param type The unique identifier for this component. See: {@link IComponentDefinition.ID}. Used to generate the unique Coveo CSS class associated with every component.\n   * @param bindings The environment for every component. Optional, but omitting to provide one will impact performance.\n   */\n  constructor(public element: HTMLElement, public type: string, bindings: IComponentBindings = {}) {\n    super(element, type);\n    this.bind = new Component.ComponentEventClass(this);\n    this.root = bindings.root || Component.resolveRoot(element);\n    this.queryStateModel = bindings.queryStateModel || this.resolveQueryStateModel();\n    this.componentStateModel = bindings.componentStateModel || this.resolveComponentStateModel();\n    this.queryController = bindings.queryController || this.resolveQueryController();\n    this.searchInterface = bindings.searchInterface || this.resolveSearchInterface();\n    this.componentOptionsModel = bindings.componentOptionsModel || this.resolveComponentOptionsModel();\n    this.ensureDom = _.once(() => this.createDom());\n\n    if (this.searchInterface != null) {\n      this.searchInterface.attachComponent(type, this);\n    }\n\n    this.initDebugInfo();\n  }\n\n  /**\n   * Return the bindings, or environment, for the current component.\n   * @returns {IComponentBindings}\n   */\n  public getBindings(): IComponentBindings {\n    return <IComponentBindings>{\n      root: this.root,\n      queryStateModel: this.queryStateModel,\n      queryController: this.queryController,\n      searchInterface: this.searchInterface,\n      componentStateModel: this.componentStateModel,\n      componentOptionsModel: this.componentOptionsModel,\n      usageAnalytics: this.usageAnalytics\n    };\n  }\n\n  /**\n   * A reference to the {@link Analytics.client}.\n   */\n  public get usageAnalytics() {\n    return this.resolveUA();\n  }\n\n  public createDom() {\n    // By default we do nothing\n  }\n\n  public resolveSearchInterface(): SearchInterface {\n    return <SearchInterface>Component.resolveBinding(this.element, SearchInterface);\n  }\n\n  public resolveQueryController(): QueryController {\n    return <QueryController>Component.resolveBinding(this.element, QueryController);\n  }\n\n  public resolveComponentStateModel(): ComponentStateModel {\n    return <ComponentStateModel>Component.resolveBinding(this.element, ComponentStateModel);\n  }\n\n  public resolveQueryStateModel(): QueryStateModel {\n    return <QueryStateModel>Component.resolveBinding(this.element, QueryStateModel);\n  }\n\n  public resolveComponentOptionsModel(): ComponentOptionsModel {\n    return <ComponentOptionsModel>Component.resolveBinding(this.element, ComponentOptionsModel);\n  }\n\n  public resolveUA(): IAnalyticsClient {\n    return this.searchInterface && this.searchInterface.usageAnalytics ? this.searchInterface.usageAnalytics : new NoopAnalyticsClient();\n  }\n\n  public resolveResult(): IQueryResult {\n    return Component.getResult(this.element);\n  }\n\n  protected removeTabSupport() {\n    if (this.element.hasAttribute('data-tab')) {\n      this.logger.warn('The \"data-tab\" attribute is not supported for this component and was removed.');\n      this.element.removeAttribute('data-tab');\n    }\n\n    if (this.element.hasAttribute('data-tab-not')) {\n      this.logger.warn('The \"data-tab-not\" attribute is not supported for this component and was removed.');\n      this.element.removeAttribute('data-tab-not');\n    }\n  }\n\n  private initDebugInfo() {\n    $$(this.element).on('dblclick', (e: MouseEvent) => {\n      if (e.altKey) {\n        var debugInfo = this.debugInfo();\n        if (debugInfo != null) {\n          $$(this.root).trigger(DebugEvents.showDebugPanel, this.debugInfo());\n        }\n      }\n    });\n  }\n\n  /**\n   * Get the bound component to the given HTMLElement. Throws an assert if the HTMLElement has no component bound, unless using the noThrow argument.<br/>\n   * If there is multiple component bound to the current HTMLElement, you must specify the component class.\n   * @param element HTMLElement for which to get the bound component.\n   * @param componentClass Optional component class. If the HTMLElement has multiple components bound, you must specify which one you are targeting.\n   * @param noThrow Boolean option to tell the method to not throw on error.\n   * @returns {Component}\n   */\n  static get(element: HTMLElement, componentClass?: any, noThrow?: boolean): BaseComponent {\n    Assert.exists(element);\n\n    if (_.isString(componentClass)) {\n      return <Component>element[Component.computeCssClassNameForType(componentClass)];\n    } else if (Utils.exists(componentClass)) {\n      Assert.exists(componentClass.ID);\n      return <Component>element[Component.computeCssClassNameForType(componentClass.ID)];\n    } else {\n      // No class specified, but we support returning the bound component\n      // if there is exactly one.\n      var boundComponents = BaseComponent.getBoundComponentsForElement(element);\n      if (!noThrow) {\n        Assert.check(\n          boundComponents.length <= 1,\n          'More than one component is bound to this element. You need to specify the component type.'\n        );\n      }\n      return boundComponents[0];\n    }\n  }\n\n  static getResult(element: HTMLElement, noThrow: boolean = false): IQueryResult {\n    var resultElement = $$(element).closest('.CoveoResult');\n    Assert.check(noThrow || resultElement != undefined);\n    return resultElement['CoveoResult'];\n  }\n\n  static bindResultToElement(element: HTMLElement, result: IQueryResult) {\n    Assert.exists(element);\n    Assert.exists(result);\n    $$(element).addClass('CoveoResult');\n    element['CoveoResult'] = result;\n    let jQuery = JQueryUtils.getJQuery();\n    if (jQuery) {\n      jQuery(element).data(result);\n    }\n  }\n\n  static bindFoldedResultToElement(element: HTMLElement) {\n    Assert.exists(element);\n    $$(element).addClass('coveo-result-folding-child-result');\n  }\n\n  static resolveRoot(element: HTMLElement): HTMLElement {\n    Assert.exists(element);\n    const resolvedSearchInterface = Component.resolveBinding(element, SearchInterface);\n    if (resolvedSearchInterface) {\n      return resolvedSearchInterface.element;\n    }\n    const resolvedRootFromParent = Component.findRootInParents(element);\n    if (resolvedRootFromParent) {\n      return resolvedRootFromParent;\n    }\n    return document.body;\n  }\n\n  static resolveBinding(element: HTMLElement, componentClass: any): BaseComponent {\n    Assert.exists(element);\n    Assert.exists(componentClass);\n    Assert.exists(componentClass.ID);\n\n    const targetClassName = Component.computeCssClassNameForType(componentClass.ID);\n    let found: HTMLElement;\n\n    if ($$(element).is('.' + targetClassName)) {\n      found = element;\n    } else {\n      // first, look down\n      const findDown = $$(element).findClass(targetClassName);\n\n      if (findDown && findDown.length !== 0) {\n        found = findDown[0];\n      } else {\n        const findUp = $$(element).closest(targetClassName);\n\n        if (findUp) {\n          found = findUp;\n        }\n      }\n    }\n    if (found) {\n      return <BaseComponent>found[targetClassName];\n    } else {\n      return undefined;\n    }\n  }\n\n  static pointElementsToDummyForm(element: HTMLElement) {\n    let inputs = $$(element).is('input') ? [element] : [];\n    inputs = inputs.concat($$(element).findAll('input'));\n    _.each(_.compact(inputs), input => {\n      input.setAttribute('form', 'coveo-dummy-form');\n    });\n  }\n\n  private static findRootInParents(element: HTMLElement): HTMLElement | null {\n    const boundComponents = Component.getBoundComponentsForElement(element);\n    for (let i = 0; i < boundComponents.length; i++) {\n      const component = boundComponents[i];\n      if (component instanceof Component) {\n        return component.root;\n      }\n    }\n    if (!element.parentElement) {\n      return null;\n    }\n    return Component.findRootInParents(element.parentElement);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Base/Component.ts","import { contains, each, isArray, keys, map } from 'underscore';\nimport { Assert } from '../../misc/Assert';\nimport { Logger } from '../../misc/Logger';\nimport { IStringMap } from '../../rest/GenericParam';\nimport { $$, Dom } from '../../utils/Dom';\nimport { SVGIcons } from '../../utils/SVGIcons';\nimport { Utils } from '../../utils/Utils';\nimport { Template } from '../Templates/Template';\nimport { ComponentOptionLoader } from './ComponentOptionsLoader';\nimport { ComponentOptionsMerger } from './ComponentOptionsMerger';\nimport { ComponentOptionsPostProcessor } from './ComponentOptionsPostProcessor';\nimport { ComponentOptionsValidator } from './ComponentOptionsValidator';\nimport {\n  ComponentOptionsType,\n  IComponentJsonObjectOption,\n  IComponentLocalizedStringOptionArgs,\n  IComponentOptions,\n  IComponentOptionsChildHtmlElementOption,\n  IComponentOptionsChildHtmlElementOptionArgs,\n  IComponentOptionsCustomListOptionArgs,\n  IComponentOptionsFieldOptionArgs,\n  IComponentOptionsFieldsOptionArgs,\n  IComponentOptionsListOption,\n  IComponentOptionsListOptionArgs,\n  IComponentOptionsLoadOption,\n  IComponentOptionsNumberOption,\n  IComponentOptionsNumberOptionArgs,\n  IComponentOptionsObjectOptionArgs,\n  IComponentOptionsOption,\n  IFieldConditionOption,\n  IFieldOption,\n  IQueryExpression\n} from './IComponentOptions';\nimport { IComponentOptionsTemplateOptionArgs, TemplateComponentOptions } from './TemplateComponentOptions';\n\nconst camelCaseToHyphenRegex = /([A-Z])|\\W+(\\w)/g;\nconst fieldsSeperator = /\\s*,\\s*/;\nconst localizer = /([a-zA-Z\\-]+)\\s*:\\s*(([^,]|,\\s*(?!([a-zA-Z\\-]+)\\s*:))+)/g;\n\n/**\n * The `ComponentOptions` static class contains methods allowing the Coveo JavaScript Search Framework to initialize\n * component options.\n *\n * Typically, each [`Component`]{@link Component} that exposes a set of options contains a static `options` property.\n *\n * This property \"builds\" each option using the `ComponentOptions` method corresponding to its type (e.g.,\n * [`buildBooleanOption`]{@link ComponentOptions.buildBooleanOption},\n * [`buildFieldOption`]{@link ComponentOptions.buildFieldOption},\n * [`buildStringOption`]{@link ComponentOptions.buildStringOption}, etc.)\n */\nexport class ComponentOptions {\n  static buildTemplateOption(optionArgs?: IComponentOptionsTemplateOptionArgs): Template {\n    return TemplateComponentOptions.buildTemplateOption(optionArgs);\n  }\n\n  /**\n   * Builds a boolean option.\n   *\n   * **Markup Examples:**\n   *\n   * > `data-foo=\"true\"`\n   *\n   * > `data-foo=\"false\"`\n   *\n   * @param optionArgs The arguments to apply when building the option.\n   * @returns {boolean} The resulting option value.\n   */\n  static buildBooleanOption(optionArgs?: IComponentOptions<boolean>): boolean {\n    return ComponentOptions.buildOption<boolean>(ComponentOptionsType.BOOLEAN, ComponentOptions.loadBooleanOption, optionArgs);\n  }\n\n  /**\n   * Builds a number option.\n   *\n   * A number option can be an integer or a float in the markup.\n   *\n   * **Note:**\n   *\n   * > To build a float option, you need to set the `float` property in the [`IComponentOptionsNumberOptionArgs`]{@link IComponentOptionsNumberOptionArgs} to `true`.\n   *\n   * **Markup Examples:**\n   *\n   * > `data-foo=\"3\"`\n   *\n   * > `data-foo=\"1.5\"`\n   *\n   * @param optionArgs The arguments to apply when building the option.\n   * @returns {number} The resulting option value.\n   */\n  static buildNumberOption(optionArgs?: IComponentOptionsNumberOptionArgs): number {\n    return ComponentOptions.buildOption<number>(ComponentOptionsType.NUMBER, ComponentOptions.loadNumberOption, optionArgs);\n  }\n\n  /**\n   * Builds a string option.\n   *\n   * A string option can be any arbitrary string in the markup.\n   *\n   * **Markup Example:**\n   *\n   * > `data-foo=\"bar\"`\n   *\n   * @param optionArgs The arguments to apply when building the option.\n   * @returns {string} The resulting option value.\n   */\n  static buildStringOption<T extends string>(optionArgs?: IComponentOptions<T>): T {\n    return ComponentOptions.buildOption<T>(ComponentOptionsType.STRING, ComponentOptions.loadStringOption, optionArgs);\n  }\n\n  /**\n   * Builds an icon option.\n   *\n   * This takes an SVG icon name, validates it and returns the name of the icon.\n   * **Markup Examples:**\n   *\n   * > `data-foo=\"search\"`\n   *\n   * > `data-foo=\"facet-expand\"`\n   *\n   * @param optionArgs The arguments to apply when building the option.\n   * @returns {string} The resulting option value.\n   */\n  static buildIconOption(optionArgs?: IComponentOptions<string>): string {\n    return ComponentOptions.buildOption<string>(ComponentOptionsType.ICON, ComponentOptions.loadIconOption, optionArgs);\n  }\n\n  /**\n   * Builds a color option.\n   *\n   * Normally, this simply builds a string that matches a CSS color.\n   *\n   * **Note:**\n   *\n   * > In the markup, this offers no advantage over using a plain string. This is mostly useful for the Coveo JavaScript\n   * > Interface Editor.\n   *\n   * **Markup Examples:**\n   *\n   * > `data-foo=\"coveo-sprites-user\"`\n   *\n   * > `data-foo=\"coveo-sprites-database\"`\n   *\n   * @param optionArgs The arguments to apply when building the option.\n   * @returns {string} The resulting option value.\n   */\n  static buildColorOption(optionArgs?: IComponentOptions<string>): string {\n    return ComponentOptions.buildOption<string>(ComponentOptionsType.COLOR, ComponentOptions.loadStringOption, optionArgs);\n  }\n\n  /**\n   * Builds a helper option.\n   *\n   * Normally, this simply builds a string that matches the name of a template helper.\n   *\n   * **Note:**\n   *\n   * > In the markup, this offers no advantage over using a plain string. This is mostly useful for the Coveo JavaScript\n   * > Interface Editor.\n   *\n   * **Markup Examples:**\n   *\n   * > `data-foo=\"date\"`\n   *\n   * > `data-foo=\"dateTime\"`\n   *\n   * @param optionArgs The arguments to apply when building the option.\n   * @returns {string} The resulting option value.\n   */\n  static buildHelperOption(optionArgs?: IComponentOptions<string>): string {\n    return ComponentOptions.buildOption<string>(ComponentOptionsType.HELPER, ComponentOptions.loadStringOption, optionArgs);\n  }\n\n  /**\n   * Tries to parse a stringified JSON option.\n   *\n   * If unsuccessful (because of invalid syntax), the JSON option is ignored altogether, and the console displays a warning message.\n   *\n   * **Markup Example:**\n   *\n   * > `data-foo='{\"bar\" : \"baz\"}'`\n   *\n   * **Note:**\n   *\n   * A JSON option can always be set as a property in the `init` call of the framework rather than as a `data-` property in the corresponding HTMLElement markup.\n   *\n   * **Initialization Example:**\n   *\n   * ```\n   * Coveo.init(root, {\n   *   Facet : {\n   *     foo : {\n   *       \"bar\" : \"baz\"\n   *     }\n   *   }\n   * })\n   * ```\n   * @param optionArgs The arguments to apply when building the option.\n   * @returns {T} The resulting option value.\n   */\n  static buildJsonOption<T extends IStringMap<any>>(optionArgs?: IComponentJsonObjectOption<T>): T {\n    return ComponentOptions.buildOption(ComponentOptionsType.JSON, ComponentOptions.loadJsonObjectOption, optionArgs) as T;\n  }\n\n  /**\n   * @deprecated Use buildJsonOption instead\n   *\n   * @deprecatedsince [2017 Javascript Search Framework Releases](https://docs.coveo.com/en/373/#december-2017-release-v236794)\n   */\n  static buildJsonObjectOption<T>(optionArgs?: IComponentJsonObjectOption<T>): T {\n    return ComponentOptions.buildJsonOption(optionArgs);\n  }\n\n  /**\n   * Builds a localized string option.\n   *\n   * A localized string option can be any arbitrary string.\n   *\n   * When parsing the value, the Coveo JavaScript Search Framework tries to load the localization for that string, if it\n   * is available.\n   *\n   * If it is not available, it returns the non-localized value.\n   *\n   * This should be used for options that will be rendered directly to the end users.\n   *\n   * **Markup Example:**\n   *\n   * > `data-foo=\"bar\"`\n   *\n   * @param optionArgs The arguments to apply when building the option.\n   * @returns {string} The resulting option value.\n   */\n  static buildLocalizedStringOption(optionArgs?: IComponentLocalizedStringOptionArgs): string {\n    return ComponentOptions.buildOption<string>(\n      ComponentOptionsType.LOCALIZED_STRING,\n      ComponentOptions.loadLocalizedStringOption,\n      optionArgs\n    );\n  }\n\n  /**\n   * Builds a field option.\n   *\n   * A field option validates whether the field has a valid name. This means that the string must start with the `@`\n   * character.\n   *\n   * **Markup Example:**\n   *\n   * > `data-foo=\"@bar\"`\n   *\n   * @param optionArgs The arguments to apply when building the option.\n   * @returns {string} The resulting option value.\n   */\n  static buildFieldOption(optionArgs?: IComponentOptionsFieldOptionArgs): IFieldOption {\n    return ComponentOptions.buildOption<string>(ComponentOptionsType.FIELD, ComponentOptions.loadFieldOption, optionArgs);\n  }\n\n  /**\n   * Builds an array of fields option.\n   *\n   * As with all options that expect an array, you should use commas to delimit the different values.\n   *\n   * **Markup Example:**\n   *\n   * > `data-foo=\"@bar,@baz\"`\n   *\n   * @param optionArgs The arguments to apply when building the option.\n   * @returns {string[]} The resulting option value.\n   */\n  static buildFieldsOption(optionArgs?: IComponentOptionsFieldsOptionArgs): IFieldOption[] {\n    return ComponentOptions.buildOption<string[]>(ComponentOptionsType.FIELDS, ComponentOptions.loadFieldsOption, optionArgs);\n  }\n\n  /**\n   * Builds a query expression option.\n   *\n   * The query expression option should follow the [Coveo Cloud Query Syntax Reference](https://docs.coveo.com/en/1552/).\n   *\n   * **Markup Example:**\n   *\n   * > `data-foo=\"@bar==baz\"`\n   *\n   * @param optionArgs The arguments to apply when building the option.\n   * @returns {IQueryExpression} The resulting option value.\n   */\n  static buildQueryExpressionOption(optionArgs?: IComponentOptions<string>): IQueryExpression {\n    return ComponentOptions.buildOption<string>(ComponentOptionsType.QUERY_EXPRESSION, ComponentOptions.loadStringOption, optionArgs);\n  }\n\n  /**\n   * Builds an array of strings option.\n   *\n   * As with all options that expect an array, you should use commas to delimit the different values.\n   *\n   * **Markup Example:**\n   *\n   * > `data-foo=\"bar,baz\"`\n   *\n   * @param optionArgs The arguments to apply when building the option.\n   * @returns {string[]} The resulting option value.\n   */\n  static buildListOption<T>(optionArgs?: IComponentOptionsListOptionArgs): T[] | string[] {\n    return ComponentOptions.buildOption<string[]>(ComponentOptionsType.LIST, ComponentOptions.loadListOption, optionArgs);\n  }\n\n  /**\n   * Builds an option that allow to select an HTMLElement.\n   *\n   * The option accepts a CSS selector matching the required HTMLElement. This selector can either be a class, or an ID\n   * selector.\n   *\n   * **Markup Examples:**\n   *\n   * > `data-foo-selector=\".bar\"`\n   *\n   * > `data-foo-selector=\"#bar\"`\n   *\n   * @param optionArgs The arguments to apply when building the option.\n   * @returns {HTMLElement} The resulting option value.\n   */\n  static buildSelectorOption(optionArgs?: IComponentOptions<HTMLElement>): HTMLElement {\n    return ComponentOptions.buildOption<HTMLElement>(ComponentOptionsType.SELECTOR, ComponentOptions.loadSelectorOption, optionArgs);\n  }\n\n  static buildChildHtmlElementOption(optionArgs?: IComponentOptionsChildHtmlElementOptionArgs): HTMLElement {\n    return ComponentOptions.buildOption<HTMLElement>(\n      ComponentOptionsType.CHILD_HTML_ELEMENT,\n      ComponentOptions.loadChildHtmlElementOption,\n      optionArgs\n    );\n  }\n\n  static buildCustomOption<T>(converter: (value: string) => T, optionArgs?: IComponentOptions<T>): T {\n    const loadOption: IComponentOptionsLoadOption<T> = (element: HTMLElement, name: string, option: IComponentOptionsOption<T>) => {\n      const stringvalue = ComponentOptions.loadStringOption(element, name, option);\n      if (!Utils.isNullOrEmptyString(stringvalue)) {\n        return converter(stringvalue);\n      }\n    };\n    return ComponentOptions.buildOption<T>(ComponentOptionsType.STRING, loadOption, optionArgs);\n  }\n\n  static buildCustomListOption<T>(converter: (value: string[]) => T, optionArgs?: IComponentOptionsCustomListOptionArgs<T>): T {\n    const loadOption: IComponentOptionsLoadOption<T> = (element: HTMLElement, name: string, option: any) => {\n      const stringvalue = ComponentOptions.loadListOption(element, name, option);\n      return converter(stringvalue);\n    };\n    return ComponentOptions.buildOption<any>(ComponentOptionsType.LIST, loadOption, optionArgs);\n  }\n\n  static buildObjectOption(optionArgs?: IComponentOptionsObjectOptionArgs): any {\n    const loadOption: IComponentOptionsLoadOption<{\n      [key: string]: any;\n    }> = (element: HTMLElement, name: string, option: IComponentOptionsOption<any>) => {\n      const extractedKeys = keys(optionArgs.subOptions);\n      const scopedOptions: {\n        [name: string]: IComponentOptionsOption<any>;\n      } = {};\n      const scopedValues: {\n        [name: string]: any;\n      } = {};\n      for (let i = 0; i < extractedKeys.length; i++) {\n        const key = extractedKeys[i];\n        const scopedkey = ComponentOptions.mergeCamelCase(name, key);\n        scopedOptions[scopedkey] = optionArgs.subOptions[key];\n      }\n      ComponentOptions.initOptions(element, scopedOptions, scopedValues, '');\n      const resultValues: {\n        [name: string]: any;\n      } = {};\n      let resultFound = false;\n      for (let i = 0; i < extractedKeys.length; i++) {\n        const key = extractedKeys[i];\n        const scopedkey = ComponentOptions.mergeCamelCase(name, key);\n        if (scopedValues[scopedkey] != null) {\n          resultValues[key] = scopedValues[scopedkey];\n          resultFound = true;\n        }\n      }\n      return resultFound ? resultValues : null;\n    };\n    return ComponentOptions.buildOption<{\n      [key: string]: any;\n    }>(ComponentOptionsType.OBJECT, loadOption, optionArgs);\n  }\n\n  /**\n   * Builds a field condition option.\n   *\n   * A field condition option defines a field-based condition that must be dynamically evaluated against,\n   * and satisfied by a query result item in order to initialize a result template component.\n   *\n   * **Markup Example:**\n   *\n   * ```html\n   * data-condition-field-author=\"Alice Smith, Bob Jones\"\n   * data-condition-field-not-filetype=\"pdf\"`\n   * ```\n   *\n   * @returns {string} The resulting option value.\n   */\n  static buildFieldConditionOption(): IFieldConditionOption[] {\n    return ComponentOptions.buildOption<IFieldConditionOption[]>(ComponentOptionsType.FIELD, ComponentOptions.loadFieldConditionOption);\n  }\n\n  static buildOption<T>(type: ComponentOptionsType, load: IComponentOptionsLoadOption<T>, optionArg: IComponentOptions<T> = {}): T {\n    const option: IComponentOptionsOption<T> = <any>optionArg;\n    option.type = type;\n    option.load = load;\n    return <any>option;\n  }\n\n  static attrNameFromName(name: string, optionArgs?: IComponentOptions<any>) {\n    if (optionArgs && optionArgs.attrName) {\n      return optionArgs.attrName;\n    }\n    if (name) {\n      return 'data-' + ComponentOptions.camelCaseToHyphen(name);\n    }\n    return name;\n  }\n\n  static camelCaseToHyphen(name: string) {\n    return name.replace(camelCaseToHyphenRegex, '-$1$2').toLowerCase();\n  }\n\n  static mergeCamelCase(parent: string, name: string) {\n    return parent + name.substr(0, 1).toUpperCase() + name.substr(1);\n  }\n\n  /**\n   * Loads and parses the options of the current element.\n   *\n   * Each component calls this method in its constructor.\n   *\n   * @param element The element whose markup options the method should load and parse.\n   * @param component The class of the component whose options the method should load and parse (e.g., `Searchbox`,\n   * `Facet`, etc.)\n   * @param values The additional options which the method should merge with the specified markup option values.\n   */\n  static initComponentOptions(element: HTMLElement, component: any, values?: any) {\n    return ComponentOptions.initOptions(element, component.options, values, component.ID);\n  }\n\n  static initOptions(\n    element: HTMLElement,\n    options: {\n      [name: string]: IComponentOptionsOption<any>;\n    },\n    values: any = {},\n    componentID: string\n  ) {\n    if (Utils.isNullOrUndefined(values)) {\n      values = {};\n    }\n\n    each(options, (optionDefinition, name) => {\n      const value = new ComponentOptionLoader(element, values, name, optionDefinition).load();\n      new ComponentOptionsMerger(optionDefinition, { value, name }, values).merge();\n      new ComponentOptionsValidator(optionDefinition, { componentID, name, value }, values).validate();\n    });\n\n    new ComponentOptionsPostProcessor(options, values, componentID).postProcess();\n    return values;\n  }\n\n  static tryLoadFromAttribute(element: HTMLElement, name: string, optionDefinition: IComponentOptionsOption<any>) {\n    const loadFromAttribute = optionDefinition.load;\n    if (!loadFromAttribute) {\n      return null;\n    }\n\n    return loadFromAttribute(element, name, optionDefinition);\n  }\n\n  static loadStringOption<T extends string>(element: HTMLElement, name: string, option: IComponentOptions<any>): T {\n    return element.getAttribute(ComponentOptions.attrNameFromName(name, option)) || ComponentOptions.getAttributeFromAlias(element, option);\n  }\n\n  static loadIconOption(element: HTMLElement, name: string, option: IComponentOptions<any>): string {\n    let svgIconName = ComponentOptions.loadStringOption(element, name, option);\n    if (svgIconName == null) {\n      return null;\n    }\n\n    // Old card templates icons used these values as the icon option. These names have changed since we moved to SVG.\n    // This avoids breaking old default templates that people may still have after moving to 2.0.\n    svgIconName = svgIconName.replace('coveo-sprites-replies', 'replies');\n    svgIconName = svgIconName.replace('coveo-sprites-main-search-active', 'search');\n\n    if (Utils.isNullOrUndefined(SVGIcons.icons[svgIconName])) {\n      new Logger(element).warn(`Icon with name ${svgIconName} not found.`);\n      return null;\n    }\n\n    svgIconName = Utils.toCamelCase(svgIconName);\n    return svgIconName;\n  }\n\n  static loadFieldOption(element: HTMLElement, name: string, option: IComponentOptionsOption<any>): string {\n    const field = ComponentOptions.loadStringOption(element, name, option);\n    Assert.check(!Utils.isNonEmptyString(field) || Utils.isCoveoField(field), field + ' is not a valid field');\n    return field;\n  }\n\n  static loadFieldConditionOption(element: HTMLElement, name: string, option: IComponentOptionsOption<any>): IFieldConditionOption[] {\n    var attrs = Dom.nodeListToArray(element.attributes).filter(attribute =>\n      Utils.stringStartsWith(attribute.nodeName, 'data-condition-field-')\n    );\n\n    return attrs.length != 0\n      ? attrs.map(attribute => ({\n          field: attribute.nodeName.replace('data-condition-field-not-', '').replace('data-condition-field-', ''),\n          values: Utils.isNonEmptyString(attribute.nodeValue) ? attribute.nodeValue.split(/\\s*,\\s*/) : null,\n          reverseCondition: attribute.nodeName.indexOf('data-condition-field-not-') == 0\n        }))\n      : undefined;\n  }\n\n  static loadFieldsOption(element: HTMLElement, name: string, option: IComponentOptionsOption<any>): string[] {\n    const fieldsAttr = ComponentOptions.loadStringOption(element, name, option);\n    if (fieldsAttr == null) {\n      return null;\n    }\n    const fields = fieldsAttr.split(fieldsSeperator);\n    each(fields, (field: string) => {\n      Assert.check(Utils.isCoveoField(field), field + ' is not a valid field');\n    });\n    return fields;\n  }\n\n  static loadLocalizedStringOption(element: HTMLElement, name: string, option: IComponentOptionsOption<any>): string {\n    const attributeValue = ComponentOptions.loadStringOption(element, name, option);\n    const locale: string = String['locale'] || String['defaultLocale'];\n    if (locale != null && attributeValue != null) {\n      const localeParts = locale.toLowerCase().split('-');\n      const locales = map(localeParts, (part, i) => localeParts.slice(0, i + 1).join('-'));\n      const localizers = attributeValue.match(localizer);\n      if (localizers != null) {\n        for (let i = 0; i < localizers.length; i++) {\n          const groups = localizer.exec(localizers[i]);\n          if (groups != null) {\n            const lang = groups[1].toLowerCase();\n            if (contains(locales, lang)) {\n              return groups[2].replace(/^\\s+|\\s+$/g, '');\n            }\n          }\n        }\n      }\n      return attributeValue != null ? attributeValue.toLocaleString() : null;\n    }\n    return attributeValue;\n  }\n\n  static loadNumberOption(element: HTMLElement, name: string, option: IComponentOptionsNumberOption): number {\n    const attributeValue = ComponentOptions.loadStringOption(element, name, option);\n    if (attributeValue == null) {\n      return null;\n    }\n    let numberValue = option.float === true ? Utils.parseFloatIfNotUndefined(attributeValue) : Utils.parseIntIfNotUndefined(attributeValue);\n    if (option.min != null && option.min > numberValue) {\n      new Logger(element).info(\n        `Value for option ${name} is less than the possible minimum (Value is ${numberValue}, minimum is ${\n          option.min\n        }). It has been forced to its minimum value.`,\n        option\n      );\n      numberValue = option.min;\n    }\n    if (option.max != null && option.max < numberValue) {\n      new Logger(element).info(\n        `Value for option ${name} is higher than the possible maximum (Value is ${numberValue}, maximum is ${\n          option.max\n        }). It has been forced to its maximum value.`,\n        option\n      );\n      numberValue = option.max;\n    }\n    return numberValue;\n  }\n\n  static loadBooleanOption(element: HTMLElement, name: string, option: IComponentOptionsOption<any>): boolean {\n    return Utils.parseBooleanIfNotUndefined(ComponentOptions.loadStringOption(element, name, option));\n  }\n\n  static loadListOption(element: HTMLElement, name: string, option: IComponentOptionsListOption): string[] {\n    const separator = option.separator || /\\s*,\\s*/;\n    const attributeValue = ComponentOptions.loadStringOption(element, name, option);\n    return Utils.isNonEmptyString(attributeValue) ? attributeValue.split(separator) : null;\n  }\n\n  static loadEnumOption(element: HTMLElement, name: string, option: IComponentOptionsOption<any>, _enum: any): number {\n    const enumAsString = ComponentOptions.loadStringOption(element, name, option);\n    return enumAsString != null ? _enum[enumAsString] : null;\n  }\n\n  static loadJsonObjectOption<T>(element: HTMLElement, name: string, option: IComponentOptions<any>): T {\n    const jsonAsString = ComponentOptions.loadStringOption(element, name, option);\n    if (jsonAsString == null) {\n      return null;\n    }\n    try {\n      return JSON.parse(jsonAsString) as T;\n    } catch (exception) {\n      new Logger(element).info(\n        `Value for option ${name} is not a valid JSON string (Value is ${jsonAsString}). It has been disabled.`,\n        exception\n      );\n      return null;\n    }\n  }\n\n  static loadSelectorOption(\n    element: HTMLElement,\n    name: string,\n    option: IComponentOptionsOption<any>,\n    doc: Document = document\n  ): HTMLElement {\n    const attributeValue = ComponentOptions.loadStringOption(element, name, option);\n    return Utils.isNonEmptyString(attributeValue) ? <HTMLElement>doc.querySelector(attributeValue) : null;\n  }\n\n  static loadChildHtmlElementOption(\n    element: HTMLElement,\n    name: string,\n    option: IComponentOptionsChildHtmlElementOption,\n    doc: Document = document\n  ): HTMLElement {\n    let htmlElement: HTMLElement;\n    // Attribute: selector\n    const selectorAttr = option.selectorAttr || ComponentOptions.attrNameFromName(name, option) + '-selector';\n    const selector = element.getAttribute(selectorAttr) || ComponentOptions.getAttributeFromAlias(element, option);\n    if (selector != null) {\n      htmlElement = <HTMLElement>doc.body.querySelector(selector);\n    }\n    // Child\n    if (htmlElement == null) {\n      let childSelector = option.childSelector;\n      if (childSelector == null) {\n        childSelector = '.' + name;\n      }\n      htmlElement = ComponentOptions.loadChildHtmlElementFromSelector(element, childSelector);\n    }\n    return htmlElement;\n  }\n\n  static loadChildHtmlElementFromSelector(element: HTMLElement, selector: string): HTMLElement {\n    Assert.isNonEmptyString(selector);\n    if ($$(element).is(selector)) {\n      return element;\n    }\n    return <HTMLElement>$$(element).find(selector);\n  }\n\n  static loadChildrenHtmlElementFromSelector(element: HTMLElement, selector: string): HTMLElement[] {\n    Assert.isNonEmptyString(selector);\n    return $$(element).findAll(selector);\n  }\n\n  static findParentScrolling(element: HTMLElement, doc: Document = document): HTMLElement {\n    element = this.findParentScrollLockable(element, doc);\n    return element instanceof HTMLBodyElement || !ComponentOptions.isElementScrollable(element) ? <any>window : element;\n  }\n\n  static findParentScrollLockable(element: HTMLElement, doc: Document = document): HTMLElement {\n    if (!element) {\n      return doc.body;\n    }\n    if (ComponentOptions.isElementScrollable(element) || element instanceof HTMLBodyElement || !element.parentElement) {\n      return element;\n    }\n    return ComponentOptions.findParentScrollLockable(element.parentElement, doc);\n  }\n\n  static isElementScrollable(element: HTMLElement) {\n    const overflowProperty = $$(element).css('overflow-y');\n    return overflowProperty == 'scroll' || overflowProperty == 'auto';\n  }\n\n  static getAttributeFromAlias(element: HTMLElement, option: IComponentOptions<any>) {\n    if (isArray(option.alias)) {\n      let attributeFound;\n      each(option.alias, alias => {\n        const attributeFoundWithThisAlias = element.getAttribute(ComponentOptions.attrNameFromName(alias));\n        if (attributeFoundWithThisAlias) {\n          attributeFound = attributeFoundWithThisAlias;\n        }\n      });\n      return attributeFound;\n    }\n    if (option.alias) {\n      return element.getAttribute(ComponentOptions.attrNameFromName(option.alias));\n    } else {\n      return undefined;\n    }\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Base/ComponentOptions.ts","// Ensure that we're not going to get console is undefined error in IE8-9\n\n/* istanbul ignore next */\nif (!window['console']) {\n  console = <any>{\n    log: function() {},\n    debug: function() {},\n    info: function() {},\n    warn: function() {},\n    error: function() {},\n    assert: function() {},\n    clear: function() {},\n    count: function() {},\n    dir: function() {},\n    dirxml: function() {},\n    group: function() {},\n    groupCollapsed: function() {},\n    groupEnd: function() {},\n    msIsIndependentlyComposed: function(element: any): any {},\n    profile: function() {},\n    profileEnd: function() {},\n    select: function() {},\n    time: function() {},\n    timeEnd: function() {},\n    trace: function() {}\n  };\n}\n\n/* istanbul ignore next */\nexport class Logger {\n  static TRACE = 1;\n  static DEBUG = 2;\n  static INFO = 3;\n  static WARN = 4;\n  static ERROR = 5;\n  static NOTHING = 6;\n\n  static level = Logger.INFO;\n  static executionTime = false;\n\n  constructor(private owner: any) {}\n\n  trace(...stuff: any[]) {\n    if (Logger.level <= Logger.TRACE) {\n      this.log('TRACE', stuff);\n    }\n  }\n\n  debug(...stuff: any[]) {\n    if (Logger.level <= Logger.DEBUG) {\n      this.log('DEBUG', stuff);\n    }\n  }\n\n  info(...stuff: any[]) {\n    if (Logger.level <= Logger.INFO) {\n      this.log('INFO', stuff);\n    }\n  }\n\n  warn(...stuff: any[]) {\n    if (Logger.level <= Logger.WARN) {\n      this.log('WARN', stuff);\n    }\n  }\n\n  error(...stuff: any[]) {\n    if (Logger.level <= Logger.ERROR) {\n      this.log('ERROR', stuff);\n    }\n  }\n\n  private log(level: string, stuff: any[]) {\n    if (window['console'] && console.log) {\n      if (console.error && level == 'ERROR') {\n        console.error([level, this.owner].concat(stuff));\n      } else if (console.info && level == 'INFO') {\n        console.info([level, this.owner].concat(stuff));\n      } else if (console.warn && level == 'WARN') {\n        console.warn([level, this.owner].concat(stuff));\n      } else {\n        console.log([level, this.owner].concat(stuff));\n      }\n      if (Logger.executionTime) {\n        console.timeEnd('Execution time');\n        console.time('Execution time');\n      }\n    }\n  }\n\n  static enable() {\n    Logger.level = Logger.TRACE;\n  }\n\n  static disable() {\n    Logger.level = Logger.NOTHING;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/misc/Logger.ts","/**\n * The IAnalyticsActionCause interface describes the cause of an event for the analytics service.\n *\n * See the {@link Analytics} component\n */\nexport interface IAnalyticsActionCause {\n  /**\n   * Specifies the name of the event. While you can actually set this property to any arbitrary string value, its value\n   * should uniquely identify the precise action that triggers the event. Thus, each individual event should have its\n   * own unique `name` value.\n   *\n   * Example: `searchBoxSubmit`, `resultSort`, etc.\n   */\n  name: string;\n\n  /**\n   * Specifies the type of the event. While you can actually set this property to any arbitrary string value, it should\n   * describe the general category of the event. Thus, more than one event can have the same `type` value, which makes\n   * it possible to group events with identical types when doing reporting.\n   *\n   * Example: All search box related events could have `searchbox` as their `type` value.\n   */\n  type: string;\n}\n\nexport interface IAnalyticsNoMeta {}\n\nexport interface IAnalyticsInterfaceChange {\n  interfaceChangeTo: string;\n}\n\nexport interface IAnalyticsContextAddMeta {\n  contextName: string;\n}\n\nexport interface IAnalyticsContextRemoveMeta {\n  contextName: string;\n}\n\nexport interface IAnalyticsResultsSortMeta {\n  resultsSortBy: string;\n}\n\n/**\n * The `IAnalyticsDocumentViewMeta` interface describes the expected metadata when logging a click event / item view.\n *\n * See also the [`Analytics`]{@link Analytics} component, and more specifically its\n * [`logClickEvent`]{@link Analytics.logClickEvent} method.\n */\nexport type IAnalyticsDocumentViewMeta = {\n  /**\n   * The URL of the clicked item.\n   */\n  documentURL?: string;\n\n  /**\n   * The title of the clicked item.\n   */\n  documentTitle?: string;\n\n  /**\n   * The author of the clicked item.\n   */\n  author: string;\n};\n\nexport interface IAnalyticsOmniboxFacetMeta {\n  facetId: string;\n  facetField: string;\n  facetTitle: string;\n  facetValue?: string;\n  suggestions: string;\n  suggestionRanking: number;\n  query: string;\n}\n\nexport interface IAnalyticsSimpleFilterMeta {\n  simpleFilterTitle: string;\n  simpleFilterSelectedValue?: string;\n  simpleFilterField: string;\n}\n\nexport interface IAnalyticsFacetMeta {\n  facetId: string;\n  facetField: string;\n  facetValue?: string;\n  facetRangeStart?: string;\n  facetRangeEnd?: string;\n  facetRangeEndInclusive?: boolean;\n  facetTitle: string;\n}\n\nexport interface IAnalyticsFacetSortMeta extends IAnalyticsFacetMeta {\n  criteria: string;\n}\n\nexport interface IAnalyticsCategoryFacetMeta {\n  categoryFacetId: string;\n  categoryFacetField: string;\n  categoryFacetPath?: string[];\n  categoryFacetTitle: string;\n}\n\nexport interface IAnalyticsQueryErrorMeta {\n  query: string;\n  aq: string;\n  cq: string;\n  dq: string;\n  errorType: string;\n  errorMessage: string;\n}\n\nexport interface IAnalyticsTopSuggestionMeta {\n  suggestionRanking: number;\n  partialQueries: string;\n  suggestions: string;\n  partialQuery: string;\n}\n\nexport interface IAnalyticsOmniboxSuggestionMeta {\n  suggestionRanking: number;\n  partialQueries: string;\n  suggestions: string;\n  partialQuery: string;\n}\n\nexport interface IAnalyticsFacetSliderChangeMeta {\n  facetId: string;\n  facetField: string;\n  facetRangeStart: any;\n  facetRangeEnd: any;\n}\n\nexport interface IAnalyticsFacetGraphSelectedMeta extends IAnalyticsFacetSliderChangeMeta {}\n\nexport interface IAnalyticsFacetOperatorMeta extends IAnalyticsFacetMeta {\n  facetOperatorBefore: string;\n  facetOperatorAfter: string;\n}\n\nexport interface IAnalyticsPreferencesChangeMeta {\n  preferenceName: string;\n  preferenceType: string;\n}\n\nexport interface IAnalyticsCustomFiltersChangeMeta {\n  customFilterName: string;\n  customFilterType: string;\n  customFilterExpression: string;\n}\n\nexport interface IAnalyticsCaseAttachMeta {\n  resultUriHash: string;\n  articleID: string;\n  caseID: string;\n  author: string;\n}\n\nexport interface IAnalyticsCaseContextAddMeta {\n  caseID: string;\n}\n\nexport interface IAnalyticsCaseContextRemoveMeta {\n  caseID: string;\n}\n\nexport interface IAnalyticsCaseDetachMeta extends IAnalyticsCaseAttachMeta {}\n\nexport interface IAnalyticsCaseCreationInputChangeMeta {\n  inputTitle: string;\n  input: string;\n  value: string;\n}\n\nexport interface IAnalyticsCaseCreationDeflectionMeta {\n  hasClicks: boolean;\n  values: { [field: string]: string };\n}\n\nexport interface IAnalyticsPagerMeta {\n  pagerNumber: number;\n}\n\nexport interface IAnalyticsResultsPerPageMeta {\n  currentResultsPerPage: number;\n}\n\nexport interface IAnalyticsTriggerNotify {\n  notification: string;\n}\n\nexport interface IAnalyticsTriggerRedirect {\n  redirectedTo: string;\n  query?: string;\n}\n\nexport interface IAnalyticsTriggerQuery {\n  query: string;\n}\n\nexport interface IAnalyticsTriggerExecute {\n  executed: string;\n}\n\nexport interface IAnalyticsSearchAlertsMeta {\n  subscription: string;\n}\n\nexport interface IAnalyticsSearchAlertsUpdateMeta extends IAnalyticsSearchAlertsMeta {\n  frequency: string;\n}\n\nexport type IAnalyticsSearchAlertsFollowDocumentMeta = IAnalyticsDocumentViewMeta & {\n  documentSource: string;\n  documentLanguage: string[];\n  contentIDKey: string;\n  contentIDValue: string;\n};\n\nexport interface IAnalyticsResultsLayoutChange {\n  resultsLayoutChangeTo: string;\n}\n\nexport interface IAnalyticsMissingTerm {\n  missingTerm: string;\n}\n\nexport interface IAnalyticsSmartSnippetMeta {\n  searchQueryUid: string;\n}\n\nexport enum AnalyticsSmartSnippetFeedbackReason {\n  DoesNotAnswer = 'does_not_answer',\n  PartiallyAnswers = 'partially_answers',\n  WasNotAQuestion = 'was_not_a_question',\n  Other = 'other'\n}\n\nexport interface IAnalyticsSmartSnippetFeedbackMeta extends IAnalyticsSmartSnippetMeta {\n  reason: AnalyticsSmartSnippetFeedbackReason;\n  details?: string;\n}\n\nexport interface IAnalyticsSmartSnippetOpenSourceMeta extends IAnalyticsSmartSnippetMeta {\n  /**\n   * The URL of the snippet's source.\n   */\n  documentURL: string;\n  /**\n   * The title of the snippet's source.\n   */\n  documentTitle: string;\n  /**\n   * The author of the snippet's source..\n   */\n  author: string;\n}\n\nexport interface IAnalyticsSmartSnippetOpenSnippetInlineLinkMeta extends IAnalyticsSmartSnippetMeta {\n  /**\n   * The URL of the clicked link.\n   */\n  linkURL: string;\n  /**\n   * The text of the clicked link.\n   */\n  linkText: string;\n}\n\nexport interface IAnalyticsSmartSnippetSuggestionMeta extends IAnalyticsSmartSnippetMeta {\n  documentId: { contentIdKey: string; contentIdValue: string };\n}\n\nexport interface IAnalyticsSmartSnippetSuggestionOpenSourceMeta extends IAnalyticsSmartSnippetSuggestionMeta {\n  /**\n   * The URL of the snippet's source.\n   */\n  documentURL: string;\n  /**\n   * The title of the snippet's source.\n   */\n  documentTitle: string;\n  /**\n   * The author of the snippet's source..\n   */\n  author: string;\n}\n\nexport interface IAnalyticsSmartSnippetSuggestionOpenSnippetInlineLinkMeta extends IAnalyticsSmartSnippetSuggestionMeta {\n  /**\n   * The URL of the clicked link.\n   */\n  linkURL: string;\n  /**\n   * The text of the clicked link.\n   */\n  linkText: string;\n}\n\n/**\n * Describes the object sent as metadata along with [`clickQuerySuggestPreview`]{@link analyticsActionCauseList.clickQuerySuggestPreview} usage analytics events.\n */\nexport interface IAnalyticsClickQuerySuggestPreviewMeta {\n  /**\n   * The query suggestion for which a preview item was opened.\n   */\n  suggestion: string;\n  /**\n   * The 0-based position of the preview item that was opened.\n   */\n  displayedRank: number;\n}\n\nexport var analyticsActionCauseList = {\n  /**\n   * Identifies the search event that gets logged when the initial query is performed as a result of loading a search interface.\n   *\n   * `actionCause`: `'interfaceLoad'`\n   * `actionType`: `'interface'`\n   */\n  interfaceLoad: <IAnalyticsActionCause>{\n    name: 'interfaceLoad',\n    type: 'interface'\n  },\n  /**\n   * Identifies the search event that gets logged when a new tab is selected in the search interface.\n   *\n   * `actionCause`: `'interfaceChange'`\n   * `actionType`: `'interface'`\n   *\n   * Logging an event with this actionType also adds the following key-value pairs in the custom data property of the Usage Analytics HTTP service request.\n   * `\"interfaceChangeTo\"`: <newTabId>\n   */\n  interfaceChange: <IAnalyticsActionCause>{\n    name: 'interfaceChange',\n    type: 'interface'\n  },\n  /**\n   * Identifies the search event that gets logged when any `hd` or `hq` gets cleared from {@link QueryStateModel}, and then triggers a new query.\n   *\n   * `actionCause`: `'contextRemove'`\n   * `actionType`: `'misc'`\n   *\n   * Logging an event with this actionType also adds the following key-value pairs in the custom data property of the Usage Analytics HTTP service request.\n   * `\"contextName\"`: <contextName>\n   */\n  contextRemove: <IAnalyticsActionCause>{\n    name: 'contextRemove',\n    type: 'misc'\n  },\n  /**\n   * Identifies the search event that gets logged when `enableAutoCorrection: true` and the query is automatically corrected.\n   *\n   * `actionCause`: `'didyoumeanAutomatic'`\n   * `actionType`: `'misc'`\n   */\n  didyoumeanAutomatic: <IAnalyticsActionCause>{\n    name: 'didyoumeanAutomatic',\n    type: 'misc'\n  },\n  /**\n   * Identifies the search event that gets logged when the query suggestion with the corrected term is selected and successfully updates the query.\n   *\n   * `actionCause`: `'didyoumeanClick'`\n   * `actionType`: `'misc'`\n   */\n  didyoumeanClick: <IAnalyticsActionCause>{\n    name: 'didyoumeanClick',\n    type: 'misc'\n  },\n  /**\n   * Identifies the search event that gets logged when a sorting method is selected.\n   *\n   * `actionCause`: `'resultsSort'`\n   * `actionType`: `'misc'`\n   *\n   * Logging an event with this actionType also adds the following key-value pairs in the custom data property of the Usage Analytics HTTP service request.\n   * `\"resultsSortBy\"`: <sortingCategory>\n   */\n  resultsSort: <IAnalyticsActionCause>{\n    name: 'resultsSort',\n    type: 'misc'\n  },\n  /**\n   * Identifies the search event that gets logged when a submit button is selected on a search box.\n   *\n   * `actionCause`: `'searchboxSubmit'`\n   * `actionType`: `'search box'`\n   */\n  searchboxSubmit: <IAnalyticsActionCause>{\n    name: 'searchboxSubmit',\n    type: 'search box'\n  },\n  /**\n   * Identifies the search event that gets logged when a clear button is selected on a search box.\n   *\n   * `actionCause`: `'searchboxClear'`\n   * `actionType`: `'search box'`\n   */\n  searchboxClear: <IAnalyticsActionCause>{\n    name: 'searchboxClear',\n    type: 'search box'\n  },\n  /**\n   * The search-as-you-type event that gets logged when a query is automatically generated, and results are displayed while a user is entering text in the search box before they voluntarily submit the query.\n   *\n   * `actionCause`: `'searchboxAsYouType'`\n   * `actionType`: `'search box'`\n   */\n  searchboxAsYouType: <IAnalyticsActionCause>{\n    name: 'searchboxAsYouType',\n    type: 'search box'\n  },\n  /**\n   * The search-as-you-type event that gets logged when a breadcrumb facet is selected and the query is updated.\n   *\n   * `actionCause`: `'breadcrumbFacet'`\n   * `actionType`: `'breadcrumb'`\n   *\n   * Logging an event with this actionType also adds the following key-value pairs in the custom data property of the Usage Analytics HTTP service request.\n   * `\"facetId\":`: <correspondingFacetId>\n   */\n  breadcrumbFacet: <IAnalyticsActionCause>{\n    name: 'breadcrumbFacet',\n    type: 'breadcrumb'\n  },\n  /**\n   * Identifies the search event that gets logged when a user clears all values from the advanced search filter summary.\n   *\n   * `actionCause`: `'breadcrumbAdvancedSearch'`\n   * `actionType`: `'breadcrumb'`\n   */\n  breadcrumbAdvancedSearch: <IAnalyticsActionCause>{\n    name: 'breadcrumbAdvancedSearch',\n    type: 'breadcrumb'\n  },\n  /**\n   * Identifies the search event that gets logged when the event to clear the current breadcrumbs is triggered.\n   *\n   * `actionCause`: `'breadcrumbResetAll'`\n   * `actionType`: `'breadcrumb'`\n   */\n  breadcrumbResetAll: <IAnalyticsActionCause>{\n    name: 'breadcrumbResetAll',\n    type: 'breadcrumb'\n  },\n  /**\n   * Identifies the search event that gets logged when a user clicks a tag value from an item tag field to add a filter.\n   *\n   * `actionCause`: `'documentTag'`\n   * `actionType`: `'document'`\n   *\n   * The required properties of an [`IAnalyticsFacetMeta`](@link IAnalyticsFacetMeta) object are added as custom data\n   * when logging a usage analytics event matching this `actionCause`/`actionType`.\n   */\n  documentTag: <IAnalyticsActionCause>{\n    name: 'documentTag',\n    type: 'document'\n  },\n  /**\n   * Identifies the search event that gets logged when a user clicks a field value from an item field to add a filter.\n   *\n   * `actionCause`: `'documentField'`\n   * `actionType`: `'document'`\n   *\n   * The required properties of an [`IAnalyticsFacetMeta`](@link IAnalyticsFacetMeta) object are added as custom data\n   * when logging a usage analytics event matching this `actionCause`/`actionType`.\n   */\n  documentField: <IAnalyticsActionCause>{\n    name: 'documentField',\n    type: 'document'\n  },\n  /**\n   * Identifies the click event that gets logged when the Quick View element is selected and a Quick View modal of the document is displayed.\n   *\n   * `actionCause`: `'documentQuickview'`\n   * `actionType`: `'document'`\n   *\n   * Logging an event with this actionType also adds the following key-value pairs in the custom data property of the Usage Analytics HTTP service request.\n   * `\"documentTitle\":`: <correspondingDocumentTitle>\n   * `\"documentURL\":`: <correspondingDocumentURL>\n   */\n  documentQuickview: <IAnalyticsActionCause>{\n    name: 'documentQuickview',\n    type: 'document'\n  },\n  /**\n   * Identifies the click event that gets logged when a user clicks on a search result to open an item.\n   *\n   * `actionCause`: `'documentOpen'`\n   * `actionType`: `'document'`\n   *\n   * Logging an event with this actionType also adds the following key-value pairs in the custom data property of the Usage Analytics HTTP service request.\n   * `\"documentTitle\":`: <correspondingDocumentTitle>\n   * `\"documentURL\":`: <correspondingDocumentURL>\n   */\n  documentOpen: <IAnalyticsActionCause>{\n    name: 'documentOpen',\n    type: 'document'\n  },\n  /**\n   * Identifies the search event that gets logged when a user selects or deselects a facet filter from the Omnibox.\n   *\n   * `actionCause`: `'omniboxFacetSelect'`\n   * `actionType`: `'omnibox'`\n   *\n   * The required properties of an [`IAnalyticsOmniboxFacetMeta`](@link IAnalyticsOmniboxFacetMeta) object are added as custom data\n   * when logging a usage analytics event matching this `actionCause`/`actionType`.\n   */\n  omniboxFacetSelect: <IAnalyticsActionCause>{\n    name: 'omniboxFacetSelect',\n    type: 'omnibox'\n  },\n  /**\n   * Identifies the search event that gets logged when a user clicks a facet value to filter out results containing this value from the Omnibox.\n   *\n   * `actionCause`: `'omniboxFacetExclude'`\n   * `actionType`: `'omnibox'`\n   *\n   * The required properties of an [`IAnalyticsOmniboxFacetMeta`](@link IAnalyticsOmniboxFacetMeta) object are added as custom data\n   * when logging a usage analytics event matching this `actionCause`/`actionType`.\n   */\n  omniboxFacetExclude: <IAnalyticsActionCause>{\n    name: 'omniboxFacetExclude',\n    type: 'omnibox'\n  },\n  /**\n   * Identifies the search event that gets logged when a user selects or deselects a facet filter from the Omnibox.\n   *\n   * `actionCause`: `'omniboxFacetDeselect'`\n   * `actionType`: `'omnibox'`\n   *\n   * The required properties of an [`IAnalyticsOmniboxFacetMeta`](@link IAnalyticsOmniboxFacetMeta) object are added as custom data\n   * when logging a usage analytics event matching this `actionCause`/`actionType`.\n   */\n  omniboxFacetDeselect: <IAnalyticsActionCause>{\n    name: 'omniboxFacetDeselect',\n    type: 'omnibox'\n  },\n  /**\n   * Identifies the search event that gets logged when a user clicks a facet value to not filter out results containing this value from the Omnibox.\n   *\n   * `actionCause`: `'omniboxFacetUnexclude'`\n   * `actionType`: `'omnibox'`\n   *\n   * The required properties of an [`IAnalyticsOmniboxFacetMeta`](@link IAnalyticsOmniboxFacetMeta) object are added as custom data\n   * when logging a usage analytics event matching this `actionCause`/`actionType`.\n   */\n  omniboxFacetUnexclude: <IAnalyticsActionCause>{\n    name: 'omniboxFacetUnexclude',\n    type: 'omnibox'\n  },\n  /**\n   * Identifies the search event that gets logged when a user clicks a query suggestion based on the usage analytics recorded queries.\n   *\n   * `actionCause`: `'omniboxAnalytics'`\n   * `actionType`: `'omnibox'`\n   *\n   * The required properties of an [`IAnalyticsOmniboxSuggestionMeta`](@link IAnalyticsOmniboxSuggestionMeta) object are added as custom data\n   * when logging a usage analytics event matching this `actionCause`/`actionType`.\n   */\n  omniboxAnalytics: <IAnalyticsActionCause>{\n    name: 'omniboxAnalytics',\n    type: 'omnibox'\n  },\n  /**\n   * Identifies the search event that gets logged when a suggested search query is selected from a standalone searchbox.\n   *\n   * `actionCause`: `'omniboxFromLink'`\n   * `actionType`: `'omnibox'`\n   *\n   * The required properties of an [`IAnalyticsOmniboxSuggestionMeta`](@link IAnalyticsOmniboxSuggestionMeta) object are added as custom data\n   * when logging a usage analytics event matching this `actionCause`/`actionType`.\n   */\n  omniboxFromLink: <IAnalyticsActionCause>{\n    name: 'omniboxFromLink',\n    type: 'omnibox'\n  },\n  /**\n   * Identifies the search event that gets logged when a user selects a query suggestion from a list built from values of a field.\n   *\n   * `actionCause`: `'omniboxField'`\n   * `actionType`: `'omnibox'`\n   */\n  omniboxField: <IAnalyticsActionCause>{\n    name: 'omniboxField',\n    type: 'omnibox'\n  },\n  /**\n   * Identifies the search event that gets logged when the Clear Facet **X** button is selected.\n   *\n   * `actionCause`: `'facetClearAll'`\n   * `actionType`: `'facet'`\n   *\n   * The required properties of an [`IAnalyticsFacetMeta`](@link IAnalyticsFacetMeta) object are added as custom data\n   * when logging a usage analytics event matching this `actionCause`/`actionType`.\n   */\n  facetClearAll: <IAnalyticsActionCause>{\n    name: 'facetClearAll',\n    type: 'facet'\n  },\n  /**\n   * Identifies the custom event that gets logged when a query is being typed into the facet search box.\n   *\n   * `actionCause`: `'facetSearch'`\n   * `actionType`: `'facet'`\n   *\n   * The required properties of an [`IAnalyticsFacetMeta`](@link IAnalyticsFacetMeta) object are added as custom data\n   * when logging a usage analytics event matching this `actionCause`/`actionType`.\n   */\n  facetSearch: <IAnalyticsActionCause>{\n    name: 'facetSearch',\n    type: 'facet'\n  },\n  /**\n   * Identifies the search event that gets logged when the user toggles the facet operator.\n   *\n   * `actionCause`: `'facetToggle'`\n   * `actionType`: `'facet'`\n   *\n   * The required properties of an [`IAnalyticsFacetOperatorMeta`](@link IAnalyticsFacetOperatorMeta) object are added as custom data\n   * when logging a usage analytics event matching this `actionCause`/`actionType`.\n   */\n  facetToggle: <IAnalyticsActionCause>{\n    name: 'facetToggle',\n    type: 'facet'\n  },\n  /**\n   * Identifies the search event that gets logged when a facet slider changes range values.\n   *\n   * `actionCause`: `'facetRangeSlider'`\n   * `actionType`: `'facet'`\n   *\n   * The required properties of an [`IAnalyticsFacetSliderChangeMeta`](@link IAnalyticsFacetSliderChangeMeta) object are added as custom data\n   * when logging a usage analytics event matching this `actionCause`/`actionType`.\n   */\n  facetRangeSlider: <IAnalyticsActionCause>{\n    name: 'facetRangeSlider',\n    type: 'facet'\n  },\n  /**\n   * Identifies the search event that gets logged when a facet graph changes range values.\n   *\n   * `actionCause`: `'facetRangeGraph'`\n   * `actionType`: `'facet'`\n   *\n   * The required properties of an [`IAnalyticsFacetSliderChangeMeta`](@link IAnalyticsFacetSliderChangeMeta) object are added as custom data\n   * when logging a usage analytics event matching this `actionCause`/`actionType`.\n   */\n  facetRangeGraph: <IAnalyticsActionCause>{\n    name: 'facetRangeGraph',\n    type: 'facet'\n  },\n  /**\n   * Identifies the search event that gets logged when a facet check box is selected and the query is updated.\n   *\n   * `actionCause`: `'facetSelect'`\n   * `actionType`: `'facet'`\n   *\n   * The required properties of an [`IAnalyticsFacetMeta`](@link IAnalyticsFacetMeta) object are added as custom data\n   * when logging a usage analytics event matching this `actionCause`/`actionType`.\n   */\n  facetSelect: <IAnalyticsActionCause>{\n    name: 'facetSelect',\n    type: 'facet'\n  },\n  /**\n   * Identifies the search event that gets logged when all filters on a facet are selected.\n   *\n   * `actionCause`: `'facetSelectAll'`\n   * `actionType`: `'facet'`\n   *\n   * The required properties of an [`IAnalyticsFacetMeta`](@link IAnalyticsFacetMeta) object are added as custom data\n   * when logging a usage analytics event matching this `actionCause`/`actionType`.\n   */\n  facetSelectAll: <IAnalyticsActionCause>{\n    name: 'facetSelectAll',\n    type: 'facet'\n  },\n  /**\n   * Identifies the search event that gets logged when a facet check box is deselected and the query is updated.\n   *\n   * `actionCause`: `'facetDeselect'`\n   * `actionType`: `'facet'`\n   *\n   * The required properties of an [`IAnalyticsFacetMeta`](@link IAnalyticsFacetMeta) object are added as custom data\n   * when logging a usage analytics event matching this `actionCause`/`actionType`.\n   */\n  facetDeselect: <IAnalyticsActionCause>{\n    name: 'facetDeselect',\n    type: 'facet'\n  },\n  /**\n   * Identifies the search event that gets logged when a user clicks a facet value to filter out results containing the facet value.\n   *\n   * `actionCause`: `'facetExclude'`\n   * `actionType`: `'facet'`\n   *\n   * The required properties of an [`IAnalyticsFacetMeta`](@link IAnalyticsFacetMeta) object are added as custom data\n   * when logging a usage analytics event matching this `actionCause`/`actionType`.\n   */\n  facetExclude: <IAnalyticsActionCause>{\n    name: 'facetExclude',\n    type: 'facet'\n  },\n  /**\n   * Identifies the search event that gets logged when a user clicks a facet value to not filter out results containing the facet value.\n   *\n   * `actionCause`: `'facetUnexclude'`\n   * `actionType`: `'facet'`\n   *\n   * The required properties of an [`IAnalyticsFacetMeta`](@link IAnalyticsFacetMeta) object are added as custom data\n   * when logging a usage analytics event matching this `actionCause`/`actionType`.\n   */\n  facetUnexclude: <IAnalyticsActionCause>{\n    name: 'facetUnexclude',\n    type: 'facet'\n  },\n  facetUpdateSort: <IAnalyticsActionCause>{\n    name: 'facetUpdateSort',\n    type: 'facet'\n  },\n  /**\n   * The custom event that gets logged when an end-user expands a facet to see additional values.\n   *\n   * `actionCause`: `'showMoreFacetResults'`\n   * `actionType`: `'facet'`\n   */\n  facetShowMore: <IAnalyticsActionCause>{\n    name: 'showMoreFacetResults',\n    type: 'facet'\n  },\n  /**\n   * The custom event that gets logged when an end-user collapses a facet to see less values.\n   *\n   * `actionCause`: `'showLessFacetResults'`\n   * `actionType`: `'facet'`\n   */\n  facetShowLess: <IAnalyticsActionCause>{\n    name: 'showLessFacetResults',\n    type: 'facet'\n  },\n  categoryFacetSelect: <IAnalyticsActionCause>{\n    name: 'categoryFacetSelect',\n    type: 'categoryFacet'\n  },\n  categoryFacetReload: <IAnalyticsActionCause>{\n    name: 'categoryFacetReload',\n    type: 'categoryFacet'\n  },\n  categoryFacetClear: <IAnalyticsActionCause>{\n    name: 'categoryFacetClear',\n    type: 'categoryFacet'\n  },\n  categoryFacetBreadcrumb: <IAnalyticsActionCause>{\n    name: 'categoryFacetBreadcrumb',\n    type: 'categoryFacet'\n  },\n  categoryFacetSearch: <IAnalyticsActionCause>{\n    name: 'categoryFacetSearch',\n    type: 'categoryFacet'\n  },\n  /**\n   * Identifies the search event that gets logged when a DynamicFacet check box is selected and the query is updated.\n   *\n   * `actionCause`: `'facetSelect'`\n   * `actionType`: `'dynamicFacet'`\n   *\n   * The required and optional properties of an [`IAnalyticsFacetMeta`](@link IAnalyticsFacetMeta)\n   * object are added as custom data when logging a usage analytics event matching this `actionCause`/`actionType`.\n   */\n  dynamicFacetSelect: <IAnalyticsActionCause>{\n    name: 'facetSelect',\n    type: 'dynamicFacet'\n  },\n  /**\n   * Identifies the search event that gets logged when a DynamicFacet check box is deselected and the query is updated.\n   *\n   * `actionCause`: `'facetDeselect'`\n   * `actionType`: `'dynamicFacet'`\n   *\n   * The required and optional properties of an [`IAnalyticsFacetMeta`](@link IAnalyticsFacetMeta)\n   * object are added as custom data when logging a usage analytics event matching this `actionCause`/`actionType`.\n   */\n  dynamicFacetDeselect: <IAnalyticsActionCause>{\n    name: 'facetDeselect',\n    type: 'dynamicFacet'\n  },\n  /**\n   * Identifies the search event that gets logged when the **Clear** button of the DynamicFacet is clicked.\n   *\n   * `actionCause`: `'facetClearAll'`\n   * `actionType`: `'dynamicFacet'`\n   *\n   * The required and optional properties of an [`IAnalyticsFacetMeta`](@link IAnalyticsFacetMeta)\n   * object are added as custom data when logging a usage analytics event matching this `actionCause`/`actionType`.\n   */\n  dynamicFacetClearAll: <IAnalyticsActionCause>{\n    name: 'facetClearAll',\n    type: 'dynamicFacet'\n  },\n  /**\n   * Identifies the search event that gets logged when the **Show more** button of the DynamicFacet is clicked.\n   *\n   * `actionCause`: `'showMoreFacetResults'`\n   * `actionType`: `'dynamicFacet'`\n   *\n   * The required properties of an [`IAnalyticsDynamicFacetMeta`](@link IAnalyticsDynamicFacetMeta) object are added as custom data\n   * when logging a usage analytics event matching this `actionCause`/`actionType`.\n   */\n  dynamicFacetShowMore: <IAnalyticsActionCause>{\n    name: 'showMoreFacetResults',\n    type: 'dynamicFacet'\n  },\n  /**\n   * Identifies the search event that gets logged when the **Show less** button of the DynamicFacet is clicked.\n   *\n   * `actionCause`: `'showLessFacetResults'`\n   * `actionType`: `'dynamicFacet'`\n   *\n   * The required properties of an [`IAnalyticsDynamicFacetMeta`](@link IAnalyticsDynamicFacetMeta) object are added as custom data\n   * when logging a usage analytics event matching this `actionCause`/`actionType`.\n   */\n  dynamicFacetShowLess: <IAnalyticsActionCause>{\n    name: 'showLessFacetResults',\n    type: 'dynamicFacet'\n  },\n  /**\n   * Identifies the search and custom event that gets logged when a user clicks the Go Back link after an error page.\n   *\n   * `actionCause`: `'errorBack'`\n   * `actionType`: `'errors'`\n   */\n  errorBack: <IAnalyticsActionCause>{\n    name: 'errorBack',\n    type: 'errors'\n  },\n  /**\n   * Identifies the search and custom event that gets logged when a user clears the query box after an error page.\n   *\n   * `actionCause`: `'errorClearQuery'`\n   * `actionType`: `'errors'`\n   */\n  errorClearQuery: <IAnalyticsActionCause>{\n    name: 'errorClearQuery',\n    type: 'errors'\n  },\n  /**\n   * Identifies the search and custom event that gets logged when a user clicks the Retry link after an error page.\n   *\n   * `actionCause`: `'errorRetry'`\n   * `actionType`: `'errors'`\n   */\n  errorRetry: <IAnalyticsActionCause>{\n    name: 'errorRetry',\n    type: 'errors'\n  },\n  /**\n   * Identifies the search and custom event that gets logged when a user clicks the Cancel last action link when no results are returned following their last action.\n   *\n   * `actionCause`: `'noResultsBack'`\n   * `actionType`: `'noResults'`\n   */\n  noResultsBack: <IAnalyticsActionCause>{\n    name: 'noResultsBack',\n    type: 'noResults'\n  },\n  /**\n   * In the context of Coveo for Salesforce, this search event is logged when a user switches from a search results list in the Insight Panel to the Expanded Search using the Expanded Search icon.\n   *\n   * `actionCause`: `'expandToFullUI'`\n   * `actionType`: `'interface'`\n   */\n  expandToFullUI: <IAnalyticsActionCause>{\n    name: 'expandToFullUI',\n    type: 'interface'\n  },\n  /**\n   * In the context of some Coveo for Salesforce user interfaces, this search event is logged when a user fills a form input in the case creation page.\n   *\n   * `actionCause`: `'inputChange'`\n   * `actionType`: `'caseCreation'`\n   */\n  caseCreationInputChange: <IAnalyticsActionCause>{\n    name: 'inputChange',\n    type: 'caseCreation'\n  },\n  /**\n   * In the context of some Coveo for Salesforce user interfaces, this custom event is logged when a user creates a case by clicking the submit button.\n   *\n   * `actionCause`: `'submitButton'`\n   * `actionType`: `'caseCreation'`\n   */\n  caseCreationSubmitButton: <IAnalyticsActionCause>{\n    name: 'submitButton',\n    type: 'caseCreation'\n  },\n  /**\n   * In the context of some Coveo for Salesforce user interfaces, this custom event is logged when a user cancels the creation of their case by clicking the cancel button.\n   *\n   * `actionCause`: `'cancelButton'`\n   * `actionType`: `'caseCreation'`\n   */\n  caseCreationCancelButton: <IAnalyticsActionCause>{\n    name: 'cancelButton',\n    type: 'caseCreation'\n  },\n  /**\n   * In the context of some Coveo for Salesforce user interfaces, this custom event is logged when a user leaves the case creation page.\n   *\n   * `actionCause`: `'unloadPage'`\n   * `actionType`: `'caseCreation'`\n   */\n  caseCreationUnloadPage: <IAnalyticsActionCause>{\n    name: 'unloadPage',\n    type: 'caseCreation'\n  },\n  /**\n   * In the context of Coveo for Salesforce, this search event is logged when a user checks the Show only contextual result checkbox from the Insight Panel.\n   *\n   * `actionCause`: `'casecontextAdd'`\n   * `actionType`: `'casecontext'`\n   *\n   * Logging an event with this actionType also adds the following key-value pairs in the custom data property of the Usage Analytics HTTP service request.\n   * `\"caseID\":`: <correspondingCaseId>\n   */\n  casecontextAdd: <IAnalyticsActionCause>{\n    name: 'casecontextAdd',\n    type: 'casecontext'\n  },\n  /**\n   * In the context of Coveo for Salesforce, this search event is logged when a user clears the Show only contextual result checkbox from the Insight Panel.\n   *\n   * `actionCause`: `'casecontextRemove'`\n   * `actionType`: `'casecontext'`\n   *\n   * Logging an event with this actionType also adds the following key-value pairs in the custom data property of the Usage Analytics HTTP service request.\n   * `\"caseID\":`: <correspondingCaseId>\n   */\n  casecontextRemove: <IAnalyticsActionCause>{\n    name: 'casecontextRemove',\n    type: 'casecontext'\n  },\n  /**\n   * Identifies the search and custom event that gets logged when a checkbox in the search preferences is toggled.\n   *\n   * `actionCause`: `'preferencesChange'`\n   * `actionType`: `'preferences'`\n   *\n   * Logging an event with this actionType also adds the following key-value pairs in the custom data property of the Usage Analytics HTTP service request.\n   * `\"preferenceName\":`: <correspondingPreferenceName>\n   * `\"preferenceType\":`: <correspondingPreferenceType>\n   */\n  preferencesChange: <IAnalyticsActionCause>{\n    name: 'preferencesChange',\n    type: 'preferences'\n  },\n  /**\n   * In the context of Coveo for Salesforce, this is custom event logged when an agent opens the User Actions panel.\n   *\n   * `actionCause`: `'getUserHistory'`\n   * `actionType`: `'userHistory'`\n   */\n  getUserHistory: <IAnalyticsActionCause>{\n    name: 'getUserHistory',\n    type: 'userHistory'\n  },\n  /**\n   * In the context of some Coveo for Salesforce user interfaces, this  custom event is logged when an agent clicks a link in the User Actions panel.\n   *\n   * `actionCause`: `'userActionDocumentClick'`\n   * `actionType`: `'userHistory'`\n   */\n  userActionDocumentClick: <IAnalyticsActionCause>{\n    name: 'userActionDocumentClick',\n    type: 'userHistory'\n  },\n  /**\n   * In the context of Coveo for Salesforce, this custom event is logged when a user attaches a knowledge base article to a case.\n   *\n   * `actionCause`: `'caseAttach'`\n   * `actionType`: `'case'`\n   *\n   * Logging an event with this actionType also adds the following key-value pairs in the custom data property of the Usage Analytics HTTP service request.\n   * `\"documentTitle\":`: <correspondingDocumentTitle>\n   * `\"resultUriHash\":`: <correspondingResultUriHash>\n   * `\"articleID\":`: <correspondingArticleId>\n   * `\"caseID\":`: <correspondingCaseID>\n   */\n  caseAttach: <IAnalyticsActionCause>{\n    name: 'caseAttach',\n    type: 'case'\n  },\n  /**\n   * In the context of Coveo for Salesforce, this custom event is logged when a user detaches a knowledge base article to a case.\n   *\n   * `actionCause`: `'caseDetach'`\n   * `actionType`: `'case'`\n   *\n   * Logging an event with this actionType also adds the following key-value pairs in the custom data property of the Usage Analytics HTTP service request.\n   * `\"documentTitle\":`: <correspondingDocumentTitle>\n   * `\"resultUriHash\":`: <correspondingResultUriHash>\n   * `\"articleID\":`: <correspondingArticleId>\n   * `\"caseID\":`: <correspondingCaseID>\n   */\n  caseDetach: <IAnalyticsActionCause>{\n    name: 'caseDetach',\n    type: 'case'\n  },\n  /**\n   * Identifies the search event that gets logged when a user modifies a custom search filter or removes one from the breadcrumbs.\n   *\n   * `actionCause`: `'customfiltersChange'`\n   * `actionType`: `'customfilters'`\n   *\n   * Logging an event with this actionType also adds the following key-value pairs in the custom data property of the Usage Analytics HTTP service request.\n   * `\"customFilterName\":`: <correspondingCustomFilterName>\n   * `\"customFilterType\":`: <correspondingCustomFilterType>\n   * `\"customFilterExpression\":`: <correspondingCustomFilterExpression>\n   */\n  customfiltersChange: <IAnalyticsActionCause>{\n    name: 'customfiltersChange',\n    type: 'customfilters'\n  },\n  /**\n   * Identifies the custom event that gets logged when a page number is selected and more items are loaded.\n   *\n   * `actionCause`: `'pagerNumber'`\n   * `actionType`: `'getMoreResults'`\n   *\n   * Logging an event with this actionType also adds the following key-value pairs in the custom data property of the Usage Analytics HTTP service request.\n   * `\"pagerNumber\":`: <correspondingPageNumber>\n   */\n  pagerNumber: <IAnalyticsActionCause>{\n    name: 'pagerNumber',\n    type: 'getMoreResults'\n  },\n  /**\n   * Identifies the custom event that gets logged when the Next Page link is selected and more items are loaded.\n   *\n   * `actionCause`: `'pagerNext'`\n   * `actionType`: `'getMoreResults'`\n   *\n   * Logging an event with this actionType also adds the following key-value pairs in the custom data property of the Usage Analytics HTTP service request.\n   * `\"pagerNumber\":`: <correspondingPageNumber>\n   */\n  pagerNext: <IAnalyticsActionCause>{\n    name: 'pagerNext',\n    type: 'getMoreResults'\n  },\n  /**\n   * Identifies the custom event that gets logged when the Previous Page link is selected and more items are loaded.\n   *\n   * `actionCause`: `'pagerPrevious'`\n   * `actionType`: `'getMoreResults'`\n   *\n   * Logging an event with this actionType also adds the following key-value pairs in the custom data property of the Usage Analytics HTTP service request.\n   * `\"pagerNumber\":`: <correspondingPageNumber>\n   */\n  pagerPrevious: <IAnalyticsActionCause>{\n    name: 'pagerPrevious',\n    type: 'getMoreResults'\n  },\n  /**\n   * Identifies the custom event that gets logged when the user scrolls to the bottom of the item page and more results are loaded.\n   *\n   * `actionCause`: `'pagerScrolling'`\n   * `actionType`: `'getMoreResults'`\n   */\n  pagerScrolling: <IAnalyticsActionCause>{\n    name: 'pagerScrolling',\n    type: 'getMoreResults'\n  },\n  /**\n   * Identifies the custom event that gets logged when the Results per page component is selected.\n   *\n   * `actionCause`: `'pagerResize'`\n   * `actionType`: `'getMoreResults'`\n   */\n  pagerResize: <IAnalyticsActionCause>{\n    name: 'pagerResize',\n    type: 'getMoreResults'\n  },\n  /**\n   * Identifies the search event that gets logged when the user accepts to share their location (latitude and longitude) with the search page.\n   *\n   * `actionCause`: `'positionSet'`\n   * `actionType`: `'distance'`\n   */\n  positionSet: <IAnalyticsActionCause>{\n    name: 'positionSet',\n    type: 'distance'\n  },\n  /**\n   * Identifies the search event that gets logged when the search page loads with a query, such as when a user clicks a link pointing to a search results page with a query or enters a query in a standalone search box that points to a search page.\n   *\n   * `actionCause`: `'searchFromLink'`\n   * `actionType`: `'interface'`\n   */\n  searchFromLink: <IAnalyticsActionCause>{\n    name: 'searchFromLink',\n    type: 'interface'\n  },\n  /**\n   * Identifies the custom event that gets logged when a user action triggers a notification set in the effective query pipeline on the search page.\n   *\n   * `actionCause`: `'notify'`\n   * `actionType`: `'queryPipelineTriggers'`\n   */\n  triggerNotify: <IAnalyticsActionCause>{\n    name: 'notify',\n    type: 'queryPipelineTriggers'\n  },\n  /**\n   * Identifies the custom event that gets logged when a user action executes a JavaScript function set in the effective query pipeline on the search page.\n   *\n   * `actionCause`: `'execute'`\n   * `actionType`: `'queryPipelineTriggers'`\n   */\n  triggerExecute: <IAnalyticsActionCause>{\n    name: 'execute',\n    type: 'queryPipelineTriggers'\n  },\n  /**\n   * Identifies the custom event that gets logged when a user action triggers a new query set in the effective query pipeline on the search page.\n   *\n   * `actionCause`: `'query'`\n   * `actionType`: `'queryPipelineTriggers'`\n   */\n  triggerQuery: <IAnalyticsActionCause>{\n    name: 'query',\n    type: 'queryPipelineTriggers'\n  },\n  /**\n   * Identifies the custom event that gets logged when a user action redirects them to a URL set in the effective query pipeline on the search page.\n   *\n   * `actionCause`: `'redirect'`\n   * `actionType`: `'queryPipelineTriggers'`\n   */\n  triggerRedirect: <IAnalyticsActionCause>{\n    name: 'redirect',\n    type: 'queryPipelineTriggers'\n  },\n  /**\n   * Identifies the custom event that gets logged when a user query encounters an error during execution.\n   *\n   * `actionCause`: `'query'`\n   * `actionType`: `'errors'`\n   *\n   * Logging an event with this actionType also adds the following key-value pairs in the custom data property of the Usage Analytics HTTP service request.\n   * `\"query\":`: <correspondingQuery>\n   * `\"aq\":`: <correspondingAdvancedQuery>\n   * `\"cq\":`: <correspondingConstantQuery>\n   * `\"dq\":`: <correspondingDisjunctiveQuery>\n   * `\"errorType\":`: <errorType>\n   * `\"errorMessage\":`: <errorMessage>\n   */\n  queryError: <IAnalyticsActionCause>{\n    name: 'query',\n    type: 'errors'\n  },\n  /**\n   * Identifies the custom event that gets logged when a user exports search results in an XLS file by clicking the Export to Excel option.\n   *\n   * `actionCause`: `'exportToExcel'`\n   * `actionType`: `'misc'`\n   */\n  exportToExcel: <IAnalyticsActionCause>{\n    name: 'exportToExcel',\n    type: 'misc'\n  },\n  /**\n   * Identifies the custom event that gets logged when a user performs a query that returns recommendations in the Recommendations panel.\n   *\n   * `actionCause`: `'recommendation'`\n   * `actionType`: `'recommendation'`\n   */\n  recommendation: <IAnalyticsActionCause>{\n    name: 'recommendation',\n    type: 'recommendation'\n  },\n  /**\n   * Identifies the search event that gets logged when a user action (that is not a query) reloads the Recommendations panel with new recommendations.\n   *\n   * `actionCause`: `'recommendationInterfaceLoad'`\n   * `actionType`: `'recommendation'`\n   */\n  recommendationInterfaceLoad: <IAnalyticsActionCause>{\n    name: 'recommendationInterfaceLoad',\n    type: 'recommendation'\n  },\n  /**\n   * Identifies the click event that gets logged when a user clicks a recommendation in the Recommendations panel.\n   *\n   * `actionCause`: `'recommendationOpen'`\n   * `actionType`: `'recommendation'`\n   */\n  recommendationOpen: <IAnalyticsActionCause>{\n    name: 'recommendationOpen',\n    type: 'recommendation'\n  },\n  /**\n   * Identifies the search event that gets logged when a user creates an advanced query from the {@link AdvancedSearch} component.\n   *\n   * `actionCause`: `'advancedSearch'`\n   * `actionType`: `'advancedSearch'`\n   */\n  advancedSearch: <IAnalyticsActionCause>{\n    name: 'advancedSearch',\n    type: 'advancedSearch'\n  },\n  /**\n   * Identifies the custom event that gets logged when a user follows a document.\n   *\n   * `actionCause`: `'followDocument'`\n   * `actionType`: `'searchAlerts'`\n   */\n  searchAlertsFollowDocument: <IAnalyticsActionCause>{\n    name: 'followDocument',\n    type: 'searchAlerts'\n  },\n  /**\n   * Identifies the custom event that gets logged when a user follows a query.\n   *\n   * `actionCause`: `'followQuery'`\n   * `actionType`: `'searchAlerts'`\n   */\n  searchAlertsFollowQuery: <IAnalyticsActionCause>{\n    name: 'followQuery',\n    type: 'searchAlerts'\n  },\n  /**\n   * Identifies the custom event that gets logged when the dropdown value for frequency is changed.\n   *\n   * `actionCause`: `'updateSubscription'`\n   * `actionType`: `'searchAlerts'`\n   */\n  searchAlertsUpdateSubscription: <IAnalyticsActionCause>{\n    name: 'updateSubscription',\n    type: 'searchAlerts'\n  },\n  /**\n   * Identifies the custom event that gets logged when a subscription is successfully deleted.\n   *\n   * `actionCause`: `'deleteSubscription'`\n   * `actionType`: `'searchAlerts'`\n   */\n  searchAlertsDeleteSubscription: <IAnalyticsActionCause>{\n    name: 'deleteSubscription',\n    type: 'searchAlerts'\n  },\n  /**\n   * Identifies the custom event that gets logged when a user unfollows a document.\n   *\n   * `actionCause`: `'unfollowDocument'`\n   * `actionType`: `'searchAlerts'`\n   */\n  searchAlertsUnfollowDocument: <IAnalyticsActionCause>{\n    name: 'unfollowDocument',\n    type: 'searchAlerts'\n  },\n  /**\n   * Identifies the custom event that gets logged when a user unfollows a query.\n   *\n   * `actionCause`: `'unfollowQuery'`\n   * `actionType`: `'searchAlerts'`\n   */\n  searchAlertsUnfollowQuery: <IAnalyticsActionCause>{\n    name: 'unfollowQuery',\n    type: 'searchAlerts'\n  },\n  /**\n   * Identifies the search event that gets logged when a user selects a simple filter value under the search box.\n   *\n   * `actionCause`: `'selectValue'`\n   * `actionType`: `'simpleFilter'`\n   *\n   * Logging an event with this actionType also adds the following key-value pairs in the custom data property of the Usage Analytics HTTP service request.\n   * `\"simpleFilterTitle\":`: <correspondingSimpleFilterTitle>\n   * `\"simpleFilterValue\":`: <correspondingSimpleFilterValue>\n   * `\"simpleFilterField\":`: <correspondingSimpleFilterField>\n   */\n  simpleFilterSelectValue: <IAnalyticsActionCause>{\n    name: 'selectValue',\n    type: 'simpleFilter'\n  },\n  /**\n   * Identifies the search event that gets logged when a user deselects a simple filter value under the search box.\n   *\n   * `actionCause`: `'deselectValue'`\n   * `actionType`: `'simpleFilter'`\n   *\n   * Logging an event with this actionType also adds the following key-value pairs in the custom data property of the Usage Analytics HTTP service request.\n   * `\"simpleFilterTitle\":`: <correspondingSimpleFilterTitle>\n   * `\"simpleFilterValue\":`: <correspondingSimpleFilterValue>\n   * `\"simpleFilterField\":`: <correspondingSimpleFilterField>\n   */\n  simpleFilterDeselectValue: <IAnalyticsActionCause>{\n    name: 'deselectValue',\n    type: 'simpleFilter'\n  },\n  /**\n   * Identifies the search event that gets logged when a user clicks the Clear all button to remove all simple filters under the search box.\n   *\n   * `actionCause`: `'clearAll'`\n   * `actionType`: `'simpleFilter'`\n   *\n   * Logging an event with this actionType also adds the following key-value pairs in the custom data property of the Usage Analytics HTTP service request.\n   * `\"simpleFilterTitle\":`: <correspondingSimpleFilterTitle>\n   * `\"simpleFilterValue\":`: <correspondingSimpleFilterValue>\n   * `\"simpleFilterField\":`: <correspondingSimpleFilterField>\n   */\n  simpleFilterClearAll: <IAnalyticsActionCause>{\n    name: 'clearAll',\n    type: 'simpleFilter'\n  },\n  /**\n   * Identifies the search event that gets logged when a user changes the search results layout (list, card, or table).\n   *\n   * `actionCause`: `'changeResultsLayout'`\n   * `actionType`: `'resultsLayout'`\n   */\n  resultsLayoutChange: <IAnalyticsActionCause>{\n    name: 'changeResultsLayout',\n    type: 'resultsLayout'\n  },\n  /**\n   * Identifies the click event that gets logged when a user clicks the Show More link under a search result that support the folding component\n   *\n   * `actionCause`: `'showMoreFoldedResults'`\n   * `actionType`: `'folding'`\n   */\n  foldingShowMore: <IAnalyticsActionCause>{\n    name: 'showMoreFoldedResults',\n    type: 'folding'\n  },\n  /**\n   * Identifies the click event that gets logged when a user clicks the Show Less link under a search result that support the folding component\n   *\n   * `actionCause`: `'showMoreFoldedResults'`\n   * `actionType`: `'folding'`\n   */\n  foldingShowLess: <IAnalyticsActionCause>{\n    name: 'showLessFoldedResults',\n    type: 'folding'\n  },\n  /**\n   * The search event that gets logged when an end-user triggers a new query by clicking a missing term in a result item.\n   *\n   * `actionCause`: `'addMissingTerm'`\n   * `actionType`: `'missingTerm'`\n   */\n  addMissingTerm: <IAnalyticsActionCause>{\n    name: 'addMissingTerm',\n    type: 'missingTerm'\n  },\n  /**\n   * The search event that gets logged when an end-user triggers a new query by removing a missing term from the breadcrumb.\n   *\n   * `actionCause`: `'removeMissingTerm'`\n   * `actionType`: `'missingTerm'`\n   */\n  removeMissingTerm: <IAnalyticsActionCause>{\n    name: 'removeMissingTerm',\n    type: 'missingTerm'\n  },\n  /**\n   * The search event logged when a preview is requested for a query suggestion (see the [QuerySuggestPreview]{@link QuerySuggestPreview} component).\n   *\n   * Implements the [IAnalyticsActionCause]{@link IAnalyticsActionCause} interface as such:\n   *\n   * ```javascript\n   * {\n   *  actionCause: \"showQuerySuggestPreview\",\n   *  actionType: \"querySuggestPreview\"\n   * }\n   * ```\n   *\n   * The framework sends an [`IAnalyticsTopSuggestionMeta`]{@link IAnalyticsTopSuggestionMeta} object as metadata when logging this event.\n   */\n  showQuerySuggestPreview: <IAnalyticsActionCause>{\n    name: 'showQuerySuggestPreview',\n    type: 'querySuggestPreview'\n  },\n  /**\n   * The custom event logged when an item is opened in a query suggestion preview (see the [QuerySuggestPreview]{@link QuerySuggestPreview} component).\n   *\n   * Implements the [IAnalyticsActionCause]{@link IAnalyticsActionCause} interface as such:\n   *\n   * ```javascript\n   * {\n   *  actionCause: \"clickQuerySuggestPreview\",\n   *  actionType: \"querySuggestPreview\"\n   * }\n   * ```\n   *\n   * The framework sends an [`IAnalyticsClickQuerySuggestPreviewMeta`]{@link IAnalyticsClickQuerySuggestPreviewMeta} object as metadata when logging this event.\n   */\n  clickQuerySuggestPreview: <IAnalyticsActionCause>{\n    name: 'clickQuerySuggestPreview',\n    type: 'querySuggestPreview'\n  },\n  /**\n   * The custom event logged when the \"Yes\" button is pressed in a [SmartSnippet]{@link SmartSnippet}'s feedback banner.\n   *\n   * Implements the [IAnalyticsActionCause]{@link IAnalyticsActionCause} interface as such:\n   *\n   * ```javascript\n   * {\n   *  actionCause: \"likeSmartSnippet\",\n   *  actionType: \"smartSnippet\"\n   * }\n   * ```\n   */\n  likeSmartSnippet: <IAnalyticsActionCause>{\n    name: 'likeSmartSnippet',\n    type: 'smartSnippet'\n  },\n  /**\n   * The custom event logged when the \"No\" button is pressed in a [SmartSnippet]{@link SmartSnippet}'s feedback banner.\n   *\n   * Implements the [IAnalyticsActionCause]{@link IAnalyticsActionCause} interface as such:\n   *\n   * ```javascript\n   * {\n   *  actionCause: \"dislikeSmartSnippet\",\n   *  actionType: \"smartSnippet\"\n   * }\n   * ```\n   */\n  dislikeSmartSnippet: <IAnalyticsActionCause>{\n    name: 'dislikeSmartSnippet',\n    type: 'smartSnippet'\n  },\n  /**\n   * The custom event logged when the \"Show more\" button is pressed in a [SmartSnippet]{@link SmartSnippet}.\n   *\n   * Implements the [IAnalyticsActionCause]{@link IAnalyticsActionCause} interface as such:\n   *\n   * ```javascript\n   * {\n   *  actionCause: \"expandSmartSnippet\",\n   *  actionType: \"smartSnippet\"\n   * }\n   * ```\n   */\n  expandSmartSnippet: <IAnalyticsActionCause>{\n    name: 'expandSmartSnippet',\n    type: 'smartSnippet'\n  },\n  /**\n   * The custom event logged when the \"Show less\" button is pressed in a [SmartSnippet]{@link SmartSnippet}.\n   *\n   * Implements the [IAnalyticsActionCause]{@link IAnalyticsActionCause} interface as such:\n   *\n   * ```javascript\n   * {\n   *  actionCause: \"collapseSmartSnippet\",\n   *  actionType: \"smartSnippet\"\n   * }\n   * ```\n   */\n  collapseSmartSnippet: <IAnalyticsActionCause>{\n    name: 'collapseSmartSnippet',\n    type: 'smartSnippet'\n  },\n  /**\n   * The custom event logged when the \"Explain why\" button in a [SmartSnippet]{@link SmartSnippet} is pressed.\n   *\n   * Implements the [IAnalyticsActionCause]{@link IAnalyticsActionCause} interface as such:\n   *\n   * ```javascript\n   * {\n   *  actionCause: \"openSmartSnippetFeedbackModal\",\n   *  actionType: \"smartSnippet\"\n   * }\n   * ```\n   */\n  openSmartSnippetFeedbackModal: <IAnalyticsActionCause>{\n    name: 'openSmartSnippetFeedbackModal',\n    type: 'smartSnippet'\n  },\n  /**\n   * The custom event logged when the modal opened by clicking the \"Explain why\" button in a [SmartSnippet]{@link SmartSnippet} is closed.\n   *\n   * Implements the [IAnalyticsActionCause]{@link IAnalyticsActionCause} interface as such:\n   *\n   * ```javascript\n   * {\n   *  actionCause: \"closeSmartSnippetFeedbackModal\",\n   *  actionType: \"smartSnippet\"\n   * }\n   * ```\n   */\n  closeSmartSnippetFeedbackModal: <IAnalyticsActionCause>{\n    name: 'closeSmartSnippetFeedbackModal',\n    type: 'smartSnippet'\n  },\n  /**\n   * The custom event logged when a generic reason was sent from the modal opened when clicking the \"Explain why\" button in a [SmartSnippet]{@link SmartSnippet}.\n   *\n   * Implements the [IAnalyticsActionCause]{@link IAnalyticsActionCause} interface as such:\n   *\n   * ```javascript\n   * {\n   *  actionCause: \"sendSmartSnippetReason\",\n   *  actionType: \"smartSnippet\"\n   * }\n   * ```\n   */\n  sendSmartSnippetReason: <IAnalyticsActionCause>{\n    name: 'sendSmartSnippetReason',\n    type: 'smartSnippet'\n  },\n  /**\n   * The custom event logged when a user clicks on the source of an answer in a [SmartSnippet]{@link SmartSnippet}..\n   *\n   * ```javascript\n   * {\n   *  actionCause: \"openSmartSnippetSource\",\n   *  actionType: \"smartSnippet\"\n   * }\n   * ```\n   */\n  openSmartSnippetSource: <IAnalyticsActionCause>{\n    name: 'openSmartSnippetSource',\n    type: 'smartSnippet'\n  },\n  /**\n   * The custom event logged when a user clicks on an inline link inside of an answer in a [SmartSnippet]{@link SmartSnippet}.\n   *\n   * ```javascript\n   * {\n   *  actionCause: \"openSmartSnippetInlineLink\",\n   *  actionType: \"smartSnippet\"\n   * }\n   * ```\n   */\n  openSmartSnippetInlineLink: <IAnalyticsActionCause>{\n    name: 'openSmartSnippetInlineLink',\n    type: 'smartSnippet'\n  },\n  /**\n   * The custom event logged when a suggestion from [SmartSnippetSuggestions]{@link SmartSnippetSuggestions} is expanded.\n   *\n   * Implements the [IAnalyticsActionCause]{@link IAnalyticsActionCause} interface as such:\n   *\n   * ```javascript\n   * {\n   *  actionCause: \"expandSmartSnippetSuggestion\",\n   *  actionType: \"smartSnippetSuggestions\"\n   * }\n   * ```\n   */\n  expandSmartSnippetSuggestion: <IAnalyticsActionCause>{\n    name: 'expandSmartSnippetSuggestion',\n    type: 'smartSnippetSuggestions'\n  },\n  /**\n   * The custom event logged when a suggestion from [SmartSnippetSuggestions]{@link SmartSnippetSuggestions} is collapsed.\n   *\n   * Implements the [IAnalyticsActionCause]{@link IAnalyticsActionCause} interface as such:\n   *\n   * ```javascript\n   * {\n   *  actionCause: \"collapseSmartSnippetSuggestion\",\n   *  actionType: \"smartSnippetSuggestions\"\n   * }\n   * ```\n   */\n  collapseSmartSnippetSuggestion: <IAnalyticsActionCause>{\n    name: 'collapseSmartSnippetSuggestion',\n    type: 'smartSnippetSuggestions'\n  },\n  /**\n   * The custom event logged when a user clicks on the source of an answer in a [SmartSnippetSuggestion]{@link SmartSnippetSuggestions}.\n   *\n   * ```javascript\n   * {\n   *  actionCause: \"openSmartSnippetSuggestionSource\",\n   *  actionType: \"smartSnippet\"\n   * }\n   * ```\n   */\n  openSmartSnippetSuggestionSource: <IAnalyticsActionCause>{\n    name: 'openSmartSnippetSuggestionSource',\n    type: 'smartSnippet'\n  },\n  /**\n   * The custom event logged when a user clicks on an inline link inside of an answer in an expanded [SmartSnippetSuggestion]{@link SmartSnippetSuggestions}.\n   *\n   * ```javascript\n   * {\n   *  actionCause: \"openSmartSnippetSuggestionInlineLink\",\n   *  actionType: \"smartSnippet\"\n   * }\n   * ```\n   */\n  openSmartSnippetSuggestionInlineLink: <IAnalyticsActionCause>{\n    name: 'openSmartSnippetSuggestionInlineLink',\n    type: 'smartSnippet'\n  }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Analytics/AnalyticsActionListMeta.ts","import { IEndpointError } from '../rest/EndpointError';\nimport { IQuery } from '../rest/Query';\nimport { IQueryResults } from '../rest/QueryResults';\nimport { IEndpointCallOptions, ISearchEndpoint } from '../rest/SearchEndpointInterface';\nimport { Component } from '../ui/Base/Component';\nimport { QueryBuilder } from '../ui/Base/QueryBuilder';\n\n/**\n * Argument sent to all handlers bound on {@link QueryEvents.newQuery}\n */\nexport interface INewQueryEventArgs {\n  /**\n   * Whether the query is a search-as-you-type\n   */\n  searchAsYouType: boolean;\n  /**\n   * If this property is set to true by any handlers, the query will not be executed.\n   */\n  cancel: boolean;\n  shouldRedirectStandaloneSearchbox: boolean;\n  origin?: Component;\n}\n\n/**\n * Argument sent to all handlers bound on {@link QueryEvents.buildingQuery}\n */\nexport interface IBuildingQueryEventArgs {\n  /**\n   * Allow handlers to modify the query by using the {@link QueryBuilder}\n   */\n  queryBuilder: QueryBuilder;\n  /**\n   * Determine if the query is a \"search-as-you-type\"\n   */\n  searchAsYouType: boolean;\n  /**\n   * If this property is set to true by any handlers, the query will not be executed.\n   */\n  cancel: boolean;\n}\n\n/**\n * Argument sent to all handlers bound on {@link QueryEvents.doneBuildingQuery}\n */\nexport interface IDoneBuildingQueryEventArgs {\n  /**\n   * Allow handlers to modify the query by using the {@link QueryBuilder}\n   */\n  queryBuilder: QueryBuilder;\n  /**\n   * Whether the query is a search-as-you-type\n   */\n  searchAsYouType: boolean;\n  /**\n   * If this property is set to true by any handlers, the query will not be executed.\n   */\n  cancel: boolean;\n}\n\n/**\n * Argument sent to all handlers bound on {@link QueryEvents.duringQuery}\n */\nexport interface IDuringQueryEventArgs {\n  /**\n   * The {@link QueryBuilder} that was used for the current query\n   */\n  queryBuilder: QueryBuilder;\n  /**\n   * The query that was just executed\n   */\n  query: IQuery;\n  /**\n   * A promises for the results that will be returned by the Search API\n   */\n  promise: Promise<IQueryResults>;\n  /**\n   * Whether the query is a search-as-you-type\n   */\n  searchAsYouType: boolean;\n}\n\n/**\n * Argument sent to all handlers bound on {@link QueryEvents.querySuccess}\n */\nexport interface IQuerySuccessEventArgs {\n  /**\n   * The query that was just executed\n   */\n  query: IQuery;\n  /**\n   * The results returned by the query that was executed\n   */\n  results: IQueryResults;\n  /**\n   * The {@link QueryBuilder} that was used for the current query\n   */\n  queryBuilder: QueryBuilder;\n  /**\n   * Whether the query is a search-as-you-type\n   */\n  searchAsYouType: boolean;\n}\n\n/**\n * Argument sent to all handlers bound on {@link QueryEvents.fetchMoreSuccess}\n */\nexport interface IFetchMoreSuccessEventArgs {\n  /**\n   * The query that was just executed\n   */\n  query: IQuery;\n  /**\n   * The results returned by the query that was executed\n   */\n  results: IQueryResults;\n  /**\n   * The {@link QueryBuilder} that was used for the current query\n   */\n  queryBuilder: QueryBuilder;\n  /**\n   * Whether the query is a search-as-you-type\n   */\n  searchAsYouType: boolean;\n}\n\n/**\n * Argument sent to all handlers bound on {@link QueryEvents.queryError}\n */\nexport interface IQueryErrorEventArgs {\n  /**\n   * The {@link QueryBuilder} that was used for the current query\n   */\n  queryBuilder: QueryBuilder;\n  /**\n   * The endpoint on which the error happened.\n   */\n  endpoint: ISearchEndpoint;\n  /**\n   * The query that was just executed\n   */\n  query: IQuery;\n  /**\n   * The error info / message itself.\n   */\n  error: IEndpointError;\n  /**\n   * Whether the query is a search-as-you-type\n   */\n  searchAsYouType: boolean;\n}\n\n/**\n * Argument sent to all handlers bound on {@link QueryEvents.preprocessResults}\n */\nexport interface IPreprocessResultsEventArgs {\n  /**\n   * The {@link QueryBuilder} that was used for the current query\n   */\n  queryBuilder: QueryBuilder;\n  /**\n   * The query that was just executed\n   */\n  query: IQuery;\n  /**\n   * The results returned by the query that was executed\n   */\n  results: IQueryResults;\n  /**\n   * Whether the query is a search-as-you-type\n   */\n  searchAsYouType: boolean;\n}\n\n/**\n * Argument sent to all handlers bound on {@link QueryEvents.preprocessMoreResults}\n */\nexport interface IPreprocessMoreResultsEventArgs {\n  /**\n   * The results returned by the query that was executed\n   */\n  results: IQueryResults;\n}\n\n/**\n * Argument sent to all handlers bound on {@link QueryEvents.noResults}\n */\nexport interface INoResultsEventArgs {\n  /**\n   * The {@link QueryBuilder} that was used for the current query\n   */\n  queryBuilder: QueryBuilder;\n  /**\n   * The query that was just executed\n   */\n  query: IQuery;\n  /**\n   * The results returned by the query that was executed\n   */\n  results: IQueryResults;\n  /**\n   * Whether the query is a search-as-you-type\n   */\n  searchAsYouType: boolean;\n  /**\n   * If set to true by any handler, the last query will automatically be re-executed again.\n   */\n  retryTheQuery: boolean;\n}\n\nexport interface IBuildingCallOptionsEventArgs {\n  options: IEndpointCallOptions;\n}\n\n/**\n * This static class is there to contains the different string definition for all the events related to query.\n *\n * Note that these events will only be triggered when the {@link QueryController.executeQuery} method is used, either directly or by using {@link executeQuery}\n */\nexport class QueryEvents {\n  /**\n   * Triggered when a new query is launched.\n   *\n   * All bound handlers will receive {@link INewQueryEventArgs} as an argument.\n   *\n   * The string value is `newQuery`.\n   * @type {string}\n   */\n  public static newQuery = 'newQuery';\n  /**\n   * Triggered when the query is being built.\n   *\n   * This is typically where all components will contribute their part to the {@link IQuery} using the {@link QueryBuilder}.\n   *\n   * All bound handlers will receive {@link IBuildingQueryEventArgs} as an argument.\n   *\n   * The string value is `buildingQuery`.\n   * @type {string}\n   */\n  public static buildingQuery = 'buildingQuery';\n  /**\n   * Triggered when the query is done being built.\n   *\n   * This is typically where the facet will add it's {@link IGroupByRequest} to the {@link IQuery}.\n   *\n   * All bound handlers will receive {@link IDoneBuildingQueryEventArgs} as an argument.\n   *\n   * The string value is `doneBuildingQuery`.\n   * @type {string}\n   */\n  public static doneBuildingQuery = 'doneBuildingQuery';\n  /**\n   * Triggered when the query is being executed on the Search API.\n   *\n   * All bound handlers will receive {@link IDuringQueryEventArgs} as an argument.\n   *\n   * The string value is `duringQuery`.\n   * @type {string}\n   */\n  public static duringQuery = 'duringQuery';\n  /**\n   * Triggered when more results are being fetched on the Search API (think : infinite scrolling, or pager).\n   *\n   * All bound handlers will receive {@link IDuringQueryEventArgs} as an argument.\n   *\n   * The string value is `duringFetchMoreQuery`.\n   * @type {string}\n   */\n  public static duringFetchMoreQuery = 'duringFetchMoreQuery';\n  /**\n   * Triggered when a query successfully returns from the Search API.\n   *\n   * All bound handlers will receive {@link IQuerySuccessEventArgs} as an argument.\n   *\n   * The string value is `querySuccess`.\n   * @type {string}\n   */\n  public static querySuccess = 'querySuccess';\n  /**\n   * Triggered when a more results were successfully returned from the Search API. (think : infinite scrolling, or pager).\n   *\n   * All bound handlers will receive {@link IFetchMoreSuccessEventArgs} as an argument.\n   *\n   * The string value is `fetchMoreSuccess`.\n   * @type {string}\n   */\n  public static fetchMoreSuccess = 'fetchMoreSuccess';\n  /**\n   * Triggered after the main query success event has finished executing.\n   *\n   * This is typically where facets will process the {@link IGroupByResult} and render themselves.\n   *\n   * All bound handlers will receive {@link IQuerySuccessEventArgs} as an argument.\n   *\n   * The string value is `deferredQuerySuccess`.\n   * @type {string}\n   */\n  public static deferredQuerySuccess = 'deferredQuerySuccess';\n  /**\n   * Triggered when there was an error executing a query on the Search API.\n   *\n   * All bound handlers will receive {@link IQueryErrorEventArgs} as an argument.\n   *\n   * The string value is `queryError`.\n   * @type {string}\n   */\n  public static queryError = 'queryError';\n  /**\n   * Triggered before the {@link QueryEvents.querySuccess} event.\n   *\n   * This allows external code to modify the results before rendering them.\n   *\n   * For example, the {@link Folding} component might use this event to construct a coherent parent child relationship between query results.\n   *\n   * All bound handlers will receive {@link IPreprocessResultsEventArgs} as an argument.\n   *\n   * The string value is `preprocessResults`.\n   * @type {string}\n   */\n  public static preprocessResults = 'preprocessResults';\n  /**\n   * Triggered before the {@link QueryEvents.fetchMoreSuccess} event.\n   *\n   * This allows external code to modify the results before rendering them.\n   *\n   * For example, the {@link Folding} component might use this event to construct a coherent parent child relationship between query results.\n   *\n   * All bound handlers will receive {@link IPreprocessResultsEventArgs} as an argument.\n   *\n   * The string value is `preprocessMoreResults`.\n   * @type {string}\n   */\n  public static preprocessMoreResults = 'preprocessMoreResults';\n  /**\n   * Triggered when there is no result for a particular query.\n   *\n   * All bound handlers will receive {@link INoResultsEventArgs} as an argument.\n   *\n   * The string value is `noResults`.\n   * @type {string}\n   */\n  public static noResults = 'noResults';\n  public static buildingCallOptions = 'buildingCallOptions';\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/events/QueryEvents.ts","declare const require: (svgPath: string) => string;\n\nexport class SVGIcons {\n  public static icons = {\n    search: require(`svg/search`),\n    more: require(`svg/more`),\n    loading: require(`svg/loading`),\n    checkboxHookExclusionMore: require(`svg/checkbox-hook-exclusion-more`),\n    arrowUp: require(`svg/arrow-up`),\n    arrowDown: require(`svg/arrow-down`),\n\n    mainClear: require(`svg/main-clear`),\n    clearSmall: require(`svg/clear-small`),\n    clear: require(`svg/clear`),\n    close: require(`svg/close`),\n    delete: require(`svg/delete`),\n    save: require(`svg/save`),\n    checkYes: require(`svg/check-yes`),\n    orAnd: require(`svg/or-and`),\n    sort: require(`svg/sort`),\n    ascending: require(`svg/ascending`),\n    descending: require(`svg/descending`),\n    dropdownMore: require(`svg/dropdown-more`),\n    dropdownLess: require(`svg/dropdown-less`),\n    facetCollapse: require(`svg/facet-collapse`),\n    facetExpand: require(`svg/facet-expand`),\n\n    dropdownShareQuery: require(`svg/dropdown-share-query`),\n    dropdownPreferences: require(`svg/dropdown-preferences`),\n    dropdownAuthenticate: require(`svg/dropdown-authenticate`),\n    dropdownExport: require(`svg/dropdown-export`),\n    dropdownFollowQuery: require(`svg/dropdown-follow-query`),\n    quickview: require(`svg/quickview`),\n    pagerRightArrow: require(`svg/pager-right-arrow`),\n    pagerLeftArrow: require(`svg/pager-left-arrow`),\n    replies: require(`svg/replies`),\n    video: require(`svg/video`),\n    coveoLogo: require(`svg/coveo-logo`),\n    coveoPoweredBy: require(`svg/coveo-powered-by-logo`),\n    taggingOk: require(`svg/tagging-ok`),\n    edit: require(`svg/edit`),\n    star: require(`svg/star`),\n    listLayout: require(`svg/list-layout`),\n    cardLayout: require(`svg/card-layout`),\n    tableLayout: require(`svg/table-layout`),\n    plus: require(`svg/plus`)\n  };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/SVGIcons.ts","import { Model, IModelSetOptions } from './Model';\nimport { Assert } from '../misc/Assert';\nimport { IStringMap } from '../rest/GenericParam';\nimport * as _ from 'underscore';\nimport { Utils } from '../utils/Utils';\n\nexport const QUERY_STATE_ATTRIBUTES = {\n  Q: 'q',\n  FIRST: 'first',\n  T: 't',\n  TG: 'tg',\n  SORT: 'sort',\n  LAYOUT: 'layout',\n  HD: 'hd',\n  HQ: 'hq',\n  QUICKVIEW: 'quickview',\n  DEBUG: 'debug',\n  NUMBER_OF_RESULTS: 'numberOfResults',\n  MISSING_TERMS: 'missingTerms'\n};\n\nexport interface IQueryStateIncludedAttribute {\n  title: string;\n  included: string[];\n}\n\nexport interface IQueryStateExcludedAttribute {\n  title: string;\n  excluded: string[];\n}\n\n/**\n * The `QueryStateModel` class is a key-value store which contains the current state of the components that can affect\n * the query (see [State](https://docs.coveo.com/en/344/)). This class inherits from the [`Model`](https://coveo.github.io/search-ui/classes/model.html)\n * class. Optionally, it is possible to persist the state in the query string in order to enable browser history\n * management (see the [`HistoryController`]{@link HistoryController} class).\n *\n * Components set values in the `QueryStateModel` instance to reflect their current state. The `QueryStateModel`\n * triggers state events (see [`eventTypes`]{@link Model.eventTypes}) whenever one of its values is modified. Components\n * listen to triggered state events to update themselves when appropriate.\n *\n * For instance, when a query is triggered, the [`Searchbox`]{@link Searchbox} component sets the `q` attribute (the\n * basic query expression), while the [`Pager`]{@link Pager} component sets the `first` attribute (the index of the\n * first result to display in the result list), and so on.\n *\n * **Example:**\n *\n * > The user modifies the content of the `Searchbox` and submits a query. This triggers the following state events:\n * > - `state:change:q` (because the value of `q` has changed).\n * > - `state:change` (because at least one value has changed in the `QueryStateModel`).\n * >\n * > Components or external code can attach handlers to those events:\n * > ```javascript\n * > Coveo.$$(document).on('state:change:q', function() {\n * >   [ ... ]\n * > });\n * > ```\n *\n * **Note:**\n * > Normally, you should interact with the `QueryStateModel` instance using the [`Coveo.state`]{@link state} top-level\n * > function.\n */\nexport class QueryStateModel extends Model {\n  static ID = 'state';\n\n  static defaultAttributes = {\n    q: '',\n    first: 0,\n    fv: '',\n    t: '',\n    hd: '',\n    hq: '',\n    sort: '',\n    layout: 'list',\n    tg: '',\n    quickview: '',\n    debug: false,\n    numberOfResults: 10,\n    missingTerms: []\n  };\n\n  static attributesEnum = {\n    q: 'q',\n    first: 'first',\n    fv: 'fv',\n    t: 't',\n    sort: 'sort',\n    layout: 'layout',\n    hd: 'hd',\n    hq: 'hq',\n    tg: 'tg',\n    quickview: 'quickview',\n    debug: 'debug',\n    numberOfResults: 'numberOfResults',\n    missingTerms: 'missingTerms'\n  };\n\n  static getFacetId(id: string, include: boolean = true) {\n    return 'f:' + id + (include ? '' : ':not');\n  }\n\n  static getFacetOperator(id: string) {\n    return 'f:' + id + ':operator';\n  }\n\n  static getFacetLookupValue(id: string) {\n    return QueryStateModel.getFacetId(id) + ':lookupvalues';\n  }\n\n  /**\n   * Creates a new `QueryStateModel` instance.\n   * @param element The HTMLElement on which to instantiate the `QueryStateModel`.\n   * @param attributes The state key-value store to instantiate the `QueryStateModel` with.\n   */\n  constructor(element: HTMLElement, attributes?: IStringMap<string>) {\n    const merged = { ...QueryStateModel.defaultAttributes, ...attributes };\n    super(element, QueryStateModel.ID, merged);\n  }\n\n  /**\n   * Validates whether at least one facet is currently active (has selected or excluded values) in the interface.\n   *\n   * @returns {boolean} `true` if at least one facet is active; `false` otherwise.\n   */\n  public atLeastOneFacetIsActive() {\n    return !_.isUndefined(\n      _.find(this.attributes, (value, key: string) => {\n        return key.match(/^f:/) && !Utils.arrayEqual(this.getDefault(key), value);\n      })\n    );\n  }\n\n  public set(attribute: string, value: any, options?: IModelSetOptions) {\n    this.validate(attribute, value);\n    super.set(attribute, value, options);\n  }\n\n  private validate(attribute: string, value: any) {\n    if (attribute == QueryStateModel.attributesEnum.first) {\n      Assert.isNumber(value);\n      Assert.isLargerOrEqualsThan(0, value);\n    }\n  }\n}\n\nexport function setState(model: Model, args: any[]): any {\n  Assert.exists(model);\n\n  if (args.length == 0 || args[0] == undefined) {\n    // No args means return the model\n    return model;\n  } else if (args.length == 1 && Utils.isNonEmptyString(args[0])) {\n    // One string arg means retrieve value from model\n    return model.get(args[0]);\n  } else if (_.isObject(args[0])) {\n    // One dictionary means set multiple values\n    let toSet = args[0];\n    let options = _.extend(<IModelSetOptions>{ customAttribute: true }, <IModelSetOptions>args[1]);\n    return model.setMultiple(toSet, options);\n  } else if (args.length > 1) {\n    // Otherwise we're setting a value\n    let name = <string>args[0];\n    let value = args[1];\n    let options = _.extend(<IModelSetOptions>{ customAttribute: true }, <IModelSetOptions>args[2]);\n    Assert.isNonEmptyString(name);\n    return model.set(name, value, options);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/models/QueryStateModel.ts","// Current version.\nexport var VERSION = '1.13.1';\n\n// Establish the root object, `window` (`self`) in the browser, `global`\n// on the server, or `this` in some virtual machines. We use `self`\n// instead of `window` for `WebWorker` support.\nexport var root = typeof self == 'object' && self.self === self && self ||\n          typeof global == 'object' && global.global === global && global ||\n          Function('return this')() ||\n          {};\n\n// Save bytes in the minified (but not gzipped) version:\nexport var ArrayProto = Array.prototype, ObjProto = Object.prototype;\nexport var SymbolProto = typeof Symbol !== 'undefined' ? Symbol.prototype : null;\n\n// Create quick reference variables for speed access to core prototypes.\nexport var push = ArrayProto.push,\n    slice = ArrayProto.slice,\n    toString = ObjProto.toString,\n    hasOwnProperty = ObjProto.hasOwnProperty;\n\n// Modern feature detection.\nexport var supportsArrayBuffer = typeof ArrayBuffer !== 'undefined',\n    supportsDataView = typeof DataView !== 'undefined';\n\n// All **ECMAScript 5+** native function implementations that we hope to use\n// are declared here.\nexport var nativeIsArray = Array.isArray,\n    nativeKeys = Object.keys,\n    nativeCreate = Object.create,\n    nativeIsView = supportsArrayBuffer && ArrayBuffer.isView;\n\n// Create references to these builtin functions because we override them.\nexport var _isNaN = isNaN,\n    _isFinite = isFinite;\n\n// Keys in IE < 9 that won't be iterated by `for key in ...` and thus missed.\nexport var hasEnumBug = !{toString: null}.propertyIsEnumerable('toString');\nexport var nonEnumerableProps = ['valueOf', 'isPrototypeOf', 'toString',\n  'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString'];\n\n// The largest integer that can be represented exactly.\nexport var MAX_ARRAY_INDEX = Math.pow(2, 53) - 1;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/underscore/modules/_setup.js\n// module id = 14\n// module chunks = 88 89","import { Logger } from '../misc/Logger';\nimport { ComponentEvents } from '../ui/Base/Component';\nimport { KEYBOARD, KeyboardUtils } from '../utils/KeyboardUtils';\nimport { $$, Dom } from './Dom';\nimport 'styling/_AccessibleButton';\n\nexport enum ArrowDirection {\n  UP,\n  RIGHT,\n  DOWN,\n  LEFT\n}\n\nexport class AccessibleButton {\n  private element: Dom;\n  private labelOrTitleRequired = true;\n  private label: string;\n  private title: string;\n  private role: string;\n\n  private clickAction: (e: Event) => void;\n  private enterKeyboardAction: (e: Event) => void;\n  private blurAction: (e: Event) => void;\n  private mouseleaveAction: (e: Event) => void;\n  private focusAction: (e: Event) => void;\n  private mouseenterAction: (e: Event) => void;\n  private arrowsAction: (direction: ArrowDirection, e: Event) => void;\n\n  private logger: Logger;\n  private eventOwner: ComponentEvents;\n\n  public constructor() {\n    this.logger = new Logger(this);\n  }\n\n  public withOwner(owner: ComponentEvents) {\n    this.eventOwner = owner;\n    return this;\n  }\n\n  public withElement(element: Dom | HTMLElement) {\n    if (element instanceof HTMLElement) {\n      this.element = $$(element);\n    } else {\n      this.element = element;\n    }\n    return this;\n  }\n\n  public withLabel(label: string) {\n    this.label = label;\n    return this;\n  }\n\n  public withoutLabelOrTitle() {\n    this.labelOrTitleRequired = false;\n    return this;\n  }\n\n  public withTitle(title: string) {\n    this.title = title;\n    return this;\n  }\n\n  public withSelectAction(action: (e: Event) => void) {\n    this.clickAction = action;\n    this.enterKeyboardAction = action;\n    return this;\n  }\n\n  public withClickAction(clickAction: (e: Event) => void) {\n    this.clickAction = clickAction;\n    return this;\n  }\n\n  public withEnterKeyboardAction(enterAction: (e: Event) => void) {\n    this.enterKeyboardAction = enterAction;\n    return this;\n  }\n\n  public withFocusAndMouseEnterAction(action: (e: Event) => void) {\n    this.focusAction = action;\n    this.mouseenterAction = action;\n    return this;\n  }\n\n  public withFocusAction(action: (e: Event) => void) {\n    this.focusAction = action;\n    return this;\n  }\n\n  public withMouseEnterAction(action: (e: Event) => void) {\n    this.mouseenterAction = action;\n    return this;\n  }\n\n  public withBlurAndMouseLeaveAction(action: (e: Event) => void) {\n    this.mouseleaveAction = action;\n    this.blurAction = action;\n    return this;\n  }\n\n  public withMouseLeaveAction(action: (e: Event) => void) {\n    this.mouseleaveAction = action;\n    return this;\n  }\n\n  public withBlurAction(action: (e: Event) => void) {\n    this.blurAction = action;\n    return this;\n  }\n\n  public withArrowsAction(action: (direction: ArrowDirection, e: Event) => void) {\n    this.arrowsAction = action;\n    return this;\n  }\n\n  public withRole(role: string) {\n    this.role = role;\n    return this;\n  }\n\n  public build() {\n    if (!this.element) {\n      this.element = $$('div');\n    }\n\n    this.ensureCorrectRole();\n    this.ensureCorrectLabelOrTitle();\n    this.ensureSelectAction();\n    this.ensureUnselectAction();\n    this.ensureMouseenterAndFocusAction();\n    this.ensureMouseleaveAndBlurAction();\n    this.ensureArrowsAction();\n    this.ensureDifferentiationBetweenKeyboardAndMouseFocus();\n\n    return this;\n  }\n\n  private ensureDifferentiationBetweenKeyboardAndMouseFocus() {\n    const classWhenPressed = 'coveo-accessible-button-pressed';\n    $$(this.element).addClass('coveo-accessible-button');\n\n    $$(this.element).on('mouseup', () => $$(this.element).addClass(classWhenPressed));\n    $$(this.element).on('focus', () => {\n      $$(this.element).removeClass(classWhenPressed);\n    });\n  }\n\n  private ensureCorrectRole() {\n    if (!this.element.getAttribute('role')) {\n      this.element.setAttribute('role', this.role || 'button');\n    }\n  }\n\n  private ensureCorrectLabelOrTitle() {\n    if (!this.labelOrTitleRequired) {\n      return;\n    }\n\n    if (!this.label && !this.title) {\n      this.logger.error(`Missing a label or title to create an accessible button!`);\n      return;\n    }\n\n    if (this.title) {\n      this.element.setAttribute('title', this.title);\n      return;\n    }\n\n    this.element.setAttribute('aria-label', this.label);\n  }\n\n  private ensureTabIndex() {\n    this.element.setAttribute('tabindex', '0');\n  }\n\n  private ensureSelectAction() {\n    if (this.enterKeyboardAction) {\n      this.ensureTabIndex();\n      this.bindEvent(\n        'keyup',\n        KeyboardUtils.keypressAction(KEYBOARD.ENTER, (e: Event) => this.enterKeyboardAction(e))\n      );\n      this.bindEvent(\n        'keydown',\n        KeyboardUtils.keypressAction(KEYBOARD.SPACEBAR, (e: Event) => {\n          if (e.target instanceof HTMLInputElement) {\n            return;\n          }\n          e.preventDefault();\n        })\n      );\n      this.bindEvent(\n        'keyup',\n        KeyboardUtils.keypressAction(KEYBOARD.SPACEBAR, (e: Event) => {\n          if (e.target instanceof HTMLInputElement) {\n            return;\n          }\n          this.enterKeyboardAction(e);\n        })\n      );\n    }\n\n    if (this.clickAction) {\n      this.bindEvent('click', this.clickAction);\n    }\n  }\n\n  private ensureUnselectAction() {\n    if (this.blurAction) {\n      this.bindEvent('blur', this.blurAction);\n    }\n\n    if (this.mouseleaveAction) {\n      this.bindEvent('mouseleave', this.mouseleaveAction);\n    }\n  }\n\n  private ensureMouseenterAndFocusAction() {\n    if (this.mouseenterAction) {\n      this.bindEvent('mouseenter', this.mouseenterAction);\n    }\n    if (this.focusAction) {\n      this.bindEvent('focus', this.focusAction);\n    }\n  }\n\n  private ensureMouseleaveAndBlurAction() {\n    if (this.mouseleaveAction) {\n      this.bindEvent('mouseleave', this.mouseleaveAction);\n    }\n    if (this.blurAction) {\n      this.bindEvent('blur', this.blurAction);\n    }\n  }\n\n  private ensureArrowsAction() {\n    if (this.arrowsAction) {\n      this.bindEvent(\n        'keyup',\n        KeyboardUtils.keypressAction(KEYBOARD.UP_ARROW, (e: Event) => this.arrowsAction(ArrowDirection.UP, e))\n      );\n      this.bindEvent(\n        'keyup',\n        KeyboardUtils.keypressAction(KEYBOARD.RIGHT_ARROW, (e: Event) => this.arrowsAction(ArrowDirection.RIGHT, e))\n      );\n      this.bindEvent(\n        'keyup',\n        KeyboardUtils.keypressAction(KEYBOARD.DOWN_ARROW, (e: Event) => this.arrowsAction(ArrowDirection.DOWN, e))\n      );\n      this.bindEvent(\n        'keyup',\n        KeyboardUtils.keypressAction(KEYBOARD.LEFT_ARROW, (e: Event) => this.arrowsAction(ArrowDirection.LEFT, e))\n      );\n    }\n  }\n\n  private bindEvent(event: string, action: (...args: any[]) => void) {\n    if (this.eventOwner) {\n      this.eventOwner.on(this.element, event, action);\n    } else {\n      $$(this.element).on(event, action);\n    }\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/AccessibleButton.ts","import { IStringMap } from '../rest/GenericParam';\nimport { each } from 'underscore';\n\nexport class SVGDom {\n  public static addClassToSVGInContainer(svgContainer: HTMLElement, classToAdd: string) {\n    const svgElement = svgContainer.querySelector('svg');\n    svgElement.setAttribute('class', `${SVGDom.getClass(svgElement)}${classToAdd}`);\n  }\n\n  public static removeClassFromSVGInContainer(svgContainer: HTMLElement, classToRemove: string) {\n    const svgElement = svgContainer.querySelector('svg');\n    svgElement.setAttribute('class', SVGDom.getClass(svgElement).replace(classToRemove, ''));\n  }\n\n  public static addStyleToSVGInContainer(svgContainer: HTMLElement, styleToAdd: IStringMap<any>) {\n    const svgElement = svgContainer.querySelector('svg');\n    each(styleToAdd, (styleValue, styleKey) => {\n      svgElement.style[styleKey] = styleValue;\n    });\n  }\n\n  public static addAttributesToSVGInContainer(svgContainer: HTMLElement, attributesToAdd: IStringMap<string>) {\n    const svgElement = svgContainer.querySelector('svg');\n    each(attributesToAdd, (attributeValue, attributeKey) => {\n      svgElement.setAttribute(attributeKey, attributeValue);\n    });\n  }\n\n  private static getClass(svgElement: SVGElement) {\n    const className = svgElement.getAttribute('class');\n    return className ? className + ' ' : '';\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/SVGDom.ts","/**\n * Argument sent to all handlers bound on {@link InitializationEvents.afterComponentsInitialization}, and {@link InitializationEvents.afterInitialization}.\n */\nexport interface IInitializationEventArgs {\n  defer: Promise<any>[];\n}\n\n/**\n * This static class is there to contain the different string definitions for all the events related to initialization.\n *\n * Note that these events will only be triggered when the {@link init} function is called.\n *\n * This means these events are normally called only once when the search interface is initialized.\n */\nexport class InitializationEvents {\n  /**\n   * This event is triggered right before each components inside the search interface get initialized (eg: Before the constructor of each component is executed).\n   *\n   * The string value is `beforeInitialization`.\n   * @type {string}\n   */\n  public static beforeInitialization = 'beforeInitialization';\n  /**\n   * Triggered after the components are initialized (eg: After the constructor of each component is executed)\n   * but before their state is set from the hash portion of the URL (e.g., `http://mysearchinterface#q=myQuery`).\n   *\n   * This is also before the first query is launched (if the {@link SearchInterface.options.autoTriggerQuery} is `true`).\n   *\n   * The string value is `afterComponentsInitialization`.\n   * @type {string}\n   */\n  public static afterComponentsInitialization = 'afterComponentsInitialization';\n  /**\n   * Triggered right before the state from the URL (e.g., `http://mysearchinterface#q=myQuery`) gets applied in the interface.\n   *\n   * This will typically only be useful if the {@link SearchInterface.options.enableHistory} is set to `true`.\n   *\n   * The string value is `restoreHistoryState`.\n   * @type {string}\n   */\n  public static restoreHistoryState = 'restoreHistoryState';\n  /**\n   * Triggered right after the UI is fully initialized.\n   *\n   * Concretely this means that the constructor of each component has been executed, and that the state coming for the URL (e.g., `http://mysearchinterface#q=myquery`) has been applied.\n   *\n   * It is triggered *before* the first query is launched, and if the {@link SearchInterface.options.autoTriggerQuery} is `true`.\n   *\n   * The string value is `afterInitialization`.\n   * @type {string}\n   */\n  public static afterInitialization = 'afterInitialization';\n  /**\n   * This is triggered when the UI needs to be dynamically removed so that components can unbind any internal handlers they might have set globally on the window or the document.\n   *\n   * After this event has been executed, the search interface can be dynamically removed and all handlers can be considered cleanly removed.\n   *\n   * The string value is `nuke`.\n   * @type {string}\n   */\n  public static nuke = 'nuke';\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/events/InitializationEvents.ts","import { $$ } from '../utils/Dom';\nimport { Assert } from '../misc/Assert';\nimport { Utils } from '../utils/Utils';\nimport { BaseComponent } from '../ui/Base/BaseComponent';\nimport * as _ from 'underscore';\nimport { IStringMap } from '../rest/GenericParam';\n\nexport const MODEL_EVENTS = {\n  PREPROCESS: 'preprocess',\n  CHANGE_ONE: 'change:',\n  CHANGE: 'change',\n  RESET: 'reset',\n  ALL: 'all'\n};\n\nexport interface IModelSetOptions {\n  silent?: boolean;\n  customAttribute?: boolean;\n  validateType?: boolean;\n}\n\nexport interface IAttributeChangedEventArg {\n  attribute: string;\n  value: any;\n}\n\nexport interface IAttributesChangedEventArg {\n  attributes: {};\n}\n\nexport interface IModelChangedEventArg {\n  model: Model;\n}\n\n/**\n * A *model* is a key-value store that triggers various JavaScript events when any value associated to one of its key changes.<br/>\n * This class is meant to be extended, one of the most important extension being the {@link QueryStateModel} class.<br/>\n * Components set values in this key-value store and listen to triggered events in order to update themselves accordingly.<br/>\n */\nexport class Model extends BaseComponent {\n  /**\n   * The attributes contained in this model.</br>\n   * Normally, you should not set attributes directly on this property, as this would prevent required events from being triggered.\n   */\n  public attributes: IStringMap<any>;\n  public defaultAttributes: IStringMap<any>;\n  private eventNameSpace;\n\n  /**\n   * The event types that can be triggered:<br/>\n   * • `preprocess`: triggered before a value is set on an attribute. This allows the value to be modified before it is set.<br/>\n   * • `changeOne`: triggered when a single value changes.</br>\n   * • `change`: triggered when one or many values change.</br>\n   * • `reset`: triggered when all attributes are reset to their default values. </br>\n   * • `all`: triggered after the `change` event.</br>\n   * @type {{preprocess: string, changeOne: string, change: string, reset: string, all: string}}\n   */\n  public static eventTypes = {\n    preprocess: 'preprocess',\n    changeOne: 'change:',\n    change: 'change',\n    reset: 'reset',\n    all: 'all'\n  };\n\n  constructor(element: HTMLElement, id: string, attributes: { [key: string]: any }) {\n    super(element, id);\n    this.eventNameSpace = id;\n\n    this.defaultAttributes = Utils.extendDeep(this.defaultAttributes, attributes);\n    this.attributes = attributes;\n    this.logger.debug('Creating model');\n  }\n\n  /**\n   * Sets the value of a single specific attribute.</br>\n   * Note: this method calls the `setMultiple` method.\n   * @param attribute\n   * the specific attribute whose value is to be set.\n   * @param value\n   * the value to set the attribute to.\n   * @param options\n   * the options (see {@link setMultiple}).\n   */\n  public set(attribute: string, value: any, options?: IModelSetOptions) {\n    const toSet: { [key: string]: any } = {};\n    toSet[attribute] = value;\n    this.setMultiple(toSet, options);\n  }\n\n  /**\n   * Gets an object containing all *active* registered attribute key-values.</br>\n   * An attribute is considered active when its value is not in its default state.\n   * @returns {{object}}\n   */\n  public getAttributes() {\n    const attributes: { [key: string]: any } = {};\n    _.each(this.attributes, (attribute, key) => {\n      if (_.isObject(attribute)) {\n        if (!Utils.objectEqual(attribute, this.defaultAttributes[key])) {\n          attributes[key] = Utils.extendDeep({}, attribute);\n        }\n      } else if (attribute != this.defaultAttributes[key]) {\n        attributes[key] = attribute;\n      }\n    });\n    return attributes;\n  }\n\n  /**\n   * Sets the values of one or many attributes.</br>\n   * This method may trigger the following events (in order):</br>\n   * • `preprocess`</br>\n   * • `changeOne`</br>\n   * • `change`</br>\n   * • `all`\n   * @param toSet\n   * the key-value list of attributes with their new intended values.\n   * @param options\n   * if the `customAttribute` option is set to `true`, the method will not validate whether an attribute is registered or not.</br>\n   * If the `validateType` option is set to `true`, the method will ensure that each value type is correct.</br>\n   * If the `silent` option is set to `true`, then the `changeOne`, `change` and `all` events will not be triggered.\n   */\n  public setMultiple(toSet: { [key: string]: any }, options?: IModelSetOptions) {\n    let anythingChanged = false;\n    this.preprocessEvent(toSet);\n    _.each(<_.Dictionary<any>>toSet, (value, attribute?) => {\n      if (!options || !options.customAttribute) {\n        this.checkIfAttributeExists(attribute);\n      }\n      value = this.parseToCorrectType(attribute, value);\n      if (!options || options.validateType) {\n        if (!this.typeIsValid(attribute, value)) {\n          return;\n        }\n      }\n      if (this.checkIfAttributeChanged(attribute, value)) {\n        this.attributes[attribute] = value;\n        anythingChanged = true;\n        if (options == null || !options.silent) {\n          this.attributeHasChangedEvent(attribute);\n        }\n      }\n    });\n    if (anythingChanged && (options == null || !options.silent)) {\n      this.attributesHasChangedEvent();\n      this.anyEvent();\n    }\n  }\n\n  /**\n   * Sets a new default value to a single specific attribute.</br>\n   * Note: specifying a new attribute default value does not set the attribute to that value. This can be done using the {@link setDefault} method.\n   * @param attribute\n   * the specific attribute whose default value is to be changed.\n   * @param value\n   * the new intended default value.\n   * @param options\n   * if the `customAttribute` option is set to `true`, the method will not validate whether the attribute is registered or not.\n   */\n  public setNewDefault(attribute: string, value: any, options?: IModelSetOptions) {\n    if (!options || !options.customAttribute) {\n      this.checkIfAttributeExists(attribute);\n    }\n    this.defaultAttributes[attribute] = value;\n  }\n\n  /**\n   * Sets a single specific attribute to its default value.</br>\n   * Note: this method calls the {@link setMultiple} method without specifying any option.\n   * @param attribute\n   * the specific attribute whose value is to be set to its default value.\n   */\n  public setDefault(attribute: string) {\n    this.set(attribute, this.defaultAttributes[attribute]);\n  }\n\n  /**\n   * Gets the value of a single specific attribute.</br>\n   * If no attribute is specified, the method instead returns an object containing all registered attribute key-values.\n   * @param attribute\n   * the specific attribute whose value should be returned.\n   * @returns {any}\n   */\n  public get(attribute?: string): any {\n    if (attribute == undefined) {\n      return this.attributes;\n    } else {\n      return this.attributes[attribute];\n    }\n  }\n\n  /**\n   * Gets the default value of a single specific attribute.</br>\n   * If no attribute is specified, the method instead returns an object containing all registered attribute key-default values.\n   * @param attribute\n   * the specific attribute whose default value should be returned.\n   * @returns {any}\n   */\n  public getDefault(attribute?: string): any {\n    if (attribute == undefined) {\n      return this.defaultAttributes;\n    } else {\n      return this.defaultAttributes[attribute];\n    }\n  }\n\n  /**\n   * Resets each registered attribute to its default value.</br>\n   * Note: this method calls the {@link setMultiple} method without specifying any options.</br>\n   * After the `setMultiple` call has returned, this method triggers the `reset` event.\n   */\n  public reset() {\n    this.setMultiple(this.defaultAttributes);\n    this.modelWasResetEvent();\n  }\n\n  /**\n   * Registers a new attribute key-value.\n   * @param attribute\n   * the name of the new attribute to register.\n   * @param defaultValue\n   * the newly registered attribute default value.\n   */\n  public registerNewAttribute(attribute: string, defaultValue: any) {\n    this.defaultAttributes[attribute] = defaultValue;\n    this.attributes[attribute] = defaultValue;\n  }\n\n  /**\n   * Gets a string displaying the event namespace followed by the specific event name. The returned string is formatted thus:</br>\n   * `[eventNameSpace]:[eventName]`\n   * @example `getEventName(\"reset\");` could return `\"state:reset\"`.\n   * @param event\n   * the event name.\n   * @returns {string}\n   */\n  public getEventName(event: string) {\n    return this.eventNameSpace + ':' + event;\n  }\n\n  private attributesHasChangedEvent() {\n    $$(this.element).trigger(this.getEventName(Model.eventTypes.change), this.createAttributesChangedArgument());\n  }\n\n  private attributeHasChangedEvent(attr: string) {\n    $$(this.element).trigger(this.getEventName(Model.eventTypes.changeOne) + attr, this.createAttributeChangedArgument(attr));\n  }\n\n  private preprocessEvent(attributes: { [key: string]: any }) {\n    $$(this.element).trigger(this.getEventName(Model.eventTypes.preprocess), attributes);\n  }\n\n  private modelWasResetEvent() {\n    $$(this.element).trigger(this.getEventName(Model.eventTypes.reset), this.createModelChangedArgument());\n  }\n\n  private anyEvent() {\n    $$(this.element).trigger(this.getEventName(Model.eventTypes.all), this.createModelChangedArgument());\n  }\n\n  private createAttributeChangedArgument(attribute: string): IAttributeChangedEventArg {\n    return { attribute: attribute, value: this.attributes[attribute] };\n  }\n\n  private createAttributesChangedArgument(): IAttributesChangedEventArg {\n    return { attributes: this.attributes };\n  }\n\n  private createModelChangedArgument(): IModelChangedEventArg {\n    return { model: this };\n  }\n\n  private checkIfAttributeExists(attribute: string) {\n    Assert.check(_.has(this.attributes, attribute), `The attribute ${attribute} is not registered.`);\n  }\n\n  private typeIsValid(attribute: string, value: any): boolean {\n    if (!Utils.isNullOrUndefined(this.attributes[attribute]) && !Utils.isUndefined(value)) {\n      if (_.isNumber(this.attributes[attribute])) {\n        return this.validateNumber(attribute, value);\n      } else if (_.isBoolean(this.attributes[attribute])) {\n        return this.validateBoolean(attribute, value);\n      } else {\n        return this.validateOther(attribute, value);\n      }\n    }\n    return true;\n  }\n\n  private validateNumber(attribute: string, value: any): boolean {\n    if (!_.isNumber(value) || isNaN(value)) {\n      this.logger.error(`Non-matching type for ${attribute}. Expected number and got ${value}`);\n      return false;\n    }\n    return true;\n  }\n\n  private validateBoolean(attribute: string, value: any) {\n    if (!_.isBoolean(value) && !Utils.parseBooleanIfNotUndefined(value) !== undefined) {\n      this.logger.error(`Non matching type for ${attribute}. Expected boolean and got ${value}`);\n      return false;\n    }\n    return true;\n  }\n\n  private validateOther(attribute: string, value: any) {\n    if (!Utils.isNullOrUndefined(this.defaultAttributes[attribute])) {\n      const valueType = typeof value;\n      const attributeType = typeof this.defaultAttributes[attribute];\n\n      if (valueType !== attributeType) {\n        this.logger.error(`Non-matching type for ${attribute}. Expected ${attributeType} and got ${valueType}`);\n        return false;\n      }\n    }\n    return true;\n  }\n\n  private parseToCorrectType(attribute: string, value: any): any {\n    if (_.isNumber(this.attributes[attribute])) {\n      return parseInt(value, 10);\n    } else if (_.isBoolean(this.attributes[attribute])) {\n      if (_.isBoolean(value)) {\n        return value;\n      } else {\n        return Utils.parseBooleanIfNotUndefined(value);\n      }\n    }\n    return value;\n  }\n\n  private checkIfAttributeChanged(attribute: string, newValue: any): boolean {\n    let oldValue = this.attributes[attribute];\n    if (_.isNumber(oldValue) || _.isString(oldValue) || _.isBoolean(oldValue)) {\n      return oldValue !== newValue;\n    }\n    if (_.isArray(oldValue)) {\n      return !Utils.arrayEqual(oldValue, newValue);\n    }\n    if (_.isObject(oldValue)) {\n      return !Utils.objectEqual(oldValue, newValue);\n    }\n    return true;\n  }\n\n  public debugInfo() {\n    return null;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/models/Model.ts","import * as jstz from 'jstimezonedetect';\nimport 'styling/Globals';\nimport 'styling/_SearchButton';\nimport 'styling/_SearchInterface';\nimport 'styling/_SearchModalBox';\nimport { any, chain, each, find, first, indexOf, isEmpty, partition, tail } from 'underscore';\nimport { HistoryController } from '../../controllers/HistoryController';\nimport { IHistoryManager } from '../../controllers/HistoryManager';\nimport { LocalStorageHistoryController } from '../../controllers/LocalStorageHistoryController';\nimport { NoopHistoryController } from '../../controllers/NoopHistoryController';\nimport { QueryController } from '../../controllers/QueryController';\nimport { InitializationEvents } from '../../events/InitializationEvents';\nimport {\n  IBuildingQueryEventArgs,\n  IDoneBuildingQueryEventArgs,\n  INewQueryEventArgs,\n  IQueryErrorEventArgs,\n  IQuerySuccessEventArgs,\n  QueryEvents\n} from '../../events/QueryEvents';\nimport { IBeforeRedirectEventArgs, StandaloneSearchInterfaceEvents } from '../../events/StandaloneSearchInterfaceEvents';\nimport { Assert } from '../../misc/Assert';\nimport { ComponentOptionsModel } from '../../models/ComponentOptionsModel';\nimport { ComponentStateModel } from '../../models/ComponentStateModel';\nimport { IAttributeChangedEventArg, Model } from '../../models/Model';\nimport { QueryStateModel, QUERY_STATE_ATTRIBUTES } from '../../models/QueryStateModel';\nimport { SearchEndpoint } from '../../rest/SearchEndpoint';\nimport { $$ } from '../../utils/Dom';\nimport { HashUtils } from '../../utils/HashUtils';\nimport { Utils } from '../../utils/Utils';\nimport { analyticsActionCauseList, IAnalyticsTriggerRedirect } from '../Analytics/AnalyticsActionListMeta';\nimport { IAnalyticsClient } from '../Analytics/AnalyticsClient';\nimport { NoopAnalyticsClient } from '../Analytics/NoopAnalyticsClient';\nimport { AriaLive, IAriaLive } from '../AriaLive/AriaLive';\nimport { BaseComponent } from '../Base/BaseComponent';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { IFieldOption, IQueryExpression } from '../Base/IComponentOptions';\nimport { InitializationPlaceholder } from '../Base/InitializationPlaceholder';\nimport { RootComponent } from '../Base/RootComponent';\nimport { Debug } from '../Debug/Debug';\nimport { MissingTermManager } from '../MissingTerm/MissingTermManager';\nimport { OmniboxAnalytics } from '../Omnibox/OmniboxAnalytics';\nimport { Context, IPipelineContextProvider } from '../PipelineContext/PipelineGlobalExports';\nimport {\n  MEDIUM_SCREEN_WIDTH,\n  ResponsiveComponents,\n  SMALL_SCREEN_WIDTH,\n  ValidResponsiveMode\n} from '../ResponsiveComponents/ResponsiveComponents';\nimport { FacetColumnAutoLayoutAdjustment } from './FacetColumnAutoLayoutAdjustment';\nimport { FacetValueStateHandler } from './FacetValueStateHandler';\nimport RelevanceInspectorModule = require('../RelevanceInspector/RelevanceInspector');\nimport FacetsMobileModeModule = require('../FacetsMobileMode/FacetsMobileMode');\nimport { ComponentsTypes } from '../../utils/ComponentsTypes';\nimport { ScrollRestorer } from './ScrollRestorer';\n\nexport interface ISearchInterfaceOptions {\n  enableHistory?: boolean;\n  enableAutomaticResponsiveMode?: boolean;\n  useLocalStorageForHistory?: boolean;\n  resultsPerPage?: number;\n  excerptLength?: number;\n  expression?: IQueryExpression;\n  filterField?: IFieldOption;\n  autoTriggerQuery?: boolean;\n  timezone?: string;\n  enableDebugInfo?: boolean;\n  enableCollaborativeRating?: boolean;\n  enableDuplicateFiltering?: boolean;\n  hideUntilFirstQuery?: boolean;\n  firstLoadingAnimation?: any;\n  pipeline?: string;\n  maximumAge?: number;\n  searchPageUri?: string;\n  initOptions?: any;\n  endpoint?: SearchEndpoint;\n  originalOptionsObject?: any;\n  allowQueriesWithoutKeywords?: boolean;\n  responsiveMediumBreakpoint?: number;\n  responsiveSmallBreakpoint?: number;\n  responsiveMode?: ValidResponsiveMode;\n  enableScrollRestoration?: boolean;\n  modalContainer?: HTMLElement;\n}\n\nexport interface IMissingTermManagerArgs {\n  element: HTMLElement;\n  queryStateModel: QueryStateModel;\n  queryController: QueryController;\n  usageAnalytics: IAnalyticsClient;\n}\n\n/**\n * The SearchInterface component is the root and main component of your Coveo search interface. You should place all\n * other Coveo components inside the SearchInterface component.\n *\n * It is also on the HTMLElement of the SearchInterface component that you call the {@link init} function.\n *\n * It is advisable to specify a unique HTML `id` attribute for the SearchInterface component in order to be able to\n * reference it easily.\n *\n * **Example:**\n *\n * ```html\n * <head>\n *\n * [ ... ]\n *\n * <script>\n *   document.addEventListener('DOMContentLoaded', function() {\n *\n *     [ ... ]\n *     // The init function is called on the SearchInterface element, in this case, the body of the page.\n *     Coveo.init(document.body);\n *\n *     [ ... ]\n *\n *     });\n * </script>\n *\n * [ ... ]\n * </head>\n *\n * <!-- Specifying a unique HTML id attribute for the SearchInterface component is good practice. -->\n * <body id='search' class='CoveoSearchInterface' [ ... other options ... ]>\n *\n *   [ ... ]\n *\n *   <!-- You should place all other Coveo components here, inside the SearchInterface component. -->\n *\n *   [ ... ]\n *\n * </body>\n * ```\n */\nexport class SearchInterface extends RootComponent implements IComponentBindings {\n  static ID = 'SearchInterface';\n\n  /**\n   * The options for the search interface\n   * @componentOptions\n   */\n  static options: ISearchInterfaceOptions = {\n    /**\n     * Whether to allow the end user to navigate search history using the **Back** and **Forward** buttons\n     * of the browser.\n     *\n     * If this option is set to `true`, the state of the current query will be saved in the hash portion\n     * of the URL when the user submits the query.\n     *\n     * **Example:**\n     * > If the `enableHistory` option is `true` and the current query is `foobar`, the SearchInterface component\n     * > saves `q=foobar` in the URL hash when the user submits the query.\n     *\n     * **Note:** Avoid setting this option to `true` on a search interface that relates to a Coveo for Salesforce Full Search or Insight Panel component, otherwise the component won't initialize correctly.\n     */\n    enableHistory: ComponentOptions.buildBooleanOption({ defaultValue: false }),\n\n    /**\n     * Specifies whether to enable automatic responsive mode (i.e., automatically placing {@link Facet} and {@link Tab}\n     * components in dropdown menus under the search box when the width of the SearchInterface HTML element reaches or\n     * falls behind a certain pixel threshold).\n     *\n     * You might want to set this option to `false` if automatic responsive mode does not suit the specific design needs\n     * of your implementation.\n     *\n     * **Note:**\n     *\n     * > If this option is `true`, you can also specify whether to enable responsive mode for Facet components (see\n     * > {@link Facet.options.enableResponsiveMode}) and for Tab components (see\n     * > {@link Tab.options.enableResponsiveMode}).\n     * >\n     * > In addition, you can specify the label you wish to display on the dropdown buttons (see\n     * > {@link Facet.options.dropdownHeaderLabel} and {@link Tab.options.dropdownHeaderLabel}).\n     *\n     * Default value is `true`.\n     */\n    enableAutomaticResponsiveMode: ComponentOptions.buildBooleanOption({ defaultValue: true }),\n\n    /**\n     * Specifies whether to save the interface state in the local storage of the browser.\n     *\n     * You might want to set this option to `true` for reasons specifically important for your implementation.\n     *\n     * Default value is `false`.\n     */\n    useLocalStorageForHistory: ComponentOptions.buildBooleanOption({ defaultValue: false }),\n\n    /**\n     * Specifies the number of results to display on each page.\n     *\n     * For more advanced features, see the {@link ResultsPerPage} component.\n     *\n     * **Note:**\n     *\n     * > When the {@link ResultsPerPage} component is present in the page, this option gets overridden and is useless.\n     *\n     * Default value is `10`. Minimum value is `0`.\n     */\n    resultsPerPage: ComponentOptions.buildNumberOption({ defaultValue: 10, min: 0 }),\n\n    /**\n     * Specifies the number of characters to get at query time to create an excerpt of the result.\n     *\n     * This setting is global and cannot be modified on a per-result basis.\n     *\n     * See also the {@link Excerpt} component.\n     *\n     * Default value is `200`. Minimum value is `0`.\n     */\n    excerptLength: ComponentOptions.buildNumberOption({ defaultValue: 200, min: 0 }),\n\n    /**\n     * Specifies an expression to add to each query.\n     *\n     * You might want to use this options to add a global filter to your entire search interface that applies for all\n     * tabs.\n     *\n     * You should not use this option to address security concerns (it is JavaScript, after all).\n     *\n     * **Note:**\n     *\n     * > It also is possible to set this option separately for each {@link Tab} component\n     * > (see {@link Tab.options.expression}).\n     *\n     * Default value is `''`.\n     */\n    expression: ComponentOptions.buildQueryExpressionOption({ defaultValue: '' }),\n\n    /**\n     * Specifies the name of a field to use as a custom filter when executing the query (also referred to as\n     * \"folding\").\n     *\n     * Setting a value for this option causes the index to return only one result having any particular value inside the\n     * filter field. Any other matching result is \"folded\" inside the childResults member of each JSON query result.\n     *\n     * This feature is typically useful with threaded conversations to include only one top-level result per\n     * conversation. Thus, the field you specify for this option will typically be value unique to each thread that is\n     * shared by all items (e.g., posts, emails, etc) in the thread.\n     *\n     * For more advanced features, see the {@link Folding} component.\n     *\n     * Default value is the empty string (`''`).\n     */\n    filterField: ComponentOptions.buildFieldOption({ defaultValue: '' }),\n\n    /**\n     * Specifies whether to display a loading animation before the first query successfully returns.\n     *\n     * **Note:**\n     *\n     * > If you do not set this options to `false`, the loading animation will still run until the first query\n     * > successfully returns even if the [autoTriggerQuery]{@link SearchInterface.options.autoTriggerQuery} option is\n     * `false`.\n     *\n     * See also the [firstLoadingAnimation]{@link SearchInterface.options.firstLoadingAnimation} option.\n     *\n     * Default value is `true`.\n     *\n     * @deprecated This option is exposed for legacy reasons. Since the\n     * [July 2017 Release (v2.2900.23)](https://docs.coveo.com/en/432/), the loading animation is composed of\n     * placeholders, making this option is obsolete.\n     */\n    hideUntilFirstQuery: ComponentOptions.buildBooleanOption({\n      deprecated: 'Exposed for legacy reasons. The loading animation is now composed of placeholders, and this option is obsolete.'\n    }),\n\n    /**\n     * Specifies the animation that you wish to display while your interface is loading.\n     *\n     * You can either specify the CSS selector of an HTML element that matches the default CSS class\n     * (`coveo-first-loading-animation`), or add `-selector` to the markup attribute of this option to specify the CSS\n     * selector of an HTML element that matches any CSS class.\n     *\n     * See also the [hideUntilFirstQuery]{@link SearchInterface.options.hideUntilFirstQuery} option.\n     *\n     * **Examples:**\n     *\n     * In this first case, the SearchInterface uses the HTML element whose `id` attribute is `MyAnimation` as the\n     * loading animation only if the `class` attribute of this element also matches `coveo-first-loading-animation`.\n     * Default loading animation CSS, which you can customize as you see fit, applies to this HTML element.\n     * ```html\n     * <div class='CoveoSearchInterface' data-first-loading-animation='#MyAnimation'>\n     *   <div id='MyAnimation' class='coveo-first-loading-animation'>\n     *     <!-- ... -->\n     *   </div>\n     *   <!-- ... -->\n     * </div>\n     * ```\n     *\n     * In this second case, the SearchInterface uses the HTML element whose `id` attribute is `MyAnimation` as the\n     * loading animation no matter what CSS class it matches. However, if the `class` attribute of the HTML element does\n     * not match `coveo-first-loading-animation`, no default loading animation CSS applies to this HTML element.\n     * Normally, you should only use `data-first-loading-animation-selector` if you want to completely override the\n     * default loading animation CSS.\n     * ```html\n     * <div class='CoveoSearchInterface' data-first-loading-animation-selector='#MyAnimation'>\n     *   <div id='MyAnimation' class='my-custom-loading-animation-class'>\n     *     <!-- ... -->\n     *   </div>\n     *   <!-- ... -->\n     * </div>\n     * ```\n     *\n     * By default, the loading animation is a Coveo CSS animation (which you can customize with CSS).\n     *\n     * @deprecated This option is exposed for legacy reasons. Since the\n     * [July 2017 Release (v2.2900.23)](https://docs.coveo.com/en/432/), the loading animation is composed of\n     * placeholders, making this option is obsolete.\n     */\n    firstLoadingAnimation: ComponentOptions.buildChildHtmlElementOption({\n      deprecated: 'Exposed for legacy reasons. The loading animation is now composed of placeholder, and this options is obsolete.'\n    }),\n\n    /**\n     * Specifies whether to trigger the first query automatically when the page finishes loading.\n     *\n     * Default value is `true`.\n     */\n    autoTriggerQuery: ComponentOptions.buildBooleanOption({ defaultValue: true }),\n    /**\n     * Specifies if the search interface should perform queries when no keywords are entered by the end user.\n     *\n     * When this option is set to true, the interface will initially only load with the search box, as long as you have a search box component in your interface.\n     *\n     * Once the user submits a query, the full search interface loads to display the results.\n     *\n     * When using the Coveo for Salesforce Free edition, this option is automatically set to false, and should not be changed.\n     *\n     * This option interacts closely with the {@link SearchInterface.options.autoTriggerQuery} option, as the automatic query is not triggered when there are no keywords.\n     *\n     * It also modifies the {@link IQuery.allowQueriesWithoutKeywords} query parameter.\n     *\n     * Default value is `true`, except in Coveo for Salesforce Free edition in which it is `false`.\n     */\n    allowQueriesWithoutKeywords: ComponentOptions.buildBooleanOption({ defaultValue: true }),\n    endpoint: ComponentOptions.buildCustomOption(\n      endpoint => (endpoint != null && endpoint in SearchEndpoint.endpoints ? SearchEndpoint.endpoints[endpoint] : null),\n      { defaultFunction: () => SearchEndpoint.endpoints['default'] }\n    ),\n\n    /**\n     * Specifies the timezone in which the search interface is loaded. This allows the index to recognize some special\n     * query syntax.\n     *\n     * This option must have a valid IANA zone info key (AKA the Olson time zone database) as its value.\n     *\n     * **Example:** `America/New_York`.\n     *\n     * By default, the search interface allows a library to try to detect the timezone automatically.\n     */\n    timezone: ComponentOptions.buildStringOption({ defaultFunction: () => jstz.determine().name() }),\n    /**\n     * Specifies whether to enable the feature that allows the end user to ALT + double click any result to open a debug\n     * page with detailed information about all properties and fields for that result.\n     *\n     * Enabling this feature causes no security concern; the entire debug information is always visible to the end user\n     * through the browser developer console or by calling the Coveo API directly.\n     *\n     * Default value is `true`.\n     */\n    enableDebugInfo: ComponentOptions.buildBooleanOption({ defaultValue: true }),\n\n    /**\n     * **Note:**\n     *\n     * > The Coveo Cloud V2 platform does not support collaborative rating. Therefore, this option is obsolete in Coveo Cloud V2.\n     *\n     * Specifies whether to enable collaborative rating, which you can leverage using the\n     * [`ResultRating`]{@link ResultRating} component.\n     *\n     * Setting this option to `true` has no effect unless collaborative rating is also enabled on your Coveo index.\n     *\n     * Default value is `false`.\n     */\n    enableCollaborativeRating: ComponentOptions.buildBooleanOption({ defaultValue: false }),\n\n    /**\n     * Whether to filter out duplicates, so that items resembling one another only appear once in the query results.\n     *\n     * **Notes:**\n     * - Two items must be at least 85% similar to one another to be considered duplicates.\n     * - When a pair of duplicates is found, only the higher-ranked item of the two is kept in the result set.\n     * - Enabling this feature can make the total result count less precise, as only the requested page of query results is submitted to duplicate filtering.\n     * - This option can also be explicitly set on the [`Tab`]{@link Tab} component. When this is the case, the `Tab` configuration prevails.\n     */\n    enableDuplicateFiltering: ComponentOptions.buildBooleanOption({ defaultValue: false }),\n\n    /**\n     * Specifies the name of the query pipeline to use for the queries.\n     *\n     * You can specify a value for this option if your index is in a Coveo Cloud organization in which pipelines have\n     * been created (see [Adding and Managing Query Pipelines](https://docs.coveo.com/en/1791/)).\n     *\n     * **Note:**\n     *\n     * > It also is possible to set this option separately for each {@link Tab} component\n     * > (see {@link Tab.options.pipeline}).\n     *\n     * Default value is `undefined`, which means that the search interface uses the default pipeline.\n     */\n    pipeline: ComponentOptions.buildStringOption(),\n\n    /**\n     * Specifies the maximum age (in milliseconds) that cached query results can have to still be usable as results\n     * instead of performing a new query on the index. The cache is located in the Coveo Search API (which resides\n     * between the index and the search interface).\n     *\n     * If cached results that are older than the age you specify in this option are available, the framework will not\n     * use these results; it will rather perform a new query on the index.\n     *\n     * On high-volume public web sites, specifying a higher value for this option can greatly improve query response\n     * time at the cost of result freshness.\n     *\n     * **Note:**\n     *\n     * > It also is possible to set this option separately for each {@link Tab} component\n     * > (see {@link Tab.options.maximumAge}).\n     *\n     * Default value is `undefined`, which means that the search interface lets the Coveo Search API determine the\n     * maximum cache age. This is typically equivalent to 30 minutes (see\n     * [maximumAge](https://docs.coveo.com/en/1461/#RestQueryParameters-maximumAge)).\n     */\n    maximumAge: ComponentOptions.buildNumberOption(),\n    /**\n     * Specifies the search page you wish to navigate to when instantiating a standalone search box interface.\n     *\n     * Default value is `undefined`, which means that the search interface does not redirect.\n     */\n    searchPageUri: ComponentOptions.buildStringOption(),\n    /**\n     * Specifies the search interface width that should be considered \"medium\" size, in pixels.\n     *\n     * When the width of the window/device that displays the search page reaches or falls short of this threshold (but still exceeds the [responsiveSmallBreakpoint]{@link SearchInterface.options.responsiveSmallBreakpoint} value), the search page layout will change so that, for instance, facets within the element that has the coveo-facet-column class will be accessible from a dropdown menu on top of the result list rather than being fully rendered next to the result list.\n     *\n     * This option is only taken into account when [enableAutomaticResponsiveMode]{@link SearchInterface.options.enableAutomaticResponsiveMode} is set to true.\n     *\n     * Default value is `800`.\n     */\n    responsiveMediumBreakpoint: ComponentOptions.buildNumberOption({\n      defaultValue: MEDIUM_SCREEN_WIDTH,\n      depend: 'enableAutomaticResponsiveMode'\n    }),\n    /**\n     * Specifies the search interface width that should be considered \"small\" size, in pixels.\n     *\n     * When the width of the window/device that displays the search page reaches or falls short of this threshold, the search page layout will change so that, for instance, some result list layouts which are not suited for being rendered on a small screen/area will be disabled.\n     *\n     * This option is only taken into account when [enableAutomaticResponsiveMode]{@link SearchInterface.options.enableAutomaticResponsiveMode} is set to true.\n     *\n     * Default value is `480`.\n     */\n    responsiveSmallBreakpoint: ComponentOptions.buildNumberOption({\n      defaultValue: SMALL_SCREEN_WIDTH,\n      depend: 'enableAutomaticResponsiveMode'\n    }),\n    /**\n     * Specifies the search interface responsive mode that should be used.\n     *\n     * When the mode is auto, the width of the window/device that displays the search page is used to determine which layout the search page should use\n     * (see [enableAutomaticResponsiveMode]{@link SearchInterface.options.enableAutomaticResponsiveMode}, [responsiveMediumBreakpoint]{@link SearchInterface.options.responsiveMediumBreakpoint}\n     * and [responsiveSmallBreakpoint{@link SearchInterface.options.responsiveSmallBreakpoint}])\n     *\n     * When it's not on auto, the width is ignored and the the layout used depends on this option\n     * (e.g. If set to \"small\", then the search interface layout will be the same as if it was on a narrow window/device)\n     */\n    responsiveMode: ComponentOptions.buildCustomOption<ValidResponsiveMode>(\n      value => {\n        // Validator function for the string passed, verify it's one of the accepted values.\n        if (value === 'auto' || value === 'small' || value === 'medium' || value === 'large') {\n          return value;\n        } else {\n          console.warn(`${value} is not a proper value for responsiveMode, auto has been used instead.`);\n          return 'auto';\n        }\n      },\n      {\n        defaultValue: 'auto'\n      }\n    ),\n    /**\n     * Specifies whether to restore the last scroll position when navigating back\n     * to the search interface.\n     *\n     * @availablesince [March 2020 Release (v2.8521)](https://docs.coveo.com/en/3203/)\n     */\n    enableScrollRestoration: ComponentOptions.buildBooleanOption({ defaultValue: false }),\n    /**\n     * Specifies the HTMLElement to which Modals components of the search interface will be attached to. You can\n     * either specify a CSS selector or pass an HTMLElement in the options when calling Coveo.init.\n     *\n     * Default value is `element.ownerDocument.body`.\n     *\n     * **Example in attribute:**\n     * ```html\n     * <div class=\"CoveoSearchInterface\" data-modal-container=\"#my-modal-container\"></div>\n     * ```\n     *\n     * **Example in init options:**\n     * ```javascript\n     * var myContainer = document.getElementById('my-modal-container');\n     * Coveo.init(root, {\n     *   SearchInterface: {\n     *     modalContainer: myContainer\n     *   }\n     * });\n     * ```\n     */\n    modalContainer: ComponentOptions.buildSelectorOption({ defaultFunction: element => element.ownerDocument.body })\n  };\n\n  public static SMALL_INTERFACE_CLASS_NAME = 'coveo-small-search-interface';\n\n  public root: HTMLElement;\n  public queryStateModel: QueryStateModel;\n  public componentStateModel: ComponentStateModel;\n  public queryController: QueryController;\n  public componentOptionsModel: ComponentOptionsModel;\n  public usageAnalytics: IAnalyticsClient;\n  public historyManager: IHistoryManager;\n  public scrollRestorer: ScrollRestorer;\n  /**\n   * Allows to get and set the different breakpoints for mobile and tablet devices.\n   *\n   * This is useful, amongst other, for {@link Facet}, {@link Tab} and {@link ResultList}\n   */\n  public responsiveComponents: ResponsiveComponents;\n  public isResultsPerPageModifiedByPipeline = false;\n  public ariaLive: IAriaLive;\n\n  private attachedComponents: { [type: string]: BaseComponent[] };\n  private facetValueStateHandler: FacetValueStateHandler;\n  private queryPipelineConfigurationForResultsPerPage: number;\n  private relevanceInspector: RelevanceInspectorModule.RelevanceInspector;\n  private omniboxAnalytics: OmniboxAnalytics;\n\n  /**\n   * Creates a new SearchInterface. Initialize various singletons for the interface (e.g., usage analytics, query\n   * controller, state model, etc.). Binds events related to the query.\n   * @param element The HTMLElement on which to instantiate the component. This cannot be an `HTMLInputElement` for\n   * technical reasons.\n   * @param options The options for the SearchInterface.\n   * @param analyticsOptions The options for the {@link Analytics} component. Since the Analytics component is normally\n   * global, it needs to be passed at initialization of the whole interface.\n   * @param _window The window object for the search interface. Used for unit tests, which can pass a mock. Default is\n   * the global window object.\n   */\n  constructor(public element: HTMLElement, public options?: ISearchInterfaceOptions, public analyticsOptions?, public _window = window) {\n    super(element, SearchInterface.ID);\n\n    this.options = ComponentOptions.initComponentOptions(element, SearchInterface, options);\n    Assert.exists(element);\n    Assert.exists(this.options);\n    this.root = element;\n\n    this.setupQueryMode();\n\n    this.queryStateModel = new QueryStateModel(element);\n    this.componentStateModel = new ComponentStateModel(element);\n    this.componentOptionsModel = new ComponentOptionsModel(element);\n    this.usageAnalytics = this.initializeAnalytics();\n    this.queryController = new QueryController(element, this.options, this.usageAnalytics, this);\n    this.facetValueStateHandler = new FacetValueStateHandler(this);\n\n    const missingTermManagerArgs: IMissingTermManagerArgs = {\n      element: this.element,\n      queryStateModel: this.queryStateModel,\n      queryController: this.queryController,\n      usageAnalytics: this.usageAnalytics\n    };\n\n    new MissingTermManager(missingTermManagerArgs);\n    this.omniboxAnalytics = new OmniboxAnalytics();\n\n    this.setupEventsHandlers();\n    this.setupHistoryManager(element, _window);\n\n    this.setupScrollRestorer(element, _window, this.queryStateModel);\n\n    this.element.style.display = element.style.display || 'block';\n\n    this.setupDebugInfo();\n    this.setupResponsiveComponents();\n    this.ariaLive = new AriaLive(element);\n  }\n\n  public set resultsPerPage(resultsPerPage: number) {\n    this.options.resultsPerPage = this.queryController.options.resultsPerPage = resultsPerPage;\n  }\n\n  public get resultsPerPage() {\n    if (this.queryPipelineConfigurationForResultsPerPage != null && this.queryPipelineConfigurationForResultsPerPage != 0) {\n      return this.queryPipelineConfigurationForResultsPerPage;\n    }\n    if (this.queryController.options.resultsPerPage != null && this.queryController.options.resultsPerPage != 0) {\n      return this.queryController.options.resultsPerPage;\n    }\n    // Things would get weird if somehow the number of results per page was set to 0 or not available.\n    // Specially for the pager component. As such, we try to cover that corner case.\n    this.logger.warn('Results per page is incoherent in the search interface.', this);\n    return 10;\n  }\n\n  public getOmniboxAnalytics() {\n    return this.omniboxAnalytics;\n  }\n\n  /**\n   * Attaches a component to the search interface. This allows the search interface to easily list and iterate over its\n   * components.\n   * @param type Normally, the component type is a unique identifier without the `Coveo` prefix (e.g., `CoveoFacet` ->\n   * `Facet`, `CoveoPager` -> `Pager`, `CoveoQuerybox` -> `Querybox`, etc.).\n   * @param component The component instance to attach.\n   */\n  public attachComponent(type: string, component: BaseComponent) {\n    this.getComponents(type).push(component);\n  }\n\n  /**\n   * Detaches a component from the search interface.\n   * @param type Normally, the component type is a unique identifier without the `Coveo` prefix (e.g., `CoveoFacet` ->\n   * `Facet`, `CoveoPager` -> `Pager`, `CoveoQuerybox` -> `Querybox`, etc.).\n   * @param component The component instance to detach.\n   */\n  public detachComponent(type: string, component: BaseComponent) {\n    const components = this.getComponents(type);\n    const index = indexOf(components, component);\n    if (index > -1) {\n      components.splice(index, 1);\n    }\n  }\n\n  /**\n   * Returns the bindings, or environment, for the current component.\n   * @returns {IComponentBindings}\n   */\n  public getBindings() {\n    return {\n      root: this.root,\n      queryStateModel: this.queryStateModel,\n      queryController: this.queryController,\n      searchInterface: <SearchInterface>this,\n      componentStateModel: this.componentStateModel,\n      componentOptionsModel: this.componentOptionsModel,\n      usageAnalytics: this.usageAnalytics\n    };\n  }\n\n  /**\n   * Gets the query context for the current search interface.\n   *\n   * If the search interface has performed at least one query, it will try to resolve the context from the last query sent to the Coveo Search API.\n   *\n   * If the search interface has not performed a query yet, it will try to resolve the context from any avaiable {@link PipelineContext} component.\n   *\n   * If multiple {@link PipelineContext} components are available, it will merge all context values together.\n   *\n   * **Note:**\n   * Having multiple PipelineContext components in the same search interface is not recommended, especially if some context keys are repeated across those components.\n   *\n   * If no context is found, returns `undefined`\n   */\n  public getQueryContext(): Context {\n    let ret: Context;\n\n    const lastQuery = this.queryController.getLastQuery();\n    if (lastQuery.context) {\n      ret = lastQuery.context;\n    } else {\n      const pipelines = this.getComponents<IPipelineContextProvider>('PipelineContext');\n\n      if (pipelines && !isEmpty(pipelines)) {\n        const contextMerged = chain(pipelines)\n          .map(pipeline => pipeline.getContext())\n          .reduce((memo, context) => ({ ...memo, ...context }), {})\n          .value();\n        if (!isEmpty(contextMerged)) {\n          ret = contextMerged;\n        }\n      }\n    }\n\n    return ret;\n  }\n\n  /**\n   * Gets all the components of a given type.\n   * @param type Normally, the component type is a unique identifier without the `Coveo` prefix (e.g., `CoveoFacet` ->\n   * `Facet`, `CoveoPager` -> `Pager`, `CoveoQuerybox` -> `Querybox`, etc.).\n   */\n  public getComponents<T>(type: string): T[];\n\n  /**\n   * Gets all the components of a given type.\n   * @param type Normally, the component type is a unique identifier without the `Coveo` prefix (e.g., `CoveoFacet` ->\n   * `Facet`, `CoveoPager` -> `Pager`, `CoveoQuerybox` -> `Querybox`, etc.).\n   */\n  public getComponents(type: string): BaseComponent[] {\n    if (this.attachedComponents == null) {\n      this.attachedComponents = {};\n    }\n    if (!(type in this.attachedComponents)) {\n      this.attachedComponents[type] = [];\n    }\n    return this.attachedComponents[type];\n  }\n\n  /**\n   * Detaches from the SearchInterface every component that is inside the given element.\n   * @param element\n   */\n  public detachComponentsInside(element: HTMLElement) {\n    each(this.attachedComponents, (components, type) => {\n      components\n        .filter(component => element != component.element && element.contains(component.element))\n        .forEach(component => this.detachComponent(type, component));\n    });\n  }\n\n  protected initializeAnalytics(): IAnalyticsClient {\n    const analyticsRef = BaseComponent.getComponentRef('Analytics');\n    if (analyticsRef) {\n      return analyticsRef.create(this.element, this.analyticsOptions, this.getBindings());\n    }\n    return new NoopAnalyticsClient();\n  }\n\n  private setupHistoryManager(element: HTMLElement, _window: Window) {\n    if (!this.options.enableHistory) {\n      this.historyManager = new NoopHistoryController();\n\n      $$(this.element).on(InitializationEvents.restoreHistoryState, () =>\n        this.queryStateModel.setMultiple({ ...this.queryStateModel.defaultAttributes })\n      );\n      return;\n    }\n\n    if (this.options.useLocalStorageForHistory) {\n      this.historyManager = new LocalStorageHistoryController(element, _window, this.queryStateModel, this.queryController);\n      return;\n    }\n\n    this.historyManager = new HistoryController(element, _window, this.queryStateModel, this.queryController);\n  }\n\n  private setupQueryMode() {\n    if (this.options.allowQueriesWithoutKeywords) {\n      this.initializeEmptyQueryAllowed();\n    } else {\n      this.initializeEmptyQueryNotAllowed();\n    }\n  }\n\n  private setupEventsHandlers() {\n    const eventName = this.queryStateModel.getEventName(Model.eventTypes.preprocess);\n    $$(this.element).on(eventName, (e, args) => this.handlePreprocessQueryStateModel(args));\n    $$(this.element).on(QueryEvents.buildingQuery, (e, args) => this.handleBuildingQuery(args));\n    $$(this.element).on(QueryEvents.querySuccess, (e, args) => this.handleQuerySuccess(args));\n    $$(this.element).on(QueryEvents.queryError, (e, args) => this.handleQueryError(args));\n    $$(this.element).on(InitializationEvents.afterComponentsInitialization, () => this.handleAfterComponentsInitialization());\n    const debugChanged = this.queryStateModel.getEventName(Model.eventTypes.changeOne + QueryStateModel.attributesEnum.debug);\n    $$(this.element).on(debugChanged, (e, args: IAttributeChangedEventArg) => this.handleDebugModeChange(args));\n\n    this.queryStateModel.registerNewAttribute(QueryStateModel.attributesEnum.fv, {});\n\n    const eventNameQuickview = this.queryStateModel.getEventName(Model.eventTypes.changeOne + QueryStateModel.attributesEnum.quickview);\n    $$(this.element).on(eventNameQuickview, (e, args) => this.handleQuickviewChanged(args));\n  }\n\n  private setupDebugInfo() {\n    if (this.options.enableDebugInfo) {\n      setTimeout(() => new Debug(this.element, this.getBindings()));\n    }\n  }\n\n  private setupScrollRestorer(element: HTMLElement, _window: Window, queryStateModel: QueryStateModel) {\n    if (this.options.enableScrollRestoration) {\n      this.scrollRestorer = new ScrollRestorer(element, queryStateModel);\n    }\n  }\n\n  private setupResponsiveComponents() {\n    this.responsiveComponents = new ResponsiveComponents();\n    this.responsiveComponents.setMediumScreenWidth(this.options.responsiveMediumBreakpoint);\n    this.responsiveComponents.setSmallScreenWidth(this.options.responsiveSmallBreakpoint);\n    this.responsiveComponents.setResponsiveMode(this.options.responsiveMode);\n    this.ensureFacetsMobileMode();\n  }\n\n  private ensureFacetsMobileMode() {\n    if (this.root.querySelector('.CoveoFacetsMobileMode')) {\n      return;\n    }\n\n    require.ensure(\n      ['../FacetsMobileMode/FacetsMobileMode'],\n      () => {\n        const loadedModule = require('../FacetsMobileMode/FacetsMobileMode.ts');\n        const facetsMobileModeCtor = loadedModule.FacetsMobileMode as FacetsMobileModeModule.IFacetsMobileModeConstructor;\n        const facetsMobileModeEl = $$('div');\n        $$(this.element).prepend(facetsMobileModeEl.el);\n        const options = this.options.originalOptionsObject['FacetsMobileMode'] || {};\n        new facetsMobileModeCtor(facetsMobileModeEl.el, options, this.getBindings());\n      },\n      null,\n      'FacetsMobileMode'\n    );\n  }\n\n  private handleDebugModeChange(args: IAttributeChangedEventArg) {\n    if (args.value && !this.relevanceInspector && this.options.enableDebugInfo) {\n      require.ensure(\n        ['../RelevanceInspector/RelevanceInspector'],\n        () => {\n          const loadedModule = require('../RelevanceInspector/RelevanceInspector.ts');\n          const relevanceInspectorCtor = loadedModule.RelevanceInspector as RelevanceInspectorModule.IRelevanceInspectorConstructor;\n          const relevanceInspectorElement = $$('btn');\n          $$(this.element).prepend(relevanceInspectorElement.el);\n          this.relevanceInspector = new relevanceInspectorCtor(relevanceInspectorElement.el, this.getBindings());\n        },\n        null,\n        'RelevanceInspector'\n      );\n    }\n  }\n\n  private handlePreprocessQueryStateModel(args: Record<string, any>) {\n    const tgFromModel = this.queryStateModel.get(QueryStateModel.attributesEnum.tg);\n    const tFromModel = this.queryStateModel.get(QueryStateModel.attributesEnum.t);\n\n    let tg = tgFromModel;\n    let t = tFromModel;\n\n    // if you want to set the tab group\n    if (args && args.tg !== undefined) {\n      args.tg = this.getTabGroupId(args.tg);\n      if (tg != args.tg) {\n        args.t = args.t || QueryStateModel.defaultAttributes.t;\n        args.sort = args.sort || QueryStateModel.defaultAttributes.sort;\n        tg = args.tg;\n      }\n    }\n\n    if (args && args.t !== undefined) {\n      args.t = this.getTabId(tg, args.t);\n      if (t != args.t) {\n        args.sort = args.sort || QueryStateModel.defaultAttributes.sort;\n        t = args.t;\n      }\n    }\n\n    if (args && args.sort !== undefined) {\n      args.sort = this.getSort(t, args.sort);\n    }\n\n    if (args && args.quickview !== undefined) {\n      args.quickview = this.getQuickview(args.quickview);\n    }\n\n    // `fv:` states are intended to be redirected and used on a standard Search Interface,\n    // else the state gets transformed to `hd` before the redirection.\n    if (args && args.fv && !(this instanceof StandaloneSearchInterface)) {\n      this.facetValueStateHandler.handleFacetValueState(args);\n    }\n  }\n\n  private getTabGroupId(tabGroupId: string) {\n    const tabGroupRef = BaseComponent.getComponentRef('TabGroup');\n    if (tabGroupRef) {\n      const tabGroups = this.getComponents<any>(tabGroupRef.ID);\n      // check if the tabgroup is correct\n      if (\n        tabGroupId != QueryStateModel.defaultAttributes.tg &&\n        any(tabGroups, (tabGroup: any) => !tabGroup.disabled && tabGroupId == tabGroup.options.id)\n      ) {\n        return tabGroupId;\n      }\n      // select the first tabGroup\n      if (tabGroups.length > 0) {\n        return tabGroups[0].options.id;\n      }\n    }\n    return QueryStateModel.defaultAttributes.tg;\n  }\n\n  private getTabId(tabGroupId: string, tabId: string) {\n    const tabRef = BaseComponent.getComponentRef('Tab');\n    const tabGroupRef = BaseComponent.getComponentRef('TabGroup');\n    if (tabRef) {\n      const tabs = this.getComponents<any>(tabRef.ID);\n      if (tabGroupRef) {\n        // if has a tabGroup\n        if (tabGroupId != QueryStateModel.defaultAttributes.tg) {\n          const tabGroups = this.getComponents<any>(tabGroupRef.ID);\n          const tabGroup = find(tabGroups, (tabGroup: any) => tabGroupId == tabGroup.options.id);\n          // check if the tabgroup contain this tab\n          if (\n            tabId != QueryStateModel.defaultAttributes.t &&\n            any(tabs, (tab: any) => tabId == tab.options.id && tabGroup.isElementIncludedInTabGroup(tab.element))\n          ) {\n            return tabId;\n          }\n          // select the first tab in the tabGroup\n          const tab = find(tabs, (tab: any) => tabGroup.isElementIncludedInTabGroup(tab.element));\n          if (tab != null) {\n            return tab.options.id;\n          }\n          return QueryStateModel.defaultAttributes.t;\n        }\n      }\n      // check if the tab is correct\n      if (tabId != QueryStateModel.defaultAttributes.t && any(tabs, (tab: any) => tabId == tab.options.id)) {\n        return tabId;\n      }\n      // select the first tab\n      if (tabs.length > 0) {\n        return tabs[0].options.id;\n      }\n    }\n    return QueryStateModel.defaultAttributes.t;\n  }\n\n  private getSort(tabId: string, sortId: string) {\n    const sortRef = BaseComponent.getComponentRef('Sort');\n    if (sortRef) {\n      const sorts = this.getComponents<any>(sortRef.ID);\n      // if has a selected tab\n      const tabRef = BaseComponent.getComponentRef('Tab');\n      if (tabRef) {\n        if (tabId != QueryStateModel.defaultAttributes.t) {\n          const tabs = this.getComponents<any>(tabRef.ID);\n          const tab = find(tabs, (tab: any) => tabId == tab.options.id);\n          const sortCriteria = tab.options.sort;\n\n          // check if the tab contain this sort\n          if (\n            sortId != QueryStateModel.defaultAttributes.sort &&\n            any(sorts, (sort: any) => tab.isElementIncludedInTab(sort.element) && sort.match(sortId))\n          ) {\n            return sortId;\n          } else if (sortCriteria != null) {\n            // if not and tab.options.sort is set apply it\n            return sortCriteria.toString();\n          }\n          // select the first sort in the tab\n          const sort = find(sorts, (sort: any) => tab.isElementIncludedInTab(sort.element));\n          if (sort != null) {\n            return sort.options.sortCriteria[0].toString();\n          }\n          return QueryStateModel.defaultAttributes.sort;\n        }\n      }\n      // check if the sort is correct\n      if (sortId != QueryStateModel.defaultAttributes.sort && any(sorts, (sort: any) => sort.match(sortId))) {\n        return sortId;\n      }\n      // select the first sort\n      if (sorts.length > 0) {\n        return sorts[0].options.sortCriteria[0].toString();\n      }\n    }\n    return QueryStateModel.defaultAttributes.sort;\n  }\n\n  private getQuickview(quickviewId: string) {\n    const quickviewRef = BaseComponent.getComponentRef('Quickview');\n    if (quickviewRef) {\n      const quickviews = this.getComponents<any>(quickviewRef.ID);\n      if (any(quickviews, (quickview: any) => quickview.getHashId() == quickviewId)) {\n        return quickviewId;\n      }\n    }\n    return QueryStateModel.defaultAttributes.quickview;\n  }\n\n  private handleQuickviewChanged(args: IAttributeChangedEventArg) {\n    const quickviewRef = BaseComponent.getComponentRef('Quickview');\n    if (quickviewRef) {\n      const quickviews = this.getComponents<any>(quickviewRef.ID);\n      if (args.value != '') {\n        const quickviewsPartition = partition(quickviews, quickview => quickview.getHashId() == args.value);\n        if (quickviewsPartition[0].length != 0) {\n          first(quickviewsPartition[0]).open();\n          each(tail(quickviewsPartition[0]), quickview => quickview.close());\n        }\n        each(quickviewsPartition[1], quickview => quickview.close());\n      } else {\n        each(quickviews, quickview => {\n          quickview.close();\n        });\n      }\n    }\n  }\n\n  private handleBuildingQuery(data: IBuildingQueryEventArgs) {\n    if (this.options.enableDuplicateFiltering) {\n      data.queryBuilder.enableDuplicateFiltering = true;\n    }\n\n    if (!Utils.isNullOrUndefined(this.options.pipeline)) {\n      data.queryBuilder.pipeline = this.options.pipeline;\n    }\n\n    if (!Utils.isNullOrUndefined(this.options.maximumAge)) {\n      data.queryBuilder.maximumAge = this.options.maximumAge;\n    }\n\n    if (!Utils.isNullOrUndefined(this.options.resultsPerPage)) {\n      data.queryBuilder.numberOfResults = this.options.resultsPerPage;\n    }\n\n    if (!Utils.isNullOrUndefined(this.options.excerptLength)) {\n      data.queryBuilder.excerptLength = this.options.excerptLength;\n    }\n\n    if (Utils.isNonEmptyString(this.options.expression)) {\n      data.queryBuilder.constantExpression.add(this.options.expression);\n    }\n\n    if (Utils.isNonEmptyString(<string>this.options.filterField)) {\n      data.queryBuilder.filterField = <string>this.options.filterField;\n    }\n\n    if (Utils.isNonEmptyString(this.options.timezone)) {\n      data.queryBuilder.timezone = this.options.timezone;\n    }\n\n    data.queryBuilder.enableCollaborativeRating = this.options.enableCollaborativeRating;\n\n    data.queryBuilder.enableDuplicateFiltering = this.options.enableDuplicateFiltering;\n\n    data.queryBuilder.allowQueriesWithoutKeywords = this.options.allowQueriesWithoutKeywords;\n\n    const endpoint = this.queryController.getEndpoint();\n    if (endpoint != null && endpoint.options) {\n      if (this.queryStateModel.get(QueryStateModel.attributesEnum.debug)) {\n        data.queryBuilder.maximumAge = 0;\n        data.queryBuilder.enableDebug = true;\n        data.queryBuilder.fieldsToExclude = ['allmetadatavalues'];\n        data.queryBuilder.fieldsToInclude = null;\n      }\n    }\n  }\n\n  private handleQuerySuccess(data: IQuerySuccessEventArgs) {\n    const noResults = data.results.results.length == 0;\n    this.toggleSectionState('coveo-no-results', noResults);\n    this.handlePossiblyModifiedNumberOfResultsInQueryPipeline(data);\n    const resultsHeader = $$(this.element).find('.coveo-results-header');\n    if (resultsHeader) {\n      $$(resultsHeader).removeClass('coveo-query-error');\n    }\n  }\n\n  private handlePossiblyModifiedNumberOfResultsInQueryPipeline(data: IQuerySuccessEventArgs) {\n    if (!data || !data.query || !data.results) {\n      return;\n    }\n\n    const numberOfRequestedResults = data.query.numberOfResults;\n    const numberOfResultsActuallyReturned = data.results.results.length;\n    const areLastPageResults = data.results.totalCountFiltered - data.query.firstResult === numberOfResultsActuallyReturned;\n    const moreResultsAvailable = !areLastPageResults && data.results.totalCountFiltered > numberOfResultsActuallyReturned;\n\n    if (numberOfRequestedResults != numberOfResultsActuallyReturned && moreResultsAvailable) {\n      this.isResultsPerPageModifiedByPipeline = true;\n      this.queryPipelineConfigurationForResultsPerPage = numberOfResultsActuallyReturned;\n    } else {\n      this.isResultsPerPageModifiedByPipeline = false;\n      this.queryPipelineConfigurationForResultsPerPage = null;\n    }\n  }\n\n  private handleQueryError(data: IQueryErrorEventArgs) {\n    this.toggleSectionState('coveo-no-results');\n    const resultsHeader = $$(this.element).find('.coveo-results-header');\n    if (resultsHeader) {\n      $$(resultsHeader).addClass('coveo-query-error');\n    }\n  }\n\n  private handleAfterComponentsInitialization() {\n    each(this.attachedComponents, components => {\n      components.forEach(component => {\n        if (FacetColumnAutoLayoutAdjustment.isAutoLayoutAdjustable(component)) {\n          FacetColumnAutoLayoutAdjustment.initializeAutoLayoutAdjustment(this.element, component);\n        }\n      });\n    });\n    if (this.duplicatesFacets.length) {\n      this.logger.warn(\n        `The following facets have duplicate id/field:`,\n        this.duplicatesFacets,\n        `Ensure that each facet in your search interface has a unique id.`\n      );\n    }\n  }\n\n  private get duplicatesFacets() {\n    const duplicate = [];\n    const facets = ComponentsTypes.getAllFacetsFromSearchInterface(this);\n\n    facets.forEach(facet => {\n      facets.forEach(cmp => {\n        if (facet == cmp) {\n          return;\n        }\n        if (facet.options.id === cmp.options.id) {\n          duplicate.push(facet);\n          return;\n        }\n      });\n    });\n    return duplicate;\n  }\n\n  private toggleSectionState(cssClass: string, toggle = true) {\n    const facetSection = $$(this.element).find('.coveo-facet-column');\n    const resultsSection = $$(this.element).find('.coveo-results-column');\n    const resultsHeader = $$(this.element).find('.coveo-results-header');\n    const facetSearchs = $$(this.element).findAll('.coveo-facet-search-results');\n    const recommendationSection = $$(this.element).find('.coveo-recommendation-main-section');\n\n    if (facetSection) {\n      $$(facetSection).toggleClass(cssClass, toggle && !this.queryStateModel.atLeastOneFacetIsActive());\n    }\n    if (resultsSection) {\n      $$(resultsSection).toggleClass(cssClass, toggle && !this.queryStateModel.atLeastOneFacetIsActive());\n    }\n    if (resultsHeader) {\n      $$(resultsHeader).toggleClass(cssClass, toggle && !this.queryStateModel.atLeastOneFacetIsActive());\n    }\n    if (recommendationSection) {\n      $$(recommendationSection).toggleClass(cssClass, toggle);\n    }\n    if (facetSearchs && facetSearchs.length > 0) {\n      each(facetSearchs, facetSearch => {\n        $$(facetSearch).toggleClass(cssClass, toggle && !this.queryStateModel.atLeastOneFacetIsActive());\n      });\n    }\n  }\n\n  private initializeEmptyQueryAllowed() {\n    new InitializationPlaceholder(this.element).withFullInitializationStyling().withAllPlaceholders();\n  }\n\n  private initializeEmptyQueryNotAllowed() {\n    const placeholder = new InitializationPlaceholder(this.element)\n      .withEventToRemovePlaceholder(QueryEvents.newQuery)\n      .withFullInitializationStyling()\n      .withHiddenRootElement()\n      .withPlaceholderForFacets()\n      .withPlaceholderForResultList();\n\n    $$(this.root).on(InitializationEvents.restoreHistoryState, () => {\n      placeholder.withVisibleRootElement();\n      if (this.queryStateModel.get('q') == '') {\n        placeholder.withWaitingForFirstQueryMode();\n      }\n    });\n\n    $$(this.element).on(QueryEvents.doneBuildingQuery, (e, args: IDoneBuildingQueryEventArgs) => {\n      if (!args.queryBuilder.containsEndUserKeywords()) {\n        const lastQuery = this.queryController.getLastQuery().q;\n        if (Utils.isNonEmptyString(lastQuery)) {\n          this.queryStateModel.set(QUERY_STATE_ATTRIBUTES.Q, lastQuery);\n          args.queryBuilder.expression.add(lastQuery);\n        } else {\n          this.logger.info('Query cancelled by the Search Interface', 'Configuration does not allow empty query', this, this.options);\n          args.cancel = true;\n          this.queryStateModel.reset();\n\n          new InitializationPlaceholder(this.element)\n            .withEventToRemovePlaceholder(QueryEvents.newQuery)\n            .withFullInitializationStyling()\n            .withVisibleRootElement()\n            .withPlaceholderForFacets()\n            .withPlaceholderForResultList()\n            .withWaitingForFirstQueryMode();\n        }\n      }\n    });\n  }\n}\n\nexport interface IStandaloneSearchInterfaceOptions extends ISearchInterfaceOptions {\n  redirectIfEmpty?: boolean;\n}\n\nexport class StandaloneSearchInterface extends SearchInterface {\n  static ID = 'StandaloneSearchInterface';\n\n  public static options: IStandaloneSearchInterfaceOptions = {\n    redirectIfEmpty: ComponentOptions.buildBooleanOption({ defaultValue: true })\n  };\n\n  constructor(\n    public element: HTMLElement,\n    public options?: IStandaloneSearchInterfaceOptions,\n    public analyticsOptions?,\n    public _window = window\n  ) {\n    super(element, ComponentOptions.initComponentOptions(element, StandaloneSearchInterface, options), analyticsOptions, _window);\n    $$(this.root).on(QueryEvents.newQuery, (e: Event, args: INewQueryEventArgs) => this.handleRedirect(e, args));\n  }\n\n  public handleRedirect(e: Event, data: INewQueryEventArgs) {\n    if (data.shouldRedirectStandaloneSearchbox === false) {\n      return;\n    }\n\n    const dataToSendOnBeforeRedirect: IBeforeRedirectEventArgs = {\n      searchPageUri: this.options.searchPageUri,\n      cancel: false\n    };\n\n    $$(this.root).trigger(StandaloneSearchInterfaceEvents.beforeRedirect, dataToSendOnBeforeRedirect);\n\n    if (dataToSendOnBeforeRedirect.cancel) {\n      return;\n    }\n\n    data.cancel = true;\n\n    if (!this.searchboxIsEmpty() || this.options.redirectIfEmpty) {\n      this.doRedirect(dataToSendOnBeforeRedirect.searchPageUri);\n    }\n  }\n\n  private async doRedirect(searchPage: string) {\n    const cachedHashValue = this.encodedHashValues;\n    const executionPlan = await this.queryController.fetchQueryExecutionPlan();\n    const redirectionURL = executionPlan && executionPlan.redirectionURL;\n\n    if (!redirectionURL) {\n      return this.redirectToSearchPage(searchPage, cachedHashValue);\n    }\n\n    this.redirectToURL(redirectionURL);\n  }\n\n  public redirectToURL(url: string) {\n    this.usageAnalytics.logCustomEvent<IAnalyticsTriggerRedirect>(\n      analyticsActionCauseList.triggerRedirect,\n      {\n        redirectedTo: url,\n        query: this.queryStateModel.get(QueryStateModel.attributesEnum.q)\n      },\n      this.element\n    );\n\n    this._window.location.assign(url);\n  }\n\n  public redirectToSearchPage(searchPage: string, hashValueToUse?: string) {\n    const link = document.createElement('a');\n    link.href = searchPage;\n    link.href = link.href; // IE11 needs this to correctly fill the properties that are used below.\n\n    const pathname = link.pathname.indexOf('/') == 0 ? link.pathname : '/' + link.pathname; // IE11 does not add a leading slash to this property.\n    const hash = link.hash ? link.hash + '&' : '#';\n    const hashValue = hashValueToUse || this.encodedHashValues;\n\n    // By using a setTimeout, we allow other possible code related to the search box / magic box time to complete.\n    // eg: onblur of the magic box.\n    setTimeout(() => {\n      this._window.location.href = `${link.protocol}//${link.host}${pathname}${link.search}${hash}${hashValue}`;\n    }, 0);\n  }\n\n  private get encodedHashValues() {\n    const values = {\n      ...this.modelAttributesToIncludeInUrl,\n      ...this.uaCausedByAttribute,\n      ...this.uaMetadataAttribute\n    };\n\n    return HashUtils.encodeValues(values);\n  }\n\n  private get modelAttributesToIncludeInUrl() {\n    const usingLocalStorageHistory = this.historyManager instanceof LocalStorageHistoryController;\n    return usingLocalStorageHistory ? {} : this.queryStateModel.getAttributes();\n  }\n\n  private get uaCausedByAttribute() {\n    const uaCausedBy = this.uaCausedBy;\n    return uaCausedBy ? { firstQueryCause: uaCausedBy } : {};\n  }\n\n  private get uaCausedBy() {\n    const uaCausedBy = this.usageAnalytics.getCurrentEventCause();\n    const isSearchboxSubmit = uaCausedBy === analyticsActionCauseList.searchboxSubmit.name;\n    // For legacy reasons, searchbox submit were always logged as a search from link in an external search box.\n    return isSearchboxSubmit ? analyticsActionCauseList.searchFromLink.name : uaCausedBy;\n  }\n\n  private get uaMetadataAttribute() {\n    const uaMeta = this.usageAnalytics.getCurrentEventMeta();\n    return uaMeta && !isEmpty(uaMeta) ? { firstQueryMeta: uaMeta } : {};\n  }\n\n  private searchboxIsEmpty(): boolean {\n    return Utils.isEmptyString(this.queryStateModel.get(QueryStateModel.attributesEnum.q));\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/SearchInterface/SearchInterface.ts","// We need a custom trigger function for our Promise polyfill\n// because the default one can cause issues in other frameworks that relies on\n// their own Promise polyfill like the Salesforce Aura framework.\nconst promise = window['Promise'];\nif (!(promise instanceof Function)) {\n  require('es6-promise/auto');\n}\n\nexport { underscoreInstance as _ } from './ui/Base/CoveoUnderscore';\nexport * from './BaseModules';\nexport * from './MiscModules';\nexport * from './RestModules';\nexport * from './EventsModules';\nexport * from './ControllersModules';\nexport * from './ModelsModules';\nexport * from './UIBaseModules';\nexport * from './TemplatesModules';\nexport * from './UtilsModules';\n\n\n\n// WEBPACK FOOTER //\n// ./src/Core.ts","import { IQueryResults } from '../rest/QueryResults';\nimport { IQueryResult } from '../rest/QueryResult';\nimport { IQuery } from '../rest/Query';\nimport { Assert } from '../misc/Assert';\nimport { Utils } from '../utils/Utils';\nimport * as _ from 'underscore';\n\ndeclare let crypto: Crypto;\n\nexport class QueryUtils {\n  static createGuid(): string {\n    let guid: string;\n    let success: boolean = false;\n    if (typeof crypto != 'undefined' && typeof crypto.getRandomValues != 'undefined') {\n      try {\n        guid = QueryUtils.generateWithCrypto();\n        success = true;\n      } catch (e) {\n        success = false;\n      }\n    }\n\n    if (!success) {\n      guid = QueryUtils.generateWithRandom();\n    }\n\n    return guid;\n  }\n\n  // This method is a fallback as it's generate a lot of collisions in Chrome.\n  static generateWithRandom(): string {\n    // http://stackoverflow.com/a/2117523\n    return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\n      let r = (Math.random() * 16) | 0,\n        v = c == 'x' ? r : (r & 0x3) | 0x8;\n      return v.toString(16);\n    });\n  }\n\n  static generateWithCrypto(): string {\n    let buf = new Uint16Array(8);\n    crypto.getRandomValues(buf);\n    let S4 = function(num) {\n      let ret = num.toString(16);\n      while (ret.length < 4) {\n        ret = '0' + ret;\n      }\n      return ret;\n    };\n    return S4(buf[0]) + S4(buf[1]) + '-' + S4(buf[2]) + '-' + S4(buf[3]) + '-' + S4(buf[4]) + '-' + S4(buf[5]) + S4(buf[6]) + S4(buf[7]);\n  }\n\n  static setStateObjectOnQueryResults(state: any, results: IQueryResults) {\n    QueryUtils.setPropertyOnResults(results, 'state', state);\n  }\n\n  static setStateObjectOnQueryResult(state: any, result: IQueryResult) {\n    QueryUtils.setPropertyOnResult(result, 'state', state);\n  }\n\n  static setSearchInterfaceObjectOnQueryResult(searchInterface, result: IQueryResult) {\n    QueryUtils.setPropertyOnResult(result, 'searchInterface', searchInterface);\n  }\n\n  static setIndexAndUidOnQueryResults(query: IQuery, results: IQueryResults, queryUid: string, pipeline: string, splitTestRun: string) {\n    Assert.exists(query);\n    Assert.exists(results);\n    let index = query.firstResult;\n    QueryUtils.setPropertyOnResults(results, 'queryUid', queryUid);\n    QueryUtils.setPropertyOnResults(results, 'pipeline', pipeline);\n    QueryUtils.setPropertyOnResults(results, 'splitTestRun', splitTestRun);\n    QueryUtils.setPropertyOnResults(results, 'index', index, () => ++index);\n  }\n\n  static setTermsToHighlightOnQueryResults(query: IQuery, results: IQueryResults) {\n    QueryUtils.setPropertyOnResults(results, 'termsToHighlight', results.termsToHighlight);\n    QueryUtils.setPropertyOnResults(results, 'phrasesToHighlight', results.phrasesToHighlight);\n  }\n\n  static splitFlags(flags: string, delimiter: string = ';') {\n    Assert.exists(flags);\n    return flags.split(delimiter);\n  }\n\n  static isAttachment(result: IQueryResult) {\n    return _.contains(QueryUtils.splitFlags(result.flags), 'IsAttachment');\n  }\n\n  static containsAttachment(result: IQueryResult) {\n    return _.contains(QueryUtils.splitFlags(result.flags), 'ContainsAttachment');\n  }\n\n  static hasHTMLVersion(result: IQueryResult) {\n    return _.contains(QueryUtils.splitFlags(result.flags), 'HasHtmlVersion');\n  }\n\n  static hasThumbnail(result: IQueryResult) {\n    return _.contains(QueryUtils.splitFlags(result.flags), 'HasThumbnail');\n  }\n\n  static hasExcerpt(result: IQueryResult) {\n    return result.excerpt != undefined && result.excerpt != '';\n  }\n\n  static getAuthor(result: IQueryResult): string {\n    return result.raw['author'];\n  }\n\n  static getUriHash(result: IQueryResult): string {\n    return result.raw['urihash'];\n  }\n\n  static getObjectType(result: IQueryResult): string {\n    return result.raw['objecttype'];\n  }\n\n  static getCollection(result: IQueryResult): string {\n    return result.raw['collection'] || 'default';\n  }\n\n  static getSource(result: IQueryResult): string {\n    return result.raw['source'];\n  }\n\n  static getLanguage(result: IQueryResult): string[] {\n    return result.raw['language'];\n  }\n\n  static getPermanentId(result: IQueryResult): { fieldValue: string; fieldUsed: string } {\n    let fieldValue;\n    let fieldUsed;\n    let permanentId = Utils.getFieldValue(result, 'permanentid');\n    if (permanentId) {\n      fieldUsed = 'permanentid';\n      fieldValue = permanentId;\n    } else {\n      fieldUsed = 'urihash';\n      fieldValue = Utils.getFieldValue(result, 'urihash');\n    }\n    return {\n      fieldValue: fieldValue,\n      fieldUsed: fieldUsed\n    };\n  }\n\n  static quoteAndEscapeIfNeeded(str: string): string {\n    Assert.isString(str);\n    return QueryUtils.isAtomicString(str) || (QueryUtils.isRangeString(str) || QueryUtils.isRangeWithoutOuterBoundsString(str))\n      ? str\n      : QueryUtils.quoteAndEscape(str);\n  }\n\n  static quoteAndEscape(str: string): string {\n    Assert.isString(str);\n    return `\"${QueryUtils.escapeString(str)}\"`;\n  }\n\n  static escapeString(str: string): string {\n    Assert.isString(str);\n    return str.replace(/\"/g, ' ');\n  }\n\n  static isAtomicString(str: string): boolean {\n    Assert.isString(str);\n    return /^\\d+(\\.\\d+)?$|^[\\d\\w]+$/.test(str);\n  }\n\n  static isRangeString(str: string): boolean {\n    Assert.isString(str);\n    return /^\\d+(\\.\\d+)?\\.\\.\\d+(\\.\\d+)?$|^\\d{4}\\/\\d{2}\\/\\d{2}@\\d{2}:\\d{2}:\\d{2}\\.\\.\\d{4}\\/\\d{2}\\/\\d{2}@\\d{2}:\\d{2}:\\d{2}$/.test(str);\n  }\n\n  static isRangeWithoutOuterBoundsString(str: string): boolean {\n    Assert.isString(str);\n    return /^\\d+(\\.\\d+)?$|^\\d{4}\\/\\d{2}\\/\\d{2}@\\d{2}:\\d{2}:\\d{2}$/.test(str);\n  }\n\n  static buildFieldExpression(field: string, operator: string, values: string[]) {\n    Assert.isNonEmptyString(field);\n    Assert.stringStartsWith(field, '@');\n    Assert.isNonEmptyString(operator);\n    Assert.isLargerOrEqualsThan(1, values.length);\n\n    if (values.length == 1) {\n      return field + operator + QueryUtils.quoteAndEscapeIfNeeded(values[0]);\n    } else {\n      return field + operator + '(' + _.map(values, str => QueryUtils.quoteAndEscapeIfNeeded(str)).join(',') + ')';\n    }\n  }\n\n  static buildFieldNotEqualExpression(field: string, values: string[]) {\n    Assert.isNonEmptyString(field);\n    Assert.stringStartsWith(field, '@');\n    Assert.isLargerOrEqualsThan(1, values.length);\n\n    let filter: string;\n    if (values.length == 1) {\n      filter = field + '==' + QueryUtils.quoteAndEscapeIfNeeded(values[0]);\n    } else {\n      filter = field + '==' + '(' + _.map(values, str => QueryUtils.quoteAndEscapeIfNeeded(str)).join(',') + ')';\n    }\n\n    return '(NOT ' + filter + ')';\n  }\n\n  public static setPropertyOnResults(results: IQueryResults, property: string, value: any, afterOneLoop?: () => any) {\n    _.each(results.results, (result: IQueryResult) => {\n      QueryUtils.setPropertyOnResult(result, property, value);\n      value = afterOneLoop ? afterOneLoop() : value;\n    });\n  }\n\n  public static setPropertyOnResult(result: IQueryResult, property: string, value: any) {\n    result[property] = value;\n    _.each(result.childResults, (child: IQueryResult) => {\n      child[property] = value;\n    });\n    if (!Utils.isNullOrUndefined(result.parentResult)) {\n      result.parentResult[property] = value;\n    }\n  }\n\n  public static isStratusAgnosticField(fieldToVerify: string, fieldToMatch: string): boolean {\n    let checkForSystem = /^(@?)(sys)?(.*)/i;\n    let matchFieldToVerify = checkForSystem.exec(fieldToVerify);\n    let matchFieldToMatch = checkForSystem.exec(fieldToMatch);\n    if (matchFieldToVerify && matchFieldToMatch) {\n      return (matchFieldToVerify[1] + matchFieldToVerify[3]).toLowerCase() == (matchFieldToMatch[1] + matchFieldToMatch[3]).toLowerCase();\n    }\n    return false;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/QueryUtils.ts","import { Assert } from '../misc/Assert';\nimport { IHighlight } from '../rest/Highlight';\nimport { $$ } from '../utils/Dom';\nimport { IQueryResult } from '../rest/QueryResult';\nimport { Logger } from '../misc/Logger';\nimport { latinize } from './Latinize';\nimport * as _ from 'underscore';\n\nexport class StringUtils {\n  static javascriptEncode(value: string): string {\n    Assert.isString(value);\n\n    value = value.replace(/\\\\/g, '\\\\\\\\');\n    value = value.replace(/'/g, \"\\\\'\");\n    value = value.replace(/\"/g, '\\\\\"');\n\n    return value;\n  }\n\n  static htmlEncode(value: string): string {\n    Assert.isString(value);\n    let div = $$('div');\n    div.text(value);\n    return div.el.innerHTML;\n  }\n\n  static splice(value: string, index: number, remove: number, toAdd: string): string {\n    return value.slice(0, index) + toAdd + value.slice(index + Math.abs(remove));\n  }\n\n  static removeMiddle(value: string, length: number, toAdd: string): string {\n    if (value.length < length) {\n      return value;\n    }\n    let toRemove = value.length - length;\n    let index = Math.floor(length / 2);\n    return StringUtils.splice(value, index, toRemove, toAdd);\n  }\n\n  static regexEncode(value: string): string {\n    Assert.isString(value);\n    return value.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n  }\n\n  static stringToRegex(value: string, ignoreAccent = false): string {\n    Assert.isString(value);\n    let encoded = StringUtils.regexEncode(value);\n\n    if (ignoreAccent) {\n      return _.map(encoded, (char: string) => {\n        let regexp = _.find(StringUtils.accented, (regexp: RegExp) => char.match(regexp) != null);\n        if (regexp) {\n          return regexp.source;\n        }\n        return char;\n      }).join('');\n    }\n\n    return encoded;\n  }\n\n  static wildcardsToRegex(value: string, ignoreAccent = false): string {\n    Assert.isString(value);\n\n    let encoded = StringUtils.stringToRegex(value, ignoreAccent);\n\n    encoded = encoded.replace(/\\\\\\*/, '.*');\n    encoded = encoded.replace(/\\\\\\?/, '.');\n\n    return encoded;\n  }\n\n  static getHighlights(strToSearch: string, regexToFind: RegExp, dataHighlightGroupTerm: string): IHighlight[] {\n    let match,\n      indexes: IHighlight[] = [];\n\n    while ((match = regexToFind.exec(strToSearch))) {\n      let desiredMatch = match[2];\n      let undesiredMatch = match[1];\n      let offset = match.index + undesiredMatch.length;\n      indexes.push({ offset: offset, length: desiredMatch.length, dataHighlightGroupTerm: dataHighlightGroupTerm });\n      if (!regexToFind.global) {\n        break;\n      }\n    }\n    return _.isEmpty(indexes) ? undefined : indexes;\n  }\n\n  static encodeCarriageReturn(strToEncode: string): string {\n    Assert.isString(strToEncode);\n    return strToEncode.replace(/\\n/g, '<br/>');\n  }\n\n  static equalsCaseInsensitive(str1: string, str2: string) {\n    return str1.toLowerCase() == str2.toLowerCase();\n  }\n\n  static match(value: string, regex: RegExp) {\n    let results: string[][] = [];\n    let arr: string[];\n    while ((arr = regex.exec(value)) !== null) {\n      results.push(arr);\n    }\n    return results;\n  }\n\n  static hashCode(str: string): string {\n    let hash = 0;\n    let len = str.length;\n    for (let i = 0; i < len; i++) {\n      let char = str.charCodeAt(i);\n      hash = (hash << 5) - hash + char;\n      hash = hash & hash; // Convert to 32bit integer\n    }\n    return hash.toString(16);\n  }\n\n  // http://stackoverflow.com/a/25575009\n  static latinize(str: string) {\n    return latinize(str);\n  }\n\n  static capitalizeFirstLetter(str: string) {\n    return str.charAt(0).toUpperCase() + str.slice(1);\n  }\n\n  static buildStringTemplateFromResult(template: string, result: IQueryResult) {\n    if (!template) {\n      return '';\n    }\n    return template.replace(/\\$\\{(.*?)\\}/g, (value: string) => {\n      let key = value.substring(2, value.length - 1);\n      let newValue = StringUtils.readFromObject(result, key);\n      if (!newValue) {\n        newValue = StringUtils.readFromObject(window, key);\n      }\n      if (!newValue) {\n        new Logger(this).warn(`${key} used in the ResultLink template is undefined for this result: ${result.title}`);\n      }\n      return newValue || value;\n    });\n  }\n\n  private static readFromObject(object: Object, key: string): string {\n    const firstPeriodIndex = key.indexOf('.');\n    if (object && firstPeriodIndex !== -1) {\n      let newKey = key.substring(firstPeriodIndex + 1);\n      key = key.substring(0, firstPeriodIndex);\n      return this.readFromObject(object[key], newKey);\n    }\n    return object ? object[key] : undefined;\n  }\n\n  public static accented: { [letter: string]: RegExp } = {\n    A: /[Aa\\xaa\\xc0-\\xc5\\xe0-\\xe5\\u0100-\\u0105\\u01cd\\u01ce\\u0200-\\u0203\\u0226\\u0227\\u1d2c\\u1d43\\u1e00\\u1e01\\u1e9a\\u1ea0-\\u1ea3\\u2090\\u2100\\u2101\\u213b\\u249c\\u24b6\\u24d0\\u3371-\\u3374\\u3380-\\u3384\\u3388\\u3389\\u33a9-\\u33af\\u33c2\\u33ca\\u33df\\u33ff\\uff21\\uff41]/g,\n    B: /[Bb\\u1d2e\\u1d47\\u1e02-\\u1e07\\u212c\\u249d\\u24b7\\u24d1\\u3374\\u3385-\\u3387\\u33c3\\u33c8\\u33d4\\u33dd\\uff22\\uff42]/g,\n    C: /[Cc\\xc7\\xe7\\u0106-\\u010d\\u1d9c\\u2100\\u2102\\u2103\\u2105\\u2106\\u212d\\u216d\\u217d\\u249e\\u24b8\\u24d2\\u3376\\u3388\\u3389\\u339d\\u33a0\\u33a4\\u33c4-\\u33c7\\uff23\\uff43]/g,\n    D: /[Dd\\u010e\\u010f\\u01c4-\\u01c6\\u01f1-\\u01f3\\u1d30\\u1d48\\u1e0a-\\u1e13\\u2145\\u2146\\u216e\\u217e\\u249f\\u24b9\\u24d3\\u32cf\\u3372\\u3377-\\u3379\\u3397\\u33ad-\\u33af\\u33c5\\u33c8\\uff24\\uff44]/g,\n    E: /[Ee\\xc8-\\xcb\\xe8-\\xeb\\u0112-\\u011b\\u0204-\\u0207\\u0228\\u0229\\u1d31\\u1d49\\u1e18-\\u1e1b\\u1eb8-\\u1ebd\\u2091\\u2121\\u212f\\u2130\\u2147\\u24a0\\u24ba\\u24d4\\u3250\\u32cd\\u32ce\\uff25\\uff45]/g,\n    F: /[Ff\\u1da0\\u1e1e\\u1e1f\\u2109\\u2131\\u213b\\u24a1\\u24bb\\u24d5\\u338a-\\u338c\\u3399\\ufb00-\\ufb04\\uff26\\uff46]/g,\n    G: /[Gg\\u011c-\\u0123\\u01e6\\u01e7\\u01f4\\u01f5\\u1d33\\u1d4d\\u1e20\\u1e21\\u210a\\u24a2\\u24bc\\u24d6\\u32cc\\u32cd\\u3387\\u338d-\\u338f\\u3393\\u33ac\\u33c6\\u33c9\\u33d2\\u33ff\\uff27\\uff47]/g,\n    H: /[Hh\\u0124\\u0125\\u021e\\u021f\\u02b0\\u1d34\\u1e22-\\u1e2b\\u1e96\\u210b-\\u210e\\u24a3\\u24bd\\u24d7\\u32cc\\u3371\\u3390-\\u3394\\u33ca\\u33cb\\u33d7\\uff28\\uff48]/g,\n    I: /[Ii\\xcc-\\xcf\\xec-\\xef\\u0128-\\u0130\\u0132\\u0133\\u01cf\\u01d0\\u0208-\\u020b\\u1d35\\u1d62\\u1e2c\\u1e2d\\u1ec8-\\u1ecb\\u2071\\u2110\\u2111\\u2139\\u2148\\u2160-\\u2163\\u2165-\\u2168\\u216a\\u216b\\u2170-\\u2173\\u2175-\\u2178\\u217a\\u217b\\u24a4\\u24be\\u24d8\\u337a\\u33cc\\u33d5\\ufb01\\ufb03\\uff29\\uff49]/g,\n    J: /[Jj\\u0132-\\u0135\\u01c7-\\u01cc\\u01f0\\u02b2\\u1d36\\u2149\\u24a5\\u24bf\\u24d9\\u2c7c\\uff2a\\uff4a]/g,\n    K: /[Kk\\u0136\\u0137\\u01e8\\u01e9\\u1d37\\u1d4f\\u1e30-\\u1e35\\u212a\\u24a6\\u24c0\\u24da\\u3384\\u3385\\u3389\\u338f\\u3391\\u3398\\u339e\\u33a2\\u33a6\\u33aa\\u33b8\\u33be\\u33c0\\u33c6\\u33cd-\\u33cf\\uff2b\\uff4b]/g,\n    L: /[Ll\\u0139-\\u0140\\u01c7-\\u01c9\\u02e1\\u1d38\\u1e36\\u1e37\\u1e3a-\\u1e3d\\u2112\\u2113\\u2121\\u216c\\u217c\\u24a7\\u24c1\\u24db\\u32cf\\u3388\\u3389\\u33d0-\\u33d3\\u33d5\\u33d6\\u33ff\\ufb02\\ufb04\\uff2c\\uff4c]/g,\n    M: /[Mm\\u1d39\\u1d50\\u1e3e-\\u1e43\\u2120\\u2122\\u2133\\u216f\\u217f\\u24a8\\u24c2\\u24dc\\u3377-\\u3379\\u3383\\u3386\\u338e\\u3392\\u3396\\u3399-\\u33a8\\u33ab\\u33b3\\u33b7\\u33b9\\u33bd\\u33bf\\u33c1\\u33c2\\u33ce\\u33d0\\u33d4-\\u33d6\\u33d8\\u33d9\\u33de\\u33df\\uff2d\\uff4d]/g,\n    N: /[Nn\\xd1\\xf1\\u0143-\\u0149\\u01ca-\\u01cc\\u01f8\\u01f9\\u1d3a\\u1e44-\\u1e4b\\u207f\\u2115\\u2116\\u24a9\\u24c3\\u24dd\\u3381\\u338b\\u339a\\u33b1\\u33b5\\u33bb\\u33cc\\u33d1\\uff2e\\uff4e]/g,\n    O: /[Oo\\xba\\xd2-\\xd6\\xf2-\\xf6\\u014c-\\u0151\\u01a0\\u01a1\\u01d1\\u01d2\\u01ea\\u01eb\\u020c-\\u020f\\u022e\\u022f\\u1d3c\\u1d52\\u1ecc-\\u1ecf\\u2092\\u2105\\u2116\\u2134\\u24aa\\u24c4\\u24de\\u3375\\u33c7\\u33d2\\u33d6\\uff2f\\uff4f]/g,\n    P: /[Pp\\u1d3e\\u1d56\\u1e54-\\u1e57\\u2119\\u24ab\\u24c5\\u24df\\u3250\\u3371\\u3376\\u3380\\u338a\\u33a9-\\u33ac\\u33b0\\u33b4\\u33ba\\u33cb\\u33d7-\\u33da\\uff30\\uff50]/g,\n    Q: /[Qq\\u211a\\u24ac\\u24c6\\u24e0\\u33c3\\uff31\\uff51]/g,\n    R: /[Rr\\u0154-\\u0159\\u0210-\\u0213\\u02b3\\u1d3f\\u1d63\\u1e58-\\u1e5b\\u1e5e\\u1e5f\\u20a8\\u211b-\\u211d\\u24ad\\u24c7\\u24e1\\u32cd\\u3374\\u33ad-\\u33af\\u33da\\u33db\\uff32\\uff52]/g,\n    S: /[Ss\\u015a-\\u0161\\u017f\\u0218\\u0219\\u02e2\\u1e60-\\u1e63\\u20a8\\u2101\\u2120\\u24ae\\u24c8\\u24e2\\u33a7\\u33a8\\u33ae-\\u33b3\\u33db\\u33dc\\ufb06\\uff33\\uff53]/g,\n    T: /[Tt\\u0162-\\u0165\\u021a\\u021b\\u1d40\\u1d57\\u1e6a-\\u1e71\\u1e97\\u2121\\u2122\\u24af\\u24c9\\u24e3\\u3250\\u32cf\\u3394\\u33cf\\ufb05\\ufb06\\uff34\\uff54]/g,\n    U: /[Uu\\xd9-\\xdc\\xf9-\\xfc\\u0168-\\u0173\\u01af\\u01b0\\u01d3\\u01d4\\u0214-\\u0217\\u1d41\\u1d58\\u1d64\\u1e72-\\u1e77\\u1ee4-\\u1ee7\\u2106\\u24b0\\u24ca\\u24e4\\u3373\\u337a\\uff35\\uff55]/g,\n    V: /[Vv\\u1d5b\\u1d65\\u1e7c-\\u1e7f\\u2163-\\u2167\\u2173-\\u2177\\u24b1\\u24cb\\u24e5\\u2c7d\\u32ce\\u3375\\u33b4-\\u33b9\\u33dc\\u33de\\uff36\\uff56]/g,\n    W: /[Ww\\u0174\\u0175\\u02b7\\u1d42\\u1e80-\\u1e89\\u1e98\\u24b2\\u24cc\\u24e6\\u33ba-\\u33bf\\u33dd\\uff37\\uff57]/g,\n    X: /[Xx\\u02e3\\u1e8a-\\u1e8d\\u2093\\u213b\\u2168-\\u216b\\u2178-\\u217b\\u24b3\\u24cd\\u24e7\\u33d3\\uff38\\uff58]/g,\n    Y: /[Yy\\xdd\\xfd\\xff\\u0176-\\u0178\\u0232\\u0233\\u02b8\\u1e8e\\u1e8f\\u1e99\\u1ef2-\\u1ef9\\u24b4\\u24ce\\u24e8\\u33c9\\uff39\\uff59]/g,\n    Z: /[Zz\\u0179-\\u017e\\u01f1-\\u01f3\\u1dbb\\u1e90-\\u1e95\\u2124\\u2128\\u24b5\\u24cf\\u24e9\\u3390-\\u3394\\uff3a\\uff5a]/g\n  };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/StringUtils.ts","module.exports = global[\"Globalize\"] = require(\"-!./globalize.min.js\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/globalize/globalize.min.js-exposed\n// module id = 23\n// module chunks = 88 89","// Not sure about this : In year 2033 who's to say that this list won't be 50 pages long !\nimport { ResponsiveComponents } from '../ui/ResponsiveComponents/ResponsiveComponents';\nconst mobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);\n\nexport class DeviceUtils {\n  static getDeviceName(userAgent = navigator.userAgent): string {\n    if (userAgent.match(/Edge/i)) {\n      return 'Edge';\n    }\n    if (userAgent.match(/Opera Mini/i)) {\n      return 'Opera Mini';\n    }\n    if (userAgent.match(/Android/i)) {\n      return 'Android';\n    }\n    if (userAgent.match(/BlackBerry/i)) {\n      return 'BlackBerry';\n    }\n    if (userAgent.match(/iPhone/i)) {\n      return 'iPhone';\n    }\n    if (userAgent.match(/iPad/i) || this.isSafariIPadOS(userAgent)) {\n      return 'iPad';\n    }\n    if (userAgent.match(/iPod/i)) {\n      return 'iPod';\n    }\n    if (userAgent.match(/Chrome/i)) {\n      return 'Chrome';\n    }\n    if (userAgent.match(/MSIE/i) || userAgent.match(/Trident/i)) {\n      return 'IE';\n    }\n    if (userAgent.match(/Opera/i)) {\n      return 'Opera';\n    }\n    if (userAgent.match(/Firefox/i)) {\n      return 'Firefox';\n    }\n    if (userAgent.match(/Safari/i)) {\n      return 'Safari';\n    }\n    return 'Others';\n  }\n\n  static isAndroid() {\n    return DeviceUtils.getDeviceName() == 'Android';\n  }\n\n  static isIos() {\n    var deviceName = DeviceUtils.getDeviceName();\n    return deviceName == 'iPhone' || deviceName == 'iPad' || deviceName == 'iPod';\n  }\n\n  static isMobileDevice() {\n    if (this.isSafariIPadOS()) {\n      return true;\n    }\n\n    return mobile;\n  }\n\n  // Workaround for Safari on iPadOS https://developer.apple.com/forums/thread/119186\n  private static isSafariIPadOS(userAgent = navigator.userAgent) {\n    return userAgent.match(/Macintosh/i) && navigator.maxTouchPoints && navigator.maxTouchPoints > 2;\n  }\n\n  /**\n   * @deprecated\n   *\n   * Use ResponsiveComponents.isSmallScreenWidth() instead\n   */\n  static isSmallScreenWidth() {\n    return new ResponsiveComponents().isSmallScreenWidth();\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/DeviceUtils.ts","import { Utils } from './Utils';\nimport * as _ from 'underscore';\n\nexport enum KEYBOARD {\n  BACKSPACE = 8,\n  TAB = 9,\n  ENTER = 13,\n  SHIFT = 16,\n  CTRL = 17,\n  ALT = 18,\n  ESCAPE = 27,\n  SPACEBAR = 32,\n  PAGE_UP = 33,\n  PAGE_DOWN = 34,\n  END = 35,\n  HOME = 36,\n  LEFT_ARROW = 37,\n  UP_ARROW = 38,\n  RIGHT_ARROW = 39,\n  DOWN_ARROW = 40,\n  INSERT = 45,\n  DELETE = 46\n}\n\nexport class KeyboardUtils {\n  static keysEqual(key, code) {\n    if (!Utils.isNullOrUndefined(key.keyCode)) {\n      return key.keyCode == code;\n    } else if (!Utils.isNullOrUndefined(key.which)) {\n      return key.which == code;\n    }\n    return false;\n  }\n\n  static isAllowedKeyForOmnibox(e: KeyboardEvent): boolean {\n    var keycode = e.keyCode;\n    var valid =\n      KeyboardUtils.isNumberKeyPushed(keycode) ||\n      keycode == 32 ||\n      keycode == 13 || // spacebar & return key(s)\n      KeyboardUtils.isLetterKeyPushed(keycode) ||\n      (keycode > 95 && keycode < 112) || // numpad keys\n      (keycode > 185 && keycode < 193) || // ;=,-./` (in order)\n      (keycode > 218 && keycode < 223) || // [\\]' (in order)\n      keycode == KEYBOARD.BACKSPACE ||\n      keycode == KEYBOARD.DELETE ||\n      KeyboardUtils.isArrowKeyPushed(keycode);\n\n    return valid;\n  }\n\n  static isAllowedKeyForSearchAsYouType(e: KeyboardEvent): boolean {\n    return KeyboardUtils.isAllowedKeyForOmnibox(e) && !KeyboardUtils.isArrowKeyPushed(e.keyCode);\n  }\n\n  static isDeleteOrBackspace(e: KeyboardEvent) {\n    return KeyboardUtils.keysEqual(e, KEYBOARD.BACKSPACE) || KeyboardUtils.keysEqual(e, KEYBOARD.DELETE);\n  }\n\n  static isArrowKeyPushed(keycode: number): boolean {\n    return (\n      keycode == KEYBOARD.LEFT_ARROW || keycode == KEYBOARD.UP_ARROW || keycode == KEYBOARD.RIGHT_ARROW || keycode == KEYBOARD.DOWN_ARROW\n    );\n  }\n\n  static isNumberKeyPushed(keycode: number): boolean {\n    return keycode > 47 && keycode < 58;\n  }\n\n  static isLetterKeyPushed(keycode: number): boolean {\n    return keycode > 64 && keycode < 91;\n  }\n\n  // Return a keyboard event listener that only executes the function if certain keys are pressed.\n  static keypressAction(keyCode: KEYBOARD | KEYBOARD[], action: Function) {\n    return (e: KeyboardEvent, ...data: any[]) => {\n      if (e) {\n        const eventCode = e.charCode || e.keyCode;\n        if (eventCode) {\n          if (_.isArray(keyCode) && _.contains(keyCode, eventCode)) {\n            action(e);\n          } else if (eventCode === keyCode) {\n            action(e);\n          }\n        }\n      }\n    };\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/KeyboardUtils.ts","declare function require(moduleName: string): any;\nexport const ModalBox = require('exports-loader?Coveo.ModalBox!modal-box');\nexport const LocaleString = require('exports-loader?window.String.toLocaleString!l10n');\n\n\n\n// WEBPACK FOOTER //\n// ./src/ExternalModulesShim.ts","import { Logger } from '../../misc/Logger';\nimport { $$ } from '../../utils/Dom';\nimport { TemplateConditionEvaluator } from './TemplateConditionEvaluator';\nimport { TemplateFieldsEvaluator } from './TemplateFieldsEvaluator';\nimport { IQueryResult } from '../../rest/QueryResult';\nimport { ResponsiveComponents } from '../ResponsiveComponents/ResponsiveComponents';\nimport * as _ from 'underscore';\nimport { Initialization, LazyInitialization } from '../Base/Initialization';\nimport { Utils } from '../../utils/Utils';\nimport { RendererValidLayout, ValidLayout } from '../ResultLayoutSelector/ValidLayout';\n\nexport type TemplateRole = 'table-header' | 'table-footer';\n\nexport interface ITemplateProperties {\n  condition?: Function;\n  conditionToParse?: string;\n  layout?: ValidLayout;\n  mobile?: boolean;\n  tablet?: boolean;\n  desktop?: boolean;\n  fieldsToMatch?: IFieldsToMatch[];\n  role?: TemplateRole;\n}\n\nexport interface IFieldsToMatch {\n  values?: string[];\n  field: string;\n  reverseCondition?: boolean;\n}\n\nexport interface IInstantiateTemplateOptions {\n  currentLayout?: RendererValidLayout;\n  checkCondition?: boolean;\n  wrapInDiv?: boolean;\n  responsiveComponents?: ResponsiveComponents;\n}\n\nexport class DefaultInstantiateTemplateOptions implements IInstantiateTemplateOptions {\n  public currentLayout: ValidLayout;\n  public checkCondition: boolean;\n  public wrapInDiv: boolean;\n  public responsiveComponents: ResponsiveComponents;\n\n  constructor() {\n    this.currentLayout = null;\n    this.checkCondition = true;\n    this.wrapInDiv = true;\n    this.responsiveComponents = new ResponsiveComponents();\n  }\n\n  get(): IInstantiateTemplateOptions {\n    return {\n      currentLayout: this.currentLayout,\n      checkCondition: this.checkCondition,\n      wrapInDiv: this.wrapInDiv,\n      responsiveComponents: this.responsiveComponents\n    };\n  }\n\n  merge(other: IInstantiateTemplateOptions): IInstantiateTemplateOptions {\n    if (other) {\n      return _.extend(this.get(), other);\n    }\n    return this.get();\n  }\n}\n\nexport class Template implements ITemplateProperties {\n  private logger: Logger = new Logger(this);\n  public condition: Function;\n  public conditionToParse: string;\n  public fieldsToMatch: IFieldsToMatch[];\n  public mobile: boolean;\n  public tablet: boolean;\n  public desktop: boolean;\n  public fields: string[] = [];\n  public layout: ValidLayout;\n  public role: TemplateRole;\n\n  constructor(public dataToString?: (object?: any) => string) {}\n\n  public instantiateToString(\n    object: IQueryResult,\n    instantiateOptions: IInstantiateTemplateOptions = new DefaultInstantiateTemplateOptions()\n  ): string {\n    if (this.dataToString) {\n      if (instantiateOptions.checkCondition === false) {\n        return this.dataToString(object);\n      }\n\n      // Should not happen but...\n      // Normally, top level call from sub-class will have already created a\n      // DefaultInstantiateTemplateOptions and merged down\n      if (instantiateOptions.responsiveComponents == null) {\n        instantiateOptions.responsiveComponents = new ResponsiveComponents();\n      }\n\n      // Mobile/tablet/desktop checks are only for \"hard\" set value (triple equal)\n      // If it's undefined, we skip those checks, and we assume the template works correctly for any given screen size\n      if (this.mobile === true && !instantiateOptions.responsiveComponents.isSmallScreenWidth()) {\n        this.logger.trace('Template was skipped because it is optimized for small screen width', this);\n        return null;\n      } else if (this.mobile === false && instantiateOptions.responsiveComponents.isSmallScreenWidth()) {\n        this.logger.trace('Template was skipped because it is not optimized for small screen width', this);\n        return null;\n      }\n\n      if (this.tablet === true && !instantiateOptions.responsiveComponents.isMediumScreenWidth()) {\n        this.logger.trace('Template was skipped because it is optimized for medium screen width', this);\n        return null;\n      } else if (this.tablet === false && instantiateOptions.responsiveComponents.isMediumScreenWidth()) {\n        this.logger.trace('Template was skipped because it is not optimized for medium screen width', this);\n        return null;\n      }\n\n      if (this.desktop === true && !instantiateOptions.responsiveComponents.isLargeScreenWidth()) {\n        this.logger.trace('Template was skipped because it is optimized for large screen width', this);\n        return null;\n      } else if (this.desktop === false && instantiateOptions.responsiveComponents.isLargeScreenWidth()) {\n        this.logger.trace('Template was skipped because it is not optimized for large screen width', this);\n        return null;\n      }\n\n      if (this.layout != null && instantiateOptions.currentLayout != null && instantiateOptions.currentLayout !== this.layout) {\n        this.logger.trace('Template was skipped because layout does not match', this, this.layout);\n        return null;\n      }\n      try {\n        this.logger.trace('Evaluating template ...');\n        // Condition (as a function) is eval'ed, first\n        if (this.condition != null && this.condition(object)) {\n          this.logger.trace('Template was loaded because condition was :', this.condition, object);\n          return this.dataToString(object);\n        }\n        // Condition (as a string) is parsed, if available.\n        if (\n          this.conditionToParse != null &&\n          TemplateConditionEvaluator.evaluateCondition(this.conditionToParse, object, instantiateOptions.responsiveComponents)\n        ) {\n          this.logger.trace('Template was loaded because condition was :', this.conditionToParse, object);\n          return this.dataToString(object);\n        }\n        // fieldsToMatch is yet another fallback that allows to specify if a template should be loaded.\n        if (this.fieldsToMatch != null && TemplateFieldsEvaluator.evaluateFieldsToMatch(this.fieldsToMatch, object)) {\n          this.logger.trace('Template was loaded because condition was :', this.fieldsToMatch, object);\n          return this.dataToString(object);\n        }\n        // If there is no condition at all, this means \"true\"\n        if (this.condition == null && this.conditionToParse == null && this.fieldsToMatch == null) {\n          this.logger.trace('Template was loaded because there was *NO* condition', this.condition, object);\n          return this.dataToString(object);\n        }\n      } catch (e) {\n        new Logger(this).error('Cannot instantiate template', e.message, this.getTemplateInfo());\n        new Logger(this).warn('A default template was used');\n        return null;\n      }\n    }\n    this.logger.trace('Template was skipped because it did not match any condition', this);\n    return null;\n  }\n\n  public addField(field: string) {\n    if (!_.contains(this.fields, field)) {\n      this.fields.push(field);\n    }\n  }\n\n  public addFields(fields: string[]) {\n    if (Utils.isNonEmptyArray(fields)) {\n      this.fields = Utils.concatWithoutDuplicate(this.fields, fields);\n    }\n  }\n\n  public getComponentsInside(tmplString: string): string[] {\n    const allComponentsInsideCurrentTemplate = _.map(Initialization.getListOfRegisteredComponents(), (componentId: string) => {\n      const regex = new RegExp(`Coveo${componentId}`, 'g');\n      return regex.exec(tmplString) ? componentId : null;\n    });\n\n    return _.compact(allComponentsInsideCurrentTemplate);\n  }\n\n  public instantiateToElement(result: IQueryResult, templateOptions: IInstantiateTemplateOptions = {}): Promise<HTMLElement> | null {\n    const mergedOptions = new DefaultInstantiateTemplateOptions().merge(templateOptions);\n    const html = this.instantiateToString(result, mergedOptions);\n\n    if (html == null) {\n      return null;\n    }\n\n    return this.ensureComponentsInHtmlStringHaveLoaded(html).then(() => {\n      const template = this.buildTemplate(html, mergedOptions);\n      this.logger.trace('Instantiated result template', result, template);\n      return template;\n    });\n  }\n\n  public toHtmlElement(): HTMLElement {\n    return null;\n  }\n\n  public getFields(): string[] {\n    return this.fields;\n  }\n\n  public getType() {\n    return 'Template';\n  }\n\n  public setConditionWithFallback(condition: string) {\n    // In some circumstances (eg: locker service in SF), with strict Content-Security-Policy, eval / new Function are not allowed by the browser.\n    // Try to use the eval method, if possible. Otherwise fallback to a mechanism where we will try to parse/evaluate the condition as a simple string.\n    try {\n      this.condition = new Function('obj', 'with(obj||{}){return ' + condition + '}');\n    } catch (e) {\n      this.conditionToParse = condition;\n    }\n  }\n\n  protected getTemplateInfo(): any {\n    // Try to get info on the template by returning the first parameter found that is not undefined.\n    return this.conditionToParse != undefined ? this.conditionToParse : this.condition != undefined ? this.condition : this.fieldsToMatch;\n  }\n\n  private ensureComponentsInHtmlStringHaveLoaded(html: string) {\n    const components = this.getComponentsInside(html).map(component => LazyInitialization.getLazyRegisteredComponent(component));\n    return Promise.all(components);\n  }\n\n  private buildTemplate(html: string, templateOptions: IInstantiateTemplateOptions) {\n    const layout = this.layout || templateOptions.currentLayout;\n    const elemType = layout === 'table' ? 'tr' : 'div';\n    let element = $$(elemType, {}, html).el;\n\n    if (!templateOptions.wrapInDiv && element.children.length === 1) {\n      element = <HTMLElement>element.children.item(0);\n    }\n\n    if (layout) {\n      $$(element).addClass(`coveo-${layout}-layout`);\n    }\n\n    element['template'] = this;\n    return element;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Templates/Template.ts","import { Model } from './Model';\nimport * as _ from 'underscore';\n\nexport const COMPONENT_OPTIONS_ATTRIBUTES = {\n  RESULT_LINK: 'resultLink',\n  SEARCH_HUB: 'searchHub',\n  SEARCH_BOX: 'searchBox'\n};\n\nexport interface IComponentOptionsAttributes {\n  resultLink: any;\n  searchHub: string;\n  searchBox: any;\n}\n\nexport class ComponentOptionsModel extends Model {\n  static ID = 'ComponentOptions';\n\n  static defaultAttributes: IComponentOptionsAttributes = {\n    resultLink: undefined,\n    searchHub: undefined,\n    searchBox: undefined\n  };\n\n  static attributesEnum = {\n    resultLink: 'resultLink',\n    searchHub: 'searchHub',\n    searchBox: 'searchBox'\n  };\n\n  constructor(element: HTMLElement, attributes?: IComponentOptionsAttributes) {\n    var merged = _.extend({}, ComponentOptionsModel.defaultAttributes, attributes);\n    super(element, ComponentOptionsModel.ID, merged);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/models/ComponentOptionsModel.ts","import { IQueryResult } from '../rest/QueryResult';\nimport { IQueryResults } from '../rest/QueryResults';\nimport { ValidLayout } from '../ui/ResultLayoutSelector/ValidLayout';\n\n/**\n * The `IDisplayedNewResultEventArgs` interface describes the object that all\n * [`newResultDisplayed`]{@link ResultListEvents.newResultDisplayed} event handlers receive as an argument.\n */\nexport interface IDisplayedNewResultEventArgs {\n  /**\n   * The query result that was just displayed by the [`ResultList`]{@link ResultList} component.\n   */\n  result: IQueryResult;\n\n  /**\n   * The HTML element which was rendered by the  the displayed result.\n   */\n  item: HTMLElement;\n}\n\n/**\n * The `IDisplayedNewResultsEventArgs` interface describes the object that all\n * [`newResultsDisplayed`]{@link ResultListEvents.newResultsDisplayed} event handlers receive as an argument.\n */\nexport interface IDisplayedNewResultsEventArgs {\n  /**\n   * Whether the results are being displayed in a [`ResultList`]{@link ResultList} with infinite scroll enabled.\n   * See [`enableInfiniteScroll`]{@link ResultList.options.enableInfiniteScroll} option).\n   */\n  isInfiniteScrollEnabled: boolean;\n}\n\n/**\n * The `IOpenQuickviewEventArgs` interface describes the object that all\n * [`openQuickview`]{@link ResultList.openQuickview} event handlers receive as an argument.\n */\nexport interface IOpenQuickviewEventArgs {\n  /**\n   * The array of query expression terms to highlight in the quickview modal window.\n   */\n  termsToHighlight: any;\n}\n\n/**\n * The `IChangeLayoutEventArgs` interface describes the object that all\n * [`ChangeLayout`]{@link ResultListEvents.changeLayout} event handlers receive as an argument.\n */\nexport interface IChangeLayoutEventArgs {\n  /**\n   * The name of the new layout.\n   *\n   */\n  layout: ValidLayout;\n\n  /**\n   * The current page of results.\n   */\n  results?: IQueryResults;\n}\n\n/**\n * The `ResultListEvents` static class contains the string definitions of all events that strongly relate to the result\n * list.\n *\n * See [Events](https://docs.coveo.com/en/417/).\n */\nexport class ResultListEvents {\n  /**\n   * Triggered when the result list has just finished rendering the current page of results.\n   *\n   * @type {string} The string value is `newResultsDisplayed`.\n   */\n  public static newResultsDisplayed = 'newResultsDisplayed';\n\n  /**\n   * Triggered each time the result list has just finished rendering a single result.\n   *\n   * All `newResultDisplayed` event handlers receive a\n   * [`DisplayedNewResultEventArgs`]{@link IDisplayedNewResultEventArgs} object as an argument.\n   *\n   * @type {string} The string value is `newResultDisplayed`.\n   */\n  public static newResultDisplayed = 'newResultDisplayed';\n\n  /**\n   * Triggered by the [`ResultLink`]{@link ResultLink} result template component when its\n   * [`openQuickview`]{@link ResultLink.options.openQuickview} option is set to `true` and the end user clicks the\n   * result link. The [`Quickview`]{@link Quickview} component listens to this event to be able to open the quickview\n   * modal window in reaction.\n   *\n   * See also the [`openQuickview`]{@link QuickviewEvents.openQuickview} event (which is identical to this one, except\n   * that it is triggered by the [`QuickviewDocument`] result template component instead).\n   *\n   * All `openQuickview` event handlers receive an [`OpenQuickviewEventArgs`]{@link IOpenQuickviewEventArgs} object as\n   * an argument\n   *\n   * @type {string} The string value is `openQuickview`.\n   */\n  public static openQuickview = 'openQuickview';\n\n  /**\n   * Triggered by the [`ResultLayout`]{@link ResultLayout} component whenever the current result layout changes (see\n   * [Result Layouts](https://docs.coveo.com/en/360/)).\n   *\n   * All `changeLayout` event handlers receive a [`ChangeLayoutEventArgs`]{@link IChangeLayoutEventArgs} object as an\n   * argument.\n   *\n   * @type {string} The string value is `changeLayout`.\n   */\n  public static changeLayout = 'changeLayout';\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/events/ResultListEvents.ts","import { Initialization, LazyInitialization, EagerInitialization } from './Initialization';\nimport { Assert } from '../../misc/Assert';\nimport { QueryController } from '../../controllers/QueryController';\nimport { QueryStateModel, setState } from '../../models/QueryStateModel';\nimport { IQueryResult } from '../../rest/QueryResult';\nimport { IQueryResults } from '../../rest/QueryResults';\nimport { IAnalyticsClient } from '../Analytics/AnalyticsClient';\nimport { InitializationEvents } from '../../events/InitializationEvents';\nimport { $$ } from '../../utils/Dom';\nimport { IAnalyticsActionCause } from '../Analytics/AnalyticsActionListMeta';\nimport { IStringMap } from '../../rest/GenericParam';\nimport { BaseComponent } from '../Base/BaseComponent';\nimport { Component } from '../Base/Component';\nimport { IStandaloneSearchInterfaceOptions, SearchInterface } from '../SearchInterface/SearchInterface';\nimport { IRecommendationOptions } from '../Recommendation/Recommendation';\nimport * as _ from 'underscore';\nimport { PublicPathUtils } from '../../utils/PublicPathUtils';\nimport { Logger } from '../../misc/Logger';\nimport { Analytics } from '../Analytics/Analytics';\nimport { AnalyticsUtils } from '../../utils/AnalyticsUtils';\n\nlet registeredNamedMethodsLogger = new Logger('RegisteredNamedMethods');\n\n/**\n * Initialize the framework with a basic search interface. Calls {@link Initialization.initSearchInterface}.\n *\n * If using the jQuery extension, this is called using <code>$('#root').coveo('init');</code>.\n * @param element The root of the interface to initialize.\n * @param options JSON options for the framework (e.g.: <code>{Searchbox : {enableSearchAsYouType : true}}</code>).\n * @returns {Promise<{elem: HTMLElement}>}\n */\nexport function init(element: HTMLElement, options: any = {}) {\n  return Initialization.initializeFramework(element, options, () => {\n    return Initialization.initSearchInterface(element, options);\n  });\n}\n\nInitialization.registerNamedMethod('init', (element: HTMLElement, options: any = {}) => {\n  return init(element, options);\n});\n\n/**\n * Initialize the framework with a standalone search box. Calls {@link Initialize.initStandaloneSearchInterface}.\n *\n * If using the jQuery extension, this is called using <code>$('#root').coveo('initSearchbox');</code>.\n * @param element The root of the interface to initialize.\n * @param searchPageUri The search page on which to redirect when there is a query.\n * @param options JSON options for the framework (e.g.: <code>{Searchbox : {enableSearchAsYouType : true}}</code>).\n * @returns {Promise<{elem: HTMLElement}>}\n */\nexport function initSearchbox(element: HTMLElement, searchPageUri: string, options: any = {}) {\n  Assert.isNonEmptyString(searchPageUri);\n  var searchInterfaceOptions = <IStandaloneSearchInterfaceOptions>{};\n  searchInterfaceOptions.searchPageUri = searchPageUri;\n  searchInterfaceOptions.autoTriggerQuery = false;\n  searchInterfaceOptions.enableHistory = false;\n  searchInterfaceOptions = { ...searchInterfaceOptions, ...options.StandaloneSearchInterface };\n\n  options = _.extend({}, options, { StandaloneSearchInterface: searchInterfaceOptions });\n  return Initialization.initializeFramework(element, options, () => {\n    return Initialization.initStandaloneSearchInterface(element, options);\n  });\n}\n\nInitialization.registerNamedMethod('initSearchbox', (element: HTMLElement, searchPageUri: string, options: any = {}) => {\n  initSearchbox(element, searchPageUri, options);\n});\n\n/**\n * Initialize the framework with a recommendation interface. Calls {@link Initialization.initRecommendationInterface}.\n *\n * If using the jQuery extension, this is called using <code>$('#root').coveo('initRecommendation');</code>.\n * @param element The root of the interface to initialize.\n * @param mainSearchInterface The search interface to link with the recommendation interface (see {@link Recommendation}).\n * @param userContext The user context to pass with the query generated in the recommendation interface (see {@link Recommendation}).\n * @param options JSON options for the framework (e.g.: <code>{Searchbox : {enableSearchAsYouType: true}}</code>).\n * @returns {Promise<{elem: HTMLElement}>}\n */\nexport function initRecommendation(\n  element: HTMLElement,\n  mainSearchInterface?: HTMLElement,\n  userContext?: { [name: string]: any },\n  options: any = {}\n) {\n  var recommendationOptions = <IRecommendationOptions>{};\n  recommendationOptions.mainSearchInterface = mainSearchInterface;\n  recommendationOptions.userContext = userContext;\n  recommendationOptions.enableHistory = false;\n  options = _.extend({}, options, { Recommendation: recommendationOptions });\n\n  // Recommendation component is special : It is not explicitely registered like other \"basic\" components since it's a full search interface.\n  // Since it's not done using the \"standard\" path, we need to register this manually here\n  // This ensure that we can always call `getLazyRegisteredComponent`, no matter if it was loaded from eager or lazy mode.\n  if (window['Coveo']['Recommendation'] != null) {\n    LazyInitialization.registerLazyComponent('Recommendation', () => Promise.resolve(window['Coveo']['Recommendation']));\n    EagerInitialization.eagerlyLoadedComponents['Recommendation'] = window['Coveo']['Recommendation'];\n  }\n\n  return LazyInitialization.getLazyRegisteredComponent('Recommendation').then(() => {\n    return Initialization.initializeFramework(element, options, () => {\n      return Initialization.initRecommendationInterface(element, options);\n    });\n  });\n}\n\nInitialization.registerNamedMethod(\n  'initRecommendation',\n  (element: HTMLElement, mainSearchInterface: HTMLElement, userContext: any = {}, options: any = {}) => {\n    initRecommendation(element, mainSearchInterface, userContext, options);\n  }\n);\n\n/**\n * Execute a standard query. Active component in the interface will react to events/ push data in the query / handle the query success or failure as needed.\n *\n * It triggers a standard query flow for which the standard component will perform their expected behavior.\n *\n * If you wish to only perform a query on the index to retrieve results (without the component reacting), look into {@link SearchInterface} instead.\n *\n * Calling this method is the same as calling {@link QueryController.executeQuery}.\n *\n * @param element The root of the interface to initialize.\n * @returns {Promise<IQueryResults>}\n */\nexport function executeQuery(element: HTMLElement): Promise<IQueryResults> {\n  Assert.exists(element);\n\n  var queryController = <QueryController>Component.resolveBinding(element, QueryController);\n  Assert.exists(queryController);\n  return queryController.executeQuery();\n}\n\nInitialization.registerNamedMethod('executeQuery', (element: HTMLElement) => {\n  return executeQuery(element);\n});\n\n/**\n * Performs read and write operations on the [`QueryStateModel`]{@link QueryStateModel} instance of the search\n * interface. See [State](https://docs.coveo.com/en/344/).\n *\n * Can perform the following actions:\n *\n * - Get the `QueryStateModel` instance:\n * ```javascript\n * Coveo.state(element);\n * ```\n *\n * - Get the value of a single state attribute from the `QueryStateModel` instance:\n * ```javascript\n * // You can replace `q` with any registered state attribute.\n * Coveo.state(element, \"q\");\n * ```\n *\n * - Set the value of a single state attribute in the `QueryStateModel` instance:\n * ```javascript\n * // You can replace `q` with any registered state attribute.\n * Coveo.state(element, \"q\", \"my new value\");\n * ```\n *\n * - Set multiple state attribute values in the `QueryStateModel` instance:\n * ```javascript\n * // You can replace `q` and `sort` with any registered state attributes.\n * Coveo.state(element, {\n *     \"q\" : \"my new value\",\n *     \"sort\" : \"relevancy\"\n * });\n * ```\n *\n * **Note:**\n * > When setting one or several state attribute values with this function, you can pass an additional argument to set\n * > the `silent` attribute to `true` in order to prevent the state change from triggering state change events.\n * >\n * > **Example:**\n * > ```javascript\n * > Coveo.state(element, \"q\", \"my new value\", { \"silent\" : true });\n * > ```\n *\n * @param element The root of the interface whose `QueryStateModel` instance the function should interact with.\n * @param args The arguments that determine the action to perform on the `QueryStateModel` instance.\n * @returns {any} Depends on the action performed.\n */\nexport function state(element: HTMLElement, ...args: any[]): any {\n  Assert.exists(element);\n  var model = <QueryStateModel>Component.resolveBinding(element, QueryStateModel);\n  return setState(model, args);\n}\n\nInitialization.registerNamedMethod('state', (element: HTMLElement, ...args: any[]): any => {\n  if (args.length != 0) {\n    return state.apply(undefined, [element].concat(args));\n  } else {\n    return state.apply(undefined, [element]);\n  }\n});\n\n/**\n * Get the component bound on the given `HTMLElement`.\n * @param element The `HTMLElement` for which to get the component instance.\n * @param componentClass If multiple components are bound to a single `HTMLElement`, you need to specify which components you wish to get.\n * @param noThrow By default, the GET method will throw if there is no component bound, or if there are multiple component and no `componentClass` is specified. This deletes the error if set to true.\n * @returns {Component}\n */\nexport function get(element: HTMLElement, componentClass?, noThrow?: boolean): BaseComponent {\n  Assert.exists(element);\n  return Component.get(element, componentClass, noThrow);\n}\n\nInitialization.registerNamedMethod(\n  'get',\n  (element: HTMLElement, componentClass?: any, noThrow?: boolean): BaseComponent => {\n    return get(element, componentClass, noThrow);\n  }\n);\n\nexport function result(element: HTMLElement, noThrow?: boolean): IQueryResult {\n  Assert.exists(element);\n  return Component.getResult(element, noThrow);\n}\n\nInitialization.registerNamedMethod(\n  'result',\n  (element: HTMLElement, noThrow?: boolean): IQueryResult => {\n    return result(element, noThrow);\n  }\n);\n\nfunction getCoveoAnalyticsClient(element: HTMLElement): IAnalyticsClient {\n  var analytics = getCoveoAnalytics(element);\n  if (analytics) {\n    return analytics.client;\n  } else {\n    return undefined;\n  }\n}\n\nfunction getCoveoAnalytics(element: HTMLElement) {\n  var analyticsElement = element.classList.contains(Component.computeCssClassNameForType('Analytics'))\n    ? element\n    : $$(element).find(Component.computeSelectorForType(`Analytics`));\n  if (analyticsElement) {\n    return <Analytics>Component.resolveBinding(analyticsElement, Analytics);\n  } else {\n    return undefined;\n  }\n}\n\n/**\n * Finds the [`Analytics`]{@link Analytics} component instance, and uses it to log a `Custom` usage analytics event.\n *\n * You can use `Custom` events to create custom reports, or to track events which are neither queries nor item\n * views.\n *\n * @param element The root of the search interface which contains the [`Analytics`]{@link Analytics} component.\n * @param customEventCause The cause of the event.\n * @param metadata The metadata you want to use to create custom dimensions. Metadata can contain as many key-value\n * pairs as you need. Each key must contain only alphanumeric characters and underscores. The Coveo Usage Analytics\n * service automatically converts white spaces to underscores, and uppercase characters to lowercase characters in key\n * names. Each value must be a simple string. If you do not need to log metadata, you can simply pass an empty JSON\n * ( `{}` ).\n * @param result The query result that relates to the custom event, if applicable.\n */\nexport function logCustomEvent<TMeta extends IStringMap<any>>(\n  element: HTMLElement,\n  customEventCause: IAnalyticsActionCause,\n  metadata: TMeta,\n  result?: IQueryResult\n) {\n  var client = getCoveoAnalyticsClient(element);\n  if (client) {\n    client.logCustomEvent<TMeta>(customEventCause, metadata, element, result);\n  }\n}\n\nInitialization.registerNamedMethod(\n  'logCustomEvent',\n  (element: HTMLElement, customEventCause: IAnalyticsActionCause, metadata: any, result?: IQueryResult) => {\n    logCustomEvent(element, customEventCause, metadata, result);\n  }\n);\n\n/**\n * Finds the [`Analytics`]{@link Analytics} component instance, and uses it to log a `Search` usage analytics event.\n *\n * A `Search` event is actually sent to the Coveo Usage Analytics service only after the query successfully returns (not\n * immediately after calling this method). Therefore, it is important to call this method **before** executing the\n * query. Otherwise, the `Search` event will not be logged, and you will get a warning message in the console. See\n * [Logging Your Own Search Events](https://docs.coveo.com/en/2726/#logging-your-own-search-events).\n *\n * @param element The root of the search interface which contains the [`Analytics`]{@link Analytics} component.\n * @param searchEventCause The cause of the event.\n * @param metadata The metadata you want to use to create custom dimensions. Metadata can contain as many key-value\n * pairs as you need. Each key must contain only alphanumeric characters and underscores. The Coveo Usage Analytics\n * service automatically converts white spaces to underscores, and uppercase characters to lowercase characters in key\n * names. Each value must be a simple string. If you do not need to log metadata, you can simply pass an empty JSON\n * ( `{}` ).\n */\nexport function logSearchEvent(element: HTMLElement, searchEventCause: IAnalyticsActionCause, metadata: IStringMap<string>) {\n  var client = getCoveoAnalyticsClient(element);\n  if (client) {\n    client.logSearchEvent<any>(searchEventCause, metadata);\n  }\n}\n\nInitialization.registerNamedMethod(\n  'logSearchEvent',\n  (element: HTMLElement, searchEventCause: IAnalyticsActionCause, metadata: IStringMap<string>) => {\n    logSearchEvent(element, searchEventCause, metadata);\n  }\n);\n\n/**\n * Finds the [`Analytics`]{@link Analytics} component instance, and uses it to log a `SearchAsYouType` usage analytics\n * event.\n *\n * This function is very similar to the `logSearchEvent` function, except that `logSearchAsYouTypeEvent` should, by\n * definition, be called more frequently. Consequently, in order to avoid logging every single partial query, the\n * `PendingSearchAsYouTypeEvent` takes care of logging only the \"relevant\" last event: an event that occurs after 5\n * seconds have elapsed without any event being logged, or an event that occurs after another part of the interface\n * triggers a search event.\n *\n * It is important to call this method **before** executing the query. Otherwise, no `SearchAsYouType` event will be\n * logged, and you will get a warning message in the console. See\n * [Logging Your Own Search Events](https://docs.coveo.com/en/2726/#logging-your-own-search-events).\n *\n * @param element The root of the search interface which contains the [`Analytics`]{@link Analytics} component.\n * @param searchAsYouTypeEventCause The cause of the event.\n * @param metadata The metadata you want to use to create custom dimensions. Metadata can contain as many key-value\n * pairs as you need. Each key must contain only alphanumeric characters and underscores. The Coveo Usage Analytics\n * service automatically converts white spaces to underscores, and uppercase characters to lowercase characters in key\n * names. Each value must be a simple string. If you do not need to log metadata, you can simply pass an empty JSON\n * ( `{}` ).\n */\nexport function logSearchAsYouTypeEvent<TMeta extends IStringMap<any>>(\n  element: HTMLElement,\n  searchAsYouTypeEventCause: IAnalyticsActionCause,\n  metadata: TMeta\n) {\n  var client = getCoveoAnalyticsClient(element);\n  if (client) {\n    client.logSearchAsYouType<TMeta>(searchAsYouTypeEventCause, metadata);\n  }\n}\n\nInitialization.registerNamedMethod(\n  'logSearchAsYouTypeEvent',\n  (element: HTMLElement, searchAsYouTypeEventCause: IAnalyticsActionCause, metadata: IStringMap<string>) => {\n    logSearchAsYouTypeEvent(element, searchAsYouTypeEventCause, metadata);\n  }\n);\n\n/**\n * Finds the [`Analytics`]{@link Analytics} component instance, and uses it to log a `Click` usage analytics event.\n *\n * A `Click` event corresponds to an item view (e.g., clicking on a {@link ResultLink} or opening a {@link Quickview}).\n *\n * `Click` events are immediately sent to the Coveo Usage Analytics service.\n *\n * @param element The root of the search interface which contains the [`Analytics`]{@link Analytics} component.\n * @param clickEventCause The cause of the event.\n * @param metadata The metadata you want to use to create custom dimensions. Metadata can contain as many key-value\n * pairs as you need. Each key must contain only alphanumeric characters and underscores. The Coveo Usage Analytics\n * service automatically converts white spaces to underscores, and uppercase characters to lowercase characters in key\n * names. Each value must be a simple string. If you do not need to log metadata, you can simply pass an empty JSON\n * ( `{}` ).\n * @param result The result that was clicked.\n */\nexport function logClickEvent<TMeta extends IStringMap<any>>(\n  element: HTMLElement,\n  clickEventCause: IAnalyticsActionCause,\n  metadata: TMeta,\n  result: IQueryResult\n) {\n  var client = getCoveoAnalyticsClient(element);\n  if (client) {\n    client.logClickEvent<TMeta>(clickEventCause, metadata, result, element);\n  }\n}\n\nInitialization.registerNamedMethod(\n  'logClickEvent',\n  (element: HTMLElement, clickEventCause: IAnalyticsActionCause, metadata: IStringMap<string>, result: IQueryResult) => {\n    logClickEvent(element, clickEventCause, metadata, result);\n  }\n);\n\n/**\n * Pass options to the framework, before it is initialized ({@link init}).<br/>\n * All the options passed with this calls will be merged together on initialization.\n * @param element The root of the interface for which you wish to set options.\n * @param optionsToSet JSON options for the framework (e.g.: <code>{Searchbox : {enableSearchAsYouType: true}}</code>).\n */\nexport function options(element: HTMLElement, optionsToSet: any = {}) {\n  Initialization.registerDefaultOptions(element, optionsToSet);\n}\n\nInitialization.registerNamedMethod('options', (element: HTMLElement, optionsToSet: any = {}) => {\n  options(element, optionsToSet);\n});\n\n/**\n * Patch the given `methodName` on an instance of a component bound to an `HTMLElement` with a new handler.\n * @param element\n * @param methodName\n * @param handler\n */\nexport function patch(element: HTMLElement, methodName: string, handler: (...args: any[]) => any) {\n  Initialization.monkeyPatchComponentMethod(methodName, element, handler);\n}\n\nInitialization.registerNamedMethod('patch', (element?: HTMLElement, methodName?: string, handler?: (...args: any[]) => any) => {\n  patch(element, methodName, handler);\n});\n\nexport function initBox(element: HTMLElement, ...args: any[]) {\n  var type,\n    options: any = {},\n    injectMarkup;\n  // This means : initBox, no type (no injection) and no options\n  if (args.length == 0) {\n    type = 'Standard';\n    injectMarkup = false;\n  } else if (args.length == 1) {\n    // 1 arg, might be options or type\n    // This mean a type (with injection) and no options\n    if (typeof args[0] == 'string') {\n      type = args[0];\n      injectMarkup = true;\n    } else if (typeof args[0] == 'object') {\n      // This means no type(no injection) and with options\n      type = 'Standard';\n      injectMarkup = false;\n      options = args[0];\n    } else {\n      Assert.fail('Invalid parameters to init a box');\n    }\n  } else if (args.length == 2) {\n    // 2 args means both options and type (with injection);\n    type = args[0];\n    options = args[1];\n    injectMarkup = true;\n  }\n  var merged: any = {};\n  merged[type || 'Container'] = _.extend({}, options.SearchInterface, options[type]);\n  options = _.extend({}, options, merged);\n  Initialization.initializeFramework(element, options, () => {\n    return Initialization.initBoxInterface(element, options, type, injectMarkup);\n  });\n}\n\nInitialization.registerNamedMethod('initBox', (element?: HTMLElement, ...args: any[]) => {\n  initBox(element, args);\n});\n\nexport function nuke(element: HTMLElement) {\n  $$(element).trigger(InitializationEvents.nuke);\n}\n\nInitialization.registerNamedMethod('nuke', (element: HTMLElement) => {\n  nuke(element);\n});\n\n/**\n * Sets the path from where the chunks used for lazy loading will be loaded. In some cases, in IE11, we cannot automatically detect it, use this instead.\n * @param path This should be the path of the Coveo script. It should also have a trailing slash.\n */\nexport function configureResourceRoot(path: string) {\n  PublicPathUtils.configureResourceRoot(path);\n}\n\nInitialization.registerNamedMethod('configureResourceRoot', (path: string) => {\n  configureResourceRoot(path);\n});\n\n/**\n * Re-enables an [`Analytics`]{@link Analytics} component if it was previously disabled.\n * @param searchRoot\n * The element to scan for an Analytics component.\n * This can be an element onto which a component instance is bound\n * (e.g., document.querySelector(\".CoveoAnalytics\"),\n * or an ancestor of such an element (e.g., document.getElementById(\"search\").\n *\n * @availablesince [October 2019 Release (v2.7219)](https://docs.coveo.com/en/3084/)\n */\nexport function enableAnalytics(searchRoot = document.querySelector(Component.computeSelectorForType(SearchInterface.ID)) as HTMLElement) {\n  const analytics = getCoveoAnalytics(searchRoot) as Analytics;\n  if (!analytics) {\n    return registeredNamedMethodsLogger.warn(\n      'Could not enable analytics because no Analytics component could be found in the specified searchRoot.'\n    );\n  }\n  analytics.enable();\n}\n\nInitialization.registerNamedMethod('enableAnalytics', () => {\n  enableAnalytics();\n});\n\n/**\n * Removes all session information stored in the browser (e.g., analytics visitor cookies, action history, etc.)\n * @param searchRoot\n * The element to scan for an Analytics component.\n * This can be an element onto which a component instance is bound\n * (e.g., document.querySelector(\".CoveoAnalytics\"),\n * or an ancestor of such an element (e.g., document.getElementById(\"search\").\n */\nexport function clearLocalData(searchRoot = document.querySelector(Component.computeSelectorForType(SearchInterface.ID)) as HTMLElement) {\n  const analytics = getCoveoAnalytics(searchRoot) as Analytics;\n  if (!analytics) {\n    return registeredNamedMethodsLogger.warn(\n      'Could not clear local data because no Analytics component could be found in the specified searchRoot.'\n    );\n  }\n  analytics.clearLocalData();\n}\n\nInitialization.registerNamedMethod('clearLocalData', () => {\n  clearLocalData();\n});\n\n/**\n * Disables an [`Analytics`]{@link Analytics} component and clears local data.\n * @param searchRoot\n * The element to scan for an Analytics component.\n * This can be an element onto which a component instance is bound\n * (e.g., document.querySelector(\".CoveoAnalytics\"),\n * or an ancestor of such an element (e.g., document.getElementById(\"search\").\n *\n * @availablesince [October 2019 Release (v2.7219)](https://docs.coveo.com/en/3084/)\n */\nexport function disableAnalytics(searchRoot = document.querySelector(Component.computeSelectorForType(SearchInterface.ID)) as HTMLElement) {\n  const analytics = getCoveoAnalytics(searchRoot) as Analytics;\n  if (!analytics) {\n    return registeredNamedMethodsLogger.warn(\n      'Could not disable analytics because no Analytics component could be found in the specified searchRoot.'\n    );\n  }\n  analytics.disable();\n}\n\nInitialization.registerNamedMethod('disableAnalytics', () => {\n  disableAnalytics();\n});\n\n/**\n * Adds a new analytics action cause to the ActionCauseList.\n * Adding a new actionCause allows to specify a custom user-action when triggering a search event.\n * @param newActionCause\n * (e.g.,\n * {\n *  Name: \"newActionCause\",\n *  Type: \"exampleType\"\n * },\n */\nexport function addActionCauseToList(newActionCause: IAnalyticsActionCause) {\n  AnalyticsUtils.addActionCauseToList(newActionCause);\n}\n\nInitialization.registerNamedMethod('addActionCauseToList', (newActionCause: IAnalyticsActionCause) => {\n  addActionCauseToList(newActionCause);\n});\n\n/**\n * Removes an actionCause from the ActionCauseList.\n * @param actionCauseToRemoveName\n */\nexport function removeActionCauseFromList(actionCauseToRemoveName: string) {\n  AnalyticsUtils.removeActionCauseFromList(actionCauseToRemoveName);\n}\n\nInitialization.registerNamedMethod('removeActionCauseFromList', (actionCauseToRemoveName: string) => {\n  removeActionCauseFromList(actionCauseToRemoveName);\n});\n\n/**\n * Asynchronously loads a module, or chunk.\n *\n * This is especially useful when you want to extend a base component, and make sure the lazy component loading process\n * recognizes it (see [Lazy Versus Eager Component Loading](https://docs.coveo.com/en/295/)).\n *\n * **Example:**\n *\n * ```typescript\n * export function lazyCustomFacet() {\n *   return Coveo.load<Facet>('Facet').then((Facet) => {\n *     class CustomFacet extends Facet {\n *       [ ... ]\n *     };\n *     Coveo.Initialization.registerAutoCreateComponent(CustomFacet);\n *     return CustomFacet;\n *   });\n * };\n *\n * Coveo.LazyInitialization.registerLazyComponent('CustomFacet', lazyCustomFacet);\n * ```\n *\n * You can also use this function to assert a component is fully loaded in your page before executing any code relating\n * to it.\n *\n * **Example:**\n *\n * > You could do `Coveo.load('Searchbox').then((Searchbox) => {})` to load the [`Searchbox`]{@link Searchbox}\n * > component, if it is not already loaded in your search page.\n *\n * @param id The identifier of the module you wish to load. In the case of components, this identifier is the component\n * name (e.g., `Facet`, `Searchbox`).\n * @returns {Promise} A Promise of the module, or chunk.\n */\nexport function load<T>(id: string): Promise<T> {\n  if (LazyInitialization.lazyLoadedComponents[id] != null) {\n    return <Promise<T>>(<any>LazyInitialization.getLazyRegisteredComponent(id));\n  } else if (LazyInitialization.lazyLoadedModule[id] != null) {\n    return <Promise<T>>LazyInitialization.getLazyRegisteredModule(id);\n  } else {\n    return Promise.reject(`Module ${id} is not available`);\n  }\n}\n\nInitialization.registerNamedMethod('require', (modules: string) => {\n  return load(modules);\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Base/RegisteredNamedMethods.ts","import * as _ from 'underscore';\n\nexport class Defer {\n  private static functions = [];\n\n  static defer(code: () => void) {\n    Defer.functions.push(code);\n    Defer.arm();\n  }\n\n  static flush() {\n    while (Defer.popOne()) {}\n  }\n\n  private static arm() {\n    _.defer(() => {\n      if (Defer.popOne()) {\n        Defer.arm();\n      }\n    });\n  }\n\n  private static popOne() {\n    if (Defer.functions.length > 0) {\n      var fun = Defer.functions[0];\n      Defer.functions = _.rest(Defer.functions);\n      fun();\n      return Defer.functions.length > 0;\n    } else {\n      return false;\n    }\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/misc/Defer.ts","export default function(a, b) {\n  return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-array/src/ascending.js\n// module id = null\n// module chunks = ","import ascending from \"./ascending\";\n\nexport default function(compare) {\n  if (compare.length === 1) compare = ascendingComparator(compare);\n  return {\n    left: function(a, x, lo, hi) {\n      if (lo == null) lo = 0;\n      if (hi == null) hi = a.length;\n      while (lo < hi) {\n        var mid = lo + hi >>> 1;\n        if (compare(a[mid], x) < 0) lo = mid + 1;\n        else hi = mid;\n      }\n      return lo;\n    },\n    right: function(a, x, lo, hi) {\n      if (lo == null) lo = 0;\n      if (hi == null) hi = a.length;\n      while (lo < hi) {\n        var mid = lo + hi >>> 1;\n        if (compare(a[mid], x) > 0) hi = mid;\n        else lo = mid + 1;\n      }\n      return lo;\n    }\n  };\n}\n\nfunction ascendingComparator(f) {\n  return function(d, x) {\n    return ascending(f(d), x);\n  };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-array/src/bisector.js\n// module id = null\n// module chunks = ","import ascending from \"./ascending\";\nimport bisector from \"./bisector\";\n\nvar ascendingBisect = bisector(ascending);\nexport var bisectRight = ascendingBisect.right;\nexport var bisectLeft = ascendingBisect.left;\nexport default bisectRight;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-array/src/bisect.js\n// module id = null\n// module chunks = ","export default function(array, f) {\n  if (f == null) f = pair;\n  var i = 0, n = array.length - 1, p = array[0], pairs = new Array(n < 0 ? 0 : n);\n  while (i < n) pairs[i] = f(p, p = array[++i]);\n  return pairs;\n}\n\nexport function pair(a, b) {\n  return [a, b];\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-array/src/pairs.js\n// module id = null\n// module chunks = ","import {pair} from \"./pairs\";\n\nexport default function(values0, values1, reduce) {\n  var n0 = values0.length,\n      n1 = values1.length,\n      values = new Array(n0 * n1),\n      i0,\n      i1,\n      i,\n      value0;\n\n  if (reduce == null) reduce = pair;\n\n  for (i0 = i = 0; i0 < n0; ++i0) {\n    for (value0 = values0[i0], i1 = 0; i1 < n1; ++i1, ++i) {\n      values[i] = reduce(value0, values1[i1]);\n    }\n  }\n\n  return values;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-array/src/cross.js\n// module id = null\n// module chunks = ","export default function(a, b) {\n  return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-array/src/descending.js\n// module id = null\n// module chunks = ","export default function(x) {\n  return x === null ? NaN : +x;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-array/src/number.js\n// module id = null\n// module chunks = ","import number from \"./number\";\n\nexport default function(values, valueof) {\n  var n = values.length,\n      m = 0,\n      i = -1,\n      mean = 0,\n      value,\n      delta,\n      sum = 0;\n\n  if (valueof == null) {\n    while (++i < n) {\n      if (!isNaN(value = number(values[i]))) {\n        delta = value - mean;\n        mean += delta / ++m;\n        sum += delta * (value - mean);\n      }\n    }\n  }\n\n  else {\n    while (++i < n) {\n      if (!isNaN(value = number(valueof(values[i], i, values)))) {\n        delta = value - mean;\n        mean += delta / ++m;\n        sum += delta * (value - mean);\n      }\n    }\n  }\n\n  if (m > 1) return sum / (m - 1);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-array/src/variance.js\n// module id = null\n// module chunks = ","import variance from \"./variance\";\n\nexport default function(array, f) {\n  var v = variance(array, f);\n  return v ? Math.sqrt(v) : v;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-array/src/deviation.js\n// module id = null\n// module chunks = ","export default function(values, valueof) {\n  var n = values.length,\n      i = -1,\n      value,\n      min,\n      max;\n\n  if (valueof == null) {\n    while (++i < n) { // Find the first comparable value.\n      if ((value = values[i]) != null && value >= value) {\n        min = max = value;\n        while (++i < n) { // Compare the remaining values.\n          if ((value = values[i]) != null) {\n            if (min > value) min = value;\n            if (max < value) max = value;\n          }\n        }\n      }\n    }\n  }\n\n  else {\n    while (++i < n) { // Find the first comparable value.\n      if ((value = valueof(values[i], i, values)) != null && value >= value) {\n        min = max = value;\n        while (++i < n) { // Compare the remaining values.\n          if ((value = valueof(values[i], i, values)) != null) {\n            if (min > value) min = value;\n            if (max < value) max = value;\n          }\n        }\n      }\n    }\n  }\n\n  return [min, max];\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-array/src/extent.js\n// module id = null\n// module chunks = ","var array = Array.prototype;\n\nexport var slice = array.slice;\nexport var map = array.map;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-array/src/array.js\n// module id = null\n// module chunks = ","export default function(x) {\n  return function() {\n    return x;\n  };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-array/src/constant.js\n// module id = null\n// module chunks = ","export default function(x) {\n  return x;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-array/src/identity.js\n// module id = null\n// module chunks = ","export default function(start, stop, step) {\n  start = +start, stop = +stop, step = (n = arguments.length) < 2 ? (stop = start, start = 0, 1) : n < 3 ? 1 : +step;\n\n  var i = -1,\n      n = Math.max(0, Math.ceil((stop - start) / step)) | 0,\n      range = new Array(n);\n\n  while (++i < n) {\n    range[i] = start + i * step;\n  }\n\n  return range;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-array/src/range.js\n// module id = null\n// module chunks = ","var e10 = Math.sqrt(50),\n    e5 = Math.sqrt(10),\n    e2 = Math.sqrt(2);\n\nexport default function(start, stop, count) {\n  var reverse,\n      i = -1,\n      n,\n      ticks,\n      step;\n\n  stop = +stop, start = +start, count = +count;\n  if (start === stop && count > 0) return [start];\n  if (reverse = stop < start) n = start, start = stop, stop = n;\n  if ((step = tickIncrement(start, stop, count)) === 0 || !isFinite(step)) return [];\n\n  if (step > 0) {\n    start = Math.ceil(start / step);\n    stop = Math.floor(stop / step);\n    ticks = new Array(n = Math.ceil(stop - start + 1));\n    while (++i < n) ticks[i] = (start + i) * step;\n  } else {\n    start = Math.floor(start * step);\n    stop = Math.ceil(stop * step);\n    ticks = new Array(n = Math.ceil(start - stop + 1));\n    while (++i < n) ticks[i] = (start - i) / step;\n  }\n\n  if (reverse) ticks.reverse();\n\n  return ticks;\n}\n\nexport function tickIncrement(start, stop, count) {\n  var step = (stop - start) / Math.max(0, count),\n      power = Math.floor(Math.log(step) / Math.LN10),\n      error = step / Math.pow(10, power);\n  return power >= 0\n      ? (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1) * Math.pow(10, power)\n      : -Math.pow(10, -power) / (error >= e10 ? 10 : error >= e5 ? 5 : error >= e2 ? 2 : 1);\n}\n\nexport function tickStep(start, stop, count) {\n  var step0 = Math.abs(stop - start) / Math.max(0, count),\n      step1 = Math.pow(10, Math.floor(Math.log(step0) / Math.LN10)),\n      error = step0 / step1;\n  if (error >= e10) step1 *= 10;\n  else if (error >= e5) step1 *= 5;\n  else if (error >= e2) step1 *= 2;\n  return stop < start ? -step1 : step1;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-array/src/ticks.js\n// module id = null\n// module chunks = ","export default function(values) {\n  return Math.ceil(Math.log(values.length) / Math.LN2) + 1;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-array/src/threshold/sturges.js\n// module id = null\n// module chunks = ","import {slice} from \"./array\";\nimport bisect from \"./bisect\";\nimport constant from \"./constant\";\nimport extent from \"./extent\";\nimport identity from \"./identity\";\nimport range from \"./range\";\nimport {tickStep} from \"./ticks\";\nimport sturges from \"./threshold/sturges\";\n\nexport default function() {\n  var value = identity,\n      domain = extent,\n      threshold = sturges;\n\n  function histogram(data) {\n    var i,\n        n = data.length,\n        x,\n        values = new Array(n);\n\n    for (i = 0; i < n; ++i) {\n      values[i] = value(data[i], i, data);\n    }\n\n    var xz = domain(values),\n        x0 = xz[0],\n        x1 = xz[1],\n        tz = threshold(values, x0, x1);\n\n    // Convert number of thresholds into uniform thresholds.\n    if (!Array.isArray(tz)) {\n      tz = tickStep(x0, x1, tz);\n      tz = range(Math.ceil(x0 / tz) * tz, x1, tz); // exclusive\n    }\n\n    // Remove any thresholds outside the domain.\n    var m = tz.length;\n    while (tz[0] <= x0) tz.shift(), --m;\n    while (tz[m - 1] > x1) tz.pop(), --m;\n\n    var bins = new Array(m + 1),\n        bin;\n\n    // Initialize bins.\n    for (i = 0; i <= m; ++i) {\n      bin = bins[i] = [];\n      bin.x0 = i > 0 ? tz[i - 1] : x0;\n      bin.x1 = i < m ? tz[i] : x1;\n    }\n\n    // Assign data to bins by value, ignoring any outside the domain.\n    for (i = 0; i < n; ++i) {\n      x = values[i];\n      if (x0 <= x && x <= x1) {\n        bins[bisect(tz, x, 0, m)].push(data[i]);\n      }\n    }\n\n    return bins;\n  }\n\n  histogram.value = function(_) {\n    return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(_), histogram) : value;\n  };\n\n  histogram.domain = function(_) {\n    return arguments.length ? (domain = typeof _ === \"function\" ? _ : constant([_[0], _[1]]), histogram) : domain;\n  };\n\n  histogram.thresholds = function(_) {\n    return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), histogram) : threshold;\n  };\n\n  return histogram;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-array/src/histogram.js\n// module id = null\n// module chunks = ","import number from \"./number\";\n\nexport default function(values, p, valueof) {\n  if (valueof == null) valueof = number;\n  if (!(n = values.length)) return;\n  if ((p = +p) <= 0 || n < 2) return +valueof(values[0], 0, values);\n  if (p >= 1) return +valueof(values[n - 1], n - 1, values);\n  var n,\n      i = (n - 1) * p,\n      i0 = Math.floor(i),\n      value0 = +valueof(values[i0], i0, values),\n      value1 = +valueof(values[i0 + 1], i0 + 1, values);\n  return value0 + (value1 - value0) * (i - i0);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-array/src/quantile.js\n// module id = null\n// module chunks = ","import {map} from \"../array\";\nimport ascending from \"../ascending\";\nimport number from \"../number\";\nimport quantile from \"../quantile\";\n\nexport default function(values, min, max) {\n  values = map.call(values, number).sort(ascending);\n  return Math.ceil((max - min) / (2 * (quantile(values, 0.75) - quantile(values, 0.25)) * Math.pow(values.length, -1 / 3)));\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-array/src/threshold/freedmanDiaconis.js\n// module id = null\n// module chunks = ","import deviation from \"../deviation\";\n\nexport default function(values, min, max) {\n  return Math.ceil((max - min) / (3.5 * deviation(values) * Math.pow(values.length, -1 / 3)));\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-array/src/threshold/scott.js\n// module id = null\n// module chunks = ","export default function(values, valueof) {\n  var n = values.length,\n      i = -1,\n      value,\n      max;\n\n  if (valueof == null) {\n    while (++i < n) { // Find the first comparable value.\n      if ((value = values[i]) != null && value >= value) {\n        max = value;\n        while (++i < n) { // Compare the remaining values.\n          if ((value = values[i]) != null && value > max) {\n            max = value;\n          }\n        }\n      }\n    }\n  }\n\n  else {\n    while (++i < n) { // Find the first comparable value.\n      if ((value = valueof(values[i], i, values)) != null && value >= value) {\n        max = value;\n        while (++i < n) { // Compare the remaining values.\n          if ((value = valueof(values[i], i, values)) != null && value > max) {\n            max = value;\n          }\n        }\n      }\n    }\n  }\n\n  return max;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-array/src/max.js\n// module id = null\n// module chunks = ","import number from \"./number\";\n\nexport default function(values, valueof) {\n  var n = values.length,\n      m = n,\n      i = -1,\n      value,\n      sum = 0;\n\n  if (valueof == null) {\n    while (++i < n) {\n      if (!isNaN(value = number(values[i]))) sum += value;\n      else --m;\n    }\n  }\n\n  else {\n    while (++i < n) {\n      if (!isNaN(value = number(valueof(values[i], i, values)))) sum += value;\n      else --m;\n    }\n  }\n\n  if (m) return sum / m;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-array/src/mean.js\n// module id = null\n// module chunks = ","import ascending from \"./ascending\";\nimport number from \"./number\";\nimport quantile from \"./quantile\";\n\nexport default function(values, valueof) {\n  var n = values.length,\n      i = -1,\n      value,\n      numbers = [];\n\n  if (valueof == null) {\n    while (++i < n) {\n      if (!isNaN(value = number(values[i]))) {\n        numbers.push(value);\n      }\n    }\n  }\n\n  else {\n    while (++i < n) {\n      if (!isNaN(value = number(valueof(values[i], i, values)))) {\n        numbers.push(value);\n      }\n    }\n  }\n\n  return quantile(numbers.sort(ascending), 0.5);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-array/src/median.js\n// module id = null\n// module chunks = ","export default function(arrays) {\n  var n = arrays.length,\n      m,\n      i = -1,\n      j = 0,\n      merged,\n      array;\n\n  while (++i < n) j += arrays[i].length;\n  merged = new Array(j);\n\n  while (--n >= 0) {\n    array = arrays[n];\n    m = array.length;\n    while (--m >= 0) {\n      merged[--j] = array[m];\n    }\n  }\n\n  return merged;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-array/src/merge.js\n// module id = null\n// module chunks = ","export default function(values, valueof) {\n  var n = values.length,\n      i = -1,\n      value,\n      min;\n\n  if (valueof == null) {\n    while (++i < n) { // Find the first comparable value.\n      if ((value = values[i]) != null && value >= value) {\n        min = value;\n        while (++i < n) { // Compare the remaining values.\n          if ((value = values[i]) != null && min > value) {\n            min = value;\n          }\n        }\n      }\n    }\n  }\n\n  else {\n    while (++i < n) { // Find the first comparable value.\n      if ((value = valueof(values[i], i, values)) != null && value >= value) {\n        min = value;\n        while (++i < n) { // Compare the remaining values.\n          if ((value = valueof(values[i], i, values)) != null && min > value) {\n            min = value;\n          }\n        }\n      }\n    }\n  }\n\n  return min;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-array/src/min.js\n// module id = null\n// module chunks = ","export default function(array, indexes) {\n  var i = indexes.length, permutes = new Array(i);\n  while (i--) permutes[i] = array[indexes[i]];\n  return permutes;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-array/src/permute.js\n// module id = null\n// module chunks = ","import ascending from \"./ascending\";\n\nexport default function(values, compare) {\n  if (!(n = values.length)) return;\n  var n,\n      i = 0,\n      j = 0,\n      xi,\n      xj = values[j];\n\n  if (compare == null) compare = ascending;\n\n  while (++i < n) {\n    if (compare(xi = values[i], xj) < 0 || compare(xj, xj) !== 0) {\n      xj = xi, j = i;\n    }\n  }\n\n  if (compare(xj, xj) === 0) return j;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-array/src/scan.js\n// module id = null\n// module chunks = ","export default function(array, i0, i1) {\n  var m = (i1 == null ? array.length : i1) - (i0 = i0 == null ? 0 : +i0),\n      t,\n      i;\n\n  while (m) {\n    i = Math.random() * m-- | 0;\n    t = array[m + i0];\n    array[m + i0] = array[i + i0];\n    array[i + i0] = t;\n  }\n\n  return array;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-array/src/shuffle.js\n// module id = null\n// module chunks = ","export default function(values, valueof) {\n  var n = values.length,\n      i = -1,\n      value,\n      sum = 0;\n\n  if (valueof == null) {\n    while (++i < n) {\n      if (value = +values[i]) sum += value; // Note: zero and null are equivalent.\n    }\n  }\n\n  else {\n    while (++i < n) {\n      if (value = +valueof(values[i], i, values)) sum += value;\n    }\n  }\n\n  return sum;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-array/src/sum.js\n// module id = null\n// module chunks = ","import min from \"./min\";\n\nexport default function(matrix) {\n  if (!(n = matrix.length)) return [];\n  for (var i = -1, m = min(matrix, length), transpose = new Array(m); ++i < m;) {\n    for (var j = -1, n, row = transpose[i] = new Array(n); ++j < n;) {\n      row[j] = matrix[j][i];\n    }\n  }\n  return transpose;\n}\n\nfunction length(d) {\n  return d.length;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-array/src/transpose.js\n// module id = null\n// module chunks = ","import transpose from \"./transpose\";\n\nexport default function() {\n  return transpose(arguments);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-array/src/zip.js\n// module id = null\n// module chunks = ","export {default as bisect, bisectRight, bisectLeft} from \"./bisect\";\nexport {default as ascending} from \"./ascending\";\nexport {default as bisector} from \"./bisector\";\nexport {default as cross} from \"./cross\";\nexport {default as descending} from \"./descending\";\nexport {default as deviation} from \"./deviation\";\nexport {default as extent} from \"./extent\";\nexport {default as histogram} from \"./histogram\";\nexport {default as thresholdFreedmanDiaconis} from \"./threshold/freedmanDiaconis\";\nexport {default as thresholdScott} from \"./threshold/scott\";\nexport {default as thresholdSturges} from \"./threshold/sturges\";\nexport {default as max} from \"./max\";\nexport {default as mean} from \"./mean\";\nexport {default as median} from \"./median\";\nexport {default as merge} from \"./merge\";\nexport {default as min} from \"./min\";\nexport {default as pairs} from \"./pairs\";\nexport {default as permute} from \"./permute\";\nexport {default as quantile} from \"./quantile\";\nexport {default as range} from \"./range\";\nexport {default as scan} from \"./scan\";\nexport {default as shuffle} from \"./shuffle\";\nexport {default as sum} from \"./sum\";\nexport {default as ticks, tickIncrement, tickStep} from \"./ticks\";\nexport {default as transpose} from \"./transpose\";\nexport {default as variance} from \"./variance\";\nexport {default as zip} from \"./zip\";\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-array/src/index.js\n// module id = null\n// module chunks = ","import { Options } from '../misc/Options';\nimport { Utils } from './Utils';\nimport { l } from '../strings/Strings';\nimport * as _ from 'underscore';\nimport * as moment from 'moment';\nimport { Logger } from '../misc/Logger';\n\ndeclare const Globalize;\n\n/**\n * The `IDateToStringOptions` interface describes a set of options to use when converting a standard Date object to a\n * string using the [ `dateToString` ]{@link DateUtils.dateToString}, or the\n * [ `dateTimeToString` ]{@link DateUtils.dateTimeToString} method from the [ `DateUtils` ]{@link DateUtils} class.\n * The precedence orders for the options are:\n * [ `useTodayYesterdayAndTomorrow` ]{@link IDateToStringOptions.useTodayYesterdayAndTomorrow}\n * -> [ `useWeekdayIfThisWeek` ]{@link IDateToStringOptions.useWeekdayIfThisWeek}\n * -> [ `omitYearIfCurrentOne` ]{@link IDateToStringOptions.omitYearIfCurrentOne}\n * -> [ `useLongDateFormat` ]{@link IDateToStringOptions.useLongDateFormat}\n * and [ `alwaysIncludeTime` ]{@link IDateToStringOptions.alwaysIncludeTime}\n * -> [ `includeTimeIfThisWeek` ]{@link IDateToStringOptions.includeTimeIfThisWeek}\n * -> [ `includeTimeIfToday` ]{@link IDateToStringOptions.includeTimeIfToday}.\n */\nexport interface IDateToStringOptions {\n  /**\n   * Contains a standard Date object that specifies the current date and time.\n   *\n   * Default value is `undefined`.\n   */\n  now?: Date;\n\n  /**\n   * Specifies whether to convert the Date object to the localized version of `Today`, `Yesterday`, or `Tomorrow`,\n   * if possible. This option takes precedence over\n   * [ `useWeekdayIfThisWeek` ]{@link IDateToStringOptions.useWeekdayIfThisWeek}.\n   *\n   * **Examples**\n   *\n   * If [ `useTodayYesterdayAndTomorrow` ]{@link IDateToStringOptions.useTodayYesterdayAndTomorrow} is `true`,\n   * and [ `now` ]{@link IDateToStringOptions.now} contains a Date object equivalent to `March 8, 2017`, then:\n   *\n   *  - If the Date object to convert contains a value equivalent to `March 7, 2017`, the resulting string is the\n   *  localized version of `Yesterday`.\n   *\n   *  - If the Date object to convert contains a value equivalent to `March 8, 2017`, the resulting string is the\n   *  localized version of `Today`.\n   *\n   *  - If the Date object to convert contains a value equivalent to `March 9, 2017`, the resulting string is the\n   *  localized version of `Tomorrow`.\n   *\n   * Default value is `true`.\n   */\n  useTodayYesterdayAndTomorrow?: boolean;\n\n  /**\n   * Specifies whether to convert the Date object to the localized version of the corresponding day of the week,\n   * if the date to convert is part of the current week. This option takes precedence over\n   * [ `omitYearIfCurrentOne` ]{@link IDateToStringOptions.omitYearIfCurrentOne}.\n   *\n   * **Examples**\n   *\n   *  If [ `useWeekdayIfThisWeek` ]{@link IDateToStringOptions.useWeekdayIfThisWeek} is `true`\n   *  and [ `now` ]{@link IDateToStringOptions.now} contains a Date object equivalent to `Monday, March 8, 2017`, then:\n   *\n   *   - If the date to convert is equivalent to `Saturday, March 6, 2017`, the resulting string is the localized\n   *   version of `Last Saturday`.\n   *\n   *   - If the date to convert is equivalent to `Thursday, March 11, 2017`, the resulting string is the localized\n   *   version of `Next Thursday`.\n   *\n   * Default value is `true`.\n   */\n  useWeekdayIfThisWeek?: boolean;\n\n  /**\n   * Specifies whether to omit the year from the resulting string when converting the Date object, if the year\n   * is the current one. This option takes precedence over\n   * [ `useLongDateFormat` ]{@link IDateToStringOptions.useLongDateFormat}.\n   *\n   * **Examples**\n   *\n   *  - If the Date object to convert is equivalent to `September 22, 2017`, the resulting string does not contain\n   *  the year (e.g., `September 22`).\n   *\n   *  - If the Date object to convert is equivalent to `September 22, 2016`, the resulting string contains the year\n   *  (e.g., `September 22, 2016`).\n   *\n   * Default value is `true`.\n   */\n  omitYearIfCurrentOne?: boolean;\n\n  /**\n   * Specifies whether to format the resulting string in the long date format (e.g., `Friday, August 04, 2017`).\n   *\n   * Default value is `false`.\n   */\n  useLongDateFormat?: boolean;\n\n  /**\n   * Specifies whether to include the time in the resulting string when converting the Date object (e.g. `May 15, 4:17 PM`)\n   * if the date to convert is equivalent to [ `now` ]{@link IDateToStringOptions.now}.\n   *\n   * **Examples**\n   *\n   * If [ `includeTimeIfToday` ]{@link IDateToStringOptions.includeTimeIfToday} is `true`\n   * and [ `now` ]{@link IDateToStringOptions.now} contains a Date object equivalent to `Monday, March 8, 2017`, then:\n   *\n   *    - If the Date object to convert is equivalent to `2017/03/08 17:23:11`, the resulting string is `3/8/2017, 5:23 PM`.\n   *\n   *    - If the Date object to convert is equivalent to `2017/03/09 17:23:11`, the resulting string is `3/9/2017`.\n   *\n   * Default value is `true`.\n   */\n  includeTimeIfToday?: boolean;\n\n  /**\n   * Specifies whether to include the time in the resulting string when converting the Date object (e.g. `May 15, 4:17 PM`)\n   * if the date to convert within a week from [ `now` ]{@link IDateToStringOptions.now}. This option takes precedence over\n   * [ `includeTimeIfToday` ]{@link IDateToStringOptions.includeTimeIfToday}.\n   *\n   * **Examples**\n   *\n   * If [ `includeTimeIfToday` ]{@link IDateToStringOptions.includeTimeIfToday} is `true`\n   * and [ `now` ]{@link IDateToStringOptions.now} contains a Date object equivalent to `Monday, March 8, 2017`, then:\n   *\n   *    - If the Date object to convert is equivalent to `2017/03/08 17:23:11`, the resulting string is `3/8/2017, 5:23 PM`.\n   *\n   *    - If the Date object to convert is equivalent to `2017/03/09 17:23:11`, the resulting string is `3/9/2017 ,5:23 PM`.\n   *\n   * Default value is `true`.\n   */\n  includeTimeIfThisWeek?: boolean;\n\n  /**\n   * Specifies whether to always include the time in the resulting string when converting the Date object (e.g. `May 15, 4:17 PM`)\n   * This option takes precedence over [ `includeTimeIfThisWeek` ]{@link IDateToStringOptions.includeTimeIfThisWeek}.\n   *\n   * **Example**\n   *\n   * If [ `includeTimeIfToday` ]{@link IDateToStringOptions.includeTimeIfToday} is `true`\n   * and [ `now` ]{@link IDateToStringOptions.now} contains a Date object equivalent to `Monday, March 8, 2017`, then:\n   *\n   *    - If the Date object to convert is equivalent to `2010/03/08 17:23:11`, the resulting string is `3/8/2010, 5:23 PM`.\n   *\n   * Default value is `false`.\n   */\n  alwaysIncludeTime?: boolean;\n  /**\n   * Specifies a custom date format (e.g., dd/MM/yyyy), regardless of browser locale or any other option.\n   *\n   * This option uses the following syntax. All examples use the April 5th, 2018 14:15:34 time.\n   * - `yyyy`: full length year (e.g., 2018)\n   * - `yy`: short length year (e.g., 18)\n   * - `MMMM`: month name (e.g., April)\n   * - `MMM`: shortened month name (e.g., Apr)\n   * - `MM`: month number (e.g., 04)\n   * - `M`: single digit month number for months before October (e.g., 4)\n   * - `dddd`: day name (e.g., Thursday)\n   * - `ddd`: shortened day name (e.g., Thu)\n   * - `dd`: day number (e.g., 05)\n   * - `d`: single digit day for days before the 10th (e.g., 5)\n   * - `hh`: hour, in the 24-hour format (e.g., 14)\n   * - `h`: hour, in the 12-hour format (e.g., 2)\n   * - `mm`: minutes (e.g., 15)\n   * - `ss`: seconds (e.g., 34)\n   */\n  predefinedFormat?: string;\n}\n\nclass DefaultDateToStringOptions extends Options implements IDateToStringOptions {\n  now: Date = moment().toDate();\n  useTodayYesterdayAndTomorrow = true;\n  useWeekdayIfThisWeek = true;\n  omitYearIfCurrentOne = true;\n  useLongDateFormat = false;\n  includeTimeIfToday = true;\n  includeTimeIfThisWeek = true;\n  alwaysIncludeTime = false;\n  predefinedFormat: string = undefined;\n}\n\n/**\n * The `DateUtils` class exposes methods to convert strings, numbers and date objects to standard ISO 8601 Date objects,\n * using the correct culture, language and format. It also offers methods to convert date objects to strings.\n */\nexport class DateUtils {\n  private static momentjsLocaleDataMap: Record<string, moment.Locale> = {};\n\n  // This function is used to call convertToStandardDate for legacy reasons. convertFromJsonDateIfNeeded was refactored to\n  // convertToStandardDate, which would be a breaking change otherwise.\n  static convertFromJsonDateIfNeeded(date: any): Date {\n    return DateUtils.convertToStandardDate(date);\n  }\n\n  /**\n   * Tries to parse an argument of any type to a standard Date object.\n   * @param date The value to parse. Can be of any type (string, number, Date, etc.).\n   * @returns {any} The parsed Date object, or `Invalid Date` if the `date` argument was not recognized as a valid date.\n   */\n  static convertToStandardDate(date: any): Date {\n    if (_.isDate(date)) {\n      return moment(date).toDate();\n    } else if (date !== null && !isNaN(Number(date))) {\n      return moment(Number(date)).toDate();\n    } else if (_.isString(date)) {\n      const dateMoment = moment(date, 'YYYY/MM/DD@HH:mm:ssZ');\n      return dateMoment.toDate();\n    }\n  }\n\n  public static setLocale(): void {\n    DateUtils.saveOriginalMomentLocaleData();\n    moment.updateLocale(DateUtils.momentjsCompatibleLocale, DateUtils.transformGlobalizeCalendarToMomentCalendar());\n    moment.locale(DateUtils.momentjsCompatibleLocale);\n  }\n\n  private static saveOriginalMomentLocaleData() {\n    const locale = DateUtils.momentjsCompatibleLocale;\n    const alreadySaved = DateUtils.momentjsLocaleDataMap[locale] != null;\n\n    if (alreadySaved) {\n      return;\n    }\n\n    DateUtils.momentjsLocaleDataMap[locale] = moment.localeData();\n  }\n\n  /**\n   * Creates a string from a Date object. The resulting string is in the date format required for queries.\n   * @param date The Date object to create a string from.\n   * @returns {string} A string corresponding to the `date` argument value, in the `YYYY/MM/DD` format.\n   */\n  static dateForQuery(date: Date): string {\n    DateUtils.setLocale();\n    const dateMoment = moment(date).format('YYYY/MM/DD');\n    return dateMoment;\n  }\n\n  /**\n   * Creates a string from a Date object. The resulting string is in the datetime format required for queries.\n   * @param date The Date object to create a string from.\n   * @returns {string} A string corresponding to the `date` argument value, in the `YYYY/MM/DD@HH:mm:ss` format.\n   */\n  static dateTimeForQuery(date: Date): string {\n    DateUtils.setLocale();\n    const dateMoment = moment(date).format('YYYY/MM/DD@HH:mm:ss');\n    return dateMoment;\n  }\n\n  /**\n   * Creates a cropped version of a Date object. The resulting object contains no time information.\n   * @param date The original Date object to create a cropped Date object from.\n   * @returns {Date} A cropped Date object corresponding to the `date` argument value, excluding its time information.\n   */\n  static keepOnlyDatePart(date: Date): Date {\n    DateUtils.setLocale();\n    const dateMoment = moment(date);\n    return new Date(dateMoment.year(), dateMoment.month(), dateMoment.date());\n  }\n\n  /**\n   * Creates an offset version of a Date object. The offset is counted in days.\n   * @param date The original Date object to create an offset Date object from.\n   * @param offset The number of days to add to (or subtract from) the `date` argument.\n   * @returns {Date} An offset Date object corresponding to the `date` argument value plus the `offset` value.\n   */\n  static offsetDateByDays(date: Date, offset: number): Date {\n    return moment(date).add(offset, 'days').toDate();\n  }\n\n  private static isTodayYesterdayOrTomorrow(d: Date, options?: IDateToStringOptions): boolean {\n    const dateOnly = moment(DateUtils.keepOnlyDatePart(d));\n    const today = moment(DateUtils.keepOnlyDatePart(options.now));\n    const daysDifference = dateOnly.diff(today, 'days');\n    return daysDifference == 0 || daysDifference == 1 || daysDifference == -1;\n  }\n\n  private static getMomentJsFormat(format: string) {\n    let correctedFormat = format;\n\n    const fourLowercaseY = DateUtils.buildRegexMatchingExactCharSequence('y', 4);\n    correctedFormat = correctedFormat.replace(fourLowercaseY, '$1YYYY');\n\n    const twoLowercaseY = DateUtils.buildRegexMatchingExactCharSequence('y', 2);\n    correctedFormat = correctedFormat.replace(twoLowercaseY, '$1YY');\n\n    const twoLowercaseD = DateUtils.buildRegexMatchingExactCharSequence('d', 2);\n    correctedFormat = correctedFormat.replace(twoLowercaseD, '$1DD');\n\n    const oneLowercaseD = DateUtils.buildRegexMatchingExactCharSequence('d', 1);\n    correctedFormat = correctedFormat.replace(oneLowercaseD, '$1D');\n\n    const twoLowercaseH = DateUtils.buildRegexMatchingExactCharSequence('h', 2);\n    correctedFormat = correctedFormat.replace(twoLowercaseH, '$1H');\n\n    return correctedFormat;\n  }\n\n  private static buildRegexMatchingExactCharSequence(char: string, sequenceLength: number) {\n    const negativeNonCapturingGroup = `(?:([^${char}]|^))`; // look-behind is not supported in Firefox\n    const charSequence = `${char}{${sequenceLength}}`;\n    const negativeLookAhead = `(?!${char})`;\n    const exactSequence = `${negativeNonCapturingGroup}${charSequence}${negativeLookAhead}`;\n\n    return new RegExp(exactSequence, 'g');\n  }\n\n  /**\n   * Creates a string from a Date object. The resulting string is formatted according to a set of options.\n   * This method calls [ `keepOnlyDatePart` ]{@link DateUtils.keepOnlyDatePart} to remove time information from the date.\n   * If you need to create a timestamp, use the [ `dateTimeToString` ]{@link DateUtils.dateTimeToString} method instead.\n   * @param date The Date object to create a string from.\n   * @param options The set of options to apply when formatting the resulting string. If you do not specify a value for\n   * this parameter, the method uses a default set of options.\n   * @returns {string} A date string corresponding to the `date` argument value, formatted according to the specified `options`.\n   */\n  static dateToString(date: Date, options?: IDateToStringOptions): string {\n    DateUtils.setLocale();\n\n    if (Utils.isNullOrUndefined(date)) {\n      new Logger(this).warn(`Impossible to format an undefined or null date.`);\n      return '';\n    }\n\n    options = new DefaultDateToStringOptions().merge(options);\n\n    const dateOnly = moment(DateUtils.keepOnlyDatePart(date));\n    const today = moment(DateUtils.keepOnlyDatePart(options.now));\n\n    if (options.predefinedFormat) {\n      return dateOnly.format(this.getMomentJsFormat(options.predefinedFormat));\n    }\n\n    if (options.useTodayYesterdayAndTomorrow) {\n      if (DateUtils.isTodayYesterdayOrTomorrow(date, options)) {\n        return moment(dateOnly).calendar(moment(today));\n      }\n    }\n\n    const isThisWeek = dateOnly.diff(moment(today), 'weeks') == 0;\n\n    if (options.useWeekdayIfThisWeek && isThisWeek) {\n      if (dateOnly.valueOf() > today.valueOf()) {\n        return l('NextDay', l(dateOnly.format('dddd')));\n      } else if (dateOnly.valueOf() < today.valueOf()) {\n        return l('LastDay', l(dateOnly.format('dddd')));\n      } else {\n        return dateOnly.format('dddd');\n      }\n    }\n\n    if (options.omitYearIfCurrentOne && dateOnly.year() === today.year()) {\n      return dateOnly.format('LL');\n    }\n\n    if (options.useLongDateFormat) {\n      return dateOnly.format(this.longDateFormat);\n    }\n\n    return dateOnly.format('L');\n  }\n\n  private static get longDateFormat() {\n    const momentLocaleData = DateUtils.momentjsLocaleDataMap[DateUtils.momentjsCompatibleLocale];\n\n    return momentLocaleData\n      .longDateFormat('LLLL')\n      .replace(/[h:mA]/g, '')\n      .trim();\n  }\n\n  /**\n   * Creates a string from a Date object. The string corresponds to the time information of the Date object.\n   * @param date The Date object to create a string from.\n   * @param options The set of options to apply when formatting the resulting string. If you do not specify a\n   * value for this parameter, the method uses a default set of options.\n   * @returns {string} A string containing the time information of the `date` argument, and formatted according to the specified `options`.\n   */\n  static timeToString(date: Date, options?: IDateToStringOptions): string {\n    if (Utils.isNullOrUndefined(date)) {\n      return '';\n    }\n    return moment(date).format('h:mm A');\n  }\n\n  /**\n   * Creates a string from a Date object. The resulting string is formatted according to a set of options.\n   * This method calls [ `timeToString` ]{@link DateUtils.timeToString} to add time information to the date.\n   * If you need to create a date string without a timestamp, use the [ `dateToString` ]{@link DateUtils.dateToString} method instead.\n   * @param date The date object to create a string from.\n   * @param options The set of options to apply when formatting the resulting string. If you do not specify a value for\n   * this parameter, the method uses a default set of options.\n   * @returns {string} A date string corresponding to the `date` argument value, formatted according to the specified `options`.\n   */\n  static dateTimeToString(date: Date, options?: IDateToStringOptions): string {\n    DateUtils.setLocale();\n    options = new DefaultDateToStringOptions().merge(options);\n\n    if (Utils.isNullOrUndefined(date)) {\n      new Logger(this).warn(`Impossible to format an undefined or null date.`);\n      return '';\n    }\n\n    if (!moment(date).isValid()) {\n      new Logger(this).warn(`Impossible to format an invalid date: ${date}`);\n      return '';\n    }\n\n    if (options.predefinedFormat) {\n      return moment(date).format(this.getMomentJsFormat(options.predefinedFormat));\n    }\n\n    const today = DateUtils.keepOnlyDatePart(options.now);\n    const datePart = DateUtils.dateToString(date, options);\n    const dateWithoutTime = DateUtils.keepOnlyDatePart(date);\n    const isThisWeek = moment(date).diff(moment(today), 'weeks') == 0;\n    const isToday = dateWithoutTime.valueOf() == today.valueOf();\n\n    const shouldIncludeTime = () => {\n      if (options.alwaysIncludeTime) {\n        return true;\n      }\n      if (options.includeTimeIfThisWeek && isThisWeek) {\n        return true;\n      }\n      if (options.includeTimeIfToday && isToday) {\n        return true;\n      }\n\n      return false;\n    };\n\n    if (shouldIncludeTime()) {\n      return `${datePart}, ${DateUtils.timeToString(date)}`;\n    }\n\n    return datePart;\n  }\n\n  /**\n   * Creates a string from a number. The resulting string is the localized name of the month that corresponds\n   * to this number (e.g., `0` results in the localized version of `January`).\n   * @param month The number to create a string from. Minimum value is `0` (which corresponds to `January`). Maximum\n   * value is `11` (which corresponds to `December`).\n   * @returns {string} A string whose value is the localized name of the corresponding `month`.\n   */\n  static monthToString(month: number): string {\n    DateUtils.setLocale();\n    const date = moment(new Date(1980, month)).toDate();\n    return moment(date).format('MMMM');\n  }\n\n  /**\n   * Validates whether a value is an instance of Date.\n   * @param date The value to verify.\n   * @returns {boolean} `true` if the `date` argument is an instance of Date; `false` otherwise.\n   */\n  static isValid(date: any) {\n    DateUtils.setLocale();\n\n    if (date instanceof Date) {\n      return !isNaN(date.getTime());\n    }\n    return false;\n  }\n\n  /**\n   * Creates a string from two Date objects. The resulting string corresponds to the amount of time between those two dates.\n   * @param from The Date object which contains the \"oldest\" value.\n   * @param to The Date object which contains the \"newest\" value.\n   * @returns {any} A string whose value corresponds to the amount of time between `from` and `to`,\n   * or an empty string if either argument was undefined.\n   */\n  static timeBetween(from: Date, to: Date) {\n    if (Utils.isNullOrUndefined(from) || Utils.isNullOrUndefined(to)) {\n      return '';\n    }\n\n    return (\n      ('0' + ((moment(to).valueOf() - moment(from).valueOf()) / (1000 * 60 * 60)).toFixed()).slice(-2) +\n      ':' +\n      ('0' + (((moment(to).valueOf() - moment(from).valueOf()) % (1000 * 60 * 60)) / (1000 * 60)).toFixed()).slice(-2) +\n      ':' +\n      ('0' + (((moment(to).valueOf() - moment(from).valueOf()) % (1000 * 60)) / 1000).toFixed()).slice(-2)\n    );\n  }\n\n  static get currentGlobalizeCalendar(): GlobalizeCalendar {\n    return Globalize.culture(DateUtils.currentLocale).calendar as GlobalizeCalendar;\n  }\n\n  static get currentLocale() {\n    return String['locale'];\n  }\n\n  static get momentjsCompatibleLocale(): string {\n    let currentLocale = DateUtils.currentLocale;\n\n    // Our cultures.js directory contains 'no' which is the equivalent to 'nn' for momentJS\n    if (currentLocale.toLowerCase() == 'no') {\n      currentLocale = 'nn';\n    } else if (currentLocale.toLowerCase() == 'es-es') {\n      // Our cultures.js directory contains 'es-es' which is the equivalent to 'es' for momentJS\n      currentLocale = 'es';\n    }\n    return currentLocale;\n  }\n\n  static transformGlobalizeCalendarToMomentCalendar(): moment.LocaleSpecification {\n    const cldrToMomentFormat = (cldrFormat: string) => {\n      return cldrFormat.replace(/y/g, 'Y').replace(/d/g, 'D');\n    };\n\n    return {\n      months: DateUtils.currentGlobalizeCalendar.months.names,\n      monthsShort: DateUtils.currentGlobalizeCalendar.months.namesAbbr,\n      weekdays: DateUtils.currentGlobalizeCalendar.days.names,\n      weekdaysShort: DateUtils.currentGlobalizeCalendar.days.namesAbbr,\n      weekdaysMin: DateUtils.currentGlobalizeCalendar.days.namesShort,\n      longDateFormat: {\n        LT: cldrToMomentFormat(DateUtils.currentGlobalizeCalendar.patterns.t),\n        LTS: cldrToMomentFormat(DateUtils.currentGlobalizeCalendar.patterns.T),\n        L: cldrToMomentFormat(DateUtils.currentGlobalizeCalendar.patterns.d),\n        LL: cldrToMomentFormat(DateUtils.currentGlobalizeCalendar.patterns.M),\n        LLL: cldrToMomentFormat(DateUtils.currentGlobalizeCalendar.patterns.f),\n        LLLL: cldrToMomentFormat(DateUtils.currentGlobalizeCalendar.patterns.F)\n      },\n      calendar: {\n        lastDay: `[${l('Yesterday')}]`,\n        sameDay: `[${l('Today')}]`,\n        nextDay: `[${l('Tomorrow')}]`\n      }\n    };\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/DateUtils.ts","// The reference to magic-box with the triple slash is needed for dts-generator\n\nimport { IOmniboxData, IOmniboxDataRow } from '../ui/Omnibox/OmniboxInterface';\nimport { Omnibox } from '../ui/Omnibox/Omnibox';\nimport { Suggestion } from '../magicbox/SuggestionsManager';\nimport { Result } from '../magicbox/Result/Result';\nimport { IQuerySuggestRequest, IQuerySuggestCompletion } from '../rest/QuerySuggest';\n\n/**\n * The `IPopulateOmniboxSuggestionsEventArgs` interface describes the object that all\n * [`populateOmniboxSuggestions`]{@link OmniboxEvents.populateOmniboxSuggestions} event handlers receive as an argument.\n */\nexport interface IPopulateOmniboxSuggestionsEventArgs {\n  /**\n   * The [`Omnibox`]{@link Omnibox} component instance.\n   */\n  omnibox: Omnibox;\n\n  /**\n   * The list of resolved query completion suggestions, and/or query completion suggestion promises.\n   */\n  suggestions: Array<Suggestion[] | Promise<Suggestion[]>>;\n}\n\nexport interface IPopulateOmniboxEventArgs extends IOmniboxData {}\n\nexport interface IPopulateOmniboxEventRow extends IOmniboxDataRow {}\n\nexport interface IOmniboxPreprocessResultForQueryEventArgs {\n  result: Result;\n}\n\nexport interface IBuildingQuerySuggestArgs {\n  payload: IQuerySuggestRequest;\n}\n\nexport interface IQuerySuggestSuccessArgs {\n  completions: IQuerySuggestCompletion[];\n}\n\n/**\n * Describes the object that all [`querySuggestGetFocus`]{@link querySuggestGetFocus} and [`querySuggestSelection`]{@link querySuggestSelection} event handlers receive as an argument.\n */\nexport interface IQuerySuggestSelection {\n  /**\n   * The query suggestion that had focus or was selected.\n   */\n  suggestion: string;\n}\n\n/**\n * The `OmniboxEvents` static class contains the string definitions of all events that strongly relate to the\n * [`Omnibox`]{@link Omnibox} component.\n */\nexport class OmniboxEvents {\n  public static populateOmnibox = 'populateOmnibox';\n\n  /**\n   * Triggered by the [`Omnibox`]{@link Omnibox} component before query completion suggestions are rendered.\n   *\n   * The out-of-the-box Coveo JavaScript Search Framework query completion suggestion addons (see the\n   * [`enableFieldAddon`]{@link Omnibox.options.enableFieldAddon},\n   * [`enableQueryExtensionAddon`]{@link Omnibox.options.enableQueryExtensionAddon}, and\n   * [`enableQuerySuggestAddon`]{@link Omnibox.options.enableQuerySuggestAddon} options of the `Omnibox`) push their\n   * respective suggestions in the argument object which is passed along with this event.\n   *\n   * All `populateOmniboxSuggestions` event handlers receive a\n   * [`PopulateOmniboxSuggestionsEventArgs`]{@link IPopulateOmniboxSuggestionsEventArgs} object as an argument.\n   *\n   * @type {string} The string value is `populateOmniboxSuggestions`.\n   */\n  public static populateOmniboxSuggestions = 'populateOmniboxSuggestions';\n\n  public static omniboxPreprocessResultForQuery = 'omniboxPreprocessResultForQuery';\n\n  /**\n   * Triggered by the [`Omnibox`]{@link Omnibox} component before sending a query suggestion request to the Search API.\n   *\n   * Allows external functions to refine the payload b3efore sending the request.\n   *\n   * This event is only triggered by standard ML-powered query suggestions, and not {@link AnalyticsSuggestions} or {@link FieldSuggestions}.\n   */\n  public static buildingQuerySuggest = 'buildingQuerySuggest';\n  /**\n   * Triggered by the [`Omnibox`]{@link Omnibox} component when query suggestions are received from the Search API.\n   *\n   * Allows external functions to look into the received query suggestions, and modify them if needed.\n   *\n   * This event is only triggered by standard ML-powered query suggestions, and not {@link AnalyticsSuggestions} or {@link FieldSuggestions}.\n   */\n  public static querySuggestSuccess = 'querySuggestSuccess';\n  /**\n   * Triggered by the [`Omnibox`]{@link Omnibox} component when a query suggestion has finished rendering.\n   */\n  public static querySuggestRendered = 'querySuggestRendered';\n  /**\n   * Triggered by the [`Omnibox`]{@link Omnibox} component when a query suggestion gets focus following a mouse hovering or keyboard navigation event.\n   *\n   * All `querySuggestGetFocus` event handlers receive an object implementing the [`IQuerySuggestSelection`]{@link IQuerySuggestSelection} interface as an argument.\n   */\n  public static querySuggestGetFocus = 'querySuggestGetFocus';\n  /**\n   * Triggered by the [`Omnibox`]{@link Omnibox} component when a query suggestion loses focus following a mouse hovering or keyboard navigation event.\n   */\n  public static querySuggestLoseFocus = 'querySuggestLooseFocus';\n  /**\n   * Triggered by the [`Omnibox`]{@link Omnibox} component when a query suggestion is selected by a mouse click or pressing the enter key.\n   *\n   * All `querySuggestSelection` event handlers receive an object implementing the [`IQuerySuggestSelection`]{@link IQuerySuggestSelection} interface as an argument.\n   */\n  public static querySuggestSelection = 'querySuggestSelection';\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/events/OmniboxEvents.ts","/**\n * Represent an item to insert in the breadcrumb\n */\nexport interface IBreadcrumbItem {\n  /**\n   * The HTMLElement to insert in the breadcrumb\n   */\n  element: HTMLElement;\n}\n\n/**\n * Event triggered when populating the breadcrumb\n */\nexport interface IPopulateBreadcrumbEventArgs {\n  breadcrumbs: IBreadcrumbItem[];\n  headingLevel?: number;\n}\n\nexport interface IClearBreadcrumbEventArgs {}\n\n/**\n * This static class is there to contains the different string definition for all the events related to {@link Breadcrumb}.\n */\nexport class BreadcrumbEvents {\n  /**\n   * Triggered when the breadcrumb needs to update its content. External code can use this event to provide bits of HTML that should be included in the breadcrumb.\n   *\n   * All handlers bound to this event will receive a {@link IPopulateBreadcrumbEventArgs} as an argument.\n   */\n  public static populateBreadcrumb = 'populateBreadcrumb';\n  /**\n   * Triggered when the user clicks the Clear All button in the breadcrumb. When this event is raised, every filter that is included in the breadcrumb should be removed.\n   *\n   * This event does not provide custom event data.\n   */\n  public static clearBreadcrumb = 'clearBreadcrumb';\n  public static redrawBreadcrumb = 'redrawBreadcrumb';\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/events/BreadcrumbEvents.ts","import { Assert } from '../../misc/Assert';\nimport { $$ } from '../../utils/Dom';\nimport { Logger } from '../../misc/Logger';\n\ndeclare var Coveo;\n\nexport interface IComponentHtmlElement extends HTMLElement {\n  CoveoBoundComponents?: BaseComponent[];\n}\n\n/**\n * Every component in the framework ultimately inherits from this base component class.\n */\nexport class BaseComponent {\n  /**\n   * Allows component to log in the dev console.\n   */\n  public logger: Logger;\n  /**\n   * A disabled component will not participate in the query, or listen to {@link ComponentEvents}.\n   * @type {boolean}\n   */\n  public disabled = false;\n  /**\n   * The static ID that each component needs in order to be identified.<br/>\n   * For example, SearchButton -> static ID: SearchButton -> className: CoveoSearchButton\n   */\n  static ID: string;\n\n  constructor(public element: HTMLElement, public type: string) {\n    Assert.exists(element);\n    Assert.isNonEmptyString(type);\n    this.logger = new Logger(this);\n    BaseComponent.bindComponentToElement(element, this);\n  }\n\n  /**\n   * Return the debug info about this component.\n   * @returns {any}\n   */\n  public debugInfo() {\n    var info: any = {};\n    info[this['constructor']['ID']] = this;\n    return info;\n  }\n\n  /**\n   * Disable the component.\n   * Normally this means that the component will not execute handlers for the framework events (query events, for example).\n   * Components are enabled by default on creation.\n   */\n  public disable() {\n    this.disabled = true;\n  }\n\n  /**\n   * Enable the component.\n   * Normally this means that the component will execute handlers for the framework events (query events, for example).\n   * Components are enabled by default on creation.\n   */\n  public enable() {\n    this.disabled = false;\n  }\n\n  static bindComponentToElement(element: HTMLElement, component: BaseComponent) {\n    Assert.exists(element);\n    Assert.exists(component);\n    Assert.isNonEmptyString(component.type);\n    element[BaseComponent.computeCssClassNameForType(component.type)] = component;\n    $$(element).addClass(BaseComponent.computeCssClassNameForType(component.type));\n    BaseComponent.getBoundComponentsForElement(element).push(component);\n  }\n\n  static computeCssClassName(componentClass: any): string {\n    return BaseComponent.computeCssClassNameForType(componentClass['ID']);\n  }\n\n  static computeCssClassNameForType(type: string): string {\n    Assert.isNonEmptyString(type);\n    return 'Coveo' + type;\n  }\n\n  static computeSelectorForType(type: string): string {\n    Assert.isNonEmptyString(type);\n    return '.' + BaseComponent.computeCssClassNameForType(type);\n  }\n\n  static getBoundComponentsForElement(element: IComponentHtmlElement): BaseComponent[] {\n    Assert.exists(element);\n\n    if (element.CoveoBoundComponents == null) {\n      element.CoveoBoundComponents = [];\n    }\n    return element.CoveoBoundComponents;\n  }\n\n  static getComponentRef(component: string): any {\n    return Coveo[component];\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Base/BaseComponent.ts","function _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    \"default\": obj\n  };\n}\n\nmodule.exports = _interopRequireDefault;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js\n// module id = 37\n// module chunks = 88 89","// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n  ? window : typeof self != 'undefined' && self.Math == Math ? self\n  // eslint-disable-next-line no-new-func\n  : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_global.js\n// module id = 38\n// module chunks = 88 89","var core = module.exports = { version: '2.6.9' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_core.js\n// module id = 39\n// module chunks = 88 89","/// <reference path='Facet.ts' />\nimport { StringUtils } from '../../utils/StringUtils';\nimport { QueryUtils } from '../../utils/QueryUtils';\nimport { FileTypes } from '../Misc/FileTypes';\nimport { DateUtils } from '../../utils/DateUtils';\nimport { Utils } from '../../utils/Utils';\nimport { $$ } from '../../utils/Dom';\nimport * as _ from 'underscore';\nimport FacetModuleDefinition = require('./Facet');\nimport { l } from '../../strings/Strings';\n\nexport class FacetUtils {\n  static getRegexToUseForFacetSearch(value: string, ignoreAccent: boolean) {\n    return new RegExp(StringUtils.stringToRegex(value, ignoreAccent), 'i');\n  }\n\n  static getDisplayValueFromValueCaption(value: string, field: string, valueCaption: Record<string, string>) {\n    const returnValue = this.tryToGetTranslatedCaption(field, value, false);\n    return valueCaption[value] || returnValue;\n  }\n\n  static getValuesToUseForSearchInFacet(original: string, facet: FacetModuleDefinition.Facet): string[] {\n    let ret = [original];\n    let regex = this.getRegexToUseForFacetSearch(original, facet.options.facetSearchIgnoreAccents);\n    if (facet.options.valueCaption) {\n      _.chain(facet.options.valueCaption)\n        .pairs()\n        .filter(pair => {\n          return regex.test(pair[1]);\n        })\n        .each(match => {\n          ret.push(match[0]);\n        });\n      if (\n        QueryUtils.isStratusAgnosticField(<string>facet.options.field, '@objecttype') ||\n        QueryUtils.isStratusAgnosticField(<string>facet.options.field, '@filetype')\n      ) {\n        _.each(FileTypes.getFileTypeCaptions(), (value: string, key: string) => {\n          if (!(key in facet.options.valueCaption) && regex.test(value)) {\n            ret.push(key);\n          }\n        });\n      }\n    } else if (\n      QueryUtils.isStratusAgnosticField(<string>facet.options.field, '@objecttype') ||\n      QueryUtils.isStratusAgnosticField(<string>facet.options.field, '@filetype')\n    ) {\n      _.each(\n        _.filter(_.pairs(FileTypes.getFileTypeCaptions()), pair => {\n          return regex.test(pair[1]);\n        }),\n        match => {\n          ret.push(match[0]);\n        }\n      );\n    } else if (QueryUtils.isStratusAgnosticField(<string>facet.options.field, '@month')) {\n      _.each(_.range(1, 13), month => {\n        if (regex.test(DateUtils.monthToString(month - 1))) {\n          ret.push(('0' + month.toString()).substr(-2));\n        }\n      });\n    }\n    return ret;\n  }\n\n  static buildFacetSearchPattern(values: string[]) {\n    values = _.map(values, value => {\n      return Utils.escapeRegexCharacter(value);\n    });\n    values[0] = '.*' + values[0] + '.*';\n    return values.join('|');\n  }\n\n  static needAnotherFacetSearch(\n    currentSearchLength: number,\n    newSearchLength: number,\n    oldSearchLength: number,\n    desiredSearchLength: number\n  ) {\n    // Something was removed (currentSearch < newSearch)\n    // && we might want to display more facet search result(currentSearch < desiredSearch)\n    // && the new query returned more stuff than the old one so there's still more results(currentSearchLength > oldLength)\n    return currentSearchLength < newSearchLength && currentSearchLength < desiredSearchLength && currentSearchLength > oldSearchLength;\n  }\n\n  static addNoStateCssClassToFacetValues(facet: FacetModuleDefinition.Facet, container: HTMLElement) {\n    // This takes care of adding the correct css class on each facet value checkbox (empty white box) if at least one value is selected in that facet\n    if (facet.values.getSelected().length != 0) {\n      let noStates = $$(container).findAll('li:not(.coveo-selected)');\n      _.each(noStates, noState => {\n        $$(noState).addClass('coveo-no-state');\n      });\n    }\n  }\n\n  static tryToGetTranslatedCaption(field: string, value: string, fallbackOnLocalization = true) {\n    let found: string;\n\n    if (QueryUtils.isStratusAgnosticField(field.toLowerCase(), '@filetype')) {\n      found = FileTypes.getFileType(value, fallbackOnLocalization).caption;\n    } else if (QueryUtils.isStratusAgnosticField(field.toLowerCase(), '@objecttype')) {\n      found = FileTypes.getObjectType(value, fallbackOnLocalization).caption;\n    } else if (FacetUtils.isMonthFieldValue(field, value)) {\n      const month = parseInt(value, 10);\n      found = DateUtils.monthToString(month - 1);\n    } else if (fallbackOnLocalization) {\n      found = l(value);\n    }\n    return found != undefined && Utils.isNonEmptyString(found) ? found : value;\n  }\n\n  static isMonthFieldValue(field: string, value: string) {\n    if (!QueryUtils.isStratusAgnosticField(field.toLowerCase(), '@month')) {\n      return false;\n    }\n\n    const asInt = parseInt(value, 10);\n\n    if (isNaN(asInt)) {\n      return false;\n    }\n\n    if (asInt < 1 || asInt > 12) {\n      return false;\n    }\n\n    return true;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Facet/FacetUtils.ts","var localStorage: Storage;\n\n// This check must be made in a try/catch. If cookies are disabled for a\n// browser then window.localStorage will throw an undefined exception.\ntry {\n  localStorage = window.localStorage;\n} catch (error) {\n  console.warn(\n    'Unable to access localStorage. Certain features like analytics will not work. If this is unintended, consider adjusting your browser settings to allow third-party cookies and data.\\n\\n',\n    error\n  );\n  localStorage = null;\n}\n\nexport const localStorageExists = !!localStorage;\n\nexport class LocalStorageUtils<T> {\n  constructor(public id: string) {}\n\n  public save(data: T) {\n    try {\n      if (localStorage != null) {\n        localStorage.setItem(this.getLocalStorageKey(), JSON.stringify(data));\n      }\n    } catch (error) {}\n  }\n\n  public load(): T {\n    try {\n      if (localStorage == null) {\n        return null;\n      }\n      var value = localStorage.getItem(this.getLocalStorageKey());\n      return value && JSON.parse(value);\n    } catch (error) {\n      return null;\n    }\n  }\n\n  public remove(key?: string) {\n    try {\n      if (localStorage != null) {\n        if (key == undefined) {\n          localStorage.removeItem(this.getLocalStorageKey());\n        } else {\n          var oldObj = this.load();\n          delete oldObj[key];\n          this.save(oldObj);\n        }\n      }\n    } catch (error) {}\n  }\n\n  private getLocalStorageKey() {\n    return 'coveo-' + this.id;\n  }\n}\n\nexport class SafeLocalStorage implements Storage {\n  [key: string]: any;\n\n  public getItem(key: string) {\n    try {\n      return localStorage.getItem(key);\n    } catch (e) {\n      return null;\n    }\n  }\n\n  public removeItem(key: string) {\n    try {\n      localStorage.removeItem(key);\n    } catch (e) {}\n  }\n\n  public setItem(key: string, value: string) {\n    try {\n      localStorage.setItem(key, value);\n    } catch (e) {}\n  }\n\n  public clear() {\n    try {\n      localStorage.clear();\n    } catch (e) {}\n  }\n\n  public key(index: number) {\n    try {\n      return localStorage.key(index);\n    } catch (e) {\n      return null;\n    }\n  }\n\n  get length() {\n    try {\n      return localStorage.length;\n    } catch (e) {\n      return 0;\n    }\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/LocalStorageUtils.ts","import { Assert } from '../misc/Assert';\nimport { Utils } from '../utils/Utils';\nimport * as _ from 'underscore';\nimport { Logger } from '../MiscModules';\n\nexport class HashUtils {\n  private static DELIMITER = {\n    objectStart: '{',\n    objectEnd: '}',\n    arrayStart: '[',\n    arrayEnd: ']',\n    arrayStartRegExp: /^\\[/,\n    arrayEndRegExp: /\\]$/\n  };\n\n  public static getHash(w: Window = window): string {\n    Assert.exists(w);\n\n    // window.location.hash returns the DECODED hash on Firefox (it's a well known bug),\n    // so any & in values will be already unescaped. This breaks our value splitting.\n    // The following trick works on all browsers.\n    const ret = '#' + (w.location.href.split('#')[1] || '');\n    return HashUtils.getAjaxcrawlableHash(ret);\n  }\n\n  public static getValue(key: string, toParse: string): any {\n    Assert.isNonEmptyString(key);\n    Assert.exists(toParse);\n    toParse = HashUtils.getAjaxcrawlableHash(toParse);\n    let paramValue = HashUtils.getRawValue(key, toParse);\n    if (paramValue != undefined) {\n      paramValue = HashUtils.getValueDependingOnType(key, paramValue);\n    }\n    return paramValue;\n  }\n\n  public static encodeValues(values: {}): string {\n    const hash: String[] = [];\n    _.each(<_.Dictionary<any>>values, (valueToEncode, key, obj?) => {\n      let encodedValue = '';\n      if (Utils.isNonEmptyArray(valueToEncode)) {\n        encodedValue = HashUtils.encodeArray(valueToEncode);\n      } else if (_.isObject(valueToEncode) && Utils.isNonEmptyArray(_.keys(valueToEncode))) {\n        encodedValue = HashUtils.encodeObject(valueToEncode);\n      } else if (!Utils.isNullOrUndefined(valueToEncode)) {\n        encodedValue = Utils.safeEncodeURIComponent(valueToEncode.toString());\n      }\n      if (encodedValue != '') {\n        hash.push(key + '=' + encodedValue);\n      }\n    });\n\n    return hash.join('&');\n  }\n\n  private static getAjaxcrawlableHash(hash: string) {\n    if (hash[1] != undefined && hash[1] == '!') {\n      return hash.substring(0, 1) + hash.substring(2);\n    } else {\n      return hash;\n    }\n  }\n\n  private static getRawValue(key: string, toParse: string): string {\n    Assert.exists(key);\n    Assert.exists(toParse);\n    Assert.check(toParse.indexOf('#') == 0 || toParse == '');\n\n    const toParseArray = toParse.substr(1).split('&');\n    let paramPos = 0;\n    let loop = true;\n    let paramValue: string = undefined;\n    while (loop) {\n      const paramValuePair = toParseArray[paramPos].split('=');\n      if (paramValuePair[0] == key) {\n        loop = false;\n        paramValue = paramValuePair[1];\n      } else {\n        paramPos++;\n        if (paramPos >= toParseArray.length) {\n          paramPos = undefined;\n          loop = false;\n        }\n      }\n    }\n    return paramValue;\n  }\n\n  private static getValueDependingOnType(key: string, paramValue: string): any {\n    const type = HashUtils.getValueType(key, paramValue);\n    let returnValue;\n\n    if (type == 'object') {\n      returnValue = HashUtils.decodeObject(paramValue);\n    } else if (type == 'array') {\n      returnValue = HashUtils.decodeArray(paramValue);\n    } else {\n      try {\n        returnValue = decodeURIComponent(paramValue);\n      } catch (e) {\n        new Logger(HashUtils).warn('Error while decoding a value from the URL as a standard value', e, key, paramValue);\n      }\n    }\n    return returnValue;\n  }\n\n  private static getValueType(key: string, paramValue: string): string {\n    if (key == 'q') {\n      return 'other';\n    } else if (HashUtils.isObject(paramValue)) {\n      return 'object';\n    } else if (HashUtils.startsOrEndsWithSquareBracket(paramValue)) {\n      return 'array';\n    } else {\n      return 'other';\n    }\n  }\n\n  private static startsWithLeftSquareBracket(value: string) {\n    return HashUtils.DELIMITER.arrayStartRegExp.test(value);\n  }\n\n  private static startsWithEncodedLeftSquareBracket(value: string) {\n    return value.indexOf(Utils.safeEncodeURIComponent(HashUtils.DELIMITER.arrayStart)) == 0;\n  }\n\n  private static endsWithRightSquareBracket(value: string) {\n    return HashUtils.DELIMITER.arrayEndRegExp.test(value);\n  }\n\n  private static endsWithEncodedRightSquareBracket(value: string) {\n    const encodedBracket = Utils.safeEncodeURIComponent(HashUtils.DELIMITER.arrayEnd);\n    const encodedBracketIndex = value.indexOf(encodedBracket);\n    const hasEncodedBracket = encodedBracketIndex !== -1;\n\n    return hasEncodedBracket && encodedBracketIndex == value.length - encodedBracket.length;\n  }\n\n  private static isObjectStartNotEncoded(value: string) {\n    return value.substr(0, 1) == HashUtils.DELIMITER.objectStart;\n  }\n\n  private static isObjectStartEncoded(value: string) {\n    return value.indexOf(Utils.safeEncodeURIComponent(HashUtils.DELIMITER.objectStart)) == 0;\n  }\n\n  private static isObjectEndNotEncoded(value: string) {\n    return value.substr(value.length - 1) == HashUtils.DELIMITER.objectEnd;\n  }\n\n  private static isObjectEndEncoded(value: string) {\n    return (\n      value.indexOf(Utils.safeEncodeURIComponent(HashUtils.DELIMITER.objectEnd)) ==\n      value.length - Utils.safeEncodeURIComponent(HashUtils.DELIMITER.objectEnd).length\n    );\n  }\n\n  private static isObject(value: string) {\n    const isObjectStart = HashUtils.isObjectStartNotEncoded(value) || HashUtils.isObjectStartEncoded(value);\n    const isObjectEnd = HashUtils.isObjectEndNotEncoded(value) || HashUtils.isObjectEndEncoded(value);\n    return isObjectStart && isObjectEnd;\n  }\n\n  private static startsOrEndsWithSquareBracket(value: string) {\n    const isArrayStart = HashUtils.startsWithLeftSquareBracket(value) || HashUtils.startsWithEncodedLeftSquareBracket(value);\n    const isArrayEnd = HashUtils.endsWithRightSquareBracket(value) || HashUtils.endsWithEncodedRightSquareBracket(value);\n    return isArrayStart || isArrayEnd;\n  }\n\n  public static encodeArray(array: string[]): string {\n    const arrayReturn = _.map(array, value => {\n      return Utils.safeEncodeURIComponent(value);\n    });\n    return HashUtils.DELIMITER.arrayStart + arrayReturn.join(',') + HashUtils.DELIMITER.arrayEnd;\n  }\n\n  public static encodeObject(obj: Object): string {\n    const retArray = _.map(<_.Dictionary<any>>obj, (val, key?, obj?) => {\n      return `\"${Utils.safeEncodeURIComponent(key)}\":${this.encodeValue(val)}`;\n    });\n    return HashUtils.DELIMITER.objectStart + retArray.join(' , ') + HashUtils.DELIMITER.objectEnd;\n  }\n\n  private static encodeValue(val: any) {\n    let encodedValue = '';\n    if (_.isArray(val)) {\n      encodedValue = HashUtils.encodeArray(val);\n    } else if (_.isObject(val)) {\n      encodedValue = JSON.stringify(val);\n    } else if (_.isNumber(val) || _.isBoolean(val)) {\n      encodedValue = Utils.safeEncodeURIComponent(val.toString());\n    } else {\n      encodedValue = '\"' + Utils.safeEncodeURIComponent(val) + '\"';\n    }\n    return encodedValue;\n  }\n\n  private static decodeObject(obj: string): Object {\n    if (HashUtils.isObjectStartEncoded(obj) && HashUtils.isObjectEndEncoded(obj)) {\n      obj = obj.replace(/encodeURIComponent(HashUtils.Delimiter.objectStart)/, HashUtils.DELIMITER.objectStart);\n      obj = obj.replace(Utils.safeEncodeURIComponent(HashUtils.DELIMITER.objectEnd), HashUtils.DELIMITER.objectEnd);\n    }\n    try {\n      const containsArray = /(\\[.*\\])/.exec(obj);\n\n      if (containsArray) {\n        obj = obj.replace(\n          /(\\[.*\\])/,\n          `[${this.decodeArray(containsArray[1])\n            .map(val => `\"${val}\"`)\n            .join(',')}]`\n        );\n      }\n\n      const decoded = decodeURIComponent(obj);\n      return JSON.parse(decoded);\n    } catch (e) {\n      new Logger(HashUtils).warn('Error while decoding a value from the URL as an object', e, obj);\n      return {};\n    }\n  }\n\n  private static decodeArray(value: string): any[] {\n    const valueWithoutSquareBrackets = HashUtils.removeSquareBrackets(value);\n    const array = valueWithoutSquareBrackets.split(',');\n    return _.chain(array)\n      .map(val => {\n        try {\n          return decodeURIComponent(val);\n        } catch (e) {\n          new Logger(HashUtils).warn('Error while decoding a value from the URL as an array', e, val, value);\n          return null;\n        }\n      })\n      .compact()\n      .value();\n  }\n\n  private static removeSquareBrackets(value: string) {\n    if (HashUtils.startsWithEncodedLeftSquareBracket(value)) {\n      value = value.replace(Utils.safeEncodeURIComponent(HashUtils.DELIMITER.arrayStart), '');\n    }\n\n    if (HashUtils.endsWithEncodedRightSquareBracket(value)) {\n      value = value.replace(Utils.safeEncodeURIComponent(HashUtils.DELIMITER.arrayEnd), '');\n    }\n\n    if (HashUtils.startsWithLeftSquareBracket(value)) {\n      value = value.replace(HashUtils.DELIMITER.arrayStart, '');\n    }\n\n    if (HashUtils.endsWithRightSquareBracket(value)) {\n      value = value.replace(HashUtils.DELIMITER.arrayEnd, '');\n    }\n\n    return value;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/HashUtils.ts","import { isArray, pairs, compact, uniq, rest, first, isString, contains } from 'underscore';\nimport { Utils } from './Utils';\nimport { IEndpointCallParameters } from '../rest/EndpointCaller';\n\nexport interface IUrlNormalize {\n  paths: string[] | string;\n  queryAsString?: string[] | string;\n  query?: Record<string, any>;\n}\n\nexport interface IUrlNormalizedParts {\n  pathsNormalized: string[];\n  queryNormalized: string[];\n  path: string;\n}\n\nexport class UrlUtils {\n  public static getUrlParameter(name: string): string {\n    return (\n      decodeURIComponent(\n        (new RegExp('[?|&]' + name + '=' + '([^&;]+?)(&|#|;|$)').exec(location.search) || [, ''])[1].replace(/\\+/g, '%20')\n      ) || null\n    );\n  }\n\n  public static merge(endpointParameters: IEndpointCallParameters, ...parts: IUrlNormalize[]) {\n    parts.forEach(part => {\n      const { path, queryNormalized } = UrlUtils.normalizeAsParts(part);\n\n      if (Utils.isNonEmptyString(path)) {\n        endpointParameters = { ...endpointParameters, url: path };\n      }\n\n      if (Utils.isNonEmptyArray(queryNormalized)) {\n        const queryStringExists = Utils.isNonEmptyArray(endpointParameters.queryString);\n        const queryString = queryStringExists\n          ? Utils.concatWithoutDuplicate(endpointParameters.queryString, queryNormalized)\n          : queryNormalized;\n        endpointParameters = { ...endpointParameters, queryString };\n      }\n    });\n    return endpointParameters;\n  }\n\n  public static normalizeAsString(toNormalize: IUrlNormalize): string {\n    const { queryNormalized, path } = this.normalizeAsParts(toNormalize);\n\n    return `${path}${this.addToUrlIfNotEmpty(queryNormalized, '&', '?')}`;\n  }\n\n  public static normalizeAsParts(toNormalize: IUrlNormalize): IUrlNormalizedParts {\n    const pathsNormalized = this.normalizePaths(toNormalize);\n    const queryNormalized = this.normalizeQueryString(toNormalize);\n\n    return {\n      pathsNormalized,\n      queryNormalized,\n      path: this.addToUrlIfNotEmpty(pathsNormalized, '/', UrlUtils.getRelativePathLeadingCharacters(toNormalize))\n    };\n  }\n\n  private static getRelativePathLeadingCharacters(toNormalize: IUrlNormalize) {\n    let leadingRelativeUrlCharacters = '';\n\n    const relativeUrlLeadingCharactersRegex = /^(([\\/])+)/;\n    const firstPath = first(this.toArray(toNormalize.paths));\n\n    if (firstPath) {\n      const match = relativeUrlLeadingCharactersRegex.exec(firstPath);\n      if (match) {\n        leadingRelativeUrlCharacters = match[0];\n      }\n    }\n\n    return leadingRelativeUrlCharacters;\n  }\n\n  private static normalizePaths(toNormalize: IUrlNormalize) {\n    return this.toArray(toNormalize.paths).map(path => {\n      if (Utils.isNonEmptyString(path)) {\n        return this.removeProblematicChars(path);\n      }\n      return '';\n    });\n  }\n\n  private static normalizeQueryString(toNormalize: IUrlNormalize) {\n    let queryNormalized: string[] = [];\n\n    if (toNormalize.queryAsString) {\n      const cleanedUp = this.toArray(toNormalize.queryAsString).map(query => {\n        query = this.removeProblematicChars(query);\n        query = this.encodeKeyValuePair(query);\n        return query;\n      });\n      queryNormalized = queryNormalized.concat(cleanedUp);\n    }\n\n    if (toNormalize.query) {\n      const paired: string[][] = pairs(toNormalize.query);\n      const mapped = paired.map(pair => {\n        let [key, value] = pair;\n\n        const exceptions = ['pipeline'];\n        const isAnException = isString(key) && contains(exceptions, key.toLowerCase());\n\n        if (!isAnException) {\n          if (UrlUtils.isInvalidQueryStringValue(value) || UrlUtils.isInvalidQueryStringValue(key)) {\n            return '';\n          }\n        }\n\n        return [this.removeProblematicChars(key), this.decodeThenEncode(value)].join('=');\n      });\n      queryNormalized = queryNormalized.concat(mapped);\n    }\n\n    return uniq(queryNormalized);\n  }\n\n  private static addToUrlIfNotEmpty(toAdd: string[], joinWith: string, leadWith: string) {\n    if (Utils.isNonEmptyArray(toAdd)) {\n      return `${leadWith}${compact(toAdd).join(joinWith)}`;\n    }\n    return '';\n  }\n\n  private static startsWith(searchString: string, targetString: string) {\n    return Utils.stringStartsWith(targetString, searchString);\n  }\n\n  private static endsWith(searchString: string, targetString: string) {\n    return Utils.stringEndsWith(targetString, searchString);\n  }\n\n  private static removeAtEnd(searchString: string, targetString: string) {\n    while (this.endsWith(searchString, targetString)) {\n      targetString = targetString.slice(0, targetString.length - searchString.length);\n    }\n\n    return targetString;\n  }\n\n  private static removeAtStart(searchString: string, targetString: string) {\n    while (this.startsWith(searchString, targetString)) {\n      targetString = targetString.slice(searchString.length);\n    }\n    return targetString;\n  }\n\n  private static toArray(parameter: string | string[]): string[] {\n    return isArray(parameter) ? parameter : [parameter];\n  }\n\n  private static encodeKeyValuePair(pair: string) {\n    const split = pair.split('=');\n    if (split.length == 0) {\n      return pair;\n    }\n\n    let key = split[0];\n    let value = rest(split, 1).join('');\n\n    if (!key) {\n      return pair;\n    }\n    if (!value) {\n      return pair;\n    }\n\n    key = this.removeProblematicChars(key);\n    value = this.decodeThenEncode(value);\n\n    return `${key}=${value}`;\n  }\n\n  private static removeProblematicChars(value: string) {\n    ['?', '/', '#', '='].forEach(problematicChar => {\n      value = this.removeAtStart(problematicChar, value);\n      value = this.removeAtEnd(problematicChar, value);\n    });\n\n    return value;\n  }\n\n  private static decodeThenEncode(value: string) {\n    const decoded = decodeURIComponent(value);\n    return Utils.safeEncodeURIComponent(decoded);\n  }\n\n  private static isInvalidQueryStringValue(value: any) {\n    if (isString(value)) {\n      return Utils.isEmptyString(value);\n    }\n\n    return Utils.isNullOrUndefined(value);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/UrlUtils.ts","import { buildHistoryStore, buildNullHistoryStore } from '../utils/HistoryStore';\nimport { pick, extend, omit, forEach } from 'underscore';\nimport {\n  IBuildingCallOptionsEventArgs,\n  IBuildingQueryEventArgs,\n  IDoneBuildingQueryEventArgs,\n  IDuringQueryEventArgs,\n  IFetchMoreSuccessEventArgs,\n  INewQueryEventArgs,\n  INoResultsEventArgs,\n  IPreprocessResultsEventArgs,\n  IQueryErrorEventArgs,\n  IQuerySuccessEventArgs,\n  QueryEvents\n} from '../events/QueryEvents';\nimport { ModalBox } from '../ExternalModulesShim';\nimport { Assert } from '../misc/Assert';\nimport { Defer } from '../misc/Defer';\nimport { IQuery } from '../rest/Query';\nimport { IQueryResults } from '../rest/QueryResults';\nimport { SearchEndpoint } from '../rest/SearchEndpoint';\nimport { IEndpointCallOptions, ISearchEndpoint } from '../rest/SearchEndpointInterface';\nimport { SearchEndpointWithDefaultCallOptions } from '../rest/SearchEndpointWithDefaultCallOptions';\nimport { BaseComponent } from '../ui/Base/BaseComponent';\nimport { QueryBuilder } from '../ui/Base/QueryBuilder';\nimport { RootComponent } from '../ui/Base/RootComponent';\nimport { ISearchInterfaceOptions, SearchInterface } from '../ui/SearchInterface/SearchInterface';\nimport { $$, Dom } from '../utils/Dom';\nimport { LocalStorageUtils } from '../utils/LocalStorageUtils';\nimport { QueryUtils } from '../utils/QueryUtils';\nimport { UrlUtils } from '../utils/UrlUtils';\nimport { Utils } from '../utils/Utils';\nimport { IAnalyticsClient } from '../ui/Analytics/AnalyticsClient';\nimport { ExecutionPlan } from '../rest/Plan';\nimport { AnalyticsInformation } from '../ui/Analytics/AnalyticsInformation';\n\n/**\n * Possible options when performing a query with the query controller\n */\nexport interface IQueryOptions {\n  /**\n   * If the analytics component is enabled in the interface, it will look for any query executed by the query controller for which no analytics event was associated.<br/>\n   * By setting this property to true, this will cancel this check when the query is performed\n   */\n  ignoreWarningSearchEvent?: boolean;\n  /**\n   * Whether the query to execute is a search-as-you-type. This information will be passed down in the query events for component and external code to determine their behavior\n   */\n  searchAsYouType?: boolean;\n  /**\n   * Specify a function that you wish to execute just before the query is executed\n   */\n  beforeExecuteQuery?: () => void;\n  /**\n   * Cancel the query\n   */\n  cancel?: boolean;\n  /**\n   * The component from which the query originated. For example the pager will set the property to tweak it's behaviour\n   */\n  origin?: any;\n\n  /**\n   * Whether or not to log the query in the user actions history when using the page view script: https://github.com/coveo/coveo.analytics.js.\n   * Only the 'q' part of the query will be logged.\n   * This option is useful, because it prevents the query to be logged twice when a {@link Recommendation} component is present.\n   * It also makes sure that only relevant queries are logged. For exemple, the 'empty' interface load query isn't logged.\n   */\n  logInActionsHistory?: boolean;\n  isFirstQuery?: boolean;\n  keepLastSearchUid?: boolean;\n  closeModalBox?: boolean;\n  shouldRedirectStandaloneSearchbox?: boolean;\n}\n\ninterface ILastQueryLocalStorage {\n  hash: string;\n  uid: string;\n  expire: number;\n}\n\nclass DefaultQueryOptions implements IQueryOptions {\n  searchAsYouType = false;\n  beforeExecuteQuery: () => void;\n  cancel = false;\n  logInActionsHistory = false;\n  shouldRedirectStandaloneSearchbox = true;\n}\n\n/**\n * This class is automatically instantiated and bound to the root of your search interface when you initialize the framework.<br/>\n * It is essentially a singleton that wraps the access to the {@link SearchEndpoint} endpoint to execute query, and is in charge of triggering the different query events.<br/>\n * This is what every component of the framework uses internally to execute query or access the endpoint.<br/>\n * When calling <code>Coveo.executeQuery</code> this class is used.\n */\nexport class QueryController extends RootComponent {\n  static ID = 'QueryController';\n  public historyStore: CoveoAnalytics.HistoryStore;\n  public firstQuery: boolean;\n  public modalBox = ModalBox;\n  public closeModalBox = true;\n\n  private currentPendingQuery: Promise<IQueryResults>;\n  private lastQueryBuilder: QueryBuilder;\n  private lastQueryHash: string;\n  private lastQuery: IQuery;\n  private lastSearchUid: string;\n  private lastQueryResults: IQueryResults;\n  private currentError: any;\n  private createdOneQueryBuilder: boolean;\n  private showingExecutingQueryAnimation = false;\n  private overrideEndpoint: SearchEndpoint;\n\n  private localStorage = new LocalStorageUtils<ILastQueryLocalStorage>('lastQueryHash');\n\n  /**\n   * Create a new query controller\n   * @param element\n   * @param options\n   * @param usageAnalytics **Deprecated.** Since the [October 2019 Release (v2.7219)](https://docs.coveo.com/en/3084/), the class retrieves and uses the {@link AnalyticsClient} from its `searchInterface` constructor parameter.\n   * @param searchInterface\n   */\n  constructor(\n    element: HTMLElement,\n    public options: ISearchInterfaceOptions,\n    usageAnalytics: IAnalyticsClient,\n    public searchInterface: SearchInterface\n  ) {\n    super(element, QueryController.ID);\n    Assert.exists(element);\n    Assert.exists(options);\n    this.firstQuery = true;\n    this.initializeActionsHistory();\n  }\n\n  public get usageAnalytics(): IAnalyticsClient {\n    return this.searchInterface.usageAnalytics;\n  }\n\n  /**\n   * Set the {@link SearchEndpoint} that the query controller should use to execute query\n   * @param endpoint\n   */\n  public setEndpoint(endpoint: SearchEndpoint) {\n    this.overrideEndpoint = endpoint;\n    this.logger.debug('Endpoint set', endpoint);\n  }\n\n  /**\n   * Get the {@link SearchEndpoint} that is currently used by the query controller to execute query\n   * @returns {SearchEndpoint}\n   */\n  public getEndpoint(): ISearchEndpoint {\n    let endpoint = this.overrideEndpoint || this.options.endpoint;\n\n    // We must wrap the endpoint in a decorator that'll add the call options\n    // we obtain by firing the proper event. Those are used for authentication\n    // providers, and I guess other stuff later on.\n    return new SearchEndpointWithDefaultCallOptions(endpoint, this.getCallOptions());\n  }\n\n  /**\n   * Return the last query that was performed by the query controller\n   * @returns {IQuery|Query}\n   */\n  public getLastQuery() {\n    return this.lastQuery || new QueryBuilder().build();\n  }\n\n  /**\n   * Return the last query results set.\n   * @returns {IQueryResults}\n   */\n  public getLastResults() {\n    return this.lastQueryResults;\n  }\n\n  /**\n   * Returns the plan of execution of a search request, without executing it.\n   * @returns {ExecutionPlan}\n   */\n  public async fetchQueryExecutionPlan(): Promise<ExecutionPlan> {\n    const query = this.createQueryBuilder(new DefaultQueryOptions()).build();\n    this.logger.debug('Fetching query execution plan');\n    try {\n      return await this.getEndpoint().plan(query);\n    } catch (error) {\n      return null;\n    }\n  }\n\n  /**\n   * Execute a query and return a Promise of IQueryResults.<br/>\n   * This will execute the normal query flow, triggering all the necessary query events (newQuery <br/>\n   * All components present in the interface will act accordingly (modify the query and render results if needed).\n   * @param options\n   * @returns {Promise<IQueryResults>}\n   */\n  public executeQuery(options?: IQueryOptions): Promise<IQueryResults> {\n    options = <IQueryOptions>extend(new DefaultQueryOptions(), options);\n\n    this.closeModalBoxIfNeeded(options ? options.closeModalBox : undefined);\n\n    this.logger.debug('Executing new query');\n\n    this.cancelAnyCurrentPendingQuery();\n\n    if (options.beforeExecuteQuery != null) {\n      options.beforeExecuteQuery();\n    }\n\n    if (!options.ignoreWarningSearchEvent) {\n      this.usageAnalytics.warnAboutSearchEvent();\n    }\n\n    this.showExecutingQueryAnimation();\n\n    let dataToSendOnNewQuery: INewQueryEventArgs = {\n      searchAsYouType: options.searchAsYouType,\n      cancel: options.cancel,\n      origin: options.origin,\n      shouldRedirectStandaloneSearchbox: options.shouldRedirectStandaloneSearchbox\n    };\n\n    this.newQueryEvent(dataToSendOnNewQuery);\n\n    if (dataToSendOnNewQuery.cancel) {\n      this.cancelQuery();\n      return;\n    }\n\n    let queryBuilder = this.createQueryBuilder(options);\n\n    // The query was canceled\n    if (!queryBuilder) {\n      return;\n    }\n\n    let query = queryBuilder.build();\n    if (options.logInActionsHistory) {\n      this.logQueryInActionsHistory(query);\n    }\n\n    let endpointToUse = this.getEndpoint();\n\n    let promise = (this.currentPendingQuery = endpointToUse.search(query, { analyticsInformation: this.getAnalyticsInformation() }));\n    promise\n      .then(queryResults => {\n        Assert.exists(queryResults);\n        if (this.firstQuery) {\n          this.firstQuery = false;\n        }\n        // If our promise is no longer the current one, then the query\n        // has been cancel. We should do nothing here.\n        if (promise !== this.currentPendingQuery) {\n          return;\n        }\n\n        this.logger.debug('Query results received', query, queryResults);\n\n        if (this.keepLastSearchUid(query, queryResults, options)) {\n          queryResults.searchUid = this.getLastSearchUid();\n          queryResults._reusedSearchUid = true;\n          QueryUtils.setPropertyOnResults(queryResults, 'queryUid', this.getLastSearchUid());\n        } else {\n          this.lastQueryHash = this.queryHash(query, queryResults);\n          this.lastSearchUid = queryResults.searchUid;\n        }\n\n        this.lastQuery = query;\n        this.lastQueryResults = queryResults;\n        this.currentError = null;\n\n        let dataToSendOnPreprocessResult: IPreprocessResultsEventArgs = {\n          queryBuilder: queryBuilder,\n          query: query,\n          results: queryResults,\n          searchAsYouType: options.searchAsYouType\n        };\n        this.preprocessResultsEvent(dataToSendOnPreprocessResult);\n\n        let dataToSendOnNoResult: INoResultsEventArgs = {\n          queryBuilder: queryBuilder,\n          query: query,\n          results: queryResults,\n          searchAsYouType: options.searchAsYouType,\n          retryTheQuery: false\n        };\n        if (queryResults.results.length == 0) {\n          this.noResultEvent(dataToSendOnNoResult);\n        }\n\n        if (dataToSendOnNoResult.retryTheQuery) {\n          // When retrying the query, we must forward the results to the deferred we\n          // initially returned, in case someone is listening on it.\n          return this.executeQuery();\n        } else {\n          this.lastQueryBuilder = queryBuilder;\n          this.currentPendingQuery = undefined;\n\n          let dataToSendOnSuccess: IQuerySuccessEventArgs = {\n            queryBuilder: queryBuilder,\n            query: query,\n            results: queryResults,\n            searchAsYouType: options.searchAsYouType\n          };\n          this.querySuccessEvent(dataToSendOnSuccess);\n\n          Defer.defer(() => {\n            this.deferredQuerySuccessEvent(dataToSendOnSuccess);\n            this.hideExecutingQueryAnimation();\n          });\n          return queryResults;\n        }\n      })\n      .catch((error?: any) => {\n        // If our deferred is no longer the current one, then the query\n        // has been cancel. We should do nothing here.\n        if (promise !== this.currentPendingQuery) {\n          return;\n        }\n\n        this.logger.error('Query triggered an error', query, error);\n\n        this.currentPendingQuery = undefined;\n        let dataToSendOnError: IQueryErrorEventArgs = {\n          queryBuilder: queryBuilder,\n          endpoint: endpointToUse,\n          query: query,\n          error: error,\n          searchAsYouType: options.searchAsYouType\n        };\n\n        this.lastQuery = query;\n        this.lastQueryResults = null;\n        this.currentError = error;\n        this.queryError(dataToSendOnError);\n\n        this.hideExecutingQueryAnimation();\n      });\n\n    let dataToSendDuringQuery: IDuringQueryEventArgs = {\n      queryBuilder: queryBuilder,\n      query: query,\n      searchAsYouType: options.searchAsYouType,\n      promise: promise\n    };\n    this.duringQueryEvent(dataToSendDuringQuery);\n\n    return this.currentPendingQuery;\n  }\n\n  /**\n   * Using the same parameters as the last successful query, fetch another batch of results. Particularly useful for infinite scrolling, for example.\n   * @param count\n   * @returns {any}\n   */\n  public fetchMore(count: number): Promise<IQueryResults> {\n    if (this.currentPendingQuery != undefined) {\n      return undefined;\n    }\n    // Send all pending events (think : search as you type)\n    // This allows us to get the real search id for the results when the query returns\n    this.usageAnalytics.sendAllPendingEvents();\n\n    let queryBuilder = new QueryBuilder();\n    this.continueLastQueryBuilder(queryBuilder, count);\n    let query = queryBuilder.build();\n    let endpointToUse = this.getEndpoint();\n    let promise: any = (this.currentPendingQuery = endpointToUse.search(query));\n    let dataToSendDuringQuery: IDuringQueryEventArgs = {\n      queryBuilder: queryBuilder,\n      query: query,\n      searchAsYouType: false,\n      promise: promise\n    };\n    $$(this.element).trigger(QueryEvents.duringFetchMoreQuery, dataToSendDuringQuery);\n    this.lastQueryBuilder = queryBuilder;\n    this.lastQuery = query;\n    promise.then((results?: IQueryResults) => {\n      // We re-use the search id from the initial search here, even though the\n      // server provided us with a new one. 'Fetch mores' are considered to be\n      // the same query from an analytics point of view.\n\n      this.currentPendingQuery = undefined;\n\n      if (this.lastQueryResults == null) {\n        this.lastQueryResults = results;\n      } else {\n        forEach(results.results, result => {\n          this.lastQueryResults.results.push(result);\n        });\n      }\n\n      let dataToSendOnPreprocessResult: IPreprocessResultsEventArgs = {\n        queryBuilder: queryBuilder,\n        query: query,\n        results: results,\n        searchAsYouType: false\n      };\n      this.preprocessResultsEvent(dataToSendOnPreprocessResult);\n      QueryUtils.setIndexAndUidOnQueryResults(query, results, this.getLastSearchUid(), results.pipeline, results.splitTestRun);\n      let dataToSendOnFetchMoreSuccess: IFetchMoreSuccessEventArgs = {\n        query: query,\n        results: results,\n        queryBuilder: queryBuilder,\n        searchAsYouType: false\n      };\n      this.fetchMoreSuccessEvent(dataToSendOnFetchMoreSuccess);\n    });\n    return this.currentPendingQuery;\n  }\n\n  /**\n   * Cancel any pending query\n   */\n  public cancelQuery(): void {\n    this.cancelAnyCurrentPendingQuery();\n    this.hideExecutingQueryAnimation();\n  }\n\n  public deferExecuteQuery(options?: IQueryOptions) {\n    this.showExecutingQueryAnimation();\n    Defer.defer(() => this.executeQuery(options));\n  }\n\n  public ensureCreatedQueryBuilder() {\n    if (!this.createdOneQueryBuilder) {\n      this.createQueryBuilder(new DefaultQueryOptions());\n    }\n  }\n\n  public createQueryBuilder(options: IQueryOptions): QueryBuilder {\n    Assert.exists(options);\n\n    this.createdOneQueryBuilder = true;\n\n    let queryBuilder = new QueryBuilder();\n\n    // Default values, components will probably override them if they exists\n    queryBuilder.locale = <string>String['locale'];\n    queryBuilder.firstResult = queryBuilder.firstResult || 0;\n\n    // Allow outside code to customize the query builder. We provide two events,\n    // to allow someone to have a peep at the query builder after the first phase\n    // and add some stuff depending on what was put in there. The facets are using\n    // this mechanism to generate query overrides.\n    let dataToSendDuringBuildingQuery: IBuildingQueryEventArgs = {\n      queryBuilder: queryBuilder,\n      searchAsYouType: options.searchAsYouType,\n      cancel: options.cancel\n    };\n    this.buildingQueryEvent(dataToSendDuringBuildingQuery);\n\n    let dataToSendDuringDoneBuildingQuery: IDoneBuildingQueryEventArgs = {\n      queryBuilder: queryBuilder,\n      searchAsYouType: options.searchAsYouType,\n      cancel: options.cancel\n    };\n    this.doneBuildingQueryEvent(dataToSendDuringDoneBuildingQuery);\n\n    if (dataToSendDuringBuildingQuery.cancel || dataToSendDuringDoneBuildingQuery.cancel) {\n      this.cancelQuery();\n      return;\n    }\n\n    let pipeline = this.getPipelineInUrl();\n    if (pipeline) {\n      queryBuilder.pipeline = pipeline;\n    }\n\n    return queryBuilder;\n  }\n\n  public isStandaloneSearchbox(): boolean {\n    return Utils.isNonEmptyString(this.options.searchPageUri);\n  }\n\n  public saveLastQuery() {\n    this.localStorage.save({\n      expire: new Date().getTime() + 1000 * 60 * 30, // Psoucy rolled dice and said 30 mins was the magic number\n      hash: this.lastQueryHash,\n      uid: this.lastSearchUid\n    });\n  }\n\n  // This field is exposed for components rendered in the results or on-demand which\n  // need access to the entire query. For example, the QuickviewDocument need to pass\n  // the entire query to the Search API. For other components, QueryStateModel or\n  // listening to events like 'doneBuildingQuery' is the way to go.\n  public getLastQueryHash(): string {\n    if (this.lastQueryHash) {\n      return this.lastQueryHash;\n    }\n    this.loadLastQueryHash();\n    return this.lastQueryHash || this.queryHash(new QueryBuilder().build());\n  }\n\n  public resetHistory() {\n    this.historyStore.clear();\n  }\n\n  public enableHistory() {\n    this.historyStore = buildHistoryStore();\n  }\n\n  public disableHistory() {\n    this.historyStore = buildNullHistoryStore();\n  }\n\n  private initializeActionsHistory() {\n    this.enableHistory();\n\n    if (this.usageAnalytics.isActivated()) {\n      return;\n    }\n\n    this.historyStore.clear();\n    this.disableHistory();\n  }\n\n  private closeModalBoxIfNeeded(needed?: boolean) {\n    if (needed != undefined ? needed : this.closeModalBox) {\n      this.modalBox.close(true);\n    }\n  }\n\n  private getLastSearchUid(): string {\n    if (this.lastSearchUid != null) {\n      return this.lastSearchUid;\n    }\n    this.loadLastQueryHash();\n    return this.lastSearchUid;\n  }\n\n  private loadLastQueryHash() {\n    let lastQuery = this.localStorage.load();\n    if (lastQuery != null && new Date().getTime() <= lastQuery.expire) {\n      this.lastQueryHash = lastQuery.hash;\n      this.lastSearchUid = lastQuery.uid;\n      this.localStorage.remove();\n    }\n  }\n\n  private continueLastQueryBuilder(queryBuilder: QueryBuilder, count: number) {\n    extend(queryBuilder, this.lastQueryBuilder);\n    queryBuilder.firstResult = queryBuilder.firstResult + queryBuilder.numberOfResults;\n    queryBuilder.numberOfResults = count;\n  }\n\n  private getPipelineInUrl() {\n    return UrlUtils.getUrlParameter('pipeline');\n  }\n\n  private cancelAnyCurrentPendingQuery() {\n    if (Utils.exists(this.currentPendingQuery)) {\n      this.logger.debug('Cancelling current pending query');\n      Promise.reject('Cancelling current pending query');\n      this.currentPendingQuery = undefined;\n      return true;\n    }\n    return false;\n  }\n\n  private showExecutingQueryAnimation() {\n    if (!this.showingExecutingQueryAnimation) {\n      $$(this.element).addClass('coveo-executing-query');\n      this.showingExecutingQueryAnimation = true;\n    }\n  }\n\n  private hideExecutingQueryAnimation() {\n    if (this.showingExecutingQueryAnimation) {\n      $$(this.element).removeClass('coveo-executing-query');\n      this.showingExecutingQueryAnimation = false;\n    }\n  }\n\n  private keepLastSearchUid(query: IQuery, queryResults: IQueryResults, options: IQueryOptions) {\n    if (options.keepLastSearchUid === true) {\n      return true;\n    }\n\n    const enableHistory = !!(this.searchInterface && this.searchInterface.options && this.searchInterface.options.enableHistory);\n    return enableHistory && this.compareWithLastQueryHash(this.queryHash(query, queryResults));\n  }\n\n  private compareWithLastQueryHash(queryHash: string) {\n    const lastParams = JSON.parse(this.getLastQueryHash());\n    const newParams = JSON.parse(queryHash);\n    return Utils.objectEqual(lastParams, newParams);\n  }\n\n  private queryHash(query: IQuery, queryResults?: IQueryResults): string {\n    const queryKeys: (keyof IQuery)[] = [\n      'q',\n      'aq',\n      'cq',\n      'dq',\n      'lq',\n      'searchHub',\n      'tab',\n      'pipeline',\n      'sortCriteria',\n      'recommendation',\n      'commerce',\n      'facets'\n    ];\n\n    const queryParams = pick(query, ...queryKeys);\n\n    if (queryResults) {\n      queryParams.pipeline = queryResults.pipeline;\n    }\n\n    return JSON.stringify(queryParams);\n  }\n\n  private getCallOptions(): IEndpointCallOptions {\n    let args: IBuildingCallOptionsEventArgs = {\n      options: {\n        authentication: []\n      }\n    };\n\n    $$(this.element).trigger(QueryEvents.buildingCallOptions, args);\n    return args.options;\n  }\n\n  private newQueryEvent(args) {\n    $$(this.element).trigger(QueryEvents.newQuery, args);\n  }\n\n  private buildingQueryEvent(args) {\n    $$(this.element).trigger(QueryEvents.buildingQuery, args);\n  }\n\n  private doneBuildingQueryEvent(args) {\n    $$(this.element).trigger(QueryEvents.doneBuildingQuery, args);\n  }\n\n  private duringQueryEvent(args) {\n    $$(this.element).trigger(QueryEvents.duringQuery, args);\n  }\n\n  private querySuccessEvent(args) {\n    $$(this.element).trigger(QueryEvents.querySuccess, args);\n  }\n\n  private fetchMoreSuccessEvent(args) {\n    $$(this.element).trigger(QueryEvents.fetchMoreSuccess, args);\n  }\n\n  private deferredQuerySuccessEvent(args) {\n    $$(this.element).trigger(QueryEvents.deferredQuerySuccess, args);\n  }\n\n  private queryError(args) {\n    $$(this.element).trigger(QueryEvents.queryError, args);\n  }\n\n  private preprocessResultsEvent(args) {\n    $$(this.element).trigger(QueryEvents.preprocessResults, args);\n  }\n\n  private noResultEvent(args) {\n    $$(this.element).trigger(QueryEvents.noResults, args);\n  }\n\n  public debugInfo() {\n    let info: any = {\n      query: this.lastQuery\n    };\n\n    if (this.lastQueryResults != null) {\n      info.queryDuration = () => this.buildQueryDurationSection(this.lastQueryResults);\n      info.results = () => omit(this.lastQueryResults, 'results');\n    }\n\n    if (this.currentError != null) {\n      info.error = () => this.currentError;\n    }\n\n    return info;\n  }\n\n  private buildQueryDurationSection(queryResults: IQueryResults) {\n    let dom = Dom.createElement('div', { className: 'coveo-debug-queryDuration' });\n    let graph = Dom.createElement('div', { className: 'coveo-debug-durations' });\n    let debugRef = BaseComponent.getComponentRef('Debug');\n    dom.appendChild(graph);\n    forEach(debugRef.durationKeys, (key: string) => {\n      let duration = queryResults[key];\n      if (duration != null) {\n        graph.appendChild(\n          Dom.createElement('div', {\n            className: 'coveo-debug-duration',\n            style: `width:${duration}px`,\n            'data-id': key\n          })\n        );\n        let legend = Dom.createElement('div', { className: 'coveo-debug-duration-legend', 'data-id': key });\n        dom.appendChild(legend);\n        let keyDom = Dom.createElement('span', { className: 'coveo-debug-duration-label' });\n        keyDom.appendChild(document.createTextNode(key));\n        legend.appendChild(keyDom);\n        let durationDom = Dom.createElement('span', { className: 'coveo-debug-duration-value' });\n        durationDom.appendChild(document.createTextNode(duration));\n        legend.appendChild(durationDom);\n      }\n    });\n    return dom;\n  }\n\n  private logQueryInActionsHistory(query: IQuery) {\n    let queryElement: CoveoAnalytics.HistoryQueryElement = {\n      name: 'Query',\n      value: query.q,\n      time: JSON.stringify(new Date())\n    };\n    this.historyStore.addElement(queryElement);\n  }\n\n  private getAnalyticsInformation(): AnalyticsInformation {\n    const analyticsInfo = new AnalyticsInformation();\n    analyticsInfo.pendingSearchEvent = this.usageAnalytics.getPendingSearchEvent();\n\n    // add fallback for custom code that incorrectly implement the interface.\n    if (this.usageAnalytics.getOriginContext) {\n      analyticsInfo.originContext = this.usageAnalytics.getOriginContext();\n    } else {\n      analyticsInfo.originContext = 'Search';\n    }\n    if (this.usageAnalytics.getUserDisplayName) {\n      analyticsInfo.userDisplayName = this.usageAnalytics.getUserDisplayName();\n    } else {\n      analyticsInfo.userDisplayName = undefined;\n    }\n\n    return analyticsInfo;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/controllers/QueryController.ts","import { BaseComponent } from './BaseComponent';\n\nexport class RootComponent extends BaseComponent {\n  constructor(public element: HTMLElement, public type: string) {\n    super(element, type);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Base/RootComponent.ts","var store = require('./_shared')('wks');\nvar uid = require('./_uid');\nvar Symbol = require('./_global').Symbol;\nvar USE_SYMBOL = typeof Symbol == 'function';\n\nvar $exports = module.exports = function (name) {\n  return store[name] || (store[name] =\n    USE_SYMBOL && Symbol[name] || (USE_SYMBOL ? Symbol : uid)('Symbol.' + name));\n};\n\n$exports.store = store;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_wks.js\n// module id = 46\n// module chunks = 88 89","import { Component } from '../ui/Base/Component';\nimport { $$, Dom } from './Dom';\n\nexport interface IComponentsTypesSearchInterface {\n  getComponents: (type: string) => Component[];\n}\n\nexport class ComponentsTypes {\n  public static get allFacetsType() {\n    return [\n      'Facet',\n      'FacetSlider',\n      'FacetRange',\n      'TimespanFacet',\n      'HierarchicalFacet',\n      'CategoryFacet',\n      'DynamicFacet',\n      'DynamicFacetRange',\n      'DynamicHierarchicalFacet'\n    ];\n  }\n\n  public static get allFacetsClassname() {\n    return ComponentsTypes.allFacetsType.map(type => `Coveo${type}`);\n  }\n\n  public static getAllFacetElementsFromElement(root: HTMLElement | Dom) {\n    const selectors = ComponentsTypes.allFacetsClassname.map(className => `.${className}`).join(', ');\n    const hasNoFacetChild = (element: HTMLElement) => !$$(element).findAll(selectors).length;\n\n    return $$(root as HTMLElement)\n      .findAll(selectors)\n      .filter(hasNoFacetChild);\n  }\n\n  public static getAllFacetInstancesFromElement(root: HTMLElement | Dom) {\n    return ComponentsTypes.getAllFacetElementsFromElement(root).map(element => Component.get(element) as Component);\n  }\n\n  public static getAllFacetsFromSearchInterface(searchInterface: IComponentsTypesSearchInterface) {\n    return ComponentsTypes.allFacetsType.reduce(\n      (facets: Component[], facetType: string) => facets.concat(searchInterface.getComponents(facetType)),\n      []\n    );\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/ComponentsTypes.ts","export function getHeadingTag(level?: number, fallbackTag = 'div') {\n  if (level === undefined || level < 1 || level > 6) {\n    return fallbackTag;\n  }\n  return `h${level}`;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/AccessibilityUtils.ts","import * as _ from 'underscore';\nimport { ICategoryFacetRequest } from '../../rest/CategoryFacetRequest';\nimport { IFacetRequest } from '../../rest/Facet/FacetRequest';\nimport { IGroupByRequest } from '../../rest/GroupByRequest';\nimport { IFacetOptions, IQuery, IUserActionsRequest, ICommerceRequest } from '../../rest/Query';\nimport { IQueryFunction } from '../../rest/QueryFunction';\nimport { IRankingFunction } from '../../rest/RankingFunction';\nimport { Utils } from '../../utils/Utils';\nimport { ExpressionBuilder } from './ExpressionBuilder';\nimport { QueryBuilderExpression } from './QueryBuilderExpression';\n\n/**\n * The QueryBuilder is used to build a {@link IQuery} that will be able to be executed using the Search API.\n *\n * The class exposes several members and methods that help components and external code to build up the final query that is sent to the Search API.\n *\n */\nexport class QueryBuilder {\n  /**\n   * Used to build the basic part of the query expression.\n   *\n   * This part typically consists of user-entered content such as query keywords, etc.\n   * @type {Coveo.ExpressionBuilder}\n   */\n  public expression: ExpressionBuilder = new ExpressionBuilder();\n  /**\n   * Used to build the advanced part of the query expression.\n   *\n   * This part is typically formed of filter expressions generated by components such as facets, external code, etc.\n   * @type {Coveo.ExpressionBuilder}\n   */\n  public advancedExpression: ExpressionBuilder = new ExpressionBuilder();\n  /**\n   * Used to build the advanced part of the query expression.\n   *\n   * This part is similar to `advancedExpression`, but its content is interpreted as a constant expression by the index and it takes advantage of special caching features.\n   * @type {Coveo.ExpressionBuilder}\n   */\n  public constantExpression: ExpressionBuilder = new ExpressionBuilder();\n  /**\n   * The contextual text.\n   *\n   * This is the contextual text part of the query. It uses the Coveo Machine Learning service to pick key keywords from the text and add them to the basic expression.\n   * This field is mainly used to pass context such a case description, long textual query or any other form of text that might help in\n   * refining the query.\n   */\n  public longQueryExpression: ExpressionBuilder = new ExpressionBuilder();\n  /**\n   * Used to build the disjunctive part of the query expression.\n   *\n   * When present, this part is evaluated separately from the other expressions and the matching results are merged to those matching expressions, `advancedExpression` and `constantExpression`.\n   *\n   * The final boolean expression for the query is thus (basic advanced constant) OR (disjunction).\n   * @type {Coveo.ExpressionBuilder}\n   */\n  public disjunctionExpression: ExpressionBuilder = new ExpressionBuilder();\n  /**\n   * The hub value set from the {@link Analytics} component.\n   *\n   * Used for analytics reporting in the Coveo platform.\n   */\n  public searchHub: string;\n  /**\n   * The tab value set from the {@link Tab} component.\n   */\n  public tab: string;\n  public locale: string;\n  /**\n   * Name of the query pipeline to use.\n   *\n   * Specifies the name of the query pipeline to use for the query. If not specified, the default value is default, which means the default query pipeline will be used.\n   */\n  public pipeline: string;\n  /**\n   * The maximum age for cached query results, in milliseconds.\n   *\n   * If results for the exact same request (including user identities) are available in the in-memory cache, they will be used if they are not older than the specified value.\n   *\n   * Otherwise, the query will be sent to the index.\n   */\n  public maximumAge: number;\n\n  /**\n   * Whether to interpret wildcard characters (`*`) in the basic [`expression`]{@link QueryBuilder.expression} keywords.\n   *\n   * Setting this attribute to `true` enables the wildcards features of the index, effectively expanding keywords\n   * containing wildcard characters (`*`) to the possible matching keywords in order to broaden the query (see\n   * [Using Wildcards in Queries](https://docs.coveo.com/en/1580/)).\n   *\n   * See also [`enableQuestionMarks`]{@link QueryBuilder.enableQuestionMarks}.\n   *\n   * **Note:**\n   * > Normally, the [`enableWildcards`]{@link Querybox.options.enableWildcards} option of the\n   * > [`Querybox`]{@link Querybox} component determines the value of this attribute during the initialization of the\n   * > search page.\n   */\n  public enableWildcards: boolean;\n\n  /**\n   * Whether to interpret question mark characters (`?`) in the basic [`expression`]{@link QueryBuilder.expression}\n   * keywords (see [Using Wildcards in Queries](https://docs.coveo.com/en/1580/).\n   *\n   * Setting this attribute to `true` has no effect unless [`enableWildcards`]{@link QueryBuilder.enableWildcards} is\n   * also `true`.\n   *\n   * **Note:**\n   * > Normally, the [`enableQuestionMarks`]{@link Querybox.options.enableQuestionMarks} option of the\n   * > [`Querybox`]{@link Querybox} component determines the value of this attribute during the initialization of the\n   * > search page.\n   */\n  public enableQuestionMarks: boolean;\n\n  /**\n   * Whether to interpret special query syntax (e.g., `@objecttype=message`) in the basic\n   * [`expression`]{@link QueryBuilder.expression} (see\n   * [Coveo Query Syntax Reference](https://docs.coveo.com/en/1552/searching-with-coveo/coveo-cloud-query-syntax)).\n   *\n   * See also [`enableLowercaseOperators`]{@link QueryBuilder.enableLowercaseOperators}.\n   *\n   * **Note:**\n   * > Normally, the [`enableQuerySyntax`]{@link Querybox.options.enableQuerySyntax} option of the\n   * > [`Querybox`]{@link Querybox} component determines the value of this attribute during the initialization of the\n   * search page. End user preferences can also modify the value of this attribute.\n   *\n   * Default value is `false`\n   */\n  public enableQuerySyntax: boolean = false;\n\n  /**\n   * Whether to interpret the `AND`, `NOT`, `OR`, and `NEAR` keywords in the basic\n   * [`expression`]{@link QueryBuilder.expression} as query operators, even if those keywords are in lowercase.\n   *\n   * Setting this attribute to `true` has no effect unless [`enableQuerySyntax`]{@link QueryBuilder.enableQuerySyntax}\n   * is also `true`.\n   *\n   * **Note:**\n   * > Normally, the [`enableLowercaseOperators`]{@link Querybox.options.enableLowercaseOperators} option of the\n   * > [`Querybox`]{@link Querybox} component determines the value of this attribute during the initialization of the\n   * > search page.\n   */\n  public enableLowercaseOperators: boolean;\n\n  /**\n   * Whether to automatically convert the basic [`expression`]{@link QueryBuilder.expression} to a partial match\n   * expression if it contains at least a certain number of keywords (see\n   * [`partialMatchKeywords`]{@link QueryBuilder.partialMatchKeywords}), so that items containing at least a certain\n   * subset of those keywords (see [`partialMatchThreshold`]{@link QueryBuilder.partialMatchThreshold}) will match the\n   * query.\n   *\n   * **Note:**\n   * > Normally, the [`enablePartialMatch`]{@link Querybox.options.enablePartialMatch} option of the\n   * > [`Querybox`]{@link Querybox} component determines the value of this attribute during the initialization of the\n   * > search page.\n   */\n  public enablePartialMatch: boolean;\n\n  /**\n   * The minimum number of keywords that need to be present in the basic [`expression`]{@link QueryBuilder.expression}\n   * to convert it to a partial match expression.\n   *\n   * The value of this attribute has no meaning unless [`enablePartialMatch`]{@link QueryBuilder.enablePartialMatch} is\n   * `true`.\n   *\n   * See also [`partialMatchThreshold`]{@link QueryBuilder.partialMatchThreshold}.\n   *\n   * **Note:**\n   * > Normally, the [`partialMatchKeywords`]{@link Querybox.options.partialMatchKeywords} option of the\n   * > [`Querybox`]{@link Querybox} component determines the value of this attribute during the initialization of the\n   * > search page.\n   */\n  public partialMatchKeywords: number;\n\n  /**\n   * An absolute or relative (percentage) value indicating the minimum number of partial match expression keywords an\n   * item must contain to match the query.\n   *\n   * The value of this attribute has no meaning unless [`enablePartialMatch`]{@link QueryBuilder.enablePartialMatch} is\n   * `true`.\n   *\n   * See also [`partialMatchKeywords`]{@link QueryBuilder.partialMatchKeywords}.\n   *\n   * **Note:**\n   * > Normally, the [`partialMatchThreshold`]{@link Querybox.options.partialMatchThreshold} option of the\n   * > [`Querybox`]{@link Querybox} component determines the value of this attribute during the initialization of the\n   * > search page.\n   */\n  public partialMatchThreshold: string;\n  /**\n   * This is the 0-based index of the first result to return.\n   *\n   * If not specified, this parameter defaults to 0.\n   */\n  public firstResult: number = 0;\n  /**\n   * This is the number of results to return, starting from {@link IQuery.firstResult}.\n   *\n   * If not specified, this parameter defaults to 10.\n   */\n  public numberOfResults: number = 10;\n  /**\n   * Specifies the length (in number of characters) of the excerpts generated by the indexer based on the keywords present in the query.\n   *\n   * The index includes the top most interesting sentences (in the order they appear in the item) that fit in the specified number of characters.\n   *\n   * When not specified, the default value is 200.\n   */\n  public excerptLength: number;\n  /**\n   * Specifies a field on which {@link Folding} should be performed.\n   *\n   * Folding is a kind of duplicate filtering where only the first result with any given value of the field is included in the result set.\n   *\n   * It's typically used to return only one result in a conversation, for example when forum posts in a thread are indexed as separate items.\n   */\n  public filterField: string;\n  /**\n   * Number of results that should be folded, using the {@link IQuery.filterField}.\n   */\n  public filterFieldRange: number;\n  /**\n   * Specifies the `parentField` when doing parent-child loading (See: {@link Folding}).\n   */\n  public parentField: string;\n  /**\n   * Specifies the childField when doing parent-child loading (See: {@link Folding}).\n   */\n  public childField: string;\n  public fieldsToInclude: string[];\n  public requiredFields: string[] = [];\n  public includeRequiredFields: boolean = false;\n  public fieldsToExclude: string[];\n  /**\n   * Whether to enable query corrections on this query (see {@link DidYouMean}).\n   */\n  public enableDidYouMean: boolean = false;\n  /**\n   * Whether to enable debug info on the query.\n   *\n   * This will return additional information on the resulting JSON response from the Search API.\n   *\n   * Mostly: execution report (a detailed breakdown of the parsed and executed query).\n   */\n  public enableDebug: boolean = false;\n  /**\n   * **Note:**\n   *\n   * > The Coveo Cloud V2 platform does not support collaborative rating. Therefore, this property is obsolete in Coveo Cloud V2.\n   *\n   * Whether the index should take collaborative rating in account when ranking result (See: {@link ResultRating}).\n   */\n  public enableCollaborativeRating: boolean;\n  /**\n   * Specifies the sort criterion(s) to use to sort results. If not specified, this parameter defaults to relevancy.\n   *\n   * Possible values are : <br/>\n   * -- relevancy :  This uses all the configured ranking weights as well as any specified ranking expressions to rank results.<br/>\n   * -- dateascending / datedescending Sort using the value of the `@date` field, which is typically the last modification date of an item in the index.<br/>\n   * -- qre : Sort using only the weights applied through ranking expressions. This is much like using `relevancy` except that automatic weights based on keyword proximity etc, are not computed.<br/>\n   * -- nosort : Do not sort the results. The order in which items are returned is essentially random.<br/>\n   * -- @field ascending / @field descending Sort using the value of a custom field.\n   */\n  public sortCriteria: string = 'relevancy';\n  /**\n   * @deprecated\n   */\n  public sortField: string;\n  public retrieveFirstSentences: boolean = true;\n  public timezone: string;\n  public queryUid: string;\n  /**\n   * Specifies an array of Query Function operation that will be executed on the results.\n   */\n  public queryFunctions: IQueryFunction[] = [];\n  /**\n   * Specifies an array of Ranking Function operations that will be executed on the results.\n   */\n  public rankingFunctions: IRankingFunction[] = [];\n  /**\n   * Specifies an array of Group By operations that can be performed on the query results to extract facets.\n   * Cannot be used alongside [`facetRequests`]{@link QueryBuilder.facetRequests}\n   */\n  public groupByRequests: IGroupByRequest[] = [];\n\n  /**\n   * Specifies an array of request for the DynamicFacet component.\n   * Cannot be used alongside [`groupByRequests`]{@link QueryBuilder.groupByRequests}\n   */\n  public facetRequests: IFacetRequest[] = [];\n\n  /**\n   * The global configuration options to apply to the requests in the [facets]{@link QueryBuilder.facets} array.\n   */\n  public facetOptions: IFacetOptions = {};\n\n  /**\n   * Specifies an array of request for the CategoryFacet component.\n   */\n  public categoryFacets: ICategoryFacetRequest[] = [];\n  public enableDuplicateFiltering: boolean = false;\n  /**\n   * The custom context information to send along with the query. Each value should be a string or an array of strings.\n   *\n   * Custom context information can influence the output of Coveo Machine Learning models and can also be used in query pipeline conditions.\n   */\n  public context: { [key: string]: any };\n  /**\n   * The actions history represents the past actions a user made and is used by the Coveo Machine Learning service to suggest recommendations.\n   * It is generated by the page view script (https://github.com/coveo/coveo.analytics.js).\n   */\n  public actionsHistory: string;\n  /**\n   * This is the ID of the recommendation interface that generated the query.\n   */\n  public recommendation: string;\n  /**\n   * Specifies if the Search API should perform queries even when no keywords were entered by the end user.\n   *\n   * End user keywords are present in either the {@link IQuery.q} or {@link IQuery.lq} part of the query.\n   *\n   * This parameter is normally controlled by {@link SearchInterface.options.allowEmptyQuery} option.\n   */\n  public allowQueriesWithoutKeywords: boolean;\n  /**\n   * A request to retrieve user actions in the query response.\n   */\n  public userActions: IUserActionsRequest;\n  /**\n   * A request for a commerce query.\n   */\n  public commerce: ICommerceRequest;\n  /**\n   * Build the current content or state of the query builder and return a {@link IQuery}.\n   *\n   * build can be called multiple times on the same QueryBuilder.\n   * @returns {IQuery}\n   */\n  public build(): IQuery {\n    const query: IQuery = {\n      q: this.expression.build(),\n      aq: this.advancedExpression.build(),\n      cq: this.constantExpression.build(),\n      lq: this.longQueryExpression.build(),\n      dq: this.disjunctionExpression.build(),\n\n      searchHub: this.searchHub,\n      tab: this.tab,\n      locale: this.locale,\n      pipeline: this.pipeline,\n      maximumAge: this.maximumAge,\n\n      wildcards: this.enableWildcards,\n      questionMark: this.enableQuestionMarks,\n      lowercaseOperators: this.enableLowercaseOperators,\n      partialMatch: this.enablePartialMatch,\n      partialMatchKeywords: this.partialMatchKeywords,\n      partialMatchThreshold: this.partialMatchThreshold,\n\n      firstResult: this.firstResult,\n      numberOfResults: this.numberOfResults,\n      excerptLength: this.excerptLength,\n      filterField: this.filterField,\n      filterFieldRange: this.filterFieldRange,\n      parentField: this.parentField,\n      childField: this.childField,\n      fieldsToInclude: this.computeFieldsToInclude(),\n      fieldsToExclude: this.fieldsToExclude,\n      enableDidYouMean: this.enableDidYouMean,\n      sortCriteria: this.sortCriteria,\n      sortField: this.sortField,\n      queryFunctions: this.queryFunctions,\n      rankingFunctions: this.rankingFunctions,\n      groupBy: this.groupBy,\n      facets: this.facets,\n      facetOptions: this.facetOptions,\n      categoryFacets: this.categoryFacets,\n      retrieveFirstSentences: this.retrieveFirstSentences,\n      timezone: this.timezone,\n      enableQuerySyntax: this.enableQuerySyntax,\n      enableDuplicateFiltering: this.enableDuplicateFiltering,\n      enableCollaborativeRating: this.enableCollaborativeRating,\n      debug: this.enableDebug,\n      context: this.context,\n      actionsHistory: this.actionsHistory,\n      recommendation: this.recommendation,\n      allowQueriesWithoutKeywords: this.allowQueriesWithoutKeywords,\n      userActions: this.userActions,\n      commerce: this.commerce\n    };\n    return query;\n  }\n\n  /**\n   * Return only the expression(s) part(s) of the query, as a string.\n   *\n   * This means the basic, advanced and constant part in a complete expression {@link IQuery.q}, {@link IQuery.aq}, {@link IQuery.cq}.\n   * @returns {string}\n   */\n  public computeCompleteExpression(): string {\n    return this.computeCompleteExpressionParts().full;\n  }\n\n  /**\n   * Return only the expression(s) part(s) of the query, as an object.\n   * @returns {{full: string, withoutConstant: string, constant: string}}\n   */\n  public computeCompleteExpressionParts(): QueryBuilderExpression {\n    return new QueryBuilderExpression(\n      this.expression.build(),\n      this.advancedExpression.build(),\n      this.constantExpression.build(),\n      this.disjunctionExpression.build()\n    );\n  }\n\n  /**\n   * Return only the expression(s) part(s) of the query, as a string, except the given expression.\n   *\n   * This is used by {@link Facet}, to build their group by request with query override.\n   * @param except\n   * @returns {string}\n   */\n  public computeCompleteExpressionExcept(except: string): string {\n    return this.computeCompleteExpressionPartsExcept(except).full;\n  }\n\n  /**\n   * Return only the expression(s) part(s) of the query, as an object, except the given expression.\n   *\n   * This is used by {@link Facet}, to build their group by request with query override.\n   * @param except\n   * @returns {{full: string, withoutConstant: string, constant: string}}\n   */\n  public computeCompleteExpressionPartsExcept(except: string): QueryBuilderExpression {\n    const withoutConstantAndExcept = ExpressionBuilder.merge(this.expression, this.advancedExpression);\n    withoutConstantAndExcept.remove(except);\n\n    const basicWithoutException = new ExpressionBuilder();\n    basicWithoutException.fromExpressionBuilder(this.expression);\n    basicWithoutException.remove(except);\n\n    const advancedWithoutException = new ExpressionBuilder();\n    advancedWithoutException.fromExpressionBuilder(this.advancedExpression);\n    advancedWithoutException.remove(except);\n\n    const constantWithoutException = new ExpressionBuilder();\n    constantWithoutException.fromExpressionBuilder(this.constantExpression);\n    constantWithoutException.remove(except);\n\n    const disjunctionWithoutException = new ExpressionBuilder();\n    disjunctionWithoutException.fromExpressionBuilder(this.disjunctionExpression);\n    disjunctionWithoutException.remove(except);\n\n    return new QueryBuilderExpression(\n      basicWithoutException.build(),\n      advancedWithoutException.build(),\n      constantWithoutException.build(),\n      disjunctionWithoutException.build()\n    );\n  }\n\n  /**\n   * Add fields to specifically include when the results return.\n   *\n   * This can be used to accelerate the execution time of every query, as there is much less data to process if you whitelist specific fields.\n   * @param fields\n   */\n  public addFieldsToInclude(fields: string[]) {\n    this.fieldsToInclude = _.uniq((this.fieldsToInclude || []).concat(fields));\n  }\n\n  public addRequiredFields(fields: string[]) {\n    this.requiredFields = _.uniq(this.requiredFields.concat(fields));\n  }\n\n  /**\n   * Add fields to specifically exclude when the results return.\n   *\n   * This can be used to accelerate the execution time of every query, as there is much less data to process if you blacklist specific fields.\n   * @param fields\n   */\n  public addFieldsToExclude(fields: string[]) {\n    this.fieldsToExclude = _.uniq((this.fieldsToInclude || []).concat(fields));\n  }\n\n  public computeFieldsToInclude() {\n    if (this.includeRequiredFields || this.fieldsToInclude != null) {\n      return this.requiredFields.concat(this.fieldsToInclude || []);\n    } else {\n      return null;\n    }\n  }\n\n  /**\n   * Adds or updates a single context key-value pair in the `context` object.\n   *\n   * @param key The context key. If this key is already present in the `context` object, its value is updated.\n   * @param value The context value. This should be a string or an array of strings.\n   */\n  public addContextValue(key: string, value: any) {\n    if (this.context == null) {\n      this.context = {};\n    }\n    this.context[key] = value;\n  }\n\n  /**\n   * Merges the specified `values` into the `context` object.\n   *\n   * @param values The object to merge into the `context` object. Can contain multiple key-value pairs, where each value should be a string or an array of strings. If some keys are already present in the `context` object, their values are updated.\n   */\n  public addContext(values: { [key: string]: any }) {\n    if (this.context == null) {\n      this.context = {};\n    }\n    _.extend(this.context, values);\n  }\n\n  /**\n   * Returns true if the current query contains any expression that are considered \"end user input\".\n   *\n   * This usually means anything entered in the basic (see [q]{@link IQuery.options.q}) or long (see [lq]{@link IQuery.options.lq}) part of the query.\n   */\n  public containsEndUserKeywords(): boolean {\n    const query = this.build();\n    return Utils.isNonEmptyString(query.q) || Utils.isNonEmptyString(query.lq);\n  }\n\n  private get groupBy() {\n    if (Utils.isEmptyArray(this.groupByRequests)) {\n      return undefined;\n    }\n\n    return this.groupByRequests;\n  }\n\n  private set groupBy(groupBy: IGroupByRequest[]) {\n    this.groupByRequests = groupBy;\n  }\n\n  private get facets() {\n    if (Utils.isEmptyArray(this.facetRequests)) {\n      return undefined;\n    }\n\n    return this.facetRequests;\n  }\n\n  private set facets(facets: IFacetRequest[]) {\n    this.facetRequests = facets;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Base/QueryBuilder.ts","import { findLastIndex } from 'underscore';\nimport { LocalStorageUtils } from '../../Core';\nimport { Cookie } from '../../utils/CookieUtils';\nimport { buildHistoryStore } from '../../utils/HistoryStore';\nimport { SafeLocalStorage } from '../../utils/LocalStorageUtils';\nimport { PendingSearchEvent } from './PendingSearchEvent';\n\nexport class AnalyticsInformation {\n  private readonly visitorIdKey = 'visitorId';\n  private readonly clientIdKey = 'clientId';\n  private readonly storage = new SafeLocalStorage();\n\n  public pendingSearchEvent: PendingSearchEvent;\n\n  public originContext: string;\n  public userDisplayName: string;\n\n  public get clientId() {\n    // Yes, its backwards: We are using a key named \"visitorId\" to fetched something for \"clientId\"\n    // This is done to synchronize with https://github.com/coveo/coveo.analytics.js\n    // This is intentional.\n    return this.storage.getItem(this.visitorIdKey) || null;\n  }\n\n  public set clientId(id: string) {\n    this.storage.setItem(this.visitorIdKey, id);\n  }\n\n  public get lastPageId() {\n    const store = buildHistoryStore();\n    const actions = store.getHistory() as { name: string; value?: string }[];\n    const pageViewActionId = findLastIndex(actions, action => action.name === 'PageView');\n    if (pageViewActionId === -1) {\n      return null;\n    }\n    return actions[pageViewActionId].value;\n  }\n\n  public get location() {\n    return document.location.href;\n  }\n\n  public get referrer() {\n    return document.referrer;\n  }\n\n  public clear() {\n    this.clearLocalStorage();\n    this.clearCookies();\n  }\n\n  private clearLocalStorage() {\n    this.storage.removeItem(this.visitorIdKey);\n    new LocalStorageUtils(this.clientIdKey).remove();\n  }\n\n  private clearCookies() {\n    Cookie.erase(this.visitorIdKey);\n    Cookie.erase(this.clientIdKey);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Analytics/AnalyticsInformation.ts","import { IFieldDescription } from '../../rest/FieldDescription';\n\n/**\n * The `IFieldOption` interface declares a type for options that should contain a field to be used in a query.\n *\n * The only constraint this type has over a basic string is that it should start with the `@` character.\n */\nexport interface IFieldOption extends String {}\n\n/**\n * The `IFieldConditionOption` is a component option expressing a field-based condition that must be satisfied.\n */\nexport interface IFieldConditionOption {\n  /**\n   * The name of the field on which the condition is based (e.g., `author`).\n   */\n  field: string;\n\n  /**\n   * The field values allowed (or disallowed) by the condition (e.g., `[\"Alice Smith\", \"Bob Jones\"]`).\n   */\n  values: string[];\n\n  /**\n   * Whether the condition should disallow the specified [`values`]{@link IFieldConditionOption} rather than allowing them.\n   */\n  reverseCondition?: boolean;\n}\n\n/**\n * The `IQueryExpression` type is a string type dedicated to query expressions.\n *\n * This type is used to build a specific option for query expressions.\n */\nexport type IQueryExpression = string;\n\nexport interface IComponentOptionsLoadOption<T> {\n  (element: HTMLElement, name: string, option: IComponentOptionsOption<T>): T;\n}\n\n/**\n * The `IComponentOptionsPostProcessing<T>` interface describes a post process function that should allow a component\n * option to further modify its own value once all other options of that component have been built.\n */\nexport interface IComponentOptionsPostProcessing<T> {\n  /**\n   * Specifies a function that should allow a component option to further modify its own value once all other options\n   * of that component have been built.\n   * @param value The value originally specified for the option.\n   * @param options The options of the component.\n   */\n  (value: T, options: any): T;\n}\n\nexport interface IComponentOptionsOption<T> extends IComponentOptions<T> {\n  type?: ComponentOptionsType;\n  load?: IComponentOptionsLoadOption<T>;\n}\n\n/**\n * The `IComponentOptions` interface describes the available parameters when building any kind of component\n * option.\n */\nexport interface IComponentOptions<T> {\n  /**\n   * Specifies the value the option must take when no other value is explicitly specified.\n   */\n  defaultValue?: T;\n\n  /**\n   * Specifies a function that should return the value the option must take when no other value is explicitly specified.\n   *\n   * @param element The HTMLElement on which the current option is being parsed.\n   * @return The default value of the option.\n   */\n  defaultFunction?: (element: HTMLElement) => T;\n\n  /**\n   * Specifies whether it is necessary to explicitly specify a value for the option in order for the component to\n   * function properly.\n   *\n   * **Example:**\n   *\n   * > The [`field`]{@link Facet.options.field} option of the `Facet` component is required, since a facet cannot\n   * > function properly without a field.\n   */\n  required?: boolean;\n\n  /**\n   * Specifies a function that should allow a component option to further modify its own value once all other options\n   * of that component have been built.\n   *\n   * **Example:**\n   *\n   * > By default, the [`id`]{@link Facet.options.id} option of the `Facet` component uses a post processing function to\n   * > set its value to that of the [`field`]{@link Facet.options.field} option.\n   */\n  postProcessing?: IComponentOptionsPostProcessing<T>;\n\n  /**\n   * Specifies a different markup name to use for an option, rather than the standard name (i.e., `data-` followed by\n   * the hyphened name of the option).\n   *\n   * **Note:**\n   *\n   * > This should only be used for backward compatibility reasons.\n   */\n  attrName?: string;\n\n  /**\n   * Specifies an alias, or array of aliases, which can be used instead of the actual option name.\n   *\n   * **Note:**\n   *\n   * > This can be useful to modify an option name without introducing a breaking change.\n   */\n  alias?: string | string[];\n\n  /**\n   * Specifies a section name inside which the option should appear in the Coveo JavaScript Interface Editor.\n   */\n  section?: string;\n\n  /**\n   * Specifies the name of a boolean component option which must be `true` in order for this option to function\n   * properly.\n   *\n   * **Note:**\n   *\n   * > This is mostly useful for the Coveo JavaScript Interface Editor.\n   */\n  depend?: string;\n  priority?: number;\n\n  /**\n   * Specifies a message that labels the option as deprecated. This message appears in the console upon initialization\n   * if the deprecated option is used in the page. Consequently, this message should explain as clearly as possible why\n   * the option is deprecated, and what now replaces it.\n   *\n   * **Note:**\n   *\n   * > Deprecated options do not appear in the Coveo JavaScript Interface Editor.\n   */\n  deprecated?: string;\n\n  /**\n   * Specifies a function that should indicate whether the option value is valid.\n   *\n   * @param value The option value to validate.\n   * @returns `true` if the option value is valid; `false` otherwise.\n   */\n  validator?: (value: T) => boolean;\n}\n\nexport interface IComponentOptionsNumberOption extends IComponentOptionsOption<number>, IComponentOptionsNumberOptionArgs {}\n\n/**\n * The `IComponentOptionsNumberOptionArgs` interface describes the available parameters when building a\n * [number option]{@link ComponentOptions.buildNumberOption).\n */\nexport interface IComponentOptionsNumberOptionArgs extends IComponentOptions<number> {\n  /**\n   * Specifies the exclusive minimum value the option can take.\n   *\n   * Configuring the option using a value strictly less than this minimum displays a warning message in the console and\n   * automatically sets the option to its minimum value.\n   */\n  min?: number;\n\n  /**\n   * Specifies the exclusive maximum value the option can take.\n   *\n   * Configuring the option using a value strictly greater than this maximum displays a warning message in the console\n   * and automatically sets the option to its maximum value.\n   */\n  max?: number;\n\n  /**\n   * Specifies whether the value of this option is a floating point number.\n   */\n  float?: boolean;\n}\n\nexport interface IComponentOptionsListOption extends IComponentOptionsOption<string[]>, IComponentOptionsListOptionArgs {}\n\n/**\n * The `IComponentOptionsListOptionArgs` interface describes the available parameters when building a\n * [list option]{@link ComponentOptions.buildListOption).\n */\nexport interface IComponentOptionsListOptionArgs extends IComponentOptions<string[]> {\n  /**\n   * Specifies the regular expression to use to separate the elements of the list option.\n   *\n   * Default value is a regular expression that inserts a comma character (`,`) between each word.\n   */\n  separator?: RegExp;\n\n  /**\n   * Specifies the possible values the list option elements can take.\n   */\n  values?: any;\n}\n\nexport interface IComponentOptionsCustomListOptionArgs<T> extends IComponentOptions<T> {\n  separator?: RegExp;\n  values?: any;\n}\n\nexport interface IComponentOptionsChildHtmlElementOption\n  extends IComponentOptionsOption<HTMLElement>,\n    IComponentOptionsChildHtmlElementOptionArgs {}\n\nexport interface IComponentOptionsChildHtmlElementOptionArgs extends IComponentOptions<HTMLElement> {\n  selectorAttr?: string;\n  childSelector?: string;\n}\n\n/**\n * The `IComponentOptionsTemplateOptionArgs` interface describes the available parameters when building a\n * [template option]{@link ComponentOptions.buildTemplateOption}.\n */\n\nexport interface IComponentOptionsFieldOption extends IComponentOptionsOption<string>, IComponentOptionsFieldOptionArgs {}\n\n/**\n * The `IComponentOptionsFieldOptionArgs` interface describes the available parameters when building a\n * [field option]{@link ComponentOptions.buildFieldOption}.\n */\nexport interface IComponentOptionsFieldOptionArgs extends IComponentOptions<string> {\n  groupByField?: boolean;\n  includeInResults?: boolean;\n  sortByField?: boolean;\n  splitGroupByField?: boolean;\n  match?: (field: IFieldDescription) => boolean;\n}\n\nexport interface IComponentOptionsFieldsOption extends IComponentOptionsOption<string[]>, IComponentOptionsFieldsOptionArgs {}\n\n/**\n * The `IComponentOptionsFieldsOptionArgs` interface describes the available parameters when building a\n * [fields option]{@link ComponentOptions.buildFieldsOption}.\n */\nexport interface IComponentOptionsFieldsOptionArgs extends IComponentOptions<string[]> {\n  groupByField?: boolean;\n  includeInResults?: boolean;\n  sortByField?: boolean;\n  splitGroupByField?: boolean;\n  match?: (field: IFieldDescription) => boolean;\n}\n/**\n * The `IComponentLocalizedStringOptionArgs` interface describes the available parameters when building a\n * [fields option]{@link ComponentOptions.buildLocalizedStringOption}.\n */\nexport interface IComponentLocalizedStringOptionArgs extends IComponentOptions<string> {\n  localizedString?: () => string;\n  /**\n   * @deprecated Use `localizedString` instead. Using this option could cause localized string to appear incorrectly translated in the interface.\n   */\n  defaultValue?: string;\n}\n\nexport interface IComponentOptionsObjectOption extends IComponentOptionsOption<{ [key: string]: any }>, IComponentOptionsObjectOptionArgs {}\nexport interface IComponentOptionsObjectOptionArgs extends IComponentOptions<{ [key: string]: any }> {\n  subOptions: { [key: string]: IComponentOptionsOption<any> };\n}\n\nexport interface IComponentJsonObjectOption<T> extends IComponentOptions<T> {}\n\nexport enum ComponentOptionsType {\n  BOOLEAN,\n  NUMBER,\n  STRING,\n  LOCALIZED_STRING,\n  LIST,\n  SELECTOR,\n  CHILD_HTML_ELEMENT,\n  TEMPLATE,\n  FIELD,\n  FIELDS,\n  ICON,\n  COLOR,\n  OBJECT,\n  QUERY,\n  HELPER,\n  LONG_STRING,\n  JSON,\n  JAVASCRIPT,\n  NONE,\n  QUERY_EXPRESSION\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Base/IComponentOptions.ts","import { Expression } from '../Expression/Expression';\nimport { ExpressionEndOfInput } from '../Expression/ExpressionEndOfInput';\nimport { ExpressionConstant } from '../Expression/ExpressionConstant';\nimport _ = require('underscore');\n\nexport class Result {\n  public value: string;\n  public subResults: Result[];\n  public parent: Result;\n\n  constructor(value: string | Result[], public expression: Expression, public input: string) {\n    if (_.isString(value)) {\n      this.value = <string>value;\n    } else if (_.isArray(value)) {\n      this.subResults = <Result[]>value;\n      _.forEach(this.subResults, (subResult: Result) => {\n        subResult.parent = this;\n      });\n    }\n  }\n\n  public isSuccess() {\n    // if null is the value, this mean the expression could not parse this input\n    return this.value != null || (this.subResults != null && _.all(this.subResults, subResult => subResult.isSuccess()));\n  }\n\n  /**\n   * Return path to this result ([parent.parent, parent, this])\n   */\n  public path(until?: Result): Result[] {\n    var path: Result[] = this.parent != null && this.parent != until ? this.parent.path(until) : [];\n    path.push(this);\n    return path;\n  }\n\n  /**\n   * Return the closest parent that match the condition (can be it-self). If match is a string, it will search for the result expresion id\n   */\n  public findParent(match: string | { (result: Result): boolean }): Result {\n    var parent = <Result>this;\n    var iterator = _.isString(match) ? (result: Result) => match == result.expression.id : <{ (result: Result): boolean }>match;\n    while (parent != null && !iterator(parent)) {\n      parent = parent.parent;\n    }\n    return parent;\n  }\n\n  /**\n   * Return the first child that match the condition (can be it-self). If match is a string, it will search for the result expresion id\n   */\n  public find(match: string | { (result: Result): boolean }): Result {\n    var iterator = _.isString(match) ? (result: Result) => match == result.expression.id : <{ (result: Result): boolean }>match;\n    if (iterator(this)) {\n      return this;\n    }\n    if (this.subResults) {\n      for (var i = 0; i < this.subResults.length; i++) {\n        var subResultFind = this.subResults[i].find(iterator);\n        if (subResultFind) {\n          return subResultFind;\n        }\n      }\n    }\n    return null;\n  }\n\n  /**\n   * Return all children that match the condition (can be it-self). If match is a string, it will search for the result expresion id\n   */\n  public findAll(match: string | { (result: Result): boolean }): Result[] {\n    var results: Result[] = [];\n    var iterator = _.isString(match) ? (result: Result) => match == result.expression.id : <{ (result: Result): boolean }>match;\n    if (iterator(this)) {\n      results.push(this);\n    }\n    if (this.subResults) {\n      results = _.reduce(this.subResults, (results, subResult: Result) => results.concat(subResult.findAll(iterator)), results);\n    }\n    return results;\n  }\n\n  /**\n   * Return the first child that match the condition (can be it-self). If match is a string, it will search for the result expresion id\n   */\n  public resultAt(index: number, match?: string | { (result: Result): boolean }): Result[] {\n    if (index < 0 || index > this.getLength()) {\n      return [];\n    }\n    if (match != null) {\n      if (_.isString(match)) {\n        if (match == this.expression.id) {\n          return [this];\n        }\n      } else {\n        if ((<{ (result: Result): boolean }>match)(this)) {\n          return [this];\n        }\n      }\n    } else {\n      var value = this.value == null && this.subResults == null ? this.input : this.value;\n      if (value != null) {\n        return [this];\n      }\n    }\n\n    if (this.subResults != null) {\n      var results = [];\n      for (var i = 0; i < this.subResults.length; i++) {\n        var subResult = this.subResults[i];\n        results = results.concat(subResult.resultAt(index, match));\n        index -= subResult.getLength();\n        if (index < 0) {\n          break;\n        }\n      }\n      return results;\n    }\n\n    return [];\n  }\n\n  /**\n   * Return all fail result.\n   */\n  public getExpect(): Result[] {\n    if (this.value == null && this.subResults == null) {\n      return [this];\n    }\n    if (this.subResults != null) {\n      return _.reduce(this.subResults, (expect: Result[], result: Result) => expect.concat(result.getExpect()), []);\n    }\n    return [];\n  }\n\n  /**\n   * Return the best fail result (The farthest result who got parsed). We also remove duplicate and always return the simplest result of a kind\n   */\n  public getBestExpect(): Result[] {\n    var expects = this.getExpect();\n    var groups = _.groupBy(expects, expect => expect.input);\n    var key = _.last(\n      _.keys(groups).sort((a, b) => {\n        return b.length - a.length;\n      })\n    );\n    var bestResults = groups[key];\n    var groups = _.groupBy(bestResults, expect => expect.expression.id);\n    return _.map(groups, (bestResults: Result[]): Result => {\n      return _.chain(bestResults)\n        .map(result => {\n          return {\n            path: result.path().length,\n            result: result\n          };\n        })\n        .sortBy('path')\n        .pluck('result')\n        .first()\n        .value();\n    });\n  }\n\n  public getHumanReadableExpect() {\n    var expect = this.getBestExpect();\n    var input = expect.length > 0 ? _.last(expect).input : '';\n    return (\n      'Expected ' +\n      _.map(expect, (result: Result) => result.getHumanReadable()).join(' or ') +\n      ' but ' +\n      (input.length > 0 ? JSON.stringify(input[0]) : 'end of input') +\n      ' found.'\n    );\n  }\n\n  /**\n   * Return a string that represent what is before this result\n   */\n  public before(): string {\n    if (this.parent == null) {\n      return '';\n    }\n    var index = _.indexOf(this.parent.subResults, this);\n    return (\n      this.parent.before() +\n      _.chain(this.parent.subResults)\n        .first(index)\n        .map(subResult => subResult.toString())\n        .join('')\n        .value()\n    );\n  }\n\n  /**\n   * Return a string that represent what is after this result\n   */\n  public after(): string {\n    if (this.parent == null) {\n      return '';\n    }\n    var index = _.indexOf(this.parent.subResults, this);\n    return (\n      _.chain(this.parent.subResults)\n        .last(this.parent.subResults.length - index - 1)\n        .map(subResult => subResult.toString())\n        .join('')\n        .value() + this.parent.after()\n    );\n  }\n\n  /**\n   * Return the length of the result\n   */\n  public getLength() {\n    if (this.value != null) {\n      return this.value.length;\n    }\n\n    if (this.subResults != null) {\n      return _.reduce(this.subResults, (length: number, subResult: Result) => length + subResult.getLength(), 0);\n    }\n\n    return this.input.length;\n  }\n\n  public toHtmlElement(): HTMLElement {\n    var element = document.createElement('span');\n    var id = this.expression != null ? this.expression.id : null;\n\n    if (id != null) {\n      element.setAttribute('data-id', id);\n    }\n\n    element.setAttribute('data-success', this.isSuccess().toString());\n\n    if (this.value != null) {\n      element.appendChild(document.createTextNode(this.value));\n      element.setAttribute('data-value', this.value);\n    } else if (this.subResults != null) {\n      _.each(this.subResults, (subResult: Result) => {\n        element.appendChild(subResult.toHtmlElement());\n      });\n    } else {\n      element.appendChild(document.createTextNode(this.input));\n      element.setAttribute('data-input', this.input);\n      element.className = 'magic-box-error' + (this.input.length > 0 ? '' : ' magic-box-error-empty');\n    }\n\n    element['result'] = this;\n\n    return element;\n  }\n\n  /**\n   * Clean the result to have the most relevant result. If the result is successful just return a clone of it.\n   */\n  public clean(path?: Result[]): Result {\n    if (path != null || !this.isSuccess()) {\n      path = path || _.last(this.getBestExpect()).path(this);\n      var next = _.first(path);\n      if (next != null) {\n        var nextIndex = _.indexOf(this.subResults, next);\n        var subResults: Result[] = nextIndex == -1 ? [] : _.map(_.first(this.subResults, nextIndex), subResult => subResult.clean());\n        subResults.push(next.clean(_.rest(path)));\n        return new Result(subResults, this.expression, this.input);\n      } else {\n        return new Result(null, this.expression, this.input);\n      }\n    }\n    if (this.value != null) {\n      return new Result(this.value, this.expression, this.input);\n    }\n    if (this.subResults != null) {\n      return new Result(_.map(this.subResults, subResult => subResult.clean()), this.expression, this.input);\n    }\n  }\n\n  public clone(): Result {\n    if (this.value != null) {\n      return new Result(this.value, this.expression, this.input);\n    }\n    if (this.subResults != null) {\n      return new Result(_.map(this.subResults, subResult => subResult.clone()), this.expression, this.input);\n    }\n    return new Result(null, this.expression, this.input);\n  }\n\n  public toString() {\n    if (this.value != null) {\n      return this.value;\n    }\n    if (this.subResults != null) {\n      return _.map(this.subResults, subresult => subresult.toString()).join('');\n    }\n    return this.input;\n  }\n\n  public getHumanReadable() {\n    if (this.expression instanceof ExpressionConstant) {\n      return JSON.stringify((<ExpressionConstant>this.expression).value);\n    }\n    return this.expression.id;\n  }\n}\n\nexport class EndOfInputResult extends Result {\n  constructor(result: Result) {\n    super([result], ExpressionEndOfInput, result.input);\n    var endOfInput = new Result(null, ExpressionEndOfInput, result.input.substr(result.getLength()));\n    endOfInput.parent = this;\n    this.subResults.push(endOfInput);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/magicbox/Result/Result.ts","import { ISearchEndpointOptions, ISearchEndpoint, IViewAsHtmlOptions, IExchangeHandshakeTokenOptions } from './SearchEndpointInterface';\nimport {\n  EndpointCaller,\n  IEndpointCallParameters,\n  IErrorResponse,\n  IRequestInfo,\n  IEndpointCallerOptions,\n  ISuccessResponse\n} from '../rest/EndpointCaller';\nimport { IEndpointCallOptions } from '../rest/SearchEndpointInterface';\nimport { IStringMap } from './GenericParam';\nimport { Logger } from '../misc/Logger';\nimport { Assert } from '../misc/Assert';\nimport { IQuery } from '../rest/Query';\nimport { IQueryResults } from '../rest/QueryResults';\nimport { IQueryResult } from '../rest/QueryResult';\nimport { version } from '../misc/Version';\nimport { IListFieldValuesRequest, IListFieldValuesBatchRequest, IFieldValueBatchResponse } from '../rest/ListFieldValuesRequest';\nimport { IIndexFieldValue } from '../rest/FieldValue';\nimport { IFieldDescription } from '../rest/FieldDescription';\nimport { IListFieldsResult } from '../rest/ListFieldsResult';\nimport { IExtension } from '../rest/Extension';\nimport { IRatingRequest } from '../rest/RatingRequest';\nimport { ITaggingRequest } from '../rest/TaggingRequest';\nimport { IQuerySuggestRequest, IQuerySuggestResponse } from '../rest/QuerySuggest';\nimport { ISentryLog } from './SentryLog';\nimport { ISubscriptionRequest, ISubscription } from '../rest/Subscription';\nimport { AjaxError } from '../rest/AjaxError';\nimport { MissingAuthenticationError } from '../rest/MissingAuthenticationError';\nimport { QueryUtils } from '../utils/QueryUtils';\nimport { QueryError } from '../rest/QueryError';\nimport { Utils } from '../utils/Utils';\nimport * as _ from 'underscore';\nimport { buildHistoryStore } from '../utils/HistoryStore';\nimport { TimeSpan } from '../utils/TimeSpanUtils';\nimport { UrlUtils } from '../utils/UrlUtils';\nimport { IGroupByResult } from './GroupByResult';\nimport { AccessToken } from './AccessToken';\nimport { BackOffRequest, IBackOffRequest } from './BackOffRequest';\nimport { IFacetSearchRequest } from './Facet/FacetSearchRequest';\nimport { IFacetSearchResponse } from './Facet/FacetSearchResponse';\nimport { IPlanResponse, ExecutionPlan } from './Plan';\nimport { mapObject } from 'underscore';\nimport { AnalyticsInformation } from '../ui/Analytics/AnalyticsInformation';\n\nexport class DefaultSearchEndpointOptions implements ISearchEndpointOptions {\n  restUri: string;\n  version: string = 'v2';\n  queryStringArguments: IStringMap<string> = {};\n  anonymous: boolean = false;\n  accessToken: string;\n  renewAccessToken: () => Promise<string>;\n  username: string;\n  password: string;\n  searchAlertsUri: string;\n  isGuestUser: boolean = false;\n}\n\n/**\n * The `SearchEndpoint` class allows the framework to perform HTTP requests against the Search API (e.g., searching, getting query suggestions, getting the HTML preview of an item, etc.).\n *\n * **Note:**\n *\n * When writing custom code that interacts with the Search API, be aware that executing queries directly through an instance of this class will *not* trigger any [query events](https://docs.coveo.com/en/417/#query-events).\n *\n * In some cases, this may be what you want. However, if you *do* want query events to be triggered (e.g., to ensure that standard components update themselves as expected), use the [`queryController`]{@link QueryController} instance instead.\n *\n * @externaldocs [JavaScript Search Framework Endpoint](https://docs.coveo.com/en/331/)\n */\nexport class SearchEndpoint implements ISearchEndpoint {\n  /**\n   * A map of all initialized `SearchEndpoint` instances.\n   *\n   * **Example:** `Coveo.SearchEndpoint.endpoints[\"default\"]` returns the default endpoint that was created at initialization.\n   * @type {{}}\n   */\n  static endpoints: { [endpoint: string]: SearchEndpoint } = {};\n\n  /**\n   * Configures a demo search endpoint on a Coveo Cloud V1 organization whose index contains various types of non-secured items.\n   *\n   * **Note:** This method mainly exists for demo and testing purposes.\n   *\n   * @param otherOptions Additional options to apply for this endpoint.\n   */\n  static configureSampleEndpoint(otherOptions?: ISearchEndpointOptions) {\n    if (SearchEndpoint.isUseLocalArgumentPresent()) {\n      // This is a handy flag to quickly test a local search API and alerts\n      SearchEndpoint.endpoints['default'] = new SearchEndpoint(\n        _.extend(\n          {\n            restUri: 'http://localhost:8100/rest/search',\n            searchAlertsUri: 'http://localhost:8088/rest/search/alerts/'\n          },\n          otherOptions\n        )\n      );\n    } else {\n      // This OAuth token points to the organization used for samples.\n      // It contains a set of harmless content sources.\n      SearchEndpoint.endpoints['default'] = new SearchEndpoint(\n        _.extend(\n          {\n            restUri: 'https://cloudplatform.coveo.com/rest/search',\n            accessToken: '52d806a2-0f64-4390-a3f2-e0f41a4a73ec'\n          },\n          otherOptions\n        )\n      );\n    }\n  }\n\n  /**\n   * Configures a demo search endpoint on a Coveo Cloud V2 organization whose index contains various types of non-secured items.\n   *\n   * **Note:** This method mainly exists for demo and testing purposes.\n   *\n   * @param otherOptions Additional options to apply for this endpoint.\n   */\n  static configureSampleEndpointV2(otherOptions?: ISearchEndpointOptions) {\n    SearchEndpoint.endpoints['default'] = new SearchEndpoint(\n      _.extend(\n        {\n          restUri: 'https://platform.cloud.coveo.com/rest/search',\n          accessToken: 'xx564559b1-0045-48e1-953c-3addd1ee4457',\n          queryStringArguments: {\n            organizationId: 'searchuisamples',\n            viewAllContent: 1\n          }\n        },\n        otherOptions\n      )\n    );\n  }\n\n  /**\n   * Configures a search endpoint on a Coveo Cloud V1 index.\n   * @param organization The organization ID of your Coveo Cloud index.\n   * @param token The token to use to execute query. If not specified, you will likely need to login when querying.\n   * @param uri The URI of the Coveo Cloud REST Search API. By default, this points to the production environment.\n   * @param otherOptions A set of additional options to use when configuring this endpoint.\n   */\n  static configureCloudEndpoint(\n    organization?: string,\n    token?: string,\n    uri: string = 'https://cloudplatform.coveo.com/rest/search',\n    otherOptions?: ISearchEndpointOptions\n  ) {\n    let options: ISearchEndpointOptions = {\n      restUri: uri,\n      accessToken: token,\n      queryStringArguments: { organizationId: organization }\n    };\n\n    let merged = SearchEndpoint.mergeConfigOptions(options, otherOptions);\n\n    SearchEndpoint.endpoints['default'] = new SearchEndpoint(SearchEndpoint.removeUndefinedConfigOption(merged));\n  }\n\n  /**\n   * [Configures a new search endpoint](https://docs.coveo.com/331/#configuring-a-new-search-endpoint) on a Coveo Cloud V2 organization.\n   * @param organization The unique identifier of the target Coveo Cloud V2 organization (e.g., `mycoveocloudv2organizationg8tp8wu3`).\n   * @param token The access token to authenticate Search API requests with (i.e., an [API key](https://docs.coveo.com/105/) or a [search token](https://docs.coveo.com/56/)).\n   *\n   * **Note:** This token will also authenticate Usage Analytics Write API requests if the search interface initializes an [`Analytics`]{@link Analytics} component whose [`token`]{@link Analytics.options.token} option is unspecified.\n   * @param uri The base URI of the Search API.\n   *\n   * **Allowed values:**\n   *\n   * - `https://platform.cloud.coveo.com/rest/search` (for organizations in the standard Coveo Cloud V2 environment)\n   * - `https://platform-eu.cloud.coveo.com/rest/search` (for organizations with European [data residency](https://docs.coveo.com/en/2976/#data-residency-configuration))\n   * - `https://platform-au.cloud.coveo.com/rest/search` (for organizations with Australian data residency)\n   * - `https://platformhipaa.cloud.coveo.com/rest/search` (for [HIPAA](https://docs.coveo.com/1853/) organizations)\n   *\n   * **Default:** `https://platform.cloud.coveo.com/rest/search`\n   * @param otherOptions Additional options to apply for this endpoint (e.g., a [`renewAccessToken`]{@link ISearchEndpointOptions.renewAccessToken} function).\n   */\n  static configureCloudV2Endpoint(\n    organization?: string,\n    token?: string,\n    uri: string = 'https://platform.cloud.coveo.com/rest/search',\n    otherOptions?: ISearchEndpointOptions\n  ) {\n    return SearchEndpoint.configureCloudEndpoint(organization, token, uri, otherOptions);\n  }\n\n  /**\n   * Configures a search endpoint on a Coveo on-premise index.\n   * @param uri The URI of your Coveo Search API endpoint (e.g., `http://myserver:8080/rest/search`)\n   * @param token The token to use to execute query. If not specified, you will likely need to login when querying\n   * (unless your Coveo Search API endpoint is configured using advanced auth options, such as Windows auth or claims).\n   * @param otherOptions A set of additional options to use when configuring this endpoint.\n   */\n  static configureOnPremiseEndpoint(uri: string, token?: string, otherOptions?: ISearchEndpointOptions) {\n    let merged = SearchEndpoint.mergeConfigOptions(\n      {\n        restUri: uri,\n        accessToken: token\n      },\n      otherOptions\n    );\n\n    SearchEndpoint.endpoints['default'] = new SearchEndpoint(SearchEndpoint.removeUndefinedConfigOption(merged));\n  }\n\n  static get defaultEndpoint(): SearchEndpoint {\n    return this.endpoints['default'] || _.find(SearchEndpoint.endpoints, endpoint => endpoint != null);\n  }\n\n  static removeUndefinedConfigOption(config: ISearchEndpointOptions) {\n    _.each(_.keys(config), key => {\n      if (config[key] == undefined) {\n        delete config[key];\n      }\n    });\n    return config;\n  }\n\n  static mergeConfigOptions(first: ISearchEndpointOptions, second: ISearchEndpointOptions): ISearchEndpointOptions {\n    first = SearchEndpoint.removeUndefinedConfigOption(first);\n    second = SearchEndpoint.removeUndefinedConfigOption(second);\n    return _.extend({}, first, second);\n  }\n\n  public logger: Logger;\n  public isRedirecting: boolean;\n  public accessToken: AccessToken;\n\n  protected caller: EndpointCaller;\n  private onUnload: (...args: any[]) => void;\n\n  /**\n   * Creates a new `SearchEndpoint` instance.\n   * Uses a set of adequate default options, and merges these with the `options` parameter.\n   * Also creates an [`EndpointCaller`]{@link EndpointCaller} instance and uses it to communicate with the endpoint\n   * internally.\n   * @param options The custom options to apply to the new `SearchEndpoint`.\n   */\n  constructor(public options?: ISearchEndpointOptions) {\n    Assert.exists(options);\n    Assert.exists(options.restUri);\n\n    // For backward compatibility, we set anonymous to true when an access token\n    // is specified on a page loaded through the filesystem. This causes withCredentials\n    // to NOT be set, allowing those pages to work with non Windows/Basic/Cookie\n    // authentication. If anonymous is explicitly set to false, we'll use withCredentials.\n    let defaultOptions = new DefaultSearchEndpointOptions();\n    defaultOptions.anonymous = window.location.href.indexOf('file://') == 0 && Utils.isNonEmptyString(options.accessToken);\n    this.options = <ISearchEndpointOptions>_.extend({}, defaultOptions, options);\n\n    this.accessToken = new AccessToken(this.options.accessToken, this.options.renewAccessToken);\n    this.accessToken.subscribeToRenewal(() => this.createEndpointCaller());\n\n    // Forward any debug=1 query argument to the REST API to ease debugging\n    if (SearchEndpoint.isDebugArgumentPresent()) {\n      this.options.queryStringArguments['debug'] = 1;\n    }\n    this.onUnload = () => {\n      this.handleUnload();\n    };\n    window.addEventListener('beforeunload', this.onUnload);\n    this.logger = new Logger(this);\n    this.createEndpointCaller();\n  }\n\n  public reset() {\n    this.createEndpointCaller();\n  }\n\n  /**\n   * Sets a function which allows external code to modify all endpoint call parameters before the browser sends them.\n   *\n   * **Note:**\n   * > This is useful in very specific scenarios where the network infrastructure requires special request headers to be\n   * > added or removed, for example.\n   * @param requestModifier The function.\n   */\n  public setRequestModifier(requestModifier: (params: IRequestInfo<any>) => IRequestInfo<any>) {\n    this.caller.options.requestModifier = requestModifier;\n  }\n\n  /**\n   * Gets the base URI of the Search API endpoint.\n   * @returns {string} The base URI of the Search API endpoint.\n   */\n  public getBaseUri(): string {\n    return this.buildBaseUri('');\n  }\n\n  /**\n   * Gets the base URI of the search alerts endpoint.\n   * @returns {string} The base URI of the search alerts endpoint.\n   */\n  public getBaseAlertsUri(): string {\n    return this.buildSearchAlertsUri('');\n  }\n\n  /**\n   * Gets the URI that can be used to authenticate against the given provider.\n   * @param provider The provider name.\n   * @param returnUri The URI to return to after the authentication is completed.\n   * @param message The authentication message.\n   * @param callOptions Additional set of options to use for this call.\n   * @param callParams Options injected by the applied decorators.\n   * @returns {string} The authentication provider URI.\n   */\n  @path('/login/')\n  @accessTokenInUrl()\n  public getAuthenticationProviderUri(\n    provider: string,\n    returnUri?: string,\n    message?: string,\n    callOptions?: IEndpointCallOptions,\n    callParams?: IEndpointCallParameters\n  ): string {\n    return UrlUtils.normalizeAsString({\n      paths: [callParams.url, provider],\n      queryAsString: callParams.queryString,\n      query: {\n        redirectUri: returnUri,\n        message: message,\n        ...this.buildBaseQueryString(callOptions)\n      }\n    });\n  }\n\n  /**\n   * Exchanges a temporary handshake token to either get an initial access token\n   * or extend the privileges of an existing access token.\n   *\n   * @param token - the temporary token.\n   * @returns {string} The access token.\n   */\n  @path('/login/handshake/token')\n  @method('POST')\n  @requestDataType('application/json')\n  @responseType('json')\n  public async exchangeHandshakeToken(\n    options: IExchangeHandshakeTokenOptions,\n    callOptions?: IEndpointCallOptions,\n    callParams?: IEndpointCallParameters\n  ) {\n    const call = this.buildCompleteCall(options, callOptions, callParams);\n    const data = await this.performOneCall<{ token: string }>(call.params, call.options);\n\n    if (!data.token) {\n      throw new Error('Failed to exchange handshake token.');\n    }\n\n    return data.token;\n  }\n\n  /**\n   * Indicates whether the search endpoint is using JSONP internally to communicate with the Search API.\n   * @returns {boolean} `true` in the search enpoint is using JSONP; `false` otherwise.\n   */\n  public isJsonp(): boolean {\n    return this.caller.useJsonp;\n  }\n\n  @includeActionsHistory()\n  @includeReferrer()\n  @includeAnalytics()\n  @includeVisitorId()\n  @includeIsGuestUser()\n  private buildCompleteCall(request: any, callOptions?: IEndpointCallOptions, callParams?: IEndpointCallParameters) {\n    Assert.exists(request);\n    callParams = {\n      ...callParams,\n      requestData: {\n        ...callParams.requestData,\n        ..._.omit(request, queryParam => Utils.isNullOrUndefined(queryParam))\n      }\n    };\n\n    return { options: callOptions, params: callParams };\n  }\n\n  /**\n   * Performs a search on the index and returns a Promise of [`IQueryResults`]{@link IQueryResults}.\n   *\n   * This method slightly modifies the query results by adding additional information to each result (id, state object,\n   * etc.).\n   * @param query The query to execute. Typically, the query object is built using a\n   * [`QueryBuilder`]{@link QueryBuilder}.\n   * @param callOptions An additional set of options to use for this call.\n   * @param callParams The options injected by the applied decorators.\n   * @returns {Promise<IQueryResults>} A Promise of query results.\n   */\n  @path('/')\n  @method('POST')\n  @responseType('text')\n  public search(query: IQuery, callOptions?: IEndpointCallOptions, callParams?: IEndpointCallParameters): Promise<IQueryResults> {\n    const call = this.buildCompleteCall(query, callOptions, callParams);\n    this.logger.info('Performing REST query', query);\n\n    const start = new Date();\n\n    return this.performOneCall<IQueryResults>(call.params, call.options).then(results => {\n      this.logger.info('REST query successful', results, query);\n\n      // Version check\n      // If the SearchAPI doesn't give us any apiVersion info, we assume version 1 (before apiVersion was implemented)\n      if (results.apiVersion == null) {\n        results.apiVersion = 1;\n      }\n      if (results.apiVersion < version.supportedApiVersion) {\n        this.logger.error('Please update your REST Search API');\n      }\n\n      // Transform the duration compared to what the search API returns\n      // We want to have the \"duration\" to be the time as seen by the browser\n      results.searchAPIDuration = results.duration;\n      results.duration = TimeSpan.fromDates(start, new Date()).getMilliseconds();\n\n      // If the server specified no search ID generated one using the client-side\n      // GUID generator. We prefer server generated guids to allow tracking a query\n      // all the way from the analytics to the logs.\n      if (Utils.isNullOrEmptyString(results.searchUid)) {\n        results.searchUid = QueryUtils.createGuid();\n      }\n      QueryUtils.setIndexAndUidOnQueryResults(query, results, results.searchUid, results.pipeline, results.splitTestRun);\n      QueryUtils.setTermsToHighlightOnQueryResults(query, results);\n      return results;\n    });\n  }\n\n  /**\n   * Performs a search on the index and returns a Promise of `ArrayBuffer`.\n   *\n   * @param query The query to execute. Typically, the query object is built using a\n   * [`QueryBuilder`]{@link QueryBuilder}.\n   * @param callOptions An additional set of options to use for this call.\n   * @param callParams The options injected by the applied decorators.\n   * @returns {Promise<ArrayBuffer>} A Promise of query results.\n   */\n  @path('/')\n  @method('POST')\n  @responseType('arraybuffer')\n  public async fetchBinary(query: IQuery, callOptions?: IEndpointCallOptions, callParams?: IEndpointCallParameters) {\n    const call = this.buildCompleteCall(query, callOptions, callParams);\n    this.logger.info('Performing REST query', query);\n\n    return this.performOneCall<ArrayBuffer>(call.params, call.options);\n  }\n\n  /**\n   * Gets the plan of execution of a search request, without performing it.\n   *\n   * @param query The query to execute. Typically, the query object is built using a\n   * [`QueryBuilder`]{@link QueryBuilder}.\n   * @param callOptions An additional set of options to use for this call.\n   * @param callParams The options injected by the applied decorators.\n   * @returns {Promise<ExecutionPlan>} A Promise of plan results.\n   */\n  @path('/plan')\n  @method('POST')\n  @requestDataType('application/json')\n  @responseType('json')\n  public async plan(query: IQuery, callOptions?: IEndpointCallOptions, callParams?: IEndpointCallParameters): Promise<ExecutionPlan> {\n    const call = this.buildCompleteCall(query, callOptions, callParams);\n    this.logger.info('Performing REST query PLAN', query);\n\n    const planResponse = await this.performOneCall<IPlanResponse>(call.params, call.options);\n    this.logger.info('REST query successful', planResponse, query);\n    return new ExecutionPlan(planResponse);\n  }\n\n  /**\n   * @deprecated getExportToExcelLink does not factor in all query parameters (e.g. dynamic facets) due to GET request url length limitations.\n   * Please use `fetchBinary` instead to ensure all query parameters are used.\n   *\n   * Gets a link / URI to download a query result set to the XLSX format.\n   *\n   * **Note:**\n   * > This method does not automatically download the query result set, but rather provides an URI from which to\n   * > download it.\n   * @param query The query for which to get the XLSX result set.\n   * @param numberOfResults The number of results to download.\n   * @param callOptions An additional set of options to use for this call.\n   * @param callParams The options injected by the applied decorators.\n   * @returns {string} The download URI.\n   */\n  @path('/')\n  @accessTokenInUrl()\n  public getExportToExcelLink(\n    query: IQuery,\n    numberOfResults: number,\n    callOptions?: IEndpointCallOptions,\n    callParams?: IEndpointCallParameters\n  ): string {\n    return UrlUtils.normalizeAsString({\n      paths: callParams.url,\n      queryAsString: callParams.queryString,\n      query: {\n        numberOfResults: numberOfResults ? numberOfResults.toString() : null,\n        format: 'xlsx',\n        ...this.buildQueryAsQueryString(null, query),\n        ...this.buildBaseQueryString(callOptions)\n      }\n    });\n  }\n\n  /**\n   * Gets the raw datastream for an item. This is typically used to get a thumbnail for an item.\n   *\n   * Returns an array buffer.\n   *\n   * **Example:**\n   * ```\n   * let rawBinary = String.fromCharCode.apply(null, new Uint8Array(response));\n   * img.setAttribute('src', 'data:image/png;base64,' + btoa(rawBinary));\n   * ```\n   * @param documentUniqueId Typically, the {@link IQueryResult.uniqueId} on each result.\n   * @param dataStreamType Normally, `$Thumbnail`.\n   * @param callOptions An additional set of options to use for this call.\n   * @param callParams The options injected by the applied decorators.\n   * @returns {Promise<TResult>|Promise<U>}\n   */\n  @path('/datastream')\n  @accessTokenInUrl()\n  @method('GET')\n  @responseType('arraybuffer')\n  public getRawDataStream(\n    documentUniqueId: string,\n    dataStreamType: string,\n    callOptions?: IViewAsHtmlOptions,\n    callParams?: IEndpointCallParameters\n  ): Promise<ArrayBuffer> {\n    Assert.exists(documentUniqueId);\n\n    callParams = UrlUtils.merge(callParams, {\n      paths: callParams.url,\n      query: {\n        dataStream: dataStreamType,\n        ...this.buildViewAsHtmlQueryString(documentUniqueId, callOptions)\n      }\n    });\n\n    this.logger.info('Performing REST query for datastream ' + dataStreamType + ' on item uniqueID ' + documentUniqueId);\n\n    return this.performOneCall(callParams, callOptions).then((results: ArrayBuffer) => {\n      this.logger.info('REST query successful', results, documentUniqueId);\n      return results;\n    });\n  }\n\n  /**\n   * Gets an URL from which it is possible to see the datastream for an item. This is typically used to get a\n   * thumbnail for an item.\n   * @param documentUniqueID Typically, the {@link IQueryResult.uniqueId} on each result.\n   * @param dataStreamType Normally, `$Thumbnail`.\n   * @param callOptions An additional set of options to use for this call.\n   * @param callParams The options injected by the applied decorators.\n   * @returns {string} The datastream URL.\n   */\n  @path('/datastream')\n  @accessTokenInUrl()\n  public getViewAsDatastreamUri(\n    documentUniqueID: string,\n    dataStreamType: string,\n    callOptions: IViewAsHtmlOptions = {},\n    callParams?: IEndpointCallParameters\n  ): string {\n    return UrlUtils.normalizeAsString({\n      paths: callParams.url,\n      queryAsString: callParams.queryString,\n      query: {\n        dataStream: dataStreamType,\n        ...this.buildViewAsHtmlQueryString(documentUniqueID, callOptions),\n        ...this.buildQueryAsQueryString(callOptions.query, callOptions.queryObject),\n        ...this.buildBaseQueryString(callOptions)\n      }\n    });\n  }\n\n  /**\n   * Gets a single item, using its `uniqueId`.\n   * @param documentUniqueID Typically, the {@link IQueryResult.uniqueId} on each result.\n   * @param callOptions An additional set of options to use for this call.\n   * @param callParams The options injected by the applied decorators.\n   * @returns {Promise<IQueryResult>} A Promise of the item.\n   */\n  @path('/document')\n  @method('GET')\n  @responseType('text')\n  public getDocument(\n    documentUniqueID: string,\n    callOptions?: IEndpointCallOptions,\n    callParams?: IEndpointCallParameters\n  ): Promise<IQueryResult> {\n    callParams = UrlUtils.merge(callParams, {\n      paths: callParams.url,\n      queryAsString: callParams.queryString,\n      query: {\n        ...this.buildViewAsHtmlQueryString(documentUniqueID, callOptions)\n      }\n    });\n\n    this.logger.info('Performing REST query to retrieve document', documentUniqueID);\n\n    return this.performOneCall<IQueryResult>(callParams, callOptions).then(result => {\n      this.logger.info('REST query successful', result, documentUniqueID);\n      return result;\n    });\n  }\n\n  /**\n   * Gets the content of a single item, as text (think: quickview).\n   * @param documentUniqueID Typically, the {@link IQueryResult.uniqueId} on each result.\n   * @param callOptions An additional set of options to use for this call.\n   * @param callParams The options injected by the applied decorators.\n   * @returns {Promise<string>} A Promise of the item content.\n   */\n  @path('/text')\n  @method('GET')\n  @responseType('text')\n  public getDocumentText(\n    documentUniqueID: string,\n    callOptions?: IEndpointCallOptions,\n    callParams?: IEndpointCallParameters\n  ): Promise<string> {\n    callParams = UrlUtils.merge(callParams, {\n      paths: callParams.url,\n      queryAsString: callParams.queryString,\n      query: {\n        ...this.buildViewAsHtmlQueryString(documentUniqueID, callOptions)\n      }\n    });\n    this.logger.info('Performing REST query to retrieve \"TEXT\" version of document', documentUniqueID);\n\n    return this.performOneCall<{ content: string; duration: number }>(callParams, callOptions).then(data => {\n      this.logger.info('REST query successful', data, documentUniqueID);\n      return data.content;\n    });\n  }\n\n  /**\n   * Gets the content for a single item, as an HTMLDocument (think: quickview).\n   * @param documentUniqueID Typically, the {@link IQueryResult.uniqueId} on each result.\n   * @param callOptions An additional set of options to use for this call.\n   * @param callParams The options injected by the applied decorators.\n   * @returns {Promise<HTMLDocument>} A Promise of the item content.\n   */\n  @path('/html')\n  @method('POST')\n  @responseType('document')\n  public getDocumentHtml(\n    documentUniqueID: string,\n    callOptions?: IViewAsHtmlOptions,\n    callParams?: IEndpointCallParameters\n  ): Promise<HTMLDocument> {\n    callOptions = { ...callOptions };\n    callParams = UrlUtils.merge(\n      {\n        ...callParams,\n        requestData: callOptions.queryObject || { q: callOptions.query }\n      },\n      {\n        paths: callParams.url,\n        queryAsString: callParams.queryString,\n        query: {\n          ...this.buildViewAsHtmlQueryString(documentUniqueID, callOptions)\n        }\n      }\n    );\n\n    this.logger.info('Performing REST query to retrieve \"HTML\" version of document', documentUniqueID);\n\n    return this.performOneCall<HTMLDocument>(callParams, callOptions).then(result => {\n      this.logger.info('REST query successful', result, documentUniqueID);\n      return result;\n    });\n  }\n\n  /**\n   * Gets an URL from which it is possible to see a single item content, as HTML (think: quickview).\n   * @param documentUniqueID Typically, the {@link IQueryResult.uniqueId} on each result.\n   * @param callOptions An additional set of options to use for this call.\n   * @param callParams The options injected by the applied decorators.\n   * @returns {string} The URL.\n   */\n  @path('/html')\n  @accessTokenInUrl()\n  public getViewAsHtmlUri(documentUniqueID: string, callOptions?: IViewAsHtmlOptions, callParams?: IEndpointCallParameters): string {\n    return UrlUtils.normalizeAsString({\n      paths: callParams.url,\n      queryAsString: callParams.queryString,\n      query: {\n        ...this.buildViewAsHtmlQueryString(documentUniqueID, callOptions),\n        ...this.buildBaseQueryString(callOptions)\n      }\n    });\n  }\n\n  /**\n   * Lists the possible field values for a request.\n   * @param request The request for which to list the possible field values.\n   * @param callOptions An additional set of options to use for this call.\n   * @param callParams The options injected by the applied decorators.\n   * @returns {Promise<TResult>|Promise<U>} A Promise of the field values.\n   */\n  @path('/values')\n  @method('POST')\n  @responseType('text')\n  public listFieldValues(\n    request: IListFieldValuesRequest,\n    callOptions?: IEndpointCallOptions,\n    callParams?: IEndpointCallParameters\n  ): Promise<IIndexFieldValue[]> {\n    Assert.exists(request);\n\n    callParams = {\n      ...callParams,\n      requestData: {\n        ...callParams.requestData,\n        ...request\n      }\n    };\n\n    this.logger.info('Listing field values', request);\n\n    return this.performOneCall<IGroupByResult>(callParams, callOptions).then(data => {\n      this.logger.info('REST list field values successful', data.values, request);\n      return data.values;\n    });\n  }\n\n  /**\n   * Lists the possible field values for a request.\n   * @param request The request for which to list the possible field values.\n   * @param callOptions An additional set of options to use for this call.\n   * @param callParams The options injected by the applied decorators.\n   * @returns {Promise<TResult>|Promise<U>} A Promise of the field values.\n   */\n  @path('/values/batch')\n  @method('POST')\n  @responseType('text')\n  public listFieldValuesBatch(\n    request: IListFieldValuesBatchRequest,\n    callOptions?: IEndpointCallOptions,\n    callParams?: IEndpointCallParameters\n  ): Promise<IIndexFieldValue[][]> {\n    Assert.exists(request);\n\n    callParams = {\n      ...callParams,\n      requestData: {\n        ...callParams.requestData,\n        ...request\n      }\n    };\n\n    this.logger.info('Listing field batch values', request);\n\n    return this.performOneCall<IFieldValueBatchResponse>(callParams, callOptions).then(data => {\n      this.logger.info('REST list field batch values successful', data.batch, request);\n      return data.batch;\n    });\n  }\n\n  /**\n   * Lists all fields for the index, and returns an array of their descriptions.\n   * @param callOptions An additional set of options to use for this call.\n   * @param callParams The options injected by the applied decorators.\n   * @returns {Promise<TResult>|Promise<U>} A Promise of the index fields and descriptions.\n   */\n  @path('/fields')\n  @method('GET')\n  @responseType('text')\n  public listFields(callOptions?: IEndpointCallOptions, callParams?: IEndpointCallParameters): Promise<IFieldDescription[]> {\n    this.logger.info('Listing fields');\n\n    return this.performOneCall<IListFieldsResult>(callParams, callOptions).then(data => {\n      this.logger.info('REST list fields successful', data.fields);\n      return data.fields;\n    });\n  }\n\n  /**\n   * Lists all available query extensions for the search endpoint.\n   * @param callOptions An additional set of options to use for this call.\n   * @param callParams The options injected by the applied decorators.\n   * @returns {Promise<IExtension[]>} A Promise of the extensions.\n   */\n  @path('/extensions')\n  @method('GET')\n  @responseType('text')\n  public extensions(callOptions?: IEndpointCallOptions, callParams?: IEndpointCallParameters): Promise<IExtension[]> {\n    this.logger.info('Performing REST query to list extensions');\n\n    return this.performOneCall<IExtension[]>(callParams, callOptions).then(extensions => {\n      this.logger.info('REST query successful', extensions);\n      return extensions;\n    });\n  }\n\n  /**\n   * **Note:**\n   *\n   * > The Coveo Cloud V2 platform does not support collaborative rating. Therefore, this method is obsolete in Coveo Cloud V2.\n   *\n   * Rates a single item in the index (granted that collaborative rating is enabled on your index)\n   * @param ratingRequest The item id, and the rating to add.\n   * @param callOptions An additional set of options to use for this call.\n   * @param callParams The options injected by the applied decorators.\n   * @returns {Promise<boolean>|Promise<T>}\n   */\n  @path('/rating')\n  @method('POST')\n  @responseType('text')\n  public rateDocument(\n    ratingRequest: IRatingRequest,\n    callOptions?: IEndpointCallOptions,\n    callParams?: IEndpointCallParameters\n  ): Promise<boolean> {\n    this.logger.info('Performing REST query to rate a document', ratingRequest);\n\n    callParams = {\n      ...callParams,\n      requestData: {\n        ...callParams.requestData,\n        ...ratingRequest\n      }\n    };\n    return this.performOneCall<any>(callParams, callOptions).then(() => {\n      this.logger.info('REST query successful', ratingRequest);\n      return true;\n    });\n  }\n\n  /**\n   * Tags a single item.\n   * @param taggingRequest The item id, and the tag action to perform.\n   * @param callOptions An additional set of options to use for this call.\n   * @param callParams The options injected by the applied decorators.\n   * @returns {Promise<boolean>|Promise<T>}\n   */\n  @path('/tag')\n  @method('POST')\n  @responseType('text')\n  public tagDocument(\n    taggingRequest: ITaggingRequest,\n    callOptions?: IEndpointCallOptions,\n    callParams?: IEndpointCallParameters\n  ): Promise<boolean> {\n    this.logger.info('Performing REST query to tag an item', taggingRequest);\n\n    callParams = {\n      ...callParams,\n      requestData: {\n        ...callParams.requestData,\n        ...taggingRequest\n      }\n    };\n\n    return this.performOneCall<any>(callParams, callOptions).then(() => {\n      this.logger.info('REST query successful', taggingRequest);\n      return true;\n    });\n  }\n\n  /**\n   * Gets a list of query suggestions for a request.\n   * @param request The query, and the number of suggestions to return.\n   * @param callOptions An additional set of options to use for this call.\n   * @param callParams The options injected by the applied decorators.\n   * @returns {Promise<IQuerySuggestResponse>} A Promise of query suggestions.\n   */\n  @path('/querySuggest')\n  @method('POST')\n  @responseType('text')\n  public getQuerySuggest(\n    request: IQuerySuggestRequest,\n    callOptions?: IEndpointCallOptions,\n    callParams?: IEndpointCallParameters\n  ): Promise<IQuerySuggestResponse> {\n    const call = this.buildCompleteCall(request, callOptions, callParams);\n    this.logger.info('Performing REST query to get query suggest', request);\n\n    return this.performOneCall<IQuerySuggestResponse>(call.params, call.options).then(response => {\n      this.logger.info('REST query successful', response);\n      return response;\n    });\n  }\n\n  // This is a non documented method to ensure backward compatibility for the old query suggest call.\n  // It simply calls the \"real\" official and documented method.\n  public getRevealQuerySuggest(\n    request: IQuerySuggestRequest,\n    callOptions?: IEndpointCallOptions,\n    callParams?: IEndpointCallParameters\n  ): Promise<IQuerySuggestResponse> {\n    return this.getQuerySuggest(request, callOptions, callParams);\n  }\n\n  /**\n   * Searches through the values of a facet.\n   * @param request The request for which to search through the values of a facet.\n   * @param callOptions An additional set of options to use for this call.\n   * @param callParams The options injected by the applied decorators.\n   * @returns {Promise<IFacetSearchResponse>} A Promise of facet search results.\n   */\n  @path('/facet')\n  @method('POST')\n  @requestDataType('application/json')\n  @responseType('text')\n  public async facetSearch(\n    request: IFacetSearchRequest,\n    callOptions?: IEndpointCallOptions,\n    callParams?: IEndpointCallParameters\n  ): Promise<IFacetSearchResponse> {\n    const call = this.buildCompleteCall(request, callOptions, callParams);\n    this.logger.info('Performing REST query to get facet search results', request);\n\n    const response = await this.performOneCall<IFacetSearchResponse>(call.params, call.options);\n    this.logger.info('REST query successful', response);\n    return response;\n  }\n\n  /**\n   * Follows an item, or a query result, using the search alerts service.\n   * @param request The subscription details.\n   * @param callOptions An additional set of options to use for this call.\n   * @param callParams The options injected by the applied decorators.\n   * @returns {Promise<ISubscription>}\n   */\n  @alertsPath('/subscriptions')\n  @accessTokenInUrl('accessToken')\n  @method('POST')\n  @requestDataType('application/json')\n  @responseType('text')\n  public follow(\n    request: ISubscriptionRequest,\n    callOptions?: IEndpointCallOptions,\n    callParams?: IEndpointCallParameters\n  ): Promise<ISubscription> {\n    callParams.requestData = request;\n\n    this.logger.info('Performing REST query to follow an item or a query', request);\n\n    return this.performOneCall<ISubscription>(callParams, callOptions).then(subscription => {\n      this.logger.info('REST query successful', subscription);\n      return subscription;\n    });\n  }\n\n  private currentListSubscriptions: Promise<ISubscription[]>;\n\n  /**\n   * Gets a Promise of an array of the current subscriptions.\n   * @param page The page of the subscriptions.\n   * @param callOptions An additional set of options to use for this call.\n   * @param callParams The options injected by the applied decorators.\n   * @returns {any}\n   */\n  @alertsPath('/subscriptions')\n  @accessTokenInUrl('accessToken')\n  @method('GET')\n  @requestDataType('application/json')\n  @responseType('text')\n  public listSubscriptions(\n    page?: number,\n    callOptions?: IEndpointCallOptions,\n    callParams?: IEndpointCallParameters\n  ): Promise<ISubscription[]> {\n    if (this.options.isGuestUser) {\n      return new Promise((resolve, reject) => {\n        reject();\n      });\n    }\n\n    if (this.currentListSubscriptions == null) {\n      callParams = UrlUtils.merge(callParams, {\n        paths: callParams.url,\n        query: {\n          page: page || 0\n        }\n      });\n\n      this.logger.info('Performing REST query to list subscriptions');\n      this.currentListSubscriptions = this.performOneCall<ISubscription[]>(callParams, callOptions);\n      this.currentListSubscriptions\n        .then((data: any) => {\n          this.currentListSubscriptions = null;\n          this.logger.info('REST query successful', data);\n          return data;\n        })\n        .catch((e: AjaxError) => {\n          // Trap 403 error, as the listSubscription call is called on every page initialization\n          // to check for current subscriptions. By default, the search alert service is not enabled for most organization\n          // Don't want to pollute the console with un-needed noise and confusion\n          if (e.status != 403) {\n            throw e;\n          }\n        });\n    }\n    return this.currentListSubscriptions;\n  }\n\n  /**\n   * Updates a subscription with new parameters.\n   * @param subscription The subscription to update with new parameters.\n   * @param callOptions An additional set of options to use for this call.\n   * @param callParams The options injected by the applied decorators.\n   * @returns {Promise<ISubscription>}\n   */\n  @alertsPath('/subscriptions/')\n  @accessTokenInUrl('accessToken')\n  @method('PUT')\n  @requestDataType('application/json')\n  @responseType('text')\n  public updateSubscription(\n    subscription: ISubscription,\n    callOptions?: IEndpointCallOptions,\n    callParams?: IEndpointCallParameters\n  ): Promise<ISubscription> {\n    callParams = UrlUtils.merge(\n      {\n        ...callParams,\n        requestData: {\n          ...callParams.requestData,\n          ...subscription\n        }\n      },\n      {\n        paths: [callParams.url, subscription.id]\n      }\n    );\n\n    this.logger.info('Performing REST query to update a subscription', subscription);\n    return this.performOneCall<ISubscription>(callParams, callOptions).then(subscription => {\n      this.logger.info('REST query successful', subscription);\n      return subscription;\n    });\n  }\n\n  /**\n   * Deletes a subscription.\n   * @param subscription The subscription to delete.\n   * @param callOptions An additional set of options to use for this call.\n   * @param callParams The options injected by the applied decorators.\n   * @returns {Promise<ISubscription>}\n   */\n  @alertsPath('/subscriptions/')\n  @accessTokenInUrl('accessToken')\n  @method('DELETE')\n  @requestDataType('application/json')\n  @responseType('text')\n  public deleteSubscription(\n    subscription: ISubscription,\n    callOptions?: IEndpointCallOptions,\n    callParams?: IEndpointCallParameters\n  ): Promise<ISubscription> {\n    callParams = UrlUtils.merge(callParams, {\n      paths: [callParams.url, subscription.id]\n    });\n\n    this.logger.info('Performing REST query to delete a subscription', subscription);\n    return this.performOneCall<ISubscription>(callParams, callOptions).then(subscription => {\n      this.logger.info('REST query successful', subscription);\n      return subscription;\n    });\n  }\n\n  @path('/log')\n  @method('POST')\n  public logError(sentryLog: ISentryLog, callOptions?: IEndpointCallOptions, callParams?: IEndpointCallParameters) {\n    callParams = {\n      ...callParams,\n      requestData: {\n        ...callParams.requestData,\n        ...sentryLog\n      }\n    };\n\n    return this.performOneCall(callParams, callOptions)\n      .then(() => {\n        return true;\n      })\n      .catch(() => {\n        return false;\n      });\n  }\n\n  public nuke() {\n    window.removeEventListener('beforeunload', this.onUnload);\n  }\n\n  protected createEndpointCaller() {\n    this.caller = new EndpointCaller({\n      ...this.options,\n      accessToken: this.accessToken.token\n    } as IEndpointCallerOptions);\n  }\n\n  private static isDebugArgumentPresent(): boolean {\n    return /[?&]debug=1([&]|$)/.test(window.location.search);\n  }\n\n  private static isUseLocalArgumentPresent(): boolean {\n    return /[?&]useLocal=1([&]|$)/.test(window.location.search);\n  }\n\n  private handleUnload() {\n    this.isRedirecting = true;\n  }\n\n  public buildBaseUri(path: string): string {\n    Assert.isString(path);\n\n    return UrlUtils.normalizeAsString({\n      paths: [this.options.restUri, this.options.version, path]\n    });\n  }\n\n  public buildSearchAlertsUri(path: string): string {\n    Assert.isString(path);\n\n    const baseUrl =\n      this.options.searchAlertsUri ||\n      UrlUtils.normalizeAsString({\n        paths: [this.options.restUri, '/alerts']\n      });\n\n    const url = UrlUtils.normalizeAsString({\n      paths: [baseUrl, path]\n    });\n\n    return url;\n  }\n\n  private buildBaseQueryString(callOptions?: IEndpointCallOptions) {\n    callOptions = { ...callOptions };\n    if (_.isArray(callOptions.authentication) && Utils.isNonEmptyArray(callOptions.authentication)) {\n      return {\n        ...this.options.queryStringArguments,\n        authentication: callOptions.authentication.join(',')\n      };\n    } else {\n      return {\n        ...this.options.queryStringArguments\n      };\n    }\n  }\n\n  private buildQueryAsQueryString(query: string, queryObject: IQuery): Record<string, any> {\n    queryObject = { ...queryObject };\n\n    // In an ideal parallel reality, the entire query used in the 'search' call is used here.\n    // In this reality however, we must support GET calls (ex: GET /html) for CORS/JSONP/IE reasons.\n    // Therefore, we cherry-pick parts of the query to include in a 'query string' instead of a body payload.\n    const queryParameters: Record<string, any> = {};\n    ['q', 'aq', 'cq', 'dq', 'searchHub', 'tab', 'locale', 'pipeline', 'lowercaseOperators', 'timezone'].forEach(key => {\n      queryParameters[key] = queryObject[key];\n    });\n\n    const context: Record<string, any> = {};\n    _.pairs(queryObject.context).forEach(pair => {\n      const [key, value] = pair;\n      context[`context[${Utils.safeEncodeURIComponent(key)}]`] = value;\n    });\n\n    if (queryObject.fieldsToInclude) {\n      const fieldsToInclude = queryObject.fieldsToInclude.map(field => {\n        const uri = Utils.safeEncodeURIComponent(field.replace('@', ''));\n        return `\"${uri}\"`;\n      });\n      queryParameters.fieldsToInclude = `[${fieldsToInclude.join(',')}]`;\n    }\n\n    return {\n      q: query,\n      ...context,\n      ...queryParameters\n    };\n  }\n\n  private buildViewAsHtmlQueryString(uniqueId: string, callOptions?: IViewAsHtmlOptions) {\n    callOptions = _.extend({}, callOptions);\n\n    return {\n      uniqueId: Utils.safeEncodeURIComponent(uniqueId),\n      enableNavigation: 'true',\n      requestedOutputSize: callOptions.requestedOutputSize ? callOptions.requestedOutputSize.toString() : null,\n      contentType: callOptions.contentType\n    };\n  }\n\n  private async performOneCall<T>(params: IEndpointCallParameters, callOptions?: IEndpointCallOptions): Promise<T> {\n    params = UrlUtils.merge(params, {\n      paths: params.url,\n      queryAsString: params.queryString,\n      query: {\n        ...this.buildBaseQueryString(callOptions)\n      }\n    });\n\n    const request = () => this.caller.call<T>(params);\n\n    try {\n      const response = await request();\n      return response.data;\n    } catch (error) {\n      if (!error) {\n        throw new Error('Request failed but it did not return an error.');\n      }\n\n      const errorCode = (error as IErrorResponse).statusCode;\n\n      switch (errorCode) {\n        case 419:\n          const tokenWasRenewed = await this.accessToken.doRenew();\n\n          if (!tokenWasRenewed) {\n            throw this.handleErrorResponse(error);\n          }\n\n          return this.performOneCall(params, callOptions) as Promise<T>;\n\n        case 429:\n          const response = await this.backOffThrottledRequest<ISuccessResponse<T>>(request);\n          return response.data;\n\n        default:\n          throw this.handleErrorResponse(error);\n      }\n    }\n  }\n\n  private async backOffThrottledRequest<T>(request: () => Promise<T>) {\n    try {\n      const options = { retry: (e, attempt) => this.retryIf429Error(e, attempt) };\n      const backoffRequest: IBackOffRequest<T> = { fn: request, options };\n\n      return await BackOffRequest.enqueue<T>(backoffRequest);\n    } catch (e) {\n      throw this.handleErrorResponse(e);\n    }\n  }\n\n  private retryIf429Error(e: IErrorResponse, attempt: number) {\n    if (this.isThrottled(e)) {\n      this.logger.info(`Resending the request because it was throttled. Retry attempt ${attempt}`);\n      return true;\n    }\n\n    return false;\n  }\n\n  private isThrottled(error: IErrorResponse) {\n    return error && error.statusCode === 429;\n  }\n\n  private handleErrorResponse(errorResponse: IErrorResponse): Error {\n    if (this.isMissingAuthenticationProviderStatus(errorResponse.statusCode)) {\n      return new MissingAuthenticationError(errorResponse.data['provider']);\n    } else if (errorResponse.data && errorResponse.data.message && errorResponse.data.type) {\n      return new QueryError(errorResponse);\n    } else if (errorResponse.data && errorResponse.data.message) {\n      return new AjaxError(`Request Error : ${errorResponse.data.message}`, errorResponse.statusCode);\n    } else {\n      return new AjaxError('Request Error', errorResponse.statusCode);\n    }\n  }\n\n  private isMissingAuthenticationProviderStatus(status: number): boolean {\n    return status == 402;\n  }\n}\n\n// It's taken for granted that methods using decorators have :\n// IEndpointCallOptions as their second to last parameter\n// IEndpointCallParameters as their last parameter\n// The default parameters for each member of the injected {@link IEndpointCallParameters} are the following:\n// url: '',\n// queryString: [],\n// requestData: {},\n// requestDataType: undefined,\n// method: '',\n// responseType: '',\n// errorsAsSuccess: false\n\nfunction decoratorSetup(target: Object, key: string, descriptor: TypedPropertyDescriptor<any>) {\n  return {\n    originalMethod: descriptor.value,\n    nbParams: target[key].prototype.constructor.length\n  };\n}\n\nfunction defaultDecoratorEndpointCallParameters() {\n  const params: IEndpointCallParameters = {\n    url: '',\n    queryString: [],\n    requestData: {},\n    method: '',\n    responseType: '',\n    errorsAsSuccess: false\n  };\n  return params;\n}\n\nfunction getEndpointCallParameters(nbParams: number, args: any[]) {\n  if (!args[nbParams - 1]) {\n    args[nbParams - 1] = defaultDecoratorEndpointCallParameters();\n  }\n  return args[nbParams - 1] as IEndpointCallParameters;\n}\n\nfunction path(path: string) {\n  return function (target: Object, key: string, descriptor: TypedPropertyDescriptor<any>) {\n    const { originalMethod, nbParams } = decoratorSetup(target, key, descriptor);\n\n    descriptor.value = function (this: SearchEndpoint, ...args: any[]) {\n      getEndpointCallParameters(nbParams, args).url = this.buildBaseUri(path);\n      return originalMethod.apply(this, args);\n    };\n\n    return descriptor;\n  };\n}\n\nfunction alertsPath(path: string) {\n  return function (target: Object, key: string, descriptor: TypedPropertyDescriptor<any>) {\n    const { originalMethod, nbParams } = decoratorSetup(target, key, descriptor);\n\n    descriptor.value = function (this: SearchEndpoint, ...args: any[]) {\n      getEndpointCallParameters(nbParams, args).url = this.buildSearchAlertsUri(path);\n      return originalMethod.apply(this, args);\n    };\n\n    return descriptor;\n  };\n}\n\nfunction requestDataType(type: string) {\n  return function (target: Object, key: string, descriptor: TypedPropertyDescriptor<any>) {\n    const { originalMethod, nbParams } = decoratorSetup(target, key, descriptor);\n\n    descriptor.value = function (this: SearchEndpoint, ...args: any[]) {\n      getEndpointCallParameters(nbParams, args).requestDataType = type;\n      return originalMethod.apply(this, args);\n    };\n    return descriptor;\n  };\n}\n\nfunction method(met: string) {\n  return function (target: Object, key: string, descriptor: TypedPropertyDescriptor<any>) {\n    const { originalMethod, nbParams } = decoratorSetup(target, key, descriptor);\n\n    descriptor.value = function (this: SearchEndpoint, ...args: any[]) {\n      getEndpointCallParameters(nbParams, args).method = met;\n      return originalMethod.apply(this, args);\n    };\n\n    return descriptor;\n  };\n}\n\nfunction responseType(resp: string) {\n  return function (target: Object, key: string, descriptor: TypedPropertyDescriptor<any>) {\n    const { originalMethod, nbParams } = decoratorSetup(target, key, descriptor);\n\n    descriptor.value = function (this: SearchEndpoint, ...args: any[]) {\n      getEndpointCallParameters(nbParams, args).responseType = resp;\n      return originalMethod.apply(this, args);\n    };\n\n    return descriptor;\n  };\n}\n\nfunction accessTokenInUrl(tokenKey: string = 'access_token') {\n  return function (target: Object, key: string, descriptor: TypedPropertyDescriptor<any>) {\n    const { originalMethod, nbParams } = decoratorSetup(target, key, descriptor);\n    const buildAccessToken = (tokenKey: string, endpointInstance: SearchEndpoint): string[] => {\n      let queryString: string[] = [];\n\n      if (Utils.isNonEmptyString(endpointInstance.accessToken.token)) {\n        queryString.push(tokenKey + '=' + Utils.safeEncodeURIComponent(endpointInstance.accessToken.token));\n      }\n\n      return queryString;\n    };\n\n    descriptor.value = function (this: SearchEndpoint, ...args: any[]) {\n      const queryString = buildAccessToken(tokenKey, this);\n      const params = getEndpointCallParameters(nbParams, args);\n      params.queryString = [...(params.queryString || []), ...queryString];\n      return originalMethod.apply(this, args);\n    };\n\n    return descriptor;\n  };\n}\n\nfunction includeActionsHistory(historyStore = buildHistoryStore()) {\n  return function (target: Object, key: string, descriptor: TypedPropertyDescriptor<any>) {\n    const { originalMethod, nbParams } = decoratorSetup(target, key, descriptor);\n\n    descriptor.value = function (this: SearchEndpoint, ...args: any[]) {\n      let historyFromStore = historyStore.getHistory();\n      if (historyFromStore == null) {\n        historyFromStore = [];\n      }\n\n      getEndpointCallParameters(nbParams, args).requestData.actionsHistory = historyFromStore;\n      return originalMethod.apply(this, args);\n    };\n\n    return descriptor;\n  };\n}\n\nfunction includeReferrer() {\n  return function (target: Object, key: string, descriptor: TypedPropertyDescriptor<any>) {\n    const { originalMethod, nbParams } = decoratorSetup(target, key, descriptor);\n    descriptor.value = function (this: SearchEndpoint, ...args: any[]) {\n      let referrer = document.referrer;\n      if (referrer == null) {\n        referrer = '';\n      }\n\n      getEndpointCallParameters(nbParams, args).requestData.referrer = referrer;\n      return originalMethod.apply(this, args);\n    };\n\n    return descriptor;\n  };\n}\n\nfunction includeAnalytics() {\n  return function (target: Object, key: string, descriptor: TypedPropertyDescriptor<any>) {\n    const { originalMethod, nbParams } = decoratorSetup(target, key, descriptor);\n    descriptor.value = function (this: SearchEndpoint, ...args: any[]) {\n      const analyticsInstance = (args && args[1] && (args[1].analyticsInformation as AnalyticsInformation)) || new AnalyticsInformation();\n      const actionCause = analyticsInstance.pendingSearchEvent ? analyticsInstance.pendingSearchEvent.getEventCause() : null;\n      const customData = analyticsInstance.pendingSearchEvent ? analyticsInstance.pendingSearchEvent.getEventMeta() : null;\n      const userDisplayName = analyticsInstance.userDisplayName;\n      const originContext = analyticsInstance.originContext;\n\n      const analytics = {\n        clientId: analyticsInstance.clientId,\n        documentLocation: analyticsInstance.location,\n        documentReferrer: analyticsInstance.referrer,\n        pageId: analyticsInstance.lastPageId,\n        ...(actionCause && {\n          actionCause\n        }),\n        ...(customData && {\n          customData\n        }),\n        ...(userDisplayName && {\n          userDisplayName\n        }),\n        ...(originContext && {\n          originContext\n        })\n      };\n      getEndpointCallParameters(nbParams, args).requestData.analytics = mapObject(analytics, value => value || '');\n      return originalMethod.apply(this, args);\n    };\n\n    return descriptor;\n  };\n}\n\nfunction includeVisitorId() {\n  return function (target: Object, key: string, descriptor: TypedPropertyDescriptor<any>) {\n    const { originalMethod, nbParams } = decoratorSetup(target, key, descriptor);\n    descriptor.value = function (this: SearchEndpoint, ...args: any[]) {\n      getEndpointCallParameters(nbParams, args).requestData.visitorId = new AnalyticsInformation().clientId;\n      return originalMethod.apply(this, args);\n    };\n\n    return descriptor;\n  };\n}\n\nfunction includeIsGuestUser() {\n  return function (target: Object, key: string, descriptor: TypedPropertyDescriptor<any>) {\n    const { originalMethod, nbParams } = decoratorSetup(target, key, descriptor);\n    descriptor.value = function (this: SearchEndpoint, ...args: any[]) {\n      let isGuestUser = this.options.isGuestUser;\n\n      getEndpointCallParameters(nbParams, args).requestData.isGuestUser = isGuestUser;\n      return originalMethod.apply(this, args);\n    };\n\n    return descriptor;\n  };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/rest/SearchEndpoint.ts","export default function(constructor, factory, prototype) {\n  constructor.prototype = factory.prototype = prototype;\n  prototype.constructor = constructor;\n}\n\nexport function extend(parent, definition) {\n  var prototype = Object.create(parent.prototype);\n  for (var key in definition) prototype[key] = definition[key];\n  return prototype;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-color/src/define.js\n// module id = null\n// module chunks = ","import define, {extend} from \"./define.js\";\n\nexport function Color() {}\n\nexport var darker = 0.7;\nexport var brighter = 1 / darker;\n\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\",\n    reN = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\",\n    reP = \"\\\\s*([+-]?\\\\d*\\\\.?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\",\n    reHex = /^#([0-9a-f]{3,8})$/,\n    reRgbInteger = new RegExp(\"^rgb\\\\(\" + [reI, reI, reI] + \"\\\\)$\"),\n    reRgbPercent = new RegExp(\"^rgb\\\\(\" + [reP, reP, reP] + \"\\\\)$\"),\n    reRgbaInteger = new RegExp(\"^rgba\\\\(\" + [reI, reI, reI, reN] + \"\\\\)$\"),\n    reRgbaPercent = new RegExp(\"^rgba\\\\(\" + [reP, reP, reP, reN] + \"\\\\)$\"),\n    reHslPercent = new RegExp(\"^hsl\\\\(\" + [reN, reP, reP] + \"\\\\)$\"),\n    reHslaPercent = new RegExp(\"^hsla\\\\(\" + [reN, reP, reP, reN] + \"\\\\)$\");\n\nvar named = {\n  aliceblue: 0xf0f8ff,\n  antiquewhite: 0xfaebd7,\n  aqua: 0x00ffff,\n  aquamarine: 0x7fffd4,\n  azure: 0xf0ffff,\n  beige: 0xf5f5dc,\n  bisque: 0xffe4c4,\n  black: 0x000000,\n  blanchedalmond: 0xffebcd,\n  blue: 0x0000ff,\n  blueviolet: 0x8a2be2,\n  brown: 0xa52a2a,\n  burlywood: 0xdeb887,\n  cadetblue: 0x5f9ea0,\n  chartreuse: 0x7fff00,\n  chocolate: 0xd2691e,\n  coral: 0xff7f50,\n  cornflowerblue: 0x6495ed,\n  cornsilk: 0xfff8dc,\n  crimson: 0xdc143c,\n  cyan: 0x00ffff,\n  darkblue: 0x00008b,\n  darkcyan: 0x008b8b,\n  darkgoldenrod: 0xb8860b,\n  darkgray: 0xa9a9a9,\n  darkgreen: 0x006400,\n  darkgrey: 0xa9a9a9,\n  darkkhaki: 0xbdb76b,\n  darkmagenta: 0x8b008b,\n  darkolivegreen: 0x556b2f,\n  darkorange: 0xff8c00,\n  darkorchid: 0x9932cc,\n  darkred: 0x8b0000,\n  darksalmon: 0xe9967a,\n  darkseagreen: 0x8fbc8f,\n  darkslateblue: 0x483d8b,\n  darkslategray: 0x2f4f4f,\n  darkslategrey: 0x2f4f4f,\n  darkturquoise: 0x00ced1,\n  darkviolet: 0x9400d3,\n  deeppink: 0xff1493,\n  deepskyblue: 0x00bfff,\n  dimgray: 0x696969,\n  dimgrey: 0x696969,\n  dodgerblue: 0x1e90ff,\n  firebrick: 0xb22222,\n  floralwhite: 0xfffaf0,\n  forestgreen: 0x228b22,\n  fuchsia: 0xff00ff,\n  gainsboro: 0xdcdcdc,\n  ghostwhite: 0xf8f8ff,\n  gold: 0xffd700,\n  goldenrod: 0xdaa520,\n  gray: 0x808080,\n  green: 0x008000,\n  greenyellow: 0xadff2f,\n  grey: 0x808080,\n  honeydew: 0xf0fff0,\n  hotpink: 0xff69b4,\n  indianred: 0xcd5c5c,\n  indigo: 0x4b0082,\n  ivory: 0xfffff0,\n  khaki: 0xf0e68c,\n  lavender: 0xe6e6fa,\n  lavenderblush: 0xfff0f5,\n  lawngreen: 0x7cfc00,\n  lemonchiffon: 0xfffacd,\n  lightblue: 0xadd8e6,\n  lightcoral: 0xf08080,\n  lightcyan: 0xe0ffff,\n  lightgoldenrodyellow: 0xfafad2,\n  lightgray: 0xd3d3d3,\n  lightgreen: 0x90ee90,\n  lightgrey: 0xd3d3d3,\n  lightpink: 0xffb6c1,\n  lightsalmon: 0xffa07a,\n  lightseagreen: 0x20b2aa,\n  lightskyblue: 0x87cefa,\n  lightslategray: 0x778899,\n  lightslategrey: 0x778899,\n  lightsteelblue: 0xb0c4de,\n  lightyellow: 0xffffe0,\n  lime: 0x00ff00,\n  limegreen: 0x32cd32,\n  linen: 0xfaf0e6,\n  magenta: 0xff00ff,\n  maroon: 0x800000,\n  mediumaquamarine: 0x66cdaa,\n  mediumblue: 0x0000cd,\n  mediumorchid: 0xba55d3,\n  mediumpurple: 0x9370db,\n  mediumseagreen: 0x3cb371,\n  mediumslateblue: 0x7b68ee,\n  mediumspringgreen: 0x00fa9a,\n  mediumturquoise: 0x48d1cc,\n  mediumvioletred: 0xc71585,\n  midnightblue: 0x191970,\n  mintcream: 0xf5fffa,\n  mistyrose: 0xffe4e1,\n  moccasin: 0xffe4b5,\n  navajowhite: 0xffdead,\n  navy: 0x000080,\n  oldlace: 0xfdf5e6,\n  olive: 0x808000,\n  olivedrab: 0x6b8e23,\n  orange: 0xffa500,\n  orangered: 0xff4500,\n  orchid: 0xda70d6,\n  palegoldenrod: 0xeee8aa,\n  palegreen: 0x98fb98,\n  paleturquoise: 0xafeeee,\n  palevioletred: 0xdb7093,\n  papayawhip: 0xffefd5,\n  peachpuff: 0xffdab9,\n  peru: 0xcd853f,\n  pink: 0xffc0cb,\n  plum: 0xdda0dd,\n  powderblue: 0xb0e0e6,\n  purple: 0x800080,\n  rebeccapurple: 0x663399,\n  red: 0xff0000,\n  rosybrown: 0xbc8f8f,\n  royalblue: 0x4169e1,\n  saddlebrown: 0x8b4513,\n  salmon: 0xfa8072,\n  sandybrown: 0xf4a460,\n  seagreen: 0x2e8b57,\n  seashell: 0xfff5ee,\n  sienna: 0xa0522d,\n  silver: 0xc0c0c0,\n  skyblue: 0x87ceeb,\n  slateblue: 0x6a5acd,\n  slategray: 0x708090,\n  slategrey: 0x708090,\n  snow: 0xfffafa,\n  springgreen: 0x00ff7f,\n  steelblue: 0x4682b4,\n  tan: 0xd2b48c,\n  teal: 0x008080,\n  thistle: 0xd8bfd8,\n  tomato: 0xff6347,\n  turquoise: 0x40e0d0,\n  violet: 0xee82ee,\n  wheat: 0xf5deb3,\n  white: 0xffffff,\n  whitesmoke: 0xf5f5f5,\n  yellow: 0xffff00,\n  yellowgreen: 0x9acd32\n};\n\ndefine(Color, color, {\n  copy: function(channels) {\n    return Object.assign(new this.constructor, this, channels);\n  },\n  displayable: function() {\n    return this.rgb().displayable();\n  },\n  hex: color_formatHex, // Deprecated! Use color.formatHex.\n  formatHex: color_formatHex,\n  formatHsl: color_formatHsl,\n  formatRgb: color_formatRgb,\n  toString: color_formatRgb\n});\n\nfunction color_formatHex() {\n  return this.rgb().formatHex();\n}\n\nfunction color_formatHsl() {\n  return hslConvert(this).formatHsl();\n}\n\nfunction color_formatRgb() {\n  return this.rgb().formatRgb();\n}\n\nexport default function color(format) {\n  var m, l;\n  format = (format + \"\").trim().toLowerCase();\n  return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) // #ff0000\n      : l === 3 ? new Rgb((m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), ((m & 0xf) << 4) | (m & 0xf), 1) // #f00\n      : l === 8 ? rgba(m >> 24 & 0xff, m >> 16 & 0xff, m >> 8 & 0xff, (m & 0xff) / 0xff) // #ff000000\n      : l === 4 ? rgba((m >> 12 & 0xf) | (m >> 8 & 0xf0), (m >> 8 & 0xf) | (m >> 4 & 0xf0), (m >> 4 & 0xf) | (m & 0xf0), (((m & 0xf) << 4) | (m & 0xf)) / 0xff) // #f000\n      : null) // invalid hex\n      : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) // rgb(255, 0, 0)\n      : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) // rgb(100%, 0%, 0%)\n      : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) // rgba(255, 0, 0, 1)\n      : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) // rgb(100%, 0%, 0%, 1)\n      : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) // hsl(120, 50%, 50%)\n      : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) // hsla(120, 50%, 50%, 1)\n      : named.hasOwnProperty(format) ? rgbn(named[format]) // eslint-disable-line no-prototype-builtins\n      : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0)\n      : null;\n}\n\nfunction rgbn(n) {\n  return new Rgb(n >> 16 & 0xff, n >> 8 & 0xff, n & 0xff, 1);\n}\n\nfunction rgba(r, g, b, a) {\n  if (a <= 0) r = g = b = NaN;\n  return new Rgb(r, g, b, a);\n}\n\nexport function rgbConvert(o) {\n  if (!(o instanceof Color)) o = color(o);\n  if (!o) return new Rgb;\n  o = o.rgb();\n  return new Rgb(o.r, o.g, o.b, o.opacity);\n}\n\nexport function rgb(r, g, b, opacity) {\n  return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\n\nexport function Rgb(r, g, b, opacity) {\n  this.r = +r;\n  this.g = +g;\n  this.b = +b;\n  this.opacity = +opacity;\n}\n\ndefine(Rgb, rgb, extend(Color, {\n  brighter: function(k) {\n    k = k == null ? brighter : Math.pow(brighter, k);\n    return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n  },\n  darker: function(k) {\n    k = k == null ? darker : Math.pow(darker, k);\n    return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n  },\n  rgb: function() {\n    return this;\n  },\n  displayable: function() {\n    return (-0.5 <= this.r && this.r < 255.5)\n        && (-0.5 <= this.g && this.g < 255.5)\n        && (-0.5 <= this.b && this.b < 255.5)\n        && (0 <= this.opacity && this.opacity <= 1);\n  },\n  hex: rgb_formatHex, // Deprecated! Use color.formatHex.\n  formatHex: rgb_formatHex,\n  formatRgb: rgb_formatRgb,\n  toString: rgb_formatRgb\n}));\n\nfunction rgb_formatHex() {\n  return \"#\" + hex(this.r) + hex(this.g) + hex(this.b);\n}\n\nfunction rgb_formatRgb() {\n  var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n  return (a === 1 ? \"rgb(\" : \"rgba(\")\n      + Math.max(0, Math.min(255, Math.round(this.r) || 0)) + \", \"\n      + Math.max(0, Math.min(255, Math.round(this.g) || 0)) + \", \"\n      + Math.max(0, Math.min(255, Math.round(this.b) || 0))\n      + (a === 1 ? \")\" : \", \" + a + \")\");\n}\n\nfunction hex(value) {\n  value = Math.max(0, Math.min(255, Math.round(value) || 0));\n  return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\n\nfunction hsla(h, s, l, a) {\n  if (a <= 0) h = s = l = NaN;\n  else if (l <= 0 || l >= 1) h = s = NaN;\n  else if (s <= 0) h = NaN;\n  return new Hsl(h, s, l, a);\n}\n\nexport function hslConvert(o) {\n  if (o instanceof Hsl) return new Hsl(o.h, o.s, o.l, o.opacity);\n  if (!(o instanceof Color)) o = color(o);\n  if (!o) return new Hsl;\n  if (o instanceof Hsl) return o;\n  o = o.rgb();\n  var r = o.r / 255,\n      g = o.g / 255,\n      b = o.b / 255,\n      min = Math.min(r, g, b),\n      max = Math.max(r, g, b),\n      h = NaN,\n      s = max - min,\n      l = (max + min) / 2;\n  if (s) {\n    if (r === max) h = (g - b) / s + (g < b) * 6;\n    else if (g === max) h = (b - r) / s + 2;\n    else h = (r - g) / s + 4;\n    s /= l < 0.5 ? max + min : 2 - max - min;\n    h *= 60;\n  } else {\n    s = l > 0 && l < 1 ? 0 : h;\n  }\n  return new Hsl(h, s, l, o.opacity);\n}\n\nexport function hsl(h, s, l, opacity) {\n  return arguments.length === 1 ? hslConvert(h) : new Hsl(h, s, l, opacity == null ? 1 : opacity);\n}\n\nfunction Hsl(h, s, l, opacity) {\n  this.h = +h;\n  this.s = +s;\n  this.l = +l;\n  this.opacity = +opacity;\n}\n\ndefine(Hsl, hsl, extend(Color, {\n  brighter: function(k) {\n    k = k == null ? brighter : Math.pow(brighter, k);\n    return new Hsl(this.h, this.s, this.l * k, this.opacity);\n  },\n  darker: function(k) {\n    k = k == null ? darker : Math.pow(darker, k);\n    return new Hsl(this.h, this.s, this.l * k, this.opacity);\n  },\n  rgb: function() {\n    var h = this.h % 360 + (this.h < 0) * 360,\n        s = isNaN(h) || isNaN(this.s) ? 0 : this.s,\n        l = this.l,\n        m2 = l + (l < 0.5 ? l : 1 - l) * s,\n        m1 = 2 * l - m2;\n    return new Rgb(\n      hsl2rgb(h >= 240 ? h - 240 : h + 120, m1, m2),\n      hsl2rgb(h, m1, m2),\n      hsl2rgb(h < 120 ? h + 240 : h - 120, m1, m2),\n      this.opacity\n    );\n  },\n  displayable: function() {\n    return (0 <= this.s && this.s <= 1 || isNaN(this.s))\n        && (0 <= this.l && this.l <= 1)\n        && (0 <= this.opacity && this.opacity <= 1);\n  },\n  formatHsl: function() {\n    var a = this.opacity; a = isNaN(a) ? 1 : Math.max(0, Math.min(1, a));\n    return (a === 1 ? \"hsl(\" : \"hsla(\")\n        + (this.h || 0) + \", \"\n        + (this.s || 0) * 100 + \"%, \"\n        + (this.l || 0) * 100 + \"%\"\n        + (a === 1 ? \")\" : \", \" + a + \")\");\n  }\n}));\n\n/* From FvD 13.37, CSS Color Module Level 3 */\nfunction hsl2rgb(h, m1, m2) {\n  return (h < 60 ? m1 + (m2 - m1) * h / 60\n      : h < 180 ? m2\n      : h < 240 ? m1 + (m2 - m1) * (240 - h) / 60\n      : m1) * 255;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-color/src/color.js\n// module id = null\n// module chunks = ","export const radians = Math.PI / 180;\nexport const degrees = 180 / Math.PI;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-color/src/math.js\n// module id = null\n// module chunks = ","import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb} from \"./color.js\";\nimport {degrees, radians} from \"./math.js\";\n\n// https://observablehq.com/@mbostock/lab-and-rgb\nconst K = 18,\n    Xn = 0.96422,\n    Yn = 1,\n    Zn = 0.82521,\n    t0 = 4 / 29,\n    t1 = 6 / 29,\n    t2 = 3 * t1 * t1,\n    t3 = t1 * t1 * t1;\n\nfunction labConvert(o) {\n  if (o instanceof Lab) return new Lab(o.l, o.a, o.b, o.opacity);\n  if (o instanceof Hcl) return hcl2lab(o);\n  if (!(o instanceof Rgb)) o = rgbConvert(o);\n  var r = rgb2lrgb(o.r),\n      g = rgb2lrgb(o.g),\n      b = rgb2lrgb(o.b),\n      y = xyz2lab((0.2225045 * r + 0.7168786 * g + 0.0606169 * b) / Yn), x, z;\n  if (r === g && g === b) x = z = y; else {\n    x = xyz2lab((0.4360747 * r + 0.3850649 * g + 0.1430804 * b) / Xn);\n    z = xyz2lab((0.0139322 * r + 0.0971045 * g + 0.7141733 * b) / Zn);\n  }\n  return new Lab(116 * y - 16, 500 * (x - y), 200 * (y - z), o.opacity);\n}\n\nexport function gray(l, opacity) {\n  return new Lab(l, 0, 0, opacity == null ? 1 : opacity);\n}\n\nexport default function lab(l, a, b, opacity) {\n  return arguments.length === 1 ? labConvert(l) : new Lab(l, a, b, opacity == null ? 1 : opacity);\n}\n\nexport function Lab(l, a, b, opacity) {\n  this.l = +l;\n  this.a = +a;\n  this.b = +b;\n  this.opacity = +opacity;\n}\n\ndefine(Lab, lab, extend(Color, {\n  brighter: function(k) {\n    return new Lab(this.l + K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n  },\n  darker: function(k) {\n    return new Lab(this.l - K * (k == null ? 1 : k), this.a, this.b, this.opacity);\n  },\n  rgb: function() {\n    var y = (this.l + 16) / 116,\n        x = isNaN(this.a) ? y : y + this.a / 500,\n        z = isNaN(this.b) ? y : y - this.b / 200;\n    x = Xn * lab2xyz(x);\n    y = Yn * lab2xyz(y);\n    z = Zn * lab2xyz(z);\n    return new Rgb(\n      lrgb2rgb( 3.1338561 * x - 1.6168667 * y - 0.4906146 * z),\n      lrgb2rgb(-0.9787684 * x + 1.9161415 * y + 0.0334540 * z),\n      lrgb2rgb( 0.0719453 * x - 0.2289914 * y + 1.4052427 * z),\n      this.opacity\n    );\n  }\n}));\n\nfunction xyz2lab(t) {\n  return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\n\nfunction lab2xyz(t) {\n  return t > t1 ? t * t * t : t2 * (t - t0);\n}\n\nfunction lrgb2rgb(x) {\n  return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\n\nfunction rgb2lrgb(x) {\n  return (x /= 255) <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n\nfunction hclConvert(o) {\n  if (o instanceof Hcl) return new Hcl(o.h, o.c, o.l, o.opacity);\n  if (!(o instanceof Lab)) o = labConvert(o);\n  if (o.a === 0 && o.b === 0) return new Hcl(NaN, 0 < o.l && o.l < 100 ? 0 : NaN, o.l, o.opacity);\n  var h = Math.atan2(o.b, o.a) * degrees;\n  return new Hcl(h < 0 ? h + 360 : h, Math.sqrt(o.a * o.a + o.b * o.b), o.l, o.opacity);\n}\n\nexport function lch(l, c, h, opacity) {\n  return arguments.length === 1 ? hclConvert(l) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function hcl(h, c, l, opacity) {\n  return arguments.length === 1 ? hclConvert(h) : new Hcl(h, c, l, opacity == null ? 1 : opacity);\n}\n\nexport function Hcl(h, c, l, opacity) {\n  this.h = +h;\n  this.c = +c;\n  this.l = +l;\n  this.opacity = +opacity;\n}\n\nfunction hcl2lab(o) {\n  if (isNaN(o.h)) return new Lab(o.l, 0, 0, o.opacity);\n  var h = o.h * radians;\n  return new Lab(o.l, Math.cos(h) * o.c, Math.sin(h) * o.c, o.opacity);\n}\n\ndefine(Hcl, hcl, extend(Color, {\n  brighter: function(k) {\n    return new Hcl(this.h, this.c, this.l + K * (k == null ? 1 : k), this.opacity);\n  },\n  darker: function(k) {\n    return new Hcl(this.h, this.c, this.l - K * (k == null ? 1 : k), this.opacity);\n  },\n  rgb: function() {\n    return hcl2lab(this).rgb();\n  }\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-color/src/lab.js\n// module id = null\n// module chunks = ","import define, {extend} from \"./define.js\";\nimport {Color, rgbConvert, Rgb, darker, brighter} from \"./color.js\";\nimport {degrees, radians} from \"./math.js\";\n\nvar A = -0.14861,\n    B = +1.78277,\n    C = -0.29227,\n    D = -0.90649,\n    E = +1.97294,\n    ED = E * D,\n    EB = E * B,\n    BC_DA = B * C - D * A;\n\nfunction cubehelixConvert(o) {\n  if (o instanceof Cubehelix) return new Cubehelix(o.h, o.s, o.l, o.opacity);\n  if (!(o instanceof Rgb)) o = rgbConvert(o);\n  var r = o.r / 255,\n      g = o.g / 255,\n      b = o.b / 255,\n      l = (BC_DA * b + ED * r - EB * g) / (BC_DA + ED - EB),\n      bl = b - l,\n      k = (E * (g - l) - C * bl) / D,\n      s = Math.sqrt(k * k + bl * bl) / (E * l * (1 - l)), // NaN if l=0 or l=1\n      h = s ? Math.atan2(k, bl) * degrees - 120 : NaN;\n  return new Cubehelix(h < 0 ? h + 360 : h, s, l, o.opacity);\n}\n\nexport default function cubehelix(h, s, l, opacity) {\n  return arguments.length === 1 ? cubehelixConvert(h) : new Cubehelix(h, s, l, opacity == null ? 1 : opacity);\n}\n\nexport function Cubehelix(h, s, l, opacity) {\n  this.h = +h;\n  this.s = +s;\n  this.l = +l;\n  this.opacity = +opacity;\n}\n\ndefine(Cubehelix, cubehelix, extend(Color, {\n  brighter: function(k) {\n    k = k == null ? brighter : Math.pow(brighter, k);\n    return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n  },\n  darker: function(k) {\n    k = k == null ? darker : Math.pow(darker, k);\n    return new Cubehelix(this.h, this.s, this.l * k, this.opacity);\n  },\n  rgb: function() {\n    var h = isNaN(this.h) ? 0 : (this.h + 120) * radians,\n        l = +this.l,\n        a = isNaN(this.s) ? 0 : this.s * l * (1 - l),\n        cosh = Math.cos(h),\n        sinh = Math.sin(h);\n    return new Rgb(\n      255 * (l + a * (A * cosh + B * sinh)),\n      255 * (l + a * (C * cosh + D * sinh)),\n      255 * (l + a * (E * cosh)),\n      this.opacity\n    );\n  }\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-color/src/cubehelix.js\n// module id = null\n// module chunks = ","export {default as color, rgb, hsl} from \"./color.js\";\nexport {default as lab, hcl, lch, gray} from \"./lab.js\";\nexport {default as cubehelix} from \"./cubehelix.js\";\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-color/src/index.js\n// module id = null\n// module chunks = ","import { Assert } from '../../misc/Assert';\nimport 'styling/_ResponsiveComponents';\n\nexport const MEDIUM_SCREEN_WIDTH = 800;\nexport const SMALL_SCREEN_WIDTH = 480;\nexport type ValidResponsiveMode = 'auto' | 'small' | 'medium' | 'large';\n\n/**\n * This class serves as a way to get and set the different screen size breakpoints for the interface.\n *\n * By setting those, you can impact, amongst others, the {@link Facet}'s, {@link Tab}'s or the {@link ResultList}'s behaviour.\n *\n * For example, the {@link Facet} components of your interface will switch to a dropdown menu when the screen size reaches 800px or less.\n *\n * You could modify this value using `this` calls\n *\n * Normally, you would interact with this class using the instance bound to {@link SearchInterface.responsiveComponents}\n */\nexport class ResponsiveComponents {\n  private smallScreenWidth: number;\n  private mediumScreenWidth: number;\n  private responsiveMode: ValidResponsiveMode;\n  constructor(public windoh: Window = window) {\n    this.responsiveMode = 'auto';\n  }\n\n  /**\n   * Set the breakpoint for small screen size.\n   * @param width\n   */\n  public setSmallScreenWidth(width: number) {\n    Assert.check(\n      this.responsiveMode === 'auto',\n      `Cannot modify medium screen width if responsiveMode is locked on ${this.responsiveMode}.`\n    );\n    Assert.check(\n      width < this.getMediumScreenWidth(),\n      `Cannot set small screen width (${width}) larger or equal to the current medium screen width (${this.getMediumScreenWidth()})`\n    );\n    this.smallScreenWidth = width;\n  }\n\n  /**\n   * Set the breakpoint for medium screen size\n   * @param width\n   */\n  public setMediumScreenWidth(width: number) {\n    Assert.check(\n      this.responsiveMode === 'auto',\n      `Cannot modify medium screen width if responsiveMode is locked on ${this.responsiveMode}.`\n    );\n    Assert.check(\n      width > this.getSmallScreenWidth(),\n      `Cannot set medium screen width (${width}) smaller or equal to the current small screen width (${this.getSmallScreenWidth()})`\n    );\n    this.mediumScreenWidth = width;\n  }\n\n  public setResponsiveMode(responsiveMode: ValidResponsiveMode) {\n    this.responsiveMode = responsiveMode;\n  }\n\n  /**\n   * Get the current breakpoint for small screen size.\n   *\n   * If it was not explicitly set by {@link ResponsiveComponents.setSmallScreenWidth}, the default value is `480`.\n   * @returns {number}\n   */\n  public getSmallScreenWidth() {\n    if (this.responsiveMode === 'small') {\n      return Number.POSITIVE_INFINITY;\n    }\n    if (this.responsiveMode !== 'auto') {\n      return 0;\n    }\n    if (this.smallScreenWidth == null) {\n      return SMALL_SCREEN_WIDTH;\n    }\n    return this.smallScreenWidth;\n  }\n\n  /**\n   * Get the current breakpoint for medium screen size.\n   *\n   * If it was not explicitly set by {@link ResponsiveComponents.setMediumScreenWidth}, the default value is `800`.\n   * @returns {number}\n   */\n  public getMediumScreenWidth() {\n    if (this.responsiveMode === 'medium') {\n      return Number.POSITIVE_INFINITY;\n    }\n    if (this.responsiveMode !== 'auto') {\n      return 0;\n    }\n    if (this.mediumScreenWidth == null) {\n      return MEDIUM_SCREEN_WIDTH;\n    }\n    return this.mediumScreenWidth;\n  }\n\n  /** Return the current responsive mode.\n   * @returns {ValidResponsiveMode}\n   */\n  public getResponsiveMode(): ValidResponsiveMode {\n    return this.responsiveMode;\n  }\n\n  /**\n   * Return true if the current screen size is smaller than the current breakpoint set for small screen width.\n   * @returns {boolean}\n   */\n  public isSmallScreenWidth() {\n    if (this.windoh['clientWidth'] != null) {\n      return this.windoh['clientWidth'] <= this.getSmallScreenWidth();\n    } else {\n      return document.body.clientWidth <= this.getSmallScreenWidth();\n    }\n  }\n\n  /**\n   * Return true if the current screen size is smaller than the current breakpoint set for medium screen width.\n   * @returns {boolean}\n   */\n  public isMediumScreenWidth() {\n    if (this.isSmallScreenWidth()) {\n      return false;\n    }\n    if (this.windoh['clientWidth'] != null) {\n      return this.windoh['clientWidth'] <= this.getMediumScreenWidth();\n    }\n    return document.body.clientWidth <= this.getMediumScreenWidth();\n  }\n\n  /**\n   * Return true if the current screen size is larger than the current breakpoint set for medium and small.\n   * @returns {boolean}\n   */\n  public isLargeScreenWidth() {\n    return !this.isSmallScreenWidth() && !this.isMediumScreenWidth();\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResponsiveComponents/ResponsiveComponents.ts","export class SettingsEvents {\n  public static settingsPopulateMenu = 'settingsPopulateMenu';\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/events/SettingsEvents.ts","import { exportGlobally } from '../../GlobalExports';\nimport { SVGIcons } from '../../utils/SVGIcons';\nimport { $$, Dom } from '../../utils/Dom';\nimport { KEYBOARD } from '../../utils/KeyboardUtils';\nimport { IFormWidget, IFormWidgetSettable } from './FormWidgets';\nimport { SVGDom } from '../../utils/SVGDom';\n\nexport interface ITextInputOptions {\n  /**\n   * Whether to add a placeholder to the `TextInput` rather than a label.\n   *\n   * **Default:** `false`\n   */\n  usePlaceholder?: boolean;\n  /**\n   * The class name to add to the `TextInput`'s HTML element.\n   *\n   * **Default:** `coveo-input`\n   */\n  className?: string;\n  /**\n   * Whether to trigger the `TextInput`'s `onChange` function on every key press\n   * rather than when the enter key is pressed or the input is blurred.\n   *\n   * **Default:** `false`\n   */\n  triggerOnChangeAsYouType?: boolean;\n  /**\n   * Whether to set the required attribute to `true` or `false`.\n   *\n   * **Default:** `true`\n   */\n  isRequired?: boolean;\n  /**\n   * A custom aria-label attribute to add to the `TextInput`'s HTML element.\n   */\n  ariaLabel?: string;\n  /**\n   * The name of an icon to display inside the input at its beginning.\n   *\n   * **Default:** `undefined`\n   */\n  icon?: string;\n}\n\nconst defaultOptions: ITextInputOptions = {\n  usePlaceholder: false,\n  className: 'coveo-input',\n  triggerOnChangeAsYouType: false,\n  isRequired: true\n};\n\n/**\n * A text input widget with standard styling.\n */\nexport class TextInput implements IFormWidget, IFormWidgetSettable {\n  private element: HTMLElement;\n  private input: Dom;\n  private icon: Dom;\n  private lastQueryText: string = '';\n\n  static doExport() {\n    exportGlobally({\n      TextInput: TextInput\n    });\n  }\n\n  /**\n   * Creates a new `TextInput`.\n   * @param onChange The function to call when the value entered in the text input changes. This function takes the\n   * current `TextInput` instance as an argument.\n   * @param name The text to display in the text input label or placeholder.\n   */\n  constructor(\n    public onChange: (textInput: TextInput) => void = (textInput: TextInput) => {},\n    public name?: string,\n    private options?: ITextInputOptions\n  ) {\n    this.options = {\n      ...defaultOptions,\n      ...this.options\n    };\n\n    this.buildContent();\n    this.buildIcon();\n  }\n\n  /**\n   * Gets the element on which the text input is bound.\n   * @returns {HTMLElement} The text input element.\n   */\n  public getElement(): HTMLElement {\n    return this.element;\n  }\n\n  /**\n   * Gets the value currently entered in the text input.\n   * @returns {string} The text input current value.\n   */\n  public getValue(): string {\n    return (<HTMLInputElement>$$(this.element).find('input')).value;\n  }\n\n  /**\n   * Sets the value in the text input.\n   * @param value The value to set the text input to.\n   */\n  public setValue(value: string) {\n    const currentValue = this.getValue();\n    (<HTMLInputElement>$$(this.element).find('input')).value = value;\n    if (currentValue != value) {\n      this.onChange(this);\n    }\n    this.lastQueryText = this.getInput().value;\n  }\n\n  /**\n   * Resets the text input.\n   */\n  public reset() {\n    const currentValue = this.getValue();\n    (<HTMLInputElement>$$(this.element).find('input')).value = '';\n    if (currentValue != '') {\n      this.onChange(this);\n    }\n    this.lastQueryText = this.getInput().value;\n  }\n\n  /**\n   * Gets the element on which the text input is bound.\n   * @returns {HTMLElement} The text input element.\n   */\n  public build() {\n    return this.element;\n  }\n\n  /**\n   * Gets the `input` element (the text input itself).\n   * @returns {HTMLElement} The `input` element.\n   */\n  public getInput(): HTMLInputElement {\n    return <HTMLInputElement>$$(this.element).find('input');\n  }\n\n  private buildContent() {\n    this.element = $$('div', { className: this.options.className }).el;\n    this.input = $$('input', { type: 'text', autocomplete: 'off' });\n\n    this.options.isRequired && this.input.setAttribute('required', 'true');\n    this.options.ariaLabel && this.input.setAttribute('aria-label', this.options.ariaLabel);\n\n    this.addEventListeners();\n\n    this.element.appendChild(this.input.el);\n    this.name && this.createLabelOrPlaceholder();\n  }\n\n  private buildIcon() {\n    if (!this.options.icon) {\n      return;\n    }\n    const iconClassName = `${this.options.className}-icon`;\n    this.icon = $$('span', { className: iconClassName });\n    this.icon.setHtml(SVGIcons.icons[this.options.icon]);\n    SVGDom.addClassToSVGInContainer(this.icon.el, `${iconClassName}-svg`);\n    $$(this.element).prepend(this.icon.el);\n  }\n\n  private addEventListeners() {\n    this.options.triggerOnChangeAsYouType ? this.addOnTypeEventListener() : this.addOnChangeEventListener();\n  }\n\n  private addOnChangeEventListener() {\n    this.input.on(['keydown', 'blur'], (e: Event) => {\n      if (e.type == 'blur' || (<KeyboardEvent>e).keyCode == KEYBOARD.ENTER) {\n        this.triggerChange();\n      }\n    });\n  }\n\n  private addOnTypeEventListener() {\n    this.input.on(['keyup'], () => {\n      this.triggerChange();\n    });\n  }\n\n  private createLabelOrPlaceholder() {\n    if (this.options.usePlaceholder) {\n      return this.input.setAttribute('placeholder', this.name);\n    }\n\n    const label = $$('label');\n    label.text(this.name);\n    this.element.appendChild(label.el);\n  }\n\n  private triggerChange() {\n    if (this.lastQueryText != this.getInput().value) {\n      this.onChange(this);\n      this.lastQueryText = this.getInput().value;\n    }\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/FormWidgets/TextInput.ts","import { IAPIDocumentViewEvent } from '../rest/APIDocumentViewEvent';\nimport { IAPISearchEvent } from '../rest/APISearchEvent';\nimport { IAPICustomEvent } from '../rest/APICustomEvent';\nimport { ICustomEvent } from '../rest/CustomEvent';\nimport { IClickEvent } from '../rest/ClickEvent';\nimport { ISearchEvent } from '../rest/SearchEvent';\n\nexport interface IAnalyticsSearchEventsArgs {\n  searchEvents: IAPISearchEvent[];\n}\n\n/**\n * The `IAnalyticsDocumentViewEventArgs` interface describes the object that all\n * [`documentViewEvent`]{@link AnalyticsEvents.documentViewEvent} handlers receive as an argument.\n */\nexport interface IAnalyticsDocumentViewEventArgs {\n  /**\n   * The data to send in the request body of the Usage Analytics Write REST API call that logs the `click` event.\n   */\n  documentViewEvent: IAPIDocumentViewEvent;\n}\n\nexport interface IAnalyticsCustomEventArgs {\n  customEvent: IAPICustomEvent;\n}\n\n/**\n * The object that all [`analyticsEventReady`]{@link AnalyticsEvents.analyticsEventReady} handlers receive as an argument.\n */\nexport interface IAnalyticsEventArgs {\n  /**\n   * The type of Coveo Cloud usage analytics event.\n   */\n  event: 'CoveoCustomEvent' | 'CoveoClickEvent' | 'CoveoSearchEvent';\n  /**\n   * The fields describing the Coveo Cloud usage analytics event.\n   */\n  coveoAnalyticsEventData: ICustomEvent | IClickEvent | ISearchEvent;\n}\n\n/**\n * The `IChangeAnalyticsCustomDataEventArgs` interface describes the object that all\n * [`changeAnalyticsCustomData`]{@link AnalyticsEvents.changeAnalyticsCustomData} event handlers receive as an argument.\n *\n * This interface extends the [`IChangeableAnalyticsDataObject`]{@link IChangeableAnalyticsDataObject} interface.\n *\n * **Notes:**\n * > * External code can only modify the attributes described by the `IChangeableAnalyticsDataObject` interface.\n * > * When the analytics event being logged is a `ClickEvent`, the `ChangeAnalyticsCustomDataEventArgs` object also\n * > contains a `resultData` attribute, which describes the [`QueryResult`]{@link IQueryResult} that was clicked.\n * > External code **cannot** modify this object.\n */\nexport interface IChangeAnalyticsCustomDataEventArgs extends IChangeableAnalyticsDataObject {\n  /**\n   * The type of the usage analytics event.\n   *\n   * **Note:**\n   * > External code **cannot** modify the value of this attribute.\n   */\n  type: 'SearchEvent' | 'CustomEvent' | 'ClickEvent';\n\n  /**\n   * The generic action type of the usage analytics event.\n   *\n   * All analytics events that strongly relate to a certain feature or component usually share the same `actionType`.\n   *\n   * For instance, all usage analytics events relating to the [`Facet`]{@link Facet} component have `facet` as their\n   * `actionType`, whereas all usage analytics events relating to the [`Breadcrumb`]{@link Breadcrumb} component have\n   * `breadcrumb` as their `actionType`.\n   *\n   * **Note:**\n   * > External code **cannot** modify the value of this attribute.\n   */\n  actionType: string;\n\n  /**\n   * The cause of the usage analytics event.\n   *\n   * For instance, triggering a query using the search box logs a usage analytics event with `searchBoxSubmit` as its\n   * `actionCause`, whereas triggering a query by selecting a facet value logs a usage analytics event with\n   * `facetSelect` as its `actionCause`.\n   *\n   * **Note:**\n   * > External code **cannot** modify the value of this attribute.\n   */\n  actionCause: string;\n}\n\n/**\n * The `IChangeableAnalyticsMetaObject` interface describes the metadata which can be sent along with any usage\n * analytics event.\n */\nexport interface IChangeableAnalyticsMetaObject {\n  /**\n   * A metadata key-value pair to send along with the usage analytics event.\n   *\n   * **Notes:**\n   * > * A metadata key must contain only alphanumeric characters and underscores (the Coveo Usage Analytics REST\n   * > service automatically converts white spaces to underscores and uppercase characters to lowercase characters in key\n   * > names).\n   * > * A metadata value must be a simple string (no other type is allowed).\n   */\n  [name: string]: string;\n}\n\n/**\n * The `IChangeableAnalyticsDataObject` interface describes the modifiable part of the object that all\n * [`changeAnalyticsCustomData`]{@link AnalyticsEvents.changeAnalyticsCustomData} event handlers receive as an argument.\n */\nexport interface IChangeableAnalyticsDataObject {\n  /**\n   * The metadata to send along with the usage analytics event.\n   *\n   * **Note:**\n   * > External code **can** modify existing values, or add new key-value pairs in this attribute.\n   */\n  metaObject: IChangeableAnalyticsMetaObject;\n\n  /**\n   * The high-level origin of the usage analytics event.\n   *\n   * For instance, this could be the name of the search hub, or a name that can uniquely identify the search page from\n   * which the usage analytics event originates.\n   *\n   * Default value is `default`.\n   *\n   * **Note:**\n   * > External code **can** modify the value of this attribute.\n   */\n  originLevel1: string;\n\n  /**\n   * The mid-level origin of the usage analytics event.\n   *\n   * By default, the framework populates this attribute with the `data-id` of the currently selected tab in the search\n   * interface from which the usage analytics event originates.\n   *\n   * **Note:**\n   * > External code **can** modify the value of this attribute.\n   */\n  originLevel2: string;\n\n  /**\n   * The low-level origin of the usage analytics event.\n   *\n   * For instance, this could be the HTTP identifier of the page from which the usage analytics event originates.\n   *\n   * Default value is the empty string.\n   *\n   * **Note:**\n   * > External code **can** modify the value of this attribute.\n   */\n  originLevel3: string;\n\n  /**\n   * The language of the search interface from which the usage analytics event originates.\n   *\n   * By default, the framework populates this attribute with the currently loaded localization and culture file of the\n   * search interface from which the usage analytics event originates.\n   *\n   * **Note:**\n   * > External code **can** modify the value of this attribute.\n   */\n  language: string;\n}\n\n/**\n * The `AnalyticsEvents` static class contains the string definitions of all events that strongly relate to usage\n * analytics.\n *\n * See [Events](https://docs.coveo.com/en/417/).\n */\nexport class AnalyticsEvents {\n  public static searchEvent = 'analyticsSearchEvent';\n\n  /**\n   * Triggered when a `click` analytics event is logged (e.g., when the end user clicks a\n   * [`ResultLink`]{@link ResultLink} or [`Quickview`]{@link Quickview} to open a query result item).\n   *\n   * All `documentViewEvent` event handlers receive an\n   * [`AnalyticsDocumentViewEventArgs`]{@link IAnalyticsDocumentViewEventArgs} object as an argument.\n   *\n   * @type {string} The string value is `documentViewEvent`.\n   */\n  public static documentViewEvent = 'analyticsDocumentViewEvent';\n  public static customEvent = 'analyticsCustomEvent';\n\n  /**\n   * Triggered when any event (i.e., `search`, `click`, or `custom`) is about to be logged.\n   *\n   * All `analyticsEventReady` event handlers receive an [`AnalyticsEventArgs`]{@link IAnalyticsEventArgs} object as an argument.\n   */\n  public static analyticsEventReady = 'analyticsEventReady';\n\n  /**\n   * Triggered whenever an analytics event is about to be logged.\n   *\n   * This event allows external code to modify the analytics data before it is sent to the Coveo Usage Analytics REST\n   * service.\n   *\n   * All `changeAnalyticsCustomData` event handlers receive a\n   * [`ChangeAnalyticsCustomDataEventArgs`]{@link IChangeAnalyticsCustomDataEventArgs} object as an argument.\n   *\n   * @type {string} The string value is `changeAnalyticsCustomData`.\n   */\n  public static changeAnalyticsCustomData = 'changeAnalyticsCustomData';\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/events/AnalyticsEvents.ts","import { Template } from './Template';\nimport { ITemplateHelperFunction } from './TemplateHelpers';\nimport { Assert } from '../../misc/Assert';\nimport { Utils } from '../../utils/Utils';\nimport { Logger } from '../../misc/Logger';\nimport { TemplateFromAScriptTag, ITemplateFromStringProperties } from './TemplateFromAScriptTag';\nimport { DefaultResultTemplate } from './DefaultResultTemplate';\nimport * as _ from 'underscore';\nimport { $$ } from '../../utils/Dom';\n\nexport class UnderscoreTemplate extends Template {\n  private template: (data: any) => string;\n  private templateFromAScriptTag: TemplateFromAScriptTag;\n  public static templateHelpers: { [templateName: string]: ITemplateHelperFunction } = {};\n\n  public static mimeTypes = ['text/underscore', 'text/underscore-template', 'text/x-underscore', 'text/x-underscore-template'];\n\n  constructor(public element: HTMLElement) {\n    super();\n    Assert.exists(element);\n    var templateString = element.innerHTML;\n    try {\n      this.template = _.template(templateString);\n    } catch (e) {\n      new Logger(this).error(\n        'Cannot instantiate underscore template. Might be caused by strict Content-Security-Policy. Will fallback on a default template...',\n        e\n      );\n    }\n    this.templateFromAScriptTag = new TemplateFromAScriptTag(this, this.element);\n    this.dataToString = object => {\n      var extended = _.extend({}, object, UnderscoreTemplate.templateHelpers);\n      if (this.template) {\n        try {\n          return this.template(extended);\n        } catch (e) {\n          new Logger(this).error('Cannot instantiate template', e.message, this.getTemplateInfo());\n          new Logger(this).warn('A default template was used');\n          return new DefaultResultTemplate().getFallbackTemplate();\n        }\n      } else {\n        return new DefaultResultTemplate().getFallbackTemplate();\n      }\n    };\n  }\n\n  toHtmlElement(): HTMLElement {\n    const script = this.templateFromAScriptTag.toHtmlElement($$('script'));\n    script.setAttribute('type', _.first(UnderscoreTemplate.mimeTypes));\n    return script;\n  }\n\n  getType() {\n    return 'UnderscoreTemplate';\n  }\n\n  protected getTemplateInfo() {\n    return this.element;\n  }\n\n  static registerTemplateHelper(helperName: string, helper: ITemplateHelperFunction) {\n    UnderscoreTemplate.templateHelpers[helperName] = helper;\n  }\n\n  static isLibraryAvailable(): boolean {\n    return Utils.exists(window['_']);\n  }\n\n  static fromString(template: string, properties: ITemplateFromStringProperties): UnderscoreTemplate {\n    const script = TemplateFromAScriptTag.fromString(template, properties, document.createElement('script'));\n    script.setAttribute('type', UnderscoreTemplate.mimeTypes[0]);\n\n    return new UnderscoreTemplate(script);\n  }\n\n  static create(element: HTMLElement): UnderscoreTemplate {\n    Assert.exists(element);\n    return new UnderscoreTemplate(element);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Templates/UnderscoreTemplate.ts","var global = require('./_global');\nvar core = require('./_core');\nvar ctx = require('./_ctx');\nvar hide = require('./_hide');\nvar has = require('./_has');\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n  var IS_FORCED = type & $export.F;\n  var IS_GLOBAL = type & $export.G;\n  var IS_STATIC = type & $export.S;\n  var IS_PROTO = type & $export.P;\n  var IS_BIND = type & $export.B;\n  var IS_WRAP = type & $export.W;\n  var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n  var expProto = exports[PROTOTYPE];\n  var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n  var key, own, out;\n  if (IS_GLOBAL) source = name;\n  for (key in source) {\n    // contains in native\n    own = !IS_FORCED && target && target[key] !== undefined;\n    if (own && has(exports, key)) continue;\n    // export native or passed\n    out = own ? target[key] : source[key];\n    // prevent global pollution for namespaces\n    exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n    // bind timers to global for call from export context\n    : IS_BIND && own ? ctx(out, global)\n    // wrap global constructors for prevent change them in library\n    : IS_WRAP && target[key] == out ? (function (C) {\n      var F = function (a, b, c) {\n        if (this instanceof C) {\n          switch (arguments.length) {\n            case 0: return new C();\n            case 1: return new C(a);\n            case 2: return new C(a, b);\n          } return new C(a, b, c);\n        } return C.apply(this, arguments);\n      };\n      F[PROTOTYPE] = C[PROTOTYPE];\n      return F;\n    // make static versions for prototype methods\n    })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n    // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n    if (IS_PROTO) {\n      (exports.virtual || (exports.virtual = {}))[key] = out;\n      // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n      if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n    }\n  }\n};\n// type bitmap\n$export.F = 1;   // forced\n$export.G = 2;   // global\n$export.S = 4;   // static\n$export.P = 8;   // proto\n$export.B = 16;  // bind\n$export.W = 32;  // wrap\n$export.U = 64;  // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_export.js\n// module id = 60\n// module chunks = 88 89","var dP = require('./_object-dp');\nvar createDesc = require('./_property-desc');\nmodule.exports = require('./_descriptors') ? function (object, key, value) {\n  return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n  object[key] = value;\n  return object;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_hide.js\n// module id = 61\n// module chunks = 88 89","import { $$, Dom } from '../../utils/Dom';\nimport { InitializationEvents } from '../../events/InitializationEvents';\nimport { Component } from '../Base/Component';\nimport { SearchInterface } from '../SearchInterface/SearchInterface';\nimport { Utils } from '../../utils/Utils';\nimport * as _ from 'underscore';\nimport { QueryEvents } from '../../events/QueryEvents';\nimport { Logger } from '../../misc/Logger';\nimport { DeviceUtils } from '../../utils/DeviceUtils';\nimport { debounce } from 'underscore';\n\nexport interface IResponsiveComponentOptions {\n  enableResponsiveMode?: boolean;\n  responsiveBreakpoint?: number;\n  dropdownHeaderLabel?: string;\n  initializationEventRoot?: Dom;\n}\n\nexport interface IResponsiveComponentConstructor {\n  new (root: Dom, ID: string, options: IResponsiveComponentOptions): IResponsiveComponent;\n}\n\nexport interface IResponsiveComponent {\n  ID: string;\n  handleResizeEvent(): void;\n  needDropdownWrapper?(): boolean;\n  registerComponent?(accept: Component): boolean;\n}\n\ninterface IComponentInitialization {\n  responsiveComponentsManager: ResponsiveComponentsManager;\n  arguments: [IResponsiveComponentConstructor, Dom, string, Component, IResponsiveComponentOptions];\n}\n\nexport class ResponsiveComponentsManager {\n  public static DROPDOWN_HEADER_WRAPPER_CSS_CLASS = 'coveo-dropdown-header-wrapper';\n\n  private static componentManagers: ResponsiveComponentsManager[] = [];\n  private static remainingComponentInitializations: number = 0;\n  private static componentInitializations: IComponentInitialization[] = [];\n\n  public resizeListener;\n\n  private disabledComponents: string[] = [];\n  private coveoRoot: Dom;\n  private responsiveComponents: IResponsiveComponent[] = [];\n  private searchBoxElement: HTMLElement;\n  private dropdownHeadersWrapper: Dom;\n  private searchInterface: SearchInterface;\n  private logger: Logger;\n\n  // Register takes a class and will instantiate it after framework initialization has completed.\n  public static register(\n    responsiveComponentConstructor: IResponsiveComponentConstructor,\n    root: Dom,\n    ID: string,\n    component: Component,\n    options: IResponsiveComponentOptions\n  ): void {\n    // options.initializationEventRoot can be set in some instance (like recommendation) where the root of the interface triggering the init event\n    // is different from the one that will be used for calculation size.\n    const initEventRoot = options.initializationEventRoot || root;\n\n    initEventRoot.on(InitializationEvents.afterInitialization, () => {\n      if (this.shouldEnableResponsiveMode(root)) {\n        this.registerComponentIfResponsiveModeEnabled(responsiveComponentConstructor, root, ID, component, options);\n      }\n\n      this.remainingComponentInitializations--;\n      if (this.remainingComponentInitializations == 0) {\n        this.instantiateResponsiveComponents(); // necessary to verify if all components are disabled before they are initialized.\n        if (root.width() == 0) {\n          let logger = new Logger('ResponsiveComponentsManager');\n          logger.info(`Search interface width is 0, cannot dispatch resize events to responsive components. Will try again after first\n          query success.`);\n          root.one(QueryEvents.querySuccess, () => {\n            this.resizeAllComponentsManager();\n          });\n        } else {\n          this.resizeAllComponentsManager();\n        }\n      }\n    });\n    initEventRoot.one(QueryEvents.querySuccess, () => {\n      this.resizeAllComponentsManager();\n    });\n    this.remainingComponentInitializations++;\n  }\n\n  private static registerComponentIfResponsiveModeEnabled(\n    responsiveComponentConstructor: IResponsiveComponentConstructor,\n    root: Dom,\n    ID: string,\n    component: Component,\n    options: IResponsiveComponentOptions\n  ) {\n    let responsiveComponentsManager = _.find(this.componentManagers, componentManager => root.el == componentManager.coveoRoot.el);\n    if (!responsiveComponentsManager) {\n      responsiveComponentsManager = new ResponsiveComponentsManager(root);\n    }\n\n    if (!Utils.isNullOrUndefined(options.enableResponsiveMode) && !options.enableResponsiveMode) {\n      responsiveComponentsManager.disableComponent(ID);\n      return;\n    }\n\n    this.componentInitializations.push({\n      responsiveComponentsManager: responsiveComponentsManager,\n      arguments: [responsiveComponentConstructor, root, ID, component, options]\n    });\n  }\n\n  private static shouldEnableResponsiveMode(root: Dom): boolean {\n    let searchInterface = <SearchInterface>Component.get(root.el, SearchInterface, true);\n    return searchInterface instanceof SearchInterface && searchInterface.options.enableAutomaticResponsiveMode;\n  }\n\n  private static instantiateResponsiveComponents() {\n    _.each(this.componentInitializations, componentInitialization => {\n      let responsiveComponentsManager = componentInitialization.responsiveComponentsManager;\n      responsiveComponentsManager.register.apply(responsiveComponentsManager, componentInitialization.arguments);\n    });\n  }\n\n  public static resizeAllComponentsManager(): void {\n    _.each(this.componentManagers, componentManager => {\n      componentManager.resizeListener();\n    });\n  }\n\n  constructor(root: Dom) {\n    this.coveoRoot = root;\n    this.searchInterface = <SearchInterface>Component.get(this.coveoRoot.el, SearchInterface, false);\n    this.dropdownHeadersWrapper = $$('div', {\n      className: ResponsiveComponentsManager.DROPDOWN_HEADER_WRAPPER_CSS_CLASS\n    });\n    this.searchBoxElement = this.getSearchBoxElement();\n    this.logger = new Logger(this);\n    this.resizeListener = debounce(() => {\n      if (this.isAbleToDetermineMode()) {\n        this.addDropdownHeaderWrapperIfNeeded();\n        if (this.shouldSwitchToSmallMode()) {\n          this.coveoRoot.addClass('coveo-small-interface');\n        } else if (!this.shouldSwitchToSmallMode()) {\n          this.coveoRoot.removeClass('coveo-small-interface');\n        }\n        _.each(this.responsiveComponents, responsiveComponent => {\n          responsiveComponent.handleResizeEvent();\n        });\n      } else {\n        this.logger\n          .warn(`The width of the search interface is 0, cannot dispatch resize events to responsive components. This means that the tabs will not\n        automatically fit in the tab section. Also, the facet and recommendation component will not hide in a menu. Could the search\n        interface display property be none? Could its visibility property be set to hidden? Also, if either of these scenarios happen during\n        loading, it could be the cause of this issue.`);\n      }\n    }, 250);\n    // On many android devices, focusing on an input (eg: facet search input) causes the device to \"zoom in\"\n    // and this triggers the window resize event. Since this class modify HTML nodes, Android has the quirks of removing the focus on the input.\n    // As a net result, users focus on the text input, the keyboard appears for a few milliseconds, then dissapears instantly when the DOM is modified.\n    // Since on a mobile device resizing the page is not something that should really happen, we disable it here.\n    if (!DeviceUtils.isMobileDevice()) {\n      window.addEventListener('resize', this.resizeListener);\n    } else {\n      window.addEventListener('orientationchange', this.resizeListener);\n    }\n\n    this.bindNukeEvents();\n    ResponsiveComponentsManager.componentManagers.push(this);\n  }\n\n  public register(\n    responsiveComponentConstructor: IResponsiveComponentConstructor,\n    root: Dom,\n    ID: string,\n    component: Component,\n    options: IResponsiveComponentOptions\n  ): void {\n    if (this.isDisabled(ID)) {\n      return;\n    }\n\n    if (!this.isActivated(ID)) {\n      let responsiveComponent = new responsiveComponentConstructor(root, ID, options);\n\n      if (this.isTabs(ID)) {\n        this.responsiveComponents.push(responsiveComponent);\n      } else {\n        // Tabs need to be rendered last, so any dropdown header(eg: facet) is already there when the responsive tabs check for overflow.\n        this.responsiveComponents.unshift(responsiveComponent);\n      }\n    }\n    _.each(this.responsiveComponents, (responsiveComponent: IResponsiveComponent) => {\n      if (responsiveComponent.registerComponent != null) {\n        responsiveComponent.registerComponent(component);\n      }\n    });\n  }\n\n  public disableComponent(ID: string) {\n    this.disabledComponents.push(ID);\n  }\n\n  private isDisabled(ID: string) {\n    return _.indexOf(this.disabledComponents, ID) != -1;\n  }\n\n  private shouldSwitchToSmallMode(): boolean {\n    let aComponentNeedsTabSection = this.needDropdownWrapper();\n    let reachedBreakpoint = this.coveoRoot.width() <= this.searchInterface.responsiveComponents.getMediumScreenWidth();\n    return aComponentNeedsTabSection || reachedBreakpoint;\n  }\n\n  private needDropdownWrapper(): boolean {\n    for (let i = 0; i < this.responsiveComponents.length; i++) {\n      let responsiveComponent = this.responsiveComponents[i];\n      if (responsiveComponent.needDropdownWrapper && responsiveComponent.needDropdownWrapper()) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  private addDropdownHeaderWrapperIfNeeded(): void {\n    if (this.needDropdownWrapper()) {\n      let tabSection = $$(this.coveoRoot).find('.coveo-tab-section');\n      if (this.searchBoxElement) {\n        this.dropdownHeadersWrapper.insertAfter(this.searchBoxElement);\n      } else if (tabSection) {\n        this.dropdownHeadersWrapper.insertAfter(tabSection);\n      } else {\n        this.coveoRoot.prepend(this.dropdownHeadersWrapper.el);\n      }\n    }\n  }\n\n  private isTabs(ID: string): boolean {\n    return ID == 'Tab';\n  }\n\n  private isActivated(ID: string): boolean {\n    return _.find(this.responsiveComponents, current => current.ID == ID) != undefined;\n  }\n\n  private getSearchBoxElement(): HTMLElement {\n    let searchBoxElement = this.coveoRoot.find('.coveo-search-section');\n    if (searchBoxElement) {\n      return <HTMLElement>searchBoxElement;\n    } else {\n      return <HTMLElement>this.coveoRoot.find('.CoveoSearchbox');\n    }\n  }\n\n  private bindNukeEvents(): void {\n    $$(this.coveoRoot).on(InitializationEvents.nuke, () => {\n      window.removeEventListener('resize', this.resizeListener);\n\n      // If the interface gets nuked, we need to remove all reference to componentManagers stored which match the current search interface\n      ResponsiveComponentsManager.componentManagers = _.filter(\n        ResponsiveComponentsManager.componentManagers,\n        manager => manager.coveoRoot.el != this.coveoRoot.el\n      );\n    });\n  }\n\n  private isAbleToDetermineMode() {\n    return this.coveoRoot.width() != 0 || this.searchInterface.options.responsiveMode !== 'auto';\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResponsiveComponents/ResponsiveComponentsManager.ts","import { compact, indexOf } from 'underscore';\nimport { Assert } from '../../misc/Assert';\nimport { Utils } from '../../utils/Utils';\nimport { HtmlTemplate } from '../Templates/HtmlTemplate';\nimport { Template } from '../Templates/Template';\nimport { TemplateCache } from '../Templates/TemplateCache';\nimport { TemplateList } from '../Templates/TemplateList';\nimport { UnderscoreTemplate } from '../Templates/UnderscoreTemplate';\nimport { ComponentOptions } from './ComponentOptions';\nimport { ComponentOptionsType, IComponentOptions, IComponentOptionsOption } from './IComponentOptions';\n\nexport interface IComponentOptionsTemplateOptionArgs extends IComponentOptions<Template> {\n  /**\n   * Specifies the CSS selector the template must match. The first matching element in the page is used as the template\n   * option value, if this element is a valid template.\n   *\n   * If specified, this parameter takes precedence over [`idAttr`]{@link IComponentOptionsTemplateOptionArgs.idAttr}.\n   */\n  selectorAttr?: string;\n\n  /**\n   * Specifies the CSS selector the templates must match. The list of all matching, valid elements in the page is used\n   * as the template option value.\n   *\n   * Default value is `.`, followed by the hyphened name of the template option being configured (e.g.,\n   * `.content-template`, `.result-template`, `.sub-result-template`, `.preview-template`, etc.).\n   */\n  childSelector?: string;\n\n  /**\n   * Specifies the HTML `id` attribute the template must match. The corresponding template must be registered in\n   * the [`TemplateCache`]{@link TemplateCache} to be usable as the template option value.\n   *\n   * If specified, this parameter takes precedence over\n   * [`childSelector`]{@link IComponentOptionsTemplateOptionArgs.childSelector}.\n   */\n  idAttr?: string;\n}\n\nexport interface IComponentOptionsTemplateOption extends IComponentOptionsOption<Template>, IComponentOptionsTemplateOptionArgs {}\n\nexport class TemplateComponentOptions {\n  /**\n   * Builds a template option.\n   *\n   * The option accepts a CSS selector matching a valid template. This selector can either be a class, or an ID\n   * selector.\n   *\n   * When building a template option using an ID selector, the matching template must be registered in the\n   * [`TemplateCache`]{@link TemplateCache}, however.\n   *\n   * **Markup Examples:**\n   *\n   * > `data-foo-id=\"#bar\"`\n   *\n   * > `data-foo-selector=\".bar\"`\n   *\n   * @param optionArgs The arguments to apply when building the option.\n   * @returns {Template} The resulting option value.\n   */\n  static buildTemplateOption(optionArgs?: IComponentOptionsTemplateOptionArgs): Template {\n    return ComponentOptions.buildOption<Template>(ComponentOptionsType.TEMPLATE, TemplateComponentOptions.loadTemplateOption, optionArgs);\n  }\n\n  static loadTemplateOption(\n    element: HTMLElement,\n    name: string,\n    option: IComponentOptionsTemplateOption,\n    doc: Document = document\n  ): Template {\n    let template: Template;\n\n    // Attribute: template selector\n    const selectorAttr = option.selectorAttr || ComponentOptions.attrNameFromName(name, option) + '-selector';\n    const selector = element.getAttribute(selectorAttr) || ComponentOptions.getAttributeFromAlias(element, option);\n    if (selector != null) {\n      const templateElement = <HTMLElement>doc.querySelector(selector);\n      if (templateElement != null) {\n        template = TemplateComponentOptions.createResultTemplateFromElement(templateElement);\n      }\n    }\n    // Attribute: template id\n    if (template == null) {\n      const idAttr = option.idAttr || ComponentOptions.attrNameFromName(name, option) + '-id';\n      const id = element.getAttribute(idAttr) || ComponentOptions.getAttributeFromAlias(element, option);\n      if (id != null) {\n        template = TemplateComponentOptions.loadResultTemplateFromId(id);\n      }\n    }\n    // Child\n    if (template == null) {\n      let childSelector = option.childSelector;\n      if (childSelector == null) {\n        childSelector = '.' + name.replace(/([A-Z])/g, '-$1').toLowerCase();\n      }\n      template = TemplateComponentOptions.loadChildrenResultTemplateFromSelector(element, childSelector);\n    }\n    return template;\n  }\n\n  static createResultTemplateFromElement(element: HTMLElement): Template {\n    Assert.exists(element);\n    const type = element.getAttribute('type');\n    const mimeTypes =\n      'You must specify the type of template. Valid values are:' +\n      ' ' +\n      UnderscoreTemplate.mimeTypes.toString() +\n      ' ' +\n      HtmlTemplate.mimeTypes.toString();\n    Assert.check(Utils.isNonEmptyString(type), mimeTypes);\n\n    if (indexOf(UnderscoreTemplate.mimeTypes, type.toLowerCase()) != -1) {\n      return UnderscoreTemplate.create(element);\n    } else if (indexOf(HtmlTemplate.mimeTypes, type.toLowerCase()) != -1) {\n      return new HtmlTemplate(element);\n    } else {\n      Assert.fail('Cannot guess template type from attribute: ' + type + '. Valid values are ' + mimeTypes);\n      return undefined;\n    }\n  }\n\n  static loadResultTemplateFromId(templateId: string): Template {\n    return Utils.isNonEmptyString(templateId) ? TemplateCache.getTemplate(templateId) : null;\n  }\n\n  static loadChildrenResultTemplateFromSelector(element: HTMLElement, selector: string): Template {\n    const foundElements = ComponentOptions.loadChildrenHtmlElementFromSelector(element, selector);\n    if (foundElements.length > 0) {\n      return new TemplateList(compact(foundElements.map(element => TemplateComponentOptions.createResultTemplateFromElement(element))));\n    }\n    return null;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Base/TemplateComponentOptions.ts","import { $$ } from '../../utils/Dom';\nimport { l } from '../../strings/Strings';\nimport * as _ from 'underscore';\nimport { IFormWidget, IFormWidgetSettable } from './FormWidgets';\nimport { exportGlobally } from '../../GlobalExports';\n\n/**\n * A dropdown widget with standard styling.\n */\nexport class Dropdown implements IFormWidget, IFormWidgetSettable {\n  private element: HTMLElement;\n  private selectElement: HTMLSelectElement;\n  private optionsElement: HTMLOptionElement[] = [];\n\n  static doExport() {\n    exportGlobally({\n      Dropdown: Dropdown\n    });\n  }\n\n  /**\n   * Creates a new `Dropdown`.\n   * @param onChange The function to call when the dropdown selected value changes. This function takes the current\n   * `Dropdown` instance as an argument.\n   * @param listOfValues The selectable values to display in the dropdown.\n   * @param getDisplayValue An optional function to modify the display values, rather than using the values as they\n   * appear in the `listOfValues`.\n   * @param label The label to use for the input for accessibility purposes.\n   */\n  constructor(\n    public onChange: (dropdown: Dropdown) => void = (dropdown: Dropdown) => {},\n    protected listOfValues: string[],\n    private getDisplayValue: (string) => string = l,\n    private label?: string\n  ) {\n    this.buildContent();\n    this.select(0, false);\n    this.bindEvents();\n  }\n\n  /**\n   * Resets the dropdown.\n   */\n  public reset() {\n    this.select(0, false);\n  }\n\n  public setId(id: string) {\n    $$(this.element).setAttribute('id', id);\n  }\n\n  /**\n   * Gets the element on which the dropdown is bound.\n   * @returns {HTMLElement} The dropdown element.\n   */\n  public getElement(): HTMLElement {\n    return this.element;\n  }\n\n  /**\n   * Gets the currently selected dropdown value.\n   * @returns {string} The currently selected dropdown value.\n   */\n  public getValue(): string {\n    return this.selectElement.value;\n  }\n\n  /**\n   * Selects a value from the dropdown [`listofValues`]{@link Dropdown.listOfValues}.\n   * @param index The 0-based index position of the value to select in the `listOfValues`.\n   * @param executeOnChange Indicates whether to execute the [`onChange`]{@link Dropdown.onChange} function when this\n   * method changes the dropdown selection.\n   */\n  public select(index: number, executeOnChange = true) {\n    this.selectOption(this.optionsElement[index], executeOnChange);\n  }\n\n  /**\n   * Gets the element on which the dropdown is bound.\n   * @returns {HTMLElement} The dropdown element.\n   */\n  public build() {\n    return this.element;\n  }\n\n  /**\n   * Sets the dropdown value.\n   * @param value The value to set the dropdown to.\n   */\n  public setValue(value: string) {\n    _.each(this.optionsElement, option => {\n      if ($$(option).getAttribute('data-value') == value) {\n        this.selectOption(option);\n      }\n    });\n  }\n\n  private selectOption(option: HTMLOptionElement, executeOnChange = true) {\n    this.selectElement.value = option.value;\n    if (executeOnChange) {\n      this.onChange(this);\n    }\n  }\n\n  private buildContent() {\n    this.selectElement = <HTMLSelectElement>$$('select', {\n      className: 'coveo-dropdown'\n    }).el;\n\n    if (this.label) {\n      this.selectElement.setAttribute('aria-label', l(this.label));\n    }\n\n    const selectOptions = this.buildOptions();\n    _.each(selectOptions, opt => {\n      $$(this.selectElement).append(opt);\n    });\n    this.element = this.selectElement;\n  }\n\n  private buildOptions(): HTMLElement[] {\n    const ret: HTMLElement[] = [];\n    _.each(this.listOfValues, (value: string) => {\n      ret.push(this.buildOption(value));\n    });\n    return ret;\n  }\n\n  private buildOption(value: string): HTMLElement {\n    const option = $$('option');\n    option.setAttribute('data-value', value);\n    option.setAttribute('value', value);\n    option.text(this.getDisplayValue(value));\n    this.optionsElement.push(<HTMLOptionElement>option.el);\n    return option.el;\n  }\n\n  private bindEvents() {\n    $$(this.selectElement).on('change', () => this.onChange(this));\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/FormWidgets/Dropdown.ts","export function basis(t1, v0, v1, v2, v3) {\n  var t2 = t1 * t1, t3 = t2 * t1;\n  return ((1 - 3 * t1 + 3 * t2 - t3) * v0\n      + (4 - 6 * t2 + 3 * t3) * v1\n      + (1 + 3 * t1 + 3 * t2 - 3 * t3) * v2\n      + t3 * v3) / 6;\n}\n\nexport default function(values) {\n  var n = values.length - 1;\n  return function(t) {\n    var i = t <= 0 ? (t = 0) : t >= 1 ? (t = 1, n - 1) : Math.floor(t * n),\n        v1 = values[i],\n        v2 = values[i + 1],\n        v0 = i > 0 ? values[i - 1] : 2 * v1 - v2,\n        v3 = i < n - 1 ? values[i + 2] : 2 * v2 - v1;\n    return basis((t - i / n) * n, v0, v1, v2, v3);\n  };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-interpolate/src/basis.js\n// module id = null\n// module chunks = ","import {basis} from \"./basis.js\";\n\nexport default function(values) {\n  var n = values.length;\n  return function(t) {\n    var i = Math.floor(((t %= 1) < 0 ? ++t : t) * n),\n        v0 = values[(i + n - 1) % n],\n        v1 = values[i % n],\n        v2 = values[(i + 1) % n],\n        v3 = values[(i + 2) % n];\n    return basis((t - i / n) * n, v0, v1, v2, v3);\n  };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-interpolate/src/basisClosed.js\n// module id = null\n// module chunks = ","export default function(x) {\n  return function() {\n    return x;\n  };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-interpolate/src/constant.js\n// module id = null\n// module chunks = ","import constant from \"./constant.js\";\n\nfunction linear(a, d) {\n  return function(t) {\n    return a + t * d;\n  };\n}\n\nfunction exponential(a, b, y) {\n  return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n    return Math.pow(a + t * b, y);\n  };\n}\n\nexport function hue(a, b) {\n  var d = b - a;\n  return d ? linear(a, d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d) : constant(isNaN(a) ? b : a);\n}\n\nexport function gamma(y) {\n  return (y = +y) === 1 ? nogamma : function(a, b) {\n    return b - a ? exponential(a, b, y) : constant(isNaN(a) ? b : a);\n  };\n}\n\nexport default function nogamma(a, b) {\n  var d = b - a;\n  return d ? linear(a, d) : constant(isNaN(a) ? b : a);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-interpolate/src/color.js\n// module id = null\n// module chunks = ","import {rgb as colorRgb} from \"d3-color\";\nimport basis from \"./basis.js\";\nimport basisClosed from \"./basisClosed.js\";\nimport nogamma, {gamma} from \"./color.js\";\n\nexport default (function rgbGamma(y) {\n  var color = gamma(y);\n\n  function rgb(start, end) {\n    var r = color((start = colorRgb(start)).r, (end = colorRgb(end)).r),\n        g = color(start.g, end.g),\n        b = color(start.b, end.b),\n        opacity = nogamma(start.opacity, end.opacity);\n    return function(t) {\n      start.r = r(t);\n      start.g = g(t);\n      start.b = b(t);\n      start.opacity = opacity(t);\n      return start + \"\";\n    };\n  }\n\n  rgb.gamma = rgbGamma;\n\n  return rgb;\n})(1);\n\nfunction rgbSpline(spline) {\n  return function(colors) {\n    var n = colors.length,\n        r = new Array(n),\n        g = new Array(n),\n        b = new Array(n),\n        i, color;\n    for (i = 0; i < n; ++i) {\n      color = colorRgb(colors[i]);\n      r[i] = color.r || 0;\n      g[i] = color.g || 0;\n      b[i] = color.b || 0;\n    }\n    r = spline(r);\n    g = spline(g);\n    b = spline(b);\n    color.opacity = 1;\n    return function(t) {\n      color.r = r(t);\n      color.g = g(t);\n      color.b = b(t);\n      return color + \"\";\n    };\n  };\n}\n\nexport var rgbBasis = rgbSpline(basis);\nexport var rgbBasisClosed = rgbSpline(basisClosed);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-interpolate/src/rgb.js\n// module id = null\n// module chunks = ","export default function(a, b) {\n  if (!b) b = [];\n  var n = a ? Math.min(b.length, a.length) : 0,\n      c = b.slice(),\n      i;\n  return function(t) {\n    for (i = 0; i < n; ++i) c[i] = a[i] * (1 - t) + b[i] * t;\n    return c;\n  };\n}\n\nexport function isNumberArray(x) {\n  return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-interpolate/src/numberArray.js\n// module id = null\n// module chunks = ","import value from \"./value.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n  return (isNumberArray(b) ? numberArray : genericArray)(a, b);\n}\n\nexport function genericArray(a, b) {\n  var nb = b ? b.length : 0,\n      na = a ? Math.min(nb, a.length) : 0,\n      x = new Array(na),\n      c = new Array(nb),\n      i;\n\n  for (i = 0; i < na; ++i) x[i] = value(a[i], b[i]);\n  for (; i < nb; ++i) c[i] = b[i];\n\n  return function(t) {\n    for (i = 0; i < na; ++i) c[i] = x[i](t);\n    return c;\n  };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-interpolate/src/array.js\n// module id = null\n// module chunks = ","export default function(a, b) {\n  var d = new Date;\n  return a = +a, b = +b, function(t) {\n    return d.setTime(a * (1 - t) + b * t), d;\n  };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-interpolate/src/date.js\n// module id = null\n// module chunks = ","export default function(a, b) {\n  return a = +a, b = +b, function(t) {\n    return a * (1 - t) + b * t;\n  };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-interpolate/src/number.js\n// module id = null\n// module chunks = ","import value from \"./value.js\";\n\nexport default function(a, b) {\n  var i = {},\n      c = {},\n      k;\n\n  if (a === null || typeof a !== \"object\") a = {};\n  if (b === null || typeof b !== \"object\") b = {};\n\n  for (k in b) {\n    if (k in a) {\n      i[k] = value(a[k], b[k]);\n    } else {\n      c[k] = b[k];\n    }\n  }\n\n  return function(t) {\n    for (k in i) c[k] = i[k](t);\n    return c;\n  };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-interpolate/src/object.js\n// module id = null\n// module chunks = ","import number from \"./number.js\";\n\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g,\n    reB = new RegExp(reA.source, \"g\");\n\nfunction zero(b) {\n  return function() {\n    return b;\n  };\n}\n\nfunction one(b) {\n  return function(t) {\n    return b(t) + \"\";\n  };\n}\n\nexport default function(a, b) {\n  var bi = reA.lastIndex = reB.lastIndex = 0, // scan index for next number in b\n      am, // current match in a\n      bm, // current match in b\n      bs, // string preceding current number in b, if any\n      i = -1, // index in s\n      s = [], // string constants and placeholders\n      q = []; // number interpolators\n\n  // Coerce inputs to strings.\n  a = a + \"\", b = b + \"\";\n\n  // Interpolate pairs of numbers in a & b.\n  while ((am = reA.exec(a))\n      && (bm = reB.exec(b))) {\n    if ((bs = bm.index) > bi) { // a string precedes the next number in b\n      bs = b.slice(bi, bs);\n      if (s[i]) s[i] += bs; // coalesce with previous string\n      else s[++i] = bs;\n    }\n    if ((am = am[0]) === (bm = bm[0])) { // numbers in a & b match\n      if (s[i]) s[i] += bm; // coalesce with previous string\n      else s[++i] = bm;\n    } else { // interpolate non-matching numbers\n      s[++i] = null;\n      q.push({i: i, x: number(am, bm)});\n    }\n    bi = reB.lastIndex;\n  }\n\n  // Add remains of b.\n  if (bi < b.length) {\n    bs = b.slice(bi);\n    if (s[i]) s[i] += bs; // coalesce with previous string\n    else s[++i] = bs;\n  }\n\n  // Special optimization for only a single match.\n  // Otherwise, interpolate each of the numbers and rejoin the string.\n  return s.length < 2 ? (q[0]\n      ? one(q[0].x)\n      : zero(b))\n      : (b = q.length, function(t) {\n          for (var i = 0, o; i < b; ++i) s[(o = q[i]).i] = o.x(t);\n          return s.join(\"\");\n        });\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-interpolate/src/string.js\n// module id = null\n// module chunks = ","import {color} from \"d3-color\";\nimport rgb from \"./rgb.js\";\nimport {genericArray} from \"./array.js\";\nimport date from \"./date.js\";\nimport number from \"./number.js\";\nimport object from \"./object.js\";\nimport string from \"./string.js\";\nimport constant from \"./constant.js\";\nimport numberArray, {isNumberArray} from \"./numberArray.js\";\n\nexport default function(a, b) {\n  var t = typeof b, c;\n  return b == null || t === \"boolean\" ? constant(b)\n      : (t === \"number\" ? number\n      : t === \"string\" ? ((c = color(b)) ? (b = c, rgb) : string)\n      : b instanceof color ? rgb\n      : b instanceof Date ? date\n      : isNumberArray(b) ? numberArray\n      : Array.isArray(b) ? genericArray\n      : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object\n      : number)(a, b);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-interpolate/src/value.js\n// module id = null\n// module chunks = ","export default function(range) {\n  var n = range.length;\n  return function(t) {\n    return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n  };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-interpolate/src/discrete.js\n// module id = null\n// module chunks = ","import {hue} from \"./color.js\";\n\nexport default function(a, b) {\n  var i = hue(+a, +b);\n  return function(t) {\n    var x = i(t);\n    return x - 360 * Math.floor(x / 360);\n  };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-interpolate/src/hue.js\n// module id = null\n// module chunks = ","export default function(a, b) {\n  return a = +a, b = +b, function(t) {\n    return Math.round(a * (1 - t) + b * t);\n  };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-interpolate/src/round.js\n// module id = null\n// module chunks = ","var degrees = 180 / Math.PI;\n\nexport var identity = {\n  translateX: 0,\n  translateY: 0,\n  rotate: 0,\n  skewX: 0,\n  scaleX: 1,\n  scaleY: 1\n};\n\nexport default function(a, b, c, d, e, f) {\n  var scaleX, scaleY, skewX;\n  if (scaleX = Math.sqrt(a * a + b * b)) a /= scaleX, b /= scaleX;\n  if (skewX = a * c + b * d) c -= a * skewX, d -= b * skewX;\n  if (scaleY = Math.sqrt(c * c + d * d)) c /= scaleY, d /= scaleY, skewX /= scaleY;\n  if (a * d < b * c) a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n  return {\n    translateX: e,\n    translateY: f,\n    rotate: Math.atan2(b, a) * degrees,\n    skewX: Math.atan(skewX) * degrees,\n    scaleX: scaleX,\n    scaleY: scaleY\n  };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-interpolate/src/transform/decompose.js\n// module id = null\n// module chunks = ","import decompose, {identity} from \"./decompose.js\";\n\nvar cssNode,\n    cssRoot,\n    cssView,\n    svgNode;\n\nexport function parseCss(value) {\n  if (value === \"none\") return identity;\n  if (!cssNode) cssNode = document.createElement(\"DIV\"), cssRoot = document.documentElement, cssView = document.defaultView;\n  cssNode.style.transform = value;\n  value = cssView.getComputedStyle(cssRoot.appendChild(cssNode), null).getPropertyValue(\"transform\");\n  cssRoot.removeChild(cssNode);\n  value = value.slice(7, -1).split(\",\");\n  return decompose(+value[0], +value[1], +value[2], +value[3], +value[4], +value[5]);\n}\n\nexport function parseSvg(value) {\n  if (value == null) return identity;\n  if (!svgNode) svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n  svgNode.setAttribute(\"transform\", value);\n  if (!(value = svgNode.transform.baseVal.consolidate())) return identity;\n  value = value.matrix;\n  return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-interpolate/src/transform/parse.js\n// module id = null\n// module chunks = ","import number from \"../number.js\";\nimport {parseCss, parseSvg} from \"./parse.js\";\n\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n\n  function pop(s) {\n    return s.length ? s.pop() + \" \" : \"\";\n  }\n\n  function translate(xa, ya, xb, yb, s, q) {\n    if (xa !== xb || ya !== yb) {\n      var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n      q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n    } else if (xb || yb) {\n      s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n    }\n  }\n\n  function rotate(a, b, s, q) {\n    if (a !== b) {\n      if (a - b > 180) b += 360; else if (b - a > 180) a += 360; // shortest path\n      q.push({i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: number(a, b)});\n    } else if (b) {\n      s.push(pop(s) + \"rotate(\" + b + degParen);\n    }\n  }\n\n  function skewX(a, b, s, q) {\n    if (a !== b) {\n      q.push({i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: number(a, b)});\n    } else if (b) {\n      s.push(pop(s) + \"skewX(\" + b + degParen);\n    }\n  }\n\n  function scale(xa, ya, xb, yb, s, q) {\n    if (xa !== xb || ya !== yb) {\n      var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n      q.push({i: i - 4, x: number(xa, xb)}, {i: i - 2, x: number(ya, yb)});\n    } else if (xb !== 1 || yb !== 1) {\n      s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n    }\n  }\n\n  return function(a, b) {\n    var s = [], // string constants and placeholders\n        q = []; // number interpolators\n    a = parse(a), b = parse(b);\n    translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n    rotate(a.rotate, b.rotate, s, q);\n    skewX(a.skewX, b.skewX, s, q);\n    scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n    a = b = null; // gc\n    return function(t) {\n      var i = -1, n = q.length, o;\n      while (++i < n) s[(o = q[i]).i] = o.x(t);\n      return s.join(\"\");\n    };\n  };\n}\n\nexport var interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nexport var interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-interpolate/src/transform/index.js\n// module id = null\n// module chunks = ","var rho = Math.SQRT2,\n    rho2 = 2,\n    rho4 = 4,\n    epsilon2 = 1e-12;\n\nfunction cosh(x) {\n  return ((x = Math.exp(x)) + 1 / x) / 2;\n}\n\nfunction sinh(x) {\n  return ((x = Math.exp(x)) - 1 / x) / 2;\n}\n\nfunction tanh(x) {\n  return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\n\n// p0 = [ux0, uy0, w0]\n// p1 = [ux1, uy1, w1]\nexport default function(p0, p1) {\n  var ux0 = p0[0], uy0 = p0[1], w0 = p0[2],\n      ux1 = p1[0], uy1 = p1[1], w1 = p1[2],\n      dx = ux1 - ux0,\n      dy = uy1 - uy0,\n      d2 = dx * dx + dy * dy,\n      i,\n      S;\n\n  // Special case for u0 ≅ u1.\n  if (d2 < epsilon2) {\n    S = Math.log(w1 / w0) / rho;\n    i = function(t) {\n      return [\n        ux0 + t * dx,\n        uy0 + t * dy,\n        w0 * Math.exp(rho * t * S)\n      ];\n    }\n  }\n\n  // General case.\n  else {\n    var d1 = Math.sqrt(d2),\n        b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1),\n        b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1),\n        r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0),\n        r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n    S = (r1 - r0) / rho;\n    i = function(t) {\n      var s = t * S,\n          coshr0 = cosh(r0),\n          u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n      return [\n        ux0 + u * dx,\n        uy0 + u * dy,\n        w0 * coshr0 / cosh(rho * s + r0)\n      ];\n    }\n  }\n\n  i.duration = S * 1000;\n\n  return i;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-interpolate/src/zoom.js\n// module id = null\n// module chunks = ","import {hsl as colorHsl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hsl(hue) {\n  return function(start, end) {\n    var h = hue((start = colorHsl(start)).h, (end = colorHsl(end)).h),\n        s = color(start.s, end.s),\n        l = color(start.l, end.l),\n        opacity = color(start.opacity, end.opacity);\n    return function(t) {\n      start.h = h(t);\n      start.s = s(t);\n      start.l = l(t);\n      start.opacity = opacity(t);\n      return start + \"\";\n    };\n  }\n}\n\nexport default hsl(hue);\nexport var hslLong = hsl(color);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-interpolate/src/hsl.js\n// module id = null\n// module chunks = ","import {lab as colorLab} from \"d3-color\";\nimport color from \"./color.js\";\n\nexport default function lab(start, end) {\n  var l = color((start = colorLab(start)).l, (end = colorLab(end)).l),\n      a = color(start.a, end.a),\n      b = color(start.b, end.b),\n      opacity = color(start.opacity, end.opacity);\n  return function(t) {\n    start.l = l(t);\n    start.a = a(t);\n    start.b = b(t);\n    start.opacity = opacity(t);\n    return start + \"\";\n  };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-interpolate/src/lab.js\n// module id = null\n// module chunks = ","import {hcl as colorHcl} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction hcl(hue) {\n  return function(start, end) {\n    var h = hue((start = colorHcl(start)).h, (end = colorHcl(end)).h),\n        c = color(start.c, end.c),\n        l = color(start.l, end.l),\n        opacity = color(start.opacity, end.opacity);\n    return function(t) {\n      start.h = h(t);\n      start.c = c(t);\n      start.l = l(t);\n      start.opacity = opacity(t);\n      return start + \"\";\n    };\n  }\n}\n\nexport default hcl(hue);\nexport var hclLong = hcl(color);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-interpolate/src/hcl.js\n// module id = null\n// module chunks = ","import {cubehelix as colorCubehelix} from \"d3-color\";\nimport color, {hue} from \"./color.js\";\n\nfunction cubehelix(hue) {\n  return (function cubehelixGamma(y) {\n    y = +y;\n\n    function cubehelix(start, end) {\n      var h = hue((start = colorCubehelix(start)).h, (end = colorCubehelix(end)).h),\n          s = color(start.s, end.s),\n          l = color(start.l, end.l),\n          opacity = color(start.opacity, end.opacity);\n      return function(t) {\n        start.h = h(t);\n        start.s = s(t);\n        start.l = l(Math.pow(t, y));\n        start.opacity = opacity(t);\n        return start + \"\";\n      };\n    }\n\n    cubehelix.gamma = cubehelixGamma;\n\n    return cubehelix;\n  })(1);\n}\n\nexport default cubehelix(hue);\nexport var cubehelixLong = cubehelix(color);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-interpolate/src/cubehelix.js\n// module id = null\n// module chunks = ","export default function piecewise(interpolate, values) {\n  var i = 0, n = values.length - 1, v = values[0], I = new Array(n < 0 ? 0 : n);\n  while (i < n) I[i] = interpolate(v, v = values[++i]);\n  return function(t) {\n    var i = Math.max(0, Math.min(n - 1, Math.floor(t *= n)));\n    return I[i](t - i);\n  };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-interpolate/src/piecewise.js\n// module id = null\n// module chunks = ","export default function(interpolator, n) {\n  var samples = new Array(n);\n  for (var i = 0; i < n; ++i) samples[i] = interpolator(i / (n - 1));\n  return samples;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-interpolate/src/quantize.js\n// module id = null\n// module chunks = ","export {default as interpolate} from \"./value.js\";\nexport {default as interpolateArray} from \"./array.js\";\nexport {default as interpolateBasis} from \"./basis.js\";\nexport {default as interpolateBasisClosed} from \"./basisClosed.js\";\nexport {default as interpolateDate} from \"./date.js\";\nexport {default as interpolateDiscrete} from \"./discrete.js\";\nexport {default as interpolateHue} from \"./hue.js\";\nexport {default as interpolateNumber} from \"./number.js\";\nexport {default as interpolateNumberArray} from \"./numberArray.js\";\nexport {default as interpolateObject} from \"./object.js\";\nexport {default as interpolateRound} from \"./round.js\";\nexport {default as interpolateString} from \"./string.js\";\nexport {interpolateTransformCss, interpolateTransformSvg} from \"./transform/index.js\";\nexport {default as interpolateZoom} from \"./zoom.js\";\nexport {default as interpolateRgb, rgbBasis as interpolateRgbBasis, rgbBasisClosed as interpolateRgbBasisClosed} from \"./rgb.js\";\nexport {default as interpolateHsl, hslLong as interpolateHslLong} from \"./hsl.js\";\nexport {default as interpolateLab} from \"./lab.js\";\nexport {default as interpolateHcl, hclLong as interpolateHclLong} from \"./hcl.js\";\nexport {default as interpolateCubehelix, cubehelixLong as interpolateCubehelixLong} from \"./cubehelix.js\";\nexport {default as piecewise} from \"./piecewise.js\";\nexport {default as quantize} from \"./quantize.js\";\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-interpolate/src/index.js\n// module id = null\n// module chunks = ","import 'styling/vapor/_Checkbox';\nimport { exportGlobally } from '../../GlobalExports';\nimport { $$ } from '../../utils/Dom';\nimport { IFormWidgetSelectable, IFormWidgetWithLabel } from './FormWidgets';\n\n/**\n * A checkbox widget with standard styling.\n */\nexport class Checkbox implements IFormWidgetWithLabel, IFormWidgetSelectable {\n  protected element: HTMLElement;\n  protected checkbox: HTMLInputElement;\n  private button: HTMLElement;\n  private ignoreNextChange = false;\n\n  static doExport = () => {\n    exportGlobally({\n      Checkbox: Checkbox\n    });\n  };\n\n  /**\n   * Creates a new `Checkbox`.\n   * @param onChange The function to call when the checkbox state changes. This function takes the current `Checkbox`\n   * instance as an argument.\n   * @param label The label to display next to the checkbox.\n   */\n  constructor(\n    public onChange: (checkbox: Checkbox) => void = (checkbox: Checkbox) => {},\n    public label: string,\n    public ariaLabel?: string,\n    public labelSuffix?: string\n  ) {\n    this.buildContent();\n  }\n\n  /**\n   * Toggles the checkbox state.\n   */\n  public toggle() {\n    this.checkbox.checked = !this.isSelected();\n    $$(this.checkbox).trigger('change');\n  }\n\n  /**\n   * Gets the element on which the checkbox is bound.\n   * @returns {HTMLElement} The checkbox element.\n   */\n  public getElement(): HTMLElement {\n    return this.element;\n  }\n\n  /**\n   * Gets the element on which the checkbox is bound.\n   * @returns {HTMLElement} The checkbox element.\n   */\n  public build(): HTMLElement {\n    return this.element;\n  }\n\n  /**\n   * Gets the checkbox [`label`]{@link Checkbox.label} value.\n   * @returns {string} The checkbox label value.\n   */\n  public getValue() {\n    return this.label;\n  }\n\n  /**\n   * Resets the checkbox.\n   */\n  public reset() {\n    const currentlyChecked = this.isSelected();\n    this.checkbox.checked = false;\n    if (currentlyChecked) {\n      $$(this.checkbox).trigger('change');\n    }\n  }\n\n  /**\n   * Select the checkbox\n   * @param triggerChange will trigger change even if specified and not already selected\n   */\n  public select(triggerChange = true) {\n    const currentlyChecked = this.isSelected();\n    this.checkbox.checked = true;\n    if (!currentlyChecked) {\n      this.ignoreNextChange = !triggerChange;\n      $$(this.checkbox).trigger('change');\n    }\n  }\n\n  /**\n   * Indicates whether the checkbox is checked.\n   * @returns {boolean} `true` if the checkbox is checked, `false` otherwise.\n   */\n  public isSelected() {\n    return this.checkbox.checked;\n  }\n\n  /**\n   * Gets the element on which the checkbox [`label`]{@link Checkbox.label} is bound.\n   * @returns {HTMLElement} The `label` element.\n   */\n  public getLabel() {\n    return this.element;\n  }\n\n  private buildContent() {\n    const label = $$('label', {\n      className: 'coveo-checkbox-label'\n    });\n\n    this.checkbox = <HTMLInputElement>$$('input', {\n      type: 'checkbox',\n      className: 'coveo-checkbox',\n      value: this.label,\n      ariaLabel: this.ariaLabel || this.label,\n      ariaHidden: true\n    }).el;\n    this.button = $$('button', {\n      type: 'button',\n      role: 'checkbox',\n      className: 'coveo-checkbox-button',\n      ariaLabel: this.ariaLabel || this.label,\n      ariaChecked: this.isSelected().toString()\n    }).el;\n    const labelSpan = $$('span', { className: 'coveo-checkbox-span-label' });\n    labelSpan.text(this.label);\n\n    const labelSuffixSpan = $$('span', { className: 'coveo-checkbox-span-label-suffix' });\n    labelSuffixSpan.text(this.labelSuffix);\n\n    label.append(this.checkbox);\n    label.append(this.button);\n    label.append(labelSpan.el);\n    this.labelSuffix && label.append(labelSuffixSpan.el);\n\n    $$(this.button).on('click', (e: Event) => {\n      e.preventDefault();\n      this.toggle();\n    });\n\n    $$(this.checkbox).on('change', () => {\n      this.updateAccessibilityAttributes();\n      if (!this.ignoreNextChange) {\n        this.onChange(this);\n      } else {\n        this.ignoreNextChange = false;\n      }\n    });\n    this.element = label.el;\n  }\n\n  private updateAccessibilityAttributes() {\n    this.button.setAttribute('aria-checked', this.isSelected().toString());\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/FormWidgets/Checkbox.ts","import { Template } from './Template';\nimport { Assert } from '../../misc/Assert';\nimport { UnderscoreTemplate } from './UnderscoreTemplate';\nimport { HtmlTemplate } from './HtmlTemplate';\nimport * as _ from 'underscore';\n\n/**\n * Holds a reference to all template available in the framework\n */\nexport class TemplateCache {\n  private static templates: { [templateName: string]: Template } = {};\n  private static templateNames: string[] = [];\n  private static resultListTemplateNames: string[] = [];\n  private static defaultTemplates: { [templateName: string]: Template } = {};\n\n  public static registerTemplate(\n    name: string,\n    template: Template,\n    publicTemplate?: boolean,\n    defaultTemplate?: boolean,\n    pageTemplate?: boolean\n  );\n  public static registerTemplate(\n    name: string,\n    template: (data: {}) => string,\n    publicTemplate?: boolean,\n    defaultTemplate?: boolean,\n    pageTemplate?: boolean\n  );\n  /**\n   * Register a new template in the framework, which will be available to render any results.\n   * @param name\n   * @param template\n   * @param publicTemplate\n   * @param defaultTemplate\n   * @param pageTemplate\n   */\n  public static registerTemplate(\n    name: string,\n    template: any,\n    publicTemplate: boolean = true,\n    defaultTemplate: boolean = false,\n    resultListTemplate: boolean = false\n  ) {\n    Assert.isNonEmptyString(name);\n    Assert.exists(template);\n    if (!(template instanceof Template)) {\n      template = new Template(template);\n    }\n    if (template.name == null) {\n      template.name = name;\n    }\n    TemplateCache.templates[name] = template;\n    if (publicTemplate && !_.contains(TemplateCache.templateNames, name)) {\n      TemplateCache.templateNames.push(name);\n    }\n\n    if (resultListTemplate && !_.contains(TemplateCache.resultListTemplateNames, name)) {\n      TemplateCache.resultListTemplateNames.push(name);\n    }\n\n    if (defaultTemplate) {\n      TemplateCache.defaultTemplates[name] = template;\n    }\n  }\n\n  /**\n   * Remove the given template from the cache.\n   * @param name\n   * @param string\n   */\n  public static unregisterTemplate(name) {\n    Assert.isNonEmptyString(name);\n    if (TemplateCache.templates[name] != undefined) {\n      delete TemplateCache.templates[name];\n    }\n    if (TemplateCache.defaultTemplates[name] != undefined) {\n      delete TemplateCache.defaultTemplates[name];\n    }\n  }\n\n  /**\n   * Return a template by its name/FacID.\n   * @param name\n   * @returns {Template}\n   */\n  public static getTemplate(name: string): Template {\n    // In some scenarios, the template we're trying to load might be somewhere in the page\n    // but we could not load it \"normally\" on page load (eg : UI was loaded with require js)\n    // Try a last ditch effort to scan the needed templates.\n    if (!TemplateCache.templates[name]) {\n      TemplateCache.scanAndRegisterTemplates();\n    }\n    Assert.exists(TemplateCache.templates[name]);\n    return TemplateCache.templates[name];\n  }\n\n  /**\n   * Get all templates currently registered in the framework.\n   * @returns {{}}\n   */\n  public static getTemplates(): { [templateName: string]: Template } {\n    return TemplateCache.templates;\n  }\n\n  /**\n   * Get all templates name currently registered in the framework.\n   * @returns {string[]}\n   */\n  public static getTemplateNames(): string[] {\n    return TemplateCache.templateNames;\n  }\n\n  /**\n   * Get all page templates name currently registered in the framework.\n   * @returns {string[]}\n   */\n  public static getResultListTemplateNames(): string[] {\n    return TemplateCache.resultListTemplateNames;\n  }\n\n  /**\n   * Get all the \"default\" templates in the framework.\n   * @returns {string[]}\n   */\n  public static getDefaultTemplates(): string[] {\n    return _.keys(TemplateCache.defaultTemplates);\n  }\n\n  /**\n   * Get a default template by name.\n   * @param name The name of the queried template\n   */\n  public static getDefaultTemplate(name: string): Template {\n    Assert.exists(TemplateCache.defaultTemplates[name]);\n    return TemplateCache.defaultTemplates[name];\n  }\n\n  static scanAndRegisterTemplates() {\n    // Here we take care not to scan for templates for which the base library\n    // is not available. Case in point: someone was using the JS UI on a page\n    // that was also using Handlebars, but our code was initialized before\n    // the Handlebars library (loaded through AMD).\n    if (UnderscoreTemplate.isLibraryAvailable()) {\n      TemplateCache.scanAndRegisterUnderscoreTemplates();\n    }\n    TemplateCache.scanAndRegisterHtmlTemplates();\n  }\n\n  private static scanAndRegisterUnderscoreTemplates() {\n    _.each(UnderscoreTemplate.mimeTypes, type => {\n      let scriptList = document.querySelectorAll(`script[id][type='${type}']`);\n      let i = scriptList.length;\n      let arr: HTMLElement[] = new Array(i);\n      while (i--) {\n        arr[i] = <HTMLElement>scriptList.item(i);\n      }\n      _.each(arr, (elem: HTMLElement) => {\n        let template = new UnderscoreTemplate(elem);\n        TemplateCache.registerTemplate(elem.getAttribute('id'), template);\n      });\n    });\n  }\n\n  private static scanAndRegisterHtmlTemplates() {\n    _.each(HtmlTemplate.mimeTypes, type => {\n      let scriptList = document.querySelectorAll(`script[id][type='${type}']`);\n      let i = scriptList.length;\n      let arr: HTMLElement[] = new Array(i);\n      while (i--) {\n        arr[i] = <HTMLElement>scriptList.item(i);\n      }\n\n      _.each(arr, (elem: HTMLElement) => {\n        let template = new HtmlTemplate(elem);\n        TemplateCache.registerTemplate(elem.getAttribute('id'), template);\n      });\n    });\n  }\n}\n\ndocument.addEventListener('DOMContentLoaded', () => {\n  TemplateCache.scanAndRegisterTemplates();\n});\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Templates/TemplateCache.ts","import { Utils } from './Utils';\nimport { IHighlight } from '../rest/Highlight';\nimport { Assert } from '../misc/Assert';\nimport * as _ from 'underscore';\nimport { $$ } from './Dom';\n\nexport interface IStringHole {\n  begin: number;\n  size: number;\n  replacementSize: number;\n}\n\nexport class StringAndHoles {\n  value: string;\n  holes: IStringHole[];\n\n  static SHORTEN_END: string = '...';\n  static WORD_SHORTER: number = 10;\n\n  static replace(str: string, find: string, replace: string): StringAndHoles {\n    const strAndHoles = new StringAndHoles();\n\n    if (Utils.isNullOrEmptyString(str)) {\n      return strAndHoles;\n    }\n\n    let index = str.lastIndexOf(find);\n    if (index == -1) {\n      strAndHoles.value = str;\n      return strAndHoles;\n    }\n\n    const holes: IStringHole[] = [];\n    while (index >= 0) {\n      const hole = <IStringHole>{\n        begin: index,\n        size: find.length,\n        replacementSize: replace.length\n      };\n      holes.push(hole);\n      str = str.slice(0, index) + replace + str.slice(index + find.length);\n      index = str.lastIndexOf(find);\n    }\n\n    strAndHoles.holes = holes;\n    strAndHoles.value = str;\n    return strAndHoles;\n  }\n\n  /**\n   * Shorten the passed path intelligently (path-aware).\n   * Works with *local paths* and *network paths*\n   * @param uriOrig The path to shorten\n   * @param length The length to which the path will be shortened.\n   */\n  static shortenPath(uriOrig: string, length: number): StringAndHoles {\n    const strAndHoles = new StringAndHoles();\n    let uri = uriOrig;\n    if (Utils.isNullOrEmptyString(uri) || uri.length <= length) {\n      strAndHoles.value = uri;\n      return strAndHoles;\n    }\n\n    const holes: IStringHole[] = [];\n\n    let first = -1;\n    if (Utils.stringStartsWith(uri, '\\\\\\\\')) {\n      first = uri.indexOf('\\\\', first + 2);\n    } else {\n      first = uri.indexOf('\\\\');\n    }\n\n    if (first !== -1) {\n      let removed = 0;\n      let next = uri.indexOf('\\\\', first + 1);\n      while (next !== -1 && uri.length - removed + StringAndHoles.SHORTEN_END.length > length) {\n        removed = next - first - 1;\n        next = uri.indexOf('\\\\', next + 1);\n      }\n\n      if (removed > 0) {\n        uri = uri.slice(0, first + 1) + StringAndHoles.SHORTEN_END + uri.slice(removed);\n        const hole = <IStringHole>{\n          begin: first + 1,\n          size: removed - StringAndHoles.SHORTEN_END.length,\n          replacementSize: StringAndHoles.SHORTEN_END.length\n        };\n        holes.push(hole);\n      }\n    }\n\n    if (uri.length > length) {\n      const over = uri.length - length + StringAndHoles.SHORTEN_END.length;\n      const start = uri.length - over;\n      uri = uri.slice(0, start) + StringAndHoles.SHORTEN_END;\n      const hole = <IStringHole>{\n        begin: start,\n        size: over,\n        replacementSize: StringAndHoles.SHORTEN_END.length\n      };\n      holes.push(hole);\n    }\n\n    strAndHoles.holes = holes;\n    strAndHoles.value = uri;\n    return strAndHoles;\n  }\n\n  /**\n   * Shorten the passed string.\n   * @param toShortenOrig The string to shorten\n   * @param length The length to which the string will be shortened.\n   * @param toAppend The string to append at the end (usually, it is set to '...')\n   */\n  static shortenString(toShortenOrig: string, length: number = 200, toAppend?: string): StringAndHoles {\n    const toShorten = toShortenOrig;\n    toAppend = Utils.toNotNullString(toAppend);\n    const strAndHoles = new StringAndHoles();\n    if (Utils.isNullOrEmptyString(toShorten) || length <= toAppend.length) {\n      strAndHoles.value = toShorten;\n      return strAndHoles;\n    }\n\n    if (toShorten.length <= length) {\n      strAndHoles.value = toShorten;\n      return strAndHoles;\n    }\n\n    let str = toShorten;\n\n    length = length - toAppend.length;\n    str = str.slice(0, length);\n\n    if (toShorten.charAt(str.length) !== ' ') {\n      const pos = str.lastIndexOf(' ');\n      if (pos !== -1 && str.length - pos < StringAndHoles.WORD_SHORTER) {\n        str = str.slice(0, pos);\n      }\n    }\n    const holes: IStringHole[] = [];\n    holes[0] = <IStringHole>{\n      begin: str.length,\n      size: toShorten.length - str.length,\n      replacementSize: toAppend.length\n    };\n    str += toAppend;\n    strAndHoles.value = str;\n    strAndHoles.holes = holes;\n    return strAndHoles;\n  }\n\n  /**\n   * Shorten the passed URI intelligently (path-aware).\n   * @param toShortenOrig The URI to shorten\n   * @param length The length to which the URI will be shortened.\n   */\n  static shortenUri(uri: string, length: number): StringAndHoles {\n    const strAndHoles = new StringAndHoles();\n    if (Utils.isNullOrEmptyString(uri) || uri.length <= length) {\n      strAndHoles.value = uri;\n      return strAndHoles;\n    }\n\n    const holes: IStringHole[] = [];\n\n    let first = uri.indexOf('//');\n    if (first !== -1) {\n      first = uri.indexOf('/', first + 2);\n    }\n\n    if (first !== -1) {\n      let removed = 0;\n      let next = uri.indexOf('/', first + 1);\n      while (next !== -1 && uri.length - removed + StringAndHoles.SHORTEN_END.length > length) {\n        removed = next - first - 1;\n        next = uri.indexOf('/', next + 1);\n      }\n\n      if (removed > 0) {\n        uri = uri.slice(0, first + 1) + StringAndHoles.SHORTEN_END + uri.slice(first + 1 + removed);\n        const hole = <IStringHole>{\n          begin: first + 1,\n          size: removed,\n          replacementSize: StringAndHoles.SHORTEN_END.length\n        };\n        holes.push(hole);\n      }\n    }\n\n    if (uri.length > length) {\n      const over = uri.length - length + StringAndHoles.SHORTEN_END.length;\n      const start = uri.length - over;\n      uri = uri.slice(0, start) + StringAndHoles.SHORTEN_END;\n      const hole = <IStringHole>{\n        begin: start,\n        size: over,\n        replacementSize: StringAndHoles.SHORTEN_END.length\n      };\n      holes.push(hole);\n    }\n\n    strAndHoles.holes = holes;\n    strAndHoles.value = uri;\n    return strAndHoles;\n  }\n}\n\nexport class HighlightUtils {\n  /**\n   * Highlight the passed string using specified highlights and holes.\n   * @param content The string to highlight items in.\n   * @param highlights The highlighted positions to highlight in the string.\n   * @param holes Possible holes which are used to skip highlighting.\n   * @param cssClass The css class to use on the highlighting `span`.\n   */\n  static highlightString(content: string, highlights: IHighlight[], holes: IStringHole[], cssClass: string): string {\n    Assert.isNotUndefined(highlights);\n    Assert.isNotNull(highlights);\n    Assert.isNonEmptyString(cssClass);\n    if (Utils.isNullOrEmptyString(content)) {\n      return content;\n    }\n    const maxIndex = content.length;\n    let highlighted = '';\n    let last = 0;\n    for (let i = 0; i < highlights.length; i++) {\n      const highlight = highlights[i];\n      let start: number = highlight.offset;\n      let end: number = start + highlight.length;\n\n      if (holes !== null) {\n        let skip = false;\n        for (let j = 0; j < holes.length; j++) {\n          const hole = holes[j];\n          const holeBegin = hole.begin;\n          const holeEnd = holeBegin + hole.size;\n          if (start < holeBegin && end >= holeBegin && end < holeEnd) {\n            end = holeBegin;\n          } else if (start >= holeBegin && end < holeEnd) {\n            skip = true;\n            break;\n          } else if (start >= holeBegin && start < holeEnd && end >= holeEnd) {\n            start = holeBegin + hole.replacementSize;\n            end -= hole.size - hole.replacementSize;\n          } else if (start < holeBegin && end >= holeEnd) {\n            end -= hole.size - hole.replacementSize;\n          } else if (start >= holeEnd) {\n            const offset = hole.size - hole.replacementSize;\n            start -= offset;\n            end -= offset;\n          }\n        }\n        if (skip || start === end) {\n          continue;\n        }\n      }\n\n      if (end > maxIndex) {\n        break;\n      }\n\n      highlighted += _.escape(content.slice(last, start));\n      highlighted += `<span class=\"${cssClass}\"`;\n      if (highlight.dataHighlightGroup) {\n        highlighted += ` data-highlight-group=\"${highlight.dataHighlightGroup.toString()}\"`;\n      }\n      if (highlight.dataHighlightGroupTerm) {\n        highlighted += ` data-highlight-group-term=\"${highlight.dataHighlightGroupTerm}\"`;\n      }\n      highlighted += '>';\n      highlighted += _.escape(content.slice(start, end));\n      highlighted += '</span>';\n\n      last = end;\n    }\n    if (last != maxIndex) {\n      highlighted += _.escape(content.slice(last));\n    }\n    return highlighted;\n  }\n\n  static highlight(text: string, match: string, className: string): HTMLElement[] {\n    const elements: HTMLElement[] = [];\n    const regex = RegExp(match, 'i');\n    const parts = text.split(regex);\n    const lastPart = parts.pop();\n\n    let index = 0;\n\n    parts.forEach(part => {\n      if (part) {\n        const unhighlighted = createSpanWithText(part);\n\n        elements.push(unhighlighted.el);\n        index += part.length;\n      }\n\n      const matchedSubstring = text.substring(index, index + match.length);\n      const highlighted = createSpanWithText(matchedSubstring);\n      highlighted.addClass(className);\n\n      elements.push(highlighted.el);\n      index += match.length;\n    });\n\n    if (lastPart) {\n      const last = createSpanWithText(lastPart);\n      elements.push(last.el);\n    }\n\n    return elements;\n  }\n}\n\nfunction createSpanWithText(text: string) {\n  const span = $$('span');\n  span.text(text);\n  return span;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/HighlightUtils.ts","import 'styling/_Facet';\nimport 'styling/_FacetFooter';\nimport * as _ from 'underscore';\nimport { FacetQueryController } from '../../controllers/FacetQueryController';\nimport { BreadcrumbEvents, IClearBreadcrumbEventArgs, IPopulateBreadcrumbEventArgs } from '../../events/BreadcrumbEvents';\nimport { IPopulateOmniboxEventArgs, OmniboxEvents } from '../../events/OmniboxEvents';\nimport { IDoneBuildingQueryEventArgs, INewQueryEventArgs, IQuerySuccessEventArgs, QueryEvents } from '../../events/QueryEvents';\nimport { ISearchAlertsPopulateMessageEventArgs, SearchAlertsEvents } from '../../events/SearchAlertEvents';\nimport { exportGlobally } from '../../GlobalExports';\nimport { Assert } from '../../misc/Assert';\nimport { Defer } from '../../misc/Defer';\nimport { IAttributesChangedEventArg, MODEL_EVENTS } from '../../models/Model';\nimport { IQueryStateExcludedAttribute, IQueryStateIncludedAttribute, QueryStateModel } from '../../models/QueryStateModel';\nimport { IIndexFieldValue } from '../../rest/FieldValue';\nimport { IStringMap } from '../../rest/GenericParam';\nimport { IGroupByResult } from '../../rest/GroupByResult';\nimport { IGroupByValue } from '../../rest/GroupByValue';\nimport { IQueryResults } from '../../rest/QueryResults';\nimport { ISearchEndpoint } from '../../rest/SearchEndpointInterface';\nimport { l } from '../../strings/Strings';\nimport { AccessibleButton } from '../../utils/AccessibleButton';\nimport { ComponentsTypes } from '../../utils/ComponentsTypes';\nimport {\n  DependsOnManager,\n  IDependentFacet,\n  IDependsOnCompatibleFacetOptions,\n  IDependentFacetCondition\n} from '../../utils/DependsOnManager';\nimport { DeviceUtils } from '../../utils/DeviceUtils';\nimport { $$, Win } from '../../utils/Dom';\nimport { SVGDom } from '../../utils/SVGDom';\nimport { SVGIcons } from '../../utils/SVGIcons';\nimport { Utils } from '../../utils/Utils';\nimport {\n  analyticsActionCauseList,\n  IAnalyticsActionCause,\n  IAnalyticsFacetMeta,\n  IAnalyticsFacetSortMeta\n} from '../Analytics/AnalyticsActionListMeta';\nimport { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { IFieldOption, IQueryExpression } from '../Base/IComponentOptions';\nimport { Initialization } from '../Base/Initialization';\nimport { IOmniboxDataRow } from '../Omnibox/OmniboxInterface';\nimport { IResponsiveComponentOptions } from '../ResponsiveComponents/ResponsiveComponentsManager';\nimport { ResponsiveFacetOptions } from '../ResponsiveComponents/ResponsiveFacetOptions';\nimport { ResponsiveFacets } from '../ResponsiveComponents/ResponsiveFacets';\nimport { BreadcrumbValueElement } from './BreadcrumbValueElement';\nimport { BreadcrumbValueList } from './BreadcrumbValuesList';\nimport { FacetHeader } from './FacetHeader';\nimport { FacetSearch } from './FacetSearch';\nimport { FacetSearchParameters } from './FacetSearchParameters';\nimport { FacetSearchValuesList } from './FacetSearchValuesList';\nimport { FacetSettings } from './FacetSettings';\nimport { FacetSort } from './FacetSort';\nimport { FacetSortCriterion } from './FacetSortCriterion';\nimport { FacetUtils } from './FacetUtils';\nimport { FacetValueElement } from './FacetValueElement';\nimport { FacetValue } from './FacetValue';\nimport { FacetValues, ISortFacetValuesOptions } from './FacetValues';\nimport { FacetValuesList } from './FacetValuesList';\nimport { FacetValuesOrder } from './FacetValuesOrder';\nimport { OmniboxValueElement } from './OmniboxValueElement';\nimport { OmniboxValuesList } from './OmniboxValuesList';\nimport { ValueElement } from './ValueElement';\nimport { ValueElementRenderer } from './ValueElementRenderer';\nimport { IFieldValueCompatibleFacet } from '../FieldValue/IFieldValueCompatibleFacet';\n\ntype ComputedFieldOperation = 'sum' | 'average' | 'minimum' | 'maximum';\ntype ComputedFieldFormat = 'c0' | 'n0' | 'n2';\n\nexport interface IFacetOptions extends IResponsiveComponentOptions, IDependsOnCompatibleFacetOptions {\n  title?: string;\n  field?: IFieldOption;\n  isMultiValueField?: boolean;\n  numberOfValues?: number;\n  pageSize?: number;\n  sortCriteria?: string;\n  availableSorts?: string[];\n  injectionDepth?: number;\n  showIcon?: boolean;\n  useAnd?: boolean;\n  enableCollapse?: boolean;\n  enableTogglingOperator?: boolean;\n  enableMoreLess?: boolean;\n  valueCaption?: any;\n  lookupField?: IFieldOption;\n  enableFacetSearch?: boolean;\n  facetSearchDelay?: number;\n  facetSearchIgnoreAccents?: boolean;\n  numberOfValuesInFacetSearch?: number;\n  includeInBreadcrumb?: boolean;\n  includeInOmnibox?: boolean;\n  numberOfValuesInOmnibox?: number;\n  numberOfValuesInBreadcrumb?: number;\n  computedField?: IFieldOption;\n  computedFieldOperation?: string;\n  computedFieldFormat?: string;\n  computedFieldCaption?: string;\n  preservePosition?: boolean;\n  scrollContainer?: HTMLElement;\n  paddingContainer?: HTMLElement;\n  customSort?: string[];\n  enableSettings?: boolean;\n  enableSettingsFacetState?: boolean;\n  allowedValues?: string[];\n  headerIcon?: string;\n  valueIcon?: (facetValue: FacetValue) => string;\n  additionalFilter?: IQueryExpression;\n  useWildcardsInFacetSearch?: boolean;\n}\n\n/**\n * The `Facet` component displays a *facet* of the results for the current query. A facet is a list of values for a\n * certain field occurring in the results, ordered using a configurable criteria (e.g., number of occurrences).\n *\n * The list of values is obtained using a [`GroupByRequest`]{@link IGroupByRequest} operation performed at the same time\n * as the main query.\n *\n * The `Facet` component allows the end user to drill down inside a result set by restricting the result to certain\n * field values. It also allows filtering out values from the facet itself, and can provide a search box to look for\n * specific values inside larger sets.\n *\n * This is probably the most complex component in the Coveo JavaScript Search Framework and as such, it allows for many\n * configuration options.\n *\n * See also the [`FacetRange`]{@link FacetRange} and [`TimespanFacet`]{@link TimespanFacet} components (which\n * extend this component), and the [`FacetSlider`]{@link FacetSlider} and [`CategoryFacet`]{@link CategoryFacet} components (which do not extend this\n * component, but are very similar).\n */\nexport class Facet extends Component implements IFieldValueCompatibleFacet {\n  static ID = 'Facet';\n  static omniboxIndex = 50;\n\n  static doExport = () => {\n    exportGlobally({\n      Facet: Facet,\n      FacetHeader: FacetHeader,\n      FacetSearchValuesList: FacetSearchValuesList,\n      FacetSettings: FacetSettings,\n      FacetSort: FacetSort,\n      FacetUtils: FacetUtils,\n      FacetValueElement: FacetValueElement,\n      FacetValue: FacetValue\n    });\n  };\n\n  /**\n   * The possible options for a facet\n   * @componentOptions\n   */\n  static options: IFacetOptions = {\n    /**\n     * Specifies the title to display at the top of the facet.\n     *\n     * Default value is the localized string for `NoTitle`.\n     */\n    title: ComponentOptions.buildLocalizedStringOption({\n      localizedString: () => l('NoTitle'),\n      section: 'CommonOptions',\n      priority: 10\n    }),\n    /**\n     * Specifies the index field whose values the facet should use.\n     *\n     * The field must of the `string` type.\n     *\n     * This requires the given field to be configured correctly in the index as a *Facet field* (see\n     * [Add or Edit Fields](https://docs.coveo.com/en/1982/)).\n     *\n     * Specifying a value for this option is required for the `Facet` component to work.\n     */\n    field: ComponentOptions.buildFieldOption({ required: true, groupByField: true, section: 'CommonOptions' }),\n    headerIcon: ComponentOptions.buildStringOption({\n      deprecated: 'This option is exposed for legacy reasons, and the recommendation is to not use this option.'\n    }),\n    /**\n     * Specifies a unique identifier for the facet. Among other things, this identifier serves the purpose of saving\n     * the facet state in the URL hash.\n     *\n     * If you have two facets with the same field on the same page, you should specify an `id` value for at least one of\n     * those two facets. This `id` must be unique among the facets.\n     *\n     * Non-word characters except - @ $ _ . + ! * ' ( ) , , ( `^a-zA-Z0-9-@$_.+!*'(),,]+` ) are automatically removed from the `id` value.\n     *\n     * Default value is the [`field`]{@link Facet.options.field} option value.\n     */\n    id: ComponentOptions.buildStringOption({\n      postProcessing: (value: string, options: IFacetOptions) => {\n        if (value) {\n          // All non-word characters, except @ (the default character that specifies a field in the index)\n          // and characters that do no need to be encoded in the URL : - @ $ _ . + ! * ' ( ) , ,\n          const modified = value.replace(/[^a-zA-Z0-9-@$_.+!*'(),,]+/g, '');\n          if (Utils.isNullOrEmptyString(modified)) {\n            return options.field as string;\n          }\n          return modified;\n        }\n        return options.field as string;\n      }\n    }),\n    /**\n     * Specifies whether the facet [`field`]{@link Facet.options.field} is configured in the index as a multi-value\n     * field (semicolon separated values such as `abc;def;ghi`).\n     *\n     * Default value is `false`.\n     */\n    isMultiValueField: ComponentOptions.buildBooleanOption({ defaultValue: false, section: 'CommonOptions' }),\n    /**\n     * Specifies the field whose values the Facet should display.\n     *\n     * @deprecated This option is exposed for legacy reasons. It is not recommended to use this option.\n     */\n    lookupField: ComponentOptions.buildFieldOption({\n      deprecated: 'This option is exposed for legacy reasons. It is not recommended to use this option.'\n    }),\n    /**\n     * Specifies whether to display the facet **Settings** menu.\n     *\n     * See also the [`enableSettingsFacetState`]{@link Facet.options.enableSettingsFacetState},\n     * [`availableSorts`]{@link Facet.options.availableSorts}, and\n     * [`enableCollapse`]{@link Facet.options.enableCollapse} options.\n     *\n     * **Note:**\n     * > The [`FacetRange`]{@link FacetRange} component does not support this option.\n     *\n     * Default value is `true`.\n     */\n    enableSettings: ComponentOptions.buildBooleanOption({ defaultValue: true, section: 'Sorting', priority: 9 }),\n    /**\n     * If the [`enableSettings`]{@link Facet.options.enableSettings} option is `true`, specifies whether the\n     * **Save state** menu option is available in the facet **Settings** menu.\n     *\n     * **Note:**\n     * > The [`FacetRange`]{@link FacetRange} component does not support this option.\n     *\n     * Default value is `false`.\n     */\n    enableSettingsFacetState: ComponentOptions.buildBooleanOption({ defaultValue: false, depend: 'enableSettings' }),\n    /**\n     * If the [`enableSettings`]{@link Facet.options.enableSettings} option is `true`, specifies the sort criteria\n     * options to display in the facet **Settings** menu.\n     *\n     * Possible values are:\n     * - `\"occurrences\"`\n     * - `\"score\"`\n     * - `\"alphaascending\"`\n     * - `\"alphadescending\"`\n     * - `\"computedfieldascending\"`\n     * - `\"computedfielddescending\"`\n     * - `\"custom\"`\n     *\n     * See {@link IGroupByRequest.sortCriteria} for a description of each possible value.\n     *\n     * **Notes:**\n     * > * The [`FacetRange`]{@link FacetRange} component does not support this option.\n     *\n     * > * Using value captions will disable alphabetical sorts (see the [valueCaption]{@link Facet.options.valueCaption} option).\n     *\n     * Default value is `occurrences,score,alphaascending,alphadescending`.\n     */\n    availableSorts: ComponentOptions.buildListOption<FacetSortCriterion>({\n      defaultValue: ['occurrences', 'score', 'alphaascending', 'alphadescending'],\n      section: 'Sorting',\n      depend: 'enableSettings',\n      values: [\n        'occurrences',\n        'score',\n        'alphaascending',\n        'alphadescending',\n        'computedfieldascending',\n        'computedfielddescending',\n        'chisquare',\n        'nosort'\n      ]\n    }),\n    /**\n     * Specifies the criteria to use to sort the facet values.\n     *\n     * See {@link IGroupByRequest.sortCriteria} for the list and description of possible values.\n     *\n     * Default value is the first sort criteria specified in the [`availableSorts`]{@link Facet.options.availableSorts}\n     * option, or `occurrences` if no sort criteria is specified.\n     */\n    sortCriteria: ComponentOptions.buildStringOption<FacetSortCriterion>({\n      postProcessing: (value, options: IFacetOptions) =>\n        value || (options.availableSorts.length > 0 ? (options.availableSorts[0] as FacetSortCriterion) : 'occurrences'),\n      section: 'Sorting'\n    }),\n    /**\n     * Specifies a custom order by which to sort the facet values.\n     *\n     * **Example:**\n     *\n     * You could use this option to specify a logical order for support tickets, such as:\n     * ```html\n     * <div class=\"CoveoFacet\" data-field=\"@ticketstatus\" data-title=\"Ticket Status\" data-tab=\"All\" data-custom-sort=\"New,Opened,Feedback,Resolved\"></div>\n     * ```\n     *\n     * **Note:**\n     * > The [`FacetRange`]{@link FacetRange} component does not support this option.\n     */\n    customSort: ComponentOptions.buildListOption<string>({ section: 'Sorting' }),\n    /**\n     * Specifies the maximum number of field values to display by default in the facet before the user\n     * clicks the arrow to show more.\n     *\n     * See also the [`enableMoreLess`]{@link Facet.options.enableMoreLess} option.\n     */\n    numberOfValues: ComponentOptions.buildNumberOption({ defaultValue: 5, min: 0, section: 'CommonOptions' }),\n    /**\n     * Specifies the *injection depth* to use for the [`GroupByRequest`]{@link IGroupByRequest} operation.\n     *\n     * The injection depth determines how many results to scan in the index to ensure that the facet lists all potential\n     * facet values. Increasing this value enhances the accuracy of the listed values at the cost of performance.\n     *\n     * Default value is `1000`. Minimum value is `1000`.\n     * @notSupportedIn salesforcefree\n     *\n     * @examples 1500\n     */\n    injectionDepth: ComponentOptions.buildNumberOption({ defaultValue: 1000, min: 1000 }),\n    showIcon: ComponentOptions.buildBooleanOption({\n      defaultValue: false,\n      deprecated: 'This option is exposed for legacy reasons. It is not recommended to use this option.'\n    }),\n    /**\n     * Specifies whether to use the `AND` operator in the resulting filter when multiple values are selected in the\n     * facet.\n     *\n     * Setting this option to `true` means that items must have all of the selected values to match the resulting\n     * query.\n     *\n     * Default value is `false`, which means that the filter uses the `OR` operator. Thus, by default, items must\n     * have at least one of the selected values to match the query.\n     */\n    useAnd: ComponentOptions.buildBooleanOption({ defaultValue: false, section: 'Filtering' }),\n    /**\n     * Specifies whether to allow the user to toggle between the `OR` and `AND` modes in the facet.\n     *\n     * Setting this option to `true` displays an icon in the top right corner of the facet. The user can click this icon\n     * to toggle between between the two modes.\n     *\n     * Default value is `false`.\n     */\n    enableTogglingOperator: ComponentOptions.buildBooleanOption({\n      defaultValue: false,\n      alias: 'allowTogglingOperator'\n    }),\n    /**\n     * Specifies whether to display a search box at the bottom of the facet for searching among the available facet\n     * [`field`]{@link Facet.options.field} values.\n     *\n     * See also the [`facetSearchDelay`]{@link Facet.options.facetSearchDelay},\n     * [`facetSearchIgnoreAccents`]{@link Facet.options.facetSearchIgnoreAccents}, and\n     * [`numberOfValuesInFacetSearch`]{@link Facet.options.numberOfValuesInFacetSearch} options.\n     *\n     * **Note:**\n     * > The [`FacetRange`]{@link FacetRange} component does not support this option.\n     *\n     * Default value is `true`.\n     */\n    enableFacetSearch: ComponentOptions.buildBooleanOption({ defaultValue: true, section: 'FacetSearch', priority: 8 }),\n    /**\n     * If the [`enableFacetSearch`]{@link Facet.options.enableFacetSearch} option is `true`, specifies the delay (in\n     * milliseconds) before sending a search request to the server when the user starts typing in the facet search box.\n     *\n     * Specifying a smaller value makes results appear faster. However, chances of having to cancel many requests\n     * sent to the server increase as the user keeps on typing new characters.\n     *\n     * **Note:**\n     * > The [`FacetRange`]{@link FacetRange} component does not support this option.\n     *\n     * Default value is `100`. Minimum value is `0`.\n     */\n    facetSearchDelay: ComponentOptions.buildNumberOption({ defaultValue: 100, min: 0, depend: 'enableFacetSearch' }),\n    /**\n     * If the [`enableFacetSearch`]{@link Facet.options.enableFacetSearch} option is `true`, specifies whether to ignore\n     * accents in the facet search box.\n     *\n     * **Note:**\n     * > The [`FacetRange`]{@link FacetRange} component does not support this option.\n     *\n     * Default value is `false`.\n     */\n    facetSearchIgnoreAccents: ComponentOptions.buildBooleanOption({ defaultValue: false, depend: 'enableFacetSearch' }),\n    /**\n     * If the [`enableFacetSearch`]{@link Facet.options.enableFacetSearch} option is `true`, specifies the number of v\n     * alues to display in the facet search results popup.\n     *\n     * **Note:**\n     * > The [`FacetRange`]{@link FacetRange} component does not support this option.\n     *\n     * Default value is `15`. Minimum value is `1`.\n     */\n    numberOfValuesInFacetSearch: ComponentOptions.buildNumberOption({ defaultValue: 15, min: 1, section: 'FacetSearch' }),\n    /**\n     * Specifies whether [wildcards]{@link AllowedValuesPatternType.wildcards} are used as the [allowedValuesPatternType]{@link IGroupByRequest.allowedValuesPatternType}\n     * in the [groupBy]{@link IGroupByRequest} for the facet search.\n     *\n     * Enabling this option returns results that end with the entered value. For example, searching for `veo` would match with `Coveo`.\n     *\n     * **Note:**\n     * > If you are experiencing slow facet search and/or timeouts when this option is set to `true`, consider enabling the **Use cache for nested queries**\n     * > option on your facet [field]{@link Facet.options.field} in the Coveo Cloud Admninistration Console (see [Add or Edit Fields]{@link https://docs.coveo.com/en/1982/}).\n     */\n    useWildcardsInFacetSearch: ComponentOptions.buildBooleanOption({ defaultValue: false, section: 'FacetSearch' }),\n    /**\n     * Specifies whether the facet should push data to the [`Breadcrumb`]{@link Breadcrumb} component.\n     *\n     * See also the [`numberOfValuesInBreadcrumb`]{@link Facet.options.numberOfValuesInBreadcrumb} option.\n     *\n     * Default value is `true`.\n     */\n    includeInBreadcrumb: ComponentOptions.buildBooleanOption({ defaultValue: true }),\n    /**\n     * If the [`includeInBreadcrumb`]{@link Facet.options.includeInBreadcrumb} option is `true`, specifies the maximum\n     * number of values that the facet should display in the [`Breadcrumb`]{@link Breadcrumb} before outputting a\n     * **more...** button.\n     *\n     * Default value is `5` on a desktop computer and `3` on a mobile device. Minimum value is `0`.\n     */\n    numberOfValuesInBreadcrumb: ComponentOptions.buildNumberOption({\n      defaultFunction: () => (DeviceUtils.isMobileDevice() ? 3 : 5),\n      min: 0,\n      depend: 'includeInBreadcrumb'\n    }),\n    /**\n     * Specifies whether the Facet should push data to the {@link Omnibox} component.\n     *\n     * See also {@link Facet.options.numberOfValuesInOmnibox}.\n     *\n     * Default value is `false`.\n     *\n     * @deprecated This option is exposed for legacy reasons. It is not recommended to use this option.\n     */\n    includeInOmnibox: ComponentOptions.buildBooleanOption({\n      defaultValue: false,\n      deprecated: 'This option is exposed for legacy reasons. It is not recommended to use this option.'\n    }),\n    /**\n     * When {@link Facet.options.includeInOmnibox} is `true`, specifies the number of values to populate the\n     * {@link Breadcrumb} with.\n     *\n     * Default value is `5` on desktop computer and `3` on a mobile device. Minimum value is `0`.\n     *\n     * @deprecated This option is exposed for legacy reasons. It is not recommended to use this option.\n     */\n    numberOfValuesInOmnibox: ComponentOptions.buildNumberOption({\n      defaultFunction: () => (DeviceUtils.isMobileDevice() ? 3 : 5),\n      min: 0,\n      depend: 'includeInOmnibox',\n      deprecated: 'This option is exposed for legacy reasons. It is not recommended to use this option.'\n    }),\n    /**\n     * Specifies the name of a field on which to execute an aggregate operation for all distinct values of the facet\n     * [`field`]{@link Facet.options.field}.\n     *\n     * The facet displays the result of the operation along with the number of occurrences for each value.\n     *\n     * You can use this option to compute the sum of a field (like a money amount) for each listed facet value.\n     *\n     * Works in conjunction with the [`computedFieldOperation`]{@link Facet.options.computedFieldOperation},\n     * [`computedFieldFormat`]{@link Facet.options.computedFieldFormat}, and\n     * [`computedFieldCaption`]{@link Facet.options.computedFieldCaption} options.\n     * @notSupportedIn salesforcefree\n     */\n    computedField: ComponentOptions.buildFieldOption({ priority: 7 }),\n    /**\n     * Specifies the type of aggregate operation to perform on the [`computedField`]{@link Facet.options.computedField}.\n     *\n     * The possible values are:\n     * - `sum` - Computes the sum of the computed field values.\n     * - `average` - Computes the average of the computed field values.\n     * - `minimum` - Finds the minimum value of the computed field values.\n     * - `maximum` - Finds the maximum value of the computed field values.\n     *\n     * Default value is `sum`.\n     * @notSupportedIn salesforcefree\n     */\n    computedFieldOperation: ComponentOptions.buildStringOption<ComputedFieldOperation>({\n      defaultValue: 'sum',\n      section: 'ComputedField'\n    }),\n    /**\n     * Specifies how to format the values resulting from a\n     * [`computedFieldOperation`]{@link Facet.options.computedFieldOperation}.\n     *\n     * The Globalize library defines all available formats (see\n     * [Globalize](https://github.com/klaaspieter/jquery-global#globalizeformat-value-format-culture-)).\n     *\n     * The most commonly used formats are:\n     * - `c0` - Formats the value as a currency.\n     * - `n0` - Formats the value as an integer.\n     * - `n2` - Formats the value as a floating point with 2 decimal digits.\n     *\n     * Default value is `\"c0\"`.\n     * @notSupportedIn salesforcefree\n     */\n    computedFieldFormat: ComponentOptions.buildStringOption<ComputedFieldFormat>({\n      defaultValue: 'c0',\n      section: 'ComputedField'\n    }),\n    /**\n     * Specifies what the caption of the [`computedField`]{@link Facet.options.computedField} should be in the facet\n     * **Settings** menu for sorting.\n     *\n     * For example, setting this option to `\"Money\"` will display `\"Money Ascending\"` for computed field ascending.\n     *\n     * **Note:**\n     * > The [`FacetRange`]{@link FacetRange} component does not support this option.\n     *\n     * Default value is the localized string for `ComputedField`.\n     * @notSupportedIn salesforcefree\n     */\n    computedFieldCaption: ComponentOptions.buildLocalizedStringOption({\n      localizedString: () => l('ComputedField'),\n      section: 'ComputedField'\n    }),\n    /**\n     * Specifies whether the facet should remain stable in its current position in the viewport while the mouse cursor\n     * is over it.\n     *\n     * Whenever the value selection changes in a facet, the search interface automatically performs a query. This new\n     * query might cause other elements in the page to resize themselves (typically, other facets above or below the\n     * one the user is interacting with).\n     *\n     * This option is responsible for adding the `<div class='coveo-topSpace'>` and\n     * `<div class='coveo-bottomSpace'>` around the Facet container. The Facet adjusts the scroll amount of the page to\n     * ensure that it does not move relatively to the mouse when the results are updated.\n     *\n     * In some cases, the facet also adds margins to the `scrollContainer`, if scrolling alone is not enough to\n     * preserve position.\n     *\n     * See also the [`paddingContainer`]{@link Facet.options.paddingContainer}, and\n     * [`scrollContainer`]{@link Facet.options.scrollContainer} options.\n     *\n     * Default value is `true`.\n     */\n    preservePosition: ComponentOptions.buildBooleanOption({ defaultValue: true }),\n    /**\n     * Specifies the parent container of the facets.\n     *\n     * Used by the [`preservePosition`]{@link Facet.options.preservePosition} option.\n     *\n     * Default value is `element.parentElement`.\n     */\n    paddingContainer: ComponentOptions.buildSelectorOption({\n      defaultFunction: element => {\n        const standardColumn = $$(element).parent('coveo-facet-column');\n        if (standardColumn != null) {\n          return standardColumn;\n        }\n        return element.parentElement;\n      }\n    }),\n    /**\n     * Specifies the HTML element (through a CSS selector) whose scroll amount the facet should adjust to preserve its\n     * position when results are updated.\n     *\n     * Used by the [`preservePosition`]{@link Facet.options.preservePosition} option.\n     *\n     * Default value is `document.body`.\n     */\n    scrollContainer: ComponentOptions.buildSelectorOption({ defaultFunction: element => document.body }),\n    /**\n     * Specifies whether to enable the **More** and **Less** buttons in the Facet.\n     *\n     * See also the [`pageSize`]{@link Facet.options.pageSize} option.\n     *\n     * **Note:**\n     * > The [`FacetRange`]{@link FacetRange} component does not support this option.\n     *\n     * Default value is `true`.\n     */\n    enableMoreLess: ComponentOptions.buildBooleanOption({ defaultValue: true }),\n    /**\n     * If the [`enableMoreLess`]{@link Facet.options.enableMoreLess} option is `true`, specifies the number of\n     * additional results to fetch when clicking the **More** button.\n     *\n     * **Note:**\n     * > The [`FacetRange`]{@link FacetRange} component does not support this option.\n     *\n     * Default value is `10`. Minimum value is `1`.\n     */\n    pageSize: ComponentOptions.buildNumberOption({ defaultValue: 10, min: 1, depend: 'enableMoreLess' }),\n    /**\n     * If the [`enableSettings`]{@link Facet.options.enableSettings} option is `true`, specifies whether the\n     * **Collapse \\ Expand** menu option is available in the facet **Settings** menu.\n     *\n     * **Note:**\n     * > The [`FacetRange`]{@link FacetRange} component does not support this option.\n     *\n     * Default value is `true`.\n     */\n    enableCollapse: ComponentOptions.buildBooleanOption({ defaultValue: true, depend: 'enableSettings' }),\n    /**\n     * Specifies an explicit list of [`allowedValues`]{@link IGroupByRequest.allowedValues} in the\n     * [`GroupByRequest`]{@link IGroupByRequest}.\n     *\n     * If you specify a list of values for this option, the facet uses only these values (if they are available in\n     * the current result set).\n     *\n     * **Example:**\n     *\n     * The following facet only uses the `Contact`, `Account`, and `File` values of the `@objecttype` field. Even if the\n     * current result set contains other `@objecttype` values, such as `Message`, or `Product`, the facet does not use\n     * those other values.\n     *\n     * ```html\n     *\n     * <div class=\"CoveoFacet\" data-field=\"@objecttype\" data-title=\"Object Type\" data-tab=\"All\" data-allowed-values=\"Contact,Account,File\"></div>\n     * ```\n     *\n     * Default value is `undefined`, and the facet uses all available values for its\n     * [`field`]{@link Facet.options.field} in the current result set.\n     */\n    allowedValues: ComponentOptions.buildListOption<string>(),\n    /**\n     * Specifies an additional query expression (query override) to add to each\n     * [`GroupByRequest`]{@link IGroupByRequest} that this facet performs.\n     *\n     * Example: `@date>=2014/01/01`\n     * @notSupportedIn salesforcefree\n     */\n    additionalFilter: ComponentOptions.buildQueryExpressionOption(),\n    /**\n     * Specifies whether this facet only appears when a value is selected in its \"parent\" facet.\n     *\n     * To specify the parent facet, use its [`id`]{@link Facet.options.id}.\n     *\n     * Remember that by default, a facet `id` value is the same as its [`field`]{@link Facet.options.field} option\n     * value.\n     *\n     * **Examples:**\n     *\n     * First case: the \"parent\" facet has no custom `id`:\n     * ```html\n     * <!-- \"Parent\" Facet: -->\n     * <div class='CoveoFacet' data-field='@myfield' data-title='My Parent Facet'></div>\n     *\n     * <!-- The \"dependent\" Facet must refer to the default `id` of its \"parent\" Facet, which is the name of its field. -->\n     * <div class='CoveoFacet' data-field='@myotherfield' data-title='My Dependent Facet' data-depends-on='@myfield'></div>\n     * ```\n     *\n     * Second case: the \"parent\" facet has a custom `id`:\n     * ```html\n     * <!-- \"Parent\" Facet: -->\n     * <div class='CoveoFacet' data-field='@myfield' data-title='My Parent Facet' data-id='myParentCustomId'></div>\n     *\n     * <!-- The \"dependent\" Facet must refer to the custom `id` of its \"parent\" Facet, which is 'myParentCustomId'. -->\n     * <div class='CoveoFacet' data-field='@myotherfield' data-title='My Dependent Facet' data-depends-on='myParentCustomId'></div>\n     * ```\n     *\n     * Default value is `undefined`\n     */\n    dependsOn: ComponentOptions.buildStringOption(),\n    /**\n     * A function that verifies whether the current state of the `dependsOn` facet allows the dependent facet to be displayed.\n     *\n     * If specified, the function receives a reference to the resolved `dependsOn` facet component instance as an argument, and must return a boolean.\n     * The function's argument should typically be treated as read-only.\n     *\n     * By default, the dependent facet is displayed whenever one or more values are selected in its `dependsOn` facet.\n     *\n     * @externaldocs [Defining Dependent Facets](https://docs.coveo.com/3210/)\n     */\n    dependsOnCondition: ComponentOptions.buildCustomOption<IDependentFacetCondition>(\n      () => {\n        return null;\n      },\n      { depend: 'dependsOn', section: 'CommonOptions' }\n    ),\n    /**\n     * Specifies a JSON object describing a mapping of facet values to their desired captions. See\n     * [Normalizing Facet Value Captions](https://docs.coveo.com/en/368/).\n     *\n     * **Examples:**\n     *\n     * You can set the option in the ['init']{@link init} call:\n     * ```javascript\n     * var myValueCaptions = {\n     *   \"txt\" : \"Text files\",\n     *   \"html\" : \"Web page\",\n     *   [ ... ]\n     * };\n     *\n     * Coveo.init(document.querySelector(\"#search\"), {\n     *   Facet : {\n     *     valueCaption : myValueCaptions\n     *   }\n     * });\n     * ```\n     *\n     * Or before the `init` call, using the ['options']{@link options} top-level function:\n     * ```javascript\n     * Coveo.options(document.querySelector(\"#search\"), {\n     *   Facet : {\n     *     valueCaption : myValueCaptions\n     *   }\n     * });\n     * ```\n     *\n     * Or directly in the markup:\n     * ```html\n     * <!-- Ensure that the double quotes are properly handled in data-value-caption. -->\n     * <div class='CoveoFacet' data-field='@myotherfield' data-value-caption='{\"txt\":\"Text files\",\"html\":\"Web page\"}'></div>\n     * ```\n     *\n     * **Note:**\n     * > Using value captions will disable alphabetical sorts (see the [availableSorts]{@link Facet.options.availableSorts} option).\n     */\n    valueCaption: ComponentOptions.buildJsonOption<IStringMap<string>>(),\n    ...ResponsiveFacetOptions\n  };\n\n  public facetQueryController: FacetQueryController;\n  public keepDisplayedValuesNextTime: boolean = false;\n  public values = new FacetValues();\n  public currentPage: number = 0;\n  public numberOfValues: number;\n  public firstQuery = true;\n  public operatorAttributeId: string;\n  public isFieldValueCompatible = true;\n  public isFieldValueHierarchical = false;\n\n  /**\n   * Renders and handles the facet **Search** part of the component.\n   */\n  public facetSearch: FacetSearch;\n\n  /**\n   * Renders and handles the facet **Settings** part of the component\n   */\n  public facetSettings: FacetSettings;\n  public facetSort: FacetSort;\n  public facetValuesList: FacetValuesList;\n  public facetHeader: FacetHeader;\n  public searchContainer: ValueElementRenderer;\n  public dependsOnManager: DependsOnManager;\n\n  protected omniboxZIndex;\n  protected moreElement: HTMLElement;\n  protected lessElement: HTMLElement;\n\n  protected headerElement: HTMLElement;\n  protected footerElement: HTMLElement;\n  private canFetchMore: boolean = true;\n  private nbAvailableValues: number;\n\n  private showingWaitAnimation = false;\n  private pinnedViewportPosition: number;\n  private unpinnedViewportPosition: number;\n  private pinnedTopSpace: HTMLElement;\n  private pinnedBottomSpace: HTMLElement;\n\n  private componentStateId: string;\n  private includedAttributeId: string;\n  private excludedAttributeId: string;\n  private lookupValueAttributeId: string;\n  private listenToQueryStateChange = true;\n\n  /**\n   * Creates a new `Facet` component. Binds multiple query events as well.\n   * @param element The HTMLElement on which to instantiate the component.\n   * @param options The options for the `Facet` component.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time).\n   * @param facetClassId The ID to use for this facet (as `Facet` inherited from by other component\n   * (e.g., [`FacetRange`]{@link FacetRange}). Default value is `Facet`.\n   */\n  constructor(public element: HTMLElement, public options: IFacetOptions, bindings?: IComponentBindings, facetClassId: string = Facet.ID) {\n    super(element, facetClassId, bindings);\n    this.options = ComponentOptions.initComponentOptions(element, Facet, options);\n\n    if (this.options.valueCaption != null) {\n      this.options.availableSorts = _.filter(this.options.availableSorts, (sort: string) => !/^alpha.*$/.test(sort));\n      this.logger.warn(`Because the ${this.options.field} facet is using value captions, alphabetical sorts are disabled.`);\n    }\n\n    ResponsiveFacets.init(this.root, this, this.options);\n\n    // Serves as a way to render facet in the omnibox in the order in which they are instantiated\n    this.omniboxZIndex = Facet.omniboxIndex;\n    Facet.omniboxIndex--;\n\n    this.checkForComputedFieldAndSort();\n    this.checkForValueCaptionType();\n    this.checkForCustomSort();\n    this.initDependsOnManager();\n    this.initFacetQueryController();\n    this.initQueryEvents();\n    this.initQueryStateEvents();\n    this.initComponentStateEvents();\n    this.initOmniboxEvents();\n    this.initBreadCrumbEvents();\n    this.initSearchAlertEvents();\n    this.updateNumberOfValues();\n\n    this.bind.oneRootElement(QueryEvents.querySuccess, () => {\n      this.firstQuery = false;\n    });\n  }\n\n  public setExpandedFacetSearchAccessibilityAttributes(searchResultsElement: HTMLElement) {\n    if (!this.searchContainer) {\n      return;\n    }\n    Assert.exists(searchResultsElement);\n    const { accessibleElement } = this.searchContainer;\n    accessibleElement.setAttribute('aria-expanded', true.toString());\n  }\n\n  public setCollapsedFacetSearchAccessibilityAttributes() {\n    if (!this.searchContainer) {\n      return;\n    }\n    this.searchContainer.accessibleElement.setAttribute('aria-expanded', false.toString());\n  }\n\n  public isCurrentlyDisplayed() {\n    if (!$$(this.element).isVisible()) {\n      return false;\n    }\n\n    if ($$(this.element).hasClass('coveo-active')) {\n      return true;\n    }\n\n    if ($$(this.element).hasClass('coveo-facet-empty')) {\n      return false;\n    }\n\n    return true;\n  }\n\n  public createDom() {\n    this.initBottomAndTopSpacer();\n    this.buildFacetContent();\n    this.updateAppearanceDependingOnState();\n    // After the facet has been created (and before the first query is applied)\n    // Try to load a state from the setting, if it's available\n    // Execute only _.once (only the first query, or the first time the user switch to a tab that contains a newly set of active facet)\n    if (this.facetSettings && this.options.enableSettingsFacetState) {\n      const loadOnce = <(args: INewQueryEventArgs) => any>_.once(() => {\n        this.facetSettings.loadSavedState.apply(this.facetSettings);\n      });\n      this.bind.onRootElement(QueryEvents.newQuery, loadOnce);\n    }\n  }\n\n  /**\n   * Selects a single value.\n   *\n   * Does not trigger a query automatically.\n   *\n   * @param value Can be a [`FacetValue`]{@link FacetValue} or a string (e.g., `selectValue('foobar')` or\n   * `selectValue(new FacetValue('foobar'))`).\n   */\n  public selectValue(value: FacetValue | string): void {\n    Assert.exists(value);\n    this.ensureDom();\n    this.logger.info('Selecting facet value', this.facetValuesList.select(value));\n    this.facetValueHasChanged();\n  }\n\n  /**\n   * Selects multiple values.\n   *\n   * Does not trigger a query automatically.\n   *\n   * @param values Can be an array of [`FacetValue`]{@link FacetValue} or an array of strings.\n   */\n  public selectMultipleValues(values: FacetValue[] | string[]): void {\n    Assert.exists(values);\n    this.ensureDom();\n    _.each(values as FacetValue[], value => {\n      this.logger.info('Selecting facet value', this.facetValuesList.select(value));\n    });\n    this.facetValueHasChanged();\n  }\n\n  /**\n   * Deselects a single value.\n   *\n   * Does not trigger a query automatically.\n   *\n   * @param value Can be a [`FacetValue`]{@link FacetValue} or a string (e.g., `deselectValue('foobar')` or\n   * `deselectValue(new FacetValue('foobar'))`).\n   */\n  public deselectValue(value: FacetValue | string): void {\n    Assert.exists(value);\n    this.ensureDom();\n    this.logger.info('Deselecting facet value', this.facetValuesList.unselect(value));\n    this.facetValueHasChanged();\n  }\n\n  /**\n   * Deselects multiple values.\n   *\n   * Does not trigger a query automatically.\n   *\n   * @param values Can be an array of [`FacetValue`]{@link FacetValue} or an array of strings.\n   */\n  public deselectMultipleValues(values: FacetValue[] | string[]): void {\n    Assert.exists(values);\n    this.ensureDom();\n    _.each(values as FacetValue[], value => {\n      this.logger.info('Deselecting facet value', this.facetValuesList.unselect(value));\n    });\n    this.facetValueHasChanged();\n  }\n\n  /**\n   * Excludes a single value.\n   *\n   * Does not trigger a query automatically.\n   *\n   * @param value Can be a [`FacetValue`]{@link FacetValue} or a string (e.g., `excludeValue('foobar')` or\n   * `excludeValue(new FacetValue('foobar'))`).\n   */\n  public excludeValue(value: FacetValue | string): void {\n    Assert.exists(value);\n    this.ensureDom();\n    this.logger.info('Excluding facet value', this.facetValuesList.exclude(value));\n    this.facetValueHasChanged();\n  }\n\n  /**\n   * Excludes multiple values.\n   *\n   * Does not trigger a query automatically.\n   *\n   * @param values Can be an array of [`FacetValue`]{@link FacetValue} or an array of strings.\n   */\n  public excludeMultipleValues(values: FacetValue[] | string[]): void {\n    Assert.exists(values);\n    this.ensureDom();\n    _.each(values as FacetValue[], value => {\n      this.logger.info('Excluding facet value', this.facetValuesList.exclude(value));\n    });\n    this.facetValueHasChanged();\n  }\n\n  /**\n   * Unexcludes a single value.\n   *\n   * Does not trigger a query automatically.\n   *\n   * @param value Can be a [`FacetValue`]{@link FacetValue} or a string.\n   */\n  public unexcludeValue(value: FacetValue | string): void {\n    Assert.exists(value);\n    this.ensureDom();\n    this.logger.info('Unexcluding facet value', this.facetValuesList.unExclude(value));\n    this.facetValueHasChanged();\n  }\n\n  /**\n   * Unexcludes multiple values.\n   *\n   * Does not trigger a query automatically.\n   *\n   * @param values Can be an array of [`FacetValue`]{@link FacetValue} or an array of strings.\n   */\n  public unexcludeMultipleValues(values: FacetValue[] | string[]): void {\n    Assert.exists(values);\n    this.ensureDom();\n    _.each(values as FacetValue[], value => {\n      this.logger.info('Unexcluding facet value', this.facetValuesList.unExclude(value));\n    });\n    this.facetValueHasChanged();\n  }\n\n  /**\n   * Toggles the selection state of a single value (selects the value if it is not already selected; un-selects the\n   * value if it is already selected).\n   *\n   * Does not trigger a query automatically.\n   * @param value Can be a [`FacetValue`]{@link FacetValue} or a string.\n   */\n  public toggleSelectValue(value: FacetValue | string): void {\n    Assert.exists(value);\n    this.ensureDom();\n    this.logger.info('Toggle select facet value', this.facetValuesList.toggleSelect(value));\n    this.facetValueHasChanged();\n  }\n\n  /**\n   * Toggles the exclusion state of a single value (excludes the value if it is not already excluded; un-excludes the\n   * value if it is already excluded).\n   *\n   * Does not trigger a query automatically.\n   *\n   * @param value Can be a [`FacetValue`]{@link FacetValue} or a string.\n   */\n  public toggleExcludeValue(value: FacetValue | string): void {\n    Assert.exists(value);\n    this.ensureDom();\n    this.logger.info('Toggle exclude facet value', this.facetValuesList.toggleExclude(value));\n    this.facetValueHasChanged();\n  }\n\n  /**\n   * Returns the currently displayed values as an array of strings.\n   *\n   * @returns {any[]} The currently displayed values.\n   */\n  public getDisplayedValues(): string[] {\n    return _.pluck(this.getDisplayedFacetValues(), 'value');\n  }\n\n  /**\n   * Returns the currently displayed values as an array of [`FacetValue`]{@link FacetValue}.\n   *\n   * @returns {T[]} The currently displayed values.\n   */\n  public getDisplayedFacetValues(): FacetValue[] {\n    this.ensureDom();\n    const displayed = this.facetValuesList.getAllCurrentlyDisplayed();\n    return _.map(displayed, (value: ValueElement) => {\n      return value.facetValue;\n    });\n  }\n\n  /**\n   * Returns the currently selected values as an array of strings.\n   * @returns {string[]} The currently selected values.\n   */\n  public getSelectedValues(): string[] {\n    this.ensureDom();\n    return _.map(this.values.getSelected(), (value: FacetValue) => value.value);\n  }\n\n  /**\n   * Determines whether the specified value is selected in the facet.\n   * @param value The name of the facet value to verify.\n   */\n  public hasSelectedValue(value: string) {\n    const facetValue = this.values.get(value);\n    return facetValue && facetValue.selected;\n  }\n\n  /**\n   * Returns the currently excluded values as an array of strings.\n   * @returns {string[]} The currently excluded values.\n   */\n  public getExcludedValues(): string[] {\n    this.ensureDom();\n    return _.map(this.values.getExcluded(), (value: FacetValue) => value.value);\n  }\n\n  /**\n   * Resets the facet by un-selecting all values, un-excluding all values, and redrawing the facet.\n   */\n  public reset(): void {\n    this.ensureDom();\n    this.values.reset();\n    this.rebuildValueElements();\n    this.updateAppearanceDependingOnState();\n    this.updateQueryStateModel();\n  }\n\n  /**\n   * Switches the facet to `AND` mode.\n   *\n   * See the [`useAnd`]{@link Facet.options.useAnd}, and\n   * [`enableTogglingOperator`]{@link Facet.options.enableTogglingOperator} options.\n   */\n  public switchToAnd(): void {\n    this.ensureDom();\n    this.logger.info('Switching to AND');\n    this.facetHeader.switchToAnd();\n  }\n\n  /**\n   * Switches the facet to `OR` mode.\n   *\n   * See the [`useAnd`]{@link Facet.options.useAnd}, and\n   * [`enableTogglingOperator`]{@link Facet.options.enableTogglingOperator} options.\n   */\n  public switchToOr(): void {\n    this.ensureDom();\n    this.logger.info('Switching to OR');\n    this.facetHeader.switchToOr();\n  }\n\n  /**\n   * Returns the endpoint for the facet.\n   * @returns {ISearchEndpoint} The endpoint for the facet.\n   */\n  public getEndpoint(): ISearchEndpoint {\n    return this.queryController.getEndpoint();\n  }\n\n  /**\n   * Changes the sort parameter for the facet.\n   *\n   * See {@link Facet.options.availableSorts} for the list of possible values.\n   *\n   * Also triggers a new query.\n   *\n   * @param criteria The new sort parameter for the facet.\n   */\n  public updateSort(criteria: string): void {\n    this.ensureDom();\n    if (this.options.sortCriteria != criteria) {\n      this.options.sortCriteria = criteria;\n      this.usageAnalytics.logCustomEvent<IAnalyticsFacetSortMeta>(\n        analyticsActionCauseList.facetUpdateSort,\n        {\n          criteria,\n          facetId: this.options.id,\n          facetField: this.options.field.toString(),\n          facetTitle: this.options.title\n        },\n        this.element\n      );\n      this.triggerNewQuery();\n    }\n  }\n\n  public unfadeInactiveValuesInMainList(): void {\n    $$(this.element).removeClass('coveo-facet-fade');\n  }\n\n  public fadeInactiveValuesInMainList(delay: number): void {\n    $$(this.element).addClass('coveo-facet-fade');\n  }\n\n  /**\n   * Shows a waiting animation in the facet header (a spinner).\n   */\n  public showWaitingAnimation() {\n    this.ensureDom();\n    if (!this.showingWaitAnimation) {\n      $$(this.headerElement).find('.coveo-facet-header-wait-animation').style.visibility = 'visible';\n      this.showingWaitAnimation = true;\n    }\n  }\n\n  /**\n   * Hides the waiting animation in the facet header.\n   */\n  public hideWaitingAnimation(): void {\n    this.ensureDom();\n    if (this.showingWaitAnimation) {\n      $$(this.headerElement).find('.coveo-facet-header-wait-animation').style.visibility = 'hidden';\n      this.showingWaitAnimation = false;\n    }\n  }\n\n  public processFacetSearchAllResultsSelected(facetValues: FacetValue[]): void {\n    const valuesForAnalytics = [];\n    _.each(facetValues, facetValue => {\n      this.ensureFacetValueIsInList(facetValue);\n      valuesForAnalytics.push(facetValue.value);\n    });\n    // Calculate the correct number of values from the current selected/excluded values (those will stay no matter what next rendering)\n    // add the new one that will be selected (and are not already selected in the facet)\n    // The minimum number of values is the number of values set in the option\n    const valuesThatStays = this.values.getSelected().concat(this.values.getExcluded());\n    this.numberOfValues = valuesThatStays.length + _.difference(valuesThatStays, facetValues).length;\n    this.numberOfValues = Math.max(this.numberOfValues, this.options.numberOfValues);\n\n    this.updateQueryStateModel();\n    this.triggerNewQuery(() =>\n      this.usageAnalytics.logSearchEvent<IAnalyticsFacetMeta>(analyticsActionCauseList.facetSelectAll, {\n        facetId: this.options.id,\n        facetField: this.options.field.toString(),\n        facetTitle: this.options.title\n      })\n    );\n  }\n\n  public pinFacetPosition() {\n    if (this.options.preservePosition) {\n      this.pinnedViewportPosition = this.element.getBoundingClientRect().top;\n    }\n  }\n\n  /**\n   * Returns the configured caption for the given [`FacetValue`]{@link FacetValue}.\n   *\n   * @param facetValue The `FacetValue` whose caption the method should return.\n   */\n  public getValueCaption(facetValue: IIndexFieldValue | FacetValue | string): string {\n    Assert.exists(facetValue);\n    const lookupValue = typeof facetValue === 'string' ? facetValue : facetValue.lookupValue || facetValue.value;\n    let ret = FacetUtils.tryToGetTranslatedCaption(<string>this.options.field, lookupValue);\n\n    if (Utils.exists(this.options.valueCaption)) {\n      if (typeof this.options.valueCaption == 'object') {\n        ret = this.options.valueCaption[lookupValue] || ret;\n      }\n      if (typeof this.options.valueCaption == 'function') {\n        const fv = facetValue instanceof FacetValue ? facetValue : FacetValue.create(facetValue);\n        const valueFromList = this.facetValuesList.get(fv).facetValue;\n        ret = this.options.valueCaption.call(this, valueFromList);\n      }\n    }\n    return ret;\n  }\n\n  /**\n   * Returns the configured caption for a desired facet value.\n   *\n   * @param value The string facet value whose caption the method should return.\n   */\n  public getCaptionForStringValue(value: string) {\n    Assert.exists(value);\n    return this.getValueCaption(value);\n  }\n\n  /**\n   * Shows the next page of results in the facet.\n   *\n   * See the [`enableMoreLess`]{@link Facet.options.enableMoreLess}, and [`pageSize`]{@link Facet.options.pageSize}\n   * options.\n   *\n   * Triggers a query if needed, or displays the already available values.\n   */\n  public showMore() {\n    this.currentPage = Math.floor((this.numberOfValues - this.options.numberOfValues) / this.options.pageSize) + 1;\n    this.updateNumberOfValues();\n    if (this.nbAvailableValues >= this.numberOfValues || !this.canFetchMore) {\n      this.rebuildValueElements();\n    } else {\n      this.triggerMoreQuery();\n    }\n  }\n\n  /**\n   * Shows less elements in the Facet (up to the original number of values).\n   *\n   * See the [`enableMoreLess`]{@link Facet.options.enableMoreLess}, and\n   * [`numberOfValues`]{@link Facet.options.numberOfValues} options.\n   */\n  public showLess() {\n    $$(this.lessElement).removeClass('coveo-active');\n    this.currentPage = 0;\n    this.updateNumberOfValues();\n    $$(this.moreElement).addClass('coveo-active');\n    this.values.sortValuesDependingOnStatus(this.numberOfValues);\n    this.rebuildValueElements();\n    this.logAnalyticsFacetShowMoreLess(analyticsActionCauseList.facetShowLess);\n  }\n\n  /**\n   * Collapses the facet.\n   */\n  public collapse() {\n    this.ensureDom();\n    if (this.facetHeader) {\n      this.facetHeader.collapseFacet();\n    }\n  }\n\n  /**\n   * Expands the facet.\n   */\n  public expand() {\n    this.ensureDom();\n    if (this.facetHeader) {\n      this.facetHeader.expandFacet();\n    }\n  }\n\n  public triggerNewQuery(beforeExecuteQuery?: () => void) {\n    if (!beforeExecuteQuery) {\n      this.queryController.executeQuery({ ignoreWarningSearchEvent: true });\n    } else {\n      this.queryController.executeQuery({ beforeExecuteQuery });\n    }\n    this.showWaitingAnimation();\n  }\n\n  protected handleDeferredQuerySuccess(data: IQuerySuccessEventArgs) {\n    Assert.exists(data);\n    this.unfadeInactiveValuesInMainList();\n    this.hideWaitingAnimation();\n    const groupByResult = data.results.groupByResults[this.facetQueryController.lastGroupByRequestIndex];\n    this.facetQueryController.lastGroupByResult = groupByResult;\n    // Two corner case to handle regarding the \"sticky\" aspect of facets :\n    // 1) The group by is empty (so there is nothing to \"sticky\")\n    // 2) There is only one value displayed currently, so there is nothing to \"sticky\" either\n    if (!groupByResult) {\n      this.keepDisplayedValuesNextTime = false;\n    }\n    if (this.values.getAll().length == 1) {\n      this.keepDisplayedValuesNextTime = false;\n    }\n    this.processNewGroupByResults(groupByResult);\n  }\n\n  protected handleQueryError() {\n    this.updateValues(new FacetValues());\n    this.updateAppearanceDependingOnState();\n    this.hideWaitingAnimation();\n  }\n\n  protected handlePopulateBreadcrumb(args: IPopulateBreadcrumbEventArgs) {\n    Assert.exists(args);\n\n    if (this.values.hasSelectedOrExcludedValues()) {\n      const element = new BreadcrumbValueList(this, this.values.getSelected().concat(this.values.getExcluded()), BreadcrumbValueElement, {\n        headingLevel: args.headingLevel\n      }).build();\n      args.breadcrumbs.push({ element: element });\n    }\n  }\n\n  protected handlePopulateSearchAlerts(args: ISearchAlertsPopulateMessageEventArgs) {\n    if (this.values.hasSelectedOrExcludedValues()) {\n      const excludedValues = this.values.getExcluded();\n      const selectedValues = this.values.getSelected();\n\n      if (!_.isEmpty(excludedValues)) {\n        args.text.push({\n          value: new BreadcrumbValueList(this, excludedValues, BreadcrumbValueElement).buildAsString(),\n          lineThrough: true\n        });\n      }\n\n      if (!_.isEmpty(selectedValues)) {\n        args.text.push({\n          value: new BreadcrumbValueList(this, selectedValues, BreadcrumbValueElement).buildAsString(),\n          lineThrough: false\n        });\n      }\n    }\n  }\n\n  protected initFacetQueryController() {\n    this.facetQueryController = new FacetQueryController(this);\n  }\n\n  protected initFacetValuesList() {\n    this.facetValuesList = new FacetValuesList(this, FacetValueElement);\n    this.element.appendChild(this.facetValuesList.build());\n  }\n\n  protected initFacetSearch() {\n    this.facetSearch = new FacetSearch(this, FacetSearchValuesList, this.root);\n    this.element.appendChild(this.facetSearch.build());\n  }\n\n  protected facetValueHasChanged() {\n    this.updateQueryStateModel();\n    this.rebuildValueElements();\n    Defer.defer(() => {\n      this.updateAppearanceDependingOnState();\n    });\n  }\n\n  protected updateAppearanceDependingOnState() {\n    $$(this.element).toggleClass('coveo-active', this.values.hasSelectedOrExcludedValues());\n    $$(this.element).toggleClass('coveo-facet-empty', !this.isAnyValueCurrentlyDisplayed());\n    $$(this.facetHeader.eraserElement).toggleClass('coveo-facet-header-eraser-visible', this.values.hasSelectedOrExcludedValues());\n  }\n\n  protected initQueryEvents() {\n    this.bind.onRootElement(QueryEvents.duringQuery, () => this.handleDuringQuery());\n    this.bind.onRootElement(QueryEvents.buildingQuery, (args: IDoneBuildingQueryEventArgs) => this.handleBuildingQuery(args));\n    this.bind.onRootElement(QueryEvents.doneBuildingQuery, (args: IDoneBuildingQueryEventArgs) => this.handleDoneBuildingQuery(args));\n    this.bind.onRootElement(QueryEvents.deferredQuerySuccess, (args: IQuerySuccessEventArgs) => this.handleDeferredQuerySuccess(args));\n    this.bind.onRootElement(QueryEvents.queryError, () => this.handleQueryError());\n  }\n\n  protected initQueryStateEvents() {\n    this.includedAttributeId = QueryStateModel.getFacetId(this.options.id);\n    this.excludedAttributeId = QueryStateModel.getFacetId(this.options.id, false);\n    this.operatorAttributeId = QueryStateModel.getFacetOperator(this.options.id);\n    this.lookupValueAttributeId = QueryStateModel.getFacetLookupValue(this.options.id);\n\n    this.queryStateModel.registerNewAttribute(this.includedAttributeId, []);\n    this.queryStateModel.registerNewAttribute(this.excludedAttributeId, []);\n    this.queryStateModel.registerNewAttribute(this.operatorAttributeId, '');\n    this.queryStateModel.registerNewAttribute(this.lookupValueAttributeId, {});\n\n    this.bind.onQueryState(MODEL_EVENTS.CHANGE, undefined, (args: IAttributesChangedEventArg) => this.handleQueryStateChanged(args));\n  }\n\n  protected initComponentStateEvents() {\n    this.componentStateId = QueryStateModel.getFacetId(this.options.id);\n    this.componentStateModel.registerComponent(this.componentStateId, this);\n  }\n\n  protected initOmniboxEvents() {\n    if (this.options.includeInOmnibox) {\n      this.bind.onRootElement(OmniboxEvents.populateOmnibox, (args: IPopulateOmniboxEventArgs) => this.handlePopulateOmnibox(args));\n    }\n  }\n\n  protected initBreadCrumbEvents() {\n    if (this.options.includeInBreadcrumb) {\n      this.bind.onRootElement(BreadcrumbEvents.populateBreadcrumb, (args: IPopulateBreadcrumbEventArgs) =>\n        this.handlePopulateBreadcrumb(args)\n      );\n      this.bind.onRootElement(BreadcrumbEvents.clearBreadcrumb, (args: IClearBreadcrumbEventArgs) => this.handleClearBreadcrumb());\n    }\n  }\n\n  protected initSearchAlertEvents() {\n    this.bind.onRootElement(SearchAlertsEvents.searchAlertsPopulateMessage, (args: ISearchAlertsPopulateMessageEventArgs) =>\n      this.handlePopulateSearchAlerts(args)\n    );\n  }\n\n  protected handleOmniboxWithStaticValue(eventArg: IPopulateOmniboxEventArgs) {\n    const regex = new RegExp('^' + eventArg.completeQueryExpression.regex.source, 'i');\n    const match = _.first(\n      _.filter(this.getDisplayedValues(), (displayedValue: string) => {\n        const value = this.getValueCaption(this.facetValuesList.get(displayedValue).facetValue);\n        return regex.test(value);\n      }),\n      this.options.numberOfValuesInOmnibox\n    );\n    const facetValues = _.map(match, (gotAMatch: string) => {\n      return this.facetValuesList.get(gotAMatch).facetValue;\n    });\n    const element = new OmniboxValuesList(this, facetValues, eventArg, OmniboxValueElement).build();\n    eventArg.rows.push({ element: element, zIndex: this.omniboxZIndex });\n  }\n\n  protected processNewGroupByResults(groupByResult: IGroupByResult) {\n    this.logger.trace('Displaying group by results', groupByResult);\n    if (groupByResult != undefined && groupByResult.values != undefined) {\n      this.nbAvailableValues = groupByResult.values.length;\n    }\n    const newFacetValues = new FacetValues(groupByResult);\n    this.updateValues(newFacetValues);\n    this.canFetchMore = this.numberOfValues < this.nbAvailableValues;\n\n    if (this.values.hasSelectedOrExcludedValues() && !this.options.useAnd && this.options.isMultiValueField) {\n      this.triggerUpdateDeltaQuery(\n        _.filter(this.values.getAll(), (facetValue: FacetValue) => {\n          return !facetValue.selected && !facetValue.excluded;\n        })\n      );\n    } else if (this.values.getSelected().length > 0 && !this.options.useAnd) {\n      this.values.updateDeltaWithFilteredFacetValues(new FacetValues(), this.options.isMultiValueField);\n    }\n    if (!this.values.hasSelectedOrExcludedValues() || this.options.useAnd || !this.options.isMultiValueField) {\n      this.rebuildValueElements();\n      this.updateAppearanceDependingOnState();\n      this.ensurePinnedFacetHasntMoved();\n    }\n    this.keepDisplayedValuesNextTime = false;\n  }\n\n  protected updateQueryStateModel() {\n    this.listenToQueryStateChange = false;\n    this.updateExcludedQueryStateModel();\n    this.updateIncludedQueryStateModel();\n    this.facetHeader.updateOperatorQueryStateModel();\n    this.updateLookupValueQueryStateModel();\n    this.listenToQueryStateChange = true;\n  }\n\n  protected rebuildValueElements() {\n    this.updateNumberOfValues();\n    this.facetValuesList.rebuild(this.numberOfValues);\n    if (this.shouldRenderMoreLess()) {\n      this.updateMoreLess();\n      if (this.shouldRenderFacetSearch()) {\n        this.updateSearchElement(this.nbAvailableValues > this.numberOfValues);\n      }\n    } else if (this.shouldRenderFacetSearch()) {\n      this.updateSearchElement();\n    }\n  }\n\n  protected updateSearchElement(moreValuesAvailable = true) {\n    if (!moreValuesAvailable) {\n      return;\n    }\n\n    const renderer = new ValueElementRenderer(this, FacetValue.create(l('Search')));\n    this.searchContainer = renderer.build().withNo([renderer.excludeIcon, renderer.icon]);\n    $$(this.searchContainer.listItem).addClass('coveo-facet-search-button');\n\n    new AccessibleButton()\n      .withElement(this.searchContainer.accessibleElement)\n      .withLabel(l('SearchFacetResults', this.options.title))\n      .withEnterKeyboardAction(e => this.toggleSearchMenu(e))\n      .build();\n\n    this.setCollapsedFacetSearchAccessibilityAttributes();\n\n    // Mobile do not like label. Use click event\n    if (DeviceUtils.isMobileDevice()) {\n      $$(this.searchContainer.label).on('click', e => this.toggleSearchMenu(e));\n    }\n\n    $$(this.searchContainer.checkbox).on('change', () => {\n      $$(this.element).addClass('coveo-facet-searching');\n      this.facetSearch.focus();\n    });\n    this.facetValuesList.valueContainer.appendChild(this.searchContainer.listItem);\n  }\n\n  protected updateMoreLess(\n    lessElementIsShown = this.getMinimumNumberOfValuesToDisplay() < this.numberOfValues,\n    moreValuesAvailable = this.nbAvailableValues > this.numberOfValues\n  ) {\n    if (lessElementIsShown) {\n      $$(this.lessElement).addClass('coveo-active');\n    } else {\n      $$(this.lessElement).removeClass('coveo-active');\n    }\n\n    if (moreValuesAvailable) {\n      $$(this.moreElement).addClass('coveo-active');\n    } else {\n      $$(this.moreElement).removeClass('coveo-active');\n    }\n\n    if (lessElementIsShown || moreValuesAvailable) {\n      $$(this.footerElement).removeClass('coveo-facet-empty');\n    } else {\n      $$(this.footerElement).addClass('coveo-facet-empty');\n    }\n  }\n\n  protected handleClickMore(): void {\n    this.showMore();\n  }\n\n  protected handleClickLess() {\n    this.showLess();\n  }\n\n  private toggleSearchMenu(e: Event) {\n    const searchButton = this.searchContainer;\n\n    if (searchButton.checkbox.getAttribute('checked')) {\n      searchButton.checkbox.removeAttribute('checked');\n    } else {\n      searchButton.checkbox.setAttribute('checked', 'checked');\n    }\n\n    $$(searchButton.checkbox).trigger('change');\n\n    e.stopPropagation();\n    e.preventDefault();\n  }\n\n  private checkForComputedFieldAndSort() {\n    if (this.options.sortCriteria.toLowerCase().indexOf('computedfield') != -1 && Utils.isNullOrUndefined(this.options.computedField)) {\n      this.logger.warn(\n        'Sort criteria is specified as ComputedField, but the facet uses no computed field. Facet will always be empty !',\n        this\n      );\n    }\n  }\n\n  private checkForValueCaptionType() {\n    if (this.options.valueCaption && typeof this.options.valueCaption == 'function') {\n      this.options.enableFacetSearch = false;\n      this.options.includeInOmnibox = false;\n      this.logger.warn(\n        'Using a function as valueCaption is now deprecated. Use a json key value pair instead. Facet search and omnibox has been disabled for this facet',\n        this\n      );\n    }\n  }\n\n  private checkForCustomSort() {\n    if (this.options.customSort != undefined && !_.contains(this.options.availableSorts, 'custom')) {\n      this.options.availableSorts.unshift('custom');\n    }\n    if (this.options.availableSorts[0] == 'custom') {\n      this.options.sortCriteria = 'nosort';\n    }\n  }\n\n  private initDependsOnManager() {\n    const facetInfo: IDependentFacet = {\n      reset: () => this.reset(),\n      ref: this\n    };\n    this.dependsOnManager = new DependsOnManager(facetInfo);\n  }\n\n  private dependsOnUpdateParentDisplayValue() {\n    if (!this.options.dependsOn) {\n      return;\n    }\n\n    const masterFacetComponent = ComponentsTypes.getAllFacetInstancesFromElement(this.root).filter((cmp: Facet) => {\n      const idFacet = cmp instanceof Facet;\n      return idFacet && cmp.options.id === this.options.dependsOn;\n    }) as Facet[];\n\n    if (!masterFacetComponent.length) {\n      this.logger.warn(\n        `Unable to find a Facet with the id or field \"${this.options.dependsOn}\".`,\n        `The master facet values can't be updated.`\n      );\n      return;\n    }\n    if (masterFacetComponent.length > 1) {\n      this.logger.warn(\n        `Multiple facets with id \"${this.options.dependsOn}\" found.`,\n        `A given facet may only depend on a single other facet.`,\n        `Ensure that each facet in your search interface has a unique id.`,\n        `The master facet cannot be updated.`,\n        masterFacetComponent\n      );\n      return;\n    }\n    const masterFacet = masterFacetComponent[0];\n    masterFacet.keepDisplayedValuesNextTime = false;\n  }\n\n  private initBottomAndTopSpacer() {\n    const bottomSpace = $$(this.options.paddingContainer).find('.coveo-bottomSpace');\n    const topSpace = $$(this.options.paddingContainer).find('.coveo-topSpace');\n    if (this.options.preservePosition) {\n      $$(this.options.paddingContainer).on('mouseleave', () => this.unpinFacetPosition());\n\n      this.pinnedTopSpace = topSpace;\n      this.pinnedBottomSpace = bottomSpace;\n\n      if (!this.pinnedTopSpace) {\n        this.pinnedTopSpace = document.createElement('div');\n        $$(this.pinnedTopSpace).addClass('coveo-topSpace');\n        $$(this.pinnedTopSpace).insertBefore(<HTMLElement>this.options.paddingContainer.firstChild);\n      }\n      if (!this.pinnedBottomSpace) {\n        this.pinnedBottomSpace = document.createElement('div');\n        $$(this.pinnedBottomSpace).addClass('coveo-bottomSpace');\n        this.options.paddingContainer.appendChild(this.pinnedBottomSpace);\n      }\n    }\n  }\n\n  private updateIncludedQueryStateModel() {\n    const selectedValues: IQueryStateIncludedAttribute = { included: this.getSelectedValues(), title: this.includedAttributeId };\n    this.queryStateModel.set(this.includedAttributeId, selectedValues.included);\n  }\n\n  private updateExcludedQueryStateModel() {\n    const excludedValues: IQueryStateExcludedAttribute = { title: this.excludedAttributeId, excluded: this.getExcludedValues() };\n\n    this.queryStateModel.set(this.excludedAttributeId, excludedValues.excluded);\n  }\n\n  private updateLookupValueQueryStateModel() {\n    if (this.options.lookupField) {\n      const valueToSet = {};\n      _.each(this.values.getSelected().concat(this.values.getExcluded()), value => {\n        valueToSet[value.value] = value.lookupValue;\n      });\n      this.queryStateModel.set(this.lookupValueAttributeId, valueToSet);\n    }\n  }\n\n  private handleQueryStateChangedOperator(operator: string) {\n    if (operator == 'and') {\n      this.switchToAnd();\n    } else if (operator == 'or') {\n      this.switchToOr();\n    }\n  }\n\n  private handleQueryStateChangedIncluded(includedChanged) {\n    const toUnSelect = _.difference(this.getSelectedValues(), includedChanged);\n    if (Utils.isNonEmptyArray(toUnSelect)) {\n      this.deselectMultipleValues(toUnSelect);\n    }\n    if (!Utils.arrayEqual(this.getSelectedValues(), includedChanged, false)) {\n      this.selectMultipleValues(includedChanged);\n    }\n  }\n\n  private handleQueryStateChangedExcluded(excludedChanged) {\n    const toUnExclude = _.difference(this.getExcludedValues(), excludedChanged);\n    if (Utils.isNonEmptyArray(toUnExclude)) {\n      this.unexcludeMultipleValues(toUnExclude);\n    }\n    if (!Utils.arrayEqual(this.getExcludedValues(), excludedChanged, false)) {\n      this.excludeMultipleValues(excludedChanged);\n    }\n  }\n\n  private handleLookupvalueChanged(lookupFieldChanged: { [value: string]: string }) {\n    _.each(lookupFieldChanged, (lookupvalue, value) => {\n      this.facetValuesList.get(decodeURIComponent(value)).facetValue.lookupValue = decodeURIComponent(lookupvalue);\n    });\n  }\n\n  private handleQueryStateChanged(data: IAttributesChangedEventArg) {\n    Assert.exists(data);\n    this.ensureDom();\n    this.dependsOnUpdateParentDisplayValue();\n    const trimValuesFromModel = (values?: string[]) => {\n      if (values) {\n        values = _.map(values, value => value.trim());\n      }\n      return values;\n    };\n\n    const queryStateAttributes: IStringMap<any> = data.attributes;\n    let includedChanged: string[] = trimValuesFromModel(queryStateAttributes[this.includedAttributeId]);\n    let excludedChanged: string[] = trimValuesFromModel(queryStateAttributes[this.excludedAttributeId]);\n    const operator: string = queryStateAttributes[this.operatorAttributeId];\n    const lookupValueChanged: IStringMap<string> = queryStateAttributes[this.lookupValueAttributeId];\n\n    if (this.listenToQueryStateChange) {\n      if (!Utils.isNullOrEmptyString(operator)) {\n        this.handleQueryStateChangedOperator(operator);\n      }\n      if (!Utils.isNullOrUndefined(includedChanged)) {\n        this.handleQueryStateChangedIncluded(includedChanged);\n      }\n      if (!Utils.isNullOrUndefined(excludedChanged)) {\n        this.handleQueryStateChangedExcluded(excludedChanged);\n      }\n      if (!Utils.isNullOrUndefined(lookupValueChanged)) {\n        this.handleLookupvalueChanged(lookupValueChanged);\n      }\n    }\n  }\n\n  private handlePopulateOmnibox(data: IPopulateOmniboxEventArgs) {\n    Assert.exists(data);\n    Assert.exists(data.completeQueryExpression);\n\n    // The omnibox calls can come in before a first query was executed (atypical, but\n    // if no query is auto-triggered on initialization). To ensure that we've got the\n    // proper filters, we ensure that at least a dumbshow query builder run occured\n    // before proceeding.\n    this.queryController.ensureCreatedQueryBuilder();\n\n    if (this.canFetchMore) {\n      this.handleOmniboxWithSearchInFacet(data);\n    } else {\n      this.handleOmniboxWithStaticValue(data);\n    }\n  }\n\n  private handleOmniboxWithSearchInFacet(eventArg: IPopulateOmniboxEventArgs) {\n    const regex = new RegExp('^' + eventArg.completeQueryExpression.regex.source, 'i');\n\n    const promise = new Promise<IOmniboxDataRow>((resolve, reject) => {\n      const searchParameters = new FacetSearchParameters(this);\n      searchParameters.setValueToSearch(eventArg.completeQueryExpression.word);\n      searchParameters.nbResults = this.options.numberOfValuesInOmnibox;\n      this.facetQueryController\n        .search(searchParameters)\n        .then(fieldValues => {\n          const facetValues = _.map(\n            _.filter(fieldValues, (fieldValue: IIndexFieldValue) => {\n              return regex.test(fieldValue.lookupValue);\n            }),\n            fieldValue => {\n              return this.values.get(fieldValue.lookupValue) || FacetValue.create(fieldValue);\n            }\n          );\n          const element = new OmniboxValuesList(this, facetValues, eventArg, OmniboxValueElement).build();\n          resolve({ element: element, zIndex: this.omniboxZIndex });\n        })\n        .catch(() => {\n          resolve({ element: undefined });\n        });\n    });\n    eventArg.rows.push({ deferred: promise });\n  }\n\n  private handleDuringQuery() {\n    this.ensureDom();\n    if (!this.keepDisplayedValuesNextTime) {\n      this.fadeInactiveValuesInMainList(this.options.facetSearchDelay);\n    }\n  }\n\n  private handleBuildingQuery(data: IDoneBuildingQueryEventArgs) {\n    Assert.exists(data);\n    Assert.exists(data.queryBuilder);\n\n    this.facetQueryController.prepareForNewQuery();\n    if (this.values.hasSelectedOrExcludedValues()) {\n      const expression = this.facetQueryController.computeOurFilterExpression();\n      this.logger.trace('Putting filter in query', expression);\n      data.queryBuilder.advancedExpression.add(expression);\n    }\n  }\n\n  private handleDoneBuildingQuery(data: IDoneBuildingQueryEventArgs) {\n    Assert.exists(data);\n    Assert.exists(data.queryBuilder);\n    const queryBuilder = data.queryBuilder;\n    this.facetQueryController.putGroupByIntoQueryBuilder(queryBuilder);\n  }\n\n  private handleClearBreadcrumb() {\n    this.reset();\n  }\n\n  private updateValues(facetValues: FacetValues) {\n    Assert.exists(facetValues);\n    if (this.keepDisplayedValuesNextTime) {\n      this.values.updateCountsFromNewValues(facetValues);\n    } else {\n      this.values = this.consolidateAndSortNewFacetValues(facetValues);\n    }\n\n    this.updateNumberOfValues();\n  }\n\n  private consolidateAndSortNewFacetValues(newValues: FacetValues) {\n    newValues.importActiveValuesFromOtherList(this.values);\n    newValues.sort(this.optionsToSortFacetValues);\n    return newValues;\n  }\n\n  private get optionsToSortFacetValues(): ISortFacetValuesOptions {\n    return {\n      facetValuesOrder: this.facetValuesOrder,\n      numberOfValues: this.numberOfValues\n    };\n  }\n\n  private get facetValuesOrder() {\n    return new FacetValuesOrder(this, this.facetSort);\n  }\n\n  private ensureFacetValueIsInList(facetValue: FacetValue) {\n    Assert.exists(facetValue);\n    if (!this.values.contains(facetValue.value)) {\n      this.values.add(facetValue);\n    }\n  }\n\n  private isAnyValueCurrentlyDisplayed(): boolean {\n    return !this.values.isEmpty();\n  }\n\n  private buildFacetContent() {\n    this.headerElement = this.buildHeader();\n    this.element.appendChild(this.headerElement);\n    this.initFacetValuesList();\n    if (this.shouldRenderFacetSearch()) {\n      this.initFacetSearch();\n    }\n    if (this.shouldRenderMoreLess()) {\n      this.moreElement = this.buildMore();\n      this.lessElement = this.buildLess();\n    }\n    this.footerElement = this.buildFooter();\n    this.element.appendChild(this.footerElement);\n    if (this.lessElement && this.moreElement) {\n      this.footerElement.appendChild(this.lessElement);\n      this.footerElement.appendChild(this.moreElement);\n    }\n  }\n\n  private buildHeader() {\n    let icon = this.options.headerIcon;\n    if (this.options.headerIcon == this.options.field) {\n      icon = undefined;\n    }\n    this.facetHeader = new FacetHeader({\n      facetElement: this.element,\n      title: this.options.title,\n      icon: icon,\n      field: <string>this.options.field,\n      enableClearElement: true,\n      enableCollapseElement: this.options.enableCollapse,\n      facet: this,\n      settingsKlass: this.options.enableSettings ? FacetSettings : undefined,\n      sortKlass: FacetSort,\n      availableSorts: this.options.availableSorts\n    });\n    const built = this.facetHeader.build();\n    this.facetSettings = this.facetHeader.settings;\n    this.facetSort = this.facetHeader.sort;\n    return built;\n  }\n\n  private unpinFacetPosition() {\n    if (this.shouldFacetUnpin() && this.options.preservePosition) {\n      $$(this.pinnedTopSpace).addClass('coveo-with-animation');\n      $$(this.pinnedBottomSpace).addClass('coveo-with-animation');\n      this.pinnedTopSpace.style.height = '0px';\n      this.pinnedBottomSpace.style.height = '0px';\n    }\n    this.unpinnedViewportPosition = undefined;\n    this.pinnedViewportPosition = undefined;\n  }\n\n  private isFacetPinned(): boolean {\n    return Utils.exists(this.pinnedViewportPosition);\n  }\n\n  private shouldFacetUnpin(): boolean {\n    return Utils.exists(this.unpinnedViewportPosition);\n  }\n\n  private ensurePinnedFacetHasntMoved(): void {\n    if (this.isFacetPinned()) {\n      Assert.exists(this.pinnedViewportPosition);\n      $$(this.pinnedTopSpace).removeClass('coveo-with-animation');\n      $$(this.pinnedBottomSpace).removeClass('coveo-with-animation');\n      this.pinnedTopSpace.style.height = '0px';\n      this.pinnedBottomSpace.style.height = '0px';\n\n      // Under firefox scrolling the body doesn't work, but window does\n      // on all browser, so we substitute those here when needed.\n      const elementToScroll: any = this.options.scrollContainer == document.body ? window : this.options.scrollContainer;\n      let currentViewportPosition = this.element.getBoundingClientRect().top;\n      let offset = currentViewportPosition - this.pinnedViewportPosition;\n      const scrollToOffset = () => {\n        if (elementToScroll instanceof Window) {\n          window.scrollTo(0, new Win(elementToScroll).scrollY() + offset);\n        } else {\n          (<HTMLElement>elementToScroll).scrollTop = elementToScroll.scrollTop + offset;\n        }\n      };\n      // First try to adjust position by scrolling the page\n      scrollToOffset();\n      currentViewportPosition = this.element.getBoundingClientRect().top;\n      offset = currentViewportPosition - this.pinnedViewportPosition;\n      // If scrolling has worked (offset == 0), we're good to go, nothing to do anymore.\n\n      if (offset < 0) {\n        // This means the facet element is scrolled up in the viewport,\n        // scroll it down by adding space in the top container\n        this.pinnedTopSpace.style.height = offset * -1 + 'px';\n      }\n      this.unpinnedViewportPosition = this.pinnedViewportPosition;\n      this.pinnedViewportPosition = null;\n    }\n  }\n\n  private buildFooter(): HTMLElement {\n    return $$('div', { className: 'coveo-facet-footer' }).el;\n  }\n\n  private buildMore(): HTMLElement {\n    const svgContainer = $$('span', { className: 'coveo-facet-more-icon' }, SVGIcons.icons.arrowDown).el;\n    SVGDom.addClassToSVGInContainer(svgContainer, 'coveo-facet-more-icon-svg');\n    const more = $$('div', { className: 'coveo-facet-more', tabindex: 0 }, svgContainer).el;\n\n    new AccessibleButton()\n      .withElement(more)\n      .withLabel(l('ShowMoreFacetResults', this.options.title))\n      .withSelectAction(() => this.handleClickMore())\n      .build();\n\n    return more;\n  }\n\n  private buildLess(): HTMLElement {\n    const svgContainer = $$('span', { className: 'coveo-facet-less-icon' }, SVGIcons.icons.arrowUp).el;\n    SVGDom.addClassToSVGInContainer(svgContainer, 'coveo-facet-less-icon-svg');\n    const less = $$('div', { className: 'coveo-facet-less', tabindex: 0 }, svgContainer).el;\n\n    new AccessibleButton()\n      .withElement(less)\n      .withLabel(l('ShowLessFacetResults', this.options.title))\n      .withSelectAction(() => this.handleClickLess())\n      .build();\n\n    return less;\n  }\n\n  private triggerMoreQuery() {\n    this.logger.info('Triggering new facet more query');\n    this.showWaitingAnimation();\n    // fetch 1 more value than we need, so we can see if there is more value to fetch still or if we have reached\n    // the end of the availables values\n    this.facetQueryController\n      .fetchMore(this.numberOfValues + 1)\n      .then((queryResults: IQueryResults) => {\n        this.logAnalyticsFacetShowMoreLess(analyticsActionCauseList.facetShowMore);\n        const facetValues = new FacetValues(queryResults.groupByResults[0]);\n        this.values = this.consolidateAndSortNewFacetValues(facetValues);\n\n        this.nbAvailableValues = this.values.size();\n\n        this.updateNumberOfValues();\n        this.canFetchMore = this.numberOfValues < this.nbAvailableValues;\n\n        if (this.values.hasSelectedOrExcludedValues() && !this.options.useAnd && this.options.isMultiValueField) {\n          this.triggerUpdateDeltaQuery(\n            _.filter(this.values.getAll(), (facetValue: FacetValue) => !facetValue.selected && !facetValue.excluded)\n          );\n        } else if (this.values.hasSelectedOrExcludedValues() && !this.options.useAnd) {\n          this.values.updateDeltaWithFilteredFacetValues(new FacetValues(), this.options.isMultiValueField);\n          this.hideWaitingAnimation();\n        } else {\n          this.hideWaitingAnimation();\n        }\n        this.rebuildValueElements();\n      })\n      .catch(() => this.hideWaitingAnimation());\n  }\n\n  protected triggerUpdateDeltaQuery(facetValues: FacetValue[]): void {\n    this.showWaitingAnimation();\n    this.facetQueryController.searchInFacetToUpdateDelta(facetValues).then((queryResults?) => {\n      const values: FacetValues = new FacetValues();\n      _.each(queryResults.groupByResults, (groupByResult: IGroupByResult) => {\n        _.each(groupByResult.values, (groupByValue: IGroupByValue) => {\n          if (!values.contains(groupByValue.value)) {\n            values.add(FacetValue.createFromGroupByValue(groupByValue));\n          }\n        });\n      });\n      this.values.updateDeltaWithFilteredFacetValues(values, this.options.isMultiValueField);\n      this.cleanupDeltaValuesForMultiValueField();\n      this.rebuildValueElements();\n      this.hideWaitingAnimation();\n    });\n  }\n\n  protected updateNumberOfValues() {\n    if (this.keepDisplayedValuesNextTime) {\n      return;\n    }\n\n    if (this.currentPage <= 0) {\n      // We're on the first page, let's reset the number of values to a minimum.\n      this.currentPage = 0;\n      this.numberOfValues = 0;\n    } else {\n      // Calculate the number of value with the current page.\n      this.numberOfValues = this.options.numberOfValues + this.currentPage * this.options.pageSize;\n    }\n\n    // Make sure we have at least the absolute minimum of value to display.\n    this.numberOfValues = Math.max(this.numberOfValues, this.getMinimumNumberOfValuesToDisplay());\n  }\n\n  private getMinimumNumberOfValuesToDisplay() {\n    // The min value is the number of used values.\n    let minValue = this.values.getExcluded().length + this.values.getSelected().length;\n\n    // When using a custom sort, we have to show all values between the selected ones.\n    // Thus, we must find the last selected value after a reorder and use that value as the number of value.\n    if (this.options.customSort != null && this.facetSort != null && this.options.customSort.length > 0) {\n      let lastSelectedValueIndex = -1;\n      new FacetValuesOrder(this, this.facetSort).reorderValues(this.values.getAll()).forEach((facetValue, index) => {\n        if (facetValue.selected) {\n          lastSelectedValueIndex = index;\n        }\n      });\n      minValue = lastSelectedValueIndex + 1;\n    }\n    return Math.max(minValue, this.options.numberOfValues);\n  }\n\n  private cleanupDeltaValuesForMultiValueField() {\n    // On a multi value field, it's possible to end up in a scenario where many of the current values are empty\n    // Crop those out, and adjust the nbAvailable values for the \"search\" and \"show more\";\n    if (this.options.isMultiValueField) {\n      _.each(this.values.getAll(), v => {\n        if (v.occurrences == 0 && !v.selected && !v.excluded) {\n          this.values.remove(v.value);\n        }\n      });\n      this.nbAvailableValues = this.values.getAll().length;\n    }\n  }\n\n  private shouldRenderFacetSearch() {\n    return this.options.enableFacetSearch;\n  }\n\n  private shouldRenderMoreLess() {\n    return this.options.enableMoreLess;\n  }\n\n  public debugInfo() {\n    const info: any = {};\n    info[this['constructor']['ID']] = {\n      component: this,\n      groupByRequest: this.facetQueryController.lastGroupByRequest,\n      groupByResult: this.facetQueryController.lastGroupByResult\n    };\n    return info;\n  }\n\n  private logAnalyticsFacetShowMoreLess(cause: IAnalyticsActionCause) {\n    this.usageAnalytics.logCustomEvent<IAnalyticsFacetMeta>(\n      cause,\n      {\n        facetId: this.options.id,\n        facetField: this.options.field.toString(),\n        facetTitle: this.options.title\n      },\n      this.element\n    );\n  }\n}\n\nInitialization.registerAutoCreateComponent(Facet);\n\nFacet.doExport();\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Facet/Facet.ts","import { Component } from '../Base/Component';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { ComponentOptionsModel } from '../../models/ComponentOptionsModel';\nimport { IResultsComponentBindings } from '../Base/ResultsComponentBindings';\nimport { analyticsActionCauseList } from '../Analytics/AnalyticsActionListMeta';\nimport { IResultLinkOptions } from './ResultLinkOptions';\nimport { ResultListEvents } from '../../events/ResultListEvents';\nimport { HighlightUtils } from '../../utils/HighlightUtils';\nimport { IQueryResult } from '../../rest/QueryResult';\nimport { DeviceUtils } from '../../utils/DeviceUtils';\nimport { OS_NAME, OSUtils } from '../../utils/OSUtils';\nimport { Initialization } from '../Base/Initialization';\nimport { QueryUtils } from '../../utils/QueryUtils';\nimport { Assert } from '../../misc/Assert';\nimport { Utils } from '../../utils/Utils';\nimport { Defer } from '../../misc/Defer';\nimport { $$ } from '../../utils/Dom';\nimport { StreamHighlightUtils } from '../../utils/StreamHighlightUtils';\nimport { StringUtils } from '../../utils/StringUtils';\nimport { debounce, extend, escape } from 'underscore';\nimport { exportGlobally } from '../../GlobalExports';\n\nimport 'styling/_ResultLink';\nimport { AccessibleButton } from '../../utils/AccessibleButton';\nimport { bindAnalyticsToLink } from './ResultLinkCommon';\n\n/**\n * The `ResultLink` component automatically transform a search result title into a clickable link pointing to the\n * original item.\n *\n * This component is a result template component (see [Result Templates](https://docs.coveo.com/en/413/)).\n */\nexport class ResultLink extends Component {\n  static ID = 'ResultLink';\n\n  static doExport = () => {\n    exportGlobally({\n      ResultLink: ResultLink\n    });\n  };\n\n  /**\n   * The options for the ResultLink\n   * @componentOptions\n   */\n  static options: IResultLinkOptions = {\n    /**\n     * Specifies the field to use to output the component `href` attribute value.\n     *\n     * **Tip:**\n     * > Instead of specifying a value for the `field` option, you can directly add an `href` attribute to the\n     * > `ResultLink` HTML element. Then, you can use a custom script to generate the `href` value.\n     *\n     * **Examples:**\n     * - With the following markup, the `ResultLink` outputs its `href` value using the `@uri` field (rather than the\n     * default field):\n     *\n     * ```html\n     * <a class=\"CoveoResultLink\" data-field=\"@uri\"></a>\n     * ```\n     *\n     * - In the following result template, the custom `getMyKBUri()` function provides the `href` value:\n     *\n     * ```html\n     * <script id=\"KnowledgeArticle\" type=\"text/underscore\" class=\"result-template\">\n     *   <div class='CoveoIcon>'></div>\n     *   <a class=\"CoveoResultLink\" href=\"<%= getMyKBUri(raw) %>\"></a>\n     *   <div class=\"CoveoExcerpt\"></div>\n     * </script>\n     * ```\n     *\n     * See also [`hrefTemplate`]{@link ResultLink.options.hrefTemplate}, which can override this option.\n     *\n     * By default, the component uses the `@clickUri` field of the item to output the value of its `href` attribute.\n     */\n    field: ComponentOptions.buildFieldOption(),\n\n    /**\n     * Specifies whether the component should try to open its link in Microsoft Outlook.\n     *\n     * Setting this option to `true` is normally useful for `ResultLink` instances related to Microsoft Exchange emails.\n     *\n     * If this option is `true`, clicking the `ResultLink` calls the\n     * [`openLinkInOutlook`]{@link ResultLink.openLinkInOutlook} method instead of the\n     * [`openLink`]{@link ResultLink.openLink} method.\n     *\n     * Default value is `false`.\n     */\n    openInOutlook: ComponentOptions.buildBooleanOption({ defaultValue: false }),\n\n    /**\n     * Specifies whether the component should open its link in the [`Quickview`]{@link Quickview} component rather than\n     * loading through the original URL.\n     *\n     * Default value is `false`.\n     */\n    openQuickview: ComponentOptions.buildBooleanOption({ defaultValue: false }),\n\n    /**\n     * Specifies whether the component should open its link in a new window instead of opening it in the current\n     * context.\n     *\n     * If this option is `true`, clicking the `ResultLink` calls the\n     * [`openLinkInNewWindow`]{@link ResultLink.openLinkInNewWindow} method instead of the\n     * [`openLink`]{@link ResultLink.openLink} method.\n     *\n     * **Note:**\n     * > If a search page contains a [`ResultPreferences`]{@link ResultsPreferences} component whose\n     * > [`enableOpenInNewWindow`]{@link ResultsPreferences.options.enableOpenInNewWindow} option is `true`, and the end\n     * > user checks the <b>Always open results in new window</b> box, `ResultLink` components in this page will always\n     * > open their links in a new window when the end user clicks them, no matter what the value of their\n     * > `alwaysOpenInNewWindow` option is.\n     *\n     * Default value is `false`.\n     */\n    alwaysOpenInNewWindow: ComponentOptions.buildBooleanOption({ defaultValue: false }),\n\n    /**\n     * Specifies a template literal from which to generate the `ResultLink` `href` attribute value (see\n     * [Template literals](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Template_literals)).\n     *\n     * This option overrides the [`field`]{@link ResultLink.options.field} option value.\n     *\n     * The template literal can reference any number of fields from the parent result. It can also reference global\n     * scope properties.\n     *\n     * **Examples:**\n     *\n     * - The following markup generates an `href` value such as `http://uri.com?id=itemTitle`:\n     *\n     * ```html\n     * <a class='CoveoResultLink' data-href-template='${clickUri}?id=${raw.title}'></a>\n     * ```\n     *\n     * - The following markup generates an `href` value such as `localhost/fooBar`:\n     *\n     * ```html\n     * <a class='CoveoResultLink' data-href-template='${window.location.hostname}/{Foo.Bar}'></a>\n     * ```\n     *\n     * Default value is `undefined`.\n     */\n    hrefTemplate: ComponentOptions.buildStringOption(),\n\n    /**\n     * Specifies a template literal from which to generate the `ResultLink` display title (see\n     * [Template literals](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Template_literals)).\n     *\n     * This option overrides the default `ResultLink` display title behavior.\n     *\n     * The template literal can reference any number of fields from the parent result. However, if the template literal\n     * references a key whose value is undefined in the parent result fields, the `ResultLink` title displays the\n     * name of this key instead.\n     *\n     * This option is ignored if the `ResultLink` innerHTML contains any value.\n     *\n     * **Examples:**\n     *\n     * - The following markup generates a `ResultLink` display title such as `Case number: 123456` if both the\n     * `raw.objecttype` and `raw.objectnumber` keys are defined in the parent result fields:\n     *\n     * ```html\n     * <a class=\"CoveoResultLink\" data-title-template=\"${raw.objecttype} number: ${raw.objectnumber}\"></a>\n     * ```\n     *\n     * - The following markup generates `${myField}` as a `ResultLink` display title if the `myField` key is undefined\n     * in the parent result fields:\n     *\n     * ```html\n     * <a class=\"CoveoResultLink\" data-title-template=\"${myField}\"></a>\n     * ```\n     *\n     * - The following markup generates `Foobar` as a `ResultLink` display title, because the `ResultLink` innterHTML is\n     * not empty:\n     *\n     * ```html\n     * <a class=\"CoveoResultLink\" data-title-template=\"${will} ${be} ${ignored}\">Foobar</a>\n     * ```\n     *\n     * Default value is `undefined`.\n     *\n     * @availablesince [January 2017 Release (v1.1865.9)](https://docs.coveo.com/en/396/#january-2017-release-v118659)\n     */\n    titleTemplate: ComponentOptions.buildStringOption(),\n\n    /**\n     * Specifies an event handler function to execute when the user clicks the `ResultLink` component.\n     *\n     * The handler function takes a JavaScript [`Event`](https://developer.mozilla.org/en/docs/Web/API/Event) object and\n     * an [`IQueryResult`]{@link IQueryResult} as its parameters.\n     *\n     * Overriding the default behavior of the `onClick` event can allow you to execute specific code instead.\n     *\n     * **Note:**\n     * > You cannot set this option directly in the component markup as an HTML attribute. You must either set it in the\n     * > [`init`]{@link init} call of your search interface (see\n     * > [Passing Component Options in the init Call](https://docs.coveo.com/en/346/#passing-component-options-in-the-init-call)),\n     * > or before the `init` call, using the `options` top-level function (see\n     * > [Passing Component Options Before the init Call](https://docs.coveo.com/en/346/#passing-component-options-before-the-init-call)).\n     *\n     * **Example:**\n     * ```javascript\n     * // You can set the option in the 'init' call:\n     * Coveo.init(document.querySelector(\"#search\"), {\n     *   ResultLink : {\n     *     onClick : function(e, result) {\n     *       e.preventDefault();\n     *       // Custom code to execute with the item URI and title.\n     *       openUriInASpecialTab(result.clickUri, result.title);\n     *     }\n     *   }\n     * });\n     *\n     * // Or before the 'init' call, using the 'options' top-level function:\n     * // Coveo.options(document.querySelector('#search'), {\n     * //   ResultLink : {\n     * //     onClick : function(e, result) {\n     * //       e.preventDefault();\n     * //       // Custom code to execute with the item URI and title.\n     * //       openUriInASpecialTab(result.clickUri, result.title);\n     * //     }\n     * //   }\n     * // });\n     * ```\n     */\n    onClick: ComponentOptions.buildCustomOption<(e: Event, result: IQueryResult) => any>(() => {\n      return null;\n    }),\n\n    /**\n     * Specify this option to log additional analytics when this result link is pressed.\n     *\n     * **Example:**\n     * ```javascript\n     * const resultLink = new Coveo.ResultLink(\n     *   linkElement,\n     *   {\n     *     logAnalytics: (href) => Coveo.logCustomEvent(\n     *         Coveo.analyticsActionCauseList.openSmartSnippetSource,\n     *         {\n     *           searchQueryUid: searchInterface.queryController.lastSearchUid,\n     *           documentTitle: result.title,\n     *           author: Utils.getFieldValue(result, 'author'),\n     *           documentURL: href\n     *         },\n     *         element\n     *       )\n     *   },\n     *   searchInterface.getBindings(),\n     *   result\n     * )\n     * ```\n     */\n    logAnalytics: ComponentOptions.buildCustomOption<(href: string) => void>(() => null)\n  };\n\n  private toExecuteOnOpen: (e?: Event) => void;\n\n  /**\n   * Creates a new `ResultLink` component.\n   * @param element The HTMLElement on which to instantiate the component.\n   * @param options The options for the `ResultLink` component.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time).\n   * @param result The result to associate the component with.\n   * @param os\n   */\n  constructor(\n    public element: HTMLElement,\n    public options: IResultLinkOptions,\n    public bindings?: IResultsComponentBindings,\n    public result?: IQueryResult,\n    public os?: OS_NAME\n  ) {\n    super(element, ResultLink.ID, bindings);\n\n    const globalOptions = this.searchInterface.options.originalOptionsObject[ResultLink.ID] || {};\n    const initialOptions = ComponentOptions.initComponentOptions(element, ResultLink, { ...globalOptions, ...options });\n    const resultLinkOptions = this.componentOptionsModel.get(ComponentOptionsModel.attributesEnum.resultLink);\n    this.options = extend({}, initialOptions, resultLinkOptions);\n\n    this.result = result || this.resolveResult();\n\n    if (this.options.openQuickview == null) {\n      this.options.openQuickview = result.raw['connectortype'] == 'ExchangeCrawler' && DeviceUtils.isMobileDevice();\n    }\n    if (!this.element.hasAttribute('tabindex')) {\n      this.element.setAttribute('tabindex', '0');\n    }\n\n    Assert.exists(this.componentOptionsModel);\n    Assert.exists(this.result);\n\n    if (!this.quickviewShouldBeOpened()) {\n      // Bind on multiple \"click\" or \"mouse\" events.\n      // Create a function that will be executed only once, so as not to log multiple events\n      // Once a result link has been opened, and that we log at least one analytics event,\n      // it should not matter if the end user open the same link multiple times with different methods.\n      // It's still only one \"click\" event as far as UA is concerned.\n      // Also need to handle \"longpress\" on mobile (the contextual menu), which we assume to be 1 s long.\n\n      bindAnalyticsToLink(element, () => this.logAnalytics());\n    }\n    this.renderUri(element, result);\n    this.bindEventToOpen();\n  }\n  public renderUri(element: HTMLElement, result?: IQueryResult) {\n    if (/^\\s*$/.test(this.element.innerHTML)) {\n      const title = this.getDisplayedTitle();\n      this.element.innerHTML = title;\n\n      const titleAsText = this.getDisplayedTitleAsText();\n      if (!this.element.hasAttribute('aria-label')) {\n        this.element.setAttribute('aria-label', titleAsText);\n      }\n\n      if (!this.element.title) {\n        this.element.title = titleAsText;\n      }\n    }\n  }\n  /**\n   * Opens the result in the same window, no matter how the actual component is configured for the end user.\n   * @param logAnalytics Specifies whether the method should log an analytics event.\n   */\n  public openLink(logAnalytics = true) {\n    if (logAnalytics) {\n      this.logAnalytics();\n    }\n    window.location.href = this.getResultUri();\n  }\n\n  /**\n   * Opens the result in a new window, no matter how the actual component is configured for the end user.\n   * @param logAnalytics Specifies whether the method should log an analytics event.\n   */\n  public openLinkInNewWindow(logAnalytics = true) {\n    if (logAnalytics) {\n      this.logAnalytics();\n    }\n    window.open(this.getResultUri(), '_blank');\n  }\n\n  /**\n   * Tries to open the result in Microsoft Outlook if the result has an `outlookformacuri` or `outlookuri` field.\n   *\n   * Normally, this implies the result should be a link to an email.\n   *\n   * If the needed fields are not present, this method does nothing.\n   * @param logAnalytics Specifies whether the method should log an analytics event.\n   */\n  public openLinkInOutlook(logAnalytics = true) {\n    if (this.hasOutlookField()) {\n      if (logAnalytics) {\n        this.logAnalytics();\n      }\n      this.openLink();\n    }\n  }\n\n  /**\n   * Opens the link in the same manner the end user would.\n   *\n   * This essentially simulates a click on the result link.\n   *\n   * @param logAnalytics Specifies whether the method should log an analytics event.\n   */\n  public openLinkAsConfigured(logAnalytics = true) {\n    if (this.toExecuteOnOpen) {\n      if (logAnalytics) {\n        this.logAnalytics();\n      }\n      this.toExecuteOnOpen();\n    }\n  }\n\n  protected bindEventToOpen(): boolean {\n    return (\n      this.bindOnClickIfNotUndefined() ||\n      this.bindOpenQuickviewIfNotUndefined() ||\n      this.setHrefIfNotAlready() ||\n      this.openLinkThatIsNotAnAnchor()\n    );\n  }\n\n  private getDisplayedTitle() {\n    if (!this.options.titleTemplate) {\n      return this.result.title\n        ? HighlightUtils.highlightString(this.result.title, this.result.titleHighlights, null, 'coveo-highlight')\n        : this.escapedClickUri;\n    } else {\n      let newTitle = StringUtils.buildStringTemplateFromResult(this.options.titleTemplate, this.result);\n      return newTitle\n        ? StreamHighlightUtils.highlightStreamText(newTitle, this.result.termsToHighlight, this.result.phrasesToHighlight)\n        : this.escapedClickUri;\n    }\n  }\n\n  private getDisplayedTitleAsText() {\n    const container = $$('div');\n    container.setHtml(this.getDisplayedTitle());\n    return container.text();\n  }\n\n  private get escapedClickUri() {\n    return escape(this.result.clickUri);\n  }\n\n  private bindOnClickIfNotUndefined() {\n    if (this.options.onClick != undefined) {\n      this.toExecuteOnOpen = (e: MouseEvent) => {\n        this.options.onClick.call(this, e, this.result);\n      };\n\n      new AccessibleButton()\n        .withElement(this.element)\n        .withLabel(this.result.title)\n        .withSelectAction((e: Event) => this.toExecuteOnOpen(e))\n        .build();\n\n      return true;\n    } else {\n      return false;\n    }\n  }\n\n  private bindOpenQuickviewIfNotUndefined() {\n    if (this.quickviewShouldBeOpened()) {\n      this.toExecuteOnOpen = () => {\n        $$(this.bindings.resultElement).trigger(ResultListEvents.openQuickview);\n      };\n\n      $$(this.element).on('click', (e: Event) => {\n        e.preventDefault();\n        this.toExecuteOnOpen();\n      });\n\n      return true;\n    } else {\n      return false;\n    }\n  }\n\n  private openLinkThatIsNotAnAnchor() {\n    if (!this.elementIsAnAnchor()) {\n      this.toExecuteOnOpen = () => {\n        if (this.options.alwaysOpenInNewWindow) {\n          if (this.options.openInOutlook) {\n            this.openLinkInOutlook();\n          } else {\n            this.openLinkInNewWindow();\n          }\n        } else {\n          this.openLink();\n        }\n      };\n\n      $$(this.element).on('click', () => {\n        this.toExecuteOnOpen();\n      });\n\n      return true;\n    }\n    return false;\n  }\n\n  private setHrefIfNotAlready() {\n    // Do not erase any value put in href by the template, etc. Allows\n    // using custom click urls while still keeping analytics recording\n    // and other behavior brought by the component.\n    if (this.elementIsAnAnchor() && !Utils.isNonEmptyString($$(this.element).getAttribute('href'))) {\n      $$(this.element).setAttribute('href', this.getResultUri());\n      if (this.options.alwaysOpenInNewWindow && !(this.options.openInOutlook && this.hasOutlookField())) {\n        $$(this.element).setAttribute('target', '_blank');\n      }\n      return true;\n    } else {\n      return false;\n    }\n  }\n\n  private logDocumentOpen(href: string) {\n    this.usageAnalytics.logClickEvent(\n      analyticsActionCauseList.documentOpen,\n      {\n        documentURL: href,\n        documentTitle: this.result.title,\n        author: Utils.getFieldValue(this.result, 'author')\n      },\n      this.result,\n      this.root\n    );\n  }\n\n  private logAnalytics = debounce(\n    () => {\n      this.queryController.saveLastQuery();\n      let documentURL = $$(this.element).getAttribute('href');\n      if (documentURL == undefined || documentURL == '') {\n        documentURL = this.escapedClickUri;\n      }\n      if (this.options.logAnalytics) {\n        this.options.logAnalytics(documentURL);\n      } else {\n        this.logDocumentOpen(documentURL);\n      }\n      Defer.flush();\n    },\n    1500,\n    true\n  );\n\n  private filterProtocol(uri: string) {\n    const isAbsolute = /^(https?|ftp|file|mailto|tel):/i.test(uri);\n    const isRelative = /^(\\/|\\.\\/|\\.\\.\\/)/.test(uri);\n\n    return isAbsolute || isRelative ? uri : '';\n  }\n\n  private getResultUri(): string {\n    if (this.options.hrefTemplate) {\n      const uri = StringUtils.buildStringTemplateFromResult(this.options.hrefTemplate, this.result);\n      return this.filterProtocol(uri);\n    }\n\n    if (this.options.field == undefined && this.options.openInOutlook) {\n      this.setField();\n    }\n\n    if (this.options.field != undefined) {\n      return this.filterProtocol(Utils.getFieldValue(this.result, <string>this.options.field));\n    }\n\n    return this.filterProtocol(this.result.clickUri);\n  }\n\n  private elementIsAnAnchor() {\n    return this.element.tagName == 'A';\n  }\n\n  private setField() {\n    let os = Utils.exists(this.os) ? this.os : OSUtils.get();\n    if (os == OS_NAME.MACOSX && this.hasOutlookField()) {\n      this.options.field = '@outlookformacuri';\n    } else if (os == OS_NAME.WINDOWS && this.hasOutlookField()) {\n      this.options.field = '@outlookuri';\n    }\n  }\n\n  private hasOutlookField() {\n    let os = Utils.exists(this.os) ? this.os : OSUtils.get();\n    if (os == OS_NAME.MACOSX && this.result.raw['outlookformacuri'] != undefined) {\n      return true;\n    } else if (os == OS_NAME.WINDOWS && this.result.raw['outlookuri'] != undefined) {\n      return true;\n    }\n    return false;\n  }\n\n  private isUriThatMustBeOpenedInQuickview(): boolean {\n    return this.escapedClickUri.toLowerCase().indexOf('ldap://') == 0;\n  }\n\n  private quickviewShouldBeOpened() {\n    return (this.options.openQuickview || this.isUriThatMustBeOpenedInQuickview()) && QueryUtils.hasHTMLVersion(this.result);\n  }\n}\n\nInitialization.registerAutoCreateComponent(ResultLink);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResultLink/ResultLink.ts","/**\n * The allowed states of a facet value in a Search API facet\n * [request]{@link IFacetRequestValue.state} or\n * [response]{@link IFacetResponseValue.state}.\n */\nexport enum FacetValueState {\n  /**\n   * The facet value is not currently selected or excluded in the search\n   * interface.\n   */\n  idle = 'idle',\n  /**\n   * The facet value is currently selected in the search interface.\n   */\n  selected = 'selected'\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/rest/Facet/FacetValueState.ts","import { Assert } from '../misc/Assert';\n\n/**\n * The possible options to use when calculating a timespan\n */\nexport interface ITimeSpanUtilsOptions {\n  /**\n   * Specify if the given timespan is in seconds or milliseconds\n   */\n  isMilliseconds: boolean;\n}\n\nexport class TimeSpan {\n  private milliseconds: number;\n\n  constructor(time: number, isMilliseconds = true) {\n    if (isMilliseconds) {\n      this.milliseconds = time;\n    } else {\n      this.milliseconds = time * 1000;\n    }\n  }\n\n  getMilliseconds() {\n    return this.milliseconds;\n  }\n\n  getSeconds() {\n    return this.getMilliseconds() / 1000;\n  }\n\n  getMinutes() {\n    return this.getSeconds() / 60;\n  }\n\n  getHours() {\n    return this.getMinutes() / 60;\n  }\n\n  getDays() {\n    return this.getHours() / 24;\n  }\n\n  getWeeks() {\n    return this.getDays() / 7;\n  }\n\n  getHHMMSS(): string {\n    var hours = Math.floor(this.getHours());\n    var minutes = Math.floor(this.getMinutes()) % 60;\n    var seconds = Math.floor(this.getSeconds()) % 60;\n    var hoursString, minutesString, secondsString;\n    if (hours == 0) {\n      hoursString = '';\n    } else {\n      hoursString = hours < 10 ? '0' + hours.toString() : hours.toString();\n    }\n    minutesString = minutes < 10 ? '0' + minutes.toString() : minutes.toString();\n    secondsString = seconds < 10 ? '0' + seconds.toString() : seconds.toString();\n    var hhmmss = (hoursString != '' ? hoursString + ':' : '') + minutesString + ':' + secondsString;\n    return hhmmss;\n  }\n\n  static fromDates(from: Date, to: Date): TimeSpan {\n    Assert.exists(from);\n    Assert.exists(to);\n    return new TimeSpan(to.valueOf() - from.valueOf());\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/TimeSpanUtils.ts","export { Assert } from './misc/Assert';\nexport { Defer } from './misc/Defer';\nexport { L10N } from './misc/L10N';\nexport { Logger } from './misc/Logger';\nexport { Options } from './misc/Options';\nexport { l } from './strings/Strings';\n\nimport { Logger } from './misc/Logger';\n\n// Generated by webpack at compile time.\n// We want to disable the logger in minified mode because this can cause slowdown for pages in production.\ndeclare const DISABLE_LOGGER;\nif (DISABLE_LOGGER) {\n  Logger.disable();\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/MiscModules.ts","import { Assert } from '../../misc/Assert';\nimport { QueryUtils } from '../../utils/QueryUtils';\nimport * as _ from 'underscore';\n\n/**\n * An `ExpressionBuilder` that is mostly used by the {@link QueryBuilder}.<br/>\n * It is used to build a single query expression.<br/>\n * It allows combining multiple expression parts into a single string and provides utilities to generate common expression parts.\n */\nexport class ExpressionBuilder {\n  private parts: string[] = []; // he he he\n  public wrapParts: boolean = true;\n\n  /**\n   * Add a new part to the expression.\n   * @param expression\n   */\n  public add(expression: string) {\n    Assert.isNonEmptyString(expression);\n    this.parts.push(expression);\n  }\n\n  /**\n   * Take another `ExpressionBuilder`, and copy it.\n   * @param expression\n   */\n  public fromExpressionBuilder(expression: ExpressionBuilder) {\n    this.parts = this.parts.concat(expression.parts);\n  }\n\n  /**\n   * Add a new part to the expression, but specific for field values<br/>\n   * eg @field=(value1,value2,value3).\n   * @param field The field for which to create an expression (e.g.: @foo).\n   * @param operator The operator to use e.g.: = (equal) == (strict equal) <> (not equal).\n   * @param values The values to put in the expression.\n   */\n  public addFieldExpression(field: string, operator: string, values: string[]) {\n    Assert.isNonEmptyString(field);\n    Assert.stringStartsWith(field, '@');\n    Assert.isNonEmptyString(operator);\n    Assert.isLargerOrEqualsThan(1, values.length);\n\n    this.add(QueryUtils.buildFieldExpression(field, operator, values));\n  }\n\n  /**\n   * Add a new part to the expression, but specific for field values<br/>\n   * eg : NOT @field==(value1, value2, value3).\n   * @param field The field for which to create an expression (e.g.: @foo)\n   * @param values The values to put in the expression.\n   */\n  public addFieldNotEqualExpression(field: string, values: string[]) {\n    Assert.isNonEmptyString(field);\n    Assert.stringStartsWith(field, '@');\n    Assert.isLargerOrEqualsThan(1, values.length);\n\n    this.add(QueryUtils.buildFieldNotEqualExpression(field, values));\n  }\n\n  /**\n   * Removes an expression from the builder.\n   * @param expression\n   */\n  public remove(expression: string) {\n    Assert.isNonEmptyString(expression);\n    var index = _.indexOf(this.parts, expression);\n    if (index != -1) {\n      this.parts.splice(_.indexOf(this.parts, expression), 1);\n    }\n  }\n\n  /**\n   * Checks if the builder is currently empty.\n   * @returns {boolean}\n   */\n  public isEmpty(): boolean {\n    return this.parts.length == 0;\n  }\n\n  /**\n   * Builds the expression string by combining all the parts together.<br/>\n   * @param exp expression to join the different parts, default to a space.\n   * @returns {any}\n   */\n  public build(exp: string = ' '): string {\n    if (this.parts.length == 0) {\n      return undefined;\n    } else if (this.parts.length == 1) {\n      return this.parts[0];\n    } else if (this.wrapParts) {\n      return '(' + this.parts.join(')' + exp + '(') + ')';\n    } else {\n      return this.parts.join(exp);\n    }\n  }\n\n  /**\n   * @returns array containing the differents parts of the expression\n   */\n  public getParts(): string[] {\n    return this.parts;\n  }\n\n  /**\n   * Merges several `ExpressionBuilder` together.\n   * @param builders Builders that should be merged.\n   * @returns {Coveo.ExpressionBuilder}\n   */\n  static merge(...builders: ExpressionBuilder[]): ExpressionBuilder {\n    var merged = new ExpressionBuilder();\n    _.each(builders, (builder: ExpressionBuilder) => {\n      merged.parts = merged.parts.concat(builder.parts);\n    });\n\n    return merged;\n  }\n\n  /**\n   * Merges several `ExpressionBuilder` together, using the OR operator.\n   * @param builders Builders that should be merged.\n   * @returns {Coveo.ExpressionBuilder}\n   */\n  static mergeUsingOr(...builders: ExpressionBuilder[]): ExpressionBuilder {\n    var nonEmpty = _.filter(builders, (b: ExpressionBuilder) => !b.isEmpty());\n\n    var merged = new ExpressionBuilder();\n\n    if (nonEmpty.length == 1) {\n      merged.parts = [].concat(nonEmpty[0].parts);\n    } else if (nonEmpty.length > 1) {\n      var parts = _.map(nonEmpty, b => b.build());\n      merged.add('(' + parts.join(') OR (') + ')');\n    }\n    return merged;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Base/ExpressionBuilder.ts","var g;\r\n\r\n// This works in non-strict mode\r\ng = (function() {\r\n\treturn this;\r\n})();\r\n\r\ntry {\r\n\t// This works if eval is allowed (see CSP)\r\n\tg = g || Function(\"return this\")() || (1,eval)(\"this\");\r\n} catch(e) {\r\n\t// This works if the window reference is available\r\n\tif(typeof window === \"object\")\r\n\t\tg = window;\r\n}\r\n\r\n// g can still be undefined, but nothing to do about it...\r\n// We return undefined, instead of nothing here, so it's\r\n// easier to handle this case. if(!global) { ...}\r\n\r\nmodule.exports = g;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/global.js\n// module id = 75\n// module chunks = 88 89","export class JQueryUtils {\n  static getJQuery() {\n    if (window && window['Coveo'] && window['Coveo']['$']) {\n      return window['Coveo']['$'];\n    }\n    return false;\n  }\n\n  static isInstanceOfJQuery(obj: Object): boolean {\n    let jq = this.getJQuery();\n    if (jq) {\n      return obj instanceof jq;\n    }\n    return false;\n  }\n\n  static isInstanceOfJqueryEvent(obj: Object): boolean {\n    let jq = this.getJQuery();\n    if (jq) {\n      return obj instanceof jq.Event;\n    }\n    return false;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/JQueryutils.ts","import { Utils } from '../utils/Utils';\nimport * as _ from 'underscore';\n\nexport class Options {\n  public merge<T>(provided: T): T {\n    return _.extend({}, this, provided);\n  }\n\n  public mergeDeep<T>(provided: T): T {\n    return _.extend({}, Utils.extendDeep(this, provided));\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/misc/Options.ts","import { Model } from './Model';\nimport { BaseComponent } from '../ui/Base/BaseComponent';\n\nexport class ComponentStateModel extends Model {\n  static ID = 'ComponentState';\n\n  constructor(element: HTMLElement) {\n    super(element, ComponentStateModel.ID, {});\n  }\n\n  public registerComponent(componentId: string, component: BaseComponent) {\n    var currentAttribute = this.attributes[componentId];\n    if (currentAttribute == undefined) {\n      this.attributes[componentId] = [component];\n    } else {\n      this.attributes[componentId].push(component);\n    }\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/models/ComponentStateModel.ts","var isObject = require('./_is-object');\nmodule.exports = function (it) {\n  if (!isObject(it)) throw TypeError(it + ' is not an object!');\n  return it;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_an-object.js\n// module id = 79\n// module chunks = 88 89","// Thank's IE8 for his funny defineProperty\nmodule.exports = !require('./_fails')(function () {\n  return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_descriptors.js\n// module id = 80\n// module chunks = 88 89","var hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n  return hasOwnProperty.call(it, key);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_has.js\n// module id = 81\n// module chunks = 88 89","// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n  if (it == undefined) throw TypeError(\"Can't call method on  \" + it);\n  return it;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_defined.js\n// module id = 82\n// module chunks = 88 89","module.exports = {};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_iterators.js\n// module id = 83\n// module chunks = 88 89","import { ComponentOptions } from '../Base/ComponentOptions';\n\n/**\n * ResponsiveFacets options\n */\nexport const ResponsiveFacetOptions = {\n  /**\n   * Specifies whether to enable *responsive mode* for facets. Setting this options to `false` on any `Facet`, or\n   * [`FacetSlider`]{@link FacetSlider} component in a search interface disables responsive mode for all other facets\n   * in the search interface.\n   *\n   * Responsive mode displays all facets under a single dropdown button whenever the width of the HTML element which\n   * the search interface is bound to reaches or falls behind a certain threshold (see\n   * {@link SearchInterface.responsiveComponents}).\n   *\n   * See also the [`dropdownHeaderLabel`]{@link Facet.options.dropdownHeaderLabel} option.\n   *\n   * Default value is `true`.\n   */\n  enableResponsiveMode: ComponentOptions.buildBooleanOption({ defaultValue: true, section: 'ResponsiveOptions' }),\n  responsiveBreakpoint: ComponentOptions.buildNumberOption({\n    deprecated:\n      'This option is exposed for legacy reasons. It is not recommended to use this option. Instead, use `SearchInterface.options.responsiveMediumBreakpoint` options exposed on the `SearchInterface`.'\n  }),\n  /**\n   * If the [`enableResponsiveMode`]{@link Facet.options.enableResponsiveMode} option is `true` for all facets and\n   * {@link FacetSlider.options.enableResponsiveMode} is also `true` for all sliders, specifies the label of the\n   * dropdown button that allows to display the facets when in responsive mode.\n   *\n   * If more than one `Facet` or {@link FacetSlider} component in the search interface specifies a value for this\n   * option, the framework uses the first occurrence of the option.\n   *\n   * Default value is `Filters`.\n   */\n  dropdownHeaderLabel: ComponentOptions.buildLocalizedStringOption({ section: 'ResponsiveOptions' })\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResponsiveComponents/ResponsiveFacetOptions.ts","import { Component } from '../Base/Component';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { exportGlobally } from '../../GlobalExports';\nimport { Utils } from '../../Core';\nimport { Initialization } from '../Base/Initialization';\n\nexport interface IFacetsMobileModeConstructor {\n  new (element: HTMLElement, options: IFacetsMobileModeOptions, bindings: IComponentBindings): FacetsMobileMode;\n}\n\nexport interface IFacetsMobileModeOptions {\n  breakpoint?: number;\n  isModal?: boolean;\n  displayOverlayWhileOpen?: boolean;\n  preventScrolling?: boolean;\n  scrollContainer?: HTMLElement;\n}\n\n/**\n * This component lets you customize the mobile responsive behavior of facets in your search interface.\n *\n * **Notes:**\n * - You can include this component anywhere under the root element of your search interface.\n * - You should only include this component once in your search interface.\n */\nexport class FacetsMobileMode extends Component {\n  static ID = 'FacetsMobileMode';\n\n  /**\n   * @componentOptions\n   */\n  static options: IFacetsMobileModeOptions = {\n    /**\n     * The screen width (in number of pixels) at which facets should enter mobile responsive mode and be collapsed under a single button.\n     *\n     * **Default:** `800`\n     */\n    breakpoint: ComponentOptions.buildNumberOption(),\n    /**\n     * Whether to display the facets in a modal instead of a pop-up when the end user expands them in mobile responsive mode.\n     * Set this option to `false` in order to keep the old behaviour.\n     */\n    isModal: ComponentOptions.buildBooleanOption({ defaultValue: true }),\n    /**\n     * Whether to display an overlay behind the facets when the end user expands them in mobile responsive mode.\n     *\n     * By default, the following behavior applies:\n     * - `true` when [isModal]{@link FacetsMobileMode.options.isModal} is `false`\n     * - `false` when [isModal]{@link FacetsMobileMode.options.isModal} is `true`\n     */\n    displayOverlayWhileOpen: ComponentOptions.buildBooleanOption({\n      postProcessing: (value, options: IFacetsMobileModeOptions) => (Utils.isNullOrUndefined(value) ? !options.isModal : value)\n    }),\n    /**\n     * Whether to disable vertical scrolling on the specified or resolved [`scrollContainer`]{@link FacetsMobileMode.options.scrollContainer} while facets are expanded in mobile responsive mode.\n     *\n     * By default, the following behavior applies:\n     * - `true` when [isModal]{@link FacetsMobileMode.options.isModal} is `true`\n     * - `false` when [isModal]{@link FacetsMobileMode.options.isModal} is `false`\n     */\n    preventScrolling: ComponentOptions.buildBooleanOption({\n      postProcessing: (value, options: IFacetsMobileModeOptions) => (Utils.isNullOrUndefined(value) ? options.isModal : value)\n    }),\n    /**\n     * The HTML element whose vertical scrolling should be locked while facets are expanded in mobile responsive mode.\n     *\n     * By default, the component tries to detect and use the first ancestor element whose CSS `overflow-y` attribute is set to `scroll`, starting from the `FacetsMobileMode`'s element itself. If no such element is found, the `document.body` element is used.\n     *\n     * Since this heuristic is not perfect, we strongly recommend that you manually set this option by explicitly specifying the desired CSS selector.\n     *\n     * **Example:** `data-scroll-container-selector='#someCssSelector'`\n     */\n    scrollContainer: ComponentOptions.buildChildHtmlElementOption({ depend: 'preventScrolling' })\n  };\n\n  static doExport = () => {\n    exportGlobally({\n      FacetsMobileMode: FacetsMobileMode\n    });\n  };\n\n  public options: IFacetsMobileModeOptions;\n\n  constructor(public element: HTMLElement, options?: IFacetsMobileModeOptions, bindings?: IComponentBindings) {\n    super(element, FacetsMobileMode.ID, bindings);\n\n    this.options = ComponentOptions.initComponentOptions(element, FacetsMobileMode, options);\n    if (this.options.preventScrolling) {\n      const scrollContainer = this.options.scrollContainer || this.searchInterface.element;\n      this.options.scrollContainer = ComponentOptions.findParentScrollLockable(scrollContainer);\n    }\n  }\n}\n\nInitialization.registerAutoCreateComponent(FacetsMobileMode);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/FacetsMobileMode/FacetsMobileMode.ts","import { ISubscription } from '../rest/Subscription';\n\nexport interface ISearchAlertsEventArgs {\n  subscription: ISubscription;\n  dom?: HTMLElement;\n}\n\nexport interface ISearchAlertsFailEventArgs {\n  dom?: HTMLElement;\n}\n\nexport interface ISearchAlertsPopulateMessageEventArgs {\n  text: Array<string | ISearchAlertsPopulateMessageText>;\n}\n\nexport interface ISearchAlertsPopulateMessageText {\n  lineThrough: boolean;\n  value: string;\n}\n\nexport class SearchAlertsEvents {\n  public static searchAlertsCreated = 'searchAlertsCreated';\n  public static searchAlertsDeleted = 'searchAlertsDeleted';\n  public static searchAlertsFail = 'searchAlertsFail';\n  public static searchAlertsPopulateMessage = 'searchAlertsPopulateMessage';\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/events/SearchAlertEvents.ts","export { ColorUtils } from './utils/ColorUtils';\nexport { Cookie } from './utils/CookieUtils';\nexport { CurrencyUtils } from './utils/CurrencyUtils';\nexport { DateUtils } from './utils/DateUtils';\nexport { DeviceUtils } from './utils/DeviceUtils';\nexport { Dom, $$ } from './utils/Dom';\nexport { DomUtils } from './utils/DomUtils';\nexport { EmailUtils } from './utils/EmailUtils';\nexport { HashUtils } from './utils/HashUtils';\nexport { HighlightUtils, StringAndHoles } from './utils/HighlightUtils';\nexport { HTMLUtils } from './utils/HtmlUtils';\nexport { KEYBOARD, KeyboardUtils } from './utils/KeyboardUtils';\nexport { LocalStorageUtils } from './utils/LocalStorageUtils';\nexport { OSUtils, OS_NAME } from './utils/OSUtils';\nexport { PopupUtils } from './utils/PopupUtils';\nexport { QueryUtils } from './utils/QueryUtils';\nexport { StreamHighlightUtils } from './utils/StreamHighlightUtils';\nexport { StringUtils } from './utils/StringUtils';\nexport { TimeSpan } from './utils/TimeSpanUtils';\nexport { Utils } from './utils/Utils';\nexport { UrlUtils } from './utils/UrlUtils';\n\n\n\n// WEBPACK FOOTER //\n// ./src/UtilsModules.ts","import { IExternalAdvancedSearchSection } from '../ui/AdvancedSearch/AdvancedSearchInput';\nimport { IQueryOptions } from '../controllers/QueryController';\nimport { IQueryResults } from '../rest/QueryResults';\n\n/**\n * Argument sent to all handlers bound on {@link AdvancedSearchEvents.buildingAdvancedSearch}\n */\nexport interface IBuildingAdvancedSearchEventArgs {\n  /**\n   * Sections which external code can populate by pushing into this array.\n   */\n  sections: IExternalAdvancedSearchSection[];\n  /**\n   * An easy way to execute a new query.\n   * @param options\n   */\n  executeQuery: (options: IQueryOptions) => Promise<IQueryResults>;\n}\n\n/**\n * This static class is there to contains the different string definition for all the events related to the {@link AdvancedSearch} component.\n */\nexport class AdvancedSearchEvents {\n  /**\n   * Triggered when the {@link AdvancedSearch} component is being built.\n   *\n   * Allows external code to add new sections in the **Advanced Search** panel.\n   *\n   * All bound handlers receive {@link IBuildingAdvancedSearchEventArgs} as an argument\n   *\n   * @type {string}\n   */\n  public static buildingAdvancedSearch = 'buildingAdvancedSearch';\n  public static executeAdvancedSearch = 'executeAdvancedSearch';\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/events/AdvancedSearchEvents.ts","import { history } from 'coveo.analytics';\nimport { CookieStorage, getAvailableStorage, NullStorage } from 'coveo.analytics/dist/storage';\n\nexport function buildHistoryStore() {\n  const historyStore = buildCookieHistoryStore();\n  (historyStore as any).store = getAvailableStorage();\n\n  return historyStore;\n}\n\nexport function buildNullHistoryStore() {\n  const historyStore = buildCookieHistoryStore();\n  (historyStore as any).store = new NullStorage();\n\n  return historyStore;\n}\n\nfunction buildCookieHistoryStore() {\n  const cookieStorage = new CookieStorage();\n  return new history.HistoryStore(cookieStorage);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/HistoryStore.ts","import { IFormWidget, IFormWidgetSettable } from './FormWidgets';\ndeclare function require(name: string);\nimport { $$ } from '../../utils/Dom';\nimport { DateUtils } from '../../utils/DateUtils';\nimport { exportGlobally } from '../../GlobalExports';\nimport { l } from '../../strings/Strings';\nimport { Assert } from '../../misc/Assert';\nconst Globalize = require('globalize');\nconst Pikaday = require('pikaday');\n\n/**\n * A date picker widget with standard styling.\n */\nexport class DatePicker implements IFormWidget, IFormWidgetSettable {\n  private element: HTMLInputElement;\n  private picker: Pikaday;\n  private wasReset = true;\n\n  static doExport = () => {\n    exportGlobally({\n      DatePicker: DatePicker\n    });\n  };\n\n  /**\n   * Creates a new `DatePicker`.\n   * @param onChange The function to call when a new value is selected in the date picker. This function takes the\n   * current `DatePicker` instance as an argument.\n   */\n  constructor(public onChange: (datePicker: DatePicker) => void = () => {}) {\n    Assert.exists(onChange);\n    this.buildContent();\n  }\n\n  /**\n   * Resets the date picker.\n   */\n  public reset() {\n    this.picker.setDate(undefined);\n    this.wasReset = true;\n    this.onChange(this);\n  }\n\n  /**\n   * Gets the element on which the date picker is bound.\n   * @returns {HTMLInputElement} The date picker element.\n   */\n  public getElement(): HTMLInputElement {\n    return this.element;\n  }\n\n  /**\n   * Gets the currently selected value in the date picker.\n   * @returns {string} A textual representation of the currently selected value (`YYYY-MM-DD` format).\n   */\n  public getValue(): string {\n    if (this.wasReset) {\n      return '';\n    }\n    let date = this.picker.getDate();\n    return date ? DateUtils.dateForQuery(this.picker.getDate()) : '';\n  }\n\n  /**\n   * Get the currently selected value in the date picker, as a Date object\n   * @returns {Date} A Date object for the current value, or null if the date picker was reset or a date has not been selected initially.\n   */\n  public getDateValue(): Date {\n    if (this.wasReset) {\n      return null;\n    }\n    return this.picker.getDate();\n  }\n\n  /**\n   * Sets the date picker value.\n   * @param date The value to set the date picker to. Must be a\n   * [Date](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Date) object.\n   */\n  public setValue(date: Date) {\n    Assert.exists(date);\n\n    this.picker.setDate(date);\n    this.wasReset = false;\n  }\n\n  /**\n   * Gets the element on which the date picker is bound.\n   * @returns {HTMLInputElement} The date picker element.\n   */\n  public build(): HTMLInputElement {\n    return this.element;\n  }\n\n  private buildContent() {\n    this.element = <HTMLInputElement>$$('input', { className: 'coveo-button', 'aria-label': l('Date') }).el;\n    this.element.readOnly = true;\n    this.picker = new Pikaday({\n      field: this.element,\n      onSelect: () => {\n        this.wasReset = false;\n        this.onChange.call(this, this);\n      },\n      i18n: {\n        previousMonth: l('PreviousMonth'),\n        nextMonth: l('NextMonth'),\n        months: Globalize.culture().calendar.months.names,\n        weekdays: Globalize.culture().calendar.days.names,\n        weekdaysShort: Globalize.culture().calendar.days.namesAbbr\n      }\n    });\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/FormWidgets/DatePicker.ts","import { IStringMap } from '../rest/GenericParam';\nimport { Logger } from '../misc/Logger';\nimport { Assert } from '../misc/Assert';\nimport { TimeSpan } from '../utils/TimeSpanUtils';\nimport { DeviceUtils } from '../utils/DeviceUtils';\nimport { Utils } from '../utils/Utils';\nimport { JQueryUtils } from '../utils/JQueryutils';\nimport * as _ from 'underscore';\nimport { UrlUtils } from '../utils/UrlUtils';\n\ndeclare const XDomainRequest;\n\nexport interface IEndpointCaller {\n  call<T>(params: IEndpointCallParameters): Promise<ISuccessResponse<T>>;\n  options: IEndpointCallerOptions;\n}\n\n/**\n * Parameters that can be used when calling an {@link EndpointCaller}\n */\nexport interface IEndpointCallParameters {\n  /**\n   * Url to target\n   */\n  url: string;\n  /**\n   * Array of query string params.<br/>\n   * eg: ['foo=1','bar=2']\n   */\n  queryString: string[];\n  /**\n   * Body of the request.<br/>\n   * key -> value map (JSON)\n   */\n  requestData: IStringMap<any>;\n  /**\n   * Request data type.<br/>\n   * eg: \"application/json\", \"application/x-www-form-urlencoded; charset=UTF-8\"\n   */\n  requestDataType?: string;\n  /**\n   * Or HTTP verb : GET, POST, PUT, etc.\n   */\n  method: string;\n  /**\n   * responseType of the request.</br>\n   * eg: \"text\", \"arraybuffer\" etc.\n   */\n  responseType: string;\n  /**\n   * Flag to specify if the endpoint should return different type of error as actual 200 success for the browser, but with the error code/message contained in the response.\n   */\n  errorsAsSuccess: boolean;\n}\n\n/**\n * Information about a request\n */\nexport interface IRequestInfo<T> {\n  /**\n   * Url that was requested\n   */\n  url: string;\n  /**\n   * The query string parameters that were used for this request\n   */\n  queryString: string[];\n  /**\n   * The data that was sent for this request\n   */\n  requestData: IStringMap<T>;\n  /**\n   * The requestDataType that was used for this request\n   */\n  requestDataType: string;\n  /**\n   * The timestamp at which the request started\n   */\n  begun: Date;\n  /**\n   * The method that was used for this request\n   */\n  method: string;\n  /**\n   * The headers for the request.\n   */\n  headers?: IStringMap<string>;\n}\n\n/**\n * A generic response\n */\nexport interface IResponse<T> {\n  /**\n   * Data of the response\n   */\n  data?: T;\n}\n\n/**\n * A generic success response\n */\nexport interface ISuccessResponse<T> extends IResponse<T> {\n  /**\n   * The time that the successfull response took to complete\n   */\n  duration: number;\n  /**\n   * Data of the response\n   */\n  data: T;\n}\n\n/**\n * An error response\n */\nexport interface IErrorResponse extends IResponse<IStringMap<any>> {\n  /**\n   * Status code for the error\n   */\n  statusCode: number;\n  /**\n   * Data about the error\n   */\n  data?: {\n    /**\n     * Message for the error\n     */\n    message?: string;\n    /**\n     * Type of the error\n     */\n    type?: string;\n    /**\n     * A report provided by the search api\n     */\n    executionReport?: string;\n    [key: string]: any;\n  };\n}\n\n/**\n * Possible options when creating a {@link EndpointCaller}\n */\nexport interface IEndpointCallerOptions {\n  /**\n   * The access token to use for this endpoint.\n   */\n  accessToken?: string;\n  /**\n   * The username to use to log into this endpoint. Used for basic auth.<br/>\n   * Not used if accessToken is provided.\n   */\n  username?: string;\n  /**\n   * The password to use to log into this endpoint. Used for basic auth.<br/>\n   * Not used if accessToken is provided.\n   */\n  password?: string;\n  /**\n   * A function which will allow external code to modify all endpoint call parameters before they are sent by the browser.\n   *\n   * Used in very specific scenario where the network infrastructure require special request headers to be added or removed, for example.\n   */\n  requestModifier?: (params: IRequestInfo<any>) => IRequestInfo<any>;\n\n  /**\n   * The XmlHttpRequest implementation to use instead of the native one.\n   * If not specified, the native one is used.\n   */\n  xmlHttpRequest?: new () => XMLHttpRequest;\n\n  /**\n   * Specifies that the request (and the Coveo Search API) does not need any kind of authentication.<br/>\n   * This flag is only needed for specific setups when your requests are being blocked by your browser. If your queries are executing correctly, you do not need to bother.<br/>\n   * Setting this flag will prevent the withCredentials option to be set on the XMLHttpRequest, allowing performing cross-domain requests on a server that returns * in the Access-Control-Allow-Origin HTTP header.\n   */\n  anonymous?: boolean;\n}\n\n// In ie8, XMLHttpRequest has no status property, so let's use this enum instead\nenum XMLHttpRequestStatus {\n  OPENED = XMLHttpRequest.OPENED || 1,\n  HEADERS_RECEIVED = XMLHttpRequest.HEADERS_RECEIVED || 2,\n  DONE = XMLHttpRequest.DONE || 4\n}\n\n/**\n * This class is in charge of calling an endpoint (eg: a {@link SearchEndpoint}).\n *\n * This means it's only uses to execute an XMLHttpRequest (for example), massage the response and check if there are errors.\n *\n * Will execute the call and return a Promise.\n *\n * Call using one of those options :\n *\n * * XMLHttpRequest for recent browser that support CORS, or if the endpoint is on the same origin.\n * * XDomainRequest for older IE browser that do not support CORS.\n * * Jsonp if all else fails, or is explicitly enabled.\n */\nexport class EndpointCaller implements IEndpointCaller {\n  public logger: Logger;\n\n  /**\n   * Set this property to true to enable Jsonp call to the endpoint.<br/>\n   * Be aware that jsonp is \"easier\" to setup endpoint wise, but has a lot of drawback and limitation for the client code.<br/>\n   * Default to false.\n   * @type {boolean}\n   */\n  public useJsonp = false;\n\n  private static JSONP_ERROR_TIMEOUT = 10000;\n  /**\n   * Create a new EndpointCaller.\n   * @param options Specify the authentication that will be used for this endpoint. Not needed if the endpoint is public and has no authentication\n   */\n  constructor(public options: IEndpointCallerOptions = {}) {\n    this.logger = new Logger(this);\n  }\n\n  public static convertJsonToQueryString(json: Record<string, any>): string[] {\n    Assert.exists(json);\n\n    return _.chain(json)\n      .map((value, key) => {\n        if (value != null) {\n          const stringValue = _.isObject(value) ? JSON.stringify(value) : value.toString();\n          return `${key}=${Utils.safeEncodeURIComponent(stringValue)}`;\n        }\n        return null;\n      })\n      .compact()\n      .value();\n  }\n\n  public static convertJsonToFormBody(json: Record<string, any>): string {\n    return this.convertJsonToQueryString(json).join('&');\n  }\n\n  /**\n   * Generic call to the endpoint using the provided {@link IEndpointCallParameters}.<br/>\n   * Internally, will decide which method to use to call the endpoint :<br/>\n   * -- XMLHttpRequest for recent browser that support CORS, or if the endpoint is on the same origin.<br/>\n   * -- XDomainRequest for older IE browser that do not support CORS.<br/>\n   * -- Jsonp if all else fails, or is explicitly enabled.\n   * @param params The parameters to use for the call\n   * @returns {any} A promise of the given type\n   */\n  public call<T>(params: IEndpointCallParameters): Promise<ISuccessResponse<T>> {\n    let requestInfo: IRequestInfo<T> = {\n      url: params.url,\n      queryString: params.errorsAsSuccess ? params.queryString.concat(['errorsAsSuccess=1']) : params.queryString,\n      requestData: params.requestData,\n      requestDataType: params.requestDataType || 'application/x-www-form-urlencoded; charset=UTF-8',\n      begun: new Date(),\n      method: params.method\n    };\n    requestInfo.headers = this.buildRequestHeaders(requestInfo);\n\n    if (_.isFunction(this.options.requestModifier)) {\n      requestInfo = this.options.requestModifier(requestInfo);\n    }\n\n    this.logger.trace('Performing REST request', requestInfo);\n    const urlObject = this.parseURL(requestInfo.url);\n    // In IE8, hostname and port return \"\" when we are on the same domain.\n    const isLocalHost = window.location.hostname === urlObject.hostname || urlObject.hostname === '';\n\n    const currentPort = window.location.port != '' ? window.location.port : window.location.protocol == 'https:' ? '443' : '80';\n    const isSamePort = currentPort == urlObject.port;\n    const isCrossOrigin = !(isLocalHost && isSamePort);\n    if (!this.useJsonp) {\n      if (this.isCORSSupported() || !isCrossOrigin) {\n        return this.callUsingXMLHttpRequest(requestInfo, params.responseType);\n      } else if (this.isXDomainRequestSupported()) {\n        return this.callUsingXDomainRequest(requestInfo);\n      } else {\n        return this.callUsingAjaxJsonP(requestInfo);\n      }\n    } else {\n      return this.callUsingAjaxJsonP(requestInfo);\n    }\n  }\n\n  /**\n   * Call the endpoint using XMLHttpRequest. Used internally by {@link EndpointCaller.call}.<br/>\n   * Will try internally to handle error if it can.<br/>\n   * Promise will otherwise fail with the error type.\n   * @param requestInfo The info about the request\n   * @param responseType The responseType. Default to text. https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/responseType\n   * @returns {Promise<T>|Promise}\n   */\n  public callUsingXMLHttpRequest<T>(requestInfo: IRequestInfo<T>, responseType = 'text'): Promise<ISuccessResponse<T>> {\n    return new Promise((resolve, reject) => {\n      const xmlHttpRequest = this.getXmlHttpRequest();\n\n      // Beware, most stuff must be set on the event that says the request is OPENED.\n      // Otherwise it'll bork on some browsers. Gotta love standards.\n\n      // This sent variable allowed to remove the second call of onreadystatechange with the state OPENED in IE11\n      let sent = false;\n\n      xmlHttpRequest.onreadystatechange = ev => {\n        if (xmlHttpRequest.readyState == XMLHttpRequestStatus.OPENED && !sent) {\n          sent = true;\n          xmlHttpRequest.withCredentials = !this.options.anonymous;\n\n          _.each(requestInfo.headers, (headerValue, headerKey) => {\n            xmlHttpRequest.setRequestHeader(headerKey, headerValue);\n          });\n\n          if (requestInfo.method == 'GET') {\n            xmlHttpRequest.send();\n          } else if (requestInfo.requestDataType.indexOf('application/json') === 0) {\n            xmlHttpRequest.send(JSON.stringify(requestInfo.requestData));\n          } else {\n            xmlHttpRequest.send(EndpointCaller.convertJsonToFormBody(requestInfo.requestData));\n          }\n\n          // The \"responseType\" varies if the request is a success or not.\n          // Therefore we postpone setting \"responseType\" until we know if the\n          // request is a success or not. Doing so, we avoid this potential\n          // error in Chrome:\n          //\n          //   Uncaught InvalidStateError: Failed to read the 'responseText'\n          //   property from 'XMLHttpRequest': The value is only accessible if\n          //   the object's 'responseType' is '' or 'text' (was 'document').\n          //\n        } else if (xmlHttpRequest.readyState == XMLHttpRequestStatus.HEADERS_RECEIVED) {\n          const status = xmlHttpRequest.status;\n\n          if (this.isSuccessHttpStatus(status)) {\n            xmlHttpRequest.responseType = <XMLHttpRequestResponseType>responseType;\n          } else {\n            xmlHttpRequest.responseType = 'text';\n          }\n        } else if (xmlHttpRequest.readyState == XMLHttpRequestStatus.DONE) {\n          const status = xmlHttpRequest.status;\n          let data;\n          switch (responseType) {\n            case 'json':\n              data = xmlHttpRequest.response;\n              // Work around a bug in IE11 where responseType jsonis not supported : the response comes back as a plain string\n              // Force the json parse manually\n              if (responseType == 'json' && DeviceUtils.getDeviceName() == 'IE') {\n                try {\n                  data = JSON.parse(data);\n                } catch (e) {\n                  // Do nothing, it probably means the data was JSON already\n                }\n              }\n              break;\n            case 'text':\n              data = this.tryParseResponseText(xmlHttpRequest.responseText, xmlHttpRequest.getResponseHeader('Content-Type'));\n              break;\n            default:\n              data = xmlHttpRequest.response;\n              break;\n          }\n\n          if (data == undefined) {\n            data = this.tryParseResponseText(xmlHttpRequest.responseText, xmlHttpRequest.getResponseHeader('Content-Type'));\n          }\n\n          if (this.isSuccessHttpStatus(status)) {\n            this.handleSuccessfulResponseThatMightBeAnError(requestInfo, data, resolve, reject);\n          } else {\n            this.handleError(requestInfo, xmlHttpRequest.status, data, reject);\n          }\n        }\n      };\n\n      let queryString = requestInfo.queryString;\n      if (requestInfo.method == 'GET') {\n        queryString = queryString.concat(EndpointCaller.convertJsonToQueryString(requestInfo.requestData));\n      }\n      xmlHttpRequest.open(requestInfo.method, this.combineUrlAndQueryString(requestInfo.url, queryString));\n    });\n  }\n\n  /**\n   * Call the endpoint using XDomainRequest https://msdn.microsoft.com/en-us/library/cc288060(v=vs.85).aspx<br/>\n   * Used for IE8/9\n   * @param requestInfo The info about the request\n   * @returns {Promise<T>|Promise}\n   */\n  public callUsingXDomainRequest<T>(requestInfo: IRequestInfo<T>): Promise<ISuccessResponse<T>> {\n    return new Promise((resolve, reject) => {\n      let queryString = requestInfo.queryString.concat([]);\n\n      // XDomainRequest don't support including stuff in the header, so we must\n      // put the access token in the query string if we have one.\n      if (this.options.accessToken) {\n        queryString.push('access_token=' + Utils.safeEncodeURIComponent(this.options.accessToken));\n      }\n\n      const xDomainRequest = new XDomainRequest();\n      if (requestInfo.method == 'GET') {\n        queryString = queryString.concat(EndpointCaller.convertJsonToQueryString(requestInfo.requestData));\n      }\n      xDomainRequest.open(requestInfo.method, this.combineUrlAndQueryString(requestInfo.url, queryString));\n\n      xDomainRequest.onload = () => {\n        const data = this.tryParseResponseText(xDomainRequest.responseText, xDomainRequest.contentType);\n        this.handleSuccessfulResponseThatMightBeAnError(requestInfo, data, resolve, reject);\n      };\n\n      xDomainRequest.onerror = () => {\n        const data = this.tryParseResponseText(xDomainRequest.responseText, xDomainRequest.contentType);\n        this.handleError(requestInfo, 0, data, reject);\n      };\n\n      // We must set those functions otherwise it will sometime fail in IE\n      xDomainRequest.ontimeout = () => this.logger.error('Request timeout', xDomainRequest, requestInfo.requestData);\n      xDomainRequest.onprogress = () => this.logger.trace('Request progress', xDomainRequest, requestInfo.requestData);\n\n      // We must open the request in a separate thread, for obscure reasons\n      _.defer(() => {\n        if (requestInfo.method == 'GET') {\n          xDomainRequest.send();\n        } else {\n          xDomainRequest.send(EndpointCaller.convertJsonToFormBody(requestInfo.requestData));\n        }\n      });\n    });\n  }\n\n  /**\n   * Call the endpoint using Jsonp https://en.wikipedia.org/wiki/JSONP<br/>\n   * Should be used for dev only, or for very special setup as using jsonp has a lot of drawbacks.\n   * @param requestInfo The info about the request\n   * @returns {Promise<T>|Promise}\n   */\n  public callUsingAjaxJsonP<T>(requestInfo: IRequestInfo<T>): Promise<ISuccessResponse<T>> {\n    let jQuery = JQueryUtils.getJQuery();\n    Assert.check(jQuery, 'Using jsonp without having included jQuery is not supported.');\n    return new Promise((resolve, reject) => {\n      const queryString = requestInfo.queryString.concat(EndpointCaller.convertJsonToQueryString(requestInfo.requestData));\n\n      // JSONP don't support including stuff in the header, so we must\n      // put the access token in the query string if we have one.\n      if (this.options.accessToken) {\n        queryString.push('access_token=' + Utils.safeEncodeURIComponent(this.options.accessToken));\n      }\n\n      queryString.push('callback=?');\n\n      jQuery.ajax({\n        url: this.combineUrlAndQueryString(requestInfo.url, queryString),\n        dataType: 'jsonp',\n        success: (data: any) => this.handleSuccessfulResponseThatMightBeAnError(requestInfo, data, resolve, reject),\n        timeout: EndpointCaller.JSONP_ERROR_TIMEOUT,\n        error: () => this.handleError(requestInfo, 0, undefined, reject)\n      });\n    });\n  }\n\n  private parseURL(url: string) {\n    const urlObject = document.createElement('a');\n    urlObject.href = url;\n    return urlObject;\n  }\n\n  private getXmlHttpRequest(): XMLHttpRequest {\n    const newXmlHttpRequest = this.options.xmlHttpRequest || XMLHttpRequest;\n    return new newXmlHttpRequest();\n  }\n\n  private handleSuccessfulResponseThatMightBeAnError<T>(requestInfo: IRequestInfo<T>, data: any, success, error) {\n    if (this.isErrorResponseBody(data)) {\n      this.handleError(requestInfo, data.statusCode, data, error);\n    } else {\n      this.handleSuccess(requestInfo, data, success);\n    }\n  }\n\n  private handleSuccess<T>(requestInfo: IRequestInfo<T>, data: T, success) {\n    const querySuccess: ISuccessResponse<T> = {\n      duration: TimeSpan.fromDates(requestInfo.begun, new Date()).getMilliseconds(),\n      data\n    };\n\n    this.logger.trace('REST request successful', data, requestInfo);\n    success(querySuccess);\n  }\n\n  private handleError<T>(requestInfo: IRequestInfo<T>, status: number, data: any, error) {\n    const queryError: IErrorResponse = {\n      statusCode: status,\n      data: data\n    };\n    this.logger.error('REST request failed', status, data, requestInfo);\n    error(queryError);\n  }\n\n  private combineUrlAndQueryString(url: string, queryString: string[]): string {\n    return UrlUtils.normalizeAsString({\n      paths: [url],\n      queryAsString: queryString\n    });\n  }\n\n  private isXDomainRequestSupported(): boolean {\n    return 'XDomainRequest' in window;\n  }\n\n  private isCORSSupported(): boolean {\n    return 'withCredentials' in this.getXmlHttpRequest();\n  }\n\n  private isSuccessHttpStatus(status: number): boolean {\n    return (status >= 200 && status < 300) || status === 304;\n  }\n\n  private tryParseResponseText(json: string, contentType: string): any {\n    if (contentType != null && contentType.indexOf('application/json') != -1) {\n      if (Utils.isNonEmptyString(json)) {\n        try {\n          return JSON.parse(json);\n        } catch (ex) {\n          return undefined;\n        }\n      } else {\n        return undefined;\n      }\n    } else {\n      return json;\n    }\n  }\n\n  private isErrorResponseBody(data: any): boolean {\n    if (data && data.statusCode) {\n      return !this.isSuccessHttpStatus(data.statusCode);\n    } else {\n      return false;\n    }\n  }\n\n  private buildRequestHeaders<T>(requestInfo: IRequestInfo<T>): IStringMap<string> {\n    let headers: IStringMap<string> = {};\n    if (this.options.accessToken) {\n      headers['Authorization'] = `Bearer ${this.options.accessToken}`;\n    } else if (this.options.username && this.options.password) {\n      headers['Authorization'] = `Basic ${btoa(this.options.username + ':' + this.options.password)}`;\n    }\n\n    if (requestInfo.method == 'GET') {\n      return headers;\n    }\n\n    if (requestInfo.requestDataType.indexOf('application/json') === 0) {\n      headers['Content-Type'] = 'application/json; charset=UTF-8';\n    } else {\n      headers['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8';\n    }\n\n    return headers;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/rest/EndpointCaller.ts","import 'styling/_Result';\nimport 'styling/_ResultFrame';\nimport 'styling/_ResultList';\nimport { chain, compact, contains, each, flatten, map, unique, without, uniqueId, find } from 'underscore';\nimport {\n  IBuildingQueryEventArgs,\n  IDuringQueryEventArgs,\n  INewQueryEventArgs,\n  IQueryErrorEventArgs,\n  IQuerySuccessEventArgs,\n  QueryEvents\n} from '../../events/QueryEvents';\nimport { IResultLayoutPopulateArgs, ResultLayoutEvents } from '../../events/ResultLayoutEvents';\nimport {\n  IChangeLayoutEventArgs,\n  IDisplayedNewResultEventArgs,\n  IDisplayedNewResultsEventArgs,\n  ResultListEvents\n} from '../../events/ResultListEvents';\nimport { exportGlobally } from '../../GlobalExports';\nimport { Assert } from '../../misc/Assert';\nimport { Defer } from '../../misc/Defer';\nimport { MODEL_EVENTS } from '../../models/Model';\nimport { QUERY_STATE_ATTRIBUTES } from '../../models/QueryStateModel';\nimport { IQueryResult } from '../../rest/QueryResult';\nimport { IQueryResults } from '../../rest/QueryResults';\nimport { DeviceUtils } from '../../utils/DeviceUtils';\nimport { $$, Doc, Win } from '../../utils/Dom';\nimport { DomUtils } from '../../utils/DomUtils';\nimport { Utils } from '../../utils/Utils';\nimport { analyticsActionCauseList, IAnalyticsNoMeta } from '../Analytics/AnalyticsActionListMeta';\nimport { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { IInitializationParameters, IInitResult, Initialization } from '../Base/Initialization';\nimport { InitializationPlaceholder } from '../Base/InitializationPlaceholder';\nimport { TemplateComponentOptions } from '../Base/TemplateComponentOptions';\nimport { ResponsiveDefaultResultTemplate } from '../ResponsiveComponents/ResponsiveDefaultResultTemplate';\nimport { ValidLayout, RendererValidLayout } from '../ResultLayoutSelector/ValidLayout';\nimport { CoreHelpers } from '../Templates/CoreHelpers';\nimport { DefaultRecommendationTemplate } from '../Templates/DefaultRecommendationTemplate';\nimport { DefaultResultTemplate } from '../Templates/DefaultResultTemplate';\nimport { TableTemplate } from '../Templates/TableTemplate';\nimport { Template } from '../Templates/Template';\nimport { TemplateCache } from '../Templates/TemplateCache';\nimport { TemplateList } from '../Templates/TemplateList';\nimport { ResultContainer } from './ResultContainer';\nimport { ResultListCardRenderer } from './ResultListCardRenderer';\nimport { ResultListRenderer } from './ResultListRenderer';\nimport { ResultListTableRenderer } from './ResultListTableRenderer';\nimport ResultLayoutSelectorModule = require('../ResultLayoutSelector/ResultLayoutSelector');\nimport { IResultListOptions } from './ResultListOptions';\nimport { ResultListUtils } from '../../utils/ResultListUtils';\nimport { TemplateToHtml, ITemplateToHtml } from '../Templates/TemplateToHtml';\n\nCoreHelpers.exportAllHelpersGlobally(window['Coveo']);\n\ntype WaitAnimation = 'fade' | 'spinner' | 'none';\n\n/**\n * The `ResultList` component is responsible for displaying query results by applying one or several result templates\n * (see [Result Templates](https://docs.coveo.com/en/413/)).\n *\n * It is possible to include multiple `ResultList` components along with a single `ResultLayout`\n * component in a search page to provide different result layouts (see\n * [Result Layouts](https://docs.coveo.com/en/360/)).\n *\n * This component supports infinite scrolling (see the\n * [`enableInfiniteScroll`]{@link ResultList.options.enableInfiniteScroll} option).\n */\nexport class ResultList extends Component {\n  private static getDefaultTemplate(e: HTMLElement): Template {\n    const template = ResultList.loadTemplatesFromCache();\n    if (template != null) {\n      return template;\n    }\n\n    const component = <ResultList>Component.get(e);\n    if (Coveo['Recommendation'] && component.searchInterface instanceof Coveo['Recommendation']) {\n      return new DefaultRecommendationTemplate();\n    }\n    return new DefaultResultTemplate();\n  }\n\n  private static loadTemplatesFromCache(): Template {\n    var pageTemplateNames = TemplateCache.getResultListTemplateNames();\n    if (pageTemplateNames.length > 0) {\n      return new TemplateList(compact(map(pageTemplateNames, templateName => TemplateCache.getTemplate(templateName))));\n    }\n\n    return null;\n  }\n\n  static ID = 'ResultList';\n\n  static doExport = () => {\n    exportGlobally({\n      ResultList: ResultList\n    });\n  };\n\n  /**\n   * The options for the ResultList\n   * @componentOptions\n   */\n  static options: IResultListOptions = {\n    /**\n     * The element inside which to insert the rendered result templates.\n     *\n     * Performing a new query clears the content of this element.\n     *\n     * You can change the container by specifying its selector (e.g.,\n     * `data-result-container-selector='#someCssSelector'`).\n     *\n     * If you specify no value for this option, a `div` element will be dynamically created and appended to the result\n     * list. This element will then be used as a result container.\n     */\n    resultsContainer: ComponentOptions.buildChildHtmlElementOption({ alias: 'resultContainerSelector' }),\n    resultTemplate: TemplateComponentOptions.buildTemplateOption({ defaultFunction: ResultList.getDefaultTemplate }),\n\n    /**\n     * The type of animation to display while waiting for a query to return.\n     *\n     * The possible values are:\n     * - `fade`: Fades out the current list of results while the query is executing.\n     * - `spinner`: Shows a spinning animation while the query is executing.\n     * - `none`: Use no animation during queries.\n     *\n     * See also the [`waitAnimationContainer`]{@link ResultList.options.waitAnimationContainer} option.\n     *\n     * @examples spinner\n     */\n    waitAnimation: ComponentOptions.buildStringOption<WaitAnimation>({ defaultValue: 'none' }),\n\n    /**\n     * The element inside which to display the [`waitAnimation`]{@link ResultList.options.waitAnimation}.\n     *\n     * You can change this by specifying a CSS selector (e.g.,\n     * `data-wait-animation-container-selector='#someCssSelector'`).\n     *\n     * Defaults to the value of the [`resultsContainer`]{@link ResultList.options.resultsContainer} option.\n     */\n    waitAnimationContainer: ComponentOptions.buildChildHtmlElementOption({\n      postProcessing: (value, options: IResultListOptions) => value || options.resultsContainer\n    }),\n\n    /**\n     * Whether to automatically retrieve an additional page of results and append it to the\n     * results that the `ResultList` is currently displaying when the user scrolls down to the bottom of the\n     * [`infiniteScrollContainer`]{@link ResultList.options.infiniteScrollContainer}.\n     *\n     * See also the [`infiniteScrollPageSize`]{@link ResultList.options.infiniteScrollPageSize} and\n     * [`enableInfiniteScrollWaitingAnimation`]{@link ResultList.options.enableInfiniteScrollWaitingAnimation} options.\n     *\n     * It is important to specify the `infiniteScrollContainer` option manually if you want the scrolling element to be\n     * something else than the default `window` element. Otherwise, you might find yourself in a strange state where the\n     * framework rapidly triggers multiple successive query.\n     */\n    enableInfiniteScroll: ComponentOptions.buildBooleanOption({ defaultValue: false }),\n\n    /**\n     * The number of additional results to fetch when the user scrolls down to the bottom of the\n     * [`infiniteScrollContainer`]{@link ResultList.options.infiniteScrollContainer}.\n     *\n     * @examples 5\n     */\n    infiniteScrollPageSize: ComponentOptions.buildNumberOption({\n      defaultValue: 10,\n      min: 1,\n      depend: 'enableInfiniteScroll'\n    }),\n\n    /**\n     * The element that triggers fetching additional results when the end user scrolls down to its bottom.\n     *\n     * You can change the container by specifying its selector (e.g.,\n     * `data-infinite-scroll-container-selector='#someCssSelector'`).\n     *\n     * By default, the framework uses the first vertically scrollable parent element it finds, starting from the\n     * `ResultList` element itself. A vertically scrollable element is an element whose CSS `overflow-y` attribute is\n     * `scroll`.\n     *\n     * This implies that if the framework can find no scrollable parent, it uses the `window` itself as a scrollable\n     * container.\n     *\n     * This heuristic is not perfect, for technical reasons. There are always some corner case CSS combination which the\n     * framework will not be able to correctly detect as 'scrollable'.\n     *\n     * It is highly recommended that you manually set this option if you wish something else than the `window` to be the\n     * scrollable element.\n     */\n    infiniteScrollContainer: ComponentOptions.buildChildHtmlElementOption({\n      depend: 'enableInfiniteScroll',\n      defaultFunction: element => ComponentOptions.findParentScrolling(element)\n    }),\n\n    /**\n     * Whether to display the [`waitingAnimation`]{@link ResultList.options.waitAnimation} while fetching additional\n     * results.\n     */\n    enableInfiniteScrollWaitingAnimation: ComponentOptions.buildBooleanOption({\n      depend: 'enableInfiniteScroll',\n      defaultValue: true\n    }),\n    mobileScrollContainer: ComponentOptions.buildSelectorOption({\n      defaultFunction: () => <HTMLElement>document.querySelector('.coveo-results-column')\n    }),\n\n    /**\n     * Whether the `ResultList` should scan its result templates to discover which fields it must request to\n     * be able to render all results.\n     *\n     * Setting this option to `true` ensures that the Coveo Search API does not return fields that are unnecessary for\n     * the UI to function.\n     * \n     * If you set this option to `true`, the fields referenced in your result folding templates won't be automatically resolved.\n     * In such a case, you must manually specify those fields using the [`fieldsToInclude`]{@link ResultList.options.fieldsToInclude} option.\n     *\n     * **Notes:**\n     *\n     * - Many interfaces created with the JavaScript Search Interface Editor explicitly set this option to `true`.   \n     * - You cannot set this option to `true` in the Coveo for Sitecore integration.\n     */\n    autoSelectFieldsToInclude: ComponentOptions.buildBooleanOption({ defaultValue: false }),\n\n    /**\n     * A list of fields to include in the query results.\n     *\n     * If you set the [`autoSelectFieldsToInclude`]{@link ResultList.options.autoSelectFieldsToInclude} option to\n     * `true`, the Coveo Search API returns the fields you specify for this option (if those fields are available) in\n     * addition to the fields which the `ResultList` automatically requests. Note that the `autoSelectFieldsToInclude`\n     * option doesn't automatically request fields for folding templates; in such a case, you must manually specify \n     * fields using this option to avoid empty results.\n     *\n     * If you set the [`autoSelectFieldsToInclude`]{@link ResultList.options.autoSelectFieldsToInclude} option to\n     * `false`, the Coveo Search API only returns the fields you specify for this option (if those fields are\n     * available).\n     * \n     * If you set the [`autoSelectFieldsToInclude`]{@link ResultList.options.autoSelectFieldsToInclude} option to\n     * `false` and leave this option undefined, the Coveo Search API returns all available fields.\n     */\n    fieldsToInclude: ComponentOptions.buildFieldsOption({ includeInResults: true }),\n\n    /**\n     * Specifies the layout to use when displaying results in this `ResultList` (see\n     * [Result Layouts](https://docs.coveo.com/en/360/)). Specifying a value for this option automatically\n     * populates a [`ResultLayout`]{@link ResultLayout} component with a switcher for the layout.\n     *\n     * For example, if there are two `ResultList` components in the page, one with its `layout` set to `list` and the\n     * other with the same option set to `card`, then the `ResultLayout` component will render two buttons respectively\n     * entitled **List** and **Card**.\n     *\n     * See the [`ValidLayout`]{@link ValidLayout} type for the list of possible values.\n     *\n     * @examples card\n     */\n    layout: ComponentOptions.buildStringOption<ValidLayout>({\n      defaultValue: 'list',\n      required: true\n    }),\n\n    /**\n     * Whether to scroll back to the top of the page when the end-user:\n     *  - interacts with a facet when [`infiniteScrollContainer`]{@link ResultList.options.infiniteScrollContainer} is set to `true`\n     *  - interacts with the [`Pager`]{@link Pager} component when [`infiniteScrollContainer`]{@link ResultList.options.infiniteScrollContainer} is set to `false`\n     *\n     * **Note:** Setting this option to `false` has no effect on dynamic facets. To disable this behavior on a `DynamicFacet` component, you must set its own [`enableScrollToTop`]{@link DynamicFacet.options.enableScrollToTop} option to `false`.\n     *\n     * @availablesince [July 2019 Release (v2.6459)](https://docs.coveo.com/en/2938/)\n     */\n    enableScrollToTop: ComponentOptions.buildBooleanOption({\n      defaultValue: true\n    })\n  };\n\n  public static resultCurrentlyBeingRendered: IQueryResult = null;\n  public currentlyDisplayedResults: IQueryResult[] = [];\n  private fetchingMoreResults: Promise<IQueryResults>;\n  private reachedTheEndOfResults = false;\n  private disableLayoutChange = false;\n  private renderer: ResultListRenderer;\n  private resultContainer: ResultContainer;\n\n  // This variable serves to block some setup where the framework fails to correctly identify the \"real\" scrolling container.\n  // Since it's not technically feasible to correctly identify the scrolling container in every possible scenario without some very complex logic, we instead try to add some kind of mechanism to\n  // block runaway requests where UI will keep asking more results in the index, eventually bringing the browser to it's knee.\n  // Those successive request are needed in \"displayMoreResults\" to ensure we fill the scrolling container correctly.\n  // Since the container is not identified correctly, it is never \"full\", so we keep asking for more.\n  // It is reset every time the user actually scroll the container manually.\n  private successiveScrollCount = 0;\n  private static MAX_AMOUNT_OF_SUCESSIVE_REQUESTS = 5;\n\n  /**\n   * Creates a new `ResultList` component. Binds various event related to queries (e.g., on querySuccess ->\n   * renderResults). Binds scroll event if the [`enableInfiniteScroll`]{@link ResultList.options.enableInfiniteScroll}\n   * option is `true`.\n   * @param element The HTMLElement on which to instantiate the component.\n   * @param options The options for the `ResultList` component.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time).\n   * @param elementClassId The class that this component should instantiate. Components that extend the base ResultList\n   * use this. Default value is `CoveoResultList`.\n   */\n  constructor(\n    public element: HTMLElement,\n    public options?: IResultListOptions,\n    public bindings?: IComponentBindings,\n    elementClassId: string = ResultList.ID\n  ) {\n    super(element, elementClassId, bindings);\n    this.options = ComponentOptions.initComponentOptions(element, ResultList, options);\n\n    Assert.exists(element);\n    Assert.exists(this.options);\n    Assert.exists(this.options.resultTemplate);\n    Assert.exists(this.options.infiniteScrollContainer);\n\n    this.showOrHideElementsDependingOnState(false, false);\n\n    this.addListeners();\n\n    this.resultContainer = this.initResultContainer();\n    Assert.exists(this.options.resultsContainer);\n\n    this.initWaitAnimationContainer();\n    Assert.exists(this.options.waitAnimationContainer);\n\n    this.setupTemplatesVersusLayouts();\n    $$(this.root).on(ResultLayoutEvents.populateResultLayout, (e, args: IResultLayoutPopulateArgs) =>\n      args.layouts.push(this.options.layout)\n    );\n    this.setupRenderer();\n    this.makeElementFocusable();\n    this.ensureHasId();\n  }\n\n  private addListeners() {\n    this.bind.onRootElement<INewQueryEventArgs>(QueryEvents.newQuery, (args: INewQueryEventArgs) => this.handleNewQuery());\n    this.bind.onRootElement<IBuildingQueryEventArgs>(QueryEvents.buildingQuery, (args: IBuildingQueryEventArgs) =>\n      this.handleBuildingQuery(args)\n    );\n    this.bind.onRootElement<IQuerySuccessEventArgs>(QueryEvents.querySuccess, (args: IQuerySuccessEventArgs) =>\n      this.handleQuerySuccess(args)\n    );\n    this.bind.onRootElement<IDuringQueryEventArgs>(QueryEvents.duringQuery, (args: IDuringQueryEventArgs) => this.handleDuringQuery());\n    this.bind.onRootElement<IQueryErrorEventArgs>(QueryEvents.queryError, (args: IQueryErrorEventArgs) => this.handleQueryError());\n    $$(this.root).on(ResultListEvents.changeLayout, (e: Event, args: IChangeLayoutEventArgs) => this.handleChangeLayout(args));\n\n    if (this.options.enableInfiniteScroll) {\n      this.addInfiniteScrollListeners();\n    } else {\n      this.addPagerListeners();\n    }\n  }\n\n  private addInfiniteScrollListeners() {\n    this.bind.on(<HTMLElement>this.options.infiniteScrollContainer, 'scroll', () => {\n      this.successiveScrollCount = 0;\n      this.handleScrollOfResultList();\n    });\n    this.bind.onRootElement(QueryEvents.deferredQuerySuccess, () => {\n      setTimeout(() => {\n        this.scrollToTopIfEnabled();\n      }, 0);\n    });\n  }\n\n  private addPagerListeners() {\n    this.bind.onQueryState(MODEL_EVENTS.CHANGE_ONE, QUERY_STATE_ATTRIBUTES.FIRST, () => {\n      this.bind.oneRootElement(QueryEvents.deferredQuerySuccess, () => {\n        setTimeout(() => {\n          this.scrollToTopIfEnabled();\n        }, 0);\n      });\n    });\n  }\n\n  /**\n   * Get the fields needed to be automatically included in the query for this result list.\n   * @returns {string[]}\n   */\n  public getAutoSelectedFieldsToInclude(): string[] {\n    return chain(this.options.resultTemplate.getFields()).concat(this.getMinimalFieldsToInclude()).compact().unique().value();\n  }\n\n  private setupTemplatesVersusLayouts() {\n    const layoutClassToAdd = `coveo-${this.options.layout}-layout-container`;\n    this.resultContainer.addClass(layoutClassToAdd);\n\n    if (this.options.layout === 'table') {\n      this.options.resultTemplate = new TableTemplate((<TemplateList>this.options.resultTemplate).templates || []);\n    }\n\n    // A TemplateList is the scenario where the result template are directly embedded inside the ResultList\n    // This is the typical scenario when a page gets created by the interface editor, for example.\n    // In that case, we try to stick closely that what is actually configured inside the page, and do no \"special magic\".\n    // Stick to the \"hardcoded\" configuration present in the page.\n    // We only add the correct layout options if it has not been set manually.\n    if (this.options.resultTemplate instanceof TemplateList) {\n      each((<TemplateList>this.options.resultTemplate).templates, (tmpl: Template) => {\n        if (!tmpl.layout) {\n          tmpl.layout = <ValidLayout>this.options.layout;\n        }\n      });\n    } else if (this.options.resultTemplate instanceof DefaultResultTemplate && this.options.layout == 'list') {\n      ResponsiveDefaultResultTemplate.init(this.root, this, {});\n    }\n  }\n\n  /**\n   * Empties the current result list content and appends the given array of HTMLElement.\n   *\n   * Can append to existing elements in the result list, or replace them.\n   *\n   * Triggers the `newResultsDisplayed` and `newResultDisplayed` events.\n   * @param resultsElement\n   * @param append\n   */\n  public renderResults(resultElements: HTMLElement[], append = false): Promise<void> {\n    if (!append) {\n      this.resultContainer.empty();\n    }\n\n    return this.renderer\n      .renderResults(resultElements, append, this.triggerNewResultDisplayed.bind(this))\n      .then(() => this.triggerNewResultsDisplayed());\n  }\n\n  /**\n   * Builds and returns an array of HTMLElement with the given result set.\n   * @param results the result set to build an array of HTMLElement from.\n   */\n  public buildResults(results: IQueryResults): Promise<HTMLElement[]> {\n    const layout = <RendererValidLayout>this.options.layout;\n    return this.templateToHtml.buildResults(results, layout, this.currentlyDisplayedResults);\n  }\n\n  /**\n   * Builds and returns an HTMLElement for the given result.\n   * @param result the result to build an HTMLElement from.\n   * @returns {HTMLElement}\n   */\n  public buildResult(result: IQueryResult): Promise<HTMLElement> {\n    const layout = <RendererValidLayout>this.options.layout;\n    return this.templateToHtml.buildResult(result, layout, this.currentlyDisplayedResults);\n  }\n\n  /**\n   * Executes a query to fetch new results. After the query returns, renders the new results.\n   *\n   * Asserts that there are more results to display by verifying whether the last query has returned as many results as\n   * requested.\n   *\n   * Asserts that the `ResultList` is not currently fetching results.\n   * @param count The number of results to fetch and display.\n   */\n  public displayMoreResults(count: number) {\n    Assert.isLargerOrEqualsThan(1, count);\n\n    if (this.isCurrentlyFetchingMoreResults()) {\n      this.logger.warn(\"Ignoring request to display more results since we're already doing so\");\n      return;\n    }\n    if (!this.hasPotentiallyMoreResultsToDisplay()) {\n      this.logger.warn(\"Ignoring request to display more results since we know there aren't more to display\");\n      return;\n    }\n\n    if (this.options.enableInfiniteScrollWaitingAnimation) {\n      this.showWaitingAnimationForInfiniteScrolling();\n    }\n\n    return this.fetchAndRenderMoreResults(count);\n  }\n\n  public get templateToHtml() {\n    const templateToHtmlArgs: ITemplateToHtml = {\n      resultTemplate: this.options.resultTemplate,\n      searchInterface: this.searchInterface,\n      queryStateModel: this.queryStateModel\n    };\n    return new TemplateToHtml(templateToHtmlArgs);\n  }\n\n  /**\n   * Gets the list of currently displayed result.\n   * @returns {IQueryResult[]}\n   */\n  public getDisplayedResults(): IQueryResult[] {\n    return this.currentlyDisplayedResults;\n  }\n\n  /**\n   * Gets the list of currently displayed result HTMLElement.\n   * @returns {HTMLElement[]}\n   */\n  public getDisplayedResultsElements(): HTMLElement[] {\n    return this.resultContainer.getResultElements();\n  }\n\n  public enable(): void {\n    this.disableLayoutChange = false;\n    if (this.resultLayoutSelectors.length > 0) {\n      this.enableBasedOnActiveLayouts();\n    } else {\n      super.enable();\n      $$(this.element).removeClass('coveo-hidden');\n    }\n  }\n\n  public disable(): void {\n    super.disable();\n    const otherLayoutsStillActive = map(this.otherResultLists, otherResultList => otherResultList.options.layout);\n    if (!contains(otherLayoutsStillActive, this.options.layout) && !this.disableLayoutChange) {\n      each(this.resultLayoutSelectors, resultLayoutSelector => {\n        resultLayoutSelector.disableLayouts([this.options.layout] as ValidLayout[]);\n      });\n    }\n    this.disableLayoutChange = false;\n    $$(this.element).addClass('coveo-hidden');\n  }\n\n  protected autoCreateComponentsInsideResult(element: HTMLElement, result: IQueryResult): IInitResult {\n    return this.templateToHtml.autoCreateComponentsInsideResult(element, result);\n  }\n\n  protected triggerNewResultDisplayed(result: IQueryResult, resultElement: HTMLElement) {\n    const args: IDisplayedNewResultEventArgs = {\n      result: result,\n      item: resultElement\n    };\n    $$(this.element).trigger(ResultListEvents.newResultDisplayed, args);\n  }\n\n  protected triggerNewResultsDisplayed() {\n    const args: IDisplayedNewResultsEventArgs = {\n      isInfiniteScrollEnabled: this.options.enableInfiniteScroll\n    };\n    $$(this.element).trigger(ResultListEvents.newResultsDisplayed, args);\n  }\n\n  private async fetchAndRenderMoreResults(count: number): Promise<IQueryResults> {\n    this.fetchingMoreResults = this.queryController.fetchMore(count);\n\n    try {\n      const data = await this.fetchingMoreResults;\n      Assert.exists(data);\n      this.usageAnalytics.logCustomEvent<IAnalyticsNoMeta>(analyticsActionCauseList.pagerScrolling, {}, this.element);\n\n      this.reachedTheEndOfResults = count > data.results.length;\n      this.renderNewResults(data);\n\n      this.resetStateAfterFetchingMoreResults();\n\n      return data;\n    } catch (e) {\n      this.resetStateAfterFetchingMoreResults();\n      return Promise.reject(e);\n    }\n  }\n\n  private async renderNewResults(data: IQueryResults) {\n    const elements = await this.buildResults(data);\n    this.renderResults(elements, true);\n    this.currentlyDisplayedResults.push(...data.results);\n    this.triggerNewResultsDisplayed();\n  }\n\n  private resetStateAfterFetchingMoreResults() {\n    this.hideWaitingAnimationForInfiniteScrolling();\n    this.fetchingMoreResults = undefined;\n    Defer.defer(() => {\n      this.successiveScrollCount++;\n      if (this.successiveScrollCount <= ResultList.MAX_AMOUNT_OF_SUCESSIVE_REQUESTS) {\n        this.handleScrollOfResultList();\n      } else {\n        this.logger.info(\n          `Result list has triggered 5 consecutive queries to try and fill up the scrolling container, but it is still unable to do so.\n          Try explicitly setting the 'data-infinite-scroll-container-selector' option on the result list. See: https://coveo.github.io/search-ui/components/resultlist.html#options.infinitescrollcontainer`\n        );\n      }\n    });\n  }\n\n  private handleDuringQuery() {\n    this.logger.trace('Emptying the result container');\n    this.cancelFetchingMoreResultsIfNeeded();\n    this.showWaitingAnimation();\n    this.showOrHideElementsDependingOnState(false, false);\n  }\n\n  private handleQueryError() {\n    this.hideWaitingAnimation();\n    this.resultContainer.empty();\n    this.currentlyDisplayedResults = [];\n    this.reachedTheEndOfResults = true;\n  }\n\n  private handleQuerySuccess(data: IQuerySuccessEventArgs) {\n    Assert.exists(data);\n    Assert.exists(data.results);\n    const results = data.results;\n    this.logger.trace('Received query results from new query', results);\n    this.hideWaitingAnimation();\n\n    ResultList.resultCurrentlyBeingRendered = undefined;\n    this.reachedTheEndOfResults = data.query.numberOfResults > data.results.results.length;\n\n    this.currentlyDisplayedResults = [];\n    this.buildResults(data.results).then(async (elements: HTMLElement[]) => {\n      await this.renderResults(elements);\n\n      this.showOrHideElementsDependingOnState(true, this.currentlyDisplayedResults.length != 0);\n\n      if (DeviceUtils.isMobileDevice() && this.options.mobileScrollContainer != undefined) {\n        this.options.mobileScrollContainer.scrollTop = 0;\n      }\n\n      if (this.options.enableInfiniteScroll && results.results.length == data.queryBuilder.numberOfResults) {\n        // This will check right away if we need to add more results to make the scroll container full & scrolling.\n        this.scrollToTopIfEnabled();\n        this.handleScrollOfResultList();\n      }\n    });\n  }\n\n  private handleScrollOfResultList() {\n    if (this.isCurrentlyFetchingMoreResults() || !this.options.enableInfiniteScroll) {\n      return;\n    }\n    if (this.isScrollingOfResultListAlmostAtTheBottom() && this.hasPotentiallyMoreResultsToDisplay()) {\n      this.displayMoreResults(this.options.infiniteScrollPageSize);\n    }\n  }\n\n  private scrollToTopIfEnabled() {\n    if (!this.options.enableScrollToTop) {\n      return;\n    }\n\n    ResultListUtils.scrollToTop(this.root);\n  }\n\n  private handleNewQuery() {\n    $$(this.element).removeClass('coveo-hidden');\n    ResultList.resultCurrentlyBeingRendered = undefined;\n  }\n\n  private get otherResultLists() {\n    const allResultLists = this.searchInterface.getComponents(ResultList.ID) as ResultList[];\n    return without(allResultLists, this);\n  }\n\n  private get resultLayoutSelectors() {\n    return this.searchInterface.getComponents('ResultLayoutSelector') as ResultLayoutSelectorModule.ResultLayoutSelector[];\n  }\n\n  protected handleBuildingQuery(args: IBuildingQueryEventArgs) {\n    if (this.options.fieldsToInclude != null) {\n      // remove the @\n      args.queryBuilder.addFieldsToInclude(map(this.options.fieldsToInclude, field => field.substr(1)));\n    }\n    if (this.options.autoSelectFieldsToInclude) {\n      const otherFields = flatten(\n        map(this.otherResultLists, otherResultList => {\n          return otherResultList.getAutoSelectedFieldsToInclude();\n        })\n      );\n\n      args.queryBuilder.addRequiredFields(unique(otherFields.concat(this.getAutoSelectedFieldsToInclude())));\n      args.queryBuilder.includeRequiredFields = true;\n    }\n  }\n\n  protected handleChangeLayout(args: IChangeLayoutEventArgs) {\n    if (args.layout === this.options.layout) {\n      this.disableLayoutChange = false;\n      this.enable();\n      this.options.resultTemplate.layout = <ValidLayout>this.options.layout;\n      if (args.results) {\n        // Prevent flickering when switching to a new layout that is empty\n        // add a temporary placeholder, the same that is used on initialization\n        if (this.resultContainer.isEmpty()) {\n          new InitializationPlaceholder(this.root).withVisibleRootElement().withPlaceholderForResultList();\n        }\n        Defer.defer(async () => {\n          const elements = await this.buildResults(args.results);\n          this.renderResults(elements);\n          this.showOrHideElementsDependingOnState(true, this.currentlyDisplayedResults.length !== 0);\n        });\n      }\n    } else {\n      this.disableLayoutChange = true;\n      this.disable();\n      this.resultContainer.empty();\n    }\n  }\n\n  private isCurrentlyFetchingMoreResults(): boolean {\n    return Utils.exists(this.fetchingMoreResults);\n  }\n\n  private getMinimalFieldsToInclude() {\n    // these fields are needed for analytics click event\n    return ['author', 'language', 'urihash', 'objecttype', 'collection', 'source', 'language', 'permanentid'];\n  }\n\n  private isScrollingOfResultListAlmostAtTheBottom(): boolean {\n    // this is in a try catch because the unit test fail otherwise (Window does not exist for phantom js in the console)\n    let isWindow;\n    try {\n      isWindow = this.options.infiniteScrollContainer instanceof Window;\n    } catch (e) {\n      isWindow = false;\n    }\n    return isWindow ? this.isScrollAtBottomForWindowElement() : this.isScrollAtBottomForHtmlElement();\n  }\n\n  private isScrollAtBottomForWindowElement() {\n    const win = new Win(window);\n    const windowHeight = win.height();\n    const scrollTop = win.scrollY();\n    const bodyHeight = new Doc(document).height();\n    return bodyHeight - (windowHeight + scrollTop) < windowHeight / 2;\n  }\n\n  private isScrollAtBottomForHtmlElement() {\n    const el = <HTMLElement>this.options.infiniteScrollContainer;\n    const elementHeight = el.clientHeight;\n    const scrollHeight = el.scrollHeight;\n    const bottomPosition = el.scrollTop + elementHeight;\n    return scrollHeight - bottomPosition < elementHeight / 2;\n  }\n\n  public hasPotentiallyMoreResultsToDisplay(): boolean {\n    return this.currentlyDisplayedResults.length > 0 && !this.reachedTheEndOfResults;\n  }\n\n  private cancelFetchingMoreResultsIfNeeded() {\n    if (this.isCurrentlyFetchingMoreResults()) {\n      this.logger.trace('Cancelling fetching more results');\n      Promise.reject(this.fetchingMoreResults);\n      this.fetchingMoreResults = undefined;\n    }\n  }\n\n  private showOrHideElementsDependingOnState(hasQuery: boolean, hasResults: boolean) {\n    const showIfQuery = $$(this.element).findAll('.coveo-show-if-query');\n    const showIfNoQuery = $$(this.element).findAll('.coveo-show-if-no-query');\n    const showIfResults = $$(this.element).findAll('.coveo-show-if-results');\n    const showIfNoResults = $$(this.element).findAll('.coveo-show-if-no-results');\n\n    each(showIfQuery, (s: HTMLElement) => {\n      $$(s).toggle(hasQuery);\n    });\n    each(showIfNoQuery, (s: HTMLElement) => {\n      $$(s).toggle(!hasQuery);\n    });\n    each(showIfResults, (s: HTMLElement) => {\n      $$(s).toggle(hasQuery && hasResults);\n    });\n    each(showIfNoResults, (s: HTMLElement) => {\n      $$(s).toggle(hasQuery && !hasResults);\n    });\n  }\n\n  private get waitAnimation() {\n    return this.options.waitAnimation.toLowerCase() as WaitAnimation;\n  }\n\n  private showWaitingAnimation() {\n    switch (this.waitAnimation) {\n      case 'fade':\n        $$(this.options.waitAnimationContainer).addClass('coveo-fade-out');\n        break;\n      case 'spinner':\n        this.resultContainer.hideChildren();\n        if ($$(this.options.waitAnimationContainer).find('.coveo-wait-animation') == undefined) {\n          this.options.waitAnimationContainer.appendChild(DomUtils.getBasicLoadingAnimation());\n        }\n        break;\n    }\n  }\n\n  private hideWaitingAnimation() {\n    switch (this.waitAnimation) {\n      case 'fade':\n        $$(this.options.waitAnimationContainer).removeClass('coveo-fade-out');\n        break;\n      case 'spinner':\n        const spinner = $$(this.options.waitAnimationContainer).find('.coveo-loading-spinner');\n        if (spinner) {\n          $$(spinner).detach();\n        }\n        break;\n    }\n  }\n\n  private showWaitingAnimationForInfiniteScrolling() {\n    const spinner = DomUtils.getLoadingSpinner();\n    if (this.options.layout == 'card' && this.options.enableInfiniteScroll) {\n      const previousSpinnerContainer = $$(this.options.waitAnimationContainer).findAll('.coveo-loading-spinner-container');\n      each(previousSpinnerContainer, previousSpinner => $$(previousSpinner).remove());\n      const spinnerContainer = $$('div', {\n        className: 'coveo-loading-spinner-container'\n      });\n      spinnerContainer.append(spinner);\n      this.options.waitAnimationContainer.appendChild(spinnerContainer.el);\n    } else {\n      this.options.waitAnimationContainer.appendChild(DomUtils.getLoadingSpinner());\n    }\n  }\n\n  private hideWaitingAnimationForInfiniteScrolling() {\n    const spinners = $$(this.options.waitAnimationContainer).findAll('.coveo-loading-spinner');\n    const containers = $$(this.options.waitAnimationContainer).findAll('.coveo-loading-spinner-container');\n    each(spinners, spinner => $$(spinner).remove());\n    each(containers, container => $$(container).remove());\n  }\n\n  private initResultContainer(): ResultContainer {\n    if (!this.options.resultsContainer) {\n      const elemType = this.options.layout === 'table' ? 'table' : 'div';\n      this.options.resultsContainer = $$(elemType, { className: 'coveo-result-list-container' }).el;\n      this.initResultContainerAddToDom();\n    }\n    return new ResultContainer(this.options.resultsContainer, this.searchInterface);\n  }\n\n  protected initResultContainerAddToDom() {\n    this.element.appendChild(this.options.resultsContainer);\n  }\n\n  private initWaitAnimationContainer() {\n    if (!this.options.waitAnimationContainer) {\n      this.options.waitAnimationContainer = this.resultContainer.el;\n    }\n  }\n\n  private setupRenderer() {\n    const initParameters: IInitializationParameters = {\n      options: this.searchInterface.options.originalOptionsObject,\n      bindings: this.bindings\n    };\n\n    const autoCreateComponentsFn = (elem: HTMLElement) => Initialization.automaticallyCreateComponentsInside(elem, initParameters);\n\n    switch (this.options.layout) {\n      case 'card':\n        this.renderer = new ResultListCardRenderer(this.options, autoCreateComponentsFn);\n        break;\n      case 'table':\n        this.renderer = new ResultListTableRenderer(this.options, autoCreateComponentsFn);\n        break;\n      case 'list':\n      default:\n        this.renderer = new ResultListRenderer(this.options, autoCreateComponentsFn);\n        break;\n    }\n  }\n\n  private makeElementFocusable() {\n    $$(this.element).setAttribute('tabindex', '-1');\n  }\n\n  private ensureHasId() {\n    const currentId = this.element.id;\n    if (currentId === '') {\n      this.element.id = uniqueId('coveo-result-list');\n    }\n  }\n\n  private enableBasedOnActiveLayouts() {\n    // We should try to enable a result list only when the result layout selector currently allow that result list layout to be displayed.\n    each(this.resultLayoutSelectors, resultLayoutSelector => {\n      const found = find(resultLayoutSelector.activeLayouts, (activeLayout, activeLayoutKey) => activeLayoutKey == this.options.layout);\n      if (found) {\n        super.enable();\n        resultLayoutSelector.enableLayouts([this.options.layout] as ValidLayout[]);\n        $$(this.element).removeClass('coveo-hidden');\n      }\n    });\n  }\n}\n\nInitialization.registerAutoCreateComponent(ResultList);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResultList/ResultList.ts","import { Dom, $$ } from '../../../utils/Dom';\nimport PopperJs from 'popper.js';\nimport { ResponsiveComponentsManager } from '../ResponsiveComponentsManager';\nimport { Assert } from '../../../misc/Assert';\nimport { l } from '../../../strings/Strings';\nimport { ComponentOptions } from '../../Base/ComponentOptions';\n\nexport interface IResponsiveDropdownContent {\n  element: Dom;\n\n  positionDropdown(): void;\n  hideDropdown(): void;\n  cleanUp(): void;\n}\n\nexport class ResponsiveDropdownContent implements IResponsiveDropdownContent {\n  public static DEFAULT_CSS_CLASS_NAME = 'coveo-dropdown-content';\n\n  private coveoRoot: Dom;\n  private cssClassName: string;\n\n  private widthRatio: number;\n  private minWidth: number;\n  private popperReference: PopperJs;\n\n  public static isTargetInsideOpenedDropdown(target: Dom) {\n    Assert.exists(target);\n    const targetParentDropdown = target.parent(ResponsiveDropdownContent.DEFAULT_CSS_CLASS_NAME);\n    if (targetParentDropdown) {\n      return targetParentDropdown.style.display != 'none';\n    }\n    return false;\n  }\n\n  constructor(componentName: string, public element: Dom, coveoRoot: Dom, minWidth: number, widthRatio: number) {\n    Assert.isString(componentName);\n    Assert.exists(element);\n    Assert.exists(coveoRoot);\n    Assert.isLargerOrEqualsThan(0, minWidth);\n    Assert.isLargerOrEqualsThan(0, widthRatio);\n    Assert.isSmallerOrEqualsThan(1, widthRatio);\n\n    this.cssClassName = `coveo-${componentName}-dropdown-content`;\n    this.coveoRoot = coveoRoot;\n    this.widthRatio = widthRatio;\n    this.minWidth = minWidth;\n  }\n\n  public positionDropdown() {\n    this.setElementAttributes();\n    this.createPopper();\n  }\n\n  public hideDropdown() {\n    if (this.popperReference) {\n      this.unbindPopperEvents();\n      this.popperReference.destroy();\n    }\n\n    this.unsetElementAttributes();\n  }\n\n  public cleanUp() {\n    this.element.el.removeAttribute('style');\n  }\n\n  private setElementAttributes() {\n    this.element.show();\n    this.element.addClass(this.cssClassName);\n    this.element.addClass(ResponsiveDropdownContent.DEFAULT_CSS_CLASS_NAME);\n    this.element.setAttribute('role', 'group');\n    this.element.setAttribute('aria-label', l('FiltersDropdown'));\n\n    this.setElementWidth();\n  }\n\n  private setElementWidth() {\n    let width = this.widthRatio * this.coveoRoot.width();\n    if (width <= this.minWidth) {\n      width = this.minWidth;\n    }\n    this.element.el.style.width = width.toString() + 'px';\n  }\n\n  private unsetElementAttributes() {\n    this.element.hide();\n    this.element.removeClass(this.cssClassName);\n    this.element.removeClass(ResponsiveDropdownContent.DEFAULT_CSS_CLASS_NAME);\n    this.element.setAttribute('role', null);\n    this.element.setAttribute('aria-label', null);\n  }\n\n  private get popperReferenceElement() {\n    return this.coveoRoot.find(`.${ResponsiveComponentsManager.DROPDOWN_HEADER_WRAPPER_CSS_CLASS}`);\n  }\n\n  private createPopper() {\n    this.popperReference = new PopperJs(this.popperReferenceElement, this.element.el, {\n      placement: 'bottom-end',\n      positionFixed: true,\n      modifiers: {\n        preventOverflow: {\n          boundariesElement: this.coveoRoot.el\n        },\n        computeStyle: {\n          gpuAcceleration: false\n        }\n      },\n      eventsEnabled: false\n    });\n\n    this.bindPopperEvents();\n  }\n\n  private get scrollableParent() {\n    return ComponentOptions.findParentScrolling(this.popperReferenceElement);\n  }\n\n  private bindPopperEvents() {\n    $$(this.scrollableParent).on(['scroll', 'resize'], () => {\n      this.popperReference.update();\n    });\n  }\n\n  private unbindPopperEvents() {\n    $$(this.scrollableParent).off(['scroll', 'resize'], () => {\n      this.popperReference.update();\n    });\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResponsiveComponents/ResponsiveDropdown/ResponsiveDropdownContent.ts","import { Component } from '../Base/Component';\nimport { l } from '../../strings/Strings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { IFieldOption } from '../Base/IComponentOptions';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { $$, Dom } from '../../utils/Dom';\nimport { Initialization } from '../Base/Initialization';\nimport { exportGlobally } from '../../GlobalExports';\nimport { CategoryFacetTemplates } from './CategoryFacetTemplates';\nimport { CategoryValueRoot } from './CategoryValueRoot';\nimport { CategoryFacetQueryController } from '../../controllers/CategoryFacetQueryController';\nimport { SVGDom } from '../../utils/SVGDom';\nimport { SVGIcons } from '../../utils/SVGIcons';\nimport { QueryStateModel } from '../../models/QueryStateModel';\nimport 'styling/_CategoryFacet';\nimport { IAttributesChangedEventArg, MODEL_EVENTS } from '../../models/Model';\nimport { Utils } from '../../utils/Utils';\nimport { CategoryValue, CategoryValueParent } from './CategoryValue';\nimport { pluck, reduce, find, first, last, contains, isArray, keys } from 'underscore';\nimport { Assert } from '../../misc/Assert';\nimport { QueryEvents, IBuildingQueryEventArgs, IQuerySuccessEventArgs } from '../../events/QueryEvents';\nimport { CategoryFacetSearch } from './CategoryFacetSearch';\nimport { ICategoryFacetResult } from '../../rest/CategoryFacetResult';\nimport { BreadcrumbEvents, IPopulateBreadcrumbEventArgs } from '../../events/BreadcrumbEvents';\nimport { CategoryFacetBreadcrumb } from './CategoryFacetBreadcrumb';\nimport { ICategoryFacetValue } from '../../rest/CategoryFacetValue';\nimport { ISearchEndpoint } from '../../rest/SearchEndpointInterface';\nimport {\n  IAnalyticsCategoryFacetMeta,\n  analyticsActionCauseList,\n  IAnalyticsActionCause,\n  IAnalyticsFacetMeta\n} from '../Analytics/AnalyticsActionListMeta';\nimport { CategoryFacetDebug } from './CategoryFacetDebug';\nimport { QueryBuilder } from '../Base/QueryBuilder';\nimport { IAutoLayoutAdjustableInsideFacetColumn } from '../SearchInterface/FacetColumnAutoLayoutAdjustment';\nimport { ResponsiveFacets } from '../ResponsiveComponents/ResponsiveFacets';\nimport { IResponsiveComponentOptions } from '../ResponsiveComponents/ResponsiveComponentsManager';\nimport { ResponsiveFacetOptions } from '../ResponsiveComponents/ResponsiveFacetOptions';\nimport { CategoryFacetHeader } from './CategoryFacetHeader';\nimport { AccessibleButton } from '../../utils/AccessibleButton';\nimport { IStringMap } from '../../rest/GenericParam';\nimport {\n  DependsOnManager,\n  IDependentFacet,\n  IDependsOnCompatibleFacetOptions,\n  IDependentFacetCondition\n} from '../../utils/DependsOnManager';\nimport { ResultListUtils } from '../../utils/ResultListUtils';\nimport { CategoryFacetValuesTree } from './CategoryFacetValuesTree';\n\nexport interface ICategoryFacetOptions extends IResponsiveComponentOptions, IDependsOnCompatibleFacetOptions {\n  field: IFieldOption;\n  title?: string;\n  numberOfResultsInFacetSearch?: number;\n  id?: string;\n  enableFacetSearch?: boolean;\n  facetSearchDelay?: number;\n  numberOfValues?: number;\n  injectionDepth?: number;\n  enableMoreLess?: boolean;\n  pageSize?: number;\n  delimitingCharacter?: string;\n  debug?: boolean;\n  basePath?: string[];\n  maximumDepth?: number;\n  valueCaption?: IStringMap<string>;\n  dependsOn?: string;\n  displaySearchOnTop?: boolean;\n  displaySearchButton?: boolean;\n}\n\nexport type CategoryValueDescriptor = {\n  value: string;\n  count: number;\n  path: string[];\n};\n\n/**\n * The `CategoryFacet` component is a facet that renders values in a hierarchical fashion. It determines the filter to apply depending on the\n * current selected path of values.\n *\n * The path is a sequence of values that leads to a specific value in the hierarchy.\n * It is an array listing all the parents of a file (e.g., `['c', 'folder1']` for the `c:\\folder1\\text1.txt` file).\n *\n * This facet requires a [`field`]{@link CategoryFacet.options.field} with a special format to work correctly (see [Using the Category Facet Component](https://docs.coveo.com/en/2667)).\n *\n * @notSupportedIn salesforcefree\n * @availablesince [January 2019 Release (v2.5395.12)]({{ site.baseurl }}/2938/)\n */\nexport class CategoryFacet extends Component implements IAutoLayoutAdjustableInsideFacetColumn {\n  static doExport = () => {\n    exportGlobally({\n      CategoryFacet\n    });\n  };\n\n  static ID = 'CategoryFacet';\n\n  /**\n   * The options for the component\n   * @componentOptions\n   */\n  static options: ICategoryFacetOptions = {\n    /**\n     * The index field whose values the facet should use. The field values should have the form:\n     * `the; the|path; the|path|to; the|path|to|given; the|path|to|given|item;`\n     * where the delimiting character is `|`. This default delimiting character can be changed using the [delimitingCharacter]{@link CategoryFacet.options.delimitingCharacter} option.\n     *\n     * To help you verify whether your fields are setup correctly, see the {@link CategoryFacet.options.debug} option\n     * and the {@link CategoryFacet.debugValue} method.\n     *\n     * See [Using the Category Facet Component](https://docs.coveo.com/en/2667).\n     */\n    field: ComponentOptions.buildFieldOption({ required: true }),\n    /**\n     * The title to display at the top of the facet.\n     *\n     * Default value is the localized string for `NoTitle`.\n     */\n    title: ComponentOptions.buildLocalizedStringOption({\n      localizedString: () => l('NoTitle')\n    }),\n    /**\n     * The maximum number of field values to display by default in the facet before the user\n     * clicks the arrow to show more.\n     *\n     * See also the [`enableMoreLess`]{@link CategoryFacet.options.enableMoreLess} option.\n     */\n    numberOfValues: ComponentOptions.buildNumberOption({ defaultValue: 5, min: 0, section: 'CommonOptions' }),\n    /**\n     * Whether to display a search box at the bottom of the facet for searching among the available facet\n     * [`field`]{@link CategoryFacet.options.field} values.\n     *\n     * See also the [`facetSearchDelay`]{@link CategoryFacet.options.facetSearchDelay}, and\n     * [`numberOfResultsInFacetSearch`]{@link CategoryFacet.options.numberOfResultsInFacetSearch} options.\n     *\n     *\n     * Default value is `true`.\n     */\n    enableFacetSearch: ComponentOptions.buildBooleanOption({ defaultValue: true }),\n    /**\n     * A unique identifier for the facet. Among other things, this identifier serves the purpose of saving\n     * the facet state in the URL hash.\n     *\n     * If you have two facets with the same field on the same page, you should specify an `id` value for at least one of\n     * those two facets. This `id` must be unique among the facets.\n     *\n     * Default value is the [`field`]{@link CategoryFacet.options.field} option value.\n     */\n    id: ComponentOptions.buildStringOption({\n      postProcessing: (value, options: ICategoryFacetOptions) => value || (options.field as string)\n    }),\n    /**\n     * The *injection depth* to use.\n     *\n     * The injection depth determines how many results to scan in the index to ensure that the category facet lists all potential\n     * facet values. Increasing this value enhances the accuracy of the listed values at the cost of performance.\n     *\n     * Default value is `1000`. Minimum value is `1000`.\n     * @notSupportedIn salesforcefree\n     *\n     * @examples 1500\n     */\n    injectionDepth: ComponentOptions.buildNumberOption({ defaultValue: 1000, min: 1000 }),\n    /**\n     * If the [`enableFacetSearch`]{@link CategoryFacet.options.enableFacetSearch} option is `true`, specifies the number of\n     * values to display in the facet search results popup.\n     *\n     * Default value is `15`. Minimum value is `1`.\n     */\n    numberOfResultsInFacetSearch: ComponentOptions.buildNumberOption({ defaultValue: 15, min: 1 }),\n    /**\n     * If the [`enableFacetSearch`]{@link CategoryFacet.options.enableFacetSearch} option is `true`, specifies the delay (in\n     * milliseconds) before sending a search request to the server when the user starts typing in the category facet search box.\n     *\n     * Specifying a smaller value makes results appear faster. However, chances of having to cancel many requests\n     * sent to the server increase as the user keeps on typing new characters.\n     *\n     * Default value is `100`. Minimum value is `0`.\n     */\n    facetSearchDelay: ComponentOptions.buildNumberOption({ defaultValue: 100, min: 0 }),\n    /**\n     * Whether to enable the **More** and **Less** buttons in the Facet.\n     *\n     * See also the [`pageSize`]{@link CategoryFacet.options.pageSize} option.\n     *\n     * Default value is `true`.\n     */\n    enableMoreLess: ComponentOptions.buildBooleanOption({ defaultValue: true }),\n    /**\n     * If the [`enableMoreLess`]{@link CategoryFacet.options.enableMoreLess} option is `true`, specifies the number of\n     * additional results to fetch when clicking the **More** button.\n     *\n     * Default value is `10`. Minimum value is `1`.\n     */\n    pageSize: ComponentOptions.buildNumberOption({ defaultValue: 10, min: 1, depend: 'enableMoreLess' }),\n    /**\n     * The character that specifies the hierarchical dependency.\n     *\n     * **Example:**\n     *\n     * If your field has the following values:\n     *\n     * `@field: c; c>folder2; c>folder2>folder3;`\n     *\n     * The delimiting character is `>`.\n     *\n     * Default value is `|`.\n     */\n    delimitingCharacter: ComponentOptions.buildStringOption({ defaultValue: '|' }),\n    /**\n     * The path to use as the path prefix for every query.\n     *\n     * **Example:**\n     *\n     * You have the following files indexed on a file system:\n     * ```\n     * c:\\\n     *    folder1\\\n     *      text1.txt\n     *    folder2\\\n     *      folder3\\\n     *        text2.txt\n     * ```\n     * Setting the `basePath` to `c` would display `folder1` and `folder2` in the `CategoryFacet`, but omit `c`.\n     *\n     * This options accepts an array of values. To specify a \"deeper\" starting path in your tree, you need to use comma-separated values.\n     *\n     * For example, setting `data-base-path=\"c,folder1\"` on the component markup would display `folder3` in the `CategoryFacet`, but omit `c` and `folder1`.\n     *\n     */\n    basePath: ComponentOptions.buildListOption<string>({ defaultValue: [] }),\n    /**\n     * The maximum number of levels to traverse in the hierarchy.\n     * This option does not count the length of the base path. The depth depends on what is shown in the interface.\n     *\n     * Default value is `Number.MAX_VALUE`.\n     */\n    maximumDepth: ComponentOptions.buildNumberOption({ min: 1, defaultValue: Number.MAX_VALUE }),\n    /**\n     * Whether to activate field format debugging.\n     * This options logs messages in the console for any potential encountered issues.\n     * This option can have negative effects on performance, and should only be activated when debugging.\n     */\n    debug: ComponentOptions.buildBooleanOption({ defaultValue: false }),\n    /**\n     * Specifies a JSON object describing a mapping of facet values to their desired captions. See\n     * [Normalizing Facet Value Captions](https://developers.coveo.com/x/jBsvAg).\n     *\n     * **Note:**\n     * If this option is specified, the facet search box will be unavailable.\n     *\n     * **Examples:**\n     *\n     * You can set the option in the ['init']{@link init} call:\n     * ```javascript\n     * var myValueCaptions = {\n     *   \"txt\" : \"Text files\",\n     *   \"html\" : \"Web page\",\n     *   [ ... ]\n     * };\n     *\n     * Coveo.init(document.querySelector(\"#search\"), {\n     *   Facet : {\n     *     valueCaption : myValueCaptions\n     *   }\n     * });\n     * ```\n     *\n     * Or before the `init` call, using the ['options']{@link options} top-level function:\n     * ```javascript\n     * Coveo.options(document.querySelector(\"#search\"), {\n     *   Facet : {\n     *     valueCaption : myValueCaptions\n     *   }\n     * });\n     * ```\n     *\n     * Or directly in the markup:\n     * ```html\n     * <!-- Ensure that the double quotes are properly handled in data-value-caption. -->\n     * <div class='CoveoCategoryFacet' data-field='@myotherfield' data-value-caption='{\"txt\":\"Text files\",\"html\":\"Web page\"}'></div>\n     * ```\n     */\n    valueCaption: ComponentOptions.buildJsonOption<IStringMap<string>>({ defaultValue: {} }),\n    /**\n     * The [id](@link Facet.options.id) of another facet in which at least one value must be selected in order\n     * for the dependent category facet to be visible.\n     *\n     * **Default:** `undefined` and the category facet does not depend on any other facet to be displayed.\n     *\n     * @availablesince [September 2019 Release (v2.7023)](https://docs.coveo.com/en/2990/)\n     */\n    dependsOn: ComponentOptions.buildStringOption(),\n\n    /**\n     * A function that verifies whether the current state of the `dependsOn` facet allows the dependent facet to be displayed.\n     *\n     * If specified, the function receives a reference to the resolved `dependsOn` facet component instance as an argument, and must return a boolean.\n     * The function's argument should typically be treated as read-only.\n     *\n     * By default, the dependent facet is displayed whenever one or more values are selected in its `dependsOn` facet.\n     *\n     * @externaldocs [Defining Dependent Facets](https://docs.coveo.com/3210/)\n     */\n    dependsOnCondition: ComponentOptions.buildCustomOption<IDependentFacetCondition>(\n      () => {\n        return null;\n      },\n      { depend: 'dependsOn', section: 'CommonOptions' }\n    ),\n    /**\n     * Whether to display the facet search widget above the facet values instead of below them.\n     *\n     * @availablesince [July 2020 Release (v2.9373)](https://docs.coveo.com/3293/)\n     */\n    displaySearchOnTop: ComponentOptions.buildBooleanOption({ defaultValue: false }),\n    /**\n     * Whether to display the facet search widget as a button instead of a search bar.\n     *\n     * @availablesince [July 2020 Release (v2.9373)](https://docs.coveo.com/3293/)\n     */\n    displaySearchButton: ComponentOptions.buildBooleanOption({ defaultValue: true }),\n    ...ResponsiveFacetOptions\n  };\n\n  public categoryFacetQueryController: CategoryFacetQueryController;\n  public listenToQueryStateChange = true;\n  public categoryFacetSearch: CategoryFacetSearch;\n  public activeCategoryValue: CategoryValue | undefined;\n  public positionInQuery: number;\n  public dependsOnManager: DependsOnManager;\n  public isFieldValueCompatible = false;\n  public static MAXIMUM_NUMBER_OF_VALUES_BEFORE_TRUNCATING = 15;\n  public static NUMBER_OF_VALUES_TO_KEEP_AFTER_TRUNCATING = 10;\n\n  private categoryValueRoot: CategoryValueRoot;\n  private categoryFacetTemplates: CategoryFacetTemplates;\n  private headerElement: HTMLElement;\n  private currentPage: number;\n  private moreLessContainer: Dom;\n  private moreValuesToFetch: boolean = true;\n  private showingWaitAnimation = false;\n  private numberOfChildValuesCurrentlyDisplayed = 0;\n  private numberOfValues: number;\n  private categoryFacetValuesTree: CategoryFacetValuesTree;\n\n  public static WAIT_ELEMENT_CLASS = 'coveo-category-facet-header-wait-animation';\n\n  constructor(public element: HTMLElement, public options: ICategoryFacetOptions, bindings?: IComponentBindings) {\n    super(element, 'CategoryFacet', bindings);\n    this.options = ComponentOptions.initComponentOptions(element, CategoryFacet, options);\n\n    this.categoryFacetQueryController = new CategoryFacetQueryController(this);\n    this.categoryFacetTemplates = new CategoryFacetTemplates();\n    this.categoryValueRoot = new CategoryValueRoot($$(this.element), this.categoryFacetTemplates, this);\n    this.categoryValueRoot.path = this.activePath;\n    this.currentPage = 0;\n    this.numberOfValues = this.options.numberOfValues;\n    this.categoryFacetValuesTree = new CategoryFacetValuesTree();\n\n    this.tryToInitFacetSearch();\n\n    if (this.options.debug) {\n      new CategoryFacetDebug(this);\n    }\n\n    ResponsiveFacets.init(this.root, this, this.options);\n    this.initDependsOnManager();\n    this.bind.onRootElement<IBuildingQueryEventArgs>(QueryEvents.buildingQuery, args => this.handleBuildingQuery(args));\n    this.bind.onRootElement<IQuerySuccessEventArgs>(QueryEvents.querySuccess, args => this.handleQuerySuccess(args));\n    this.bind.onRootElement(QueryEvents.duringQuery, () => this.addFading());\n    this.bind.onRootElement(QueryEvents.deferredQuerySuccess, () => this.handleDeferredQuerySuccess());\n    this.bind.onRootElement<IPopulateBreadcrumbEventArgs>(BreadcrumbEvents.populateBreadcrumb, args => this.handlePopulateBreadCrumb(args));\n    this.bind.onRootElement(BreadcrumbEvents.clearBreadcrumb, () => this.handleClearBreadcrumb());\n    this.buildFacetHeader();\n    this.initQueryStateEvents();\n  }\n\n  public isCurrentlyDisplayed() {\n    return $$(this.element).isVisible();\n  }\n\n  public get activePath() {\n    return this.queryStateModel.get(this.queryStateAttribute) || this.options.basePath;\n  }\n\n  public set activePath(newPath: string[]) {\n    this.listenToQueryStateChange = false;\n    this.queryStateModel.set(this.queryStateAttribute, newPath);\n    this.listenToQueryStateChange = true;\n  }\n\n  public get queryStateAttribute() {\n    return QueryStateModel.getFacetId(this.options.id);\n  }\n\n  public handleBuildingQuery(args: IBuildingQueryEventArgs) {\n    this.positionInQuery = this.categoryFacetQueryController.putCategoryFacetInQueryBuilder(\n      args.queryBuilder,\n      this.activePath,\n      this.numberOfValues + 1\n    );\n  }\n\n  public scrollToTop() {\n    ResultListUtils.scrollToTop(this.root);\n  }\n\n  private tryToInitFacetSearch() {\n    if (!this.isFacetSearchAvailable) {\n      return this.logDisabledFacetSearchWarning();\n    }\n\n    this.categoryFacetSearch = new CategoryFacetSearch(this, this.options.displaySearchButton);\n  }\n\n  private logDisabledFacetSearchWarning() {\n    if (this.isEnableFacetSearchFalsy) {\n      return;\n    }\n\n    const valueCaptionAttributeName = this.getOptionAttributeName('valueCaption');\n    const enableFacetSearchAttributeName = this.getOptionAttributeName('enableFacetSearch');\n    const field = this.options.field;\n\n    this.logger.warn(`The search box is disabled on the ${field} CategoryFacet. To hide this warning,\n    either remove the ${valueCaptionAttributeName} option or set the ${enableFacetSearchAttributeName} option to \"false\".`);\n  }\n\n  private getOptionAttributeName(optionName: keyof ICategoryFacetOptions) {\n    return ComponentOptions.attrNameFromName(optionName);\n  }\n\n  private get isFacetSearchAvailable() {\n    if (this.areValueCaptionsSpecified) {\n      return false;\n    }\n\n    if (this.isEnableFacetSearchFalsy) {\n      return false;\n    }\n\n    return true;\n  }\n\n  private get areValueCaptionsSpecified() {\n    const valueCaptions = this.options.valueCaption;\n    return keys(valueCaptions).length !== 0;\n  }\n\n  private get isEnableFacetSearchFalsy() {\n    return !this.options.enableFacetSearch;\n  }\n\n  private get isCategoryEmpty() {\n    return !this.categoryValueRoot.children.length;\n  }\n\n  private updateAppearance() {\n    if (this.disabled || this.isCategoryEmpty) {\n      return this.hide();\n    }\n\n    this.show();\n  }\n\n  public handleQuerySuccess(args: IQuerySuccessEventArgs) {\n    if (Utils.isNullOrUndefined(args.results.categoryFacets)) {\n      return this.notImplementedError();\n    }\n\n    if (Utils.isNullOrUndefined(args.results.categoryFacets[this.positionInQuery])) {\n      return;\n    }\n\n    const numberOfRequestedValues = args.query.categoryFacets[this.positionInQuery].maximumNumberOfValues;\n    const categoryFacetResult = args.results.categoryFacets[this.positionInQuery];\n    this.moreValuesToFetch = numberOfRequestedValues == categoryFacetResult.values.length;\n    this.clear();\n\n    if (categoryFacetResult.notImplemented) {\n      return this.notImplementedError();\n    }\n\n    if (!categoryFacetResult.values.length && !categoryFacetResult.parentValues.length) {\n      return;\n    }\n\n    this.renderValues(categoryFacetResult, numberOfRequestedValues);\n    if (this.isFacetSearchAvailable) {\n      const facetSearch = this.categoryFacetSearch.build();\n      this.options.displaySearchOnTop\n        ? $$(facetSearch).insertBefore(this.categoryValueRoot.listRoot.el)\n        : $$(facetSearch).insertAfter(this.categoryValueRoot.listRoot.el);\n    }\n\n    this.moreLessContainer = $$('div', { className: 'coveo-category-facet-more-less-container' });\n    $$(this.element).append(this.moreLessContainer.el);\n\n    if (this.options.enableMoreLess) {\n      this.renderMoreLess();\n    }\n\n    if (!this.isPristine()) {\n      $$(this.element).addClass('coveo-category-facet-non-empty-path');\n    }\n  }\n\n  /**\n   * Changes the active path.\n   *\n   */\n  public changeActivePath(path: string[]) {\n    this.activePath = path;\n  }\n\n  public async executeQuery() {\n    this.showWaitingAnimation();\n    try {\n      await this.queryController.executeQuery();\n    } finally {\n      this.hideWaitingAnimation();\n    }\n  }\n\n  /**\n   * Reloads the facet with the same path.\n   */\n  public reload() {\n    this.changeActivePath(this.activePath);\n    this.logAnalyticsEvent(analyticsActionCauseList.categoryFacetReload);\n    this.executeQuery();\n  }\n\n  /**\n   * Returns all the visible parent values.\n   * @returns simple object with three fields: `value`, `count` and `path`.\n   */\n  public getVisibleParentValues(): CategoryValueDescriptor[] {\n    return this.getVisibleParentCategoryValues().map(categoryValue => categoryValue.getDescriptor());\n  }\n\n  private getVisibleParentCategoryValues() {\n    if (this.categoryValueRoot.children.length == 0 || this.categoryValueRoot.children[0].children.length == 0) {\n      return [];\n    }\n    let currentParentvalue = this.categoryValueRoot.children[0];\n    const parentValues = [currentParentvalue];\n    while (currentParentvalue.children.length != 0 && !Utils.arrayEqual(currentParentvalue.path, this.activePath)) {\n      currentParentvalue = currentParentvalue.children[0];\n      parentValues.push(currentParentvalue);\n    }\n    return parentValues;\n  }\n\n  /**\n   * Shows more values according to {@link CategoryFacet.options.pageSize}.\n   *\n   * See the [`enableMoreLess`]{@link CategoryFacet.options.enableMoreLess}, and\n   * [`numberOfValues`]{@link CategoryFacet.options.numberOfValues} options.\n   */\n  public showMore() {\n    if (this.moreValuesToFetch) {\n      this.currentPage++;\n      this.numberOfValues = this.options.numberOfValues + this.currentPage * this.options.pageSize;\n      this.reload();\n      this.logAnalyticsFacetShowMoreLess(analyticsActionCauseList.facetShowMore);\n    }\n  }\n\n  /**\n   * Shows less values, up to the original number of values.\n   *\n   * See the [`enableMoreLess`]{@link CategoryFacet.options.enableMoreLess}, and\n   * [`numberOfValues`]{@link CategoryFacet.options.numberOfValues} options.\n   */\n  public showLess() {\n    if (this.currentPage > 0) {\n      this.currentPage--;\n      this.numberOfValues = this.options.numberOfValues + this.currentPage * this.options.pageSize;\n      this.reload();\n      this.logAnalyticsFacetShowMoreLess(analyticsActionCauseList.facetShowLess);\n    }\n  }\n\n  /**\n   * Returns the values at the bottom of the hierarchy. These are the values that are not yet applied to the query.\n   * @returns simple object with three fields: `value`, `count` and `path`.\n   */\n  public getAvailableValues() {\n    if (!this.activeCategoryValue) {\n      return [];\n    }\n    return this.activeCategoryValue.children.map(categoryValue => {\n      return {\n        value: categoryValue.categoryValueDescriptor.value,\n        count: categoryValue.categoryValueDescriptor.count,\n        path: categoryValue.path\n      };\n    });\n  }\n\n  /**\n   * Selects a value from the currently available values.\n   * If the given value to select is not in the available values, it will throw an error.\n   */\n  public selectValue(value: string) {\n    Assert.check(\n      contains(pluck(this.getAvailableValues(), 'value'), value),\n      'Failed while trying to select a value that is not available.'\n    );\n    const newPath = this.activePath.slice(0);\n    newPath.push(value);\n    this.changeActivePath(newPath);\n    this.logAnalyticsEvent(analyticsActionCauseList.categoryFacetSelect);\n    this.executeQuery();\n  }\n\n  /**\n   * Deselects the last value in the hierarchy that is applied to the query. When at the top of the hierarchy, this method does nothing.\n   */\n  public deselectCurrentValue() {\n    if (this.activePath.length == 0) {\n      return;\n    }\n\n    const newPath = this.activePath.slice(0);\n    newPath.pop();\n    this.changeActivePath(newPath);\n    this.logAnalyticsEvent(analyticsActionCauseList.categoryFacetSelect);\n    this.executeQuery();\n  }\n\n  private resetPath() {\n    this.changeActivePath(this.options.basePath);\n  }\n\n  /**\n   * Resets the facet to its initial state.\n   */\n  public reset() {\n    this.resetPath();\n    this.logAnalyticsEvent(analyticsActionCauseList.categoryFacetClear);\n    this.executeQuery();\n  }\n\n  /**\n   * Hides the component.\n   */\n  public hide() {\n    $$(this.element).addClass('coveo-hidden');\n  }\n\n  /**\n   * Shows the component.\n   */\n  public show() {\n    $$(this.element).removeClass('coveo-hidden');\n  }\n\n  public enable() {\n    super.enable();\n    this.updateAppearance();\n  }\n\n  public disable() {\n    super.disable();\n    this.updateAppearance();\n  }\n\n  /**\n   * Goes through any value that contains the value parameter, and verifies whether there are missing parents.\n   * Issues are then logged in the console.\n   * If you do not want to specify a value, you can simply enable {@link CategoryFacet.options.debug} and do an empty query.\n   */\n  public async debugValue(value: string) {\n    const queryBuilder = new QueryBuilder();\n    this.categoryFacetQueryController.addDebugGroupBy(queryBuilder, value);\n    const queryResults = await this.queryController.getEndpoint().search(queryBuilder.build());\n    CategoryFacetDebug.analyzeResults(queryResults.groupByResults[0], this.options.delimitingCharacter);\n  }\n\n  /**\n   *\n   * @param value The string to find a caption for.\n   * Returns the caption for a value or the value itself if no caption is available.\n   */\n  public getCaption(value: string) {\n    const valueCaptions = this.options.valueCaption;\n    const caption = valueCaptions[value];\n    return caption ? caption : value;\n  }\n\n  public showWaitingAnimation() {\n    this.ensureDom();\n    if (!this.showingWaitAnimation) {\n      $$(this.headerElement).find('.coveo-category-facet-header-wait-animation').style.visibility = 'visible';\n      this.showingWaitAnimation = true;\n    }\n  }\n\n  public hideWaitingAnimation() {\n    this.ensureDom();\n    if (this.showingWaitAnimation) {\n      $$(this.headerElement).find('.coveo-category-facet-header-wait-animation').style.visibility = 'hidden';\n      this.showingWaitAnimation = false;\n    }\n  }\n\n  public logAnalyticsEvent(eventName: IAnalyticsActionCause, path = this.activePath) {\n    this.usageAnalytics.logSearchEvent<IAnalyticsCategoryFacetMeta>(eventName, {\n      categoryFacetId: this.options.id,\n      categoryFacetField: this.options.field.toString(),\n      categoryFacetPath: path,\n      categoryFacetTitle: this.options.title\n    });\n  }\n\n  public getEndpoint(): ISearchEndpoint {\n    return this.queryController.getEndpoint();\n  }\n\n  get children(): CategoryValue[] {\n    return this.categoryValueRoot.children;\n  }\n\n  private renderValues(categoryFacetResult: ICategoryFacetResult, numberOfRequestedValues: number) {\n    this.categoryFacetValuesTree.storeNewValues(categoryFacetResult);\n    let sortedParentValues = this.sortParentValues(categoryFacetResult.parentValues);\n    let currentParentValue: CategoryValueParent = this.categoryValueRoot;\n    let needToTruncate = false;\n    let pathOfLastTruncatedParentValue: string[];\n\n    const numberOfItemsInFirstSlice = Math.floor(CategoryFacet.NUMBER_OF_VALUES_TO_KEEP_AFTER_TRUNCATING / 2);\n    const numberOfItemsInSecondSlice = Math.ceil(CategoryFacet.NUMBER_OF_VALUES_TO_KEEP_AFTER_TRUNCATING / 2);\n\n    sortedParentValues = this.hideBasePathInParentValues(sortedParentValues);\n\n    if (this.shouldTruncate(sortedParentValues)) {\n      pathOfLastTruncatedParentValue = this.findPathOfLastTruncatedParentValue(sortedParentValues, numberOfItemsInSecondSlice);\n      needToTruncate = true;\n      sortedParentValues = first(sortedParentValues, numberOfItemsInFirstSlice).concat(\n        last(sortedParentValues, numberOfItemsInSecondSlice)\n      );\n    }\n\n    if (!this.isPristine()) {\n      this.addAllCategoriesButton();\n    }\n\n    for (let i = 0; i < sortedParentValues.length; i++) {\n      currentParentValue = currentParentValue.renderAsParent(sortedParentValues[i]);\n\n      // We do not want to make the \"last\" parent selectable, as clicking it would be a noop (re-selecting the same filter)\n      const isLastParent = i == sortedParentValues.length - 1;\n      if (!isLastParent) {\n        (currentParentValue as CategoryValue).makeSelectable().showCollapseArrow();\n      }\n\n      if (needToTruncate) {\n        if (i == numberOfItemsInFirstSlice - 1) {\n          this.addEllipsis();\n        }\n\n        if (i == numberOfItemsInFirstSlice) {\n          currentParentValue.path = [...pathOfLastTruncatedParentValue, sortedParentValues[i].value];\n        }\n      }\n    }\n\n    const childrenValuesToRender = this.moreValuesToFetch\n      ? categoryFacetResult.values.slice(0, numberOfRequestedValues - 1)\n      : categoryFacetResult.values.slice(0, numberOfRequestedValues);\n\n    this.numberOfChildValuesCurrentlyDisplayed = childrenValuesToRender.length;\n\n    currentParentValue.renderChildren(childrenValuesToRender);\n    this.activeCategoryValue = currentParentValue as CategoryValue;\n  }\n\n  private hideBasePathInParentValues(parentValues: ICategoryFacetValue[]) {\n    if (Utils.arrayEqual(first(this.activePath, this.options.basePath.length), this.options.basePath)) {\n      parentValues = last(parentValues, parentValues.length - this.options.basePath.length);\n    }\n    return parentValues;\n  }\n\n  private shouldTruncate(parentValues: ICategoryFacetValue[]) {\n    return parentValues.length > CategoryFacet.MAXIMUM_NUMBER_OF_VALUES_BEFORE_TRUNCATING;\n  }\n\n  private addEllipsis() {\n    this.categoryValueRoot.listRoot.append(this.categoryFacetTemplates.buildEllipsis().el);\n  }\n\n  private findPathOfLastTruncatedParentValue(sortedParentValues: ICategoryFacetValue[], numberOfItemsInSecondSlice: number) {\n    const indexOfLastTruncatedParentValue = sortedParentValues.length - numberOfItemsInSecondSlice - 1;\n    return reduce(first(sortedParentValues, indexOfLastTruncatedParentValue + 1), (path, parentValue) => [...path, parentValue.value], []);\n  }\n\n  private addAllCategoriesButton() {\n    const allCategories = this.categoryFacetTemplates.buildAllCategoriesButton();\n    new AccessibleButton()\n      .withLabel(l('AllCategories'))\n      .withElement(allCategories)\n      .withSelectAction(() => {\n        this.reset();\n        this.scrollToTop();\n      })\n      .build();\n    this.categoryValueRoot.listRoot.append(allCategories.el);\n  }\n\n  private isPristine() {\n    return Utils.arrayEqual(this.activePath, this.options.basePath);\n  }\n\n  private buildFacetHeader() {\n    const facetHeader = new CategoryFacetHeader({ categoryFacet: this, title: this.options.title });\n    this.headerElement = facetHeader.build();\n    $$(this.element).prepend(this.headerElement);\n  }\n\n  private handleQueryStateChanged(data: IAttributesChangedEventArg) {\n    if (this.listenToQueryStateChange) {\n      let path = data.attributes[this.queryStateAttribute];\n      if (!Utils.isNullOrUndefined(path) && isArray(path) && path.length != 0) {\n        this.activePath = path;\n      }\n    }\n  }\n\n  private initQueryStateEvents() {\n    this.queryStateModel.registerNewAttribute(this.queryStateAttribute, this.options.basePath);\n    this.bind.onQueryState<IAttributesChangedEventArg>(MODEL_EVENTS.CHANGE, undefined, data => this.handleQueryStateChanged(data));\n  }\n\n  private initDependsOnManager() {\n    const facetInfo: IDependentFacet = {\n      reset: () => this.dependsOnReset(),\n      ref: this\n    };\n    this.dependsOnManager = new DependsOnManager(facetInfo);\n  }\n\n  private dependsOnReset() {\n    this.changeActivePath(this.options.basePath);\n    this.clear();\n  }\n\n  private addFading() {\n    $$(this.element).addClass('coveo-category-facet-values-fade');\n  }\n\n  private handleDeferredQuerySuccess() {\n    this.updateAppearance();\n    this.removeFading();\n  }\n\n  private removeFading() {\n    $$(this.element).removeClass('coveo-category-facet-values-fade');\n  }\n\n  private notImplementedError() {\n    const errorMessage = 'Category Facets are not supported by your current search endpoint. Disabling this component.';\n    this.logger.error(errorMessage);\n    this.disable();\n  }\n\n  private sortParentValues(parentValues: ICategoryFacetValue[]) {\n    if (this.activePath.length != parentValues.length) {\n      this.logger.warn('Inconsistent CategoryFacet results: Number of parent values results does not equal length of active path');\n      return parentValues;\n    }\n\n    const sortedParentvalues: ICategoryFacetValue[] = [];\n    for (const pathElement of this.activePath) {\n      const currentParentValue = find(parentValues, parentValue => parentValue.value.toLowerCase() == pathElement.toLowerCase());\n      if (!currentParentValue) {\n        this.logger.warn('Inconsistent CategoryFacet results: path not consistent with parent values results');\n        return parentValues;\n      }\n      sortedParentvalues.push(currentParentValue);\n    }\n    return sortedParentvalues;\n  }\n\n  private renderMoreLess() {\n    if (this.numberOfChildValuesCurrentlyDisplayed > this.options.numberOfValues) {\n      this.moreLessContainer.append(this.buildLessButton());\n    }\n\n    if (this.moreValuesToFetch) {\n      this.moreLessContainer.append(this.buildMoreButton());\n    }\n  }\n\n  private clear() {\n    this.categoryValueRoot.clear();\n    if (this.isFacetSearchAvailable) {\n      this.categoryFacetSearch.clear();\n    }\n    this.moreLessContainer && this.moreLessContainer.detach();\n    $$(this.element).removeClass('coveo-category-facet-non-empty-path');\n  }\n\n  private buildMoreButton() {\n    const svgContainer = $$('span', { className: 'coveo-facet-more-icon' }, SVGIcons.icons.arrowDown).el;\n    SVGDom.addClassToSVGInContainer(svgContainer, 'coveo-facet-more-icon-svg');\n    const more = $$('div', { className: 'coveo-category-facet-more' }, svgContainer);\n\n    new AccessibleButton()\n      .withElement(more)\n      .withSelectAction(() => this.showMore())\n      .withLabel(l('ShowMoreFacetResults', this.options.title))\n      .build();\n\n    return more.el;\n  }\n\n  private buildLessButton() {\n    const svgContainer = $$('span', { className: 'coveo-facet-less-icon' }, SVGIcons.icons.arrowUp).el;\n    SVGDom.addClassToSVGInContainer(svgContainer, 'coveo-facet-less-icon-svg');\n    const less = $$('div', { className: 'coveo-category-facet-less' }, svgContainer);\n\n    new AccessibleButton()\n      .withElement(less)\n      .withSelectAction(() => this.showLess())\n      .withLabel(l('ShowLessFacetResults', this.options.title))\n      .build();\n\n    return less.el;\n  }\n\n  private handlePopulateBreadCrumb(args: IPopulateBreadcrumbEventArgs) {\n    if (this.isPristine()) {\n      return;\n    }\n\n    const lastParentValue = this.categoryFacetValuesTree.getValueForLastPartInPath(this.activePath);\n    const descriptor: CategoryValueDescriptor = {\n      path: this.activePath,\n      count: lastParentValue.numberOfResults,\n      value: lastParentValue.value\n    };\n\n    const resetFacet = () => {\n      this.logAnalyticsEvent(analyticsActionCauseList.breadcrumbFacet);\n      this.reset();\n    };\n\n    const categoryFacetBreadcrumbBuilder = new CategoryFacetBreadcrumb(this, resetFacet, descriptor, { headingLevel: args.headingLevel });\n\n    args.breadcrumbs.push({ element: categoryFacetBreadcrumbBuilder.build() });\n  }\n\n  private handleClearBreadcrumb() {\n    this.changeActivePath(this.options.basePath);\n  }\n\n  private logAnalyticsFacetShowMoreLess(cause: IAnalyticsActionCause) {\n    this.usageAnalytics.logCustomEvent<IAnalyticsFacetMeta>(\n      cause,\n      {\n        facetId: this.options.id,\n        facetField: this.options.field.toString(),\n        facetTitle: this.options.title\n      },\n      this.element\n    );\n  }\n}\n\nInitialization.registerAutoCreateComponent(CategoryFacet);\nCategoryFacet.doExport();\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/CategoryFacet/CategoryFacet.ts","import { Template, IInstantiateTemplateOptions, DefaultInstantiateTemplateOptions } from './Template';\nimport { DefaultResultTemplate } from './DefaultResultTemplate';\nimport { IQueryResult } from '../../rest/QueryResult';\nimport { Assert } from '../../misc/Assert';\nimport * as _ from 'underscore';\n\nexport class TemplateList extends Template {\n  constructor(public templates: Template[]) {\n    super();\n    Assert.exists(templates);\n  }\n\n  instantiateToString(object: IQueryResult, instantiateOptions: IInstantiateTemplateOptions = {}): string {\n    let merged = new DefaultInstantiateTemplateOptions().merge(instantiateOptions);\n\n    const filteredTemplates = _.reject(this.templates, t => t.role != null);\n    for (var i = 0; i < filteredTemplates.length; i++) {\n      var result = filteredTemplates[i].instantiateToString(object, merged);\n      if (result != null) {\n        return result;\n      }\n    }\n    return this.getFallbackTemplate().instantiateToString(object, instantiateOptions);\n  }\n\n  instantiateToElement(object: IQueryResult, instantiateOptions: IInstantiateTemplateOptions = {}): Promise<HTMLElement> {\n    let merged = new DefaultInstantiateTemplateOptions().merge(instantiateOptions);\n\n    const filteredTemplates = _.reject(this.templates, t => t.role != null);\n    for (var i = 0; i < filteredTemplates.length; i++) {\n      var promiseOfHTMLElement = filteredTemplates[i].instantiateToElement(object, merged);\n      if (promiseOfHTMLElement != null) {\n        return promiseOfHTMLElement;\n      }\n    }\n    return this.getFallbackTemplate().instantiateToElement(object, merged);\n  }\n\n  getFields() {\n    return _.reduce(this.templates, (fields: string[], template: Template) => fields.concat(template.getFields()), []);\n  }\n\n  getType() {\n    return 'TemplateList';\n  }\n\n  protected getFallbackTemplate(): Template {\n    return new DefaultResultTemplate();\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Templates/TemplateList.ts","import { $$, Dom } from './Dom';\nimport { IQueryResult } from '../rest/QueryResult';\nimport { DateUtils } from './DateUtils';\nimport { FileTypes } from '../ui/Misc/FileTypes';\nimport { Utils } from './Utils';\nimport { StringUtils } from './StringUtils';\nimport { SVGIcons } from './SVGIcons';\nimport { load } from '../ui/Base/RegisteredNamedMethods';\nimport { Logger } from '../misc/Logger';\nimport { IComponentBindings } from '../ui/Base/ComponentBindings';\nimport { Initialization } from '../Core';\nimport { Assert } from '../misc/Assert';\n\nexport interface IQuickViewHeaderOptions {\n  showDate: boolean;\n  title: string;\n}\n\nexport class DomUtils {\n  static getPopUpCloseButton(captionForClose: string, captionForReminder: string): string {\n    let container = document.createElement('span');\n\n    let closeButton = document.createElement('span');\n    $$(closeButton).addClass('coveo-close-button');\n    container.appendChild(closeButton);\n\n    let iconClose = document.createElement('span');\n    $$(iconClose).addClass('coveo-icon');\n    $$(iconClose).addClass('coveo-sprites-quickview-close');\n    closeButton.appendChild(iconClose);\n\n    $$(closeButton).text(captionForClose);\n\n    let closeReminder = document.createElement('span');\n    $$(closeReminder).addClass('coveo-pop-up-reminder');\n    $$(closeReminder).text(captionForReminder);\n    container.appendChild(closeReminder);\n\n    return container.outerHTML;\n  }\n\n  static getBasicLoadingAnimation() {\n    let loadDotClass = 'coveo-loading-dot';\n    let dom = document.createElement('div');\n    dom.className = 'coveo-first-loading-animation';\n    dom.innerHTML = `<div class='coveo-logo'>${SVGIcons.icons.coveoLogo}</div>\n    <div class='coveo-loading-container'>\n      <div class='${loadDotClass}'></div>\n      <div class='${loadDotClass}'></div>\n      <div class='${loadDotClass}'></div>\n      <div class='${loadDotClass}'></div>\n    </div>`;\n    return dom;\n  }\n\n  static highlight(content: string, classToApply = 'coveo-highlight', htmlEncode = true) {\n    const trimmedClass = classToApply !== null ? classToApply.trim() : null;\n    if (trimmedClass !== null) {\n      Assert.check(/^([^\\s\\-][a-z\\s\\-]*[^\\s\\-])?$/i.test(trimmedClass), 'Invalid class');\n    }\n    return `<span${trimmedClass !== null && trimmedClass.length > 0 ? ` class='${trimmedClass}'` : ''}>${\n      htmlEncode ? StringUtils.htmlEncode(content) : content\n    }</span>`;\n  }\n\n  static highlightElement(initialString: string, valueToSearch: string, classToApply: string = 'coveo-highlight'): string {\n    let regex = new RegExp(Utils.escapeRegexCharacter(StringUtils.latinize(valueToSearch)), 'i');\n    let firstChar = StringUtils.latinize(initialString).search(regex);\n    if (firstChar >= 0) {\n      let lastChar = firstChar + valueToSearch.length;\n      return (\n        StringUtils.htmlEncode(initialString.slice(0, firstChar)) +\n        this.highlight(initialString.slice(firstChar, lastChar), classToApply, true) +\n        StringUtils.htmlEncode(initialString.slice(lastChar))\n      );\n    } else {\n      return initialString;\n    }\n  }\n\n  static getLoadingSpinner(): HTMLElement {\n    let loading = $$('div', {\n      className: 'coveo-loading-spinner'\n    });\n    return loading.el;\n  }\n\n  static getModalBoxHeader(title: string): Dom {\n    let header = $$('div');\n    header.el.innerHTML = `<div class='coveo-modalbox-right-header'>\n        <span class='coveo-modalbox-close-button'>\n          <span class='coveo-icon coveo-sprites-common-clear'></span>\n        </span>\n      </div>\n      <div class='coveo-modalbox-left-header'>\n        <span class='coveo-modalbox-pop-up-reminder'> ${title || ''}</span>\n      </div>`;\n    return header;\n  }\n\n  static getQuickviewHeader(result: IQueryResult, options: IQuickViewHeaderOptions, bindings: IComponentBindings): Dom {\n    let date = '';\n    if (options.showDate) {\n      const dateValueFromResult = Utils.getFieldValue(result, 'date');\n      if (dateValueFromResult) {\n        date = DateUtils.dateTimeToString(new Date(dateValueFromResult));\n      }\n    }\n    const fileType = FileTypes.get(result);\n    const header = $$('div');\n\n    header.el.innerHTML = `<div class='coveo-quickview-right-header'>\n        <span class='coveo-quickview-time'>${date}</span>\n        <span class='coveo-quickview-close-button'>\n          <span class='coveo-icon coveo-sprites-common-clear'></span>\n        </span>\n      </div>\n      <div class='coveo-quickview-left-header'>\n        <span class='coveo-quickview-icon coveo-small ${fileType.icon}'></span>\n      </div>`;\n\n    const clickableLinkElement = $$('a', { className: 'coveo-quickview-pop-up-reminder' });\n\n    const toLoad = Coveo['Salesforce'] ? 'SalesforceResultLink' : 'ResultLink';\n    const resultForResultLink = { ...result };\n    if (options.title) {\n      resultForResultLink.title = options.title;\n    }\n\n    DomUtils.loadResultLink(toLoad, clickableLinkElement, header, resultForResultLink, options);\n\n    return header;\n  }\n\n  private static async loadResultLink(\n    toLoad: string,\n    clickableLinkElement: Dom,\n    header: Dom,\n    resultForResultLink: IQueryResult,\n    options: IQuickViewHeaderOptions\n  ) {\n    try {\n      await load(toLoad);\n      clickableLinkElement.addClass(`Coveo${toLoad}`);\n      Initialization.automaticallyCreateComponentsInsideResult(clickableLinkElement.el, resultForResultLink);\n    } catch (err) {\n      const logger = new Logger(this);\n      logger.error(`Failed to load module ${toLoad} : ${err}`);\n      logger.info(`Fallback on displaying a non clickable header`);\n      clickableLinkElement.text(options.title);\n    }\n\n    $$(header.find('.coveo-quickview-left-header')).append(clickableLinkElement.el);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/DomUtils.ts","/**!\n * @fileOverview Kickass library to create and place poppers near their reference elements.\n * @version 1.14.3\n * @license\n * Copyright (c) 2016 Federico Zivolo and contributors\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in all\n * copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\n * SOFTWARE.\n */\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nvar longerTimeoutBrowsers = ['Edge', 'Trident', 'Firefox'];\nvar timeoutDuration = 0;\nfor (var i = 0; i < longerTimeoutBrowsers.length; i += 1) {\n  if (isBrowser && navigator.userAgent.indexOf(longerTimeoutBrowsers[i]) >= 0) {\n    timeoutDuration = 1;\n    break;\n  }\n}\n\nfunction microtaskDebounce(fn) {\n  var called = false;\n  return function () {\n    if (called) {\n      return;\n    }\n    called = true;\n    window.Promise.resolve().then(function () {\n      called = false;\n      fn();\n    });\n  };\n}\n\nfunction taskDebounce(fn) {\n  var scheduled = false;\n  return function () {\n    if (!scheduled) {\n      scheduled = true;\n      setTimeout(function () {\n        scheduled = false;\n        fn();\n      }, timeoutDuration);\n    }\n  };\n}\n\nvar supportsMicroTasks = isBrowser && window.Promise;\n\n/**\n* Create a debounced version of a method, that's asynchronously deferred\n* but called in the minimum time possible.\n*\n* @method\n* @memberof Popper.Utils\n* @argument {Function} fn\n* @returns {Function}\n*/\nvar debounce = supportsMicroTasks ? microtaskDebounce : taskDebounce;\n\n/**\n * Check if the given variable is a function\n * @method\n * @memberof Popper.Utils\n * @argument {Any} functionToCheck - variable to check\n * @returns {Boolean} answer to: is a function?\n */\nfunction isFunction(functionToCheck) {\n  var getType = {};\n  return functionToCheck && getType.toString.call(functionToCheck) === '[object Function]';\n}\n\n/**\n * Get CSS computed property of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Eement} element\n * @argument {String} property\n */\nfunction getStyleComputedProperty(element, property) {\n  if (element.nodeType !== 1) {\n    return [];\n  }\n  // NOTE: 1 DOM access here\n  var css = getComputedStyle(element, null);\n  return property ? css[property] : css;\n}\n\n/**\n * Returns the parentNode or the host of the element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} parent\n */\nfunction getParentNode(element) {\n  if (element.nodeName === 'HTML') {\n    return element;\n  }\n  return element.parentNode || element.host;\n}\n\n/**\n * Returns the scrolling parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} scroll parent\n */\nfunction getScrollParent(element) {\n  // Return body, `getScroll` will take care to get the correct `scrollTop` from it\n  if (!element) {\n    return document.body;\n  }\n\n  switch (element.nodeName) {\n    case 'HTML':\n    case 'BODY':\n      return element.ownerDocument.body;\n    case '#document':\n      return element.body;\n  }\n\n  // Firefox want us to check `-x` and `-y` variations as well\n\n  var _getStyleComputedProp = getStyleComputedProperty(element),\n      overflow = _getStyleComputedProp.overflow,\n      overflowX = _getStyleComputedProp.overflowX,\n      overflowY = _getStyleComputedProp.overflowY;\n\n  if (/(auto|scroll|overlay)/.test(overflow + overflowY + overflowX)) {\n    return element;\n  }\n\n  return getScrollParent(getParentNode(element));\n}\n\nvar isIE11 = isBrowser && !!(window.MSInputMethodContext && document.documentMode);\nvar isIE10 = isBrowser && /MSIE 10/.test(navigator.userAgent);\n\n/**\n * Determines if the browser is Internet Explorer\n * @method\n * @memberof Popper.Utils\n * @param {Number} version to check\n * @returns {Boolean} isIE\n */\nfunction isIE(version) {\n  if (version === 11) {\n    return isIE11;\n  }\n  if (version === 10) {\n    return isIE10;\n  }\n  return isIE11 || isIE10;\n}\n\n/**\n * Returns the offset parent of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} offset parent\n */\nfunction getOffsetParent(element) {\n  if (!element) {\n    return document.documentElement;\n  }\n\n  var noOffsetParent = isIE(10) ? document.body : null;\n\n  // NOTE: 1 DOM access here\n  var offsetParent = element.offsetParent;\n  // Skip hidden elements which don't have an offsetParent\n  while (offsetParent === noOffsetParent && element.nextElementSibling) {\n    offsetParent = (element = element.nextElementSibling).offsetParent;\n  }\n\n  var nodeName = offsetParent && offsetParent.nodeName;\n\n  if (!nodeName || nodeName === 'BODY' || nodeName === 'HTML') {\n    return element ? element.ownerDocument.documentElement : document.documentElement;\n  }\n\n  // .offsetParent will return the closest TD or TABLE in case\n  // no offsetParent is present, I hate this job...\n  if (['TD', 'TABLE'].indexOf(offsetParent.nodeName) !== -1 && getStyleComputedProperty(offsetParent, 'position') === 'static') {\n    return getOffsetParent(offsetParent);\n  }\n\n  return offsetParent;\n}\n\nfunction isOffsetContainer(element) {\n  var nodeName = element.nodeName;\n\n  if (nodeName === 'BODY') {\n    return false;\n  }\n  return nodeName === 'HTML' || getOffsetParent(element.firstElementChild) === element;\n}\n\n/**\n * Finds the root node (document, shadowDOM root) of the given element\n * @method\n * @memberof Popper.Utils\n * @argument {Element} node\n * @returns {Element} root node\n */\nfunction getRoot(node) {\n  if (node.parentNode !== null) {\n    return getRoot(node.parentNode);\n  }\n\n  return node;\n}\n\n/**\n * Finds the offset parent common to the two provided nodes\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element1\n * @argument {Element} element2\n * @returns {Element} common offset parent\n */\nfunction findCommonOffsetParent(element1, element2) {\n  // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n  if (!element1 || !element1.nodeType || !element2 || !element2.nodeType) {\n    return document.documentElement;\n  }\n\n  // Here we make sure to give as \"start\" the element that comes first in the DOM\n  var order = element1.compareDocumentPosition(element2) & Node.DOCUMENT_POSITION_FOLLOWING;\n  var start = order ? element1 : element2;\n  var end = order ? element2 : element1;\n\n  // Get common ancestor container\n  var range = document.createRange();\n  range.setStart(start, 0);\n  range.setEnd(end, 0);\n  var commonAncestorContainer = range.commonAncestorContainer;\n\n  // Both nodes are inside #document\n\n  if (element1 !== commonAncestorContainer && element2 !== commonAncestorContainer || start.contains(end)) {\n    if (isOffsetContainer(commonAncestorContainer)) {\n      return commonAncestorContainer;\n    }\n\n    return getOffsetParent(commonAncestorContainer);\n  }\n\n  // one of the nodes is inside shadowDOM, find which one\n  var element1root = getRoot(element1);\n  if (element1root.host) {\n    return findCommonOffsetParent(element1root.host, element2);\n  } else {\n    return findCommonOffsetParent(element1, getRoot(element2).host);\n  }\n}\n\n/**\n * Gets the scroll value of the given element in the given side (top and left)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {String} side `top` or `left`\n * @returns {number} amount of scrolled pixels\n */\nfunction getScroll(element) {\n  var side = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'top';\n\n  var upperSide = side === 'top' ? 'scrollTop' : 'scrollLeft';\n  var nodeName = element.nodeName;\n\n  if (nodeName === 'BODY' || nodeName === 'HTML') {\n    var html = element.ownerDocument.documentElement;\n    var scrollingElement = element.ownerDocument.scrollingElement || html;\n    return scrollingElement[upperSide];\n  }\n\n  return element[upperSide];\n}\n\n/*\n * Sum or subtract the element scroll values (left and top) from a given rect object\n * @method\n * @memberof Popper.Utils\n * @param {Object} rect - Rect object you want to change\n * @param {HTMLElement} element - The element from the function reads the scroll values\n * @param {Boolean} subtract - set to true if you want to subtract the scroll values\n * @return {Object} rect - The modifier rect object\n */\nfunction includeScroll(rect, element) {\n  var subtract = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n  var scrollTop = getScroll(element, 'top');\n  var scrollLeft = getScroll(element, 'left');\n  var modifier = subtract ? -1 : 1;\n  rect.top += scrollTop * modifier;\n  rect.bottom += scrollTop * modifier;\n  rect.left += scrollLeft * modifier;\n  rect.right += scrollLeft * modifier;\n  return rect;\n}\n\n/*\n * Helper to detect borders of a given element\n * @method\n * @memberof Popper.Utils\n * @param {CSSStyleDeclaration} styles\n * Result of `getStyleComputedProperty` on the given element\n * @param {String} axis - `x` or `y`\n * @return {number} borders - The borders size of the given axis\n */\n\nfunction getBordersSize(styles, axis) {\n  var sideA = axis === 'x' ? 'Left' : 'Top';\n  var sideB = sideA === 'Left' ? 'Right' : 'Bottom';\n\n  return parseFloat(styles['border' + sideA + 'Width'], 10) + parseFloat(styles['border' + sideB + 'Width'], 10);\n}\n\nfunction getSize(axis, body, html, computedStyle) {\n  return Math.max(body['offset' + axis], body['scroll' + axis], html['client' + axis], html['offset' + axis], html['scroll' + axis], isIE(10) ? html['offset' + axis] + computedStyle['margin' + (axis === 'Height' ? 'Top' : 'Left')] + computedStyle['margin' + (axis === 'Height' ? 'Bottom' : 'Right')] : 0);\n}\n\nfunction getWindowSizes() {\n  var body = document.body;\n  var html = document.documentElement;\n  var computedStyle = isIE(10) && getComputedStyle(html);\n\n  return {\n    height: getSize('Height', body, html, computedStyle),\n    width: getSize('Width', body, html, computedStyle)\n  };\n}\n\nvar classCallCheck = function (instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n};\n\nvar createClass = function () {\n  function defineProperties(target, props) {\n    for (var i = 0; i < props.length; i++) {\n      var descriptor = props[i];\n      descriptor.enumerable = descriptor.enumerable || false;\n      descriptor.configurable = true;\n      if (\"value\" in descriptor) descriptor.writable = true;\n      Object.defineProperty(target, descriptor.key, descriptor);\n    }\n  }\n\n  return function (Constructor, protoProps, staticProps) {\n    if (protoProps) defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) defineProperties(Constructor, staticProps);\n    return Constructor;\n  };\n}();\n\n\n\n\n\nvar defineProperty = function (obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n};\n\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\n/**\n * Given element offsets, generate an output similar to getBoundingClientRect\n * @method\n * @memberof Popper.Utils\n * @argument {Object} offsets\n * @returns {Object} ClientRect like output\n */\nfunction getClientRect(offsets) {\n  return _extends({}, offsets, {\n    right: offsets.left + offsets.width,\n    bottom: offsets.top + offsets.height\n  });\n}\n\n/**\n * Get bounding client rect of given element\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} element\n * @return {Object} client rect\n */\nfunction getBoundingClientRect(element) {\n  var rect = {};\n\n  // IE10 10 FIX: Please, don't ask, the element isn't\n  // considered in DOM in some circumstances...\n  // This isn't reproducible in IE10 compatibility mode of IE11\n  try {\n    if (isIE(10)) {\n      rect = element.getBoundingClientRect();\n      var scrollTop = getScroll(element, 'top');\n      var scrollLeft = getScroll(element, 'left');\n      rect.top += scrollTop;\n      rect.left += scrollLeft;\n      rect.bottom += scrollTop;\n      rect.right += scrollLeft;\n    } else {\n      rect = element.getBoundingClientRect();\n    }\n  } catch (e) {}\n\n  var result = {\n    left: rect.left,\n    top: rect.top,\n    width: rect.right - rect.left,\n    height: rect.bottom - rect.top\n  };\n\n  // subtract scrollbar size from sizes\n  var sizes = element.nodeName === 'HTML' ? getWindowSizes() : {};\n  var width = sizes.width || element.clientWidth || result.right - result.left;\n  var height = sizes.height || element.clientHeight || result.bottom - result.top;\n\n  var horizScrollbar = element.offsetWidth - width;\n  var vertScrollbar = element.offsetHeight - height;\n\n  // if an hypothetical scrollbar is detected, we must be sure it's not a `border`\n  // we make this check conditional for performance reasons\n  if (horizScrollbar || vertScrollbar) {\n    var styles = getStyleComputedProperty(element);\n    horizScrollbar -= getBordersSize(styles, 'x');\n    vertScrollbar -= getBordersSize(styles, 'y');\n\n    result.width -= horizScrollbar;\n    result.height -= vertScrollbar;\n  }\n\n  return getClientRect(result);\n}\n\nfunction getOffsetRectRelativeToArbitraryNode(children, parent) {\n  var fixedPosition = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n  var isIE10 = isIE(10);\n  var isHTML = parent.nodeName === 'HTML';\n  var childrenRect = getBoundingClientRect(children);\n  var parentRect = getBoundingClientRect(parent);\n  var scrollParent = getScrollParent(children);\n\n  var styles = getStyleComputedProperty(parent);\n  var borderTopWidth = parseFloat(styles.borderTopWidth, 10);\n  var borderLeftWidth = parseFloat(styles.borderLeftWidth, 10);\n\n  // In cases where the parent is fixed, we must ignore negative scroll in offset calc\n  if (fixedPosition && parent.nodeName === 'HTML') {\n    parentRect.top = Math.max(parentRect.top, 0);\n    parentRect.left = Math.max(parentRect.left, 0);\n  }\n  var offsets = getClientRect({\n    top: childrenRect.top - parentRect.top - borderTopWidth,\n    left: childrenRect.left - parentRect.left - borderLeftWidth,\n    width: childrenRect.width,\n    height: childrenRect.height\n  });\n  offsets.marginTop = 0;\n  offsets.marginLeft = 0;\n\n  // Subtract margins of documentElement in case it's being used as parent\n  // we do this only on HTML because it's the only element that behaves\n  // differently when margins are applied to it. The margins are included in\n  // the box of the documentElement, in the other cases not.\n  if (!isIE10 && isHTML) {\n    var marginTop = parseFloat(styles.marginTop, 10);\n    var marginLeft = parseFloat(styles.marginLeft, 10);\n\n    offsets.top -= borderTopWidth - marginTop;\n    offsets.bottom -= borderTopWidth - marginTop;\n    offsets.left -= borderLeftWidth - marginLeft;\n    offsets.right -= borderLeftWidth - marginLeft;\n\n    // Attach marginTop and marginLeft because in some circumstances we may need them\n    offsets.marginTop = marginTop;\n    offsets.marginLeft = marginLeft;\n  }\n\n  if (isIE10 && !fixedPosition ? parent.contains(scrollParent) : parent === scrollParent && scrollParent.nodeName !== 'BODY') {\n    offsets = includeScroll(offsets, parent);\n  }\n\n  return offsets;\n}\n\nfunction getViewportOffsetRectRelativeToArtbitraryNode(element) {\n  var excludeScroll = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n  var html = element.ownerDocument.documentElement;\n  var relativeOffset = getOffsetRectRelativeToArbitraryNode(element, html);\n  var width = Math.max(html.clientWidth, window.innerWidth || 0);\n  var height = Math.max(html.clientHeight, window.innerHeight || 0);\n\n  var scrollTop = !excludeScroll ? getScroll(html) : 0;\n  var scrollLeft = !excludeScroll ? getScroll(html, 'left') : 0;\n\n  var offset = {\n    top: scrollTop - relativeOffset.top + relativeOffset.marginTop,\n    left: scrollLeft - relativeOffset.left + relativeOffset.marginLeft,\n    width: width,\n    height: height\n  };\n\n  return getClientRect(offset);\n}\n\n/**\n * Check if the given element is fixed or is inside a fixed parent\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @argument {Element} customContainer\n * @returns {Boolean} answer to \"isFixed?\"\n */\nfunction isFixed(element) {\n  var nodeName = element.nodeName;\n  if (nodeName === 'BODY' || nodeName === 'HTML') {\n    return false;\n  }\n  if (getStyleComputedProperty(element, 'position') === 'fixed') {\n    return true;\n  }\n  return isFixed(getParentNode(element));\n}\n\n/**\n * Finds the first parent of an element that has a transformed property defined\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Element} first transformed parent or documentElement\n */\n\nfunction getFixedPositionOffsetParent(element) {\n  // This check is needed to avoid errors in case one of the elements isn't defined for any reason\n  if (!element || !element.parentElement || isIE()) {\n    return document.documentElement;\n  }\n  var el = element.parentElement;\n  while (el && getStyleComputedProperty(el, 'transform') === 'none') {\n    el = el.parentElement;\n  }\n  return el || document.documentElement;\n}\n\n/**\n * Computed the boundaries limits and return them\n * @method\n * @memberof Popper.Utils\n * @param {HTMLElement} popper\n * @param {HTMLElement} reference\n * @param {number} padding\n * @param {HTMLElement} boundariesElement - Element used to define the boundaries\n * @param {Boolean} fixedPosition - Is in fixed position mode\n * @returns {Object} Coordinates of the boundaries\n */\nfunction getBoundaries(popper, reference, padding, boundariesElement) {\n  var fixedPosition = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\n  // NOTE: 1 DOM access here\n\n  var boundaries = { top: 0, left: 0 };\n  var offsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference);\n\n  // Handle viewport case\n  if (boundariesElement === 'viewport') {\n    boundaries = getViewportOffsetRectRelativeToArtbitraryNode(offsetParent, fixedPosition);\n  } else {\n    // Handle other cases based on DOM element used as boundaries\n    var boundariesNode = void 0;\n    if (boundariesElement === 'scrollParent') {\n      boundariesNode = getScrollParent(getParentNode(reference));\n      if (boundariesNode.nodeName === 'BODY') {\n        boundariesNode = popper.ownerDocument.documentElement;\n      }\n    } else if (boundariesElement === 'window') {\n      boundariesNode = popper.ownerDocument.documentElement;\n    } else {\n      boundariesNode = boundariesElement;\n    }\n\n    var offsets = getOffsetRectRelativeToArbitraryNode(boundariesNode, offsetParent, fixedPosition);\n\n    // In case of HTML, we need a different computation\n    if (boundariesNode.nodeName === 'HTML' && !isFixed(offsetParent)) {\n      var _getWindowSizes = getWindowSizes(),\n          height = _getWindowSizes.height,\n          width = _getWindowSizes.width;\n\n      boundaries.top += offsets.top - offsets.marginTop;\n      boundaries.bottom = height + offsets.top;\n      boundaries.left += offsets.left - offsets.marginLeft;\n      boundaries.right = width + offsets.left;\n    } else {\n      // for all the other DOM elements, this one is good\n      boundaries = offsets;\n    }\n  }\n\n  // Add paddings\n  boundaries.left += padding;\n  boundaries.top += padding;\n  boundaries.right -= padding;\n  boundaries.bottom -= padding;\n\n  return boundaries;\n}\n\nfunction getArea(_ref) {\n  var width = _ref.width,\n      height = _ref.height;\n\n  return width * height;\n}\n\n/**\n * Utility used to transform the `auto` placement to the placement with more\n * available space.\n * @method\n * @memberof Popper.Utils\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeAutoPlacement(placement, refRect, popper, reference, boundariesElement) {\n  var padding = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 0;\n\n  if (placement.indexOf('auto') === -1) {\n    return placement;\n  }\n\n  var boundaries = getBoundaries(popper, reference, padding, boundariesElement);\n\n  var rects = {\n    top: {\n      width: boundaries.width,\n      height: refRect.top - boundaries.top\n    },\n    right: {\n      width: boundaries.right - refRect.right,\n      height: boundaries.height\n    },\n    bottom: {\n      width: boundaries.width,\n      height: boundaries.bottom - refRect.bottom\n    },\n    left: {\n      width: refRect.left - boundaries.left,\n      height: boundaries.height\n    }\n  };\n\n  var sortedAreas = Object.keys(rects).map(function (key) {\n    return _extends({\n      key: key\n    }, rects[key], {\n      area: getArea(rects[key])\n    });\n  }).sort(function (a, b) {\n    return b.area - a.area;\n  });\n\n  var filteredAreas = sortedAreas.filter(function (_ref2) {\n    var width = _ref2.width,\n        height = _ref2.height;\n    return width >= popper.clientWidth && height >= popper.clientHeight;\n  });\n\n  var computedPlacement = filteredAreas.length > 0 ? filteredAreas[0].key : sortedAreas[0].key;\n\n  var variation = placement.split('-')[1];\n\n  return computedPlacement + (variation ? '-' + variation : '');\n}\n\n/**\n * Get offsets to the reference element\n * @method\n * @memberof Popper.Utils\n * @param {Object} state\n * @param {Element} popper - the popper element\n * @param {Element} reference - the reference element (the popper will be relative to this)\n * @param {Element} fixedPosition - is in fixed position mode\n * @returns {Object} An object containing the offsets which will be applied to the popper\n */\nfunction getReferenceOffsets(state, popper, reference) {\n  var fixedPosition = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n\n  var commonOffsetParent = fixedPosition ? getFixedPositionOffsetParent(popper) : findCommonOffsetParent(popper, reference);\n  return getOffsetRectRelativeToArbitraryNode(reference, commonOffsetParent, fixedPosition);\n}\n\n/**\n * Get the outer sizes of the given element (offset size + margins)\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element\n * @returns {Object} object containing width and height properties\n */\nfunction getOuterSizes(element) {\n  var styles = getComputedStyle(element);\n  var x = parseFloat(styles.marginTop) + parseFloat(styles.marginBottom);\n  var y = parseFloat(styles.marginLeft) + parseFloat(styles.marginRight);\n  var result = {\n    width: element.offsetWidth + y,\n    height: element.offsetHeight + x\n  };\n  return result;\n}\n\n/**\n * Get the opposite placement of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement\n * @returns {String} flipped placement\n */\nfunction getOppositePlacement(placement) {\n  var hash = { left: 'right', right: 'left', bottom: 'top', top: 'bottom' };\n  return placement.replace(/left|right|bottom|top/g, function (matched) {\n    return hash[matched];\n  });\n}\n\n/**\n * Get offsets to the popper\n * @method\n * @memberof Popper.Utils\n * @param {Object} position - CSS position the Popper will get applied\n * @param {HTMLElement} popper - the popper element\n * @param {Object} referenceOffsets - the reference offsets (the popper will be relative to this)\n * @param {String} placement - one of the valid placement options\n * @returns {Object} popperOffsets - An object containing the offsets which will be applied to the popper\n */\nfunction getPopperOffsets(popper, referenceOffsets, placement) {\n  placement = placement.split('-')[0];\n\n  // Get popper node sizes\n  var popperRect = getOuterSizes(popper);\n\n  // Add position, width and height to our offsets object\n  var popperOffsets = {\n    width: popperRect.width,\n    height: popperRect.height\n  };\n\n  // depending by the popper placement we have to compute its offsets slightly differently\n  var isHoriz = ['right', 'left'].indexOf(placement) !== -1;\n  var mainSide = isHoriz ? 'top' : 'left';\n  var secondarySide = isHoriz ? 'left' : 'top';\n  var measurement = isHoriz ? 'height' : 'width';\n  var secondaryMeasurement = !isHoriz ? 'height' : 'width';\n\n  popperOffsets[mainSide] = referenceOffsets[mainSide] + referenceOffsets[measurement] / 2 - popperRect[measurement] / 2;\n  if (placement === secondarySide) {\n    popperOffsets[secondarySide] = referenceOffsets[secondarySide] - popperRect[secondaryMeasurement];\n  } else {\n    popperOffsets[secondarySide] = referenceOffsets[getOppositePlacement(secondarySide)];\n  }\n\n  return popperOffsets;\n}\n\n/**\n * Mimics the `find` method of Array\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction find(arr, check) {\n  // use native find if supported\n  if (Array.prototype.find) {\n    return arr.find(check);\n  }\n\n  // use `filter` to obtain the same behavior of `find`\n  return arr.filter(check)[0];\n}\n\n/**\n * Return the index of the matching object\n * @method\n * @memberof Popper.Utils\n * @argument {Array} arr\n * @argument prop\n * @argument value\n * @returns index or -1\n */\nfunction findIndex(arr, prop, value) {\n  // use native findIndex if supported\n  if (Array.prototype.findIndex) {\n    return arr.findIndex(function (cur) {\n      return cur[prop] === value;\n    });\n  }\n\n  // use `find` + `indexOf` if `findIndex` isn't supported\n  var match = find(arr, function (obj) {\n    return obj[prop] === value;\n  });\n  return arr.indexOf(match);\n}\n\n/**\n * Loop trough the list of modifiers and run them in order,\n * each of them will then edit the data object.\n * @method\n * @memberof Popper.Utils\n * @param {dataObject} data\n * @param {Array} modifiers\n * @param {String} ends - Optional modifier name used as stopper\n * @returns {dataObject}\n */\nfunction runModifiers(modifiers, data, ends) {\n  var modifiersToRun = ends === undefined ? modifiers : modifiers.slice(0, findIndex(modifiers, 'name', ends));\n\n  modifiersToRun.forEach(function (modifier) {\n    if (modifier['function']) {\n      // eslint-disable-line dot-notation\n      console.warn('`modifier.function` is deprecated, use `modifier.fn`!');\n    }\n    var fn = modifier['function'] || modifier.fn; // eslint-disable-line dot-notation\n    if (modifier.enabled && isFunction(fn)) {\n      // Add properties to offsets to make them a complete clientRect object\n      // we do this before each modifier to make sure the previous one doesn't\n      // mess with these values\n      data.offsets.popper = getClientRect(data.offsets.popper);\n      data.offsets.reference = getClientRect(data.offsets.reference);\n\n      data = fn(data, modifier);\n    }\n  });\n\n  return data;\n}\n\n/**\n * Updates the position of the popper, computing the new offsets and applying\n * the new style.<br />\n * Prefer `scheduleUpdate` over `update` because of performance reasons.\n * @method\n * @memberof Popper\n */\nfunction update() {\n  // if popper is destroyed, don't perform any further update\n  if (this.state.isDestroyed) {\n    return;\n  }\n\n  var data = {\n    instance: this,\n    styles: {},\n    arrowStyles: {},\n    attributes: {},\n    flipped: false,\n    offsets: {}\n  };\n\n  // compute reference element offsets\n  data.offsets.reference = getReferenceOffsets(this.state, this.popper, this.reference, this.options.positionFixed);\n\n  // compute auto placement, store placement inside the data object,\n  // modifiers will be able to edit `placement` if needed\n  // and refer to originalPlacement to know the original value\n  data.placement = computeAutoPlacement(this.options.placement, data.offsets.reference, this.popper, this.reference, this.options.modifiers.flip.boundariesElement, this.options.modifiers.flip.padding);\n\n  // store the computed placement inside `originalPlacement`\n  data.originalPlacement = data.placement;\n\n  data.positionFixed = this.options.positionFixed;\n\n  // compute the popper offsets\n  data.offsets.popper = getPopperOffsets(this.popper, data.offsets.reference, data.placement);\n\n  data.offsets.popper.position = this.options.positionFixed ? 'fixed' : 'absolute';\n\n  // run the modifiers\n  data = runModifiers(this.modifiers, data);\n\n  // the first `update` will call `onCreate` callback\n  // the other ones will call `onUpdate` callback\n  if (!this.state.isCreated) {\n    this.state.isCreated = true;\n    this.options.onCreate(data);\n  } else {\n    this.options.onUpdate(data);\n  }\n}\n\n/**\n * Helper used to know if the given modifier is enabled.\n * @method\n * @memberof Popper.Utils\n * @returns {Boolean}\n */\nfunction isModifierEnabled(modifiers, modifierName) {\n  return modifiers.some(function (_ref) {\n    var name = _ref.name,\n        enabled = _ref.enabled;\n    return enabled && name === modifierName;\n  });\n}\n\n/**\n * Get the prefixed supported property name\n * @method\n * @memberof Popper.Utils\n * @argument {String} property (camelCase)\n * @returns {String} prefixed property (camelCase or PascalCase, depending on the vendor prefix)\n */\nfunction getSupportedPropertyName(property) {\n  var prefixes = [false, 'ms', 'Webkit', 'Moz', 'O'];\n  var upperProp = property.charAt(0).toUpperCase() + property.slice(1);\n\n  for (var i = 0; i < prefixes.length; i++) {\n    var prefix = prefixes[i];\n    var toCheck = prefix ? '' + prefix + upperProp : property;\n    if (typeof document.body.style[toCheck] !== 'undefined') {\n      return toCheck;\n    }\n  }\n  return null;\n}\n\n/**\n * Destroy the popper\n * @method\n * @memberof Popper\n */\nfunction destroy() {\n  this.state.isDestroyed = true;\n\n  // touch DOM only if `applyStyle` modifier is enabled\n  if (isModifierEnabled(this.modifiers, 'applyStyle')) {\n    this.popper.removeAttribute('x-placement');\n    this.popper.style.position = '';\n    this.popper.style.top = '';\n    this.popper.style.left = '';\n    this.popper.style.right = '';\n    this.popper.style.bottom = '';\n    this.popper.style.willChange = '';\n    this.popper.style[getSupportedPropertyName('transform')] = '';\n  }\n\n  this.disableEventListeners();\n\n  // remove the popper if user explicity asked for the deletion on destroy\n  // do not use `remove` because IE11 doesn't support it\n  if (this.options.removeOnDestroy) {\n    this.popper.parentNode.removeChild(this.popper);\n  }\n  return this;\n}\n\n/**\n * Get the window associated with the element\n * @argument {Element} element\n * @returns {Window}\n */\nfunction getWindow(element) {\n  var ownerDocument = element.ownerDocument;\n  return ownerDocument ? ownerDocument.defaultView : window;\n}\n\nfunction attachToScrollParents(scrollParent, event, callback, scrollParents) {\n  var isBody = scrollParent.nodeName === 'BODY';\n  var target = isBody ? scrollParent.ownerDocument.defaultView : scrollParent;\n  target.addEventListener(event, callback, { passive: true });\n\n  if (!isBody) {\n    attachToScrollParents(getScrollParent(target.parentNode), event, callback, scrollParents);\n  }\n  scrollParents.push(target);\n}\n\n/**\n * Setup needed event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction setupEventListeners(reference, options, state, updateBound) {\n  // Resize event listener on window\n  state.updateBound = updateBound;\n  getWindow(reference).addEventListener('resize', state.updateBound, { passive: true });\n\n  // Scroll event listener on scroll parents\n  var scrollElement = getScrollParent(reference);\n  attachToScrollParents(scrollElement, 'scroll', state.updateBound, state.scrollParents);\n  state.scrollElement = scrollElement;\n  state.eventsEnabled = true;\n\n  return state;\n}\n\n/**\n * It will add resize/scroll events and start recalculating\n * position of the popper element when they are triggered.\n * @method\n * @memberof Popper\n */\nfunction enableEventListeners() {\n  if (!this.state.eventsEnabled) {\n    this.state = setupEventListeners(this.reference, this.options, this.state, this.scheduleUpdate);\n  }\n}\n\n/**\n * Remove event listeners used to update the popper position\n * @method\n * @memberof Popper.Utils\n * @private\n */\nfunction removeEventListeners(reference, state) {\n  // Remove resize event listener on window\n  getWindow(reference).removeEventListener('resize', state.updateBound);\n\n  // Remove scroll event listener on scroll parents\n  state.scrollParents.forEach(function (target) {\n    target.removeEventListener('scroll', state.updateBound);\n  });\n\n  // Reset state\n  state.updateBound = null;\n  state.scrollParents = [];\n  state.scrollElement = null;\n  state.eventsEnabled = false;\n  return state;\n}\n\n/**\n * It will remove resize/scroll events and won't recalculate popper position\n * when they are triggered. It also won't trigger onUpdate callback anymore,\n * unless you call `update` method manually.\n * @method\n * @memberof Popper\n */\nfunction disableEventListeners() {\n  if (this.state.eventsEnabled) {\n    cancelAnimationFrame(this.scheduleUpdate);\n    this.state = removeEventListeners(this.reference, this.state);\n  }\n}\n\n/**\n * Tells if a given input is a number\n * @method\n * @memberof Popper.Utils\n * @param {*} input to check\n * @return {Boolean}\n */\nfunction isNumeric(n) {\n  return n !== '' && !isNaN(parseFloat(n)) && isFinite(n);\n}\n\n/**\n * Set the style to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the style to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setStyles(element, styles) {\n  Object.keys(styles).forEach(function (prop) {\n    var unit = '';\n    // add unit if the value is numeric and is one of the following\n    if (['width', 'height', 'top', 'right', 'bottom', 'left'].indexOf(prop) !== -1 && isNumeric(styles[prop])) {\n      unit = 'px';\n    }\n    element.style[prop] = styles[prop] + unit;\n  });\n}\n\n/**\n * Set the attributes to the given popper\n * @method\n * @memberof Popper.Utils\n * @argument {Element} element - Element to apply the attributes to\n * @argument {Object} styles\n * Object with a list of properties and values which will be applied to the element\n */\nfunction setAttributes(element, attributes) {\n  Object.keys(attributes).forEach(function (prop) {\n    var value = attributes[prop];\n    if (value !== false) {\n      element.setAttribute(prop, attributes[prop]);\n    } else {\n      element.removeAttribute(prop);\n    }\n  });\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} data.styles - List of style properties - values to apply to popper element\n * @argument {Object} data.attributes - List of attribute properties - values to apply to popper element\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The same data object\n */\nfunction applyStyle(data) {\n  // any property present in `data.styles` will be applied to the popper,\n  // in this way we can make the 3rd party modifiers add custom styles to it\n  // Be aware, modifiers could override the properties defined in the previous\n  // lines of this modifier!\n  setStyles(data.instance.popper, data.styles);\n\n  // any property present in `data.attributes` will be applied to the popper,\n  // they will be set as HTML attributes of the element\n  setAttributes(data.instance.popper, data.attributes);\n\n  // if arrowElement is defined and arrowStyles has some properties\n  if (data.arrowElement && Object.keys(data.arrowStyles).length) {\n    setStyles(data.arrowElement, data.arrowStyles);\n  }\n\n  return data;\n}\n\n/**\n * Set the x-placement attribute before everything else because it could be used\n * to add margins to the popper margins needs to be calculated to get the\n * correct popper offsets.\n * @method\n * @memberof Popper.modifiers\n * @param {HTMLElement} reference - The reference element used to position the popper\n * @param {HTMLElement} popper - The HTML element used as popper\n * @param {Object} options - Popper.js options\n */\nfunction applyStyleOnLoad(reference, popper, options, modifierOptions, state) {\n  // compute reference element offsets\n  var referenceOffsets = getReferenceOffsets(state, popper, reference, options.positionFixed);\n\n  // compute auto placement, store placement inside the data object,\n  // modifiers will be able to edit `placement` if needed\n  // and refer to originalPlacement to know the original value\n  var placement = computeAutoPlacement(options.placement, referenceOffsets, popper, reference, options.modifiers.flip.boundariesElement, options.modifiers.flip.padding);\n\n  popper.setAttribute('x-placement', placement);\n\n  // Apply `position` to popper before anything else because\n  // without the position applied we can't guarantee correct computations\n  setStyles(popper, { position: options.positionFixed ? 'fixed' : 'absolute' });\n\n  return options;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction computeStyle(data, options) {\n  var x = options.x,\n      y = options.y;\n  var popper = data.offsets.popper;\n\n  // Remove this legacy support in Popper.js v2\n\n  var legacyGpuAccelerationOption = find(data.instance.modifiers, function (modifier) {\n    return modifier.name === 'applyStyle';\n  }).gpuAcceleration;\n  if (legacyGpuAccelerationOption !== undefined) {\n    console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');\n  }\n  var gpuAcceleration = legacyGpuAccelerationOption !== undefined ? legacyGpuAccelerationOption : options.gpuAcceleration;\n\n  var offsetParent = getOffsetParent(data.instance.popper);\n  var offsetParentRect = getBoundingClientRect(offsetParent);\n\n  // Styles\n  var styles = {\n    position: popper.position\n  };\n\n  // Avoid blurry text by using full pixel integers.\n  // For pixel-perfect positioning, top/bottom prefers rounded\n  // values, while left/right prefers floored values.\n  var offsets = {\n    left: Math.floor(popper.left),\n    top: Math.round(popper.top),\n    bottom: Math.round(popper.bottom),\n    right: Math.floor(popper.right)\n  };\n\n  var sideA = x === 'bottom' ? 'top' : 'bottom';\n  var sideB = y === 'right' ? 'left' : 'right';\n\n  // if gpuAcceleration is set to `true` and transform is supported,\n  //  we use `translate3d` to apply the position to the popper we\n  // automatically use the supported prefixed version if needed\n  var prefixedProperty = getSupportedPropertyName('transform');\n\n  // now, let's make a step back and look at this code closely (wtf?)\n  // If the content of the popper grows once it's been positioned, it\n  // may happen that the popper gets misplaced because of the new content\n  // overflowing its reference element\n  // To avoid this problem, we provide two options (x and y), which allow\n  // the consumer to define the offset origin.\n  // If we position a popper on top of a reference element, we can set\n  // `x` to `top` to make the popper grow towards its top instead of\n  // its bottom.\n  var left = void 0,\n      top = void 0;\n  if (sideA === 'bottom') {\n    top = -offsetParentRect.height + offsets.bottom;\n  } else {\n    top = offsets.top;\n  }\n  if (sideB === 'right') {\n    left = -offsetParentRect.width + offsets.right;\n  } else {\n    left = offsets.left;\n  }\n  if (gpuAcceleration && prefixedProperty) {\n    styles[prefixedProperty] = 'translate3d(' + left + 'px, ' + top + 'px, 0)';\n    styles[sideA] = 0;\n    styles[sideB] = 0;\n    styles.willChange = 'transform';\n  } else {\n    // othwerise, we use the standard `top`, `left`, `bottom` and `right` properties\n    var invertTop = sideA === 'bottom' ? -1 : 1;\n    var invertLeft = sideB === 'right' ? -1 : 1;\n    styles[sideA] = top * invertTop;\n    styles[sideB] = left * invertLeft;\n    styles.willChange = sideA + ', ' + sideB;\n  }\n\n  // Attributes\n  var attributes = {\n    'x-placement': data.placement\n  };\n\n  // Update `data` attributes, styles and arrowStyles\n  data.attributes = _extends({}, attributes, data.attributes);\n  data.styles = _extends({}, styles, data.styles);\n  data.arrowStyles = _extends({}, data.offsets.arrow, data.arrowStyles);\n\n  return data;\n}\n\n/**\n * Helper used to know if the given modifier depends from another one.<br />\n * It checks if the needed modifier is listed and enabled.\n * @method\n * @memberof Popper.Utils\n * @param {Array} modifiers - list of modifiers\n * @param {String} requestingName - name of requesting modifier\n * @param {String} requestedName - name of requested modifier\n * @returns {Boolean}\n */\nfunction isModifierRequired(modifiers, requestingName, requestedName) {\n  var requesting = find(modifiers, function (_ref) {\n    var name = _ref.name;\n    return name === requestingName;\n  });\n\n  var isRequired = !!requesting && modifiers.some(function (modifier) {\n    return modifier.name === requestedName && modifier.enabled && modifier.order < requesting.order;\n  });\n\n  if (!isRequired) {\n    var _requesting = '`' + requestingName + '`';\n    var requested = '`' + requestedName + '`';\n    console.warn(requested + ' modifier is required by ' + _requesting + ' modifier in order to work, be sure to include it before ' + _requesting + '!');\n  }\n  return isRequired;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction arrow(data, options) {\n  var _data$offsets$arrow;\n\n  // arrow depends on keepTogether in order to work\n  if (!isModifierRequired(data.instance.modifiers, 'arrow', 'keepTogether')) {\n    return data;\n  }\n\n  var arrowElement = options.element;\n\n  // if arrowElement is a string, suppose it's a CSS selector\n  if (typeof arrowElement === 'string') {\n    arrowElement = data.instance.popper.querySelector(arrowElement);\n\n    // if arrowElement is not found, don't run the modifier\n    if (!arrowElement) {\n      return data;\n    }\n  } else {\n    // if the arrowElement isn't a query selector we must check that the\n    // provided DOM node is child of its popper node\n    if (!data.instance.popper.contains(arrowElement)) {\n      console.warn('WARNING: `arrow.element` must be child of its popper element!');\n      return data;\n    }\n  }\n\n  var placement = data.placement.split('-')[0];\n  var _data$offsets = data.offsets,\n      popper = _data$offsets.popper,\n      reference = _data$offsets.reference;\n\n  var isVertical = ['left', 'right'].indexOf(placement) !== -1;\n\n  var len = isVertical ? 'height' : 'width';\n  var sideCapitalized = isVertical ? 'Top' : 'Left';\n  var side = sideCapitalized.toLowerCase();\n  var altSide = isVertical ? 'left' : 'top';\n  var opSide = isVertical ? 'bottom' : 'right';\n  var arrowElementSize = getOuterSizes(arrowElement)[len];\n\n  //\n  // extends keepTogether behavior making sure the popper and its\n  // reference have enough pixels in conjuction\n  //\n\n  // top/left side\n  if (reference[opSide] - arrowElementSize < popper[side]) {\n    data.offsets.popper[side] -= popper[side] - (reference[opSide] - arrowElementSize);\n  }\n  // bottom/right side\n  if (reference[side] + arrowElementSize > popper[opSide]) {\n    data.offsets.popper[side] += reference[side] + arrowElementSize - popper[opSide];\n  }\n  data.offsets.popper = getClientRect(data.offsets.popper);\n\n  // compute center of the popper\n  var center = reference[side] + reference[len] / 2 - arrowElementSize / 2;\n\n  // Compute the sideValue using the updated popper offsets\n  // take popper margin in account because we don't have this info available\n  var css = getStyleComputedProperty(data.instance.popper);\n  var popperMarginSide = parseFloat(css['margin' + sideCapitalized], 10);\n  var popperBorderSide = parseFloat(css['border' + sideCapitalized + 'Width'], 10);\n  var sideValue = center - data.offsets.popper[side] - popperMarginSide - popperBorderSide;\n\n  // prevent arrowElement from being placed not contiguously to its popper\n  sideValue = Math.max(Math.min(popper[len] - arrowElementSize, sideValue), 0);\n\n  data.arrowElement = arrowElement;\n  data.offsets.arrow = (_data$offsets$arrow = {}, defineProperty(_data$offsets$arrow, side, Math.round(sideValue)), defineProperty(_data$offsets$arrow, altSide, ''), _data$offsets$arrow);\n\n  return data;\n}\n\n/**\n * Get the opposite placement variation of the given one\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement variation\n * @returns {String} flipped placement variation\n */\nfunction getOppositeVariation(variation) {\n  if (variation === 'end') {\n    return 'start';\n  } else if (variation === 'start') {\n    return 'end';\n  }\n  return variation;\n}\n\n/**\n * List of accepted placements to use as values of the `placement` option.<br />\n * Valid placements are:\n * - `auto`\n * - `top`\n * - `right`\n * - `bottom`\n * - `left`\n *\n * Each placement can have a variation from this list:\n * - `-start`\n * - `-end`\n *\n * Variations are interpreted easily if you think of them as the left to right\n * written languages. Horizontally (`top` and `bottom`), `start` is left and `end`\n * is right.<br />\n * Vertically (`left` and `right`), `start` is top and `end` is bottom.\n *\n * Some valid examples are:\n * - `top-end` (on top of reference, right aligned)\n * - `right-start` (on right of reference, top aligned)\n * - `bottom` (on bottom, centered)\n * - `auto-right` (on the side with more space available, alignment depends by placement)\n *\n * @static\n * @type {Array}\n * @enum {String}\n * @readonly\n * @method placements\n * @memberof Popper\n */\nvar placements = ['auto-start', 'auto', 'auto-end', 'top-start', 'top', 'top-end', 'right-start', 'right', 'right-end', 'bottom-end', 'bottom', 'bottom-start', 'left-end', 'left', 'left-start'];\n\n// Get rid of `auto` `auto-start` and `auto-end`\nvar validPlacements = placements.slice(3);\n\n/**\n * Given an initial placement, returns all the subsequent placements\n * clockwise (or counter-clockwise).\n *\n * @method\n * @memberof Popper.Utils\n * @argument {String} placement - A valid placement (it accepts variations)\n * @argument {Boolean} counter - Set to true to walk the placements counterclockwise\n * @returns {Array} placements including their variations\n */\nfunction clockwise(placement) {\n  var counter = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n  var index = validPlacements.indexOf(placement);\n  var arr = validPlacements.slice(index + 1).concat(validPlacements.slice(0, index));\n  return counter ? arr.reverse() : arr;\n}\n\nvar BEHAVIORS = {\n  FLIP: 'flip',\n  CLOCKWISE: 'clockwise',\n  COUNTERCLOCKWISE: 'counterclockwise'\n};\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction flip(data, options) {\n  // if `inner` modifier is enabled, we can't use the `flip` modifier\n  if (isModifierEnabled(data.instance.modifiers, 'inner')) {\n    return data;\n  }\n\n  if (data.flipped && data.placement === data.originalPlacement) {\n    // seems like flip is trying to loop, probably there's not enough space on any of the flippable sides\n    return data;\n  }\n\n  var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, options.boundariesElement, data.positionFixed);\n\n  var placement = data.placement.split('-')[0];\n  var placementOpposite = getOppositePlacement(placement);\n  var variation = data.placement.split('-')[1] || '';\n\n  var flipOrder = [];\n\n  switch (options.behavior) {\n    case BEHAVIORS.FLIP:\n      flipOrder = [placement, placementOpposite];\n      break;\n    case BEHAVIORS.CLOCKWISE:\n      flipOrder = clockwise(placement);\n      break;\n    case BEHAVIORS.COUNTERCLOCKWISE:\n      flipOrder = clockwise(placement, true);\n      break;\n    default:\n      flipOrder = options.behavior;\n  }\n\n  flipOrder.forEach(function (step, index) {\n    if (placement !== step || flipOrder.length === index + 1) {\n      return data;\n    }\n\n    placement = data.placement.split('-')[0];\n    placementOpposite = getOppositePlacement(placement);\n\n    var popperOffsets = data.offsets.popper;\n    var refOffsets = data.offsets.reference;\n\n    // using floor because the reference offsets may contain decimals we are not going to consider here\n    var floor = Math.floor;\n    var overlapsRef = placement === 'left' && floor(popperOffsets.right) > floor(refOffsets.left) || placement === 'right' && floor(popperOffsets.left) < floor(refOffsets.right) || placement === 'top' && floor(popperOffsets.bottom) > floor(refOffsets.top) || placement === 'bottom' && floor(popperOffsets.top) < floor(refOffsets.bottom);\n\n    var overflowsLeft = floor(popperOffsets.left) < floor(boundaries.left);\n    var overflowsRight = floor(popperOffsets.right) > floor(boundaries.right);\n    var overflowsTop = floor(popperOffsets.top) < floor(boundaries.top);\n    var overflowsBottom = floor(popperOffsets.bottom) > floor(boundaries.bottom);\n\n    var overflowsBoundaries = placement === 'left' && overflowsLeft || placement === 'right' && overflowsRight || placement === 'top' && overflowsTop || placement === 'bottom' && overflowsBottom;\n\n    // flip the variation if required\n    var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n    var flippedVariation = !!options.flipVariations && (isVertical && variation === 'start' && overflowsLeft || isVertical && variation === 'end' && overflowsRight || !isVertical && variation === 'start' && overflowsTop || !isVertical && variation === 'end' && overflowsBottom);\n\n    if (overlapsRef || overflowsBoundaries || flippedVariation) {\n      // this boolean to detect any flip loop\n      data.flipped = true;\n\n      if (overlapsRef || overflowsBoundaries) {\n        placement = flipOrder[index + 1];\n      }\n\n      if (flippedVariation) {\n        variation = getOppositeVariation(variation);\n      }\n\n      data.placement = placement + (variation ? '-' + variation : '');\n\n      // this object contains `position`, we want to preserve it along with\n      // any additional property we may add in the future\n      data.offsets.popper = _extends({}, data.offsets.popper, getPopperOffsets(data.instance.popper, data.offsets.reference, data.placement));\n\n      data = runModifiers(data.instance.modifiers, data, 'flip');\n    }\n  });\n  return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction keepTogether(data) {\n  var _data$offsets = data.offsets,\n      popper = _data$offsets.popper,\n      reference = _data$offsets.reference;\n\n  var placement = data.placement.split('-')[0];\n  var floor = Math.floor;\n  var isVertical = ['top', 'bottom'].indexOf(placement) !== -1;\n  var side = isVertical ? 'right' : 'bottom';\n  var opSide = isVertical ? 'left' : 'top';\n  var measurement = isVertical ? 'width' : 'height';\n\n  if (popper[side] < floor(reference[opSide])) {\n    data.offsets.popper[opSide] = floor(reference[opSide]) - popper[measurement];\n  }\n  if (popper[opSide] > floor(reference[side])) {\n    data.offsets.popper[opSide] = floor(reference[side]);\n  }\n\n  return data;\n}\n\n/**\n * Converts a string containing value + unit into a px value number\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} str - Value + unit string\n * @argument {String} measurement - `height` or `width`\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @returns {Number|String}\n * Value in pixels, or original string if no values were extracted\n */\nfunction toValue(str, measurement, popperOffsets, referenceOffsets) {\n  // separate value from unit\n  var split = str.match(/((?:\\-|\\+)?\\d*\\.?\\d*)(.*)/);\n  var value = +split[1];\n  var unit = split[2];\n\n  // If it's not a number it's an operator, I guess\n  if (!value) {\n    return str;\n  }\n\n  if (unit.indexOf('%') === 0) {\n    var element = void 0;\n    switch (unit) {\n      case '%p':\n        element = popperOffsets;\n        break;\n      case '%':\n      case '%r':\n      default:\n        element = referenceOffsets;\n    }\n\n    var rect = getClientRect(element);\n    return rect[measurement] / 100 * value;\n  } else if (unit === 'vh' || unit === 'vw') {\n    // if is a vh or vw, we calculate the size based on the viewport\n    var size = void 0;\n    if (unit === 'vh') {\n      size = Math.max(document.documentElement.clientHeight, window.innerHeight || 0);\n    } else {\n      size = Math.max(document.documentElement.clientWidth, window.innerWidth || 0);\n    }\n    return size / 100 * value;\n  } else {\n    // if is an explicit pixel unit, we get rid of the unit and keep the value\n    // if is an implicit unit, it's px, and we return just the value\n    return value;\n  }\n}\n\n/**\n * Parse an `offset` string to extrapolate `x` and `y` numeric offsets.\n * @function\n * @memberof {modifiers~offset}\n * @private\n * @argument {String} offset\n * @argument {Object} popperOffsets\n * @argument {Object} referenceOffsets\n * @argument {String} basePlacement\n * @returns {Array} a two cells array with x and y offsets in numbers\n */\nfunction parseOffset(offset, popperOffsets, referenceOffsets, basePlacement) {\n  var offsets = [0, 0];\n\n  // Use height if placement is left or right and index is 0 otherwise use width\n  // in this way the first offset will use an axis and the second one\n  // will use the other one\n  var useHeight = ['right', 'left'].indexOf(basePlacement) !== -1;\n\n  // Split the offset string to obtain a list of values and operands\n  // The regex addresses values with the plus or minus sign in front (+10, -20, etc)\n  var fragments = offset.split(/(\\+|\\-)/).map(function (frag) {\n    return frag.trim();\n  });\n\n  // Detect if the offset string contains a pair of values or a single one\n  // they could be separated by comma or space\n  var divider = fragments.indexOf(find(fragments, function (frag) {\n    return frag.search(/,|\\s/) !== -1;\n  }));\n\n  if (fragments[divider] && fragments[divider].indexOf(',') === -1) {\n    console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');\n  }\n\n  // If divider is found, we divide the list of values and operands to divide\n  // them by ofset X and Y.\n  var splitRegex = /\\s*,\\s*|\\s+/;\n  var ops = divider !== -1 ? [fragments.slice(0, divider).concat([fragments[divider].split(splitRegex)[0]]), [fragments[divider].split(splitRegex)[1]].concat(fragments.slice(divider + 1))] : [fragments];\n\n  // Convert the values with units to absolute pixels to allow our computations\n  ops = ops.map(function (op, index) {\n    // Most of the units rely on the orientation of the popper\n    var measurement = (index === 1 ? !useHeight : useHeight) ? 'height' : 'width';\n    var mergeWithPrevious = false;\n    return op\n    // This aggregates any `+` or `-` sign that aren't considered operators\n    // e.g.: 10 + +5 => [10, +, +5]\n    .reduce(function (a, b) {\n      if (a[a.length - 1] === '' && ['+', '-'].indexOf(b) !== -1) {\n        a[a.length - 1] = b;\n        mergeWithPrevious = true;\n        return a;\n      } else if (mergeWithPrevious) {\n        a[a.length - 1] += b;\n        mergeWithPrevious = false;\n        return a;\n      } else {\n        return a.concat(b);\n      }\n    }, [])\n    // Here we convert the string values into number values (in px)\n    .map(function (str) {\n      return toValue(str, measurement, popperOffsets, referenceOffsets);\n    });\n  });\n\n  // Loop trough the offsets arrays and execute the operations\n  ops.forEach(function (op, index) {\n    op.forEach(function (frag, index2) {\n      if (isNumeric(frag)) {\n        offsets[index] += frag * (op[index2 - 1] === '-' ? -1 : 1);\n      }\n    });\n  });\n  return offsets;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @argument {Number|String} options.offset=0\n * The offset value as described in the modifier description\n * @returns {Object} The data object, properly modified\n */\nfunction offset(data, _ref) {\n  var offset = _ref.offset;\n  var placement = data.placement,\n      _data$offsets = data.offsets,\n      popper = _data$offsets.popper,\n      reference = _data$offsets.reference;\n\n  var basePlacement = placement.split('-')[0];\n\n  var offsets = void 0;\n  if (isNumeric(+offset)) {\n    offsets = [+offset, 0];\n  } else {\n    offsets = parseOffset(offset, popper, reference, basePlacement);\n  }\n\n  if (basePlacement === 'left') {\n    popper.top += offsets[0];\n    popper.left -= offsets[1];\n  } else if (basePlacement === 'right') {\n    popper.top += offsets[0];\n    popper.left += offsets[1];\n  } else if (basePlacement === 'top') {\n    popper.left += offsets[0];\n    popper.top -= offsets[1];\n  } else if (basePlacement === 'bottom') {\n    popper.left += offsets[0];\n    popper.top += offsets[1];\n  }\n\n  data.popper = popper;\n  return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction preventOverflow(data, options) {\n  var boundariesElement = options.boundariesElement || getOffsetParent(data.instance.popper);\n\n  // If offsetParent is the reference element, we really want to\n  // go one step up and use the next offsetParent as reference to\n  // avoid to make this modifier completely useless and look like broken\n  if (data.instance.reference === boundariesElement) {\n    boundariesElement = getOffsetParent(boundariesElement);\n  }\n\n  // NOTE: DOM access here\n  // resets the popper's position so that the document size can be calculated excluding\n  // the size of the popper element itself\n  var transformProp = getSupportedPropertyName('transform');\n  var popperStyles = data.instance.popper.style; // assignment to help minification\n  var top = popperStyles.top,\n      left = popperStyles.left,\n      transform = popperStyles[transformProp];\n\n  popperStyles.top = '';\n  popperStyles.left = '';\n  popperStyles[transformProp] = '';\n\n  var boundaries = getBoundaries(data.instance.popper, data.instance.reference, options.padding, boundariesElement, data.positionFixed);\n\n  // NOTE: DOM access here\n  // restores the original style properties after the offsets have been computed\n  popperStyles.top = top;\n  popperStyles.left = left;\n  popperStyles[transformProp] = transform;\n\n  options.boundaries = boundaries;\n\n  var order = options.priority;\n  var popper = data.offsets.popper;\n\n  var check = {\n    primary: function primary(placement) {\n      var value = popper[placement];\n      if (popper[placement] < boundaries[placement] && !options.escapeWithReference) {\n        value = Math.max(popper[placement], boundaries[placement]);\n      }\n      return defineProperty({}, placement, value);\n    },\n    secondary: function secondary(placement) {\n      var mainSide = placement === 'right' ? 'left' : 'top';\n      var value = popper[mainSide];\n      if (popper[placement] > boundaries[placement] && !options.escapeWithReference) {\n        value = Math.min(popper[mainSide], boundaries[placement] - (placement === 'right' ? popper.width : popper.height));\n      }\n      return defineProperty({}, mainSide, value);\n    }\n  };\n\n  order.forEach(function (placement) {\n    var side = ['left', 'top'].indexOf(placement) !== -1 ? 'primary' : 'secondary';\n    popper = _extends({}, popper, check[side](placement));\n  });\n\n  data.offsets.popper = popper;\n\n  return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction shift(data) {\n  var placement = data.placement;\n  var basePlacement = placement.split('-')[0];\n  var shiftvariation = placement.split('-')[1];\n\n  // if shift shiftvariation is specified, run the modifier\n  if (shiftvariation) {\n    var _data$offsets = data.offsets,\n        reference = _data$offsets.reference,\n        popper = _data$offsets.popper;\n\n    var isVertical = ['bottom', 'top'].indexOf(basePlacement) !== -1;\n    var side = isVertical ? 'left' : 'top';\n    var measurement = isVertical ? 'width' : 'height';\n\n    var shiftOffsets = {\n      start: defineProperty({}, side, reference[side]),\n      end: defineProperty({}, side, reference[side] + reference[measurement] - popper[measurement])\n    };\n\n    data.offsets.popper = _extends({}, popper, shiftOffsets[shiftvariation]);\n  }\n\n  return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by update method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction hide(data) {\n  if (!isModifierRequired(data.instance.modifiers, 'hide', 'preventOverflow')) {\n    return data;\n  }\n\n  var refRect = data.offsets.reference;\n  var bound = find(data.instance.modifiers, function (modifier) {\n    return modifier.name === 'preventOverflow';\n  }).boundaries;\n\n  if (refRect.bottom < bound.top || refRect.left > bound.right || refRect.top > bound.bottom || refRect.right < bound.left) {\n    // Avoid unnecessary DOM access if visibility hasn't changed\n    if (data.hide === true) {\n      return data;\n    }\n\n    data.hide = true;\n    data.attributes['x-out-of-boundaries'] = '';\n  } else {\n    // Avoid unnecessary DOM access if visibility hasn't changed\n    if (data.hide === false) {\n      return data;\n    }\n\n    data.hide = false;\n    data.attributes['x-out-of-boundaries'] = false;\n  }\n\n  return data;\n}\n\n/**\n * @function\n * @memberof Modifiers\n * @argument {Object} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {Object} The data object, properly modified\n */\nfunction inner(data) {\n  var placement = data.placement;\n  var basePlacement = placement.split('-')[0];\n  var _data$offsets = data.offsets,\n      popper = _data$offsets.popper,\n      reference = _data$offsets.reference;\n\n  var isHoriz = ['left', 'right'].indexOf(basePlacement) !== -1;\n\n  var subtractLength = ['top', 'left'].indexOf(basePlacement) === -1;\n\n  popper[isHoriz ? 'left' : 'top'] = reference[basePlacement] - (subtractLength ? popper[isHoriz ? 'width' : 'height'] : 0);\n\n  data.placement = getOppositePlacement(placement);\n  data.offsets.popper = getClientRect(popper);\n\n  return data;\n}\n\n/**\n * Modifier function, each modifier can have a function of this type assigned\n * to its `fn` property.<br />\n * These functions will be called on each update, this means that you must\n * make sure they are performant enough to avoid performance bottlenecks.\n *\n * @function ModifierFn\n * @argument {dataObject} data - The data object generated by `update` method\n * @argument {Object} options - Modifiers configuration and options\n * @returns {dataObject} The data object, properly modified\n */\n\n/**\n * Modifiers are plugins used to alter the behavior of your poppers.<br />\n * Popper.js uses a set of 9 modifiers to provide all the basic functionalities\n * needed by the library.\n *\n * Usually you don't want to override the `order`, `fn` and `onLoad` props.\n * All the other properties are configurations that could be tweaked.\n * @namespace modifiers\n */\nvar modifiers = {\n  /**\n   * Modifier used to shift the popper on the start or end of its reference\n   * element.<br />\n   * It will read the variation of the `placement` property.<br />\n   * It can be one either `-end` or `-start`.\n   * @memberof modifiers\n   * @inner\n   */\n  shift: {\n    /** @prop {number} order=100 - Index used to define the order of execution */\n    order: 100,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: shift\n  },\n\n  /**\n   * The `offset` modifier can shift your popper on both its axis.\n   *\n   * It accepts the following units:\n   * - `px` or unitless, interpreted as pixels\n   * - `%` or `%r`, percentage relative to the length of the reference element\n   * - `%p`, percentage relative to the length of the popper element\n   * - `vw`, CSS viewport width unit\n   * - `vh`, CSS viewport height unit\n   *\n   * For length is intended the main axis relative to the placement of the popper.<br />\n   * This means that if the placement is `top` or `bottom`, the length will be the\n   * `width`. In case of `left` or `right`, it will be the height.\n   *\n   * You can provide a single value (as `Number` or `String`), or a pair of values\n   * as `String` divided by a comma or one (or more) white spaces.<br />\n   * The latter is a deprecated method because it leads to confusion and will be\n   * removed in v2.<br />\n   * Additionally, it accepts additions and subtractions between different units.\n   * Note that multiplications and divisions aren't supported.\n   *\n   * Valid examples are:\n   * ```\n   * 10\n   * '10%'\n   * '10, 10'\n   * '10%, 10'\n   * '10 + 10%'\n   * '10 - 5vh + 3%'\n   * '-10px + 5vh, 5px - 6%'\n   * ```\n   * > **NB**: If you desire to apply offsets to your poppers in a way that may make them overlap\n   * > with their reference element, unfortunately, you will have to disable the `flip` modifier.\n   * > More on this [reading this issue](https://github.com/FezVrasta/popper.js/issues/373)\n   *\n   * @memberof modifiers\n   * @inner\n   */\n  offset: {\n    /** @prop {number} order=200 - Index used to define the order of execution */\n    order: 200,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: offset,\n    /** @prop {Number|String} offset=0\n     * The offset value as described in the modifier description\n     */\n    offset: 0\n  },\n\n  /**\n   * Modifier used to prevent the popper from being positioned outside the boundary.\n   *\n   * An scenario exists where the reference itself is not within the boundaries.<br />\n   * We can say it has \"escaped the boundaries\" — or just \"escaped\".<br />\n   * In this case we need to decide whether the popper should either:\n   *\n   * - detach from the reference and remain \"trapped\" in the boundaries, or\n   * - if it should ignore the boundary and \"escape with its reference\"\n   *\n   * When `escapeWithReference` is set to`true` and reference is completely\n   * outside its boundaries, the popper will overflow (or completely leave)\n   * the boundaries in order to remain attached to the edge of the reference.\n   *\n   * @memberof modifiers\n   * @inner\n   */\n  preventOverflow: {\n    /** @prop {number} order=300 - Index used to define the order of execution */\n    order: 300,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: preventOverflow,\n    /**\n     * @prop {Array} [priority=['left','right','top','bottom']]\n     * Popper will try to prevent overflow following these priorities by default,\n     * then, it could overflow on the left and on top of the `boundariesElement`\n     */\n    priority: ['left', 'right', 'top', 'bottom'],\n    /**\n     * @prop {number} padding=5\n     * Amount of pixel used to define a minimum distance between the boundaries\n     * and the popper this makes sure the popper has always a little padding\n     * between the edges of its container\n     */\n    padding: 5,\n    /**\n     * @prop {String|HTMLElement} boundariesElement='scrollParent'\n     * Boundaries used by the modifier, can be `scrollParent`, `window`,\n     * `viewport` or any DOM element.\n     */\n    boundariesElement: 'scrollParent'\n  },\n\n  /**\n   * Modifier used to make sure the reference and its popper stay near eachothers\n   * without leaving any gap between the two. Expecially useful when the arrow is\n   * enabled and you want to assure it to point to its reference element.\n   * It cares only about the first axis, you can still have poppers with margin\n   * between the popper and its reference element.\n   * @memberof modifiers\n   * @inner\n   */\n  keepTogether: {\n    /** @prop {number} order=400 - Index used to define the order of execution */\n    order: 400,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: keepTogether\n  },\n\n  /**\n   * This modifier is used to move the `arrowElement` of the popper to make\n   * sure it is positioned between the reference element and its popper element.\n   * It will read the outer size of the `arrowElement` node to detect how many\n   * pixels of conjuction are needed.\n   *\n   * It has no effect if no `arrowElement` is provided.\n   * @memberof modifiers\n   * @inner\n   */\n  arrow: {\n    /** @prop {number} order=500 - Index used to define the order of execution */\n    order: 500,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: arrow,\n    /** @prop {String|HTMLElement} element='[x-arrow]' - Selector or node used as arrow */\n    element: '[x-arrow]'\n  },\n\n  /**\n   * Modifier used to flip the popper's placement when it starts to overlap its\n   * reference element.\n   *\n   * Requires the `preventOverflow` modifier before it in order to work.\n   *\n   * **NOTE:** this modifier will interrupt the current update cycle and will\n   * restart it if it detects the need to flip the placement.\n   * @memberof modifiers\n   * @inner\n   */\n  flip: {\n    /** @prop {number} order=600 - Index used to define the order of execution */\n    order: 600,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: flip,\n    /**\n     * @prop {String|Array} behavior='flip'\n     * The behavior used to change the popper's placement. It can be one of\n     * `flip`, `clockwise`, `counterclockwise` or an array with a list of valid\n     * placements (with optional variations).\n     */\n    behavior: 'flip',\n    /**\n     * @prop {number} padding=5\n     * The popper will flip if it hits the edges of the `boundariesElement`\n     */\n    padding: 5,\n    /**\n     * @prop {String|HTMLElement} boundariesElement='viewport'\n     * The element which will define the boundaries of the popper position,\n     * the popper will never be placed outside of the defined boundaries\n     * (except if keepTogether is enabled)\n     */\n    boundariesElement: 'viewport'\n  },\n\n  /**\n   * Modifier used to make the popper flow toward the inner of the reference element.\n   * By default, when this modifier is disabled, the popper will be placed outside\n   * the reference element.\n   * @memberof modifiers\n   * @inner\n   */\n  inner: {\n    /** @prop {number} order=700 - Index used to define the order of execution */\n    order: 700,\n    /** @prop {Boolean} enabled=false - Whether the modifier is enabled or not */\n    enabled: false,\n    /** @prop {ModifierFn} */\n    fn: inner\n  },\n\n  /**\n   * Modifier used to hide the popper when its reference element is outside of the\n   * popper boundaries. It will set a `x-out-of-boundaries` attribute which can\n   * be used to hide with a CSS selector the popper when its reference is\n   * out of boundaries.\n   *\n   * Requires the `preventOverflow` modifier before it in order to work.\n   * @memberof modifiers\n   * @inner\n   */\n  hide: {\n    /** @prop {number} order=800 - Index used to define the order of execution */\n    order: 800,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: hide\n  },\n\n  /**\n   * Computes the style that will be applied to the popper element to gets\n   * properly positioned.\n   *\n   * Note that this modifier will not touch the DOM, it just prepares the styles\n   * so that `applyStyle` modifier can apply it. This separation is useful\n   * in case you need to replace `applyStyle` with a custom implementation.\n   *\n   * This modifier has `850` as `order` value to maintain backward compatibility\n   * with previous versions of Popper.js. Expect the modifiers ordering method\n   * to change in future major versions of the library.\n   *\n   * @memberof modifiers\n   * @inner\n   */\n  computeStyle: {\n    /** @prop {number} order=850 - Index used to define the order of execution */\n    order: 850,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: computeStyle,\n    /**\n     * @prop {Boolean} gpuAcceleration=true\n     * If true, it uses the CSS 3d transformation to position the popper.\n     * Otherwise, it will use the `top` and `left` properties.\n     */\n    gpuAcceleration: true,\n    /**\n     * @prop {string} [x='bottom']\n     * Where to anchor the X axis (`bottom` or `top`). AKA X offset origin.\n     * Change this if your popper should grow in a direction different from `bottom`\n     */\n    x: 'bottom',\n    /**\n     * @prop {string} [x='left']\n     * Where to anchor the Y axis (`left` or `right`). AKA Y offset origin.\n     * Change this if your popper should grow in a direction different from `right`\n     */\n    y: 'right'\n  },\n\n  /**\n   * Applies the computed styles to the popper element.\n   *\n   * All the DOM manipulations are limited to this modifier. This is useful in case\n   * you want to integrate Popper.js inside a framework or view library and you\n   * want to delegate all the DOM manipulations to it.\n   *\n   * Note that if you disable this modifier, you must make sure the popper element\n   * has its position set to `absolute` before Popper.js can do its work!\n   *\n   * Just disable this modifier and define you own to achieve the desired effect.\n   *\n   * @memberof modifiers\n   * @inner\n   */\n  applyStyle: {\n    /** @prop {number} order=900 - Index used to define the order of execution */\n    order: 900,\n    /** @prop {Boolean} enabled=true - Whether the modifier is enabled or not */\n    enabled: true,\n    /** @prop {ModifierFn} */\n    fn: applyStyle,\n    /** @prop {Function} */\n    onLoad: applyStyleOnLoad,\n    /**\n     * @deprecated since version 1.10.0, the property moved to `computeStyle` modifier\n     * @prop {Boolean} gpuAcceleration=true\n     * If true, it uses the CSS 3d transformation to position the popper.\n     * Otherwise, it will use the `top` and `left` properties.\n     */\n    gpuAcceleration: undefined\n  }\n};\n\n/**\n * The `dataObject` is an object containing all the informations used by Popper.js\n * this object get passed to modifiers and to the `onCreate` and `onUpdate` callbacks.\n * @name dataObject\n * @property {Object} data.instance The Popper.js instance\n * @property {String} data.placement Placement applied to popper\n * @property {String} data.originalPlacement Placement originally defined on init\n * @property {Boolean} data.flipped True if popper has been flipped by flip modifier\n * @property {Boolean} data.hide True if the reference element is out of boundaries, useful to know when to hide the popper.\n * @property {HTMLElement} data.arrowElement Node used as arrow by arrow modifier\n * @property {Object} data.styles Any CSS property defined here will be applied to the popper, it expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.arrowStyles Any CSS property defined here will be applied to the popper arrow, it expects the JavaScript nomenclature (eg. `marginBottom`)\n * @property {Object} data.boundaries Offsets of the popper boundaries\n * @property {Object} data.offsets The measurements of popper, reference and arrow elements.\n * @property {Object} data.offsets.popper `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.reference `top`, `left`, `width`, `height` values\n * @property {Object} data.offsets.arrow] `top` and `left` offsets, only one of them will be different from 0\n */\n\n/**\n * Default options provided to Popper.js constructor.<br />\n * These can be overriden using the `options` argument of Popper.js.<br />\n * To override an option, simply pass as 3rd argument an object with the same\n * structure of this object, example:\n * ```\n * new Popper(ref, pop, {\n *   modifiers: {\n *     preventOverflow: { enabled: false }\n *   }\n * })\n * ```\n * @type {Object}\n * @static\n * @memberof Popper\n */\nvar Defaults = {\n  /**\n   * Popper's placement\n   * @prop {Popper.placements} placement='bottom'\n   */\n  placement: 'bottom',\n\n  /**\n   * Set this to true if you want popper to position it self in 'fixed' mode\n   * @prop {Boolean} positionFixed=false\n   */\n  positionFixed: false,\n\n  /**\n   * Whether events (resize, scroll) are initially enabled\n   * @prop {Boolean} eventsEnabled=true\n   */\n  eventsEnabled: true,\n\n  /**\n   * Set to true if you want to automatically remove the popper when\n   * you call the `destroy` method.\n   * @prop {Boolean} removeOnDestroy=false\n   */\n  removeOnDestroy: false,\n\n  /**\n   * Callback called when the popper is created.<br />\n   * By default, is set to no-op.<br />\n   * Access Popper.js instance with `data.instance`.\n   * @prop {onCreate}\n   */\n  onCreate: function onCreate() {},\n\n  /**\n   * Callback called when the popper is updated, this callback is not called\n   * on the initialization/creation of the popper, but only on subsequent\n   * updates.<br />\n   * By default, is set to no-op.<br />\n   * Access Popper.js instance with `data.instance`.\n   * @prop {onUpdate}\n   */\n  onUpdate: function onUpdate() {},\n\n  /**\n   * List of modifiers used to modify the offsets before they are applied to the popper.\n   * They provide most of the functionalities of Popper.js\n   * @prop {modifiers}\n   */\n  modifiers: modifiers\n};\n\n/**\n * @callback onCreate\n * @param {dataObject} data\n */\n\n/**\n * @callback onUpdate\n * @param {dataObject} data\n */\n\n// Utils\n// Methods\nvar Popper = function () {\n  /**\n   * Create a new Popper.js instance\n   * @class Popper\n   * @param {HTMLElement|referenceObject} reference - The reference element used to position the popper\n   * @param {HTMLElement} popper - The HTML element used as popper.\n   * @param {Object} options - Your custom options to override the ones defined in [Defaults](#defaults)\n   * @return {Object} instance - The generated Popper.js instance\n   */\n  function Popper(reference, popper) {\n    var _this = this;\n\n    var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n    classCallCheck(this, Popper);\n\n    this.scheduleUpdate = function () {\n      return requestAnimationFrame(_this.update);\n    };\n\n    // make update() debounced, so that it only runs at most once-per-tick\n    this.update = debounce(this.update.bind(this));\n\n    // with {} we create a new object with the options inside it\n    this.options = _extends({}, Popper.Defaults, options);\n\n    // init state\n    this.state = {\n      isDestroyed: false,\n      isCreated: false,\n      scrollParents: []\n    };\n\n    // get reference and popper elements (allow jQuery wrappers)\n    this.reference = reference && reference.jquery ? reference[0] : reference;\n    this.popper = popper && popper.jquery ? popper[0] : popper;\n\n    // Deep merge modifiers options\n    this.options.modifiers = {};\n    Object.keys(_extends({}, Popper.Defaults.modifiers, options.modifiers)).forEach(function (name) {\n      _this.options.modifiers[name] = _extends({}, Popper.Defaults.modifiers[name] || {}, options.modifiers ? options.modifiers[name] : {});\n    });\n\n    // Refactoring modifiers' list (Object => Array)\n    this.modifiers = Object.keys(this.options.modifiers).map(function (name) {\n      return _extends({\n        name: name\n      }, _this.options.modifiers[name]);\n    })\n    // sort the modifiers by order\n    .sort(function (a, b) {\n      return a.order - b.order;\n    });\n\n    // modifiers have the ability to execute arbitrary code when Popper.js get inited\n    // such code is executed in the same order of its modifier\n    // they could add new properties to their options configuration\n    // BE AWARE: don't add options to `options.modifiers.name` but to `modifierOptions`!\n    this.modifiers.forEach(function (modifierOptions) {\n      if (modifierOptions.enabled && isFunction(modifierOptions.onLoad)) {\n        modifierOptions.onLoad(_this.reference, _this.popper, _this.options, modifierOptions, _this.state);\n      }\n    });\n\n    // fire the first update to position the popper in the right place\n    this.update();\n\n    var eventsEnabled = this.options.eventsEnabled;\n    if (eventsEnabled) {\n      // setup event listeners, they will take care of update the position in specific situations\n      this.enableEventListeners();\n    }\n\n    this.state.eventsEnabled = eventsEnabled;\n  }\n\n  // We can't use class properties because they don't get listed in the\n  // class prototype and break stuff like Sinon stubs\n\n\n  createClass(Popper, [{\n    key: 'update',\n    value: function update$$1() {\n      return update.call(this);\n    }\n  }, {\n    key: 'destroy',\n    value: function destroy$$1() {\n      return destroy.call(this);\n    }\n  }, {\n    key: 'enableEventListeners',\n    value: function enableEventListeners$$1() {\n      return enableEventListeners.call(this);\n    }\n  }, {\n    key: 'disableEventListeners',\n    value: function disableEventListeners$$1() {\n      return disableEventListeners.call(this);\n    }\n\n    /**\n     * Schedule an update, it will run on the next UI update available\n     * @method scheduleUpdate\n     * @memberof Popper\n     */\n\n\n    /**\n     * Collection of utilities useful when writing custom modifiers.\n     * Starting from version 1.7, this method is available only if you\n     * include `popper-utils.js` before `popper.js`.\n     *\n     * **DEPRECATION**: This way to access PopperUtils is deprecated\n     * and will be removed in v2! Use the PopperUtils module directly instead.\n     * Due to the high instability of the methods contained in Utils, we can't\n     * guarantee them to follow semver. Use them at your own risk!\n     * @static\n     * @private\n     * @type {Object}\n     * @deprecated since version 1.8\n     * @member Utils\n     * @memberof Popper\n     */\n\n  }]);\n  return Popper;\n}();\n\n/**\n * The `referenceObject` is an object that provides an interface compatible with Popper.js\n * and lets you use it as replacement of a real DOM node.<br />\n * You can use this method to position a popper relatively to a set of coordinates\n * in case you don't have a DOM node to use as reference.\n *\n * ```\n * new Popper(referenceObject, popperNode);\n * ```\n *\n * NB: This feature isn't supported in Internet Explorer 10\n * @name referenceObject\n * @property {Function} data.getBoundingClientRect\n * A function that returns a set of coordinates compatible with the native `getBoundingClientRect` method.\n * @property {number} data.clientWidth\n * An ES6 getter that will return the width of the virtual reference element.\n * @property {number} data.clientHeight\n * An ES6 getter that will return the height of the virtual reference element.\n */\n\n\nPopper.Utils = (typeof window !== 'undefined' ? window : global).PopperUtils;\nPopper.placements = placements;\nPopper.Defaults = Defaults;\n\nexport default Popper;\n//# sourceMappingURL=popper.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/popper.js/dist/esm/popper.js\n// module id = 97\n// module chunks = 88 89","import { $$ } from '../../utils/Dom';\nimport { IFormWidgetWithLabel, IFormWidgetSelectable } from './FormWidgets';\nimport 'styling/vapor/_Radio';\nimport { exportGlobally } from '../../GlobalExports';\n\n/**\n * A radio button widget with standard styling.\n */\nexport class RadioButton implements IFormWidgetWithLabel, IFormWidgetSelectable {\n  protected element: HTMLElement;\n\n  static doExport() {\n    exportGlobally({\n      RadioButton: RadioButton\n    });\n  }\n\n  /**\n   * Creates a new `RadioButton`.\n   * @param onChange The function to call when the radio button value changes. This function takes the current\n   * `RadioButton` instance as an argument.\n   * @param label The label to display next to the radio button.\n   * @param name The value to set the `input` HTMLElement `name` attribute to.\n   */\n  constructor(\n    public onChange: (radioButton: RadioButton) => void = (radioButton: RadioButton) => {},\n    public label: string,\n    public name: string,\n    private id: string = label\n  ) {\n    this.buildContent();\n  }\n\n  /**\n   * Resets the radio button.\n   */\n  public reset() {\n    const currentlySelected = this.isSelected();\n    this.getRadio().checked = false;\n    if (currentlySelected) {\n      this.onChange(this);\n    }\n  }\n\n  /**\n   * Select the radio button\n   * @param triggerChange will trigger change event if specified and the radio button is not already selected\n   */\n  public select(triggerChange = true) {\n    const currentlySelected = this.isSelected();\n    this.getRadio().checked = true;\n    if (!currentlySelected && triggerChange) {\n      this.onChange(this);\n    }\n  }\n\n  /**\n   * Gets the element on which the radio button is bound.\n   * @returns {HTMLElement} The radio button element.\n   */\n  public build(): HTMLElement {\n    return this.element;\n  }\n\n  /**\n   * Gets the element on which the radio button is bound.\n   * @returns {HTMLElement} The radio button element.\n   */\n  public getElement(): HTMLElement {\n    return this.element;\n  }\n\n  public getValue(): string {\n    return this.label;\n  }\n\n  /**\n   * Indicates whether the radio button is selected.\n   * @returns {boolean} `true` if the radio button is selected, `false` otherwise.\n   */\n  public isSelected(): boolean {\n    return this.getRadio().checked;\n  }\n\n  /**\n   * Gets the `input` element (the radio button itself).\n   * @returns {HTMLInputElement} The `input` element.\n   */\n  public getRadio(): HTMLInputElement {\n    return <HTMLInputElement>$$(this.element).find('input');\n  }\n\n  /**\n   * Gets the radio button [`label`]{@link RadioButton.label} element.\n   * @returns {HTMLLabelElement} The `label` element.\n   */\n  public getLabel(): HTMLLabelElement {\n    return <HTMLLabelElement>$$(this.element).find('label');\n  }\n\n  private buildContent() {\n    const radioOption = $$('div', { className: 'coveo-radio' });\n    const radioInput = $$('input', { type: 'radio', name: this.name, id: this.id });\n    const labelInput = $$('label', { className: 'coveo-radio-input-label', for: this.id });\n    labelInput.text(this.label);\n    radioInput.on('change', () => {\n      this.onChange(this);\n    });\n\n    radioOption.append(radioInput.el);\n    radioOption.append(labelInput.el);\n    this.element = radioOption.el;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/FormWidgets/RadioButton.ts","/**\n * The `IBeforeRedirectEventArgs` interface describes the object that all\n * [`beforeRedirect`]{@link StandaloneSearchInterfaceEvents.beforeRedirect} event handlers receive as an argument.\n */\nexport interface IBeforeRedirectEventArgs {\n  /**\n   * The URI of the page that the search interface will redirect to when a query is performed by the [`StandaloneSearchBox`]{@link StandaloneSearchBox} component.\n   */\n  searchPageUri: string;\n\n  /**\n   * If this property is set to `true` by a `beforeRedirect` event handler, the [`StandaloneSearchBox`]{@link StandaloneSearchBox} component will not redirect to the full search page.\n   */\n  cancel: boolean;\n}\n\n/**\n * The `StandaloneSearchInterfaceEvents` static class contains the string definitions of all events that strongly relate to the standalone search interface.\n */\nexport class StandaloneSearchInterfaceEvents {\n  /**\n   * Triggered by the [`StandaloneSearchBox`]{@link StandaloneSearchBox} component during initialization, just before redirecting to the full search page.\n   *\n   * @type {string} The string value is `beforeRedirect`.\n   */\n  public static beforeRedirect = 'beforeRedirect';\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/events/StandaloneSearchInterfaceEvents.ts","export interface ISavePreferencesEventArgs {}\n\nexport class PreferencesPanelEvents {\n  public static savePreferences = 'savePreferences';\n  public static exitPreferencesWithoutSave = 'exitPreferencesWithoutSave';\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/events/PreferencesPanelEvents.ts","export { AdvancedSearchEvents } from './events/AdvancedSearchEvents';\nexport { AnalyticsEvents } from './events/AnalyticsEvents';\nexport { BreadcrumbEvents } from './events/BreadcrumbEvents';\nexport { DebugEvents } from './events/DebugEvents';\nexport { DistanceEvents } from './events/DistanceEvents';\nexport { InitializationEvents } from './events/InitializationEvents';\nexport { OmniboxEvents } from './events/OmniboxEvents';\nexport { PreferencesPanelEvents } from './events/PreferencesPanelEvents';\nexport { QueryEvents } from './events/QueryEvents';\nexport { ResultListEvents } from './events/ResultListEvents';\nexport { ResultLayoutEvents } from './events/ResultLayoutEvents';\nexport { SearchAlertsEvents } from './events/SearchAlertEvents';\nexport { SettingsEvents } from './events/SettingsEvents';\nexport { SliderEvents } from './events/SliderEvents';\nexport { StandaloneSearchInterfaceEvents } from './events/StandaloneSearchInterfaceEvents';\n\n\n\n// WEBPACK FOOTER //\n// ./src/EventsModules.ts","//! moment.js\n//! version : 2.29.4\n//! authors : Tim Wood, Iskren Chernev, Moment.js contributors\n//! license : MIT\n//! momentjs.com\n\n;(function (global, factory) {\n    typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n    typeof define === 'function' && define.amd ? define(factory) :\n    global.moment = factory()\n}(this, (function () { 'use strict';\n\n    var hookCallback;\n\n    function hooks() {\n        return hookCallback.apply(null, arguments);\n    }\n\n    // This is done to register the method called with moment()\n    // without creating circular dependencies.\n    function setHookCallback(callback) {\n        hookCallback = callback;\n    }\n\n    function isArray(input) {\n        return (\n            input instanceof Array ||\n            Object.prototype.toString.call(input) === '[object Array]'\n        );\n    }\n\n    function isObject(input) {\n        // IE8 will treat undefined and null as object if it wasn't for\n        // input != null\n        return (\n            input != null &&\n            Object.prototype.toString.call(input) === '[object Object]'\n        );\n    }\n\n    function hasOwnProp(a, b) {\n        return Object.prototype.hasOwnProperty.call(a, b);\n    }\n\n    function isObjectEmpty(obj) {\n        if (Object.getOwnPropertyNames) {\n            return Object.getOwnPropertyNames(obj).length === 0;\n        } else {\n            var k;\n            for (k in obj) {\n                if (hasOwnProp(obj, k)) {\n                    return false;\n                }\n            }\n            return true;\n        }\n    }\n\n    function isUndefined(input) {\n        return input === void 0;\n    }\n\n    function isNumber(input) {\n        return (\n            typeof input === 'number' ||\n            Object.prototype.toString.call(input) === '[object Number]'\n        );\n    }\n\n    function isDate(input) {\n        return (\n            input instanceof Date ||\n            Object.prototype.toString.call(input) === '[object Date]'\n        );\n    }\n\n    function map(arr, fn) {\n        var res = [],\n            i,\n            arrLen = arr.length;\n        for (i = 0; i < arrLen; ++i) {\n            res.push(fn(arr[i], i));\n        }\n        return res;\n    }\n\n    function extend(a, b) {\n        for (var i in b) {\n            if (hasOwnProp(b, i)) {\n                a[i] = b[i];\n            }\n        }\n\n        if (hasOwnProp(b, 'toString')) {\n            a.toString = b.toString;\n        }\n\n        if (hasOwnProp(b, 'valueOf')) {\n            a.valueOf = b.valueOf;\n        }\n\n        return a;\n    }\n\n    function createUTC(input, format, locale, strict) {\n        return createLocalOrUTC(input, format, locale, strict, true).utc();\n    }\n\n    function defaultParsingFlags() {\n        // We need to deep clone this object.\n        return {\n            empty: false,\n            unusedTokens: [],\n            unusedInput: [],\n            overflow: -2,\n            charsLeftOver: 0,\n            nullInput: false,\n            invalidEra: null,\n            invalidMonth: null,\n            invalidFormat: false,\n            userInvalidated: false,\n            iso: false,\n            parsedDateParts: [],\n            era: null,\n            meridiem: null,\n            rfc2822: false,\n            weekdayMismatch: false,\n        };\n    }\n\n    function getParsingFlags(m) {\n        if (m._pf == null) {\n            m._pf = defaultParsingFlags();\n        }\n        return m._pf;\n    }\n\n    var some;\n    if (Array.prototype.some) {\n        some = Array.prototype.some;\n    } else {\n        some = function (fun) {\n            var t = Object(this),\n                len = t.length >>> 0,\n                i;\n\n            for (i = 0; i < len; i++) {\n                if (i in t && fun.call(this, t[i], i, t)) {\n                    return true;\n                }\n            }\n\n            return false;\n        };\n    }\n\n    function isValid(m) {\n        if (m._isValid == null) {\n            var flags = getParsingFlags(m),\n                parsedParts = some.call(flags.parsedDateParts, function (i) {\n                    return i != null;\n                }),\n                isNowValid =\n                    !isNaN(m._d.getTime()) &&\n                    flags.overflow < 0 &&\n                    !flags.empty &&\n                    !flags.invalidEra &&\n                    !flags.invalidMonth &&\n                    !flags.invalidWeekday &&\n                    !flags.weekdayMismatch &&\n                    !flags.nullInput &&\n                    !flags.invalidFormat &&\n                    !flags.userInvalidated &&\n                    (!flags.meridiem || (flags.meridiem && parsedParts));\n\n            if (m._strict) {\n                isNowValid =\n                    isNowValid &&\n                    flags.charsLeftOver === 0 &&\n                    flags.unusedTokens.length === 0 &&\n                    flags.bigHour === undefined;\n            }\n\n            if (Object.isFrozen == null || !Object.isFrozen(m)) {\n                m._isValid = isNowValid;\n            } else {\n                return isNowValid;\n            }\n        }\n        return m._isValid;\n    }\n\n    function createInvalid(flags) {\n        var m = createUTC(NaN);\n        if (flags != null) {\n            extend(getParsingFlags(m), flags);\n        } else {\n            getParsingFlags(m).userInvalidated = true;\n        }\n\n        return m;\n    }\n\n    // Plugins that add properties should also add the key here (null value),\n    // so we can properly clone ourselves.\n    var momentProperties = (hooks.momentProperties = []),\n        updateInProgress = false;\n\n    function copyConfig(to, from) {\n        var i,\n            prop,\n            val,\n            momentPropertiesLen = momentProperties.length;\n\n        if (!isUndefined(from._isAMomentObject)) {\n            to._isAMomentObject = from._isAMomentObject;\n        }\n        if (!isUndefined(from._i)) {\n            to._i = from._i;\n        }\n        if (!isUndefined(from._f)) {\n            to._f = from._f;\n        }\n        if (!isUndefined(from._l)) {\n            to._l = from._l;\n        }\n        if (!isUndefined(from._strict)) {\n            to._strict = from._strict;\n        }\n        if (!isUndefined(from._tzm)) {\n            to._tzm = from._tzm;\n        }\n        if (!isUndefined(from._isUTC)) {\n            to._isUTC = from._isUTC;\n        }\n        if (!isUndefined(from._offset)) {\n            to._offset = from._offset;\n        }\n        if (!isUndefined(from._pf)) {\n            to._pf = getParsingFlags(from);\n        }\n        if (!isUndefined(from._locale)) {\n            to._locale = from._locale;\n        }\n\n        if (momentPropertiesLen > 0) {\n            for (i = 0; i < momentPropertiesLen; i++) {\n                prop = momentProperties[i];\n                val = from[prop];\n                if (!isUndefined(val)) {\n                    to[prop] = val;\n                }\n            }\n        }\n\n        return to;\n    }\n\n    // Moment prototype object\n    function Moment(config) {\n        copyConfig(this, config);\n        this._d = new Date(config._d != null ? config._d.getTime() : NaN);\n        if (!this.isValid()) {\n            this._d = new Date(NaN);\n        }\n        // Prevent infinite loop in case updateOffset creates new moment\n        // objects.\n        if (updateInProgress === false) {\n            updateInProgress = true;\n            hooks.updateOffset(this);\n            updateInProgress = false;\n        }\n    }\n\n    function isMoment(obj) {\n        return (\n            obj instanceof Moment || (obj != null && obj._isAMomentObject != null)\n        );\n    }\n\n    function warn(msg) {\n        if (\n            hooks.suppressDeprecationWarnings === false &&\n            typeof console !== 'undefined' &&\n            console.warn\n        ) {\n            console.warn('Deprecation warning: ' + msg);\n        }\n    }\n\n    function deprecate(msg, fn) {\n        var firstTime = true;\n\n        return extend(function () {\n            if (hooks.deprecationHandler != null) {\n                hooks.deprecationHandler(null, msg);\n            }\n            if (firstTime) {\n                var args = [],\n                    arg,\n                    i,\n                    key,\n                    argLen = arguments.length;\n                for (i = 0; i < argLen; i++) {\n                    arg = '';\n                    if (typeof arguments[i] === 'object') {\n                        arg += '\\n[' + i + '] ';\n                        for (key in arguments[0]) {\n                            if (hasOwnProp(arguments[0], key)) {\n                                arg += key + ': ' + arguments[0][key] + ', ';\n                            }\n                        }\n                        arg = arg.slice(0, -2); // Remove trailing comma and space\n                    } else {\n                        arg = arguments[i];\n                    }\n                    args.push(arg);\n                }\n                warn(\n                    msg +\n                        '\\nArguments: ' +\n                        Array.prototype.slice.call(args).join('') +\n                        '\\n' +\n                        new Error().stack\n                );\n                firstTime = false;\n            }\n            return fn.apply(this, arguments);\n        }, fn);\n    }\n\n    var deprecations = {};\n\n    function deprecateSimple(name, msg) {\n        if (hooks.deprecationHandler != null) {\n            hooks.deprecationHandler(name, msg);\n        }\n        if (!deprecations[name]) {\n            warn(msg);\n            deprecations[name] = true;\n        }\n    }\n\n    hooks.suppressDeprecationWarnings = false;\n    hooks.deprecationHandler = null;\n\n    function isFunction(input) {\n        return (\n            (typeof Function !== 'undefined' && input instanceof Function) ||\n            Object.prototype.toString.call(input) === '[object Function]'\n        );\n    }\n\n    function set(config) {\n        var prop, i;\n        for (i in config) {\n            if (hasOwnProp(config, i)) {\n                prop = config[i];\n                if (isFunction(prop)) {\n                    this[i] = prop;\n                } else {\n                    this['_' + i] = prop;\n                }\n            }\n        }\n        this._config = config;\n        // Lenient ordinal parsing accepts just a number in addition to\n        // number + (possibly) stuff coming from _dayOfMonthOrdinalParse.\n        // TODO: Remove \"ordinalParse\" fallback in next major release.\n        this._dayOfMonthOrdinalParseLenient = new RegExp(\n            (this._dayOfMonthOrdinalParse.source || this._ordinalParse.source) +\n                '|' +\n                /\\d{1,2}/.source\n        );\n    }\n\n    function mergeConfigs(parentConfig, childConfig) {\n        var res = extend({}, parentConfig),\n            prop;\n        for (prop in childConfig) {\n            if (hasOwnProp(childConfig, prop)) {\n                if (isObject(parentConfig[prop]) && isObject(childConfig[prop])) {\n                    res[prop] = {};\n                    extend(res[prop], parentConfig[prop]);\n                    extend(res[prop], childConfig[prop]);\n                } else if (childConfig[prop] != null) {\n                    res[prop] = childConfig[prop];\n                } else {\n                    delete res[prop];\n                }\n            }\n        }\n        for (prop in parentConfig) {\n            if (\n                hasOwnProp(parentConfig, prop) &&\n                !hasOwnProp(childConfig, prop) &&\n                isObject(parentConfig[prop])\n            ) {\n                // make sure changes to properties don't modify parent config\n                res[prop] = extend({}, res[prop]);\n            }\n        }\n        return res;\n    }\n\n    function Locale(config) {\n        if (config != null) {\n            this.set(config);\n        }\n    }\n\n    var keys;\n\n    if (Object.keys) {\n        keys = Object.keys;\n    } else {\n        keys = function (obj) {\n            var i,\n                res = [];\n            for (i in obj) {\n                if (hasOwnProp(obj, i)) {\n                    res.push(i);\n                }\n            }\n            return res;\n        };\n    }\n\n    var defaultCalendar = {\n        sameDay: '[Today at] LT',\n        nextDay: '[Tomorrow at] LT',\n        nextWeek: 'dddd [at] LT',\n        lastDay: '[Yesterday at] LT',\n        lastWeek: '[Last] dddd [at] LT',\n        sameElse: 'L',\n    };\n\n    function calendar(key, mom, now) {\n        var output = this._calendar[key] || this._calendar['sameElse'];\n        return isFunction(output) ? output.call(mom, now) : output;\n    }\n\n    function zeroFill(number, targetLength, forceSign) {\n        var absNumber = '' + Math.abs(number),\n            zerosToFill = targetLength - absNumber.length,\n            sign = number >= 0;\n        return (\n            (sign ? (forceSign ? '+' : '') : '-') +\n            Math.pow(10, Math.max(0, zerosToFill)).toString().substr(1) +\n            absNumber\n        );\n    }\n\n    var formattingTokens =\n            /(\\[[^\\[]*\\])|(\\\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,\n        localFormattingTokens = /(\\[[^\\[]*\\])|(\\\\)?(LTS|LT|LL?L?L?|l{1,4})/g,\n        formatFunctions = {},\n        formatTokenFunctions = {};\n\n    // token:    'M'\n    // padded:   ['MM', 2]\n    // ordinal:  'Mo'\n    // callback: function () { this.month() + 1 }\n    function addFormatToken(token, padded, ordinal, callback) {\n        var func = callback;\n        if (typeof callback === 'string') {\n            func = function () {\n                return this[callback]();\n            };\n        }\n        if (token) {\n            formatTokenFunctions[token] = func;\n        }\n        if (padded) {\n            formatTokenFunctions[padded[0]] = function () {\n                return zeroFill(func.apply(this, arguments), padded[1], padded[2]);\n            };\n        }\n        if (ordinal) {\n            formatTokenFunctions[ordinal] = function () {\n                return this.localeData().ordinal(\n                    func.apply(this, arguments),\n                    token\n                );\n            };\n        }\n    }\n\n    function removeFormattingTokens(input) {\n        if (input.match(/\\[[\\s\\S]/)) {\n            return input.replace(/^\\[|\\]$/g, '');\n        }\n        return input.replace(/\\\\/g, '');\n    }\n\n    function makeFormatFunction(format) {\n        var array = format.match(formattingTokens),\n            i,\n            length;\n\n        for (i = 0, length = array.length; i < length; i++) {\n            if (formatTokenFunctions[array[i]]) {\n                array[i] = formatTokenFunctions[array[i]];\n            } else {\n                array[i] = removeFormattingTokens(array[i]);\n            }\n        }\n\n        return function (mom) {\n            var output = '',\n                i;\n            for (i = 0; i < length; i++) {\n                output += isFunction(array[i])\n                    ? array[i].call(mom, format)\n                    : array[i];\n            }\n            return output;\n        };\n    }\n\n    // format date using native date object\n    function formatMoment(m, format) {\n        if (!m.isValid()) {\n            return m.localeData().invalidDate();\n        }\n\n        format = expandFormat(format, m.localeData());\n        formatFunctions[format] =\n            formatFunctions[format] || makeFormatFunction(format);\n\n        return formatFunctions[format](m);\n    }\n\n    function expandFormat(format, locale) {\n        var i = 5;\n\n        function replaceLongDateFormatTokens(input) {\n            return locale.longDateFormat(input) || input;\n        }\n\n        localFormattingTokens.lastIndex = 0;\n        while (i >= 0 && localFormattingTokens.test(format)) {\n            format = format.replace(\n                localFormattingTokens,\n                replaceLongDateFormatTokens\n            );\n            localFormattingTokens.lastIndex = 0;\n            i -= 1;\n        }\n\n        return format;\n    }\n\n    var defaultLongDateFormat = {\n        LTS: 'h:mm:ss A',\n        LT: 'h:mm A',\n        L: 'MM/DD/YYYY',\n        LL: 'MMMM D, YYYY',\n        LLL: 'MMMM D, YYYY h:mm A',\n        LLLL: 'dddd, MMMM D, YYYY h:mm A',\n    };\n\n    function longDateFormat(key) {\n        var format = this._longDateFormat[key],\n            formatUpper = this._longDateFormat[key.toUpperCase()];\n\n        if (format || !formatUpper) {\n            return format;\n        }\n\n        this._longDateFormat[key] = formatUpper\n            .match(formattingTokens)\n            .map(function (tok) {\n                if (\n                    tok === 'MMMM' ||\n                    tok === 'MM' ||\n                    tok === 'DD' ||\n                    tok === 'dddd'\n                ) {\n                    return tok.slice(1);\n                }\n                return tok;\n            })\n            .join('');\n\n        return this._longDateFormat[key];\n    }\n\n    var defaultInvalidDate = 'Invalid date';\n\n    function invalidDate() {\n        return this._invalidDate;\n    }\n\n    var defaultOrdinal = '%d',\n        defaultDayOfMonthOrdinalParse = /\\d{1,2}/;\n\n    function ordinal(number) {\n        return this._ordinal.replace('%d', number);\n    }\n\n    var defaultRelativeTime = {\n        future: 'in %s',\n        past: '%s ago',\n        s: 'a few seconds',\n        ss: '%d seconds',\n        m: 'a minute',\n        mm: '%d minutes',\n        h: 'an hour',\n        hh: '%d hours',\n        d: 'a day',\n        dd: '%d days',\n        w: 'a week',\n        ww: '%d weeks',\n        M: 'a month',\n        MM: '%d months',\n        y: 'a year',\n        yy: '%d years',\n    };\n\n    function relativeTime(number, withoutSuffix, string, isFuture) {\n        var output = this._relativeTime[string];\n        return isFunction(output)\n            ? output(number, withoutSuffix, string, isFuture)\n            : output.replace(/%d/i, number);\n    }\n\n    function pastFuture(diff, output) {\n        var format = this._relativeTime[diff > 0 ? 'future' : 'past'];\n        return isFunction(format) ? format(output) : format.replace(/%s/i, output);\n    }\n\n    var aliases = {};\n\n    function addUnitAlias(unit, shorthand) {\n        var lowerCase = unit.toLowerCase();\n        aliases[lowerCase] = aliases[lowerCase + 's'] = aliases[shorthand] = unit;\n    }\n\n    function normalizeUnits(units) {\n        return typeof units === 'string'\n            ? aliases[units] || aliases[units.toLowerCase()]\n            : undefined;\n    }\n\n    function normalizeObjectUnits(inputObject) {\n        var normalizedInput = {},\n            normalizedProp,\n            prop;\n\n        for (prop in inputObject) {\n            if (hasOwnProp(inputObject, prop)) {\n                normalizedProp = normalizeUnits(prop);\n                if (normalizedProp) {\n                    normalizedInput[normalizedProp] = inputObject[prop];\n                }\n            }\n        }\n\n        return normalizedInput;\n    }\n\n    var priorities = {};\n\n    function addUnitPriority(unit, priority) {\n        priorities[unit] = priority;\n    }\n\n    function getPrioritizedUnits(unitsObj) {\n        var units = [],\n            u;\n        for (u in unitsObj) {\n            if (hasOwnProp(unitsObj, u)) {\n                units.push({ unit: u, priority: priorities[u] });\n            }\n        }\n        units.sort(function (a, b) {\n            return a.priority - b.priority;\n        });\n        return units;\n    }\n\n    function isLeapYear(year) {\n        return (year % 4 === 0 && year % 100 !== 0) || year % 400 === 0;\n    }\n\n    function absFloor(number) {\n        if (number < 0) {\n            // -0 -> 0\n            return Math.ceil(number) || 0;\n        } else {\n            return Math.floor(number);\n        }\n    }\n\n    function toInt(argumentForCoercion) {\n        var coercedNumber = +argumentForCoercion,\n            value = 0;\n\n        if (coercedNumber !== 0 && isFinite(coercedNumber)) {\n            value = absFloor(coercedNumber);\n        }\n\n        return value;\n    }\n\n    function makeGetSet(unit, keepTime) {\n        return function (value) {\n            if (value != null) {\n                set$1(this, unit, value);\n                hooks.updateOffset(this, keepTime);\n                return this;\n            } else {\n                return get(this, unit);\n            }\n        };\n    }\n\n    function get(mom, unit) {\n        return mom.isValid()\n            ? mom._d['get' + (mom._isUTC ? 'UTC' : '') + unit]()\n            : NaN;\n    }\n\n    function set$1(mom, unit, value) {\n        if (mom.isValid() && !isNaN(value)) {\n            if (\n                unit === 'FullYear' &&\n                isLeapYear(mom.year()) &&\n                mom.month() === 1 &&\n                mom.date() === 29\n            ) {\n                value = toInt(value);\n                mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](\n                    value,\n                    mom.month(),\n                    daysInMonth(value, mom.month())\n                );\n            } else {\n                mom._d['set' + (mom._isUTC ? 'UTC' : '') + unit](value);\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function stringGet(units) {\n        units = normalizeUnits(units);\n        if (isFunction(this[units])) {\n            return this[units]();\n        }\n        return this;\n    }\n\n    function stringSet(units, value) {\n        if (typeof units === 'object') {\n            units = normalizeObjectUnits(units);\n            var prioritized = getPrioritizedUnits(units),\n                i,\n                prioritizedLen = prioritized.length;\n            for (i = 0; i < prioritizedLen; i++) {\n                this[prioritized[i].unit](units[prioritized[i].unit]);\n            }\n        } else {\n            units = normalizeUnits(units);\n            if (isFunction(this[units])) {\n                return this[units](value);\n            }\n        }\n        return this;\n    }\n\n    var match1 = /\\d/, //       0 - 9\n        match2 = /\\d\\d/, //      00 - 99\n        match3 = /\\d{3}/, //     000 - 999\n        match4 = /\\d{4}/, //    0000 - 9999\n        match6 = /[+-]?\\d{6}/, // -999999 - 999999\n        match1to2 = /\\d\\d?/, //       0 - 99\n        match3to4 = /\\d\\d\\d\\d?/, //     999 - 9999\n        match5to6 = /\\d\\d\\d\\d\\d\\d?/, //   99999 - 999999\n        match1to3 = /\\d{1,3}/, //       0 - 999\n        match1to4 = /\\d{1,4}/, //       0 - 9999\n        match1to6 = /[+-]?\\d{1,6}/, // -999999 - 999999\n        matchUnsigned = /\\d+/, //       0 - inf\n        matchSigned = /[+-]?\\d+/, //    -inf - inf\n        matchOffset = /Z|[+-]\\d\\d:?\\d\\d/gi, // +00:00 -00:00 +0000 -0000 or Z\n        matchShortOffset = /Z|[+-]\\d\\d(?::?\\d\\d)?/gi, // +00 -00 +00:00 -00:00 +0000 -0000 or Z\n        matchTimestamp = /[+-]?\\d+(\\.\\d{1,3})?/, // 123456789 123456789.123\n        // any word (or two) characters or numbers including two/three word month in arabic.\n        // includes scottish gaelic two word and hyphenated months\n        matchWord =\n            /[0-9]{0,256}['a-z\\u00A0-\\u05FF\\u0700-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFF07\\uFF10-\\uFFEF]{1,256}|[\\u0600-\\u06FF\\/]{1,256}(\\s*?[\\u0600-\\u06FF]{1,256}){1,2}/i,\n        regexes;\n\n    regexes = {};\n\n    function addRegexToken(token, regex, strictRegex) {\n        regexes[token] = isFunction(regex)\n            ? regex\n            : function (isStrict, localeData) {\n                  return isStrict && strictRegex ? strictRegex : regex;\n              };\n    }\n\n    function getParseRegexForToken(token, config) {\n        if (!hasOwnProp(regexes, token)) {\n            return new RegExp(unescapeFormat(token));\n        }\n\n        return regexes[token](config._strict, config._locale);\n    }\n\n    // Code from http://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript\n    function unescapeFormat(s) {\n        return regexEscape(\n            s\n                .replace('\\\\', '')\n                .replace(\n                    /\\\\(\\[)|\\\\(\\])|\\[([^\\]\\[]*)\\]|\\\\(.)/g,\n                    function (matched, p1, p2, p3, p4) {\n                        return p1 || p2 || p3 || p4;\n                    }\n                )\n        );\n    }\n\n    function regexEscape(s) {\n        return s.replace(/[-\\/\\\\^$*+?.()|[\\]{}]/g, '\\\\$&');\n    }\n\n    var tokens = {};\n\n    function addParseToken(token, callback) {\n        var i,\n            func = callback,\n            tokenLen;\n        if (typeof token === 'string') {\n            token = [token];\n        }\n        if (isNumber(callback)) {\n            func = function (input, array) {\n                array[callback] = toInt(input);\n            };\n        }\n        tokenLen = token.length;\n        for (i = 0; i < tokenLen; i++) {\n            tokens[token[i]] = func;\n        }\n    }\n\n    function addWeekParseToken(token, callback) {\n        addParseToken(token, function (input, array, config, token) {\n            config._w = config._w || {};\n            callback(input, config._w, config, token);\n        });\n    }\n\n    function addTimeToArrayFromToken(token, input, config) {\n        if (input != null && hasOwnProp(tokens, token)) {\n            tokens[token](input, config._a, config, token);\n        }\n    }\n\n    var YEAR = 0,\n        MONTH = 1,\n        DATE = 2,\n        HOUR = 3,\n        MINUTE = 4,\n        SECOND = 5,\n        MILLISECOND = 6,\n        WEEK = 7,\n        WEEKDAY = 8;\n\n    function mod(n, x) {\n        return ((n % x) + x) % x;\n    }\n\n    var indexOf;\n\n    if (Array.prototype.indexOf) {\n        indexOf = Array.prototype.indexOf;\n    } else {\n        indexOf = function (o) {\n            // I know\n            var i;\n            for (i = 0; i < this.length; ++i) {\n                if (this[i] === o) {\n                    return i;\n                }\n            }\n            return -1;\n        };\n    }\n\n    function daysInMonth(year, month) {\n        if (isNaN(year) || isNaN(month)) {\n            return NaN;\n        }\n        var modMonth = mod(month, 12);\n        year += (month - modMonth) / 12;\n        return modMonth === 1\n            ? isLeapYear(year)\n                ? 29\n                : 28\n            : 31 - ((modMonth % 7) % 2);\n    }\n\n    // FORMATTING\n\n    addFormatToken('M', ['MM', 2], 'Mo', function () {\n        return this.month() + 1;\n    });\n\n    addFormatToken('MMM', 0, 0, function (format) {\n        return this.localeData().monthsShort(this, format);\n    });\n\n    addFormatToken('MMMM', 0, 0, function (format) {\n        return this.localeData().months(this, format);\n    });\n\n    // ALIASES\n\n    addUnitAlias('month', 'M');\n\n    // PRIORITY\n\n    addUnitPriority('month', 8);\n\n    // PARSING\n\n    addRegexToken('M', match1to2);\n    addRegexToken('MM', match1to2, match2);\n    addRegexToken('MMM', function (isStrict, locale) {\n        return locale.monthsShortRegex(isStrict);\n    });\n    addRegexToken('MMMM', function (isStrict, locale) {\n        return locale.monthsRegex(isStrict);\n    });\n\n    addParseToken(['M', 'MM'], function (input, array) {\n        array[MONTH] = toInt(input) - 1;\n    });\n\n    addParseToken(['MMM', 'MMMM'], function (input, array, config, token) {\n        var month = config._locale.monthsParse(input, token, config._strict);\n        // if we didn't find a month name, mark the date as invalid.\n        if (month != null) {\n            array[MONTH] = month;\n        } else {\n            getParsingFlags(config).invalidMonth = input;\n        }\n    });\n\n    // LOCALES\n\n    var defaultLocaleMonths =\n            'January_February_March_April_May_June_July_August_September_October_November_December'.split(\n                '_'\n            ),\n        defaultLocaleMonthsShort =\n            'Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec'.split('_'),\n        MONTHS_IN_FORMAT = /D[oD]?(\\[[^\\[\\]]*\\]|\\s)+MMMM?/,\n        defaultMonthsShortRegex = matchWord,\n        defaultMonthsRegex = matchWord;\n\n    function localeMonths(m, format) {\n        if (!m) {\n            return isArray(this._months)\n                ? this._months\n                : this._months['standalone'];\n        }\n        return isArray(this._months)\n            ? this._months[m.month()]\n            : this._months[\n                  (this._months.isFormat || MONTHS_IN_FORMAT).test(format)\n                      ? 'format'\n                      : 'standalone'\n              ][m.month()];\n    }\n\n    function localeMonthsShort(m, format) {\n        if (!m) {\n            return isArray(this._monthsShort)\n                ? this._monthsShort\n                : this._monthsShort['standalone'];\n        }\n        return isArray(this._monthsShort)\n            ? this._monthsShort[m.month()]\n            : this._monthsShort[\n                  MONTHS_IN_FORMAT.test(format) ? 'format' : 'standalone'\n              ][m.month()];\n    }\n\n    function handleStrictParse(monthName, format, strict) {\n        var i,\n            ii,\n            mom,\n            llc = monthName.toLocaleLowerCase();\n        if (!this._monthsParse) {\n            // this is not used\n            this._monthsParse = [];\n            this._longMonthsParse = [];\n            this._shortMonthsParse = [];\n            for (i = 0; i < 12; ++i) {\n                mom = createUTC([2000, i]);\n                this._shortMonthsParse[i] = this.monthsShort(\n                    mom,\n                    ''\n                ).toLocaleLowerCase();\n                this._longMonthsParse[i] = this.months(mom, '').toLocaleLowerCase();\n            }\n        }\n\n        if (strict) {\n            if (format === 'MMM') {\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._longMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        } else {\n            if (format === 'MMM') {\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._longMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._longMonthsParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortMonthsParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        }\n    }\n\n    function localeMonthsParse(monthName, format, strict) {\n        var i, mom, regex;\n\n        if (this._monthsParseExact) {\n            return handleStrictParse.call(this, monthName, format, strict);\n        }\n\n        if (!this._monthsParse) {\n            this._monthsParse = [];\n            this._longMonthsParse = [];\n            this._shortMonthsParse = [];\n        }\n\n        // TODO: add sorting\n        // Sorting makes sure if one month (or abbr) is a prefix of another\n        // see sorting in computeMonthsParse\n        for (i = 0; i < 12; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, i]);\n            if (strict && !this._longMonthsParse[i]) {\n                this._longMonthsParse[i] = new RegExp(\n                    '^' + this.months(mom, '').replace('.', '') + '$',\n                    'i'\n                );\n                this._shortMonthsParse[i] = new RegExp(\n                    '^' + this.monthsShort(mom, '').replace('.', '') + '$',\n                    'i'\n                );\n            }\n            if (!strict && !this._monthsParse[i]) {\n                regex =\n                    '^' + this.months(mom, '') + '|^' + this.monthsShort(mom, '');\n                this._monthsParse[i] = new RegExp(regex.replace('.', ''), 'i');\n            }\n            // test the regex\n            if (\n                strict &&\n                format === 'MMMM' &&\n                this._longMonthsParse[i].test(monthName)\n            ) {\n                return i;\n            } else if (\n                strict &&\n                format === 'MMM' &&\n                this._shortMonthsParse[i].test(monthName)\n            ) {\n                return i;\n            } else if (!strict && this._monthsParse[i].test(monthName)) {\n                return i;\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function setMonth(mom, value) {\n        var dayOfMonth;\n\n        if (!mom.isValid()) {\n            // No op\n            return mom;\n        }\n\n        if (typeof value === 'string') {\n            if (/^\\d+$/.test(value)) {\n                value = toInt(value);\n            } else {\n                value = mom.localeData().monthsParse(value);\n                // TODO: Another silent failure?\n                if (!isNumber(value)) {\n                    return mom;\n                }\n            }\n        }\n\n        dayOfMonth = Math.min(mom.date(), daysInMonth(mom.year(), value));\n        mom._d['set' + (mom._isUTC ? 'UTC' : '') + 'Month'](value, dayOfMonth);\n        return mom;\n    }\n\n    function getSetMonth(value) {\n        if (value != null) {\n            setMonth(this, value);\n            hooks.updateOffset(this, true);\n            return this;\n        } else {\n            return get(this, 'Month');\n        }\n    }\n\n    function getDaysInMonth() {\n        return daysInMonth(this.year(), this.month());\n    }\n\n    function monthsShortRegex(isStrict) {\n        if (this._monthsParseExact) {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                computeMonthsParse.call(this);\n            }\n            if (isStrict) {\n                return this._monthsShortStrictRegex;\n            } else {\n                return this._monthsShortRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_monthsShortRegex')) {\n                this._monthsShortRegex = defaultMonthsShortRegex;\n            }\n            return this._monthsShortStrictRegex && isStrict\n                ? this._monthsShortStrictRegex\n                : this._monthsShortRegex;\n        }\n    }\n\n    function monthsRegex(isStrict) {\n        if (this._monthsParseExact) {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                computeMonthsParse.call(this);\n            }\n            if (isStrict) {\n                return this._monthsStrictRegex;\n            } else {\n                return this._monthsRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_monthsRegex')) {\n                this._monthsRegex = defaultMonthsRegex;\n            }\n            return this._monthsStrictRegex && isStrict\n                ? this._monthsStrictRegex\n                : this._monthsRegex;\n        }\n    }\n\n    function computeMonthsParse() {\n        function cmpLenRev(a, b) {\n            return b.length - a.length;\n        }\n\n        var shortPieces = [],\n            longPieces = [],\n            mixedPieces = [],\n            i,\n            mom;\n        for (i = 0; i < 12; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, i]);\n            shortPieces.push(this.monthsShort(mom, ''));\n            longPieces.push(this.months(mom, ''));\n            mixedPieces.push(this.months(mom, ''));\n            mixedPieces.push(this.monthsShort(mom, ''));\n        }\n        // Sorting makes sure if one month (or abbr) is a prefix of another it\n        // will match the longer piece.\n        shortPieces.sort(cmpLenRev);\n        longPieces.sort(cmpLenRev);\n        mixedPieces.sort(cmpLenRev);\n        for (i = 0; i < 12; i++) {\n            shortPieces[i] = regexEscape(shortPieces[i]);\n            longPieces[i] = regexEscape(longPieces[i]);\n        }\n        for (i = 0; i < 24; i++) {\n            mixedPieces[i] = regexEscape(mixedPieces[i]);\n        }\n\n        this._monthsRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._monthsShortRegex = this._monthsRegex;\n        this._monthsStrictRegex = new RegExp(\n            '^(' + longPieces.join('|') + ')',\n            'i'\n        );\n        this._monthsShortStrictRegex = new RegExp(\n            '^(' + shortPieces.join('|') + ')',\n            'i'\n        );\n    }\n\n    // FORMATTING\n\n    addFormatToken('Y', 0, 0, function () {\n        var y = this.year();\n        return y <= 9999 ? zeroFill(y, 4) : '+' + y;\n    });\n\n    addFormatToken(0, ['YY', 2], 0, function () {\n        return this.year() % 100;\n    });\n\n    addFormatToken(0, ['YYYY', 4], 0, 'year');\n    addFormatToken(0, ['YYYYY', 5], 0, 'year');\n    addFormatToken(0, ['YYYYYY', 6, true], 0, 'year');\n\n    // ALIASES\n\n    addUnitAlias('year', 'y');\n\n    // PRIORITIES\n\n    addUnitPriority('year', 1);\n\n    // PARSING\n\n    addRegexToken('Y', matchSigned);\n    addRegexToken('YY', match1to2, match2);\n    addRegexToken('YYYY', match1to4, match4);\n    addRegexToken('YYYYY', match1to6, match6);\n    addRegexToken('YYYYYY', match1to6, match6);\n\n    addParseToken(['YYYYY', 'YYYYYY'], YEAR);\n    addParseToken('YYYY', function (input, array) {\n        array[YEAR] =\n            input.length === 2 ? hooks.parseTwoDigitYear(input) : toInt(input);\n    });\n    addParseToken('YY', function (input, array) {\n        array[YEAR] = hooks.parseTwoDigitYear(input);\n    });\n    addParseToken('Y', function (input, array) {\n        array[YEAR] = parseInt(input, 10);\n    });\n\n    // HELPERS\n\n    function daysInYear(year) {\n        return isLeapYear(year) ? 366 : 365;\n    }\n\n    // HOOKS\n\n    hooks.parseTwoDigitYear = function (input) {\n        return toInt(input) + (toInt(input) > 68 ? 1900 : 2000);\n    };\n\n    // MOMENTS\n\n    var getSetYear = makeGetSet('FullYear', true);\n\n    function getIsLeapYear() {\n        return isLeapYear(this.year());\n    }\n\n    function createDate(y, m, d, h, M, s, ms) {\n        // can't just apply() to create a date:\n        // https://stackoverflow.com/q/181348\n        var date;\n        // the date constructor remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            date = new Date(y + 400, m, d, h, M, s, ms);\n            if (isFinite(date.getFullYear())) {\n                date.setFullYear(y);\n            }\n        } else {\n            date = new Date(y, m, d, h, M, s, ms);\n        }\n\n        return date;\n    }\n\n    function createUTCDate(y) {\n        var date, args;\n        // the Date.UTC function remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            args = Array.prototype.slice.call(arguments);\n            // preserve leap years using a full 400 year cycle, then reset\n            args[0] = y + 400;\n            date = new Date(Date.UTC.apply(null, args));\n            if (isFinite(date.getUTCFullYear())) {\n                date.setUTCFullYear(y);\n            }\n        } else {\n            date = new Date(Date.UTC.apply(null, arguments));\n        }\n\n        return date;\n    }\n\n    // start-of-first-week - start-of-year\n    function firstWeekOffset(year, dow, doy) {\n        var // first-week day -- which january is always in the first week (4 for iso, 1 for other)\n            fwd = 7 + dow - doy,\n            // first-week day local weekday -- which local weekday is fwd\n            fwdlw = (7 + createUTCDate(year, 0, fwd).getUTCDay() - dow) % 7;\n\n        return -fwdlw + fwd - 1;\n    }\n\n    // https://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday\n    function dayOfYearFromWeeks(year, week, weekday, dow, doy) {\n        var localWeekday = (7 + weekday - dow) % 7,\n            weekOffset = firstWeekOffset(year, dow, doy),\n            dayOfYear = 1 + 7 * (week - 1) + localWeekday + weekOffset,\n            resYear,\n            resDayOfYear;\n\n        if (dayOfYear <= 0) {\n            resYear = year - 1;\n            resDayOfYear = daysInYear(resYear) + dayOfYear;\n        } else if (dayOfYear > daysInYear(year)) {\n            resYear = year + 1;\n            resDayOfYear = dayOfYear - daysInYear(year);\n        } else {\n            resYear = year;\n            resDayOfYear = dayOfYear;\n        }\n\n        return {\n            year: resYear,\n            dayOfYear: resDayOfYear,\n        };\n    }\n\n    function weekOfYear(mom, dow, doy) {\n        var weekOffset = firstWeekOffset(mom.year(), dow, doy),\n            week = Math.floor((mom.dayOfYear() - weekOffset - 1) / 7) + 1,\n            resWeek,\n            resYear;\n\n        if (week < 1) {\n            resYear = mom.year() - 1;\n            resWeek = week + weeksInYear(resYear, dow, doy);\n        } else if (week > weeksInYear(mom.year(), dow, doy)) {\n            resWeek = week - weeksInYear(mom.year(), dow, doy);\n            resYear = mom.year() + 1;\n        } else {\n            resYear = mom.year();\n            resWeek = week;\n        }\n\n        return {\n            week: resWeek,\n            year: resYear,\n        };\n    }\n\n    function weeksInYear(year, dow, doy) {\n        var weekOffset = firstWeekOffset(year, dow, doy),\n            weekOffsetNext = firstWeekOffset(year + 1, dow, doy);\n        return (daysInYear(year) - weekOffset + weekOffsetNext) / 7;\n    }\n\n    // FORMATTING\n\n    addFormatToken('w', ['ww', 2], 'wo', 'week');\n    addFormatToken('W', ['WW', 2], 'Wo', 'isoWeek');\n\n    // ALIASES\n\n    addUnitAlias('week', 'w');\n    addUnitAlias('isoWeek', 'W');\n\n    // PRIORITIES\n\n    addUnitPriority('week', 5);\n    addUnitPriority('isoWeek', 5);\n\n    // PARSING\n\n    addRegexToken('w', match1to2);\n    addRegexToken('ww', match1to2, match2);\n    addRegexToken('W', match1to2);\n    addRegexToken('WW', match1to2, match2);\n\n    addWeekParseToken(\n        ['w', 'ww', 'W', 'WW'],\n        function (input, week, config, token) {\n            week[token.substr(0, 1)] = toInt(input);\n        }\n    );\n\n    // HELPERS\n\n    // LOCALES\n\n    function localeWeek(mom) {\n        return weekOfYear(mom, this._week.dow, this._week.doy).week;\n    }\n\n    var defaultLocaleWeek = {\n        dow: 0, // Sunday is the first day of the week.\n        doy: 6, // The week that contains Jan 6th is the first week of the year.\n    };\n\n    function localeFirstDayOfWeek() {\n        return this._week.dow;\n    }\n\n    function localeFirstDayOfYear() {\n        return this._week.doy;\n    }\n\n    // MOMENTS\n\n    function getSetWeek(input) {\n        var week = this.localeData().week(this);\n        return input == null ? week : this.add((input - week) * 7, 'd');\n    }\n\n    function getSetISOWeek(input) {\n        var week = weekOfYear(this, 1, 4).week;\n        return input == null ? week : this.add((input - week) * 7, 'd');\n    }\n\n    // FORMATTING\n\n    addFormatToken('d', 0, 'do', 'day');\n\n    addFormatToken('dd', 0, 0, function (format) {\n        return this.localeData().weekdaysMin(this, format);\n    });\n\n    addFormatToken('ddd', 0, 0, function (format) {\n        return this.localeData().weekdaysShort(this, format);\n    });\n\n    addFormatToken('dddd', 0, 0, function (format) {\n        return this.localeData().weekdays(this, format);\n    });\n\n    addFormatToken('e', 0, 0, 'weekday');\n    addFormatToken('E', 0, 0, 'isoWeekday');\n\n    // ALIASES\n\n    addUnitAlias('day', 'd');\n    addUnitAlias('weekday', 'e');\n    addUnitAlias('isoWeekday', 'E');\n\n    // PRIORITY\n    addUnitPriority('day', 11);\n    addUnitPriority('weekday', 11);\n    addUnitPriority('isoWeekday', 11);\n\n    // PARSING\n\n    addRegexToken('d', match1to2);\n    addRegexToken('e', match1to2);\n    addRegexToken('E', match1to2);\n    addRegexToken('dd', function (isStrict, locale) {\n        return locale.weekdaysMinRegex(isStrict);\n    });\n    addRegexToken('ddd', function (isStrict, locale) {\n        return locale.weekdaysShortRegex(isStrict);\n    });\n    addRegexToken('dddd', function (isStrict, locale) {\n        return locale.weekdaysRegex(isStrict);\n    });\n\n    addWeekParseToken(['dd', 'ddd', 'dddd'], function (input, week, config, token) {\n        var weekday = config._locale.weekdaysParse(input, token, config._strict);\n        // if we didn't get a weekday name, mark the date as invalid\n        if (weekday != null) {\n            week.d = weekday;\n        } else {\n            getParsingFlags(config).invalidWeekday = input;\n        }\n    });\n\n    addWeekParseToken(['d', 'e', 'E'], function (input, week, config, token) {\n        week[token] = toInt(input);\n    });\n\n    // HELPERS\n\n    function parseWeekday(input, locale) {\n        if (typeof input !== 'string') {\n            return input;\n        }\n\n        if (!isNaN(input)) {\n            return parseInt(input, 10);\n        }\n\n        input = locale.weekdaysParse(input);\n        if (typeof input === 'number') {\n            return input;\n        }\n\n        return null;\n    }\n\n    function parseIsoWeekday(input, locale) {\n        if (typeof input === 'string') {\n            return locale.weekdaysParse(input) % 7 || 7;\n        }\n        return isNaN(input) ? null : input;\n    }\n\n    // LOCALES\n    function shiftWeekdays(ws, n) {\n        return ws.slice(n, 7).concat(ws.slice(0, n));\n    }\n\n    var defaultLocaleWeekdays =\n            'Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday'.split('_'),\n        defaultLocaleWeekdaysShort = 'Sun_Mon_Tue_Wed_Thu_Fri_Sat'.split('_'),\n        defaultLocaleWeekdaysMin = 'Su_Mo_Tu_We_Th_Fr_Sa'.split('_'),\n        defaultWeekdaysRegex = matchWord,\n        defaultWeekdaysShortRegex = matchWord,\n        defaultWeekdaysMinRegex = matchWord;\n\n    function localeWeekdays(m, format) {\n        var weekdays = isArray(this._weekdays)\n            ? this._weekdays\n            : this._weekdays[\n                  m && m !== true && this._weekdays.isFormat.test(format)\n                      ? 'format'\n                      : 'standalone'\n              ];\n        return m === true\n            ? shiftWeekdays(weekdays, this._week.dow)\n            : m\n            ? weekdays[m.day()]\n            : weekdays;\n    }\n\n    function localeWeekdaysShort(m) {\n        return m === true\n            ? shiftWeekdays(this._weekdaysShort, this._week.dow)\n            : m\n            ? this._weekdaysShort[m.day()]\n            : this._weekdaysShort;\n    }\n\n    function localeWeekdaysMin(m) {\n        return m === true\n            ? shiftWeekdays(this._weekdaysMin, this._week.dow)\n            : m\n            ? this._weekdaysMin[m.day()]\n            : this._weekdaysMin;\n    }\n\n    function handleStrictParse$1(weekdayName, format, strict) {\n        var i,\n            ii,\n            mom,\n            llc = weekdayName.toLocaleLowerCase();\n        if (!this._weekdaysParse) {\n            this._weekdaysParse = [];\n            this._shortWeekdaysParse = [];\n            this._minWeekdaysParse = [];\n\n            for (i = 0; i < 7; ++i) {\n                mom = createUTC([2000, 1]).day(i);\n                this._minWeekdaysParse[i] = this.weekdaysMin(\n                    mom,\n                    ''\n                ).toLocaleLowerCase();\n                this._shortWeekdaysParse[i] = this.weekdaysShort(\n                    mom,\n                    ''\n                ).toLocaleLowerCase();\n                this._weekdaysParse[i] = this.weekdays(mom, '').toLocaleLowerCase();\n            }\n        }\n\n        if (strict) {\n            if (format === 'dddd') {\n                ii = indexOf.call(this._weekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else if (format === 'ddd') {\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        } else {\n            if (format === 'dddd') {\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else if (format === 'ddd') {\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            } else {\n                ii = indexOf.call(this._minWeekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._weekdaysParse, llc);\n                if (ii !== -1) {\n                    return ii;\n                }\n                ii = indexOf.call(this._shortWeekdaysParse, llc);\n                return ii !== -1 ? ii : null;\n            }\n        }\n    }\n\n    function localeWeekdaysParse(weekdayName, format, strict) {\n        var i, mom, regex;\n\n        if (this._weekdaysParseExact) {\n            return handleStrictParse$1.call(this, weekdayName, format, strict);\n        }\n\n        if (!this._weekdaysParse) {\n            this._weekdaysParse = [];\n            this._minWeekdaysParse = [];\n            this._shortWeekdaysParse = [];\n            this._fullWeekdaysParse = [];\n        }\n\n        for (i = 0; i < 7; i++) {\n            // make the regex if we don't have it already\n\n            mom = createUTC([2000, 1]).day(i);\n            if (strict && !this._fullWeekdaysParse[i]) {\n                this._fullWeekdaysParse[i] = new RegExp(\n                    '^' + this.weekdays(mom, '').replace('.', '\\\\.?') + '$',\n                    'i'\n                );\n                this._shortWeekdaysParse[i] = new RegExp(\n                    '^' + this.weekdaysShort(mom, '').replace('.', '\\\\.?') + '$',\n                    'i'\n                );\n                this._minWeekdaysParse[i] = new RegExp(\n                    '^' + this.weekdaysMin(mom, '').replace('.', '\\\\.?') + '$',\n                    'i'\n                );\n            }\n            if (!this._weekdaysParse[i]) {\n                regex =\n                    '^' +\n                    this.weekdays(mom, '') +\n                    '|^' +\n                    this.weekdaysShort(mom, '') +\n                    '|^' +\n                    this.weekdaysMin(mom, '');\n                this._weekdaysParse[i] = new RegExp(regex.replace('.', ''), 'i');\n            }\n            // test the regex\n            if (\n                strict &&\n                format === 'dddd' &&\n                this._fullWeekdaysParse[i].test(weekdayName)\n            ) {\n                return i;\n            } else if (\n                strict &&\n                format === 'ddd' &&\n                this._shortWeekdaysParse[i].test(weekdayName)\n            ) {\n                return i;\n            } else if (\n                strict &&\n                format === 'dd' &&\n                this._minWeekdaysParse[i].test(weekdayName)\n            ) {\n                return i;\n            } else if (!strict && this._weekdaysParse[i].test(weekdayName)) {\n                return i;\n            }\n        }\n    }\n\n    // MOMENTS\n\n    function getSetDayOfWeek(input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        var day = this._isUTC ? this._d.getUTCDay() : this._d.getDay();\n        if (input != null) {\n            input = parseWeekday(input, this.localeData());\n            return this.add(input - day, 'd');\n        } else {\n            return day;\n        }\n    }\n\n    function getSetLocaleDayOfWeek(input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        var weekday = (this.day() + 7 - this.localeData()._week.dow) % 7;\n        return input == null ? weekday : this.add(input - weekday, 'd');\n    }\n\n    function getSetISODayOfWeek(input) {\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n\n        // behaves the same as moment#day except\n        // as a getter, returns 7 instead of 0 (1-7 range instead of 0-6)\n        // as a setter, sunday should belong to the previous week.\n\n        if (input != null) {\n            var weekday = parseIsoWeekday(input, this.localeData());\n            return this.day(this.day() % 7 ? weekday : weekday - 7);\n        } else {\n            return this.day() || 7;\n        }\n    }\n\n    function weekdaysRegex(isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysStrictRegex;\n            } else {\n                return this._weekdaysRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                this._weekdaysRegex = defaultWeekdaysRegex;\n            }\n            return this._weekdaysStrictRegex && isStrict\n                ? this._weekdaysStrictRegex\n                : this._weekdaysRegex;\n        }\n    }\n\n    function weekdaysShortRegex(isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysShortStrictRegex;\n            } else {\n                return this._weekdaysShortRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysShortRegex')) {\n                this._weekdaysShortRegex = defaultWeekdaysShortRegex;\n            }\n            return this._weekdaysShortStrictRegex && isStrict\n                ? this._weekdaysShortStrictRegex\n                : this._weekdaysShortRegex;\n        }\n    }\n\n    function weekdaysMinRegex(isStrict) {\n        if (this._weekdaysParseExact) {\n            if (!hasOwnProp(this, '_weekdaysRegex')) {\n                computeWeekdaysParse.call(this);\n            }\n            if (isStrict) {\n                return this._weekdaysMinStrictRegex;\n            } else {\n                return this._weekdaysMinRegex;\n            }\n        } else {\n            if (!hasOwnProp(this, '_weekdaysMinRegex')) {\n                this._weekdaysMinRegex = defaultWeekdaysMinRegex;\n            }\n            return this._weekdaysMinStrictRegex && isStrict\n                ? this._weekdaysMinStrictRegex\n                : this._weekdaysMinRegex;\n        }\n    }\n\n    function computeWeekdaysParse() {\n        function cmpLenRev(a, b) {\n            return b.length - a.length;\n        }\n\n        var minPieces = [],\n            shortPieces = [],\n            longPieces = [],\n            mixedPieces = [],\n            i,\n            mom,\n            minp,\n            shortp,\n            longp;\n        for (i = 0; i < 7; i++) {\n            // make the regex if we don't have it already\n            mom = createUTC([2000, 1]).day(i);\n            minp = regexEscape(this.weekdaysMin(mom, ''));\n            shortp = regexEscape(this.weekdaysShort(mom, ''));\n            longp = regexEscape(this.weekdays(mom, ''));\n            minPieces.push(minp);\n            shortPieces.push(shortp);\n            longPieces.push(longp);\n            mixedPieces.push(minp);\n            mixedPieces.push(shortp);\n            mixedPieces.push(longp);\n        }\n        // Sorting makes sure if one weekday (or abbr) is a prefix of another it\n        // will match the longer piece.\n        minPieces.sort(cmpLenRev);\n        shortPieces.sort(cmpLenRev);\n        longPieces.sort(cmpLenRev);\n        mixedPieces.sort(cmpLenRev);\n\n        this._weekdaysRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._weekdaysShortRegex = this._weekdaysRegex;\n        this._weekdaysMinRegex = this._weekdaysRegex;\n\n        this._weekdaysStrictRegex = new RegExp(\n            '^(' + longPieces.join('|') + ')',\n            'i'\n        );\n        this._weekdaysShortStrictRegex = new RegExp(\n            '^(' + shortPieces.join('|') + ')',\n            'i'\n        );\n        this._weekdaysMinStrictRegex = new RegExp(\n            '^(' + minPieces.join('|') + ')',\n            'i'\n        );\n    }\n\n    // FORMATTING\n\n    function hFormat() {\n        return this.hours() % 12 || 12;\n    }\n\n    function kFormat() {\n        return this.hours() || 24;\n    }\n\n    addFormatToken('H', ['HH', 2], 0, 'hour');\n    addFormatToken('h', ['hh', 2], 0, hFormat);\n    addFormatToken('k', ['kk', 2], 0, kFormat);\n\n    addFormatToken('hmm', 0, 0, function () {\n        return '' + hFormat.apply(this) + zeroFill(this.minutes(), 2);\n    });\n\n    addFormatToken('hmmss', 0, 0, function () {\n        return (\n            '' +\n            hFormat.apply(this) +\n            zeroFill(this.minutes(), 2) +\n            zeroFill(this.seconds(), 2)\n        );\n    });\n\n    addFormatToken('Hmm', 0, 0, function () {\n        return '' + this.hours() + zeroFill(this.minutes(), 2);\n    });\n\n    addFormatToken('Hmmss', 0, 0, function () {\n        return (\n            '' +\n            this.hours() +\n            zeroFill(this.minutes(), 2) +\n            zeroFill(this.seconds(), 2)\n        );\n    });\n\n    function meridiem(token, lowercase) {\n        addFormatToken(token, 0, 0, function () {\n            return this.localeData().meridiem(\n                this.hours(),\n                this.minutes(),\n                lowercase\n            );\n        });\n    }\n\n    meridiem('a', true);\n    meridiem('A', false);\n\n    // ALIASES\n\n    addUnitAlias('hour', 'h');\n\n    // PRIORITY\n    addUnitPriority('hour', 13);\n\n    // PARSING\n\n    function matchMeridiem(isStrict, locale) {\n        return locale._meridiemParse;\n    }\n\n    addRegexToken('a', matchMeridiem);\n    addRegexToken('A', matchMeridiem);\n    addRegexToken('H', match1to2);\n    addRegexToken('h', match1to2);\n    addRegexToken('k', match1to2);\n    addRegexToken('HH', match1to2, match2);\n    addRegexToken('hh', match1to2, match2);\n    addRegexToken('kk', match1to2, match2);\n\n    addRegexToken('hmm', match3to4);\n    addRegexToken('hmmss', match5to6);\n    addRegexToken('Hmm', match3to4);\n    addRegexToken('Hmmss', match5to6);\n\n    addParseToken(['H', 'HH'], HOUR);\n    addParseToken(['k', 'kk'], function (input, array, config) {\n        var kInput = toInt(input);\n        array[HOUR] = kInput === 24 ? 0 : kInput;\n    });\n    addParseToken(['a', 'A'], function (input, array, config) {\n        config._isPm = config._locale.isPM(input);\n        config._meridiem = input;\n    });\n    addParseToken(['h', 'hh'], function (input, array, config) {\n        array[HOUR] = toInt(input);\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('hmm', function (input, array, config) {\n        var pos = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos));\n        array[MINUTE] = toInt(input.substr(pos));\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('hmmss', function (input, array, config) {\n        var pos1 = input.length - 4,\n            pos2 = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos1));\n        array[MINUTE] = toInt(input.substr(pos1, 2));\n        array[SECOND] = toInt(input.substr(pos2));\n        getParsingFlags(config).bigHour = true;\n    });\n    addParseToken('Hmm', function (input, array, config) {\n        var pos = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos));\n        array[MINUTE] = toInt(input.substr(pos));\n    });\n    addParseToken('Hmmss', function (input, array, config) {\n        var pos1 = input.length - 4,\n            pos2 = input.length - 2;\n        array[HOUR] = toInt(input.substr(0, pos1));\n        array[MINUTE] = toInt(input.substr(pos1, 2));\n        array[SECOND] = toInt(input.substr(pos2));\n    });\n\n    // LOCALES\n\n    function localeIsPM(input) {\n        // IE8 Quirks Mode & IE7 Standards Mode do not allow accessing strings like arrays\n        // Using charAt should be more compatible.\n        return (input + '').toLowerCase().charAt(0) === 'p';\n    }\n\n    var defaultLocaleMeridiemParse = /[ap]\\.?m?\\.?/i,\n        // Setting the hour should keep the time, because the user explicitly\n        // specified which hour they want. So trying to maintain the same hour (in\n        // a new timezone) makes sense. Adding/subtracting hours does not follow\n        // this rule.\n        getSetHour = makeGetSet('Hours', true);\n\n    function localeMeridiem(hours, minutes, isLower) {\n        if (hours > 11) {\n            return isLower ? 'pm' : 'PM';\n        } else {\n            return isLower ? 'am' : 'AM';\n        }\n    }\n\n    var baseConfig = {\n        calendar: defaultCalendar,\n        longDateFormat: defaultLongDateFormat,\n        invalidDate: defaultInvalidDate,\n        ordinal: defaultOrdinal,\n        dayOfMonthOrdinalParse: defaultDayOfMonthOrdinalParse,\n        relativeTime: defaultRelativeTime,\n\n        months: defaultLocaleMonths,\n        monthsShort: defaultLocaleMonthsShort,\n\n        week: defaultLocaleWeek,\n\n        weekdays: defaultLocaleWeekdays,\n        weekdaysMin: defaultLocaleWeekdaysMin,\n        weekdaysShort: defaultLocaleWeekdaysShort,\n\n        meridiemParse: defaultLocaleMeridiemParse,\n    };\n\n    // internal storage for locale config files\n    var locales = {},\n        localeFamilies = {},\n        globalLocale;\n\n    function commonPrefix(arr1, arr2) {\n        var i,\n            minl = Math.min(arr1.length, arr2.length);\n        for (i = 0; i < minl; i += 1) {\n            if (arr1[i] !== arr2[i]) {\n                return i;\n            }\n        }\n        return minl;\n    }\n\n    function normalizeLocale(key) {\n        return key ? key.toLowerCase().replace('_', '-') : key;\n    }\n\n    // pick the locale from the array\n    // try ['en-au', 'en-gb'] as 'en-au', 'en-gb', 'en', as in move through the list trying each\n    // substring from most specific to least, but move to the next array item if it's a more specific variant than the current root\n    function chooseLocale(names) {\n        var i = 0,\n            j,\n            next,\n            locale,\n            split;\n\n        while (i < names.length) {\n            split = normalizeLocale(names[i]).split('-');\n            j = split.length;\n            next = normalizeLocale(names[i + 1]);\n            next = next ? next.split('-') : null;\n            while (j > 0) {\n                locale = loadLocale(split.slice(0, j).join('-'));\n                if (locale) {\n                    return locale;\n                }\n                if (\n                    next &&\n                    next.length >= j &&\n                    commonPrefix(split, next) >= j - 1\n                ) {\n                    //the next array item is better than a shallower substring of this one\n                    break;\n                }\n                j--;\n            }\n            i++;\n        }\n        return globalLocale;\n    }\n\n    function isLocaleNameSane(name) {\n        // Prevent names that look like filesystem paths, i.e contain '/' or '\\'\n        return name.match('^[^/\\\\\\\\]*$') != null;\n    }\n\n    function loadLocale(name) {\n        var oldLocale = null,\n            aliasedRequire;\n        // TODO: Find a better way to register and load all the locales in Node\n        if (\n            locales[name] === undefined &&\n            typeof module !== 'undefined' &&\n            module &&\n            module.exports &&\n            isLocaleNameSane(name)\n        ) {\n            try {\n                oldLocale = globalLocale._abbr;\n                aliasedRequire = require;\n                aliasedRequire('./locale/' + name);\n                getSetGlobalLocale(oldLocale);\n            } catch (e) {\n                // mark as not found to avoid repeating expensive file require call causing high CPU\n                // when trying to find en-US, en_US, en-us for every format call\n                locales[name] = null; // null means not found\n            }\n        }\n        return locales[name];\n    }\n\n    // This function will load locale and then set the global locale.  If\n    // no arguments are passed in, it will simply return the current global\n    // locale key.\n    function getSetGlobalLocale(key, values) {\n        var data;\n        if (key) {\n            if (isUndefined(values)) {\n                data = getLocale(key);\n            } else {\n                data = defineLocale(key, values);\n            }\n\n            if (data) {\n                // moment.duration._locale = moment._locale = data;\n                globalLocale = data;\n            } else {\n                if (typeof console !== 'undefined' && console.warn) {\n                    //warn user if arguments are passed but the locale could not be set\n                    console.warn(\n                        'Locale ' + key + ' not found. Did you forget to load it?'\n                    );\n                }\n            }\n        }\n\n        return globalLocale._abbr;\n    }\n\n    function defineLocale(name, config) {\n        if (config !== null) {\n            var locale,\n                parentConfig = baseConfig;\n            config.abbr = name;\n            if (locales[name] != null) {\n                deprecateSimple(\n                    'defineLocaleOverride',\n                    'use moment.updateLocale(localeName, config) to change ' +\n                        'an existing locale. moment.defineLocale(localeName, ' +\n                        'config) should only be used for creating a new locale ' +\n                        'See http://momentjs.com/guides/#/warnings/define-locale/ for more info.'\n                );\n                parentConfig = locales[name]._config;\n            } else if (config.parentLocale != null) {\n                if (locales[config.parentLocale] != null) {\n                    parentConfig = locales[config.parentLocale]._config;\n                } else {\n                    locale = loadLocale(config.parentLocale);\n                    if (locale != null) {\n                        parentConfig = locale._config;\n                    } else {\n                        if (!localeFamilies[config.parentLocale]) {\n                            localeFamilies[config.parentLocale] = [];\n                        }\n                        localeFamilies[config.parentLocale].push({\n                            name: name,\n                            config: config,\n                        });\n                        return null;\n                    }\n                }\n            }\n            locales[name] = new Locale(mergeConfigs(parentConfig, config));\n\n            if (localeFamilies[name]) {\n                localeFamilies[name].forEach(function (x) {\n                    defineLocale(x.name, x.config);\n                });\n            }\n\n            // backwards compat for now: also set the locale\n            // make sure we set the locale AFTER all child locales have been\n            // created, so we won't end up with the child locale set.\n            getSetGlobalLocale(name);\n\n            return locales[name];\n        } else {\n            // useful for testing\n            delete locales[name];\n            return null;\n        }\n    }\n\n    function updateLocale(name, config) {\n        if (config != null) {\n            var locale,\n                tmpLocale,\n                parentConfig = baseConfig;\n\n            if (locales[name] != null && locales[name].parentLocale != null) {\n                // Update existing child locale in-place to avoid memory-leaks\n                locales[name].set(mergeConfigs(locales[name]._config, config));\n            } else {\n                // MERGE\n                tmpLocale = loadLocale(name);\n                if (tmpLocale != null) {\n                    parentConfig = tmpLocale._config;\n                }\n                config = mergeConfigs(parentConfig, config);\n                if (tmpLocale == null) {\n                    // updateLocale is called for creating a new locale\n                    // Set abbr so it will have a name (getters return\n                    // undefined otherwise).\n                    config.abbr = name;\n                }\n                locale = new Locale(config);\n                locale.parentLocale = locales[name];\n                locales[name] = locale;\n            }\n\n            // backwards compat for now: also set the locale\n            getSetGlobalLocale(name);\n        } else {\n            // pass null for config to unupdate, useful for tests\n            if (locales[name] != null) {\n                if (locales[name].parentLocale != null) {\n                    locales[name] = locales[name].parentLocale;\n                    if (name === getSetGlobalLocale()) {\n                        getSetGlobalLocale(name);\n                    }\n                } else if (locales[name] != null) {\n                    delete locales[name];\n                }\n            }\n        }\n        return locales[name];\n    }\n\n    // returns locale data\n    function getLocale(key) {\n        var locale;\n\n        if (key && key._locale && key._locale._abbr) {\n            key = key._locale._abbr;\n        }\n\n        if (!key) {\n            return globalLocale;\n        }\n\n        if (!isArray(key)) {\n            //short-circuit everything else\n            locale = loadLocale(key);\n            if (locale) {\n                return locale;\n            }\n            key = [key];\n        }\n\n        return chooseLocale(key);\n    }\n\n    function listLocales() {\n        return keys(locales);\n    }\n\n    function checkOverflow(m) {\n        var overflow,\n            a = m._a;\n\n        if (a && getParsingFlags(m).overflow === -2) {\n            overflow =\n                a[MONTH] < 0 || a[MONTH] > 11\n                    ? MONTH\n                    : a[DATE] < 1 || a[DATE] > daysInMonth(a[YEAR], a[MONTH])\n                    ? DATE\n                    : a[HOUR] < 0 ||\n                      a[HOUR] > 24 ||\n                      (a[HOUR] === 24 &&\n                          (a[MINUTE] !== 0 ||\n                              a[SECOND] !== 0 ||\n                              a[MILLISECOND] !== 0))\n                    ? HOUR\n                    : a[MINUTE] < 0 || a[MINUTE] > 59\n                    ? MINUTE\n                    : a[SECOND] < 0 || a[SECOND] > 59\n                    ? SECOND\n                    : a[MILLISECOND] < 0 || a[MILLISECOND] > 999\n                    ? MILLISECOND\n                    : -1;\n\n            if (\n                getParsingFlags(m)._overflowDayOfYear &&\n                (overflow < YEAR || overflow > DATE)\n            ) {\n                overflow = DATE;\n            }\n            if (getParsingFlags(m)._overflowWeeks && overflow === -1) {\n                overflow = WEEK;\n            }\n            if (getParsingFlags(m)._overflowWeekday && overflow === -1) {\n                overflow = WEEKDAY;\n            }\n\n            getParsingFlags(m).overflow = overflow;\n        }\n\n        return m;\n    }\n\n    // iso 8601 regex\n    // 0000-00-00 0000-W00 or 0000-W00-0 + T + 00 or 00:00 or 00:00:00 or 00:00:00.000 + +00:00 or +0000 or +00)\n    var extendedIsoRegex =\n            /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n        basicIsoRegex =\n            /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d|))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([+-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?$/,\n        tzRegex = /Z|[+-]\\d\\d(?::?\\d\\d)?/,\n        isoDates = [\n            ['YYYYYY-MM-DD', /[+-]\\d{6}-\\d\\d-\\d\\d/],\n            ['YYYY-MM-DD', /\\d{4}-\\d\\d-\\d\\d/],\n            ['GGGG-[W]WW-E', /\\d{4}-W\\d\\d-\\d/],\n            ['GGGG-[W]WW', /\\d{4}-W\\d\\d/, false],\n            ['YYYY-DDD', /\\d{4}-\\d{3}/],\n            ['YYYY-MM', /\\d{4}-\\d\\d/, false],\n            ['YYYYYYMMDD', /[+-]\\d{10}/],\n            ['YYYYMMDD', /\\d{8}/],\n            ['GGGG[W]WWE', /\\d{4}W\\d{3}/],\n            ['GGGG[W]WW', /\\d{4}W\\d{2}/, false],\n            ['YYYYDDD', /\\d{7}/],\n            ['YYYYMM', /\\d{6}/, false],\n            ['YYYY', /\\d{4}/, false],\n        ],\n        // iso time formats and regexes\n        isoTimes = [\n            ['HH:mm:ss.SSSS', /\\d\\d:\\d\\d:\\d\\d\\.\\d+/],\n            ['HH:mm:ss,SSSS', /\\d\\d:\\d\\d:\\d\\d,\\d+/],\n            ['HH:mm:ss', /\\d\\d:\\d\\d:\\d\\d/],\n            ['HH:mm', /\\d\\d:\\d\\d/],\n            ['HHmmss.SSSS', /\\d\\d\\d\\d\\d\\d\\.\\d+/],\n            ['HHmmss,SSSS', /\\d\\d\\d\\d\\d\\d,\\d+/],\n            ['HHmmss', /\\d\\d\\d\\d\\d\\d/],\n            ['HHmm', /\\d\\d\\d\\d/],\n            ['HH', /\\d\\d/],\n        ],\n        aspNetJsonRegex = /^\\/?Date\\((-?\\d+)/i,\n        // RFC 2822 regex: For details see https://tools.ietf.org/html/rfc2822#section-3.3\n        rfc2822 =\n            /^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\\s)?(\\d{1,2})\\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\\s(\\d{2,4})\\s(\\d\\d):(\\d\\d)(?::(\\d\\d))?\\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\\d{4}))$/,\n        obsOffsets = {\n            UT: 0,\n            GMT: 0,\n            EDT: -4 * 60,\n            EST: -5 * 60,\n            CDT: -5 * 60,\n            CST: -6 * 60,\n            MDT: -6 * 60,\n            MST: -7 * 60,\n            PDT: -7 * 60,\n            PST: -8 * 60,\n        };\n\n    // date from iso format\n    function configFromISO(config) {\n        var i,\n            l,\n            string = config._i,\n            match = extendedIsoRegex.exec(string) || basicIsoRegex.exec(string),\n            allowTime,\n            dateFormat,\n            timeFormat,\n            tzFormat,\n            isoDatesLen = isoDates.length,\n            isoTimesLen = isoTimes.length;\n\n        if (match) {\n            getParsingFlags(config).iso = true;\n            for (i = 0, l = isoDatesLen; i < l; i++) {\n                if (isoDates[i][1].exec(match[1])) {\n                    dateFormat = isoDates[i][0];\n                    allowTime = isoDates[i][2] !== false;\n                    break;\n                }\n            }\n            if (dateFormat == null) {\n                config._isValid = false;\n                return;\n            }\n            if (match[3]) {\n                for (i = 0, l = isoTimesLen; i < l; i++) {\n                    if (isoTimes[i][1].exec(match[3])) {\n                        // match[2] should be 'T' or space\n                        timeFormat = (match[2] || ' ') + isoTimes[i][0];\n                        break;\n                    }\n                }\n                if (timeFormat == null) {\n                    config._isValid = false;\n                    return;\n                }\n            }\n            if (!allowTime && timeFormat != null) {\n                config._isValid = false;\n                return;\n            }\n            if (match[4]) {\n                if (tzRegex.exec(match[4])) {\n                    tzFormat = 'Z';\n                } else {\n                    config._isValid = false;\n                    return;\n                }\n            }\n            config._f = dateFormat + (timeFormat || '') + (tzFormat || '');\n            configFromStringAndFormat(config);\n        } else {\n            config._isValid = false;\n        }\n    }\n\n    function extractFromRFC2822Strings(\n        yearStr,\n        monthStr,\n        dayStr,\n        hourStr,\n        minuteStr,\n        secondStr\n    ) {\n        var result = [\n            untruncateYear(yearStr),\n            defaultLocaleMonthsShort.indexOf(monthStr),\n            parseInt(dayStr, 10),\n            parseInt(hourStr, 10),\n            parseInt(minuteStr, 10),\n        ];\n\n        if (secondStr) {\n            result.push(parseInt(secondStr, 10));\n        }\n\n        return result;\n    }\n\n    function untruncateYear(yearStr) {\n        var year = parseInt(yearStr, 10);\n        if (year <= 49) {\n            return 2000 + year;\n        } else if (year <= 999) {\n            return 1900 + year;\n        }\n        return year;\n    }\n\n    function preprocessRFC2822(s) {\n        // Remove comments and folding whitespace and replace multiple-spaces with a single space\n        return s\n            .replace(/\\([^()]*\\)|[\\n\\t]/g, ' ')\n            .replace(/(\\s\\s+)/g, ' ')\n            .replace(/^\\s\\s*/, '')\n            .replace(/\\s\\s*$/, '');\n    }\n\n    function checkWeekday(weekdayStr, parsedInput, config) {\n        if (weekdayStr) {\n            // TODO: Replace the vanilla JS Date object with an independent day-of-week check.\n            var weekdayProvided = defaultLocaleWeekdaysShort.indexOf(weekdayStr),\n                weekdayActual = new Date(\n                    parsedInput[0],\n                    parsedInput[1],\n                    parsedInput[2]\n                ).getDay();\n            if (weekdayProvided !== weekdayActual) {\n                getParsingFlags(config).weekdayMismatch = true;\n                config._isValid = false;\n                return false;\n            }\n        }\n        return true;\n    }\n\n    function calculateOffset(obsOffset, militaryOffset, numOffset) {\n        if (obsOffset) {\n            return obsOffsets[obsOffset];\n        } else if (militaryOffset) {\n            // the only allowed military tz is Z\n            return 0;\n        } else {\n            var hm = parseInt(numOffset, 10),\n                m = hm % 100,\n                h = (hm - m) / 100;\n            return h * 60 + m;\n        }\n    }\n\n    // date and time from ref 2822 format\n    function configFromRFC2822(config) {\n        var match = rfc2822.exec(preprocessRFC2822(config._i)),\n            parsedArray;\n        if (match) {\n            parsedArray = extractFromRFC2822Strings(\n                match[4],\n                match[3],\n                match[2],\n                match[5],\n                match[6],\n                match[7]\n            );\n            if (!checkWeekday(match[1], parsedArray, config)) {\n                return;\n            }\n\n            config._a = parsedArray;\n            config._tzm = calculateOffset(match[8], match[9], match[10]);\n\n            config._d = createUTCDate.apply(null, config._a);\n            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n\n            getParsingFlags(config).rfc2822 = true;\n        } else {\n            config._isValid = false;\n        }\n    }\n\n    // date from 1) ASP.NET, 2) ISO, 3) RFC 2822 formats, or 4) optional fallback if parsing isn't strict\n    function configFromString(config) {\n        var matched = aspNetJsonRegex.exec(config._i);\n        if (matched !== null) {\n            config._d = new Date(+matched[1]);\n            return;\n        }\n\n        configFromISO(config);\n        if (config._isValid === false) {\n            delete config._isValid;\n        } else {\n            return;\n        }\n\n        configFromRFC2822(config);\n        if (config._isValid === false) {\n            delete config._isValid;\n        } else {\n            return;\n        }\n\n        if (config._strict) {\n            config._isValid = false;\n        } else {\n            // Final attempt, use Input Fallback\n            hooks.createFromInputFallback(config);\n        }\n    }\n\n    hooks.createFromInputFallback = deprecate(\n        'value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), ' +\n            'which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are ' +\n            'discouraged. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.',\n        function (config) {\n            config._d = new Date(config._i + (config._useUTC ? ' UTC' : ''));\n        }\n    );\n\n    // Pick the first defined of two or three arguments.\n    function defaults(a, b, c) {\n        if (a != null) {\n            return a;\n        }\n        if (b != null) {\n            return b;\n        }\n        return c;\n    }\n\n    function currentDateArray(config) {\n        // hooks is actually the exported moment object\n        var nowValue = new Date(hooks.now());\n        if (config._useUTC) {\n            return [\n                nowValue.getUTCFullYear(),\n                nowValue.getUTCMonth(),\n                nowValue.getUTCDate(),\n            ];\n        }\n        return [nowValue.getFullYear(), nowValue.getMonth(), nowValue.getDate()];\n    }\n\n    // convert an array to a date.\n    // the array should mirror the parameters below\n    // note: all values past the year are optional and will default to the lowest possible value.\n    // [year, month, day , hour, minute, second, millisecond]\n    function configFromArray(config) {\n        var i,\n            date,\n            input = [],\n            currentDate,\n            expectedWeekday,\n            yearToUse;\n\n        if (config._d) {\n            return;\n        }\n\n        currentDate = currentDateArray(config);\n\n        //compute day of the year from weeks and weekdays\n        if (config._w && config._a[DATE] == null && config._a[MONTH] == null) {\n            dayOfYearFromWeekInfo(config);\n        }\n\n        //if the day of the year is set, figure out what it is\n        if (config._dayOfYear != null) {\n            yearToUse = defaults(config._a[YEAR], currentDate[YEAR]);\n\n            if (\n                config._dayOfYear > daysInYear(yearToUse) ||\n                config._dayOfYear === 0\n            ) {\n                getParsingFlags(config)._overflowDayOfYear = true;\n            }\n\n            date = createUTCDate(yearToUse, 0, config._dayOfYear);\n            config._a[MONTH] = date.getUTCMonth();\n            config._a[DATE] = date.getUTCDate();\n        }\n\n        // Default to current date.\n        // * if no year, month, day of month are given, default to today\n        // * if day of month is given, default month and year\n        // * if month is given, default only year\n        // * if year is given, don't default anything\n        for (i = 0; i < 3 && config._a[i] == null; ++i) {\n            config._a[i] = input[i] = currentDate[i];\n        }\n\n        // Zero out whatever was not defaulted, including time\n        for (; i < 7; i++) {\n            config._a[i] = input[i] =\n                config._a[i] == null ? (i === 2 ? 1 : 0) : config._a[i];\n        }\n\n        // Check for 24:00:00.000\n        if (\n            config._a[HOUR] === 24 &&\n            config._a[MINUTE] === 0 &&\n            config._a[SECOND] === 0 &&\n            config._a[MILLISECOND] === 0\n        ) {\n            config._nextDay = true;\n            config._a[HOUR] = 0;\n        }\n\n        config._d = (config._useUTC ? createUTCDate : createDate).apply(\n            null,\n            input\n        );\n        expectedWeekday = config._useUTC\n            ? config._d.getUTCDay()\n            : config._d.getDay();\n\n        // Apply timezone offset from input. The actual utcOffset can be changed\n        // with parseZone.\n        if (config._tzm != null) {\n            config._d.setUTCMinutes(config._d.getUTCMinutes() - config._tzm);\n        }\n\n        if (config._nextDay) {\n            config._a[HOUR] = 24;\n        }\n\n        // check for mismatching day of week\n        if (\n            config._w &&\n            typeof config._w.d !== 'undefined' &&\n            config._w.d !== expectedWeekday\n        ) {\n            getParsingFlags(config).weekdayMismatch = true;\n        }\n    }\n\n    function dayOfYearFromWeekInfo(config) {\n        var w, weekYear, week, weekday, dow, doy, temp, weekdayOverflow, curWeek;\n\n        w = config._w;\n        if (w.GG != null || w.W != null || w.E != null) {\n            dow = 1;\n            doy = 4;\n\n            // TODO: We need to take the current isoWeekYear, but that depends on\n            // how we interpret now (local, utc, fixed offset). So create\n            // a now version of current config (take local/utc/offset flags, and\n            // create now).\n            weekYear = defaults(\n                w.GG,\n                config._a[YEAR],\n                weekOfYear(createLocal(), 1, 4).year\n            );\n            week = defaults(w.W, 1);\n            weekday = defaults(w.E, 1);\n            if (weekday < 1 || weekday > 7) {\n                weekdayOverflow = true;\n            }\n        } else {\n            dow = config._locale._week.dow;\n            doy = config._locale._week.doy;\n\n            curWeek = weekOfYear(createLocal(), dow, doy);\n\n            weekYear = defaults(w.gg, config._a[YEAR], curWeek.year);\n\n            // Default to current week.\n            week = defaults(w.w, curWeek.week);\n\n            if (w.d != null) {\n                // weekday -- low day numbers are considered next week\n                weekday = w.d;\n                if (weekday < 0 || weekday > 6) {\n                    weekdayOverflow = true;\n                }\n            } else if (w.e != null) {\n                // local weekday -- counting starts from beginning of week\n                weekday = w.e + dow;\n                if (w.e < 0 || w.e > 6) {\n                    weekdayOverflow = true;\n                }\n            } else {\n                // default to beginning of week\n                weekday = dow;\n            }\n        }\n        if (week < 1 || week > weeksInYear(weekYear, dow, doy)) {\n            getParsingFlags(config)._overflowWeeks = true;\n        } else if (weekdayOverflow != null) {\n            getParsingFlags(config)._overflowWeekday = true;\n        } else {\n            temp = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy);\n            config._a[YEAR] = temp.year;\n            config._dayOfYear = temp.dayOfYear;\n        }\n    }\n\n    // constant that refers to the ISO standard\n    hooks.ISO_8601 = function () {};\n\n    // constant that refers to the RFC 2822 form\n    hooks.RFC_2822 = function () {};\n\n    // date from string and format string\n    function configFromStringAndFormat(config) {\n        // TODO: Move this to another part of the creation flow to prevent circular deps\n        if (config._f === hooks.ISO_8601) {\n            configFromISO(config);\n            return;\n        }\n        if (config._f === hooks.RFC_2822) {\n            configFromRFC2822(config);\n            return;\n        }\n        config._a = [];\n        getParsingFlags(config).empty = true;\n\n        // This array is used to make a Date, either with `new Date` or `Date.UTC`\n        var string = '' + config._i,\n            i,\n            parsedInput,\n            tokens,\n            token,\n            skipped,\n            stringLength = string.length,\n            totalParsedInputLength = 0,\n            era,\n            tokenLen;\n\n        tokens =\n            expandFormat(config._f, config._locale).match(formattingTokens) || [];\n        tokenLen = tokens.length;\n        for (i = 0; i < tokenLen; i++) {\n            token = tokens[i];\n            parsedInput = (string.match(getParseRegexForToken(token, config)) ||\n                [])[0];\n            if (parsedInput) {\n                skipped = string.substr(0, string.indexOf(parsedInput));\n                if (skipped.length > 0) {\n                    getParsingFlags(config).unusedInput.push(skipped);\n                }\n                string = string.slice(\n                    string.indexOf(parsedInput) + parsedInput.length\n                );\n                totalParsedInputLength += parsedInput.length;\n            }\n            // don't parse if it's not a known token\n            if (formatTokenFunctions[token]) {\n                if (parsedInput) {\n                    getParsingFlags(config).empty = false;\n                } else {\n                    getParsingFlags(config).unusedTokens.push(token);\n                }\n                addTimeToArrayFromToken(token, parsedInput, config);\n            } else if (config._strict && !parsedInput) {\n                getParsingFlags(config).unusedTokens.push(token);\n            }\n        }\n\n        // add remaining unparsed input length to the string\n        getParsingFlags(config).charsLeftOver =\n            stringLength - totalParsedInputLength;\n        if (string.length > 0) {\n            getParsingFlags(config).unusedInput.push(string);\n        }\n\n        // clear _12h flag if hour is <= 12\n        if (\n            config._a[HOUR] <= 12 &&\n            getParsingFlags(config).bigHour === true &&\n            config._a[HOUR] > 0\n        ) {\n            getParsingFlags(config).bigHour = undefined;\n        }\n\n        getParsingFlags(config).parsedDateParts = config._a.slice(0);\n        getParsingFlags(config).meridiem = config._meridiem;\n        // handle meridiem\n        config._a[HOUR] = meridiemFixWrap(\n            config._locale,\n            config._a[HOUR],\n            config._meridiem\n        );\n\n        // handle era\n        era = getParsingFlags(config).era;\n        if (era !== null) {\n            config._a[YEAR] = config._locale.erasConvertYear(era, config._a[YEAR]);\n        }\n\n        configFromArray(config);\n        checkOverflow(config);\n    }\n\n    function meridiemFixWrap(locale, hour, meridiem) {\n        var isPm;\n\n        if (meridiem == null) {\n            // nothing to do\n            return hour;\n        }\n        if (locale.meridiemHour != null) {\n            return locale.meridiemHour(hour, meridiem);\n        } else if (locale.isPM != null) {\n            // Fallback\n            isPm = locale.isPM(meridiem);\n            if (isPm && hour < 12) {\n                hour += 12;\n            }\n            if (!isPm && hour === 12) {\n                hour = 0;\n            }\n            return hour;\n        } else {\n            // this is not supposed to happen\n            return hour;\n        }\n    }\n\n    // date from string and array of format strings\n    function configFromStringAndArray(config) {\n        var tempConfig,\n            bestMoment,\n            scoreToBeat,\n            i,\n            currentScore,\n            validFormatFound,\n            bestFormatIsValid = false,\n            configfLen = config._f.length;\n\n        if (configfLen === 0) {\n            getParsingFlags(config).invalidFormat = true;\n            config._d = new Date(NaN);\n            return;\n        }\n\n        for (i = 0; i < configfLen; i++) {\n            currentScore = 0;\n            validFormatFound = false;\n            tempConfig = copyConfig({}, config);\n            if (config._useUTC != null) {\n                tempConfig._useUTC = config._useUTC;\n            }\n            tempConfig._f = config._f[i];\n            configFromStringAndFormat(tempConfig);\n\n            if (isValid(tempConfig)) {\n                validFormatFound = true;\n            }\n\n            // if there is any input that was not parsed add a penalty for that format\n            currentScore += getParsingFlags(tempConfig).charsLeftOver;\n\n            //or tokens\n            currentScore += getParsingFlags(tempConfig).unusedTokens.length * 10;\n\n            getParsingFlags(tempConfig).score = currentScore;\n\n            if (!bestFormatIsValid) {\n                if (\n                    scoreToBeat == null ||\n                    currentScore < scoreToBeat ||\n                    validFormatFound\n                ) {\n                    scoreToBeat = currentScore;\n                    bestMoment = tempConfig;\n                    if (validFormatFound) {\n                        bestFormatIsValid = true;\n                    }\n                }\n            } else {\n                if (currentScore < scoreToBeat) {\n                    scoreToBeat = currentScore;\n                    bestMoment = tempConfig;\n                }\n            }\n        }\n\n        extend(config, bestMoment || tempConfig);\n    }\n\n    function configFromObject(config) {\n        if (config._d) {\n            return;\n        }\n\n        var i = normalizeObjectUnits(config._i),\n            dayOrDate = i.day === undefined ? i.date : i.day;\n        config._a = map(\n            [i.year, i.month, dayOrDate, i.hour, i.minute, i.second, i.millisecond],\n            function (obj) {\n                return obj && parseInt(obj, 10);\n            }\n        );\n\n        configFromArray(config);\n    }\n\n    function createFromConfig(config) {\n        var res = new Moment(checkOverflow(prepareConfig(config)));\n        if (res._nextDay) {\n            // Adding is smart enough around DST\n            res.add(1, 'd');\n            res._nextDay = undefined;\n        }\n\n        return res;\n    }\n\n    function prepareConfig(config) {\n        var input = config._i,\n            format = config._f;\n\n        config._locale = config._locale || getLocale(config._l);\n\n        if (input === null || (format === undefined && input === '')) {\n            return createInvalid({ nullInput: true });\n        }\n\n        if (typeof input === 'string') {\n            config._i = input = config._locale.preparse(input);\n        }\n\n        if (isMoment(input)) {\n            return new Moment(checkOverflow(input));\n        } else if (isDate(input)) {\n            config._d = input;\n        } else if (isArray(format)) {\n            configFromStringAndArray(config);\n        } else if (format) {\n            configFromStringAndFormat(config);\n        } else {\n            configFromInput(config);\n        }\n\n        if (!isValid(config)) {\n            config._d = null;\n        }\n\n        return config;\n    }\n\n    function configFromInput(config) {\n        var input = config._i;\n        if (isUndefined(input)) {\n            config._d = new Date(hooks.now());\n        } else if (isDate(input)) {\n            config._d = new Date(input.valueOf());\n        } else if (typeof input === 'string') {\n            configFromString(config);\n        } else if (isArray(input)) {\n            config._a = map(input.slice(0), function (obj) {\n                return parseInt(obj, 10);\n            });\n            configFromArray(config);\n        } else if (isObject(input)) {\n            configFromObject(config);\n        } else if (isNumber(input)) {\n            // from milliseconds\n            config._d = new Date(input);\n        } else {\n            hooks.createFromInputFallback(config);\n        }\n    }\n\n    function createLocalOrUTC(input, format, locale, strict, isUTC) {\n        var c = {};\n\n        if (format === true || format === false) {\n            strict = format;\n            format = undefined;\n        }\n\n        if (locale === true || locale === false) {\n            strict = locale;\n            locale = undefined;\n        }\n\n        if (\n            (isObject(input) && isObjectEmpty(input)) ||\n            (isArray(input) && input.length === 0)\n        ) {\n            input = undefined;\n        }\n        // object construction must be done this way.\n        // https://github.com/moment/moment/issues/1423\n        c._isAMomentObject = true;\n        c._useUTC = c._isUTC = isUTC;\n        c._l = locale;\n        c._i = input;\n        c._f = format;\n        c._strict = strict;\n\n        return createFromConfig(c);\n    }\n\n    function createLocal(input, format, locale, strict) {\n        return createLocalOrUTC(input, format, locale, strict, false);\n    }\n\n    var prototypeMin = deprecate(\n            'moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/',\n            function () {\n                var other = createLocal.apply(null, arguments);\n                if (this.isValid() && other.isValid()) {\n                    return other < this ? this : other;\n                } else {\n                    return createInvalid();\n                }\n            }\n        ),\n        prototypeMax = deprecate(\n            'moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/',\n            function () {\n                var other = createLocal.apply(null, arguments);\n                if (this.isValid() && other.isValid()) {\n                    return other > this ? this : other;\n                } else {\n                    return createInvalid();\n                }\n            }\n        );\n\n    // Pick a moment m from moments so that m[fn](other) is true for all\n    // other. This relies on the function fn to be transitive.\n    //\n    // moments should either be an array of moment objects or an array, whose\n    // first element is an array of moment objects.\n    function pickBy(fn, moments) {\n        var res, i;\n        if (moments.length === 1 && isArray(moments[0])) {\n            moments = moments[0];\n        }\n        if (!moments.length) {\n            return createLocal();\n        }\n        res = moments[0];\n        for (i = 1; i < moments.length; ++i) {\n            if (!moments[i].isValid() || moments[i][fn](res)) {\n                res = moments[i];\n            }\n        }\n        return res;\n    }\n\n    // TODO: Use [].sort instead?\n    function min() {\n        var args = [].slice.call(arguments, 0);\n\n        return pickBy('isBefore', args);\n    }\n\n    function max() {\n        var args = [].slice.call(arguments, 0);\n\n        return pickBy('isAfter', args);\n    }\n\n    var now = function () {\n        return Date.now ? Date.now() : +new Date();\n    };\n\n    var ordering = [\n        'year',\n        'quarter',\n        'month',\n        'week',\n        'day',\n        'hour',\n        'minute',\n        'second',\n        'millisecond',\n    ];\n\n    function isDurationValid(m) {\n        var key,\n            unitHasDecimal = false,\n            i,\n            orderLen = ordering.length;\n        for (key in m) {\n            if (\n                hasOwnProp(m, key) &&\n                !(\n                    indexOf.call(ordering, key) !== -1 &&\n                    (m[key] == null || !isNaN(m[key]))\n                )\n            ) {\n                return false;\n            }\n        }\n\n        for (i = 0; i < orderLen; ++i) {\n            if (m[ordering[i]]) {\n                if (unitHasDecimal) {\n                    return false; // only allow non-integers for smallest unit\n                }\n                if (parseFloat(m[ordering[i]]) !== toInt(m[ordering[i]])) {\n                    unitHasDecimal = true;\n                }\n            }\n        }\n\n        return true;\n    }\n\n    function isValid$1() {\n        return this._isValid;\n    }\n\n    function createInvalid$1() {\n        return createDuration(NaN);\n    }\n\n    function Duration(duration) {\n        var normalizedInput = normalizeObjectUnits(duration),\n            years = normalizedInput.year || 0,\n            quarters = normalizedInput.quarter || 0,\n            months = normalizedInput.month || 0,\n            weeks = normalizedInput.week || normalizedInput.isoWeek || 0,\n            days = normalizedInput.day || 0,\n            hours = normalizedInput.hour || 0,\n            minutes = normalizedInput.minute || 0,\n            seconds = normalizedInput.second || 0,\n            milliseconds = normalizedInput.millisecond || 0;\n\n        this._isValid = isDurationValid(normalizedInput);\n\n        // representation for dateAddRemove\n        this._milliseconds =\n            +milliseconds +\n            seconds * 1e3 + // 1000\n            minutes * 6e4 + // 1000 * 60\n            hours * 1000 * 60 * 60; //using 1000 * 60 * 60 instead of 36e5 to avoid floating point rounding errors https://github.com/moment/moment/issues/2978\n        // Because of dateAddRemove treats 24 hours as different from a\n        // day when working around DST, we need to store them separately\n        this._days = +days + weeks * 7;\n        // It is impossible to translate months into days without knowing\n        // which months you are are talking about, so we have to store\n        // it separately.\n        this._months = +months + quarters * 3 + years * 12;\n\n        this._data = {};\n\n        this._locale = getLocale();\n\n        this._bubble();\n    }\n\n    function isDuration(obj) {\n        return obj instanceof Duration;\n    }\n\n    function absRound(number) {\n        if (number < 0) {\n            return Math.round(-1 * number) * -1;\n        } else {\n            return Math.round(number);\n        }\n    }\n\n    // compare two arrays, return the number of differences\n    function compareArrays(array1, array2, dontConvert) {\n        var len = Math.min(array1.length, array2.length),\n            lengthDiff = Math.abs(array1.length - array2.length),\n            diffs = 0,\n            i;\n        for (i = 0; i < len; i++) {\n            if (\n                (dontConvert && array1[i] !== array2[i]) ||\n                (!dontConvert && toInt(array1[i]) !== toInt(array2[i]))\n            ) {\n                diffs++;\n            }\n        }\n        return diffs + lengthDiff;\n    }\n\n    // FORMATTING\n\n    function offset(token, separator) {\n        addFormatToken(token, 0, 0, function () {\n            var offset = this.utcOffset(),\n                sign = '+';\n            if (offset < 0) {\n                offset = -offset;\n                sign = '-';\n            }\n            return (\n                sign +\n                zeroFill(~~(offset / 60), 2) +\n                separator +\n                zeroFill(~~offset % 60, 2)\n            );\n        });\n    }\n\n    offset('Z', ':');\n    offset('ZZ', '');\n\n    // PARSING\n\n    addRegexToken('Z', matchShortOffset);\n    addRegexToken('ZZ', matchShortOffset);\n    addParseToken(['Z', 'ZZ'], function (input, array, config) {\n        config._useUTC = true;\n        config._tzm = offsetFromString(matchShortOffset, input);\n    });\n\n    // HELPERS\n\n    // timezone chunker\n    // '+10:00' > ['10',  '00']\n    // '-1530'  > ['-15', '30']\n    var chunkOffset = /([\\+\\-]|\\d\\d)/gi;\n\n    function offsetFromString(matcher, string) {\n        var matches = (string || '').match(matcher),\n            chunk,\n            parts,\n            minutes;\n\n        if (matches === null) {\n            return null;\n        }\n\n        chunk = matches[matches.length - 1] || [];\n        parts = (chunk + '').match(chunkOffset) || ['-', 0, 0];\n        minutes = +(parts[1] * 60) + toInt(parts[2]);\n\n        return minutes === 0 ? 0 : parts[0] === '+' ? minutes : -minutes;\n    }\n\n    // Return a moment from input, that is local/utc/zone equivalent to model.\n    function cloneWithOffset(input, model) {\n        var res, diff;\n        if (model._isUTC) {\n            res = model.clone();\n            diff =\n                (isMoment(input) || isDate(input)\n                    ? input.valueOf()\n                    : createLocal(input).valueOf()) - res.valueOf();\n            // Use low-level api, because this fn is low-level api.\n            res._d.setTime(res._d.valueOf() + diff);\n            hooks.updateOffset(res, false);\n            return res;\n        } else {\n            return createLocal(input).local();\n        }\n    }\n\n    function getDateOffset(m) {\n        // On Firefox.24 Date#getTimezoneOffset returns a floating point.\n        // https://github.com/moment/moment/pull/1871\n        return -Math.round(m._d.getTimezoneOffset());\n    }\n\n    // HOOKS\n\n    // This function will be called whenever a moment is mutated.\n    // It is intended to keep the offset in sync with the timezone.\n    hooks.updateOffset = function () {};\n\n    // MOMENTS\n\n    // keepLocalTime = true means only change the timezone, without\n    // affecting the local hour. So 5:31:26 +0300 --[utcOffset(2, true)]-->\n    // 5:31:26 +0200 It is possible that 5:31:26 doesn't exist with offset\n    // +0200, so we adjust the time as needed, to be valid.\n    //\n    // Keeping the time actually adds/subtracts (one hour)\n    // from the actual represented time. That is why we call updateOffset\n    // a second time. In case it wants us to change the offset again\n    // _changeInProgress == true case, then we have to adjust, because\n    // there is no such time in the given timezone.\n    function getSetOffset(input, keepLocalTime, keepMinutes) {\n        var offset = this._offset || 0,\n            localAdjust;\n        if (!this.isValid()) {\n            return input != null ? this : NaN;\n        }\n        if (input != null) {\n            if (typeof input === 'string') {\n                input = offsetFromString(matchShortOffset, input);\n                if (input === null) {\n                    return this;\n                }\n            } else if (Math.abs(input) < 16 && !keepMinutes) {\n                input = input * 60;\n            }\n            if (!this._isUTC && keepLocalTime) {\n                localAdjust = getDateOffset(this);\n            }\n            this._offset = input;\n            this._isUTC = true;\n            if (localAdjust != null) {\n                this.add(localAdjust, 'm');\n            }\n            if (offset !== input) {\n                if (!keepLocalTime || this._changeInProgress) {\n                    addSubtract(\n                        this,\n                        createDuration(input - offset, 'm'),\n                        1,\n                        false\n                    );\n                } else if (!this._changeInProgress) {\n                    this._changeInProgress = true;\n                    hooks.updateOffset(this, true);\n                    this._changeInProgress = null;\n                }\n            }\n            return this;\n        } else {\n            return this._isUTC ? offset : getDateOffset(this);\n        }\n    }\n\n    function getSetZone(input, keepLocalTime) {\n        if (input != null) {\n            if (typeof input !== 'string') {\n                input = -input;\n            }\n\n            this.utcOffset(input, keepLocalTime);\n\n            return this;\n        } else {\n            return -this.utcOffset();\n        }\n    }\n\n    function setOffsetToUTC(keepLocalTime) {\n        return this.utcOffset(0, keepLocalTime);\n    }\n\n    function setOffsetToLocal(keepLocalTime) {\n        if (this._isUTC) {\n            this.utcOffset(0, keepLocalTime);\n            this._isUTC = false;\n\n            if (keepLocalTime) {\n                this.subtract(getDateOffset(this), 'm');\n            }\n        }\n        return this;\n    }\n\n    function setOffsetToParsedOffset() {\n        if (this._tzm != null) {\n            this.utcOffset(this._tzm, false, true);\n        } else if (typeof this._i === 'string') {\n            var tZone = offsetFromString(matchOffset, this._i);\n            if (tZone != null) {\n                this.utcOffset(tZone);\n            } else {\n                this.utcOffset(0, true);\n            }\n        }\n        return this;\n    }\n\n    function hasAlignedHourOffset(input) {\n        if (!this.isValid()) {\n            return false;\n        }\n        input = input ? createLocal(input).utcOffset() : 0;\n\n        return (this.utcOffset() - input) % 60 === 0;\n    }\n\n    function isDaylightSavingTime() {\n        return (\n            this.utcOffset() > this.clone().month(0).utcOffset() ||\n            this.utcOffset() > this.clone().month(5).utcOffset()\n        );\n    }\n\n    function isDaylightSavingTimeShifted() {\n        if (!isUndefined(this._isDSTShifted)) {\n            return this._isDSTShifted;\n        }\n\n        var c = {},\n            other;\n\n        copyConfig(c, this);\n        c = prepareConfig(c);\n\n        if (c._a) {\n            other = c._isUTC ? createUTC(c._a) : createLocal(c._a);\n            this._isDSTShifted =\n                this.isValid() && compareArrays(c._a, other.toArray()) > 0;\n        } else {\n            this._isDSTShifted = false;\n        }\n\n        return this._isDSTShifted;\n    }\n\n    function isLocal() {\n        return this.isValid() ? !this._isUTC : false;\n    }\n\n    function isUtcOffset() {\n        return this.isValid() ? this._isUTC : false;\n    }\n\n    function isUtc() {\n        return this.isValid() ? this._isUTC && this._offset === 0 : false;\n    }\n\n    // ASP.NET json date format regex\n    var aspNetRegex = /^(-|\\+)?(?:(\\d*)[. ])?(\\d+):(\\d+)(?::(\\d+)(\\.\\d*)?)?$/,\n        // from http://docs.closure-library.googlecode.com/git/closure_goog_date_date.js.source.html\n        // somewhat more in line with 4.4.3.2 2004 spec, but allows decimal anywhere\n        // and further modified to allow for strings containing both week and day\n        isoRegex =\n            /^(-|\\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;\n\n    function createDuration(input, key) {\n        var duration = input,\n            // matching against regexp is expensive, do it on demand\n            match = null,\n            sign,\n            ret,\n            diffRes;\n\n        if (isDuration(input)) {\n            duration = {\n                ms: input._milliseconds,\n                d: input._days,\n                M: input._months,\n            };\n        } else if (isNumber(input) || !isNaN(+input)) {\n            duration = {};\n            if (key) {\n                duration[key] = +input;\n            } else {\n                duration.milliseconds = +input;\n            }\n        } else if ((match = aspNetRegex.exec(input))) {\n            sign = match[1] === '-' ? -1 : 1;\n            duration = {\n                y: 0,\n                d: toInt(match[DATE]) * sign,\n                h: toInt(match[HOUR]) * sign,\n                m: toInt(match[MINUTE]) * sign,\n                s: toInt(match[SECOND]) * sign,\n                ms: toInt(absRound(match[MILLISECOND] * 1000)) * sign, // the millisecond decimal point is included in the match\n            };\n        } else if ((match = isoRegex.exec(input))) {\n            sign = match[1] === '-' ? -1 : 1;\n            duration = {\n                y: parseIso(match[2], sign),\n                M: parseIso(match[3], sign),\n                w: parseIso(match[4], sign),\n                d: parseIso(match[5], sign),\n                h: parseIso(match[6], sign),\n                m: parseIso(match[7], sign),\n                s: parseIso(match[8], sign),\n            };\n        } else if (duration == null) {\n            // checks for null or undefined\n            duration = {};\n        } else if (\n            typeof duration === 'object' &&\n            ('from' in duration || 'to' in duration)\n        ) {\n            diffRes = momentsDifference(\n                createLocal(duration.from),\n                createLocal(duration.to)\n            );\n\n            duration = {};\n            duration.ms = diffRes.milliseconds;\n            duration.M = diffRes.months;\n        }\n\n        ret = new Duration(duration);\n\n        if (isDuration(input) && hasOwnProp(input, '_locale')) {\n            ret._locale = input._locale;\n        }\n\n        if (isDuration(input) && hasOwnProp(input, '_isValid')) {\n            ret._isValid = input._isValid;\n        }\n\n        return ret;\n    }\n\n    createDuration.fn = Duration.prototype;\n    createDuration.invalid = createInvalid$1;\n\n    function parseIso(inp, sign) {\n        // We'd normally use ~~inp for this, but unfortunately it also\n        // converts floats to ints.\n        // inp may be undefined, so careful calling replace on it.\n        var res = inp && parseFloat(inp.replace(',', '.'));\n        // apply sign while we're at it\n        return (isNaN(res) ? 0 : res) * sign;\n    }\n\n    function positiveMomentsDifference(base, other) {\n        var res = {};\n\n        res.months =\n            other.month() - base.month() + (other.year() - base.year()) * 12;\n        if (base.clone().add(res.months, 'M').isAfter(other)) {\n            --res.months;\n        }\n\n        res.milliseconds = +other - +base.clone().add(res.months, 'M');\n\n        return res;\n    }\n\n    function momentsDifference(base, other) {\n        var res;\n        if (!(base.isValid() && other.isValid())) {\n            return { milliseconds: 0, months: 0 };\n        }\n\n        other = cloneWithOffset(other, base);\n        if (base.isBefore(other)) {\n            res = positiveMomentsDifference(base, other);\n        } else {\n            res = positiveMomentsDifference(other, base);\n            res.milliseconds = -res.milliseconds;\n            res.months = -res.months;\n        }\n\n        return res;\n    }\n\n    // TODO: remove 'name' arg after deprecation is removed\n    function createAdder(direction, name) {\n        return function (val, period) {\n            var dur, tmp;\n            //invert the arguments, but complain about it\n            if (period !== null && !isNaN(+period)) {\n                deprecateSimple(\n                    name,\n                    'moment().' +\n                        name +\n                        '(period, number) is deprecated. Please use moment().' +\n                        name +\n                        '(number, period). ' +\n                        'See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info.'\n                );\n                tmp = val;\n                val = period;\n                period = tmp;\n            }\n\n            dur = createDuration(val, period);\n            addSubtract(this, dur, direction);\n            return this;\n        };\n    }\n\n    function addSubtract(mom, duration, isAdding, updateOffset) {\n        var milliseconds = duration._milliseconds,\n            days = absRound(duration._days),\n            months = absRound(duration._months);\n\n        if (!mom.isValid()) {\n            // No op\n            return;\n        }\n\n        updateOffset = updateOffset == null ? true : updateOffset;\n\n        if (months) {\n            setMonth(mom, get(mom, 'Month') + months * isAdding);\n        }\n        if (days) {\n            set$1(mom, 'Date', get(mom, 'Date') + days * isAdding);\n        }\n        if (milliseconds) {\n            mom._d.setTime(mom._d.valueOf() + milliseconds * isAdding);\n        }\n        if (updateOffset) {\n            hooks.updateOffset(mom, days || months);\n        }\n    }\n\n    var add = createAdder(1, 'add'),\n        subtract = createAdder(-1, 'subtract');\n\n    function isString(input) {\n        return typeof input === 'string' || input instanceof String;\n    }\n\n    // type MomentInput = Moment | Date | string | number | (number | string)[] | MomentInputObject | void; // null | undefined\n    function isMomentInput(input) {\n        return (\n            isMoment(input) ||\n            isDate(input) ||\n            isString(input) ||\n            isNumber(input) ||\n            isNumberOrStringArray(input) ||\n            isMomentInputObject(input) ||\n            input === null ||\n            input === undefined\n        );\n    }\n\n    function isMomentInputObject(input) {\n        var objectTest = isObject(input) && !isObjectEmpty(input),\n            propertyTest = false,\n            properties = [\n                'years',\n                'year',\n                'y',\n                'months',\n                'month',\n                'M',\n                'days',\n                'day',\n                'd',\n                'dates',\n                'date',\n                'D',\n                'hours',\n                'hour',\n                'h',\n                'minutes',\n                'minute',\n                'm',\n                'seconds',\n                'second',\n                's',\n                'milliseconds',\n                'millisecond',\n                'ms',\n            ],\n            i,\n            property,\n            propertyLen = properties.length;\n\n        for (i = 0; i < propertyLen; i += 1) {\n            property = properties[i];\n            propertyTest = propertyTest || hasOwnProp(input, property);\n        }\n\n        return objectTest && propertyTest;\n    }\n\n    function isNumberOrStringArray(input) {\n        var arrayTest = isArray(input),\n            dataTypeTest = false;\n        if (arrayTest) {\n            dataTypeTest =\n                input.filter(function (item) {\n                    return !isNumber(item) && isString(input);\n                }).length === 0;\n        }\n        return arrayTest && dataTypeTest;\n    }\n\n    function isCalendarSpec(input) {\n        var objectTest = isObject(input) && !isObjectEmpty(input),\n            propertyTest = false,\n            properties = [\n                'sameDay',\n                'nextDay',\n                'lastDay',\n                'nextWeek',\n                'lastWeek',\n                'sameElse',\n            ],\n            i,\n            property;\n\n        for (i = 0; i < properties.length; i += 1) {\n            property = properties[i];\n            propertyTest = propertyTest || hasOwnProp(input, property);\n        }\n\n        return objectTest && propertyTest;\n    }\n\n    function getCalendarFormat(myMoment, now) {\n        var diff = myMoment.diff(now, 'days', true);\n        return diff < -6\n            ? 'sameElse'\n            : diff < -1\n            ? 'lastWeek'\n            : diff < 0\n            ? 'lastDay'\n            : diff < 1\n            ? 'sameDay'\n            : diff < 2\n            ? 'nextDay'\n            : diff < 7\n            ? 'nextWeek'\n            : 'sameElse';\n    }\n\n    function calendar$1(time, formats) {\n        // Support for single parameter, formats only overload to the calendar function\n        if (arguments.length === 1) {\n            if (!arguments[0]) {\n                time = undefined;\n                formats = undefined;\n            } else if (isMomentInput(arguments[0])) {\n                time = arguments[0];\n                formats = undefined;\n            } else if (isCalendarSpec(arguments[0])) {\n                formats = arguments[0];\n                time = undefined;\n            }\n        }\n        // We want to compare the start of today, vs this.\n        // Getting start-of-today depends on whether we're local/utc/offset or not.\n        var now = time || createLocal(),\n            sod = cloneWithOffset(now, this).startOf('day'),\n            format = hooks.calendarFormat(this, sod) || 'sameElse',\n            output =\n                formats &&\n                (isFunction(formats[format])\n                    ? formats[format].call(this, now)\n                    : formats[format]);\n\n        return this.format(\n            output || this.localeData().calendar(format, this, createLocal(now))\n        );\n    }\n\n    function clone() {\n        return new Moment(this);\n    }\n\n    function isAfter(input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input);\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() > localInput.valueOf();\n        } else {\n            return localInput.valueOf() < this.clone().startOf(units).valueOf();\n        }\n    }\n\n    function isBefore(input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input);\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() < localInput.valueOf();\n        } else {\n            return this.clone().endOf(units).valueOf() < localInput.valueOf();\n        }\n    }\n\n    function isBetween(from, to, units, inclusivity) {\n        var localFrom = isMoment(from) ? from : createLocal(from),\n            localTo = isMoment(to) ? to : createLocal(to);\n        if (!(this.isValid() && localFrom.isValid() && localTo.isValid())) {\n            return false;\n        }\n        inclusivity = inclusivity || '()';\n        return (\n            (inclusivity[0] === '('\n                ? this.isAfter(localFrom, units)\n                : !this.isBefore(localFrom, units)) &&\n            (inclusivity[1] === ')'\n                ? this.isBefore(localTo, units)\n                : !this.isAfter(localTo, units))\n        );\n    }\n\n    function isSame(input, units) {\n        var localInput = isMoment(input) ? input : createLocal(input),\n            inputMs;\n        if (!(this.isValid() && localInput.isValid())) {\n            return false;\n        }\n        units = normalizeUnits(units) || 'millisecond';\n        if (units === 'millisecond') {\n            return this.valueOf() === localInput.valueOf();\n        } else {\n            inputMs = localInput.valueOf();\n            return (\n                this.clone().startOf(units).valueOf() <= inputMs &&\n                inputMs <= this.clone().endOf(units).valueOf()\n            );\n        }\n    }\n\n    function isSameOrAfter(input, units) {\n        return this.isSame(input, units) || this.isAfter(input, units);\n    }\n\n    function isSameOrBefore(input, units) {\n        return this.isSame(input, units) || this.isBefore(input, units);\n    }\n\n    function diff(input, units, asFloat) {\n        var that, zoneDelta, output;\n\n        if (!this.isValid()) {\n            return NaN;\n        }\n\n        that = cloneWithOffset(input, this);\n\n        if (!that.isValid()) {\n            return NaN;\n        }\n\n        zoneDelta = (that.utcOffset() - this.utcOffset()) * 6e4;\n\n        units = normalizeUnits(units);\n\n        switch (units) {\n            case 'year':\n                output = monthDiff(this, that) / 12;\n                break;\n            case 'month':\n                output = monthDiff(this, that);\n                break;\n            case 'quarter':\n                output = monthDiff(this, that) / 3;\n                break;\n            case 'second':\n                output = (this - that) / 1e3;\n                break; // 1000\n            case 'minute':\n                output = (this - that) / 6e4;\n                break; // 1000 * 60\n            case 'hour':\n                output = (this - that) / 36e5;\n                break; // 1000 * 60 * 60\n            case 'day':\n                output = (this - that - zoneDelta) / 864e5;\n                break; // 1000 * 60 * 60 * 24, negate dst\n            case 'week':\n                output = (this - that - zoneDelta) / 6048e5;\n                break; // 1000 * 60 * 60 * 24 * 7, negate dst\n            default:\n                output = this - that;\n        }\n\n        return asFloat ? output : absFloor(output);\n    }\n\n    function monthDiff(a, b) {\n        if (a.date() < b.date()) {\n            // end-of-month calculations work correct when the start month has more\n            // days than the end month.\n            return -monthDiff(b, a);\n        }\n        // difference in months\n        var wholeMonthDiff = (b.year() - a.year()) * 12 + (b.month() - a.month()),\n            // b is in (anchor - 1 month, anchor + 1 month)\n            anchor = a.clone().add(wholeMonthDiff, 'months'),\n            anchor2,\n            adjust;\n\n        if (b - anchor < 0) {\n            anchor2 = a.clone().add(wholeMonthDiff - 1, 'months');\n            // linear across the month\n            adjust = (b - anchor) / (anchor - anchor2);\n        } else {\n            anchor2 = a.clone().add(wholeMonthDiff + 1, 'months');\n            // linear across the month\n            adjust = (b - anchor) / (anchor2 - anchor);\n        }\n\n        //check for negative zero, return zero if negative zero\n        return -(wholeMonthDiff + adjust) || 0;\n    }\n\n    hooks.defaultFormat = 'YYYY-MM-DDTHH:mm:ssZ';\n    hooks.defaultFormatUtc = 'YYYY-MM-DDTHH:mm:ss[Z]';\n\n    function toString() {\n        return this.clone().locale('en').format('ddd MMM DD YYYY HH:mm:ss [GMT]ZZ');\n    }\n\n    function toISOString(keepOffset) {\n        if (!this.isValid()) {\n            return null;\n        }\n        var utc = keepOffset !== true,\n            m = utc ? this.clone().utc() : this;\n        if (m.year() < 0 || m.year() > 9999) {\n            return formatMoment(\n                m,\n                utc\n                    ? 'YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]'\n                    : 'YYYYYY-MM-DD[T]HH:mm:ss.SSSZ'\n            );\n        }\n        if (isFunction(Date.prototype.toISOString)) {\n            // native implementation is ~50x faster, use it when we can\n            if (utc) {\n                return this.toDate().toISOString();\n            } else {\n                return new Date(this.valueOf() + this.utcOffset() * 60 * 1000)\n                    .toISOString()\n                    .replace('Z', formatMoment(m, 'Z'));\n            }\n        }\n        return formatMoment(\n            m,\n            utc ? 'YYYY-MM-DD[T]HH:mm:ss.SSS[Z]' : 'YYYY-MM-DD[T]HH:mm:ss.SSSZ'\n        );\n    }\n\n    /**\n     * Return a human readable representation of a moment that can\n     * also be evaluated to get a new moment which is the same\n     *\n     * @link https://nodejs.org/dist/latest/docs/api/util.html#util_custom_inspect_function_on_objects\n     */\n    function inspect() {\n        if (!this.isValid()) {\n            return 'moment.invalid(/* ' + this._i + ' */)';\n        }\n        var func = 'moment',\n            zone = '',\n            prefix,\n            year,\n            datetime,\n            suffix;\n        if (!this.isLocal()) {\n            func = this.utcOffset() === 0 ? 'moment.utc' : 'moment.parseZone';\n            zone = 'Z';\n        }\n        prefix = '[' + func + '(\"]';\n        year = 0 <= this.year() && this.year() <= 9999 ? 'YYYY' : 'YYYYYY';\n        datetime = '-MM-DD[T]HH:mm:ss.SSS';\n        suffix = zone + '[\")]';\n\n        return this.format(prefix + year + datetime + suffix);\n    }\n\n    function format(inputString) {\n        if (!inputString) {\n            inputString = this.isUtc()\n                ? hooks.defaultFormatUtc\n                : hooks.defaultFormat;\n        }\n        var output = formatMoment(this, inputString);\n        return this.localeData().postformat(output);\n    }\n\n    function from(time, withoutSuffix) {\n        if (\n            this.isValid() &&\n            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n        ) {\n            return createDuration({ to: this, from: time })\n                .locale(this.locale())\n                .humanize(!withoutSuffix);\n        } else {\n            return this.localeData().invalidDate();\n        }\n    }\n\n    function fromNow(withoutSuffix) {\n        return this.from(createLocal(), withoutSuffix);\n    }\n\n    function to(time, withoutSuffix) {\n        if (\n            this.isValid() &&\n            ((isMoment(time) && time.isValid()) || createLocal(time).isValid())\n        ) {\n            return createDuration({ from: this, to: time })\n                .locale(this.locale())\n                .humanize(!withoutSuffix);\n        } else {\n            return this.localeData().invalidDate();\n        }\n    }\n\n    function toNow(withoutSuffix) {\n        return this.to(createLocal(), withoutSuffix);\n    }\n\n    // If passed a locale key, it will set the locale for this\n    // instance.  Otherwise, it will return the locale configuration\n    // variables for this instance.\n    function locale(key) {\n        var newLocaleData;\n\n        if (key === undefined) {\n            return this._locale._abbr;\n        } else {\n            newLocaleData = getLocale(key);\n            if (newLocaleData != null) {\n                this._locale = newLocaleData;\n            }\n            return this;\n        }\n    }\n\n    var lang = deprecate(\n        'moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.',\n        function (key) {\n            if (key === undefined) {\n                return this.localeData();\n            } else {\n                return this.locale(key);\n            }\n        }\n    );\n\n    function localeData() {\n        return this._locale;\n    }\n\n    var MS_PER_SECOND = 1000,\n        MS_PER_MINUTE = 60 * MS_PER_SECOND,\n        MS_PER_HOUR = 60 * MS_PER_MINUTE,\n        MS_PER_400_YEARS = (365 * 400 + 97) * 24 * MS_PER_HOUR;\n\n    // actual modulo - handles negative numbers (for dates before 1970):\n    function mod$1(dividend, divisor) {\n        return ((dividend % divisor) + divisor) % divisor;\n    }\n\n    function localStartOfDate(y, m, d) {\n        // the date constructor remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            return new Date(y + 400, m, d) - MS_PER_400_YEARS;\n        } else {\n            return new Date(y, m, d).valueOf();\n        }\n    }\n\n    function utcStartOfDate(y, m, d) {\n        // Date.UTC remaps years 0-99 to 1900-1999\n        if (y < 100 && y >= 0) {\n            // preserve leap years using a full 400 year cycle, then reset\n            return Date.UTC(y + 400, m, d) - MS_PER_400_YEARS;\n        } else {\n            return Date.UTC(y, m, d);\n        }\n    }\n\n    function startOf(units) {\n        var time, startOfDate;\n        units = normalizeUnits(units);\n        if (units === undefined || units === 'millisecond' || !this.isValid()) {\n            return this;\n        }\n\n        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n        switch (units) {\n            case 'year':\n                time = startOfDate(this.year(), 0, 1);\n                break;\n            case 'quarter':\n                time = startOfDate(\n                    this.year(),\n                    this.month() - (this.month() % 3),\n                    1\n                );\n                break;\n            case 'month':\n                time = startOfDate(this.year(), this.month(), 1);\n                break;\n            case 'week':\n                time = startOfDate(\n                    this.year(),\n                    this.month(),\n                    this.date() - this.weekday()\n                );\n                break;\n            case 'isoWeek':\n                time = startOfDate(\n                    this.year(),\n                    this.month(),\n                    this.date() - (this.isoWeekday() - 1)\n                );\n                break;\n            case 'day':\n            case 'date':\n                time = startOfDate(this.year(), this.month(), this.date());\n                break;\n            case 'hour':\n                time = this._d.valueOf();\n                time -= mod$1(\n                    time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n                    MS_PER_HOUR\n                );\n                break;\n            case 'minute':\n                time = this._d.valueOf();\n                time -= mod$1(time, MS_PER_MINUTE);\n                break;\n            case 'second':\n                time = this._d.valueOf();\n                time -= mod$1(time, MS_PER_SECOND);\n                break;\n        }\n\n        this._d.setTime(time);\n        hooks.updateOffset(this, true);\n        return this;\n    }\n\n    function endOf(units) {\n        var time, startOfDate;\n        units = normalizeUnits(units);\n        if (units === undefined || units === 'millisecond' || !this.isValid()) {\n            return this;\n        }\n\n        startOfDate = this._isUTC ? utcStartOfDate : localStartOfDate;\n\n        switch (units) {\n            case 'year':\n                time = startOfDate(this.year() + 1, 0, 1) - 1;\n                break;\n            case 'quarter':\n                time =\n                    startOfDate(\n                        this.year(),\n                        this.month() - (this.month() % 3) + 3,\n                        1\n                    ) - 1;\n                break;\n            case 'month':\n                time = startOfDate(this.year(), this.month() + 1, 1) - 1;\n                break;\n            case 'week':\n                time =\n                    startOfDate(\n                        this.year(),\n                        this.month(),\n                        this.date() - this.weekday() + 7\n                    ) - 1;\n                break;\n            case 'isoWeek':\n                time =\n                    startOfDate(\n                        this.year(),\n                        this.month(),\n                        this.date() - (this.isoWeekday() - 1) + 7\n                    ) - 1;\n                break;\n            case 'day':\n            case 'date':\n                time = startOfDate(this.year(), this.month(), this.date() + 1) - 1;\n                break;\n            case 'hour':\n                time = this._d.valueOf();\n                time +=\n                    MS_PER_HOUR -\n                    mod$1(\n                        time + (this._isUTC ? 0 : this.utcOffset() * MS_PER_MINUTE),\n                        MS_PER_HOUR\n                    ) -\n                    1;\n                break;\n            case 'minute':\n                time = this._d.valueOf();\n                time += MS_PER_MINUTE - mod$1(time, MS_PER_MINUTE) - 1;\n                break;\n            case 'second':\n                time = this._d.valueOf();\n                time += MS_PER_SECOND - mod$1(time, MS_PER_SECOND) - 1;\n                break;\n        }\n\n        this._d.setTime(time);\n        hooks.updateOffset(this, true);\n        return this;\n    }\n\n    function valueOf() {\n        return this._d.valueOf() - (this._offset || 0) * 60000;\n    }\n\n    function unix() {\n        return Math.floor(this.valueOf() / 1000);\n    }\n\n    function toDate() {\n        return new Date(this.valueOf());\n    }\n\n    function toArray() {\n        var m = this;\n        return [\n            m.year(),\n            m.month(),\n            m.date(),\n            m.hour(),\n            m.minute(),\n            m.second(),\n            m.millisecond(),\n        ];\n    }\n\n    function toObject() {\n        var m = this;\n        return {\n            years: m.year(),\n            months: m.month(),\n            date: m.date(),\n            hours: m.hours(),\n            minutes: m.minutes(),\n            seconds: m.seconds(),\n            milliseconds: m.milliseconds(),\n        };\n    }\n\n    function toJSON() {\n        // new Date(NaN).toJSON() === null\n        return this.isValid() ? this.toISOString() : null;\n    }\n\n    function isValid$2() {\n        return isValid(this);\n    }\n\n    function parsingFlags() {\n        return extend({}, getParsingFlags(this));\n    }\n\n    function invalidAt() {\n        return getParsingFlags(this).overflow;\n    }\n\n    function creationData() {\n        return {\n            input: this._i,\n            format: this._f,\n            locale: this._locale,\n            isUTC: this._isUTC,\n            strict: this._strict,\n        };\n    }\n\n    addFormatToken('N', 0, 0, 'eraAbbr');\n    addFormatToken('NN', 0, 0, 'eraAbbr');\n    addFormatToken('NNN', 0, 0, 'eraAbbr');\n    addFormatToken('NNNN', 0, 0, 'eraName');\n    addFormatToken('NNNNN', 0, 0, 'eraNarrow');\n\n    addFormatToken('y', ['y', 1], 'yo', 'eraYear');\n    addFormatToken('y', ['yy', 2], 0, 'eraYear');\n    addFormatToken('y', ['yyy', 3], 0, 'eraYear');\n    addFormatToken('y', ['yyyy', 4], 0, 'eraYear');\n\n    addRegexToken('N', matchEraAbbr);\n    addRegexToken('NN', matchEraAbbr);\n    addRegexToken('NNN', matchEraAbbr);\n    addRegexToken('NNNN', matchEraName);\n    addRegexToken('NNNNN', matchEraNarrow);\n\n    addParseToken(\n        ['N', 'NN', 'NNN', 'NNNN', 'NNNNN'],\n        function (input, array, config, token) {\n            var era = config._locale.erasParse(input, token, config._strict);\n            if (era) {\n                getParsingFlags(config).era = era;\n            } else {\n                getParsingFlags(config).invalidEra = input;\n            }\n        }\n    );\n\n    addRegexToken('y', matchUnsigned);\n    addRegexToken('yy', matchUnsigned);\n    addRegexToken('yyy', matchUnsigned);\n    addRegexToken('yyyy', matchUnsigned);\n    addRegexToken('yo', matchEraYearOrdinal);\n\n    addParseToken(['y', 'yy', 'yyy', 'yyyy'], YEAR);\n    addParseToken(['yo'], function (input, array, config, token) {\n        var match;\n        if (config._locale._eraYearOrdinalRegex) {\n            match = input.match(config._locale._eraYearOrdinalRegex);\n        }\n\n        if (config._locale.eraYearOrdinalParse) {\n            array[YEAR] = config._locale.eraYearOrdinalParse(input, match);\n        } else {\n            array[YEAR] = parseInt(input, 10);\n        }\n    });\n\n    function localeEras(m, format) {\n        var i,\n            l,\n            date,\n            eras = this._eras || getLocale('en')._eras;\n        for (i = 0, l = eras.length; i < l; ++i) {\n            switch (typeof eras[i].since) {\n                case 'string':\n                    // truncate time\n                    date = hooks(eras[i].since).startOf('day');\n                    eras[i].since = date.valueOf();\n                    break;\n            }\n\n            switch (typeof eras[i].until) {\n                case 'undefined':\n                    eras[i].until = +Infinity;\n                    break;\n                case 'string':\n                    // truncate time\n                    date = hooks(eras[i].until).startOf('day').valueOf();\n                    eras[i].until = date.valueOf();\n                    break;\n            }\n        }\n        return eras;\n    }\n\n    function localeErasParse(eraName, format, strict) {\n        var i,\n            l,\n            eras = this.eras(),\n            name,\n            abbr,\n            narrow;\n        eraName = eraName.toUpperCase();\n\n        for (i = 0, l = eras.length; i < l; ++i) {\n            name = eras[i].name.toUpperCase();\n            abbr = eras[i].abbr.toUpperCase();\n            narrow = eras[i].narrow.toUpperCase();\n\n            if (strict) {\n                switch (format) {\n                    case 'N':\n                    case 'NN':\n                    case 'NNN':\n                        if (abbr === eraName) {\n                            return eras[i];\n                        }\n                        break;\n\n                    case 'NNNN':\n                        if (name === eraName) {\n                            return eras[i];\n                        }\n                        break;\n\n                    case 'NNNNN':\n                        if (narrow === eraName) {\n                            return eras[i];\n                        }\n                        break;\n                }\n            } else if ([name, abbr, narrow].indexOf(eraName) >= 0) {\n                return eras[i];\n            }\n        }\n    }\n\n    function localeErasConvertYear(era, year) {\n        var dir = era.since <= era.until ? +1 : -1;\n        if (year === undefined) {\n            return hooks(era.since).year();\n        } else {\n            return hooks(era.since).year() + (year - era.offset) * dir;\n        }\n    }\n\n    function getEraName() {\n        var i,\n            l,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (eras[i].since <= val && val <= eras[i].until) {\n                return eras[i].name;\n            }\n            if (eras[i].until <= val && val <= eras[i].since) {\n                return eras[i].name;\n            }\n        }\n\n        return '';\n    }\n\n    function getEraNarrow() {\n        var i,\n            l,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (eras[i].since <= val && val <= eras[i].until) {\n                return eras[i].narrow;\n            }\n            if (eras[i].until <= val && val <= eras[i].since) {\n                return eras[i].narrow;\n            }\n        }\n\n        return '';\n    }\n\n    function getEraAbbr() {\n        var i,\n            l,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (eras[i].since <= val && val <= eras[i].until) {\n                return eras[i].abbr;\n            }\n            if (eras[i].until <= val && val <= eras[i].since) {\n                return eras[i].abbr;\n            }\n        }\n\n        return '';\n    }\n\n    function getEraYear() {\n        var i,\n            l,\n            dir,\n            val,\n            eras = this.localeData().eras();\n        for (i = 0, l = eras.length; i < l; ++i) {\n            dir = eras[i].since <= eras[i].until ? +1 : -1;\n\n            // truncate time\n            val = this.clone().startOf('day').valueOf();\n\n            if (\n                (eras[i].since <= val && val <= eras[i].until) ||\n                (eras[i].until <= val && val <= eras[i].since)\n            ) {\n                return (\n                    (this.year() - hooks(eras[i].since).year()) * dir +\n                    eras[i].offset\n                );\n            }\n        }\n\n        return this.year();\n    }\n\n    function erasNameRegex(isStrict) {\n        if (!hasOwnProp(this, '_erasNameRegex')) {\n            computeErasParse.call(this);\n        }\n        return isStrict ? this._erasNameRegex : this._erasRegex;\n    }\n\n    function erasAbbrRegex(isStrict) {\n        if (!hasOwnProp(this, '_erasAbbrRegex')) {\n            computeErasParse.call(this);\n        }\n        return isStrict ? this._erasAbbrRegex : this._erasRegex;\n    }\n\n    function erasNarrowRegex(isStrict) {\n        if (!hasOwnProp(this, '_erasNarrowRegex')) {\n            computeErasParse.call(this);\n        }\n        return isStrict ? this._erasNarrowRegex : this._erasRegex;\n    }\n\n    function matchEraAbbr(isStrict, locale) {\n        return locale.erasAbbrRegex(isStrict);\n    }\n\n    function matchEraName(isStrict, locale) {\n        return locale.erasNameRegex(isStrict);\n    }\n\n    function matchEraNarrow(isStrict, locale) {\n        return locale.erasNarrowRegex(isStrict);\n    }\n\n    function matchEraYearOrdinal(isStrict, locale) {\n        return locale._eraYearOrdinalRegex || matchUnsigned;\n    }\n\n    function computeErasParse() {\n        var abbrPieces = [],\n            namePieces = [],\n            narrowPieces = [],\n            mixedPieces = [],\n            i,\n            l,\n            eras = this.eras();\n\n        for (i = 0, l = eras.length; i < l; ++i) {\n            namePieces.push(regexEscape(eras[i].name));\n            abbrPieces.push(regexEscape(eras[i].abbr));\n            narrowPieces.push(regexEscape(eras[i].narrow));\n\n            mixedPieces.push(regexEscape(eras[i].name));\n            mixedPieces.push(regexEscape(eras[i].abbr));\n            mixedPieces.push(regexEscape(eras[i].narrow));\n        }\n\n        this._erasRegex = new RegExp('^(' + mixedPieces.join('|') + ')', 'i');\n        this._erasNameRegex = new RegExp('^(' + namePieces.join('|') + ')', 'i');\n        this._erasAbbrRegex = new RegExp('^(' + abbrPieces.join('|') + ')', 'i');\n        this._erasNarrowRegex = new RegExp(\n            '^(' + narrowPieces.join('|') + ')',\n            'i'\n        );\n    }\n\n    // FORMATTING\n\n    addFormatToken(0, ['gg', 2], 0, function () {\n        return this.weekYear() % 100;\n    });\n\n    addFormatToken(0, ['GG', 2], 0, function () {\n        return this.isoWeekYear() % 100;\n    });\n\n    function addWeekYearFormatToken(token, getter) {\n        addFormatToken(0, [token, token.length], 0, getter);\n    }\n\n    addWeekYearFormatToken('gggg', 'weekYear');\n    addWeekYearFormatToken('ggggg', 'weekYear');\n    addWeekYearFormatToken('GGGG', 'isoWeekYear');\n    addWeekYearFormatToken('GGGGG', 'isoWeekYear');\n\n    // ALIASES\n\n    addUnitAlias('weekYear', 'gg');\n    addUnitAlias('isoWeekYear', 'GG');\n\n    // PRIORITY\n\n    addUnitPriority('weekYear', 1);\n    addUnitPriority('isoWeekYear', 1);\n\n    // PARSING\n\n    addRegexToken('G', matchSigned);\n    addRegexToken('g', matchSigned);\n    addRegexToken('GG', match1to2, match2);\n    addRegexToken('gg', match1to2, match2);\n    addRegexToken('GGGG', match1to4, match4);\n    addRegexToken('gggg', match1to4, match4);\n    addRegexToken('GGGGG', match1to6, match6);\n    addRegexToken('ggggg', match1to6, match6);\n\n    addWeekParseToken(\n        ['gggg', 'ggggg', 'GGGG', 'GGGGG'],\n        function (input, week, config, token) {\n            week[token.substr(0, 2)] = toInt(input);\n        }\n    );\n\n    addWeekParseToken(['gg', 'GG'], function (input, week, config, token) {\n        week[token] = hooks.parseTwoDigitYear(input);\n    });\n\n    // MOMENTS\n\n    function getSetWeekYear(input) {\n        return getSetWeekYearHelper.call(\n            this,\n            input,\n            this.week(),\n            this.weekday(),\n            this.localeData()._week.dow,\n            this.localeData()._week.doy\n        );\n    }\n\n    function getSetISOWeekYear(input) {\n        return getSetWeekYearHelper.call(\n            this,\n            input,\n            this.isoWeek(),\n            this.isoWeekday(),\n            1,\n            4\n        );\n    }\n\n    function getISOWeeksInYear() {\n        return weeksInYear(this.year(), 1, 4);\n    }\n\n    function getISOWeeksInISOWeekYear() {\n        return weeksInYear(this.isoWeekYear(), 1, 4);\n    }\n\n    function getWeeksInYear() {\n        var weekInfo = this.localeData()._week;\n        return weeksInYear(this.year(), weekInfo.dow, weekInfo.doy);\n    }\n\n    function getWeeksInWeekYear() {\n        var weekInfo = this.localeData()._week;\n        return weeksInYear(this.weekYear(), weekInfo.dow, weekInfo.doy);\n    }\n\n    function getSetWeekYearHelper(input, week, weekday, dow, doy) {\n        var weeksTarget;\n        if (input == null) {\n            return weekOfYear(this, dow, doy).year;\n        } else {\n            weeksTarget = weeksInYear(input, dow, doy);\n            if (week > weeksTarget) {\n                week = weeksTarget;\n            }\n            return setWeekAll.call(this, input, week, weekday, dow, doy);\n        }\n    }\n\n    function setWeekAll(weekYear, week, weekday, dow, doy) {\n        var dayOfYearData = dayOfYearFromWeeks(weekYear, week, weekday, dow, doy),\n            date = createUTCDate(dayOfYearData.year, 0, dayOfYearData.dayOfYear);\n\n        this.year(date.getUTCFullYear());\n        this.month(date.getUTCMonth());\n        this.date(date.getUTCDate());\n        return this;\n    }\n\n    // FORMATTING\n\n    addFormatToken('Q', 0, 'Qo', 'quarter');\n\n    // ALIASES\n\n    addUnitAlias('quarter', 'Q');\n\n    // PRIORITY\n\n    addUnitPriority('quarter', 7);\n\n    // PARSING\n\n    addRegexToken('Q', match1);\n    addParseToken('Q', function (input, array) {\n        array[MONTH] = (toInt(input) - 1) * 3;\n    });\n\n    // MOMENTS\n\n    function getSetQuarter(input) {\n        return input == null\n            ? Math.ceil((this.month() + 1) / 3)\n            : this.month((input - 1) * 3 + (this.month() % 3));\n    }\n\n    // FORMATTING\n\n    addFormatToken('D', ['DD', 2], 'Do', 'date');\n\n    // ALIASES\n\n    addUnitAlias('date', 'D');\n\n    // PRIORITY\n    addUnitPriority('date', 9);\n\n    // PARSING\n\n    addRegexToken('D', match1to2);\n    addRegexToken('DD', match1to2, match2);\n    addRegexToken('Do', function (isStrict, locale) {\n        // TODO: Remove \"ordinalParse\" fallback in next major release.\n        return isStrict\n            ? locale._dayOfMonthOrdinalParse || locale._ordinalParse\n            : locale._dayOfMonthOrdinalParseLenient;\n    });\n\n    addParseToken(['D', 'DD'], DATE);\n    addParseToken('Do', function (input, array) {\n        array[DATE] = toInt(input.match(match1to2)[0]);\n    });\n\n    // MOMENTS\n\n    var getSetDayOfMonth = makeGetSet('Date', true);\n\n    // FORMATTING\n\n    addFormatToken('DDD', ['DDDD', 3], 'DDDo', 'dayOfYear');\n\n    // ALIASES\n\n    addUnitAlias('dayOfYear', 'DDD');\n\n    // PRIORITY\n    addUnitPriority('dayOfYear', 4);\n\n    // PARSING\n\n    addRegexToken('DDD', match1to3);\n    addRegexToken('DDDD', match3);\n    addParseToken(['DDD', 'DDDD'], function (input, array, config) {\n        config._dayOfYear = toInt(input);\n    });\n\n    // HELPERS\n\n    // MOMENTS\n\n    function getSetDayOfYear(input) {\n        var dayOfYear =\n            Math.round(\n                (this.clone().startOf('day') - this.clone().startOf('year')) / 864e5\n            ) + 1;\n        return input == null ? dayOfYear : this.add(input - dayOfYear, 'd');\n    }\n\n    // FORMATTING\n\n    addFormatToken('m', ['mm', 2], 0, 'minute');\n\n    // ALIASES\n\n    addUnitAlias('minute', 'm');\n\n    // PRIORITY\n\n    addUnitPriority('minute', 14);\n\n    // PARSING\n\n    addRegexToken('m', match1to2);\n    addRegexToken('mm', match1to2, match2);\n    addParseToken(['m', 'mm'], MINUTE);\n\n    // MOMENTS\n\n    var getSetMinute = makeGetSet('Minutes', false);\n\n    // FORMATTING\n\n    addFormatToken('s', ['ss', 2], 0, 'second');\n\n    // ALIASES\n\n    addUnitAlias('second', 's');\n\n    // PRIORITY\n\n    addUnitPriority('second', 15);\n\n    // PARSING\n\n    addRegexToken('s', match1to2);\n    addRegexToken('ss', match1to2, match2);\n    addParseToken(['s', 'ss'], SECOND);\n\n    // MOMENTS\n\n    var getSetSecond = makeGetSet('Seconds', false);\n\n    // FORMATTING\n\n    addFormatToken('S', 0, 0, function () {\n        return ~~(this.millisecond() / 100);\n    });\n\n    addFormatToken(0, ['SS', 2], 0, function () {\n        return ~~(this.millisecond() / 10);\n    });\n\n    addFormatToken(0, ['SSS', 3], 0, 'millisecond');\n    addFormatToken(0, ['SSSS', 4], 0, function () {\n        return this.millisecond() * 10;\n    });\n    addFormatToken(0, ['SSSSS', 5], 0, function () {\n        return this.millisecond() * 100;\n    });\n    addFormatToken(0, ['SSSSSS', 6], 0, function () {\n        return this.millisecond() * 1000;\n    });\n    addFormatToken(0, ['SSSSSSS', 7], 0, function () {\n        return this.millisecond() * 10000;\n    });\n    addFormatToken(0, ['SSSSSSSS', 8], 0, function () {\n        return this.millisecond() * 100000;\n    });\n    addFormatToken(0, ['SSSSSSSSS', 9], 0, function () {\n        return this.millisecond() * 1000000;\n    });\n\n    // ALIASES\n\n    addUnitAlias('millisecond', 'ms');\n\n    // PRIORITY\n\n    addUnitPriority('millisecond', 16);\n\n    // PARSING\n\n    addRegexToken('S', match1to3, match1);\n    addRegexToken('SS', match1to3, match2);\n    addRegexToken('SSS', match1to3, match3);\n\n    var token, getSetMillisecond;\n    for (token = 'SSSS'; token.length <= 9; token += 'S') {\n        addRegexToken(token, matchUnsigned);\n    }\n\n    function parseMs(input, array) {\n        array[MILLISECOND] = toInt(('0.' + input) * 1000);\n    }\n\n    for (token = 'S'; token.length <= 9; token += 'S') {\n        addParseToken(token, parseMs);\n    }\n\n    getSetMillisecond = makeGetSet('Milliseconds', false);\n\n    // FORMATTING\n\n    addFormatToken('z', 0, 0, 'zoneAbbr');\n    addFormatToken('zz', 0, 0, 'zoneName');\n\n    // MOMENTS\n\n    function getZoneAbbr() {\n        return this._isUTC ? 'UTC' : '';\n    }\n\n    function getZoneName() {\n        return this._isUTC ? 'Coordinated Universal Time' : '';\n    }\n\n    var proto = Moment.prototype;\n\n    proto.add = add;\n    proto.calendar = calendar$1;\n    proto.clone = clone;\n    proto.diff = diff;\n    proto.endOf = endOf;\n    proto.format = format;\n    proto.from = from;\n    proto.fromNow = fromNow;\n    proto.to = to;\n    proto.toNow = toNow;\n    proto.get = stringGet;\n    proto.invalidAt = invalidAt;\n    proto.isAfter = isAfter;\n    proto.isBefore = isBefore;\n    proto.isBetween = isBetween;\n    proto.isSame = isSame;\n    proto.isSameOrAfter = isSameOrAfter;\n    proto.isSameOrBefore = isSameOrBefore;\n    proto.isValid = isValid$2;\n    proto.lang = lang;\n    proto.locale = locale;\n    proto.localeData = localeData;\n    proto.max = prototypeMax;\n    proto.min = prototypeMin;\n    proto.parsingFlags = parsingFlags;\n    proto.set = stringSet;\n    proto.startOf = startOf;\n    proto.subtract = subtract;\n    proto.toArray = toArray;\n    proto.toObject = toObject;\n    proto.toDate = toDate;\n    proto.toISOString = toISOString;\n    proto.inspect = inspect;\n    if (typeof Symbol !== 'undefined' && Symbol.for != null) {\n        proto[Symbol.for('nodejs.util.inspect.custom')] = function () {\n            return 'Moment<' + this.format() + '>';\n        };\n    }\n    proto.toJSON = toJSON;\n    proto.toString = toString;\n    proto.unix = unix;\n    proto.valueOf = valueOf;\n    proto.creationData = creationData;\n    proto.eraName = getEraName;\n    proto.eraNarrow = getEraNarrow;\n    proto.eraAbbr = getEraAbbr;\n    proto.eraYear = getEraYear;\n    proto.year = getSetYear;\n    proto.isLeapYear = getIsLeapYear;\n    proto.weekYear = getSetWeekYear;\n    proto.isoWeekYear = getSetISOWeekYear;\n    proto.quarter = proto.quarters = getSetQuarter;\n    proto.month = getSetMonth;\n    proto.daysInMonth = getDaysInMonth;\n    proto.week = proto.weeks = getSetWeek;\n    proto.isoWeek = proto.isoWeeks = getSetISOWeek;\n    proto.weeksInYear = getWeeksInYear;\n    proto.weeksInWeekYear = getWeeksInWeekYear;\n    proto.isoWeeksInYear = getISOWeeksInYear;\n    proto.isoWeeksInISOWeekYear = getISOWeeksInISOWeekYear;\n    proto.date = getSetDayOfMonth;\n    proto.day = proto.days = getSetDayOfWeek;\n    proto.weekday = getSetLocaleDayOfWeek;\n    proto.isoWeekday = getSetISODayOfWeek;\n    proto.dayOfYear = getSetDayOfYear;\n    proto.hour = proto.hours = getSetHour;\n    proto.minute = proto.minutes = getSetMinute;\n    proto.second = proto.seconds = getSetSecond;\n    proto.millisecond = proto.milliseconds = getSetMillisecond;\n    proto.utcOffset = getSetOffset;\n    proto.utc = setOffsetToUTC;\n    proto.local = setOffsetToLocal;\n    proto.parseZone = setOffsetToParsedOffset;\n    proto.hasAlignedHourOffset = hasAlignedHourOffset;\n    proto.isDST = isDaylightSavingTime;\n    proto.isLocal = isLocal;\n    proto.isUtcOffset = isUtcOffset;\n    proto.isUtc = isUtc;\n    proto.isUTC = isUtc;\n    proto.zoneAbbr = getZoneAbbr;\n    proto.zoneName = getZoneName;\n    proto.dates = deprecate(\n        'dates accessor is deprecated. Use date instead.',\n        getSetDayOfMonth\n    );\n    proto.months = deprecate(\n        'months accessor is deprecated. Use month instead',\n        getSetMonth\n    );\n    proto.years = deprecate(\n        'years accessor is deprecated. Use year instead',\n        getSetYear\n    );\n    proto.zone = deprecate(\n        'moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/',\n        getSetZone\n    );\n    proto.isDSTShifted = deprecate(\n        'isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information',\n        isDaylightSavingTimeShifted\n    );\n\n    function createUnix(input) {\n        return createLocal(input * 1000);\n    }\n\n    function createInZone() {\n        return createLocal.apply(null, arguments).parseZone();\n    }\n\n    function preParsePostFormat(string) {\n        return string;\n    }\n\n    var proto$1 = Locale.prototype;\n\n    proto$1.calendar = calendar;\n    proto$1.longDateFormat = longDateFormat;\n    proto$1.invalidDate = invalidDate;\n    proto$1.ordinal = ordinal;\n    proto$1.preparse = preParsePostFormat;\n    proto$1.postformat = preParsePostFormat;\n    proto$1.relativeTime = relativeTime;\n    proto$1.pastFuture = pastFuture;\n    proto$1.set = set;\n    proto$1.eras = localeEras;\n    proto$1.erasParse = localeErasParse;\n    proto$1.erasConvertYear = localeErasConvertYear;\n    proto$1.erasAbbrRegex = erasAbbrRegex;\n    proto$1.erasNameRegex = erasNameRegex;\n    proto$1.erasNarrowRegex = erasNarrowRegex;\n\n    proto$1.months = localeMonths;\n    proto$1.monthsShort = localeMonthsShort;\n    proto$1.monthsParse = localeMonthsParse;\n    proto$1.monthsRegex = monthsRegex;\n    proto$1.monthsShortRegex = monthsShortRegex;\n    proto$1.week = localeWeek;\n    proto$1.firstDayOfYear = localeFirstDayOfYear;\n    proto$1.firstDayOfWeek = localeFirstDayOfWeek;\n\n    proto$1.weekdays = localeWeekdays;\n    proto$1.weekdaysMin = localeWeekdaysMin;\n    proto$1.weekdaysShort = localeWeekdaysShort;\n    proto$1.weekdaysParse = localeWeekdaysParse;\n\n    proto$1.weekdaysRegex = weekdaysRegex;\n    proto$1.weekdaysShortRegex = weekdaysShortRegex;\n    proto$1.weekdaysMinRegex = weekdaysMinRegex;\n\n    proto$1.isPM = localeIsPM;\n    proto$1.meridiem = localeMeridiem;\n\n    function get$1(format, index, field, setter) {\n        var locale = getLocale(),\n            utc = createUTC().set(setter, index);\n        return locale[field](utc, format);\n    }\n\n    function listMonthsImpl(format, index, field) {\n        if (isNumber(format)) {\n            index = format;\n            format = undefined;\n        }\n\n        format = format || '';\n\n        if (index != null) {\n            return get$1(format, index, field, 'month');\n        }\n\n        var i,\n            out = [];\n        for (i = 0; i < 12; i++) {\n            out[i] = get$1(format, i, field, 'month');\n        }\n        return out;\n    }\n\n    // ()\n    // (5)\n    // (fmt, 5)\n    // (fmt)\n    // (true)\n    // (true, 5)\n    // (true, fmt, 5)\n    // (true, fmt)\n    function listWeekdaysImpl(localeSorted, format, index, field) {\n        if (typeof localeSorted === 'boolean') {\n            if (isNumber(format)) {\n                index = format;\n                format = undefined;\n            }\n\n            format = format || '';\n        } else {\n            format = localeSorted;\n            index = format;\n            localeSorted = false;\n\n            if (isNumber(format)) {\n                index = format;\n                format = undefined;\n            }\n\n            format = format || '';\n        }\n\n        var locale = getLocale(),\n            shift = localeSorted ? locale._week.dow : 0,\n            i,\n            out = [];\n\n        if (index != null) {\n            return get$1(format, (index + shift) % 7, field, 'day');\n        }\n\n        for (i = 0; i < 7; i++) {\n            out[i] = get$1(format, (i + shift) % 7, field, 'day');\n        }\n        return out;\n    }\n\n    function listMonths(format, index) {\n        return listMonthsImpl(format, index, 'months');\n    }\n\n    function listMonthsShort(format, index) {\n        return listMonthsImpl(format, index, 'monthsShort');\n    }\n\n    function listWeekdays(localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdays');\n    }\n\n    function listWeekdaysShort(localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysShort');\n    }\n\n    function listWeekdaysMin(localeSorted, format, index) {\n        return listWeekdaysImpl(localeSorted, format, index, 'weekdaysMin');\n    }\n\n    getSetGlobalLocale('en', {\n        eras: [\n            {\n                since: '0001-01-01',\n                until: +Infinity,\n                offset: 1,\n                name: 'Anno Domini',\n                narrow: 'AD',\n                abbr: 'AD',\n            },\n            {\n                since: '0000-12-31',\n                until: -Infinity,\n                offset: 1,\n                name: 'Before Christ',\n                narrow: 'BC',\n                abbr: 'BC',\n            },\n        ],\n        dayOfMonthOrdinalParse: /\\d{1,2}(th|st|nd|rd)/,\n        ordinal: function (number) {\n            var b = number % 10,\n                output =\n                    toInt((number % 100) / 10) === 1\n                        ? 'th'\n                        : b === 1\n                        ? 'st'\n                        : b === 2\n                        ? 'nd'\n                        : b === 3\n                        ? 'rd'\n                        : 'th';\n            return number + output;\n        },\n    });\n\n    // Side effect imports\n\n    hooks.lang = deprecate(\n        'moment.lang is deprecated. Use moment.locale instead.',\n        getSetGlobalLocale\n    );\n    hooks.langData = deprecate(\n        'moment.langData is deprecated. Use moment.localeData instead.',\n        getLocale\n    );\n\n    var mathAbs = Math.abs;\n\n    function abs() {\n        var data = this._data;\n\n        this._milliseconds = mathAbs(this._milliseconds);\n        this._days = mathAbs(this._days);\n        this._months = mathAbs(this._months);\n\n        data.milliseconds = mathAbs(data.milliseconds);\n        data.seconds = mathAbs(data.seconds);\n        data.minutes = mathAbs(data.minutes);\n        data.hours = mathAbs(data.hours);\n        data.months = mathAbs(data.months);\n        data.years = mathAbs(data.years);\n\n        return this;\n    }\n\n    function addSubtract$1(duration, input, value, direction) {\n        var other = createDuration(input, value);\n\n        duration._milliseconds += direction * other._milliseconds;\n        duration._days += direction * other._days;\n        duration._months += direction * other._months;\n\n        return duration._bubble();\n    }\n\n    // supports only 2.0-style add(1, 's') or add(duration)\n    function add$1(input, value) {\n        return addSubtract$1(this, input, value, 1);\n    }\n\n    // supports only 2.0-style subtract(1, 's') or subtract(duration)\n    function subtract$1(input, value) {\n        return addSubtract$1(this, input, value, -1);\n    }\n\n    function absCeil(number) {\n        if (number < 0) {\n            return Math.floor(number);\n        } else {\n            return Math.ceil(number);\n        }\n    }\n\n    function bubble() {\n        var milliseconds = this._milliseconds,\n            days = this._days,\n            months = this._months,\n            data = this._data,\n            seconds,\n            minutes,\n            hours,\n            years,\n            monthsFromDays;\n\n        // if we have a mix of positive and negative values, bubble down first\n        // check: https://github.com/moment/moment/issues/2166\n        if (\n            !(\n                (milliseconds >= 0 && days >= 0 && months >= 0) ||\n                (milliseconds <= 0 && days <= 0 && months <= 0)\n            )\n        ) {\n            milliseconds += absCeil(monthsToDays(months) + days) * 864e5;\n            days = 0;\n            months = 0;\n        }\n\n        // The following code bubbles up values, see the tests for\n        // examples of what that means.\n        data.milliseconds = milliseconds % 1000;\n\n        seconds = absFloor(milliseconds / 1000);\n        data.seconds = seconds % 60;\n\n        minutes = absFloor(seconds / 60);\n        data.minutes = minutes % 60;\n\n        hours = absFloor(minutes / 60);\n        data.hours = hours % 24;\n\n        days += absFloor(hours / 24);\n\n        // convert days to months\n        monthsFromDays = absFloor(daysToMonths(days));\n        months += monthsFromDays;\n        days -= absCeil(monthsToDays(monthsFromDays));\n\n        // 12 months -> 1 year\n        years = absFloor(months / 12);\n        months %= 12;\n\n        data.days = days;\n        data.months = months;\n        data.years = years;\n\n        return this;\n    }\n\n    function daysToMonths(days) {\n        // 400 years have 146097 days (taking into account leap year rules)\n        // 400 years have 12 months === 4800\n        return (days * 4800) / 146097;\n    }\n\n    function monthsToDays(months) {\n        // the reverse of daysToMonths\n        return (months * 146097) / 4800;\n    }\n\n    function as(units) {\n        if (!this.isValid()) {\n            return NaN;\n        }\n        var days,\n            months,\n            milliseconds = this._milliseconds;\n\n        units = normalizeUnits(units);\n\n        if (units === 'month' || units === 'quarter' || units === 'year') {\n            days = this._days + milliseconds / 864e5;\n            months = this._months + daysToMonths(days);\n            switch (units) {\n                case 'month':\n                    return months;\n                case 'quarter':\n                    return months / 3;\n                case 'year':\n                    return months / 12;\n            }\n        } else {\n            // handle milliseconds separately because of floating point math errors (issue #1867)\n            days = this._days + Math.round(monthsToDays(this._months));\n            switch (units) {\n                case 'week':\n                    return days / 7 + milliseconds / 6048e5;\n                case 'day':\n                    return days + milliseconds / 864e5;\n                case 'hour':\n                    return days * 24 + milliseconds / 36e5;\n                case 'minute':\n                    return days * 1440 + milliseconds / 6e4;\n                case 'second':\n                    return days * 86400 + milliseconds / 1000;\n                // Math.floor prevents floating point math errors here\n                case 'millisecond':\n                    return Math.floor(days * 864e5) + milliseconds;\n                default:\n                    throw new Error('Unknown unit ' + units);\n            }\n        }\n    }\n\n    // TODO: Use this.as('ms')?\n    function valueOf$1() {\n        if (!this.isValid()) {\n            return NaN;\n        }\n        return (\n            this._milliseconds +\n            this._days * 864e5 +\n            (this._months % 12) * 2592e6 +\n            toInt(this._months / 12) * 31536e6\n        );\n    }\n\n    function makeAs(alias) {\n        return function () {\n            return this.as(alias);\n        };\n    }\n\n    var asMilliseconds = makeAs('ms'),\n        asSeconds = makeAs('s'),\n        asMinutes = makeAs('m'),\n        asHours = makeAs('h'),\n        asDays = makeAs('d'),\n        asWeeks = makeAs('w'),\n        asMonths = makeAs('M'),\n        asQuarters = makeAs('Q'),\n        asYears = makeAs('y');\n\n    function clone$1() {\n        return createDuration(this);\n    }\n\n    function get$2(units) {\n        units = normalizeUnits(units);\n        return this.isValid() ? this[units + 's']() : NaN;\n    }\n\n    function makeGetter(name) {\n        return function () {\n            return this.isValid() ? this._data[name] : NaN;\n        };\n    }\n\n    var milliseconds = makeGetter('milliseconds'),\n        seconds = makeGetter('seconds'),\n        minutes = makeGetter('minutes'),\n        hours = makeGetter('hours'),\n        days = makeGetter('days'),\n        months = makeGetter('months'),\n        years = makeGetter('years');\n\n    function weeks() {\n        return absFloor(this.days() / 7);\n    }\n\n    var round = Math.round,\n        thresholds = {\n            ss: 44, // a few seconds to seconds\n            s: 45, // seconds to minute\n            m: 45, // minutes to hour\n            h: 22, // hours to day\n            d: 26, // days to month/week\n            w: null, // weeks to month\n            M: 11, // months to year\n        };\n\n    // helper function for moment.fn.from, moment.fn.fromNow, and moment.duration.fn.humanize\n    function substituteTimeAgo(string, number, withoutSuffix, isFuture, locale) {\n        return locale.relativeTime(number || 1, !!withoutSuffix, string, isFuture);\n    }\n\n    function relativeTime$1(posNegDuration, withoutSuffix, thresholds, locale) {\n        var duration = createDuration(posNegDuration).abs(),\n            seconds = round(duration.as('s')),\n            minutes = round(duration.as('m')),\n            hours = round(duration.as('h')),\n            days = round(duration.as('d')),\n            months = round(duration.as('M')),\n            weeks = round(duration.as('w')),\n            years = round(duration.as('y')),\n            a =\n                (seconds <= thresholds.ss && ['s', seconds]) ||\n                (seconds < thresholds.s && ['ss', seconds]) ||\n                (minutes <= 1 && ['m']) ||\n                (minutes < thresholds.m && ['mm', minutes]) ||\n                (hours <= 1 && ['h']) ||\n                (hours < thresholds.h && ['hh', hours]) ||\n                (days <= 1 && ['d']) ||\n                (days < thresholds.d && ['dd', days]);\n\n        if (thresholds.w != null) {\n            a =\n                a ||\n                (weeks <= 1 && ['w']) ||\n                (weeks < thresholds.w && ['ww', weeks]);\n        }\n        a = a ||\n            (months <= 1 && ['M']) ||\n            (months < thresholds.M && ['MM', months]) ||\n            (years <= 1 && ['y']) || ['yy', years];\n\n        a[2] = withoutSuffix;\n        a[3] = +posNegDuration > 0;\n        a[4] = locale;\n        return substituteTimeAgo.apply(null, a);\n    }\n\n    // This function allows you to set the rounding function for relative time strings\n    function getSetRelativeTimeRounding(roundingFunction) {\n        if (roundingFunction === undefined) {\n            return round;\n        }\n        if (typeof roundingFunction === 'function') {\n            round = roundingFunction;\n            return true;\n        }\n        return false;\n    }\n\n    // This function allows you to set a threshold for relative time strings\n    function getSetRelativeTimeThreshold(threshold, limit) {\n        if (thresholds[threshold] === undefined) {\n            return false;\n        }\n        if (limit === undefined) {\n            return thresholds[threshold];\n        }\n        thresholds[threshold] = limit;\n        if (threshold === 's') {\n            thresholds.ss = limit - 1;\n        }\n        return true;\n    }\n\n    function humanize(argWithSuffix, argThresholds) {\n        if (!this.isValid()) {\n            return this.localeData().invalidDate();\n        }\n\n        var withSuffix = false,\n            th = thresholds,\n            locale,\n            output;\n\n        if (typeof argWithSuffix === 'object') {\n            argThresholds = argWithSuffix;\n            argWithSuffix = false;\n        }\n        if (typeof argWithSuffix === 'boolean') {\n            withSuffix = argWithSuffix;\n        }\n        if (typeof argThresholds === 'object') {\n            th = Object.assign({}, thresholds, argThresholds);\n            if (argThresholds.s != null && argThresholds.ss == null) {\n                th.ss = argThresholds.s - 1;\n            }\n        }\n\n        locale = this.localeData();\n        output = relativeTime$1(this, !withSuffix, th, locale);\n\n        if (withSuffix) {\n            output = locale.pastFuture(+this, output);\n        }\n\n        return locale.postformat(output);\n    }\n\n    var abs$1 = Math.abs;\n\n    function sign(x) {\n        return (x > 0) - (x < 0) || +x;\n    }\n\n    function toISOString$1() {\n        // for ISO strings we do not use the normal bubbling rules:\n        //  * milliseconds bubble up until they become hours\n        //  * days do not bubble at all\n        //  * months bubble up until they become years\n        // This is because there is no context-free conversion between hours and days\n        // (think of clock changes)\n        // and also not between days and months (28-31 days per month)\n        if (!this.isValid()) {\n            return this.localeData().invalidDate();\n        }\n\n        var seconds = abs$1(this._milliseconds) / 1000,\n            days = abs$1(this._days),\n            months = abs$1(this._months),\n            minutes,\n            hours,\n            years,\n            s,\n            total = this.asSeconds(),\n            totalSign,\n            ymSign,\n            daysSign,\n            hmsSign;\n\n        if (!total) {\n            // this is the same as C#'s (Noda) and python (isodate)...\n            // but not other JS (goog.date)\n            return 'P0D';\n        }\n\n        // 3600 seconds -> 60 minutes -> 1 hour\n        minutes = absFloor(seconds / 60);\n        hours = absFloor(minutes / 60);\n        seconds %= 60;\n        minutes %= 60;\n\n        // 12 months -> 1 year\n        years = absFloor(months / 12);\n        months %= 12;\n\n        // inspired by https://github.com/dordille/moment-isoduration/blob/master/moment.isoduration.js\n        s = seconds ? seconds.toFixed(3).replace(/\\.?0+$/, '') : '';\n\n        totalSign = total < 0 ? '-' : '';\n        ymSign = sign(this._months) !== sign(total) ? '-' : '';\n        daysSign = sign(this._days) !== sign(total) ? '-' : '';\n        hmsSign = sign(this._milliseconds) !== sign(total) ? '-' : '';\n\n        return (\n            totalSign +\n            'P' +\n            (years ? ymSign + years + 'Y' : '') +\n            (months ? ymSign + months + 'M' : '') +\n            (days ? daysSign + days + 'D' : '') +\n            (hours || minutes || seconds ? 'T' : '') +\n            (hours ? hmsSign + hours + 'H' : '') +\n            (minutes ? hmsSign + minutes + 'M' : '') +\n            (seconds ? hmsSign + s + 'S' : '')\n        );\n    }\n\n    var proto$2 = Duration.prototype;\n\n    proto$2.isValid = isValid$1;\n    proto$2.abs = abs;\n    proto$2.add = add$1;\n    proto$2.subtract = subtract$1;\n    proto$2.as = as;\n    proto$2.asMilliseconds = asMilliseconds;\n    proto$2.asSeconds = asSeconds;\n    proto$2.asMinutes = asMinutes;\n    proto$2.asHours = asHours;\n    proto$2.asDays = asDays;\n    proto$2.asWeeks = asWeeks;\n    proto$2.asMonths = asMonths;\n    proto$2.asQuarters = asQuarters;\n    proto$2.asYears = asYears;\n    proto$2.valueOf = valueOf$1;\n    proto$2._bubble = bubble;\n    proto$2.clone = clone$1;\n    proto$2.get = get$2;\n    proto$2.milliseconds = milliseconds;\n    proto$2.seconds = seconds;\n    proto$2.minutes = minutes;\n    proto$2.hours = hours;\n    proto$2.days = days;\n    proto$2.weeks = weeks;\n    proto$2.months = months;\n    proto$2.years = years;\n    proto$2.humanize = humanize;\n    proto$2.toISOString = toISOString$1;\n    proto$2.toString = toISOString$1;\n    proto$2.toJSON = toISOString$1;\n    proto$2.locale = locale;\n    proto$2.localeData = localeData;\n\n    proto$2.toIsoString = deprecate(\n        'toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)',\n        toISOString$1\n    );\n    proto$2.lang = lang;\n\n    // FORMATTING\n\n    addFormatToken('X', 0, 0, 'unix');\n    addFormatToken('x', 0, 0, 'valueOf');\n\n    // PARSING\n\n    addRegexToken('x', matchSigned);\n    addRegexToken('X', matchTimestamp);\n    addParseToken('X', function (input, array, config) {\n        config._d = new Date(parseFloat(input) * 1000);\n    });\n    addParseToken('x', function (input, array, config) {\n        config._d = new Date(toInt(input));\n    });\n\n    //! moment.js\n\n    hooks.version = '2.29.4';\n\n    setHookCallback(createLocal);\n\n    hooks.fn = proto;\n    hooks.min = min;\n    hooks.max = max;\n    hooks.now = now;\n    hooks.utc = createUTC;\n    hooks.unix = createUnix;\n    hooks.months = listMonths;\n    hooks.isDate = isDate;\n    hooks.locale = getSetGlobalLocale;\n    hooks.invalid = createInvalid;\n    hooks.duration = createDuration;\n    hooks.isMoment = isMoment;\n    hooks.weekdays = listWeekdays;\n    hooks.parseZone = createInZone;\n    hooks.localeData = getLocale;\n    hooks.isDuration = isDuration;\n    hooks.monthsShort = listMonthsShort;\n    hooks.weekdaysMin = listWeekdaysMin;\n    hooks.defineLocale = defineLocale;\n    hooks.updateLocale = updateLocale;\n    hooks.locales = listLocales;\n    hooks.weekdaysShort = listWeekdaysShort;\n    hooks.normalizeUnits = normalizeUnits;\n    hooks.relativeTimeRounding = getSetRelativeTimeRounding;\n    hooks.relativeTimeThreshold = getSetRelativeTimeThreshold;\n    hooks.calendarFormat = getCalendarFormat;\n    hooks.prototype = proto;\n\n    // currently HTML5 input type only supports 24-hour formats\n    hooks.HTML5_FMT = {\n        DATETIME_LOCAL: 'YYYY-MM-DDTHH:mm', // <input type=\"datetime-local\" />\n        DATETIME_LOCAL_SECONDS: 'YYYY-MM-DDTHH:mm:ss', // <input type=\"datetime-local\" step=\"1\" />\n        DATETIME_LOCAL_MS: 'YYYY-MM-DDTHH:mm:ss.SSS', // <input type=\"datetime-local\" step=\"0.001\" />\n        DATE: 'YYYY-MM-DD', // <input type=\"date\" />\n        TIME: 'HH:mm', // <input type=\"time\" />\n        TIME_SECONDS: 'HH:mm:ss', // <input type=\"time\" step=\"1\" />\n        TIME_MS: 'HH:mm:ss.SSS', // <input type=\"time\" step=\"0.001\" />\n        WEEK: 'GGGG-[W]WW', // <input type=\"week\" />\n        MONTH: 'YYYY-MM', // <input type=\"month\" />\n    };\n\n    return hooks;\n\n})));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/moment/moment.js\n// module id = 102\n// module chunks = 88 89","export var version = {\n  lib: '2.10102.0',\n  product: '2.10102.0',\n  supportedApiVersion: 2\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/misc/Version.ts","\"use strict\";\nvar detector = require('./detector');\nvar cookieutils_1 = require('./cookieutils');\nexports.preferredStorage = null;\nfunction getAvailableStorage() {\n    if (exports.preferredStorage) {\n        return exports.preferredStorage;\n    }\n    if (detector.hasLocalStorage()) {\n        return localStorage;\n    }\n    if (detector.hasCookieStorage()) {\n        return new CookieStorage();\n    }\n    if (detector.hasSessionStorage()) {\n        return sessionStorage;\n    }\n    return new NullStorage();\n}\nexports.getAvailableStorage = getAvailableStorage;\nvar CookieStorage = (function () {\n    function CookieStorage() {\n    }\n    CookieStorage.prototype.getItem = function (key) {\n        return cookieutils_1.Cookie.get(key);\n    };\n    CookieStorage.prototype.removeItem = function (key) {\n        cookieutils_1.Cookie.erase(key);\n    };\n    CookieStorage.prototype.setItem = function (key, data) {\n        cookieutils_1.Cookie.set(key, data);\n    };\n    return CookieStorage;\n}());\nexports.CookieStorage = CookieStorage;\nvar NullStorage = (function () {\n    function NullStorage() {\n    }\n    NullStorage.prototype.getItem = function (key) { return null; };\n    NullStorage.prototype.removeItem = function (key) { };\n    NullStorage.prototype.setItem = function (key, data) { };\n    return NullStorage;\n}());\nexports.NullStorage = NullStorage;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/coveo.analytics/dist/storage.js\n// module id = 104\n// module chunks = 88 89","export class DebugEvents {\n  public static showDebugPanel = 'showDebugPanel';\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/events/DebugEvents.ts","import { IAnalyticsClient } from './AnalyticsClient';\nimport { IAnalyticsActionCause } from './AnalyticsActionListMeta';\nimport { IAPIAnalyticsEventResponse } from '../../rest/APIAnalyticsEventResponse';\nimport { IQueryResult } from '../../rest/QueryResult';\nimport { ITopQueries } from '../../rest/TopQueries';\nimport { IStringMap } from '../../rest/GenericParam';\n\nexport class NoopAnalyticsClient implements IAnalyticsClient {\n  public isContextual: boolean = false;\n  public endpoint = null;\n  private currentEventCause: string;\n  private currentEventMeta: IStringMap<any>;\n\n  isActivated() {\n    return false;\n  }\n\n  getCurrentEventCause(): string {\n    return this.currentEventCause;\n  }\n\n  getCurrentEventMeta(): IStringMap<any> {\n    return this.currentEventMeta;\n  }\n\n  logSearchEvent<TMeta>(actionCause: IAnalyticsActionCause, meta: TMeta) {\n    this.setNoopCauseAndMeta(actionCause.name, meta);\n  }\n\n  logSearchAsYouType<TMeta>(actionCause: IAnalyticsActionCause, meta: TMeta) {\n    this.setNoopCauseAndMeta(actionCause.name, meta);\n  }\n\n  logClickEvent<TMeta>(\n    actionCause: IAnalyticsActionCause,\n    meta: TMeta,\n    result?: IQueryResult,\n    element?: HTMLElement\n  ): Promise<IAPIAnalyticsEventResponse> {\n    this.setNoopCauseAndMeta(actionCause.name, meta);\n    return Promise.resolve(null);\n  }\n\n  logCustomEvent<TMeta>(actionCause: IAnalyticsActionCause, meta: TMeta, element?: HTMLElement): Promise<IAPIAnalyticsEventResponse> {\n    this.setNoopCauseAndMeta(actionCause.name, meta);\n    return Promise.resolve(null);\n  }\n\n  getTopQueries(params: ITopQueries): Promise<string[]> {\n    return new Promise((resolve, reject) => {\n      resolve([]);\n    });\n  }\n\n  getCurrentVisitIdPromise(): Promise<string> {\n    return new Promise((resolve, reject) => {\n      resolve(null);\n    });\n  }\n\n  getCurrentVisitId(): string {\n    return null;\n  }\n\n  sendAllPendingEvents() {}\n\n  cancelAllPendingEvents() {}\n\n  warnAboutSearchEvent() {}\n\n  getPendingSearchEvent() {\n    return null;\n  }\n\n  setOriginContext(originContext: string) {}\n\n  getOriginContext(): string {\n    return '';\n  }\n\n  getUserDisplayName(): string {\n    return '';\n  }\n\n  private setNoopCauseAndMeta(cause: string, meta: IStringMap<any>) {\n    this.currentEventCause = cause;\n    this.currentEventMeta = meta;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Analytics/NoopAnalyticsClient.ts","import { Template } from './Template';\nimport { Assert } from '../../misc/Assert';\nimport { TemplateFromAScriptTag, ITemplateFromStringProperties } from './TemplateFromAScriptTag';\n\nexport class HtmlTemplate extends Template {\n  public static mimeTypes = ['text/html', 'text/HTML'];\n\n  private templateFromAScriptTag: TemplateFromAScriptTag;\n\n  constructor(public element: HTMLElement) {\n    super(() => element.innerHTML);\n    this.templateFromAScriptTag = new TemplateFromAScriptTag(this, this.element);\n  }\n\n  toHtmlElement(): HTMLElement {\n    let script = this.templateFromAScriptTag.toHtmlElement();\n    // We don't set the type attribute for 2 reasons:\n    // 1) LockerService doesn't like when we set it.\n    // 2) The HTML Template is the default one.\n\n    return script;\n  }\n\n  getType() {\n    return 'HtmlTemplate';\n  }\n\n  static create(element: HTMLElement): HtmlTemplate {\n    Assert.exists(element);\n    return new HtmlTemplate(element);\n  }\n\n  static fromString(template: string, properties: ITemplateFromStringProperties): HtmlTemplate {\n    let script = TemplateFromAScriptTag.fromString(template, properties);\n\n    // We don't set the type attribute for 2 reasons:\n    // 1) LockerService doesn't like when we set it.\n    // 2) The HTML Template is the default one.\n    return new HtmlTemplate(script);\n  }\n\n  protected getTemplateInfo() {\n    return this.element;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Templates/HtmlTemplate.ts","var anObject = require('./_an-object');\nvar IE8_DOM_DEFINE = require('./_ie8-dom-define');\nvar toPrimitive = require('./_to-primitive');\nvar dP = Object.defineProperty;\n\nexports.f = require('./_descriptors') ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n  anObject(O);\n  P = toPrimitive(P, true);\n  anObject(Attributes);\n  if (IE8_DOM_DEFINE) try {\n    return dP(O, P, Attributes);\n  } catch (e) { /* empty */ }\n  if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n  if ('value' in Attributes) O[P] = Attributes.value;\n  return O;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_object-dp.js\n// module id = 108\n// module chunks = 88 89","module.exports = function (it) {\n  return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_is-object.js\n// module id = 109\n// module chunks = 88 89","module.exports = function (exec) {\n  try {\n    return !!exec();\n  } catch (e) {\n    return true;\n  }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_fails.js\n// module id = 110\n// module chunks = 88 89","// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = require('./_iobject');\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n  return IObject(defined(it));\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_to-iobject.js\n// module id = 111\n// module chunks = 88 89","var toString = {}.toString;\n\nmodule.exports = function (it) {\n  return toString.call(it).slice(8, -1);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_cof.js\n// module id = 112\n// module chunks = 88 89","// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n  return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_to-integer.js\n// module id = 113\n// module chunks = 88 89","var shared = require('./_shared')('keys');\nvar uid = require('./_uid');\nmodule.exports = function (key) {\n  return shared[key] || (shared[key] = uid(key));\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_shared-key.js\n// module id = 114\n// module chunks = 88 89","module.exports = require(\"core-js/library/fn/get-iterator\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/core-js/get-iterator.js\n// module id = 115\n// module chunks = 88 89","import { IDuringQueryEventArgs, QueryEvents } from '../../events/QueryEvents';\nimport { IQueryResults } from '../../rest/QueryResults';\nimport { IQuery } from '../../rest/Query';\nimport { ISearchEvent } from '../../rest/SearchEvent';\nimport { AnalyticsEndpoint } from '../../rest/AnalyticsEndpoint';\nimport { Assert } from '../../misc/Assert';\nimport { $$ } from '../../utils/Dom';\nimport { SearchInterface } from '../SearchInterface/SearchInterface';\nimport { Component } from '../Base/Component';\nimport { QueryController } from '../../controllers/QueryController';\nimport { Defer } from '../../misc/Defer';\nimport { APIAnalyticsBuilder } from '../../rest/APIAnalyticsBuilder';\nimport { IAnalyticsSearchEventsArgs, AnalyticsEvents, IAnalyticsEventArgs } from '../../events/AnalyticsEvents';\nimport { analyticsActionCauseList } from '../Analytics/AnalyticsActionListMeta';\nimport { QueryStateModel } from '../../models/QueryStateModel';\nimport { indexOf, map, each } from 'underscore';\nimport { Logger } from '../../misc/Logger';\nimport { IAnalyticsFacetState } from './IAnalyticsFacetState';\n\nexport class PendingSearchEvent {\n  private handler: (evt: Event, arg: IDuringQueryEventArgs) => void;\n  private searchPromises: Promise<IQueryResults>[] = [];\n  private results: IQueryResults[] = [];\n  private facetState: IAnalyticsFacetState[];\n  protected cancelled = false;\n  protected finished = false;\n  protected searchEvents: ISearchEvent[] = [];\n\n  constructor(\n    public root: HTMLElement,\n    public endpoint: AnalyticsEndpoint,\n    public templateSearchEvent: ISearchEvent,\n    public sendToCloud: boolean\n  ) {\n    Assert.exists(root);\n    Assert.exists(endpoint);\n    Assert.exists(templateSearchEvent);\n\n    this.handler = (evt: Event, arg: IDuringQueryEventArgs) => {\n      this.handleDuringQuery(evt, arg);\n    };\n    $$(root).on(QueryEvents.duringQuery, this.handler);\n  }\n\n  public getEventCause() {\n    return this.templateSearchEvent.actionCause;\n  }\n\n  public getEventMeta() {\n    return this.templateSearchEvent.customData;\n  }\n\n  public addFacetState(state: IAnalyticsFacetState[]) {\n    if (!this.facetState) {\n      this.facetState = [];\n    }\n\n    this.facetState.push(...state);\n  }\n\n  public cancel() {\n    this.stopRecording();\n    this.cancelled = true;\n  }\n\n  public stopRecording() {\n    if (this.handler) {\n      $$(this.root).off(QueryEvents.duringQuery, this.handler);\n      $$(this.root).off(QueryEvents.duringFetchMoreQuery, this.handler);\n      this.handler = null;\n    }\n  }\n\n  protected handleDuringQuery(evt: Event, args: IDuringQueryEventArgs, queryBoxContentToUse?: string) {\n    Assert.check(!this.finished);\n    Assert.check(!this.cancelled);\n\n    // When synchronizing multiple search interfaces under a single search event\n    // (think Salesforce boxes), we need to collect all search events and send them\n    // in one single batch. So we gather all events until we idle out and then we\n    // monitor those before sending the data.\n\n    this.searchPromises.push(args.promise);\n\n    const eventTarget = <HTMLElement>evt.target;\n    const searchInterface = <SearchInterface>Component.get(eventTarget, SearchInterface);\n    Assert.exists(searchInterface);\n    // We try to grab ahead of time the content of the search box before the query returns\n    // This is because it's possible that the content of the search box gets modified when the query returns (for example : DidYouMean)\n    if (!queryBoxContentToUse) {\n      queryBoxContentToUse = searchInterface.queryStateModel.get(QueryStateModel.attributesEnum.q);\n    }\n    const queryController = Component.get(eventTarget, QueryController);\n    Assert.exists(queryController);\n\n    this.updateSearchEventsAndQueryResults(args, searchInterface, queryBoxContentToUse);\n  }\n\n  private async updateSearchEventsAndQueryResults(\n    args: IDuringQueryEventArgs,\n    searchInterface: SearchInterface,\n    queryBoxContentToUse: string\n  ) {\n    try {\n      const queryResults: IQueryResults = await args.promise;\n\n      Assert.exists(queryResults);\n      Assert.check(!this.finished);\n\n      const isRecommendationPanelAction = this.templateSearchEvent.actionCause === analyticsActionCauseList.recommendation.name;\n\n      if (queryResults._reusedSearchUid !== true || isRecommendationPanelAction) {\n        const searchEvent: ISearchEvent = { ...this.templateSearchEvent };\n        this.fillSearchEvent(searchEvent, searchInterface, args.query, queryResults, queryBoxContentToUse);\n        this.searchEvents.push(searchEvent);\n        this.results.push(queryResults);\n      }\n    } catch (e) {\n      new Logger(this).error(e);\n    }\n\n    const index = indexOf(this.searchPromises, args.promise);\n    this.searchPromises.splice(index, 1);\n\n    if (!this.searchPromises.length) {\n      this.flush();\n    }\n  }\n\n  private flush() {\n    if (!this.cancelled) {\n      this.stopRecording();\n      this.finished = true;\n      Assert.check(this.searchEvents.length == this.results.length);\n\n      Defer.defer(() => {\n        if (this.sendToCloud) {\n          this.endpoint.sendSearchEvents(this.searchEvents);\n        }\n        const apiSearchEvents = map(this.searchEvents, (searchEvent: ISearchEvent) => {\n          return APIAnalyticsBuilder.convertSearchEventToAPI(searchEvent);\n        });\n        $$(this.root).trigger(AnalyticsEvents.searchEvent, <IAnalyticsSearchEventsArgs>{\n          searchEvents: apiSearchEvents\n        });\n        if (this.searchEvents.length) {\n          this.searchEvents.forEach(searchEvent => {\n            $$(this.root).trigger(AnalyticsEvents.analyticsEventReady, <IAnalyticsEventArgs>{\n              event: 'CoveoSearchEvent',\n              coveoAnalyticsEventData: searchEvent\n            });\n          });\n        }\n      });\n    }\n  }\n\n  private fillSearchEvent(\n    searchEvent: ISearchEvent,\n    searchInterface: SearchInterface,\n    query: IQuery,\n    queryResults: IQueryResults,\n    queryBoxContentToUse?: string\n  ) {\n    Assert.exists(searchEvent);\n    Assert.exists(searchInterface);\n    Assert.exists(query);\n    Assert.exists(queryResults);\n\n    const currentQuery = <string>searchInterface.queryStateModel.get(QueryStateModel.attributesEnum.q);\n    searchEvent.queryPipeline = queryResults.pipeline;\n    searchEvent.splitTestRunName = searchEvent.splitTestRunName || queryResults.splitTestRun;\n    searchEvent.splitTestRunVersion =\n      searchEvent.splitTestRunVersion || (queryResults.splitTestRun != undefined ? queryResults.pipeline : undefined);\n    searchEvent.originLevel2 = searchEvent.originLevel2 || searchInterface.queryStateModel.get('t') || 'default';\n    searchEvent.queryText = queryBoxContentToUse || currentQuery || query.q || ''; // do not log the query sent to the server if possible; it may contain added syntax depending on options\n    searchEvent.advancedQuery = query.aq || '';\n    searchEvent.didYouMean = query.enableDidYouMean;\n    searchEvent.numberOfResults = queryResults.totalCount;\n    searchEvent.responseTime = queryResults.duration;\n    searchEvent.pageNumber = query.firstResult / query.numberOfResults;\n    searchEvent.resultsPerPage = query.numberOfResults;\n    searchEvent.searchQueryUid = queryResults.searchUid;\n    searchEvent.queryPipeline = queryResults.pipeline;\n    searchEvent.facetState = this.facetState;\n\n    // The context_${key} format is important for the Analytics backend\n    // This is what they use to recognize a custom data that will be used internally by other coveo's service.\n    // In this case, Coveo Machine Learning will be the consumer of this information.\n    if (query.context != undefined) {\n      each(query.context, (value: string, key: string) => (searchEvent.customData[`context_${key}`] = value));\n    }\n\n    if (queryResults.refinedKeywords != undefined && queryResults.refinedKeywords.length != 0) {\n      searchEvent.customData['refinedKeywords'] = queryResults.refinedKeywords;\n    }\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Analytics/PendingSearchEvent.ts","import { Component } from '../ui/Base/Component';\nimport { ResultList } from '../ui/ResultList/ResultList';\nimport { $$ } from './Dom';\nimport { find } from 'underscore';\nimport { Logger } from '../misc/Logger';\n\nexport class ResultListUtils {\n  public static hideIfInfiniteScrollEnabled(cmp: Component) {\n    const infiniteScrollEnabled = ResultListUtils.isInfiniteScrollEnabled(cmp.searchInterface.element);\n\n    if (infiniteScrollEnabled) {\n      cmp.disable();\n      $$(cmp.element).hide();\n      ResultListUtils.warnIfComponentNotNeeded(cmp);\n    } else {\n      cmp.enable();\n      $$(cmp.element).unhide();\n    }\n  }\n\n  public static isInfiniteScrollEnabled(root: HTMLElement) {\n    const resultList = ResultListUtils.getMainResultList(root);\n    return resultList ? !!resultList.options.enableInfiniteScroll : false;\n  }\n\n  public static scrollToTop(root: HTMLElement) {\n    const resultList = ResultListUtils.getMainResultList(root);\n    if (!resultList) {\n      new Logger(this).warn('No active ResultList, scrolling to the top of the Window');\n      return window.scrollTo(0, 0);\n    }\n\n    const searchInterfacePosition = resultList.searchInterface.element.getBoundingClientRect().top;\n    if (searchInterfacePosition > 0) {\n      return;\n    }\n\n    window.scrollTo(0, window.pageYOffset + searchInterfacePosition);\n  }\n\n  private static getMainResultList(root: HTMLElement) {\n    const resultLists = ResultListUtils.getResultLists(root);\n    return find(resultLists, resultList => {\n      const isRecInterface = resultList.searchInterface.element.classList.contains('CoveoRecommendation');\n      return !resultList.disabled && !isRecInterface;\n    });\n  }\n\n  private static getResultLists(root: HTMLElement) {\n    return $$(root)\n      .findAll(`.${ResultListUtils.cssClass()}`)\n      .map(el => <ResultList>Component.get(el, ResultList));\n  }\n\n  private static cssClass() {\n    return Component.computeCssClassName(ResultList);\n  }\n\n  private static warnIfComponentNotNeeded(cmp: Component) {\n    const root = cmp.searchInterface.root;\n    const allListsUseInfiniteScroll = ResultListUtils.allResultListsUseInfiniteScroll(root);\n\n    allListsUseInfiniteScroll && ResultListUtils.notNeededComponentWarning(cmp);\n  }\n\n  private static allResultListsUseInfiniteScroll(root: HTMLElement) {\n    const listsWithInfiniteScrollDisabled = ResultListUtils.getResultLists(root).filter(\n      resultList => !resultList.options.enableInfiniteScroll\n    );\n\n    return listsWithInfiniteScrollDisabled.length === 0;\n  }\n\n  private static notNeededComponentWarning(cmp: Component) {\n    const cmpCssClass = Component.computeCssClassNameForType(cmp.type);\n    const message = `The ${cmpCssClass} component is not needed because all ${ResultListUtils.cssClass()} components have enableInfiniteScroll set to 'true'.\n    For the best performance, remove the ${cmpCssClass} component from your search page.`;\n\n    new Logger(cmp).warn(message);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/ResultListUtils.ts","import { Assert } from '../../misc/Assert';\nimport { Utils } from '../../utils/Utils';\nimport { IGroupByValue } from '../../rest/GroupByValue';\nimport { IIndexFieldValue } from '../../rest/FieldValue';\nimport * as Globalize from 'globalize';\nimport { isString, isObject } from 'underscore';\n\n/**\n * A class which holds information and operation available on a single facet value returned by a {@link IGroupByRequest}.<br/>\n * This class is used extensively in the {@link Facet} component.\n */\nexport class FacetValue {\n  value: string;\n  lookupValue: string;\n  occurrences: number;\n  computedField: number;\n  delta: number;\n  score: number;\n  selected: boolean = false;\n  excluded: boolean = false;\n  waitingForDelta: boolean = false;\n\n  reset() {\n    this.selected = false;\n    this.excluded = false;\n  }\n\n  updateCountsFromNewValue(newValue: FacetValue) {\n    Assert.exists(newValue);\n    this.occurrences = newValue.occurrences;\n    this.delta = newValue.delta;\n    this.computedField = newValue.computedField;\n  }\n\n  clone(): FacetValue {\n    this.computedField = undefined;\n    this.delta = undefined;\n    return this;\n  }\n\n  cloneWithZeroOccurrences(): FacetValue {\n    this.occurrences = 0;\n    return this.clone();\n  }\n\n  cloneWithDelta(count: number, delta: number): FacetValue {\n    Assert.isLargerOrEqualsThan(0, count);\n    var clone = this.cloneWithZeroOccurrences();\n    clone.delta = delta;\n    clone.occurrences = count;\n    return clone;\n  }\n\n  getFormattedCount() {\n    var count: string = undefined;\n    if (Utils.exists(this.delta) && this.delta > 0) {\n      count = '+' + Globalize.format(this.delta, 'n0');\n    } else {\n      if (this.occurrences > 0) {\n        count = Globalize.format(this.occurrences, 'n0');\n      }\n    }\n    return count;\n  }\n\n  getFormattedComputedField(format: string) {\n    if (this.computedField != 0) {\n      return Globalize.format(this.computedField, format);\n    } else {\n      return undefined;\n    }\n  }\n\n  static create(value: any): FacetValue {\n    if (isString(value)) {\n      return FacetValue.createFromValue(value);\n    } else if (isObject(value)) {\n      if ('computedFieldResults' in value) {\n        return FacetValue.createFromGroupByValue(value);\n      } else {\n        return FacetValue.createFromFieldValue(value);\n      }\n    } else {\n      throw new Error(\"Can't create value from \" + value);\n    }\n  }\n\n  static createFromValue(value: string): FacetValue {\n    Assert.isNonEmptyString(value);\n\n    var facetValue = new FacetValue();\n    facetValue.value = value;\n    facetValue.lookupValue = value;\n\n    return facetValue;\n  }\n\n  static createFromGroupByValue(groupByValue: IGroupByValue): FacetValue {\n    Assert.exists(groupByValue);\n\n    Assert.exists(groupByValue);\n\n    var facetValue = new FacetValue();\n    facetValue.value = groupByValue.value;\n    facetValue.lookupValue = Utils.exists(groupByValue.lookupValue) ? groupByValue.lookupValue : groupByValue.value;\n    facetValue.occurrences = groupByValue.numberOfResults;\n    facetValue.computedField = Utils.isNonEmptyArray(groupByValue.computedFieldResults) ? groupByValue.computedFieldResults[0] : undefined;\n    facetValue.score = groupByValue.score;\n\n    return facetValue;\n  }\n\n  static createFromFieldValue(fieldValue: IIndexFieldValue): FacetValue {\n    Assert.exists(fieldValue);\n\n    var facetValue = new FacetValue();\n    facetValue.value = fieldValue.value;\n    facetValue.lookupValue = fieldValue.lookupValue;\n    facetValue.occurrences = fieldValue.numberOfResults;\n\n    return facetValue;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Facet/FacetValue.ts","import { Options } from '../misc/Options';\nimport { HighlightUtils } from './HighlightUtils';\nimport { StringUtils } from './StringUtils';\nimport { Utils } from './Utils';\nimport { IHighlight, IHighlightTerm, IHighlightPhrase } from '../rest/Highlight';\nimport { $$ } from './Dom';\nimport * as _ from 'underscore';\n\n// \\u2011: http://graphemica.com/%E2%80%91\n// Used to split terms and phrases. Should match characters that can separate words.\nconst wordBoundary = \"[\\\\.\\\\-\\\\u2011\\\\s~=,.\\\\|\\\\/:'`’;_()!?&+]\";\nconst regexStart = '(' + wordBoundary + '|^)(';\n\n/**\n * The possible options when highlighting a stream.\n */\nexport interface IStreamHighlightOptions {\n  /**\n   * The css class that the highlight will generate.\n   * Defaults to `coveo-highlight`.\n   */\n  cssClass?: string;\n  /**\n   * The regex flags that should be applied to generate the highlighting.\n   * Defaults to `gi`.\n   */\n  regexFlags?: string;\n}\n\nexport class DefaultStreamHighlightOptions extends Options implements IStreamHighlightOptions {\n  constructor(public cssClass = 'coveo-highlight', public shorten = 0, public regexFlags = 'gi') {\n    super();\n  }\n}\n\nexport class StreamHighlightUtils {\n  static highlightStreamHTML(\n    stream: string,\n    termsToHighlight: IHighlightTerm,\n    phrasesToHighlight: IHighlightPhrase,\n    options?: IStreamHighlightOptions\n  ) {\n    const opts = new DefaultStreamHighlightOptions().merge(options);\n    const container = createStreamHTMLContainer(stream);\n    const allElements = $$(container).findAll('*');\n    if (allElements.length > 0) {\n      _.each(allElements, (elem: HTMLElement, i: number) => {\n        const text = $$(elem).text();\n        elem.innerHTML = HighlightUtils.highlightString(\n          text,\n          getRestHighlightsForAllTerms(text, termsToHighlight, phrasesToHighlight, opts),\n          [],\n          opts.cssClass\n        );\n      });\n    } else {\n      return StreamHighlightUtils.highlightStreamText(stream, termsToHighlight, phrasesToHighlight, options);\n    }\n    return container.innerHTML;\n  }\n\n  static highlightStreamText(\n    stream: string,\n    termsToHighlight: IHighlightTerm,\n    phrasesToHighlight: IHighlightPhrase,\n    options?: IStreamHighlightOptions\n  ) {\n    const opts = new DefaultStreamHighlightOptions().merge(options);\n    return HighlightUtils.highlightString(\n      stream,\n      getRestHighlightsForAllTerms(stream, termsToHighlight, phrasesToHighlight, opts),\n      [],\n      opts.cssClass\n    );\n  }\n}\n\nexport function getRestHighlightsForAllTerms(\n  toHighlight: string,\n  termsToHighlight: IHighlightTerm,\n  phrasesToHighlight: IHighlightPhrase,\n  opts: IStreamHighlightOptions\n): IHighlight[] {\n  const indexes = [];\n  const termsFromPhrases = _.chain(phrasesToHighlight).values().map(_.keys).flatten().value();\n\n  _.each(termsToHighlight, (terms: string[], term: string) => {\n    const uniqueTermsToHighlight = _.chain([term])\n      .concat(terms)\n      .compact()\n      .difference(termsFromPhrases)\n      .map(Utils.escapeRegexCharacter)\n      .sortBy('length')\n      .value();\n\n    if (uniqueTermsToHighlight.length === 0) {\n      return;\n    }\n\n    const regex = `${regexStart}${uniqueTermsToHighlight.join('|')})(?=(?:${wordBoundary}|$)+)`;\n    const indexesFound = StringUtils.getHighlights(toHighlight, new RegExp(regex, opts.regexFlags), term);\n    if (indexesFound != undefined && Utils.isNonEmptyArray(indexesFound)) {\n      indexes.push(indexesFound);\n    }\n  });\n\n  _.each(phrasesToHighlight, (phrase, origPhrase) => {\n    const split = origPhrase.split(' ');\n    let regex = regexStart;\n    _.each(split, (origWord, i) => {\n      regex += '(?:' + [origWord].concat(phrase[origWord]).join('|') + ')';\n      if (i == split.length - 1) {\n        regex += '(?=';\n      }\n      regex += wordBoundary;\n      if (i == split.length - 1) {\n        regex += '|$)';\n      }\n      if (i != split.length - 1) {\n        regex += '+';\n      }\n    });\n    regex += ')';\n    const indexesFound = StringUtils.getHighlights(toHighlight, new RegExp(regex, opts.regexFlags), origPhrase);\n    if (indexesFound != undefined && Utils.isNonEmptyArray(indexesFound)) {\n      indexes.push(indexesFound);\n    }\n  });\n\n  return _.chain(indexes)\n    .flatten()\n    .compact()\n    .uniq((highlight: IHighlight) => {\n      return highlight.offset;\n    })\n    .sortBy((highlight: IHighlight) => {\n      return highlight.offset;\n    })\n    .map(highlight => {\n      const keysFromTerms = _.keys(termsToHighlight);\n      const keysFromPhrases = _.keys(phrasesToHighlight);\n      const keys = keysFromTerms.concat(keysFromPhrases);\n      const group = _.indexOf(keys, highlight.dataHighlightGroupTerm) + 1;\n      return _.extend(highlight, { dataHighlightGroup: group });\n    })\n    .value();\n}\n\nfunction createStreamHTMLContainer(stream: string) {\n  const container = $$('div').el;\n  container.innerHTML = stream;\n  return container;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/StreamHighlightUtils.ts","import { IQueryResult } from '../../rest/QueryResult';\nimport { Utils } from '../../utils/Utils';\nimport { l } from '../../strings/Strings';\nimport { Assert } from '../../misc/Assert';\nimport { keys, escape } from 'underscore';\n\n// On-demand mapping of file types to captions. Used by facets, but I don't\n// really like this. Maybe a dedicated filetype facet would be better? Hmm...\nlet fileTypeCaptions: { [id: string]: string };\n\nexport interface IFileTypeInfo {\n  icon: string;\n  caption: string;\n}\n\nexport class FileTypes {\n  static get(result: IQueryResult): IFileTypeInfo {\n    const objecttype = <string>Utils.getFieldValue(result, 'objecttype');\n    const filetype = <string>Utils.getFieldValue(result, 'filetype');\n\n    // When @objecttype is File, Item, Document, or ContentVersion we fallback on @filetype for icons and such\n    if (Utils.isNonEmptyString(objecttype) && !objecttype.match(/^(file|document|contentversion|item)$/i)) {\n      return FileTypes.getObjectType(objecttype);\n    } else if (Utils.isNonEmptyString(filetype)) {\n      return FileTypes.getFileType(filetype);\n    } else {\n      return {\n        // This will render a default icon. Really it should not happen.\n        icon: 'coveo-icon filetype',\n        caption: l('Unknown')\n      };\n    }\n  }\n\n  static getObjectType(objecttype: string, fallbackOnLocalization = true): IFileTypeInfo {\n    // We must use lowercase filetypes because that's how the CSS classes\n    // are generated (they are case sensitive, alas).\n    const loweredCaseObjecttype = objecttype.toLowerCase();\n\n    const variableValue = `objecttype_${loweredCaseObjecttype}`;\n    // Most object types have a set of localized strings in the main dictionary\n    let localizedString = l(variableValue);\n    // Some strings are sent as `objecttype_[...]` to specify a dictionary to use. If there's no match, try using\n    // the main dictionary by using the original value.\n    if (localizedString.toLowerCase() == variableValue.toLowerCase()) {\n      localizedString = fallbackOnLocalization ? l(objecttype) : objecttype;\n    }\n\n    return this.safelyBuildFileTypeInfo('objecttype', loweredCaseObjecttype, localizedString);\n  }\n\n  static getFileType(filetype: string, fallbackOnLocalization = true): IFileTypeInfo {\n    // We must use lowercase filetypes because that's how the CSS classes\n    // are generated (they are case sensitive, alas).\n    let loweredCaseFiletype = filetype.toLowerCase();\n\n    // Sometimes, filetype begins with a period (typically means the index has\n    // no idea and uses the file extension as a filetype).\n    if (loweredCaseFiletype[0] == '.') {\n      loweredCaseFiletype = loweredCaseFiletype.substring(1);\n    }\n\n    const variableValue = `filetype_${loweredCaseFiletype}`;\n    // Most filetypes have a set of localized strings in the main dictionary\n    let localizedString = l(variableValue);\n    if (localizedString.toLowerCase() == variableValue.toLowerCase()) {\n      // Some strings are sent as `filetype_[...]` to specify a dictionary to use. If there's no match, try using\n      // The main dictionary by using the original value.\n      localizedString = fallbackOnLocalization ? l(filetype) : filetype;\n    }\n\n    return this.safelyBuildFileTypeInfo('filetype', loweredCaseFiletype, localizedString);\n  }\n\n  static getFileTypeCaptions() {\n    if (fileTypeCaptions == undefined) {\n      fileTypeCaptions = {};\n      var strings = String['locales'][String['locale'].toLowerCase()];\n      Assert.isNotUndefined(strings);\n      keys(strings).forEach(key => {\n        if (key.indexOf('filetype_') == 0) {\n          fileTypeCaptions[key.substr('filetype_'.length)] = key.toLocaleString();\n        } else if (key.indexOf('objecttype_') == 0) {\n          fileTypeCaptions[key.substr('objecttype_'.length)] = key.toLocaleString();\n        }\n      });\n    }\n\n    return fileTypeCaptions;\n  }\n\n  static safelyBuildFileTypeInfo(fieldname: string, iconClass: string, caption: string): IFileTypeInfo {\n    return {\n      icon: `coveo-icon ${fieldname} ${escape(iconClass.replace(' ', '-'))}`,\n      caption: escape(caption)\n    };\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Misc/FileTypes.ts","import { Assert } from '../../misc/Assert';\nimport { UnderscoreTemplate } from './UnderscoreTemplate';\nimport { Utils } from '../../utils/Utils';\n\n/**\n * A function that describe a templates.\n *\n * It can take any number of arguments, but needs to return a simple string.\n */\nexport interface ITemplateHelperFunction {\n  (...args: any[]): string;\n}\n\n/**\n * Allow to register and return template helpers (essentially: Utility functions that can be executed in the context of a template to render complex elements).\n */\nexport class TemplateHelpers {\n  private static helpers: { [templateName: string]: ITemplateHelperFunction } = {};\n  public static fieldHelpers: string[] = [];\n\n  static registerFieldHelper(name: string, helper: (value: string, options?: any) => string) {\n    TemplateHelpers.fieldHelpers.push(name);\n    TemplateHelpers.registerTemplateHelper(name, helper);\n  }\n\n  static registerTemplateHelper<T1>(name: string, helper: (arg1: T1) => string);\n  static registerTemplateHelper<T1, T2>(name: string, helper: (arg1: T1, arg2: T2) => string);\n  static registerTemplateHelper<T1, T2, T3>(name: string, helper: (arg1: T1, arg2: T2, arg3: T3) => string);\n  static registerTemplateHelper<T1, T2, T3, T4>(name: string, helper: (arg1: T1, arg2: T2, arg3: T3, arg4: T4) => string);\n  static registerTemplateHelper<T1, T2, T3, T4, T5>(name: string, helper: (arg1: T1, arg2: T2, arg3: T3, arg4: T4, arg5: T5) => string);\n  /**\n   * Register a new helper in the framework, that will be available inside all templates execution context.\n   * @param name\n   * @param helper\n   */\n  static registerTemplateHelper(name: string, helper: ITemplateHelperFunction) {\n    Assert.isNonEmptyString(name);\n    Assert.exists(helper);\n\n    TemplateHelpers.registerTemplateHelperInUnderscore(name, helper);\n    TemplateHelpers.helpers[name] = helper;\n  }\n\n  /**\n   * Return a template helper function\n   * @param name\n   * @returns {ITemplateHelperFunction}\n   */\n  static getHelper(name: string): ITemplateHelperFunction {\n    return Utils.getCaseInsensitiveProperty(TemplateHelpers.helpers, name);\n  }\n\n  /**\n   * Get all available helpers\n   */\n  static getHelpers(): { [templateName: string]: ITemplateHelperFunction } {\n    return TemplateHelpers.helpers;\n  }\n\n  private static registerTemplateHelperInUnderscore(name: string, helper: ITemplateHelperFunction) {\n    Assert.isNonEmptyString(name);\n    Assert.exists(helper);\n    UnderscoreTemplate.registerTemplateHelper(name, helper);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Templates/TemplateHelpers.ts","import { Template, IInstantiateTemplateOptions, DefaultInstantiateTemplateOptions } from './Template';\nimport { UnderscoreTemplate } from './UnderscoreTemplate';\nimport { TemplateCache } from './TemplateCache';\nimport { IQueryResult } from '../../rest/QueryResult';\nimport { Assert } from '../../misc/Assert';\nimport { $$ } from '../../utils/Dom';\nimport * as _ from 'underscore';\nimport { Initialization } from '../Base/Initialization';\n\n/*\n * This renders the appropriate result template, found in TemplateCache,\n * according to its condition.\n *\n * For example, a result with a filetype of `YoutubeVideo` will get rendered\n * with the `YoutubeVideo` template, because the latter is registered with a\n * `condition` of `raw.filetype == 'YoutubeVideo'`.\n */\nexport class DefaultResultTemplate extends Template {\n  constructor() {\n    super();\n    // For default result template, register everything since it's not possible to \"scan\" them before they are rendered.\n\n    this.addFields(Initialization.getRegisteredFieldsForQuery());\n  }\n\n  public instantiateToString(object: IQueryResult, instantiateOptions: IInstantiateTemplateOptions = {}): string {\n    Assert.exists(object);\n    let mergedOptions = new DefaultInstantiateTemplateOptions().merge(instantiateOptions);\n    object = _.extend({}, object, UnderscoreTemplate.templateHelpers);\n\n    const templates = _.chain(TemplateCache.getDefaultTemplates())\n      .map(name => TemplateCache.getTemplate(name))\n      .value();\n\n    // Put templates with conditions first\n    const sortedTemplates = _.chain(templates)\n      .sortBy(template => template.condition == null)\n      .sortBy(template => template.fieldsToMatch == null)\n      .value();\n\n    for (let i = 0; i < sortedTemplates.length; i++) {\n      const result = sortedTemplates[i].instantiateToString(object, mergedOptions);\n      if (result != null) {\n        return result;\n      }\n    }\n\n    return this.getFallbackTemplate();\n  }\n\n  public getFields() {\n    var defaultTemplates = _.map(TemplateCache.getDefaultTemplates(), name => TemplateCache.getTemplate(name));\n    return _.flatten(_.map(defaultTemplates, (template: Template) => template.getFields()));\n  }\n\n  public getType() {\n    return 'DefaultResultTemplate';\n  }\n\n  public getFallbackTemplate(): string {\n    let titleContainer = $$('div', {\n      className: 'coveo-title',\n      role: 'heading',\n      ariaLevel: 2\n    });\n\n    let resultLink = $$('a', { className: 'CoveoResultLink' });\n\n    titleContainer.append(resultLink.el);\n\n    let excerpt = $$('div', {\n      className: 'CoveoExcerpt'\n    });\n\n    let resultContainer = $$('div');\n    resultContainer.append(titleContainer.el);\n    resultContainer.append(excerpt.el);\n    return resultContainer.el.outerHTML;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Templates/DefaultResultTemplate.ts","import { ResponsiveDropdownHeader } from './ResponsiveDropdownHeader';\nimport { IResponsiveDropdownContent } from './ResponsiveDropdownContent';\nimport { $$, Dom } from '../../../utils/Dom';\nimport { EventsUtils } from '../../../utils/EventsUtils';\nimport * as _ from 'underscore';\nimport { AccessibleButton } from '../../../utils/AccessibleButton';\nimport { KeyboardUtils, KEYBOARD } from '../../../utils/KeyboardUtils';\nimport { InitializationEvents } from '../../../events/InitializationEvents';\nimport { Assert } from '../../../misc/Assert';\nimport { l } from '../../../strings/Strings';\n\nexport enum ResponsiveDropdownEvent {\n  OPEN = 'responsiveDropdownOpen',\n  CLOSE = 'responsiveDropdownClose'\n}\n\ntype HandlerCall = { handler: Function; context: any };\n\nexport class ResponsiveDropdown {\n  public static TRANSPARENT_BACKGROUND_OPACITY: string = '0.9';\n  public static DROPDOWN_BACKGROUND_CSS_CLASS_NAME: string = 'coveo-dropdown-background';\n  public static DROPDOWN_BACKGROUND_ACTIVE_CSS_CLASS_NAME: string = 'coveo-dropdown-background-active';\n\n  public isOpened: boolean = false;\n  private onOpenHandlers: HandlerCall[] = [];\n  private onCloseHandlers: HandlerCall[] = [];\n  private popupBackground: Dom;\n  private popupBackgroundIsEnabled: boolean = true;\n  private scrollableContainerToLock: HTMLElement = null;\n  private previousSibling: Dom;\n  private parent: Dom;\n\n  constructor(public dropdownContent: IResponsiveDropdownContent, public dropdownHeader: ResponsiveDropdownHeader, public coveoRoot: Dom) {\n    Assert.exists(dropdownContent);\n    Assert.exists(dropdownHeader);\n    Assert.exists(coveoRoot);\n\n    this.popupBackground = this.buildPopupBackground();\n    this.bindOnClickDropdownHeaderEvent();\n    this.saveContentPosition();\n    this.bindOnKeyboardEscapeEvent();\n    this.bindNukeEvents();\n  }\n\n  private set scrollLocked(lock: boolean) {\n    if (!this.scrollableContainerToLock) {\n      return;\n    }\n    this.scrollableContainerToLock.style.overflow = lock ? 'hidden' : '';\n  }\n\n  public registerOnOpenHandler(handler: Function, context) {\n    Assert.exists(handler);\n    this.onOpenHandlers.push({ handler: handler, context: context });\n  }\n\n  public registerOnCloseHandler(handler: Function, context) {\n    Assert.exists(handler);\n    this.onCloseHandlers.push({ handler: handler, context: context });\n  }\n\n  public cleanUp() {\n    this.close();\n    this.dropdownHeader.cleanUp();\n    this.dropdownContent.cleanUp();\n    this.restoreContentPosition();\n  }\n\n  public open() {\n    this.isOpened = true;\n    this.dropdownHeader.open();\n    this.dropdownContent.positionDropdown();\n    _.each(this.onOpenHandlers, handlerCall => {\n      handlerCall.handler.apply(handlerCall.context);\n    });\n    this.showPopupBackground();\n    this.lockScroll();\n    $$(this.dropdownHeader.element).trigger(ResponsiveDropdownEvent.OPEN);\n  }\n\n  public close() {\n    this.isOpened = false;\n    _.each(this.onCloseHandlers, handlerCall => {\n      handlerCall.handler.apply(handlerCall.context);\n    });\n\n    this.dropdownHeader.close();\n    this.dropdownContent.hideDropdown();\n    this.hidePopupBackground();\n    this.unlockScroll();\n    $$(this.dropdownHeader.element).trigger(ResponsiveDropdownEvent.CLOSE);\n  }\n\n  public disablePopupBackground() {\n    this.popupBackgroundIsEnabled = false;\n  }\n\n  public enableScrollLocking(scrollableContainer: HTMLElement) {\n    this.scrollableContainerToLock = scrollableContainer;\n  }\n\n  private bindOnClickDropdownHeaderEvent() {\n    new AccessibleButton()\n      .withElement(this.dropdownHeader.element)\n      .withSelectAction(() => (this.isOpened ? this.close() : this.open()))\n      .withLabel(l(this.isOpened ? 'CloseFiltersDropdown' : 'OpenFiltersDropdown'))\n      .build();\n  }\n\n  private closeIfOpened = () => {\n    this.isOpened && this.close();\n  };\n\n  private bindOnKeyboardEscapeEvent() {\n    $$(document.documentElement).on('keyup', KeyboardUtils.keypressAction(KEYBOARD.ESCAPE, this.closeIfOpened));\n  }\n\n  private unbindOnKeyboardEscapeEvent() {\n    $$(document.documentElement).off('keyup', KeyboardUtils.keypressAction(KEYBOARD.ESCAPE, this.closeIfOpened));\n  }\n\n  private bindNukeEvents() {\n    $$(this.coveoRoot).on(InitializationEvents.nuke, () => {\n      this.unbindOnKeyboardEscapeEvent();\n    });\n  }\n\n  private showPopupBackground() {\n    if (this.popupBackgroundIsEnabled) {\n      this.coveoRoot.el.appendChild(this.popupBackground.el);\n      window.getComputedStyle(this.popupBackground.el).opacity;\n      this.popupBackground.el.style.opacity = ResponsiveDropdown.TRANSPARENT_BACKGROUND_OPACITY;\n      this.popupBackground.addClass(ResponsiveDropdown.DROPDOWN_BACKGROUND_ACTIVE_CSS_CLASS_NAME);\n    }\n  }\n\n  private lockScroll() {\n    this.scrollLocked = true;\n  }\n\n  private unlockScroll() {\n    this.scrollLocked = false;\n  }\n\n  private hidePopupBackground() {\n    if (this.popupBackgroundIsEnabled) {\n      // forces the browser to reflow the element, so that the transition is applied.\n      window.getComputedStyle(this.popupBackground.el).opacity;\n      this.popupBackground.el.style.opacity = '0';\n      this.popupBackground.removeClass(ResponsiveDropdown.DROPDOWN_BACKGROUND_ACTIVE_CSS_CLASS_NAME);\n    }\n  }\n\n  private buildPopupBackground(): Dom {\n    let popupBackground = $$('div', { className: ResponsiveDropdown.DROPDOWN_BACKGROUND_CSS_CLASS_NAME });\n    EventsUtils.addPrefixedEvent(popupBackground.el, 'TransitionEnd', () => {\n      if (popupBackground.el.style.opacity == '0') {\n        popupBackground.detach();\n      }\n    });\n    popupBackground.on('click', () => this.close());\n    return popupBackground;\n  }\n\n  private saveContentPosition() {\n    let dropdownContentPreviousSibling = this.dropdownContent.element.el.previousSibling;\n    let dropdownContentParent = this.dropdownContent.element.el.parentElement;\n    this.previousSibling = dropdownContentPreviousSibling ? $$(<HTMLElement>dropdownContentPreviousSibling) : null;\n    this.parent = $$(dropdownContentParent);\n  }\n\n  private restoreContentPosition() {\n    if (this.previousSibling) {\n      this.dropdownContent.element.insertAfter(this.previousSibling.el);\n    } else {\n      this.parent.prepend(this.dropdownContent.element.el);\n    }\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResponsiveComponents/ResponsiveDropdown/ResponsiveDropdown.ts","import { contains, each, escape, extend, filter, find, isArray, isObject, isString, keys, map, omit } from 'underscore';\nimport { exportGlobally } from '../../GlobalExports';\nimport { Assert } from '../../misc/Assert';\nimport { IQueryResult } from '../../rest/QueryResult';\nimport { l } from '../../strings/Strings';\nimport { AccessibleButton } from '../../utils/AccessibleButton';\nimport { DateUtils, IDateToStringOptions } from '../../utils/DateUtils';\nimport { $$ } from '../../utils/Dom';\nimport { StringUtils } from '../../utils/StringUtils';\nimport { Utils } from '../../utils/Utils';\nimport { analyticsActionCauseList } from '../Analytics/AnalyticsActionListMeta';\nimport { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { IComponentOptionsObjectOptionArgs, IFieldConditionOption, IFieldOption } from '../Base/IComponentOptions';\nimport { Initialization } from '../Base/Initialization';\nimport { FacetUtils } from '../Facet/FacetUtils';\nimport { TemplateFieldsEvaluator } from '../Templates/TemplateFieldsEvaluator';\nimport { TemplateHelpers } from '../Templates/TemplateHelpers';\nimport { IFieldValueCompatibleFacet, isFacetFieldValueCompatible } from './IFieldValueCompatibleFacet';\nimport { ComponentsTypes } from '../../utils/ComponentsTypes';\n\nexport interface IFieldValueOptions {\n  field?: IFieldOption;\n  facet?: string;\n  dynamicFacet?: string;\n  htmlValue?: boolean;\n  helper?: string;\n  helperOptions?: { [key: string]: any };\n  splitValues?: boolean;\n  separator?: string;\n  displaySeparator?: string;\n  textCaption?: string;\n  conditions?: IFieldConditionOption[];\n}\n\nexport interface IAnalyticsFieldValueMeta {\n  facetId: string;\n  facetField: string;\n  facetValue?: string;\n  facetTitle?: string;\n}\n\nfunction showOnlyWithHelper<T>(helpers: string[], options?: T): T {\n  if (options == null) {\n    options = <any>{};\n  }\n  (<any>options).helpers = helpers;\n  return options;\n}\n\n/**\n * The FieldValue component displays the value of a field associated to its parent search result. It is normally usable\n * within a {@link FieldTable}.\n *\n * This component is a result template component (see [Result Templates](https://docs.coveo.com/en/413/)).\n *\n * A common use of this component is to display a specific field value which also happens to be an existing\n * {@link Facet.options.field}. When the user clicks on the FieldValue component, it activates the corresponding Facet.\n */\nexport class FieldValue extends Component {\n  static ID = 'FieldValue';\n\n  static doExport = () => {\n    exportGlobally({\n      FieldValue: FieldValue\n    });\n  };\n\n  /**\n   * The options for the component\n   * @componentOptions\n   */\n  static options: IFieldValueOptions = {\n    /**\n     * Specifies the field that the FieldValue should display.\n     *\n     * Specifying a value for this parameter is required in order for the FieldValue component to work.\n     */\n    field: ComponentOptions.buildFieldOption({ defaultValue: '@field', required: true }),\n\n    /**\n     * Specifies the {@link Facet} component to toggle when the end user clicks the FieldValue.\n     *\n     * Default value is the value of {@link FieldValue.options.field}.\n     *\n     * **Note:**\n     * > If the target {@link Facet.options.id} is is not the same as its {@link Facet.options.field}), you must specify\n     * > this option manually in order to link to the correct Facet.\n     */\n    facet: ComponentOptions.buildStringOption({ postProcessing: (value, options) => value || options.field }),\n\n    /**\n     * Specifies whether the content to display is an HTML element.\n     *\n     * Default value is `false`.\n     */\n    htmlValue: ComponentOptions.buildBooleanOption({ defaultValue: false }),\n\n    /**\n     * Specifies whether to split the FieldValue at each {@link FieldValue.options.separator}.\n     *\n     * This is useful for splitting groups using a {@link Facet.options.field}.\n     *\n     * When this option is `true`, the displayed values are split by the {@link FieldValue.options.displaySeparator}.\n     *\n     * Default value is `false`.\n     */\n    splitValues: ComponentOptions.buildBooleanOption({ defaultValue: false }),\n\n    /**\n     * If {@link FieldValue.options.splitValues} is `true`, specifies the separator string which separates multi-value\n     * fields in the index.\n     *\n     * See {@link FieldValue.options.displaySeparator}.\n     *\n     * Default value is `\";\"`.\n     */\n    separator: ComponentOptions.buildStringOption({ depend: 'splitValues', defaultValue: ';' }),\n\n    /**\n     * If {@link FieldValue.options.splitValues} is `true`, specifies the string to use when displaying multi-value\n     * fields in the UI.\n     *\n     * The component will insert this string between each value it displays from a multi-value field.\n     *\n     * See also {@link FieldValue.options.separator}.\n     *\n     * Default value is `\", \"`.\n     */\n    displaySeparator: ComponentOptions.buildStringOption({ depend: 'splitValues', defaultValue: ', ' }),\n\n    /**\n     * Specifies the helper that the FieldValue should use to display its content.\n     *\n     * While several helpers exist by default (see {@link ICoreHelpers}), it is also possible for you to create your own\n     * custom helpers (see {@link TemplateHelpers}).\n     */\n    helper: ComponentOptions.buildHelperOption(),\n\n    /**\n     * Specifies the options to call on the specified helper.\n     */\n    helperOptions: ComponentOptions.buildObjectOption(<IComponentOptionsObjectOptionArgs>{\n      subOptions: {\n        text: ComponentOptions.buildStringOption(showOnlyWithHelper(['anchor'])),\n        target: ComponentOptions.buildStringOption(showOnlyWithHelper(['anchor'])),\n        class: ComponentOptions.buildStringOption(showOnlyWithHelper(['anchor'])),\n\n        format: ComponentOptions.buildStringOption(showOnlyWithHelper(['number'])),\n\n        decimals: ComponentOptions.buildNumberOption(showOnlyWithHelper(['currency'], { min: 0 })),\n        symbol: ComponentOptions.buildStringOption(showOnlyWithHelper(['currency'])),\n\n        useTodayYesterdayAndTomorrow: ComponentOptions.buildBooleanOption(\n          showOnlyWithHelper(['date', 'dateTime', 'emailDateTime', 'time'], { defaultValue: true })\n        ),\n        useWeekdayIfThisWeek: ComponentOptions.buildBooleanOption(\n          showOnlyWithHelper(['date', 'dateTime', 'emailDateTime', 'time'], { defaultValue: true })\n        ),\n        omitYearIfCurrentOne: ComponentOptions.buildBooleanOption(\n          showOnlyWithHelper(['date', 'dateTime', 'emailDateTime', 'time'], { defaultValue: true })\n        ),\n        useLongDateFormat: ComponentOptions.buildBooleanOption(\n          showOnlyWithHelper(['date', 'dateTime', 'emailDateTime', 'time'], { defaultValue: false })\n        ),\n        includeTimeIfToday: ComponentOptions.buildBooleanOption(\n          showOnlyWithHelper(['date', 'dateTime', 'emailDateTime', 'time'], { defaultValue: true })\n        ),\n        includeTimeIfThisWeek: ComponentOptions.buildBooleanOption(\n          showOnlyWithHelper(['date', 'dateTime', 'emailDateTime', 'time'], { defaultValue: true })\n        ),\n        alwaysIncludeTime: ComponentOptions.buildBooleanOption(\n          showOnlyWithHelper(['date', 'dateTime', 'emailDateTime', 'time'], { defaultValue: false })\n        ),\n        predefinedFormat: ComponentOptions.buildStringOption(showOnlyWithHelper(['date', 'dateTime', 'emailDateTime', 'time'])),\n\n        companyDomain: ComponentOptions.buildStringOption(showOnlyWithHelper(['email'])),\n        me: ComponentOptions.buildStringOption(showOnlyWithHelper(['email'])),\n        lengthLimit: ComponentOptions.buildNumberOption(showOnlyWithHelper(['email'], { min: 1 })),\n        truncateName: ComponentOptions.buildBooleanOption(showOnlyWithHelper(['email'])),\n\n        alt: ComponentOptions.buildStringOption(showOnlyWithHelper(['image'])),\n        height: ComponentOptions.buildStringOption(showOnlyWithHelper(['image'])),\n        width: ComponentOptions.buildStringOption(showOnlyWithHelper(['image'])),\n        srcTemplate: ComponentOptions.buildStringOption(showOnlyWithHelper(['image'])),\n\n        precision: ComponentOptions.buildNumberOption(showOnlyWithHelper(['size'], { min: 0, defaultValue: 2 })),\n        base: ComponentOptions.buildNumberOption(showOnlyWithHelper(['size'], { min: 0, defaultValue: 0 })),\n        isMilliseconds: ComponentOptions.buildBooleanOption(showOnlyWithHelper(['timeSpan'])),\n\n        length: ComponentOptions.buildNumberOption(showOnlyWithHelper(['shorten', 'shortenPath', 'shortenUri'], { defaultValue: 200 }))\n      }\n    }),\n\n    /**\n     * Specifies a caption to display before the value.\n     *\n     * Default value is `undefined`.\n     *\n     * @availablesince [January 2017 Release (v1.1865.9)](https://docs.coveo.com/en/396/#january-2017-release-v118659)\n     */\n    textCaption: ComponentOptions.buildLocalizedStringOption(),\n\n    /**\n     * A field-based condition that must be satisfied by the query result item for the component to be rendered.\n     *\n     * Note: This option uses a distinctive markup configuration syntax allowing multiple conditions to be expressed. Its underlying logic is the same as that of the field value conditions mechanism used by result templates.\n     *\n     * **Examples:**\n     * Render the component if the query result item's @documenttype field value is Article or Documentation.\n     * ```html\n     * <div class=\"CoveoFieldValue\" data-field=\"@author\" data-condition-field-documenttype=\"Article, Documentation\"></div>\n     * ```\n     * Render the component if the query result item's @documenttype field value is anything but Case.\n     * ```html\n     * <div class=\"CoveoFieldValue\" data-field=\"@author\" data-condition-field-not-documenttype=\"Case\"></div>\n     * ```\n     * Render the component if the query result item's @documenttype field value is Article, and if its @author field value is anything but Anonymous.\n     * ```html\n     * <div class=\"CoveoFieldValue\" data-field=\"@author\" data-condition-field-documenttype=\"Article\" data-condition-field-not-author=\"Anonymous\"></div>\n     * ```\n     * Default value is `undefined`.\n     */\n    conditions: ComponentOptions.buildFieldConditionOption()\n  };\n\n  static simpleOptions = omit(FieldValue.options, 'helperOptions');\n\n  static helperOptions = <any>{\n    helperOptions: FieldValue.options.helperOptions\n  };\n\n  /**\n   * Creates a new FieldValue.\n   * @param element The HTMLElement on which to instantiate the component.\n   * @param options The options for the FieldValue component.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time).\n   * @param result The result to associate the component with.\n   */\n  constructor(\n    public element: HTMLElement,\n    public options: IFieldValueOptions,\n    bindings?: IComponentBindings,\n    public result?: IQueryResult,\n    fieldValueClassId: string = FieldValue.ID\n  ) {\n    super(element, fieldValueClassId, bindings);\n\n    this.options = ComponentOptions.initOptions(element, FieldValue.simpleOptions, options, FieldValue.ID);\n\n    if (this.options.helper != null) {\n      this.normalizeHelperAndOptions();\n    }\n\n    this.result = this.result || this.resolveResult();\n    Assert.exists(this.result);\n\n    if (TemplateFieldsEvaluator.evaluateFieldsToMatch(this.options.conditions, this.result) && !Utils.isNullOrUndefined(this.getValue())) {\n      this.initialize();\n    } else if (this.element.parentElement != null) {\n      this.element.parentElement.removeChild(this.element);\n    }\n  }\n\n  private initialize() {\n    let loadedValueFromComponent = this.getValue();\n    let values: string[];\n\n    if (isArray(loadedValueFromComponent)) {\n      values = loadedValueFromComponent;\n    } else if (this.options.splitValues) {\n      if (isString(loadedValueFromComponent)) {\n        values = map(loadedValueFromComponent.split(this.options.separator), (v: string) => {\n          return v.trim();\n        });\n      }\n    } else {\n      loadedValueFromComponent = loadedValueFromComponent.toString();\n      values = [loadedValueFromComponent];\n    }\n    if (values.length > 1 && this.isValueHierarchical) {\n      values = values.slice(-1);\n    }\n    this.appendValuesToDom(values);\n    if (this.options.textCaption != null) {\n      this.prependTextCaptionToDom();\n    }\n  }\n\n  /**\n   * Gets the current FieldValue from the current {@link IQueryResult}.\n   *\n   * @returns {any} The current FieldValue or `null` if value is and `Object`.\n   */\n  public getValue() {\n    let value = Utils.getFieldValue(this.result, <string>this.options.field);\n    if (!isArray(value) && isObject(value)) {\n      value = null;\n    }\n    return value;\n  }\n\n  /**\n   * Renders a value to HTML using all of the current FieldValue component options.\n   * @param value The value to render.\n   * @returns {HTMLElement} The element containing the rendered value.\n   */\n  public renderOneValue(value: string): HTMLElement {\n    const element = $$('span').el;\n    let toRender = this.getCaption(value);\n\n    if (this.options.helper) {\n      // Try to resolve and execute version 2 of each helper function if available\n      const helper = TemplateHelpers.getHelper(`${this.options.helper}v2`) || TemplateHelpers.getHelper(`${this.options.helper}`);\n\n      if (Utils.exists(helper)) {\n        toRender = helper.call(this, value, this.getHelperOptions(), this.result);\n      } else {\n        this.logger.warn(\n          `Helper ${this.options.helper} is not found in available helpers. The list of supported helpers is :`,\n          keys(TemplateHelpers.getHelpers())\n        );\n      }\n\n      const fullDateStr = this.getFullDate(value, this.options.helper);\n      if (fullDateStr) {\n        element.setAttribute('title', fullDateStr);\n      }\n      if (this.options.helper == 'date' || this.options.helper == 'dateTime' || this.options.helper == 'emailDateTime') {\n        toRender = StringUtils.capitalizeFirstLetter(toRender);\n      }\n    }\n\n    if (this.options.htmlValue) {\n      element.innerHTML = toRender;\n    } else {\n      element.appendChild(document.createTextNode(toRender));\n    }\n    this.bindEventOnValue(element, value, toRender);\n    return element;\n  }\n\n  protected getValueContainer() {\n    return this.element;\n  }\n\n  private normalizeHelperAndOptions() {\n    this.options = ComponentOptions.initOptions(this.element, FieldValue.helperOptions, this.options, FieldValue.ID);\n    const toFilter = keys(FieldValue.options.helperOptions['subOptions']);\n    const toKeep = filter(toFilter, optionKey => {\n      const optionDefinition = FieldValue.options.helperOptions['subOptions'][optionKey];\n      if (optionDefinition) {\n        const helpers = optionDefinition.helpers;\n        return helpers != null && contains(helpers, this.options.helper);\n      }\n      return false;\n    });\n    this.options.helperOptions = omit(this.options.helperOptions, (value, key) => {\n      return !contains(toKeep, key);\n    });\n  }\n\n  private getHelperOptions() {\n    const inlineOptions = ComponentOptions.loadStringOption(this.element, 'helperOptions', {});\n    if (Utils.isNonEmptyString(inlineOptions)) {\n      return extend({}, this.options.helperOptions, eval('(' + inlineOptions + ')'));\n    }\n    return this.options.helperOptions;\n  }\n\n  private getFullDate(date: string, helper: string) {\n    const fullDateOptions: IDateToStringOptions = {\n      useLongDateFormat: true,\n      useTodayYesterdayAndTomorrow: false,\n      useWeekdayIfThisWeek: false,\n      omitYearIfCurrentOne: false\n    };\n\n    if (helper == 'date') {\n      return DateUtils.dateToString(new Date(parseInt(date)), fullDateOptions);\n    } else if (helper == 'dateTime' || helper == 'emailDateTime') {\n      return DateUtils.dateTimeToString(new Date(parseInt(date)), fullDateOptions);\n    }\n    return '';\n  }\n\n  private appendValuesToDom(values: string[]): void {\n    each(values, (value, index) => {\n      if (value != undefined) {\n        this.getValueContainer().appendChild(this.renderOneValue(value));\n        if (index !== values.length - 1) {\n          this.getValueContainer().appendChild(document.createTextNode(this.options.displaySeparator));\n        }\n      }\n    });\n  }\n\n  private renderTextCaption(): HTMLElement {\n    const element = $$('span', { className: 'coveo-field-caption' }, escape(this.options.textCaption));\n    return element.el;\n  }\n\n  protected prependTextCaptionToDom(): void {\n    const elem = this.getValueContainer();\n    $$(elem).prepend(this.renderTextCaption());\n    // Add a class to the container so the value and the caption wrap together.\n    $$(elem).addClass('coveo-with-label');\n  }\n\n  private bindEventOnValue(element: HTMLElement, originalFacetValue: string, renderedFacetValue: string) {\n    this.bindFacets(element, originalFacetValue, renderedFacetValue);\n  }\n\n  private getCaption(value: string) {\n    for (let facet of this.getFacets()) {\n      const caption = facet.getCaptionForStringValue(value);\n      if (caption) {\n        return caption;\n      }\n    }\n    return FacetUtils.tryToGetTranslatedCaption(this.options.field as string, value);\n  }\n\n  private getFacets() {\n    const facets = ComponentsTypes.getAllFacetsFromSearchInterface(this.searchInterface)\n      .filter(isFacetFieldValueCompatible)\n      .filter(facet => !facet.disabled);\n\n    const facetsWithMatchingId = facets.filter(facet => facet.options.id === this.options.facet);\n    if (facetsWithMatchingId.length) {\n      return facetsWithMatchingId;\n    }\n    return facets.filter(facet => facet.options.field === this.options.field);\n  }\n\n  private get isValueHierarchical() {\n    for (let facet of this.getFacets()) {\n      if (facet.isFieldValueHierarchical) {\n        return true;\n      }\n    }\n    return false;\n  }\n\n  private bindFacets(element: HTMLElement, originalFacetValue: string, renderedFacetValue: string) {\n    const facets = this.getFacets();\n\n    if (!facets.length) {\n      return;\n    }\n\n    const isValueSelected = !!find(facets, facet => facet.hasSelectedValue(originalFacetValue));\n    const selectAction = () => this.handleFacetSelection(isValueSelected, facets, originalFacetValue);\n    this.buildClickableElement(element, isValueSelected, renderedFacetValue, selectAction);\n  }\n\n  private buildClickableElement(element: HTMLElement, isSelected: boolean, value: string, selectAction: () => void) {\n    const label = isSelected ? l('RemoveFilterOn', value) : l('FilterOn', value);\n    new AccessibleButton().withTitle(label).withElement(element).withSelectAction(selectAction).build();\n\n    if (isSelected) {\n      $$(element).addClass('coveo-selected');\n    }\n    $$(element).addClass('coveo-clickable');\n  }\n\n  private handleFacetSelection(isValueSelected: boolean, facets: IFieldValueCompatibleFacet[], value: string) {\n    facets.forEach(facet => {\n      isValueSelected ? facet.deselectValue(value) : facet.selectValue(value);\n    });\n\n    this.executeQuery(value);\n  }\n\n  private executeQuery(value: string) {\n    this.queryController.deferExecuteQuery({\n      beforeExecuteQuery: () =>\n        this.usageAnalytics.logSearchEvent<IAnalyticsFieldValueMeta>(analyticsActionCauseList.documentField, {\n          facetId: this.options.facet,\n          facetField: this.options.field.toString(),\n          facetValue: value.toLowerCase()\n        })\n    });\n  }\n}\n\nInitialization.registerAutoCreateComponent(FieldValue);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/FieldValue/FieldValue.ts","import { IAnalyticsClient } from './AnalyticsClient';\nimport { analyticsActionCauseList, IAnalyticsNoMeta, IAnalyticsResultsSortMeta } from './AnalyticsActionListMeta';\n\nexport function logSearchBoxSubmitEvent(client: IAnalyticsClient) {\n  client.logSearchEvent<IAnalyticsNoMeta>(analyticsActionCauseList.searchboxSubmit, {});\n}\n\nexport function logSortEvent(client: IAnalyticsClient, resultsSortBy: string) {\n  client.logSearchEvent<IAnalyticsResultsSortMeta>(analyticsActionCauseList.resultsSort, {\n    resultsSortBy\n  });\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Analytics/SharedAnalyticsCalls.ts","import { exportGlobally } from '../../GlobalExports';\nimport { l } from '../../strings/Strings';\nimport { $$ } from '../../utils/Dom';\nimport { SVGDom } from '../../utils/SVGDom';\nimport { SVGIcons } from '../../utils/SVGIcons';\nimport { IFormWidget, IFormWidgetSettable } from './FormWidgets';\n\n/**\n * A numeric spinner widget with standard styling.\n */\nexport class NumericSpinner implements IFormWidget, IFormWidgetSettable {\n  private element: HTMLElement;\n  public name: string;\n\n  public static doExport() {\n    exportGlobally({\n      NumericSpinner: NumericSpinner\n    });\n  }\n\n  /**\n   * Creates a new `NumericSpinner`.\n   * @param onChange The function to call when the numeric spinner value changes. This function takes the current\n   * `NumericSpinner` instance as an argument.\n   * @param min The minimum possible value of the numeric spinner.\n   * @param max The maximum possible value of the numeric spinner.\n   * @param label The label to use for the input for accessibility purposes.\n   */\n  constructor(\n    public onChange: (numericSpinner: NumericSpinner) => void = (numericSpinner: NumericSpinner) => {},\n    public min: number = 0,\n    public max?: number,\n    private label?: string\n  ) {\n    this.buildContent();\n    this.bindEvents();\n  }\n\n  /**\n   * Resets the numeric spinner.\n   */\n  public reset() {\n    this.getSpinnerInput().value = '';\n    this.onChange(this);\n  }\n\n  /**\n   * Gets the element on which the numeric spinner is bound.\n   * @returns {HTMLInputElement} The numeric spinner element.\n   */\n  public getElement(): HTMLElement {\n    return this.element;\n  }\n\n  /**\n   * Gets the numeric spinner currently selected value (as a string).\n   * @returns {string} The numeric spinner value.\n   */\n  public getValue(): string {\n    return this.getSpinnerInput().value;\n  }\n\n  /**\n   * Gets the numeric spinner currently selected value (as an integer).\n   * @returns {number} The numeric spinner value.\n   */\n  public getIntValue(): number {\n    return this.getSpinnerInput().value ? parseInt(this.getSpinnerInput().value, 10) : this.min;\n  }\n\n  /**\n   * Gets the numeric spinner currently selected value (as a float).\n   * @returns {number} The numeric spinner value.\n   */\n  public getFloatValue(): number {\n    return this.getSpinnerInput().value ? parseFloat(this.getSpinnerInput().value) : this.min;\n  }\n\n  /**\n   * Sets the numeric spinner value.\n   *\n   * @param value The value to set the numeric spinner to. If `value` is greater than [`max`]{@link NumericSpinner.max},\n   * this method sets the numeric spinner to its maximum value instead. Likewise, if value is lesser than\n   * [`min`]{@link NumericSpinner.min}, the method sets the numeric spinner to its minimum value.\n   */\n  public setValue(value: number) {\n    if (this.max && value > this.max) {\n      value = this.max;\n    }\n    if (value < this.min) {\n      value = this.min;\n    }\n    this.getSpinnerInput().value = value.toString();\n    this.onChange(this);\n  }\n\n  /**\n   * Gets the element on which the numeric spinner is bound.\n   * @returns {HTMLInputElement} The numeric spinner element.\n   */\n  public build() {\n    return this.element;\n  }\n\n  private buildContent() {\n    const numericSpinner = $$('div', { className: 'coveo-numeric-spinner' });\n    const numberInput = $$('input', {\n      className: 'coveo-number-input',\n      type: 'text',\n      'aria-label': this.label ? l(this.label) : ''\n    });\n\n    const addOn = $$('span', { className: 'coveo-add-on' });\n    const arrowUp = $$('div', { className: 'coveo-spinner-up' }, SVGIcons.icons.arrowUp);\n    SVGDom.addClassToSVGInContainer(arrowUp.el, 'coveo-spinner-up-svg');\n    const arrowDown = $$('div', { className: 'coveo-spinner-down' }, SVGIcons.icons.arrowDown);\n    SVGDom.addClassToSVGInContainer(arrowDown.el, 'coveo-spinner-down-svg');\n    addOn.append(arrowUp.el);\n    addOn.append(arrowDown.el);\n    numericSpinner.append(numberInput.el);\n    numericSpinner.append(addOn.el);\n    this.element = numericSpinner.el;\n  }\n\n  private bindEvents() {\n    const up = $$(this.element).find('.coveo-spinner-up');\n    $$(up).on('click', () => {\n      this.setValue(this.getFloatValue() + 1);\n    });\n\n    const down = $$(this.element).find('.coveo-spinner-down');\n    $$(down).on('click', () => {\n      this.setValue(this.getFloatValue() - 1);\n    });\n\n    const numberInput = <HTMLInputElement>$$(this.element).find('input');\n    $$(numberInput).on('input', () => {\n      if (numberInput.value.match(/[0-9]*/)) {\n        this.onChange(this);\n      }\n    });\n  }\n\n  private getSpinnerInput(): HTMLInputElement {\n    return <HTMLInputElement>$$(this.element).find('.coveo-number-input');\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/FormWidgets/NumericSpinner.ts","import { PendingSearchEvent } from './PendingSearchEvent';\nimport { AnalyticsEndpoint } from '../../rest/AnalyticsEndpoint';\nimport { $$ } from '../../utils/Dom';\nimport { InitializationEvents } from '../../events/InitializationEvents';\nimport { ISearchEvent } from '../../rest/SearchEvent';\nimport { IDuringQueryEventArgs } from '../../events/QueryEvents';\nimport { IAnalyticsActionCause } from './AnalyticsActionListMeta';\nimport { SearchInterface } from '../SearchInterface/SearchInterface';\nimport { Component } from '../Base/Component';\nimport { QueryStateModel } from '../../models/QueryStateModel';\nimport * as _ from 'underscore';\n\nexport class PendingSearchAsYouTypeSearchEvent extends PendingSearchEvent {\n  public delayBeforeSending = 5000;\n  public beforeResolve: Promise<PendingSearchAsYouTypeSearchEvent>;\n  private beforeUnloadHandler: (...args: any[]) => void;\n  private toSendRightNow: () => void;\n  private queryContent = '';\n\n  constructor(public root: HTMLElement, public endpoint: AnalyticsEndpoint, public templateSearchEvent: ISearchEvent, public sendToCloud) {\n    super(root, endpoint, templateSearchEvent, sendToCloud);\n    this.beforeUnloadHandler = () => {\n      this.onWindowUnload();\n    };\n    window.addEventListener('beforeunload', this.beforeUnloadHandler);\n    $$(root).on(InitializationEvents.nuke, () => this.handleNuke());\n  }\n\n  protected handleDuringQuery(e: Event, args: IDuringQueryEventArgs) {\n    const event = _.clone(e);\n    // We need to \"snapshot\" the current query before the delay is applied\n    // Otherwise, this means that after 5 second, the original query is possibly modified\n    // For example, DidYouMean would be wrong in that case.\n    const eventTarget: HTMLElement = <HTMLElement>e.target;\n    const searchInterface = <SearchInterface>Component.get(eventTarget, SearchInterface);\n    this.modifyQueryContent(searchInterface.queryStateModel.get(QueryStateModel.attributesEnum.q));\n    this.beforeResolve = new Promise(resolve => {\n      this.toSendRightNow = () => {\n        if (!this.isCancelledOrFinished()) {\n          resolve(this);\n          super.handleDuringQuery(event, args, this.queryContent);\n        }\n      };\n      _.delay(() => {\n        this.toSendRightNow();\n      }, this.delayBeforeSending);\n    });\n  }\n\n  public sendRightNow() {\n    if (this.toSendRightNow) {\n      this.toSendRightNow();\n    }\n  }\n\n  public modifyCustomData(key: string, newData: any) {\n    _.each(this.searchEvents, (searchEvent: ISearchEvent) => {\n      searchEvent.customData[key] = newData;\n    });\n    if (!this.templateSearchEvent.customData) {\n      this.templateSearchEvent.customData = {};\n    }\n    this.templateSearchEvent.customData[key] = newData;\n  }\n\n  public modifyEventCause(newCause: IAnalyticsActionCause) {\n    _.each(this.searchEvents, (searchEvent: ISearchEvent) => {\n      searchEvent.actionCause = newCause.name;\n      searchEvent.actionType = newCause.type;\n    });\n    this.templateSearchEvent.actionCause = newCause.name;\n    this.templateSearchEvent.actionType = newCause.type;\n  }\n\n  public modifyQueryContent(query: string) {\n    this.queryContent = query;\n  }\n\n  public stopRecording() {\n    super.stopRecording();\n    if (this.beforeUnloadHandler) {\n      window.removeEventListener('beforeunload', this.beforeUnloadHandler);\n      this.beforeUnloadHandler = undefined;\n    }\n  }\n\n  private handleNuke() {\n    window.removeEventListener('beforeunload', this.beforeUnloadHandler);\n  }\n\n  private onWindowUnload() {\n    if (!this.isCancelledOrFinished()) {\n      this.sendRightNow();\n    }\n  }\n\n  private isCancelledOrFinished() {\n    if (!this.cancelled) {\n      if (this.finished) {\n        this.cancel();\n        return true;\n      } else {\n        return false;\n      }\n    } else {\n      return true;\n    }\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Analytics/PendingSearchAsYouTypeSearchEvent.ts","// Code originally taken from : https://developers.livechatinc.com/blog/setting-cookies-to-subdomains-in-javascript/\nexport class Cookie {\n  private static prefix: string = 'coveo_';\n\n  static set(name: string, value: string, expiration?: number) {\n    const host = location.hostname;\n    if (host.split('.').length === 1) {\n      // no '.' in a domain - it's localhost or something similar\n      document.cookie = this.buildCookie(name, value, expiration);\n    } else {\n      // Remember the cookie on all subdomains.\n      //\n      // Start with trying to set cookie to the top domain.\n      // (example: if user is on foo.com, try to set\n      //  cookie to domain '.com')\n      //\n      // If the cookie will not be set, it means '.com'\n      // is a top level domain and we need to\n      // set the cookie to '.foo.com'\n      const domainParts = host.split('.');\n      domainParts.shift();\n      let domain = '.' + domainParts.join('.');\n\n      document.cookie = this.buildCookie(name, value, expiration, domain);\n\n      // check if cookie was successfuly set to the given domain\n      // (otherwise it was a Top-Level Domain)\n      if (Cookie.get(name) == null || Cookie.get(name) != value) {\n        // append '.' to current domain\n        domain = '.' + host;\n        document.cookie = this.buildCookie(name, value, expiration, domain);\n      }\n    }\n  }\n\n  private static buildCookie(name: string, value: string, expiration?: number, domain?: string) {\n    const expires = expiration ? this.buildExpiresValue(expiration) : '';\n    const domainCookie = domain ? `; domain=${domain}` : '';\n    return `${this.prefix}${name}=${value}${expires}${domainCookie}; SameSite=Lax; path=/`;\n  }\n\n  private static buildExpiresValue(expiration: number) {\n    return `; expires=${new Date(Date.now() + expiration).toUTCString()}`;\n  }\n\n  static get(name: string) {\n    const nameEQ = `${this.prefix}${name}=`;\n    const ca = document.cookie.split(';');\n    for (let i = 0; i < ca.length; i++) {\n      let c = ca[i];\n      while (c.charAt(0) === ' ') {\n        c = c.substring(1, c.length);\n      }\n\n      if (c.indexOf(nameEQ) == 0) {\n        return c.substring(nameEQ.length, c.length);\n      }\n    }\n    return null;\n  }\n\n  static erase(name: string) {\n    Cookie.set(name, '', -1);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/CookieUtils.ts","import { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { IAnalyticsClient } from './AnalyticsClient';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { AnalyticsEndpoint } from '../../rest/AnalyticsEndpoint';\nimport { SearchEndpoint } from '../../rest/SearchEndpoint';\nimport { Assert } from '../../misc/Assert';\nimport { QueryEvents, IBuildingQueryEventArgs, IQueryErrorEventArgs } from '../../events/QueryEvents';\nimport { ComponentOptionsModel } from '../../models/ComponentOptionsModel';\nimport { $$ } from '../../utils/Dom';\nimport { Model, IAttributeChangedEventArg } from '../../models/Model';\nimport { IAnalyticsActionCause, IAnalyticsDocumentViewMeta } from '../Analytics/AnalyticsActionListMeta';\nimport { IQueryResult } from '../../rest/QueryResult';\nimport { Utils } from '../../utils/Utils';\nimport { NoopAnalyticsClient } from '../Analytics/NoopAnalyticsClient';\nimport { LiveAnalyticsClient } from './LiveAnalyticsClient';\nimport { MultiAnalyticsClient } from './MultiAnalyticsClient';\nimport { IAnalyticsQueryErrorMeta, analyticsActionCauseList } from './AnalyticsActionListMeta';\nimport { RecommendationAnalyticsClient } from './RecommendationAnalyticsClient';\nimport * as _ from 'underscore';\nimport { exportGlobally } from '../../GlobalExports';\nimport { PendingSearchEvent } from './PendingSearchEvent';\nimport { PendingSearchAsYouTypeSearchEvent } from './PendingSearchAsYouTypeSearchEvent';\nimport { AccessToken } from '../../rest/AccessToken';\nimport { AnalyticsEvents, IAnalyticsEventArgs } from '../../events/AnalyticsEvents';\nimport { QueryUtils } from '../../utils/QueryUtils';\nimport { AnalyticsInformation } from './AnalyticsInformation';\nimport { InitializationEvents } from '../../events/InitializationEvents';\n\nexport interface IAnalyticsOptions {\n  user?: string;\n  userDisplayName?: string;\n  token?: string;\n  endpoint?: string;\n  anonymous?: boolean;\n  searchHub?: string;\n  splitTestRunName?: string;\n  splitTestRunVersion?: string;\n  sendToCloud?: boolean;\n  organization?: string;\n  autoPushToGtmDataLayer?: boolean;\n  gtmDataLayerName?: string;\n  renewAccessToken?: () => Promise<string>;\n}\n\n/**\n * The `Analytics` component can log user actions performed in the search interface and send them to a REST web service\n * exposed through the Coveo Cloud Platform.\n *\n * You can use analytics data to evaluate how users are interacting with your search interface, improve relevance and\n * produce analytics dashboards within the Coveo Cloud Platform.\n *\n * See [JavaScript Search Framework Usage Analytics](https://docs.coveo.com/en/365) for an introduction.\n *\n * See also [Logging Your Own Search Events](https://docs.coveo.com/en/2726/#logging-your-own-search-events) for more advanced use cases.\n */\n\nexport class Analytics extends Component {\n  static ID = 'Analytics';\n\n  static doExport() {\n    exportGlobally({\n      PendingSearchEvent: PendingSearchEvent,\n      PendingSearchAsYouTypeSearchEvent: PendingSearchAsYouTypeSearchEvent,\n      analyticsActionCauseList: analyticsActionCauseList,\n      NoopAnalyticsClient: NoopAnalyticsClient,\n      LiveAnalyticsClient: LiveAnalyticsClient,\n      MultiAnalyticsClient: MultiAnalyticsClient,\n      Analytics: Analytics\n    });\n  }\n\n  // NOTE: The default values for some of those options (`organization`, `endpoint`, `searchHub`) can be\n  // overridden by generated code when using hosted search pages.\n\n  /**\n   * Options for the component\n   * @componentOptions\n   */\n  static options: IAnalyticsOptions = {\n    /**\n     * Specifies the name of the user for the usage analytics logs.\n     *\n     * Default value is `undefined`\n     */\n    user: ComponentOptions.buildStringOption(),\n\n    /**\n     * Specifies the user display name for the usage analytics logs.\n     *\n     * Default value is `undefined`\n     */\n    userDisplayName: ComponentOptions.buildStringOption(),\n\n    /**\n     * Specifies the token to use to access the usage analytics endpoint.\n     *\n     * Default value is `undefined`, and the component uses the search token.\n     */\n    token: ComponentOptions.buildStringOption(),\n\n    /**\n     * Specifies the URL of the Usage Analytics service. You do not have to specify a value for this option, unless\n     * the location of the service you use differs from the default Coveo Cloud Usage Analytics endpoint.\n     *\n     * By deault, the value is `https://platform.cloud.coveo.com/rest/ua`, or\n     * `https://platform-<REGION_ABBREVIATION>.cloud.coveo.com/rest/ua` if you have\n     * [configured your search endpoint]{@link SearchEndpoint.configureCloudV2Endpoint} to implement\n     * data residency outside of the United States.\n     */\n    endpoint: ComponentOptions.buildStringOption({\n      postProcessing: value => {\n        if (!value) {\n          return AnalyticsEndpoint.getURLFromSearchEndpoint(SearchEndpoint.defaultEndpoint);\n        }\n\n        const isLegacy = value.indexOf('usageanalytics') !== -1;\n\n        if (isLegacy) {\n          const [basePlatform] = value.split('/rest');\n          return basePlatform + '/rest';\n        }\n\n        return value;\n      }\n    }),\n\n    /**\n     * Specifies whether to convert search user identities to unique hash when logging analytics data, so that\n     * analytics reviewers and managers will not be able to clearly identify which user is performing which query.\n     *\n     * When you set this option to `true`, the Coveo Usage Analytics service can still properly differentiate sessions\n     * made by anonymous users from sessions made by users authenticated in some way on the site containing the search\n     * page.\n     *\n     * Default value is `false`.\n     */\n    anonymous: ComponentOptions.buildBooleanOption({ defaultValue: false }),\n\n    /**\n     * Sets the Search Hub dimension on the search events.\n     *\n     * The Search Hub dimension is typically a name that refers to a specific search page. For example, you could use\n     * the `CommunitySite` value to refer to a search page on a public community site.\n     *\n     * **Note:**\n     * > If you wish to use the search hub dimension for security reasons (e.g., to provide different query suggestions\n     * > for internal and external users), you should specify the search hub when generating the search token for the\n     * > end user (in safe, server-side code), rather than setting it with this option (see\n     * > [Search Token Authentication](https://docs.coveo.com/en/56/)).\n     *\n     * Default value is `default`.\n     */\n    searchHub: ComponentOptions.buildStringOption({ defaultValue: 'default' }),\n\n    /**\n     * Specifies the name of the split test run that the search page is part of.\n     *\n     * You can use this dimension to perform A/B testing using different search page layouts and features inside the\n     * Coveo Query pipeline.\n     *\n     * Default value is `undefined` and no split test run name is reported to the Coveo Usage Analytics service.\n     */\n    splitTestRunName: ComponentOptions.buildStringOption(),\n\n    /**\n     * Specifies the version name for the page when a split test run is active.\n     *\n     * When reporting on A/B testing analytics data, this value specifies the test run version name that was\n     * presented to the user.\n     *\n     * Default value is `undefined`\n     */\n    splitTestRunVersion: ComponentOptions.buildStringOption(),\n    sendToCloud: ComponentOptions.buildBooleanOption({ defaultValue: true }),\n\n    /**\n     * Specifies the organization bound to the access token. This is necessary when using an access token, because a\n     * single access token can be associated to more than one organization.\n     *\n     * Default value is `undefined`, and the value of this parameter will fallback to the organization used for the\n     * search endpoint.\n     */\n    organization: ComponentOptions.buildStringOption(),\n\n    /**\n     * Whether to automatically attempt to push Coveo usage analytics events to the Google Tag Manager [data layer](https://developers.google.com/tag-manager/devguide#datalayer).\n     *\n     * See also [`gtmDataLayerName`]{@link Analytics.options.gtmDataLayerName}.\n     *\n     * @availablesince [July 2019 Release (v2.6459)](https://docs.coveo.com/en/2938/)\n     */\n    autoPushToGtmDataLayer: ComponentOptions.buildBooleanOption({ defaultValue: false }),\n\n    /**\n     * The name of the Google Tag Manager data layer initialized in the page.\n     *\n     * See also [`autoPushToGtmDataLayer`]{@link Analytics.options.autoPushToGtmDataLayer}.\n     *\n     * **Note:**\n     * Setting this option is only useful if the [GTM data layer was renamed](https://developers.google.com/tag-manager/devguide#renaming) in the page.\n     *\n     * **Default:** `dataLayer`\n     */\n    gtmDataLayerName: ComponentOptions.buildStringOption({ defaultValue: 'dataLayer' })\n  };\n\n  /**\n   * A reference to the `AnalyticsClient`, which performs the heavy duty part of sending the usage analytics events to\n   * the Coveo Usage Analytics service.\n   */\n  public client: IAnalyticsClient;\n\n  private accessToken: AccessToken;\n\n  /**\n   * Creates a new `Analytics` component. Creates the [`AnalyticsClient`]{@link IAnalyticsClient}.\n   * @param element The HTMLElement on which the component will be instantiated.\n   * @param options The options for the `Analytics` component.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time).\n   */\n  constructor(public element: HTMLElement, public options: IAnalyticsOptions = {}, public bindings?: IComponentBindings) {\n    super(element, Analytics.ID, bindings);\n    this.options = ComponentOptions.initComponentOptions(element, Analytics, options);\n\n    this.setupAccessToken();\n\n    if (this.accessToken == null) {\n      this.logger.error(`Analytics component could not resolve any access token`);\n      this.logger.error(\n        `Either provide a analytics token : data-option-token=\"an-authentication-token\" on the Analytics element, or configure a default SearchEndpoint`,\n        this.element\n      );\n      return;\n    } else {\n      this.options.token = this.accessToken.token;\n      this.accessToken.subscribeToRenewal(newToken => {\n        this.options.token = newToken;\n        this.client.endpoint.endpointCaller.options.accessToken = newToken;\n      });\n    }\n\n    this.initializeAnalyticsClient();\n    Assert.exists(this.client);\n\n    $$(this.root).on(QueryEvents.buildingQuery, (e, data: IBuildingQueryEventArgs) => this.handleBuildingQuery(data));\n    this.bind.onRootElement(QueryEvents.queryError, (data: IQueryErrorEventArgs) => this.handleQueryError(data));\n    this.bind.onRootElement(InitializationEvents.afterComponentsInitialization, () => this.handleDoNotTrack());\n\n    if (this.options.autoPushToGtmDataLayer && this.isGtmDataLayerInitialized) {\n      this.bind.onRootElement(AnalyticsEvents.analyticsEventReady, (data: IAnalyticsEventArgs) => this.pushToGtmDataLayer(data));\n    }\n\n    // Analytics component is a bit special: It can be higher in the dom tree than the search interface\n    // Need to resolve down to find the componentOptionsModel if we need to.\n    if (!this.componentOptionsModel) {\n      let cmpOptionElement = $$(element).find('.' + Component.computeCssClassName(ComponentOptionsModel));\n      if (cmpOptionElement) {\n        this.componentOptionsModel = cmpOptionElement[Component.computeCssClassName(ComponentOptionsModel)];\n      }\n    }\n\n    if (this.componentOptionsModel) {\n      this.componentOptionsModel.set(ComponentOptionsModel.attributesEnum.searchHub, this.options.searchHub);\n      let event = this.componentOptionsModel.getEventName(Model.eventTypes.changeOne + ComponentOptionsModel.attributesEnum.searchHub);\n      $$(this.root).on(event, (e, args: IAttributeChangedEventArg) => this.handleSearchHubChanged(args));\n    }\n\n    this.createClientId();\n  }\n\n  /**\n   * Logs a `Search` usage analytics event.\n   *\n   * A `Search` event is actually sent to the Coveo Usage Analytics service only after the query successfully returns\n   * (not immediately after calling this method). Therefore, it is important to call this method **before** executing\n   * the query. Otherwise, the `Search` event will not be logged, and you will get a warning message in the console.\n   *\n   * **Note:**\n   *\n   * > When logging custom `Search` events, you should use the `Coveo.logSearchEvent` top-level function rather than\n   * > calling this method directly from the `Analytics` component instance. See\n   * > [Logging Your Own Search Events](https://docs.coveo.com/en/2726/#logging-your-own-search-events).\n   *\n   * @param actionCause The cause of the event.\n   * @param meta The metadata you want to use to create custom dimensions. Metadata can contain as many key-value\n   * pairs as you need. Each key must contain only alphanumeric characters and underscores. The Coveo Usage Analytics\n   * service automatically converts white spaces to underscores, and uppercase characters to lowercase characters in key\n   * names. Each value must be a simple string. If you do not need to log metadata, you can simply pass an empty JSON\n   * ( `{}` ).\n   */\n  public logSearchEvent<T>(actionCause: IAnalyticsActionCause, meta: T) {\n    this.client.logSearchEvent<T>(actionCause, meta);\n  }\n\n  /**\n   * Logs a `SearchAsYouType` usage analytics event.\n   *\n   * This method is very similar to the [`logSearchEvent`]{@link Analytics.logSearchEvent} method, except that\n   * `logSearchAsYouType` should, by definition, be called more frequently. Consequently, in order to avoid logging\n   * every single partial query, the `PendingSearchAsYouTypeEvent` takes care of logging only the \"relevant\" last event:\n   * an event that occurs after 5 seconds have elapsed without any event being logged, or an event that occurs after\n   * another part of the interface triggers a search event.\n   *\n   * It is important to call this method **before** executing the query. Otherwise, no `SearchAsYouType` event will be\n   * logged, and you will get a warning message in the console.\n   *\n   * **Note:**\n   *\n   * > When logging custom `SearchAsYouType` events, you should use the `Coveo.logSearchAsYouTypeEvent` top-level\n   * > function rather than calling this method directly from the `Analytics` component instance. See\n   * > [Logging Your Own Search Events](https://docs.coveo.com/en/2726/#logging-your-own-search-events).\n   *\n   * @param actionCause The cause of the event.\n   * @param meta The metadata which you want to use to create custom dimensions. Metadata can contain as many key-value\n   * pairs as you need. Each key must contain only alphanumeric characters and underscores. The Coveo Usage Analytics\n   * service automatically converts white spaces to underscores and uppercase characters to lowercase characters in key\n   * names. Each value must be a simple string. If you do not need to log metadata, you can simply pass an empty JSON\n   * ( `{}` ).\n   */\n  public logSearchAsYouType<T>(actionCause: IAnalyticsActionCause, meta: T) {\n    this.client.logSearchAsYouType(actionCause, meta);\n  }\n\n  /**\n   * Logs a `Custom` usage analytics event on the service.\n   *\n   * You can use `Custom` events to create custom reports, or to track events which are neither queries (see\n   * [`logSearchEvent`]{@link Analytics.logSearchEvent} and\n   * [`logSearchAsYouType`]{@link Analytics.logSearchAsYouType}), nor item views (see\n   * [`logClickEvent`]{@link Analytics.logClickEvent}).\n   *\n   * **Note:**\n   * > When logging `Custom` events, you should use the `Coveo.logClickEvent` top-level function rather than calling\n   * > this method directly from the `Analytics` component instance. See\n   * > [Logging Your Own Custom Events](https://docs.coveo.com/en/2726/#logging-your-own-custom-events).\n   *\n   * @param actionCause The cause of the event.\n   * @param meta The metadata which you want to use to create custom dimensions. Metadata can contain as many key-value\n   * pairs as you need. Each key must contain only alphanumeric characters and underscores. The Coveo Usage Analytics\n   * service automatically converts white spaces to underscores and uppercase characters to lowercase characters in key\n   * names. Each value must be a simple string. If you do not need to log metadata, you can simply pass an empty JSON\n   * ( `{}` ).\n   * @param element The HTMLElement that the user has interacted with for this custom event. Default value is the\n   * element on which the `Analytics` component is bound.\n   * @param result The IQueryResult that the custom event is linked to, if any.\n   */\n  public logCustomEvent<T>(actionCause: IAnalyticsActionCause, meta: T, element: HTMLElement = this.element, result?: IQueryResult) {\n    this.client.logCustomEvent(actionCause, meta, element, result);\n  }\n\n  /**\n   * Logs a `Click` usage analytics event.\n   *\n   * A `Click` event corresponds to an item view (e.g., clicking on a {@link ResultLink} or opening a\n   * {@link Quickview}).\n   *\n   * `Click` events are immediately sent to the Coveo Usage Analytics service.\n   *\n   * **Note:**\n   * > When logging custom `Click` events, you should use the `Coveo.logClickEvent` top-level function rather than\n   * > calling this method directly from the `Analytics` component instance. See\n   * > [Logging Your Own Click Events](https://docs.coveo.com/en/2726/#logging-your-own-click-events).\n   *\n   * @param actionCause The cause of the event.\n   * @param meta The metadata which you want to use to create custom dimensions. Metadata can contain as many key-value\n   * pairs as you need. Each key must contain only alphanumeric characters and underscores. The Coveo Usage Analytics\n   * service automatically converts uppercase characters to lowercase characters in key names. Each value must be a\n   * simple string. You do not have to pass an {@link IAnalyticsDocumentViewMeta} as meta when logging a `Click` event.\n   * You can actually send any arbitrary meta. If you do not need to log metadata, you can simply pass an empty JSON\n   * ( `{}` ).\n   * @param result The result that was clicked.\n   * @param element The HTMLElement that the user has clicked in the interface. Default value is the element on which\n   * the `Analytics` component is bound.\n   */\n  public logClickEvent(\n    actionCause: IAnalyticsActionCause,\n    meta: IAnalyticsDocumentViewMeta,\n    result: IQueryResult,\n    element: HTMLElement = this.element\n  ) {\n    this.client.logClickEvent(actionCause, meta, result, element);\n  }\n\n  /**\n   * Sets the Origin Context dimension on the analytic events.\n   *\n   * You can use this dimension to specify the context of your application.\n   * Suggested values are \"Search\", \"InternalSearch\" and \"CommunitySearch\"\n   *\n   * Default value is `Search`.\n   *\n   * @param originContext The origin context value\n   */\n  public setOriginContext(originContext: string) {\n    this.client.setOriginContext(originContext);\n  }\n\n  /**\n   * Get the Origin Context dimension on the analytic events.\n   *\n   */\n  public getOriginContext(): string {\n    return this.client.getOriginContext();\n  }\n\n  /**\n   * Get the Origin Context dimension on the analytic events.\n   *\n   */\n  public getUserDisplayName(): string {\n    return this.client.getUserDisplayName();\n  }\n\n  /**\n   * Re-enables the component if it was previously disabled.\n   */\n  public enable() {\n    if (!this.disabled) {\n      return this.logger.warn('The Analytics component is already enabled.');\n    }\n    super.enable();\n    this.initializeAnalyticsClient();\n    this.updateSearchInterfaceUAClient();\n    this.resolveQueryController().enableHistory();\n  }\n\n  /**\n   * Removes all session information stored in the browser (e.g., analytics visitor cookies, action history, etc.)\n   *\n   * @availablesince [October 2019 Release (v2.7219)](https://docs.coveo.com/en/3084/)\n   */\n  public clearLocalData() {\n    if (this.disabled || this.client instanceof NoopAnalyticsClient) {\n      return this.logger.warn('Could not clear local data while analytics are disabled.');\n    }\n    new AnalyticsInformation().clear();\n    this.resolveQueryController().resetHistory();\n  }\n\n  /**\n   * Disables the component and clears local data by running [`clearLocalData`]{@link Analytics.clearLocalData}.\n   */\n  public disable() {\n    if (this.disabled) {\n      return this.logger.warn('The Analytics component is already disabled.');\n    }\n    this.clearLocalData();\n    this.client.cancelAllPendingEvents();\n    this.client = new NoopAnalyticsClient();\n    this.updateSearchInterfaceUAClient();\n    this.resolveQueryController().disableHistory();\n    super.disable();\n  }\n\n  private updateSearchInterfaceUAClient() {\n    this.searchInterface.usageAnalytics = this.client;\n  }\n\n  /**\n   * Attempts to push data representing a single Coveo usage analytics event to the Google Tag Manager data layer.\n   *\n   * **Note:**\n   * If the [`autoPushToGtmDataLayer`]{@link Analytics.options.autoPushToGtmDataLayer} option is set to `true` and the GTM data layer has been properly initialized in the page, this method is called automatically whenever an event is about to be logged to the Coveo Cloud usage analytics service.\n   *\n   * See also the [`gtmDataLayerName`]{@link Analytics.options.gtmDataLayerName} option.\n   *\n   * @param data The data to push.\n   */\n  public pushToGtmDataLayer(data: IAnalyticsEventArgs) {\n    const dataLayerName = this.options.gtmDataLayerName;\n    try {\n      (<any>window)[dataLayerName].push(data);\n    } catch (error) {\n      this.logger.error(`Unexpected error when pushing to Google Tag Manager data layer '${dataLayerName}': '${error}'.`);\n    }\n  }\n\n  protected initializeAnalyticsEndpoint(): AnalyticsEndpoint {\n    return new AnalyticsEndpoint({\n      accessToken: this.accessToken,\n      serviceUrl: this.options.endpoint,\n      organization: this.options.organization\n    });\n  }\n\n  private createClientId() {\n    const info = new AnalyticsInformation();\n\n    if (!info.clientId) {\n      info.clientId = QueryUtils.createGuid();\n    }\n  }\n\n  private initializeAnalyticsClient() {\n    if (Utils.isNonEmptyString(this.options.endpoint)) {\n      let endpoint = this.initializeAnalyticsEndpoint();\n      let elementToInitializeClient: HTMLElement;\n      if (this.root && this.element) {\n        if (this.root.contains(this.element)) {\n          elementToInitializeClient = this.root;\n        } else {\n          elementToInitializeClient = this.element;\n        }\n      }\n\n      let isRecommendation = $$(this.root).hasClass(Component.computeCssClassNameForType(`Recommendation`));\n      this.instantiateAnalyticsClient(endpoint, elementToInitializeClient, isRecommendation);\n    } else {\n      this.client = new NoopAnalyticsClient();\n    }\n  }\n\n  private instantiateAnalyticsClient(endpoint: AnalyticsEndpoint, elementToInitializeClient: HTMLElement, isRecommendation: boolean) {\n    if (isRecommendation) {\n      this.client = new RecommendationAnalyticsClient(\n        endpoint,\n        elementToInitializeClient,\n        this.options.user,\n        this.options.userDisplayName,\n        this.options.anonymous,\n        this.options.splitTestRunName,\n        this.options.splitTestRunVersion,\n        this.options.searchHub,\n        this.options.sendToCloud,\n        this.getBindings()\n      );\n    } else {\n      this.client = new LiveAnalyticsClient(\n        endpoint,\n        elementToInitializeClient,\n        this.options.user,\n        this.options.userDisplayName,\n        this.options.anonymous,\n        this.options.splitTestRunName,\n        this.options.splitTestRunVersion,\n        this.options.searchHub,\n        this.options.sendToCloud,\n        this.getBindings()\n      );\n    }\n  }\n\n  private setupAccessToken() {\n    this.trySetupAccessTokenFromOptions();\n    if (this.accessToken == null) {\n      this.trySetupAccessTokenFromDefaultSearchEndpoint();\n    }\n  }\n\n  private trySetupAccessTokenFromOptions() {\n    if (this.options.token != null) {\n      this.accessToken = new AccessToken(this.options.token, this.options.renewAccessToken);\n    }\n  }\n\n  private trySetupAccessTokenFromDefaultSearchEndpoint() {\n    if (this.defaultEndpoint) {\n      this.accessToken = this.defaultEndpoint.accessToken;\n\n      this.options.token = this.defaultEndpoint.accessToken.token;\n    }\n\n    if (!this.options.organization && this.defaultEndpoint) {\n      this.options.organization = this.defaultEndpoint.options.queryStringArguments['organizationId'];\n    }\n  }\n\n  private get defaultEndpoint(): SearchEndpoint {\n    return this.searchInterface.options.endpoint || SearchEndpoint.defaultEndpoint;\n  }\n\n  private handleBuildingQuery(data: IBuildingQueryEventArgs) {\n    Assert.exists(data);\n\n    data.queryBuilder.searchHub = this.options.searchHub;\n  }\n\n  private handleSearchHubChanged(data: IAttributeChangedEventArg) {\n    this.options.searchHub = data.value;\n  }\n\n  private handleQueryError(data: IQueryErrorEventArgs) {\n    Assert.exists(data);\n\n    this.client.logCustomEvent<IAnalyticsQueryErrorMeta>(\n      analyticsActionCauseList.queryError,\n      {\n        query: data.query.q,\n        aq: data.query.aq,\n        cq: data.query.cq,\n        dq: data.query.dq,\n        errorType: data.error.type,\n        errorMessage: data.error.message\n      },\n      this.element\n    );\n  }\n\n  private get isGtmDataLayerInitialized(): boolean {\n    const dataLayerName = this.options.gtmDataLayerName;\n    if (!dataLayerName) {\n      return false;\n    }\n    if (!(<any>window)[dataLayerName]) {\n      this.logger.warn(`Cannot automatically push to Google Tag Manager data layer: '${dataLayerName}' is undefined.`);\n      return false;\n    }\n    return true;\n  }\n\n  public static create(element: HTMLElement, options: IAnalyticsOptions, bindings: IComponentBindings): IAnalyticsClient {\n    let selector = Component.computeSelectorForType(Analytics.ID);\n    let found: HTMLElement[] = [];\n    found = found.concat($$(element).findAll(selector));\n    if (!$$(element).hasClass(Component.computeCssClassNameForType('Recommendation'))) {\n      found = this.ignoreElementsInsideRecommendationInterface(found);\n    }\n    found.push($$(element).closest(Component.computeCssClassName(Analytics)));\n    if ($$(element).is(selector)) {\n      found.push(element);\n    }\n    found = _.compact(found);\n\n    if (found.length == 1) {\n      return Analytics.getClient(found[0], options, bindings);\n    } else if (found.length > 1) {\n      return new MultiAnalyticsClient(_.map(found, el => Analytics.getClient(el, options, bindings)));\n    } else {\n      return new NoopAnalyticsClient();\n    }\n  }\n\n  private static ignoreElementsInsideRecommendationInterface(found: HTMLElement[]): HTMLElement[] {\n    return _.filter(found, element => {\n      return $$(element).closest(Component.computeCssClassNameForType('Recommendation')) === undefined;\n    });\n  }\n\n  private static getClient(element: HTMLElement, options: IAnalyticsOptions, bindings: IComponentBindings): IAnalyticsClient {\n    // This check if an element is already initialized as an analytics component.\n    // If that's the case, return the client on that element.\n    // Otherwise, init and return.\n    let foundOnElement = Component.get(element, Analytics, true);\n    if (foundOnElement instanceof Analytics) {\n      return (<Analytics>foundOnElement).client;\n    } else {\n      return new Analytics(element, options, bindings).client;\n    }\n  }\n\n  private handleDoNotTrack() {\n    if (this.doNotTrack()) {\n      this.logger.warn('Coveo Analytics tracking disabled due to doNotTrack');\n      this.disable();\n    }\n  }\n\n  private doNotTrack() {\n    const doNotTrack = [true, 'yes', '1', 1].indexOf(navigator.doNotTrack || window.doNotTrack || (<any>navigator).msDoNotTrack);\n    const globalPrivacyControl = (<any>navigator).globalPrivacyControl;\n    return doNotTrack !== -1 || globalPrivacyControl;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Analytics/Analytics.ts","import { Dom } from '../../utils/Dom';\nimport { ResponsiveDropdownContent } from './ResponsiveDropdown/ResponsiveDropdownContent';\n\nexport class ResponsiveComponentsUtils {\n  private static smallTabsClassName: string = 'coveo-small-tabs';\n  private static smallFacetClassName: string = 'coveo-small-facets';\n  private static smallRecommendationClassName: string = 'coveo-small-recommendation';\n\n  static shouldDrawFacetSlider(root: Dom, facetSliderElement: Dom): boolean {\n    return ResponsiveDropdownContent.isTargetInsideOpenedDropdown(facetSliderElement) || !this.isSmallFacetActivated(root);\n  }\n\n  static isSmallTabsActivated(root: Dom): boolean {\n    return root.hasClass(this.smallTabsClassName);\n  }\n\n  static isSmallFacetActivated(root: Dom): boolean {\n    return root.hasClass(this.smallFacetClassName);\n  }\n\n  static isSmallRecommendationActivated(root: Dom): boolean {\n    return root.hasClass(this.smallRecommendationClassName);\n  }\n\n  static activateSmallTabs(root: Dom): void {\n    root.addClass(this.smallTabsClassName);\n  }\n\n  static deactivateSmallTabs(root: Dom): void {\n    root.removeClass(this.smallTabsClassName);\n  }\n\n  static activateSmallFacet(root: Dom): void {\n    root.addClass(this.smallFacetClassName);\n  }\n\n  static deactivateSmallFacet(root: Dom): void {\n    root.removeClass(this.smallFacetClassName);\n  }\n\n  static activateSmallRecommendation(root: Dom): void {\n    root.addClass(this.smallRecommendationClassName);\n  }\n\n  static deactivateSmallRecommendation(root: Dom): void {\n    root.removeClass(this.smallRecommendationClassName);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResponsiveComponents/ResponsiveComponentsUtils.ts","/// <reference path=\"Facet.ts\" />\n\nimport { Facet } from './Facet';\nimport { FacetValue } from './FacetValue';\nimport { ValueElement } from './ValueElement';\n\nexport interface IFacetValueElementKlass {\n  new (facet: Facet, facetValue: FacetValue, displayNextTime?: boolean): FacetValueElement;\n}\n\nexport class FacetValueElement extends ValueElement {\n  constructor(public facet: Facet, public facetValue: FacetValue, public keepDisplayedValueNextTime: boolean) {\n    super(facet, facetValue);\n  }\n\n  public bindEvent() {\n    super.bindEvent({\n      displayNextTime: this.keepDisplayedValueNextTime,\n      pinFacet: this.facet.options.preservePosition\n    });\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Facet/FacetValueElement.ts","import { SubGrammar } from './Expressions';\nimport { Expression } from '../Expression/Expression';\nimport { Result } from '../Result/Result';\nimport { EndOfInputResult } from '../Result/Result';\n\nexport const notWordStart = ' ()[],$@\\'\"';\nexport const notInWord = ' ()[],:';\n\nexport const Basic: SubGrammar = {\n  basicExpressions: ['Word', 'DoubleQuoted'],\n  grammars: {\n    DoubleQuoted: '\"[NotDoubleQuote]\"',\n    NotDoubleQuote: /[^\"]*/,\n    SingleQuoted: \"'[NotSingleQuote]'\",\n    NotSingleQuote: /[^']*/,\n    Number: /-?(0|[1-9]\\d*)(\\.\\d+)?/,\n    Word: (input: string, end: boolean, expression: Expression) => {\n      const regex = new RegExp('[^' + notWordStart.replace(/(.)/g, '\\\\$1') + '][^' + notInWord.replace(/(.)/g, '\\\\$1') + ']*');\n      let groups = input.match(regex);\n      if (groups != null && groups.index != 0) {\n        groups = null;\n      }\n      const result = new Result(groups != null ? groups[0] : null, expression, input);\n      if (result.isSuccess() && end && input.length > result.value.length) {\n        return new EndOfInputResult(result);\n      }\n      return result;\n    }\n  }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/magicbox/Grammars/Basic.ts","export interface IResultLayoutPopulateArgs {\n  layouts: string[];\n}\nexport class ResultLayoutEvents {\n  public static populateResultLayout = 'populateResultLayout';\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/events/ResultLayoutEvents.ts","import { Assert } from '../misc/Assert';\nimport { Options } from '../misc/Options';\nimport { Utils } from '../utils/Utils';\nimport * as Globalize from 'globalize';\n\n/**\n * The available options to format a numeric value as a currency string.\n */\nexport interface ICurrencyToStringOptions {\n  /**\n   * The number of decimals to display.\n   *\n   * **Default:** `0`\n   */\n  decimals?: number;\n  /**\n   * The currency symbol to use.\n   */\n  symbol?: string;\n}\n\nclass DefaultCurrencyToStringOptions extends Options implements ICurrencyToStringOptions {\n  decimals: number = 0;\n  symbol: string;\n}\n\nexport class CurrencyUtils {\n  static currencyToString(value: number, options?: ICurrencyToStringOptions): string {\n    if (Utils.isNullOrUndefined(value)) {\n      return '';\n    }\n    value = Number(value);\n\n    Assert.isNumber(value);\n\n    options = new DefaultCurrencyToStringOptions().merge(options);\n\n    var currency = Globalize.culture().numberFormat.currency;\n    var backup = currency.symbol;\n\n    if (Utils.isNonEmptyString(options.symbol)) {\n      currency.symbol = options.symbol;\n    }\n\n    var str = Globalize.format(value, 'c' + options.decimals.toString());\n    currency.symbol = backup;\n\n    return str;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/CurrencyUtils.ts","import { $$, Dom } from '../../../utils/Dom';\nimport { Assert } from '../../../misc/Assert';\nexport class ResponsiveDropdownHeader {\n  public static DEFAULT_CSS_CLASS_NAME = 'coveo-dropdown-header';\n  public static ACTIVE_HEADER_CSS_CLASS_NAME: string = 'coveo-dropdown-header-active';\n\n  constructor(componentName: string, public element: Dom) {\n    Assert.isString(componentName);\n    Assert.exists(element);\n\n    this.element.addClass(`coveo-${componentName}-dropdown-header`);\n    this.element.addClass(ResponsiveDropdownHeader.DEFAULT_CSS_CLASS_NAME);\n  }\n\n  public open() {\n    this.element.addClass(ResponsiveDropdownHeader.ACTIVE_HEADER_CSS_CLASS_NAME);\n  }\n\n  public close() {\n    this.element.removeClass(ResponsiveDropdownHeader.ACTIVE_HEADER_CSS_CLASS_NAME);\n  }\n\n  public cleanUp() {\n    this.element.detach();\n  }\n\n  public hide() {\n    $$(this.element).addClass('coveo-hidden');\n  }\n\n  public show() {\n    $$(this.element).removeClass('coveo-hidden');\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResponsiveComponents/ResponsiveDropdown/ResponsiveDropdownHeader.ts","import { IQueryResult } from '../../rest/QueryResult';\nimport { IFieldsToMatch } from './Template';\nimport { each, find } from 'underscore';\n\nexport class TemplateFieldsEvaluator {\n  public static evaluateFieldsToMatch(toMatches: IFieldsToMatch[], result: IQueryResult): boolean {\n    let templateShouldBeLoaded = true;\n    if (!toMatches) return true;\n    each(toMatches, (toMatch: IFieldsToMatch) => {\n      let matchAtLeastOnce = false;\n      if (!toMatch.values) {\n        matchAtLeastOnce = result.raw[toMatch.field] != null;\n      } else {\n        each(toMatch.values, value => {\n          if (!matchAtLeastOnce) {\n            const fieldValue: string | string[] = result.raw[toMatch.field];\n            const fieldValues = TemplateFieldsEvaluator.getFieldValueAsArray(fieldValue);\n            matchAtLeastOnce = TemplateFieldsEvaluator.isMatch(fieldValues, value);\n          }\n        });\n      }\n      templateShouldBeLoaded = templateShouldBeLoaded && (toMatch.reverseCondition ? !matchAtLeastOnce : matchAtLeastOnce);\n    });\n    return templateShouldBeLoaded;\n  }\n\n  private static getFieldValueAsArray(fieldValue: string | string[]): string[] {\n    return typeof fieldValue === 'string' ? [fieldValue] : fieldValue;\n  }\n\n  private static isMatch(fieldValues: string[], value: string) {\n    return find(fieldValues, fieldValue => fieldValue.toLowerCase() == value.toLowerCase()) != undefined;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Templates/TemplateFieldsEvaluator.ts","import * as _ from 'underscore';\n\nexport class EventsUtils {\n  private static prefixes = ['webkit', 'moz', 'MS', 'o', ''];\n\n  // eventName must be in PascalCase\n  public static addPrefixedEvent(element: HTMLElement, pascalCaseEventName: string, callback) {\n    _.each(this.prefixes, prefix => {\n      if (prefix == '') {\n        pascalCaseEventName = pascalCaseEventName.toLowerCase();\n      }\n      element.addEventListener(prefix + pascalCaseEventName, callback, false);\n    });\n  }\n\n  // eventName must be in PascalCase\n  public static removePrefixedEvent(element: HTMLElement, pascalCaseEventName: string, callback) {\n    _.each(this.prefixes, prefix => {\n      if (prefix == '') {\n        pascalCaseEventName = pascalCaseEventName.toLowerCase();\n      }\n      element.removeEventListener(prefix + pascalCaseEventName, callback, false);\n    });\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/EventsUtils.ts","import 'styling/_Querybox';\nimport { IBuildingQueryEventArgs, QueryEvents } from '../../events/QueryEvents';\nimport { StandaloneSearchInterfaceEvents } from '../../events/StandaloneSearchInterfaceEvents';\nimport { exportGlobally } from '../../GlobalExports';\nimport { Grammar } from '../../magicbox/Grammar';\nimport { createMagicBox, MagicBoxInstance } from '../../magicbox/MagicBox';\nimport { Result } from '../../magicbox/Result/Result';\nimport { Assert } from '../../misc/Assert';\nimport { IAttributeChangedEventArg, MODEL_EVENTS } from '../../models/Model';\nimport { QueryStateModel, QUERY_STATE_ATTRIBUTES } from '../../models/QueryStateModel';\nimport { l } from '../../strings/Strings';\nimport { $$ } from '../../utils/Dom';\nimport { analyticsActionCauseList, IAnalyticsNoMeta } from '../Analytics/AnalyticsActionListMeta';\nimport { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { Initialization } from '../Base/Initialization';\nimport { QueryboxOptionsProcessing } from './QueryboxOptionsProcessing';\nimport { QueryboxQueryParameters } from './QueryboxQueryParameters';\n\nexport interface IQueryboxOptions {\n  enableSearchAsYouType?: boolean;\n  searchAsYouTypeDelay?: number;\n  enableQuerySyntax?: boolean;\n  enableWildcards?: boolean;\n  enableQuestionMarks?: boolean;\n  enableLowercaseOperators?: boolean;\n  enablePartialMatch?: boolean;\n  partialMatchKeywords?: number;\n  partialMatchThreshold?: string;\n  placeholder?: string;\n  triggerQueryOnClear?: boolean;\n}\n\n/**\n * The `Querybox` component renders an input which the end user can interact with to enter and submit queries.\n *\n * When the end user submits a search request, the `Querybox` component triggers a query and logs the corresponding\n * usage analytics data.\n *\n * For technical reasons, it is necessary to instantiate this component on a `div` element rather than on an `input`\n * element.\n *\n * See also the [`Searchbox`]{@link Searchbox} component, which can automatically instantiate a `Querybox` along with an\n * optional [`SearchButton`]{@link SearchButton} component.\n */\nexport class Querybox extends Component {\n  static ID = 'Querybox';\n\n  static doExport = () => {\n    exportGlobally({\n      Querybox: Querybox,\n      QueryboxQueryParameters: QueryboxQueryParameters\n    });\n  };\n\n  /**\n   * The options for the Querybox.\n   * @componentOptions\n   */\n  public static options: IQueryboxOptions = {\n    /**\n     * Whether to enable the search-as-you-type feature.\n     *\n     * **Note:** Enabling this feature can consume lots of queries per month (QPM), especially if the [`searchAsYouTypeDelay`]{@link Querybox.options.searchAsYouTypeDelay} option is set to a low value.\n     *\n     * Default value is `false`.\n     */\n    enableSearchAsYouType: ComponentOptions.buildBooleanOption({ defaultValue: false, section: 'Advanced Options' }),\n\n    /**\n     * If the [`enableSearchAsYouType`]{@link Querybox.options.enableSearchAsYouType} option is `true`, specifies how\n     * long to wait (in milliseconds) between each key press before triggering a new query.\n     *\n     * Default value is `50`. Minimum value is `0`\n     */\n    searchAsYouTypeDelay: ComponentOptions.buildNumberOption({ defaultValue: 50, min: 0, section: 'Advanced Options' }),\n\n    /**\n     * Specifies whether to interpret special query syntax (e.g., `@objecttype=message`) when the end user types\n     * a query in the `Querybox` (see\n     * [Coveo Query Syntax Reference](https://docs.coveo.com/en/1552/searching-with-coveo/coveo-cloud-query-syntax)). Setting this\n     * option to `true` also causes the `Querybox` to highlight any query syntax.\n     *\n     * Regardless of the value of this option, the Coveo Cloud REST Search API always interprets expressions surrounded\n     * by double quotes (`\"`) as exact phrase match requests.\n     *\n     * See also [`enableLowercaseOperators`]{@link Querybox.options.enableLowercaseOperators}.\n     *\n     * **Notes:**\n     * > * End user preferences can override the value you specify for this option.\n     * >\n     * > If the end user selects a value other than **Automatic** for the **Enable query syntax** setting (see\n     * > the [`enableQuerySyntax`]{@link ResultsPreferences.options.enableQuerySyntax} option of the\n     * > [`ResultsPreferences`]{@link ResultsPreferences} component), the end user preference takes precedence over this\n     * > option.\n     * >\n     * > * On-premises versions of the Coveo Search API require this option to be set to `true` in order to interpret\n     * > expressions surrounded by double quotes (`\"`) as exact phrase match requests.\n     *\n     * Default value is `false`.\n     */\n    enableQuerySyntax: ComponentOptions.buildBooleanOption({ defaultValue: false, section: 'Advanced Options' }),\n\n    /**\n     * Specifies whether to expand basic expression keywords containing wildcards characters (`*`) to the possible\n     * matching keywords in order to broaden the query (see\n     * [Using Wildcards in Queries](https://docs.coveo.com/en/1580/)).\n     *\n     * See also [`enableQuestionMarks`]{@link Querybox.options.enableQuestionMarks}.\n     *\n     *  **Note:**\n     * > If you are using an on-premises version of the Coveo Search API, you need to set the\n     * > [`enableQuerySyntax`]{@link Querybox.options.enableQuerySyntax} option to `true` to be able to set\n     * > `enableWildcards` to `true`.\n     *\n     * Default value is `false`.\n     */\n    enableWildcards: ComponentOptions.buildBooleanOption({ defaultValue: false, section: 'Advanced Options' }),\n\n    /**\n     * If [`enableWildcards`]{@link Querybox.options.enableWildcards} is `true`, specifies whether to expand basic\n     * expression keywords containing question mark characters (`?`) to the possible matching keywords in order to\n     * broaden the query (see\n     * [Using Wildcards in Queries](https://docs.coveo.com/en/1580/)).\n     *\n     * **Note:**\n     * > If you are using an on-premises version of the Coveo Search API, you also need to set the\n     * > [`enableQuerySyntax`]{@link Querybox.options.enableQuerySyntax} option to `true` in order to be able to set\n     * > `enableQuestionMarks` to `true`.\n     *\n     * Default value is `false`.\n     */\n    enableQuestionMarks: ComponentOptions.buildBooleanOption({ defaultValue: false, depend: 'enableWildcards' }),\n\n    /**\n     * If the [`enableQuerySyntax`]{@link Querybox.options.enableQuerySyntax} option is `true`, specifies whether to\n     * interpret the `AND`, `NOT`, `OR`, and `NEAR` keywords in the `Querybox` as query operators in the query, even if\n     * the end user types those keywords in lowercase.\n     *\n     * This option applies to all query operators (see\n     * [Coveo Query Syntax Reference](https://docs.coveo.com/en/1552/searching-with-coveo/coveo-cloud-query-syntax)).\n     *\n     * **Example:**\n     * > If this option and the `enableQuerySyntax` option are both `true`, the Coveo Platform interprets the `near`\n     * > keyword in a query such as `service center near me` as the `NEAR` query operator (not as a query term).\n     *\n     * > Otherwise, if the `enableQuerySyntax` option is `true` and this option is `false`, the end user has to type the\n     * > `NEAR` keyword in uppercase for the Coveo Platform to interpret it as a query operator.\n     *\n     * Default value is `false`.\n     */\n    enableLowercaseOperators: ComponentOptions.buildBooleanOption({ defaultValue: false, depend: 'enableQuerySyntax' }),\n\n    /**\n     * Whether to convert a basic expression containing at least a certain number of keywords (see the\n     * [`partialMatchKeywords`]{@link Querybox.options.partialMatchKeywords} option) to *partial match expression*, so\n     * that items containing at least a certain number of those keywords (see the\n     * [`partialMatchThreshold`]{@link Querybox.options.partialMatchThreshold} option) will match the expression.\n     *\n     * **Notes:**\n     * - Only the basic expression of the query (see [`q`]{@link q}) can be converted to a partial match expression.\n     * - When the [`enableQuerySyntax`]{@link Querybox.options.enableQuerySyntax} option is set to `true`, this feature has no effect if the basic expression contains advanced query syntax (field expressions, operators, etc.).\n     *\n     * @notSupportedIn salesforcefree\n     */\n    enablePartialMatch: ComponentOptions.buildBooleanOption({ defaultValue: false }),\n\n    /**\n     * The minimum number of keywords that need to be present in the basic expression to convert it to a partial match expression.\n     *\n     * See also the [`partialMatchThreshold`]{@link Querybox.options.partialMatchThreshold} option.\n     *\n     * **Notes:**\n     *\n     * - Repeated keywords count as a single keyword.\n     * - Thesaurus expansions count towards the `partialMatchKeywords` count.\n     * - Stemming expansions **do not** count towards the `partialMatchKeywords` count.\n     *\n     * @notSupportedIn salesforcefree\n     */\n    partialMatchKeywords: ComponentOptions.buildNumberOption({ defaultValue: 5, min: 1, depend: 'enablePartialMatch' }),\n\n    /**\n     * An absolute or relative value indicating the minimum number of partial match expression keywords an item must contain to match the expression.\n     *\n     * See also the [`partialMatchKeywords`]{@link Querybox.options.partialMatchKeywords} option.\n     *\n     * **Notes:**\n     * - A keyword and its stemming expansions count as a single keyword when evaluating whether an item meets the `partialMatchThreshold`.\n     * - When a relative `partialMatchThreshold` does not yield a whole integer, the fractional part is truncated (e.g., `3.6` becomes `3`).\n     *\n     * @notSupportedIn salesforcefree\n     */\n    partialMatchThreshold: ComponentOptions.buildStringOption({ defaultValue: '50%', depend: 'enablePartialMatch' }),\n\n    /**\n     * Whether to trigger a query when clearing the `Querybox`.\n     *\n     * Default value is `false`.\n     */\n    triggerQueryOnClear: ComponentOptions.buildBooleanOption({ defaultValue: false })\n  };\n  MagicBoxImpl;\n\n  public magicBox: MagicBoxInstance;\n  private lastQuery: string;\n  private searchAsYouTypeTimeout: number;\n\n  /**\n   * Creates a new `Querybox component`. Creates a new `Coveo.Magicbox` instance and wraps the Magicbox methods\n   * (`onblur`, `onsubmit` etc.). Binds event on `buildingQuery` and before redirection (for standalone box).\n   * @param element The HTMLElement on which to instantiate the component. This cannot be an HTMLInputElement for\n   * technical reasons.\n   * @param options The options for the `Querybox` component.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time).\n   */\n  constructor(public element: HTMLElement, public options?: IQueryboxOptions, public bindings?: IComponentBindings) {\n    super(element, Querybox.ID, bindings);\n\n    if (element instanceof HTMLInputElement) {\n      this.logger.error('Querybox cannot be used on an HTMLInputElement');\n    }\n\n    this.options = ComponentOptions.initComponentOptions(element, Querybox, options);\n    new QueryboxOptionsProcessing(this).postProcess();\n\n    $$(this.element).toggleClass('coveo-query-syntax-disabled', this.options.enableQuerySyntax == false);\n    this.magicBox = createMagicBox(\n      element,\n      new Grammar('Query', {\n        Query: '[Term*][Spaces?]',\n        Term: '[Spaces?][Word]',\n        Spaces: / +/,\n        Word: /[^ ]+/\n      }),\n      {\n        inline: true\n      }\n    );\n\n    const input = $$(this.magicBox.element).find('input');\n    if (input) {\n      $$(input).setAttribute('aria-label', this.options.placeholder || l('Search'));\n    }\n\n    this.bind.onRootElement(QueryEvents.buildingQuery, (args: IBuildingQueryEventArgs) => this.handleBuildingQuery(args));\n    this.bind.onRootElement(StandaloneSearchInterfaceEvents.beforeRedirect, () => this.updateQueryState());\n    this.bind.onQueryState(MODEL_EVENTS.CHANGE_ONE, QUERY_STATE_ATTRIBUTES.Q, (args: IAttributeChangedEventArg) =>\n      this.handleQueryStateChanged(args)\n    );\n\n    if (this.options.enableSearchAsYouType) {\n      $$(this.element).addClass('coveo-search-as-you-type');\n      this.magicBox.onchange = () => {\n        this.searchAsYouType();\n      };\n    }\n\n    this.magicBox.onsubmit = () => {\n      this.submit();\n    };\n\n    this.magicBox.onblur = () => {\n      this.updateQueryState();\n    };\n\n    this.magicBox.onclear = () => {\n      this.updateQueryState();\n      if (this.options.triggerQueryOnClear) {\n        this.usageAnalytics.logSearchEvent<IAnalyticsNoMeta>(analyticsActionCauseList.searchboxClear, {});\n        this.triggerNewQuery(false);\n      }\n    };\n  }\n\n  /**\n   * Adds the current content of the input to the query and triggers a query if the current content of the input has\n   * changed since last submit.\n   *\n   * Also logs the `serachboxSubmit` event in the usage analytics.\n   */\n  public submit(): void {\n    this.magicBox.clearSuggestion();\n    this.updateQueryState();\n    this.usageAnalytics.logSearchEvent<IAnalyticsNoMeta>(analyticsActionCauseList.searchboxSubmit, {});\n    this.triggerNewQuery(false);\n  }\n\n  /**\n   * Sets the content of the input.\n   *\n   * @param text The string to set in the input.\n   */\n  public setText(text: string): void {\n    this.magicBox.setText(text);\n    this.updateQueryState();\n  }\n\n  /**\n   * Clears the content of the input.\n   *\n   * See also the [`triggerQueryOnClear`]{@link Querybox.options.triggerQueryOnClear} option.\n   */\n  public clear(): void {\n    this.magicBox.clear();\n  }\n\n  /**\n   * Gets the content of the input.\n   *\n   * @returns {string} The content of the input.\n   */\n  public getText(): string {\n    return this.magicBox.getText();\n  }\n\n  /**\n   * Gets the result from the input.\n   *\n   * @returns {Result} The result.\n   */\n  public getResult() {\n    return this.magicBox.getResult();\n  }\n\n  /**\n   * Gets the displayed result from the input.\n   *\n   * @returns {Result} The displayed result.\n   */\n  public getDisplayedResult(): Result {\n    return this.magicBox.getDisplayedResult();\n  }\n\n  /**\n   * Gets the current cursor position in the input.\n   *\n   * @returns {number} The cursor position (index starts at 0).\n   */\n  public getCursor(): number {\n    return this.magicBox.getCursor();\n  }\n\n  /**\n   * Gets the result at cursor position.\n   *\n   * @param match {string | { (result): boolean }} The match condition.\n   *\n   * @returns {Result[]} The result.\n   */\n  public resultAtCursor(match?: string | { (result): boolean }) {\n    return this.magicBox.resultAtCursor(match);\n  }\n\n  private handleBuildingQuery(args: IBuildingQueryEventArgs): void {\n    Assert.exists(args);\n    Assert.exists(args.queryBuilder);\n\n    this.updateQueryState();\n    this.lastQuery = this.magicBox.getText();\n    new QueryboxQueryParameters(this.options).addParameters(args.queryBuilder, this.lastQuery);\n  }\n\n  private triggerNewQuery(searchAsYouType: boolean): void {\n    clearTimeout(this.searchAsYouTypeTimeout);\n    let text = this.magicBox.getText();\n    if (this.lastQuery != text && text != null) {\n      this.lastQuery = text;\n      this.queryController.executeQuery({\n        searchAsYouType: searchAsYouType,\n        logInActionsHistory: true\n      });\n    }\n  }\n\n  private updateQueryState(): void {\n    this.queryStateModel.set(QueryStateModel.attributesEnum.q, this.magicBox.getText());\n  }\n\n  private handleQueryStateChanged(args: IAttributeChangedEventArg): void {\n    Assert.exists(args);\n    let q = <string>args.value;\n    if (q != this.magicBox.getText()) {\n      this.magicBox.setText(q);\n    }\n  }\n\n  private searchAsYouType(): void {\n    clearTimeout(this.searchAsYouTypeTimeout);\n    this.searchAsYouTypeTimeout = window.setTimeout(() => {\n      this.usageAnalytics.logSearchAsYouType<IAnalyticsNoMeta>(analyticsActionCauseList.searchboxAsYouType, {});\n      this.triggerNewQuery(true);\n    }, this.options.searchAsYouTypeDelay);\n  }\n}\nInitialization.registerAutoCreateComponent(Querybox);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Querybox/Querybox.ts","import { IFormWidget } from './FormWidgets';\nimport { Dom, $$ } from '../../utils/Dom';\nimport * as _ from 'underscore';\n\nimport 'styling/vapor/_FormGroup';\nimport { exportGlobally } from '../../GlobalExports';\n\n/**\n * A simple `fieldset` HTMLElement containing multiple form widgets.\n */\nexport class FormGroup {\n  private element: Dom;\n  public labelElement: Dom;\n\n  static doExport() {\n    exportGlobally({\n      FormGroup: FormGroup\n    });\n  }\n\n  /**\n   * Creates a new `FormGroup`.\n   * @param contents The form widgets to include in the form group.\n   * @param label The label to display for the form group.\n   */\n  constructor(contents: IFormWidget[], label: string) {\n    this.labelElement = $$('span', { className: 'coveo-form-group-label' });\n    this.labelElement.text(label);\n    this.element = $$('fieldset', { className: 'coveo-form-group' }, this.labelElement);\n    _.each(contents, (content: IFormWidget) => {\n      this.element.append(content.build());\n    });\n  }\n\n  /**\n   * Gets the element on which the form group is bound.\n   * @returns {HTMLElement} The form group element.\n   */\n  public build(): HTMLElement {\n    return this.element.el;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/FormWidgets/FormGroup.ts","import 'styling/DynamicFacet/_DynamicFacet';\nimport { IDynamicFacet, IDynamicFacetOptions } from './IDynamicFacet';\nimport { defer, difference, findIndex } from 'underscore';\nimport { $$ } from '../../utils/Dom';\nimport { exportGlobally } from '../../GlobalExports';\nimport { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { Initialization } from '../Base/Initialization';\nimport { ResponsiveFacetOptions } from '../ResponsiveComponents/ResponsiveFacetOptions';\nimport { ResponsiveDynamicFacets } from '../ResponsiveComponents/ResponsiveDynamicFacets';\nimport { DynamicFacetBreadcrumbs } from './DynamicFacetBreadcrumbs';\nimport { DynamicFacetHeader } from './DynamicFacetHeader/DynamicFacetHeader';\nimport { DynamicFacetValues } from './DynamicFacetValues/DynamicFacetValues';\nimport { QueryEvents, IQuerySuccessEventArgs, IDoneBuildingQueryEventArgs } from '../../events/QueryEvents';\nimport { QueryStateModel } from '../../models/QueryStateModel';\nimport { DynamicFacetQueryController } from '../../controllers/DynamicFacetQueryController';\nimport { Utils } from '../../utils/Utils';\nimport { MODEL_EVENTS, IAttributesChangedEventArg } from '../../models/Model';\nimport { Assert } from '../../misc/Assert';\nimport { IFacetResponse } from '../../rest/Facet/FacetResponse';\nimport { IStringMap } from '../../rest/GenericParam';\nimport { isFacetSortCriteria, FacetSortCriteria } from '../../rest/Facet/FacetSortCriteria';\nimport { l } from '../../strings/Strings';\nimport { DeviceUtils } from '../../utils/DeviceUtils';\nimport { BreadcrumbEvents, IPopulateBreadcrumbEventArgs } from '../../events/BreadcrumbEvents';\nimport { IAnalyticsActionCause, analyticsActionCauseList, IAnalyticsFacetMeta } from '../Analytics/AnalyticsActionListMeta';\nimport { IAnalyticsFacetState } from '../Analytics/IAnalyticsFacetState';\nimport { IQueryOptions } from '../../controllers/QueryController';\nimport { DynamicFacetManager } from '../DynamicFacetManager/DynamicFacetManager';\nimport { QueryBuilder } from '../Base/QueryBuilder';\nimport { DynamicFacetSearch } from '../DynamicFacetSearch/DynamicFacetSearch';\nimport { ResultListUtils } from '../../utils/ResultListUtils';\nimport { IQueryResults } from '../../rest/QueryResults';\nimport { FacetType } from '../../rest/Facet/FacetRequest';\nimport { DependsOnManager, IDependentFacet, IDependentFacetCondition } from '../../utils/DependsOnManager';\nimport { DynamicFacetValueCreator } from './DynamicFacetValues/DynamicFacetValueCreator';\nimport { Logger } from '../../misc/Logger';\nimport { FacetUtils } from '../Facet/FacetUtils';\n\n/**\n * The `DynamicFacet` component displays a *facet* of the results for the current query. A facet is a list of values for a\n * certain field occurring in the results, ordered using a configurable criteria (e.g., number of occurrences).\n *\n * The list of values is obtained using an array of [`FacetRequest`]{@link IFacetRequest} operations performed at the same time\n * as the main query.\n *\n * The `DynamicFacet` component allows the end-user to drill down inside a result set by restricting the result to certain\n * field values.\n *\n * This facet is more easy to use than the original [`Facet`]{@link Facet} component. It implements additional Coveo Machine Learning (Coveo ML) features\n * such as dynamic navigation experience (DNE).\n *\n * @notSupportedIn salesforcefree\n * @availablesince [May 2019 Release (v2.6063)](https://docs.coveo.com/en/2909/)\n */\nexport class DynamicFacet extends Component implements IDynamicFacet {\n  static ID = 'DynamicFacet';\n  static doExport = () => exportGlobally({ DynamicFacet });\n\n  /**\n   * The options for the DynamicFacet\n   * @componentOptions\n   */\n  static options: IDynamicFacetOptions = {\n    ...ResponsiveFacetOptions,\n\n    /**\n     * The unique identifier for this facet.\n     *\n     * Among other things, this is used to record and read the facet\n     * state in the URL fragment identifier (see the\n     * [`enableHistory`]{@link SearchInterface.options.enableHistory} `SearchInterface`\n     * option).\n     *\n     * **Tip:** When several facets in a given search interface are based on\n     * the same field, ensure that each of those facets has a distinct `id`.\n     *\n     * If specified, must contain between 1 and 60 characters.\n     * Only alphanumeric (A-Za-z0-9), underscore (_), and hyphen (-) characters are kept; other characters are automatically removed.\n     *\n     * Defaults to the [`field`]{@link DynamicFacet.options.field} option value.\n     *\n     * @examples author-facet\n     */\n    id: ComponentOptions.buildStringOption({\n      postProcessing: (value = '', options: IDynamicFacetOptions) => {\n        const maxCharLength = 60;\n        const sanitizedValue = value.replace(/[^A-Za-z0-9-_@]+/g, '');\n        if (Utils.isNonEmptyString(sanitizedValue)) {\n          return sanitizedValue.slice(0, maxCharLength - 1);\n        }\n\n        return options.field.slice(0, maxCharLength - 1);\n      },\n      section: 'CommonOptions'\n    }),\n\n    /**\n     * The title to display for this facet.\n     *\n     * Defaults to the localized string for `NoTitle`.\n     *\n     * @examples Author\n     */\n    title: ComponentOptions.buildLocalizedStringOption({\n      localizedString: () => l('NoTitle'),\n      section: 'CommonOptions',\n      priority: 10\n    }),\n\n    /**\n     * The name of the field on which to base this facet.\n     *\n     * The field must of the `string` type.\n     *\n     * Must be prefixed by `@`, and must reference an existing field whose\n     * **Facet** option is enabled.\n     *\n     * @externaldocs [Add or Edit Fields](https://docs.coveo.com/en/1982/)\n     * @examples @author\n     */\n    field: ComponentOptions.buildFieldOption({ required: true, section: 'CommonOptions' }),\n\n    /**\n     * The sort criterion to use for this facet.\n     *\n     * See [`FacetSortCriteria`]{@link FacetSortCriteria} for the list and\n     * description of allowed values.\n     *\n     * By default, the following behavior applies:\n     *\n     * - If the requested [`numberOfValues`]{@link DynamicFacet.options.numberOfValues}\n     * is greater than or equal to the currently displayed number of values,\n     * the [`alphanumeric`]{@link FacetSortCriteria.alphanumeric} criterion is\n     * used.\n     * - If the requested `numberOfValues` is less than the currently displayed\n     * number of values and the facet is not currently expanded, the [`score`]{@link FacetSortCriteria.score}\n     * criterion is used.\n     * - Otherwise, the `alphanumeric` criterion is used.\n     *\n     * @examples score\n     */\n    sortCriteria: <FacetSortCriteria>ComponentOptions.buildStringOption({\n      postProcessing: value => {\n        if (!value) {\n          return undefined;\n        }\n\n        if (isFacetSortCriteria(value)) {\n          return value;\n        }\n\n        new Logger(value).warn('sortCriteria is not of the the allowed values: \"score\", \"alphanumeric\", \"occurrences\"');\n        return undefined;\n      },\n      section: 'Sorting'\n    }),\n\n    /**\n     * Specifies a custom order by which to sort the dynamic facet values.\n     *\n     * Custom-ordered values won't necessarily retrieve values from the index.\n     *\n     * **Example:**\n     *\n     * You could use this option to specify a logical order for support tickets, such as:\n     * ```html\n     * <div class=\"CoveoDynamicFacet\" data-field=\"@ticketstatus\" data-title=\"Ticket Status\" data-tab=\"All\" data-custom-sort=\"New,Opened,Feedback,Resolved\"></div>\n     * ```\n     *\n     * **Note:**\n     * > The [`DynamicFacetRange`]{@link DynamicFacetRange} component does not support this option.\n     */\n    customSort: ComponentOptions.buildListOption<string>({ section: 'Sorting' }),\n\n    /**\n     * The number of values to request for this facet.\n     *\n     * Also determines the default maximum number of additional values to request each time this facet is expanded,\n     * and the maximum number of values to display when this facet is collapsed (see the [`enableCollapse`]{@link DynamicFacet.options.enableCollapse} option).\n     */\n    numberOfValues: ComponentOptions.buildNumberOption({ min: 0, defaultValue: 8, section: 'CommonOptions' }),\n\n    /**\n     * Whether to allow the end-user to expand and collapse this facet.\n     */\n    enableCollapse: ComponentOptions.buildBooleanOption({ defaultValue: true, section: 'CommonOptions' }),\n\n    /**\n     * Whether to scroll back to the top of the page whenever the end-user interacts with the facet.\n     */\n    enableScrollToTop: ComponentOptions.buildBooleanOption({ defaultValue: true, section: 'CommonOptions' }),\n\n    /**\n     * Whether to enable the **Show more** and **Show less** buttons in the facet.\n     *\n     * **Note:** The [`DynamicFacetRange`]{@link DynamicFacetRange} component does not support this option.\n     */\n    enableMoreLess: ComponentOptions.buildBooleanOption({ defaultValue: true, section: 'CommonOptions' }),\n\n    /**\n     * Whether to allow the end-user to search the facet values.\n     *\n     * **Note:** The [`DynamicFacetRange`]{@link DynamicFacetRange} component does not support this option.\n     *\n     * By default, the following behavior applies:\n     *\n     * - Enabled when more facet values are available.\n     * - Disabled when all available facet values are already displayed.\n     */\n    enableFacetSearch: ComponentOptions.buildBooleanOption({ section: 'Filtering' }),\n\n    /**\n     * Whether to prepend facet search queries with a wildcard.\n     *\n     * **Note:** The [`DynamicFacetRange`]{@link DynamicFacetRange} component does not support this option.\n     */\n    useLeadingWildcardInFacetSearch: ComponentOptions.buildBooleanOption({\n      defaultValue: true,\n      section: 'Filtering',\n      depend: 'enableFacetSearch'\n    }),\n\n    /**\n     * Whether this facet should be collapsed by default.\n     */\n    collapsedByDefault: ComponentOptions.buildBooleanOption({ defaultValue: false, section: 'CommonOptions', depend: 'enableCollapse' }),\n\n    /**\n     * Whether to notify the [`Breadcrumb`]{@link Breadcrumb} component when toggling values in the facet.\n     *\n     * See also the [`numberOfValuesInBreadcrumb`]{@link DynamicFacet.options.numberOfValuesInBreadcrumb} option.\n     */\n    includeInBreadcrumb: ComponentOptions.buildBooleanOption({ defaultValue: true, section: 'CommonOptions' }),\n\n    /**\n     * The maximum number of selected values the [`Breadcrumb`]{@link Breadcrumb} component can display before outputting a **N more...** link for the facet.\n     */\n    numberOfValuesInBreadcrumb: ComponentOptions.buildNumberOption({\n      defaultFunction: () => (DeviceUtils.isMobileDevice() ? 3 : 5),\n      min: 0,\n      depend: 'includeInBreadcrumb',\n      section: 'CommonOptions'\n    }),\n\n    /**\n     * A mapping of facet values to their desired captions.\n     *\n     * **Note:** The [`DynamicFacetRange`]{@link DynamicFacetRange} component does not support this option.\n     *\n     * @externaldocs [Normalizing Facet Value Captions](https://docs.coveo.com/368/).\n     * @examples { \"smith_alice\": \"Alice Smith\"\\, \"jones_bob_r\": \"Bob R. Jones\" }\n     */\n    valueCaption: ComponentOptions.buildJsonOption<IStringMap<string>>({ defaultValue: {} }),\n\n    /**\n     * The [`id`]{@link DynamicFacet.options.id} of another facet in which at least one value must be selected in order for the dependent facet to be visible.\n     *\n     * By default, the facet does not depend on any other facet to be displayed.\n     *\n     * @examples document-type-facet\n     *\n     * @availablesince [December 2019 Release (v2.7610)](https://docs.coveo.com/en/3142/)\n     */\n    dependsOn: ComponentOptions.buildStringOption({ section: 'CommonOptions' }),\n\n    /**\n     * A function that verifies whether the current state of the `dependsOn` facet allows the dependent facet to be displayed.\n     *\n     * If specified, the function receives a reference to the resolved `dependsOn` facet component instance as an argument, and must return a boolean.\n     * The function's argument should typically be treated as read-only.\n     *\n     * By default, the dependent facet is displayed whenever one or more values are selected in its `dependsOn` facet.\n     *\n     * @externaldocs [Defining Dependent Facets](https://docs.coveo.com/3210/)\n     *\n     * @availablesince [April 2020 Release (v2.8864)](https://docs.coveo.com/en/3231/)\n     */\n    dependsOnCondition: ComponentOptions.buildCustomOption<IDependentFacetCondition>(\n      () => {\n        return null;\n      },\n      { depend: 'dependsOn', section: 'CommonOptions' }\n    ),\n\n    /**\n     * The number of items to scan for facet values.\n     *\n     * Setting this option to a higher value may enhance the accuracy of facet value counts at the cost of slower query performance.\n     *\n     * @availablesince [January 2020 Release (v2.7968)](https://docs.coveo.com/en/3163/)\n     *\n     * @examples 1500\n     */\n    injectionDepth: ComponentOptions.buildNumberOption({ defaultValue: 1000, min: 1000 }),\n\n    /**\n     * Whether to exclude folded result parents when estimating result counts for facet values.\n     *\n     * **Note:** The target folding field must be a facet field with the **Use cache for nested queries** options enabled (see [Add or Edit a Field](https://docs.coveo.com/en/1982)).\n     *\n     * See also the [`Folding`]{@link Folding} and [`FoldingForThread`]{@link FoldingForThread} components.\n     *\n     * **Default:** `true`.\n     *\n     * @availablesince [March 2020 Release (v2.8521)](https://docs.coveo.com/en/3203/)\n     */\n    filterFacetCount: ComponentOptions.buildBooleanOption({ section: 'Filtering' }),\n\n    /**\n     * The [heading level](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Heading_Elements) to use for the heading above the facet.\n     *\n     * A value of 0 will render a [`div`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/div) element instead.\n     *\n     * **Default:** `2`.\n     */\n    headingLevel: ComponentOptions.buildNumberOption({ defaultValue: 2, min: 0, max: 6 })\n  };\n\n  private includedAttributeId: string;\n  private listenToQueryStateChange = true;\n  private search: DynamicFacetSearch;\n  private valueToFocusOnRender: string | null;\n  public header: DynamicFacetHeader;\n\n  public options: IDynamicFacetOptions;\n  public dynamicFacetManager: DynamicFacetManager;\n  public dependsOnManager: DependsOnManager;\n  public dynamicFacetQueryController: DynamicFacetQueryController;\n  public values: DynamicFacetValues;\n  public position: number;\n  public moreValuesAvailable = false;\n  public isCollapsed: boolean;\n  public isDynamicFacet = true;\n  public isFieldValueCompatible = true;\n  public isFieldValueHierarchical = false;\n\n  /**\n   * Creates a new `DynamicFacet` instance.\n   *\n   * @param element The element from which to instantiate the component.\n   * @param options The component options.\n   * @param bindings The component bindings. Automatically resolved by default.\n   */\n  constructor(\n    public element: HTMLElement,\n    options?: IDynamicFacetOptions,\n    bindings?: IComponentBindings,\n    classId: string = DynamicFacet.ID\n  ) {\n    super(element, classId, bindings);\n    this.options = ComponentOptions.initComponentOptions(element, DynamicFacet, options);\n\n    this.initDynamicFacetQueryController();\n    this.initDependsOnManager();\n    this.initQueryEvents();\n    this.initQueryStateEvents();\n    this.initBreadCrumbEvents();\n    this.initComponentStateEvents();\n    this.initValues();\n    this.verifyCollapsingConfiguration();\n    this.isCollapsed = this.options.enableCollapse && this.options.collapsedByDefault;\n\n    ResponsiveDynamicFacets.init(this.root, this, this.options);\n  }\n\n  public get fieldName() {\n    return this.options.field.slice(1);\n  }\n\n  public get facetType() {\n    return FacetType.specific;\n  }\n\n  /**\n   * Selects a single value in this facet.\n   *\n   * Does **not** trigger a query automatically.\n   * Does **not** update the visual of the facet until a query is performed.\n   *\n   * @param value The name of the facet value to select.\n   */\n  public selectValue(value: string) {\n    Assert.exists(value);\n    this.selectMultipleValues([value]);\n  }\n\n  /**\n   * Selects multiple values in this facet.\n   *\n   * Does **not** trigger a query automatically.\n   * Does **not** update the visual of the facet until a query is performed.\n   *\n   * @param values The names of the facet values to select.\n   */\n  public selectMultipleValues(values: string[]) {\n    Assert.exists(values);\n    this.ensureDom();\n    this.logger.info('Selecting facet value(s)', values);\n    values.forEach(value => {\n      this.values.get(value).select();\n    });\n    this.updateQueryStateModel();\n  }\n\n  /**\n   * Deselects a single value in this facet.\n   *\n   * Does **not** trigger a query automatically.\n   * Does **not** update the visual of the facet until a query is performed.\n   *\n   * @param values The name of the facet value to deselect.\n   */\n  public deselectValue(value: string) {\n    Assert.exists(value);\n    this.deselectMultipleValues([value]);\n  }\n\n  /**\n   * Determines whether the specified value is selected in the facet.\n   * @param value The name of the facet value to verify.\n   */\n  public hasSelectedValue(value: string) {\n    return this.values.hasSelectedValue(value);\n  }\n\n  /**\n   * Deselects multiple values in this facet.\n   *\n   * Does **not** trigger a query automatically.\n   * Does **not** update the visual of the facet until a query is performed.\n   *\n   * @param values The names of the facet values to deselect.\n   */\n  public deselectMultipleValues(values: string[]) {\n    Assert.exists(values);\n    this.ensureDom();\n    this.logger.info('Deselecting facet value(s)', values);\n    values.forEach(value => {\n      this.values.get(value).deselect();\n    });\n    this.updateQueryStateModel();\n  }\n\n  /**\n   * Toggles the selection state of a single value in this facet.\n   *\n   * Does **not** trigger a query automatically.\n   *\n   * @param values The name of the facet value to toggle.\n   */\n  public toggleSelectValue(value: string) {\n    Assert.exists(value);\n    this.ensureDom();\n    const facetValue = this.values.get(value);\n    facetValue.toggleSelect();\n    this.logger.info('Toggle select facet value', facetValue);\n    this.updateQueryStateModel();\n  }\n\n  /**\n   * Keyboard focuses a value once it has been re-rendered.\n   *\n   * @param value The name of the facet value to focus\n   */\n  public focusValueAfterRerender(value: string) {\n    Assert.exists(value);\n    this.valueToFocusOnRender = value;\n  }\n\n  /**\n   * Returns the configured caption for a desired facet value.\n   *\n   * @param value The string facet value whose caption the method should return.\n   */\n  public getCaptionForStringValue(value: string) {\n    return FacetUtils.getDisplayValueFromValueCaption(value, this.options.field as string, this.options.valueCaption);\n  }\n\n  /**\n   * Requests additional values.\n   *\n   * Automatically triggers an isolated query.\n   * @param additionalNumberOfValues The number of additional values to request. Minimum value is 1. Defaults to the [numberOfValues]{@link DynamicFacet.options.numberOfValues} option value.\n   */\n  public showMoreValues(additionalNumberOfValues = this.options.numberOfValues) {\n    this.ensureDom();\n    this.logger.info('Show more values');\n    this.dynamicFacetQueryController.increaseNumberOfValuesToRequest(additionalNumberOfValues);\n    this.triggerNewIsolatedQuery(() => this.logAnalyticsFacetShowMoreLess(analyticsActionCauseList.dynamicFacetShowMore));\n  }\n\n  /**\n   * Reduces the number of displayed facet values down to [numberOfValues]{@link DynamicFacet.options.numberOfValues}.\n   *\n   * Automatically triggers an isolated query.\n   */\n  public showLessValues() {\n    this.ensureDom();\n    this.logger.info('Show less values');\n    this.dynamicFacetQueryController.resetNumberOfValuesToRequest();\n    this.triggerNewIsolatedQuery(() => this.logAnalyticsFacetShowMoreLess(analyticsActionCauseList.dynamicFacetShowLess));\n  }\n\n  /**\n   * Deselects all values in this facet.\n   *\n   * Does **not** trigger a query automatically.\n   * Updates the visual of the facet.\n   *\n   */\n  public reset() {\n    this.ensureDom();\n    if (this.values.hasActiveValues) {\n      this.logger.info('Deselect all values');\n      this.values.clearAll();\n      this.values.render();\n    }\n    this.enablePreventAutoSelectionFlag();\n    this.updateAppearance();\n    this.updateQueryStateModel();\n  }\n\n  /**\n   * Collapses or expands the facet depending on it's current state.\n   */\n  public toggleCollapse() {\n    this.isCollapsed ? this.expand() : this.collapse();\n  }\n\n  /**\n   * Expands the facet, displaying all of its currently fetched values.\n   */\n  public expand() {\n    if (!this.options.enableCollapse) {\n      return this.logger.warn(`Calling expand() won't do anything on a facet that has the option \"enableCollapse\" set to \"false\"`);\n    }\n    if (!this.isCollapsed) {\n      return;\n    }\n    this.ensureDom();\n    this.logger.info('Expand facet values');\n    this.isCollapsed = false;\n    this.updateAppearance();\n  }\n\n  /**\n   * Collapses the facet, displaying only its currently selected values.\n   */\n  public collapse() {\n    if (!this.options.enableCollapse) {\n      return this.logger.warn(`Calling collapse() won't do anything on a facet that has the option \"enableCollapse\" set to \"false\"`);\n    }\n    if (this.isCollapsed) {\n      return;\n    }\n    this.ensureDom();\n    this.logger.info('Collapse facet values');\n    this.isCollapsed = true;\n    this.updateAppearance();\n  }\n\n  /**\n   * Sets a flag indicating whether the facet values should be returned in their current order.\n   *\n   * Setting the flag to `true` helps ensuring that the values do not move around while the end-user is interacting with them.\n   *\n   * The flag is automatically set back to `false` after a query is built.\n   */\n  public enableFreezeCurrentValuesFlag() {\n    this.dynamicFacetQueryController.enableFreezeCurrentValuesFlag();\n  }\n\n  /**\n   * For this method to work, the component has to be the child of a [DynamicFacetManager]{@link DynamicFacetManager} component.\n   *\n   * Sets a flag indicating whether the facets should be returned in their current order.\n   *\n   * Setting the flag to `true` helps ensuring that the facets do not move around while the end-user is interacting with them.\n   *\n   * The flag is automatically set back to `false` after a query is built.\n   */\n  public enableFreezeFacetOrderFlag() {\n    this.dynamicFacetQueryController.enableFreezeFacetOrderFlag();\n  }\n\n  public enablePreventAutoSelectionFlag() {\n    this.dynamicFacetQueryController.enablePreventAutoSelectionFlag();\n  }\n\n  public scrollToTop() {\n    if (this.options.enableScrollToTop) {\n      ResultListUtils.scrollToTop(this.root);\n    }\n  }\n\n  public get analyticsFacetState(): IAnalyticsFacetState[] {\n    return this.values.activeValues.map(facetValue => facetValue.analyticsFacetState);\n  }\n\n  public get basicAnalyticsFacetState(): IAnalyticsFacetState {\n    return {\n      field: this.options.field.toString(),\n      id: this.options.id,\n      title: this.options.title,\n      facetType: this.facetType,\n      facetPosition: this.position\n    };\n  }\n\n  public get basicAnalyticsFacetMeta(): IAnalyticsFacetMeta {\n    return {\n      facetField: this.options.field.toString(),\n      facetId: this.options.id,\n      facetTitle: this.options.title\n    };\n  }\n\n  public logAnalyticsEvent(actionCause: IAnalyticsActionCause, facetMeta: IAnalyticsFacetMeta) {\n    this.usageAnalytics.logSearchEvent<IAnalyticsFacetMeta>(actionCause, facetMeta);\n  }\n\n  public putStateIntoQueryBuilder(queryBuilder: QueryBuilder) {\n    Assert.exists(queryBuilder);\n    this.dynamicFacetQueryController.putFacetIntoQueryBuilder(queryBuilder);\n  }\n\n  public putStateIntoAnalytics() {\n    const pendingEvent = this.usageAnalytics.getPendingSearchEvent();\n    pendingEvent && pendingEvent.addFacetState(this.analyticsFacetState);\n  }\n\n  public isCurrentlyDisplayed() {\n    return $$(this.element).isVisible();\n  }\n\n  public get hasActiveValues() {\n    return this.values.hasActiveValues;\n  }\n\n  private initQueryEvents() {\n    this.bind.onRootElement(QueryEvents.duringQuery, () => this.ensureDom());\n    this.bind.onRootElement(QueryEvents.doneBuildingQuery, (data: IDoneBuildingQueryEventArgs) => this.handleDoneBuildingQuery(data));\n    this.bind.onRootElement(QueryEvents.deferredQuerySuccess, (data: IQuerySuccessEventArgs) => this.handleQuerySuccess(data.results));\n    this.bind.onRootElement(QueryEvents.queryError, () => this.onNoValues());\n  }\n\n  private initQueryStateEvents() {\n    this.includedAttributeId = QueryStateModel.getFacetId(this.options.id);\n    this.queryStateModel.registerNewAttribute(this.includedAttributeId, []);\n    this.bind.onQueryState(MODEL_EVENTS.CHANGE, undefined, this.handleQueryStateChanged);\n  }\n\n  protected initBreadCrumbEvents() {\n    if (this.options.includeInBreadcrumb) {\n      this.bind.onRootElement(BreadcrumbEvents.populateBreadcrumb, (args: IPopulateBreadcrumbEventArgs) =>\n        this.handlePopulateBreadcrumb(args)\n      );\n      this.bind.onRootElement(BreadcrumbEvents.clearBreadcrumb, () => this.reset());\n    }\n  }\n\n  protected initValues() {\n    this.values = new DynamicFacetValues(this, DynamicFacetValueCreator);\n  }\n\n  private initComponentStateEvents() {\n    const componentStateId = QueryStateModel.getFacetId(this.options.id);\n    this.componentStateModel.registerComponent(componentStateId, this);\n  }\n\n  protected initDynamicFacetQueryController() {\n    this.dynamicFacetQueryController = new DynamicFacetQueryController(this);\n  }\n\n  private handleDoneBuildingQuery(data: IDoneBuildingQueryEventArgs) {\n    // If there is a DynamicFacetManager, it will take care of adding the facet's state\n    if (this.dynamicFacetManager) {\n      return;\n    }\n\n    Assert.exists(data);\n    Assert.exists(data.queryBuilder);\n    this.putStateIntoQueryBuilder(data.queryBuilder);\n    this.putStateIntoAnalytics();\n  }\n\n  private handleQuerySuccess(results: IQueryResults) {\n    // If there is a DynamicFacetManager, it will take care of handling the results\n    if (this.dynamicFacetManager) {\n      return;\n    }\n\n    if (Utils.isNullOrUndefined(results.facets)) {\n      return this.notImplementedError();\n    }\n\n    this.handleQueryResults(results);\n  }\n\n  public handleQueryResults(results: IQueryResults) {\n    const index = findIndex(results.facets, { facetId: this.options.id });\n    const facetResponse = index !== -1 ? results.facets[index] : null;\n\n    this.position = facetResponse ? index + 1 : undefined;\n    facetResponse ? this.onNewValues(facetResponse) : this.onNoValues();\n\n    this.header.hideLoading();\n    this.updateQueryStateModel();\n    this.values.render();\n    this.updateAppearance();\n    if (this.valueToFocusOnRender) {\n      const value = this.valueToFocusOnRender;\n      this.valueToFocusOnRender = null;\n      defer(() => this.values.focus(value));\n    }\n  }\n\n  private onNewValues(facetResponse: IFacetResponse) {\n    this.moreValuesAvailable = facetResponse.moreValuesAvailable;\n    this.values.createFromResponse(facetResponse);\n    if (this.options.customSort) {\n      this.values.reorderValues(this.options.customSort);\n    }\n  }\n\n  private onNoValues() {\n    this.moreValuesAvailable = false;\n    this.values.resetValues();\n  }\n\n  private handleQueryStateChanged(data: IAttributesChangedEventArg) {\n    if (!this.listenToQueryStateChange) {\n      return;\n    }\n\n    const querySelectedValues: string[] = data.attributes[this.includedAttributeId];\n    if (!querySelectedValues) {\n      return;\n    }\n\n    this.handleQueryStateChangedIncluded(querySelectedValues);\n  }\n\n  private handleQueryStateChangedIncluded = (querySelectedValues: string[]) => {\n    const currentSelectedValues = this.values.selectedValues;\n    const validQuerySelectedValues = querySelectedValues.filter(value => this.values.get(value));\n\n    const valuesToSelect = difference(validQuerySelectedValues, currentSelectedValues);\n    const valuesToDeselect = difference(currentSelectedValues, validQuerySelectedValues);\n\n    if (Utils.isNonEmptyArray(valuesToSelect)) {\n      this.selectMultipleValues(valuesToSelect);\n    }\n\n    if (Utils.isNonEmptyArray(valuesToDeselect)) {\n      this.deselectMultipleValues(valuesToDeselect);\n    }\n  };\n\n  private handlePopulateBreadcrumb(args: IPopulateBreadcrumbEventArgs) {\n    Assert.exists(args);\n\n    if (!this.values.hasActiveValues) {\n      return;\n    }\n\n    const breadcrumbs = new DynamicFacetBreadcrumbs(this, { headingLevel: args.headingLevel });\n    args.breadcrumbs.push({ element: breadcrumbs.element });\n  }\n\n  private initDependsOnManager() {\n    const facetInfo: IDependentFacet = {\n      reset: () => this.reset(),\n      ref: this\n    };\n\n    this.dependsOnManager = new DependsOnManager(facetInfo);\n  }\n\n  public createDom() {\n    this.createAndAppendContent();\n    this.updateAppearance();\n  }\n\n  private createAndAppendContent() {\n    this.createAndAppendHeader();\n    this.createAndAppendSearch();\n    this.createAndAppendValues();\n  }\n\n  private createAndAppendHeader() {\n    this.header = new DynamicFacetHeader({\n      id: this.options.id,\n      title: this.options.title,\n      enableCollapse: this.options.enableCollapse,\n      headingLevel: this.options.headingLevel,\n      clear: () => this.clear(),\n      toggleCollapse: () => this.toggleCollapse(),\n      collapse: () => this.collapse(),\n      expand: () => this.expand()\n    });\n    this.element.appendChild(this.header.element);\n  }\n\n  private createAndAppendSearch() {\n    if (this.options.enableFacetSearch === false) {\n      return;\n    }\n\n    this.search = new DynamicFacetSearch(this);\n    this.element.appendChild(this.search.element);\n  }\n\n  private createAndAppendValues() {\n    this.element.appendChild(this.values.render());\n  }\n\n  private updateQueryStateModel() {\n    this.listenToQueryStateChange = false;\n    this.queryStateModel.set(this.includedAttributeId, this.values.selectedValues);\n    this.listenToQueryStateChange = true;\n  }\n\n  private updateAppearance() {\n    this.header.toggleClear(this.values.hasSelectedValues);\n    this.header.toggleCollapse(this.isCollapsed);\n    this.toggleSearchDisplay();\n    $$(this.element).toggleClass('coveo-dynamic-facet-collapsed', this.isCollapsed);\n    $$(this.element).toggleClass('coveo-active', this.values.hasSelectedValues);\n    $$(this.element).toggleClass('coveo-hidden', !this.values.hasDisplayedValues);\n  }\n\n  private toggleSearchDisplay() {\n    if (this.options.enableFacetSearch === false) {\n      return;\n    }\n\n    if (this.isCollapsed) {\n      return $$(this.search.element).toggleClass('coveo-hidden', true);\n    }\n\n    $$(this.search.element).toggleClass('coveo-hidden', !this.options.enableFacetSearch && !this.moreValuesAvailable);\n  }\n\n  public triggerNewQuery(beforeExecuteQuery?: () => void) {\n    this.beforeSendingQuery();\n\n    const options: IQueryOptions = beforeExecuteQuery ? { beforeExecuteQuery } : { ignoreWarningSearchEvent: true };\n\n    this.queryController.executeQuery(options);\n  }\n\n  public async triggerNewIsolatedQuery(beforeExecuteQuery?: () => void) {\n    this.beforeSendingQuery();\n    beforeExecuteQuery && beforeExecuteQuery();\n\n    try {\n      const results = await this.dynamicFacetQueryController.getQueryResults();\n      this.handleQueryResults(results);\n    } catch (e) {\n      this.header.hideLoading();\n    }\n  }\n\n  private beforeSendingQuery() {\n    this.header.showLoading();\n  }\n\n  private notImplementedError() {\n    this.logger.error('DynamicFacets are not supported by your current search endpoint. Disabling this component.');\n    this.disable();\n    this.updateAppearance();\n  }\n\n  private verifyCollapsingConfiguration() {\n    if (this.options.collapsedByDefault && !this.options.enableCollapse) {\n      this.logger.warn('The \"collapsedByDefault\" option is \"true\" while the \"enableCollapse\" is \"false\"');\n    }\n  }\n\n  private logAnalyticsFacetShowMoreLess(cause: IAnalyticsActionCause) {\n    this.usageAnalytics.logCustomEvent<IAnalyticsFacetMeta>(cause, this.basicAnalyticsFacetMeta, this.element);\n  }\n\n  private clear() {\n    this.reset();\n    this.enableFreezeFacetOrderFlag();\n    this.scrollToTop();\n    this.triggerNewQuery(() => this.logClearAllToAnalytics());\n  }\n\n  private logClearAllToAnalytics() {\n    this.logAnalyticsEvent(analyticsActionCauseList.dynamicFacetClearAll, this.basicAnalyticsFacetMeta);\n  }\n}\n\nInitialization.registerAutoCreateComponent(DynamicFacet);\nDynamicFacet.doExport();\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/DynamicFacet/DynamicFacet.ts","export interface IGraphValueSelectedArgs {\n  start: any;\n  end: any;\n  value: any;\n}\n\nexport class SliderEvents {\n  public static startSlide = 'startSlide';\n  public static duringSlide = 'duringSlide';\n  public static endSlide = 'endSlide';\n  public static graphValueSelected = 'graphValueSelected';\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/events/SliderEvents.ts","export class ColorUtils {\n  static hsvToRgb(h, s, v) {\n    var r, g, b;\n\n    var i = Math.floor(h * 6);\n    var f = h * 6 - i;\n    var p = v * (1 - s);\n    var q = v * (1 - f * s);\n    var t = v * (1 - (1 - f) * s);\n\n    switch (i % 6) {\n      case 0:\n        (r = v), (g = t), (b = p);\n        break;\n      case 1:\n        (r = q), (g = v), (b = p);\n        break;\n      case 2:\n        (r = p), (g = v), (b = t);\n        break;\n      case 3:\n        (r = p), (g = q), (b = v);\n        break;\n      case 4:\n        (r = t), (g = p), (b = v);\n        break;\n      case 5:\n        (r = v), (g = p), (b = q);\n        break;\n    }\n\n    return [Math.round(r * 255), Math.round(g * 255), Math.round(b * 255)];\n  }\n\n  static rgbToHsv(r, g, b) {\n    (r = r / 255), (g = g / 255), (b = b / 255);\n    var max = Math.max(r, g, b),\n      min = Math.min(r, g, b);\n    var h,\n      s,\n      v = max;\n\n    var d = max - min;\n    s = max == 0 ? 0 : d / max;\n\n    if (max == min) {\n      h = 0; // achromatic\n    } else {\n      switch (max) {\n        case r:\n          h = (g - b) / d + (g < b ? 6 : 0);\n          break;\n        case g:\n          h = (b - r) / d + 2;\n          break;\n        case b:\n          h = (r - g) / d + 4;\n          break;\n      }\n      h /= 6;\n    }\n\n    return [h, s, v];\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/ColorUtils.ts","import { IEndpointError } from './EndpointError';\nimport { IErrorResponse } from './EndpointCaller';\nimport { Assert } from '../misc/Assert';\n\nexport class QueryError implements IEndpointError {\n  public status: number;\n  public message: string;\n  public type: string;\n  public queryExecutionReport: any;\n  public name: string;\n\n  constructor(errorResponse: IErrorResponse) {\n    this.status = errorResponse.statusCode;\n    this.message = errorResponse.data.message;\n    this.name = this.type = errorResponse.data.type;\n    this.queryExecutionReport = errorResponse.data.executionReport;\n\n    Assert.isNumber(this.status);\n    Assert.isNonEmptyString(this.message);\n    Assert.isNonEmptyString(this.type);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/rest/QueryError.ts","\"use strict\";\nvar history_1 = require('./history');\nrequire('whatwg-fetch');\nexports.Version = 'v15';\nexports.Endpoints = {\n    default: 'https://usageanalytics.coveo.com',\n    production: 'https://usageanalytics.coveo.com',\n    dev: 'https://usageanalyticsdev.coveo.com',\n    staging: 'https://usageanalyticsstaging.coveo.com'\n};\n;\nfunction defaultResponseTransformer(response) {\n    return response.json().then(function (data) {\n        data.raw = response;\n        return data;\n    });\n}\nvar Client = (function () {\n    function Client(opts) {\n        if (typeof opts === 'undefined') {\n            throw new Error('You have to pass options to this constructor');\n        }\n        this.endpoint = opts.endpoint || exports.Endpoints.default;\n        this.token = opts.token;\n        this.version = opts.version || exports.Version;\n    }\n    Client.prototype.sendEvent = function (eventType, request) {\n        return fetch(this.getRestEndpoint() + \"/analytics/\" + eventType, {\n            method: 'POST',\n            headers: this.getHeaders(),\n            mode: 'cors',\n            body: JSON.stringify(request),\n            credentials: 'include'\n        });\n    };\n    Client.prototype.sendSearchEvent = function (request) {\n        return this.sendEvent('search', request).then(defaultResponseTransformer);\n    };\n    Client.prototype.sendClickEvent = function (request) {\n        return this.sendEvent('click', request).then(defaultResponseTransformer);\n    };\n    Client.prototype.sendCustomEvent = function (request) {\n        return this.sendEvent('custom', request).then(defaultResponseTransformer);\n    };\n    Client.prototype.sendViewEvent = function (request) {\n        if (request.referrer === '') {\n            delete request.referrer;\n        }\n        var store = new history_1.HistoryStore();\n        var historyElement = {\n            name: 'PageView',\n            value: request.contentIdValue,\n            time: JSON.stringify(new Date()),\n        };\n        store.addElement(historyElement);\n        return this.sendEvent('view', request).then(defaultResponseTransformer);\n    };\n    Client.prototype.getVisit = function () {\n        return fetch(this.getRestEndpoint() + \"/analytics/visit\")\n            .then(defaultResponseTransformer);\n    };\n    Client.prototype.getHealth = function () {\n        return fetch(this.getRestEndpoint() + \"/analytics/monitoring/health\")\n            .then(defaultResponseTransformer);\n    };\n    Client.prototype.getRestEndpoint = function () {\n        return this.endpoint + \"/rest/\" + this.version;\n    };\n    Client.prototype.getHeaders = function () {\n        var headers = {\n            'Content-Type': \"application/json\"\n        };\n        if (this.token) {\n            headers['Authorization'] = \"Bearer \" + this.token;\n        }\n        return headers;\n    };\n    return Client;\n}());\nexports.Client = Client;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = Client;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/coveo.analytics/dist/analytics.js\n// module id = 144\n// module chunks = 88 89","\"use strict\";\nvar storage_1 = require('./storage');\nvar detector = require('./detector');\nexports.STORE_KEY = '__coveo.analytics.history';\nexports.MAX_NUMBER_OF_HISTORY_ELEMENTS = 20;\nexports.MIN_THRESHOLD_FOR_DUPLICATE_VALUE = 1000 * 60;\nexports.MAX_VALUE_SIZE = 75;\nvar HistoryStore = (function () {\n    function HistoryStore(store) {\n        this.store = store || storage_1.getAvailableStorage();\n        if (!(this.store instanceof storage_1.CookieStorage) && detector.hasCookieStorage()) {\n            new storage_1.CookieStorage().removeItem(exports.STORE_KEY);\n        }\n    }\n    ;\n    HistoryStore.prototype.addElement = function (elem) {\n        elem.internalTime = new Date().getTime();\n        this.cropQueryElement(elem);\n        var currentHistory = this.getHistoryWithInternalTime();\n        if (currentHistory != null) {\n            if (this.isValidEntry(elem)) {\n                this.setHistory([elem].concat(currentHistory));\n            }\n        }\n        else {\n            this.setHistory([elem]);\n        }\n    };\n    HistoryStore.prototype.getHistory = function () {\n        var history = this.getHistoryWithInternalTime();\n        return this.stripInternalTime(history);\n    };\n    HistoryStore.prototype.getHistoryWithInternalTime = function () {\n        try {\n            return JSON.parse(this.store.getItem(exports.STORE_KEY));\n        }\n        catch (e) {\n            return [];\n        }\n    };\n    HistoryStore.prototype.setHistory = function (history) {\n        try {\n            this.store.setItem(exports.STORE_KEY, JSON.stringify(history.slice(0, exports.MAX_NUMBER_OF_HISTORY_ELEMENTS)));\n        }\n        catch (e) { }\n    };\n    HistoryStore.prototype.clear = function () {\n        try {\n            this.store.removeItem(exports.STORE_KEY);\n        }\n        catch (e) { }\n    };\n    HistoryStore.prototype.getMostRecentElement = function () {\n        var currentHistory = this.getHistoryWithInternalTime();\n        if (currentHistory != null) {\n            var sorted = currentHistory.sort(function (first, second) {\n                if (first.internalTime == null && second.internalTime == null) {\n                    return 0;\n                }\n                if (first.internalTime == null && second.internalTime != null) {\n                    return 1;\n                }\n                if (first.internalTime != null && second.internalTime == null) {\n                    return -1;\n                }\n                return second.internalTime - first.internalTime;\n            });\n            return sorted[0];\n        }\n        return null;\n    };\n    HistoryStore.prototype.cropQueryElement = function (elem) {\n        if (elem.name && elem.name.toLowerCase() == 'query' && elem.value != null) {\n            elem.value = elem.value.slice(0, exports.MAX_VALUE_SIZE);\n        }\n    };\n    HistoryStore.prototype.isValidEntry = function (elem) {\n        var lastEntry = this.getMostRecentElement();\n        if (lastEntry && lastEntry.value == elem.value) {\n            return elem.internalTime - lastEntry.internalTime > exports.MIN_THRESHOLD_FOR_DUPLICATE_VALUE;\n        }\n        return true;\n    };\n    HistoryStore.prototype.stripInternalTime = function (history) {\n        if (history) {\n            history.forEach(function (part, index, array) {\n                delete part.internalTime;\n            });\n        }\n        return history;\n    };\n    return HistoryStore;\n}());\nexports.HistoryStore = HistoryStore;\n;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = HistoryStore;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/coveo.analytics/dist/history.js\n// module id = 145\n// module chunks = 88 89","\"use strict\";\nfunction hasLocalStorage() {\n    try {\n        return 'localStorage' in window && window['localStorage'] !== null;\n    }\n    catch (e) {\n        return false;\n    }\n}\nexports.hasLocalStorage = hasLocalStorage;\n;\nfunction hasSessionStorage() {\n    try {\n        return 'sessionStorage' in window && window['sessionStorage'] !== null;\n    }\n    catch (e) {\n        return false;\n    }\n}\nexports.hasSessionStorage = hasSessionStorage;\n;\nfunction hasCookieStorage() {\n    return navigator.cookieEnabled;\n}\nexports.hasCookieStorage = hasCookieStorage;\n;\nfunction hasDocument() {\n    return document !== null;\n}\nexports.hasDocument = hasDocument;\n;\nfunction hasDocumentLocation() {\n    return hasDocument() && document.location !== null;\n}\nexports.hasDocumentLocation = hasDocumentLocation;\n;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/coveo.analytics/dist/detector.js\n// module id = 146\n// module chunks = 88 89","import { Logger } from '../misc/Logger';\nimport { debounce } from 'underscore';\n\nexport type onTokenRefreshed = (newToken: string) => void;\n\nexport enum ACCESS_TOKEN_ERRORS {\n  NO_RENEW_FUNCTION = 'NO_RENEW_FUNCTION',\n  REPEATED_FAILURES = 'REPEATED_FAILURES'\n}\n\nexport class AccessToken {\n  private subscribers: onTokenRefreshed[] = [];\n  private logger: Logger = new Logger(this);\n  private triedRenewals: number = 0;\n  private resetRenewalTriesAfterDelay;\n\n  constructor(public token: string, public renew?: () => Promise<string>) {\n    this.resetRenewalTriesAfterDelay = debounce(\n      () => {\n        this.triedRenewals = 0;\n      },\n      500,\n      false\n    );\n  }\n\n  public updateToken(token: string) {\n    this.token = token;\n    this.notifySubscribers();\n  }\n\n  public async doRenew(onError?: (error: Error) => void): Promise<Boolean> {\n    this.triedRenewals++;\n    this.resetRenewalTriesAfterDelay();\n\n    try {\n      this.verifyRenewSetup();\n      this.logger.info('Renewing expired access token');\n      this.token = await this.renew();\n      this.logger.info('Access token renewed', this.token);\n      this.notifySubscribers();\n      return true;\n    } catch (err) {\n      switch (err.message) {\n        case ACCESS_TOKEN_ERRORS.REPEATED_FAILURES:\n          this.logger.error('AccessToken tried to renew itself extremely fast in a short period of time');\n          this.logger.error('There is most probably an authentication error, or a bad implementation of the custom renew function');\n          this.logger.error('Inspect the developer console of your browser to find out the root cause');\n          break;\n        case ACCESS_TOKEN_ERRORS.NO_RENEW_FUNCTION:\n          this.logger.error(`AccessToken tried to renew, but no function is configured on initialization to provide acess token renewal`);\n          this.logger.error('The option name is renewAccessToken on the SearchEndpoint class');\n          break;\n      }\n      this.logger.error('Failed to renew access token', err);\n\n      if (onError) {\n        onError(err);\n      }\n      return false;\n    }\n  }\n\n  public subscribeToRenewal(onTokenRefreshed: onTokenRefreshed) {\n    this.subscribers.push(onTokenRefreshed);\n  }\n\n  private verifyRenewSetup() {\n    if (this.renew == null) {\n      throw new Error(ACCESS_TOKEN_ERRORS.NO_RENEW_FUNCTION);\n    }\n    if (this.triedRenewals >= 5) {\n      throw new Error(ACCESS_TOKEN_ERRORS.REPEATED_FAILURES);\n    }\n  }\n\n  private notifySubscribers() {\n    this.subscribers.forEach(subscriber => subscriber(this.token));\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/rest/AccessToken.ts","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n    __assign = Object.assign || function(t) {\n        for (var s, i = 1, n = arguments.length; i < n; i++) {\n            s = arguments[i];\n            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n                t[p] = s[p];\n        }\n        return t;\n    };\n    return __assign.apply(this, arguments);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar JitterTypes;\n(function (JitterTypes) {\n    JitterTypes[\"None\"] = \"none\";\n    JitterTypes[\"Full\"] = \"full\";\n})(JitterTypes = exports.JitterTypes || (exports.JitterTypes = {}));\nvar defaultOptions = {\n    delayFirstAttempt: false,\n    jitter: JitterTypes.None,\n    maxDelay: Infinity,\n    numOfAttempts: 10,\n    retry: function () { return true; },\n    startingDelay: 100,\n    timeMultiple: 2\n};\nfunction getSanitizedOptions(options) {\n    var sanitized = __assign(__assign({}, defaultOptions), options);\n    if (sanitized.numOfAttempts < 1) {\n        sanitized.numOfAttempts = 1;\n    }\n    return sanitized;\n}\nexports.getSanitizedOptions = getSanitizedOptions;\n//# sourceMappingURL=options.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/exponential-backoff/dist/options.js\n// module id = 148\n// module chunks = 88 89","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar jitter_factory_1 = require(\"../jitter/jitter.factory\");\nvar Delay = /** @class */ (function () {\n    function Delay(options) {\n        this.options = options;\n        this.attempt = 0;\n    }\n    Delay.prototype.apply = function () {\n        var _this = this;\n        return new Promise(function (resolve) { return setTimeout(resolve, _this.jitteredDelay); });\n    };\n    Delay.prototype.setAttemptNumber = function (attempt) {\n        this.attempt = attempt;\n    };\n    Object.defineProperty(Delay.prototype, \"jitteredDelay\", {\n        get: function () {\n            var jitter = jitter_factory_1.JitterFactory(this.options);\n            return jitter(this.delay);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Delay.prototype, \"delay\", {\n        get: function () {\n            var constant = this.options.startingDelay;\n            var base = this.options.timeMultiple;\n            var power = this.numOfDelayedAttempts;\n            var delay = constant * Math.pow(base, power);\n            return Math.min(delay, this.options.maxDelay);\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(Delay.prototype, \"numOfDelayedAttempts\", {\n        get: function () {\n            return this.attempt;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    return Delay;\n}());\nexports.Delay = Delay;\n//# sourceMappingURL=delay.base.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/exponential-backoff/dist/delay/delay.base.js\n// module id = 149\n// module chunks = 88 89","import * as Globalize from 'globalize';\nvar merge = function(obj1, obj2) {\n  var obj3 = {};\n  for(var attrname in obj1){obj3[attrname] = obj1[attrname]; }\n  for(var attrname in obj2){obj3[attrname] = obj2[attrname]; }\n  return obj3;\n}\nvar dict = {\n  \"html\": \"HTML File\",\n  \"filetype_html\": \"HTML File\",\n  \"wiki\": \"Wiki\",\n  \"filetype_wiki\": \"Wiki\",\n  \"webscraperwebpage\": \"Web Page\",\n  \"filetype_webscraperwebpage\": \"Web Page\",\n  \"image\": \"Image\",\n  \"filetype_image\": \"Image\",\n  \"folder\": \"Folder\",\n  \"filetype_folder\": \"Folder\",\n  \"txt\": \"Text\",\n  \"filetype_txt\": \"Text\",\n  \"zip\": \"Zip File\",\n  \"filetype_zip\": \"Zip File\",\n  \"olefile\": \"OLE file\",\n  \"filetype_olefile\": \"OLE file\",\n  \"gmailmessage\": \"Gmail Message\",\n  \"filetype_gmailmessage\": \"Gmail Message\",\n  \"pdf\": \"PDF File\",\n  \"filetype_pdf\": \"PDF File\",\n  \"swf\": \"Flash File\",\n  \"filetype_swf\": \"Flash File\",\n  \"xml\": \"XML File\",\n  \"filetype_xml\": \"XML File\",\n  \"vsd\": \"Visio\",\n  \"filetype_vsd\": \"Visio\",\n  \"svg\": \"SVG\",\n  \"filetype_svg\": \"SVG\",\n  \"svm\": \"Open Office\",\n  \"filetype_svm\": \"Open Office\",\n  \"rssitem\": \"RSS feed\",\n  \"filetype_rssitem\": \"RSS feed\",\n  \"doc\": \"Document\",\n  \"filetype_doc\": \"Document\",\n  \"docx\": \"Microsoft Word Document\",\n  \"filetype_docx\": \"Microsoft Word Document\",\n  \"xls\": \"Spreadsheet Document\",\n  \"filetype_xls\": \"Spreadsheet Document\",\n  \"ppt\": \"Presentation Document\",\n  \"filetype_ppt\": \"Presentation Document\",\n  \"video\": \"Video\",\n  \"filetype_video\": \"Video\",\n  \"youtube\": \"YouTube video\",\n  \"filetype_youtube\": \"YouTube video\",\n  \"saleforceitem\": \"Salesforce\",\n  \"filetype_saleforceitem\": \"Salesforce\",\n  \"dynamicscrmitem\": \"Dynamics CRM\",\n  \"filetype_dynamicscrmitem\": \"Dynamics CRM\",\n  \"salesforceitem\": \"Salesforce\",\n  \"filetype_salesforceitem\": \"Salesforce\",\n  \"odt\": \"Open Text Document\",\n  \"filetype_odt\": \"Open Text Document\",\n  \"box\": \"User\",\n  \"filetype_box\": \"User\",\n  \"jiraissue\": \"Jira Issue\",\n  \"filetype_jiraissue\": \"Jira Issue\",\n  \"box user\": \"User\",\n  \"filetype_box user\": \"User\",\n  \"cfpage\": \"Confluence Page\",\n  \"filetype_cfpage\": \"Confluence Page\",\n  \"cfcomment\": \"Confluence Comment\",\n  \"filetype_cfcomment\": \"Confluence Comment\",\n  \"cfspace\": \"Confluence Space\",\n  \"filetype_cfspace\": \"Confluence Space\",\n  \"cfblogentry\": \"Confluence Blog Entry\",\n  \"filetype_cfblogentry\": \"Confluence Blog Entry\",\n  \"confluencespace\": \"Confluence Space\",\n  \"filetype_confluencespace\": \"Confluence Space\",\n  \"exchangemessage\": \"Message\",\n  \"filetype_exchangemessage\": \"Message\",\n  \"exchangeappointment\": \"Appointment\",\n  \"filetype_exchangeappointment\": \"Appointment\",\n  \"exchangenote\": \"Note\",\n  \"filetype_exchangenote\": \"Note\",\n  \"exchangetask\": \"Task\",\n  \"filetype_exchangetask\": \"Task\",\n  \"exchangeperson\": \"Exchange User\",\n  \"filetype_exchangeperson\": \"Exchange User\",\n  \"activedirperson\": \"Active Directory User\",\n  \"filetype_activedirperson\": \"Active Directory User\",\n  \"exchangeactivity\": \"Activity\",\n  \"filetype_exchangeactivity\": \"Activity\",\n  \"exchangecalendarmessage\": \"Calendar Message\",\n  \"filetype_exchangecalendarmessage\": \"Calendar Message\",\n  \"exchangedocument\": \"Exchange Document\",\n  \"filetype_exchangedocument\": \"Exchange Document\",\n  \"exchangedsn\": \"DSN\",\n  \"filetype_exchangedsn\": \"DSN\",\n  \"exchangefreebusy\": \"Free/Busy\",\n  \"filetype_exchangefreebusy\": \"Free/Busy\",\n  \"exchangegroup\": \"Group\",\n  \"filetype_exchangegroup\": \"Group\",\n  \"exchangerssfeed\": \"RSS Feed\",\n  \"filetype_exchangerssfeed\": \"RSS Feed\",\n  \"exchangejunkmessage\": \"Junk Email\",\n  \"filetype_exchangejunkmessage\": \"Junk Email\",\n  \"exchangeofficecom\": \"Communications\",\n  \"filetype_exchangeofficecom\": \"Communications\",\n  \"lithiummessage\": \"Lithium Message\",\n  \"filetype_lithiummessage\": \"Lithium Message\",\n  \"lithiumthread\": \"Lithium Thread\",\n  \"filetype_lithiumthread\": \"Lithium Thread\",\n  \"lithiumboard\": \"Lithium Board\",\n  \"filetype_lithiumboard\": \"Lithium Board\",\n  \"lithiumcategory\": \"Lithium Category\",\n  \"filetype_lithiumcategory\": \"Lithium Category\",\n  \"lithiumcommunity\": \"Lithium Community\",\n  \"filetype_lithiumcommunity\": \"Lithium Community\",\n  \"people\": \"User\",\n  \"objecttype_people\": \"User\",\n  \"message\": \"Message\",\n  \"objecttype_message\": \"Message\",\n  \"feed\": \"RSS Feed\",\n  \"objecttype_feed\": \"RSS Feed\",\n  \"thread\": \"Thread\",\n  \"objecttype_thread\": \"Thread\",\n  \"file\": \"File\",\n  \"objecttype_file\": \"File\",\n  \"board\": \"Board\",\n  \"objecttype_board\": \"Board\",\n  \"category\": \"Category\",\n  \"objecttype_category\": \"Category\",\n  \"account\": \"Account\",\n  \"objecttype_account\": \"Account\",\n  \"annotation\": \"Note\",\n  \"objecttype_annotation\": \"Note\",\n  \"campaign\": \"Campaign\",\n  \"objecttype_campaign\": \"Campaign\",\n  \"case\": \"Case\",\n  \"objecttype_case\": \"Case\",\n  \"contact\": \"Contact\",\n  \"objecttype_contact\": \"Contact\",\n  \"contract\": \"Contract\",\n  \"objecttype_contract\": \"Contract\",\n  \"event\": \"Event\",\n  \"objecttype_event\": \"Event\",\n  \"email\": \"Email\",\n  \"objecttype_email\": \"Email\",\n  \"goal\": \"Goal\",\n  \"objecttype_goal\": \"Goal\",\n  \"incident\": \"Incident\",\n  \"objecttype_incident\": \"Incident\",\n  \"invoice\": \"Invoice\",\n  \"objecttype_invoice\": \"Invoice\",\n  \"lead\": \"Lead\",\n  \"objecttype_lead\": \"Lead\",\n  \"list\": \"List\",\n  \"objecttype_list\": \"Marketing List\",\n  \"solution\": \"Solution\",\n  \"objecttype_solution\": \"Solution\",\n  \"report\": \"Report\",\n  \"objecttype_report\": \"Report\",\n  \"task\": \"Task\",\n  \"objecttype_task\": \"Task\",\n  \"user\": \"User\",\n  \"objecttype_user\": \"User\",\n  \"attachment\": \"Attachment\",\n  \"objecttype_attachment\": \"Attachment\",\n  \"casecomment\": \"Case Comment\",\n  \"objecttype_casecomment\": \"Case Comment\",\n  \"opportunity\": \"Opportunity\",\n  \"objecttype_opportunity\": \"Opportunity\",\n  \"opportunityproduct\": \"Opportunity Product\",\n  \"objecttype_opportunityproduct\": \"Opportunity Product\",\n  \"feeditem\": \"Chatter\",\n  \"objecttype_feeditem\": \"Chatter\",\n  \"feedcomment\": \"Comment\",\n  \"objecttype_feedcomment\": \"Comment\",\n  \"note\": \"Note\",\n  \"objecttype_note\": \"Note\",\n  \"product\": \"Product\",\n  \"objecttype_product\": \"Product\",\n  \"partner\": \"Partner\",\n  \"objecttype_partner\": \"Partner\",\n  \"queueitem\": \"Queue Item\",\n  \"objecttype_queueitem\": \"Queue Item\",\n  \"quote\": \"Quote\",\n  \"objecttype_quote\": \"Quote\",\n  \"salesliterature\": \"Sales Literature\",\n  \"objecttype_salesliterature\": \"Sales Literature\",\n  \"salesorder\": \"Sales Order\",\n  \"objecttype_salesorder\": \"Sales Order\",\n  \"service\": \"Service\",\n  \"objecttype_service\": \"Service\",\n  \"socialprofile\": \"Social Profile\",\n  \"objecttype_socialprofile\": \"Social Profile\",\n  \"kbdocumentation\": \"Knowledge Document\",\n  \"objecttype_kbdocumentation\": \"Knowledge Document\",\n  \"kbtechnicalarticle\": \"Technical Documentation\",\n  \"objecttype_kbtechnicalarticle\": \"Technical Documentation\",\n  \"kbsolution\": \"Solution\",\n  \"objecttype_kbsolution\": \"Solution\",\n  \"kbknowledgearticle\": \"Knowledge Article\",\n  \"objecttype_kbknowledgearticle\": \"Knowledge Article\",\n  \"kbattachment\": \"Attachment\",\n  \"objecttype_kbattachment\": \"Attachment\",\n  \"kbarticle\": \"Article\",\n  \"objecttype_kbarticle\": \"Article\",\n  \"kbarticlecomment\": \"Article Comment\",\n  \"objecttype_kbarticlecomment\": \"Article Comment\",\n  \"knowledgearticle\": \"Knowledge Article\",\n  \"objecttype_knowledgearticle\": \"Knowledge Article\",\n  \"topic\": \"Topic\",\n  \"objecttype_topic\": \"Topic\",\n  \"dashboard\": \"Dashboard\",\n  \"objecttype_dashboard\": \"Dashboard\",\n  \"contentversion\": \"Document\",\n  \"objecttype_contentversion\": \"Document\",\n  \"collaborationgroup\": \"Collaboration group\",\n  \"objecttype_collaborationgroup\": \"Collaboration group\",\n  \"phonecall\": \"Phone call\",\n  \"objecttype_phonecall\": \"Phone call\",\n  \"appointment\": \"Appointment\",\n  \"objecttype_appointment\": \"Appointment\",\n  \"sn_hr_core_case\": \"HR Case\",\n  \"filetype_sn_hr_core_case\": \"HR Case\",\n  \"sc_cat_item\": \"Catalog Item\",\n  \"filetype_sc_cat_item\": \"Catalog Item\",\n  \"sn_customerservice_case\": \"Case\",\n  \"filetype_sn_customerservice_case\": \"Case\",\n  \"kb_social_qa_answer\": \"Answer\",\n  \"filetype_kb_social_qa_answer\": \"Answer\",\n  \"kb_social_qa_question\": \"Question\",\n  \"filetype_kb_social_qa_question\": \"Question\",\n  \"kb_social_qa_comment\": \"Comment\",\n  \"filetype_kb_social_qa_comment\": \"Comment\",\n  \"filetype_incident\": \"Incident\",\n  \"kb_knowledge\": \"Knowledge Article\",\n  \"filetype_kb_knowledge\": \"Knowledge Article\",\n  \"spportal\": \"Portal\",\n  \"filetype_spportal\": \"Portal\",\n  \"spsite\": \"SharePoint Site\",\n  \"filetype_spsite\": \"SharePoint Site\",\n  \"spuserprofile\": \"SharePoint User\",\n  \"filetype_spuserprofile\": \"SharePoint User\",\n  \"sparea\": \"Area\",\n  \"filetype_sparea\": \"Area\",\n  \"spannouncement\": \"Announcement\",\n  \"filetype_spannouncement\": \"Announcement\",\n  \"spannouncementlist\": \"Announcements\",\n  \"filetype_spannouncementlist\": \"Announcements\",\n  \"spcontact\": \"Contact\",\n  \"filetype_spcontact\": \"Contact\",\n  \"spcontactlist\": \"Contacts\",\n  \"filetype_spcontactlist\": \"Contacts\",\n  \"spcustomlist\": \"Custom Lists\",\n  \"filetype_spcustomlist\": \"Custom Lists\",\n  \"spdiscussionboard\": \"Discussion Board\",\n  \"filetype_spdiscussionboard\": \"Discussion Board\",\n  \"spdiscussionboardlist\": \"Discussion Boards\",\n  \"filetype_spdiscussionboardlist\": \"Discussion Boards\",\n  \"spdocumentlibrarylist\": \"Document Library\",\n  \"filetype_spdocumentlibrarylist\": \"Document Library\",\n  \"spevent\": \"Event\",\n  \"filetype_spevent\": \"Event\",\n  \"speventlist\": \"Events\",\n  \"filetype_speventlist\": \"Events\",\n  \"spformlibrarylist\": \"Form Library\",\n  \"filetype_spformlibrarylist\": \"Form Library\",\n  \"spissue\": \"Issue\",\n  \"filetype_spissue\": \"Issue\",\n  \"spissuelist\": \"Issues\",\n  \"filetype_spissuelist\": \"Issues\",\n  \"splink\": \"Link\",\n  \"filetype_splink\": \"Link\",\n  \"splinklist\": \"Links\",\n  \"filetype_splinklist\": \"Links\",\n  \"sppicturelibrarylist\": \"Picture Library\",\n  \"filetype_sppicturelibrarylist\": \"Picture Library\",\n  \"spsurvey\": \"Survey\",\n  \"filetype_spsurvey\": \"Survey\",\n  \"spsurveylist\": \"Surveys\",\n  \"filetype_spsurveylist\": \"Surveys\",\n  \"sptask\": \"Task\",\n  \"filetype_sptask\": \"Task\",\n  \"sptasklist\": \"Tasks\",\n  \"filetype_sptasklist\": \"Tasks\",\n  \"spagenda\": \"Agenda\",\n  \"filetype_spagenda\": \"Agenda\",\n  \"spagendalist\": \"Agendas\",\n  \"filetype_spagendalist\": \"Agendas\",\n  \"spattendee\": \"Attendee\",\n  \"filetype_spattendee\": \"Attendee\",\n  \"spattendeelist\": \"Attendees\",\n  \"filetype_spattendeelist\": \"Attendees\",\n  \"spcustomgridlist\": \"Custom Grids\",\n  \"filetype_spcustomgridlist\": \"Custom Grids\",\n  \"spdecision\": \"Decision\",\n  \"filetype_spdecision\": \"Decision\",\n  \"spdecisionlist\": \"Decisions\",\n  \"filetype_spdecisionlist\": \"Decisions\",\n  \"spobjective\": \"Objective\",\n  \"filetype_spobjective\": \"Objective\",\n  \"spobjectivelist\": \"Objectives\",\n  \"filetype_spobjectivelist\": \"Objectives\",\n  \"sptextbox\": \"Textbox\",\n  \"filetype_sptextbox\": \"Textbox\",\n  \"sptextboxlist\": \"Textbox list\",\n  \"filetype_sptextboxlist\": \"Textbox list\",\n  \"spthingstobring\": \"Thing To Bring\",\n  \"filetype_spthingstobring\": \"Thing To Bring\",\n  \"spthingstobringlist\": \"Things To Bring\",\n  \"filetype_spthingstobringlist\": \"Things To Bring\",\n  \"sparealisting\": \"Area Listing\",\n  \"filetype_sparealisting\": \"Area Listing\",\n  \"spmeetingserie\": \"Meeting series\",\n  \"filetype_spmeetingserie\": \"Meeting series\",\n  \"spmeetingserielist\": \"Meeting Series List\",\n  \"filetype_spmeetingserielist\": \"Meeting Series List\",\n  \"spsitedirectory\": \"Site Directory Item\",\n  \"filetype_spsitedirectory\": \"Site Directory Item\",\n  \"spsitedirectorylist\": \"Site Directory\",\n  \"filetype_spsitedirectorylist\": \"Site Directory\",\n  \"spdatasource\": \"Data Source\",\n  \"filetype_spdatasource\": \"Data Source\",\n  \"spdatasourcelist\": \"Data Source List\",\n  \"filetype_spdatasourcelist\": \"Data Source List\",\n  \"splisttemplatecataloglist\": \"List Template Gallery\",\n  \"filetype_splisttemplatecataloglist\": \"List Template Gallery\",\n  \"spwebpartcataloglist\": \"WebPart Gallery\",\n  \"filetype_spwebpartcataloglist\": \"WebPart Gallery\",\n  \"spwebtemplatecataloglist\": \"Site Template Gallery\",\n  \"filetype_spwebtemplatecataloglist\": \"Site Template Gallery\",\n  \"spworkspacepagelist\": \"Workspace Pages\",\n  \"filetype_spworkspacepagelist\": \"Workspace Pages\",\n  \"spunknownlist\": \"Custom List\",\n  \"filetype_spunknownlist\": \"Custom List\",\n  \"spadministratortask\": \"Administrator Task\",\n  \"filetype_spadministratortask\": \"Administrator Task\",\n  \"spadministratortasklist\": \"Administrator Tasks\",\n  \"filetype_spadministratortasklist\": \"Administrator Tasks\",\n  \"spareadocumentlibrarylist\": \"Area Document Library\",\n  \"filetype_spareadocumentlibrarylist\": \"Area Document Library\",\n  \"spblogcategory\": \"Blog Category\",\n  \"filetype_spblogcategory\": \"Blog Category\",\n  \"spblogcategorylist\": \"Blog Categories\",\n  \"filetype_spblogcategorylist\": \"Blog Categories\",\n  \"spblogcomment\": \"Blog Comment\",\n  \"filetype_spblogcomment\": \"Blog Comment\",\n  \"spblogcommentlist\": \"Blog Comments\",\n  \"filetype_spblogcommentlist\": \"Blog Comments\",\n  \"spblogpost\": \"Blog Post\",\n  \"filetype_spblogpost\": \"Blog Post\",\n  \"spblogpostlist\": \"Blog Posts\",\n  \"filetype_spblogpostlist\": \"Blog Posts\",\n  \"spdataconnectionlibrarylist\": \"Data Connection Library\",\n  \"filetype_spdataconnectionlibrarylist\": \"Data Connection Library\",\n  \"spdistributiongroup\": \"Distribution Group\",\n  \"filetype_spdistributiongroup\": \"Distribution Group\",\n  \"spdistributiongrouplist\": \"Distribution Groups\",\n  \"filetype_spdistributiongrouplist\": \"Distribution Groups\",\n  \"spipfslist\": \"InfoPath Forms Servers\",\n  \"filetype_spipfslist\": \"InfoPath Forms Servers\",\n  \"spkeyperformanceindicator\": \"Key Performance Indicator\",\n  \"filetype_spkeyperformanceindicator\": \"Key Performance Indicator\",\n  \"spkeyperformanceindicatorlist\": \"Key Performance Indicators\",\n  \"filetype_spkeyperformanceindicatorlist\": \"Key Performance Indicators\",\n  \"splanguagesandtranslator\": \"Languages and Translator\",\n  \"filetype_splanguagesandtranslator\": \"Languages and Translator\",\n  \"splanguagesandtranslatorlist\": \"Languages and Translators\",\n  \"filetype_splanguagesandtranslatorlist\": \"Languages and Translators\",\n  \"spmasterpagescataloglist\": \"Master Page Gallery\",\n  \"filetype_spmasterpagescataloglist\": \"Master Page Gallery\",\n  \"spnocodeworkflowlibrarylist\": \"No-code Workflow Libraries\",\n  \"filetype_spnocodeworkflowlibrarylist\": \"No-code Workflow Libraries\",\n  \"spprojecttask\": \"Project Task\",\n  \"filetype_spprojecttask\": \"Project Task\",\n  \"spprojecttasklist\": \"Project Tasks\",\n  \"filetype_spprojecttasklist\": \"Project Tasks\",\n  \"sppublishingpageslibrarylist\": \"Page Library\",\n  \"filetype_sppublishingpageslibrarylist\": \"Page Library\",\n  \"spreportdocumentlibrarylist\": \"Report Document Library\",\n  \"filetype_spreportdocumentlibrarylist\": \"Report Document Library\",\n  \"spreportlibrarylist\": \"Report Library\",\n  \"filetype_spreportlibrarylist\": \"Report Library\",\n  \"spslidelibrarylist\": \"Slide Library\",\n  \"filetype_spslidelibrarylist\": \"Slide Library\",\n  \"sptab\": \"Tabs\",\n  \"filetype_sptab\": \"Tabs\",\n  \"sptablist\": \"Tabs List\",\n  \"filetype_sptablist\": \"Tabs List\",\n  \"sptranslationmanagementlibrarylist\": \"Translation Management Library\",\n  \"filetype_sptranslationmanagementlibrarylist\": \"Translation Management Library\",\n  \"spuserinformation\": \"User Information\",\n  \"filetype_spuserinformation\": \"User Information\",\n  \"spuserinformationlist\": \"User Information List\",\n  \"filetype_spuserinformationlist\": \"User Information List\",\n  \"spwikipagelibrarylist\": \"Wiki Page Library\",\n  \"filetype_spwikipagelibrarylist\": \"Wiki Page Library\",\n  \"spworkflowhistory\": \"Workflow History\",\n  \"filetype_spworkflowhistory\": \"Workflow History\",\n  \"spworkflowhistorylist\": \"Workflow History List\",\n  \"filetype_spworkflowhistorylist\": \"Workflow History List\",\n  \"spworkflowprocess\": \"Custom Workflow Process\",\n  \"filetype_spworkflowprocess\": \"Custom Workflow Process\",\n  \"spworkflowprocesslist\": \"Custom Workflow Processes\",\n  \"filetype_spworkflowprocesslist\": \"Custom Workflow Processes\",\n  \"sppublishingimageslibrarylist\": \"Publishing Image Library\",\n  \"filetype_sppublishingimageslibrarylist\": \"Publishing Image Library\",\n  \"spcirculation\": \"Circulation\",\n  \"filetype_spcirculation\": \"Circulation\",\n  \"spcirculationlist\": \"Circulations\",\n  \"filetype_spcirculationlist\": \"Circulations\",\n  \"spdashboardslibrarylist\": \"Dashboards Library\",\n  \"filetype_spdashboardslibrarylist\": \"Dashboards Library\",\n  \"spdataconnectionforperformancepointlibrarylist\": \"PerformancePoint Data Connection Library\",\n  \"filetype_spdataconnectionforperformancepointlibrarylist\": \"PerformancePoint Data Connection Library\",\n  \"sphealthreport\": \"Health Report\",\n  \"filetype_sphealthreport\": \"Health Report\",\n  \"sphealthreportlist\": \"Health Reports\",\n  \"filetype_sphealthreportlist\": \"Health Reports\",\n  \"sphealthrule\": \"Health Rule\",\n  \"filetype_sphealthrule\": \"Health Rule\",\n  \"sphealthrulelist\": \"Health Rules\",\n  \"filetype_sphealthrulelist\": \"Health Rules\",\n  \"spimedictionary\": \"IME Dictionary\",\n  \"filetype_spimedictionary\": \"IME Dictionary\",\n  \"spimedictionarylist\": \"IME Dictionaries\",\n  \"filetype_spimedictionarylist\": \"IME Dictionaries\",\n  \"spperformancepointcontent\": \"PerformancePoint Content\",\n  \"filetype_spperformancepointcontent\": \"PerformancePoint Content\",\n  \"spperformancepointcontentlist\": \"PerformancePoint Contents\",\n  \"filetype_spperformancepointcontentlist\": \"PerformancePoint Contents\",\n  \"spphonecallmemo\": \"Phone Call Memo\",\n  \"filetype_spphonecallmemo\": \"Phone Call Memo\",\n  \"spphonecallmemolist\": \"Phone Call Memos\",\n  \"filetype_spphonecallmemolist\": \"Phone Call Memos\",\n  \"sprecordlibrarylist\": \"Record Library\",\n  \"filetype_sprecordlibrarylist\": \"Record Library\",\n  \"spresource\": \"Resource\",\n  \"filetype_spresource\": \"Resource\",\n  \"spresourcelist\": \"Resources\",\n  \"filetype_spresourcelist\": \"Resources\",\n  \"spprocessdiagramslibrarylist\": \"Process Diagram Library\",\n  \"filetype_spprocessdiagramslibrarylist\": \"Process Diagram Library\",\n  \"spsitethemeslibrarylist\": \"Site Theme Library\",\n  \"filetype_spsitethemeslibrarylist\": \"Site Theme Library\",\n  \"spsolutionslibrarylist\": \"Solution Library\",\n  \"filetype_spsolutionslibrarylist\": \"Solution Library\",\n  \"spwfpublibrarylist\": \"WFPUB Library\",\n  \"filetype_spwfpublibrarylist\": \"WFPUB Library\",\n  \"spwhereabout\": \"Whereabout\",\n  \"filetype_spwhereabout\": \"Whereabout\",\n  \"spwhereaboutlist\": \"Whereabouts\",\n  \"filetype_spwhereaboutlist\": \"Whereabouts\",\n  \"spdocumentlink\": \"Link to a Document\",\n  \"filetype_spdocumentlink\": \"Link to a Document\",\n  \"spdocumentset\": \"Document Set\",\n  \"filetype_spdocumentset\": \"Document Set\",\n  \"spmicrofeedpost\": \"Microfeed Post\",\n  \"filetype_spmicrofeedpost\": \"Microfeed Post\",\n  \"spmicrofeedlist\": \"Microfeed\",\n  \"filetype_spmicrofeedlist\": \"Microfeed\",\n  \"splistfolder\": \"List Folder\",\n  \"filetype_splistfolder\": \"List Folder\",\n  \"slackmessage\": \"Slack Message\",\n  \"filetype_slackmessage\": \"Slack Message\",\n  \"slackchannel\": \"Slack Channel\",\n  \"filetype_slackchannel\": \"Slack Channel\",\n  \"slackfile\": \"Slack File\",\n  \"filetype_slackfile\": \"Slack File\",\n  \"slackuser\": \"Slack User\",\n  \"filetype_slackuser\": \"Slack User\",\n  \"youtubevideo\": \"YouTube video\",\n  \"filetype_youtubevideo\": \"YouTube video\",\n  \"youtubeplaylistitem\": \"YouTube playlist item\",\n  \"filetype_youtubeplaylistitem\": \"YouTube playlist item\",\n  \"youtubeplaylist\": \"YouTube playlist\",\n  \"filetype_youtubeplaylist\": \"YouTube playlist\",\n  \"Unknown\": \"Unknown\",\n  \"And\": \"AND\",\n  \"Authenticating\": \"Authenticating {0}...\",\n  \"Clear\": \"Clear {0}\",\n  \"CompleteQuery\": \"Complete query\",\n  \"Exclude\": \"Exclude {0}\",\n  \"EnterTag\": \"Add Tag\",\n  \"Next\": \"Next\",\n  \"Last\": \"Last\",\n  \"Link\": \"Link\",\n  \"Or\": \"OR\",\n  \"Previous\": \"Previous\",\n  \"QueryDidntMatchAnyDocuments\": \"Your query did not match any documents.\",\n  \"QueryException\": \"Your query has an error: {0}.\",\n  \"Me\": \"Me\",\n  \"Remove\": \"Remove\",\n  \"Search\": \"Search\",\n  \"SearchFor\": \"Search for {0}\",\n  \"SubmitSearch\": \"Submit search\",\n  \"ShareQuery\": \"Share Query\",\n  \"Preferences\": \"Preferences\",\n  \"LinkOpeningSettings\": \"Link opening settings\",\n  \"Reauthenticate\": \"Reauthenticate {0}\",\n  \"ResultsFilteringExpression\": \"Result filtering expressions\",\n  \"FiltersInYourPreferences\": \"Filters in your preferences\",\n  \"Create\": \"Create\",\n  \"SearchIn\": \"Search in {0}\",\n  \"Seconds\": \"in {0} second<pl>s</pl>\",\n  \"ShowingResultsOf\": \"Result<pl>s</pl> {0}<pl>-{1}</pl> of {2}\",\n  \"ShowingResultsOfWithQuery\": \"Result<pl>s</pl> {0}<pl>-{1}</pl> of {2} for {3}\",\n  \"SwitchTo\": \"Switch to {0}\",\n  \"Unexclude\": \"Remove exclusion filter on {0}\",\n  \"ClearAllFilters\": \"Clear All Filters\",\n  \"SkipLogin\": \"Skip login\",\n  \"LoginInProgress\": \"Login in progress, please wait ...\",\n  \"Login\": \"Log In\",\n  \"GetStarted\": \"Get Started\",\n  \"More\": \"More\",\n  \"NMore\": \"{0} more...\",\n  \"Less\": \"Fewer\",\n  \"Settings\": \"Settings\",\n  \"Score\": \"Score\",\n  \"ScoreDescription\": \"The score is computed from the number of occurrences as well as from the position in the result set.\",\n  \"Occurrences\": \"Occurrences\",\n  \"OccurrencesDescription\": \"Sort by number of occurrences, with values having the highest number appearing first.\",\n  \"Label\": \"Label\",\n  \"Of\": \"of\",\n  \"LabelDescription\": \"Sort alphabetically on the field values.\",\n  \"Value\": \"Value\",\n  \"ValueDescription\": \"Sort on the values of the first computed field\",\n  \"AlphaAscending\": \"Value Ascending\",\n  \"AlphaDescending\": \"Value Descending\",\n  \"ChiSquare\": \"Chi Square\",\n  \"Nosort\": \"No Sort\",\n  \"NosortDescription\": \"Do not sort the values. The values will be returned in a random order.\",\n  \"RelativeFrequency\": \"Relative Frequency\",\n  \"RelativeFrequencyDescription\": \"Sort based on the relative frequency of values. Less common values will appear higher.\",\n  \"DateDistribution\": \"Date distribution\",\n  \"Custom\": \"Custom\",\n  \"CustomDescription\": \"Sort based on a custom order\",\n  \"ComputedField\": \"Computed Field\",\n  \"Ascending\": \"Ascending\",\n  \"Descending\": \"Descending\",\n  \"noResultFor\": \"No results for {0}\",\n  \"noResult\": \"No results\",\n  \"autoCorrectedQueryTo\": \"Query was automatically corrected to {0}\",\n  \"didYouMean\": \"Did you mean: {0}\",\n  \"SuggestedResults\": \"Suggested Results\",\n  \"SuggestedQueries\": \"Suggested Queries\",\n  \"MostRelevantItems\": \"Most relevant items:\",\n  \"AllItems\": \"All items:\",\n  \"ShowLess\": \"Show less\",\n  \"ShowMore\": \"Show more\",\n  \"HideFacet\": \"Hide Facet\",\n  \"ShowFacet\": \"Show Facet\",\n  \"AndOthers\": \"and {0} other<pl>s</pl>\",\n  \"Others\": \"{0} other<pl>s</pl>\",\n  \"MostRelevantPosts\": \"Most Relevant Posts:\",\n  \"CompleteThread\": \"Complete Thread:\",\n  \"ShowCompleteThread\": \"Show Complete Thread\",\n  \"ShowOnlyTopMatchingPosts\": \"Show Only Top Matching Posts\",\n  \"MostRelevantReplies\": \"Most Relevant Replies:\",\n  \"AllConversation\": \"All Conversation:\",\n  \"ShowAllConversation\": \"Show All Conversation\",\n  \"ShowAllReplies\": \"Show All Replies\",\n  \"ShowOnlyMostRelevantReplies\": \"Show Only Most Relevant Replies\",\n  \"Close\": \"Close\",\n  \"Open\": \"Open\",\n  \"OpenInOutlookWhenPossible\": \"Open in Outlook (when possible)\",\n  \"AlwaysOpenInNewWindow\": \"Always open results in new window\",\n  \"Quickview\": \"Quick View\",\n  \"NoQuickview\": \"The Quick View for this document is unavailable\",\n  \"ErrorReport\": \"Error Report\",\n  \"OopsError\": \"Something went wrong.\",\n  \"ProblemPersists\": \"If the problem persists contact the administrator.\",\n  \"GoBack\": \"Go Back\",\n  \"Reset\": \"Reset\",\n  \"Retry\": \"Retry\",\n  \"MoreInfo\": \"More Information\",\n  \"Username\": \"Username\",\n  \"Password\": \"Password\",\n  \"PostedBy\": \"Posted by\",\n  \"CannotConnect\": \"Cannot connect to the server address.\",\n  \"BadUserPass\": \"Password does not match with username.\",\n  \"PleaseEnterYourCredentials\": \"Please enter your credentials for {0}.\",\n  \"PleaseEnterYourSearchPage\": \"Please enter your search page URL\",\n  \"Collapse\": \"Collapse\",\n  \"Collapsable\": \"Collapsible\",\n  \"Expand\": \"Expand\",\n  \"CollapseFacet\": \"Collapse {0} facet\",\n  \"ExpandFacet\": \"Expand {0} facet\",\n  \"ShowLessFacetResults\": \"Show fewer results for {0} facet\",\n  \"ShowMoreFacetResults\": \"Show more results for {0} facet\",\n  \"ShowLessCategoryResults\": \"Show fewer results for the {0} category\",\n  \"ShowMoreCategoryResults\": \"Show more results for the {0} category\",\n  \"ShowLessHierarchicalResults\": \"Show fewer results for the {0} facet\",\n  \"ShowMoreHierarchicalResults\": \"Show more results for the {0} facet\",\n  \"SearchFacetResults\": \"Search for values in {0} facet\",\n  \"Today\": \"Today\",\n  \"Yesterday\": \"Yesterday\",\n  \"Tomorrow\": \"Tomorrow\",\n  \"Duration\": \"Duration: {0}\",\n  \"IndexDuration\": \"Index Duration: {0}\",\n  \"ProxyDuration\": \"Proxy Duration: {0}\",\n  \"ClientDuration\": \"Client Duration: {0}\",\n  \"Unavailable\": \"Unavailable\",\n  \"Reply\": \"Reply\",\n  \"ReplyAll\": \"Reply All\",\n  \"Forward\": \"Forward\",\n  \"From\": \"From\",\n  \"Caption\": \"Caption\",\n  \"Expression\": \"Expression\",\n  \"Tab\": \"Tab\",\n  \"Tabs\": \"Tabs\",\n  \"EnterExpressionName\": \"Enter expression name\",\n  \"EnterExpressionToFilterWith\": \"Enter expression to filter results with\",\n  \"SelectTab\": \"Select Tab\",\n  \"SelectAll\": \"Select All\",\n  \"PageUrl\": \"Search page URL\",\n  \"ErrorSavingToDevice\": \"Error while saving the information to your device\",\n  \"ErrorReadingFromDevice\": \"Error while reading the information from your device\",\n  \"AppIntro\": \"Speak with a product specialist who can answer your questions about Coveo and help you decide which Coveo solution is right for you. Or, try a live demo !\",\n  \"TryDemo\": \"Try the demo\",\n  \"ContactUs\": \"Contact us\",\n  \"NewToCoveo\": \"New to Coveo?\",\n  \"LetUsHelpGetStarted\": \"Let us help you get started\",\n  \"LikesThis\": \"{0} like<sn>s</sn> this.\",\n  \"CannotConnectSearchPage\": \"Cannot connect to your search page\",\n  \"AreYouSureDeleteFilter\": \"Are you sure you want to delete the filter {0} with the expression {1}\",\n  \"OnlineHelp\": \"Online Help\",\n  \"Done\": \"Done\",\n  \"SaveFacetState\": \"Save this facet state\",\n  \"ClearFacetState\": \"Clear facet state\",\n  \"DisplayingTheOnlyMessage\": \"Displaying the only message in this conversation\",\n  \"NoNetworkConnection\": \"No network connection\",\n  \"UnknownConnection\": \"Unknown connection\",\n  \"EthernetConnection\": \"Ethernet connection\",\n  \"WiFi\": \"WiFi connection\",\n  \"CELL\": \"Cellular connection\",\n  \"CELL_2G\": \"Cellular 2G connection\",\n  \"CELL_3G\": \"Cellular 3G connection\",\n  \"CELL_4G\": \"Cellular 4G connection\",\n  \"Relevance\": \"Relevance\",\n  \"Date\": \"Date\",\n  \"Amount\": \"Amount\",\n  \"QueryExceptionNoException\": \"No exception\",\n  \"QueryExceptionInvalidSyntax\": \"Invalid syntax\",\n  \"QueryExceptionInvalidCustomField\": \"Invalid custom field\",\n  \"QueryExceptionInvalidDate\": \"Invalid date\",\n  \"QueryExceptionInvalidExactPhrase\": \"Invalid exact phrase\",\n  \"QueryExceptionInvalidDateOp\": \"Invalid date operator\",\n  \"QueryExceptionInvalidNear\": \"Invalid NEAR operator\",\n  \"QueryExceptionInvalidWeightedNear\": \"Invalid weighted NEAR\",\n  \"QueryExceptionInvalidTerm\": \"Invalid term\",\n  \"QueryExceptionTooManyTerms\": \"Too many terms\",\n  \"QueryExceptionWildcardTooGeneral\": \"Wildcard too general\",\n  \"QueryExceptionInvalidSortField\": \"Invalid sort field\",\n  \"QueryExceptionInvalidSmallStringOp\": \"Invalid small string operator\",\n  \"QueryExceptionRequestedResultsMax\": \"Requested results maximum\",\n  \"QueryExceptionAggregatedMirrorDead\": \"Aggregated mirror is offline\",\n  \"QueryExceptionAggregatedMirrorQueryTimeOut\": \"Aggregated mirror query timeout\",\n  \"QueryExceptionAggregatedMirrorInvalidBuildNumber\": \"Aggregated mirror invalid build number\",\n  \"QueryExceptionAggregatedMirrorCannotConnect\": \"Aggregated mirror cannot connect\",\n  \"QueryExceptionNotEnoughLeadingCharsWildcard\": \"Not enough leading character wildcard\",\n  \"QueryExceptionSecurityInverterNotFound\": \"Security inverter not found\",\n  \"QueryExceptionSecurityInverterAccessDenied\": \"Security inverter access denied\",\n  \"QueryExceptionAggregatedMirrorCannotImpersonate\": \"Aggregated mirror cannot impersonate\",\n  \"QueryExceptionUnexpected\": \"Unexpected\",\n  \"QueryExceptionAccessDenied\": \"Access denied\",\n  \"QueryExceptionSuperUserTokenInvalid\": \"Super user token invalid\",\n  \"QueryExceptionSuperUserTokenExpired\": \"Super user token is expired\",\n  \"QueryExceptionLicenseQueriesExpired\": \"Queries license expired\",\n  \"QueryExceptionLicenseSuperUserTokenNotSupported\": \"License super user token not supported\",\n  \"QueryExceptionInvalidSession\": \"Invalid session\",\n  \"QueryExceptionInvalidDocument\": \"Invalid document\",\n  \"QueryExceptionSearchDisabled\": \"Search disabled\",\n  \"FileType\": \"File type\",\n  \"ShowAttachment\": \"Show attachment\",\n  \"OnFeed\": \"on {0}'s feed.\",\n  \"Author\": \"Author\",\n  \"NoTitle\": \"No title\",\n  \"CurrentSelections\": \"Current selections\",\n  \"AllContent\": \"All content\",\n  \"CancelLastAction\": \"Cancel last action\",\n  \"SearchTips\": \"Search tips\",\n  \"CheckSpelling\": \"Check the spelling of your keywords.\",\n  \"TryUsingFewerKeywords\": \"Try using fewer, different or more general keywords.\",\n  \"SelectFewerFilters\": \"Select fewer filters to broaden your search.\",\n  \"Document\": \"Document\",\n  \"Time\": \"Time\",\n  \"StartDate\": \"Start Date\",\n  \"StartTime\": \"Start Time\",\n  \"DurationTitle\": \"Duration\",\n  \"UserQuery\": \"User query\",\n  \"ShowUserActions\": \"Show User Actions\",\n  \"NoData\": \"No data available\",\n  \"EventType\": \"Event type\",\n  \"GoToFullSearch\": \"Full search\",\n  \"GoToEdition\": \"Customize Panel\",\n  \"RemoveContext\": \"Remove context\",\n  \"BoxAttachToCase\": \"Attach to case\",\n  \"AttachToCase\": \"Attach to case\",\n  \"Attach\": \"Attach\",\n  \"Attached\": \"Attached\",\n  \"Detach\": \"Detach\",\n  \"Details\": \"Details\",\n  \"AdditionalFilters\": \"Additional filters\",\n  \"SelectNonContextualSearch\": \"Remove the context from the current record to broaden your search\",\n  \"CopyPasteToSupport\": \"Copy paste this message to the Coveo Support team for more information.\",\n  \"FollowQueryDescription\": \"Alert me for changes to the search results of this query.\",\n  \"SearchAlerts_Panel\": \"Manage Alerts\",\n  \"SearchAlerts_PanelDescription\": \"View and manage your search alerts.\",\n  \"SearchAlerts_PanelNoSearchAlerts\": \"You have no subscriptions.\",\n  \"SearchAlerts_Fail\": \"The Search Alerts service is currently unavailable.\",\n  \"SearchAlerts_Type\": \"Type\",\n  \"SearchAlerts_Content\": \"Content\",\n  \"SearchAlerts_Actions\": \"Action\",\n  \"EmptyQuery\": \"<empty>\",\n  \"SearchAlerts_Type_followQuery\": \"Query\",\n  \"SearchAlerts_Type_followDocument\": \"Item\",\n  \"SearchAlerts_unFollowing\": \"Stop Following\",\n  \"SearchAlerts_follow\": \"Follow\",\n  \"SearchAlerts_followed\": \"Followed\",\n  \"SearchAlerts_followQuery\": \"Follow Query\",\n  \"Subscription_StopFollowingQuery\": \"Stop Following Query\",\n  \"SearchAlerts_Frequency\": \"When\",\n  \"SubscriptionsManageSubscriptions\": \"Manage Alerts\",\n  \"SubscriptionsMessageFollowQuery\": \"You will receive alerts when the query <b>{0}</b> returns new or updated items.\",\n  \"SubscriptionsMessageFollow\": \"You will receive alerts for changes to the item <b>{0}</b>.\",\n  \"Expiration\": \"Expiration\",\n  \"Monthly\": \"Monthly\",\n  \"Daily\": \"Daily\",\n  \"Monday\": \"Monday\",\n  \"Tuesday\": \"Tuesday\",\n  \"Wednesday\": \"Wednesday\",\n  \"Thursday\": \"Thursday\",\n  \"Friday\": \"Friday\",\n  \"Saturday\": \"Saturday\",\n  \"Sunday\": \"Sunday\",\n  \"NextDay\": \"Next {0}\",\n  \"LastDay\": \"Last {0}\",\n  \"StartTypingCaseForSuggestions\": \"Describe your problem to see possible solutions\",\n  \"ExportToExcel\": \"Export to Excel\",\n  \"ExportToExcelDescription\": \"Export search results to Excel\",\n  \"CaseCreationNoResults\": \"No recommended solutions were found\",\n  \"SortBy\": \"Sort by\",\n  \"BoxCreateArticle\": \"Create Article\",\n  \"Facets\": \"Facets\",\n  \"AdvancedSearch\": \"Advanced Search\",\n  \"Keywords\": \"Keywords\",\n  \"AllTheseWords\": \"All these words\",\n  \"ExactPhrase\": \"This exact phrase\",\n  \"AnyOfTheseWords\": \"Any of these words\",\n  \"NoneOfTheseWords\": \"None of these words\",\n  \"Anytime\": \"Anytime\",\n  \"InTheLast\": \"In the last\",\n  \"Days\": \"days\",\n  \"Months\": \"months\",\n  \"Month\": \"Month\",\n  \"Year\": \"Year\",\n  \"Between\": \"Between\",\n  \"Language\": \"Language\",\n  \"Size\": \"Size\",\n  \"AtLeast\": \"at least\",\n  \"AtMost\": \"at most\",\n  \"Contains\": \"contains\",\n  \"DoesNotContain\": \"does not contain\",\n  \"Matches\": \"matches\",\n  \"Bytes\": \"bytes\",\n  \"card\": \"Card\",\n  \"table\": \"Table\",\n  \"ResultLinks\": \"Result links\",\n  \"EnableQuerySyntax\": \"Enable query syntax\",\n  \"On\": \"On\",\n  \"Off\": \"Off\",\n  \"Automatic\": \"Automatic\",\n  \"ResultsPerPage\": \"Results per page\",\n  \"PreviousMonth\": \"Previous month\",\n  \"NextMonth\": \"Next month\",\n  \"Title\": \"Title\",\n  \"FiltersInAdvancedSearch\": \"Filters in Advanced Search\",\n  \"NoEndpoints\": \"{0} has no registered endpoints.\",\n  \"InvalidToken\": \"The token used is invalid.\",\n  \"AddSources\": \"You will need to add sources in your index, or wait for the created sources to finish indexing.\",\n  \"TryAgain\": \"Please try again.\",\n  \"CoveoOnlineHelp\": \"Coveo Online Help\",\n  \"CannotAccess\": \"{0} cannot be accessed.\",\n  \"CoveoOrganization\": \"Coveo Organization\",\n  \"SearchAPIDuration\": \"Search API Duration: {0}\",\n  \"LastUpdated\": \"Last updated\",\n  \"AllDates\": \"All dates\",\n  \"WithinLastDay\": \"Within last day\",\n  \"WithinLastWeek\": \"Within last week\",\n  \"WithinLastMonth\": \"Within last month\",\n  \"WithinLastYear\": \"Within last year\",\n  \"RelevanceInspector\": \"Relevance Inspector\",\n  \"KeywordInCategory\": \"{0} <span class=\\\"coveo-omnibox-suggestion-category\\\">in {1}</span>\",\n  \"Result\": \"Result\",\n  \"ResultCount\": \"{0} result<pl>s</pl>\",\n  \"ShowingResults\": \"{0} result<pl>s</pl>\",\n  \"ShowingResultsWithQuery\": \"{0} result<pl>s</pl> for {1}\",\n  \"NumberOfVideos\": \"Number of videos\",\n  \"AllCategories\": \"All Categories\",\n  \"Recommended\": \"Recommended\",\n  \"Featured\": \"Featured\",\n  \"CoveoHomePage\": \"Coveo Home page\",\n  \"SizeValue\": \"Size value\",\n  \"UnitMeasurement\": \"Unit of measurement\",\n  \"Toggle\": \"Toggle\",\n  \"FilterOn\": \"Filter on {0}\",\n  \"RemoveFilterOn\": \"Remove inclusion filter on {0}\",\n  \"Enter\": \"Enter\",\n  \"InsertAQuery\": \"Insert a query\",\n  \"PressEnterToSend\": \"Press enter to send\",\n  \"SortResultsBy\": \"Sort results by {0}\",\n  \"SortResultsByAscending\": \"Sort by {0} in ascending order\",\n  \"SortResultsByDescending\": \"Sort by {0} in descending order\",\n  \"DisplayResultsAs\": \"Display results as {0}\",\n  \"FacetTitle\": \"{0} facet\",\n  \"IncludeValueWithResultCount\": \"Inclusion filter on {0}; {1}\",\n  \"ExcludeValueWithResultCount\": \"Exclusion filter on {0}; {1}\",\n  \"PageNumber\": \"Page {0}\",\n  \"DisplayResultsPerPage\": \"Display {0} results per page\",\n  \"GroupByAndFacetRequestsCannotCoexist\": \"The query is invalid because it contains both Group By and Facet requests. Ensure that the search interface does not initialize DynamicFacet components alongside Facet components (or alongside any component extending the Facet component, such as FacetRange or FacetSlider).\",\n  \"MustContain\": \"Must contain:\",\n  \"Missing\": \"Missing:\",\n  \"Filters\": \"Filters\",\n  \"FiltersDropdown\": \"Filters dropdown\",\n  \"OpenFiltersDropdown\": \"Open the filters dropdown\",\n  \"CloseFiltersDropdown\": \"Close the filters dropdown\",\n  \"NoValuesFound\": \"No values found.\",\n  \"To\": \"to\",\n  \"DeselectFilterValues\": \"Deselect all active filters on {0} field\",\n  \"Rated\": \"Rated {0} out of {1} star<pl>s</pl>\",\n  \"RatedBy\": \"by {0} user<pl>s</pl>\",\n  \"NoRatings\": \"No ratings\",\n  \"Pagination\": \"Pagination\",\n  \"ThumbnailOf\": \"Thumbnail of \\\"{0}\\\"\",\n  \"CollapsedUriParts\": \"Collapsed URI parts\",\n  \"HierarchicalFacetValueIndentedUnder\": \"{0} under {1}\",\n  \"HierarchicalFacetValuePathPrefix\": \"in\",\n  \"UsefulnessFeedbackRequest\": \"Was this useful?\",\n  \"UsefulnessFeedbackThankYou\": \"Thanks for your feedback!\",\n  \"UsefulnessFeedbackExplainWhy\": \"Explain why\",\n  \"UsefulnessFeedbackExplainWhyImperative\": \"Explain why\",\n  \"UsefulnessFeedbackDoesNotAnswer\": \"This didn't answer my question at all\",\n  \"UsefulnessFeedbackPartiallyAnswers\": \"This only partially answered my question\",\n  \"UsefulnessFeedbackWasNotAQuestion\": \"My request wasn't meant to be perceived as a question\",\n  \"Yes\": \"Yes\",\n  \"No\": \"No\",\n  \"Other\": \"Other\",\n  \"Send\": \"Send\",\n  \"Edit\": \"Edit\",\n  \"Delete\": \"Delete\",\n  \"Save\": \"Save\",\n  \"UsefulnessFeedbackReason\": \"Reason\",\n  \"AnswerSnippet\": \"Answer to your question\",\n  \"AnswerSpecificSnippet\": \"Answer to \\\"{0}\\\"\",\n  \"SuggestedQuestions\": \"People also ask\",\n  \"ExpandQuestionAnswer\": \"View answer for \\\"{0}\\\"\",\n  \"MoreValuesAvailable\": \"additional values are available\",\n  \"Breadcrumb\": \"Active filters\",\n  \"OrganizationIsPaused\": \"Your Coveo organization is paused due to inactivity and search is currently unavailable.\",\n  \"OrganizationWillResume\": \"Your organization is resuming and will be available shortly.\",\n  \"UpdatingResults\": \"Updating results\",\n  \"QuerySuggestionsAvailable\": \"{0} search suggestion<pl>s are</pl> available.\",\n  \"QuerySuggestionsUnavailable\": \"There are no search suggestions.\",\n}\nexport function defaultLanguage() {\n  var locales = String[\"locales\"] || (String[\"locales\"] = {});\n  locales[\"en\"] = merge(locales[\"en\"], dict);\n  String[\"toLocaleString\"].call(this, { \"en\": dict });\n  String[\"locale\"] = \"en\";\n  String[\"defaultLocale\"] = \"en\";\n  Globalize.culture(\"en\")\n}\nexport function setLanguageAfterPageLoaded() {\n  var locales = String[\"locales\"] || (String[\"locales\"] = {});\n  locales[\"en\"] = merge(locales[\"en\"], dict);\n  String[\"toLocaleString\"].call(this, { \"en\": dict });\n  String[\"locale\"] = \"en\";\n  String[\"defaultLocale\"] = \"en\";\n  Globalize.culture(\"en\")\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/strings/DefaultLanguage.ts","import { LocaleString } from '../ExternalModulesShim';\nimport * as _ from 'underscore';\n\nString.toLocaleString = LocaleString;\nconst pluralRegex = /<pl>(((?!<\\/pl>).)*)<\\/pl>/g;\nconst singularRegex = /<sn>(((?!<\\/sn>).)*)<\\/sn>/g;\n\nexport var L10N = {\n  format: (key: string, ...args: any[]) => {\n    let value = key.toLocaleString();\n    // Try to find a soft match\n    // These conditions check if there was a change in the string (meaning toLocaleString found a match). If there was no\n    // match, try another format.\n    if (value == key) {\n      const tryTranslationInUpperCase = key.toUpperCase().toLocaleString();\n      const tryTranslationInLowerCase = key.toLowerCase().toLocaleString();\n      const tryTranslationAfterCapitalization = (key.charAt(0).toUpperCase() + key.toLowerCase().slice(1)).toLocaleString();\n      if (tryTranslationInUpperCase != key.toUpperCase().toLocaleString()) {\n        value = tryTranslationInUpperCase;\n      } else if (tryTranslationInLowerCase != key.toLowerCase().toLocaleString()) {\n        value = tryTranslationInLowerCase;\n      } else if (tryTranslationAfterCapitalization != key.charAt(0).toUpperCase() + key.toLowerCase().slice(1)) {\n        value = tryTranslationAfterCapitalization;\n      }\n    }\n    if (args.length > 0) {\n      let last = _.last(args);\n      // Last argument is either the count or a boolean forcing plural (true) or singular (false)\n      if (_.isBoolean(last) || _.isNumber(last)) {\n        args.pop();\n        value = L10N.formatPlSn(value, last);\n      }\n      _.each(args, (arg, i) => (value = value.replace(`{${i}}`, arg)));\n    } else {\n      // If there was no parameters passed, we try to cleanup the possible parameters in the translated string.\n      value = value.replace(/{[0-9]}|<pl>[a-zA-Z]+<\\/pl>|<sn>|<\\/sn>/g, '').trim();\n    }\n    return value;\n  },\n  formatPlSn: (value: string, count: number | boolean) => {\n    let isPlural = _.isBoolean(count) ? count : count > 1;\n    if (isPlural) {\n      value = value.replace(pluralRegex, '$1').replace(singularRegex, '');\n    } else {\n      value = value.replace(pluralRegex, '').replace(singularRegex, '$1');\n    }\n    return value;\n  }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/misc/L10N.ts","import { first } from 'underscore';\nimport { Assert } from '../misc/Assert';\nimport { Logger } from '../misc/Logger';\nimport { IAPIAnalyticsSearchEventsResponse } from '../rest/APIAnalyticsSearchEventsResponse';\nimport { IClickEvent } from '../rest/ClickEvent';\nimport { IEndpointCallerOptions, IErrorResponse, ISuccessResponse } from '../rest/EndpointCaller';\nimport { AnalyticsEndpointCaller } from '../rest/AnalyticsEndpointCaller';\nimport { IStringMap } from '../rest/GenericParam';\nimport { ISearchEvent } from '../rest/SearchEvent';\nimport { UrlUtils, IUrlNormalizedParts } from '../utils/UrlUtils';\nimport { Utils } from '../utils/Utils';\nimport { AccessToken } from './AccessToken';\nimport { IAPIAnalyticsEventResponse } from './APIAnalyticsEventResponse';\nimport { IAPIAnalyticsVisitResponseRest } from './APIAnalyticsVisitResponse';\nimport { ICustomEvent } from './CustomEvent';\nimport { ITopQueries } from './TopQueries';\nimport { SearchEndpoint } from '../rest/SearchEndpoint';\nimport { AnalyticsInformation } from '../ui/Analytics/AnalyticsInformation';\n\nexport interface IAnalyticsEndpointOptions {\n  accessToken: AccessToken;\n  serviceUrl: string;\n  organization: string;\n}\n\nexport class AnalyticsEndpoint {\n  logger: Logger;\n\n  static DEFAULT_ANALYTICS_URI = 'https://analytics.cloud.coveo.com/rest/ua';\n  static DEFAULT_ANALYTICS_VERSION = 'v15';\n  static CUSTOM_ANALYTICS_VERSION = undefined;\n\n  static pendingRequest: Promise<any>;\n\n  private visitId: string;\n  private organization: string;\n  public endpointCaller: AnalyticsEndpointCaller;\n\n  constructor(public options: IAnalyticsEndpointOptions) {\n    this.logger = new Logger(this);\n\n    const endpointCallerOptions: IEndpointCallerOptions = {\n      accessToken: this.options.accessToken.token\n    };\n\n    this.endpointCaller = new AnalyticsEndpointCaller(endpointCallerOptions);\n    this.organization = options.organization;\n  }\n\n  public static getURLFromSearchEndpoint(endpoint: SearchEndpoint): string {\n    if (!endpoint || !endpoint.options || !endpoint.options.restUri) {\n      return this.DEFAULT_ANALYTICS_URI;\n    }\n\n    const [basePlatform] = endpoint.options.restUri.replace(/^(https?:\\/\\/)platform/, '$1analytics').split('/rest');\n    return basePlatform + '/rest/ua';\n  }\n\n  public getCurrentVisitId(): string {\n    return this.visitId;\n  }\n\n  public getCurrentVisitIdPromise(): Promise<string> {\n    return new Promise((resolve, reject) => {\n      if (this.getCurrentVisitId()) {\n        resolve(this.getCurrentVisitId());\n      } else {\n        const url = this.buildAnalyticsUrl('/analytics/visit');\n        this.getFromService<IAPIAnalyticsVisitResponseRest>(url, {})\n          .then((response: IAPIAnalyticsVisitResponseRest) => {\n            this.visitId = response.id;\n            resolve(this.visitId);\n          })\n          .catch((response: IErrorResponse) => {\n            reject(response);\n          });\n      }\n    });\n  }\n\n  public sendSearchEvents(searchEvents: ISearchEvent[]): Promise<IAPIAnalyticsSearchEventsResponse> {\n    if (searchEvents.length > 0) {\n      this.logger.info('Logging analytics search events', searchEvents);\n      return this.sendToService(searchEvents, 'searches', 'searchEvents');\n    }\n  }\n\n  public sendDocumentViewEvent(documentViewEvent: IClickEvent): Promise<IAPIAnalyticsEventResponse> {\n    Assert.exists(documentViewEvent);\n    this.logger.info('Logging analytics document view', documentViewEvent);\n    return this.sendToService(documentViewEvent, 'click', 'clickEvent');\n  }\n\n  public sendCustomEvent(customEvent: ICustomEvent) {\n    Assert.exists(customEvent);\n    this.logger.info('Logging analytics custom event', customEvent);\n    return this.sendToService(customEvent, 'custom', 'customEvent');\n  }\n\n  public getTopQueries(params: ITopQueries): Promise<string[]> {\n    const url = this.buildAnalyticsUrl('/stats/topQueries');\n    return this.getFromService<string[]>(url, params);\n  }\n\n  public clearCookies() {\n    new AnalyticsInformation().clear();\n  }\n\n  private async sendToService(data: Record<string, any>, path: string, paramName: string): Promise<any> {\n    // We use pendingRequest because we don't want to have 2 request to analytics at the same time.\n    // Otherwise the cookie visitId won't be set correctly.\n    if (AnalyticsEndpoint.pendingRequest != null) {\n      await AnalyticsEndpoint.pendingRequest;\n    }\n\n    const url = this.getURL(path);\n    const request = this.executeRequest(url, data);\n\n    try {\n      const results = await request;\n      AnalyticsEndpoint.pendingRequest = null;\n      this.handleAnalyticsEventResponse(results.data);\n      return results.data;\n    } catch (error) {\n      AnalyticsEndpoint.pendingRequest = null;\n      if (this.isAnalyticsTokenExpired(error)) {\n        const successfullyRenewed = await this.options.accessToken.doRenew();\n        if (successfullyRenewed) {\n          return this.sendToService(data, path, paramName);\n        }\n      }\n\n      throw error;\n    }\n  }\n\n  private isAnalyticsTokenExpired(error: IErrorResponse) {\n    return error != null && error.statusCode === 400 && error.data && error.data.type === 'InvalidToken';\n  }\n\n  private executeRequest(\n    urlNormalized: IUrlNormalizedParts,\n    data: Record<string, any>\n  ): Promise<ISuccessResponse<IAPIAnalyticsEventResponse>> {\n    const request = this.endpointCaller.call<IAPIAnalyticsEventResponse>({\n      errorsAsSuccess: false,\n      method: 'POST',\n      queryString: urlNormalized.queryNormalized,\n      requestData: data,\n      url: urlNormalized.path,\n      responseType: 'text',\n      requestDataType: 'application/json'\n    });\n\n    if (request) {\n      AnalyticsEndpoint.pendingRequest = request;\n      return request;\n    }\n\n    // In some case, (eg: using navigator.sendBeacon), there won't be any response to read from the service\n    // In those case, send back an empty object upstream.\n    return Promise.resolve({\n      data: {\n        visitId: '',\n        visitorId: ''\n      },\n      duration: 0\n    });\n  }\n\n  private getURL(path: string): IUrlNormalizedParts {\n    const versionToCall = AnalyticsEndpoint.CUSTOM_ANALYTICS_VERSION || AnalyticsEndpoint.DEFAULT_ANALYTICS_VERSION;\n    const urlNormalized = UrlUtils.normalizeAsParts({\n      paths: [this.options.serviceUrl, versionToCall, '/analytics/', path],\n      query: {\n        org: this.organization\n      }\n    });\n    return urlNormalized;\n  }\n\n  private getFromService<T>(url: string, params: IStringMap<string>): Promise<T> {\n    const paramsToSend = { ...params, access_token: this.options.accessToken.token };\n    return this.endpointCaller\n      .call<T>({\n        errorsAsSuccess: false,\n        method: 'GET',\n        queryString: this.options.organization ? ['org=' + Utils.safeEncodeURIComponent(this.options.organization)] : [],\n        requestData: paramsToSend,\n        responseType: 'json',\n        url: url\n      })\n      .then((res: ISuccessResponse<T>) => {\n        return res.data;\n      });\n  }\n\n  private handleAnalyticsEventResponse(response: IAPIAnalyticsEventResponse | IAPIAnalyticsSearchEventsResponse) {\n    let visitId: string;\n\n    if (response['visitId']) {\n      visitId = response['visitId'];\n    } else if (response['searchEventResponses']) {\n      visitId = (<IAPIAnalyticsEventResponse>first(response['searchEventResponses'])).visitId;\n    }\n\n    if (visitId) {\n      this.visitId = visitId;\n    }\n\n    return response;\n  }\n\n  private buildAnalyticsUrl(path: string) {\n    return UrlUtils.normalizeAsString({\n      paths: [this.options.serviceUrl, AnalyticsEndpoint.CUSTOM_ANALYTICS_VERSION || AnalyticsEndpoint.DEFAULT_ANALYTICS_VERSION, path]\n    });\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/rest/AnalyticsEndpoint.ts","export { QueryController } from './controllers/QueryController';\nexport { HistoryController } from './controllers/HistoryController';\nexport { LocalStorageHistoryController } from './controllers/LocalStorageHistoryController';\n\n\n\n// WEBPACK FOOTER //\n// ./src/ControllersModules.ts","import { Assert } from '../misc/Assert';\nimport { QueryController } from '../controllers/QueryController';\nimport { QueryStateModel } from '../models/QueryStateModel';\nimport { InitializationEvents } from '../events/InitializationEvents';\nimport { $$ } from '../utils/Dom';\nimport { HashUtils } from '../utils/HashUtils';\nimport { Defer } from '../misc/Defer';\nimport { RootComponent } from '../ui/Base/RootComponent';\nimport { Utils } from '../utils/Utils';\nimport * as _ from 'underscore';\nimport { IStringMap } from '../rest/GenericParam';\nimport { QUERY_STATE_ATTRIBUTES } from '../models/QueryStateModel';\nimport { IAnalyticsClient } from '../ui/Analytics/AnalyticsClient';\nimport { analyticsActionCauseList, IAnalyticsFacetMeta, IAnalyticsActionCause } from '../ui/Analytics/AnalyticsActionListMeta';\nimport { logSearchBoxSubmitEvent, logSortEvent } from '../ui/Analytics/SharedAnalyticsCalls';\nimport { Model } from '../models/Model';\nimport { IHistoryManager } from './HistoryManager';\n\n/**\n * This component is instantiated automatically by the framework on the root if the {@link SearchInterface}.<br/>\n * When the {@link SearchInterface.options.enableHistory} option is set to true, this component is instantiated.<br/>\n * It's only job is to apply changes in the {@link QueryStateModel} to the hash in the URL, and vice versa.<br/>\n * This component does *not* hold the state of the interface, it only represent it in the URL.\n */\nexport class HistoryController extends RootComponent implements IHistoryManager {\n  static ID = 'HistoryController';\n\n  static attributesThatDoNotTriggerQuery = ['quickview'];\n\n  private willUpdateHash: boolean = false;\n  private hashchange: (...args: any[]) => void;\n  private lastState: IStringMap<any>;\n  private hashUtilsModule: typeof HashUtils;\n\n  /**\n   * Create a new HistoryController\n   * @param element\n   * @param window\n   * @param queryStateModel\n   * @param queryController\n   * @param usageAnalytics **Deprecated.** Since the [October 2019 Release (v2.7219)](https://docs.coveo.com/en/3084/), the class retrieves and uses the {@link AnalyticsClient} from the `queryController` constructor parameter.\n   */\n  constructor(\n    element: HTMLElement,\n    public window: Window,\n    public queryStateModel: QueryStateModel,\n    public queryController: QueryController,\n    usageAnalytics?: IAnalyticsClient\n  ) {\n    super(element, HistoryController.ID);\n\n    Assert.exists(this.queryStateModel);\n    Assert.exists(this.queryController);\n\n    $$(this.element).on(InitializationEvents.restoreHistoryState, () => {\n      this.logger.trace('Restore history state. Update model');\n      this.updateModelFromHash();\n      this.lastState = this.queryStateModel.getAttributes();\n    });\n\n    $$(this.element).on(this.queryStateModel.getEventName(Model.eventTypes.all), () => {\n      this.logger.trace('Query model changed. Update hash');\n      this.updateHashFromModel();\n    });\n\n    this.hashchange = () => {\n      this.handleHashChange();\n      this.lastState = this.queryStateModel.getAttributes();\n    };\n\n    this.window.addEventListener('hashchange', this.hashchange);\n    $$(this.element).on(InitializationEvents.nuke, () => this.handleNuke());\n  }\n\n  public get usageAnalytics() {\n    return this.queryController.usageAnalytics;\n  }\n\n  public set hashUtils(hashUtils: typeof HashUtils) {\n    this.hashUtilsModule = hashUtils;\n  }\n\n  public get hashUtils() {\n    return this.hashUtilsModule ? this.hashUtilsModule : HashUtils;\n  }\n\n  public setState(state: Record<string, any>) {\n    this.setHashValues(state);\n  }\n\n  public replaceState(state: Record<string, any>) {\n    const hash = '#' + this.hashUtils.encodeValues(state);\n    this.window.location.replace(hash);\n  }\n\n  private replaceUrl(url: string) {\n    this.window.location.replace(url);\n  }\n\n  /**\n   * Set the given map of key value in the hash of the URL\n   * @param values\n   */\n  public setHashValues(values: Record<string, any>) {\n    this.logger.trace('Update history hash');\n\n    const encoded = this.hashUtils.encodeValues(values);\n    const hash = encoded ? `#${encoded}` : '';\n    const hashHasChanged = this.window.location.hash != hash;\n\n    this.logger.trace('from', this.window.location.hash, 'to', hash);\n    const location = this.window.location;\n    const url = `${location.pathname}${location.search}${hash}`;\n\n    if (this.queryController.firstQuery) {\n      if (hashHasChanged) {\n        // Using replace avoids adding an entry in the History of the browser.\n        // This means that this new URL will become the new initial URL.\n        this.replaceUrl(url);\n        this.logger.trace('History hash modified', hash);\n      }\n    } else if (hashHasChanged) {\n      this.window.history.pushState('', '', url);\n      this.logger.trace('History hash created', hash);\n    }\n  }\n\n  public debugInfo() {\n    return {\n      state: this.queryStateModel.getAttributes()\n    };\n  }\n\n  public handleHashChange() {\n    this.logger.trace('History hash changed');\n\n    const attributesThatGotApplied = this.updateModelFromHash();\n    if (_.difference(attributesThatGotApplied, HistoryController.attributesThatDoNotTriggerQuery).length > 0) {\n      if (this.lastState) {\n        const differenceWithLastState = Utils.differenceBetweenObjects(this.queryStateModel.getAttributes(), this.lastState);\n        this.mapStateDifferenceToUsageAnalyticsCall(differenceWithLastState);\n      }\n      this.queryController.executeQuery();\n    }\n  }\n\n  private handleNuke() {\n    this.window.removeEventListener('hashchange', this.hashchange);\n  }\n\n  private updateHashFromModel() {\n    this.logger.trace('Model -> history hash');\n\n    if (!this.willUpdateHash) {\n      Defer.defer(() => {\n        const attributes = this.queryStateModel.getAttributes();\n        this.setHashValues(attributes);\n        this.logger.debug('Saving state to hash', attributes);\n        this.willUpdateHash = false;\n      });\n      this.willUpdateHash = true;\n    }\n  }\n\n  private updateModelFromHash() {\n    this.logger.trace('History hash -> model');\n\n    const toSet: { [key: string]: any } = {};\n    const diff: string[] = [];\n    _.each(<_.Dictionary<any>>this.queryStateModel.attributes, (value, key?, obj?) => {\n      const valToSet = this.getHashValue(key);\n      toSet[key] = valToSet;\n      if (`${this.queryStateModel.get(key)}` !== `${valToSet}`) {\n        diff.push(key);\n      }\n    });\n    this.queryStateModel.setMultiple(toSet);\n    return diff;\n  }\n\n  private getHashValue(key: string): any {\n    Assert.isNonEmptyString(key);\n    let value;\n    try {\n      const hash = this.hashUtils.getHash(this.window);\n      value = this.hashUtils.getValue(key, hash);\n    } catch (error) {\n      this.logger.error(`Could not parse parameter ${key} from URI`);\n    }\n\n    if (Utils.isUndefined(value)) {\n      value = this.queryStateModel.defaultAttributes[key];\n    }\n\n    return value;\n  }\n\n  private mapStateDifferenceToUsageAnalyticsCall(stateDifference: IStringMap<any>) {\n    // In this method, we want to only match a single analytics event for the current state change.\n    // Even though it's technically possible that many property changed at the same time since the last state,\n    // the backend UA service does not support multiple search cause for a single search event.\n    // So we find the first event that match (if any), by order of importance (query expression > sort > facet)\n\n    if (!this.usageAnalytics) {\n      this.logger.warn(\"The query state has been modified directly in the URL and we couldn't log the proper analytics call.\");\n      this.logger.warn('This is caused by an history controller that has been initialized without the usage analytics parameter.');\n      return;\n    }\n\n    if (QUERY_STATE_ATTRIBUTES.Q in stateDifference) {\n      logSearchBoxSubmitEvent(this.usageAnalytics);\n      return;\n    } else if (QUERY_STATE_ATTRIBUTES.SORT in stateDifference) {\n      logSortEvent(this.usageAnalytics, stateDifference[QUERY_STATE_ATTRIBUTES.SORT]);\n      return;\n    } else {\n      // Facet id are not known at compilation time, so we iterate on all keys,\n      // and try to determine if at least one is linked to a facet selection or exclusion.\n      _.keys(stateDifference).forEach(key => {\n        const facetInfo = this.extractFacetInfoFromStateDifference(key);\n        if (facetInfo) {\n          this.usageAnalytics.logSearchEvent<IAnalyticsFacetMeta>(facetInfo.actionCause, {\n            facetId: facetInfo.fieldName,\n            facetField: facetInfo.fieldName,\n            facetTitle: facetInfo.fieldName,\n            facetValue: facetInfo.valueModified\n          });\n        }\n      });\n    }\n  }\n\n  private extractFacetInfoFromStateDifference(key: string) {\n    const regexForFacetInclusion = /^f:(?!.*:not)(.*)/;\n    const matchForInclusion = regexForFacetInclusion.exec(key);\n\n    const regexForFacetExclusion = /^f:(.*):not/;\n    const matchForExclusion = regexForFacetExclusion.exec(key);\n\n    const currentValue = this.queryStateModel.get(key) || [];\n    const lastValue = this.lastState[key] || [];\n\n    const valueRemoved = currentValue.length < lastValue.length;\n    let valueModified;\n    if (valueRemoved) {\n      valueModified = _.first(_.difference(lastValue, currentValue));\n    } else {\n      valueModified = _.first(_.difference(currentValue, lastValue));\n    }\n\n    if (matchForInclusion) {\n      const fieldName = matchForInclusion[1];\n      let actionCause: IAnalyticsActionCause;\n      if (valueRemoved) {\n        actionCause = analyticsActionCauseList.facetDeselect;\n      } else {\n        actionCause = analyticsActionCauseList.facetSelect;\n      }\n\n      return {\n        fieldName,\n        actionCause,\n        valueModified\n      };\n    }\n\n    if (matchForExclusion) {\n      const fieldName = matchForExclusion[1];\n      let actionCause: IAnalyticsActionCause;\n      if (valueRemoved) {\n        actionCause = analyticsActionCauseList.facetUnexclude;\n      } else {\n        actionCause = analyticsActionCauseList.facetExclude;\n      }\n\n      return {\n        fieldName,\n        actionCause,\n        valueModified\n      };\n    }\n\n    return null;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/controllers/HistoryController.ts","import { localStorageExists, LocalStorageUtils } from '../utils/LocalStorageUtils';\nimport { Model } from '../models/Model';\nimport { QueryController } from './QueryController';\nimport { Logger } from '../misc/Logger';\nimport { Assert } from '../misc/Assert';\nimport { InitializationEvents } from '../events/InitializationEvents';\nimport { RootComponent } from '../ui/Base/RootComponent';\nimport { $$ } from '../utils/Dom';\nimport { each, omit } from 'underscore';\nimport { IHistoryManager } from './HistoryManager';\n\n/**\n * This component acts like the {@link HistoryController} excepts that is saves the {@link QueryStateModel} in the local storage.<br/>\n * This will not allow 'back' and 'forward' navigation in the history, like the standard {@link HistoryController} allows. Instead, it load the query state only on page load.<br/>\n * To enable this component, you should set the {@link SearchInterface.options.useLocalStorageForHistory} as well as the {@link SearchInterface.options.enableHistory} options to true.\n */\nexport class LocalStorageHistoryController extends RootComponent implements IHistoryManager {\n  static ID = 'LocalStorageHistoryController';\n\n  public storage: LocalStorageUtils<{ [key: string]: any }>;\n  private omit: string[] = [];\n\n  /**\n   * Create a new LocalStorageHistoryController instance\n   * @param element\n   * @param windoh For mock purpose\n   * @param model\n   * @param queryController\n   */\n  constructor(element: HTMLElement, public windoh: Window, public model: Model, public queryController: QueryController) {\n    super(element, LocalStorageHistoryController.ID);\n    if (!localStorageExists) {\n      new Logger(element).info(\n        'No local storage available in current browser. LocalStorageHistoryController cannot initialize itself',\n        this\n      );\n    } else {\n      this.storage = new LocalStorageUtils<{ [key: string]: any }>(LocalStorageHistoryController.ID);\n      Assert.exists(this.model);\n      Assert.exists(this.queryController);\n      $$(this.element).on(InitializationEvents.restoreHistoryState, () => this.initModelFromLocalStorage());\n      $$(this.element).on(this.model.getEventName(Model.eventTypes.all), () => this.updateLocalStorageFromModel());\n    }\n  }\n\n  public replaceState(state: Record<string, any>) {\n    this.storage.save(state);\n  }\n\n  /**\n   * Specifies an array of attributes from the query state model that should not be persisted in the local storage\n   * @param attributes\n   */\n  public withoutThoseAttribute(attributes: string[]) {\n    this.omit = attributes;\n  }\n\n  public setState(values: Record<string, any>) {\n    this.storage.save(values);\n  }\n\n  private updateLocalStorageFromModel() {\n    const attributes = omit(this.model.getAttributes(), this.omit);\n    this.setState(attributes);\n    this.logger.debug('Saving state to localstorage', attributes);\n  }\n\n  private initModelFromLocalStorage() {\n    const model = this.localStorageModel;\n    this.model.setMultiple(model);\n  }\n\n  private get localStorageModel() {\n    const model: Record<string, any> = {};\n    const storedValues = this.storage.load() || {};\n\n    each(this.model.attributes, (value, key) => {\n      const storedValue = storedValues[key];\n      const defaultValue = this.model.defaultAttributes[key];\n      const valueToSet = storedValue == undefined ? defaultValue : storedValue;\n\n      model[key] = valueToSet;\n    });\n\n    return model;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/controllers/LocalStorageHistoryController.ts","import { IQueryResult } from '../../rest/QueryResult';\nimport { StringUtils } from '../../utils/StringUtils';\nimport { ResponsiveComponents } from '../ResponsiveComponents/ResponsiveComponents';\nimport * as _ from 'underscore';\n\nexport class TemplateConditionEvaluator {\n  static getFieldFromString(text: string) {\n    const acceptableCharacterInFieldName = '[a-z0-9_]';\n    const fieldWithAtSymbolPrefix = `@(${acceptableCharacterInFieldName}+)\\\\b`;\n    const rawFieldAccessedUsingDotOperator = `\\\\braw\\\\.(${acceptableCharacterInFieldName}+)\\\\b`;\n    const fieldBetweenDoubleQuotes = `\"[^\"]*?(${acceptableCharacterInFieldName}+)[^\"]*?\"`;\n    const fieldBetweenSingleQuotes = `'[^']*?(${acceptableCharacterInFieldName}+)[^']*?'`;\n    const rawFieldAccessedUsingString = `\\\\braw\\\\[(?:${fieldBetweenDoubleQuotes}|${fieldBetweenSingleQuotes})\\\\]`;\n    const fieldUsedInCondition = `data-condition-field-(?:not-)?(${acceptableCharacterInFieldName}+)=`;\n    const fieldMatcher = new RegExp(\n      `${fieldWithAtSymbolPrefix}|${rawFieldAccessedUsingDotOperator}|${rawFieldAccessedUsingString}|${fieldUsedInCondition}`,\n      'gi'\n    );\n    const matchedFields = StringUtils.match(text, fieldMatcher);\n\n    return _.map(matchedFields, match => _.find(match.splice(1), field => field));\n  }\n\n  static evaluateCondition(condition: string, result: IQueryResult, responsiveComponents = new ResponsiveComponents()): Boolean {\n    let templateShouldBeLoaded = true;\n\n    let fieldsInCondition = TemplateConditionEvaluator.getFieldFromString(condition);\n\n    _.each(fieldsInCondition, (fieldInCondition: string) => {\n      let matchingFieldValues = TemplateConditionEvaluator.evaluateMatchingFieldValues(fieldInCondition, condition);\n      let fieldShouldNotBeNull =\n        matchingFieldValues.length != 0 || TemplateConditionEvaluator.evaluateFieldShouldNotBeNull(fieldInCondition, condition);\n\n      if (fieldShouldNotBeNull) {\n        templateShouldBeLoaded = templateShouldBeLoaded && result.raw[fieldInCondition] != null;\n      }\n      if (templateShouldBeLoaded) {\n        _.each(matchingFieldValues, (fieldValue: string) => {\n          templateShouldBeLoaded = templateShouldBeLoaded && result.raw[fieldInCondition].toLowerCase() == fieldValue.toLowerCase();\n        });\n      }\n    });\n\n    if (templateShouldBeLoaded) {\n      if (TemplateConditionEvaluator.evaluateShouldUseSmallScreen(condition)) {\n        templateShouldBeLoaded = templateShouldBeLoaded && responsiveComponents.isSmallScreenWidth();\n      }\n    }\n    return templateShouldBeLoaded;\n  }\n\n  private static evaluateMatchingFieldValues(field: string, condition: string) {\n    let foundForCurrentField = [];\n    // try to get the field value in the format raw.filetype == \"YouTubeVideo\"\n    let firstRegexToGetValue = new RegExp(`raw\\.${field}\\\\s*=+\\\\s*[\"|']([a-zA-Z]+)[\"|']`, 'gi');\n    // try to get the field value in the format raw['filetype'] == \"YouTubeVideo\"\n    let secondRegexToGetValue = new RegExp(`raw\\[[\"|']${field}[\"|']\\]\\\\s*=+\\\\s*[\"|']([a-zA-Z]+)[\"|']`, 'gi');\n\n    let matches = StringUtils.match(condition, firstRegexToGetValue).concat(StringUtils.match(condition, secondRegexToGetValue));\n    matches.forEach(match => {\n      foundForCurrentField = foundForCurrentField.concat(match[1]);\n    });\n    return _.unique(foundForCurrentField);\n  }\n\n  private static evaluateFieldShouldNotBeNull(field: string, condition: string): boolean {\n    let firstRegexToMatchNonNull = new RegExp(`raw\\.${field}\\\\s*!=\\\\s*(?=null|undefined)`, 'gi');\n    let secondRegexToMatchNonNull = new RegExp(`raw\\[[\"|']${field}[\"|']\\]\\\\s*!=\\\\s*(?=null|undefined)`, 'gi');\n    return condition.match(firstRegexToMatchNonNull) != null || condition.match(secondRegexToMatchNonNull) != null;\n  }\n\n  private static evaluateShouldUseSmallScreen(condition: string) {\n    return condition.match(/Coveo\\.DeviceUtils\\.isSmallScreenWidth/gi);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Templates/TemplateConditionEvaluator.ts","import { Template, IFieldsToMatch, TemplateRole } from './Template';\nimport { Utils } from '../../utils/Utils';\nimport { TemplateConditionEvaluator } from './TemplateConditionEvaluator';\nimport { IComponentOptionsFieldsOption } from '../Base/IComponentOptions';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { $$, Dom } from '../../utils/Dom';\nimport { Initialization } from '../Base/Initialization';\nimport { ValidLayout } from '../ResultLayoutSelector/ValidLayout';\nimport { map, chain, each } from 'underscore';\n\nexport interface ITemplateFromStringProperties {\n  condition?: string;\n  layout?: ValidLayout;\n  mobile?: boolean;\n  tablet?: boolean;\n  desktop?: boolean;\n  fieldsToMatch?: IFieldsToMatch[];\n  role?: TemplateRole;\n}\n\nexport class TemplateFromAScriptTag {\n  constructor(public template: Template, public scriptTag: HTMLElement) {\n    let condition = scriptTag.getAttribute('data-condition');\n    if (condition != null) {\n      // Allows to add quotes in data-condition on the templates\n      condition = condition.toString().replace(/&quot;/g, '\"');\n      template.setConditionWithFallback(condition);\n    } else {\n      const parsedFieldsAttributes = this.parseFieldsAttributes();\n      if (parsedFieldsAttributes && Utils.isNonEmptyArray(parsedFieldsAttributes)) {\n        this.template.fieldsToMatch = parsedFieldsAttributes;\n      }\n    }\n\n    this.template.layout = this.parseLayout();\n    this.template.mobile = this.parseScreenSize('data-mobile');\n    this.template.tablet = this.parseScreenSize('data-tablet');\n    this.template.desktop = this.parseScreenSize('data-desktop');\n    this.template.fields = TemplateConditionEvaluator.getFieldFromString(`${scriptTag.innerHTML} ${condition ? condition : ''}`);\n\n    this.template.role = <TemplateRole>scriptTag.getAttribute('data-role');\n\n    this.template.addFields(TemplateConditionEvaluator.getFieldFromString(scriptTag.innerHTML + ' ' + condition) || []);\n\n    // Additional fields that might be specified directly on the script element\n    const additionalFields = ComponentOptions.loadFieldsOption(scriptTag, 'fields', <IComponentOptionsFieldsOption>{\n      includeInResults: true\n    });\n    if (additionalFields != null) {\n      // remove the @\n      this.template.addFields(map(additionalFields, field => field.substr(1)));\n    }\n\n    // Additional fields that might be used to conditionally load the template when it's going to be rendered.\n    this.template.addFields(\n      map(this.template.fieldsToMatch, (toMatch: IFieldsToMatch) => {\n        return toMatch.field;\n      })\n    );\n\n    // Scan components in this template\n    // return the fields needed for the content of this template\n    const neededFieldsForComponents = chain(this.template.getComponentsInside(scriptTag.innerHTML))\n      .map((component: string) => {\n        return Initialization.getRegisteredFieldsComponentForQuery(component);\n      })\n      .flatten()\n      .value();\n\n    this.template.addFields(neededFieldsForComponents);\n  }\n\n  toHtmlElement(container?: Dom): HTMLElement {\n    if (!container) {\n      container = $$('code');\n    }\n    const condition = $$(this.scriptTag).getAttribute('data-condition');\n    if (condition) {\n      container.setAttribute('data-condition', condition);\n    }\n    container.setHtml(this.scriptTag.innerHTML);\n    return container.el;\n  }\n\n  parseFieldsAttributes(): IFieldsToMatch[] {\n    const dataSet = this.scriptTag.dataset;\n    return chain(dataSet)\n      .map((value, key: string) => {\n        const match = key.match(/field([a-zA-Z0-9_\\.]*)/i);\n        if (match) {\n          let values;\n          if (value != null && value != 'null' && value != '') {\n            values = map(value.split(','), val => val.trim());\n          }\n          return {\n            field: match[1].toLowerCase(),\n            values\n          };\n        } else {\n          return undefined;\n        }\n      })\n      .compact()\n      .value();\n  }\n\n  parseScreenSize(attribute: string) {\n    return Utils.parseBooleanIfNotUndefined(this.scriptTag.getAttribute(attribute));\n  }\n\n  parseLayout(): ValidLayout {\n    const layout = this.scriptTag.getAttribute('data-layout');\n    return <ValidLayout>layout;\n  }\n\n  static fromString(\n    template: string,\n    properties: ITemplateFromStringProperties = {},\n    container = document.createElement('code')\n  ): HTMLElement {\n    container.innerHTML = template;\n    if (properties.condition != null) {\n      container.setAttribute('data-condition', properties.condition);\n    }\n    if (properties.layout != null) {\n      container.setAttribute('data-layout', properties.layout);\n    } else {\n      container.setAttribute('data-layout', 'list');\n    }\n    if (properties.mobile != null) {\n      container.setAttribute('data-mobile', properties.mobile.toString());\n    }\n    if (properties.tablet != null) {\n      container.setAttribute('data-tablet', properties.tablet.toString());\n    }\n    if (properties.desktop != null) {\n      container.setAttribute('data-desktop', properties.desktop.toString());\n    }\n    if (properties.fieldsToMatch != null) {\n      each(properties.fieldsToMatch, (fieldToMatch: IFieldsToMatch) => {\n        if (fieldToMatch.values) {\n          container.setAttribute(`data-field-${fieldToMatch.field.toLowerCase()}`, fieldToMatch.values.join(','));\n        } else {\n          container.setAttribute(`data-field-${fieldToMatch.field.toLowerCase()}`, null);\n        }\n      });\n    }\n    if (properties.role != null) {\n      container.setAttribute('data-role', properties.role);\n    }\n    return container;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Templates/TemplateFromAScriptTag.ts","import { ComponentOptions } from '../Base/ComponentOptions';\nimport { LocalStorageUtils } from '../../utils/LocalStorageUtils';\nimport { ResultListEvents, IDisplayedNewResultEventArgs } from '../../events/ResultListEvents';\nimport { DebugEvents } from '../../events/DebugEvents';\nimport { IQueryResults } from '../../rest/QueryResults';\nimport { IQueryResult } from '../../rest/QueryResult';\nimport { $$, Dom } from '../../utils/Dom';\nimport { StringUtils } from '../../utils/StringUtils';\nimport { SearchEndpoint } from '../../rest/SearchEndpoint';\nimport { RootComponent } from '../Base/RootComponent';\nimport { BaseComponent } from '../Base/BaseComponent';\nimport { ModalBox as ModalBoxModule } from '../../ExternalModulesShim';\nimport Globalize = require('globalize');\nimport * as _ from 'underscore';\nimport 'styling/_Debug';\nimport { l } from '../../strings/Strings';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { DebugHeader } from './DebugHeader';\nimport { QueryEvents, IQuerySuccessEventArgs } from '../../events/QueryEvents';\nimport { DebugForResult } from './DebugForResult';\nimport { exportGlobally } from '../../GlobalExports';\nimport { Template } from '../Templates/Template';\n\nexport interface IDebugOptions {\n  enableDebug?: boolean;\n}\n\nexport class Debug extends RootComponent {\n  static ID = 'Debug';\n\n  static doExport = () => {\n    exportGlobally({\n      Debug: Debug\n    });\n  };\n\n  static options: IDebugOptions = {\n    enableDebug: ComponentOptions.buildBooleanOption({ defaultValue: false })\n  };\n\n  static customOrder = ['error', 'queryDuration', 'result', 'fields', 'rankingInfo', 'template', 'query', 'results', 'state'];\n  static durationKeys = ['indexDuration', 'proxyDuration', 'clientDuration', 'duration'];\n  static maxDepth = 10;\n  public localStorageDebug: LocalStorageUtils<string[]>;\n  public collapsedSections: string[];\n  private modalBox: Coveo.ModalBox.ModalBox;\n  private opened = false;\n  private stackDebug: any;\n  private debugHeader: DebugHeader;\n\n  public showDebugPanel: () => void;\n\n  constructor(\n    public element: HTMLElement,\n    public bindings: IComponentBindings,\n    public options?: IDebugOptions,\n    public ModalBox = ModalBoxModule\n  ) {\n    super(element, Debug.ID);\n    this.options = ComponentOptions.initComponentOptions(element, Debug, options);\n\n    // This gets debounced so the following logic works correctly :\n    // When you alt dbl click on a component, it's possible to add/merge multiple debug info source together\n    // They will be merged together in this.addInfoToDebugPanel\n    // Then, openModalBox, even if it's called from multiple different caller will be opened only once all the info has been merged together correctly\n    this.showDebugPanel = _.debounce(() => this.openModalBox(), 100);\n\n    $$(this.element).on(ResultListEvents.newResultDisplayed, (e, args: IDisplayedNewResultEventArgs) =>\n      this.handleNewResultDisplayed(args)\n    );\n    $$(this.element).on(DebugEvents.showDebugPanel, (e, args) => this.handleShowDebugPanel(args));\n    $$(this.element).on(QueryEvents.querySuccess, (e, args: IQuerySuccessEventArgs) => this.handleQuerySuccess(args));\n    $$(this.element).on(QueryEvents.newQuery, () => this.handleNewQuery());\n\n    this.localStorageDebug = new LocalStorageUtils<string[]>('DebugPanel');\n    this.collapsedSections = this.localStorageDebug.load() || [];\n  }\n\n  public debugInfo() {\n    return null;\n  }\n\n  public addInfoToDebugPanel(info: any) {\n    if (this.stackDebug == null) {\n      this.stackDebug = {};\n    }\n    this.stackDebug = { ...this.stackDebug, ...info };\n  }\n\n  private handleNewResultDisplayed(args: IDisplayedNewResultEventArgs) {\n    $$(args.item).on('dblclick', (e: MouseEvent) => {\n      this.handleResultDoubleClick(e, args);\n    });\n  }\n\n  private handleResultDoubleClick(e: MouseEvent, args: IDisplayedNewResultEventArgs) {\n    if (e.altKey) {\n      const index = args.result.index;\n\n      const template = args.item['template'];\n\n      const findResult = (results?: IQueryResults) =>\n        results != null ? _.find(results.results, (result: IQueryResult) => result.index == index) : args.result;\n\n      const debugInfo = {\n        ...new DebugForResult(this.bindings).generateDebugInfoForResult(args.result),\n        findResult,\n        template: this.templateToJson(template)\n      };\n\n      this.addInfoToDebugPanel(debugInfo);\n      this.showDebugPanel();\n    }\n  }\n\n  private handleQuerySuccess(args: IQuerySuccessEventArgs) {\n    if (this.opened) {\n      if (this.stackDebug && this.stackDebug.findResult) {\n        this.addInfoToDebugPanel(new DebugForResult(this.bindings).generateDebugInfoForResult(this.stackDebug.findResult(args.results)));\n      }\n      this.redrawDebugPanel();\n      this.hideAnimationDuringQuery();\n    }\n  }\n\n  private handleNewQuery() {\n    if (this.opened) {\n      this.showAnimationDuringQuery();\n    }\n  }\n\n  private handleShowDebugPanel(args: any) {\n    this.addInfoToDebugPanel(args);\n    this.showDebugPanel();\n  }\n\n  private buildStackPanel(): { body: HTMLElement; json: any } {\n    const body = $$('div', {\n      className: 'coveo-debug'\n    });\n\n    const keys = _.chain(this.stackDebug)\n      .omit('findResult') // findResult is a duplicate of the simpler \"result\" key used to retrieve the results only\n      .keys()\n      .value();\n\n    // TODO Can't chain this properly due to a bug in underscore js definition file.\n    // Yep, A PR is opened to DefinitelyTyped.\n    let keysPaired = _.pairs(keys);\n\n    keysPaired = keysPaired.sort((a: any[], b: any[]) => {\n      const indexA = _.indexOf(Debug.customOrder, a[1]);\n      const indexB = _.indexOf(Debug.customOrder, b[1]);\n      if (indexA != -1 && indexB != -1) {\n        return indexA - indexB;\n      }\n      if (indexA != -1) {\n        return -1;\n      }\n      if (indexB != -1) {\n        return 1;\n      }\n      return a[0] - b[0];\n    });\n\n    const json = {};\n\n    _.forEach(keysPaired, (key: string[]) => {\n      const section = this.buildSection(key[1]);\n      const build = this.buildStackPanelSection(this.stackDebug[key[1]], this.stackDebug['result']);\n      section.container.append(build.section);\n      if (build.json != null) {\n        json[key[1]] = build.json;\n      }\n      body.append(section.dom.el);\n    });\n\n    return {\n      body: body.el,\n      json: json\n    };\n  }\n\n  private getModalBody() {\n    if (this.modalBox && this.modalBox.content) {\n      return $$(this.modalBox.content).find('.coveo-modal-body');\n    }\n    return null;\n  }\n\n  private redrawDebugPanel() {\n    const build = this.buildStackPanel();\n    const body = this.getModalBody();\n    if (body) {\n      $$(body).empty();\n      $$(body).append(build.body);\n    }\n    this.updateSearchFunctionnality(build);\n  }\n\n  private openModalBox() {\n    const build = this.buildStackPanel();\n    this.opened = true;\n\n    this.modalBox = this.ModalBox.open(build.body, {\n      title: l('Debug'),\n      className: 'coveo-debug',\n      titleClose: true,\n      overlayClose: true,\n      validation: () => {\n        this.onCloseModalBox();\n        return true;\n      },\n      sizeMod: 'big',\n      body: this.bindings.root\n    });\n\n    const title = $$(this.modalBox.wrapper).find('.coveo-modal-header');\n    if (title) {\n      if (!this.debugHeader) {\n        this.debugHeader = new DebugHeader(this, title, (value: string) => this.search(value, build.body), this.stackDebug);\n      } else {\n        this.debugHeader.moveTo(title);\n        this.updateSearchFunctionnality(build);\n      }\n    } else {\n      this.logger.warn('No title found in modal box.');\n    }\n  }\n\n  private updateSearchFunctionnality(build: { body: HTMLElement; json: any }) {\n    if (this.debugHeader) {\n      this.debugHeader.setNewInfoToDebug(this.stackDebug);\n      this.debugHeader.setSearch((value: string) => this.search(value, build.body));\n    }\n  }\n\n  private onCloseModalBox() {\n    this.stackDebug = null;\n    this.opened = false;\n  }\n\n  private buildStackPanelSection(value: any, results: IQueryResults): { section: HTMLElement; json?: any } {\n    if (value instanceof HTMLElement) {\n      return { section: value };\n    } else if (_.isFunction(value)) {\n      return this.buildStackPanelSection(value(results), results);\n    }\n    const json = this.toJson(value);\n    return { section: this.buildProperty(json), json: json };\n  }\n\n  private findInProperty(element: HTMLElement, value: string): boolean {\n    const wrappedElement = $$(element);\n    let match = element['label'].indexOf(value) != -1;\n    if (match) {\n      this.highlightSearch(element['labelDom'], value);\n    } else {\n      this.removeHighlightSearch(element['labelDom']);\n    }\n    if (wrappedElement.hasClass('coveo-property-object')) {\n      wrappedElement.toggleClass('coveo-search-match', match);\n      const children = element['buildKeys']();\n      let submatch = false;\n      _.each(children, (child: HTMLElement) => {\n        submatch = this.findInProperty(child, value) || submatch;\n      });\n      wrappedElement.toggleClass('coveo-search-submatch', submatch);\n      return match || submatch;\n    } else {\n      if (element['values'].indexOf(value) != -1) {\n        this.highlightSearch(element['valueDom'], value);\n        match = true;\n      } else {\n        this.removeHighlightSearch(element['valueDom']);\n      }\n      wrappedElement.toggleClass('coveo-search-match', match);\n    }\n    return match;\n  }\n\n  private buildSection(id: string) {\n    const dom = $$('div', {\n      className: `coveo-section coveo-${id}-section`\n    });\n\n    const header = $$('div', {\n      className: 'coveo-section-header'\n    });\n\n    $$(header).text(id);\n    dom.append(header.el);\n\n    const container = $$('div', {\n      className: 'coveo-section-container'\n    });\n\n    dom.append(container.el);\n\n    if (_.contains(this.collapsedSections, id)) {\n      $$(dom).addClass('coveo-debug-collapsed');\n    }\n\n    header.on('click', () => {\n      $$(dom).toggleClass('coveo-debug-collapsed');\n      if (_.contains(this.collapsedSections, id)) {\n        this.collapsedSections = _.without(this.collapsedSections, id);\n      } else {\n        this.collapsedSections.push(id);\n      }\n      this.localStorageDebug.save(this.collapsedSections);\n    });\n\n    return {\n      dom: dom,\n      header: header,\n      container: container\n    };\n  }\n\n  private buildProperty(value: any, label?: string): HTMLElement {\n    if (value instanceof Promise) {\n      return this.buildPromise(value, label);\n    } else if ((_.isArray(value) || _.isObject(value)) && !_.isString(value)) {\n      return this.buildObjectProperty(value, label);\n    } else {\n      return this.buildBasicProperty(value, label);\n    }\n  }\n\n  private buildPromise(promise: Promise<any>, label?: string): HTMLElement {\n    const dom = $$('div', {\n      className: 'coveo-property coveo-property-promise'\n    });\n\n    promise.then(value => {\n      const resolvedDom = this.buildProperty(value, label);\n      dom.replaceWith(resolvedDom);\n    });\n\n    return dom.el;\n  }\n\n  private buildObjectProperty(object: any, label?: string): HTMLElement {\n    const dom = $$('div', {\n      className: 'coveo-property coveo-property-object'\n    });\n\n    const valueContainer = $$('div', {\n      className: 'coveo-property-value'\n    });\n\n    const keys = _.keys(object);\n    if (!_.isArray(object)) {\n      keys.sort();\n    }\n\n    let children: HTMLElement[];\n    const buildKeys = () => {\n      if (children == null) {\n        children = [];\n        _.each(keys, (key: string) => {\n          const property = this.buildProperty(object[key], key);\n          if (property != null) {\n            children.push(property);\n            valueContainer.append(property);\n          }\n        });\n      }\n      return children;\n    };\n    dom.el['buildKeys'] = buildKeys;\n\n    if (label != null) {\n      const labelDom = $$('div', {\n        className: 'coveo-property-label'\n      });\n\n      labelDom.text(label);\n      dom.el['labelDom'] = labelDom.el;\n\n      dom.append(labelDom.el);\n      if (keys.length != 0) {\n        dom.addClass('coveo-collapsible');\n\n        labelDom.on('click', () => {\n          buildKeys();\n          let className = dom.el.className.split(/\\s+/);\n          if (_.contains(className, 'coveo-expanded')) {\n            className = _.without(className, 'coveo-expanded');\n          } else {\n            className.push('coveo-expanded');\n          }\n          dom.el.className = className.join(' ');\n        });\n      }\n    } else {\n      buildKeys();\n    }\n    if (keys.length == 0) {\n      const className = _.without(dom.el.className.split(/\\s+/), 'coveo-property-object');\n      className.push('coveo-property-basic');\n      dom.el.className = className.join(' ');\n      if (_.isArray(object)) {\n        valueContainer.setHtml('[]');\n      } else {\n        valueContainer.setHtml('{}');\n      }\n      dom.el['values'] = '';\n    }\n    dom.el['label'] = label != null ? label.toLowerCase() : '';\n    dom.append(valueContainer.el);\n    return dom.el;\n  }\n\n  private buildBasicProperty(value: string, label?: string): HTMLElement {\n    const dom = $$('div', {\n      className: 'coveo-property coveo-property-basic'\n    });\n\n    if (label != null) {\n      const labelDom = $$('div', {\n        className: 'coveo-property-label'\n      });\n      labelDom.text(label);\n      dom.append(labelDom.el);\n      dom.el['labelDom'] = labelDom.el;\n    }\n    const stringValue = value != null ? value.toString() : String(value);\n    if (value != null && value['ref'] != null) {\n      value = value['ref'];\n    }\n    const valueDom = $$('div');\n    valueDom.text(stringValue);\n    valueDom.on('dblclick', () => {\n      this.selectElementText(valueDom.el);\n    });\n\n    dom.append(valueDom.el);\n    dom.el['valueDom'] = valueDom;\n\n    const className: string[] = ['coveo-property-value'];\n    if (_.isString(value)) {\n      className.push('coveo-property-value-string');\n    }\n    if (_.isNull(value) || _.isUndefined(value)) {\n      className.push('coveo-property-value-null');\n    }\n    if (_.isNumber(value)) {\n      className.push('coveo-property-value-number');\n    }\n    if (_.isBoolean(value)) {\n      className.push('coveo-property-value-boolean');\n    }\n    if (_.isDate(value)) {\n      className.push('coveo-property-value-date');\n    }\n    if (_.isObject(value)) {\n      className.push('coveo-property-value-object');\n    }\n    if (_.isArray(value)) {\n      className.push('coveo-property-value-array');\n    }\n    valueDom.el.className = className.join(' ');\n\n    dom.el['label'] = label != null ? label.toLowerCase() : '';\n    dom.el['values'] = stringValue.toLowerCase();\n    return dom.el;\n  }\n\n  private toJson(value: any, depth = 0, done: any[] = []) {\n    if (value instanceof BaseComponent || value instanceof SearchEndpoint) {\n      return this.componentToJson(value, depth);\n    }\n    if (value instanceof HTMLElement) {\n      return this.htmlToJson(value);\n    }\n    if (value instanceof Template) {\n      return this.templateToJson(value);\n    }\n    if (value instanceof Promise) {\n      return value.then(value => {\n        return this.toJson(value, depth, done);\n      });\n    }\n    if (value == window) {\n      return this.toJsonRef(value);\n    }\n    if (_.isArray(value) || _.isObject(value)) {\n      if (_.contains(done, value)) {\n        return this.toJsonRef(value, '< RECURSIVE >');\n      } else if (depth >= Debug.maxDepth) {\n        return this.toJsonRef(value);\n      } else if (_.isArray(value)) {\n        return _.map(value, (subValue, key) => this.toJson(subValue, depth + 1, done.concat([value])));\n      } else if (_.isDate(value)) {\n        return this.toJsonRef(value, Globalize.format(value, 'F'));\n      } else {\n        const result = {};\n        _.each(value, (subValue, key) => {\n          result[key] = this.toJson(subValue, depth + 1, done.concat([value]));\n        });\n        result['ref'];\n        return result;\n      }\n    }\n    return value;\n  }\n\n  private toJsonRef(value: any, stringValue?: String): String {\n    stringValue = new String(stringValue || value);\n    stringValue['ref'] = value;\n    return stringValue;\n  }\n\n  private componentToJson(value: BaseComponent | SearchEndpoint, depth = 0): any {\n    const options = _.keys(value['options']);\n    if (options.length > 0) {\n      return this.toJson(value['options'], depth);\n    } else {\n      return this.toJsonRef(value['options'], new String('No options'));\n    }\n  }\n\n  private htmlToJson(value: HTMLElement): any {\n    if (value == null) {\n      return undefined;\n    }\n    return {\n      tagName: value.tagName,\n      id: value.id,\n      classList: value.className.split(/\\s+/)\n    };\n  }\n\n  private templateToJson(template: Template) {\n    if (template == null) {\n      return null;\n    }\n    const element: HTMLElement = template['element'];\n    const templateObject: any = {\n      type: template.getType()\n    };\n    if (element != null) {\n      templateObject.id = element.id;\n      templateObject.condition = element.attributes['data-condition'];\n      templateObject.content = element.innerText;\n    }\n    return templateObject;\n  }\n\n  private selectElementText(el: HTMLElement) {\n    if (window.getSelection && document.createRange) {\n      const selection = window.getSelection();\n      const range = document.createRange();\n      range.selectNodeContents(el);\n      selection.removeAllRanges();\n      selection.addRange(range);\n    } else if ('createTextRange' in document.body) {\n      const textRange = document.body['createTextRange']();\n      textRange.moveToElementText(el);\n      textRange.select();\n    }\n  }\n\n  private search(value: string, body: HTMLElement) {\n    if (_.isEmpty(value)) {\n      $$(body)\n        .findAll('.coveo-search-match, .coveo-search-submatch')\n        .forEach(el => {\n          $$(el).removeClass('coveo-search-match, coveo-search-submatch');\n        });\n      $$(body).removeClass('coveo-searching');\n    } else {\n      $$(body).addClass('coveo-searching-loading');\n      setTimeout(() => {\n        const rootProperties = $$(body).findAll('.coveo-section .coveo-section-container > .coveo-property');\n        _.each(rootProperties, (element: HTMLElement) => {\n          this.findInProperty(element, value);\n        });\n        $$(body).addClass('coveo-searching');\n        $$(body).removeClass('coveo-searching-loading');\n      });\n    }\n  }\n\n  private highlightSearch(elementToSearch: HTMLElement | Dom, search: string) {\n    let asHTMLElement: HTMLElement;\n    if (elementToSearch instanceof HTMLElement) {\n      asHTMLElement = elementToSearch;\n    } else if (elementToSearch instanceof Dom) {\n      asHTMLElement = elementToSearch.el;\n    }\n    if (asHTMLElement != null && asHTMLElement.innerText != null) {\n      const match = asHTMLElement.innerText.split(new RegExp('(?=' + StringUtils.regexEncode(search) + ')', 'gi'));\n      asHTMLElement.innerHTML = '';\n      match.forEach(value => {\n        const regex = new RegExp('(' + StringUtils.regexEncode(search) + ')', 'i');\n        const group = value.match(regex);\n        let span;\n\n        if (group != null) {\n          span = $$('span', {\n            className: 'coveo-debug-highlight'\n          });\n          span.text(group[1]);\n          asHTMLElement.appendChild(span.el);\n          span = $$('span');\n          span.text(value.substr(group[1].length));\n          asHTMLElement.appendChild(span.el);\n        } else {\n          span = $$('span');\n          span.text(value);\n          asHTMLElement.appendChild(span.el);\n        }\n      });\n    }\n  }\n\n  private removeHighlightSearch(element: HTMLElement) {\n    if (element != null) {\n      element.innerHTML = element.innerText;\n    }\n  }\n\n  private showAnimationDuringQuery() {\n    $$(this.modalBox.content).addClass('coveo-debug-loading');\n  }\n\n  private hideAnimationDuringQuery() {\n    $$(this.modalBox.content).removeClass('coveo-debug-loading');\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Debug/Debug.ts","var isObject = require('./_is-object');\nvar document = require('./_global').document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n  return is ? document.createElement(it) : {};\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_dom-create.js\n// module id = 159\n// module chunks = 88 89","module.exports = function (bitmap, value) {\n  return {\n    enumerable: !(bitmap & 1),\n    configurable: !(bitmap & 2),\n    writable: !(bitmap & 4),\n    value: value\n  };\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_property-desc.js\n// module id = 160\n// module chunks = 88 89","// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = require('./_an-object');\nvar dPs = require('./_object-dps');\nvar enumBugKeys = require('./_enum-bug-keys');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar Empty = function () { /* empty */ };\nvar PROTOTYPE = 'prototype';\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar createDict = function () {\n  // Thrash, waste and sodomy: IE GC bug\n  var iframe = require('./_dom-create')('iframe');\n  var i = enumBugKeys.length;\n  var lt = '<';\n  var gt = '>';\n  var iframeDocument;\n  iframe.style.display = 'none';\n  require('./_html').appendChild(iframe);\n  iframe.src = 'javascript:'; // eslint-disable-line no-script-url\n  // createDict = iframe.contentWindow.Object;\n  // html.removeChild(iframe);\n  iframeDocument = iframe.contentWindow.document;\n  iframeDocument.open();\n  iframeDocument.write(lt + 'script' + gt + 'document.F=Object' + lt + '/script' + gt);\n  iframeDocument.close();\n  createDict = iframeDocument.F;\n  while (i--) delete createDict[PROTOTYPE][enumBugKeys[i]];\n  return createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n  var result;\n  if (O !== null) {\n    Empty[PROTOTYPE] = anObject(O);\n    result = new Empty();\n    Empty[PROTOTYPE] = null;\n    // add \"__proto__\" for Object.getPrototypeOf polyfill\n    result[IE_PROTO] = O;\n  } else result = createDict();\n  return Properties === undefined ? result : dPs(result, Properties);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_object-create.js\n// module id = 161\n// module chunks = 88 89","var core = require('./_core');\nvar global = require('./_global');\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n  return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n  version: core.version,\n  mode: require('./_library') ? 'pure' : 'global',\n  copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_shared.js\n// module id = 162\n// module chunks = 88 89","module.exports = true;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_library.js\n// module id = 163\n// module chunks = 88 89","var id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n  return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_uid.js\n// module id = 164\n// module chunks = 88 89","// IE 8- don't enum bug keys\nmodule.exports = (\n  'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_enum-bug-keys.js\n// module id = 165\n// module chunks = 88 89","'use strict';\nvar LIBRARY = require('./_library');\nvar $export = require('./_export');\nvar redefine = require('./_redefine');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar $iterCreate = require('./_iter-create');\nvar setToStringTag = require('./_set-to-string-tag');\nvar getPrototypeOf = require('./_object-gpo');\nvar ITERATOR = require('./_wks')('iterator');\nvar BUGGY = !([].keys && 'next' in [].keys()); // Safari has buggy iterators w/o `next`\nvar FF_ITERATOR = '@@iterator';\nvar KEYS = 'keys';\nvar VALUES = 'values';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Base, NAME, Constructor, next, DEFAULT, IS_SET, FORCED) {\n  $iterCreate(Constructor, NAME, next);\n  var getMethod = function (kind) {\n    if (!BUGGY && kind in proto) return proto[kind];\n    switch (kind) {\n      case KEYS: return function keys() { return new Constructor(this, kind); };\n      case VALUES: return function values() { return new Constructor(this, kind); };\n    } return function entries() { return new Constructor(this, kind); };\n  };\n  var TAG = NAME + ' Iterator';\n  var DEF_VALUES = DEFAULT == VALUES;\n  var VALUES_BUG = false;\n  var proto = Base.prototype;\n  var $native = proto[ITERATOR] || proto[FF_ITERATOR] || DEFAULT && proto[DEFAULT];\n  var $default = $native || getMethod(DEFAULT);\n  var $entries = DEFAULT ? !DEF_VALUES ? $default : getMethod('entries') : undefined;\n  var $anyNative = NAME == 'Array' ? proto.entries || $native : $native;\n  var methods, key, IteratorPrototype;\n  // Fix native\n  if ($anyNative) {\n    IteratorPrototype = getPrototypeOf($anyNative.call(new Base()));\n    if (IteratorPrototype !== Object.prototype && IteratorPrototype.next) {\n      // Set @@toStringTag to native iterators\n      setToStringTag(IteratorPrototype, TAG, true);\n      // fix for some old engines\n      if (!LIBRARY && typeof IteratorPrototype[ITERATOR] != 'function') hide(IteratorPrototype, ITERATOR, returnThis);\n    }\n  }\n  // fix Array#{values, @@iterator}.name in V8 / FF\n  if (DEF_VALUES && $native && $native.name !== VALUES) {\n    VALUES_BUG = true;\n    $default = function values() { return $native.call(this); };\n  }\n  // Define iterator\n  if ((!LIBRARY || FORCED) && (BUGGY || VALUES_BUG || !proto[ITERATOR])) {\n    hide(proto, ITERATOR, $default);\n  }\n  // Plug for library\n  Iterators[NAME] = $default;\n  Iterators[TAG] = returnThis;\n  if (DEFAULT) {\n    methods = {\n      values: DEF_VALUES ? $default : getMethod(VALUES),\n      keys: IS_SET ? $default : getMethod(KEYS),\n      entries: $entries\n    };\n    if (FORCED) for (key in methods) {\n      if (!(key in proto)) redefine(proto, key, methods[key]);\n    } else $export($export.P + $export.F * (BUGGY || VALUES_BUG), NAME, methods);\n  }\n  return methods;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_iter-define.js\n// module id = 166\n// module chunks = 88 89","var def = require('./_object-dp').f;\nvar has = require('./_has');\nvar TAG = require('./_wks')('toStringTag');\n\nmodule.exports = function (it, tag, stat) {\n  if (it && !has(it = stat ? it : it.prototype, TAG)) def(it, TAG, { configurable: true, value: tag });\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_set-to-string-tag.js\n// module id = 167\n// module chunks = 88 89","module.exports = '\\x09\\x0A\\x0B\\x0C\\x0D\\x20\\xA0\\u1680\\u180E\\u2000\\u2001\\u2002\\u2003' +\n  '\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_string-ws.js\n// module id = 168\n// module chunks = 88 89","import { Utils } from './Utils';\nimport { Logger, $$ } from '../Core';\nimport { find } from 'underscore';\n\n/**\n * Set of utilities to determine where to load the lazy chunks from.\n * You should add the `coveo-script` class on the script tag that includes the Coveo framework to make sure the framework can always\n * auto-detect the path to load the lazy chunks from. More details [here]{@link https://docs.coveo.com/en/295/javascript-search-framework/lazy-versus-eager-component-loading#fixing-code-chunks-loading-path-issues}\n */\nexport class PublicPathUtils {\n  private static pathHasBeenConfigured = false;\n\n  // Dynamically set the public path to load the chunks relative to the Coveo script\n  // Fallback on last parsed script if document.currentScript is not available.\n  public static detectPublicPath() {\n    if (!this.pathHasBeenConfigured) {\n      __webpack_public_path__ = PublicPathUtils.getDynamicPublicPath();\n    }\n  }\n\n  /**\n   * Helper function to resolve the public path used to load the chunks relative to the Coveo script.\n   * You should add the `coveo-script` class on the script tag that includes the Coveo framework\n   * to make sure the framework can always auto-detect the path to load the lazy chunks from.\n   * More details [here]{@link https://docs.coveo.com/en/295/javascript-search-framework/lazy-versus-eager-component-loading#fixing-code-chunks-loading-path-issues}\n   */\n  public static getDynamicPublicPath() {\n    let currentScript = this.getCurrentScript();\n    const coveoScript = this.getCoveoScript();\n    if (!this.isScript(coveoScript)) {\n      new Logger(this)\n        .warn(`You should add the class coveo-script on the script tag that includes the Coveo framework. Not doing so may cause the framework to not be able to auto-detect the path to load the lazy chunks in certain environments.\n        More details [here](https://docs.coveo.com/en/295/javascript-search-framework/lazy-versus-eager-component-loading#fixing-code-chunks-loading-path-issues).`);\n    }\n    if (!Utils.isNullOrUndefined(currentScript)) {\n      return this.parseScriptDirectoryPath(currentScript);\n    } else if (this.isScript(coveoScript)) {\n      return this.parseScriptDirectoryPath(coveoScript);\n    } else {\n      const scripts = document.getElementsByTagName('script');\n      return this.parseScriptDirectoryPath(scripts[scripts.length - 1]);\n    }\n  }\n\n  /**\n   * @deprecated Instead of using this method, you should add the `coveo-script` class on the script tag that includes the Coveo framework.\n   * @param path\n   */\n  public static configureResourceRoot(path: string) {\n    this.pathHasBeenConfigured = true;\n    __webpack_public_path__ = path;\n  }\n\n  public static reset() {\n    this.pathHasBeenConfigured = false;\n  }\n\n  public static getCurrentScript() {\n    return <HTMLScriptElement>document.currentScript;\n  }\n\n  public static getCoveoScript() {\n    return find(document.querySelectorAll('.coveo-script'), el => this.isScript(el));\n  }\n\n  private static parseScriptDirectoryPath(script: HTMLScriptElement) {\n    return script.src.replace(/\\/[\\w\\.-]*\\.js((#|\\?)(.*)){0,1}$/, '/');\n  }\n\n  private static isScript(el: Element): el is HTMLScriptElement {\n    return el && $$(<HTMLElement>el).is('script');\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/PublicPathUtils.ts","import { IAnalyticsClient } from './AnalyticsClient';\nimport { DeviceUtils } from '../../utils/DeviceUtils';\nimport { PendingSearchEvent } from './PendingSearchEvent';\nimport { PendingSearchAsYouTypeSearchEvent } from './PendingSearchAsYouTypeSearchEvent';\nimport { AnalyticsEndpoint } from '../../rest/AnalyticsEndpoint';\nimport { Assert } from '../../misc/Assert';\nimport { Logger } from '../../misc/Logger';\nimport { IAnalyticsActionCause, analyticsActionCauseList } from './AnalyticsActionListMeta';\nimport { IQueryResult } from '../../rest/QueryResult';\nimport { ITopQueries } from '../../rest/TopQueries';\nimport {\n  IChangeableAnalyticsMetaObject,\n  IChangeableAnalyticsDataObject,\n  IChangeAnalyticsCustomDataEventArgs,\n  IAnalyticsEventArgs\n} from '../../events/AnalyticsEvents';\nimport { Defer } from '../../misc/Defer';\nimport { $$ } from '../../utils/Dom';\nimport { AnalyticsEvents, IAnalyticsCustomEventArgs } from '../../events/AnalyticsEvents';\nimport { APIAnalyticsBuilder } from '../../rest/APIAnalyticsBuilder';\nimport { IAnalyticsEvent } from '../../rest/AnalyticsEvent';\nimport { IAPIAnalyticsEventResponse } from '../../rest/APIAnalyticsEventResponse';\nimport { ISearchEvent } from '../../rest/SearchEvent';\nimport { IClickEvent } from '../../rest/ClickEvent';\nimport { ICustomEvent } from '../../rest/CustomEvent';\nimport { QueryStateModel } from '../../models/QueryStateModel';\nimport { Component } from '../Base/Component';\nimport { version } from '../../misc/Version';\nimport { QueryUtils } from '../../utils/QueryUtils';\nimport * as _ from 'underscore';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { AnalyticsInformation } from './AnalyticsInformation';\nimport { QueryController } from '../../ControllersModules';\n\nexport class LiveAnalyticsClient implements IAnalyticsClient {\n  public isContextual: boolean = false;\n  public originContext: string = 'Search';\n\n  private language = <string>String['locale'];\n  private device = DeviceUtils.getDeviceName();\n  private mobile = DeviceUtils.isMobileDevice();\n  private pendingSearchEvent: PendingSearchEvent;\n  private pendingSearchAsYouTypeSearchEvent: PendingSearchAsYouTypeSearchEvent;\n  private logger: Logger;\n\n  constructor(\n    public endpoint: AnalyticsEndpoint,\n    public rootElement: HTMLElement,\n    public userId: string,\n    public userDisplayName: string,\n    public anonymous: boolean,\n    public splitTestRunName: string,\n    public splitTestRunVersion: string,\n    public originLevel1: string,\n    public sendToCloud: boolean,\n    public bindings: IComponentBindings\n  ) {\n    Assert.exists(endpoint);\n    Assert.exists(rootElement);\n    Assert.isNonEmptyString(this.language);\n    Assert.isNonEmptyString(this.device);\n    Assert.isNonEmptyString(this.originLevel1);\n    this.logger = new Logger(this);\n  }\n\n  public isActivated(): boolean {\n    return true;\n  }\n\n  public getCurrentVisitId(): string {\n    return this.endpoint.getCurrentVisitId();\n  }\n\n  public getCurrentVisitIdPromise(): Promise<string> {\n    return this.endpoint.getCurrentVisitIdPromise();\n  }\n\n  public getCurrentEventCause() {\n    if (this.pendingSearchEvent != null) {\n      return this.pendingSearchEvent.getEventCause();\n    }\n    if (this.pendingSearchAsYouTypeSearchEvent != null) {\n      return this.pendingSearchAsYouTypeSearchEvent.getEventCause();\n    }\n    return null;\n  }\n\n  public getCurrentEventMeta() {\n    if (this.pendingSearchEvent != null) {\n      return this.pendingSearchEvent.getEventMeta();\n    }\n    if (this.pendingSearchAsYouTypeSearchEvent != null) {\n      return this.pendingSearchAsYouTypeSearchEvent.getEventMeta();\n    }\n    return null;\n  }\n\n  public logSearchEvent<TMeta>(actionCause: IAnalyticsActionCause, meta: TMeta) {\n    var metaObject = this.buildMetaObject(meta);\n    this.pushSearchEvent(actionCause, metaObject);\n  }\n\n  public logSearchAsYouType<TMeta>(actionCause: IAnalyticsActionCause, meta?: TMeta) {\n    var metaObject = this.buildMetaObject(meta);\n    this.pushSearchAsYouTypeEvent(actionCause, metaObject);\n  }\n\n  public logClickEvent<TMeta>(\n    actionCause: IAnalyticsActionCause,\n    meta: TMeta,\n    result: IQueryResult,\n    element: HTMLElement\n  ): Promise<IAPIAnalyticsEventResponse> {\n    let metaObject = this.buildMetaObject(meta, result);\n    return this.pushClickEvent(actionCause, metaObject, result, element);\n  }\n\n  public logCustomEvent<TMeta>(\n    actionCause: IAnalyticsActionCause,\n    meta: TMeta,\n    element: HTMLElement,\n    result?: IQueryResult\n  ): Promise<IAPIAnalyticsEventResponse> {\n    const metaObject = this.buildMetaObject(meta, result);\n    return this.pushCustomEvent(actionCause, metaObject, element);\n  }\n\n  public getTopQueries(params: ITopQueries): Promise<string[]> {\n    return this.endpoint.getTopQueries(params);\n  }\n\n  public sendAllPendingEvents() {\n    if (this.pendingSearchAsYouTypeSearchEvent) {\n      this.pendingSearchAsYouTypeSearchEvent.sendRightNow();\n    }\n  }\n\n  public cancelAllPendingEvents() {\n    if (this.pendingSearchAsYouTypeSearchEvent) {\n      this.pendingSearchAsYouTypeSearchEvent.cancel();\n      this.pendingSearchAsYouTypeSearchEvent = null;\n    }\n    if (this.pendingSearchEvent) {\n      this.pendingSearchEvent.cancel();\n      this.pendingSearchEvent = null;\n    }\n  }\n\n  public getPendingSearchEvent(): PendingSearchEvent {\n    if (this.pendingSearchEvent) {\n      return this.pendingSearchEvent;\n    } else if (this.pendingSearchAsYouTypeSearchEvent) {\n      return this.pendingSearchAsYouTypeSearchEvent;\n    }\n    return null;\n  }\n\n  public warnAboutSearchEvent() {\n    if (_.isUndefined(this.pendingSearchEvent) && _.isUndefined(this.pendingSearchAsYouTypeSearchEvent)) {\n      this.logger.warn(\n        'A search was triggered, but no analytics event was logged. If you wish to have consistent analytics data, consider logging a search event using the methods provided by the framework',\n        'https://docs.coveo.com/en/2726/#logging-your-own-search-events'\n      );\n      if (window['console'] && console.trace) {\n        console.trace();\n      }\n    }\n  }\n\n  public setOriginContext(originContext: string) {\n    this.originContext = originContext;\n  }\n\n  public getOriginContext() {\n    return this.originContext;\n  }\n\n  public getUserDisplayName(): string {\n    return this.userDisplayName;\n  }\n\n  private pushCustomEvent(\n    actionCause: IAnalyticsActionCause,\n    metaObject: IChangeableAnalyticsMetaObject,\n    element?: HTMLElement\n  ): Promise<IAPIAnalyticsEventResponse> {\n    const customEvent = this.buildCustomEvent(actionCause, metaObject, element);\n    this.triggerChangeAnalyticsCustomData('CustomEvent', metaObject, customEvent);\n    this.checkToSendAnyPendingSearchAsYouType(actionCause);\n    $$(this.rootElement).trigger(AnalyticsEvents.customEvent, <IAnalyticsCustomEventArgs>{\n      customEvent: APIAnalyticsBuilder.convertCustomEventToAPI(customEvent)\n    });\n    $$(this.rootElement).trigger(AnalyticsEvents.analyticsEventReady, <IAnalyticsEventArgs>{\n      event: 'CoveoCustomEvent',\n      coveoAnalyticsEventData: customEvent\n    });\n    return this.sendToCloud ? this.endpoint.sendCustomEvent(customEvent) : Promise.resolve(null);\n  }\n\n  private pushSearchEvent(actionCause: IAnalyticsActionCause, metaObject: IChangeableAnalyticsMetaObject) {\n    Assert.exists(actionCause);\n    if (this.pendingSearchEvent && this.pendingSearchEvent.getEventCause() !== actionCause.name) {\n      this.pendingSearchEvent.stopRecording();\n      this.pendingSearchEvent = null;\n    }\n    this.checkToSendAnyPendingSearchAsYouType(actionCause);\n\n    if (!this.pendingSearchEvent) {\n      var searchEvent = this.buildSearchEvent(actionCause, metaObject);\n      this.triggerChangeAnalyticsCustomData('SearchEvent', metaObject, searchEvent);\n      var pendingSearchEvent = (this.pendingSearchEvent = new PendingSearchEvent(\n        this.rootElement,\n        this.endpoint,\n        searchEvent,\n        this.sendToCloud\n      ));\n\n      Defer.defer(() => {\n        // At this point all `duringQuery` events should have been fired, so we can forget\n        // about the pending search event. It will finish processing automatically when\n        // all the deferred that were caught terminate.\n        this.pendingSearchEvent = undefined;\n        pendingSearchEvent.stopRecording();\n      });\n    }\n  }\n\n  private checkToSendAnyPendingSearchAsYouType(actionCause: IAnalyticsActionCause) {\n    if (this.eventIsNotRelatedToSearchbox(actionCause.name)) {\n      this.sendAllPendingEvents();\n    } else {\n      this.cancelAnyPendingSearchAsYouTypeEvent();\n    }\n  }\n\n  private pushSearchAsYouTypeEvent(actionCause: IAnalyticsActionCause, metaObject: IChangeableAnalyticsMetaObject) {\n    this.cancelAnyPendingSearchAsYouTypeEvent();\n    var searchEvent = this.buildSearchEvent(actionCause, metaObject);\n    this.triggerChangeAnalyticsCustomData('SearchEvent', metaObject, searchEvent);\n    this.pendingSearchAsYouTypeSearchEvent = new PendingSearchAsYouTypeSearchEvent(\n      this.rootElement,\n      this.endpoint,\n      searchEvent,\n      this.sendToCloud\n    );\n  }\n\n  private pushClickEvent(\n    actionCause: IAnalyticsActionCause,\n    metaObject: IChangeableAnalyticsMetaObject,\n    result: IQueryResult,\n    element: HTMLElement\n  ): Promise<IAPIAnalyticsEventResponse> {\n    var event = this.buildClickEvent(actionCause, metaObject, result, element);\n    this.checkToSendAnyPendingSearchAsYouType(actionCause);\n    this.triggerChangeAnalyticsCustomData('ClickEvent', metaObject, event, { resultData: result });\n    Assert.isNonEmptyString(event.searchQueryUid);\n    Assert.isNonEmptyString(event.collectionName);\n    Assert.isNonEmptyString(event.sourceName);\n    Assert.isNumber(event.documentPosition);\n\n    $$(this.rootElement).trigger(AnalyticsEvents.documentViewEvent, {\n      documentViewEvent: APIAnalyticsBuilder.convertDocumentViewToAPI(event)\n    });\n    $$(this.rootElement).trigger(AnalyticsEvents.analyticsEventReady, <IAnalyticsEventArgs>{\n      event: 'CoveoClickEvent',\n      coveoAnalyticsEventData: event\n    });\n    return this.sendToCloud ? this.endpoint.sendDocumentViewEvent(event) : Promise.resolve(null);\n  }\n\n  private buildAnalyticsEvent(actionCause: IAnalyticsActionCause, metaObject: IChangeableAnalyticsMetaObject): IAnalyticsEvent {\n    return {\n      searchQueryUid: undefined,\n      actionCause: actionCause.name,\n      actionType: actionCause.type,\n      username: this.userId,\n      userDisplayName: this.userDisplayName,\n      anonymous: this.anonymous,\n      device: this.device,\n      mobile: this.mobile,\n      language: this.language,\n      responseTime: undefined,\n      originLevel1: this.originLevel1,\n      originLevel2: this.getOriginLevel2(this.rootElement),\n      originLevel3: document.referrer,\n      originContext: this.originContext,\n      customData: _.keys(metaObject).length > 0 ? metaObject : undefined,\n      userAgent: navigator.userAgent,\n      clientId: new AnalyticsInformation().clientId\n    };\n  }\n\n  private buildSearchEvent(actionCause: IAnalyticsActionCause, metaObject: IChangeableAnalyticsMetaObject): ISearchEvent {\n    return this.merge<ISearchEvent>(this.buildAnalyticsEvent(actionCause, metaObject), {\n      searchQueryUid: undefined,\n      pipeline: undefined,\n      splitTestRunName: this.splitTestRunName,\n      splitTestRunVersion: this.splitTestRunVersion,\n      queryText: undefined,\n      advancedQuery: undefined,\n      results: undefined,\n      resultsPerPage: undefined,\n      pageNumber: undefined,\n      didYouMean: undefined,\n      facets: undefined,\n      contextual: this.isContextual\n    });\n  }\n\n  private buildClickEvent(\n    actionCause: IAnalyticsActionCause,\n    metaObject: IChangeableAnalyticsMetaObject,\n    result: IQueryResult,\n    element: HTMLElement\n  ): IClickEvent {\n    return this.merge<IClickEvent>(this.buildAnalyticsEvent(actionCause, metaObject), {\n      searchQueryUid: result.queryUid,\n      queryPipeline: result.pipeline,\n      splitTestRunName: this.splitTestRunName || result.splitTestRun,\n      splitTestRunVersion: this.splitTestRunVersion || (result.splitTestRun != undefined ? result.pipeline : undefined),\n      documentUri: result.uri,\n      documentUriHash: QueryUtils.getUriHash(result),\n      documentUrl: result.clickUri,\n      documentTitle: result.title,\n      documentCategory: QueryUtils.getObjectType(result),\n      originLevel2: this.getOriginLevel2(element),\n      collectionName: QueryUtils.getCollection(result),\n      sourceName: QueryUtils.getSource(result),\n      documentPosition: result.index + 1,\n      responseTime: 0,\n      viewMethod: actionCause.name,\n      rankingModifier: result.rankingModifier\n    });\n  }\n\n  private buildCustomEvent(\n    actionCause: IAnalyticsActionCause,\n    metaObject: IChangeableAnalyticsMetaObject,\n    element: HTMLElement\n  ): ICustomEvent {\n    return this.merge<ICustomEvent>(this.buildAnalyticsEvent(actionCause, metaObject), {\n      searchQueryUid: this.getLastSearchQueryUid(),\n      eventType: actionCause.type,\n      eventValue: actionCause.name,\n      originLevel2: this.getOriginLevel2(element),\n      responseTime: 0\n    });\n  }\n\n  protected getOriginLevel2(element: HTMLElement): string {\n    return this.resolveActiveTabFromElement(element) || 'default';\n  }\n\n  private getLastSearchQueryUid() {\n    const queryController = Component.resolveBinding(Component.resolveRoot(this.rootElement), QueryController) as QueryController;\n    if (!queryController) {\n      return;\n    }\n    const lastResults = queryController.getLastResults();\n    if (!lastResults) {\n      return;\n    }\n    return lastResults.searchUid;\n  }\n\n  private buildMetaObject<TMeta>(meta: TMeta, result?: IQueryResult): IChangeableAnalyticsMetaObject {\n    let modifiedMeta: IChangeableAnalyticsMetaObject = _.extend({}, meta);\n    modifiedMeta['JSUIVersion'] = version.lib + ';' + version.product;\n\n    const contentIDsAreAlreadySet = modifiedMeta['contentIDKey'] && modifiedMeta['contentIDValue'];\n\n    if (!contentIDsAreAlreadySet && result) {\n      let uniqueId = QueryUtils.getPermanentId(result);\n      modifiedMeta['contentIDKey'] = uniqueId.fieldUsed;\n      modifiedMeta['contentIDValue'] = uniqueId.fieldValue;\n    }\n\n    return modifiedMeta;\n  }\n\n  private cancelAnyPendingSearchAsYouTypeEvent() {\n    if (this.pendingSearchAsYouTypeSearchEvent) {\n      this.pendingSearchAsYouTypeSearchEvent.cancel();\n      this.pendingSearchAsYouTypeSearchEvent = undefined;\n    }\n  }\n\n  private resolveActiveTabFromElement(element: HTMLElement): string {\n    Assert.exists(element);\n    var queryStateModel = this.resolveQueryStateModel(element);\n    return queryStateModel && <string>queryStateModel.get(QueryStateModel.attributesEnum.t);\n  }\n\n  private resolveQueryStateModel(rootElement: HTMLElement): QueryStateModel {\n    return <QueryStateModel>Component.resolveBinding(rootElement, QueryStateModel);\n  }\n\n  private eventIsNotRelatedToSearchbox(event: string) {\n    return event !== analyticsActionCauseList.searchboxSubmit.name && event !== analyticsActionCauseList.searchboxClear.name;\n  }\n\n  private triggerChangeAnalyticsCustomData(type: string, metaObject: IChangeableAnalyticsMetaObject, event: IAnalyticsEvent, data?: any) {\n    // This is for backward compatibility. Before the analytics were using either numbered\n    // metas in `metaDataAsNumber` of later on named metas in `metaDataAsString`. Thus we still\n    // provide those properties in a deprecated way. Below we are moving any data that put\n    // in them to the root.\n    (<any>metaObject)['metaDataAsString'] = {};\n    (<any>metaObject)['metaDataAsNumber'] = {};\n\n    var changeableAnalyticsDataObject: IChangeableAnalyticsDataObject = {\n      language: event.language,\n      originLevel1: event.originLevel1,\n      originLevel2: event.originLevel2,\n      originLevel3: event.originLevel3,\n      metaObject: metaObject\n    };\n\n    var args: IChangeAnalyticsCustomDataEventArgs = _.extend(\n      {},\n      {\n        type: type,\n        actionType: event.actionType,\n        actionCause: event.actionCause\n      },\n      changeableAnalyticsDataObject,\n      data\n    );\n    $$(this.rootElement).trigger(AnalyticsEvents.changeAnalyticsCustomData, args);\n\n    event.language = args.language;\n    event.originLevel1 = args.originLevel1;\n    event.originLevel2 = args.originLevel2;\n    event.originLevel3 = args.originLevel3;\n    event.customData = metaObject;\n\n    // This is for backward compatibility. Before the analytics were using either numbered\n    // metas in `metaDataAsNumber` of later on named metas in `metaDataAsString`. We are now putting\n    // them all at the root, and if I encounter the older properties I move them to the top\n    // level after issuing a warning.\n\n    var metaDataAsString = event.customData['metaDataAsString'];\n    if (_.keys(metaDataAsString).length > 0) {\n      this.logger.warn(\n        \"Using deprecated 'metaDataAsString' key to log custom analytics data. Custom meta should now be put at the root of the object.\"\n      );\n      _.extend(event.customData, metaDataAsString);\n    }\n    delete event.customData['metaDataAsString'];\n\n    var metaDataAsNumber = event.customData['metaDataAsNumber'];\n    if (_.keys(metaDataAsNumber).length > 0) {\n      this.logger.warn(\n        \"Using deprecated 'metaDataAsNumber' key to log custom analytics data. Custom meta should now be put at the root of the object.\"\n      );\n      _.extend(event.customData, metaDataAsNumber);\n    }\n    delete event.customData['metaDataAsNumber'];\n  }\n\n  private merge<T extends IAnalyticsEvent>(first: IAnalyticsEvent, second: any): T {\n    return _.extend({}, first, second);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Analytics/LiveAnalyticsClient.ts","import { ISearchEvent } from './SearchEvent';\nimport { IAPISearchEvent } from './APISearchEvent';\nimport { IClickEvent } from './ClickEvent';\nimport { IAPIDocumentViewEvent } from './APIDocumentViewEvent';\nimport { IAPICustomEvent } from './APICustomEvent';\nimport { ICustomEvent } from './CustomEvent';\n\nexport class APIAnalyticsBuilder {\n  public static convertSearchEventToAPI(searchEvent: ISearchEvent) {\n    var apiSearchEvent: IAPISearchEvent = {\n      advancedQuery: searchEvent.advancedQuery,\n      customMetadatas: searchEvent.customData,\n      device: searchEvent.device,\n      didYouMean: searchEvent.didYouMean,\n      language: searchEvent.language,\n      pageNumber: searchEvent.pageNumber,\n      queryText: searchEvent.queryText,\n      responseTime: searchEvent.responseTime,\n      numberOfResults: searchEvent.numberOfResults,\n      resultsPerPage: searchEvent.resultsPerPage,\n      searchHub: searchEvent.originLevel1,\n      searchInterface: searchEvent.originLevel2,\n      searchQueryUid: searchEvent.searchQueryUid,\n      type: searchEvent.actionType,\n      actionCause: searchEvent.actionCause,\n      queryPipeline: searchEvent.queryPipeline,\n      splitTestRunName: searchEvent.splitTestRunName,\n      splitTestRunVersion: searchEvent.splitTestRunVersion\n    };\n    return apiSearchEvent;\n  }\n\n  public static convertDocumentViewToAPI(documentView: IClickEvent): IAPIDocumentViewEvent {\n    var apiDocumentView: IAPIDocumentViewEvent = {\n      collectionName: documentView.collectionName,\n      device: documentView.device,\n      documentPosition: documentView.documentPosition,\n      title: documentView.documentTitle,\n      documentUrl: documentView.documentUrl,\n      documentUri: documentView.documentUri,\n      documentUriHash: documentView.documentUriHash,\n      language: documentView.language,\n      responseTime: documentView.responseTime,\n      searchHub: documentView.originLevel1,\n      searchInterface: documentView.originLevel2,\n      searchQueryUid: documentView.searchQueryUid,\n      sourceName: documentView.sourceName,\n      viewMethod: documentView.viewMethod,\n      customMetadatas: documentView.customData,\n      actionCause: documentView.actionCause,\n      queryPipeline: documentView.queryPipeline,\n      splitTestRunName: documentView.splitTestRunName,\n      splitTestRunVersion: documentView.splitTestRunVersion\n    };\n    return apiDocumentView;\n  }\n\n  public static convertCustomEventToAPI(customEvent: ICustomEvent): IAPICustomEvent {\n    var apiCustomEvent: IAPICustomEvent = {\n      actionCause: customEvent.actionCause,\n      actionType: customEvent.actionType,\n      device: customEvent.device,\n      language: customEvent.language,\n      responseTime: customEvent.responseTime,\n      searchHub: customEvent.originLevel1,\n      searchInterface: customEvent.originLevel2,\n      customMetadatas: customEvent.customData\n    };\n    return apiCustomEvent;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/rest/APIAnalyticsBuilder.ts","/// <reference path=\"Facet.ts\" />\n\nimport { Facet } from './Facet';\nimport { Utils } from '../../utils/Utils';\nimport { FacetUtils } from './FacetUtils';\nimport { IGroupByRequest } from '../../rest/GroupByRequest';\nimport { IQuery } from '../../rest/Query';\nimport { QueryBuilder } from '../Base/QueryBuilder';\nimport { $$ } from '../../utils/Dom';\nimport * as _ from 'underscore';\nimport { AllowedValuesPatternType } from '../../rest/AllowedValuesPatternType';\n\nexport class FacetSearchParameters {\n  public nbResults: number;\n  public ignoreAccents: boolean;\n  public valueToSearch: string = '';\n  public alwaysInclude: string[] = [];\n  public alwaysExclude: string[] = [];\n  public sortCriteria = 'occurrences';\n  public fetchMore = false;\n  public completeFacetWithStandardValues = true;\n\n  constructor(public facet: Facet) {\n    this.nbResults = facet.options.numberOfValuesInFacetSearch;\n    this.ignoreAccents = facet.options.facetSearchIgnoreAccents;\n  }\n\n  public setValueToSearch(value: string) {\n    this.valueToSearch = value;\n    if (Utils.isNonEmptyString(value)) {\n      this.valueToSearch = this.valueToSearch.trim();\n      this.alwaysInclude = this.alwaysInclude.concat(FacetUtils.getValuesToUseForSearchInFacet(this.valueToSearch, this.facet));\n    }\n    return this;\n  }\n\n  public excludeCurrentlyDisplayedValuesInSearch(searchResults: HTMLElement) {\n    _.each(this.getCurrentlyShowedValueInSearch(searchResults), v => {\n      const expandedValues = FacetUtils.getValuesToUseForSearchInFacet(v, this.facet);\n      _.each(expandedValues, expanded => {\n        this.alwaysExclude.push(expanded);\n      });\n    });\n    _.each(this.facet.getDisplayedFacetValues(), v => {\n      this.alwaysExclude.push(v.value);\n    });\n  }\n\n  public getGroupByRequest(): IGroupByRequest {\n    this.lowerCaseAll();\n    let nbResults = this.nbResults;\n    nbResults += this.alwaysExclude.length;\n\n    let typedByUser = [];\n    if (this.valueToSearch) {\n      typedByUser = ['*' + this.valueToSearch + '*'];\n    }\n\n    let allowedValues;\n    if (this.valueToSearch) {\n      allowedValues = typedByUser.concat(this.alwaysInclude).concat(this.alwaysExclude);\n    } else {\n      allowedValues = _.compact(typedByUser.concat(this.alwaysInclude).concat(this.facet.options.allowedValues));\n    }\n\n    let completeFacetWithStandardValues = this.completeFacetWithStandardValues;\n    if (this.facet.options.lookupField != null) {\n      completeFacetWithStandardValues = false;\n    }\n\n    const request: IGroupByRequest = {\n      allowedValues,\n      allowedValuesPatternType: this.facet.options.useWildcardsInFacetSearch\n        ? AllowedValuesPatternType.Wildcards\n        : AllowedValuesPatternType.Legacy,\n      maximumNumberOfValues: nbResults,\n      completeFacetWithStandardValues: completeFacetWithStandardValues,\n      field: <string>this.facet.options.field,\n      sortCriteria: this.facet.options.sortCriteria || this.sortCriteria,\n      injectionDepth: this.facet.options.injectionDepth\n    };\n\n    if (this.facet.options.lookupField) {\n      request.lookupField = <string>this.facet.options.lookupField;\n    }\n\n    if (this.facet.options.computedField) {\n      request.computedFields = [\n        {\n          field: <string>this.facet.options.computedField,\n          operation: this.facet.options.computedFieldOperation\n        }\n      ];\n    }\n    return request;\n  }\n\n  public getQuery(): IQuery {\n    let lastQuery = _.clone(this.facet.queryController.getLastQuery());\n    if (!lastQuery) {\n      // There should normally always be a last query available\n      // If not, just create an empty one.\n      lastQuery = new QueryBuilder().build();\n    }\n    // We want to always force query syntax to true for a facet search,\n    // but arrange for the basic expression to adapt itself with no syntax block\n    if (lastQuery.enableQuerySyntax) {\n      lastQuery.q = this.facet.facetQueryController.basicExpressionToUseForFacetSearch;\n    } else if (Utils.isNonEmptyString(this.facet.facetQueryController.basicExpressionToUseForFacetSearch)) {\n      lastQuery.q = `<@- ${this.facet.facetQueryController.basicExpressionToUseForFacetSearch} -@>`;\n    } else {\n      lastQuery.q = '';\n    }\n\n    lastQuery.enableQuerySyntax = true;\n    lastQuery.cq = this.facet.facetQueryController.constantExpressionToUseForFacetSearch;\n    lastQuery.aq = this.facet.facetQueryController.advancedExpressionToUseForFacetSearch;\n    lastQuery.enableDidYouMean = false;\n    lastQuery.firstResult = 0;\n    lastQuery.numberOfResults = 0;\n    lastQuery.fieldsToInclude = [];\n    lastQuery.groupBy = [this.getGroupByRequest()];\n    return lastQuery;\n  }\n\n  private getCurrentlyShowedValueInSearch(searchResults: HTMLElement) {\n    return _.map($$(searchResults).findAll('.coveo-facet-value-caption'), val => {\n      return $$(val).getAttribute('data-original-value') || $$(val).text();\n    });\n  }\n\n  private lowerCaseAll() {\n    this.alwaysExclude = _.chain(this.alwaysExclude)\n      .map(v => {\n        return v.toLowerCase();\n      })\n      .uniq()\n      .value();\n\n    this.alwaysInclude = _.chain(this.alwaysInclude)\n      .map(v => {\n        return v.toLowerCase();\n      })\n      .uniq()\n      .value();\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Facet/FacetSearchParameters.ts","import { isFunction } from 'underscore';\nimport { QueryStateModel, QueryEvents, Component } from '../Core';\nimport { ComponentsTypes } from './ComponentsTypes';\nimport { $$ } from './Dom';\nimport { InitializationEvents } from '../events/InitializationEvents';\n\nexport interface IDependsOnCompatibleFacetOptions {\n  id?: string;\n  dependsOn?: string;\n  dependsOnCondition?: IDependentFacetCondition;\n}\n\nexport interface IDependsOnCompatibleFacet extends Component {\n  options: IDependsOnCompatibleFacetOptions;\n}\n\nexport interface IDependentFacet {\n  reset: () => void;\n  ref: IDependsOnCompatibleFacet;\n}\n\nexport interface IDependentFacetCondition {\n  (facet: IDependsOnCompatibleFacet): boolean;\n}\n\nexport class DependsOnManager {\n  private parentFacetRef: IDependsOnCompatibleFacet;\n\n  constructor(private facet: IDependentFacet) {\n    $$(this.facet.ref.searchInterface.element).on(QueryEvents.buildingQuery, () => this.handleBuildingQuery());\n\n    if (this.getDependsOn(this.facet.ref)) {\n      this.facet.ref.bind.onRootElement(InitializationEvents.afterComponentsInitialization, () => this.setupDependentFacet());\n    }\n  }\n\n  private setupDependentFacet() {\n    $$(this.facet.ref.element).addClass('coveo-hidden-dependant-facet');\n    this.parentFacetRef = this.getParentFacet(this.facet.ref);\n\n    if (this.parentFacetRef) {\n      $$(this.facet.ref.root).on('state:change', () => this.resetIfConditionUnfullfiled());\n    }\n  }\n\n  private resetIfConditionUnfullfiled() {\n    const condition = this.getDependsOnCondition(this.facet.ref);\n\n    if (!condition(this.parentFacetRef)) {\n      this.facet.reset();\n    }\n  }\n\n  private getId(component: IDependsOnCompatibleFacet) {\n    const id = component.options.id;\n    return id ? `${id}` : null;\n  }\n\n  private getDependsOn(component: IDependsOnCompatibleFacet) {\n    const dependsOn = component.options.dependsOn;\n    return dependsOn ? `${dependsOn}` : null;\n  }\n\n  private getDependsOnCondition(component: IDependsOnCompatibleFacet): IDependentFacetCondition {\n    const conditionOption = component.options.dependsOnCondition;\n    return conditionOption && isFunction(conditionOption)\n      ? conditionOption\n      : () => this.parentHasSelectedValues(component) && this.parentIsEnabled(component);\n  }\n\n  private parentHasSelectedValues(component: IDependsOnCompatibleFacet) {\n    const parent = this.getParentFacet(component);\n    return parent && this.valuesExistForFacetWithId(this.getId(parent));\n  }\n\n  private parentIsEnabled(component: IDependsOnCompatibleFacet) {\n    const parent = this.getParentFacet(component);\n    return parent && !parent.disabled;\n  }\n\n  private valuesExistForFacetWithId(facetId: string) {\n    const values = this.facet.ref.queryStateModel.get(QueryStateModel.getFacetId(facetId));\n    return !!values && !!values.length;\n  }\n\n  private get allFacetsInInterface() {\n    return ComponentsTypes.getAllFacetsFromSearchInterface(this.facet.ref.searchInterface) as IDependsOnCompatibleFacet[];\n  }\n\n  private getParentFacet(component: IDependsOnCompatibleFacet) {\n    const parent = this.allFacetsInInterface.filter(\n      potentialParentFacet => this.getId(potentialParentFacet) === this.getDependsOn(component)\n    );\n\n    if (!parent.length) {\n      component.logger.warn('DependsOn reference does not exist', this.getDependsOn(this.facet.ref));\n      return null;\n    }\n\n    return parent[0];\n  }\n\n  private get dependentFacets() {\n    return this.allFacetsInInterface.filter(\n      potentialDependentFacet => this.getId(this.facet.ref) === this.getDependsOn(potentialDependentFacet)\n    );\n  }\n\n  private handleBuildingQuery() {\n    this.dependentFacets.forEach(dependentFacet => {\n      const condition = this.getDependsOnCondition(dependentFacet);\n      if (condition(this.facet.ref)) {\n        $$(dependentFacet.element).removeClass('coveo-hidden-dependant-facet');\n        return dependentFacet.enable();\n      }\n\n      dependentFacet.disable();\n      $$(dependentFacet.element).addClass('coveo-hidden-dependant-facet');\n    });\n  }\n\n  public get hasDependentFacets() {\n    return !!this.dependentFacets.length;\n  }\n\n  public get dependentFacetsHaveSelectedValues() {\n    return this.dependentFacets.some(dependentFacet => this.valuesExistForFacetWithId(this.getId(dependentFacet)));\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/DependsOnManager.ts","import { ResponsiveFacetColumn } from './ResponsiveFacetColumn';\nimport { IResponsiveComponentOptions } from './ResponsiveComponentsManager';\nimport { Facet } from '../Facet/Facet';\n\nexport class ResponsiveFacets extends ResponsiveFacetColumn {\n  public static init(root: HTMLElement, component, options: IResponsiveComponentOptions) {\n    ResponsiveFacetColumn.init(ResponsiveFacets, root, component, options, Facet.ID);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResponsiveComponents/ResponsiveFacets.ts","import { ExpressionRef } from './Expression/ExpressionRef';\nimport { Expression, ExpressionDef } from './Expression/Expression';\nimport { ExpressionOptions } from './Expression/ExpressionOptions';\nimport { ExpressionRegExp } from './Expression/ExpressionRegExp';\nimport _ = require('underscore');\nimport { ExpressionFunction, ExpressionFunctionArgument } from './Expression/ExpressionFunction';\nimport { ExpressionConstant } from './Expression/ExpressionConstant';\nimport { ExpressionList } from './Expression/ExpressionList';\nimport { Result } from './Result/Result';\n\nexport class Grammar {\n  public start: ExpressionRef;\n  public expressions: { [id: string]: Expression } = {};\n\n  constructor(start: string, expressions: { [id: string]: ExpressionDef } = {}) {\n    this.start = new ExpressionRef(start, null, 'start', this);\n    this.addExpressions(expressions);\n  }\n\n  public addExpressions(expressions: { [id: string]: ExpressionDef }) {\n    _.each(expressions, (basicExpression: ExpressionDef, id: string) => {\n      this.addExpression(id, basicExpression);\n    });\n  }\n\n  public addExpression(id: string, basicExpression: ExpressionDef) {\n    if (id in this.expressions) {\n      throw new Error('Grammar already contain the id:' + id);\n    }\n    this.expressions[id] = Grammar.buildExpression(basicExpression, id, this);\n  }\n\n  public getExpression(id: string) {\n    return this.expressions[id];\n  }\n\n  public parse(value: string): Result {\n    return this.start.parse(value, true);\n  }\n\n  public static buildExpression(value: ExpressionDef, id: string, grammar: Grammar): Expression {\n    const type = typeof value;\n    if (type == 'undefined') {\n      throw new Error('Invalid Expression: ' + value);\n    }\n    if (_.isString(value)) {\n      return this.buildStringExpression(<string>value, id, grammar);\n    }\n    if (_.isArray(value)) {\n      return new ExpressionOptions(_.map(<string[]>value, (v: string, i) => new ExpressionRef(v, null, id + '_' + i, grammar)), id);\n    }\n    if (_.isRegExp(value)) {\n      return new ExpressionRegExp(<RegExp>value, id, grammar);\n    }\n    if (_.isFunction(value)) {\n      return new ExpressionFunction(<ExpressionFunctionArgument>value, id, grammar);\n    }\n    throw new Error('Invalid Expression: ' + value);\n  }\n\n  public static buildStringExpression(value: string, id: string, grammar: Grammar): Expression {\n    const matchs = Grammar.stringMatch(value, Grammar.spliter);\n    const expressions = _.map(matchs, (match: string[], i: number): Expression => {\n      if (match[1]) {\n        // Ref\n        const ref = match[1];\n        const occurrence = match[3] ? Number(match[3]) : match[2] || null;\n        return new ExpressionRef(ref, occurrence, id + '_' + i, grammar);\n      } else {\n        // Constant\n        return new ExpressionConstant(match[4], id + '_' + i);\n      }\n    });\n    if (expressions.length == 1) {\n      const expression = expressions[0];\n      expression.id = id;\n      return expression;\n    } else {\n      return new ExpressionList(expressions, id);\n    }\n  }\n\n  public static stringMatch(str: string, re: RegExp) {\n    const groups: string[][] = [];\n    const cloneRegExp = new RegExp(re.source, 'g');\n    let group: RegExpExecArray = cloneRegExp.exec(str);\n\n    while (group !== null) {\n      groups.push(group);\n      group = cloneRegExp.exec(str);\n    }\n    return groups;\n  }\n\n  static spliter = /\\[(\\w+)(\\*|\\+|\\?|\\{([1-9][0-9]*)\\})?\\]|(.[^\\[]*)/;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/magicbox/Grammar.ts","import { $$, Dom } from '../../utils/Dom';\nimport { Utils } from '../../utils/Utils';\nimport * as _ from 'underscore';\nimport 'styling/_InitializationPlaceholder';\nimport { QueryEvents } from '../../events/QueryEvents';\nimport { InitializationEvents } from '../../events/InitializationEvents';\nimport { ResultListEvents } from '../../events/ResultListEvents';\nimport { HashUtils } from '../../utils/HashUtils';\nimport { ComponentsTypes } from '../../utils/ComponentsTypes';\n\nexport interface InitializationPlaceholderOption {\n  searchInterface?: boolean;\n  facet?: boolean;\n  searchbox?: boolean;\n  resultList?: boolean;\n  layout?: string;\n  waitingForFirstQueryMode?: boolean;\n}\n\nexport class InitializationPlaceholder {\n  public facetPlaceholder = `<div class=\"coveo-placeholder-title\"></div>\n    <div class=\"coveo-facet-placeholder-line\">\n      <div class=\"coveo-facet-placeholder-checkbox\"></div>\n      <div class=\"coveo-placeholder-text\"></div>\n    </div>\n    <div class=\"coveo-facet-placeholder-line\">\n      <div class=\"coveo-facet-placeholder-checkbox\"></div>\n      <div class=\"coveo-placeholder-text\"></div>\n    </div>\n    <div class=\"coveo-facet-placeholder-line\">\n      <div class=\"coveo-facet-placeholder-checkbox\"></div>\n      <div class=\"coveo-placeholder-text\"></div>\n    </div>\n    <div class=\"coveo-facet-placeholder-line\">\n      <div class=\"coveo-facet-placeholder-checkbox\"></div>\n      <div class=\"coveo-placeholder-text\"></div>\n    </div>\n    <div class=\"coveo-facet-placeholder-line\">\n      <div class=\"coveo-facet-placeholder-checkbox\"></div>\n      <div class=\"coveo-placeholder-text\"></div>\n    </div>`;\n\n  public resultListPlaceholder = `<div class=\"coveo-result-frame coveo-placeholder-result\">\n  <div class=\"coveo-result-row\">\n    <div class=\"coveo-result-cell\" style=\"width:85px;text-align:center;\">\n      <div class=\"coveo-placeholder-icon\"></div>\n    </div>\n    <div class=\"coveo-result-cell\" style=\"padding-left:15px;\">\n      <div class=\"coveo-result-row\">\n        <div class=\"coveo-result-cell\">\n          <div class=\"coveo-placeholder-title\" style=\"width: 60%\"></div>\n        </div>\n        <div class=\"coveo-result-cell\" style=\"width:120px; text-align:right;\">\n          <div class=\"coveo-placeholder-text\" style=\"width: 80%\"></div>\n        </div>\n      </div>\n      <div class=\"coveo-result-row\">\n        <div class=\"coveo-result-cell\">\n          <div class=\"coveo-placeholder-text\" style=\"width: 70%\"></div>\n          <div class=\"coveo-placeholder-text\" style=\"width: 90%\"></div>\n          <div class=\"coveo-placeholder-text\" style=\"width: 60%\"></div>\n        </div>\n      </div>\n    </div>\n  </div>\n</div>`;\n\n  public cardResultListPlaceholder = `<div class=\"coveo-card-layout coveo-placeholder-result CoveoResult\">\n  <div class=\"coveo-result-frame\">\n    <div class=\"coveo-result-row\" style=\"margin-bottom: 20px;\">\n      <div class=\"coveo-result-cell\" style=\"width: 32px; vertical-align: middle;\">\n        <div class=\"coveo-placeholder-icon-small\"></div>\n      </div>\n      <div class=\"coveo-result-cell\" style=\"text-align:left; padding-left: 10px; vertical-align: middle;\">\n        <div class=\"coveo-placeholder-title\" style=\"width: 60%\"></div>\n      </div>\n    </div>\n    <div class=\"coveo-result-row\" style=\"margin-bottom: 20px;\">\n      <div class=\"coveo-result-cell\">\n        <div class=\"coveo-placeholder-text\" style=\"width: 70%\"></div>\n        <div class=\"coveo-placeholder-text\" style=\"width: 90%\"></div>\n        <div class=\"coveo-placeholder-text\" style=\"width: 60%\"></div>\n      </div>\n      <div class=\"coveo-result-cell\">\n        <div class=\"coveo-placeholder-text\" style=\"width: 90%\"></div>\n        <div class=\"coveo-placeholder-text\" style=\"width: 70%\"></div>\n        <div class=\"coveo-placeholder-text\" style=\"width: 60%\"></div>\n      </div>\n    </div>\n    <div class=\"coveo-result-row\">\n      <div class=\"coveo-result-cell\">\n        <div class=\"coveo-placeholder-text\" style=\"width: 90%\"></div>\n          <div class=\"coveo-placeholder-text\" style=\"width: 100%\"></div>\n      </div>\n    </div>\n  </div>\n</div>\n`;\n\n  public recommendationResultListPlaceholder = `<div class=\"coveo-result-frame coveo-placeholder-result\">\n  <div class=\"coveo-result-row\">\n    <div class=\"coveo-result-cell\" style=\"width: 32px; vertical-align: middle;\">\n        <div class=\"coveo-placeholder-icon-small\"></div>\n      </div>\n    <div class=\"coveo-result-cell\" style=\"padding-left:10px; vertical-align: middle;\">\n      <div class=\"coveo-result-row\">\n        <div class=\"coveo-result-cell\">\n          <div class=\"coveo-placeholder-title\" style=\"width: 90%\"></div>\n        </div>\n      </div>\n    </div>\n  </div>\n  `;\n\n  public static NUMBER_OF_FACETS = 3;\n  public static NUMBER_OF_RESULTS = 10;\n  public static NUMBER_OF_RESULTS_RECOMMENDATION = 5;\n  public static INITIALIZATION_CLASS = 'coveo-during-initialization';\n  public static AFTER_INITIALIZATION_CLASS = 'coveo-after-initialization';\n\n  private eventToRemovePlaceholder = InitializationEvents.afterComponentsInitialization;\n\n  constructor(public root: HTMLElement) {}\n\n  public withEventToRemovePlaceholder(event: string) {\n    this.eventToRemovePlaceholder = event;\n    return this;\n  }\n\n  public withFullInitializationStyling() {\n    $$(this.root).addClass(InitializationPlaceholder.INITIALIZATION_CLASS);\n    $$(this.root).removeClass(InitializationPlaceholder.AFTER_INITIALIZATION_CLASS);\n    $$(this.root).one(this.eventToRemovePlaceholder, () => {\n      $$(this.root).removeClass(InitializationPlaceholder.INITIALIZATION_CLASS);\n      $$(this.root).addClass(InitializationPlaceholder.AFTER_INITIALIZATION_CLASS);\n    });\n    return this;\n  }\n\n  public withHiddenRootElement() {\n    $$(this.root).addClass('coveo-hidden');\n    return this;\n  }\n\n  public withVisibleRootElement() {\n    $$(this.root).removeClass('coveo-hidden');\n    return this;\n  }\n\n  public withWaitingForFirstQueryMode() {\n    $$(this.root).addClass('coveo-waiting-for-query');\n    $$(this.root).one(QueryEvents.duringQuery, () => {\n      $$(this.root).removeClass('coveo-waiting-for-query');\n    });\n\n    return this;\n  }\n\n  public withAllPlaceholders() {\n    this.withPlaceholderForFacets();\n    this.withPlaceholderForResultList();\n    this.withPlaceholderSearchbox();\n    return this;\n  }\n\n  public withPlaceholderForFacets() {\n    // Render an arbitrary number of placeholder facet.\n    // Facets should become usable on the first deferredQuerySuccess\n\n    const facetElements = ComponentsTypes.getAllFacetElementsFromElement(this.root);\n    if (Utils.isNonEmptyArray(facetElements)) {\n      const placeholders: Dom[] = [];\n      _.each(facetElements, (facetElement: HTMLElement) => $$(facetElement).addClass(InitializationPlaceholder.INITIALIZATION_CLASS));\n      _.each(_.first(facetElements, InitializationPlaceholder.NUMBER_OF_FACETS), (facetElement: HTMLElement) => {\n        $$(facetElement).addClass('coveo-with-placeholder');\n        const placeHolder = $$('div', { className: 'coveo-facet-placeholder' }, this.facetPlaceholder);\n        facetElement.appendChild(placeHolder.el);\n        placeholders.push(placeHolder);\n      });\n\n      $$(this.root).one(this.eventToRemovePlaceholder, () => {\n        const toExecuteAfterInitialization = () => {\n          _.each(placeholders, (placeholder: Dom) => placeholder.remove());\n          _.each(facetElements, (facetElement: HTMLElement) =>\n            $$(facetElement).removeClass(InitializationPlaceholder.INITIALIZATION_CLASS)\n          );\n          _.each(facetElements, (facetElement: HTMLElement) => $$(facetElement).removeClass('coveo-with-placeholder'));\n        };\n        $$(this.root).one(QueryEvents.queryError, () => toExecuteAfterInitialization());\n        $$(this.root).one(QueryEvents.deferredQuerySuccess, () => toExecuteAfterInitialization());\n      });\n    }\n    return this;\n  }\n\n  public withPlaceholderSearchbox() {\n    // Searchbox should be good/usable afterComponentsInitialization\n    // Create a placeholder until we reach that event.\n\n    const searchBoxElements = $$(this.root).findAll('.CoveoSearchbox');\n    if (Utils.isNonEmptyArray(searchBoxElements)) {\n      _.each(searchBoxElements, el => {\n        $$(el).addClass(InitializationPlaceholder.INITIALIZATION_CLASS);\n      });\n      $$(this.root).one(this.eventToRemovePlaceholder, () => {\n        _.each(searchBoxElements, (el: HTMLElement) => $$(el).removeClass(InitializationPlaceholder.INITIALIZATION_CLASS));\n      });\n    }\n\n    return this;\n  }\n\n  public withPlaceholderForResultList() {\n    // Render an arbitrary number of placeholder in the first result list we find\n    // When we get the first newResultDisplayedEvent, the result list should be usable.\n\n    const resultListsElements = $$(this.root).findAll('.CoveoResultList');\n    if (Utils.isNonEmptyArray(resultListsElements)) {\n      _.each(resultListsElements, el => $$(el).addClass(InitializationPlaceholder.INITIALIZATION_CLASS));\n\n      const { placeholderToUse, resultListToUse, rootToUse } = this.determineResultListPlaceholder(resultListsElements);\n      $$(resultListToUse).append(rootToUse);\n      $$(resultListToUse).addClass('coveo-with-placeholder');\n\n      _.times(\n        this.isRecommendationRoot()\n          ? InitializationPlaceholder.NUMBER_OF_RESULTS_RECOMMENDATION\n          : InitializationPlaceholder.NUMBER_OF_RESULTS,\n        () => {\n          rootToUse.innerHTML += placeholderToUse;\n        }\n      );\n      const reset = () => {\n        $$(rootToUse).remove();\n        _.each(resultListsElements, el => $$(el).removeClass(InitializationPlaceholder.INITIALIZATION_CLASS));\n        $$(resultListToUse).removeClass('coveo-with-placeholder');\n      };\n      $$(this.root).one(ResultListEvents.newResultDisplayed, () => reset());\n      $$(this.root).one(QueryEvents.queryError, () => reset());\n      $$(this.root).one(QueryEvents.noResults, () => reset());\n    }\n\n    return this;\n  }\n\n  private determineResultListPlaceholder(resultListElements: HTMLElement[]) {\n    let currentLayout;\n    if (resultListElements.length > 1) {\n      currentLayout = HashUtils.getValue('layout', HashUtils.getHash());\n    } else if (resultListElements.length == 1) {\n      currentLayout = resultListElements[0].getAttribute('data-layout');\n    }\n\n    if (!currentLayout) {\n      currentLayout = 'list';\n    }\n\n    if (resultListElements.length > 1) {\n      let resultListElement = _.find(resultListElements, resultListElement => {\n        return resultListElement.getAttribute('data-layout') == currentLayout;\n      });\n      if (!resultListElement) {\n        // No data-layout default to list\n        resultListElement = _.find(resultListElements, resultListElement => {\n          return resultListElement.getAttribute('data-layout') == null;\n        });\n      }\n      if (!resultListElement) {\n        // Last fallback\n        resultListElement = _.first(resultListElements);\n      }\n      return {\n        placeholderToUse: this.determineResultListFromLayout(currentLayout),\n        resultListToUse: resultListElement,\n        rootToUse: this.determineRootFromLayout(currentLayout)\n      };\n    } else if (resultListElements.length == 1) {\n      return {\n        placeholderToUse: this.determineResultListFromLayout(currentLayout),\n        resultListToUse: resultListElements[0],\n        rootToUse: this.determineRootFromLayout(currentLayout)\n      };\n    } else {\n      return null;\n    }\n  }\n\n  private determineResultListFromLayout(layout: string) {\n    switch (layout) {\n      case 'list':\n        if (this.isRecommendationRoot()) {\n          return this.recommendationResultListPlaceholder;\n        } else {\n          return this.resultListPlaceholder;\n        }\n      case 'card':\n        return this.cardResultListPlaceholder;\n      default:\n        return this.resultListPlaceholder;\n    }\n  }\n\n  private determineRootFromLayout(layout: string): HTMLElement {\n    switch (layout) {\n      case 'list':\n        return $$('div').el;\n      case 'card':\n        return $$('div', { className: 'coveo-result-list-container coveo-card-layout-container' }).el;\n      default:\n        return $$('div').el;\n    }\n  }\n\n  private isRecommendationRoot(): boolean {\n    return $$(this.root).hasClass('CoveoRecommendation');\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Base/InitializationPlaceholder.ts","import { Utils } from './Utils';\nimport { l } from '../strings/Strings';\nimport * as _ from 'underscore';\n\nexport class EmailUtils {\n  static splitSemicolonSeparatedListOfEmailAddresses(addresses: string): string[] {\n    var addressesAsList: string[] = addresses.split(/\\s*;\\s*/);\n    return _.filter(addressesAsList, (s: string) => {\n      return Utils.exists(s) && Utils.isNonEmptyString(Utils.trim(s));\n    });\n  }\n\n  static emailAddressesToHyperlinks(\n    addresses: string[],\n    companyDomain?: string,\n    me?: string,\n    lengthLimit = 2,\n    truncateName = false\n  ): string {\n    addresses = _.filter(addresses, (s: string) => {\n      return Utils.exists(s) && Utils.isNonEmptyString(Utils.trim(s));\n    });\n    var hyperlinks = _.map(addresses, item => {\n      var emailArray = EmailUtils.parseEmail(item);\n      var email = emailArray[1];\n      var name = emailArray[0];\n      if (Utils.exists(me) && email == me) {\n        name = l('Me');\n      }\n      if (truncateName) {\n        var split = name.split(' ');\n        if (!Utils.isNullOrUndefined(split[1])) {\n          name = split[0] + ' ' + split[1].substring(0, 1) + '.';\n        }\n      }\n      var domainIndex = email.indexOf('@') >= 0 ? email.indexOf('@') + 1 : 0;\n      var domain = email.substr(domainIndex);\n      if (Utils.exists(companyDomain) && domain != companyDomain) {\n        name += ' (' + domain + ')';\n      }\n\n      return '<a title=\"' + item.replace(/'/g, '&quot;') + '\" href=\"mailto:' + encodeURI(email) + '\">' + name + '</a>';\n    });\n    var excess = hyperlinks.length - lengthLimit;\n    var andOthers = excess > 0 ? EmailUtils.buildEmailAddressesAndOthers(_.last(hyperlinks, excess)) : '';\n    return _.first(hyperlinks, lengthLimit).join(', ') + andOthers;\n  }\n\n  static buildEmailAddressesAndOthers(excessHyperLinks: string[]) {\n    return (\n      '<span class=\"coveo-emails-excess-collapsed coveo-active\" onclick=\"Coveo.TemplateHelpers.getHelper(\\'excessEmailToggle\\')(this);\"> ' +\n      l('AndOthers', excessHyperLinks.length.toString(), excessHyperLinks.length) +\n      '</span>' +\n      '<span class=\"coveo-emails-excess-expanded\"> , ' +\n      excessHyperLinks.join(' , ') +\n      '</span>'\n    );\n  }\n\n  static parseEmail(email: string): string[] {\n    let name: string;\n    let match = (<string>email).match(/^\\s*(.*)\\s+<(.*)>$/);\n    if (match != null) {\n      name = match[1];\n      if (/^'.*'|'.*'$/.test(name)) {\n        name = name.substr(1, name.length - 2);\n      }\n      email = match[2];\n    } else {\n      name = <string>email;\n      email = <string>email;\n    }\n    return [name, email];\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/EmailUtils.ts","import { IQueryResult } from '../rest/QueryResult';\nimport { SearchEndpoint } from '../rest/SearchEndpoint';\nimport * as _ from 'underscore';\n\n/**\n * Options for building an `<a>` tag.\n */\nexport interface IAnchorUtilsOptions {\n  /**\n   * The tag's text content.\n   */\n  text?: string;\n  /**\n   * The target (`href` attribute).\n   */\n  target?: string;\n  /**\n   * The CSS class(es) of the tag.\n   */\n  class?: string;\n}\n\n/**\n * Options for building an `<img>` tag.\n */\nexport interface IImageUtilsOptions {\n  /**\n   * The alternative text for the image (`alt` attribute).\n   */\n  alt?: string;\n  /**\n   * The height of the image\n   */\n  height?: string;\n  /**\n   * The width of the image\n   */\n  width?: string;\n  /**\n   * The template to use for the image source\n   */\n  srcTemplate?: string;\n}\n\nexport class HTMLUtils {\n  static buildAttributeString(options: any): string {\n    var ret = [];\n    _.each(options, (val: any, key?: string, obj?) => {\n      if (val != undefined) {\n        ret.push(key + '=' + JSON.stringify(val.toString()));\n      }\n    });\n    return ret.join(' ');\n  }\n}\n\nexport class AnchorUtils {\n  static buildAnchor(href: string, options?: IAnchorUtilsOptions) {\n    var text;\n    if (!options || !options.text) {\n      text = href;\n    } else {\n      text = options.text;\n      options.text = undefined;\n    }\n    return `<a href='${href}' ${HTMLUtils.buildAttributeString(options)}>${text}</a>`;\n  }\n}\n\nexport class ImageUtils {\n  static buildImage(src?: string, options?: IImageUtilsOptions) {\n    var ret = '<img ';\n    ret += src ? `src='${src}' ` : '';\n    ret += HTMLUtils.buildAttributeString(options) + '/>';\n    return ret;\n  }\n\n  static selectImageFromResult(result: IQueryResult): HTMLElement {\n    return <HTMLElement>document.querySelector(`img[data-coveo-uri-hash=${result.raw['urihash']}]`);\n  }\n\n  static buildImageWithDirectSrcAttribute(endpoint: SearchEndpoint, result: IQueryResult) {\n    var image = new Image();\n    var dataStreamUri = endpoint.getViewAsDatastreamUri(result.uniqueId, '$Thumbnail$', { contentType: 'image/png' });\n    image.onload = () => {\n      ImageUtils.selectImageFromResult(result).setAttribute('src', dataStreamUri);\n    };\n    image.src = dataStreamUri;\n  }\n\n  static buildImageWithBase64SrcAttribute(endpoint: SearchEndpoint, result: IQueryResult) {\n    endpoint\n      .getRawDataStream(result.uniqueId, '$Thumbnail$')\n      .then(response => {\n        var rawBinary = String.fromCharCode.apply(null, new Uint8Array(response));\n        ImageUtils.selectImageFromResult(result).setAttribute('src', 'data:image/png;base64, ' + btoa(rawBinary));\n      })\n      .catch(() => {\n        ImageUtils.selectImageFromResult(result).remove();\n      });\n  }\n\n  static buildImageFromResult(result: IQueryResult, endpoint: SearchEndpoint, options?: IImageUtilsOptions) {\n    options = options ? options : <IImageUtilsOptions>{};\n\n    let img = ImageUtils.buildImage(undefined, _.extend(options, { 'data-coveo-uri-hash': result.raw['urihash'] }));\n    if (endpoint.isJsonp()) {\n      // For jsonp we can't GET/POST for binary data. We are limited to only setting the src attribute directly on the img.\n      ImageUtils.buildImageWithDirectSrcAttribute(endpoint, result);\n    } else {\n      // Base 64 img allows us to GET/POST the image as raw binary, so that we can also pass the credential of the user\n      // Useful for phonegap.\n      ImageUtils.buildImageWithBase64SrcAttribute(endpoint, result);\n    }\n    return img;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/HtmlUtils.ts","import { ModalBox as ModalBoxModule } from '../ExternalModulesShim';\nimport { FocusTrap } from '../ui/FocusTrap/FocusTrap';\nimport { l } from '../strings/Strings';\nimport { $$ } from './Dom';\nimport { KeyboardUtils, KEYBOARD } from './KeyboardUtils';\nimport { IQuickViewHeaderOptions } from './DomUtils';\nimport { IQueryResult } from '../rest/QueryResult';\nimport { IComponentBindings } from '../ui/Base/ComponentBindings';\nimport { DomUtils } from '../Core';\n\nexport interface IAccessibleModalOptions {\n  overlayClose?: boolean;\n  sizeMod: 'small' | 'normal' | 'big';\n  focusOnOpen?(): HTMLElement;\n}\n\nexport interface IAccessibleModalOpenParameters {\n  content: HTMLElement;\n  validation: () => boolean;\n  origin: HTMLElement;\n}\n\nexport interface IAccessibleModalOpenResultParameters extends IAccessibleModalOpenParameters {\n  result: IQueryResult;\n  options: IQuickViewHeaderOptions;\n  bindings: IComponentBindings;\n}\n\nexport interface IAccessibleModalOpenNormalParameters extends IAccessibleModalOpenParameters {\n  title: HTMLElement;\n}\n\nexport class AccessibleModal {\n  private focusTrap: FocusTrap;\n  private activeModal: Coveo.ModalBox.ModalBox;\n  private options: IAccessibleModalOptions;\n  private initiallyFocusedElement: HTMLElement;\n\n  public get isOpen() {\n    return !!this.focusTrap;\n  }\n\n  public get element() {\n    return this.activeModal && this.activeModal.modalBox;\n  }\n\n  public get content() {\n    return this.activeModal && this.activeModal.content;\n  }\n\n  public get wrapper() {\n    return this.activeModal && this.activeModal.wrapper;\n  }\n\n  private get headerElement() {\n    return this.element && this.element.querySelector<HTMLElement>('.coveo-modal-header h1');\n  }\n\n  constructor(\n    private className: string,\n    private ownerElement: HTMLElement,\n    private modalboxModule: Coveo.ModalBox.ModalBox = ModalBoxModule,\n    options: Partial<IAccessibleModalOptions> = {}\n  ) {\n    this.options = {\n      ...{\n        sizeMod: 'big'\n      },\n      ...options\n    };\n  }\n\n  public openResult(parameters: IAccessibleModalOpenResultParameters) {\n    if (this.isOpen) {\n      return;\n    }\n    this.openModalAndTrap({\n      content: parameters.content,\n      validation: parameters.validation,\n      origin: parameters.origin,\n      title: DomUtils.getQuickviewHeader(parameters.result, parameters.options, parameters.bindings).el\n    });\n    this.makeAccessible(parameters.options.title || parameters.result.title);\n  }\n\n  public open(parameters: IAccessibleModalOpenNormalParameters) {\n    if (this.isOpen) {\n      return;\n    }\n    this.openModalAndTrap(parameters);\n    this.makeAccessible();\n  }\n\n  private openModalAndTrap(parameters: IAccessibleModalOpenNormalParameters) {\n    this.initiallyFocusedElement = parameters.origin || (document.activeElement as HTMLElement);\n    this.activeModal = this.modalboxModule.open(parameters.content, {\n      title: parameters.title,\n      className: this.className,\n      validation: () => {\n        this.onModalClose();\n        return parameters.validation();\n      },\n      body: this.ownerElement,\n      sizeMod: this.options.sizeMod,\n      overlayClose: this.options.overlayClose\n    });\n    this.focusTrap = new FocusTrap(this.element);\n  }\n\n  public close() {\n    if (!this.isOpen) {\n      return;\n    }\n    this.activeModal.close();\n    this.activeModal = null;\n  }\n\n  private makeAccessible(title?: string) {\n    this.element.setAttribute('aria-modal', 'true');\n    if (title) {\n      this.headerElement.setAttribute('aria-label', title);\n    }\n    this.makeCloseButtonAccessible();\n    this.updateFocus();\n  }\n\n  private get closeButton(): HTMLElement {\n    return this.element.querySelector('.coveo-small-close');\n  }\n\n  private makeCloseButtonAccessible() {\n    const closeButton = this.closeButton;\n    closeButton.setAttribute('aria-label', l('Close'));\n    closeButton.setAttribute('role', 'button');\n    closeButton.tabIndex = 0;\n    $$(closeButton).on(\n      'keyup',\n      KeyboardUtils.keypressAction(KEYBOARD.ENTER, () => closeButton.click())\n    );\n  }\n\n  private updateFocus() {\n    const focusOnElement: HTMLElement = (this.options.focusOnOpen && this.options.focusOnOpen()) || this.closeButton;\n    focusOnElement.focus();\n  }\n\n  private onModalClose() {\n    this.focusTrap.disable();\n    this.focusTrap = null;\n    if (this.initiallyFocusedElement && document.body.contains(this.initiallyFocusedElement)) {\n      this.initiallyFocusedElement.focus();\n    }\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/AccessibleModal.ts","export enum OS_NAME {\n  WINDOWS,\n  MACOSX,\n  UNIX,\n  LINUX,\n  UNKNOWN\n}\n\nexport class OSUtils {\n  static get(nav = navigator) {\n    var osName;\n    if (nav.appVersion.indexOf('Win') != -1) {\n      osName = OS_NAME.WINDOWS;\n    } else if (nav.appVersion.indexOf('Mac') != -1) {\n      osName = OS_NAME.MACOSX;\n    } else if (nav.appVersion.indexOf('X11') != -1) {\n      osName = OS_NAME.UNIX;\n    } else if (nav.appVersion.indexOf('Linux') != -1) {\n      osName = OS_NAME.LINUX;\n    } else {\n      osName = OS_NAME.UNKNOWN;\n    }\n    return osName;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/OSUtils.ts","import { FacetType, IFacetRequest } from '../rest/Facet/FacetRequest';\nimport { FacetSortCriteria } from '../rest/Facet/FacetSortCriteria';\nimport { Utils } from '../utils/Utils';\n\nexport interface IBasicFacetRequestParameters {\n  facetId: string;\n  field: string;\n  type: FacetType;\n  injectionDepth: number;\n  sortCriteria?: FacetSortCriteria;\n  delimitingCharacter?: string;\n  filterFacetCount?: boolean;\n}\n\nexport class DynamicFacetRequestBuilder {\n  constructor(private request: IFacetRequest) {}\n\n  public buildBaseRequestForQuery(): IFacetRequest {\n    return {\n      ...this.request,\n      filterFacetCount: determineFilterFacetCount(this.request)\n    };\n  }\n}\n\nexport function determineFilterFacetCount(options: { filterFacetCount?: boolean }) {\n  const { filterFacetCount } = options;\n  return Utils.isUndefined(filterFacetCount) ? true : filterFacetCount;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/controllers/DynamicFacetRequestBuilder.ts","import 'styling/DynamicFacet/_DynamicFacetHeader';\nimport { $$, Dom } from '../../../utils/Dom';\nimport { l } from '../../../strings/Strings';\nimport { SVGIcons } from '../../../utils/SVGIcons';\nimport { SVGDom } from '../../../utils/SVGDom';\nimport { DynamicFacetHeaderButton } from './DynamicFacetHeaderButton';\nimport { DynamicFacetHeaderCollapseToggle } from './DynamicFacetHeaderCollapseToggle';\nimport { getHeadingTag } from '../../../utils/AccessibilityUtils';\n\nexport interface IDynamicFacetHeaderOptions {\n  id: string;\n  title: string;\n  enableCollapse: boolean;\n  headingLevel: number;\n  toggleCollapse: () => void;\n  collapse: () => void;\n  expand: () => void;\n  clear: () => void;\n}\n\nexport function getDynamicFacetHeaderId(facetId: string) {\n  return `${facetId}-facet-heading`;\n}\n\nexport class DynamicFacetHeader {\n  public static showLoadingDelay = 2000;\n  public element: HTMLElement;\n  private title: Dom;\n  private waitAnimation: Dom;\n  private clearButton: DynamicFacetHeaderButton;\n  private collapseToggle: DynamicFacetHeaderCollapseToggle;\n  private showLoadingTimeout: number;\n\n  constructor(public options: IDynamicFacetHeaderOptions) {\n    this.element = $$('div', { className: 'coveo-dynamic-facet-header' }).el;\n    this.title = this.createTitle();\n    $$(this.element).append(this.title.el);\n    $$(this.element).append(this.createWaitAnimation());\n    $$(this.element).append(this.createClearButton());\n    this.options.enableCollapse && this.enableCollapse();\n  }\n\n  private createClearButton() {\n    this.clearButton = new DynamicFacetHeaderButton({\n      label: l('Clear'),\n      ariaLabel: l('Clear', this.options.title),\n      className: 'coveo-dynamic-facet-header-clear',\n      shouldDisplay: false,\n      action: () => this.options.clear()\n    });\n\n    return this.clearButton.element;\n  }\n\n  private createCollapseToggle() {\n    this.collapseToggle = new DynamicFacetHeaderCollapseToggle(this.options);\n    return this.collapseToggle.element;\n  }\n\n  private enableCollapse() {\n    $$(this.element).append(this.createCollapseToggle());\n    $$(this.title).addClass('coveo-clickable');\n    $$(this.title).on('click', () => this.options.toggleCollapse());\n  }\n\n  public toggleCollapse(isCollapsed: boolean) {\n    this.options.enableCollapse && this.collapseToggle.toggleButton(isCollapsed);\n  }\n\n  private createTitle() {\n    return $$(\n      getHeadingTag(this.options.headingLevel),\n      {\n        className: 'coveo-dynamic-facet-header-title',\n        ariaLabel: `${l('FacetTitle', this.options.title)}`,\n        id: getDynamicFacetHeaderId(this.options.id)\n      },\n      $$('span', { ariaHidden: true, title: this.options.title }, this.options.title)\n    );\n  }\n\n  private createWaitAnimation() {\n    this.waitAnimation = $$('div', { className: 'coveo-dynamic-facet-header-wait-animation' }, SVGIcons.icons.loading);\n    SVGDom.addClassToSVGInContainer(this.waitAnimation.el, 'coveo-dynamic-facet-header-wait-animation-svg');\n    this.waitAnimation.toggle(false);\n\n    return this.waitAnimation.el;\n  }\n\n  public toggleClear(visible: boolean) {\n    this.clearButton.toggle(visible);\n  }\n\n  public showLoading() {\n    clearTimeout(this.showLoadingTimeout);\n    this.showLoadingTimeout = window.setTimeout(() => this.waitAnimation.toggle(true), DynamicFacetHeader.showLoadingDelay);\n  }\n\n  public hideLoading() {\n    clearTimeout(this.showLoadingTimeout);\n    this.waitAnimation.toggle(false);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/DynamicFacet/DynamicFacetHeader/DynamicFacetHeader.ts","import { FacetValueState } from './FacetValueState';\nimport { FacetSortCriteria } from './FacetSortCriteria';\nimport { IRangeValue } from '../RangeValue';\nimport { FacetRangeSortOrder } from './FacetRangeSortOrder';\n\n/**\n * The allowed values for the [`facetType`]{@link IFacetRequest.facetType} property of a [facet request]{@link IFacetRequest}.\n */\nexport enum FacetType {\n  /**\n   * Request facet values representing specific values.\n   */\n  specific = 'specific',\n  /**\n   * Request facet values representing ranges of numbers.\n   */\n  numericalRange = 'numericalRange',\n  /**\n   * Request facet values representing ranges of dates.\n   */\n  dateRange = 'dateRange',\n  /**\n   * Request facet values representing a hierarchy.\n   */\n  hierarchical = 'hierarchical'\n}\n\n/**\n * A [`currentValues`]{@link IFacetRequest.currentValues} item in a Search API\n * [facet request]{@link IFacetRequest}.\n */\nexport interface IFacetRequestValue extends IRangeValue {\n  /**\n   * The current facet value state in the search interface.\n   *\n   * **Default (Search API):** `idle`\n   */\n  state: FacetValueState;\n  /**\n   * **Required (Search API).** The facet value name.\n   */\n  value?: string;\n  /**\n   * Whether to prevent Coveo ML from automatically selecting the facet value.\n   *\n   * **Default:** `false`\n   */\n  preventAutoSelect?: boolean;\n  /**\n   * Whether to retrieve the children of this category facet value. Can only be used on leaf values in the request (i.e., values with no current children).\n   *\n   * **Default:** `false`\n   */\n  retrieveChildren?: boolean;\n  /**\n   * If [retrieveChildren]{@link IFacetRequestValue.retrieveChildren} is true, the maximum number of children to retrieve for this leaf value.\n   *\n   * **Default (Search API):** `0`\n   */\n  retrieveCount?: number;\n  /**\n   * The children of this category facet value.\n   * Each child is a full-fledged category facet value that may in turn have its own children and so forth,\n   * up to a maximum depth of 50 levels\n   */\n  children?: IFacetRequestValue[];\n}\n\n/**\n * A Search API facet request.\n */\nexport interface IFacetRequest {\n  /**\n   * The unique identifier of the facet in the search interface.\n   *\n   * **Note:** Must match `^[A-Za-z0-9-_]{1,60}$`.\n   *\n   * **Example:** `author-1`\n   */\n  facetId: string;\n\n  /**\n   * **Required (Search API).** The name of the field on which to base the\n   * facet request.\n   *\n   * **Note:** Must reference an index field whose **Facet** option is enabled.\n   *\n   * **Example:** `author`\n   */\n  field: string;\n\n  /**\n   * The kind of values to request for the facet.\n   *\n   * **Default (Search API):** [`Specific`]{@link FacetType.Specific}\n   */\n  type?: FacetType;\n\n  /**\n   * The sort criterion to apply to the returned facet values.\n   *\n   * **Default behaviour when [`type`]{@link IFacetRequest.type} is set to [`specific`]{@link FaceType.Specific}\n   * or [`hierarchical`]{@link FaceType.Hierarchical} (Search API):**\n   * - When [`isFieldExpanded`]{@link IFacetRequest.isFieldExpanded} is `false`\n   * in the facet request, and\n   * [`moreValuesAvailable`]{@link IFacetResponse.moreValuesAvailable} is\n   * `true` in the corresponding [facet response]{@link IFacetResponse}, use\n   * `score`.\n   * - Otherwise, use `alphanumeric`.\n   *\n   * **Default (Search API) when [`type`]{@link IFacetRequest.type} is set to [`dateRange`]{@link FaceType.dateRange}\n   * or [`numericalRange`]{@link FacetType.numericalRange} (Search API)::** `ascending`\n   * Other possible value: `descending`\n   */\n  sortCriteria?: FacetSortCriteria | FacetRangeSortOrder;\n\n  /**\n   * The maximum number of facet values to fetch.\n   *\n   * **Note:** If\n   * [`freezeCurrentValues`]{@link IFacetRequest.freezeCurrentValues} is\n   * `true`, `numberOfValues` must be equal to the\n   * [`currentValues`]{@link IFacetRequest.currentValues} array length.\n   *\n   * **Default (Search API):** `8`\n   */\n  numberOfValues?: number;\n\n  /**\n   * The maximum number of items to scan for facet values.\n   *\n   * **Note:** A high `injectionDepth` may negatively impact the facet request\n   * performance.\n   *\n   * **Default (Search API):** `1000`\n   */\n  injectionDepth?: number;\n\n  /**\n   * Whether to include the facet request's\n   * [`currentValues`]{@link IFacetRequest.currentValues} in the corresponding\n   * [facet response]{@link IFacetResponse}'s\n   * [`values`]{@link IFacetResponse.values} array.\n   *\n   * **Note:** Setting this to `true` is useful to ensure that the facet does\n   * not move around while the end-user is interacting with it in the search\n   * interface.\n   *\n   * **Default (Search API):** `false`\n   */\n  freezeCurrentValues?: boolean;\n\n  /**\n   * The values displayed by the facet in the search interface at the moment of\n   * the request.\n   *\n   * See [IFacetRequestValue]{@link IFacetRequestValue}.\n   *\n   * **Default (Search API):** `[]`\n   */\n  currentValues?: IFacetRequestValue[];\n\n  /**\n   * Whether the facet is expanded in the search interface at the moment of the\n   * request.\n   *\n   * **Default (Search API):** `false`\n   */\n  isFieldExpanded?: boolean;\n\n  /**\n   * Whether to automatically generate range values for the facet.\n   *\n   * **Notes:**\n   * - Setting this to `true` is only effective when [`type`]{@link IFacetRequest.type} is set to [`dateRange`]{@link FaceType.dateRange}\n   * or [`numericalRange`]{@link FacetType.numericalRange}, and the referenced [`field`]{@link IFacetRequest.field} is of a corresponding type (i.e., date or numeric).\n   * - Automatic range generation will fail if the referenced `field` is dynamically generated by a query function.\n   * - Enabling the **Use cache for numeric queries** option on the referenced `field` will speed up automatic range generation (see [Add or Edit Fields](https://docs.coveo.com/en/1982/)).\n   *\n   * **Default (Search API):** `false`\n   */\n  generateAutomaticRanges?: boolean;\n\n  /**\n   * The character to use to split field values into a hierarchical sequence.\n   *\n   * **Example:**\n   * For a multi-value field containing the following values: `c; c&gt;folder2; c&gt;folder2&gt;folder3;`\n   * The delimiting character is `&gt;`.\n   *\n   * **Default (Search API):** `;`\n   */\n  delimitingCharacter?: string;\n\n  /**\n   * Whether to exclude folded result parents when estimating result counts for facet values.\n   *\n   * **Default (Search API):** `true`\n   */\n  filterFacetCount?: boolean;\n\n  /**\n   * The base path shared by all values for a given hierarchical facet.\n   *\n   * **Default (Search API):** `[]`\n   */\n  basePath?: string[];\n\n  /**\n   * Whether to use the [`basePath`]{@link FacetRequest.basePath} as a filter for the results.\n   *\n   * **Note:** This parameter is ignored unless the facet [`type`]{@link FacetRequest.type} is `hierarchical`.\n   *\n   * **Default (Search API):** `true`\n   */\n  filterByBasePath?: boolean;\n\n  /**\n   * Whether to prevent Coveo ML from automatically selecting values from that facet.\n   *\n   * **Default:** `false`\n   */\n  preventAutoSelect?: boolean;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/rest/Facet/FacetRequest.ts","import * as _ from 'underscore';\nimport { ExpressionBuilder } from './ExpressionBuilder';\nimport { Utils } from '../../utils/Utils';\n\n/**\n * Describe the expressions part of a QueryBuilder.\n */\nexport interface IQueryBuilderExpression {\n  /**\n   * The whole expression\n   */\n  full?: string;\n  /**\n   * The full part, but without the constant.\n   */\n  withoutConstant?: string;\n  /**\n   * The constant part of the expression\n   */\n  constant?: string;\n  /**\n   * The basic part of the expression\n   */\n  basic?: string;\n  /**\n   * The advanced part of the expression\n   */\n  advanced?: string;\n  /**\n   * The disjunction part of the expression\n   */\n  disjunction?: string;\n}\n\nexport class QueryBuilderExpression implements QueryBuilderExpression {\n  public static isEmpty(queryBuilderExpression: QueryBuilderExpression) {\n    const allNonEmptyValues = _.chain(queryBuilderExpression)\n      .values()\n      .compact()\n      .value();\n\n    return _.isEmpty(allNonEmptyValues);\n  }\n\n  public constructor(\n    private basicExpression: string,\n    private advancedExpression: string,\n    private constantExpression: string,\n    private disjunctionExpression: string\n  ) {}\n\n  public reset() {\n    this.basicExpression = '';\n    this.advancedExpression = '';\n    this.constantExpression = '';\n    this.disjunctionExpression = '';\n  }\n\n  public get withoutConstant(): string {\n    return this.expressionBuilders.withoutConstantExpression.build();\n  }\n\n  public get full(): string {\n    return ExpressionBuilder.mergeUsingOr(this.expressionBuilders.fullExpression, this.expressionBuilders.disjunctionExpression).build();\n  }\n\n  public get basic(): string {\n    return this.expressionBuilders.basicExpression.build();\n  }\n\n  public set basic(value: string) {\n    this.basicExpression = value;\n  }\n\n  public get advanced(): string {\n    return this.expressionBuilders.advancedExpression.build();\n  }\n\n  public set advanced(value: string) {\n    this.advancedExpression = value;\n  }\n\n  public get constant(): string {\n    return this.expressionBuilders.constantExpression.build();\n  }\n\n  public set constant(value: string) {\n    this.constantExpression = value;\n  }\n\n  public get expressionBuilders() {\n    const addIfNotEmpty = (expression: ExpressionBuilder, value: string) => {\n      if (Utils.isNonEmptyString(value)) {\n        expression.add(value);\n      }\n    };\n\n    const basicExpression = new ExpressionBuilder();\n    addIfNotEmpty(basicExpression, this.basicExpression);\n\n    const advancedExpression = new ExpressionBuilder();\n    addIfNotEmpty(advancedExpression, this.advancedExpression);\n\n    const constantExpression = new ExpressionBuilder();\n    addIfNotEmpty(constantExpression, this.constantExpression);\n\n    const disjunctionExpression = new ExpressionBuilder();\n    addIfNotEmpty(disjunctionExpression, this.disjunctionExpression);\n\n    const withoutConstantExpression = ExpressionBuilder.merge(basicExpression, advancedExpression);\n\n    const fullExpression = ExpressionBuilder.merge(basicExpression, advancedExpression, constantExpression);\n\n    return {\n      basicExpression,\n      advancedExpression,\n      constantExpression,\n      disjunctionExpression,\n      withoutConstantExpression,\n      fullExpression\n    };\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Base/QueryBuilderExpression.ts","import { IAdvancedSearchInput } from '../AdvancedSearchInput';\nimport { TextInput } from '../../FormWidgets/TextInput';\nimport { QueryBuilder } from '../../Base/QueryBuilder';\nimport { AdvancedSearchEvents } from '../../../events/AdvancedSearchEvents';\nimport { $$ } from '../../../utils/Dom';\n\nexport class KeywordsInput implements IAdvancedSearchInput {\n  protected input: TextInput;\n\n  constructor(public inputName: string, public root: HTMLElement) {}\n\n  public reset() {\n    this.clear();\n  }\n\n  public build(): HTMLElement {\n    this.input = new TextInput(this.onChange.bind(this), this.inputName);\n    return this.input.getElement();\n  }\n\n  public setValue(value: string) {\n    this.input.setValue(value);\n  }\n\n  public getValue(): string {\n    return this.input.getValue();\n  }\n\n  public clear() {\n    this.input.setValue('');\n  }\n\n  public updateQuery(queryBuilder: QueryBuilder) {\n    let value = this.getValue();\n    if (value) {\n      queryBuilder.advancedExpression.add(value);\n    }\n  }\n\n  protected onChange() {\n    if (this.root) {\n      $$(this.root).trigger(AdvancedSearchEvents.executeAdvancedSearch);\n    } else if (this.input) {\n      $$(this.input.getElement()).trigger(AdvancedSearchEvents.executeAdvancedSearch);\n    }\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/AdvancedSearch/KeywordsInput/KeywordsInput.ts","export var prefix = \"$\";\n\nfunction Map() {}\n\nMap.prototype = map.prototype = {\n  constructor: Map,\n  has: function(key) {\n    return (prefix + key) in this;\n  },\n  get: function(key) {\n    return this[prefix + key];\n  },\n  set: function(key, value) {\n    this[prefix + key] = value;\n    return this;\n  },\n  remove: function(key) {\n    var property = prefix + key;\n    return property in this && delete this[property];\n  },\n  clear: function() {\n    for (var property in this) if (property[0] === prefix) delete this[property];\n  },\n  keys: function() {\n    var keys = [];\n    for (var property in this) if (property[0] === prefix) keys.push(property.slice(1));\n    return keys;\n  },\n  values: function() {\n    var values = [];\n    for (var property in this) if (property[0] === prefix) values.push(this[property]);\n    return values;\n  },\n  entries: function() {\n    var entries = [];\n    for (var property in this) if (property[0] === prefix) entries.push({key: property.slice(1), value: this[property]});\n    return entries;\n  },\n  size: function() {\n    var size = 0;\n    for (var property in this) if (property[0] === prefix) ++size;\n    return size;\n  },\n  empty: function() {\n    for (var property in this) if (property[0] === prefix) return false;\n    return true;\n  },\n  each: function(f) {\n    for (var property in this) if (property[0] === prefix) f(this[property], property.slice(1), this);\n  }\n};\n\nfunction map(object, f) {\n  var map = new Map;\n\n  // Copy constructor.\n  if (object instanceof Map) object.each(function(value, key) { map.set(key, value); });\n\n  // Index array by numeric index or specified key function.\n  else if (Array.isArray(object)) {\n    var i = -1,\n        n = object.length,\n        o;\n\n    if (f == null) while (++i < n) map.set(i, object[i]);\n    else while (++i < n) map.set(f(o = object[i], i, object), o);\n  }\n\n  // Convert object to map.\n  else if (object) for (var key in object) map.set(key, object[key]);\n\n  return map;\n}\n\nexport default map;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-collection/src/map.js\n// module id = null\n// module chunks = ","import map from \"./map\";\n\nexport default function() {\n  var keys = [],\n      sortKeys = [],\n      sortValues,\n      rollup,\n      nest;\n\n  function apply(array, depth, createResult, setResult) {\n    if (depth >= keys.length) {\n      if (sortValues != null) array.sort(sortValues);\n      return rollup != null ? rollup(array) : array;\n    }\n\n    var i = -1,\n        n = array.length,\n        key = keys[depth++],\n        keyValue,\n        value,\n        valuesByKey = map(),\n        values,\n        result = createResult();\n\n    while (++i < n) {\n      if (values = valuesByKey.get(keyValue = key(value = array[i]) + \"\")) {\n        values.push(value);\n      } else {\n        valuesByKey.set(keyValue, [value]);\n      }\n    }\n\n    valuesByKey.each(function(values, key) {\n      setResult(result, key, apply(values, depth, createResult, setResult));\n    });\n\n    return result;\n  }\n\n  function entries(map, depth) {\n    if (++depth > keys.length) return map;\n    var array, sortKey = sortKeys[depth - 1];\n    if (rollup != null && depth >= keys.length) array = map.entries();\n    else array = [], map.each(function(v, k) { array.push({key: k, values: entries(v, depth)}); });\n    return sortKey != null ? array.sort(function(a, b) { return sortKey(a.key, b.key); }) : array;\n  }\n\n  return nest = {\n    object: function(array) { return apply(array, 0, createObject, setObject); },\n    map: function(array) { return apply(array, 0, createMap, setMap); },\n    entries: function(array) { return entries(apply(array, 0, createMap, setMap), 0); },\n    key: function(d) { keys.push(d); return nest; },\n    sortKeys: function(order) { sortKeys[keys.length - 1] = order; return nest; },\n    sortValues: function(order) { sortValues = order; return nest; },\n    rollup: function(f) { rollup = f; return nest; }\n  };\n}\n\nfunction createObject() {\n  return {};\n}\n\nfunction setObject(object, key, value) {\n  object[key] = value;\n}\n\nfunction createMap() {\n  return map();\n}\n\nfunction setMap(map, key, value) {\n  map.set(key, value);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-collection/src/nest.js\n// module id = null\n// module chunks = ","import {default as map, prefix} from \"./map\";\n\nfunction Set() {}\n\nvar proto = map.prototype;\n\nSet.prototype = set.prototype = {\n  constructor: Set,\n  has: proto.has,\n  add: function(value) {\n    value += \"\";\n    this[prefix + value] = value;\n    return this;\n  },\n  remove: proto.remove,\n  clear: proto.clear,\n  values: proto.keys,\n  size: proto.size,\n  empty: proto.empty,\n  each: proto.each\n};\n\nfunction set(object, f) {\n  var set = new Set;\n\n  // Copy constructor.\n  if (object instanceof Set) object.each(function(value) { set.add(value); });\n\n  // Otherwise, assume it’s an array.\n  else if (object) {\n    var i = -1, n = object.length;\n    if (f == null) while (++i < n) set.add(object[i]);\n    else while (++i < n) set.add(f(object[i], i, object));\n  }\n\n  return set;\n}\n\nexport default set;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-collection/src/set.js\n// module id = null\n// module chunks = ","export default function(map) {\n  var keys = [];\n  for (var key in map) keys.push(key);\n  return keys;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-collection/src/keys.js\n// module id = null\n// module chunks = ","export default function(map) {\n  var values = [];\n  for (var key in map) values.push(map[key]);\n  return values;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-collection/src/values.js\n// module id = null\n// module chunks = ","export default function(map) {\n  var entries = [];\n  for (var key in map) entries.push({key: key, value: map[key]});\n  return entries;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-collection/src/entries.js\n// module id = null\n// module chunks = ","export {default as nest} from \"./nest\";\nexport {default as set} from \"./set\";\nexport {default as map} from \"./map\";\nexport {default as keys} from \"./keys\";\nexport {default as values} from \"./values\";\nexport {default as entries} from \"./entries\";\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-collection/src/index.js\n// module id = null\n// module chunks = ","var t0 = new Date,\n    t1 = new Date;\n\nexport default function newInterval(floori, offseti, count, field) {\n\n  function interval(date) {\n    return floori(date = arguments.length === 0 ? new Date : new Date(+date)), date;\n  }\n\n  interval.floor = function(date) {\n    return floori(date = new Date(+date)), date;\n  };\n\n  interval.ceil = function(date) {\n    return floori(date = new Date(date - 1)), offseti(date, 1), floori(date), date;\n  };\n\n  interval.round = function(date) {\n    var d0 = interval(date),\n        d1 = interval.ceil(date);\n    return date - d0 < d1 - date ? d0 : d1;\n  };\n\n  interval.offset = function(date, step) {\n    return offseti(date = new Date(+date), step == null ? 1 : Math.floor(step)), date;\n  };\n\n  interval.range = function(start, stop, step) {\n    var range = [], previous;\n    start = interval.ceil(start);\n    step = step == null ? 1 : Math.floor(step);\n    if (!(start < stop) || !(step > 0)) return range; // also handles Invalid Date\n    do range.push(previous = new Date(+start)), offseti(start, step), floori(start);\n    while (previous < start && start < stop);\n    return range;\n  };\n\n  interval.filter = function(test) {\n    return newInterval(function(date) {\n      if (date >= date) while (floori(date), !test(date)) date.setTime(date - 1);\n    }, function(date, step) {\n      if (date >= date) {\n        if (step < 0) while (++step <= 0) {\n          while (offseti(date, -1), !test(date)) {} // eslint-disable-line no-empty\n        } else while (--step >= 0) {\n          while (offseti(date, +1), !test(date)) {} // eslint-disable-line no-empty\n        }\n      }\n    });\n  };\n\n  if (count) {\n    interval.count = function(start, end) {\n      t0.setTime(+start), t1.setTime(+end);\n      floori(t0), floori(t1);\n      return Math.floor(count(t0, t1));\n    };\n\n    interval.every = function(step) {\n      step = Math.floor(step);\n      return !isFinite(step) || !(step > 0) ? null\n          : !(step > 1) ? interval\n          : interval.filter(field\n              ? function(d) { return field(d) % step === 0; }\n              : function(d) { return interval.count(0, d) % step === 0; });\n    };\n  }\n\n  return interval;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-time/src/interval.js\n// module id = null\n// module chunks = ","import interval from \"./interval.js\";\n\nvar millisecond = interval(function() {\n  // noop\n}, function(date, step) {\n  date.setTime(+date + step);\n}, function(start, end) {\n  return end - start;\n});\n\n// An optimized implementation for this simple case.\nmillisecond.every = function(k) {\n  k = Math.floor(k);\n  if (!isFinite(k) || !(k > 0)) return null;\n  if (!(k > 1)) return millisecond;\n  return interval(function(date) {\n    date.setTime(Math.floor(date / k) * k);\n  }, function(date, step) {\n    date.setTime(+date + step * k);\n  }, function(start, end) {\n    return (end - start) / k;\n  });\n};\n\nexport default millisecond;\nexport var milliseconds = millisecond.range;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-time/src/millisecond.js\n// module id = null\n// module chunks = ","export var durationSecond = 1e3;\nexport var durationMinute = 6e4;\nexport var durationHour = 36e5;\nexport var durationDay = 864e5;\nexport var durationWeek = 6048e5;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-time/src/duration.js\n// module id = null\n// module chunks = ","import interval from \"./interval.js\";\nimport {durationSecond} from \"./duration.js\";\n\nvar second = interval(function(date) {\n  date.setTime(date - date.getMilliseconds());\n}, function(date, step) {\n  date.setTime(+date + step * durationSecond);\n}, function(start, end) {\n  return (end - start) / durationSecond;\n}, function(date) {\n  return date.getUTCSeconds();\n});\n\nexport default second;\nexport var seconds = second.range;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-time/src/second.js\n// module id = null\n// module chunks = ","import interval from \"./interval.js\";\nimport {durationMinute, durationSecond} from \"./duration.js\";\n\nvar minute = interval(function(date) {\n  date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond);\n}, function(date, step) {\n  date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n  return (end - start) / durationMinute;\n}, function(date) {\n  return date.getMinutes();\n});\n\nexport default minute;\nexport var minutes = minute.range;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-time/src/minute.js\n// module id = null\n// module chunks = ","import interval from \"./interval.js\";\nimport {durationHour, durationMinute, durationSecond} from \"./duration.js\";\n\nvar hour = interval(function(date) {\n  date.setTime(date - date.getMilliseconds() - date.getSeconds() * durationSecond - date.getMinutes() * durationMinute);\n}, function(date, step) {\n  date.setTime(+date + step * durationHour);\n}, function(start, end) {\n  return (end - start) / durationHour;\n}, function(date) {\n  return date.getHours();\n});\n\nexport default hour;\nexport var hours = hour.range;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-time/src/hour.js\n// module id = null\n// module chunks = ","import interval from \"./interval.js\";\nimport {durationDay, durationMinute} from \"./duration.js\";\n\nvar day = interval(function(date) {\n  date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setDate(date.getDate() + step);\n}, function(start, end) {\n  return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationDay;\n}, function(date) {\n  return date.getDate() - 1;\n});\n\nexport default day;\nexport var days = day.range;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-time/src/day.js\n// module id = null\n// module chunks = ","import interval from \"./interval.js\";\nimport {durationMinute, durationWeek} from \"./duration.js\";\n\nfunction weekday(i) {\n  return interval(function(date) {\n    date.setDate(date.getDate() - (date.getDay() + 7 - i) % 7);\n    date.setHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setDate(date.getDate() + step * 7);\n  }, function(start, end) {\n    return (end - start - (end.getTimezoneOffset() - start.getTimezoneOffset()) * durationMinute) / durationWeek;\n  });\n}\n\nexport var sunday = weekday(0);\nexport var monday = weekday(1);\nexport var tuesday = weekday(2);\nexport var wednesday = weekday(3);\nexport var thursday = weekday(4);\nexport var friday = weekday(5);\nexport var saturday = weekday(6);\n\nexport var sundays = sunday.range;\nexport var mondays = monday.range;\nexport var tuesdays = tuesday.range;\nexport var wednesdays = wednesday.range;\nexport var thursdays = thursday.range;\nexport var fridays = friday.range;\nexport var saturdays = saturday.range;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-time/src/week.js\n// module id = null\n// module chunks = ","import interval from \"./interval.js\";\n\nvar month = interval(function(date) {\n  date.setDate(1);\n  date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setMonth(date.getMonth() + step);\n}, function(start, end) {\n  return end.getMonth() - start.getMonth() + (end.getFullYear() - start.getFullYear()) * 12;\n}, function(date) {\n  return date.getMonth();\n});\n\nexport default month;\nexport var months = month.range;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-time/src/month.js\n// module id = null\n// module chunks = ","import interval from \"./interval.js\";\n\nvar year = interval(function(date) {\n  date.setMonth(0, 1);\n  date.setHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setFullYear(date.getFullYear() + step);\n}, function(start, end) {\n  return end.getFullYear() - start.getFullYear();\n}, function(date) {\n  return date.getFullYear();\n});\n\n// An optimized implementation for this simple case.\nyear.every = function(k) {\n  return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n    date.setFullYear(Math.floor(date.getFullYear() / k) * k);\n    date.setMonth(0, 1);\n    date.setHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setFullYear(date.getFullYear() + step * k);\n  });\n};\n\nexport default year;\nexport var years = year.range;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-time/src/year.js\n// module id = null\n// module chunks = ","import interval from \"./interval.js\";\nimport {durationMinute} from \"./duration.js\";\n\nvar utcMinute = interval(function(date) {\n  date.setUTCSeconds(0, 0);\n}, function(date, step) {\n  date.setTime(+date + step * durationMinute);\n}, function(start, end) {\n  return (end - start) / durationMinute;\n}, function(date) {\n  return date.getUTCMinutes();\n});\n\nexport default utcMinute;\nexport var utcMinutes = utcMinute.range;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-time/src/utcMinute.js\n// module id = null\n// module chunks = ","import interval from \"./interval.js\";\nimport {durationHour} from \"./duration.js\";\n\nvar utcHour = interval(function(date) {\n  date.setUTCMinutes(0, 0, 0);\n}, function(date, step) {\n  date.setTime(+date + step * durationHour);\n}, function(start, end) {\n  return (end - start) / durationHour;\n}, function(date) {\n  return date.getUTCHours();\n});\n\nexport default utcHour;\nexport var utcHours = utcHour.range;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-time/src/utcHour.js\n// module id = null\n// module chunks = ","import interval from \"./interval.js\";\nimport {durationDay} from \"./duration.js\";\n\nvar utcDay = interval(function(date) {\n  date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setUTCDate(date.getUTCDate() + step);\n}, function(start, end) {\n  return (end - start) / durationDay;\n}, function(date) {\n  return date.getUTCDate() - 1;\n});\n\nexport default utcDay;\nexport var utcDays = utcDay.range;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-time/src/utcDay.js\n// module id = null\n// module chunks = ","import interval from \"./interval.js\";\nimport {durationWeek} from \"./duration.js\";\n\nfunction utcWeekday(i) {\n  return interval(function(date) {\n    date.setUTCDate(date.getUTCDate() - (date.getUTCDay() + 7 - i) % 7);\n    date.setUTCHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setUTCDate(date.getUTCDate() + step * 7);\n  }, function(start, end) {\n    return (end - start) / durationWeek;\n  });\n}\n\nexport var utcSunday = utcWeekday(0);\nexport var utcMonday = utcWeekday(1);\nexport var utcTuesday = utcWeekday(2);\nexport var utcWednesday = utcWeekday(3);\nexport var utcThursday = utcWeekday(4);\nexport var utcFriday = utcWeekday(5);\nexport var utcSaturday = utcWeekday(6);\n\nexport var utcSundays = utcSunday.range;\nexport var utcMondays = utcMonday.range;\nexport var utcTuesdays = utcTuesday.range;\nexport var utcWednesdays = utcWednesday.range;\nexport var utcThursdays = utcThursday.range;\nexport var utcFridays = utcFriday.range;\nexport var utcSaturdays = utcSaturday.range;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-time/src/utcWeek.js\n// module id = null\n// module chunks = ","import interval from \"./interval.js\";\n\nvar utcMonth = interval(function(date) {\n  date.setUTCDate(1);\n  date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setUTCMonth(date.getUTCMonth() + step);\n}, function(start, end) {\n  return end.getUTCMonth() - start.getUTCMonth() + (end.getUTCFullYear() - start.getUTCFullYear()) * 12;\n}, function(date) {\n  return date.getUTCMonth();\n});\n\nexport default utcMonth;\nexport var utcMonths = utcMonth.range;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-time/src/utcMonth.js\n// module id = null\n// module chunks = ","import interval from \"./interval.js\";\n\nvar utcYear = interval(function(date) {\n  date.setUTCMonth(0, 1);\n  date.setUTCHours(0, 0, 0, 0);\n}, function(date, step) {\n  date.setUTCFullYear(date.getUTCFullYear() + step);\n}, function(start, end) {\n  return end.getUTCFullYear() - start.getUTCFullYear();\n}, function(date) {\n  return date.getUTCFullYear();\n});\n\n// An optimized implementation for this simple case.\nutcYear.every = function(k) {\n  return !isFinite(k = Math.floor(k)) || !(k > 0) ? null : interval(function(date) {\n    date.setUTCFullYear(Math.floor(date.getUTCFullYear() / k) * k);\n    date.setUTCMonth(0, 1);\n    date.setUTCHours(0, 0, 0, 0);\n  }, function(date, step) {\n    date.setUTCFullYear(date.getUTCFullYear() + step * k);\n  });\n};\n\nexport default utcYear;\nexport var utcYears = utcYear.range;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-time/src/utcYear.js\n// module id = null\n// module chunks = ","export {\n  default as timeInterval\n} from \"./interval.js\";\n\nexport {\n  default as timeMillisecond,\n  milliseconds as timeMilliseconds,\n  default as utcMillisecond,\n  milliseconds as utcMilliseconds\n} from \"./millisecond.js\";\n\nexport {\n  default as timeSecond,\n  seconds as timeSeconds,\n  default as utcSecond,\n  seconds as utcSeconds\n} from \"./second.js\";\n\nexport {\n  default as timeMinute,\n  minutes as timeMinutes\n} from \"./minute.js\";\n\nexport {\n  default as timeHour,\n  hours as timeHours\n} from \"./hour.js\";\n\nexport {\n  default as timeDay,\n  days as timeDays\n} from \"./day.js\";\n\nexport {\n  sunday as timeWeek,\n  sundays as timeWeeks,\n  sunday as timeSunday,\n  sundays as timeSundays,\n  monday as timeMonday,\n  mondays as timeMondays,\n  tuesday as timeTuesday,\n  tuesdays as timeTuesdays,\n  wednesday as timeWednesday,\n  wednesdays as timeWednesdays,\n  thursday as timeThursday,\n  thursdays as timeThursdays,\n  friday as timeFriday,\n  fridays as timeFridays,\n  saturday as timeSaturday,\n  saturdays as timeSaturdays\n} from \"./week.js\";\n\nexport {\n  default as timeMonth,\n  months as timeMonths\n} from \"./month.js\";\n\nexport {\n  default as timeYear,\n  years as timeYears\n} from \"./year.js\";\n\nexport {\n  default as utcMinute,\n  utcMinutes as utcMinutes\n} from \"./utcMinute.js\";\n\nexport {\n  default as utcHour,\n  utcHours as utcHours\n} from \"./utcHour.js\";\n\nexport {\n  default as utcDay,\n  utcDays as utcDays\n} from \"./utcDay.js\";\n\nexport {\n  utcSunday as utcWeek,\n  utcSundays as utcWeeks,\n  utcSunday as utcSunday,\n  utcSundays as utcSundays,\n  utcMonday as utcMonday,\n  utcMondays as utcMondays,\n  utcTuesday as utcTuesday,\n  utcTuesdays as utcTuesdays,\n  utcWednesday as utcWednesday,\n  utcWednesdays as utcWednesdays,\n  utcThursday as utcThursday,\n  utcThursdays as utcThursdays,\n  utcFriday as utcFriday,\n  utcFridays as utcFridays,\n  utcSaturday as utcSaturday,\n  utcSaturdays as utcSaturdays\n} from \"./utcWeek.js\";\n\nexport {\n  default as utcMonth,\n  utcMonths as utcMonths\n} from \"./utcMonth.js\";\n\nexport {\n  default as utcYear,\n  utcYears as utcYears\n} from \"./utcYear.js\";\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-time/src/index.js\n// module id = null\n// module chunks = ","import { ModalBox as ModalBoxModule } from '../../ExternalModulesShim';\nimport { exportGlobally } from '../../GlobalExports';\nimport { IQueryResult } from '../../rest/QueryResult';\nimport { $$, Dom } from '../../utils/Dom';\nimport { SVGDom } from '../../utils/SVGDom';\nimport { SVGIcons } from '../../utils/SVGIcons';\nimport { Utils } from '../../utils/Utils';\nimport { Component } from '../Base/Component';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { Initialization } from '../Base/Initialization';\nimport { get } from '../Base/RegisteredNamedMethods';\nimport { IResultsComponentBindings } from '../Base/ResultsComponentBindings';\nimport { ResultLink } from '../ResultLink/ResultLink';\nimport { AccessibleModal } from '../../utils/AccessibleModal';\n\nexport interface IYouTubeThumbnailOptions {\n  width: string;\n  height: string;\n  embed: boolean;\n}\n\n/**\n * The YouTubeThumbnail component automatically fetches the thumbnail of a YouTube video.\n *\n * This component differs from the standard {@link Thumbnail} component because the thumbnail it outputs is always\n * clickable.\n *\n * Depending on the component configuration, clicking a YouTube thumbnail can either automatically open a modal box\n * containing the `iframe` from YouTube, or open the target URL in the current window (see\n * {@link YouTubeThumbnail.options.embed}).\n *\n * This component is a result template component (see [Result Templates](https://docs.coveo.com/en/413/)).\n */\nexport class YouTubeThumbnail extends Component {\n  static ID = 'YouTubeThumbnail';\n\n  static doExport = () => {\n    exportGlobally({\n      YouTubeThumbnail: YouTubeThumbnail\n    });\n  };\n\n  /**\n   * @componentOptions\n   */\n  static options: IYouTubeThumbnailOptions = {\n    /**\n     * Specifies the width (in pixels) of the YouTube thumbnail.\n     *\n     * Default value is `200px`.\n     */\n    width: ComponentOptions.buildStringOption({ defaultValue: '200px' }),\n\n    /**\n     * Specifies the height (in pixels) of the YouTube thumbnail.\n     *\n     * Default value is `112px`.\n     */\n    height: ComponentOptions.buildStringOption({ defaultValue: '112px' }),\n\n    /**\n     * Specifies whether clicking on the YouTube thumbnail loads the video in a modal box.\n     *\n     * Setting this option to `false` causes the browser to change its current location to that of the target URL when\n     * the end user clicks the YouTube thumbnail.\n     *\n     * Default value is `true`.\n     */\n    embed: ComponentOptions.buildBooleanOption({ defaultValue: true })\n  };\n\n  public resultLink: Dom;\n\n  private modalbox: AccessibleModal;\n\n  constructor(\n    public element: HTMLElement,\n    public options?: IYouTubeThumbnailOptions,\n    public bindings?: IResultsComponentBindings,\n    public result?: IQueryResult,\n    ModalBox = ModalBoxModule,\n    private origin?: HTMLElement\n  ) {\n    super(element, YouTubeThumbnail.ID, bindings);\n    this.options = ComponentOptions.initComponentOptions(element, YouTubeThumbnail, options);\n\n    this.resultLink = $$('a', {\n      className: Component.computeCssClassName(ResultLink)\n    });\n\n    if (!origin) {\n      this.origin = this.resultLink.el;\n    }\n\n    const thumbnailDiv = $$('div', {\n      className: 'coveo-youtube-thumbnail-container'\n    });\n\n    this.resultLink.append(thumbnailDiv.el);\n\n    const img = $$('img', {\n      src: Utils.getFieldValue(this.result, 'ytthumbnailurl'),\n      className: 'coveo-youtube-thumbnail-img',\n      alt: this.result.title,\n      title: this.result.title\n    });\n\n    img.el.style.width = this.options.width;\n    img.el.style.height = this.options.height;\n    img.el.onerror = () => {\n      const svgVideo = $$('div', {}, SVGIcons.icons.video).el;\n      SVGDom.addStyleToSVGInContainer(svgVideo, {\n        width: this.options.width\n      });\n      $$(img).remove();\n      thumbnailDiv.append(svgVideo);\n    };\n    thumbnailDiv.append(img.el);\n\n    const span = $$('span', {\n      className: 'coveo-youtube-thumbnail-play-button'\n    });\n\n    thumbnailDiv.append(span.el);\n\n    $$(this.element).append(this.resultLink.el);\n\n    Initialization.automaticallyCreateComponentsInsideResult(element, result, {\n      ResultLink: this.options.embed ? { onClick: () => this.openYoutubeIframe() } : null\n    });\n    this.modalbox = new AccessibleModal('coveo-youtube-player', this.searchInterface.options.modalContainer, ModalBox, {\n      overlayClose: true\n    });\n  }\n\n  /**\n   * Open the result link embedded in this component.\n   *\n   * With a standard configuration of this component, this will open an iframe that automatically plays the video.\n   */\n  public openResultLink() {\n    let resultLinkComponent = <ResultLink>get(this.resultLink.el);\n    resultLinkComponent.openLinkAsConfigured();\n  }\n\n  private openYoutubeIframe() {\n    // need to put iframe inside div : iframe with position absolute and left:0, right : 0 , bottom: 0 is not standard/supported\n    const iframe = $$('iframe', {\n      src: `https://www.youtube.com/embed/${this.extractVideoId()}?autoplay=1`,\n      allowfullscreen: 'allowfullscreen',\n      width: '100%',\n      height: '100%',\n      title: this.result.title\n    });\n\n    const div = $$('div');\n\n    div.append(iframe.el);\n\n    this.modalbox.openResult({\n      result: this.result,\n      options: { showDate: true, title: this.result.title },\n      bindings: this.bindings,\n      content: div.el,\n      validation: () => true,\n      origin: this.origin\n    });\n\n    $$($$(this.modalbox.wrapper).find('.coveo-quickview-close-button')).on('click', () => {\n      this.modalbox.close();\n    });\n  }\n\n  private extractVideoId() {\n    return this.result.clickUri.split('watch?v=')[1];\n  }\n}\nInitialization.registerAutoCreateComponent(YouTubeThumbnail);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/YouTube/YouTubeThumbnail.ts","/// <reference path='../Facet/Facet.ts' />\n\nimport { IFacetOptions, Facet } from '../Facet/Facet';\nimport { IRangeValue } from '../../rest/RangeValue';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { TemplateHelpers } from '../Templates/TemplateHelpers';\nimport { IDateToStringOptions } from '../../utils/DateUtils';\nimport { FacetRangeQueryController } from '../../controllers/FacetRangeQueryController';\nimport { IGroupByResult } from '../../rest/GroupByResult';\nimport { Initialization } from '../Base/Initialization';\nimport * as Globalize from 'globalize';\nimport { exportGlobally } from '../../GlobalExports';\nimport { ResponsiveFacetOptions } from '../ResponsiveComponents/ResponsiveFacetOptions';\nimport { ResponsiveFacets } from '../ResponsiveComponents/ResponsiveFacets';\nimport { FacetValue } from '../Facet/FacetValue';\nimport { isUndefined, find } from 'underscore';\n\nexport interface IFacetRangeOptions extends IFacetOptions {\n  ranges?: IRangeValue[];\n  dateField?: boolean;\n  valueFormat?: string;\n}\n/**\n * A `FacetRange` is a [facet](https://docs.coveo.com/en/198/) whose values are expressed as ranges.\n *\n * You must set the [`field`]{@link Facet.options.field} option to a value targeting a numeric or date [field](https://docs.coveo.com/en/200/) in your index for this component to work.\n *\n * This component extends the [`Facet`]{@link Facet} component and supports all `Facet` options except:\n *\n * - **Settings** menu options\n *   - [`enableSettings`]{@link Facet.options.enableSettings}\n *   - [`enableSettingsFacetState`]{@link Facet.options.enableSettingsFacetState}\n *   - [`enableCollapse`]{@link Facet.options.enableCollapse}\n *   - [`availableSorts`]{@link Facet.options.availableSorts}\n *   - [`customSort`]{@link Facet.options.customSort}\n *   - [`computedFieldCaption`]{@link Facet.options.computedFieldCaption}\n * - **Facet Search** options\n *   - [`enableFacetSearch`]{@link Facet.options.enableFacetSearch}\n *   - [`facetSearchDelay`]{@link Facet.options.facetSearchDelay}\n *   - [`facetSearchIgnoreAccents`]{@link Facet.options.facetSearchIgnoreAccents}\n *   - [`numberOfValuesInFacetSearch`]{@link Facet.options.numberOfValuesInFacetSearch}\n * - **More and Less** options\n *   - [`enableMoreLess`]{@link Facet.options.enableMoreLess}\n *   - [`pageSize`]{@link Facet.options.pageSize}\n *\n *  @notSupportedIn salesforcefree\n */\nexport class FacetRange extends Facet implements IComponentBindings {\n  static ID = 'FacetRange';\n  static parent = Facet;\n\n  static doExport = () => {\n    exportGlobally({\n      FacetRange: FacetRange\n    });\n  };\n\n  /**\n   * The options for the component\n   * @componentOptions\n   */\n  static options: IFacetRangeOptions = {\n    /**\n     * Whether the specified [`field`]{@link Facet.options.field} option value targets a date field in your index.\n     *\n     * This allows the component to correctly build the outgoing [Group By](https://docs.coveo.com/en/203/).\n     *\n     * **Default:** `false`.\n     */\n    dateField: ComponentOptions.buildBooleanOption({ defaultValue: false }),\n\n    /**\n     * The list of [range values]{@link IRangeValue} to request (see [Requesting Specific FacetRange Values](https://docs.coveo.com/en/2790/)).\n     *\n     * By default, the index automatically generates range values.\n     *\n     * **Note:**\n     * > The index cannot automatically generate range values for a `FacetRange` whose [`field`]{@link Facet.options.field} option value references a dynamic field generated by a [query function](https://docs.coveo.com/en/232/). In such a case, you _must_ use the `ranges` option.\n     */\n    ranges: ComponentOptions.buildJsonOption<IRangeValue[]>(),\n\n    /**\n     * The format to apply to the range values. Only works for numeric values.\n     *\n     * Some of the most commonly used formats are:\n     *\n     * - `c0`: format  a numeric value as currency.\n     * - `n0`: formats a numeric value as an integer.\n     * - `n2`: formats a numeric value as a floating point number with two decimal digits.\n     *\n     * The available formats are defined in the [Globalize](https://github.com/klaaspieter/jquery-global#numbers) library.\n     *\n     * **Note:** This option is ignored when the [`valueCaption`]{@link Facet.options.valueCaption} is defined.\n     */\n    valueFormat: ComponentOptions.buildStringOption({ defaultValue: 'n0' }),\n    ...ResponsiveFacetOptions\n  };\n\n  public options: IFacetRangeOptions;\n  public isFieldValueCompatible = false;\n\n  /**\n   * Creates a new `FacetRange`.\n   * @param element The HTML element on which to instantiate the component.\n   * @param options The configuration options to apply when creating the component.\n   * @param bindings The bindings required by the component.\n   */\n  constructor(public element: HTMLElement, options: IFacetRangeOptions, bindings?: IComponentBindings) {\n    super(element, ComponentOptions.initComponentOptions(element, FacetRange, options), bindings, FacetRange.ID);\n\n    this.options.enableFacetSearch = false;\n    this.options.enableSettings = false;\n    this.options.includeInOmnibox = false;\n    this.options.enableMoreLess = false;\n    ResponsiveFacets.init(this.root, this, this.options);\n  }\n\n  public getValueCaption(facetValue: FacetValue): string {\n    if (this.options.valueCaption || this.isLabelSpecifiedForValue(facetValue)) {\n      return super.getValueCaption(facetValue);\n    }\n\n    return this.translateValuesFromFormat(facetValue);\n  }\n\n  private isLabelSpecifiedForValue(facetValue: FacetValue) {\n    return this.options.ranges && !!find(this.options.ranges, range => !isUndefined(range.label) && range.label === facetValue.lookupValue);\n  }\n\n  protected initFacetQueryController() {\n    this.facetQueryController = new FacetRangeQueryController(this);\n  }\n\n  protected processNewGroupByResults(groupByResults: IGroupByResult) {\n    if (groupByResults != null && this.options.ranges == null) {\n      groupByResults.values.sort((valueA, valueB) => this.sortRangeGroupByResults(valueA.value, valueB.value));\n    }\n    super.processNewGroupByResults(groupByResults);\n  }\n\n  private sortRangeGroupByResults(valueA: string, valueB: string) {\n    const startEndA = this.extractStartAndEndValue(valueA);\n    const startEndB = this.extractStartAndEndValue(valueB);\n    let firstValue: string;\n    let secondValue: string;\n\n    if (!startEndA) {\n      firstValue = valueA;\n    } else {\n      firstValue = startEndA.start;\n    }\n\n    if (!startEndB) {\n      secondValue = valueB;\n    } else {\n      secondValue = startEndB.start;\n    }\n\n    if (this.options.dateField) {\n      return Date.parse(firstValue) - Date.parse(secondValue);\n    }\n    return Number(firstValue) - Number(secondValue);\n  }\n\n  private translateValuesFromFormat(facetValue: FacetValue) {\n    const startAndEnd = this.extractStartAndEndValue(facetValue.lookupValue || facetValue.value);\n    if (!startAndEnd) {\n      return null;\n    }\n\n    return `${this.formatValue(startAndEnd.start)} - ${this.formatValue(startAndEnd.end)}`;\n  }\n\n  private extractStartAndEndValue(value: string) {\n    const startAndEnd = /^(.*)\\.\\.(.*)$/.exec(value);\n\n    if (startAndEnd == null) {\n      return null;\n    }\n\n    return {\n      start: startAndEnd[1],\n      end: startAndEnd[2]\n    };\n  }\n\n  private formatValue(value: string) {\n    const isNumber = !!value.match(/^[\\+\\-]?[0-9]+(\\.[0-9]+)?$/);\n    return this.options.dateField || !isNumber ? this.formatDateValue(value) : this.formatNumberValue(Number(value));\n  }\n\n  private formatDateValue(value: string) {\n    const helper = TemplateHelpers.getHelper('dateTime');\n    const helperOptions: IDateToStringOptions = {\n      alwaysIncludeTime: false,\n      includeTimeIfThisWeek: false,\n      includeTimeIfToday: false,\n      omitYearIfCurrentOne: false,\n      useTodayYesterdayAndTomorrow: false,\n      useWeekdayIfThisWeek: false\n    };\n    return helper(value, helperOptions);\n  }\n\n  private formatNumberValue(value: Number): string {\n    return Globalize.format(value, this.options.valueFormat);\n  }\n}\nInitialization.registerAutoCreateComponent(FacetRange);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/FacetRange/FacetRange.ts","import { any, clone, each, map, sortBy, without } from 'underscore';\nimport { IBuildingQueryEventArgs, IPreprocessResultsEventArgs, QueryEvents } from '../../events/QueryEvents';\nimport { exportGlobally } from '../../GlobalExports';\nimport { Assert } from '../../misc/Assert';\nimport { IQuery } from '../../rest/Query';\nimport { IQueryResult } from '../../rest/QueryResult';\nimport { IQueryResults } from '../../rest/QueryResults';\nimport { $$ } from '../../utils/Dom';\nimport { Utils } from '../../utils/Utils';\nimport { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { IFieldOption, IQueryExpression } from '../Base/IComponentOptions';\nimport { Initialization } from '../Base/Initialization';\nimport { QueryBuilder } from '../Base/QueryBuilder';\nimport { SortCriteria } from '../Sort/SortCriteria';\n\nexport interface IFoldingOptions {\n  field?: IFieldOption;\n  child?: IFieldOption;\n  parent?: IFieldOption;\n\n  childField?: IFieldOption;\n  parentField?: IFieldOption;\n\n  range?: number;\n  rearrange?: SortCriteria;\n\n  enableExpand?: boolean;\n  expandExpression?: IQueryExpression;\n  maximumExpandedResults?: number;\n\n  /**\n   * Manage folding for each results individually\n   */\n  getResult?: (result: IQueryResult) => IQueryResult;\n  /**\n   * Manage folding of all more results\n   */\n  getMoreResults?: (results: IQueryResult[]) => IQueryResult[];\n}\n\ninterface IResultNode {\n  score: number;\n  parent?: IResultNode;\n  result: IQueryResult;\n  children: IResultNode[];\n}\n\n/**\n * The `Folding` component makes it possible to render hierarchic representations of search results sharing a common\n * [`field`]{@link Folding.options.field}.\n *\n * This component has no visual impact on its own. It simply folds certain search results so that the\n * [`ResultFolding`]{@link ResultFolding} and [`ResultAttachments`]{@link ResultAttachments} components can then nicely\n * render them within result templates (see [Result Templates](https://docs.coveo.com/en/413/)).\n *\n * A typical use case of the `Folding` component is to fold email conversations and message board threads results in a\n * result set in order to display them in a convenient format. Messages belonging to a single conversation typically\n * have a unique conversation ID. By indexing this ID on a field, you can use it to fold search results (see\n * [Folding Results](https://docs.coveo.com/en/428/)).\n *\n * **Note:**\n * > There can only be one `Folding` component per [`Tab`]{@link Tab} component.\n *\n */\nexport class Folding extends Component {\n  static ID = 'Folding';\n\n  static doExport = () => {\n    exportGlobally({\n      Folding: Folding\n    });\n  };\n\n  /**\n   * The options for the component\n   * @componentOptions\n   */\n  static options: IFoldingOptions = {\n    /**\n     * Specifies the name of the field on which to do the folding.\n     *\n     * Specifying a value for this option is required for this component to work.\n     *\n     * **Note:**\n     * > In an Elasticsearch index, the corresponding field must be configured as a *Facet* field\n     * > (see [Add or Edit Fields](https://docs.coveo.com/en/1982/)).\n     * > This limitation does not apply to Coveo indexes.\n     *\n     * Default value is `@foldingcollection`.\n     */\n    field: ComponentOptions.buildFieldOption({ defaultValue: '@foldingcollection' }),\n    /**\n     * Specifies the field that determines whether a certain result is a child of another top result.\n     *\n     * **Note:**\n     * > In the index, the values of the corresponding field must:\n     * > - Contain alphanumerical characters only.\n     * > - Contain no more than 60 characters.\n     *\n     * Default value is `@foldingchild`.\n     */\n    child: ComponentOptions.buildFieldOption({ defaultValue: '@foldingchild' }),\n    /**\n     * Specifies the field that determines whether a certain result is a top result containing other child results.\n     *\n     * **Note:**\n     * > In the index, the values of the corresponding field must:\n     * > - Contain alphanumerical characters only.\n     * > - Contain no more than 60 characters.\n     *\n     * Default value is `@foldingparent`.\n     */\n    parent: ComponentOptions.buildFieldOption({ defaultValue: '@foldingparent' }),\n\n    /**\n     * This option is deprecated. Instead, use the {@link Folding.options.parent} option.\n     * @deprecated\n     */\n    childField: ComponentOptions.buildFieldOption({\n      deprecated: 'This option is deprecated. Instead, use the data-parent option.'\n    }),\n    /**\n     * This option is deprecated. Instead, use the {@link Folding.options.child} option.\n     * @deprecated\n     */\n    parentField: ComponentOptions.buildFieldOption({\n      deprecated: 'This option is deprecated. Instead, use the data-child option.'\n    }),\n\n    /**\n     * Specifies the maximum number of child results to fold.\n     *\n     * **Example:**\n     * > For an email thread with a total of 20 messages, using the default value of `2` means that the component loads\n     * > up to a maximum of 2 child messages under the original message, unless the end user expands the entire\n     * > conversation using the **Show More** link (see the [`enableExpand`]{@link Folding.options.enableExpand}\n     * > option).\n     *\n     * Default value is `2`. Minimum value is `0`.\n     */\n    range: ComponentOptions.buildNumberOption({ defaultValue: 2, min: 0 }),\n\n    /**\n     * Specifies the sort criteria to apply to the top result and its child results (e.g., `date ascending`,\n     * `@myfield descending`, etc.). See [sortCriteria](https://docs.coveo.com/en/1461/#RestQueryParameters-sortCriteria).\n     *\n     * This option works from the results returned by the index. This means that if only the three most relevant folded results are returned by the index\n     * and you choose to rearrange the folded results by date, then the three most relevant results will be rearranged by date,\n     * meaning that the first folded result is not necessarily the oldest or newest item.\n     *\n     * However, since clicking on the `Show More` button triggers a new query, you would receive new results based on the sort criteria of this option.\n     *\n     * **Example**\n     * > If you are folding email results by conversation and you specify `date descending` as the `rearrange` value of\n     * > the `Folding` component, the component re-arranges email conversations so that the newest email is always the\n     * > top result. Specifying `date ascending` instead always makes the original email the top result, as it is also\n     * > necessarily the oldest.\n     *\n     * By default, the component displays the results in the order that the index returns them.\n     */\n    rearrange: ComponentOptions.buildCustomOption(value => (Utils.isNonEmptyString(value) ? SortCriteria.parse(value) : null)),\n\n    /**\n     * Specifies whether to add a callback function on the top result, allowing to make an additional query to load all\n     * of its child results (e.g., to load all conversations of a given thread).\n     *\n     * Concretely, the [`ResultFolding`]{@link ResultFolding} component uses this for its **Show More** link.\n     *\n     * See also the [`expandExpression`]{@link Folding.options.expandExpression} and\n     * [`maximumExpandedResults`]{@link Folding.options.maximumExpandedResults} options.\n     *\n     * Default value is `true`.\n     */\n    enableExpand: ComponentOptions.buildBooleanOption({ defaultValue: true }),\n    /**\n     * If the [`enableExpand`]{@link Folding.options.enableExpand} option is `true`, specifies a custom constant\n     * expression to send when querying the expanded results.\n     *\n     * Default value is `undefined`.\n     */\n    expandExpression: ComponentOptions.buildQueryExpressionOption({ depend: 'enableExpand' }),\n\n    /**\n     * If the [`enableExpand`]{@link Folding.options.enableExpand} option is `true`, specifies the maximum number of\n     * results to load when expanding.\n     *\n     * Default value is `100`. Minimum value is `1`.\n     */\n    maximumExpandedResults: ComponentOptions.buildNumberOption({ defaultValue: 100, min: 1, depend: 'enableExpand' }),\n\n    /**\n     * Specifies the function that manages the individual folding of each result.\n     *\n     * Default value is:\n     *\n     * ```javascript\n     * var results = result.childResults || [];\n     * // Add the top result at the top of the list.\n     * results.unshift(result);\n     * // Empty childResults just to clean it.\n     * result.childResults = [];\n     * // Fold those results.\n     * results = Coveo.Folding.foldWithParent(results);\n     * // The first result is the top one.\n     * var topResult = results.shift();\n     * // All other results are childResults.\n     * topResult.childResults = results;\n     * return topResult;\n     * ```\n     *\n     * You can pre-process all the result with this option in the [`init`]{@link init} call of your search interface:\n     *\n     * ```javascript\n     * Coveo.init(document.querySelector('#search'), {\n     *    Folding: {\n     *      getResult: function(result) {\n     *        result = Coveo.Folding.defaultGetResult(result);\n     *        // Your code here\n     *      }\n     *    }\n     * })\n     * ```\n     */\n    getResult: ComponentOptions.buildCustomOption<(result: IQueryResult) => IQueryResult>(() => {\n      return null;\n    }),\n\n    /**\n     * Specifies the function that manages the folding of all results.\n     *\n     * Default value is:\n     *\n     * ```javascript\n     * Coveo.Folding.defaultGetMoreResults = function(results) {\n     *    // The results are flat, just do the folding.\n     *    return Coveo.Folding.foldWithParent(results);\n     * }\n     * ```\n     */\n    getMoreResults: ComponentOptions.buildCustomOption<(results: IQueryResult[]) => IQueryResult[]>(() => {\n      return null;\n    })\n  };\n\n  /**\n   * Creates a new `Folding` component.\n   * @param element The HTMLElement on which to instantiate the component.\n   * @param options The options for the `Folding` component.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time).\n   */\n  constructor(public element: HTMLElement, public options: IFoldingOptions, bindings?: IComponentBindings) {\n    super(element, Folding.ID, bindings);\n\n    this.options = ComponentOptions.initComponentOptions(element, Folding, options);\n\n    Assert.check(Utils.isCoveoField(<string>this.options.field), this.options.field + ' is not a valid field');\n    Assert.exists(this.options.maximumExpandedResults);\n\n    this.swapParentChildFoldingFields();\n\n    this.bind.onRootElement(QueryEvents.buildingQuery, this.handleBuildingQuery);\n    this.bind.onRootElement(QueryEvents.preprocessResults, this.handlepreprocessResults);\n  }\n\n  // From a list of results, return a list of results and their attachments\n  // We use parentResult to build a tree of result\n  static foldWithParent(queryResults: IQueryResult[]): IQueryResult[] {\n    const rootNode: IResultNode = {\n      score: Number.NEGATIVE_INFINITY,\n      children: [],\n      result: <IQueryResult>{\n        raw: false\n      }\n    };\n\n    each(queryResults, (queryResult: IQueryResult, i: number) => {\n      let resultNode = Folding.findUniqueId(rootNode.children, queryResult.uniqueId);\n      // If he have no parent or is parent is him self, add it to the root\n      if (queryResult.parentResult == null || queryResult.parentResult.uniqueId == queryResult.uniqueId) {\n        // Add it only if he do not exist\n        if (resultNode == null) {\n          resultNode = {\n            result: queryResult,\n            score: i,\n            children: []\n          };\n          rootNode.children.push(resultNode);\n          resultNode.parent = rootNode;\n        }\n      } else {\n        // If the resultNode already exist\n        if (resultNode != null) {\n          resultNode.score = Math.min(i, resultNode.score);\n          // Remove himself from his parent because it will be added in his parent. This allowed to remove duplicate.\n          resultNode.parent.children = without(resultNode.parent.children, resultNode);\n        } else {\n          resultNode = {\n            result: queryResult,\n            score: i,\n            children: []\n          };\n        }\n\n        let parentResult = Folding.findUniqueId(rootNode.children, queryResult.parentResult.uniqueId);\n        // If the parent does not already exist, create it and add it the root\n        if (parentResult == null) {\n          parentResult = {\n            result: queryResult.parentResult,\n            score: Number.POSITIVE_INFINITY,\n            children: []\n          };\n          rootNode.children.push(parentResult);\n          parentResult.parent = rootNode;\n        }\n        // Add the resultNode to parent\n        parentResult.children.push(resultNode);\n        resultNode.parent = parentResult;\n        let parent = parentResult;\n        while (parent != null && resultNode.score < parent.score) {\n          parent.score = resultNode.score;\n          parent = parent.parent;\n        }\n      }\n    });\n    const rootResult = Folding.resultNodeToQueryResult(rootNode);\n    // Remove the root from all results\n    each(rootResult.attachments, attachment => (attachment.parentResult = null));\n    return rootResult.attachments;\n  }\n\n  // 99.9% of the folding case will be alright with those default functions.\n  // Otherwise use the options getResult and getMoreResults\n  public static defaultGetResult(result: IQueryResult) {\n    let results: IQueryResult[] = result.childResults || [];\n    // Add the top result at the top of the list\n    results.unshift(result);\n    // Empty childResults just to make it more clean\n    result.childResults = [];\n    // Fold those results\n    results = Folding.foldWithParent(results);\n    // The first result is the top one\n    const topResult = results.shift();\n    // All other the results are childResults\n    topResult.childResults = results;\n\n    return topResult;\n  }\n\n  public static defaultGetMoreResults(results: IQueryResult[]) {\n    // The result are flat, just do the fold\n    return Folding.foldWithParent(results);\n  }\n\n  // Convert ResultNode to QueryResult\n  private static resultNodeToQueryResult(resultNode: IResultNode): IQueryResult {\n    const result = resultNode.result;\n    result.attachments = map(sortBy<IResultNode>(resultNode.children, 'score'), Folding.resultNodeToQueryResult);\n    result.parentResult = resultNode.parent != null ? resultNode.parent.result : null;\n    return result;\n  }\n\n  private static findUniqueId(resultNodes: IResultNode[], uniqueId: string): IResultNode {\n    for (let i = 0; i < resultNodes.length; i++) {\n      if (resultNodes[i].result.uniqueId == uniqueId) {\n        return resultNodes[i];\n      }\n      const resultNode = Folding.findUniqueId(resultNodes[i].children, uniqueId);\n      if (resultNode != null) {\n        return resultNode;\n      }\n    }\n    return null;\n  }\n\n  private swapParentChildFoldingFields() {\n    // Swap \"old\" childField and parentField and assign them to the \"new\" parent option\n    // This needs to be done because connectors push the default data in *reverse* order compared to what the index expect.\n    if (this.options.childField != null) {\n      this.logger.warn('Detecting usage of deprecated option \"childField\". Assigning it automatically to the \"parent\" option instead.');\n      this.logger.warn('The option definition was changed to support universal folding across all sources.');\n      this.logger.warn('To remove this warning, rename the \"childField\" option (data-child-field) to \"parent\" (data-parent).');\n      this.options.parent = this.options.childField;\n    }\n\n    if (this.options.parentField != null) {\n      this.logger.warn('Detecting usage of deprecated option \"parentField\". Assigning it automatically to the \"child\" option instead.');\n      this.logger.warn('The option definition was changed to support universal folding across all sources.');\n      this.logger.warn('To remove this warning, rename the \"parentField\" option (data-parent-field) to \"child\" (data-child).');\n      this.options.child = this.options.parentField;\n    }\n  }\n\n  private handleBuildingQuery(data: IBuildingQueryEventArgs) {\n    Assert.exists(data);\n\n    if (!this.disabled) {\n      data.queryBuilder.childField = <string>this.options.parent;\n      data.queryBuilder.parentField = <string>this.options.child;\n      data.queryBuilder.filterField = <string>this.options.field;\n      data.queryBuilder.filterFieldRange = this.options.range;\n\n      data.queryBuilder.requiredFields.push(<string>this.options.field);\n      if (this.options.parent != null) {\n        data.queryBuilder.requiredFields.push(<string>this.options.parent);\n      }\n      if (this.options.child != null) {\n        data.queryBuilder.requiredFields.push(<string>this.options.child);\n      }\n    }\n  }\n\n  private handlepreprocessResults(data: IPreprocessResultsEventArgs) {\n    Assert.exists(data);\n    Assert.check(\n      !data.results._folded,\n      'Two or more Folding components are active at the same time for the same Tab. Cannot process the results.'\n    );\n    data.results._folded = true;\n\n    const queryResults = data.results;\n\n    const getResult: (result: IQueryResult) => IQueryResult = this.options.getResult || Folding.defaultGetResult;\n    queryResults.results = map(queryResults.results, getResult);\n\n    if (this.options.rearrange) {\n      queryResults.results.forEach(result => {\n        result.childResults = sortBy(result.childResults, result => Utils.getFieldValue(result, this.options.rearrange.sort));\n        if (this.shouldBeReversed(result.childResults)) {\n          result.childResults = result.childResults.reverse();\n        }\n      });\n    }\n\n    this.addLoadMoreHandler(<IQueryResult[]>queryResults.results, data.query);\n  }\n\n  private shouldBeReversed(childResults: IQueryResult[]) {\n    if (this.options.rearrange.direction == 'ascending') {\n      return false;\n    }\n    const childMissingSortByValue = any(childResults, childResult => {\n      return Utils.isNullOrUndefined(Utils.getFieldValue(childResult, this.options.rearrange.sort));\n    });\n    if (childMissingSortByValue) {\n      return false;\n    }\n    return true;\n  }\n\n  private addLoadMoreHandler(results: IQueryResult[], originalQuery: IQuery) {\n    return map(results, result => {\n      if (this.options.enableExpand && !Utils.isNullOrUndefined(Utils.getFieldValue(result, <string>this.options.field))) {\n        result.moreResults = () => {\n          return this.moreResults(result, originalQuery);\n        };\n      }\n      return result;\n    });\n  }\n\n  private moreResults(result: IQueryResult, originalQuery: IQuery): Promise<IQueryResult[]> {\n    const query = clone(originalQuery);\n    const builder = new QueryBuilder();\n\n    query.numberOfResults = this.options.maximumExpandedResults;\n    const fieldValue = Utils.getFieldValue(result, <string>this.options.field);\n\n    if (Utils.isNonEmptyString(fieldValue)) {\n      builder.advancedExpression.addFieldExpression(<string>this.options.field, '=', [fieldValue]);\n      query.aq = builder.build().aq;\n      query.facets = [];\n      query.categoryFacets = [];\n      query.facetOptions = {};\n    }\n\n    if (Utils.isNonEmptyString(originalQuery.q)) {\n      // We add keywords to get the highlight and we add @uri to get all results\n      // To ensure it plays nicely with query syntax, we ensure that the needed part of the query\n      // are correctly surrounded with the no syntax block\n      if (originalQuery.enableQuerySyntax) {\n        query.q = `( ${originalQuery.q} ) OR @uri`;\n      } else {\n        query.enableQuerySyntax = true;\n        query.q = `( <@- ${originalQuery.q} -@> ) OR @uri`;\n      }\n    }\n\n    if (Utils.isNonEmptyString(this.options.expandExpression)) {\n      query.cq = this.options.expandExpression;\n    }\n\n    if (this.options.child != null) {\n      query.parentField = <string>this.options.child;\n    }\n\n    if (this.options.parent != null) {\n      query.childField = <string>this.options.parent;\n    }\n\n    query.filterField = null;\n    query.filterFieldRange = null;\n    query.firstResult = 0;\n\n    if (this.options.rearrange) {\n      this.options.rearrange.putInQueryBuilder(builder);\n      query.sortCriteria = builder.sortCriteria;\n      query.sortField = builder.sortField;\n    } else {\n      query.sortCriteria = originalQuery.sortCriteria;\n      query.sortField = originalQuery.sortField;\n    }\n\n    return this.queryController\n      .getEndpoint()\n      .search(query)\n      .then((results: IQueryResults) => {\n        this.handlePreprocessMoreResults(results);\n        return results.results;\n      })\n      .catch(e => {\n        this.logger.error(`Invalid query performed while trying to retrieve more results for folding.`, e);\n        return [];\n      });\n  }\n\n  private handlePreprocessMoreResults(queryResults: IQueryResults) {\n    const getResults: (results: IQueryResult[]) => IQueryResult[] = this.options.getMoreResults || Folding.defaultGetMoreResults;\n    queryResults.results = getResults(queryResults.results);\n    $$(this.element).trigger(QueryEvents.preprocessMoreResults, {\n      results: queryResults\n    });\n  }\n}\n\nInitialization.registerAutoCreateComponent(Folding);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Folding/Folding.ts","import { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { IFieldConditionOption } from '../Base/IComponentOptions';\nimport { IQueryResult } from '../../rest/QueryResult';\nimport { Assert } from '../../misc/Assert';\nimport { QueryUtils } from '../../utils/QueryUtils';\nimport { Initialization } from '../Base/Initialization';\nimport { Utils } from '../../utils/Utils';\nimport { FileTypes, IFileTypeInfo } from '../Misc/FileTypes';\nimport { $$ } from '../../utils/Dom';\nimport { exportGlobally } from '../../GlobalExports';\nimport { TemplateFieldsEvaluator } from '../Templates/TemplateFieldsEvaluator';\n\n/**\n * Available options for the {@link Icon} component.\n */\nexport interface IIconOptions {\n  value?: string;\n  small?: boolean;\n  withLabel?: boolean;\n  labelValue?: string;\n  conditions?: IFieldConditionOption[];\n}\n\n/**\n * The Icon component outputs the corresponding icon for a given file type. The component searches for a suitable icon\n * from those available in the Coveo JavaScript Search Framework. If the component finds no suitable icon, it instead\n * outputs a generic icon.\n *\n * This component is a result template component (see [Result Templates](https://docs.coveo.com/en/413/)).\n */\nexport class Icon extends Component {\n  static ID = 'Icon';\n\n  static doExport = () => {\n    exportGlobally({\n      Icon: Icon\n    });\n  };\n\n  /**\n   * The options for the Icon\n   * @componentOptions\n   */\n  static options: IIconOptions = {\n    /**\n     * Specifies the value that the Icon component should output as its CSS class instead of the auto-selected value.\n     *\n     * Default value is `undefined`, which means that the Coveo JavaScript Search Framework outputs a suitable icon\n     * depending on the result file type.\n     */\n    value: ComponentOptions.buildStringOption(),\n\n    /**\n     * Specifies whether the Icon component should output the smaller version of the icon instead of the regular one.\n     *\n     * Default value is `undefined`.\n     */\n    small: ComponentOptions.buildBooleanOption(),\n\n    /**\n     * Specifies whether the Icon component should force the output icon to display its caption/label.\n     *\n     * **Note:**\n     *\n     * > Due to limited screen real estate, setting this option to `true` has no effect on icons used inside Coveo for\n     * > Salesforce Insight Panels.\n     *\n     * Default value is `undefined`, which means that the Coveo JavaScript Search Framework determines whether the icon\n     * needs to display a caption/label depending on the result file type.\n     */\n    withLabel: ComponentOptions.buildBooleanOption(),\n\n    /**\n     * Specifies what text to display as the icon caption/label.\n     *\n     * Default value is `undefined`, which means that the Coveo JavaScript Search Framework determines what text the icon\n     * needs to display depending on the result file type.\n     */\n    labelValue: ComponentOptions.buildLocalizedStringOption(),\n\n    /**\n     * A field-based condition that must be satisfied by the query result item for the component to be rendered.\n     *\n     * Note: This option uses a distinctive markup configuration syntax allowing multiple conditions to be expressed. Its underlying logic is the same as that of the field value conditions mechanism used by result templates.\n     *\n     * **Examples:**\n     * Render the component if the query result item's @documenttype field value is Article or Documentation.\n     * ```html\n     * <div class=\"CoveoIcon\" data-field=\"@author\" data-condition-field-documenttype=\"Article, Documentation\"></div>\n     * ```\n     *\n     * Render the component if the query result item's @documenttype field value is anything but Case.\n     * ```html\n     * <div class=\"CoveoIcon\" data-field=\"@author\" data-condition-field-not-documenttype=\"Case\"></div>\n     * ```\n     * Render the component if the query result item's @documenttype field value is Article, and if its @author field value is anything but Anonymous.\n     * ```html\n     * <div class=\"CoveoIcon\" data-field=\"@author\" data-condition-field-documenttype=\"Article\" data-condition-field-not-author=\"Anonymous\"></div>\n     * ```\n     * Default value is `undefined`.\n     */\n    conditions: ComponentOptions.buildFieldConditionOption()\n  };\n\n  /**\n   * Creates a new Icon component.\n   * @param element The HTMLElement on which to instantiate the component.\n   * @param options The options for the Icon component.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time).\n   * @param result The result to associate the component with.\n   */\n  constructor(public element: HTMLElement, public options?: IIconOptions, bindings?: IComponentBindings, public result?: IQueryResult) {\n    super(element, Icon.ID, bindings);\n\n    this.options = ComponentOptions.initComponentOptions(element, Icon, options);\n    this.result = this.result || this.resolveResult();\n    Assert.exists(this.result);\n\n    if (TemplateFieldsEvaluator.evaluateFieldsToMatch(this.options.conditions, this.result)) {\n      this.initialize(element, bindings);\n    } else if (this.element.parentElement != null) {\n      this.element.parentElement.removeChild(this.element);\n    }\n  }\n\n  private initialize(element: HTMLElement, bindings: IComponentBindings) {\n    const possibleInternalQuickview = $$(this.element).find('.' + Component.computeCssClassNameForType('Quickview'));\n    if (!Utils.isNullOrUndefined(possibleInternalQuickview) && QueryUtils.hasHTMLVersion(this.result)) {\n      $$(this.element).addClass('coveo-with-quickview');\n      $$(this.element).on('click', () => {\n        const qv = <any>Component.get(possibleInternalQuickview);\n        qv.open();\n      });\n    }\n\n    Icon.createIcon(this.result, this.options, element, bindings);\n  }\n\n  static createIcon(result: IQueryResult, options: IIconOptions = {}, element: HTMLElement = $$('div').el, bindings?: IComponentBindings) {\n    let info = FileTypes.get(result);\n    if (!bindings && result.searchInterface) {\n      // try to resolve results bindings automatically\n      bindings = result.searchInterface.getBindings();\n    }\n    info = Icon.preprocessIconInfo(options, info);\n    $$(element).toggleClass('coveo-small', options.small === true);\n\n    if (options.value != undefined) {\n      if (options.small === true) {\n        if (options.value.indexOf('-small') == -1) {\n          info.icon += '-small';\n        }\n      }\n      if (options.small === false) {\n        if (options.value.indexOf('-small') != -1) {\n          info.icon = info.icon.replace('-small', '');\n        }\n      }\n    }\n    $$(element).addClass(info.icon);\n    element.setAttribute('title', info.caption);\n\n    if (Icon.shouldDisplayLabel(options, bindings)) {\n      element.appendChild(\n        $$(\n          'span',\n          {\n            className: 'coveo-icon-caption-overlay'\n          },\n          info.caption\n        ).el\n      );\n      $$(element).addClass('coveo-icon-with-caption-overlay');\n      $$(element).setAttribute('data-with-label', 'true');\n    }\n    return element;\n  }\n\n  static shouldDisplayLabel(options: IIconOptions, bindings: IComponentBindings) {\n    // If withLabel is explicitely set to false, the label will never display\n    // If withLabel is explicitely set to true, the label will always display\n    // If withLabel is set to default value (not a hard true or false), the label will display based on ./core/filetypes/**.json\n    // with the property shouldDisplayLabel set on each file type/ objecttype\n    // In this case, the generated css will take care of outputting the correct css to display : block\n    return options.withLabel !== false;\n  }\n\n  static preprocessIconInfo(options: IIconOptions, info: IFileTypeInfo) {\n    if (options.labelValue != null) {\n      info.caption = options.labelValue;\n    }\n    if (options.value != null) {\n      info.icon = 'coveo-icon ' + options.value;\n    }\n    if (info.caption == null) {\n      info.caption = '';\n    }\n    if (info.icon == null) {\n      info.icon = 'coveo-icon coveo-sprites-custom';\n    }\n    return info;\n  }\n}\nInitialization.registerAutoCreateComponent(Icon);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Icon/Icon.ts","///<reference path=\"FieldAddon.ts\" />\n///<reference path=\"QueryExtensionAddon.ts\" />\n///<reference path=\"QuerySuggestAddon.ts\" />\n///<reference path=\"OldOmniboxAddon.ts\" />\n\nimport 'styling/_Omnibox';\nimport * as _ from 'underscore';\nimport { findWhere } from 'underscore';\nimport { BreadcrumbEvents } from '../../events/BreadcrumbEvents';\nimport {\n  IOmniboxPreprocessResultForQueryEventArgs,\n  IPopulateOmniboxSuggestionsEventArgs,\n  IQuerySuggestSelection,\n  OmniboxEvents\n} from '../../events/OmniboxEvents';\nimport { IBuildingQueryEventArgs, IDuringQueryEventArgs, INewQueryEventArgs, QueryEvents } from '../../events/QueryEvents';\nimport { StandaloneSearchInterfaceEvents } from '../../events/StandaloneSearchInterfaceEvents';\nimport { exportGlobally } from '../../GlobalExports';\nimport { ExpressionDef } from '../../magicbox/Expression/Expression';\nimport { Grammar } from '../../magicbox/Grammar';\nimport { Complete } from '../../magicbox/Grammars/Complete';\nimport { Expressions } from '../../magicbox/Grammars/Expressions';\nimport { createMagicBox, MagicBoxInstance } from '../../magicbox/MagicBox';\nimport { Result } from '../../magicbox/Result/Result';\nimport { Suggestion } from '../../magicbox/SuggestionsManager';\nimport { Assert } from '../../misc/Assert';\nimport { COMPONENT_OPTIONS_ATTRIBUTES } from '../../models/ComponentOptionsModel';\nimport { IAttributeChangedEventArg, MODEL_EVENTS } from '../../models/Model';\nimport { QueryStateModel, QUERY_STATE_ATTRIBUTES } from '../../models/QueryStateModel';\nimport { l } from '../../strings/Strings';\nimport { $$, Dom } from '../../utils/Dom';\nimport { Utils } from '../../utils/Utils';\nimport {\n  analyticsActionCauseList,\n  IAnalyticsActionCause,\n  IAnalyticsNoMeta,\n  IAnalyticsOmniboxSuggestionMeta\n} from '../Analytics/AnalyticsActionListMeta';\nimport { PendingSearchAsYouTypeSearchEvent } from '../Analytics/PendingSearchAsYouTypeSearchEvent';\nimport { logSearchBoxSubmitEvent } from '../Analytics/SharedAnalyticsCalls';\nimport { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { IFieldOption } from '../Base/IComponentOptions';\nimport { Initialization } from '../Base/Initialization';\nimport { IQueryboxOptions, Querybox } from '../Querybox/Querybox';\nimport { QueryboxOptionsProcessing } from '../Querybox/QueryboxOptionsProcessing';\nimport { QueryboxQueryParameters } from '../Querybox/QueryboxQueryParameters';\nimport { StandaloneSearchInterface } from '../SearchInterface/SearchInterface';\nimport { FieldAddon } from './FieldAddon';\nimport { OldOmniboxAddon } from './OldOmniboxAddon';\nimport { OmniboxAnalytics } from './OmniboxAnalytics';\nimport { QueryExtensionAddon } from './QueryExtensionAddon';\nimport { IQuerySuggestAddon, QuerySuggestAddon, VoidQuerySuggestAddon } from './QuerySuggestAddon';\n\nexport interface IOmniboxSuggestion extends Suggestion {\n  executableConfidence?: number;\n}\n\nexport interface IOmniboxOptions extends IQueryboxOptions {\n  inline?: boolean;\n  enableFieldAddon?: boolean;\n  enableSimpleFieldAddon?: boolean;\n  listOfFields?: IFieldOption[];\n  fieldAlias?: { [alias: string]: IFieldOption };\n  enableQuerySuggestAddon?: boolean;\n  enableQueryExtensionAddon?: boolean;\n  omniboxTimeout?: number;\n  placeholder?: string;\n  numberOfSuggestions?: number;\n  querySuggestCharacterThreshold?: number;\n  grammar?: (grammar: {\n    start: string;\n    expressions: { [id: string]: ExpressionDef };\n  }) => { start: string; expressions: { [id: string]: ExpressionDef } };\n  clearFiltersOnNewQuery?: boolean;\n}\n\nconst MINIMUM_EXECUTABLE_CONFIDENCE = 0.8;\n\n/**\n * The `Omnibox` component extends the [`Querybox`]{@link Querybox}, and thus provides the same basic options and\n * behaviors. Furthermore, the `Omnibox` adds a type-ahead capability to the search input.\n *\n * You can configure the type-ahead feature by enabling or disabling certain addons, which the Coveo JavaScript Search\n * Framework provides out-of-the-box (see the [`enableFieldAddon`]{@link Omnibox.options.enableFieldAddon},\n * [`enableQueryExtension`]{@link Omnibox.options.enableQueryExtensionAddon}, and\n * [`enableQuerySuggestAddon`]{@link Omnibox.options.enableQuerySuggestAddon} options).\n *\n * Custom components and external code can also extend or customize the type-ahead feature and the query completion\n * suggestions it provides by attaching their own handlers to the\n * [`populateOmniboxSuggestions`]{@link OmniboxEvents.populateOmniboxSuggestions} event.\n *\n * See also the [`Searchbox`]{@link Searchbox} component, which can automatically instantiate an `Omnibox` along with an\n * optional {@link SearchButton}.\n */\nexport class Omnibox extends Component {\n  public static ID = 'Omnibox';\n\n  static doExport = () => {\n    exportGlobally({\n      Omnibox: Omnibox,\n      QueryboxQueryParameters: QueryboxQueryParameters\n    });\n  };\n\n  /**\n   * The options for the omnibox\n   * @componentOptions\n   */\n  static options: IOmniboxOptions = {\n    /**\n     * Specifies whether query completion suggestions appearing in the `Omnibox` should push the result list and facets\n     * down, rather than rendering themselves over them (and partially hiding them).\n     *\n     * Set this option as well as {@link Omnibox.options.enableSearchAsYouType} and\n     * {@link Omnibox.options.enableQuerySuggestAddon} to `true` for a cool effect!\n     *\n     * Default value is `false`.\n     */\n    inline: ComponentOptions.buildBooleanOption({ defaultValue: false }),\n\n    /**\n     * Whether to automatically trigger a new query whenever the end user types additional text in the search box input.\n     *\n     * See also the [`searchAsYouTypeDelay`]{@link Omnibox.options.searchAsYouTypeDelay} option.\n     *\n     * **Note:**\n     * > If you set this option and the [`enableQuerySuggestAddon`]{@link Omnibox.options.enableQuerySuggestAddon}\n     * > option to `true`, the query suggestion feature returns the auto-completion of the currently typed keyword as\n     * > its first suggestion.\n     *\n     * Default value is `false`.\n     */\n    enableSearchAsYouType: ComponentOptions.buildBooleanOption({ defaultValue: false, section: 'Advanced Options' }),\n\n    /**\n     * If {@link Omnibox.options.enableSearchAsYouType} is `true`, specifies the delay (in milliseconds) before\n     * triggering a new query when the end user types in the `Omnibox`.\n     *\n     * Default value is `2000`. Minimum value is `0`.\n     */\n    searchAsYouTypeDelay: ComponentOptions.buildNumberOption({\n      defaultValue: 2000,\n      min: 0,\n      depend: 'enableSearchAsYouType',\n      section: 'Advanced Options'\n    }),\n\n    /**\n     * The `field` addon makes the `Omnibox` highlight and complete field syntax. Setting this option to `true` automatically sets\n     * the [enableQuerySyntax]{@link Querybox.options.enableQuerySyntax} option to `true` as a side effect.\n     *\n     * **Example:**\n     * > Suppose you want to search for PDF files. You start typing `@f` in the search box. The `Omnibox` provides\n     * > you with several matching fields. You select the `@filetype` field. Then, you start typing `=p` in the input.\n     * > This time, the `Omnibox` provides you with several matching values for the `@filetype` field. You select the\n     * > `pdf` suggestion, and submit your search request. Since the `enableQuerySyntax` option is set to `true`, the\n     * > Coveo Search API interprets the basic expression as query syntax and returns the items whose `@filetype` field\n     * > matches the `pdf` value.\n     *\n     * Default value is `false`.\n     */\n    enableFieldAddon: ComponentOptions.buildBooleanOption({\n      defaultValue: false,\n      depend: 'enableQuerySyntax',\n      postProcessing: (value, options: IOmniboxOptions) => {\n        if (value) {\n          options.enableQuerySyntax = true;\n        }\n        return value;\n      },\n      section: 'Advanced Options'\n    }),\n    enableSimpleFieldAddon: ComponentOptions.buildBooleanOption({ defaultValue: false, depend: 'enableFieldAddon' }),\n    listOfFields: ComponentOptions.buildFieldsOption({ depend: 'enableFieldAddon' }),\n\n    /**\n     * Whether to display Coveo Machine Learning (Coveo ML) query suggestions in the `Omnibox`.\n     *\n     * A Coveo ML query suggestions (QS) model must be properly configured in your Coveo Cloud organization, otherwise this\n     * option has no effect (see\n     * [Create a QS Model](https://docs.coveo.com/en/1832/#create-a-qs-model)).\n     *\n     * **Note:**\n     * > When you set this option and the [`enableSearchAsYouType`]{@link Omnibox.options.enableSearchAsYouType} option\n     * > to `true`, the query suggestion feature returns the auto-completion of the currently typed keyword as its first\n     * > query suggestion.\n     *\n     * @availablesince [December 2015 Release (v1.0.273)](https://docs.coveo.com/en/289/#december-2015-release-v10273)\n     */\n    enableQuerySuggestAddon: ComponentOptions.buildBooleanOption({\n      defaultValue: true,\n      alias: ['enableTopQueryAddon', 'enableRevealQuerySuggestAddon']\n    }),\n\n    /**\n     * If {@link Querybox.options.enableQuerySyntax} is `true`, specifies whether to enable the `query extension` addon.\n     *\n     * The `query extension` addon allows the Omnibox to complete the syntax for query extensions.\n     *\n     * Default value is `false`.\n     */\n    enableQueryExtensionAddon: ComponentOptions.buildBooleanOption({\n      defaultValue: false,\n      depend: 'enableQuerySyntax',\n      postProcessing: (value, options: IOmniboxOptions) => {\n        if (value) {\n          options.enableQuerySyntax = true;\n        }\n        return value;\n      },\n      section: 'Advanced Options'\n    }),\n\n    /**\n     * Specifies a placeholder for the input.\n     *\n     * @availablesince [July 2016 Release (v1.667.24)](https://docs.coveo.com/en/309/#july-2016-release-v166724)\n     */\n    placeholder: ComponentOptions.buildLocalizedStringOption(),\n\n    /**\n     * Specifies a timeout (in milliseconds) before rejecting suggestions in the Omnibox.\n     *\n     * Default value is `2000`. Minimum value is `0`.\n     */\n    omniboxTimeout: ComponentOptions.buildNumberOption({ defaultValue: 2000, min: 0 }),\n    /**\n     * Specifies whether the Coveo Platform should try to interpret special query syntax such as field references in the\n     * query that the user enters in the Querybox (see\n     * [Coveo Query Syntax Reference](https://docs.coveo.com/en/1552/searching-with-coveo/coveo-cloud-query-syntax)).\n     *\n     * Setting this option to `true` also causes the query syntax in the Querybox to highlight.\n     *\n     * Default value is `false`.\n     */\n    enableQuerySyntax: ComponentOptions.buildBooleanOption({\n      defaultValue: false,\n      section: 'Advanced Options'\n    }),\n    /**\n     * Specifies the number of suggestions that should appear in standard ML-powered query suggestions.\n     *\n     * This option only affects the number of suggestions that appear with the {@link Omnibox.options.enableQuerySuggestAddon} option.\n     *\n     * This options does not affect the {@link AnalyticsSuggestions} or the {@link FieldSuggestions} component, which expose their own dedicated options for this parameter.\n     *\n     * Default value is `5`.\n     *\n     * Minimum value is `1`.\n     */\n    numberOfSuggestions: ComponentOptions.buildNumberOption({\n      defaultValue: 5,\n      min: 1\n    }),\n    /**\n     * The minimum number of characters required in the in the text input before displaying available query suggestions when focus is on the component.\n     *\n     * Note: Only effective when [enableQuerySuggestAddon]{@link Omnibox.options.enableQuerySuggestAddon} is true.\n     *\n     * depend: 'enableQuerySuggestAddon'\n     *\n     * Default (and minimum): 0, meaning that trending query suggestions are displayed when focus is on the component, even if its text input is empty.\n     *\n     * @availablesince [July 2019 Release (v2.6459)](https://docs.coveo.com/en/2938/)\n     */\n    querySuggestCharacterThreshold: ComponentOptions.buildNumberOption({\n      defaultValue: 0,\n      min: 0\n    }),\n\n    /**\n     * Whether to clear all active query filters when the end user submits a new query from the search box.\n     *\n     * Note: This does not include the filter expression enforced by the currently selected tab, if any.\n     *\n     * @availablesince [September 2019 Release (v2.7023)](https://docs.coveo.com/en/2990/)\n     */\n    clearFiltersOnNewQuery: ComponentOptions.buildBooleanOption({ defaultValue: false })\n  };\n\n  public magicBox: MagicBoxInstance;\n  private lastSuggestions: IOmniboxSuggestion[] = [];\n  private lastQuery: string;\n  private modifyEventTo: IAnalyticsActionCause;\n  private movedOnce = false;\n  private searchAsYouTypeTimeout: number;\n  private skipAutoSuggest = false;\n  private omniboxAnalytics: OmniboxAnalytics;\n\n  public suggestionAddon: IQuerySuggestAddon;\n\n  /**\n   * Creates a new Omnibox component. Also enables necessary addons and binds events on various query events.\n   * @param element The HTMLElement on which to instantiate the component.\n   * @param options The options for the Omnibox component.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time).\n   */\n  constructor(public element: HTMLElement, public options?: IOmniboxOptions, bindings?: IComponentBindings) {\n    super(element, Omnibox.ID, bindings);\n\n    this.options = ComponentOptions.initComponentOptions(element, Omnibox, options);\n    const originalValueForQuerySyntax = this.options.enableQuerySyntax;\n    new QueryboxOptionsProcessing(this).postProcess();\n    this.omniboxAnalytics = this.searchInterface.getOmniboxAnalytics();\n    $$(this.element).toggleClass('coveo-query-syntax-disabled', this.options.enableQuerySyntax == false);\n\n    this.suggestionAddon = this.options.enableQuerySuggestAddon ? new QuerySuggestAddon(this) : new VoidQuerySuggestAddon();\n    new OldOmniboxAddon(this);\n    this.createMagicBox();\n\n    this.bind.onRootElement(QueryEvents.newQuery, (args: INewQueryEventArgs) => this.handleNewQuery(args));\n    this.bind.onRootElement(QueryEvents.buildingQuery, (args: IBuildingQueryEventArgs) => this.handleBuildingQuery(args));\n    this.bind.onRootElement(StandaloneSearchInterfaceEvents.beforeRedirect, () => this.handleBeforeRedirect());\n    this.bind.onRootElement(QueryEvents.querySuccess, () => this.handleQuerySuccess());\n    this.bind.onQueryState(MODEL_EVENTS.CHANGE_ONE, QUERY_STATE_ATTRIBUTES.Q, (args: IAttributeChangedEventArg) =>\n      this.handleQueryStateChanged(args)\n    );\n    if (this.isAutoSuggestion()) {\n      this.bind.onRootElement(QueryEvents.duringQuery, (args: IDuringQueryEventArgs) => this.handleDuringQuery(args));\n    }\n    this.bind.onComponentOptions(MODEL_EVENTS.CHANGE_ONE, COMPONENT_OPTIONS_ATTRIBUTES.SEARCH_BOX, (args: IAttributeChangedEventArg) => {\n      if (args.value.enableQuerySyntax != null) {\n        this.options.enableQuerySyntax = args.value.enableQuerySyntax;\n      } else {\n        this.options.enableQuerySyntax = originalValueForQuerySyntax;\n      }\n      this.updateGrammar();\n    });\n    this.bind.onRootElement(OmniboxEvents.querySuggestGetFocus, (args: IQuerySuggestSelection) => this.handleQuerySuggestGetFocus(args));\n  }\n\n  /**\n   * Adds the current content of the input to the query and triggers a query if the current content of the input has\n   * changed since last submit.\n   *\n   * Also logs a `searchboxSubmit` event in the usage analytics.\n   */\n  public submit() {\n    this.magicBox.clearSuggestion();\n    this.updateQueryState();\n    this.triggerNewQuery(false, () => {\n      logSearchBoxSubmitEvent(this.usageAnalytics);\n    });\n    this.magicBox.blur();\n  }\n\n  /**\n   * Gets the current content of the input.\n   * @returns {string} The current content of the input.\n   */\n  public getText() {\n    return this.magicBox.getText();\n  }\n\n  /**\n   * Sets the content of the input\n   * @param text The string to set in the input.\n   */\n  public setText(text: string) {\n    this.magicBox.setText(text);\n    this.updateQueryState();\n  }\n\n  /**\n   * Clears the content of the input.\n   */\n  public clear() {\n    this.magicBox.clear();\n  }\n\n  /**\n   * Gets the `HTMLInputElement` of the Omnibox.\n   */\n  public getInput() {\n    return <HTMLInputElement>this.magicBox.element.querySelector('input');\n  }\n\n  public getResult() {\n    return this.magicBox.getResult();\n  }\n\n  public getDisplayedResult() {\n    return this.magicBox.getDisplayedResult();\n  }\n\n  public getCursor() {\n    return this.magicBox.getCursor();\n  }\n\n  public resultAtCursor(match?: string | { (result: Result): boolean }) {\n    return this.magicBox.resultAtCursor(match);\n  }\n\n  private createGrammar() {\n    let grammar = null;\n\n    if (this.options.enableQuerySyntax) {\n      grammar = Expressions(Complete);\n      if (this.options.enableFieldAddon) {\n        new FieldAddon(this);\n      }\n      if (this.options.fieldAlias != null) {\n        this.options.listOfFields = this.options.listOfFields || [];\n        this.options.listOfFields = this.options.listOfFields.concat(_.keys(this.options.fieldAlias));\n      }\n      if (this.options.enableQueryExtensionAddon) {\n        new QueryExtensionAddon(this);\n      }\n    } else {\n      grammar = { start: 'Any', expressions: { Any: /.*/ } };\n    }\n\n    if (this.options.grammar != null) {\n      grammar = this.options.grammar(grammar);\n    }\n\n    return grammar;\n  }\n\n  private updateGrammar() {\n    const grammar = this.createGrammar();\n    this.magicBox.grammar = new Grammar(grammar.start, grammar.expressions);\n    this.magicBox.setText(this.magicBox.getText());\n  }\n\n  private createMagicBox() {\n    const grammar = this.createGrammar();\n    this.magicBox = createMagicBox(this.element, new Grammar(grammar.start, grammar.expressions), {\n      inline: this.options.inline,\n      selectableSuggestionClass: 'coveo-omnibox-selectable',\n      selectedSuggestionClass: 'coveo-omnibox-selected',\n      suggestionTimeout: this.options.omniboxTimeout\n    });\n\n    const input = $$(this.magicBox.element).find('input');\n\n    if (input) {\n      $$(input).setAttribute('aria-label', l('Search'));\n    }\n\n    this.setupMagicBox();\n  }\n\n  private setupMagicBox() {\n    this.magicBox.onmove = () => {\n      // We assume that once the user has moved its selection, it becomes an explicit omnibox analytics event\n      if (this.isAutoSuggestion()) {\n        this.modifyEventTo = this.getOmniboxAnalyticsEventCause();\n      }\n      this.movedOnce = true;\n    };\n\n    this.magicBox.onfocus = () => {\n      if (this.isAutoSuggestion()) {\n        // This flag is used to block the automatic query when the UI is loaded with a query (#q=foo)\n        // and then the input is focused. We want to block that query, even if it match the suggestion\n        // Only when there is an actual change in the input (user typing something) is when we want the automatic query to kick in\n        this.skipAutoSuggest = true;\n      }\n    };\n\n    this.magicBox.onSuggestions = (suggestions: IOmniboxSuggestion[]) => {\n      // If text is empty, this can mean that user selected text from the search box\n      // and hit \"delete\" : Reset the partial queries in this case\n      if (Utils.isEmptyString(this.getText())) {\n        this.omniboxAnalytics.partialQueries = [];\n      }\n      this.movedOnce = false;\n      this.lastSuggestions = suggestions;\n      if (this.isAutoSuggestion() && !this.skipAutoSuggest) {\n        this.searchAsYouType();\n      }\n    };\n\n    if (this.options.enableSearchAsYouType) {\n      $$(this.element).addClass('coveo-magicbox-search-as-you-type');\n    }\n\n    this.magicBox.onchange = () => {\n      this.skipAutoSuggest = false;\n      const text = this.getText();\n      if (text != undefined && text != '') {\n        if (this.isAutoSuggestion()) {\n          if (this.movedOnce) {\n            this.searchAsYouType(true);\n          }\n        } else if (this.options.enableSearchAsYouType) {\n          this.searchAsYouType(true);\n        }\n      } else {\n        this.clear();\n      }\n    };\n\n    if (this.options.placeholder) {\n      (<HTMLInputElement>this.magicBox.element.querySelector('input')).placeholder = this.options.placeholder;\n    }\n    this.magicBox.onsubmit = () => this.submit();\n\n    this.magicBox.onselect = (suggestion: IOmniboxSuggestion) => {\n      const index = _.indexOf(this.lastSuggestions, suggestion);\n      const suggestions = _.compact(_.map(this.lastSuggestions, suggestion => suggestion.text));\n      this.magicBox.clearSuggestion();\n      this.updateQueryState();\n      // A bit tricky here : When it's machine learning auto suggestions\n      // the mouse selection and keyboard selection acts differently :\n      // keyboard selection will automatically do the query (which will log a search as you type event -> further modified by this.modifyEventTo if needed)\n      // mouse selection will not \"auto\" send the query.\n      // the movedOnce variable detect the keyboard movement, and is used to differentiate mouse vs keyboard\n      if (!this.isAutoSuggestion()) {\n        this.usageAnalytics.cancelAllPendingEvents();\n        this.triggerNewQuery(false, () => {\n          this.usageAnalytics.logSearchEvent<IAnalyticsOmniboxSuggestionMeta>(\n            this.getOmniboxAnalyticsEventCause(),\n            this.buildCustomDataForPartialQueries(index, suggestions)\n          );\n        });\n      } else if (this.isAutoSuggestion() && this.movedOnce) {\n        this.handleAutoSuggestionWithKeyboard(index, suggestions);\n      } else if (this.isAutoSuggestion() && !this.movedOnce) {\n        this.handleAutoSuggestionsWithMouse(index, suggestions);\n      }\n\n      // Consider a selection like a reset of the partial queries (it's the end of a suggestion pattern)\n      if (this.isAutoSuggestion()) {\n        this.omniboxAnalytics.partialQueries = [];\n      }\n    };\n\n    this.magicBox.onblur = () => {\n      if (this.isAutoSuggestion()) {\n        this.setText(this.getQuery(true));\n        this.usageAnalytics.sendAllPendingEvents();\n      }\n    };\n\n    this.magicBox.onclear = () => {\n      this.updateQueryState();\n      if (this.options.triggerQueryOnClear || this.options.enableSearchAsYouType) {\n        this.triggerNewQuery(false, () => {\n          this.usageAnalytics.logSearchEvent<IAnalyticsNoMeta>(analyticsActionCauseList.searchboxClear, {});\n        });\n      }\n    };\n\n    this.magicBox.ontabpress = () => {\n      this.handleTabPress();\n    };\n\n    this.magicBox.getSuggestions = () => this.handleSuggestions();\n  }\n\n  private handleAutoSuggestionWithKeyboard(index: number, suggestions: string[]) {\n    if (this.searchAsYouTypeTimeout) {\n      // Here, there is currently a search as you typed queued up :\n      // Think : user typed very quickly, then very quickly selected a suggestion (without waiting for the search as you type)\n      // Cancel the search as you type query, then immediately do the query with the selection (+analytics event with the selection)\n      this.usageAnalytics.cancelAllPendingEvents();\n      clearTimeout(this.searchAsYouTypeTimeout);\n      this.searchAsYouTypeTimeout = undefined;\n      this.triggerNewQuery(false, () => {\n        this.usageAnalytics.logSearchEvent<IAnalyticsOmniboxSuggestionMeta>(\n          this.getOmniboxAnalyticsEventCause(),\n          this.buildCustomDataForPartialQueries(index, suggestions)\n        );\n      });\n    } else {\n      // Here, the search as you type query has returned, but the analytics event has not ye been sent.\n      // Think : user typed slowly, the query returned, and then the user selected a suggestion.\n      // Since the analytics event has not yet been sent (search as you type event have a 5 sec delay)\n      // modify the pending event, then send the newly modified analytics event immediately.\n      this.modifyEventTo = this.getOmniboxAnalyticsEventCause();\n      this.modifyCustomDataOnPending(index, suggestions);\n      this.modifyQueryContentOnPending();\n      this.usageAnalytics.sendAllPendingEvents();\n    }\n  }\n\n  private handleAutoSuggestionsWithMouse(index: number, suggestions: string[]) {\n    if (this.searchAsYouTypeTimeout || index != 0) {\n      // Here : the user either very quickly chose the first suggestion, and the search as you type is still queued up.\n      // OR\n      // the user chose something different then the first suggestion.\n      // Remove the search as you type if it's there, and do the query with the suggestion directly.\n      this.clearSearchAsYouType();\n      this.usageAnalytics.cancelAllPendingEvents();\n      this.triggerNewQuery(false, () => {\n        this.usageAnalytics.logSearchEvent<IAnalyticsOmniboxSuggestionMeta>(\n          this.getOmniboxAnalyticsEventCause(),\n          this.buildCustomDataForPartialQueries(index, suggestions)\n        );\n      });\n    } else {\n      // Here : the user either very slowly chose a suggestion, and there is no search as you typed queued up\n      // AND\n      // the user chose the first suggestion.\n      // this means the query is already returned, but the analytics event is still queued up.\n      // modify the analytics event, and send it.\n      this.modifyEventTo = this.getOmniboxAnalyticsEventCause();\n      this.modifyCustomDataOnPending(index, suggestions);\n      this.modifyQueryContentOnPending();\n      this.usageAnalytics.sendAllPendingEvents();\n\n      // This should happen if :\n      // users did a (short) query first, which does not match the first suggestion. (eg: typed \"t\", then search)\n      // then, refocus the search box. The same suggestion(s) will re-appear.\n      // By selecting the first one with the mouse, we need to retrigger a query because this means the search as you type could not\n      // kick in and do the query automatically.\n      if (this.lastQuery != this.getText()) {\n        this.triggerNewQuery(false, () => {\n          this.usageAnalytics.logSearchEvent<IAnalyticsOmniboxSuggestionMeta>(\n            this.getOmniboxAnalyticsEventCause(),\n            this.buildCustomDataForPartialQueries(index, suggestions)\n          );\n        });\n      }\n    }\n  }\n\n  private modifyCustomDataOnPending(index: number, suggestions: string[]) {\n    const pendingEvt = this.usageAnalytics.getPendingSearchEvent();\n    if (pendingEvt instanceof PendingSearchAsYouTypeSearchEvent) {\n      const newCustomData = this.buildCustomDataForPartialQueries(index, suggestions);\n      _.each(_.keys(newCustomData), (k: string) => {\n        (<PendingSearchAsYouTypeSearchEvent>pendingEvt).modifyCustomData(k, newCustomData[k]);\n      });\n    }\n  }\n\n  private modifyQueryContentOnPending() {\n    const pendingEvt = this.usageAnalytics.getPendingSearchEvent();\n    if (pendingEvt instanceof PendingSearchAsYouTypeSearchEvent) {\n      const queryContent = this.getQuery(this.options.enableSearchAsYouType);\n      pendingEvt.modifyQueryContent(queryContent);\n    }\n  }\n\n  private buildCustomDataForPartialQueries(index: number, suggestions: string[]): IAnalyticsOmniboxSuggestionMeta {\n    this.updateOmniboxAnalytics(suggestions, index);\n    return this.omniboxAnalytics.buildCustomDataForPartialQueries();\n  }\n\n  private handleQuerySuggestGetFocus({ suggestion }: IQuerySuggestSelection) {\n    const suggestions = _.compact(_.map(this.lastSuggestions, suggestion => suggestion.text));\n    const ranking = this.lastSuggestions.indexOf(findWhere(this.lastSuggestions, { text: suggestion }));\n    this.updateOmniboxAnalytics(suggestions, ranking);\n  }\n\n  private updateOmniboxAnalytics(suggestions: string[], suggestionRanking: number) {\n    this.omniboxAnalytics.suggestions = suggestions;\n    this.omniboxAnalytics.suggestionRanking = suggestionRanking;\n  }\n\n  private handleSuggestions() {\n    const text = this.getText();\n    if (this.options.querySuggestCharacterThreshold <= text.length) {\n      const suggestionsEventArgs: IPopulateOmniboxSuggestionsEventArgs = {\n        suggestions: [],\n        omnibox: this\n      };\n\n      this.triggerOmniboxSuggestions(suggestionsEventArgs);\n\n      if (!Utils.isNullOrEmptyString(text)) {\n        this.omniboxAnalytics.partialQueries.push(text);\n      }\n\n      return _.compact(suggestionsEventArgs.suggestions);\n    } else {\n      return [];\n    }\n  }\n\n  private triggerOmniboxSuggestions(args: IPopulateOmniboxSuggestionsEventArgs) {\n    this.bind.trigger(this.element, OmniboxEvents.populateOmniboxSuggestions, args);\n\n    if (!$$(this.element).isDescendant(this.root)) {\n      this.bind.trigger(this.root, OmniboxEvents.populateOmniboxSuggestions, args);\n    }\n  }\n\n  private handleBeforeRedirect() {\n    this.updateQueryState();\n  }\n\n  private handleBuildingQuery(data: IBuildingQueryEventArgs) {\n    Assert.exists(data);\n    Assert.exists(data.queryBuilder);\n    this.updateQueryState();\n    this.lastQuery = this.getQuery(data.searchAsYouType);\n\n    const result: Result =\n      this.lastQuery == this.magicBox.getDisplayedResult().input\n        ? this.magicBox.getDisplayedResult().clone()\n        : this.magicBox.grammar.parse(this.lastQuery).clean();\n    const preprocessResultForQueryArgs: IOmniboxPreprocessResultForQueryEventArgs = {\n      result: result\n    };\n\n    if (this.options.enableQuerySyntax) {\n      const notQuotedValues = preprocessResultForQueryArgs.result.findAll('FieldValueNotQuoted');\n      _.each(notQuotedValues, (value: Result) => (value.value = '\"' + value.value.replace(/\"|\\u00A0/g, ' ') + '\"'));\n      if (this.options.fieldAlias) {\n        const fieldNames = preprocessResultForQueryArgs.result.findAll(\n          (result: Result) => result.expression.id == 'FieldName' && result.isSuccess()\n        );\n        _.each(fieldNames, (result: Result) => {\n          const alias = _.find(_.keys(this.options.fieldAlias), (alias: string) => alias.toLowerCase() == result.value.toLowerCase());\n          if (alias != null) {\n            result.value = <string>this.options.fieldAlias[alias];\n          }\n        });\n      }\n    }\n\n    this.triggerOmniboxPreprocessResultForQuery(preprocessResultForQueryArgs);\n    const query = preprocessResultForQueryArgs.result.toString();\n    new QueryboxQueryParameters(this.options).addParameters(data.queryBuilder, query);\n  }\n\n  private triggerOmniboxPreprocessResultForQuery(args: IOmniboxPreprocessResultForQueryEventArgs) {\n    this.bind.trigger(this.element, OmniboxEvents.omniboxPreprocessResultForQuery, args);\n\n    if (!$$(this.element).isDescendant(this.root)) {\n      this.bind.trigger(this.root, OmniboxEvents.omniboxPreprocessResultForQuery, args);\n    }\n  }\n\n  private handleNewQuery(data: INewQueryEventArgs) {\n    Assert.exists(data);\n    this.options.clearFiltersOnNewQuery && this.clearFiltersIfNewQuery(data);\n  }\n\n  private clearFiltersIfNewQuery({ origin, searchAsYouType }: INewQueryEventArgs) {\n    if (this.queryController.firstQuery) {\n      return;\n    }\n\n    // Prevent queries triggered by unrelated components to clear the the filters\n    // e.g., a facet selection\n    const validOrigins = [Omnibox.ID, 'SearchButton'];\n    if (!origin || validOrigins.indexOf(origin.type) === -1) {\n      return;\n    }\n\n    const lastQuery = this.queryController.getLastQuery().q || '';\n    const newQuery = this.getQuery(searchAsYouType);\n    if (lastQuery !== newQuery) {\n      this.bind.trigger(this.root, BreadcrumbEvents.clearBreadcrumb);\n    }\n  }\n\n  private handleTabPress() {\n    if (this.options.enableQuerySuggestAddon) {\n      this.handleTabPressForSuggestions();\n    }\n    this.handleTabPressForOldOmniboxAddon();\n  }\n\n  private handleTabPressForSuggestions() {\n    if (!this.options.enableSearchAsYouType) {\n      const suggestions = _.compact(_.map(this.lastSuggestions, suggestion => suggestion.text));\n      this.usageAnalytics.logCustomEvent(\n        this.getOmniboxAnalyticsEventCause(),\n        this.buildCustomDataForPartialQueries(0, suggestions),\n        this.element\n      );\n    } else {\n      this.setText(this.getQuery(true));\n    }\n  }\n\n  private handleTabPressForOldOmniboxAddon() {\n    const domSuggestions = this.lastSuggestions.filter(suggestions => suggestions.dom).map(suggestions => $$(suggestions.dom));\n    const selected = this.findAllElementsWithClass(domSuggestions, '.coveo-omnibox-selected');\n    if (selected.length > 0) {\n      $$(selected[0]).trigger('tabSelect');\n    } else if (!this.options.enableQuerySuggestAddon) {\n      const selectable = this.findAllElementsWithClass(domSuggestions, '.coveo-omnibox-selectable');\n      if (selectable.length > 0) {\n        $$(selectable[0]).trigger('tabSelect');\n      }\n    }\n  }\n\n  private findAllElementsWithClass(elements: Dom[], className: string): Dom[] {\n    return elements\n      .map(element => element.find(className))\n      .filter(s => s)\n      .reduce((total, s) => total.concat(s), []);\n  }\n\n  private triggerNewQuery(searchAsYouType: boolean, analyticsEvent: () => void) {\n    clearTimeout(this.searchAsYouTypeTimeout);\n    const shouldExecuteQuery = this.shouldExecuteQuery(searchAsYouType);\n    this.lastQuery = this.getQuery(searchAsYouType);\n    shouldExecuteQuery && analyticsEvent();\n\n    this.queryController.executeQuery({\n      searchAsYouType: searchAsYouType,\n      logInActionsHistory: true,\n      cancel: !shouldExecuteQuery,\n      origin: this\n    });\n  }\n\n  private getQuery(searchAsYouType: boolean) {\n    if (this.lastQuery == this.magicBox.getText()) {\n      return this.lastQuery;\n    }\n\n    if (!searchAsYouType) {\n      return this.magicBox.getText();\n    }\n\n    const wordCompletion = this.magicBox.getWordCompletion();\n\n    if (wordCompletion != null) {\n      return wordCompletion;\n    }\n\n    const currentOmniboxSuggestion = this.magicBox.getWordCompletion() || this.getFirstSuggestion();\n    if (currentOmniboxSuggestion) {\n      return currentOmniboxSuggestion;\n    }\n\n    if (this.isAutoSuggestion()) {\n      return this.lastQuery || this.magicBox.getText();\n    }\n\n    return this.magicBox.getText();\n  }\n\n  private getFirstSuggestion() {\n    if (this.lastSuggestions == null) {\n      return '';\n    }\n\n    if (this.lastSuggestions.length <= 0) {\n      return '';\n    }\n\n    const textSuggestion = _.find(this.lastSuggestions, (suggestion: IOmniboxSuggestion) => suggestion.text != null);\n\n    if (textSuggestion == null) {\n      return '';\n    }\n\n    return textSuggestion.text;\n  }\n\n  public updateQueryState() {\n    this.queryStateModel.set(QueryStateModel.attributesEnum.q, this.magicBox.getText());\n  }\n\n  private handleQueryStateChanged(args: IAttributeChangedEventArg) {\n    Assert.exists(args);\n    const q = <string>args.value;\n    if (q != this.magicBox.getText()) {\n      this.magicBox.setText(q);\n    }\n  }\n\n  private handleQuerySuccess() {\n    if (!this.isAutoSuggestion()) {\n      this.omniboxAnalytics.partialQueries = [];\n    }\n  }\n\n  private handleDuringQuery(args: IDuringQueryEventArgs) {\n    // When the query results returns ... (args.promise)\n    args.promise.then(() => {\n      // Get a handle on a pending search as you type (those events are delayed, not sent instantly)\n      const pendingEvent = this.usageAnalytics.getPendingSearchEvent();\n      if (pendingEvent instanceof PendingSearchAsYouTypeSearchEvent) {\n        (<PendingSearchAsYouTypeSearchEvent>pendingEvent).beforeResolve.then(evt => {\n          // Check if we need to modify the event type beforeResolving it\n          args.promise.then(() => {\n            if (this.modifyEventTo) {\n              evt.modifyEventCause(this.modifyEventTo);\n              this.modifyEventTo = null;\n            }\n          });\n        });\n      }\n    });\n  }\n\n  private searchAsYouType(forceExecuteQuery = false) {\n    this.clearSearchAsYouType();\n    if (this.shouldExecuteQuery(true)) {\n      this.searchAsYouTypeTimeout = window.setTimeout(() => {\n        if (this.suggestionShouldTriggerQuery() || forceExecuteQuery) {\n          const suggestions = _.map(this.lastSuggestions, suggestion => suggestion.text);\n          const index = _.indexOf(suggestions, this.magicBox.getWordCompletion());\n          this.triggerNewQuery(true, () => {\n            this.usageAnalytics.logSearchAsYouType<IAnalyticsOmniboxSuggestionMeta>(\n              analyticsActionCauseList.searchboxAsYouType,\n              this.buildCustomDataForPartialQueries(index, suggestions)\n            );\n          });\n          this.clearSearchAsYouType();\n        }\n      }, this.options.searchAsYouTypeDelay);\n    }\n  }\n\n  private isAutoSuggestion() {\n    return this.options.enableSearchAsYouType && this.options.enableQuerySuggestAddon;\n  }\n\n  private shouldExecuteQuery(searchAsYouType: boolean) {\n    const text = this.getQuery(searchAsYouType);\n    if (this.searchInterface.options.allowQueriesWithoutKeywords === false) {\n      return this.lastQuery != text && Utils.isNonEmptyString(text);\n    }\n    return this.lastQuery != text && text != null;\n  }\n\n  private suggestionShouldTriggerQuery(suggestions = this.lastSuggestions) {\n    if (this.shouldExecuteQuery(true)) {\n      if (suggestions && suggestions[0]) {\n        const suggestion = suggestions[0];\n        // If we have access to a confidence level, return true if we are equal or above the minimum confidence level.\n        if (suggestion && suggestion.executableConfidence != undefined) {\n          return suggestion.executableConfidence >= MINIMUM_EXECUTABLE_CONFIDENCE;\n        }\n        // If we don't have access to a confidence level, return true only if it \"starts with\" the content of the search box\n        if (suggestion.text && suggestion.text.indexOf(this.magicBox.getText()) == 0) {\n          return true;\n        }\n      }\n    }\n    return false;\n  }\n\n  private clearSearchAsYouType() {\n    clearTimeout(this.searchAsYouTypeTimeout);\n    this.searchAsYouTypeTimeout = undefined;\n  }\n\n  private getOmniboxAnalyticsEventCause() {\n    if (this.searchInterface instanceof StandaloneSearchInterface) {\n      return analyticsActionCauseList.omniboxFromLink;\n    }\n    return analyticsActionCauseList.omniboxAnalytics;\n  }\n}\n\nOmnibox.options = { ...Omnibox.options, ...Querybox.options };\nInitialization.registerAutoCreateComponent(Omnibox);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Omnibox/Omnibox.ts","import { IFormWidget, IFormWidgetSettable } from './FormWidgets';\nimport { $$ } from '../../utils/Dom';\nimport * as _ from 'underscore';\nimport { l } from '../../strings/Strings';\nimport 'styling/vapor/_MultiSelect';\nimport { Utils } from '../../utils/Utils';\nimport { exportGlobally } from '../../GlobalExports';\n\n/**\n * A multi select widget with standard styling.\n */\nexport class MultiSelect implements IFormWidget, IFormWidgetSettable {\n  private element: HTMLSelectElement;\n\n  static doExport() {\n    exportGlobally({\n      MultiSelect: MultiSelect\n    });\n  }\n\n  /**\n   * Creates a new `MultiSelect`.\n   * @param onChange The function to call when the widget selected values change. This function takes the current\n   * `MultiSelect` instance as an argument.\n   * @param options The values which can be selected with the multi select.\n   * @param label The label to display for the multi select.\n   */\n  constructor(\n    public onChange: (multiSelect: MultiSelect) => void = (multiSelect: MultiSelect) => {},\n    public options: string[],\n    public label: string\n  ) {\n    this.buildContent();\n  }\n\n  /**\n   * Gets the element on which the multi select is bound.\n   * @returns {HTMLSelectElement} The multi select element.\n   */\n  public build(): HTMLElement {\n    return this.element;\n  }\n\n  /**\n   * Gets the element on which the multi select is bound.\n   * @returns {HTMLSelectElement} The multi select element.\n   */\n  public getElement(): HTMLElement {\n    return this.element;\n  }\n\n  /**\n   * Gets the currently selected values.\n   * @returns {string[]} The array of selected multi select values.\n   */\n  public getValue(): string[] {\n    return _.chain(<any>this.element.options)\n      .toArray()\n      .filter((opt: HTMLOptionElement) => opt.selected)\n      .map((selected: HTMLOptionElement) => selected.value)\n      .value();\n  }\n\n  /**\n   * Gets the currently un-selected values.\n   * @returns {string[]} The array of un-selected multi select values.\n   */\n  public getUnselectedValues(): string[] {\n    return _.chain(<any>this.element.options)\n      .toArray()\n      .filter((opt: HTMLOptionElement) => !opt.selected)\n      .map((selected: HTMLOptionElement) => selected.value)\n      .value();\n  }\n\n  /**\n   * Sets the currently selected values.\n   * @param values The values to select.\n   */\n  public setValue(values: string[]) {\n    const currentlySelected = this.getValue();\n\n    const currentStateSplit = _.partition(_.toArray(this.element.options), (opt: HTMLOptionElement) =>\n      _.contains(currentlySelected, opt.value)\n    );\n    const newStateToApplySplit = _.partition(_.toArray(this.element.options), (opt: HTMLOptionElement) => _.contains(values, opt.value));\n\n    _.each(newStateToApplySplit[0], (toSelect: HTMLOptionElement) => (toSelect.selected = true));\n    _.each(newStateToApplySplit[1], (toUnSelect: HTMLOptionElement) => (toUnSelect.selected = false));\n\n    let hasChanged = false;\n    if (!Utils.arrayEqual(currentStateSplit[0], newStateToApplySplit[0], false)) {\n      hasChanged = true;\n    }\n    if (!Utils.arrayEqual(currentStateSplit[1], newStateToApplySplit[1], false)) {\n      hasChanged = true;\n    }\n\n    if (hasChanged) {\n      $$(this.element).trigger('change');\n    }\n  }\n\n  /**\n   * Resets the multi select.\n   */\n  public reset() {\n    const currentlySelected = this.getValue();\n    this.element.selectedIndex = -1;\n    if (!Utils.isEmptyArray(currentlySelected)) {\n      $$(this.element).trigger('change');\n    }\n  }\n\n  private buildContent() {\n    this.element = <HTMLSelectElement>$$('select', {\n      className: 'coveo-multi-select',\n      multiple: '',\n      size: this.options.length.toString()\n    }).el;\n    const optgroup = $$('optgroup', {\n      className: 'coveo-list-group',\n      label: this.label\n    });\n    const options = _.map(this.options, opt => {\n      return $$('option', { value: opt, className: 'coveo-list-item' }, l(opt));\n    });\n    _.each(options, opt => optgroup.append(opt.el));\n    this.element.appendChild(optgroup.el);\n    $$(this.element).on('change', () => this.onChange(this));\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/FormWidgets/MultiSelect.ts","import { exportGlobally } from '../../GlobalExports';\nimport { l } from '../../strings/Strings';\nimport { AccessibleButton } from '../../utils/AccessibleButton';\nimport { $$ } from '../../utils/Dom';\nimport { SVGDom } from '../../utils/SVGDom';\nimport { SVGIcons } from '../../utils/SVGIcons';\nimport { Utils } from '../../utils/Utils';\nimport { IAnalyticsNoMeta, analyticsActionCauseList } from '../Analytics/AnalyticsActionListMeta';\nimport { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { Initialization } from '../Base/Initialization';\nimport { QueryStateModel } from '../../models/QueryStateModel';\n\nexport interface ISearchButtonOptions {\n  searchbox?: ISearchButtonSearchbox;\n}\n\nexport interface ISearchButtonSearchbox {\n  getText: () => string;\n}\n\n/**\n * The SearchButton component renders a search icon that the end user can click to trigger a new query.\n *\n * See also the {@link Searchbox} component, which can automatically instantiate a SearchButton component along with a\n * {@link Querybox} component or an {@link Omnibox} component.\n */\nexport class SearchButton extends Component {\n  static ID = 'SearchButton';\n\n  static doExport = () => {\n    exportGlobally({\n      SearchButton: SearchButton\n    });\n  };\n\n  static options: ISearchButtonOptions = {};\n\n  /**\n   * Creates a new SearchButton. Binds a `click` event on the element. Adds a search icon on the element.\n   * @param element The HTMLElement on which to instantiate the component.\n   * @param options The options for the SearchButton component.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time).\n   */\n  constructor(public element: HTMLElement, public options?: ISearchButtonOptions, bindings?: IComponentBindings) {\n    super(element, SearchButton.ID, bindings);\n\n    new AccessibleButton()\n      .withElement(element)\n      .withOwner(this.bind)\n      .withLabel(l('Search'))\n      .withSelectAction(() => this.handleClick())\n      .build();\n\n    // Provide a magnifier icon if element contains nothing\n    if (Utils.trim($$(this.element).text()) == '') {\n      const svgMagnifierContainer = $$('span', { className: 'coveo-search-button' }, SVGIcons.icons.search).el;\n      SVGDom.addClassToSVGInContainer(svgMagnifierContainer, 'coveo-search-button-svg');\n      const svgLoadingAnimationContainer = $$('span', { className: 'coveo-search-button-loading' }, SVGIcons.icons.loading).el;\n      SVGDom.addClassToSVGInContainer(svgLoadingAnimationContainer, 'coveo-search-button-loading-svg');\n      element.appendChild(svgMagnifierContainer);\n      element.appendChild(svgLoadingAnimationContainer);\n    }\n  }\n\n  /**\n   * Triggers the `click` event handler, which logs a `searchboxSubmit` event in the usage analytics and executes a\n   * query.\n   */\n  public click() {\n    this.handleClick();\n  }\n\n  private handleClick() {\n    this.logger.debug('Performing query following button click');\n    this.updateQueryStateModelWithSearchboxQuery();\n    this.usageAnalytics.logSearchEvent<IAnalyticsNoMeta>(analyticsActionCauseList.searchboxSubmit, {});\n    this.queryController.executeQuery({ origin: this, logInActionsHistory: true });\n  }\n\n  private updateQueryStateModelWithSearchboxQuery() {\n    const searchbox = this.options && this.options.searchbox;\n    searchbox && this.queryStateModel.set(QueryStateModel.attributesEnum.q, searchbox.getText());\n  }\n}\n\nInitialization.registerAutoCreateComponent(SearchButton);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/SearchButton/SearchButton.ts","import 'styling/_Sort';\nimport { exportGlobally } from '../../GlobalExports';\nimport { IBuildingQueryEventArgs, IQueryErrorEventArgs, IQuerySuccessEventArgs, QueryEvents } from '../../events/QueryEvents';\nimport { Assert } from '../../misc/Assert';\nimport { MODEL_EVENTS } from '../../models/Model';\nimport { QUERY_STATE_ATTRIBUTES, QueryStateModel } from '../../models/QueryStateModel';\nimport { $$ } from '../../utils/Dom';\nimport { SVGDom } from '../../utils/SVGDom';\nimport { SVGIcons } from '../../utils/SVGIcons';\nimport { Utils } from '../../utils/Utils';\nimport { logSortEvent } from '../Analytics/SharedAnalyticsCalls';\nimport { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { Initialization } from '../Base/Initialization';\nimport { SortCriteria, VALID_DIRECTION } from './SortCriteria';\nimport { AccessibleButton, ArrowDirection } from '../../utils/AccessibleButton';\nimport { l } from '../../strings/Strings';\nimport { findIndex, find, any } from 'underscore';\n\nexport interface ISortOptions {\n  sortCriteria?: SortCriteria[];\n  caption?: string;\n}\n/**\n * The `Sort` component renders a widget that the end user can interact with to select the criterion to use when sorting query results.\n *\n * To improve accessibility, it's recommended to group `Sort` components in a container with `role=\"radiogroup\"`.\n */\nexport class Sort extends Component {\n  static ID = 'Sort';\n\n  static doExport = () => {\n    exportGlobally({\n      Sort: Sort,\n      SortCriteria: SortCriteria\n    });\n  };\n\n  /**\n   * Options for the component\n   * @componentOptions\n   */\n  static options: ISortOptions = {\n    /**\n     * The sort criterion/criteria the end user can select/toggle between when interacting with this component instance.\n     *\n     * The available sort criteria are:\n     * - `relevancy`\n     * - `date ascending`/`date descending`\n     * - `qre`\n     * - `@field ascending`/`@field descending`, where you must replace `field` with the name of a sortable field in your index (e.g., `data-sort-criteria=\"@size ascending\"`).\n     *\n     * You can specify a comma separated list of sort criteria to toggle between when interacting with this component instance (e.g., `data-sort-criteria=\"date descending,date ascending\"`).\n     *\n     * You can specify multiple sort criteria to be used in the same request by separating them with a semicolon (e.g., `data-sort-criteria=\"@size ascending;date ascending\"` ).\n     *\n     * Interacting with this component instance will cycle through those criteria in the order they are listed in.\n     * Typically, you should only specify a list of sort criteria when you want the end user to be able to to toggle the direction of a `date` or `@field` sort criteria.\n     * Otherwise, you should configure a distinct `Sort` component instance for each sort criterion you want to make available in your search page.\n     *\n     * You must specify a valid value for this option in order for this component instance to work correctly.\n     *\n     * Examples:\n     *\n     * - `data-sort-criteria=\"date ascending\"` createes a Sort component that allows to sort on `date ascending`, without being able to toggle the order.\n     * - `data-sort-criteria=\"date ascending, date descending\"` creates a Sort component that allows end users to toggle between `date ascending` and `date descending` on click.\n     * - `data-sort-criteria=\"@size ascending; date descending\"` creates a Sort component that only allows end users to sort on `@size ascending`. The index then applies a second sort on `date descending` when two items are of equal value.\n     * - `data-sort-criteria=\"@size ascending; date descending, @size descending; date descending\"` creates a Sort component that allows end users to toggle between `@size ascending` and `@size descending`. For each value, the index applies a second sort on `date descending` when two items are of equal value.\n     */\n    sortCriteria: ComponentOptions.buildCustomListOption(\n      values => {\n        return values.map(criteria => {\n          // 'any' because Underscore won't accept the union type as an argument.\n          if (typeof criteria === 'string') {\n            return new SortCriteria(criteria);\n          } else {\n            return criteria as SortCriteria;\n          }\n        });\n      },\n      { required: true }\n    ),\n\n    /**\n     * The caption to display on this component instance.\n     *\n     * By default, the component uses the text content of the element it is instanciated on.\n     */\n    caption: ComponentOptions.buildLocalizedStringOption({ required: true })\n  };\n\n  private currentCriteria: SortCriteria;\n\n  private sortButton: HTMLElement;\n  private directionButton: HTMLElement;\n  private radioGroup: HTMLElement;\n\n  /**\n   * Creates a new `Sort` component instance.\n   * @param element The HTMLElement on which to instantiate the component.\n   * @param options The options for this component instance.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time).\n   */\n  constructor(public element: HTMLElement, public options?: ISortOptions, bindings?: IComponentBindings) {\n    super(element, Sort.ID, bindings);\n\n    this.options = ComponentOptions.initComponentOptions(element, Sort, options);\n\n    Assert.isLargerOrEqualsThan(1, this.options.sortCriteria.length);\n\n    this.bind.onQueryState(MODEL_EVENTS.CHANGE_ONE, QUERY_STATE_ATTRIBUTES.SORT, () => this.handleQueryStateChanged());\n    this.bind.onRootElement(QueryEvents.querySuccess, (args: IQuerySuccessEventArgs) => this.handleQuerySuccess(args));\n    this.bind.onRootElement(QueryEvents.buildingQuery, (args: IBuildingQueryEventArgs) => this.handleBuildingQuery(args));\n    this.bind.onRootElement(QueryEvents.queryError, (args: IQueryErrorEventArgs) => this.handleQueryError(args));\n    this.ensureDom();\n  }\n\n  public createDom() {\n    const el = $$(this.element);\n    el.on('click', () => this.selectAndExecuteQuery());\n    const innerText = el.text();\n    el.empty();\n\n    this.findOrCreateRadioGroup();\n    this.createSortButton(innerText);\n    if (this.isToggle()) {\n      this.createDirectionButton();\n    }\n\n    this.update();\n  }\n\n  /**\n   * Selects this `Sort` component.\n   *\n   * Updates the state model if selecting this component toggles its current [`sortCriteria`]{@link Sort.options.sortCriteria}.\n   *\n   * @param direction The sort direction. Can be one of: `ascending`, `descending`.\n   */\n  public select(direction?: string) {\n    if (direction) {\n      this.currentCriteria = find(this.options.sortCriteria, (criteria: SortCriteria) => {\n        return criteria.direction == direction;\n      });\n      this.updateQueryStateModel();\n    } else if (Utils.exists(this.currentCriteria)) {\n      this.selectNextCriteria();\n    } else {\n      this.selectFirstCriteria();\n    }\n  }\n\n  /**\n   * Selects this `Sort` component, then triggers a query if selecting this component toggles its current [`sortCriteria`]{@link Sort.options.sortCriteria}.\n   *\n   * Also logs an event in the usage analytics with the new current sort criteria.\n   */\n\n  public selectAndExecuteQuery() {\n    var oldCriteria = this.currentCriteria;\n    this.select();\n    if (oldCriteria != this.currentCriteria) {\n      this.executeSearchQuery();\n    }\n  }\n\n  public enable() {\n    $$(this.element).removeClass('coveo-tab-disabled');\n    this.update();\n    super.enable();\n  }\n\n  public disable() {\n    $$(this.element).addClass('coveo-tab-disabled');\n    super.disable();\n  }\n\n  /**\n   * Gets the current [`sortCriteria`]{@link Sort.options.sortCriteria} of this `Sort` component.\n   * @returns {SortCriteria}\n   */\n  public getCurrentCriteria(): SortCriteria {\n    return this.currentCriteria;\n  }\n\n  /**\n   * Indicates whether the name of any of the available [`sortCriteria`]{@link Sort.options.sortCriteria} of this `Sort` component matches the argument.\n   * @param sortId The sort criteria name to look for (e.g., `date descending`).\n   */\n  public match(sortId: string) {\n    return any(this.options.sortCriteria, (sortCriteria: SortCriteria) => sortId == sortCriteria.toString());\n  }\n\n  private findOrCreateRadioGroup() {\n    this.radioGroup = this.findRadioGroup();\n    if (!this.radioGroup) {\n      this.element.setAttribute('role', 'radiogroup');\n      this.radioGroup = this.element;\n    }\n  }\n\n  private createSortButton(innerText?: string) {\n    this.sortButton = $$('span').el;\n    this.sortButton.innerText = this.options.caption || innerText;\n    new AccessibleButton()\n      .withElement(this.sortButton)\n      .withEnterKeyboardAction(() => this.selectAndExecuteQuery())\n      .withArrowsAction((direction, e) => this.onArrowPressed(direction, e))\n      .withLabel(this.isToggle() ? this.getDirectionalLabel(this.initialDirection as VALID_DIRECTION) : this.getOmnidirectionalLabel())\n      .withRole('radio')\n      .build();\n    this.element.appendChild(this.sortButton);\n  }\n\n  private createDirectionButton() {\n    this.directionButton = $$('span', { className: 'coveo-icon' }, ...this.createIcons()).el;\n    new AccessibleButton()\n      .withElement(this.directionButton)\n      .withSelectAction(e => {\n        e.stopPropagation();\n        this.selectNextCriteriaAndExecuteQuery();\n      })\n      .withArrowsAction((direction, e) => this.onArrowPressed(direction, e))\n      .withLabel(\n        this.getDirectionalLabel(\n          this.initialDirection === VALID_DIRECTION.DESCENDING ? VALID_DIRECTION.ASCENDING : VALID_DIRECTION.DESCENDING\n        )\n      )\n      .withRole('radio')\n      .build();\n    this.element.appendChild(this.directionButton);\n  }\n\n  private onArrowPressed(direction: ArrowDirection, e: Event) {\n    this.selectNextRadioButton(direction === ArrowDirection.RIGHT || direction === ArrowDirection.DOWN ? 1 : -1);\n    e.stopPropagation();\n  }\n\n  private createIcons() {\n    const iconAscending = $$('span', { className: 'coveo-sort-icon-ascending' }, SVGIcons.icons.arrowUp);\n    SVGDom.addClassToSVGInContainer(iconAscending.el, 'coveo-sort-icon-ascending-svg');\n    const iconDescending = $$('span', { className: 'coveo-sort-icon-descending' }, SVGIcons.icons.arrowDown);\n    SVGDom.addClassToSVGInContainer(iconDescending.el, 'coveo-sort-icon-descending-svg');\n    return [iconAscending, iconDescending];\n  }\n\n  private findRadioGroup(element = this.element) {\n    if (!element || element === document.body) {\n      return null;\n    }\n    if (element.getAttribute('role') === 'radiogroup') {\n      return element;\n    }\n    return this.findRadioGroup(element.parentElement);\n  }\n\n  private selectNextRadioButton(direction = 1) {\n    const radioButtons = $$(this.radioGroup).findAll('[role=\"radio\"]');\n    const currentIndex = findIndex(radioButtons, radio => radio.getAttribute('aria-checked') === 'true');\n    let indexToSelect: number;\n    const isAnythingSelected = currentIndex !== -1;\n    if (isAnythingSelected) {\n      indexToSelect = (currentIndex + direction + radioButtons.length) % radioButtons.length;\n    } else {\n      if (direction >= 0) {\n        indexToSelect = 0;\n      } else {\n        indexToSelect = radioButtons.length - 1;\n      }\n    }\n    const radioToSelect = radioButtons[indexToSelect];\n    radioToSelect.focus();\n    radioToSelect.click();\n  }\n\n  private executeSearchQuery() {\n    this.queryController.deferExecuteQuery({\n      beforeExecuteQuery: () => logSortEvent(this.usageAnalytics, this.currentCriteria.sort + this.currentCriteria.direction)\n    });\n  }\n\n  private selectFirstCriteria() {\n    this.currentCriteria = this.options.sortCriteria[0];\n    this.updateQueryStateModel();\n  }\n\n  private selectNextCriteria() {\n    const indexOfCurrentCriteria = this.currentCriteria ? this.options.sortCriteria.indexOf(this.currentCriteria) : 0;\n    this.currentCriteria = this.options.sortCriteria[(indexOfCurrentCriteria + 1) % this.options.sortCriteria.length];\n    this.updateQueryStateModel();\n  }\n\n  private selectNextCriteriaAndExecuteQuery() {\n    const oldCriteria = this.currentCriteria;\n    this.selectNextCriteria();\n    if (oldCriteria != this.currentCriteria) {\n      this.executeSearchQuery();\n    }\n  }\n\n  private handleQueryStateChanged() {\n    this.update();\n  }\n\n  private update() {\n    // Basically, if the criteria in the model fits with one of ours, it'll become our active criteria\n    var sortCriteria = <string>this.queryStateModel.get(QueryStateModel.attributesEnum.sort);\n    if (Utils.isNonEmptyString(sortCriteria)) {\n      var criteriaFromModel = SortCriteria.parse(sortCriteria);\n      this.currentCriteria = find(this.options.sortCriteria, (criteria: SortCriteria) => criteriaFromModel.equals(criteria));\n    } else {\n      this.currentCriteria = null;\n    }\n    this.updateAppearance();\n    this.updateAccessibilityProperties();\n  }\n\n  private get captionIsDefined() {\n    return Utils.isNonEmptyString(this.options.caption);\n  }\n\n  private get currentDirection() {\n    return this.currentCriteria ? this.currentCriteria.direction : this.initialDirection;\n  }\n\n  private get initialDirection() {\n    return this.options.sortCriteria[0].direction;\n  }\n\n  private get displayedSortText() {\n    return this.captionIsDefined ? this.options.caption : this.element.textContent;\n  }\n\n  private handleBuildingQuery(data: IBuildingQueryEventArgs) {\n    Assert.exists(data);\n\n    var sort = this.queryStateModel.get(QueryStateModel.attributesEnum.sort);\n    if (sort == QueryStateModel.defaultAttributes.sort || this.isSelected()) {\n      if (this.currentCriteria) {\n        this.currentCriteria.putInQueryBuilder(data.queryBuilder);\n      }\n    }\n  }\n\n  private handleQuerySuccess(data: IQuerySuccessEventArgs) {\n    if (data.results.results.length == 0) {\n      $$(this.element).addClass('coveo-sort-hidden');\n    } else {\n      $$(this.element).removeClass('coveo-sort-hidden');\n    }\n  }\n\n  private handleQueryError(data: IQueryErrorEventArgs) {\n    $$(this.element).addClass('coveo-sort-hidden');\n  }\n\n  private isToggle(): boolean {\n    return this.options.sortCriteria.length > 1;\n  }\n\n  private isSelected(): boolean {\n    return Utils.exists(this.currentCriteria);\n  }\n\n  private updateAppearance() {\n    $$(this.element).toggleClass('coveo-selected', this.isSelected());\n    if (this.isToggle()) {\n      $$(this.element).removeClass('coveo-ascending');\n      $$(this.element).removeClass('coveo-descending');\n      if (this.isSelected()) {\n        $$(this.element).addClass(this.currentDirection === 'ascending' ? 'coveo-ascending' : 'coveo-descending');\n      }\n    }\n  }\n\n  private updateAccessibilityProperties() {\n    this.sortButton.setAttribute('aria-controls', this.resultListsIds);\n    const directionIsInitial = this.currentDirection === this.initialDirection;\n    this.sortButton.setAttribute('aria-checked', `${this.isSelected() && directionIsInitial}`);\n    if (this.isToggle()) {\n      this.directionButton.setAttribute('aria-controls', this.resultListsIds);\n      this.directionButton.setAttribute('aria-checked', `${this.isSelected() && !directionIsInitial}`);\n    }\n  }\n\n  private get resultListsIds() {\n    const resultLists = this.searchInterface.getComponents('ResultList') as Component[];\n    return resultLists.map(resultList => resultList.element.id).join(' ');\n  }\n\n  private getDirectionalLabel(direction: VALID_DIRECTION) {\n    const localizedCaption = l(this.displayedSortText);\n    return direction === VALID_DIRECTION.DESCENDING\n      ? l('SortResultsByDescending', localizedCaption)\n      : l('SortResultsByAscending', localizedCaption);\n  }\n\n  private getOmnidirectionalLabel(): string {\n    const localizedCaption = l(this.displayedSortText);\n    return l('SortResultsBy', localizedCaption);\n  }\n\n  private updateQueryStateModel() {\n    this.queryStateModel.set(QueryStateModel.attributesEnum.sort, this.currentCriteria.toString());\n  }\n}\n\nInitialization.registerAutoCreateComponent(Sort);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Sort/Sort.ts","import { Component, Initialization } from '../../Core';\nimport { exportGlobally } from '../../GlobalExports';\nimport { IQueryResult } from '../../rest/QueryResult';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { IFieldOption } from '../Base/IComponentOptions';\nimport { FieldValue, IFieldValueOptions } from '../FieldValue/FieldValue';\n\nexport interface IImageFieldValue {\n  field?: IFieldOption;\n  width?: number;\n  height?: number;\n  alt?: string;\n  srcTemplate?: string;\n}\n\n/**\n * This component renders an image from a URL retrieved in a given [`field`]{@link ImageFieldValue.options.field}.\n *\n * A typical use case of this component is to display product images in the context of commerce.\n *\n * @isresulttemplatecomponent\n * @availablesince [September 2019 Release (v2.7023)](https://docs.coveo.com/en/2990/)\n */\nexport class ImageFieldValue extends Component {\n  static ID = 'ImageFieldValue';\n  static doExport = () => {\n    exportGlobally({\n      ImageFieldValue: ImageFieldValue\n    });\n  };\n\n  /**\n   * The options for the component\n   * @componentOptions\n   */\n  static options: IImageFieldValue = {\n    /**\n     * **Required**. The name of a field whose value is the URL of the image to display.\n     *\n     * **Note:** The component uses the value of this field to set the `src` attribute of the [`img`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img) HTML tag it generates.\n     */\n    field: ComponentOptions.buildFieldOption({ required: true }),\n    /**\n     * The width of the image (in pixels).\n     *\n     * **Note:** The component uses this value to set the `width` attribute of the [`img`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img) HTML tag it generates.\n     */\n    width: ComponentOptions.buildNumberOption(),\n    /**\n     * The height of the image (in pixels).\n     *\n     * **Note:** The component uses this value to set the `height` attribute of the [`img`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img) HTML tag it generates.\n     */\n    height: ComponentOptions.buildNumberOption(),\n    /**\n     * A [template literal](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Template_literals)\n     * from which to generate the `img` tag's `src` attribute value.\n     *\n     * This option overrides the [`field`]{@link ImageFieldValue.options.field} option value.\n     *\n     * The template literal can reference any number of fields from the parent result. It can also reference global\n     * scope properties.\n     *\n     * **Examples:**\n     *\n     * - The following markup generates an `src` value such as `http://uri.com?id=itemTitle`:\n     *\n     * ```html\n     * <a class='CoveoImageFieldValue' data-src-template='${clickUri}?id=${raw.title}'></a>\n     * ```\n     *\n     * - The following markup generates an `src` value such as `localhost/fooBar`:\n     *\n     * ```html\n     * <a class='CoveoImageFieldValue' data-src-template='${window.location.hostname}/{Foo.Bar}'></a>\n     * ```\n     *\n     * Default value is `undefined`.\n     */\n    srcTemplate: ComponentOptions.buildStringOption()\n  };\n\n  /**\n   * Creates a new ImageFieldValue.\n   * @param element The HTMLElement on which to instantiate the component.\n   * @param options The options for the ImageFieldValue component.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time).\n   * @param result The result to associate the component with.\n   */\n  constructor(public element: HTMLElement, public options: IImageFieldValue, bindings?: IComponentBindings, public result?: IQueryResult) {\n    super(element, ImageFieldValue.ID, bindings);\n\n    this.options = ComponentOptions.initComponentOptions(element, ImageFieldValue, options);\n\n    const fieldValueOption: IFieldValueOptions = {\n      field: this.options.field,\n      helper: 'image',\n      htmlValue: true,\n      helperOptions: {\n        height: this.options.height,\n        width: this.options.width,\n        alt: result.title,\n        srcTemplate: this.options.srcTemplate\n      }\n    };\n    new FieldValue(element, fieldValueOption, bindings, result);\n  }\n}\n\nInitialization.registerAutoCreateComponent(ImageFieldValue);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/FieldImage/ImageFieldValue.ts","import { $$, IOffset } from './Dom';\n\nexport interface IPopupPosition {\n  vertical: PopupVerticalAlignment;\n  horizontal: PopupHorizontalAlignment;\n  verticalOffset?: number;\n  horizontalOffset?: number;\n  horizontalClip?: boolean;\n}\n\nexport enum PopupVerticalAlignment {\n  TOP,\n  MIDDLE,\n  BOTTOM,\n  INNERTOP,\n  INNERBOTTOM\n}\n\nexport enum PopupHorizontalAlignment {\n  LEFT,\n  CENTER,\n  RIGHT,\n  INNERLEFT,\n  INNERRIGHT\n}\n\ninterface IPopupElementBoundary {\n  top: number;\n  left: number;\n  right: number;\n  bottom: number;\n}\n\nexport class PopupUtils {\n  static positionPopup(\n    popUp: HTMLElement,\n    nextTo: HTMLElement,\n    boundary: HTMLElement,\n    desiredPosition: IPopupPosition,\n    appendTo?: HTMLElement,\n    checkForBoundary = 0\n  ) {\n    popUp.style.position = 'absolute';\n    if (appendTo) {\n      $$(appendTo).append(popUp);\n    }\n    desiredPosition.verticalOffset = desiredPosition.verticalOffset ? desiredPosition.verticalOffset : 0;\n    desiredPosition.horizontalOffset = desiredPosition.horizontalOffset ? desiredPosition.horizontalOffset : 0;\n\n    let popUpPosition = $$(nextTo).offset();\n    PopupUtils.basicVerticalAlignment(popUpPosition, popUp, nextTo, desiredPosition);\n    PopupUtils.basicHorizontalAlignment(popUpPosition, popUp, nextTo, desiredPosition);\n    PopupUtils.finalAdjustement($$(popUp).offset(), popUpPosition, popUp, desiredPosition);\n\n    let popUpBoundary = PopupUtils.getBoundary(popUp);\n    let boundaryPosition = PopupUtils.getBoundary(boundary);\n    if (checkForBoundary < 2) {\n      let checkBoundary = PopupUtils.checkForOutOfBoundary(popUpBoundary, boundaryPosition);\n      if (checkBoundary.horizontal != 'ok' && desiredPosition.horizontalClip === true) {\n        let width = popUp.offsetWidth;\n        if (popUpBoundary.left < boundaryPosition.left) {\n          width -= boundaryPosition.left - popUpBoundary.left;\n        }\n        if (popUpBoundary.right > boundaryPosition.right) {\n          width -= popUpBoundary.right - boundaryPosition.right;\n        }\n        popUp.style.width = width + 'px';\n        checkBoundary.horizontal = 'ok';\n      }\n      if (checkBoundary.vertical != 'ok' || checkBoundary.horizontal != 'ok') {\n        let newDesiredPosition = PopupUtils.alignInsideBoundary(desiredPosition, checkBoundary);\n        PopupUtils.positionPopup(popUp, nextTo, boundary, newDesiredPosition, appendTo, checkForBoundary + 1);\n      }\n    }\n  }\n\n  private static finalAdjustement(popUpOffSet: IOffset, popUpPosition: IOffset, popUp: HTMLElement, desiredPosition: IPopupPosition) {\n    let position = $$(popUp).position();\n    popUp.style.top = position.top + desiredPosition.verticalOffset - (popUpOffSet.top - popUpPosition.top) + 'px';\n    popUp.style.left = position.left + desiredPosition.horizontalOffset - (popUpOffSet.left - popUpPosition.left) + 'px';\n  }\n\n  private static basicVerticalAlignment(popUpPosition: IOffset, popUp: HTMLElement, nextTo: HTMLElement, desiredPosition: IPopupPosition) {\n    switch (desiredPosition.vertical) {\n      case PopupVerticalAlignment.TOP:\n        popUpPosition.top -= popUp.offsetHeight;\n        break;\n      case PopupVerticalAlignment.BOTTOM:\n        popUpPosition.top += nextTo.offsetHeight;\n        break;\n      case PopupVerticalAlignment.MIDDLE:\n        popUpPosition.top -= popUp.offsetHeight / 3;\n      case PopupVerticalAlignment.INNERTOP:\n        break; // Nothing to do, it's the default alignment normally\n      case PopupVerticalAlignment.INNERBOTTOM:\n        popUpPosition.top -= popUp.offsetHeight - nextTo.offsetHeight;\n        break;\n      default:\n        break;\n    }\n  }\n\n  private static basicHorizontalAlignment(\n    popUpPosition: IOffset,\n    popUp: HTMLElement,\n    nextTo: HTMLElement,\n    desiredPosition: IPopupPosition\n  ) {\n    switch (desiredPosition.horizontal) {\n      case PopupHorizontalAlignment.LEFT:\n        popUpPosition.left -= popUp.offsetWidth;\n        break;\n      case PopupHorizontalAlignment.RIGHT:\n        popUpPosition.left += nextTo.offsetWidth;\n        break;\n      case PopupHorizontalAlignment.CENTER:\n        popUpPosition.left += PopupUtils.offSetToAlignCenter(popUp, nextTo);\n        break;\n      case PopupHorizontalAlignment.INNERLEFT:\n        break; // Nothing to do, it's the default alignment normally\n      case PopupHorizontalAlignment.INNERRIGHT:\n        popUpPosition.left -= popUp.offsetWidth - nextTo.offsetWidth;\n        break;\n      default:\n        break;\n    }\n  }\n\n  private static alignInsideBoundary(oldPosition: IPopupPosition, checkBoundary) {\n    let newDesiredPosition = oldPosition;\n    if (checkBoundary.horizontal == 'left') {\n      newDesiredPosition.horizontal = PopupHorizontalAlignment.RIGHT;\n    }\n    if (checkBoundary.horizontal == 'right') {\n      newDesiredPosition.horizontal = PopupHorizontalAlignment.LEFT;\n    }\n    if (checkBoundary.vertical == 'top') {\n      newDesiredPosition.vertical = PopupVerticalAlignment.BOTTOM;\n    }\n    if (checkBoundary.vertical == 'bottom') {\n      newDesiredPosition.vertical = PopupVerticalAlignment.TOP;\n    }\n    return newDesiredPosition;\n  }\n\n  private static offSetToAlignCenter(popUp: HTMLElement, nextTo: HTMLElement) {\n    return (nextTo.offsetWidth - popUp.offsetWidth) / 2;\n  }\n\n  private static getBoundary(element: HTMLElement) {\n    let boundaryOffset = $$(element).offset();\n    let toAddVertically;\n    if (element.tagName.toLowerCase() == 'body') {\n      toAddVertically = Math.max(element.scrollHeight, element.offsetHeight);\n    } else if (element.tagName.toLowerCase() == 'html') {\n      toAddVertically = Math.max(element.clientHeight, element.scrollHeight, element.offsetHeight);\n    } else {\n      toAddVertically = element.offsetHeight;\n    }\n    return {\n      top: boundaryOffset.top,\n      left: boundaryOffset.left,\n      right: boundaryOffset.left + element.offsetWidth,\n      bottom: boundaryOffset.top + toAddVertically\n    };\n  }\n\n  private static checkForOutOfBoundary(popUpBoundary: IPopupElementBoundary, boundary: IPopupElementBoundary) {\n    let ret = {\n      vertical: 'ok',\n      horizontal: 'ok'\n    };\n    if (popUpBoundary.top < boundary.top) {\n      ret.vertical = 'top';\n    }\n    if (popUpBoundary.bottom > boundary.bottom) {\n      ret.vertical = 'bottom';\n    }\n    if (popUpBoundary.left < boundary.left) {\n      ret.horizontal = 'left';\n    }\n    if (popUpBoundary.right > boundary.right) {\n      ret.horizontal = 'right';\n    }\n    return ret;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/PopupUtils.ts","/// <reference path=\"../Facet/FacetHeader.ts\" />\n/// <reference path=\"../../controllers/FacetSliderQueryController.ts\" />\n\nimport 'styling/_FacetSlider';\nimport { debounce, every, map } from 'underscore';\nimport { FacetSliderQueryController } from '../../controllers/FacetSliderQueryController';\nimport { BreadcrumbEvents, IBreadcrumbItem, IPopulateBreadcrumbEventArgs } from '../../events/BreadcrumbEvents';\nimport { InitializationEvents } from '../../events/InitializationEvents';\nimport { IBuildingQueryEventArgs, IDoneBuildingQueryEventArgs, IQuerySuccessEventArgs, QueryEvents } from '../../events/QueryEvents';\nimport { ISearchAlertsPopulateMessageEventArgs, SearchAlertsEvents } from '../../events/SearchAlertEvents';\nimport { IGraphValueSelectedArgs, SliderEvents } from '../../events/SliderEvents';\nimport { exportGlobally } from '../../GlobalExports';\nimport { Assert } from '../../misc/Assert';\nimport { Defer } from '../../MiscModules';\nimport { IAttributeChangedEventArg, Model } from '../../models/Model';\nimport { QueryStateModel } from '../../models/QueryStateModel';\nimport { IGroupByResult } from '../../rest/GroupByResult';\nimport { l } from '../../strings/Strings';\nimport { getHeadingTag } from '../../utils/AccessibilityUtils';\nimport { $$ } from '../../utils/Dom';\nimport { SVGDom } from '../../utils/SVGDom';\nimport { SVGIcons } from '../../utils/SVGIcons';\nimport { Utils } from '../../utils/Utils';\nimport {\n  analyticsActionCauseList,\n  IAnalyticsFacetGraphSelectedMeta,\n  IAnalyticsFacetMeta,\n  IAnalyticsFacetSliderChangeMeta\n} from '../Analytics/AnalyticsActionListMeta';\nimport { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { IComponentOptionsObjectOptionArgs, IFieldOption, IQueryExpression } from '../Base/IComponentOptions';\nimport { Initialization } from '../Base/Initialization';\nimport { FacetHeader } from '../Facet/FacetHeader';\nimport { IDuringSlideEventArgs, IEndSlideEventArgs, ISliderGraphData, ISliderOptions, Slider } from '../Misc/Slider';\nimport { IResponsiveComponentOptions } from '../ResponsiveComponents/ResponsiveComponentsManager';\nimport { ResponsiveComponentsUtils } from '../ResponsiveComponents/ResponsiveComponentsUtils';\nimport { ResponsiveDropdownEvent } from '../ResponsiveComponents/ResponsiveDropdown/ResponsiveDropdown';\nimport { ResponsiveFacetOptions } from '../ResponsiveComponents/ResponsiveFacetOptions';\nimport { ResponsiveFacetSlider } from '../ResponsiveComponents/ResponsiveFacetSlider';\n\nexport interface IFacetSliderOptions extends ISliderOptions, IResponsiveComponentOptions {\n  dateField?: boolean;\n  queryOverride?: IQueryExpression;\n  id?: string;\n  field?: IFieldOption;\n  title?: string;\n}\n\n/**\n * The `FacetSlider` component creates a facet which contains a slider widget that allows the end user to filter results\n * based on a range of numerical values (e.g., a date range, a price range, etc.).\n *\n * **Note:**\n * > This component does **not** inherit from the [`Facet`]{@link Facet} component. Consequently, it does not offer the\n * > same configuration options. Moreover, some of the `FacetSlider` options (see\n * > [`getSteps`]{@link FacetSlider.options.getSteps} and [`valueCaption`]{@link FacetSlider.options.valueCaption})\n * > cannot be configured as `data-` attributes in the markup. If you wish to configure those options, you must either\n * > do so in the [`init`]{@link init} call of your search interface (see\n * > [Passing Component Options in the init Call](https://docs.coveo.com/en/346/#passing-component-options-in-the-init-call)),\n * > or before the `init` call, using the `options` top-level function (see\n * > [Passing Component Options Before the init Call](https://docs.coveo.com/en/346/#passing-component-options-before-the-init-call)).\n * @notSupportedIn salesforcefree\n */\nexport class FacetSlider extends Component {\n  /**\n   * The component options\n   * @componentOptions\n   */\n  static options: IFacetSliderOptions = {\n    /**\n     * Specifies the title to display on top of the `FacetSlider`.\n     *\n     * Default value is the localized string for `NoTitle`.\n     */\n    title: ComponentOptions.buildLocalizedStringOption({\n      localizedString: () => l('NoTitle'),\n      section: 'CommonOptions'\n    }),\n\n    /**\n     * Specifies whether the [`field`]{@link FacetSlider.options.field} for which you are requesting a range is a date\n     * field. This allows the `FacetSlider` to correctly build the outgoing [GroupByRequest]{@link IGroupByRequest} and\n     * render itself properly.\n     *\n     * Default value is `false`.\n     */\n    dateField: ComponentOptions.buildBooleanOption({ defaultValue: false, section: 'CommonOptions' }),\n\n    /**\n     * Specifies the index field whose values the `FacetSlider` should use.\n     *\n     * The field must be configured correctly as a Facet field in the index (see\n     * [Adding and Managing Fields](https://docs.coveo.com/en/1833/)).\n     *\n     * Specifying a value for this option is required for the `FacetSlider` component to work.\n     */\n    field: ComponentOptions.buildFieldOption({ groupByField: true, required: true, section: 'CommonOptions' }),\n\n    /**\n     * Specifies a unique identifier for the `FacetSlider`. Among other things, this identifier serves the purpose of\n     * saving the facet state in the URL hash.\n     *\n     * If you have two facets with the same field in the same page, you should specify a unique `id` value for at least\n     * one of those two facets. This `id` must be unique in the page.\n     *\n     * Default value is the [`field`]{@link FacetSlider.options.field} option value.\n     */\n    id: ComponentOptions.buildStringOption({\n      postProcessing: (value, options: IFacetSliderOptions) => value || <string>options.field\n    }),\n\n    /**\n     * Specifies the format to use when displaying date values.\n     *\n     * See also the [`dateField`]{@link FacetSlider.options.dateField} option.\n     *\n     * Default value is `MMM dd, yyyy`.\n     */\n    dateFormat: ComponentOptions.buildStringOption({ section: 'Display' }),\n\n    /**\n     * Specifies a query to filter automatic minimum and maximum values for the slider range.\n     *\n     * This is especially useful in the case of date ranges since the index may contain values which are not set, and\n     * thus return values from the year 1400 (the earliest date from the boost C++ library).\n     *\n     * **Example:**\n     *\n     * The query override in the following markup filters out any `@date` value anterior to January 1st 2000.\n     * ```html\n     * <div class=\"CoveoFacetSlider\" data-field=\"@date\" data-date-field=\"true\" data-query-override=\"@date>2000/01/01\"></div>\n     * ```\n     */\n    queryOverride: ComponentOptions.buildQueryExpressionOption({ section: 'Filtering' }),\n\n    /**\n     * Specifies the starting boundary of the slider.\n     *\n     * Date values are rounded to the nearest year when you set the [`dateField`]{@link FacetSlider.options.dateField}\n     * option to `true`.\n     *\n     * Default value is the lowest available field value in the index.\n     */\n    start: ComponentOptions.buildStringOption({ section: 'Filtering' }),\n\n    /**\n     * Specifies the ending boundary of the slider.\n     *\n     * Date values are rounded to the nearest year when you set the [`dateField`]{@link FacetSlider.options.dateField}\n     * option to `true`.\n     *\n     * Default value is the highest available field value in the index.\n     */\n    end: ComponentOptions.buildStringOption({ section: 'Filtering' }),\n\n    /**\n     * Specifies whether to exclude the outer bounds of the slider in the generated query when they are not active.\n     *\n     * Default value is `false`.\n     */\n    excludeOuterBounds: ComponentOptions.buildBooleanOption({ defaultValue: false, section: 'Filtering' }),\n\n    /**\n     * Specifies the number of decimal places to round the displayed numerical values to.\n     *\n     * Default (and minimum) value is `0`.\n     */\n    rounded: ComponentOptions.buildNumberOption({ min: 0, section: 'Filtering' }),\n\n    /**\n     * Specifies the number of steps to split the slider into.\n     *\n     * For example, if your range is [ 0 , 100 ] and you specify `10` steps, then the end user can move the slider only\n     * to the values [ 0, 10, 20, 30 ... , 100 ].\n     *\n     * For performance reasons, the maximum value for this option is `100`\n     *\n     * Default value is `undefined`, and the slider allows up to 100 steps. Minimum value is `2`.\n     */\n    steps: ComponentOptions.buildNumberOption({ min: 2 }),\n\n    /**\n     * Specifies whether you want a slider with two buttons instead of a slider with a single button.\n     *\n     * By default, only one button appears in the slider.\n     */\n    rangeSlider: ComponentOptions.buildBooleanOption(),\n\n    /**\n     * Specifies the caption options to use when displaying the field values.\n     *\n     * Available options are:\n     * - enable (`data-display-as-value-enable`): boolean; specifies whether to display the caption as a value. Default\n     * value is `true`.\n     * - unitSign (`data-display-as-value-unit-sign`): string; specifies the unit sign for this value (e.g., `$`).\n     * Default value is `undefined`.\n     * - separator (`data-display-as-value-separator`): string; specifies the character(s) to use as a separator in the\n     * caption. Default value is `\"-\"`.\n     */\n    displayAsValue: ComponentOptions.buildObjectOption(<IComponentOptionsObjectOptionArgs>{\n      subOptions: {\n        enable: ComponentOptions.buildBooleanOption({ defaultValue: true }),\n        unitSign: ComponentOptions.buildStringOption(),\n        separator: ComponentOptions.buildStringOption({ defaultValue: '-' })\n      },\n      section: 'Display'\n    }),\n\n    /**\n     * Specifies the percentage caption options to use when displaying the field values.\n     *\n     * Available options are:\n     * - enable (`data-display-as-percent-enable`): boolean; specifies whether to display the caption as a percentage.\n     * Default value is `false`.\n     * separator (`data-display-as-percent-separator`): string; specifies the character(s) to use as a separator in the\n     * caption. Default value is `\"-\"`.\n     */\n    displayAsPercent: ComponentOptions.buildObjectOption(<IComponentOptionsObjectOptionArgs>{\n      subOptions: {\n        enable: ComponentOptions.buildBooleanOption({ defaultValue: false }),\n        separator: ComponentOptions.buildStringOption({ defaultValue: '-' })\n      },\n      section: 'Display'\n    }),\n\n    /**\n     * Specifies whether to display a small graph on top of the slider.\n     *\n     * Available options are:\n     * - steps (`data-graph-steps`): number; specifies the number of steps/columns to display in your graph. Default\n     * value is `10`. Minimum value is `2`.\n     */\n    graph: ComponentOptions.buildObjectOption(<IComponentOptionsObjectOptionArgs>{\n      subOptions: {\n        steps: ComponentOptions.buildNumberOption({ min: 2 }),\n        animationDuration: ComponentOptions.buildNumberOption({ min: 0 }),\n        margin: ComponentOptions.buildObjectOption(<IComponentOptionsObjectOptionArgs>{\n          subOptions: {\n            top: ComponentOptions.buildNumberOption({ min: 0 }),\n            bottom: ComponentOptions.buildNumberOption({ min: 0 }),\n            left: ComponentOptions.buildNumberOption({ min: 0 }),\n            right: ComponentOptions.buildNumberOption({ min: 0 })\n          }\n        })\n      },\n      section: 'Graph'\n    }),\n\n    /**\n     * Specifies a function to generate the `FacetSlider` steps (see the [`steps`]{@link FacetSlider.options.steps}\n     * option). This function receives the `FacetSlider` boundaries (see the [`start`]{@link FacetSlider.options.start}\n     * and [`end`]{@link FacetSlider.options.end} options), and must return an array of numbers (the steps).\n     *\n     * **Note:**\n     * > You cannot set this option directly in the component markup as an HTML attribute. You must either set it in the\n     * > [`init`]{@link init} call of your search interface (see\n     * > [Passing Component Options in the init Call](https://docs.coveo.com/en/346/#passing-component-options-in-the-init-call)),\n     * > or before the `init` call, using the `options` top-level function (see\n     * > [Passing Component Options Before the init Call](https://docs.coveo.com/en/346/#passing-component-options-before-the-init-call)).\n     *\n     * **Example:**\n     * ```javascript\n     *\n     * var myGetStepsFunction = function(start, end) {\n     *   var result = [];\n     *   for (i = start; i < end; i += 2) {\n     *     result.push(i);\n     *   }\n     *   return result;\n     * }\n     *\n     * // You can set the option in the 'init' call:\n     * Coveo.init(document.querySelector(\"#search\"), {\n     *    FacetSlider: {\n     *      getSteps: myGetStepsFunction\n     *    }\n     * });\n     *\n     * // Or before the 'init' call, using the 'options' top-level function:\n     * // Coveo.options(document.querySelector(\"#search\"), {\n     * //   FacetSlider : {\n     * //     valueCaption : myGetStepsFunction\n     * //   }\n     * // });\n     * ```\n     */\n    getSteps: ComponentOptions.buildCustomOption<(start: number, end: number) => number[]>(() => {\n      return null;\n    }),\n\n    /**\n     * Specifies a function to generate the value caption for the `FacetSlider`. This function receives the current\n     * slider values (number[]), and must return the caption (string).\n     *\n     * **Note:**\n     * > You cannot set this option directly in the component markup as an HTML attribute. You must either set it in the\n     * > [`init`]{@link init} call of your search interface (see\n     * > [Passing Component Options in the init Call](https://docs.coveo.com/en/346/#passing-component-options-in-the-init-call)),\n     * > or before the `init` call, using the `options` top-level function (see\n     * > [Passing Component Options Before the init Call](https://docs.coveo.com/en/346/#passing-component-options-before-the-init-call)).\n     *\n     * **Example:**\n     * ```javascript\n     *\n     * var myValueCaptionFunction = function(values) {\n     *   return \"From \" + values[0] + \" to \" + values[1];\n     * }\n     *\n     * // You can set the option in the 'init' call:\n     * Coveo.init(document.querySelector(\"#search\"), {\n     *   FacetSlider: {\n     *     valueCaption: myValueCaptionFunction\n     *   }\n     * });\n     *\n     * // Or before the 'init' call, using the 'options' top-level function:\n     * // Coveo.options(document.querySelector(\"#search\"), {\n     * //   FacetSlider : {\n     * //     valueCaption : myValueCaptionFunction\n     * //   }\n     * // });\n     * ```\n     */\n    valueCaption: ComponentOptions.buildCustomOption<(values: number[]) => string>(() => {\n      return null;\n    }),\n    ...ResponsiveFacetOptions\n  };\n\n  static ID = 'FacetSlider';\n\n  static doExport = () => {\n    exportGlobally({\n      FacetSlider: FacetSlider,\n      Slider: Slider\n    });\n  };\n\n  public static DEBOUNCED_RESIZE_DELAY = 250;\n\n  public startOfSlider: number;\n  public endOfSlider: number;\n  public initialStartOfSlider: number;\n  public initialEndOfSlider: number;\n  public facetQueryController: FacetSliderQueryController;\n  public facetHeader: FacetHeader;\n  public onResize: EventListener;\n  public isSimpleSliderConfig = false;\n  public isFieldValueCompatible = false;\n\n  private rangeQueryStateAttribute: string;\n  private isEmpty = false;\n  private rangeFromUrlState: number[];\n  private delayedGraphData: ISliderGraphData[];\n\n  /**\n   * Creates a new `FacetSlider` component. Binds multiple query events as well.\n   * @param element The HTMLElement on which to instantiate the component.\n   * @param options The options for the `FacetSlider` component.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time).\n   * @param slider\n   */\n  constructor(public element: HTMLElement, public options: IFacetSliderOptions, bindings?: IComponentBindings, private slider?: Slider) {\n    super(element, FacetSlider.ID, bindings);\n    this.options = ComponentOptions.initComponentOptions(element, FacetSlider, options);\n    this.isSimpleSliderConfig = this.options.start != null && this.options.end != null;\n    ResponsiveFacetSlider.init(this.root, this, this.options);\n\n    if (this.options.excludeOuterBounds == null) {\n      this.options.excludeOuterBounds = false;\n    }\n\n    this.normalizeStartAndEndOptionsValues();\n\n    this.facetQueryController = new FacetSliderQueryController(this);\n\n    this.bindQueryStateEvents();\n    this.bindQueryEvents();\n    this.bindResizeEvents();\n    this.bindBreadcrumbEvents();\n    this.bind.onRootElement(SearchAlertsEvents.searchAlertsPopulateMessage, (args: ISearchAlertsPopulateMessageEventArgs) =>\n      this.handlePopulateSearchAlerts(args)\n    );\n  }\n\n  public isCurrentlyDisplayed() {\n    if (!$$(this.element).isVisible()) {\n      return false;\n    }\n\n    if ($$(this.element).hasClass('coveo-disabled-empty')) {\n      return false;\n    }\n    return true;\n  }\n\n  public createDom() {\n    this.facetHeader = new FacetHeader({\n      field: <string>this.options.field,\n      facetElement: this.element,\n      title: this.options.title,\n      enableClearElement: true,\n      enableCollapseElement: true,\n      facetSlider: this\n    });\n    this.element.appendChild(this.facetHeader.build());\n  }\n\n  /**\n   * Resets the `FacetSlider` (meaning that you need to set the range value as inactive).\n   */\n  public reset() {\n    if (this.slider) {\n      this.slider.initializeState();\n      this.updateQueryState();\n      this.updateAppearanceDependingOnState();\n    }\n  }\n\n  /**\n   * Gets the current selection in the slider.\n   *\n   * **Note:**\n   * > This method returns an array of number for selected date values. These numbers represent a number of milliseconds\n   * > before or after January 1, 1970. Therefore, you can use these numbers to instantiate standard JavaScript Date\n   * > objects.\n   *\n   * @returns {any} An array of number containing the first and last selected values, if possible. An array containing\n   * two `undefined` values otherwise.\n   */\n  public getSelectedValues(): number[] {\n    if (this.startOfSlider != undefined && this.endOfSlider != undefined) {\n      return [this.startOfSlider, this.endOfSlider];\n    } else {\n      return [undefined, undefined];\n    }\n  }\n\n  /**\n   * Sets the selected values in the slider.\n   *\n   * **Note:**\n   * > You must set date values with numbers representing a number of milliseconds before or after January 1, 1970. You\n   * > can easily extract such numbers from standard JavaScript Date objects.\n   *\n   * @param values [start, end] An array containing the first and last values to select in the slider.\n   */\n  public setSelectedValues(values: number[]): void {\n    this.setupSliderIfNeeded(undefined);\n    this.startOfSlider = values[0];\n    this.endOfSlider = values[1];\n    this.slider.setValues([this.startOfSlider, this.endOfSlider]);\n    this.updateAppearanceDependingOnState();\n  }\n\n  /**\n   * Indicates whether the `FacetSlider` is active. An active `FacetSlider` outputs an expression in the query when a\n   * search is performed.\n   * @returns {boolean} `true` if the FacetSlider is active; `false` otherwise.\n   */\n  public isActive(): boolean {\n    return (\n      !isNaN(this.startOfSlider) &&\n      !isNaN(this.endOfSlider) &&\n      !isNaN(this.initialStartOfSlider) &&\n      !isNaN(this.initialEndOfSlider) &&\n      (this.startOfSlider != this.initialStartOfSlider || this.endOfSlider != this.initialEndOfSlider)\n    );\n  }\n\n  public getSliderBoundaryForQuery(): number[] {\n    let needToReturnABoundary = false;\n    if (!this.slider) {\n      needToReturnABoundary = true;\n    } else if (this.slider && this.isActive()) {\n      needToReturnABoundary = true;\n    }\n    if (needToReturnABoundary) {\n      return this.generateBoundary();\n    } else {\n      return undefined;\n    }\n  }\n\n  // There is delayed graph data if at the time the facet slider tried to draw, the facet was hidden in the\n  // facet dropdown. This method will draw delayed graph data if it exists.\n  public drawDelayedGraphData() {\n    if (this.delayedGraphData != null && !this.isEmpty) {\n      this.slider.drawGraph(this.delayedGraphData);\n    }\n    this.delayedGraphData = null;\n  }\n\n  public hasAGraph() {\n    return this.options.graph != undefined;\n  }\n\n  private normalizeStartAndEndOptionsValues() {\n    if (this.options.start) {\n      this.options.start = this.options.dateField\n        ? <any>new Date(this.options.start.replace(/-/g, '/')).getTime()\n        : <any>Number(this.options.start);\n    }\n\n    if (this.options.end) {\n      this.options.end = this.options.dateField\n        ? <any>new Date(this.options.end.replace(/-/g, '/')).getTime()\n        : <any>Number(this.options.end);\n    }\n  }\n\n  private bindQueryEvents() {\n    this.bind.onRootElement(QueryEvents.newQuery, () => this.handleNewQuery());\n    this.bind.onRootElement(QueryEvents.noResults, () => this.handleNoresults());\n    this.bind.onRootElement(QueryEvents.deferredQuerySuccess, (args: IQuerySuccessEventArgs) => this.handleDeferredQuerySuccess(args));\n    this.bind.onRootElement(QueryEvents.buildingQuery, (args: IBuildingQueryEventArgs) => this.handleBuildingQuery(args));\n    this.bind.onRootElement(QueryEvents.doneBuildingQuery, (args: IDoneBuildingQueryEventArgs) => this.handleDoneBuildingQuery(args));\n  }\n\n  private bindResizeEvents() {\n    this.onResize = debounce(() => {\n      if (ResponsiveComponentsUtils.shouldDrawFacetSlider($$(this.root), $$(this.element)) && this.slider && !this.isEmpty) {\n        if (this.delayedGraphData) {\n          this.drawDelayedGraphData();\n        } else {\n          this.slider.drawGraph();\n        }\n      }\n      if (this.slider) {\n        this.slider.onMoving();\n      }\n    }, 250);\n    window.addEventListener('resize', this.onResize);\n    this.bind.onRootElement(ResponsiveDropdownEvent.OPEN, this.onResize);\n\n    // This is used inside SF integration\n    this.bind.onRootElement('onPopupOpen', this.onResize);\n\n    $$(this.root).on(InitializationEvents.nuke, () => this.handleNuke());\n  }\n\n  private bindBreadcrumbEvents() {\n    this.bind.onRootElement(BreadcrumbEvents.clearBreadcrumb, () => this.reset());\n    this.bind.onRootElement(BreadcrumbEvents.populateBreadcrumb, (args: IPopulateBreadcrumbEventArgs) =>\n      this.handlePopulateBreadcrumb(args)\n    );\n  }\n\n  private handleNoresults(): void {\n    this.isEmpty = true;\n    this.updateAppearanceDependingOnState();\n  }\n\n  private handleNewQuery(): void {\n    this.isEmpty = false;\n  }\n\n  private handleRangeQueryStateChanged(args: IAttributeChangedEventArg): void {\n    this.setupSliderIfNeeded(args);\n    this.startOfSlider = args.value[0] == undefined ? this.startOfSlider : args.value[0];\n    this.endOfSlider = args.value[1] == undefined ? this.endOfSlider : args.value[1];\n    this.setSelectedValues([this.startOfSlider, this.endOfSlider]);\n  }\n\n  private handlePopulateBreadcrumb(args: IPopulateBreadcrumbEventArgs): void {\n    const populateBreadcrumb = () => {\n      if (this.isActive()) {\n        args.breadcrumbs.push(<IBreadcrumbItem>{\n          element: this.buildBreadcrumbFacetSlider(args.headingLevel)\n        });\n      }\n    };\n    if (this.slider) {\n      populateBreadcrumb();\n    } else {\n      $$(this.root).one(QueryEvents.deferredQuerySuccess, () => {\n        populateBreadcrumb();\n        $$(this.root).trigger(BreadcrumbEvents.redrawBreadcrumb);\n      });\n    }\n  }\n\n  private handlePopulateSearchAlerts(args: ISearchAlertsPopulateMessageEventArgs) {\n    if (this.isActive()) {\n      args.text.push($$(this.buildBreadcrumbFacetSlider()).text());\n    }\n  }\n\n  private buildBreadcrumbFacetSlider(headingLevel?: number): HTMLElement {\n    const elem = $$('div', {\n      className: 'coveo-facet-slider-breadcrumb'\n    }).el;\n\n    const title = $$(getHeadingTag(headingLevel, 'span'), {\n      className: 'coveo-facet-slider-breadcrumb-title'\n    });\n    title.text(this.options.title + ': ');\n    elem.appendChild(title.el);\n\n    const values = $$('span', {\n      className: 'coveo-facet-slider-breadcrumb-values'\n    });\n    elem.appendChild(values.el);\n\n    const value = $$('span', {\n      className: 'coveo-facet-slider-breadcrumb-value'\n    });\n    const caption = $$('span', {\n      className: 'coveo-facet-slider-breadcrumb-caption'\n    });\n    caption.text(this.slider.getCaption());\n    value.append(caption.el);\n    values.el.appendChild(value.el);\n\n    const clear = $$(\n      'span',\n      {\n        className: 'coveo-facet-slider-breadcrumb-clear'\n      },\n      SVGIcons.icons.mainClear\n    );\n    SVGDom.addClassToSVGInContainer(clear.el, 'coveo-facet-slider-clear-svg');\n\n    value.el.appendChild(clear.el);\n\n    value.on('click', () => {\n      this.reset();\n      this.usageAnalytics.logSearchEvent<IAnalyticsFacetMeta>(analyticsActionCauseList.facetClearAll, {\n        facetId: this.options.id,\n        facetField: this.options.field.toString(),\n        facetTitle: this.options.title\n      });\n      this.queryController.executeQuery();\n    });\n    return elem;\n  }\n\n  private initSlider() {\n    this.buildSlider();\n    this.slider.initializeState([this.startOfSlider, this.endOfSlider]);\n    this.updateAppearanceDependingOnState();\n  }\n\n  private bindQueryStateEvents() {\n    this.rangeQueryStateAttribute = QueryStateModel.getFacetId(this.options.id) + ':range';\n    this.queryStateModel.registerNewAttribute(this.rangeQueryStateAttribute, [undefined, undefined]);\n    const eventName = this.queryStateModel.getEventName(Model.eventTypes.changeOne + this.rangeQueryStateAttribute);\n    this.bind.onRootElement(eventName, (args: IAttributeChangedEventArg) => {\n      this.slider ? this.handleRangeQueryStateChanged(args) : this.setRangeStateSliderStillNotCreated(args);\n    });\n  }\n\n  private setRangeStateSliderStillNotCreated(args: IAttributeChangedEventArg) {\n    this.rangeFromUrlState = this.copyValues(args.value);\n  }\n\n  private buildSlider() {\n    const sliderContainer = $$('div', {\n      className: 'coveo-slider-container'\n    }).el;\n\n    if (this.hasAGraph()) {\n      $$(sliderContainer).addClass('coveo-with-graph');\n    }\n    const sliderDiv = $$('div').el;\n\n    this.slider = this.slider\n      ? this.slider\n      : new Slider(sliderDiv, { ...this.options, ...{ dateField: this.options.dateField } } as ISliderOptions, this.root);\n    $$(sliderDiv).on(SliderEvents.endSlide, (e: MouseEvent, args: IEndSlideEventArgs) => {\n      this.handleEndSlide(args);\n    });\n    $$(sliderDiv).on(SliderEvents.duringSlide, (e: MouseEvent, args: IDuringSlideEventArgs) => {\n      this.handleDuringSlide(args);\n    });\n    if (this.hasAGraph()) {\n      $$(sliderDiv).on(SliderEvents.graphValueSelected, (e: MouseEvent, args: IGraphValueSelectedArgs) => {\n        this.handleGraphValueSelected(args);\n      });\n    }\n    sliderContainer.appendChild(sliderDiv);\n    this.element.appendChild(sliderContainer);\n    this.updateAppearanceDependingOnState();\n  }\n\n  private handleBuildingQuery(data: IBuildingQueryEventArgs) {\n    Assert.exists(data);\n    Assert.exists(data.queryBuilder);\n    const boundary = this.getSliderBoundaryForQuery();\n    if (boundary != undefined) {\n      this.facetQueryController.prepareForNewQuery();\n      const expression = this.facetQueryController.computeOurFilterExpression(boundary);\n      if (Utils.isNonEmptyString(expression)) {\n        this.logger.trace('Putting filter in query', expression);\n        data.queryBuilder.advancedExpression.add(expression);\n      }\n    }\n  }\n\n  private handleDoneBuildingQuery(data: IDoneBuildingQueryEventArgs) {\n    const queryBuilder = data.queryBuilder;\n    this.facetQueryController.putGroupByIntoQueryBuilder(queryBuilder);\n  }\n\n  private handleDeferredQuerySuccess(data: IQuerySuccessEventArgs) {\n    this.ensureDom();\n    this.setupSliderIfNeeded(data);\n    const groupByResults = data.results.groupByResults[this.facetQueryController.lastGroupByRequestIndex];\n    this.isEmpty = this.isFacetEmpty(groupByResults, data);\n    this.updateAppearanceDependingOnState();\n    if (this.hasAGraph()) {\n      this.renderToSliderGraph(data);\n    }\n  }\n\n  private handleEndSlide(args: IEndSlideEventArgs) {\n    const values = args.slider.getValues();\n    this.startOfSlider = values[0];\n    this.endOfSlider = values[1];\n    if (this.updateQueryState(values)) {\n      this.updateAppearanceDependingOnState();\n      this.usageAnalytics.logSearchEvent<IAnalyticsFacetSliderChangeMeta>(analyticsActionCauseList.facetRangeSlider, {\n        facetId: this.options.id,\n        facetField: this.options.field.toString(),\n        facetRangeStart: this.startOfSlider.toString(),\n        facetRangeEnd: this.endOfSlider.toString()\n      });\n      this.queryController.executeQuery();\n    }\n  }\n\n  private handleDuringSlide(args: IDuringSlideEventArgs) {\n    const values = args.slider.getValues();\n    this.startOfSlider = values[0];\n    this.endOfSlider = values[1];\n    this.slider.setValues([this.startOfSlider, this.endOfSlider]);\n    this.updateAppearanceDependingOnState(true);\n  }\n\n  private handleGraphValueSelected(args: IGraphValueSelectedArgs) {\n    if ((this.options.rangeSlider && this.startOfSlider != args.start) || this.endOfSlider != args.end) {\n      if (this.options.rangeSlider) {\n        this.startOfSlider = args.start;\n      }\n      this.endOfSlider = args.end;\n      this.slider.setValues([this.startOfSlider, this.endOfSlider]);\n      this.updateQueryState();\n      this.usageAnalytics.logSearchEvent<IAnalyticsFacetGraphSelectedMeta>(analyticsActionCauseList.facetRangeGraph, {\n        facetId: this.options.id,\n        facetField: this.options.field.toString(),\n        facetRangeStart: this.startOfSlider.toString(),\n        facetRangeEnd: this.endOfSlider.toString()\n      });\n      this.queryController.executeQuery();\n    }\n  }\n\n  private updateQueryState(values = this.slider.getValues(), silent = false) {\n    const copyOfValues = this.copyValues(values);\n    const start = values[0] + 0.0;\n    const end = values[1] + 0.0;\n    const model: number[] = this.queryStateModel.get(this.rangeQueryStateAttribute);\n    if (model == null || copyOfValues[0] != model[0] || copyOfValues[1] != model[1]) {\n      copyOfValues[0] = start;\n      copyOfValues[1] = end;\n      this.queryStateModel.set(this.rangeQueryStateAttribute, copyOfValues, { silent: silent });\n      return true;\n    }\n    return false;\n  }\n\n  private copyValues(values: number[]) {\n    // Creating a copy of the values prevents an unwanted automatic update of the state while sliding\n    // That's the cleanest way I found to copy that array correctly\n    const copyOfValues = [];\n    copyOfValues[0] = Number(values[0]) + 0.0;\n    copyOfValues[1] = Number(values[1]) + 0.0;\n    return copyOfValues;\n  }\n\n  private renderToSliderGraph(data: IQuerySuccessEventArgs) {\n    const rawGroupByResults = data.results.groupByResults[this.facetQueryController.graphGroupByQueriesIndex];\n    let graphData: ISliderGraphData[];\n    let totalGraphResults = 0;\n    if (rawGroupByResults) {\n      graphData = map(rawGroupByResults.values, value => {\n        totalGraphResults += value.numberOfResults;\n        let start: any = value.value.split('..')[0];\n        let end: any = value.value.split('..')[1];\n        if (!this.options.dateField) {\n          start = Number(start);\n          end = Number(end);\n        } else {\n          start = new Date(start.split('@')[0]).getTime();\n          end = new Date(end.split('@')[0]).getTime();\n        }\n        const y = value.numberOfResults;\n        return {\n          start: start,\n          y: y,\n          end: end,\n          isDate: this.options.dateField\n        };\n      });\n    }\n    if (totalGraphResults == 0) {\n      this.isEmpty = true;\n      this.updateAppearanceDependingOnState();\n    }\n\n    if (graphData != undefined && !this.isDropdownHidden()) {\n      // This is deferred since it might be called on initialization with a placehoder over the facet during load time\n      // We need to wait that the animation is gone so that the width/height calculation done by the graph are okay.\n      Defer.defer(() => this.slider.drawGraph(graphData));\n    } else if (graphData != undefined && this.isDropdownHidden()) {\n      this.delayedGraphData = graphData;\n    }\n  }\n\n  private isDropdownHidden() {\n    const facetDropdown = this.root.querySelector('.coveo-facet-column');\n    if (facetDropdown) {\n      return $$(<HTMLElement>facetDropdown).css('display') == 'none';\n    }\n    if ($$(this.root).hasClass('CoveoRecommendation')) {\n      const recommendationDropdown = $$(this.root).parents('.coveo-recommendation-column')[0] || this.root;\n      return $$(<HTMLElement>recommendationDropdown).css('display') == 'none';\n    }\n\n    return false;\n  }\n\n  private generateBoundary(): number[] {\n    if (!this.slider) {\n      // If the slider is not initialized, the only boundary we can get is from the state.\n      return this.generateBoundaryFromState();\n    } else {\n      // Else, try to get one from the slider itself. If we cant, try to return one from the state.\n      const boundary = this.generateBoundaryFromSlider();\n      if (boundary[0] == undefined && boundary[1] == undefined) {\n        return this.generateBoundaryFromState();\n      } else {\n        return boundary;\n      }\n    }\n  }\n\n  private generateBoundaryFromSlider() {\n    let start, end;\n    if (this.startOfSlider != undefined) {\n      start = this.startOfSlider;\n    }\n    if (this.endOfSlider != undefined) {\n      end = this.endOfSlider;\n    }\n    return [start, end];\n  }\n\n  private generateBoundaryFromState() {\n    let start, end;\n    const startFromState = this.queryStateModel.get(this.rangeQueryStateAttribute)[0];\n    if (startFromState != undefined) {\n      start = startFromState;\n    }\n    const endFromState = this.queryStateModel.get(this.rangeQueryStateAttribute)[1];\n    if (endFromState != undefined) {\n      end = endFromState;\n    }\n    if (\n      start != this.queryStateModel.getDefault(this.rangeQueryStateAttribute)[0] ||\n      end != this.queryStateModel.getDefault(this.rangeQueryStateAttribute)[1]\n    ) {\n      return [start, end];\n    } else {\n      return [undefined, undefined];\n    }\n  }\n\n  private setupSliderIfNeeded(data: any) {\n    this.ensureDom();\n    if (Utils.isNullOrUndefined(this.slider)) {\n      if (!this.alreadySetBoundary()) {\n        this.trySetSliderBoundaryFromOptions();\n      }\n      if (!this.alreadySetBoundary() && data != undefined) {\n        this.trySetSliderBoundaryFromQueryResult(data);\n      }\n      this.trySetSliderBoundaryFromState();\n      this.setupSliderStateVariables();\n      const isInError = this.verifySetup();\n      if (isInError) {\n        this.logger.warn('Unable to initialize slider with current values', this);\n      } else {\n        this.initSlider();\n        this.updateQueryState();\n      }\n    }\n  }\n\n  private verifySetup() {\n    let isInError = 0;\n    isInError += this.initialStartOfSlider == undefined ? 1 : 0;\n    isInError += isNaN(this.initialStartOfSlider) ? 1 : 0;\n    isInError += this.initialEndOfSlider == undefined ? 1 : 0;\n    isInError += isNaN(this.initialEndOfSlider) ? 1 : 0;\n    return isInError;\n  }\n\n  private setupSliderStateVariables() {\n    if (isNaN(this.initialStartOfSlider) || isNaN(this.initialEndOfSlider)) {\n      this.logger.warn(\n        'Cannnot initialize slider with those values : start: ' + this.initialStartOfSlider + ' end: ' + this.initialEndOfSlider\n      );\n    } else {\n      this.initialStartOfSlider = Number(this.initialStartOfSlider);\n      this.initialEndOfSlider = Number(this.initialEndOfSlider);\n      this.startOfSlider = this.startOfSlider != undefined ? Number(this.startOfSlider) : this.initialStartOfSlider;\n      this.endOfSlider = this.endOfSlider != undefined ? Number(this.endOfSlider) : this.initialEndOfSlider;\n      this.options.start = this.initialStartOfSlider;\n      this.options.end = this.initialEndOfSlider;\n      this.queryStateModel.setNewDefault(this.rangeQueryStateAttribute, [this.initialStartOfSlider, this.initialEndOfSlider]);\n    }\n  }\n\n  private alreadySetBoundary() {\n    return this.startOfSlider != undefined && this.endOfSlider != undefined;\n  }\n\n  private trySetSliderBoundaryFromOptions() {\n    if (!Utils.isNullOrUndefined(this.options.start)) {\n      this.setupInitialSliderStateStart(this.options.start);\n    }\n    if (!Utils.isNullOrUndefined(this.options.end)) {\n      this.setupInitialSliderStateEnd(this.options.end);\n    }\n  }\n\n  private trySetSliderBoundaryFromState() {\n    const boundaries = this.getBoundariesFromState();\n    if (!boundaries) {\n      return;\n    }\n    this.setupInitialSliderStateStart(boundaries.start);\n    this.setupInitialSliderStateEnd(boundaries.end);\n    this.startOfSlider = boundaries.start;\n    this.endOfSlider = boundaries.end;\n  }\n\n  private trySetSliderBoundaryFromQueryResult(data: IQuerySuccessEventArgs) {\n    const groupByResults = data.results.groupByResults[this.facetQueryController.lastGroupByRequestForFullRangeIndex];\n    if (!groupByResults || groupByResults.values.length <= 0 || groupByResults.values[0].numberOfResults == 0) {\n      return;\n    }\n\n    let start = groupByResults.values[0].value.split('..')[0];\n    let end = groupByResults.values[groupByResults.values.length - 1].value.split('..')[1];\n\n    if (this.isValueADate(start) && this.isValueADate(end)) {\n      this.setupInitialSliderStateStart(start);\n      this.setupInitialSliderStateEnd(end);\n      return;\n    }\n\n    const boudariesFromState = this.getBoundariesFromState();\n    let startAsNumber = Number(start);\n    let endAsNumber = Number(end);\n\n    if (boudariesFromState) {\n      startAsNumber = Math.min(startAsNumber, boudariesFromState.start);\n      endAsNumber = Math.max(endAsNumber, boudariesFromState.end);\n    }\n\n    this.setupInitialSliderStateStart(startAsNumber);\n    this.setupInitialSliderStateEnd(endAsNumber);\n  }\n\n  private getBoundariesFromState() {\n    const stateValues = this.rangeFromUrlState || this.queryStateModel.get(this.rangeQueryStateAttribute);\n    if (!stateValues || stateValues[0] == undefined || stateValues[1] == undefined) {\n      return undefined;\n    }\n    const startAsNumber = Number(stateValues[0]);\n    const endAsNumber = Number(stateValues[1]);\n\n    if (isNaN(startAsNumber) || isNaN(endAsNumber)) {\n      return undefined;\n    }\n    return {\n      start: startAsNumber,\n      end: endAsNumber\n    };\n  }\n\n  private setupInitialSliderStateStart(value: any) {\n    if (this.initialStartOfSlider == undefined) {\n      this.initialStartOfSlider = value;\n      if (this.isValueADate(value)) {\n        this.initialStartOfSlider = this.getTimeFromAPIResponse(value);\n      }\n    }\n  }\n\n  private setupInitialSliderStateEnd(value: any) {\n    if (this.initialEndOfSlider == undefined) {\n      this.initialEndOfSlider = value;\n      if (this.isValueADate(value)) {\n        this.initialEndOfSlider = this.getTimeFromAPIResponse(value);\n      }\n    }\n  }\n\n  private getTimeFromAPIResponse(value: string) {\n    return new Date(value.replace('@', ' ')).getTime();\n  }\n\n  private isValueADate(value: any) {\n    return this.options.dateField && isNaN(value);\n  }\n\n  private updateAppearanceDependingOnState(sliding = false) {\n    // Defer the visual update so that we can execute it after the current call stack has resolved.\n    // Since this component is closely linked to DOM size calculation (width), this allows to cover some corner cases\n    // where the component would be visually hidden, leading to incorrect width calculation.\n    // For example, first query placeholder animation hiding the component, or switching between different tabs would affect the calculation otherwise.\n    Defer.defer(() => {\n      if (this.isEmpty && !this.isActive() && !sliding) {\n        $$(this.element).addClass('coveo-disabled-empty');\n      } else {\n        $$(this.element).removeClass('coveo-disabled-empty');\n        $$(this.facetHeader.eraserElement).toggle(this.isActive());\n      }\n      if (!this.isActive() && !sliding) {\n        $$(this.element).addClass('coveo-disabled');\n      } else {\n        $$(this.element).removeClass('coveo-disabled');\n      }\n\n      if (this.isActive() && this.slider) {\n        this.slider.onMoving();\n      }\n    });\n  }\n\n  private handleNuke() {\n    window.removeEventListener('resize', this.onResize);\n  }\n\n  private isFacetEmpty(groupByResults: IGroupByResult, data: IQuerySuccessEventArgs) {\n    return (\n      Utils.isNullOrUndefined(groupByResults) ||\n      every(groupByResults.values, value => Utils.isNullOrUndefined(value) || value.numberOfResults === 0) ||\n      data.results.results.length == 0\n    );\n  }\n}\n\nInitialization.registerAutoCreateComponent(FacetSlider);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/FacetSlider/FacetSlider.ts","import { SearchInterface, ISearchInterfaceOptions } from '../SearchInterface/SearchInterface';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { QueryEvents, IQuerySuccessEventArgs, IBuildingQueryEventArgs } from '../../events/QueryEvents';\nimport { OmniboxEvents } from '../../events/OmniboxEvents';\nimport { ResultListEvents } from '../../events/ResultListEvents';\nimport { SettingsEvents } from '../../events/SettingsEvents';\nimport { PreferencesPanelEvents } from '../../events/PreferencesPanelEvents';\nimport { AnalyticsEvents } from '../../events/AnalyticsEvents';\nimport { analyticsActionCauseList, IAnalyticsNoMeta } from '../Analytics/AnalyticsActionListMeta';\nimport { BreadcrumbEvents } from '../../events/BreadcrumbEvents';\nimport { QuickviewEvents } from '../../events/QuickviewEvents';\nimport { QUERY_STATE_ATTRIBUTES } from '../../models/QueryStateModel';\nimport { Model, MODEL_EVENTS } from '../../models/Model';\nimport { Utils } from '../../utils/Utils';\nimport { $$ } from '../../utils/Dom';\nimport { INoResultsEventArgs } from '../../events/QueryEvents';\nimport { IQueryErrorEventArgs } from '../../events/QueryEvents';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ResponsiveRecommendation } from '../ResponsiveComponents/ResponsiveRecommendation';\nimport { get } from '../Base/RegisteredNamedMethods';\nimport { InitializationEvents } from '../../events/InitializationEvents';\nimport { ComponentOptionsModel } from '../../models/ComponentOptionsModel';\nimport * as _ from 'underscore';\nimport { exportGlobally } from '../../GlobalExports';\nimport { DefaultRecommendationTemplate } from '../Templates/DefaultRecommendationTemplate';\nimport { RecommendationQuery } from './RecommendationQuery';\nimport { RecommendationAnalyticsClient } from '../Analytics/RecommendationAnalyticsClient';\nimport 'styling/_Recommendation';\nimport { IStringMap } from '../../rest/GenericParam';\nimport { l } from '../../strings/Strings';\n\nexport interface IRecommendationOptions extends ISearchInterfaceOptions {\n  mainSearchInterface?: HTMLElement;\n  userContext?: IStringMap<any>;\n  id?: string;\n  optionsToUse?: string[];\n  sendActionsHistory?: boolean;\n  hideIfNoResults?: boolean;\n  enableResponsiveMode?: boolean;\n  responsiveBreakpoint?: number;\n  dropdownHeaderLabel?: string;\n}\n\n/**\n * The Recommendation component is a {@link SearchInterface} that displays recommendations typically based on user\n * history.\n *\n * This component usually listens to the main SearchInterface. When the main SearchInterface generates a query, the\n * Recommendation component generates another query to get the recommendations at the same time.\n *\n * To get history-based recommendations, you will likely want to include the `pageview` script in your page (see\n * [coveo.analytics.js](https://github.com/coveo/coveo.analytics.js)). However, including this script is not mandatory.\n * For instance, you could use the Recommendation component without the Coveo Machine Learning service to create a\n * simple \"recommended people\" interface.\n *\n * It is possible to include this component inside another SearchInterface, but it is also possible to instantiate it as\n * a \"standalone\" search interface, without even instantiating a main SearchInterface component. In any case, a\n * Recommendation component always acts as a full-fledged search interface. Therefore, you can include any component\n * inside the Recommendation component (Searchbox, Facet, Sort, etc.), just as you would inside the main SearchInterface\n * component.\n *\n * @availablesince [July 2016 Release (v1.667.24)](https://docs.coveo.com/en/309/#july-2016-release-v166724)\n */\nexport class Recommendation extends SearchInterface implements IComponentBindings {\n  static ID = 'Recommendation';\n  private static NEXT_ID = 1;\n\n  static doExport = () => {\n    exportGlobally({\n      Recommendation: Recommendation,\n      DefaultRecommendationTemplate: DefaultRecommendationTemplate,\n      RecommendationQuery: RecommendationQuery,\n      RecommendationAnalyticsClient: RecommendationAnalyticsClient\n    });\n  };\n\n  /**\n   * The options for the recommendation component\n   * @componentOptions\n   */\n  static options: IRecommendationOptions = {\n    /**\n     * Specifies the main {@link SearchInterface} to listen to.\n     */\n    mainSearchInterface: ComponentOptions.buildSelectorOption(),\n\n    /**\n     * Specifies the user context to send to Coveo usage analytics.\n     * The component sends this information with the query alongside the user history to get the recommendations.\n     */\n    userContext: ComponentOptions.buildJsonOption(),\n\n    /**\n     * Specifies the ID of the interface.\n     * The usage analytics use the interface ID to know which recommendation interface was selected.\n     *\n     * Default value is `Recommendation` for the first one and `Recommendation_{number}`, where {number} depends on the\n     * number of Recommendation interfaces with default IDs in the page for the others.\n     */\n    id: ComponentOptions.buildStringOption(),\n\n    /**\n     * Specifies which options from the main {@link QueryBuilder} to use in the triggered query.\n     *\n     * Possible values are:\n     * - `expression`\n     * - `advancedExpression`\n     * - `constantExpression`\n     * - `disjunctionExpression`\n     *\n     * **Example:**\n     *\n     * Adding the expression (`q`) and the advanced expression (`aq`) parts of the main query in the triggered query:\n     *\n     * `data-options-to-use=\"expression,advancedExpression\"`\n     *\n     * Default value is `expression`.\n     */\n    optionsToUse: ComponentOptions.buildListOption<'expression' | 'advancedExpression' | 'constantExpression' | 'disjunctionExpression'>({\n      defaultValue: ['expression']\n    }),\n\n    /**\n     * Specifies whether to send the actions history along with the triggered query.\n     *\n     * Setting this option to `false` makes it impossible for this component to get Coveo Machine Learning\n     * recommendations.\n     *\n     * However, setting this option to `false` can be useful to display side results in a search page.\n     *\n     * Default value is `true`.\n     *\n     * @deprecated This option is now deprecated. The correct way to control this behavior is to configure an appropriate machine learning model in the administration interface (Recommendation, Relevance tuning, Query suggestions).\n     */\n    sendActionsHistory: ComponentOptions.buildBooleanOption({\n      defaultValue: true,\n      deprecated:\n        'This option is now deprecated. The correct way to control this behaviour is to configure an appropriate machine learning model in the administration interface (Recommendation, Relevance tuning, Query suggestions)'\n    }),\n\n    /**\n     * Specifies whether to hide the Recommendations component if no result or recommendation is available.\n     *\n     * Default value is `true`.\n     */\n    hideIfNoResults: ComponentOptions.buildBooleanOption({ defaultValue: true }),\n    autoTriggerQuery: ComponentOptions.buildBooleanOption({\n      postProcessing: (value: boolean, options: IRecommendationOptions) => {\n        if (options.mainSearchInterface) {\n          return false;\n        }\n        return value;\n      }\n    }),\n\n    /**\n     * Specifies whether to enable *responsive mode* for Recommendation components. Setting this options to `false` on\n     * any Recommendation component in a search interface disables responsive mode for all other Recommendation\n     * components in the search interface.\n     *\n     * Responsive mode displays all Recommendation components under a single dropdown button whenever the width of the\n     * HTML element which the search interface is bound to reaches or falls behind a certain threshold (see\n     * {@link Recommendation.options.responsiveBreakpoint}).\n     *\n     * See also {@link Recommendation.options.dropdownHeaderLabel}.\n     *\n     * Default value is `true`.\n     */\n    enableResponsiveMode: ComponentOptions.buildBooleanOption({ defaultValue: true }),\n\n    /**\n     * If {@link Recommendation.options.enableResponsiveMode} is `true` for all Recommendation components, specifies the\n     * width threshold (in pixels) of the search interface at which Recommendation components go in responsive mode.\n     *\n     * Recommendation components go in responsive mode when the width of the search interface is equal to or lower than\n     * this value.\n     *\n     * The `search interface` corresponds to the HTML element with the class `CoveoSearchInterface`.\n     *\n     * If more than one Recommendation component in the search interface specifies a value for this option, then the\n     * framework uses the last occurrence of the option.\n     *\n     * Default value is `1000`.\n     */\n    responsiveBreakpoint: ComponentOptions.buildNumberOption({ defaultValue: 1000 }),\n\n    /**\n     * If {@link Recommendation.options.enableResponsiveMode} is `true` for all Recommendation components, specifies the\n     * label of the dropdown button that allows to display the Recommendation components when in responsive mode.\n     *\n     * If more than one Recommendation component in the search interface specifies a value for this option, then the\n     * framework uses the first occurrence of the option.\n     *\n     * Default value is `Recommendations`.\n     */\n    dropdownHeaderLabel: ComponentOptions.buildLocalizedStringOption({\n      localizedString: () => l('Recommendations')\n    })\n  };\n\n  // These are used by the analytics client for recommendation\n  // so that clicks event inside the recommendation component can be modified and attached to the main search interface.\n  public mainQuerySearchUID: string;\n  public mainQueryPipeline: string;\n\n  private mainInterfaceQuery: IQuerySuccessEventArgs;\n\n  /**\n   * Creates a new Recommendation component.\n   * @param element The HTMLElement on which to instantiate the component.\n   * @param options The options for the Recommendation component.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time)\n   * @param _window\n   */\n  constructor(public element: HTMLElement, public options: IRecommendationOptions = {}, public analyticsOptions = {}, _window = window) {\n    super(element, ComponentOptions.initComponentOptions(element, Recommendation, options), analyticsOptions, _window);\n    this.element.style.display = '';\n    if (!this.options.id) {\n      this.generateDefaultId();\n    }\n\n    // This is done to allow the component to be included in another search interface without triggering the parent events.\n    this.preventEventPropagation();\n\n    if (this.options.mainSearchInterface) {\n      this.bindToMainSearchInterface();\n    }\n\n    $$(this.element).on(QueryEvents.buildingQuery, (e: Event, args: IBuildingQueryEventArgs) =>\n      this.handleRecommendationBuildingQuery(args)\n    );\n    $$(this.element).on(QueryEvents.querySuccess, (e: Event, args: IQuerySuccessEventArgs) => this.handleRecommendationQuerySuccess(args));\n    $$(this.element).on(QueryEvents.noResults, (e: Event, args: INoResultsEventArgs) => this.handleRecommendationNoResults());\n    $$(this.element).on(QueryEvents.queryError, (e: Event, args: IQueryErrorEventArgs) => this.handleRecommendationQueryError());\n\n    if (!this.options.mainSearchInterface) {\n      // When the recommendation component is \"standalone\", we add additional safeguard against bad config.\n      this.ensureCurrentPageViewExistsInStore();\n    }\n    ResponsiveRecommendation.init(this.root, this, options);\n  }\n\n  public get historyStore() {\n    return this.queryController.historyStore;\n  }\n\n  public getId(): string {\n    return this.options.id;\n  }\n\n  public enable() {\n    super.enable();\n    this.show();\n  }\n\n  public disable() {\n    super.disable();\n    this.hide();\n  }\n\n  public hide(): void {\n    $$(this.element).addClass('coveo-hidden');\n  }\n\n  public show(): void {\n    $$(this.element).removeClass('coveo-hidden');\n  }\n\n  private ensureCurrentPageViewExistsInStore() {\n    // It's not 100% sure that the element will actually be added in the store.\n    // It's possible that an external script configured by the end user to log the page view already did that.\n    // So we *could* end up with duplicate values in the store :\n    // We rely on the fact that the coveo.analytics lib has defensive code against consecutive page view that are identical.\n    // This is mainly done if the recommendation component is being initialized before the page view could be logged correctly by the coveo.analytics externa lib.\n    const historyElement = {\n      name: 'PageView',\n      value: document.location.toString(),\n      time: JSON.stringify(new Date()),\n      title: _.escape(document.title)\n    };\n    this.historyStore.addElement(historyElement);\n  }\n\n  private bindToMainSearchInterface() {\n    this.bindComponentOptionsModelToMainSearchInterface();\n    this.bindQueryEventsToMainSearchInterface();\n  }\n\n  private bindComponentOptionsModelToMainSearchInterface() {\n    // Try to fetch the componentOptions from the main search interface.\n    // Since we do not know which interface is init first (recommendation or full search interface)\n    // add a mechanism that waits for the full search interface to be correctly initialized\n    // then, set the needed values on the component options model.\n    let searchInterfaceComponent = <SearchInterface>get(this.options.mainSearchInterface, SearchInterface);\n    const alreadyInitialized = searchInterfaceComponent != null;\n\n    const onceInitialized = () => {\n      const mainSearchInterfaceOptionsModel = <ComponentOptionsModel>searchInterfaceComponent.getBindings().componentOptionsModel;\n      this.componentOptionsModel.setMultiple(mainSearchInterfaceOptionsModel.getAttributes());\n      $$(this.options.mainSearchInterface).on(this.componentOptionsModel.getEventName(MODEL_EVENTS.ALL), () => {\n        this.componentOptionsModel.setMultiple(mainSearchInterfaceOptionsModel.getAttributes());\n      });\n    };\n\n    if (alreadyInitialized) {\n      onceInitialized();\n    } else {\n      $$(this.options.mainSearchInterface).on(InitializationEvents.afterComponentsInitialization, () => {\n        searchInterfaceComponent = <SearchInterface>get(this.options.mainSearchInterface, SearchInterface);\n        onceInitialized();\n      });\n    }\n  }\n\n  private bindQueryEventsToMainSearchInterface() {\n    // Whenever a query sucessfully returns on the full search interface, refresh the recommendation component.\n    $$(this.options.mainSearchInterface).on(QueryEvents.querySuccess, (e: Event, args: IQuerySuccessEventArgs) => {\n      this.mainInterfaceQuery = args;\n      this.mainQuerySearchUID = args.results.searchUid;\n      this.mainQueryPipeline = args.results.pipeline;\n      if (args.results.results.length != 0) {\n        this.usageAnalytics.logSearchEvent<IAnalyticsNoMeta>(analyticsActionCauseList.recommendation, {});\n        this.queryController.executeQuery({\n          closeModalBox: false\n        });\n      }\n    });\n\n    $$(this.options.mainSearchInterface).on(QueryEvents.queryError, () => this.hide());\n    $$(this.options.mainSearchInterface).on(QueryEvents.noResults, () => this.hide());\n  }\n\n  private handleRecommendationBuildingQuery(data: IBuildingQueryEventArgs) {\n    if (!this.disabled) {\n      this.modifyQueryForRecommendation(data);\n      this.addRecommendationInfoInQuery(data);\n    }\n  }\n\n  private handleRecommendationQuerySuccess(data: IQuerySuccessEventArgs) {\n    if (!this.disabled) {\n      if (this.options.hideIfNoResults) {\n        if (data.results.totalCount === 0) {\n          this.hide();\n        } else {\n          this.show();\n        }\n      }\n    }\n  }\n\n  private handleRecommendationNoResults() {\n    if (!this.disabled) {\n      if (this.options.hideIfNoResults) {\n        this.hide();\n      }\n    }\n  }\n\n  private handleRecommendationQueryError() {\n    if (!this.disabled) {\n      this.hide();\n    }\n  }\n\n  private modifyQueryForRecommendation(data: IBuildingQueryEventArgs) {\n    if (this.mainInterfaceQuery) {\n      Utils.copyObjectAttributes(data.queryBuilder, this.mainInterfaceQuery.queryBuilder, this.options.optionsToUse);\n    }\n  }\n\n  private addRecommendationInfoInQuery(data: IBuildingQueryEventArgs) {\n    if (!_.isEmpty(this.options.userContext)) {\n      data.queryBuilder.addContext(this.options.userContext);\n    }\n\n    data.queryBuilder.recommendation = this.options.id;\n  }\n\n  private preventEventPropagation() {\n    this.preventEventPropagationOn(QueryEvents);\n    this.preventEventPropagationOn(OmniboxEvents);\n    this.preventEventPropagationOn(ResultListEvents);\n    this.preventEventPropagationOn(SettingsEvents);\n    this.preventEventPropagationOn(PreferencesPanelEvents);\n    this.preventEventPropagationOn(AnalyticsEvents);\n    this.preventEventPropagationOn(BreadcrumbEvents);\n    this.preventEventPropagationOn(QuickviewEvents);\n    this.preventEventPropagationOn(InitializationEvents);\n    this.preventEventPropagationOn(this.getAllModelEvents());\n  }\n\n  private preventEventPropagationOn(\n    eventType,\n    eventName = (event: string) => {\n      return event;\n    }\n  ) {\n    for (const event in eventType) {\n      $$(this.root).on(eventName(event), (e: Event) => e.stopPropagation());\n    }\n  }\n\n  private getAllModelEvents() {\n    const events = {};\n    const queryStateModel = this.getBindings().queryStateModel;\n    _.each(_.values(Model.eventTypes), event => {\n      const eventName = queryStateModel.getEventName(event);\n      events[eventName] = eventName;\n      _.each(_.values(QUERY_STATE_ATTRIBUTES), attribute => {\n        const eventName = this.queryStateModel.getEventName(event + attribute);\n        events[eventName] = eventName;\n      });\n    });\n    return events;\n  }\n\n  private generateDefaultId() {\n    let id = 'Recommendation';\n    if (Recommendation.NEXT_ID !== 1) {\n      this.logger.warn(\n        'Generating another recommendation default id',\n        'Consider configuring a human friendly / meaningful id for this interface'\n      );\n      id = id + '_' + Recommendation.NEXT_ID;\n    }\n    Recommendation.NEXT_ID++;\n    this.options.id = id;\n  }\n}\n\n// We do not register the Recommendation component since it is done with .coveo('initRecommendation')\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Recommendation/Recommendation.ts","import 'styling/_ResultLayoutSelector';\nimport { contains, difference, each, filter, find, isEmpty, keys, uniq, pick } from 'underscore';\nimport { InitializationEvents } from '../../events/InitializationEvents';\nimport { IQueryErrorEventArgs, IQuerySuccessEventArgs, QueryEvents } from '../../events/QueryEvents';\nimport { IResultLayoutPopulateArgs, ResultLayoutEvents } from '../../events/ResultLayoutEvents';\nimport { IChangeLayoutEventArgs, ResultListEvents } from '../../events/ResultListEvents';\nimport { Assert } from '../../misc/Assert';\nimport { IAttributesChangedEventArg, MODEL_EVENTS } from '../../models/Model';\nimport { QueryStateModel, QUERY_STATE_ATTRIBUTES } from '../../models/QueryStateModel';\nimport { IQueryResults } from '../../rest/QueryResults';\nimport { exportGlobally } from '../../GlobalExports';\nimport { l } from '../../strings/Strings';\nimport { $$ } from '../../utils/Dom';\nimport { SVGDom } from '../../utils/SVGDom';\nimport { SVGIcons } from '../../utils/SVGIcons';\nimport { Utils } from '../../utils/Utils';\nimport { analyticsActionCauseList, IAnalyticsResultsLayoutChange } from '../Analytics/AnalyticsActionListMeta';\nimport { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { Initialization } from '../Base/Initialization';\nimport { ResponsiveResultLayout } from '../ResponsiveComponents/ResponsiveResultLayout';\nimport { ValidLayout } from './ValidLayout';\nimport ResultListModule = require('../ResultList/ResultList');\nimport { AccessibleButton } from '../../utils/AccessibleButton';\n\nexport interface IActiveLayouts {\n  button: {\n    el: HTMLElement;\n    visible: boolean;\n  };\n  enabled: boolean;\n}\n\nexport interface IResultLayoutOptions {\n  mobileLayouts: string[];\n  tabletLayouts: string[];\n  desktopLayouts: string[];\n}\n\nexport const defaultLayout: ValidLayout = 'list';\n\n/**\n * The ResultLayoutSelector component allows the end user to switch between multiple {@link ResultList} components that have\n * different {@link ResultList.options.layout} values.\n *\n * This component automatically populates itself with buttons to switch between the ResultList components that have a\n * valid layout value (see the {@link ValidLayout} type).\n *\n * See also the [Result Layouts](https://docs.coveo.com/en/360/) documentation.\n *\n * @availablesince [February 2018 Release (v2.3826.10)](https://docs.coveo.com/en/410/#february-2018-release-v2382610)\n */\nexport class ResultLayoutSelector extends Component {\n  static ID = 'ResultLayoutSelector';\n  static aliases = ['ResultLayout'];\n\n  static doExport = () => {\n    exportGlobally({\n      ResultLayoutSelector: ResultLayoutSelector,\n      ResultLayout: ResultLayoutSelector\n    });\n  };\n\n  public static validLayouts: ValidLayout[] = ['list', 'card', 'table'];\n\n  public currentLayout: ValidLayout;\n  private preferredLayout: ValidLayout = null;\n  private currentActiveLayouts: { [key: string]: IActiveLayouts };\n\n  private resultLayoutSection: HTMLElement;\n  private hasNoResults: boolean;\n\n  /**\n   * The component options\n   * @componentOptions\n   */\n  static options: IResultLayoutOptions = {\n    /**\n     * Specifies the layouts that should be available when the search page is displayed in mobile mode.\n     *\n     * By default, the mobile mode breakpoint is at 480 px screen width.\n     *\n     * To change this default value, use the [responsiveSmallBreakpoint]{@link SearchInterface.options.responsiveSmallBreakpoint} option.\n     *\n     * When the breakpoint is reached, layouts that are not specified becomes inactive and the linked result list will be disabled.\n     *\n     * The possible values for layouts are `list`, `card`, `table`.\n     *\n     * The default value is `card`, `table`.\n     */\n    mobileLayouts: ComponentOptions.buildListOption<ValidLayout>({ defaultValue: ['card', 'table'] }),\n    /**\n     * Specifies the layouts that should be available when the search page is displayed in tablet mode.\n     *\n     * By default, the tablet mode breakpoint is at 800 px screen width.\n     *\n     * To change this default value, use the [responsiveMediumBreakpoint]{@link SearchInterface.options.responsiveMediumBreakpoint} option.\n     *\n     *  When the breakpoint is reached, layouts that are not specified becomes inactive and the linked result list will be disabled.\n     *\n     * The possible values for layouts are `list`, `card`, `table`.\n     *\n     * The default value is `list`, `card`, `table`.\n     */\n    tabletLayouts: ComponentOptions.buildListOption<ValidLayout>({ defaultValue: ['list', 'card', 'table'] }),\n    /**\n     * Specifies the layouts that should be available when the search page is displayed in desktop mode.\n     *\n     * By default, the desktop mode breakpoint is any screen size over 800 px.\n     *\n     * To change this default value, use the [responsiveMediumBreakpoint]{@link SearchInterface.options.responsiveMediumBreakpoint} option.\n     *\n     *  When the breakpoint is reached, layouts that are not specified becomes inactive and the linked result list will be disabled.\n     *\n     * The possible values for layouts are `list`, `card`, `table`.\n     *\n     * The default value is `list`, `card`, `table`.\n     */\n    desktopLayouts: ComponentOptions.buildListOption<ValidLayout>({ defaultValue: ['list', 'card', 'table'] })\n  };\n\n  /**\n   * Creates a new ResultLayoutSelector component.\n   * @param element The HTMLElement on which to instantiate the component.\n   * @param options The options for the ResultLayout component.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time).\n   */\n  constructor(public element: HTMLElement, public options?: IResultLayoutOptions, bindings?: IComponentBindings) {\n    super(element, ResultLayoutSelector.ID, bindings);\n    this.options = ComponentOptions.initComponentOptions(element, ResultLayoutSelector, options);\n\n    this.currentActiveLayouts = {};\n\n    this.bind.onQueryState(MODEL_EVENTS.CHANGE_ONE, QUERY_STATE_ATTRIBUTES.LAYOUT, this.handleQueryStateChanged.bind(this));\n    this.bind.onRootElement(QueryEvents.querySuccess, (args: IQuerySuccessEventArgs) => this.handleQuerySuccess(args));\n    this.bind.onRootElement(QueryEvents.queryError, (args: IQueryErrorEventArgs) => this.handleQueryError(args));\n\n    this.resultLayoutSection = $$(this.element).closest('.coveo-result-layout-section');\n\n    this.bind.oneRootElement(InitializationEvents.afterComponentsInitialization, () => this.populate());\n    this.bind.oneRootElement(InitializationEvents.afterInitialization, () => this.handleQueryStateChanged());\n\n    ResponsiveResultLayout.init(this.root, this, {});\n  }\n\n  public get activeLayouts(): { [key: string]: IActiveLayouts } {\n    if (this.searchInterface.responsiveComponents.isLargeScreenWidth()) {\n      return pick(this.currentActiveLayouts, this.options.desktopLayouts);\n    }\n    if (this.searchInterface.responsiveComponents.isMediumScreenWidth()) {\n      return pick(this.currentActiveLayouts, this.options.tabletLayouts);\n    }\n    if (this.searchInterface.responsiveComponents.isSmallScreenWidth()) {\n      return pick(this.currentActiveLayouts, this.options.mobileLayouts);\n    }\n    return this.currentActiveLayouts;\n  }\n\n  /**\n   * Changes the current layout.\n   *\n   * Also logs a `resultLayoutChange` event in the usage analytics with the new layout as metadeta.\n   *\n   * Triggers a new query.\n   *\n   * @param layout The new layout. The page must contain a valid {@link ResultList} component with a matching\n   * {@link ResultList.options.layout} value for this method to work.\n   */\n  public changeLayout(layout: ValidLayout) {\n    this.preferredLayout = null;\n    this.performLayoutChange(layout);\n  }\n\n  /**\n   * Gets the current layout (`list`, `card` or `table`).\n   * @returns {string} The current current layout.\n   */\n  public getCurrentLayout() {\n    return this.currentLayout;\n  }\n\n  public disableLayouts(layouts: ValidLayout[]) {\n    if (Utils.isNonEmptyArray(layouts)) {\n      each(layouts, layout => this.disableLayout(layout));\n\n      let remainingValidLayouts = difference(keys(this.currentActiveLayouts), layouts);\n      this.preferredLayout = this.currentLayout;\n\n      if (!isEmpty(remainingValidLayouts)) {\n        const newLayout = contains(remainingValidLayouts, this.currentLayout) ? this.currentLayout : remainingValidLayouts[0];\n        this.performLayoutChange(<ValidLayout>newLayout);\n      } else {\n        this.logger.error('Cannot disable the last valid layout ... Re-enabling the first one possible');\n        let firstPossibleValidLayout = <ValidLayout>keys(this.currentActiveLayouts)[0];\n        this.enableLayout(firstPossibleValidLayout);\n        this.setLayout(firstPossibleValidLayout);\n      }\n    }\n  }\n\n  public enableLayouts(layouts: ValidLayout[]) {\n    each(layouts, layout => this.enableLayout(layout));\n    const preferredLayoutAvailable = find(layouts, layout => layout === this.preferredLayout);\n    preferredLayoutAvailable && this.restorePreferredLayout();\n  }\n\n  private restorePreferredLayout() {\n    this.performLayoutChange(this.preferredLayout);\n    this.preferredLayout = null;\n  }\n\n  private performLayoutChange(layout: ValidLayout) {\n    Assert.check(this.isLayoutDisplayedByButton(layout), 'Layout not available or invalid');\n\n    if (layout !== this.currentLayout || this.getModelValue() === '') {\n      this.setModelValue(layout);\n      const lastResults = this.queryController.getLastResults();\n      this.setLayout(layout, lastResults);\n      if (lastResults) {\n        this.usageAnalytics.logCustomEvent<IAnalyticsResultsLayoutChange>(\n          analyticsActionCauseList.resultsLayoutChange,\n          {\n            resultsLayoutChangeTo: layout\n          },\n          this.element\n        );\n      } else {\n        this.usageAnalytics.logSearchEvent<IAnalyticsResultsLayoutChange>(analyticsActionCauseList.resultsLayoutChange, {\n          resultsLayoutChangeTo: layout\n        });\n        if (!this.queryController.firstQuery) {\n          this.queryController.executeQuery();\n        }\n      }\n    }\n  }\n\n  private disableLayout(layout: ValidLayout) {\n    if (this.isLayoutDisplayedByButton(layout)) {\n      this.hideButton(layout);\n    }\n  }\n\n  private enableLayout(layout: ValidLayout) {\n    const allResultLists = this.resultLists;\n    const atLeastOneResultListCanShowLayout = find(allResultLists, resultList => resultList.options.layout == layout);\n    if (atLeastOneResultListCanShowLayout && this.isLayoutDisplayedByButton(layout)) {\n      this.showButton(layout);\n      this.updateSelectorAppearance();\n    }\n  }\n\n  private get resultLists(): ResultListModule.ResultList[] {\n    return this.searchInterface.getComponents('ResultList');\n  }\n\n  private hideButton(layout: ValidLayout) {\n    if (this.isLayoutDisplayedByButton(layout)) {\n      let btn = this.currentActiveLayouts[<string>layout].button;\n      $$(btn.el).addClass('coveo-hidden');\n      btn.visible = false;\n      this.updateSelectorAppearance();\n    }\n  }\n\n  private showButton(layout: ValidLayout) {\n    if (this.isLayoutDisplayedByButton(layout)) {\n      let btn = this.currentActiveLayouts[<string>layout].button;\n      $$(btn.el).removeClass('coveo-hidden');\n      btn.visible = true;\n    }\n  }\n\n  private setLayout(layout: ValidLayout, results?: IQueryResults) {\n    if (layout) {\n      if (this.currentLayout) {\n        $$(this.currentActiveLayouts[this.currentLayout].button.el).removeClass('coveo-selected');\n        $$(this.currentActiveLayouts[this.currentLayout].button.el).setAttribute('aria-pressed', false.toString());\n      }\n      $$(this.currentActiveLayouts[layout].button.el).addClass('coveo-selected');\n      $$(this.currentActiveLayouts[layout].button.el).setAttribute('aria-pressed', true.toString());\n      this.currentLayout = layout;\n      $$(this.element).trigger(ResultListEvents.changeLayout, <IChangeLayoutEventArgs>{\n        layout: layout,\n        results: results\n      });\n    }\n  }\n\n  private handleQuerySuccess(args: IQuerySuccessEventArgs) {\n    this.hasNoResults = args.results.results.length == 0;\n    if (this.shouldShowSelector()) {\n      this.show();\n    } else {\n      this.hide();\n    }\n  }\n\n  private handleQueryStateChanged(args?: IAttributesChangedEventArg) {\n    const modelLayout = this.getModelValue();\n    const newLayout = find(keys(this.currentActiveLayouts), l => l === modelLayout);\n    if (newLayout !== undefined) {\n      this.setLayout(<ValidLayout>newLayout);\n    } else {\n      this.setLayout(<ValidLayout>keys(this.currentActiveLayouts)[0]);\n    }\n  }\n\n  private handleQueryError(args: IQueryErrorEventArgs) {\n    this.hasNoResults = true;\n    this.hide();\n  }\n\n  private updateSelectorAppearance() {\n    if (this.shouldShowSelector()) {\n      this.show();\n    } else {\n      this.hide();\n    }\n  }\n\n  private populate() {\n    let populateArgs: IResultLayoutPopulateArgs = { layouts: [] };\n    $$(this.root).trigger(ResultLayoutEvents.populateResultLayout, populateArgs);\n    const layouts = uniq(populateArgs.layouts.map(layout => layout.toLowerCase()));\n\n    each(layouts, layout => Assert.check(contains(ResultLayoutSelector.validLayouts, layout), 'Invalid layout'));\n    if (!isEmpty(layouts)) {\n      each(layouts, layout => this.addButton(layout));\n      if (!this.shouldShowSelector()) {\n        this.hide();\n      }\n    }\n  }\n\n  private addButton(layout: string) {\n    const btn = $$('span', {\n      className: 'coveo-result-layout-selector'\n    });\n    const caption = $$('span', { className: 'coveo-result-layout-selector-caption' }, l(layout));\n    btn.append(caption.el);\n\n    const icon = $$('span', { className: `coveo-icon coveo-${layout}-layout-icon` }, SVGIcons.icons[`${layout}Layout`]);\n    SVGDom.addClassToSVGInContainer(icon.el, `coveo-${layout}-svg`);\n    btn.prepend(icon.el);\n\n    const selectAction = () => this.changeLayout(<ValidLayout>layout);\n\n    new AccessibleButton()\n      .withElement(btn)\n      .withLabel(l('DisplayResultsAs', l(layout)))\n      .withSelectAction(selectAction)\n      .withOwner(this.bind)\n      .build();\n\n    const isCurrentLayout = layout === this.currentLayout;\n    btn.toggleClass('coveo-selected', isCurrentLayout);\n    btn.setAttribute('aria-pressed', isCurrentLayout.toString());\n\n    $$(this.element).append(btn.el);\n    this.currentActiveLayouts[layout] = {\n      button: {\n        visible: true,\n        el: btn.el\n      },\n      enabled: true\n    };\n  }\n\n  private hide() {\n    const elem = this.resultLayoutSection || this.element;\n    $$(elem).addClass('coveo-result-layout-hidden');\n  }\n\n  private show() {\n    const elem = this.resultLayoutSection || this.element;\n    $$(elem).removeClass('coveo-result-layout-hidden');\n  }\n\n  private getModelValue(): string {\n    return this.queryStateModel.get(QueryStateModel.attributesEnum.layout);\n  }\n\n  private setModelValue(val: string) {\n    this.queryStateModel.set(QueryStateModel.attributesEnum.layout, val);\n  }\n\n  private shouldShowSelector() {\n    return (\n      keys(this.currentActiveLayouts).length > 1 &&\n      filter(this.currentActiveLayouts, (activeLayout: IActiveLayouts) => activeLayout.button.visible).length > 1 &&\n      !this.hasNoResults\n    );\n  }\n\n  private isLayoutDisplayedByButton(layout: ValidLayout) {\n    return contains(keys(this.currentActiveLayouts), layout);\n  }\n}\n\nInitialization.registerAutoCreateComponent(ResultLayoutSelector);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResultLayoutSelector/ResultLayoutSelector.ts","import 'styling/_Tab';\nimport { each, indexOf, map } from 'underscore';\nimport { InitializationEvents } from '../../events/InitializationEvents';\nimport { IBuildingQueryEventArgs, QueryEvents } from '../../events/QueryEvents';\nimport { exportGlobally } from '../../GlobalExports';\nimport { Assert } from '../../misc/Assert';\nimport { IAttributeChangedEventArg, MODEL_EVENTS } from '../../models/Model';\nimport { QueryStateModel, QUERY_STATE_ATTRIBUTES } from '../../models/QueryStateModel';\nimport { SearchEndpoint } from '../../rest/SearchEndpoint';\nimport { AccessibleButton } from '../../utils/AccessibleButton';\nimport { $$ } from '../../utils/Dom';\nimport { Utils } from '../../utils/Utils';\nimport { analyticsActionCauseList, IAnalyticsInterfaceChange } from '../Analytics/AnalyticsActionListMeta';\nimport { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { IQueryExpression } from '../Base/IComponentOptions';\nimport { Initialization } from '../Base/Initialization';\nimport { ResponsiveTabs } from '../ResponsiveComponents/ResponsiveTabs';\nimport { ValidLayout } from '../ResultLayoutSelector/ValidLayout';\n\nexport interface ITabOptions {\n  expression?: IQueryExpression;\n  constant?: boolean;\n  id?: string;\n  icon?: string;\n  caption?: string;\n  sort?: string;\n  layout?: string;\n  endpoint?: SearchEndpoint;\n  enableDuplicateFiltering?: boolean;\n  pipeline?: string;\n  maximumAge?: number;\n  enableResponsiveMode?: boolean;\n  dropdownHeaderLabel?: string;\n}\n\n/**\n * The Tab component renders a widget that allows the end user to select a specific search interface.\n *\n * This component attaches itself to a `div` element. It is in charge of adding an advanced expression to the outgoing\n * query in order to refine the results.\n *\n * The Tab component can also hide and show different parts of the UI. For each individual component in the UI, you can\n * specify whether you wish to include or exclude that component when the user selects a certain Tab (see [Using Components\n * Only on Specific Tabs](https://docs.coveo.com/en/508/javascript-search-framework/using-components-only-on-specific-tabs)).\n *\n * **Setting a New Endpoint for a Tab:**\n *\n * A Tab can use a custom endpoint when performing a query. Of course, you need to make sure that the endpoint exists in\n * the array of Coveo.SearchEndpoint.endpoints (see {@link SearchEndpoint.endpoints}).\n *\n * ```\n * Coveo.SearchEndpoint.endpoints[\"specialEndpoint\"] = new Coveo.SearchEndpoint({\n *     restUri : 'https://somewhere.com/rest/search'\n * })\n *\n * [ ... ]\n *\n * <div class='CoveoTab' data-endpoint='specialEndpoint'></div>\n *\n * ```\n */\nexport class Tab extends Component {\n  static ID = 'Tab';\n\n  static doExport = () => {\n    exportGlobally({\n      Tab: Tab\n    });\n  };\n\n  /**\n   * The options for a Tab\n   * @componentOptions\n   */\n  static options: ITabOptions = {\n    /**\n     * Specifies a unique ID for the Tab.\n     *\n     * Specifying a value for this option is necessary for this component to work.\n     */\n    id: ComponentOptions.buildStringOption({ required: true, section: 'Common Options' }),\n\n    /**\n     * Specifies the caption of the Tab.\n     *\n     * Specifying a value for this option is necessary for this component to work.\n     */\n    caption: ComponentOptions.buildLocalizedStringOption({ required: true, section: 'Common Options' }),\n\n    /**\n     * Specifies an icon to use for the Tab.\n     *\n     * @deprecated This options is mostly kept for legacy reasons. If possible, you should avoid using it.\n     */\n    icon: ComponentOptions.buildStringOption(),\n\n    /**\n     * Specifies an advanced expression or filter that the Tab should add to any outgoing query.\n     *\n     * **Example:**\n     *\n     * `@objecttype==Message`\n     *\n     * Default value is `undefined` and the Tab applies no additional expression or filter to the query.\n     */\n    expression: ComponentOptions.buildQueryExpressionOption({ section: 'Common Options' }),\n\n    /**\n     * Specifies the {@link SearchEndpoint} to point to when performing queries from within the Tab.\n     *\n     * By default, the Tab uses the \"default\" endpoint.\n     */\n    endpoint: ComponentOptions.buildCustomOption(endpoint => (endpoint != null ? SearchEndpoint.endpoints[endpoint] : null)),\n\n    /**\n     * Specifies the default sort criteria to use when selecting the Tab. A {@link Sort} component with the same\n     * parameter needs to be present in the search interface in order for this option to function properly.\n     *\n     * **Examples:**\n     *\n     * - `data-sort='relevancy'`\n     * - `data-sort='date descending'`\n     *\n     * Default value is `undefined` and the normal {@link Sort} component behavior applies.\n     */\n    sort: ComponentOptions.buildStringOption(),\n\n    /**\n     * Specifies the default layout to display when the user selects the Tab (see {@link ResultList.options.layout} and\n     * {@link ResultLayout}).\n     *\n     * See the {@link ValidLayout} type for the list of possible values.\n     *\n     * If not specified, it will default to 'list'.\n     *\n     * See also [Result Layouts](https://docs.coveo.com/en/360/).\n     *\n     * Default value is `undefined` and the component selects the first available layout.\n     */\n    layout: ComponentOptions.buildStringOption<ValidLayout>(),\n\n    /**\n     * Specifies whether to include the {@link Tab.options.expression} in the constant part of the query.\n     *\n     * The index specially optimizes the constant part of the query to execute faster. However, you must be careful not\n     * to include dynamic query expressions, otherwise the cache will lose its efficiency.\n     *\n     * Default value is `true`.\n     */\n    constant: ComponentOptions.buildBooleanOption({ defaultValue: true, section: 'Filtering' }),\n\n    /**\n     * Whether to filter out duplicates, so that items resembling one another only appear once in the query results.\n     *\n     * **Notes:**\n     * - Two items must be at least 85% similar to one another to be considered duplicates.\n     * - When a pair of duplicates is found, only the higher-ranked item of the two is kept in the result set.\n     * - Enabling this feature can make the total result count less precise, as only the requested page of query results is submitted to duplicate filtering.\n     * - The default value for this option can be modified through the {@link SearchInterface} component.\n     */\n    enableDuplicateFiltering: ComponentOptions.buildBooleanOption({ defaultValue: false }),\n\n    /**\n     * Specifies the name of the query pipeline to use for the queries when the Tab is selected.\n     *\n     * You can specify a value for this option if your index is in a Coveo Cloud organization in which pipelines have\n     * been created (see [Adding and Managing Query Pipelines](https://docs.coveo.com/en/1791/)).\n     *\n     * Default value is `undefined`, which means that pipeline selection conditions defined in the Coveo Cloud\n     * organization apply.\n     */\n    pipeline: ComponentOptions.buildStringOption(),\n\n    /**\n     * Specifies the maximum age (in milliseconds) that cached query results can have to still be usable as results\n     * instead of performing a new query on the index from within the Tab. The cache is located in the Coveo Search API\n     * (which resides between the index and the search interface).\n     *\n     * If cached results that are older than the age you specify in this option are available, a new query will be\n     * performed on the index anyhow.\n     *\n     * On high-volume public web sites, specifying a higher value for this option can greatly improve query response\n     * time at the cost of result freshness.\n     *\n     * **Note:**\n     *\n     * > It is also possible to set a maximum cache age for the entire {@link SearchInterface} rather than for a single\n     * > Tab (see {@link SearchInterface.options.maximumAge}).\n     *\n     * Default value is `undefined` and the Coveo Search API determines the maximum cache age. This is typically\n     * equivalent to 30 minutes (see [maximumAge](https://docs.coveo.com/en/1461/#RestQueryParameters-maximumAge)).\n     */\n    maximumAge: ComponentOptions.buildNumberOption(),\n\n    /**\n     * Specifies whether to enable responsive mode for tabs. Responsive mode makes overflowing tabs disappear, instead\n     * making them available using a dropdown button. Responsive tabs are enabled either when tabs overflow or when the\n     * width of the search interface becomes too small.\n     *\n     * Disabling responsive mode for one Tab also disables it for all tabs. Therefore, you only need to set this option\n     * to `false` on one Tab to disable responsive mode.\n     *\n     * Default value is `true`.\n     *\n     * @availablesince [October 2016 Release (v1.1550.5)](https://docs.coveo.com/en/309/#october-2016-release-v115505)\n     */\n    enableResponsiveMode: ComponentOptions.buildBooleanOption({ defaultValue: true, section: 'ResponsiveOptions' }),\n\n    /**\n     * Specifies the label of the button that allows to show the hidden tabs when in responsive mode.\n     *\n     * If more than one Tab in the search interface specifies a value for this option, then the framework uses the first\n     * occurrence of the option.\n     *\n     * The default value is `\"More\"`.\n     */\n    dropdownHeaderLabel: ComponentOptions.buildLocalizedStringOption({ section: 'ResponsiveOptions' })\n  };\n\n  /**\n   * Creates a new Tab. Binds on buildingQuery event as well as an event on click of the element.\n   * @param element The HTMLElement on which to instantiate the component. Normally a `div`.\n   * @param options The options for the Tab component.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time).\n   */\n  constructor(public element: HTMLElement, public options?: ITabOptions, bindings?: IComponentBindings) {\n    super(element, Tab.ID, bindings);\n\n    this.options = ComponentOptions.initComponentOptions(element, Tab, options);\n\n    this.bind.onRootElement(QueryEvents.buildingQuery, (args: IBuildingQueryEventArgs) => this.handleBuildingQuery(args));\n    this.bind.onRootElement(InitializationEvents.afterInitialization, () => this.handleAfterInitialization());\n    this.bind.onQueryState(MODEL_EVENTS.CHANGE_ONE, QUERY_STATE_ATTRIBUTES.T, (args: IAttributeChangedEventArg) =>\n      this.handleQueryStateChanged(args)\n    );\n\n    new AccessibleButton()\n      .withElement(element)\n      .withSelectAction(() => this.select())\n      .withTitle(this.options.caption)\n      .withOwner(this.bind)\n      .build();\n\n    this.render();\n    ResponsiveTabs.init(this.root, this, this.options);\n  }\n\n  /**\n   * Selects the current Tab.\n   *\n   * Also logs the `interfaceChange` event in the usage analytics with the new current {@link Tab.options.id} as metada\n   * and triggers a new query.\n   */\n  public select() {\n    if (!this.disabled) {\n      const state = {\n        t: this.options.id,\n        sort: this.options.sort || QueryStateModel.defaultAttributes.sort\n      } as any;\n\n      if (this.options.layout) {\n        state.layout = this.options.layout;\n      }\n\n      this.queryStateModel.setMultiple(state);\n\n      this.usageAnalytics.logSearchEvent<IAnalyticsInterfaceChange>(analyticsActionCauseList.interfaceChange, {\n        interfaceChangeTo: this.options.id\n      });\n      this.queryController.executeQuery();\n    }\n  }\n\n  /**\n   * Indicates whether the HTMLElement argument is included in the Tab. *Included* elements are shown when the Tab is\n   * selected, whereas *excluded* elements are not.\n   * @param element The HTMLElement to verify.\n   * @returns {boolean} `true` if the HTMLElement is included in the Tab; `false` if it is excluded.\n   */\n  public isElementIncludedInTab(element: HTMLElement): boolean {\n    Assert.exists(element);\n\n    const includedTabs = this.splitListOfTabs(element.getAttribute('data-tab'));\n    const excludedTabs = this.splitListOfTabs(element.getAttribute('data-tab-not'));\n    Assert.check(\n      !(includedTabs.length != 0 && excludedTabs.length != 0),\n      'You cannot both explicitly include and exclude an element from tabs.'\n    );\n\n    return (\n      (includedTabs.length != 0 && indexOf(includedTabs, this.options.id) != -1) ||\n      (excludedTabs.length != 0 && indexOf(excludedTabs, this.options.id) == -1) ||\n      (includedTabs.length == 0 && excludedTabs.length == 0)\n    );\n  }\n\n  private render() {\n    const icon = this.options.icon;\n    if (Utils.isNonEmptyString(icon)) {\n      const iconSpan = $$('span').el;\n      $$(iconSpan).addClass(['coveo-icon', icon]);\n      this.element.insertBefore(iconSpan, this.element.firstChild);\n    }\n\n    const caption = this.options.caption;\n    if (Utils.isNonEmptyString(caption)) {\n      const captionP = document.createElement('p');\n      $$(captionP).text(caption);\n      this.element.appendChild(captionP);\n    }\n  }\n\n  protected handleBuildingQuery(data: IBuildingQueryEventArgs) {\n    Assert.exists(data);\n    if (!this.disabled && this.isSelected()) {\n      data.queryBuilder.tab = this.options.id;\n\n      if (Utils.isNonEmptyString(this.options.expression)) {\n        if (this.options.constant) {\n          data.queryBuilder.constantExpression.add(this.options.expression);\n        } else {\n          data.queryBuilder.advancedExpression.add(this.options.expression);\n        }\n      }\n\n      if (this.options.enableDuplicateFiltering) {\n        data.queryBuilder.enableDuplicateFiltering = true;\n      }\n\n      if (this.options.pipeline != null) {\n        data.queryBuilder.pipeline = this.options.pipeline;\n      }\n\n      if (this.options.maximumAge != null) {\n        data.queryBuilder.maximumAge = this.options.maximumAge;\n      }\n    }\n  }\n\n  private handleQueryStateChanged(data: IAttributeChangedEventArg) {\n    Assert.exists(data);\n    if (!this.disabled && this.isSelected()) {\n      $$(this.element).addClass('coveo-selected');\n      this.queryController.setEndpoint(this.options.endpoint);\n      this.showAndHideAppropriateElements();\n    } else {\n      $$(this.element).removeClass('coveo-selected');\n    }\n  }\n\n  private handleAfterInitialization() {\n    if (this.isSelected() && this.options.layout) {\n      this.queryStateModel.set(QUERY_STATE_ATTRIBUTES.LAYOUT, this.options.layout);\n    }\n  }\n\n  protected isSelected(): boolean {\n    const activeTab = this.queryStateModel.get(QueryStateModel.attributesEnum.t);\n    return activeTab == this.options.id;\n  }\n\n  private showAndHideAppropriateElements() {\n    const showElements = [];\n    const hideElements = [];\n\n    each($$(this.root).findAll('[data-tab],[data-tab-not]'), element => {\n      if (this.isElementIncludedInTab(element)) {\n        this.toggleAllComponentsUnder(element, true);\n        showElements.push(element);\n      } else {\n        this.toggleAllComponentsUnder(element, false);\n        hideElements.push(element);\n      }\n    });\n\n    $$(this.root).one(QueryEvents.querySuccess, () => {\n      each(showElements, elem => $$(elem).removeClass('coveo-tab-disabled'));\n      each(hideElements, elem => $$(elem).addClass('coveo-tab-disabled'));\n    });\n  }\n\n  private splitListOfTabs(value: string): string[] {\n    if (Utils.exists(value)) {\n      return map(value.split(','), tab => Utils.trim(tab));\n    } else {\n      return [];\n    }\n  }\n\n  private toggleAllComponentsUnder(element: HTMLElement, enable: boolean) {\n    Assert.exists(element);\n\n    const togglePossibleComponent = (possibleComponent: HTMLElement) => {\n      const possibleCmp = Component.get(possibleComponent, undefined, true);\n      if (possibleCmp) {\n        if (enable) {\n          possibleCmp.enable();\n        } else {\n          possibleCmp.disable();\n        }\n      }\n    };\n\n    togglePossibleComponent(element);\n    each($$(element).findAll('*'), el => {\n      togglePossibleComponent(el);\n    });\n  }\n\n  public enable() {\n    super.enable();\n    this.element.style.display = '';\n  }\n\n  public disable() {\n    super.disable();\n    this.element.style.display = 'none';\n  }\n}\n\nInitialization.registerAutoCreateComponent(Tab);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Tab/Tab.ts","// shim for using process in browser\nvar process = module.exports = {};\n\n// cached from whatever global is present so that test runners that stub it\n// don't break things.  But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals.  It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n    throw new Error('setTimeout has not been defined');\n}\nfunction defaultClearTimeout () {\n    throw new Error('clearTimeout has not been defined');\n}\n(function () {\n    try {\n        if (typeof setTimeout === 'function') {\n            cachedSetTimeout = setTimeout;\n        } else {\n            cachedSetTimeout = defaultSetTimout;\n        }\n    } catch (e) {\n        cachedSetTimeout = defaultSetTimout;\n    }\n    try {\n        if (typeof clearTimeout === 'function') {\n            cachedClearTimeout = clearTimeout;\n        } else {\n            cachedClearTimeout = defaultClearTimeout;\n        }\n    } catch (e) {\n        cachedClearTimeout = defaultClearTimeout;\n    }\n} ())\nfunction runTimeout(fun) {\n    if (cachedSetTimeout === setTimeout) {\n        //normal enviroments in sane situations\n        return setTimeout(fun, 0);\n    }\n    // if setTimeout wasn't available but was latter defined\n    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n        cachedSetTimeout = setTimeout;\n        return setTimeout(fun, 0);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedSetTimeout(fun, 0);\n    } catch(e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n            return cachedSetTimeout.call(null, fun, 0);\n        } catch(e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n            return cachedSetTimeout.call(this, fun, 0);\n        }\n    }\n\n\n}\nfunction runClearTimeout(marker) {\n    if (cachedClearTimeout === clearTimeout) {\n        //normal enviroments in sane situations\n        return clearTimeout(marker);\n    }\n    // if clearTimeout wasn't available but was latter defined\n    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n        cachedClearTimeout = clearTimeout;\n        return clearTimeout(marker);\n    }\n    try {\n        // when when somebody has screwed with setTimeout but no I.E. maddness\n        return cachedClearTimeout(marker);\n    } catch (e){\n        try {\n            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally\n            return cachedClearTimeout.call(null, marker);\n        } catch (e){\n            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n            // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n            return cachedClearTimeout.call(this, marker);\n        }\n    }\n\n\n\n}\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n    if (!draining || !currentQueue) {\n        return;\n    }\n    draining = false;\n    if (currentQueue.length) {\n        queue = currentQueue.concat(queue);\n    } else {\n        queueIndex = -1;\n    }\n    if (queue.length) {\n        drainQueue();\n    }\n}\n\nfunction drainQueue() {\n    if (draining) {\n        return;\n    }\n    var timeout = runTimeout(cleanUpNextTick);\n    draining = true;\n\n    var len = queue.length;\n    while(len) {\n        currentQueue = queue;\n        queue = [];\n        while (++queueIndex < len) {\n            if (currentQueue) {\n                currentQueue[queueIndex].run();\n            }\n        }\n        queueIndex = -1;\n        len = queue.length;\n    }\n    currentQueue = null;\n    draining = false;\n    runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n    var args = new Array(arguments.length - 1);\n    if (arguments.length > 1) {\n        for (var i = 1; i < arguments.length; i++) {\n            args[i - 1] = arguments[i];\n        }\n    }\n    queue.push(new Item(fun, args));\n    if (queue.length === 1 && !draining) {\n        runTimeout(drainQueue);\n    }\n};\n\n// v8 likes predictible objects\nfunction Item(fun, array) {\n    this.fun = fun;\n    this.array = array;\n}\nItem.prototype.run = function () {\n    this.fun.apply(null, this.array);\n};\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function (name) { return [] }\n\nprocess.binding = function (name) {\n    throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () { return '/' };\nprocess.chdir = function (dir) {\n    throw new Error('process.chdir is not supported');\n};\nprocess.umask = function() { return 0; };\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/process/browser.js\n// module id = 202\n// module chunks = 88 89","/**\n * The `IGeolocationPosition` interface describes a geolocation position\n * usable by the [DistanceResources]{@link DistanceResources} component.\n */\nexport interface IGeolocationPosition {\n  longitude: number;\n  latitude: number;\n}\n\n/**\n * The `IGeolocationPositionProvider` interface describes an object with a method that can provide\n * a geolocation position to the [DistanceResources]{@link DistanceResources} component.\n */\nexport interface IGeolocationPositionProvider {\n  getPosition(): Promise<IGeolocationPosition>;\n}\n\n/**\n * The `IResolvingPositionEventArgs` interface describes the object that all\n * [`onResolvingPosition`]{@link DistanceEvents.onResolvingPosition} event handlers receive as an argument.\n */\nexport interface IResolvingPositionEventArgs {\n  /**\n   * The array of providers that can provide a position. The first provider that can resolve the position will be used.\n   */\n  providers: IGeolocationPositionProvider[];\n}\n\n/**\n * The `IPositionResolvedEventArgs` interface describes the object that all\n * [`onPositionResolved`]{@link DistanceEvents.onPositionResolved} event handlers receive as an argument.\n */\nexport interface IPositionResolvedEventArgs {\n  /**\n   * The position that was resolved.\n   */\n  position: IGeolocationPosition;\n}\n\n/**\n * The `DistanceEvents` static class contains the string definitions of all events related to distance\n * list.\n *\n * See [Events](https://docs.coveo.com/en/417/).\n */\nexport class DistanceEvents {\n  /**\n   * Triggered when the [`DistanceResources`]{@link DistanceResources} component successfully resolves the position.\n   *\n   * All `onPositionResolved` event handlers receive a [`PositionResolvedEventArgs`]{@link IPositionResolvedEventArgs}\n   * object as an argument.\n   *\n   * @type {string} The string value is `onPositionResolved`.\n   */\n  public static onPositionResolved = 'onPositionResolved';\n\n  /**\n   * Triggered when the [`DistanceResources`]{@link DistanceResources} component tries to resolve the position.\n   *\n   * All `onResolvingPosition` event handlers receive a\n   * [`ResolvingPositionEventArgs`]{@link IResolvingPositionEventArgs} object as an argument.\n   *\n   * **Note:**\n   * > You should bind a handler to this event if you want to register one or several new position providers.\n   *\n   * @type {string} The string value is `onResolvingPosition`.\n   */\n  public static onResolvingPosition = 'onResolvingPosition';\n\n  /**\n   * Triggered when the [`DistanceResources`]{@link DistanceResources} component fails to resolve the position.\n   *\n   * **Note:**\n   * > You should bind a handler to this event if you want to display an error message to the end user, or hide\n   * > components that cannot be used.\n   *\n   * @type {string} The string value is `onPositionNotResolved`.\n   */\n  public static onPositionNotResolved = 'onPositionNotResolved';\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/events/DistanceEvents.ts","export { Model } from './models/Model';\nexport { QueryStateModel } from './models/QueryStateModel';\nexport { ComponentOptionsModel } from './models/ComponentOptionsModel';\nexport { ComponentStateModel } from './models/ComponentStateModel';\n\n\n\n// WEBPACK FOOTER //\n// ./src/ModelsModules.ts","import * as Globalize from 'globalize';\nimport { any, escape } from 'underscore';\nimport { IQuerySuccessEventArgs } from '../events/QueryEvents';\nimport { IQuery } from '../rest/Query';\nimport { l } from '../strings/Strings';\nimport { get } from '../ui/Base/RegisteredNamedMethods';\nimport { IResultListOptions } from '../ui/ResultList/ResultListOptions';\nimport { $$ } from './Dom';\n\ninterface ISummaryStrings {\n  first: string;\n  last: string;\n  totalCount: string;\n  query: string;\n}\n\ninterface ISummaryMessage {\n  includingQuery: string;\n  excludingQuery: string;\n}\n\nexport class QuerySummaryUtils {\n  public static message(root: HTMLElement, data: IQuerySuccessEventArgs) {\n    const messageBuilder = QuerySummaryUtils.messageBuilderForMode(root);\n    const strings = QuerySummaryUtils.getSummaryStrings(data);\n\n    return messageBuilder(data, strings);\n  }\n\n  public static htmlMessage(root: HTMLElement, data: IQuerySuccessEventArgs) {\n    const messageBuilder = QuerySummaryUtils.messageBuilderForMode(root);\n    const strings = QuerySummaryUtils.getHtmlSummaryStrings(data);\n\n    return messageBuilder(data, strings);\n  }\n\n  public static replaceQueryTags(template: string, replacement: string) {\n    const queryTag = /\\$\\{query\\}/g;\n    return template ? template.replace(queryTag, replacement) : '';\n  }\n\n  private static messageBuilderForMode(root: HTMLElement) {\n    if (QuerySummaryUtils.isInfiniteScrollMode(root)) {\n      return QuerySummaryUtils.buildInfiniteScrollMessage;\n    }\n\n    return QuerySummaryUtils.buildStandardMessage;\n  }\n\n  private static isInfiniteScrollMode(root: HTMLElement) {\n    const resultListSelector = `.CoveoResultList`;\n    const resultLists = $$(root).findAll(resultListSelector);\n\n    return any(resultLists, resultList => {\n      const options: IResultListOptions = (get(resultList) as any).options;\n      return options && options.enableInfiniteScroll;\n    });\n  }\n\n  private static buildStandardMessage(data: IQuerySuccessEventArgs, strings: ISummaryStrings) {\n    const numOfResults = data.results.results.length;\n    const messages: ISummaryMessage = {\n      includingQuery: l('ShowingResultsOfWithQuery', strings.first, strings.last, strings.totalCount, strings.query, numOfResults),\n      excludingQuery: l('ShowingResultsOf', strings.first, strings.last, strings.totalCount, numOfResults)\n    };\n\n    return QuerySummaryUtils.buildMessage(data, messages);\n  }\n\n  private static buildInfiniteScrollMessage(data: IQuerySuccessEventArgs, strings: ISummaryStrings) {\n    const numOfResults = data.results.results.length;\n    const messages: ISummaryMessage = {\n      includingQuery: l('ShowingResultsWithQuery', strings.totalCount, strings.query, numOfResults),\n      excludingQuery: l('ShowingResults', strings.totalCount, numOfResults)\n    };\n\n    return QuerySummaryUtils.buildMessage(data, messages);\n  }\n\n  private static buildMessage(data: IQuerySuccessEventArgs, message: ISummaryMessage) {\n    const numOfResults = data.results.results.length;\n    const sanitizedQuery = QuerySummaryUtils.sanitizeQuery(data.query);\n\n    if (!numOfResults) {\n      return '';\n    }\n\n    return sanitizedQuery ? message.includingQuery : message.excludingQuery;\n  }\n\n  private static getHtmlSummaryStrings(data: IQuerySuccessEventArgs): ISummaryStrings {\n    const strings = QuerySummaryUtils.getSummaryStrings(data);\n\n    return {\n      first: QuerySummaryUtils.wrapWithSpanTag(strings.first),\n      last: QuerySummaryUtils.wrapWithSpanTag(strings.last),\n      totalCount: QuerySummaryUtils.wrapWithSpanTag(strings.totalCount),\n      query: QuerySummaryUtils.wrapWithSpanTag(strings.query)\n    };\n  }\n\n  private static wrapWithSpanTag(word: string) {\n    return $$('span', { className: 'coveo-highlight' }, word).el.outerHTML;\n  }\n\n  private static getSummaryStrings(data: IQuerySuccessEventArgs): ISummaryStrings {\n    const queryPerformed = data.query;\n    const queryResults = data.results;\n\n    const first = Globalize.format(queryPerformed.firstResult + 1, 'n0');\n    const last = Globalize.format(queryPerformed.firstResult + queryResults.results.length, 'n0');\n    const totalCount = Globalize.format(queryResults.totalCountFiltered, 'n0');\n    const query = QuerySummaryUtils.sanitizeQuery(queryPerformed);\n\n    return { first, last, totalCount, query };\n  }\n\n  private static sanitizeQuery(query: IQuery) {\n    return query.q ? escape(query.q.trim()) : '';\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/QuerySummaryUtils.ts","import 'styling/_MissingTermsBreadcrumb';\nimport { $$ } from '../../utils/Dom';\nimport { IAnalyticsMissingTerm, analyticsActionCauseList } from '../Analytics/AnalyticsActionListMeta';\nimport { IMissingTermManagerArgs } from '../SearchInterface/SearchInterface';\nimport { QueryEvents, BreadcrumbEvents, l, get } from '../../Core';\nimport { IDoneBuildingQueryEventArgs } from '../../events/QueryEvents';\nimport { IClearBreadcrumbEventArgs, IPopulateBreadcrumbEventArgs } from '../../events/BreadcrumbEvents';\nimport { SVGIcons } from '../../utils/SVGIcons';\nimport { MODEL_EVENTS, IAttributeChangedEventArg } from '../../models/Model';\nimport { QUERY_STATE_ATTRIBUTES } from '../../models/QueryStateModel';\nimport XRegExp = require('xregexp');\nimport { Breadcrumb } from '../Breadcrumb/Breadcrumb';\nimport { escape } from 'underscore';\nimport { getHeadingTag } from '../../utils/AccessibilityUtils';\n\nexport class MissingTermManager {\n  static ID = 'MissingTermManager';\n  // We only need to import one Asian characters script because what is important here is the space\n  // between characters and any of those scripts will contain it.\n  // p{Han}: import the unicode script for chinese caracter\n  // List of script: https://www.fontspace.com/unicode/script\n  static wordBoundary = '(([\\\\p{Han}])?([^(\\\\p{Latin}-)])|^|$)';\n\n  constructor(private args: IMissingTermManagerArgs) {\n    $$(args.element).on(QueryEvents.doneBuildingQuery, (event, args: IDoneBuildingQueryEventArgs) => {\n      return this.handleBuildingQuery(args);\n    });\n\n    $$(args.element).on(`state:${MODEL_EVENTS.CHANGE_ONE}${QUERY_STATE_ATTRIBUTES.Q}`, (evt, args: IAttributeChangedEventArg) =>\n      this.handleQueryChange(args)\n    );\n\n    $$(args.element).on(BreadcrumbEvents.populateBreadcrumb, (evt, args: IPopulateBreadcrumbEventArgs) => {\n      this.handlePopulateBreadcrumb(args);\n    });\n    $$(args.element).on(BreadcrumbEvents.clearBreadcrumb, (evt, args: IClearBreadcrumbEventArgs) => this.handleClearBreadcrumb());\n  }\n\n  private handleBuildingQuery(data: IDoneBuildingQueryEventArgs) {\n    const currentMissingTerm = this.args.queryStateModel.get('missingTerms');\n    currentMissingTerm.forEach(term => {\n      data.queryBuilder.advancedExpression.add(term);\n    });\n  }\n\n  private get termsForcedToAppear(): string[] {\n    return [...this.args.queryStateModel.get('missingTerms')];\n  }\n\n  private setUpdateTermsForcedToAppear(terms: string[]) {\n    this.args.queryStateModel.set('missingTerms', [...terms]);\n  }\n\n  private handlePopulateBreadcrumb(args: IPopulateBreadcrumbEventArgs) {\n    if (this.termsForcedToAppear.length === 0) {\n      return;\n    }\n\n    const missingTerms = this.buildTermForcedToAppear();\n    const BreadcrumbContainer = this.buildBreadcrumbContainer(args.headingLevel);\n\n    missingTerms.forEach(term => $$(BreadcrumbContainer).append(term.el));\n\n    args.breadcrumbs.push({\n      element: BreadcrumbContainer.el\n    });\n  }\n\n  private buildTermForcedToAppear() {\n    return this.termsForcedToAppear.map(term => {\n      const termContainer = $$(\n        'button',\n        {\n          type: 'button',\n          className: 'coveo-missing-term-breadcrumb-value coveo-accessible-button'\n        },\n        $$('span', { className: 'coveo-missing-term-breadcrumb-caption' }, escape(term)),\n        $$('span', { className: 'coveo-missing-term-breadcrumb-clear' }, SVGIcons.icons.mainClear)\n      );\n\n      termContainer.on('click', () => this.removeTermForcedToAppear(term));\n      return termContainer;\n    });\n  }\n\n  private buildBreadcrumbContainer(headingLevel?: number) {\n    return $$(\n      'div',\n      {\n        className: 'coveo-remove-term-container'\n      },\n      $$(\n        getHeadingTag(headingLevel, 'span'),\n        {\n          className: 'coveo-missing-term-breadcrumb-title'\n        },\n        l('MustContain')\n      )\n    );\n  }\n\n  private removeTermForcedToAppear(term: string) {\n    const termsForcedToAppearCopy = this.termsForcedToAppear;\n    const termIndex = termsForcedToAppearCopy.indexOf(term);\n    termsForcedToAppearCopy.splice(termIndex, 1);\n    this.setUpdateTermsForcedToAppear(termsForcedToAppearCopy);\n    this.logAnalyticsRemoveMissingTerm(term);\n    this.args.queryController.executeQuery();\n  }\n\n  private logAnalyticsRemoveMissingTerm(term: string) {\n    this.args.usageAnalytics.logSearchEvent<IAnalyticsMissingTerm>(analyticsActionCauseList.removeMissingTerm, {\n      missingTerm: term\n    });\n  }\n\n  private handleClearBreadcrumb() {\n    this.setUpdateTermsForcedToAppear([]);\n  }\n\n  private handleQueryChange(args: IAttributeChangedEventArg) {\n    this.updateTermsForcedToAppearToOnlyIncludeWords(args);\n\n    const breadcrumbSelector = document.querySelector('.CoveoBreadcrumb');\n    if (!breadcrumbSelector) {\n      return;\n    }\n\n    let breadcrumb = <Breadcrumb>get(<HTMLElement>breadcrumbSelector);\n    if (breadcrumb) {\n      breadcrumb.getBreadcrumbs();\n      $$(this.args.element).trigger(BreadcrumbEvents.redrawBreadcrumb);\n    }\n  }\n\n  private updateTermsForcedToAppearToOnlyIncludeWords(args) {\n    let termForcedToAppearCopy = this.termsForcedToAppear;\n    this.termsForcedToAppear.forEach(term => {\n      const regex = XRegExp(`${MissingTermManager.wordBoundary}(${term})${MissingTermManager.wordBoundary}`, 'g');\n      if (!regex.test(args.value)) {\n        const termIndex = termForcedToAppearCopy.indexOf(term);\n        termForcedToAppearCopy.splice(termIndex, 1);\n      }\n    });\n    this.setUpdateTermsForcedToAppear(termForcedToAppearCopy);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/MissingTerm/MissingTermManager.ts","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime-corejs2/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _xregexp = _interopRequireDefault(require(\"./xregexp\"));\n\nvar _build = _interopRequireDefault(require(\"./addons/build\"));\n\nvar _matchrecursive = _interopRequireDefault(require(\"./addons/matchrecursive\"));\n\nvar _unicodeBase = _interopRequireDefault(require(\"./addons/unicode-base\"));\n\nvar _unicodeBlocks = _interopRequireDefault(require(\"./addons/unicode-blocks\"));\n\nvar _unicodeCategories = _interopRequireDefault(require(\"./addons/unicode-categories\"));\n\nvar _unicodeProperties = _interopRequireDefault(require(\"./addons/unicode-properties\"));\n\nvar _unicodeScripts = _interopRequireDefault(require(\"./addons/unicode-scripts\"));\n\n(0, _build.default)(_xregexp.default);\n(0, _matchrecursive.default)(_xregexp.default);\n(0, _unicodeBase.default)(_xregexp.default);\n(0, _unicodeBlocks.default)(_xregexp.default);\n(0, _unicodeCategories.default)(_xregexp.default);\n(0, _unicodeProperties.default)(_xregexp.default);\n(0, _unicodeScripts.default)(_xregexp.default);\nvar _default = _xregexp.default;\nexports.default = _default;\nmodule.exports = exports[\"default\"];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/xregexp/lib/index.js\n// module id = 207\n// module chunks = 88 89","export type ValidStorageProvider = 'local' | 'session';\n\nexport class StorageUtils<T> {\n  private storage: Storage;\n\n  constructor(private id: string, storageProvider: ValidStorageProvider = 'local') {\n    // This check must be made in a try/catch. If cookies are disabled for a\n    // browser then window.localStorage will throw an undefined exception.\n    try {\n      switch (storageProvider) {\n        case 'local':\n          this.storage = window.localStorage;\n          break;\n        case 'session':\n          this.storage = window.sessionStorage;\n          break;\n        default:\n          this.storage = null;\n      }\n    } catch (error) {\n      this.storage = null;\n    }\n  }\n\n  public save(data: T) {\n    if (!this.storage) {\n      return;\n    }\n    try {\n      this.storage.setItem(this.getStorageKey(), JSON.stringify(data));\n    } catch (error) {}\n  }\n\n  public load(): T {\n    if (!this.storage) {\n      return null;\n    }\n\n    try {\n      const value = this.storage.getItem(this.getStorageKey());\n      return value && JSON.parse(value);\n    } catch (error) {\n      return null;\n    }\n  }\n\n  public remove(key?: string) {\n    if (!this.storage) {\n      return;\n    }\n\n    try {\n      if (key == undefined) {\n        this.storage.removeItem(this.getStorageKey());\n      } else {\n        const oldObj = this.load();\n        delete oldObj[key];\n        this.save(oldObj);\n      }\n    } catch (error) {}\n  }\n\n  private getStorageKey() {\n    return 'coveo-' + this.id;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/StorageUtils.ts","import { LiveAnalyticsClient } from './LiveAnalyticsClient';\nimport { IAnalyticsActionCause, analyticsActionCauseList } from './AnalyticsActionListMeta';\nimport { IQueryResult } from '../../rest/QueryResult';\nimport { AnalyticsEndpoint } from '../../rest/AnalyticsEndpoint';\nimport { IAPIAnalyticsEventResponse } from '../../rest/APIAnalyticsEventResponse';\nimport { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { Recommendation } from '../Recommendation/Recommendation';\nimport { SearchInterface } from '../SearchInterface/SearchInterface';\nimport * as _ from 'underscore';\nexport class RecommendationAnalyticsClient extends LiveAnalyticsClient {\n  private recommendation: Recommendation;\n\n  constructor(\n    public endpoint: AnalyticsEndpoint,\n    public rootElement: HTMLElement,\n    public userId: string,\n    public userDisplayName: string,\n    public anonymous: boolean,\n    public splitTestRunName: string,\n    public splitTestRunVersion: string,\n    public originLevel1: string,\n    public sendToCloud: boolean,\n    public bindings: IComponentBindings\n  ) {\n    super(\n      endpoint,\n      rootElement,\n      userId,\n      userDisplayName,\n      anonymous,\n      splitTestRunName,\n      splitTestRunVersion,\n      originLevel1,\n      sendToCloud,\n      bindings\n    );\n    this.recommendation = <Recommendation>this.bindings.searchInterface;\n  }\n\n  public logSearchEvent<TMeta>(actionCause: IAnalyticsActionCause, meta: TMeta) {\n    if (actionCause == analyticsActionCauseList.interfaceLoad) {\n      actionCause = analyticsActionCauseList.recommendationInterfaceLoad;\n    }\n    super.logSearchEvent(actionCause, meta);\n  }\n\n  public logClickEvent<TMeta>(\n    actionCause: IAnalyticsActionCause,\n    meta: TMeta,\n    result: IQueryResult,\n    element: HTMLElement\n  ): Promise<IAPIAnalyticsEventResponse> {\n    if (actionCause == analyticsActionCauseList.documentOpen) {\n      actionCause = analyticsActionCauseList.recommendationOpen;\n    }\n\n    const promises = [super.logClickEvent(actionCause, meta, result, element)];\n\n    if (this.recommendation.mainQuerySearchUID && this.recommendation.mainQueryPipeline != null) {\n      // We log a second click associated with the main interface query to tell the analytics that the query was a success.\n      let mainInterface = <SearchInterface>Component.get(this.recommendation.options.mainSearchInterface, SearchInterface);\n      result.queryUid = this.recommendation.mainQuerySearchUID;\n      result.pipeline = this.recommendation.mainQueryPipeline;\n      promises.push(mainInterface.usageAnalytics.logClickEvent(actionCause, meta, result, element));\n    }\n    return Promise.all(promises).then(responses => _.first(responses));\n  }\n\n  protected getOriginLevel2(element: HTMLElement): string {\n    return this.recommendation.getId();\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Analytics/RecommendationAnalyticsClient.ts","import * as _ from 'underscore';\n\nexport let underscoreInstance;\nunderscoreInstance = _;\nsetCoveoUnderscore();\nfunction setCoveoUnderscore() {\n  if (window['Coveo'] == undefined) {\n    window['Coveo'] = {};\n  }\n  if (window['Coveo']['_'] == undefined) {\n    window['Coveo']['_'] = _;\n    setTemplateSettings(window['Coveo']['_']);\n    underscoreInstance = window['Coveo']['_'];\n  }\n}\n\nfunction setTemplateSettings({ templateSettings }: { templateSettings: _.TemplateSettings }) {\n  templateSettings.evaluate = /(?:<%|{{)([\\s\\S]+?)(?:%>|}})/g;\n  templateSettings.interpolate = /(?:<%|{{)=([\\s\\S]+?)(?:%>|}})/g;\n  templateSettings.escape = /(?:<%|{{)-([\\s\\S]+?)(?:%>|}})/g;\n}\n\nconst previousUnderscore = window['_'];\nwindow['_'] = _;\n// Run Underscore.js in \"noConflict\" mode, returning the `_` variable to its previous owner.\n// Returns a reference to the Underscore object. This method was removed from the module in v1.10.0\nwindow['_'].noConflict = function () {\n  window['_'] = previousUnderscore;\n  return _;\n};\n\nsetTemplateSettings(window['_']);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Base/CoveoUnderscore.ts","import { IAnalyticsActionCause, analyticsActionCauseList } from '../ui/Analytics/AnalyticsActionListMeta';\n\nexport class AnalyticsUtils {\n  static addActionCauseToList(newActionCause: IAnalyticsActionCause) {\n    if (newActionCause.name && newActionCause.type) {\n      analyticsActionCauseList[newActionCause.name] = newActionCause;\n    }\n  }\n\n  static removeActionCauseFromList(actionCauseToRemoveName: string) {\n    delete analyticsActionCauseList[actionCauseToRemoveName];\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/AnalyticsUtils.ts","import { Initialization } from './Initialization';\nimport * as _ from 'underscore';\n\nexport interface IJQuery {\n  fn: any;\n}\n\nexport var jQueryInstance: IJQuery;\n\nif (!initCoveoJQuery()) {\n  // Adding a check in case jQuery was added after the jsSearch\n  // Since this event listener is registered before the Coveo.init call, JQuery should always be initiated before the Coveo.init call\n  document.addEventListener('DOMContentLoaded', () => {\n    initCoveoJQuery();\n  });\n}\n\nexport function initCoveoJQuery() {\n  if (!jQueryIsDefined()) {\n    return false;\n  }\n\n  jQueryInstance = getJQuery();\n\n  if (window['Coveo'] == undefined) {\n    window['Coveo'] = {};\n  }\n  if (window['Coveo']['$'] == undefined) {\n    window['Coveo']['$'] = jQueryInstance;\n  }\n\n  jQueryInstance.fn.coveo = function(...args: any[]) {\n    var returnValue: any;\n    this.each((index: number, element: HTMLElement) => {\n      var returnValueForThisElement: any;\n      if (_.isString(args[0])) {\n        var token = <string>args[0];\n        returnValueForThisElement = Initialization.dispatchNamedMethodCallOrComponentCreation(token, element, args.slice(1));\n      } else {\n        // Invoking with no method name is a shortcut for the 'get' method (from Component).\n        returnValueForThisElement = Initialization.dispatchNamedMethodCall('get', element, args);\n      }\n\n      // Keep only the first return value we encounter\n      returnValue = returnValue || returnValueForThisElement;\n    });\n    return returnValue;\n  };\n\n  return true;\n}\n\nexport function jQueryIsDefined(): boolean {\n  return jQueryDefinedOnWindow() || jQueryDefinedOnCoveoObject();\n}\n\nfunction jQueryDefinedOnCoveoObject(): boolean {\n  return window['Coveo'] != undefined && window['Coveo']['$'] != undefined;\n}\n\nfunction jQueryDefinedOnWindow(): boolean {\n  return window['$'] != undefined && window['$'].fn != undefined && window['$'].fn.jquery != undefined;\n}\n\nfunction getJQuery(): IJQuery {\n  let jQueryInstance: IJQuery;\n  if (window['$']) {\n    jQueryInstance = window['$'];\n  } else {\n    jQueryInstance = window['Coveo']['$'];\n  }\n  return jQueryInstance;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Base/CoveoJQuery.ts","import { Initialization } from '../Base/Initialization';\n\nexport const fields = ['ytthumbnailurl'];\n\nexport function registerFields() {\n  Initialization.registerComponentFields('YouTubeThumbnail', fields);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/YouTube/YouTubeThumbnailFields.ts","import { IQueryResult } from '../../rest/QueryResult';\nimport { Component } from '../Base/Component';\nimport { IResultListOptions } from './ResultListOptions';\nimport _ = require('underscore');\n\nexport class ResultListRenderer {\n  constructor(protected resultListOptions: IResultListOptions, protected autoCreateComponentsFn: Function) {}\n\n  renderResults(\n    resultElements: HTMLElement[],\n    append = false,\n    resultDisplayedCallback: (result: IQueryResult, resultElem: HTMLElement) => any\n  ) {\n    return Promise.all([this.getStartFragment(resultElements, append), this.getEndFragment(resultElements, append)]).then(\n      ([startFrag, endFrag]) => {\n        const resultsFragment = document.createDocumentFragment();\n        if (startFrag) {\n          resultsFragment.appendChild(startFrag);\n        }\n        _.each(resultElements, resultElement => {\n          resultsFragment.appendChild(resultElement);\n          resultDisplayedCallback(Component.getResult(resultElement), resultElement);\n        });\n        if (endFrag) {\n          resultsFragment.appendChild(endFrag);\n        }\n        this.resultListOptions.resultsContainer.appendChild(resultsFragment);\n      }\n    );\n  }\n\n  protected getStartFragment(resultElements: HTMLElement[], append: boolean): Promise<DocumentFragment> {\n    return Promise.resolve(document.createDocumentFragment());\n  }\n\n  protected getEndFragment(resultElements: HTMLElement[], append: boolean): Promise<DocumentFragment> {\n    return Promise.resolve(document.createDocumentFragment());\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResultList/ResultListRenderer.ts","import 'styling/_ResponsiveFacets';\nimport { IQuerySuccessEventArgs, QueryEvents } from '../../events/QueryEvents';\nimport { Logger } from '../../misc/Logger';\nimport { l } from '../../strings/Strings';\nimport { $$, Dom } from '../../utils/Dom';\nimport { Utils } from '../../utils/Utils';\nimport { Component } from '../Base/Component';\nimport { SearchInterface } from '../SearchInterface/SearchInterface';\nimport { ResponsiveComponents } from './ResponsiveComponents';\nimport { IResponsiveComponent, IResponsiveComponentOptions, ResponsiveComponentsManager } from './ResponsiveComponentsManager';\nimport { ResponsiveComponentsUtils } from './ResponsiveComponentsUtils';\nimport { ResponsiveDropdown } from './ResponsiveDropdown/ResponsiveDropdown';\nimport { ResponsiveDropdownContent, IResponsiveDropdownContent } from './ResponsiveDropdown/ResponsiveDropdownContent';\nimport { ResponsiveDropdownHeader } from './ResponsiveDropdown/ResponsiveDropdownHeader';\nimport { each, debounce } from 'underscore';\nimport { ComponentsTypes } from '../../utils/ComponentsTypes';\nimport { ResponsiveDropdownModalContent } from './ResponsiveDropdown/ResponsiveDropdownModalContent';\nimport { FacetsMobileMode, IFacetsMobileModeOptions } from '../FacetsMobileMode/FacetsMobileMode';\nimport { FacetsMobileModeEvents } from '../../events/FacetsMobileModeEvents';\n\nexport class ResponsiveFacetColumn implements IResponsiveComponent {\n  public static DEBOUNCE_SCROLL_WAIT = 250;\n\n  private static logger = new Logger('ResponsiveFacets');\n  private static DROPDOWN_MIN_WIDTH: number = 280;\n  private static DROPDOWN_WIDTH_RATIO: number = 0.35; // Used to set the width relative to the coveo root.\n  private static DROPDOWN_HEADER_LABEL_DEFAULT_VALUE = 'Filters';\n\n  private searchInterface: SearchInterface;\n  private componentsInFacetColumn: any[] = [];\n  private preservePositionOriginalValues: boolean[] = [];\n  private breakpoint: number;\n  protected dropdown: ResponsiveDropdown;\n  private dropdownHeaderLabel: string;\n\n  public static init(responsiveComponentConstructor, root: HTMLElement, component, options: IResponsiveComponentOptions, ID: string) {\n    const column = this.findColumn(root);\n    if (!column) {\n      return;\n    }\n\n    ResponsiveComponentsManager.register(ResponsiveFacetColumn, $$(root), 'ResponsiveFacetColumn', component, options);\n    ResponsiveComponentsManager.register(responsiveComponentConstructor, $$(root), ID, component, options);\n  }\n\n  private static findColumn(root: HTMLElement) {\n    const column = $$(root).find('.coveo-facet-column');\n    if (!column) {\n      this.logger.info('No element with class coveo-facet-column. Responsive facets cannot be enabled');\n    }\n    return column;\n  }\n\n  constructor(public coveoRoot: Dom, public ID: string, options: IResponsiveComponentOptions, responsiveDropdown?: ResponsiveDropdown) {\n    this.searchInterface = <SearchInterface>Component.get(this.coveoRoot.el, SearchInterface, false);\n    this.dropdownHeaderLabel = this.getDropdownHeaderLabel();\n    this.dropdown = this.buildDropdown(responsiveDropdown);\n    this.bindDropdownContentEvents();\n    this.bindFacetsMobileModeEvents();\n    this.registerOnCloseHandler();\n    this.registerQueryEvents();\n    this.initializeBreakpoint(options.responsiveBreakpoint);\n  }\n\n  private get facetsMobileModeComponent() {\n    return this.searchInterface ? this.searchInterface.getComponents<FacetsMobileMode>(FacetsMobileMode.ID)[0] : null;\n  }\n\n  private get facetsMobileModeOptions(): IFacetsMobileModeOptions {\n    const facetsMobileModeComponent = this.facetsMobileModeComponent;\n    if (!facetsMobileModeComponent) {\n      ResponsiveFacetColumn.logger.warn('The \"FacetsMobileMode\" component did not load properly, disabling the ResponsiveFacets modal.');\n      return {\n        isModal: false,\n        preventScrolling: false,\n        displayOverlayWhileOpen: true\n      };\n    }\n\n    return facetsMobileModeComponent.options;\n  }\n\n  public registerComponent(accept: Component) {\n    this.componentsInFacetColumn.push(accept);\n    this.preservePositionOriginalValues.push(accept.options.preservePosition);\n    return true;\n  }\n\n  public needDropdownWrapper() {\n    return this.needSmallMode();\n  }\n\n  public handleResizeEvent() {\n    if (this.needSmallMode() && !ResponsiveComponentsUtils.isSmallFacetActivated(this.coveoRoot)) {\n      this.changeToSmallMode();\n    } else if (!this.needSmallMode() && ResponsiveComponentsUtils.isSmallFacetActivated(this.coveoRoot)) {\n      this.changeToLargeMode();\n    }\n    if (this.dropdown.isOpened) {\n      this.dropdown.dropdownContent.positionDropdown();\n    }\n  }\n\n  public dismissFacetSearches() {\n    each(this.componentsInFacetColumn, component => {\n      if (component.facetSearch && component.facetSearch.currentlyDisplayedResults) {\n        component.facetSearch.dismissSearchResults();\n      }\n    });\n  }\n\n  private needSmallMode(): boolean {\n    if (!this.searchInterface) {\n      return (\n        this.coveoRoot.width() <=\n        (Utils.isNullOrUndefined(this.breakpoint) ? new ResponsiveComponents().getMediumScreenWidth() : this.breakpoint)\n      );\n    }\n    switch (this.searchInterface.responsiveComponents.getResponsiveMode()) {\n      case 'small':\n      case 'medium':\n        return true;\n      case 'auto':\n        return (\n          this.coveoRoot.width() <=\n          (Utils.isNullOrUndefined(this.breakpoint) ? this.searchInterface.responsiveComponents.getMediumScreenWidth() : this.breakpoint)\n        );\n      default:\n        return false;\n    }\n  }\n\n  private changeToSmallMode() {\n    this.dropdown.close();\n    this.disableFacetPreservePosition();\n    $$(this.coveoRoot.find(`.${ResponsiveComponentsManager.DROPDOWN_HEADER_WRAPPER_CSS_CLASS}`)).append(\n      this.dropdown.dropdownHeader.element.el\n    );\n    ResponsiveComponentsUtils.activateSmallFacet(this.coveoRoot);\n  }\n\n  private changeToLargeMode() {\n    this.restoreFacetPreservePositionValue();\n    this.dropdown.cleanUp();\n    ResponsiveComponentsUtils.deactivateSmallFacet(this.coveoRoot);\n  }\n\n  private buildDropdown(responsiveDropdown?: ResponsiveDropdown) {\n    let dropdownContent = this.buildDropdownContent();\n    let dropdownHeader = this.buildDropdownHeader();\n    let dropdown = responsiveDropdown ? responsiveDropdown : new ResponsiveDropdown(dropdownContent, dropdownHeader, this.coveoRoot);\n    if (!this.facetsMobileModeOptions.displayOverlayWhileOpen) {\n      dropdown.disablePopupBackground();\n    }\n    if (this.facetsMobileModeOptions.preventScrolling) {\n      dropdown.enableScrollLocking(this.facetsMobileModeOptions.scrollContainer);\n    }\n    return dropdown;\n  }\n\n  private buildDropdownContent(): IResponsiveDropdownContent {\n    let dropdownContentElement = $$(this.coveoRoot.find('.coveo-facet-column'));\n    let filterByContainer = $$('div', { className: 'coveo-facet-header-filter-by-container', style: 'display: none' });\n    let filterBy = $$('div', { className: 'coveo-facet-header-filter-by' });\n    filterBy.text(l('Filter by:'));\n    filterByContainer.append(filterBy.el);\n    dropdownContentElement.prepend(filterByContainer.el);\n    if (this.facetsMobileModeOptions.isModal) {\n      return new ResponsiveDropdownModalContent('facet', dropdownContentElement, l('CloseFiltersDropdown'), () => this.dropdown.close());\n    }\n    return new ResponsiveDropdownContent(\n      'facet',\n      dropdownContentElement,\n      this.coveoRoot,\n      ResponsiveFacetColumn.DROPDOWN_MIN_WIDTH,\n      ResponsiveFacetColumn.DROPDOWN_WIDTH_RATIO\n    );\n  }\n\n  private buildDropdownHeader() {\n    let dropdownHeaderElement = $$('a');\n    let content = $$('p');\n    content.text(this.dropdownHeaderLabel);\n    dropdownHeaderElement.el.appendChild(content.el);\n    let dropdownHeader = new ResponsiveDropdownHeader('facet', dropdownHeaderElement);\n    return dropdownHeader;\n  }\n\n  private initializeBreakpoint(defaultBreakpoint: number) {\n    const facetsMobileModeBreakpoint = this.facetsMobileModeOptions.breakpoint;\n    this.breakpoint = Utils.isNullOrUndefined(facetsMobileModeBreakpoint) ? defaultBreakpoint : facetsMobileModeBreakpoint;\n  }\n\n  private registerOnCloseHandler() {\n    this.dropdown.registerOnCloseHandler(this.dismissFacetSearches, this);\n  }\n\n  private registerQueryEvents() {\n    this.coveoRoot.on(QueryEvents.noResults, () => this.handleNoResults());\n    this.coveoRoot.on(QueryEvents.querySuccess, (e: Event, data: IQuerySuccessEventArgs) => this.handleQuerySuccess(data));\n    this.coveoRoot.on(QueryEvents.queryError, () => this.handleQueryError());\n  }\n\n  private bindDropdownContentEvents() {\n    this.dropdown.dropdownContent.element.on(\n      'scroll',\n      debounce(() => {\n        each(this.componentsInFacetColumn, component => {\n          let facetSearch = component.facetSearch;\n          if (facetSearch && facetSearch.currentlyDisplayedResults && !this.isFacetSearchScrolledIntoView(facetSearch.search)) {\n            component.facetSearch.positionSearchResults(this.dropdown.dropdownContent.element.el);\n          } else if (facetSearch && component.facetSearch.currentlyDisplayedResults) {\n            component.facetSearch.positionSearchResults();\n          }\n        });\n      }, ResponsiveFacetColumn.DEBOUNCE_SCROLL_WAIT)\n    );\n  }\n\n  private bindFacetsMobileModeEvents() {\n    const facetsMobileModeComponent = this.facetsMobileModeComponent;\n    if (facetsMobileModeComponent) {\n      this.dropdown.registerOnOpenHandler(\n        () => $$(facetsMobileModeComponent.element).trigger(FacetsMobileModeEvents.popupOpened),\n        facetsMobileModeComponent\n      );\n      this.dropdown.registerOnCloseHandler(\n        () => $$(facetsMobileModeComponent.element).trigger(FacetsMobileModeEvents.popupClosed),\n        facetsMobileModeComponent\n      );\n    }\n  }\n\n  private restoreFacetPreservePositionValue() {\n    each(this.componentsInFacetColumn, (component, index) => {\n      if (component.options) {\n        component.options.preservePosition = this.preservePositionOriginalValues[index];\n      }\n    });\n  }\n\n  private disableFacetPreservePosition() {\n    each(this.componentsInFacetColumn, component => {\n      if (component.options) {\n        component.options.preservePosition = false;\n      }\n    });\n  }\n\n  private isFacetSearchScrolledIntoView(facetSearchElement: HTMLElement) {\n    let facetTop = facetSearchElement.getBoundingClientRect().top;\n    let facetBottom = facetSearchElement.getBoundingClientRect().bottom;\n    let dropdownTop = this.dropdown.dropdownContent.element.el.getBoundingClientRect().top;\n    let dropdownBottom = this.dropdown.dropdownContent.element.el.getBoundingClientRect().bottom;\n\n    dropdownTop = dropdownTop >= 0 ? dropdownTop : 0;\n\n    return facetTop >= dropdownTop && facetBottom <= dropdownBottom;\n  }\n\n  private getDropdownHeaderLabel() {\n    let dropdownHeaderLabel: string;\n    ComponentsTypes.getAllFacetInstancesFromElement(this.coveoRoot.find('.coveo-facet-column')).forEach(facet => {\n      const options = facet.options as IResponsiveComponentOptions;\n\n      if (!dropdownHeaderLabel && options.dropdownHeaderLabel) {\n        dropdownHeaderLabel = options.dropdownHeaderLabel;\n      }\n    });\n\n    if (!dropdownHeaderLabel) {\n      dropdownHeaderLabel = l(ResponsiveFacetColumn.DROPDOWN_HEADER_LABEL_DEFAULT_VALUE);\n    }\n\n    return dropdownHeaderLabel;\n  }\n\n  private handleNoResults() {\n    this.dropdown.dropdownHeader.hide();\n  }\n\n  private handleQueryError() {\n    this.dropdown.dropdownHeader.hide();\n  }\n\n  private handleQuerySuccess(data: IQuerySuccessEventArgs) {\n    if (data.results.totalCount === 0) {\n      this.dropdown.dropdownHeader.hide();\n    } else {\n      this.dropdown.dropdownHeader.show();\n    }\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResponsiveComponents/ResponsiveFacetColumn.ts","/// <reference path='../ui/Facet/Facet.ts' />\n\nimport { Facet } from '../ui/Facet/Facet';\nimport { IGroupByRequest } from '../rest/GroupByRequest';\nimport { IGroupByResult } from '../rest/GroupByResult';\nimport { ExpressionBuilder } from '../ui/Base/ExpressionBuilder';\nimport { FacetValue } from '../ui/Facet/FacetValue';\nimport { Utils } from '../utils/Utils';\nimport { QueryBuilder } from '../ui/Base/QueryBuilder';\nimport { FacetSearchParameters } from '../ui/Facet/FacetSearchParameters';\nimport { Assert } from '../misc/Assert';\nimport { IIndexFieldValue } from '../rest/FieldValue';\nimport { FacetUtils } from '../ui/Facet/FacetUtils';\nimport { IQueryResults } from '../rest/QueryResults';\nimport { IGroupByValue } from '../rest/GroupByValue';\nimport { IEndpointError } from '../rest/EndpointError';\nimport * as _ from 'underscore';\nimport { QueryBuilderExpression } from '../ui/Base/QueryBuilderExpression';\n\nexport class FacetQueryController {\n  public expressionToUseForFacetSearch: string;\n  public basicExpressionToUseForFacetSearch: string;\n  public advancedExpressionToUseForFacetSearch: string;\n  public constantExpressionToUseForFacetSearch: string;\n  public lastGroupByRequestIndex: number;\n  public lastGroupByRequest: IGroupByRequest;\n  public lastGroupByResult: IGroupByResult;\n\n  private currentSearchPromise: Promise<IQueryResults>;\n\n  constructor(public facet: Facet) {}\n\n  /**\n   * Reset the expression for the facet search, used when a new query is triggered\n   */\n  public prepareForNewQuery() {\n    this.lastGroupByRequestIndex = undefined;\n    this.expressionToUseForFacetSearch = undefined;\n    this.constantExpressionToUseForFacetSearch = undefined;\n  }\n\n  /**\n   * Compute the filter expression that the facet needs to output for the query\n   * @returns {string}\n   */\n  public computeOurFilterExpression(): string {\n    const builder = new ExpressionBuilder();\n    const selected = this.facet.values.getSelected();\n    if (selected.length > 0) {\n      if (this.facet.options.useAnd) {\n        _.each(selected, (value: FacetValue) => {\n          builder.addFieldExpression(<string>this.facet.options.field, '==', [value.value]);\n        });\n      } else {\n        builder.addFieldExpression(<string>this.facet.options.field, '==', _.map(selected, (value: FacetValue) => value.value));\n      }\n    }\n    const excluded = this.facet.values.getExcluded();\n    if (excluded.length > 0) {\n      builder.addFieldNotEqualExpression(<string>this.facet.options.field, _.map(excluded, (value: FacetValue) => value.value));\n    }\n    if (Utils.isNonEmptyString(this.facet.options.additionalFilter)) {\n      builder.add(this.facet.options.additionalFilter);\n    }\n    return builder.build();\n  }\n\n  /**\n   * Build the group by request for the facet, and insert it in the query builder\n   * @param queryBuilder\n   */\n  public putGroupByIntoQueryBuilder(queryBuilder: QueryBuilder) {\n    Assert.exists(queryBuilder);\n\n    const allowedValues = this.createGroupByAllowedValues();\n    const groupByRequest = this.createBasicGroupByRequest(allowedValues);\n\n    const queryOverrideObject = this.createGroupByQueryOverride(queryBuilder);\n    if (!Utils.isNullOrUndefined(queryOverrideObject) || !QueryBuilderExpression.isEmpty(queryOverrideObject)) {\n      groupByRequest.queryOverride = queryOverrideObject.basic;\n      groupByRequest.advancedQueryOverride = queryOverrideObject.advanced;\n      groupByRequest.constantQueryOverride = queryOverrideObject.constant;\n      this.expressionToUseForFacetSearch = queryOverrideObject.withoutConstant;\n      this.basicExpressionToUseForFacetSearch = queryOverrideObject.basic;\n      this.advancedExpressionToUseForFacetSearch = queryOverrideObject.advanced;\n      this.constantExpressionToUseForFacetSearch = queryOverrideObject.constant;\n    } else {\n      const parts = queryBuilder.computeCompleteExpressionParts();\n      this.expressionToUseForFacetSearch = parts.withoutConstant == null ? '' : parts.withoutConstant;\n      this.basicExpressionToUseForFacetSearch = parts.basic == null ? '' : parts.basic;\n      this.advancedExpressionToUseForFacetSearch = parts.advanced;\n      this.constantExpressionToUseForFacetSearch = parts.constant;\n    }\n    this.lastGroupByRequestIndex = queryBuilder.groupByRequests.length;\n    this.lastGroupByRequest = groupByRequest;\n    queryBuilder.groupByRequests.push(groupByRequest);\n  }\n\n  /**\n   * Search inside the facet, using a group by request\n   * @param params\n   * @param oldLength Optional params, used by the search method to call itself recursively to fetch all required values\n   * @returns {Promise|Promise<T>}\n   */\n  public search(params: FacetSearchParameters, oldLength = params.nbResults): Promise<IIndexFieldValue[]> {\n    // For search, we want to retrieve the exact values we requested, and not additional ones\n    params.completeFacetWithStandardValues = false;\n    return new Promise((resolve, reject) => {\n      const onResult = (fieldValues?: IIndexFieldValue[]) => {\n        const newLength = fieldValues.length;\n        fieldValues = this.checkForFacetSearchValuesToRemove(fieldValues, params.valueToSearch);\n        if (FacetUtils.needAnotherFacetSearch(fieldValues.length, newLength, oldLength, 5)) {\n          // This means that we removed enough values from the returned one that we need to perform a new search with more values requested.\n          params.nbResults += 5;\n          return this.search(params, fieldValues.length);\n        } else {\n          resolve(fieldValues);\n        }\n      };\n\n      const searchPromise = this.facet.getEndpoint().search(params.getQuery());\n      this.currentSearchPromise = searchPromise;\n\n      searchPromise\n        .then((queryResults: IQueryResults) => {\n          if (this.currentSearchPromise == searchPromise) {\n            // params.getQuery() will generate a query for all excluded values + some new values\n            // there is no clean way to do a group by and remove some values\n            // so instead we request more values than we need, and crop all the one we don't want\n            const valuesCropped: IGroupByValue[] = [];\n            if (queryResults.groupByResults && queryResults.groupByResults[0]) {\n              _.each(queryResults.groupByResults[0].values, (v: IGroupByValue) => {\n                if (v.lookupValue) {\n                  if (!_.contains(params.alwaysExclude, v.lookupValue.toLowerCase())) {\n                    valuesCropped.push(v);\n                  }\n                } else {\n                  if (!_.contains(params.alwaysExclude, v.value.toLowerCase())) {\n                    valuesCropped.push(v);\n                  }\n                }\n              });\n            }\n            onResult(_.first(valuesCropped, params.nbResults));\n          } else {\n            reject();\n          }\n        })\n        .catch((error: IEndpointError) => {\n          reject(error);\n        });\n    });\n  }\n\n  public fetchMore(numberOfValuesToFetch: number): Promise<IQueryResults> {\n    const params = new FacetSearchParameters(this.facet);\n    params.alwaysInclude = this.facet.options.allowedValues || _.pluck(this.facet.values.getAll(), 'value');\n    params.nbResults = numberOfValuesToFetch;\n    return this.facet\n      .getEndpoint()\n      .search(params.getQuery())\n      .then((results: IQueryResults) => {\n        if (this.facet.options.allowedValues && results && results.groupByResults && results.groupByResults[0]) {\n          results.groupByResults[0].values = this.filterByAllowedValueOption(results.groupByResults[0].values);\n        }\n        return results;\n      });\n  }\n\n  public searchInFacetToUpdateDelta(facetValues: FacetValue[]): Promise<IQueryResults> {\n    const params = new FacetSearchParameters(this.facet);\n    const query = params.getQuery();\n    query.aq = `${query.aq ? query.aq : ''} ${this.computeOurFilterExpression()}`;\n    _.each(facetValues, (facetValue: FacetValue) => {\n      facetValue.waitingForDelta = true;\n    });\n    query.groupBy = [this.createBasicGroupByRequest(_.map(facetValues, (facetValue: FacetValue) => facetValue.value))];\n    query.groupBy[0].completeFacetWithStandardValues = false;\n    return this.facet.getEndpoint().search(query);\n  }\n\n  protected createGroupByAllowedValues() {\n    // if you want to keep displayed values next time, take all current values as allowed values\n    // otherwise take only the selected value\n    if (this.facet.options.allowedValues != undefined) {\n      return this.facet.options.allowedValues;\n    } else if (this.facet.options.customSort != undefined) {\n      // If there is a custom sort, we still need to add selectedValues to the group by\n      // Filter out duplicates with a lower case comparison on the value\n      return this.getUnionWithCustomSortLowercase(this.facet.options.customSort, this.getAllowedValuesFromSelected());\n    } else {\n      return _.map(this.getAllowedValuesFromSelected(), (facetValue: FacetValue) => facetValue.value);\n    }\n  }\n\n  protected createBasicGroupByRequest(allowedValues?: string[], addComputedField: boolean = true): IGroupByRequest {\n    let nbOfRequestedValues = this.facet.numberOfValues;\n    if (this.facet.options.customSort != null) {\n      // If we have a custom sort, we need to make sure that we always request at least enough values to always receive them\n      const usedValues = this.getUnionWithCustomSortLowercase(\n        this.facet.options.customSort,\n        this.facet.values.getSelected().concat(this.facet.values.getExcluded())\n      );\n      nbOfRequestedValues = Math.max(nbOfRequestedValues, usedValues.length);\n    }\n    const groupByRequest: IGroupByRequest = {\n      field: <string>this.facet.options.field,\n      maximumNumberOfValues: nbOfRequestedValues + (this.facet.options.enableMoreLess ? 1 : 0),\n      sortCriteria: this.facet.options.sortCriteria,\n      injectionDepth: this.facet.options.injectionDepth,\n      completeFacetWithStandardValues: this.facet.options.allowedValues == undefined ? true : false\n    };\n    if (this.facet.options.lookupField) {\n      groupByRequest.lookupField = <string>this.facet.options.lookupField;\n    }\n    if (allowedValues != null) {\n      groupByRequest.allowedValues = allowedValues;\n    }\n\n    if (addComputedField && Utils.isNonEmptyString(<string>this.facet.options.computedField)) {\n      groupByRequest.computedFields = [\n        {\n          field: <string>this.facet.options.computedField,\n          operation: this.facet.options.computedFieldOperation\n        }\n      ];\n    }\n    return groupByRequest;\n  }\n\n  protected getAllowedValuesFromSelected() {\n    let facetValues: FacetValue[] = [];\n    if (this.facet.options.useAnd || !this.facet.keepDisplayedValuesNextTime) {\n      const selected = this.facet.values.getSelected();\n      if (selected.length == 0) {\n        return undefined;\n      }\n      facetValues = this.facet.values.getSelected();\n    } else {\n      facetValues = this.facet.values.getAll();\n    }\n    return facetValues;\n  }\n\n  private get additionalFilter() {\n    return this.facet.options.additionalFilter ? this.facet.options.additionalFilter : '';\n  }\n\n  private getUnionWithCustomSortLowercase(customSort: string[], facetValues: FacetValue[]) {\n    // This will take the custom sort, compare it against the passed in facetValues\n    // The comparison is lowercase.\n    // The union of the 2 arrays with duplicated filtered out is returned.\n\n    const toCompare = _.map(customSort, (val: string) => {\n      return val.toLowerCase();\n    });\n    const filtered = _.chain(facetValues)\n      .filter((facetValue: FacetValue) => {\n        return !_.contains(toCompare, facetValue.value.toLowerCase());\n      })\n      .map((facetValue: FacetValue) => {\n        return facetValue.value;\n      })\n      .value();\n    return _.compact(customSort.concat(filtered));\n  }\n\n  private createGroupByQueryOverride(queryBuilder: QueryBuilder): QueryBuilderExpression {\n    let queryBuilderExpression = queryBuilder.computeCompleteExpressionParts();\n\n    if (this.queryOverrideIsNeededForMultiSelection()) {\n      queryBuilderExpression = this.processQueryOverrideForMultiSelection(queryBuilder, queryBuilderExpression);\n    } else {\n      queryBuilderExpression.reset();\n    }\n    if (this.queryOverrideIsNeededForAdditionalFilter()) {\n      queryBuilderExpression = this.processQueryOverrideForAdditionalFilter(queryBuilder, queryBuilderExpression);\n    }\n\n    queryBuilderExpression = this.processQueryOverrideForEmptyValues(queryBuilder, queryBuilderExpression);\n    if (QueryBuilderExpression.isEmpty(queryBuilderExpression)) {\n      return null;\n    }\n    return queryBuilderExpression;\n  }\n\n  private queryOverrideIsNeededForMultiSelection() {\n    if (this.facet.options.useAnd) {\n      return false;\n    }\n    if (this.facet.values.hasSelectedOrExcludedValues()) {\n      return true;\n    }\n    return false;\n  }\n\n  private queryOverrideIsNeededForAdditionalFilter() {\n    return Utils.isNonEmptyString(this.additionalFilter);\n  }\n\n  private processQueryOverrideForMultiSelection(queryBuilder: QueryBuilder, mergeWith: QueryBuilderExpression) {\n    if (this.facet.values.hasSelectedOrExcludedValues()) {\n      const ourExpression = this.computeOurFilterExpression();\n      mergeWith = queryBuilder.computeCompleteExpressionPartsExcept(ourExpression);\n      if (QueryBuilderExpression.isEmpty(mergeWith)) {\n        mergeWith.advanced = '@uri';\n      }\n    }\n\n    return mergeWith;\n  }\n\n  private processQueryOverrideForAdditionalFilter(queryBuilder: QueryBuilder, mergeWith: QueryBuilderExpression) {\n    if (Utils.isEmptyString(mergeWith.basic)) {\n      mergeWith.basic = queryBuilder.expression.build();\n    }\n    if (Utils.isEmptyString(mergeWith.constant)) {\n      const addExistingConstantExpressionIfNotEmpty = queryBuilder.constantExpression.isEmpty()\n        ? ''\n        : queryBuilder.constantExpression.build() + ' ';\n      mergeWith.constant = `${addExistingConstantExpressionIfNotEmpty}${this.additionalFilter}`;\n    } else {\n      mergeWith.constant = `${mergeWith.constant} ${this.additionalFilter}`;\n    }\n\n    if (!mergeWith.advanced) {\n      mergeWith.advanced = this.getFilterExpressionWithoutOurFilterExpression(queryBuilder);\n    }\n\n    return mergeWith;\n  }\n\n  private getFilterExpressionWithoutOurFilterExpression(queryBuilder: QueryBuilder) {\n    const expression = new ExpressionBuilder();\n    const advancedExpressionParts = queryBuilder.advancedExpression.getParts();\n\n    advancedExpressionParts.forEach(part => expression.add(part));\n\n    const currentFacetAdvancedExpression = this.computeOurFilterExpression();\n    expression.remove(currentFacetAdvancedExpression);\n\n    return expression.build();\n  }\n\n  private processQueryOverrideForEmptyValues(queryBuilder: QueryBuilder, mergeWith: QueryBuilderExpression) {\n    const withoutEmptyValues = _.chain(mergeWith)\n      .keys()\n      .each((key: string) => {\n        if (Utils.isEmptyString(mergeWith[key]) || Utils.isNullOrUndefined(mergeWith[key])) {\n          delete mergeWith[key];\n        }\n      })\n      .value();\n\n    if (_.keys(withoutEmptyValues).length == 0) {\n      mergeWith = undefined;\n    }\n\n    return mergeWith;\n  }\n\n  private checkForFacetSearchValuesToRemove(fieldValues: IIndexFieldValue[], valueToCheckAgainst: string) {\n    const regex = FacetUtils.getRegexToUseForFacetSearch(valueToCheckAgainst, this.facet.options.facetSearchIgnoreAccents);\n\n    return _.filter<IIndexFieldValue>(fieldValues, fieldValue => {\n      const isAllowed = _.isEmpty(this.facet.options.allowedValues) || this.isValueAllowedByAllowedValueOption(fieldValue.value);\n      const value = this.facet.getValueCaption(fieldValue);\n      return isAllowed && regex.test(value);\n    });\n  }\n\n  private filterByAllowedValueOption(values: IGroupByValue[]): IGroupByValue[] {\n    return _.filter(values, (value: IGroupByValue) => this.isValueAllowedByAllowedValueOption(value.value));\n  }\n\n  private isValueAllowedByAllowedValueOption(value: string): boolean {\n    return _.some(this.facet.options.allowedValues, allowedValue => {\n      const regexContent = this.replaceWildcardsWithRegexEquivalent(this.escapeMostRegexCharacters(allowedValue));\n      const regex = new RegExp(`^${regexContent}$`, 'gi');\n      return regex.test(value);\n    });\n  }\n\n  private escapeMostRegexCharacters(text: String) {\n    // Regex taken from https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions\n    // `*` and `?` were removed because they are used for wildcards\n    return text.replace(/[.+^${}()|[\\]\\\\]/g, '\\\\$&');\n  }\n\n  private replaceWildcardsWithRegexEquivalent(text: String) {\n    // Allowed value option on the facet should support * (wildcard searches)\n    // We need to filter values client side the index will completeWithStandardValues\n    // Replace the wildcard (*) for a regex match (.*)\n    // Also replace the (?) with \"any character once\" since it is also supported by the index\n    return text.replace(/\\*/g, '.*').replace(/\\?/g, '.');\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/controllers/FacetQueryController.ts","import { Expression } from './Expression';\n\nexport const ExpressionEndOfInput: Expression = {\n  id: 'end of input',\n  parse: null\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/magicbox/Expression/ExpressionEndOfInput.ts","import { Expression } from './Expression';\nimport { Result } from '../Result/Result';\nimport { EndOfInputResult } from '../Result/Result';\n\nexport class ExpressionConstant implements Expression {\n  constructor(public value: string, public id: string) {}\n\n  public parse(input: string, end: boolean): Result {\n    // the value must be at the start of the input\n    var success = input.indexOf(this.value) == 0;\n    var result = new Result(success ? this.value : null, this, input);\n    // if is successful and we require the end but the length of parsed is\n    // lower than the input length, return a EndOfInputExpected Result\n    if (success && end && input.length > this.value.length) {\n      return new EndOfInputResult(result);\n    }\n    return result;\n  }\n\n  public toString() {\n    return this.value;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/magicbox/Expression/ExpressionConstant.ts","import { Basic } from './Basic';\nimport { SubGrammar } from './Expressions';\nimport { Date } from './Date';\nexport const Field: SubGrammar = {\n  basicExpressions: ['FieldSimpleQuery', 'FieldQuery', 'Field'],\n  grammars: {\n    FieldQuery: '[Field][OptionalSpaces][FieldQueryOperation]',\n    FieldQueryOperation: ['FieldQueryValue', 'FieldQueryNumeric'],\n    FieldQueryValue: '[FieldOperator][OptionalSpaces][FieldValue]',\n    FieldQueryNumeric: '[FieldOperatorNumeric][OptionalSpaces][FieldValueNumeric]',\n    FieldSimpleQuery: '[FieldName]:[OptionalSpaces][FieldValue]',\n    Field: '@[FieldName]',\n    FieldName: /[a-zA-Z][a-zA-Z0-9\\.\\_]*/,\n    FieldOperator: /==|=|<>/,\n    FieldOperatorNumeric: /<=|>=|<|>/,\n    FieldValue: ['DateRange', 'NumberRange', 'DateRelative', 'Date', 'Number', 'FieldValueList', 'FieldValueString'],\n    FieldValueNumeric: ['DateRelative', 'Date', 'Number'],\n    FieldValueString: ['DoubleQuoted', 'FieldValueNotQuoted'],\n    FieldValueList: '([FieldValueString][FieldValueStringList*])',\n    FieldValueStringList: '[FieldValueSeparator][FieldValueString]',\n    FieldValueSeparator: / *, */,\n    FieldValueNotQuoted: /[^ \\(\\)\\[\\],]+/,\n    NumberRange: '[Number][Spaces?]..[Spaces?][Number]'\n  },\n  include: [Date, Basic]\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/magicbox/Grammars/Field.ts","import { defaults, indexOf, find } from 'underscore';\nimport { IQuerySuggestSelection, OmniboxEvents } from '../events/OmniboxEvents';\nimport { Component } from '../ui/Base/Component';\nimport { $$, Dom } from '../utils/Dom';\nimport { InputManager } from './InputManager';\nimport { ResultPreviewsManager } from './ResultPreviewsManager';\nimport { QueryProcessor, ProcessingStatus } from './QueryProcessor';\nimport { QueryUtils } from '../utils/QueryUtils';\n\nexport interface Suggestion {\n  text?: string;\n  index?: number;\n  html?: string;\n  dom?: HTMLElement;\n  separator?: string;\n  advancedQuery?: string;\n  onSelect?: () => void;\n}\n\nexport interface SuggestionsManagerOptions {\n  suggestionClass?: string;\n  selectedClass?: string;\n  timeout?: number;\n  previewHeaderText?: string;\n}\n\nexport enum Direction {\n  Up = 'Up',\n  Down = 'Down',\n  Left = 'Left',\n  Right = 'Right'\n}\n\nexport class SuggestionsManager {\n  public suggestionsListbox: Dom;\n  private suggestionsProcessor: QueryProcessor<Suggestion>;\n  private currentSuggestions: Suggestion[];\n  private options: SuggestionsManagerOptions;\n  private keyboardFocusedElement: HTMLElement;\n  private resultPreviewsManager: ResultPreviewsManager;\n  private root: HTMLElement;\n  private suggestionListboxID = `coveo-magicbox-suggestions-${QueryUtils.createGuid()}`;\n  private suggestionListboxClassName = `coveo-magicbox-suggestions`;\n\n  public get hasSuggestions() {\n    return this.currentSuggestions && this.currentSuggestions.length > 0;\n  }\n\n  public get hasFocus() {\n    return $$(this.element).findClass(this.options.selectedClass).length > 0;\n  }\n\n  public get hasPreviews() {\n    return this.resultPreviewsManager.hasPreviews;\n  }\n\n  private get focusedSuggestion() {\n    return find(\n      this.currentSuggestions,\n      suggestion =>\n        $$(suggestion.dom).hasClass(this.options.selectedClass) || $$(suggestion.dom).findClass(this.options.selectedClass).length > 0\n    );\n  }\n\n  constructor(\n    private element: HTMLElement,\n    private magicBoxContainer: HTMLElement,\n    private inputManager: InputManager,\n    options?: SuggestionsManagerOptions\n  ) {\n    this.root = Component.resolveRoot(element);\n    this.options = defaults(options, <SuggestionsManagerOptions>{\n      suggestionClass: 'magic-box-suggestion',\n      selectedClass: 'magic-box-selected'\n    });\n    // Put in a sane default, so as to not reject every suggestions if not set on initialization\n    if (this.options.timeout == undefined) {\n      this.options.timeout = 500;\n    }\n\n    $$(this.element).on('mouseover', e => {\n      this.handleMouseOver(e);\n    });\n\n    $$(this.element).on('mouseout', e => {\n      this.handleMouseOut(e);\n    });\n\n    this.suggestionsProcessor = new QueryProcessor({ timeout: this.options.timeout });\n    this.resultPreviewsManager = new ResultPreviewsManager(element, {\n      selectedClass: this.options.selectedClass,\n      timeout: this.options.timeout\n    });\n    this.suggestionsListbox = this.buildSuggestionsContainer();\n    $$(this.element).append(this.suggestionsListbox.el);\n    this.addAccessibilityProperties();\n    this.appendEmptySuggestionOption();\n  }\n\n  public handleMouseOver(e) {\n    const target = $$(<HTMLElement>e.target);\n    const parents = target.parents(this.options.suggestionClass);\n    if (target.hasClass(this.options.suggestionClass)) {\n      this.processMouseSelection(target.el);\n    } else if (parents.length > 0 && this.element.contains(parents[0])) {\n      this.processMouseSelection(parents[0]);\n    }\n  }\n\n  public handleMouseOut(e) {\n    const target = $$(<HTMLElement>e.target);\n    const targetParents = target.parents(this.options.suggestionClass);\n\n    //e.relatedTarget is not available if moving off the browser window or is an empty object `{}` when moving out of namespace in LockerService.\n    if (e.relatedTarget && $$(e.relatedTarget).isValid()) {\n      const relatedTargetParents = $$(<HTMLElement>e.relatedTarget).parents(this.options.suggestionClass);\n      if (target.hasClass(this.options.selectedClass) && !$$(<HTMLElement>e.relatedTarget).hasClass(this.options.suggestionClass)) {\n        this.removeSelectedStatus(target.el);\n      } else if (relatedTargetParents.length == 0 && targetParents.length > 0) {\n        this.removeSelectedStatus(targetParents[0]);\n      }\n    } else {\n      if (target.hasClass(this.options.selectedClass)) {\n        this.removeSelectedStatus(target.el);\n      } else if (targetParents.length > 0) {\n        this.removeSelectedStatus(targetParents[0]);\n      }\n    }\n    $$(this.root).trigger(OmniboxEvents.querySuggestLoseFocus);\n  }\n\n  public async moveDown() {\n    await this.move(Direction.Down);\n  }\n\n  public async moveUp() {\n    await this.move(Direction.Up);\n  }\n\n  public async moveLeft() {\n    await this.move(Direction.Left);\n  }\n\n  public async moveRight() {\n    await this.move(Direction.Right);\n  }\n\n  public selectAndReturnKeyboardFocusedElement(): HTMLElement {\n    const selected = this.keyboardFocusedElement;\n    if (selected) {\n      $$(selected).trigger('keyboardSelect');\n      // By definition, once an element has been \"selected\" with the keyboard,\n      // it is not longer \"active\" since the event has been processed.\n      this.keyboardFocusedElement = null;\n      this.inputManager.blur();\n    }\n    return selected;\n  }\n\n  public clearKeyboardFocusedElement() {\n    this.keyboardFocusedElement = null;\n  }\n\n  public async receiveSuggestions(suggestions: (Promise<Suggestion[]> | Suggestion[])[]) {\n    const { results, status } = await this.suggestionsProcessor.processQueries(suggestions);\n    if (status === ProcessingStatus.Overriden) {\n      return [];\n    }\n    this.updateSuggestions(results);\n    return results;\n  }\n\n  public clearSuggestions() {\n    this.updateSuggestions([]);\n  }\n\n  public updateSuggestions(suggestions: Suggestion[]) {\n    this.suggestionsListbox.empty();\n    this.inputManager.activeDescendant = null;\n\n    this.currentSuggestions = suggestions;\n\n    $$(this.element).toggleClass('magic-box-hasSuggestion', this.hasSuggestions);\n    this.inputManager.expanded = this.hasSuggestions;\n\n    this.resultPreviewsManager.displaySearchResultPreviewsForSuggestion(null);\n\n    if (!this.hasSuggestions) {\n      this.appendEmptySuggestionOption();\n      $$(this.root).trigger(OmniboxEvents.querySuggestLoseFocus);\n      return;\n    }\n\n    suggestions\n      .sort((a, b) => (b.index || 0) - (a.index || 0))\n      .forEach(suggestion => {\n        const dom = suggestion.dom ? this.modifyDomFromExistingSuggestion(suggestion.dom) : this.createDomFromSuggestion(suggestion);\n\n        dom.setAttribute('id', `magic-box-suggestion-${indexOf(suggestions, suggestion)}`);\n        dom.setAttribute('role', 'option');\n        dom.setAttribute('aria-selected', 'false');\n        dom.setAttribute('aria-label', dom.text());\n\n        dom['suggestion'] = suggestion;\n        this.suggestionsListbox.append(dom.el);\n      });\n\n    $$(this.root).trigger(OmniboxEvents.querySuggestRendered);\n  }\n\n  public get selectedSuggestion(): Suggestion {\n    if (this.htmlElementIsSuggestion(this.keyboardFocusedElement)) {\n      return this.returnMoved(this.keyboardFocusedElement) as Suggestion;\n    }\n    return null;\n  }\n\n  private async processKeyboardSelection(suggestion: HTMLElement) {\n    this.addSelectedStatus(suggestion);\n    this.keyboardFocusedElement = suggestion;\n    await this.updateSelectedSuggestion(this.focusedSuggestion);\n  }\n\n  private processKeyboardPreviewSelection(preview: HTMLElement) {\n    this.addSelectedStatus(preview);\n    this.keyboardFocusedElement = preview;\n  }\n\n  private processMouseSelection(suggestion: HTMLElement) {\n    this.addSelectedStatus(suggestion);\n    this.updateSelectedSuggestion(this.focusedSuggestion);\n    this.keyboardFocusedElement = null;\n  }\n\n  private buildSuggestionsContainer() {\n    return $$('div', {\n      className: this.suggestionListboxClassName,\n      id: this.suggestionListboxID,\n      role: 'listbox',\n      ariaLabel: 'Search Suggestions'\n    });\n  }\n\n  private createDomFromSuggestion(suggestion: Suggestion) {\n    const dom = $$('div', {\n      className: `magic-box-suggestion ${this.options.suggestionClass}`\n    });\n\n    suggestion.dom = dom.el;\n\n    dom.on('click', () => {\n      this.selectSuggestion(suggestion);\n    });\n\n    dom.on('keyboardSelect', () => {\n      this.selectSuggestion(suggestion);\n    });\n\n    if (suggestion.html) {\n      dom.el.innerHTML = suggestion.html;\n      return dom;\n    }\n\n    if (suggestion.text) {\n      dom.text(suggestion.text);\n\n      return dom;\n    }\n\n    if (suggestion.separator) {\n      dom.addClass('magic-box-suggestion-seperator');\n      const suggestionLabel = $$(\n        'div',\n        {\n          className: 'magic-box-suggestion-seperator-label'\n        },\n        suggestion.separator\n      );\n      dom.append(suggestionLabel.el);\n      return dom;\n    }\n\n    return dom;\n  }\n\n  private selectSuggestion(suggestion: Suggestion) {\n    suggestion.onSelect();\n    $$(this.root).trigger(OmniboxEvents.querySuggestSelection, <IQuerySuggestSelection>{ suggestion: suggestion.text });\n  }\n\n  private appendEmptySuggestionOption() {\n    // Accessibility tools reports that a listbox element must always have at least one child with an option\n    // Even if there is no suggestions to show.\n    this.suggestionsListbox.append($$('div', { role: 'option' }).el);\n  }\n\n  private modifyDomFromExistingSuggestion(dom: HTMLElement) {\n    // this need to be done if the selection is in cache and the dom is set in the suggestion\n    this.removeSelectedStatus(dom);\n    const found = dom.classList.contains(this.options.suggestionClass) ? dom : $$(dom).find('.' + this.options.suggestionClass);\n    this.removeSelectedStatus(found);\n    return $$(dom);\n  }\n\n  private async move(direction: Direction) {\n    if (this.resultPreviewsManager.focusedPreviewElement) {\n      await this.moveWithinPreview(direction);\n      return;\n    }\n    if (direction === Direction.Right || direction === Direction.Left) {\n      const firstPreview = this.resultPreviewsManager.previewElements[0];\n      if (firstPreview) {\n        this.processKeyboardPreviewSelection(firstPreview);\n        return;\n      }\n    }\n    await this.moveWithinSuggestion(direction);\n  }\n\n  private async moveWithinSuggestion(direction: Direction) {\n    const currentlySelected = $$(this.element).find(`.${this.options.selectedClass}`);\n    const selectables = $$(this.element).findAll(`.${this.options.suggestionClass}`);\n    const currentIndex = indexOf(selectables, currentlySelected);\n\n    let index = direction === Direction.Up ? currentIndex - 1 : currentIndex + 1;\n    index = (index + selectables.length) % selectables.length;\n\n    await this.selectQuerySuggest(selectables[index]);\n  }\n\n  private async selectQuerySuggest(suggestion: HTMLElement) {\n    if (suggestion) {\n      await this.processKeyboardSelection(suggestion);\n    } else {\n      this.keyboardFocusedElement = null;\n      this.inputManager.input.removeAttribute('aria-activedescendant');\n    }\n\n    return suggestion;\n  }\n\n  private async moveWithinPreview(direction: Direction) {\n    const newFocusedPreview = this.resultPreviewsManager.getElementInDirection(direction);\n    if (!newFocusedPreview) {\n      await this.selectQuerySuggest(this.resultPreviewsManager.previewsOwner.dom);\n      return;\n    }\n    this.processKeyboardPreviewSelection(newFocusedPreview);\n  }\n\n  private returnMoved(selected) {\n    if (selected) {\n      if (selected['suggestion']) {\n        return selected['suggestion'];\n      }\n      if (selected['no-text-suggestion']) {\n        return null;\n      }\n      if (selected instanceof HTMLElement) {\n        return {\n          text: $$(selected).text()\n        };\n      }\n    }\n    return null;\n  }\n\n  private addSelectedStatus(element: HTMLElement): void {\n    const selected = this.element.getElementsByClassName(this.options.selectedClass);\n    for (let i = 0; i < selected.length; i++) {\n      const elem = <HTMLElement>selected.item(i);\n      this.removeSelectedStatus(elem);\n    }\n    $$(element).addClass(this.options.selectedClass);\n    this.updateAreaSelectedIfDefined(element, 'true');\n  }\n\n  private async updateSelectedSuggestion(suggestion: Suggestion) {\n    $$(this.root).trigger(OmniboxEvents.querySuggestGetFocus, <IQuerySuggestSelection>{\n      suggestion: suggestion.text\n    });\n    await this.resultPreviewsManager.displaySearchResultPreviewsForSuggestion(suggestion);\n  }\n\n  private removeSelectedStatus(suggestion: HTMLElement): void {\n    $$(suggestion).removeClass(this.options.selectedClass);\n    this.updateAreaSelectedIfDefined(suggestion, 'false');\n  }\n\n  private updateAreaSelectedIfDefined(element: HTMLElement, value: string): void {\n    if ($$(element).getAttribute('aria-selected')) {\n      this.inputManager.activeDescendant = element;\n      $$(element).setAttribute('aria-selected', value);\n    }\n  }\n\n  private addAccessibilityProperties() {\n    this.addAccessibilityPropertiesForMagicBox();\n    this.addAccessibilityPropertiesForInput();\n  }\n\n  private addAccessibilityPropertiesForMagicBox() {\n    const magicBox = $$(this.magicBoxContainer);\n\n    magicBox.setAttribute('role', 'search');\n    magicBox.setAttribute('aria-haspopup', 'listbox');\n  }\n\n  private addAccessibilityPropertiesForInput() {\n    const input = $$(this.inputManager.input);\n\n    this.inputManager.activeDescendant = null;\n    this.inputManager.expanded = false;\n    input.setAttribute('aria-owns', this.suggestionListboxID);\n    input.setAttribute('aria-controls', this.suggestionListboxID);\n  }\n\n  private htmlElementIsSuggestion(selected: HTMLElement) {\n    const omniboxSelectables = $$(this.element).findAll(`.${this.options.suggestionClass}`);\n    return indexOf(omniboxSelectables, selected) > -1;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/magicbox/SuggestionsManager.ts","import { each, find, isUndefined } from 'underscore';\nimport { KEYBOARD } from '../Core';\nimport { $$ } from '../utils/Dom';\nimport { doMagicBoxExport } from './doMagicBoxExport';\nimport { Grammar } from './Grammar';\nimport { InputManager } from './InputManager';\nimport { MagicBoxClear } from './MagicBoxClear';\nimport { Result } from './Result/Result';\nimport { Suggestion, SuggestionsManager } from './SuggestionsManager';\n\nexport interface Options {\n  inline?: boolean;\n  selectableSuggestionClass?: string;\n  selectedSuggestionClass?: string;\n  suggestionTimeout?: number;\n}\n\nexport class MagicBoxInstance {\n  public onblur: () => void;\n  public onfocus: () => void;\n  public onchange: () => void;\n  public onSuggestions: (suggestions: Suggestion[]) => void;\n  public onsubmit: () => void;\n  public onselect: (suggestion: Suggestion) => void;\n  public onclear: () => void;\n  public onmove: () => void;\n  public ontabpress: () => void;\n\n  public getSuggestions: () => Array<Promise<Suggestion[]> | Suggestion[]>;\n\n  private inputManager: InputManager;\n  private suggestionsManager: SuggestionsManager;\n  private magicBoxClear: MagicBoxClear;\n\n  private lastSuggestions: Suggestion[] = [];\n\n  private result: Result;\n  private displayedResult: Result;\n\n  private get firstSuggestionWithText(): Suggestion {\n    return find(this.lastSuggestions, suggestion => suggestion.text);\n  }\n\n  private get firstSuggestionText() {\n    const firstSuggestionWithText = this.firstSuggestionWithText;\n    return firstSuggestionWithText ? firstSuggestionWithText.text : '';\n  }\n\n  constructor(public element: HTMLElement, public grammar: Grammar, public options: Options = {}) {\n    if (isUndefined(this.options.inline)) {\n      this.options.inline = false;\n    }\n    $$(element).addClass('magic-box');\n    if (this.options.inline) {\n      $$(element).addClass('magic-box-inline');\n    }\n\n    this.result = this.grammar.parse('');\n    this.displayedResult = this.result.clean();\n\n    let inputContainer = $$(element).find('.magic-box-input');\n    if (!inputContainer) {\n      inputContainer = document.createElement('div');\n      inputContainer.className = 'magic-box-input';\n      element.appendChild(inputContainer);\n    }\n\n    this.inputManager = new InputManager(\n      inputContainer,\n      (text, wordCompletion) => {\n        if (!wordCompletion) {\n          this.setText(text);\n          this.addSuggestions();\n          this.onchange && this.onchange();\n        } else {\n          this.setText(text);\n          this.onselect && this.onselect(this.firstSuggestionWithText);\n        }\n      },\n      this\n    );\n\n    this.inputManager.ontabpress = () => {\n      this.ontabpress && this.ontabpress();\n    };\n\n    const existingValue = this.inputManager.getValue();\n    if (existingValue) {\n      this.displayedResult.input = existingValue;\n    }\n\n    this.inputManager.setResult(this.displayedResult);\n\n    const suggestionsContainer = document.createElement('div');\n    suggestionsContainer.className = 'magic-box-suggestions';\n    this.element.appendChild(suggestionsContainer);\n\n    this.suggestionsManager = new SuggestionsManager(suggestionsContainer, this.element, this.inputManager, {\n      suggestionClass: this.options.selectableSuggestionClass,\n      selectedClass: this.options.selectedSuggestionClass,\n      timeout: this.options.suggestionTimeout\n    });\n\n    this.magicBoxClear = new MagicBoxClear(this);\n    this.setupHandler();\n  }\n\n  public getResult() {\n    return this.result;\n  }\n\n  public getDisplayedResult() {\n    return this.displayedResult;\n  }\n\n  public setText(text: string) {\n    $$(this.element).toggleClass('magic-box-notEmpty', text.length > 0);\n    this.magicBoxClear.toggleTabindexAndAriaHidden(text.length > 0);\n\n    this.result = this.grammar.parse(text);\n    this.displayedResult = this.result.clean();\n\n    this.inputManager.setResult(this.displayedResult);\n  }\n\n  public setCursor(index: number) {\n    this.inputManager.setCursor(index);\n  }\n\n  public getCursor() {\n    return this.inputManager.getCursor();\n  }\n\n  public resultAtCursor(match?: string | { (result: Result): boolean }): Result[] {\n    return this.displayedResult.resultAt(this.getCursor(), match);\n  }\n\n  private setupHandler() {\n    this.inputManager.onblur = () => {\n      $$(this.element).removeClass('magic-box-hasFocus');\n      this.onblur && this.onblur();\n      if (!this.options.inline) {\n        this.clearSuggestion();\n      }\n    };\n\n    this.inputManager.onfocus = () => {\n      $$(this.element).addClass('magic-box-hasFocus');\n      this.addSuggestions();\n      this.onfocus && this.onfocus();\n    };\n\n    this.inputManager.onkeydown = (key: number) => {\n      if (this.shouldMoveInSuggestions(key)) {\n        return false;\n      }\n      if (key === KEYBOARD.ENTER) {\n        const suggestion = this.suggestionsManager.selectAndReturnKeyboardFocusedElement();\n        if (suggestion == null) {\n          this.onsubmit && this.onsubmit();\n        }\n        return false;\n      } else if (key === KEYBOARD.ESCAPE) {\n        this.clearSuggestion();\n        this.blur();\n      } else {\n        this.suggestionsManager.clearKeyboardFocusedElement();\n      }\n      return true;\n    };\n\n    this.inputManager.onchangecursor = () => {\n      this.addSuggestions();\n    };\n\n    this.inputManager.onkeyup = (key: number) => {\n      this.onmove && this.onmove();\n      if (!this.shouldMoveInSuggestions(key)) {\n        return true;\n      }\n      switch (key) {\n        case KEYBOARD.UP_ARROW:\n          this.suggestionsManager.moveUp();\n          break;\n        case KEYBOARD.DOWN_ARROW:\n          this.suggestionsManager.moveDown();\n          break;\n        case KEYBOARD.LEFT_ARROW:\n          this.suggestionsManager.moveLeft();\n          break;\n        case KEYBOARD.RIGHT_ARROW:\n          this.suggestionsManager.moveRight();\n          break;\n      }\n      if (this.suggestionsManager.selectedSuggestion) {\n        this.focusOnSuggestion(this.suggestionsManager.selectedSuggestion);\n      }\n      this.onchange && this.onchange();\n      return false;\n    };\n  }\n\n  public async addSuggestions() {\n    const suggestions = await this.suggestionsManager.receiveSuggestions(this.getSuggestions != null ? this.getSuggestions() : []);\n    this.addSelectEventHandlers(suggestions);\n    this.inputManager.setWordCompletion(this.firstSuggestionText);\n    this.onSuggestions(suggestions);\n  }\n\n  private shouldMoveInSuggestions(key: KEYBOARD) {\n    switch (key) {\n      case KEYBOARD.UP_ARROW:\n      case KEYBOARD.DOWN_ARROW:\n        return true;\n      case KEYBOARD.LEFT_ARROW:\n      case KEYBOARD.RIGHT_ARROW:\n        if (this.suggestionsManager.hasFocus && this.suggestionsManager.hasPreviews) {\n          return true;\n        }\n    }\n    return false;\n  }\n\n  private addSelectEventHandlers(suggestions: Suggestion[]) {\n    each(suggestions, (suggestion: Suggestion) => {\n      if (suggestion.onSelect == null && suggestion.text != null) {\n        suggestion.onSelect = () => {\n          this.setText(suggestion.text);\n          this.onselect && this.onselect(suggestion);\n        };\n      }\n    });\n  }\n\n  public focus() {\n    $$(this.element).addClass('magic-box-hasFocus');\n    this.inputManager.focus();\n  }\n\n  public blur() {\n    this.inputManager.blur();\n  }\n\n  public async clearSuggestion() {\n    this.inputManager.setWordCompletion(null);\n    this.suggestionsManager.clearSuggestions();\n    this.onSuggestions([]);\n  }\n\n  private focusOnSuggestion(suggestion: Suggestion) {\n    if (suggestion == null || suggestion.text == null) {\n      this.inputManager.setResult(this.displayedResult, this.firstSuggestionText);\n    } else {\n      this.inputManager.setResult(this.grammar.parse(suggestion.text).clean(), suggestion.text);\n    }\n  }\n\n  public getText() {\n    return this.inputManager.getValue();\n  }\n\n  public getWordCompletion() {\n    return this.inputManager.getWordCompletion();\n  }\n\n  public clear() {\n    this.setText('');\n    this.clearSuggestion();\n    this.focus();\n    this.onclear && this.onclear();\n  }\n\n  public hasSuggestions() {\n    return this.suggestionsManager.hasSuggestions;\n  }\n}\n\nexport function createMagicBox(element: HTMLElement, grammar: Grammar, options?: Options) {\n  return new MagicBoxInstance(element, grammar, options);\n}\n\nexport function requestAnimationFrame(callback: () => void) {\n  if ('requestAnimationFrame' in window) {\n    return window.requestAnimationFrame(callback);\n  }\n  return setTimeout(callback);\n}\n\ndoMagicBoxExport();\n\n\n\n// WEBPACK FOOTER //\n// ./src/magicbox/MagicBox.ts","import _ = require('underscore');\n\nexport class MagicBoxUtils {\n  static escapeRegExp(str) {\n    return str.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, '\\\\$&');\n  }\n\n  static highlightText(\n    text: string,\n    highligth: string,\n    ignoreCase = false,\n    matchClass: string = 'magic-box-hightlight',\n    doNotMatchClass: string = ''\n  ) {\n    if (highligth.length == 0) {\n      return text;\n    }\n    const escaped = this.escapeRegExp(highligth);\n    const stringRegex = '(' + escaped + ')|(.*?(?=' + escaped + ')|.+)';\n    const regex = new RegExp(stringRegex, ignoreCase ? 'gi' : 'g');\n    return text.replace(regex, (text, match, notmatch) => this.escapeText(match != null ? matchClass : doNotMatchClass, text));\n  }\n\n  private static escapeText = (classname: string, text: string) => {\n    return `<span class=\"${classname}\">${_.escape(text)}</span>`;\n  };\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/magicbox/MagicBoxUtils.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/DynamicFacet/_DynamicFacet.scss\n// module id = 223\n// module chunks = 2 4 8 88","import { $$ } from '../../../utils/Dom';\n\nexport interface IDynamicFacetValueMoreLessButtonOptions {\n  label: string;\n  ariaLabel: string;\n  className: string;\n  action: () => void;\n}\n\nexport class DynamicFacetValueShowMoreLessButton {\n  public element: HTMLElement;\n\n  constructor(options: IDynamicFacetValueMoreLessButtonOptions) {\n    const btn = $$(\n      'button',\n      {\n        className: options.className,\n        ariaLabel: options.ariaLabel,\n        type: 'button'\n      },\n      options.label\n    );\n\n    this.element = $$('li', { role: 'none' }, btn).el;\n    btn.on('click', () => options.action());\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/DynamicFacet/DynamicFacetValues/DynamicFacetValueMoreLessButton.ts","import * as Globalize from 'globalize';\nimport { IDynamicFacet, IDynamicFacetValueProperties, IValueRenderer, IValueRendererKlass, IDynamicFacetValue } from '../IDynamicFacet';\nimport { FacetValueState } from '../../../rest/Facet/FacetValueState';\nimport { analyticsActionCauseList, IAnalyticsFacetMeta } from '../../Analytics/AnalyticsActionListMeta';\nimport { l } from '../../../strings/Strings';\nimport { RangeType } from '../../../rest/RangeValue';\nimport { FacetType } from '../../../rest/Facet/FacetRequest';\nimport { IAnalyticsFacetState } from '../../Analytics/IAnalyticsFacetState';\n\nexport class DynamicFacetValue implements IDynamicFacetValue {\n  public value: string;\n  public start: RangeType;\n  public end: RangeType;\n  public endInclusive: boolean;\n  public state: FacetValueState;\n  public numberOfResults: number;\n  public position: number;\n  public displayValue: string;\n  public renderer: IValueRenderer;\n  private element: HTMLElement = null;\n\n  constructor(facetValue: IDynamicFacetValueProperties, private facet: IDynamicFacet, rendererKlass: IValueRendererKlass) {\n    this.value = facetValue.value;\n    this.start = facetValue.start;\n    this.end = facetValue.end;\n    this.endInclusive = facetValue.endInclusive;\n    this.state = facetValue.state;\n    this.numberOfResults = facetValue.numberOfResults;\n    this.position = facetValue.position;\n    this.displayValue = facetValue.displayValue;\n    this.renderer = new rendererKlass(this, facet);\n  }\n\n  public get isSelected() {\n    return this.state === FacetValueState.selected;\n  }\n\n  public get isIdle() {\n    return this.state === FacetValueState.idle;\n  }\n\n  public toggleSelect() {\n    this.state === FacetValueState.selected ? this.deselect() : this.select();\n  }\n\n  public select() {\n    this.state = FacetValueState.selected;\n  }\n\n  public deselect() {\n    this.state = FacetValueState.idle;\n  }\n\n  public equals(arg: string | IDynamicFacetValue) {\n    const value = typeof arg === 'string' ? arg : arg.value;\n    return value.toLowerCase() === this.value.toLowerCase();\n  }\n\n  public focus() {\n    if (!this.renderedElement) {\n      return;\n    }\n    const checkbox = this.renderedElement.querySelector<HTMLElement>('.coveo-checkbox-button');\n    if (!checkbox) {\n      return;\n    }\n    checkbox.focus();\n  }\n\n  public get formattedCount(): string {\n    return Globalize.format(this.numberOfResults, 'n0');\n  }\n\n  public get selectAriaLabel() {\n    const resultCount = l('ResultCount', this.formattedCount, this.numberOfResults);\n\n    return `${this.displayValue} ${resultCount}`;\n  }\n\n  private get isRange() {\n    return this.facet.facetType !== FacetType.specific;\n  }\n\n  private get analyticsValue() {\n    return this.isRange ? `${this.start}..${this.end}` : this.value;\n  }\n\n  private get rangeFacetState() {\n    if (!this.isRange) {\n      return null;\n    }\n\n    return {\n      start: `${this.start}`,\n      end: `${this.end}`,\n      endInclusive: this.endInclusive\n    };\n  }\n\n  public get analyticsFacetState(): IAnalyticsFacetState {\n    return {\n      ...this.facet.basicAnalyticsFacetState,\n      ...this.rangeFacetState,\n      value: this.analyticsValue,\n      valuePosition: this.position,\n      displayValue: this.displayValue,\n      state: this.state\n    };\n  }\n\n  private get rangeFacetMeta() {\n    if (!this.isRange) {\n      return null;\n    }\n\n    return {\n      facetRangeStart: `${this.start}`,\n      facetRangeEnd: `${this.end}`,\n      facetRangeEndInclusive: this.endInclusive\n    };\n  }\n\n  public get analyticsFacetMeta(): IAnalyticsFacetMeta {\n    return {\n      ...this.facet.basicAnalyticsFacetMeta,\n      ...this.rangeFacetMeta,\n      facetValue: this.analyticsValue\n    };\n  }\n\n  public logSelectActionToAnalytics() {\n    const action =\n      this.state === FacetValueState.selected ? analyticsActionCauseList.dynamicFacetSelect : analyticsActionCauseList.dynamicFacetDeselect;\n\n    this.facet.logAnalyticsEvent(action, this.analyticsFacetMeta);\n  }\n\n  private render() {\n    this.element = this.renderer.render();\n    return this.element;\n  }\n\n  public get renderedElement() {\n    if (this.element) {\n      return this.element;\n    }\n\n    return this.render();\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/DynamicFacet/DynamicFacetValues/DynamicFacetValue.ts","export class ChatterUtils {\n  static buildURI(objectURI: string, objectId: string, newObjectId: string) {\n    return objectURI.replace(objectId, newObjectId);\n  }\n\n  static bindClickEventToElement(element: HTMLElement, openInPrimaryTab: boolean, openInSubTab: boolean) {\n    return element;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/ChatterUtils.ts","/**\n * The `IQuickviewLoadedEventArgs` interface describes the object that all\n * [`quickviewLoaded`]{@link QuickviewEvents.quickviewLoaded} event handlers receive as an argument.\n */\nexport interface IQuickviewLoadedEventArgs {\n  /**\n   * The amount of time it took to download the content to display in the quickview modal window (in milliseconds).\n   */\n  duration: number;\n}\n\n/**\n * The `QuickviewEvents` static class contains the string definitions of all events that strongly relate to the\n * [`Quickview`]{@link Quickview} component.\n */\nexport class QuickviewEvents {\n  /**\n   * Triggered by the [`QuickviewDocument`]{@link QuickviewDocument} component when the content to display in the\n   * quickview modal window has just finished downloading.\n   *\n   * The [`Quickview`]{@link Quickview} component listens to this event to know when to remove its loading animation.\n   *\n   * All `quickviewLoaded` event handlers receive a [`QuickviewLoadedEventArgs`]{@link IQuickviewLoadedEventArgs} object\n   * as an argument.\n   *\n   * @type {string} The string value is `quickviewLoaded`.\n   */\n  public static quickviewLoaded = 'quickviewLoaded';\n\n  /**\n   * Triggered by the [`QuickviewDocument`]{@link QuickviewDocument} component when the end user has just clicked the\n   * **Quickview** button/link to open the quickview modal window.\n   *\n   * This event allows external code to modify the terms to highlight before the content of the quickview modal window\n   * is rendered.\n   *\n   * All `openQuickview` event handlers receive an\n   * [`OpenQuickviewEventArgs`]{@link ResultListEvents.IOpenQuickviewEventArgs} object as an argument.\n   *\n   * @type {string} The string value is `openQuickview`.\n   */\n  public static openQuickview = 'openQuickview';\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/events/QuickviewEvents.ts","import { IQuery } from './Query';\n\nexport const SUBSCRIPTION_TYPE = {\n  followQuery: 'followQuery',\n  followDocument: 'followDocument'\n};\n\nexport interface ISearchAlertsEndpointOptions {\n  restUri: string;\n  accessToken?: string;\n  errorsAsSuccess?: boolean;\n}\n\nexport interface ISearchAlertsEndpointCallOptions {\n  type?: string;\n  page?: number;\n}\n\nexport interface ISearchAlertsEndpointSearchCallOptions {\n  documentIds: string[];\n}\n\n/**\n * Describe a subscription to the Coveo Search alerts service\n */\nexport interface ISubscription extends ISubscriptionRequest {\n  /**\n   * The id of the subscription\n   */\n  id: string;\n\n  /**\n   * The user associated with the subscription\n   */\n  user: ISubscriptionUser;\n}\n\n/**\n * Describe a user associated with a subscription to the Coveo Search alerts service\n */\nexport interface ISubscriptionUser {\n  /**\n   * The email of the user\n   */\n  email: string;\n\n  /**\n   * The token used to manage the alerts via email.\n   */\n  manageToken: string;\n}\n\n/**\n * Describe a request to subscribe to the Coveo Search alerts service\n */\nexport interface ISubscriptionRequest {\n  /**\n   * Type of subscription.<br/>\n   * Can be 'followQuery' or 'followDocument'\n   */\n  type: string;\n  /**\n   * Config of the subscription\n   */\n  typeConfig: ISubscriptionQueryRequest | ISubscriptionItemRequest;\n  /**\n   * Frequency of the alerts\n   */\n  frequency?: string;\n  /**\n   * The name that should be used by the API to identify this subscription\n   */\n  name: string;\n}\n\n/**\n * Describe a subscription to a single query\n */\nexport interface ISubscriptionQueryRequest {\n  /**\n   * Query to subscribe to\n   */\n  query: IQuery;\n  /**\n   * Which field on the result set represent the modification date for which you wish to receive alerts\n   */\n  modifiedDateField?: string;\n}\n\n/**\n * The `ISubscriptionItemRequest` interface describes a subscription to a single item (a result).\n */\nexport interface ISubscriptionItemRequest {\n  /**\n   * Contains the unique ID of the item to subscribe to.\n   */\n  id: string;\n\n  /**\n   * Contains the title of the item to subscribe to.\n   */\n  title: string;\n\n  /**\n   * Indicates which field contains the modification date of the item to subscribe to.\n   */\n  modifiedDateField?: string;\n\n  /**\n   * Contains a list of fields to monitor for the item to subscribe to.\n   */\n  watchedFields?: string[];\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/rest/Subscription.ts","import { sanitize } from 'dompurify';\nimport { IQuestionAnswerResponse, IRelatedQuestionAnswerResponse } from '../../rest/QuestionAnswerResponse';\nimport { Dom } from '../../utils/Dom';\nimport { bindAnalyticsToLink } from '../ResultLink/ResultLinkCommon';\n\nexport const getDefaultSnippetStyle = (contentClassName: string) => `\n  body {\n    font-family: \"Lato\", \"Helvetica Neue\", Helvetica, Arial, sans-serif, sans-serif;\n  }\n\n  .${contentClassName} > :first-child {\n    margin-top: 0;\n  }\n\n  .${contentClassName} > :last-child {\n    margin-bottom: 0;\n  }\n`;\n\nexport function getSanitizedAnswerSnippet(questionAnswer: IQuestionAnswerResponse | IRelatedQuestionAnswerResponse) {\n  return (\n    questionAnswer.answerSnippet &&\n    sanitize(questionAnswer.answerSnippet, {\n      USE_PROFILES: { html: true }\n    })\n  );\n}\n\nexport const transformSnippetLinks = (\n  renderedSnippetParent: HTMLElement,\n  alwaysOpenInNewWindow: boolean,\n  logAnalytics: (link: HTMLAnchorElement) => void\n) => {\n  Dom.nodeListToArray(renderedSnippetParent.querySelectorAll('a')).forEach((link: HTMLAnchorElement) => {\n    bindAnalyticsToLink(link, () => logAnalytics(link));\n    link.target = alwaysOpenInNewWindow ? '_blank' : '_top';\n  });\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/SmartSnippet/SmartSnippetCommon.ts","import { IAdvancedSearchInput } from '../AdvancedSearchInput';\nimport { AdvancedSearchEvents } from '../../../events/AdvancedSearchEvents';\nimport { QueryBuilder } from '../../Base/QueryBuilder';\nimport { $$ } from '../../../utils/Dom';\nimport { RadioButton } from '../../FormWidgets/RadioButton';\nimport * as _ from 'underscore';\n\nexport abstract class DateInput implements IAdvancedSearchInput {\n  protected element: HTMLElement;\n  private radio: RadioButton;\n  private error: HTMLElement;\n\n  constructor(public inputName: string, public root: HTMLElement) {\n    this.buildContent();\n  }\n\n  public reset() {\n    this.radio.reset();\n  }\n\n  public build(): HTMLElement {\n    return this.element;\n  }\n\n  public getElement(): HTMLElement {\n    return this.element;\n  }\n\n  public abstract getValue(): string;\n\n  public isSelected(): boolean {\n    return this.getRadio().checked;\n  }\n\n  public updateQuery(queryBuilder: QueryBuilder) {\n    try {\n      let value = this.getValue();\n      if (value) {\n        queryBuilder.advancedExpression.add(value);\n      }\n      this.removeErrorMessage();\n    } catch (error) {\n      this.setErrorMessage(error);\n    }\n  }\n\n  protected getRadio(): HTMLInputElement {\n    return <HTMLInputElement>$$(this.element).find('input');\n  }\n\n  private setErrorMessage(message: string) {\n    this.removeErrorMessage();\n    this.error = $$(\n      'div',\n      {\n        className: 'coveo-error coveo-error-date-input'\n      },\n      message\n    ).el;\n    $$(this.element).append(this.error);\n  }\n\n  private removeErrorMessage() {\n    if (this.error) {\n      $$(this.error).remove();\n    }\n  }\n\n  private buildContent() {\n    this.radio = new RadioButton(\n      () => {\n        this.deactivateAllInputs();\n        this.activateSelectedInput();\n      },\n      this.inputName,\n      'coveo-advanced-search-date-input'\n    );\n    this.element = this.radio.getElement();\n    $$(this.element).addClass('coveo-advanced-search-date-input-section');\n    $$(this.radio.getRadio()).addClass('coveo-advanced-search-date');\n    $$(this.radio.getLabel()).addClass('coveo-advanced-search-label');\n  }\n\n  private deactivateAllInputs() {\n    let elements = $$(this.element.parentElement).findAll('fieldset');\n    _.each(elements, element => {\n      (<HTMLInputElement>element).disabled = true;\n    });\n  }\n\n  private activateSelectedInput() {\n    let elements = $$(this.element).findAll('fieldset');\n    _.each(elements, element => {\n      (<HTMLInputElement>element).disabled = false;\n    });\n  }\n\n  protected onChange() {\n    if (this.root) {\n      $$(this.root).trigger(AdvancedSearchEvents.executeAdvancedSearch);\n    } else if (this.element) {\n      $$(this.element).trigger(AdvancedSearchEvents.executeAdvancedSearch);\n    }\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/AdvancedSearch/DateInput/DateInput.ts","import { IAdvancedSearchInput } from '../AdvancedSearchInput';\nimport { QueryBuilder } from '../../Base/QueryBuilder';\nimport { $$ } from '../../../utils/Dom';\nimport { AdvancedSearchEvents } from '../../../events/AdvancedSearchEvents';\nimport { l } from '../../../strings/Strings';\n\nexport class DocumentInput implements IAdvancedSearchInput {\n  protected element: HTMLElement;\n\n  constructor(public inputName: string, public root: HTMLElement) {}\n\n  public reset() {}\n\n  public build(): HTMLElement {\n    let documentInput = $$('div', { className: 'coveo-advanced-search-document-input-section' });\n    let label = $$('span', { className: 'coveo-advanced-search-label' });\n    label.text(l(this.inputName));\n    documentInput.append(label.el);\n    this.element = documentInput.el;\n    return this.element;\n  }\n\n  public getValue(): string {\n    return '';\n  }\n\n  public updateQuery(queryBuilder: QueryBuilder): void {\n    let value = this.getValue();\n    if (value) {\n      queryBuilder.advancedExpression.add(this.getValue());\n    }\n  }\n\n  protected onChange() {\n    if (this.root) {\n      $$(this.root).trigger(AdvancedSearchEvents.executeAdvancedSearch);\n    } else if (this.element) {\n      $$(this.element).trigger(AdvancedSearchEvents.executeAdvancedSearch);\n    }\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/AdvancedSearch/DocumentInput/DocumentInput.ts","export default function(x) {\n  return Math.abs(x = Math.round(x)) >= 1e21\n      ? x.toLocaleString(\"en\").replace(/,/g, \"\")\n      : x.toString(10);\n}\n\n// Computes the decimal coefficient and exponent of the specified number x with\n// significant digits p, where x is positive and p is in [1, 21] or undefined.\n// For example, formatDecimalParts(1.23) returns [\"123\", 0].\nexport function formatDecimalParts(x, p) {\n  if ((i = (x = p ? x.toExponential(p - 1) : x.toExponential()).indexOf(\"e\")) < 0) return null; // NaN, ±Infinity\n  var i, coefficient = x.slice(0, i);\n\n  // The string returned by toExponential either has the form \\d\\.\\d+e[-+]\\d+\n  // (e.g., 1.2e+3) or the form \\de[-+]\\d+ (e.g., 1e+3).\n  return [\n    coefficient.length > 1 ? coefficient[0] + coefficient.slice(2) : coefficient,\n    +x.slice(i + 1)\n  ];\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-format/src/formatDecimal.js\n// module id = null\n// module chunks = ","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x) {\n  return x = formatDecimalParts(Math.abs(x)), x ? x[1] : NaN;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-format/src/exponent.js\n// module id = null\n// module chunks = ","export default function(grouping, thousands) {\n  return function(value, width) {\n    var i = value.length,\n        t = [],\n        j = 0,\n        g = grouping[0],\n        length = 0;\n\n    while (i > 0 && g > 0) {\n      if (length + g + 1 > width) g = Math.max(1, width - length);\n      t.push(value.substring(i -= g, i + g));\n      if ((length += g + 1) > width) break;\n      g = grouping[j = (j + 1) % grouping.length];\n    }\n\n    return t.reverse().join(thousands);\n  };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-format/src/formatGroup.js\n// module id = null\n// module chunks = ","export default function(numerals) {\n  return function(value) {\n    return value.replace(/[0-9]/g, function(i) {\n      return numerals[+i];\n    });\n  };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-format/src/formatNumerals.js\n// module id = null\n// module chunks = ","// [[fill]align][sign][symbol][0][width][,][.precision][~][type]\nvar re = /^(?:(.)?([<>=^]))?([+\\-( ])?([$#])?(0)?(\\d+)?(,)?(\\.\\d+)?(~)?([a-z%])?$/i;\n\nexport default function formatSpecifier(specifier) {\n  if (!(match = re.exec(specifier))) throw new Error(\"invalid format: \" + specifier);\n  var match;\n  return new FormatSpecifier({\n    fill: match[1],\n    align: match[2],\n    sign: match[3],\n    symbol: match[4],\n    zero: match[5],\n    width: match[6],\n    comma: match[7],\n    precision: match[8] && match[8].slice(1),\n    trim: match[9],\n    type: match[10]\n  });\n}\n\nformatSpecifier.prototype = FormatSpecifier.prototype; // instanceof\n\nexport function FormatSpecifier(specifier) {\n  this.fill = specifier.fill === undefined ? \" \" : specifier.fill + \"\";\n  this.align = specifier.align === undefined ? \">\" : specifier.align + \"\";\n  this.sign = specifier.sign === undefined ? \"-\" : specifier.sign + \"\";\n  this.symbol = specifier.symbol === undefined ? \"\" : specifier.symbol + \"\";\n  this.zero = !!specifier.zero;\n  this.width = specifier.width === undefined ? undefined : +specifier.width;\n  this.comma = !!specifier.comma;\n  this.precision = specifier.precision === undefined ? undefined : +specifier.precision;\n  this.trim = !!specifier.trim;\n  this.type = specifier.type === undefined ? \"\" : specifier.type + \"\";\n}\n\nFormatSpecifier.prototype.toString = function() {\n  return this.fill\n      + this.align\n      + this.sign\n      + this.symbol\n      + (this.zero ? \"0\" : \"\")\n      + (this.width === undefined ? \"\" : Math.max(1, this.width | 0))\n      + (this.comma ? \",\" : \"\")\n      + (this.precision === undefined ? \"\" : \".\" + Math.max(0, this.precision | 0))\n      + (this.trim ? \"~\" : \"\")\n      + this.type;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-format/src/formatSpecifier.js\n// module id = null\n// module chunks = ","// Trims insignificant zeros, e.g., replaces 1.2000k with 1.2k.\nexport default function(s) {\n  out: for (var n = s.length, i = 1, i0 = -1, i1; i < n; ++i) {\n    switch (s[i]) {\n      case \".\": i0 = i1 = i; break;\n      case \"0\": if (i0 === 0) i0 = i; i1 = i; break;\n      default: if (!+s[i]) break out; if (i0 > 0) i0 = 0; break;\n    }\n  }\n  return i0 > 0 ? s.slice(0, i0) + s.slice(i1 + 1) : s;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-format/src/formatTrim.js\n// module id = null\n// module chunks = ","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport var prefixExponent;\n\nexport default function(x, p) {\n  var d = formatDecimalParts(x, p);\n  if (!d) return x + \"\";\n  var coefficient = d[0],\n      exponent = d[1],\n      i = exponent - (prefixExponent = Math.max(-8, Math.min(8, Math.floor(exponent / 3))) * 3) + 1,\n      n = coefficient.length;\n  return i === n ? coefficient\n      : i > n ? coefficient + new Array(i - n + 1).join(\"0\")\n      : i > 0 ? coefficient.slice(0, i) + \".\" + coefficient.slice(i)\n      : \"0.\" + new Array(1 - i).join(\"0\") + formatDecimalParts(x, Math.max(0, p + i - 1))[0]; // less than 1y!\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-format/src/formatPrefixAuto.js\n// module id = null\n// module chunks = ","import {formatDecimalParts} from \"./formatDecimal.js\";\n\nexport default function(x, p) {\n  var d = formatDecimalParts(x, p);\n  if (!d) return x + \"\";\n  var coefficient = d[0],\n      exponent = d[1];\n  return exponent < 0 ? \"0.\" + new Array(-exponent).join(\"0\") + coefficient\n      : coefficient.length > exponent + 1 ? coefficient.slice(0, exponent + 1) + \".\" + coefficient.slice(exponent + 1)\n      : coefficient + new Array(exponent - coefficient.length + 2).join(\"0\");\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-format/src/formatRounded.js\n// module id = null\n// module chunks = ","import formatDecimal from \"./formatDecimal.js\";\nimport formatPrefixAuto from \"./formatPrefixAuto.js\";\nimport formatRounded from \"./formatRounded.js\";\n\nexport default {\n  \"%\": function(x, p) { return (x * 100).toFixed(p); },\n  \"b\": function(x) { return Math.round(x).toString(2); },\n  \"c\": function(x) { return x + \"\"; },\n  \"d\": formatDecimal,\n  \"e\": function(x, p) { return x.toExponential(p); },\n  \"f\": function(x, p) { return x.toFixed(p); },\n  \"g\": function(x, p) { return x.toPrecision(p); },\n  \"o\": function(x) { return Math.round(x).toString(8); },\n  \"p\": function(x, p) { return formatRounded(x * 100, p); },\n  \"r\": formatRounded,\n  \"s\": formatPrefixAuto,\n  \"X\": function(x) { return Math.round(x).toString(16).toUpperCase(); },\n  \"x\": function(x) { return Math.round(x).toString(16); }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-format/src/formatTypes.js\n// module id = null\n// module chunks = ","export default function(x) {\n  return x;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-format/src/identity.js\n// module id = null\n// module chunks = ","import exponent from \"./exponent.js\";\nimport formatGroup from \"./formatGroup.js\";\nimport formatNumerals from \"./formatNumerals.js\";\nimport formatSpecifier from \"./formatSpecifier.js\";\nimport formatTrim from \"./formatTrim.js\";\nimport formatTypes from \"./formatTypes.js\";\nimport {prefixExponent} from \"./formatPrefixAuto.js\";\nimport identity from \"./identity.js\";\n\nvar map = Array.prototype.map,\n    prefixes = [\"y\",\"z\",\"a\",\"f\",\"p\",\"n\",\"µ\",\"m\",\"\",\"k\",\"M\",\"G\",\"T\",\"P\",\"E\",\"Z\",\"Y\"];\n\nexport default function(locale) {\n  var group = locale.grouping === undefined || locale.thousands === undefined ? identity : formatGroup(map.call(locale.grouping, Number), locale.thousands + \"\"),\n      currencyPrefix = locale.currency === undefined ? \"\" : locale.currency[0] + \"\",\n      currencySuffix = locale.currency === undefined ? \"\" : locale.currency[1] + \"\",\n      decimal = locale.decimal === undefined ? \".\" : locale.decimal + \"\",\n      numerals = locale.numerals === undefined ? identity : formatNumerals(map.call(locale.numerals, String)),\n      percent = locale.percent === undefined ? \"%\" : locale.percent + \"\",\n      minus = locale.minus === undefined ? \"-\" : locale.minus + \"\",\n      nan = locale.nan === undefined ? \"NaN\" : locale.nan + \"\";\n\n  function newFormat(specifier) {\n    specifier = formatSpecifier(specifier);\n\n    var fill = specifier.fill,\n        align = specifier.align,\n        sign = specifier.sign,\n        symbol = specifier.symbol,\n        zero = specifier.zero,\n        width = specifier.width,\n        comma = specifier.comma,\n        precision = specifier.precision,\n        trim = specifier.trim,\n        type = specifier.type;\n\n    // The \"n\" type is an alias for \",g\".\n    if (type === \"n\") comma = true, type = \"g\";\n\n    // The \"\" type, and any invalid type, is an alias for \".12~g\".\n    else if (!formatTypes[type]) precision === undefined && (precision = 12), trim = true, type = \"g\";\n\n    // If zero fill is specified, padding goes after sign and before digits.\n    if (zero || (fill === \"0\" && align === \"=\")) zero = true, fill = \"0\", align = \"=\";\n\n    // Compute the prefix and suffix.\n    // For SI-prefix, the suffix is lazily computed.\n    var prefix = symbol === \"$\" ? currencyPrefix : symbol === \"#\" && /[boxX]/.test(type) ? \"0\" + type.toLowerCase() : \"\",\n        suffix = symbol === \"$\" ? currencySuffix : /[%p]/.test(type) ? percent : \"\";\n\n    // What format function should we use?\n    // Is this an integer type?\n    // Can this type generate exponential notation?\n    var formatType = formatTypes[type],\n        maybeSuffix = /[defgprs%]/.test(type);\n\n    // Set the default precision if not specified,\n    // or clamp the specified precision to the supported range.\n    // For significant precision, it must be in [1, 21].\n    // For fixed precision, it must be in [0, 20].\n    precision = precision === undefined ? 6\n        : /[gprs]/.test(type) ? Math.max(1, Math.min(21, precision))\n        : Math.max(0, Math.min(20, precision));\n\n    function format(value) {\n      var valuePrefix = prefix,\n          valueSuffix = suffix,\n          i, n, c;\n\n      if (type === \"c\") {\n        valueSuffix = formatType(value) + valueSuffix;\n        value = \"\";\n      } else {\n        value = +value;\n\n        // Determine the sign. -0 is not less than 0, but 1 / -0 is!\n        var valueNegative = value < 0 || 1 / value < 0;\n\n        // Perform the initial formatting.\n        value = isNaN(value) ? nan : formatType(Math.abs(value), precision);\n\n        // Trim insignificant zeros.\n        if (trim) value = formatTrim(value);\n\n        // If a negative value rounds to zero after formatting, and no explicit positive sign is requested, hide the sign.\n        if (valueNegative && +value === 0 && sign !== \"+\") valueNegative = false;\n\n        // Compute the prefix and suffix.\n        valuePrefix = (valueNegative ? (sign === \"(\" ? sign : minus) : sign === \"-\" || sign === \"(\" ? \"\" : sign) + valuePrefix;\n        valueSuffix = (type === \"s\" ? prefixes[8 + prefixExponent / 3] : \"\") + valueSuffix + (valueNegative && sign === \"(\" ? \")\" : \"\");\n\n        // Break the formatted value into the integer “value” part that can be\n        // grouped, and fractional or exponential “suffix” part that is not.\n        if (maybeSuffix) {\n          i = -1, n = value.length;\n          while (++i < n) {\n            if (c = value.charCodeAt(i), 48 > c || c > 57) {\n              valueSuffix = (c === 46 ? decimal + value.slice(i + 1) : value.slice(i)) + valueSuffix;\n              value = value.slice(0, i);\n              break;\n            }\n          }\n        }\n      }\n\n      // If the fill character is not \"0\", grouping is applied before padding.\n      if (comma && !zero) value = group(value, Infinity);\n\n      // Compute the padding.\n      var length = valuePrefix.length + value.length + valueSuffix.length,\n          padding = length < width ? new Array(width - length + 1).join(fill) : \"\";\n\n      // If the fill character is \"0\", grouping is applied after padding.\n      if (comma && zero) value = group(padding + value, padding.length ? width - valueSuffix.length : Infinity), padding = \"\";\n\n      // Reconstruct the final output based on the desired alignment.\n      switch (align) {\n        case \"<\": value = valuePrefix + value + valueSuffix + padding; break;\n        case \"=\": value = valuePrefix + padding + value + valueSuffix; break;\n        case \"^\": value = padding.slice(0, length = padding.length >> 1) + valuePrefix + value + valueSuffix + padding.slice(length); break;\n        default: value = padding + valuePrefix + value + valueSuffix; break;\n      }\n\n      return numerals(value);\n    }\n\n    format.toString = function() {\n      return specifier + \"\";\n    };\n\n    return format;\n  }\n\n  function formatPrefix(specifier, value) {\n    var f = newFormat((specifier = formatSpecifier(specifier), specifier.type = \"f\", specifier)),\n        e = Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3,\n        k = Math.pow(10, -e),\n        prefix = prefixes[8 + e / 3];\n    return function(value) {\n      return f(k * value) + prefix;\n    };\n  }\n\n  return {\n    format: newFormat,\n    formatPrefix: formatPrefix\n  };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-format/src/locale.js\n// module id = null\n// module chunks = ","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var format;\nexport var formatPrefix;\n\ndefaultLocale({\n  decimal: \".\",\n  thousands: \",\",\n  grouping: [3],\n  currency: [\"$\", \"\"],\n  minus: \"-\"\n});\n\nexport default function defaultLocale(definition) {\n  locale = formatLocale(definition);\n  format = locale.format;\n  formatPrefix = locale.formatPrefix;\n  return locale;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-format/src/defaultLocale.js\n// module id = null\n// module chunks = ","import exponent from \"./exponent.js\";\n\nexport default function(step) {\n  return Math.max(0, -exponent(Math.abs(step)));\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-format/src/precisionFixed.js\n// module id = null\n// module chunks = ","import exponent from \"./exponent.js\";\n\nexport default function(step, value) {\n  return Math.max(0, Math.max(-8, Math.min(8, Math.floor(exponent(value) / 3))) * 3 - exponent(Math.abs(step)));\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-format/src/precisionPrefix.js\n// module id = null\n// module chunks = ","import exponent from \"./exponent.js\";\n\nexport default function(step, max) {\n  step = Math.abs(step), max = Math.abs(max) - step;\n  return Math.max(0, exponent(max) - exponent(step)) + 1;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-format/src/precisionRound.js\n// module id = null\n// module chunks = ","export {default as formatDefaultLocale, format, formatPrefix} from \"./defaultLocale.js\";\nexport {default as formatLocale} from \"./locale.js\";\nexport {default as formatSpecifier, FormatSpecifier} from \"./formatSpecifier.js\";\nexport {default as precisionFixed} from \"./precisionFixed.js\";\nexport {default as precisionPrefix} from \"./precisionPrefix.js\";\nexport {default as precisionRound} from \"./precisionRound.js\";\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-format/src/index.js\n// module id = null\n// module chunks = ","import {\n  timeDay,\n  timeSunday,\n  timeMonday,\n  timeThursday,\n  timeYear,\n  utcDay,\n  utcSunday,\n  utcMonday,\n  utcThursday,\n  utcYear\n} from \"d3-time\";\n\nfunction localDate(d) {\n  if (0 <= d.y && d.y < 100) {\n    var date = new Date(-1, d.m, d.d, d.H, d.M, d.S, d.L);\n    date.setFullYear(d.y);\n    return date;\n  }\n  return new Date(d.y, d.m, d.d, d.H, d.M, d.S, d.L);\n}\n\nfunction utcDate(d) {\n  if (0 <= d.y && d.y < 100) {\n    var date = new Date(Date.UTC(-1, d.m, d.d, d.H, d.M, d.S, d.L));\n    date.setUTCFullYear(d.y);\n    return date;\n  }\n  return new Date(Date.UTC(d.y, d.m, d.d, d.H, d.M, d.S, d.L));\n}\n\nfunction newDate(y, m, d) {\n  return {y: y, m: m, d: d, H: 0, M: 0, S: 0, L: 0};\n}\n\nexport default function formatLocale(locale) {\n  var locale_dateTime = locale.dateTime,\n      locale_date = locale.date,\n      locale_time = locale.time,\n      locale_periods = locale.periods,\n      locale_weekdays = locale.days,\n      locale_shortWeekdays = locale.shortDays,\n      locale_months = locale.months,\n      locale_shortMonths = locale.shortMonths;\n\n  var periodRe = formatRe(locale_periods),\n      periodLookup = formatLookup(locale_periods),\n      weekdayRe = formatRe(locale_weekdays),\n      weekdayLookup = formatLookup(locale_weekdays),\n      shortWeekdayRe = formatRe(locale_shortWeekdays),\n      shortWeekdayLookup = formatLookup(locale_shortWeekdays),\n      monthRe = formatRe(locale_months),\n      monthLookup = formatLookup(locale_months),\n      shortMonthRe = formatRe(locale_shortMonths),\n      shortMonthLookup = formatLookup(locale_shortMonths);\n\n  var formats = {\n    \"a\": formatShortWeekday,\n    \"A\": formatWeekday,\n    \"b\": formatShortMonth,\n    \"B\": formatMonth,\n    \"c\": null,\n    \"d\": formatDayOfMonth,\n    \"e\": formatDayOfMonth,\n    \"f\": formatMicroseconds,\n    \"g\": formatYearISO,\n    \"G\": formatFullYearISO,\n    \"H\": formatHour24,\n    \"I\": formatHour12,\n    \"j\": formatDayOfYear,\n    \"L\": formatMilliseconds,\n    \"m\": formatMonthNumber,\n    \"M\": formatMinutes,\n    \"p\": formatPeriod,\n    \"q\": formatQuarter,\n    \"Q\": formatUnixTimestamp,\n    \"s\": formatUnixTimestampSeconds,\n    \"S\": formatSeconds,\n    \"u\": formatWeekdayNumberMonday,\n    \"U\": formatWeekNumberSunday,\n    \"V\": formatWeekNumberISO,\n    \"w\": formatWeekdayNumberSunday,\n    \"W\": formatWeekNumberMonday,\n    \"x\": null,\n    \"X\": null,\n    \"y\": formatYear,\n    \"Y\": formatFullYear,\n    \"Z\": formatZone,\n    \"%\": formatLiteralPercent\n  };\n\n  var utcFormats = {\n    \"a\": formatUTCShortWeekday,\n    \"A\": formatUTCWeekday,\n    \"b\": formatUTCShortMonth,\n    \"B\": formatUTCMonth,\n    \"c\": null,\n    \"d\": formatUTCDayOfMonth,\n    \"e\": formatUTCDayOfMonth,\n    \"f\": formatUTCMicroseconds,\n    \"g\": formatUTCYearISO,\n    \"G\": formatUTCFullYearISO,\n    \"H\": formatUTCHour24,\n    \"I\": formatUTCHour12,\n    \"j\": formatUTCDayOfYear,\n    \"L\": formatUTCMilliseconds,\n    \"m\": formatUTCMonthNumber,\n    \"M\": formatUTCMinutes,\n    \"p\": formatUTCPeriod,\n    \"q\": formatUTCQuarter,\n    \"Q\": formatUnixTimestamp,\n    \"s\": formatUnixTimestampSeconds,\n    \"S\": formatUTCSeconds,\n    \"u\": formatUTCWeekdayNumberMonday,\n    \"U\": formatUTCWeekNumberSunday,\n    \"V\": formatUTCWeekNumberISO,\n    \"w\": formatUTCWeekdayNumberSunday,\n    \"W\": formatUTCWeekNumberMonday,\n    \"x\": null,\n    \"X\": null,\n    \"y\": formatUTCYear,\n    \"Y\": formatUTCFullYear,\n    \"Z\": formatUTCZone,\n    \"%\": formatLiteralPercent\n  };\n\n  var parses = {\n    \"a\": parseShortWeekday,\n    \"A\": parseWeekday,\n    \"b\": parseShortMonth,\n    \"B\": parseMonth,\n    \"c\": parseLocaleDateTime,\n    \"d\": parseDayOfMonth,\n    \"e\": parseDayOfMonth,\n    \"f\": parseMicroseconds,\n    \"g\": parseYear,\n    \"G\": parseFullYear,\n    \"H\": parseHour24,\n    \"I\": parseHour24,\n    \"j\": parseDayOfYear,\n    \"L\": parseMilliseconds,\n    \"m\": parseMonthNumber,\n    \"M\": parseMinutes,\n    \"p\": parsePeriod,\n    \"q\": parseQuarter,\n    \"Q\": parseUnixTimestamp,\n    \"s\": parseUnixTimestampSeconds,\n    \"S\": parseSeconds,\n    \"u\": parseWeekdayNumberMonday,\n    \"U\": parseWeekNumberSunday,\n    \"V\": parseWeekNumberISO,\n    \"w\": parseWeekdayNumberSunday,\n    \"W\": parseWeekNumberMonday,\n    \"x\": parseLocaleDate,\n    \"X\": parseLocaleTime,\n    \"y\": parseYear,\n    \"Y\": parseFullYear,\n    \"Z\": parseZone,\n    \"%\": parseLiteralPercent\n  };\n\n  // These recursive directive definitions must be deferred.\n  formats.x = newFormat(locale_date, formats);\n  formats.X = newFormat(locale_time, formats);\n  formats.c = newFormat(locale_dateTime, formats);\n  utcFormats.x = newFormat(locale_date, utcFormats);\n  utcFormats.X = newFormat(locale_time, utcFormats);\n  utcFormats.c = newFormat(locale_dateTime, utcFormats);\n\n  function newFormat(specifier, formats) {\n    return function(date) {\n      var string = [],\n          i = -1,\n          j = 0,\n          n = specifier.length,\n          c,\n          pad,\n          format;\n\n      if (!(date instanceof Date)) date = new Date(+date);\n\n      while (++i < n) {\n        if (specifier.charCodeAt(i) === 37) {\n          string.push(specifier.slice(j, i));\n          if ((pad = pads[c = specifier.charAt(++i)]) != null) c = specifier.charAt(++i);\n          else pad = c === \"e\" ? \" \" : \"0\";\n          if (format = formats[c]) c = format(date, pad);\n          string.push(c);\n          j = i + 1;\n        }\n      }\n\n      string.push(specifier.slice(j, i));\n      return string.join(\"\");\n    };\n  }\n\n  function newParse(specifier, Z) {\n    return function(string) {\n      var d = newDate(1900, undefined, 1),\n          i = parseSpecifier(d, specifier, string += \"\", 0),\n          week, day;\n      if (i != string.length) return null;\n\n      // If a UNIX timestamp is specified, return it.\n      if (\"Q\" in d) return new Date(d.Q);\n      if (\"s\" in d) return new Date(d.s * 1000 + (\"L\" in d ? d.L : 0));\n\n      // If this is utcParse, never use the local timezone.\n      if (Z && !(\"Z\" in d)) d.Z = 0;\n\n      // The am-pm flag is 0 for AM, and 1 for PM.\n      if (\"p\" in d) d.H = d.H % 12 + d.p * 12;\n\n      // If the month was not specified, inherit from the quarter.\n      if (d.m === undefined) d.m = \"q\" in d ? d.q : 0;\n\n      // Convert day-of-week and week-of-year to day-of-year.\n      if (\"V\" in d) {\n        if (d.V < 1 || d.V > 53) return null;\n        if (!(\"w\" in d)) d.w = 1;\n        if (\"Z\" in d) {\n          week = utcDate(newDate(d.y, 0, 1)), day = week.getUTCDay();\n          week = day > 4 || day === 0 ? utcMonday.ceil(week) : utcMonday(week);\n          week = utcDay.offset(week, (d.V - 1) * 7);\n          d.y = week.getUTCFullYear();\n          d.m = week.getUTCMonth();\n          d.d = week.getUTCDate() + (d.w + 6) % 7;\n        } else {\n          week = localDate(newDate(d.y, 0, 1)), day = week.getDay();\n          week = day > 4 || day === 0 ? timeMonday.ceil(week) : timeMonday(week);\n          week = timeDay.offset(week, (d.V - 1) * 7);\n          d.y = week.getFullYear();\n          d.m = week.getMonth();\n          d.d = week.getDate() + (d.w + 6) % 7;\n        }\n      } else if (\"W\" in d || \"U\" in d) {\n        if (!(\"w\" in d)) d.w = \"u\" in d ? d.u % 7 : \"W\" in d ? 1 : 0;\n        day = \"Z\" in d ? utcDate(newDate(d.y, 0, 1)).getUTCDay() : localDate(newDate(d.y, 0, 1)).getDay();\n        d.m = 0;\n        d.d = \"W\" in d ? (d.w + 6) % 7 + d.W * 7 - (day + 5) % 7 : d.w + d.U * 7 - (day + 6) % 7;\n      }\n\n      // If a time zone is specified, all fields are interpreted as UTC and then\n      // offset according to the specified time zone.\n      if (\"Z\" in d) {\n        d.H += d.Z / 100 | 0;\n        d.M += d.Z % 100;\n        return utcDate(d);\n      }\n\n      // Otherwise, all fields are in local time.\n      return localDate(d);\n    };\n  }\n\n  function parseSpecifier(d, specifier, string, j) {\n    var i = 0,\n        n = specifier.length,\n        m = string.length,\n        c,\n        parse;\n\n    while (i < n) {\n      if (j >= m) return -1;\n      c = specifier.charCodeAt(i++);\n      if (c === 37) {\n        c = specifier.charAt(i++);\n        parse = parses[c in pads ? specifier.charAt(i++) : c];\n        if (!parse || ((j = parse(d, string, j)) < 0)) return -1;\n      } else if (c != string.charCodeAt(j++)) {\n        return -1;\n      }\n    }\n\n    return j;\n  }\n\n  function parsePeriod(d, string, i) {\n    var n = periodRe.exec(string.slice(i));\n    return n ? (d.p = periodLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n  }\n\n  function parseShortWeekday(d, string, i) {\n    var n = shortWeekdayRe.exec(string.slice(i));\n    return n ? (d.w = shortWeekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n  }\n\n  function parseWeekday(d, string, i) {\n    var n = weekdayRe.exec(string.slice(i));\n    return n ? (d.w = weekdayLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n  }\n\n  function parseShortMonth(d, string, i) {\n    var n = shortMonthRe.exec(string.slice(i));\n    return n ? (d.m = shortMonthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n  }\n\n  function parseMonth(d, string, i) {\n    var n = monthRe.exec(string.slice(i));\n    return n ? (d.m = monthLookup[n[0].toLowerCase()], i + n[0].length) : -1;\n  }\n\n  function parseLocaleDateTime(d, string, i) {\n    return parseSpecifier(d, locale_dateTime, string, i);\n  }\n\n  function parseLocaleDate(d, string, i) {\n    return parseSpecifier(d, locale_date, string, i);\n  }\n\n  function parseLocaleTime(d, string, i) {\n    return parseSpecifier(d, locale_time, string, i);\n  }\n\n  function formatShortWeekday(d) {\n    return locale_shortWeekdays[d.getDay()];\n  }\n\n  function formatWeekday(d) {\n    return locale_weekdays[d.getDay()];\n  }\n\n  function formatShortMonth(d) {\n    return locale_shortMonths[d.getMonth()];\n  }\n\n  function formatMonth(d) {\n    return locale_months[d.getMonth()];\n  }\n\n  function formatPeriod(d) {\n    return locale_periods[+(d.getHours() >= 12)];\n  }\n\n  function formatQuarter(d) {\n    return 1 + ~~(d.getMonth() / 3);\n  }\n\n  function formatUTCShortWeekday(d) {\n    return locale_shortWeekdays[d.getUTCDay()];\n  }\n\n  function formatUTCWeekday(d) {\n    return locale_weekdays[d.getUTCDay()];\n  }\n\n  function formatUTCShortMonth(d) {\n    return locale_shortMonths[d.getUTCMonth()];\n  }\n\n  function formatUTCMonth(d) {\n    return locale_months[d.getUTCMonth()];\n  }\n\n  function formatUTCPeriod(d) {\n    return locale_periods[+(d.getUTCHours() >= 12)];\n  }\n\n  function formatUTCQuarter(d) {\n    return 1 + ~~(d.getUTCMonth() / 3);\n  }\n\n  return {\n    format: function(specifier) {\n      var f = newFormat(specifier += \"\", formats);\n      f.toString = function() { return specifier; };\n      return f;\n    },\n    parse: function(specifier) {\n      var p = newParse(specifier += \"\", false);\n      p.toString = function() { return specifier; };\n      return p;\n    },\n    utcFormat: function(specifier) {\n      var f = newFormat(specifier += \"\", utcFormats);\n      f.toString = function() { return specifier; };\n      return f;\n    },\n    utcParse: function(specifier) {\n      var p = newParse(specifier += \"\", true);\n      p.toString = function() { return specifier; };\n      return p;\n    }\n  };\n}\n\nvar pads = {\"-\": \"\", \"_\": \" \", \"0\": \"0\"},\n    numberRe = /^\\s*\\d+/, // note: ignores next directive\n    percentRe = /^%/,\n    requoteRe = /[\\\\^$*+?|[\\]().{}]/g;\n\nfunction pad(value, fill, width) {\n  var sign = value < 0 ? \"-\" : \"\",\n      string = (sign ? -value : value) + \"\",\n      length = string.length;\n  return sign + (length < width ? new Array(width - length + 1).join(fill) + string : string);\n}\n\nfunction requote(s) {\n  return s.replace(requoteRe, \"\\\\$&\");\n}\n\nfunction formatRe(names) {\n  return new RegExp(\"^(?:\" + names.map(requote).join(\"|\") + \")\", \"i\");\n}\n\nfunction formatLookup(names) {\n  var map = {}, i = -1, n = names.length;\n  while (++i < n) map[names[i].toLowerCase()] = i;\n  return map;\n}\n\nfunction parseWeekdayNumberSunday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.w = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekdayNumberMonday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.u = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberSunday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.U = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberISO(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.V = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseWeekNumberMonday(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.W = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseFullYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 4));\n  return n ? (d.y = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.y = +n[0] + (+n[0] > 68 ? 1900 : 2000), i + n[0].length) : -1;\n}\n\nfunction parseZone(d, string, i) {\n  var n = /^(Z)|([+-]\\d\\d)(?::?(\\d\\d))?/.exec(string.slice(i, i + 6));\n  return n ? (d.Z = n[1] ? 0 : -(n[2] + (n[3] || \"00\")), i + n[0].length) : -1;\n}\n\nfunction parseQuarter(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 1));\n  return n ? (d.q = n[0] * 3 - 3, i + n[0].length) : -1;\n}\n\nfunction parseMonthNumber(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.m = n[0] - 1, i + n[0].length) : -1;\n}\n\nfunction parseDayOfMonth(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseDayOfYear(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 3));\n  return n ? (d.m = 0, d.d = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseHour24(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.H = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMinutes(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.M = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseSeconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 2));\n  return n ? (d.S = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMilliseconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 3));\n  return n ? (d.L = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseMicroseconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i, i + 6));\n  return n ? (d.L = Math.floor(n[0] / 1000), i + n[0].length) : -1;\n}\n\nfunction parseLiteralPercent(d, string, i) {\n  var n = percentRe.exec(string.slice(i, i + 1));\n  return n ? i + n[0].length : -1;\n}\n\nfunction parseUnixTimestamp(d, string, i) {\n  var n = numberRe.exec(string.slice(i));\n  return n ? (d.Q = +n[0], i + n[0].length) : -1;\n}\n\nfunction parseUnixTimestampSeconds(d, string, i) {\n  var n = numberRe.exec(string.slice(i));\n  return n ? (d.s = +n[0], i + n[0].length) : -1;\n}\n\nfunction formatDayOfMonth(d, p) {\n  return pad(d.getDate(), p, 2);\n}\n\nfunction formatHour24(d, p) {\n  return pad(d.getHours(), p, 2);\n}\n\nfunction formatHour12(d, p) {\n  return pad(d.getHours() % 12 || 12, p, 2);\n}\n\nfunction formatDayOfYear(d, p) {\n  return pad(1 + timeDay.count(timeYear(d), d), p, 3);\n}\n\nfunction formatMilliseconds(d, p) {\n  return pad(d.getMilliseconds(), p, 3);\n}\n\nfunction formatMicroseconds(d, p) {\n  return formatMilliseconds(d, p) + \"000\";\n}\n\nfunction formatMonthNumber(d, p) {\n  return pad(d.getMonth() + 1, p, 2);\n}\n\nfunction formatMinutes(d, p) {\n  return pad(d.getMinutes(), p, 2);\n}\n\nfunction formatSeconds(d, p) {\n  return pad(d.getSeconds(), p, 2);\n}\n\nfunction formatWeekdayNumberMonday(d) {\n  var day = d.getDay();\n  return day === 0 ? 7 : day;\n}\n\nfunction formatWeekNumberSunday(d, p) {\n  return pad(timeSunday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction dISO(d) {\n  var day = d.getDay();\n  return (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n}\n\nfunction formatWeekNumberISO(d, p) {\n  d = dISO(d);\n  return pad(timeThursday.count(timeYear(d), d) + (timeYear(d).getDay() === 4), p, 2);\n}\n\nfunction formatWeekdayNumberSunday(d) {\n  return d.getDay();\n}\n\nfunction formatWeekNumberMonday(d, p) {\n  return pad(timeMonday.count(timeYear(d) - 1, d), p, 2);\n}\n\nfunction formatYear(d, p) {\n  return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatYearISO(d, p) {\n  d = dISO(d);\n  return pad(d.getFullYear() % 100, p, 2);\n}\n\nfunction formatFullYear(d, p) {\n  return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatFullYearISO(d, p) {\n  var day = d.getDay();\n  d = (day >= 4 || day === 0) ? timeThursday(d) : timeThursday.ceil(d);\n  return pad(d.getFullYear() % 10000, p, 4);\n}\n\nfunction formatZone(d) {\n  var z = d.getTimezoneOffset();\n  return (z > 0 ? \"-\" : (z *= -1, \"+\"))\n      + pad(z / 60 | 0, \"0\", 2)\n      + pad(z % 60, \"0\", 2);\n}\n\nfunction formatUTCDayOfMonth(d, p) {\n  return pad(d.getUTCDate(), p, 2);\n}\n\nfunction formatUTCHour24(d, p) {\n  return pad(d.getUTCHours(), p, 2);\n}\n\nfunction formatUTCHour12(d, p) {\n  return pad(d.getUTCHours() % 12 || 12, p, 2);\n}\n\nfunction formatUTCDayOfYear(d, p) {\n  return pad(1 + utcDay.count(utcYear(d), d), p, 3);\n}\n\nfunction formatUTCMilliseconds(d, p) {\n  return pad(d.getUTCMilliseconds(), p, 3);\n}\n\nfunction formatUTCMicroseconds(d, p) {\n  return formatUTCMilliseconds(d, p) + \"000\";\n}\n\nfunction formatUTCMonthNumber(d, p) {\n  return pad(d.getUTCMonth() + 1, p, 2);\n}\n\nfunction formatUTCMinutes(d, p) {\n  return pad(d.getUTCMinutes(), p, 2);\n}\n\nfunction formatUTCSeconds(d, p) {\n  return pad(d.getUTCSeconds(), p, 2);\n}\n\nfunction formatUTCWeekdayNumberMonday(d) {\n  var dow = d.getUTCDay();\n  return dow === 0 ? 7 : dow;\n}\n\nfunction formatUTCWeekNumberSunday(d, p) {\n  return pad(utcSunday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction UTCdISO(d) {\n  var day = d.getUTCDay();\n  return (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n}\n\nfunction formatUTCWeekNumberISO(d, p) {\n  d = UTCdISO(d);\n  return pad(utcThursday.count(utcYear(d), d) + (utcYear(d).getUTCDay() === 4), p, 2);\n}\n\nfunction formatUTCWeekdayNumberSunday(d) {\n  return d.getUTCDay();\n}\n\nfunction formatUTCWeekNumberMonday(d, p) {\n  return pad(utcMonday.count(utcYear(d) - 1, d), p, 2);\n}\n\nfunction formatUTCYear(d, p) {\n  return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCYearISO(d, p) {\n  d = UTCdISO(d);\n  return pad(d.getUTCFullYear() % 100, p, 2);\n}\n\nfunction formatUTCFullYear(d, p) {\n  return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCFullYearISO(d, p) {\n  var day = d.getUTCDay();\n  d = (day >= 4 || day === 0) ? utcThursday(d) : utcThursday.ceil(d);\n  return pad(d.getUTCFullYear() % 10000, p, 4);\n}\n\nfunction formatUTCZone() {\n  return \"+0000\";\n}\n\nfunction formatLiteralPercent() {\n  return \"%\";\n}\n\nfunction formatUnixTimestamp(d) {\n  return +d;\n}\n\nfunction formatUnixTimestampSeconds(d) {\n  return Math.floor(+d / 1000);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-time-format/src/locale.js\n// module id = null\n// module chunks = ","import formatLocale from \"./locale.js\";\n\nvar locale;\nexport var timeFormat;\nexport var timeParse;\nexport var utcFormat;\nexport var utcParse;\n\ndefaultLocale({\n  dateTime: \"%x, %X\",\n  date: \"%-m/%-d/%Y\",\n  time: \"%-I:%M:%S %p\",\n  periods: [\"AM\", \"PM\"],\n  days: [\"Sunday\", \"Monday\", \"Tuesday\", \"Wednesday\", \"Thursday\", \"Friday\", \"Saturday\"],\n  shortDays: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n  months: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\", \"August\", \"September\", \"October\", \"November\", \"December\"],\n  shortMonths: [\"Jan\", \"Feb\", \"Mar\", \"Apr\", \"May\", \"Jun\", \"Jul\", \"Aug\", \"Sep\", \"Oct\", \"Nov\", \"Dec\"]\n});\n\nexport default function defaultLocale(definition) {\n  locale = formatLocale(definition);\n  timeFormat = locale.format;\n  timeParse = locale.parse;\n  utcFormat = locale.utcFormat;\n  utcParse = locale.utcParse;\n  return locale;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-time-format/src/defaultLocale.js\n// module id = null\n// module chunks = ","import {utcFormat} from \"./defaultLocale.js\";\n\nexport var isoSpecifier = \"%Y-%m-%dT%H:%M:%S.%LZ\";\n\nfunction formatIsoNative(date) {\n  return date.toISOString();\n}\n\nvar formatIso = Date.prototype.toISOString\n    ? formatIsoNative\n    : utcFormat(isoSpecifier);\n\nexport default formatIso;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-time-format/src/isoFormat.js\n// module id = null\n// module chunks = ","import {isoSpecifier} from \"./isoFormat.js\";\nimport {utcParse} from \"./defaultLocale.js\";\n\nfunction parseIsoNative(string) {\n  var date = new Date(string);\n  return isNaN(date) ? null : date;\n}\n\nvar parseIso = +new Date(\"2000-01-01T00:00:00.000Z\")\n    ? parseIsoNative\n    : utcParse(isoSpecifier);\n\nexport default parseIso;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-time-format/src/isoParse.js\n// module id = null\n// module chunks = ","export {default as timeFormatDefaultLocale, timeFormat, timeParse, utcFormat, utcParse} from \"./defaultLocale.js\";\nexport {default as timeFormatLocale} from \"./locale.js\";\nexport {default as isoFormat} from \"./isoFormat.js\";\nexport {default as isoParse} from \"./isoParse.js\";\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-time-format/src/index.js\n// module id = null\n// module chunks = ","import { IQuickviewLoadedEventArgs, QuickviewEvents } from '../../events/QuickviewEvents';\nimport { IOpenQuickviewEventArgs } from '../../events/ResultListEvents';\nimport { Assert } from '../../misc/Assert';\nimport { IQuery } from '../../rest/Query';\nimport { IQueryResult } from '../../rest/QueryResult';\nimport { IViewAsHtmlOptions } from '../../rest/SearchEndpointInterface';\nimport { $$ } from '../../utils/Dom';\nimport { Utils } from '../../utils/Utils';\nimport { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { Initialization } from '../Base/Initialization';\nimport { QuickviewDocumentIframe } from './QuickviewDocumentIframe';\nimport { QuickviewDocumentHeader } from './QuickviewDocumentHeader';\nimport { QuickviewDocumentWords } from './QuickviewDocumentWords';\nimport { each, keys } from 'underscore';\nimport { QuickviewDocumentWordButton } from './QuickviewDocumentWordButton';\nimport { QuickviewDocumentPreviewBar } from './QuickviewDocumentPreviewBar';\n\nexport const HIGHLIGHT_PREFIX = 'CoveoHighlight';\n\nexport interface IQuickviewDocumentOptions {\n  maximumDocumentSize?: number;\n}\n\n/**\n * The `QuickviewDocument` component normally exists within a [`Quickview`]{@link Quickview} component. The sole purpose\n * of this component is to add an `<iframe>` which loads the correct HTML version of the current item.\n *\n * The default [`contentTemplate`]{@link Quickview.options.contentTemplate} of the\n * `Quickview` component includes the `QuickviewDocument` component.\n *\n * This component is a result template component (see [Result Templates](https://docs.coveo.com/en/413/)).\n */\nexport class QuickviewDocument extends Component {\n  static ID = 'QuickviewDocument';\n\n  /**\n   * The options for the component\n   * @componentOptions\n   */\n  static options: IQuickviewDocumentOptions = {\n    /**\n     * Specifies the maximum preview size that the index should return.\n     *\n     * Default value is `0`, and the index returns the entire preview. Minimum value is `0`.\n     */\n    maximumDocumentSize: ComponentOptions.buildNumberOption({ defaultValue: 0, min: 0 })\n  };\n\n  private iframe: QuickviewDocumentIframe;\n  private header: QuickviewDocumentHeader;\n\n  /**\n   * Creates a new `QuickviewDocument` component.\n   * @param element The HTMLElement on which to instantiate the component.\n   * @param options The options for the `QuickviewDocument` component.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time).\n   * @param result The current result.\n   */\n  constructor(\n    public element: HTMLElement,\n    public options?: IQuickviewDocumentOptions,\n    bindings?: IComponentBindings,\n    public result?: IQueryResult\n  ) {\n    super(element, QuickviewDocument.ID, bindings);\n\n    this.options = ComponentOptions.initComponentOptions(element, QuickviewDocument, options);\n\n    this.result = result || this.resolveResult();\n    Assert.exists(this.result);\n  }\n\n  public createDom() {\n    const container = $$('div', {\n      className: 'coveo-quickview-document'\n    });\n    this.element.appendChild(container.el);\n\n    this.header = new QuickviewDocumentHeader();\n    this.iframe = new QuickviewDocumentIframe();\n\n    container.append(this.header.el);\n    container.append(this.iframe.el);\n  }\n\n  public async open() {\n    this.ensureDom();\n\n    const beforeLoad = new Date().getTime();\n    const termsToHighlight = this.initialTermsToHighlight;\n\n    this.triggerOpenQuickViewEvent({ termsToHighlight });\n\n    const termsWereModified = this.wereTermsToHighlightModified(termsToHighlight);\n\n    if (termsWereModified) {\n      this.handleTermsToHighlight(termsToHighlight, this.query);\n    }\n\n    try {\n      const documentHTML = await this.queryController.getEndpoint().getDocumentHtml(this.result.uniqueId, {\n        queryObject: this.query,\n        requestedOutputSize: this.options.maximumDocumentSize\n      } as IViewAsHtmlOptions);\n\n      await this.iframe.render(documentHTML, this.result.title);\n\n      const documentWords = new QuickviewDocumentWords(this.iframe, this.result);\n      const previewBar = new QuickviewDocumentPreviewBar(this.iframe, documentWords);\n\n      each(documentWords.words, word => {\n        const button = new QuickviewDocumentWordButton(word, previewBar, this.iframe);\n        this.header.addWord(button);\n      });\n\n      const afterLoad = new Date().getTime();\n\n      this.triggerQuickviewLoaded(afterLoad - beforeLoad);\n    } catch (error) {\n      await this.iframe.renderError(error);\n      const afterLoad = new Date().getTime();\n\n      this.triggerQuickviewLoaded(afterLoad - beforeLoad);\n    }\n  }\n\n  private get initialTermsToHighlight() {\n    return keys(this.result.termsToHighlight);\n  }\n\n  private triggerOpenQuickViewEvent(args: IOpenQuickviewEventArgs) {\n    $$(this.root).trigger(QuickviewEvents.openQuickview, args);\n  }\n\n  private get query() {\n    return { ...this.queryController.getLastQuery() };\n  }\n\n  private triggerQuickviewLoaded(duration: number) {\n    $$(this.element).trigger(QuickviewEvents.quickviewLoaded, {\n      duration\n    } as IQuickviewLoadedEventArgs);\n  }\n\n  private handleTermsToHighlight(termsToHighlight: string[], queryObject: IQuery) {\n    for (const term in this.result.termsToHighlight) {\n      delete this.result.termsToHighlight[term];\n    }\n    let query = '';\n    each(termsToHighlight, term => {\n      query += term + ' ';\n      this.result.termsToHighlight[term] = [term];\n    });\n    query = query.substring(0, query.length - 1);\n    queryObject.q = query;\n  }\n\n  private wereTermsToHighlightModified(termsToHighlight: string[]) {\n    return !Utils.arrayEqual(termsToHighlight, this.initialTermsToHighlight);\n  }\n}\n\nInitialization.registerAutoCreateComponent(QuickviewDocument);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Quickview/QuickviewDocument.ts","import { Component } from '../Base/Component';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { QueryEvents, IBuildingQueryEventArgs } from '../../events/QueryEvents';\nimport { AdvancedSearchEvents } from '../../events/AdvancedSearchEvents';\nimport { SettingsEvents } from '../../events/SettingsEvents';\nimport { ISettingsPopulateMenuArgs } from '../Settings/Settings';\nimport { Initialization } from '../Base/Initialization';\nimport { l } from '../../strings/Strings';\nimport { $$, Dom } from '../../utils/Dom';\nimport {\n  IAdvancedSearchInput,\n  IAdvancedSearchPrebuiltInput,\n  IAdvancedSearchSection,\n  IExternalAdvancedSearchSection\n} from './AdvancedSearchInput';\nimport { AdvancedSearchInputFactory } from './AdvancedSearchInputFactory';\nimport { IQueryOptions } from '../../controllers/QueryController';\nimport { IAnalyticsNoMeta, analyticsActionCauseList } from '../Analytics/AnalyticsActionListMeta';\nimport { QuerySummaryEvents } from '../../events/QuerySummaryEvents';\nimport * as _ from 'underscore';\nimport { exportGlobally } from '../../GlobalExports';\nimport 'styling/_AdvancedSearch';\nimport { NumericSpinner } from '../FormWidgets/NumericSpinner';\nimport { DatePicker } from '../FormWidgets/DatePicker';\nimport { Dropdown } from '../FormWidgets/Dropdown';\nimport { TextInput } from '../FormWidgets/TextInput';\nimport { RadioButton } from '../FormWidgets/RadioButton';\nimport { ModalBox as ModalBoxModule } from '../../ExternalModulesShim';\nimport { BreadcrumbEvents, IPopulateBreadcrumbEventArgs, IClearBreadcrumbEventArgs } from '../../events/BreadcrumbEvents';\nimport { SVGIcons } from '../../utils/SVGIcons';\nimport { AccessibleButton } from '../../utils/AccessibleButton';\nimport { getHeadingTag } from '../../utils/AccessibilityUtils';\n\nexport interface IAdvancedSearchOptions {\n  includeKeywords?: boolean;\n  includeDate?: boolean;\n  includeDocument?: boolean;\n}\n\n/**\n * The `AdvancedSearch` component is meant to render a section in the [`Settings`]{@link Settings} menu to allow the end\n * user to easily create complex queries to send to the index.\n *\n * **Note:**\n * > You can write custom code to add new sections in the **Advanced Search** modal box generated by this component by\n * > attaching a handler to the [`buildingAdvancedSearch`]{@link AdvancedSearchEvents.buildingAdvancedSearch} event.\n *\n * @availablesince [October 2016 Release (v1.1550.5)](https://docs.coveo.com/en/309/#october-2016-release-v115505)\n */\nexport class AdvancedSearch extends Component {\n  static ID = 'AdvancedSearch';\n\n  static doExport = () => {\n    exportGlobally({\n      AdvancedSearch: AdvancedSearch,\n      NumericSpinner: NumericSpinner,\n      DatePicker: DatePicker,\n      Dropdown: Dropdown,\n      TextInput: TextInput,\n      RadioButton: RadioButton\n    });\n  };\n\n  /**\n   * @componentOptions\n   */\n  static options: IAdvancedSearchOptions = {\n    /**\n     * Specifies whether to include the built-in **Keywords** section.\n     *\n     * Default value is `true`.\n     */\n    includeKeywords: ComponentOptions.buildBooleanOption({ defaultValue: true }),\n\n    /**\n     * Specifies whether to include the built-in **Date** section.\n     *\n     * Default value is `true`.\n     */\n    includeDate: ComponentOptions.buildBooleanOption({ defaultValue: true }),\n\n    /**\n     * Specifies whether to include the built-in **Document** section.\n     *\n     * Default value is `true`.\n     */\n    includeDocument: ComponentOptions.buildBooleanOption({ defaultValue: true })\n  };\n\n  public inputs: IAdvancedSearchInput[] = [];\n  public content: Dom;\n\n  private inputFactory = new AdvancedSearchInputFactory(this.queryController.getEndpoint(), this.root);\n  private externalSections: IExternalAdvancedSearchSection[] = [];\n  private modalbox: Coveo.ModalBox.ModalBox;\n  private needToPopulateBreadcrumb = false;\n  // Used as an internal flag to determine if the component should execute the advanced search event\n  // This flag is typically set to false when the breadcrumb is resetting, for example.\n  // This is because the query will already be executed anyway from external code.\n  // Without this, we might get analytics event being sent multiple time, or multiple query being triggered (which gets cancelled).\n  private needToExecuteAdvancedSearch = true;\n  /**\n   * Creates a new `AdvancedSearch` component.\n   *\n   * Triggers the [`buildingAdvancedSearch`]{@link AdvancedSearchEvents.buildingAdvancedSearch} event.\n   * @param element The HTMLElement on which to instantiate the component.\n   * @param options The options for the `AdvancedSearch` component.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time).\n   */\n  constructor(\n    public element: HTMLElement,\n    public options?: IAdvancedSearchOptions,\n    bindings?: IComponentBindings,\n    private ModalBox = ModalBoxModule\n  ) {\n    super(element, AdvancedSearch.ID, bindings);\n    this.options = ComponentOptions.initComponentOptions(element, AdvancedSearch, options);\n    this.bindEvents();\n    this.buildContent();\n  }\n\n  /**\n   * Launches the advanced search query.\n   * If query returns successfully, also logs an `advancedSearch` event in the usage analytics (see\n   * {@link Analytics.logSearchEvent}).\n   */\n  public executeAdvancedSearch() {\n    if (this.needToExecuteAdvancedSearch) {\n      this.usageAnalytics.logSearchEvent<IAnalyticsNoMeta>(analyticsActionCauseList.advancedSearch, {});\n      this.queryController.executeQuery({\n        closeModalBox: false\n      });\n    }\n  }\n\n  /**\n   * Resets the state of all form inputs inside the `AdvancedSearch` component.\n   */\n  public reset() {\n    _.each(this.inputs, input => {\n      input.reset();\n    });\n  }\n\n  /**\n   * Opens the `AdvancedSearch` modal box.\n   */\n  public open() {\n    if (this.modalbox == null) {\n      this.modalbox = this.ModalBox.open(this.content.el, {\n        sizeMod: 'big',\n        title: l('AdvancedSearch'),\n        className: 'coveo-advanced-search-modal',\n        body: this.searchInterface.options.modalContainer\n      });\n    }\n  }\n\n  /**\n   * Closes the `AdvancedSearch` modal box.\n   */\n  public close() {\n    if (this.modalbox != null) {\n      this.modalbox.close();\n      this.modalbox = null;\n    }\n  }\n\n  private handlePopulateBreadcrumb(args: IPopulateBreadcrumbEventArgs) {\n    if (this.needToPopulateBreadcrumb) {\n      const { container, title, clear } = this.buildBreadcrumbElements(args.headingLevel);\n\n      container.append(title.el);\n      container.append(clear.el);\n\n      args.breadcrumbs.push({\n        element: container.el\n      });\n    }\n  }\n\n  private buildBreadcrumbElements(headingLevel?: number) {\n    return {\n      container: this.buildBreadcrumbContainer(),\n      title: this.buildBreadcrumbTitle(headingLevel),\n      clear: this.buildBreacrumbClear()\n    };\n  }\n\n  private buildBreadcrumbContainer() {\n    return $$('div', {\n      className: 'coveo-advanced-search-breadcrumb'\n    });\n  }\n\n  private buildBreadcrumbTitle(headingLevel?: number) {\n    return $$(\n      getHeadingTag(headingLevel, 'span'),\n      {\n        className: 'coveo-advanced-search-breadcrumb-title'\n      },\n      `${l('FiltersInAdvancedSearch')}:`\n    );\n  }\n\n  private buildBreacrumbClear() {\n    const clear = $$(\n      'span',\n      {\n        className: 'coveo-advanced-search-breadcrumb-clear'\n      },\n      SVGIcons.icons.mainClear\n    );\n\n    const selectAction = () => {\n      this.handleClearBreadcrumb();\n      this.usageAnalytics.logSearchEvent<IAnalyticsNoMeta>(analyticsActionCauseList.breadcrumbAdvancedSearch, {});\n      this.queryController.executeQuery();\n    };\n\n    new AccessibleButton()\n      .withElement(clear)\n      .withLabel(l('Clear'))\n      .withSelectAction(() => selectAction())\n      .build();\n\n    return clear;\n  }\n\n  private handleClearBreadcrumb() {\n    if (this.needToPopulateBreadcrumb) {\n      this.needToExecuteAdvancedSearch = false;\n      this.reset();\n      this.needToExecuteAdvancedSearch = true;\n    }\n  }\n\n  private handleQuerySummaryCancelLastAction() {\n    this.needToExecuteAdvancedSearch = false;\n    this.reset();\n    this.needToExecuteAdvancedSearch = true;\n  }\n\n  private handlePopulateMenu(args: ISettingsPopulateMenuArgs) {\n    args.menuData.push({\n      text: l('AdvancedSearch'),\n      className: 'coveo-advanced-search',\n      onOpen: () => this.open(),\n      onClose: () => this.close(),\n      svgIcon: SVGIcons.icons.dropdownPreferences,\n      svgIconClassName: 'coveo-advanced-search-svg'\n    });\n  }\n\n  private handleBuildingQuery(data: IBuildingQueryEventArgs) {\n    const originalQuery = data.queryBuilder.build();\n    _.each(this.externalSections, (section: IExternalAdvancedSearchSection) => {\n      if (section.updateQuery) {\n        section.updateQuery(<any>section.inputs, data.queryBuilder);\n      }\n    });\n    _.each(this.inputs, input => {\n      if (input.updateQuery) {\n        input.updateQuery(data.queryBuilder);\n      }\n    });\n    const modifiedQuery = data.queryBuilder.build();\n    this.needToPopulateBreadcrumb = modifiedQuery.aq != originalQuery.aq;\n  }\n\n  private buildContent() {\n    const component = $$('div');\n    const inputSections: IAdvancedSearchSection[] = [];\n    if (this.options.includeKeywords) {\n      inputSections.push(this.getKeywordsSection());\n    }\n    if (this.options.includeDate) {\n      inputSections.push(this.getDateSection());\n    }\n    if (this.options.includeDocument) {\n      inputSections.push(this.getDocumentSection());\n    }\n\n    this.externalSections = [];\n    $$(this.root).trigger(AdvancedSearchEvents.buildingAdvancedSearch, {\n      sections: this.externalSections,\n      executeQuery: (options: IQueryOptions) => {\n        options = _.extend({}, options, { closeModalBox: false });\n        return this.queryController.executeQuery(options);\n      }\n    });\n\n    _.each(this.externalSections, (section: IExternalAdvancedSearchSection) => {\n      component.append(this.buildExternalSection(section));\n    });\n\n    _.each(inputSections, section => {\n      component.append(this.buildInternalSection(section));\n    });\n\n    this.content = component;\n  }\n\n  private getKeywordsSection(): IAdvancedSearchSection {\n    const sectionName = l('Keywords');\n    const keywordsInputs = [];\n    keywordsInputs.push(this.inputFactory.createAllKeywordsInput());\n    keywordsInputs.push(this.inputFactory.createExactKeywordsInput());\n    keywordsInputs.push(this.inputFactory.createAnyKeywordsInput());\n    keywordsInputs.push(this.inputFactory.createNoneKeywordsInput());\n    return { name: sectionName, inputs: keywordsInputs };\n  }\n\n  private getDateSection(): IAdvancedSearchSection {\n    const sectionName = l('Date');\n    const dateInputs = [];\n    dateInputs.push(this.inputFactory.createAnytimeDateInput());\n    dateInputs.push(this.inputFactory.createInTheLastDateInput());\n    dateInputs.push(this.inputFactory.createBetweenDateInput());\n    return { name: sectionName, inputs: dateInputs };\n  }\n\n  private getDocumentSection(): IAdvancedSearchSection {\n    const sectionName = l('Document');\n    const documentInputs = [];\n    documentInputs.push(this.inputFactory.createSimpleFieldInput(l('FileType'), '@filetype'));\n    documentInputs.push(this.inputFactory.createSimpleFieldInput(l('Language'), '@language'));\n    documentInputs.push(this.inputFactory.createSizeInput());\n    documentInputs.push(this.inputFactory.createAdvancedFieldInput(l('Title'), '@title'));\n    documentInputs.push(this.inputFactory.createAdvancedFieldInput(l('Author'), '@author'));\n    return { name: sectionName, inputs: documentInputs };\n  }\n\n  private buildExternalSection(section: IExternalAdvancedSearchSection): HTMLElement {\n    const { el } = this.buildSectionTitle(section);\n    this.inputs = _.union(this.inputs, <any>section.inputs);\n    el.appendChild(section.content);\n    return el;\n  }\n\n  private buildInternalSection(section: IAdvancedSearchSection): HTMLElement {\n    const { el, id } = this.buildSectionTitle(section);\n    const sectionInputs = [];\n    _.each(section.inputs, input => {\n      sectionInputs.push(this.buildDefaultInput(input));\n    });\n    this.inputs = _.union(this.inputs, sectionInputs);\n    _.each(sectionInputs, input => {\n      const built: HTMLElement = input.build();\n      const inputElement = built.querySelector('input');\n      if (inputElement) {\n        inputElement.setAttribute('aria-labelledby', id);\n      }\n\n      $$(el).append(built);\n    });\n\n    return el;\n  }\n\n  private buildSectionTitle(section: IAdvancedSearchSection) {\n    const sectionHTML = $$('div', { className: 'coveo-advanced-search-section' });\n    const title = $$('div', { className: 'coveo-advanced-search-section-title' });\n\n    title.text(section.name);\n    const id = `coveo-advanced-search-section-${section.name}`;\n    title.el.id = id;\n    sectionHTML.append(title.el);\n    return {\n      el: sectionHTML.el,\n      id\n    };\n  }\n\n  private buildDefaultInput(input: IAdvancedSearchInput | IAdvancedSearchPrebuiltInput): IAdvancedSearchInput {\n    if (this.isPrebuiltInput(input)) {\n      return this.inputFactory.create(input.name, input.parameters);\n    } else {\n      return input;\n    }\n  }\n\n  private isPrebuiltInput(input: IAdvancedSearchInput | IAdvancedSearchPrebuiltInput): input is IAdvancedSearchPrebuiltInput {\n    return (<IAdvancedSearchPrebuiltInput>input).name !== undefined;\n  }\n\n  private bindEvents() {\n    this.bind.onRootElement(BreadcrumbEvents.populateBreadcrumb, (args: IPopulateBreadcrumbEventArgs) =>\n      this.handlePopulateBreadcrumb(args)\n    );\n    this.bind.onRootElement(BreadcrumbEvents.clearBreadcrumb, (args: IClearBreadcrumbEventArgs) => this.handleClearBreadcrumb());\n    this.bind.onRootElement(SettingsEvents.settingsPopulateMenu, (args: ISettingsPopulateMenuArgs) => this.handlePopulateMenu(args));\n    this.bind.onRootElement(QueryEvents.buildingQuery, (data: IBuildingQueryEventArgs) => this.handleBuildingQuery(data));\n    this.bind.onRootElement(AdvancedSearchEvents.executeAdvancedSearch, () => this.executeAdvancedSearch());\n    this.bind.onRootElement(QuerySummaryEvents.cancelLastAction, () => this.handleQuerySummaryCancelLastAction());\n  }\n}\n\nInitialization.registerAutoCreateComponent(AdvancedSearch);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/AdvancedSearch/AdvancedSearch.ts","import { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { IFieldOption } from '../Base/IComponentOptions';\nimport { QueryEvents, IBuildingQueryEventArgs, IQuerySuccessEventArgs } from '../../events/QueryEvents';\nimport { IGroupByRequest } from '../../rest/GroupByRequest';\nimport { Initialization } from '../Base/Initialization';\nimport { $$ } from '../../utils/Dom';\nimport * as Globalize from 'globalize';\nimport * as _ from 'underscore';\nimport { exportGlobally } from '../../GlobalExports';\n\nexport interface IAggregateOptions {\n  field: IFieldOption;\n  operation?: string;\n  format?: string;\n}\n\n/**\n * The Aggregate component allows to display the result on an aggregate operation on the index.\n *\n * It hooks itself to the query to add a new {@link IGroupByRequest}, then displays the result.\n */\nexport class Aggregate extends Component {\n  static ID = 'Aggregate';\n\n  static doExport() {\n    exportGlobally({\n      Aggregate: Aggregate\n    });\n  }\n\n  /**\n   * The options for the component\n   * @componentOptions\n   */\n  static options: IAggregateOptions = {\n    /**\n     * Specifies the field on which to do the aggregate operation. This parameter is mandatory.\n     */\n    field: ComponentOptions.buildFieldOption({ required: true }),\n\n    /**\n     * Specifies the aggregate operation to perform.\n     *\n     * The possible values are:\n     * - `sum` - Computes the sum of the computed field values.\n     * - `average` - Computes the average of the computed field values.\n     * - `minimum` - Finds the minimum value of the computed field values.\n     * - `maximum` - Finds the maximum value of the computed field values.\n     *\n     * Default value is `sum`.\n     */\n    operation: ComponentOptions.buildStringOption({ defaultValue: 'sum' }),\n\n    /**\n     * Specifies how to format the value.\n     *\n     * The available formats are defined in the Globalize library (see\n     * [Globalize](https://github.com/klaaspieter/jquery-global#globalizeformat-value-format-culture-).\n     *\n     * The most commonly used formats are:\n     * - `c0` - Formats the value as a currency.\n     * - `n0` - Formats the value as an integer.\n     * - `n2` - Formats the value as a floating point with 2 decimal digits.\n     *\n     * Default value is `c0`.\n     */\n    format: ComponentOptions.buildStringOption({ defaultValue: 'c0' })\n  };\n\n  private index: number;\n\n  /**\n   * Creates a new Aggregate component.\n   * @param element The HTMLElement on which to instantiate the component.\n   * @param options The options for the Aggregate component.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time).\n   */\n  constructor(public element: HTMLElement, public options?: IAggregateOptions, bindings?: IComponentBindings) {\n    super(element, Aggregate.ID, bindings);\n\n    this.options = ComponentOptions.initComponentOptions(element, Aggregate, options);\n\n    this.bind.onRootElement(QueryEvents.buildingQuery, (args: IBuildingQueryEventArgs) => this.handleBuildingQuery(args));\n    this.bind.onRootElement(QueryEvents.querySuccess, (args: IQuerySuccessEventArgs) => this.handleQuerySuccess(args));\n    $$(this.element).hide();\n  }\n\n  private handleBuildingQuery(args: IBuildingQueryEventArgs) {\n    var request: IGroupByRequest = {\n      field: <string>this.options.field,\n      maximumNumberOfValues: 0,\n      computedFields: [\n        {\n          field: <string>this.options.field,\n          operation: this.options.operation\n        }\n      ]\n    };\n\n    this.index = args.queryBuilder.groupByRequests.length;\n    args.queryBuilder.groupByRequests.push(request);\n  }\n\n  private handleQuerySuccess(args: IQuerySuccessEventArgs) {\n    if (_.isNumber(this.index) && args.results.groupByResults.length != 0) {\n      var gbr = args.results.groupByResults[this.index];\n      var aggregate = gbr.globalComputedFieldResults[0];\n      $$(this.element).text(Globalize.format(aggregate, this.options.format));\n      $$(this.element).show();\n    } else {\n      $$(this.element).hide();\n    }\n  }\n}\n\nInitialization.registerAutoCreateComponent(Aggregate);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Aggregate/Aggregate.ts","import * as _ from 'underscore';\nimport { IPopulateOmniboxEventArgs, OmniboxEvents } from '../../events/OmniboxEvents';\nimport { QueryEvents } from '../../events/QueryEvents';\nimport { exportGlobally } from '../../GlobalExports';\nimport { Assert } from '../../misc/Assert';\nimport { QueryStateModel } from '../../models/QueryStateModel';\nimport { IStringMap } from '../../rest/GenericParam';\nimport { l } from '../../strings/Strings';\nimport { AccessibleButton } from '../../utils/AccessibleButton';\nimport { $$ } from '../../utils/Dom';\nimport { analyticsActionCauseList, IAnalyticsTopSuggestionMeta } from '../Analytics/AnalyticsActionListMeta';\nimport { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { Initialization } from '../Base/Initialization';\nimport { ISuggestionForOmniboxOptions, ISuggestionForOmniboxTemplate, SuggestionForOmnibox } from '../Misc/SuggestionForOmnibox';\nimport { StandaloneSearchInterface } from '../SearchInterface/SearchInterface';\n\nexport interface IAnalyticsSuggestionsOptions extends ISuggestionForOmniboxOptions {}\n\n/**\n * The AnalyticsSuggestion component provides query suggestions based on the queries that a Coveo Analytics service most\n * commonly logs (see [`topQueries`](https://platform.cloud.coveo.com/docs?urls.primaryName=Usage%20Analytics%20Read#/Statistics%20API%20-%20Version%2015/get__v15_stats_topQueries)).\n *\n * This component orders possible query suggestions by their respective number of successful item views, thus\n * prioritizing the most relevant query suggestions. Consequently, when better options are available, this component\n * does not suggest queries resulting in no clicks from users or requiring refinements.\n *\n * The query suggestions appear in the {@link Omnibox} Component. The AnalyticsSuggestion component strongly\n * relates to the {@link Analytics} component. While a user is typing in a query box, the AnalyticsSuggestion component\n * allows them to see and select the most commonly used and relevant queries.\n *\n * @deprecated This component is exposed for legacy reasons. If possible, you should avoid using this component.\n * Instead, you should use the [`Omnibox`]{@link Omnibox}\n * [`enableQuerySuggestAddon`]{@link Omnibox.options.enableQuerySuggestAddon} option.\n */\nexport class AnalyticsSuggestions extends Component {\n  static ID = 'AnalyticsSuggestions';\n\n  static doExport() {\n    exportGlobally({\n      AnalyticsSuggestions: AnalyticsSuggestions\n    });\n  }\n\n  /**\n   * The options for the component\n   * @componentOptions\n   */\n  static options: IAnalyticsSuggestionsOptions = {\n    /**\n     * Specifies the z-index position at which the query suggestions render themselves in the {@link Omnibox}\n     * component. Higher values are placed first.\n     *\n     * Default value is `52` and minimum value is `0`.\n     */\n    omniboxZIndex: ComponentOptions.buildNumberOption({ defaultValue: 52, min: 0 }),\n\n    /**\n     * Specifies the title of the query suggestions group in the {@link Omnibox} component. This option is not available\n     * when using the default Lightning Friendly Theme.\n     *\n     * Default value is the localized string for `\"Suggested Queries\"`.\n     */\n    headerTitle: ComponentOptions.buildLocalizedStringOption({\n      localizedString: () => l('SuggestedQueries')\n    }),\n\n    /**\n     * Specifies the number of query suggestions to request and display in the {@link Omnibox} component.\n     *\n     * Default value is `5` and minimum value is `1`.\n     */\n    numberOfSuggestions: ComponentOptions.buildNumberOption({ defaultValue: 5, min: 1 })\n  };\n\n  private suggestionForOmnibox: SuggestionForOmnibox;\n  private partialQueries: string[] = [];\n  private lastSuggestions: string[] = [];\n  private resultsToBuildWith = [];\n  private currentlyDisplayedSuggestions: { [suggestion: string]: { element: HTMLElement; pos: number } };\n\n  /**\n   * Creates a new AnalyticsSuggestions component.\n   *\n   * Also binds event handlers so that when a user selects a suggestion, an `omniboxFromLink` usage analytics event is\n   * logged if the suggestion comes from a standalone search box, or an `omniboxAnalytics` usage analytics\n   * event is logged otherwise.\n   *\n   * @param element The HTMLElement on which to instantiate the component.\n   * @param options The options for the AnalyticsSuggestions component.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time).\n   */\n  constructor(element: HTMLElement, public options: IAnalyticsSuggestionsOptions, bindings?: IComponentBindings) {\n    super(element, AnalyticsSuggestions.ID, bindings);\n\n    if (this.options && 'omniboxSuggestionOptions' in this.options) {\n      this.options = _.extend(this.options, this.options['omniboxSuggestionOptions']);\n    }\n\n    this.options = ComponentOptions.initComponentOptions(element, AnalyticsSuggestions, this.options);\n\n    const rowTemplate = (toRender: IStringMap<any>) => {\n      const rowElement = $$('div', {\n        className: 'magic-box-suggestion coveo-omnibox-selectable coveo-top-analytics-suggestion-row'\n      });\n\n      new AccessibleButton()\n        .withElement(rowElement)\n        .withLabel(toRender.rawValue)\n        .build();\n\n      if (toRender['data']) {\n        rowElement.el.innerHTML = toRender['data'];\n      }\n      return rowElement.el.outerHTML;\n    };\n\n    this.options.onSelect = this.options.onSelect || this.onRowSelection;\n\n    const suggestionStructure: ISuggestionForOmniboxTemplate = {\n      row: rowTemplate\n    };\n\n    this.suggestionForOmnibox = new SuggestionForOmnibox(\n      suggestionStructure,\n      (value: string, args: IPopulateOmniboxEventArgs) => {\n        this.options.onSelect.call(this, value, args);\n      },\n      (value: string, args: IPopulateOmniboxEventArgs) => {\n        this.onRowTab.call(this, value, args);\n      }\n    );\n    this.bind.onRootElement(OmniboxEvents.populateOmnibox, (args: IPopulateOmniboxEventArgs) => this.handlePopulateOmnibox(args));\n    this.bind.onRootElement(QueryEvents.querySuccess, () => (this.partialQueries = []));\n  }\n\n  /**\n   * Selects a currently displayed query suggestion. This implies that at least one suggestion must have been returned\n   * at least once. The suggestion parameter can either be a number (0-based index position of the query suggestion to\n   * select) or a string that matches the suggestion.\n   *\n   * @param suggestion\n   */\n  public selectSuggestion(suggestion: number);\n  public selectSuggestion(suggestion: string);\n  public selectSuggestion(suggestion: any) {\n    if (this.currentlyDisplayedSuggestions) {\n      if (isNaN(suggestion)) {\n        if (this.currentlyDisplayedSuggestions[suggestion]) {\n          $$(this.currentlyDisplayedSuggestions[suggestion].element).trigger('click');\n        }\n      } else {\n        const currentlySuggested = <{ element: HTMLElement; pos: number }>_.findWhere(<any>this.currentlyDisplayedSuggestions, {\n          pos: suggestion\n        });\n        if (currentlySuggested) {\n          $$(currentlySuggested.element).trigger('click');\n        }\n      }\n    }\n  }\n\n  private handlePopulateOmnibox(args: IPopulateOmniboxEventArgs) {\n    Assert.exists(args);\n\n    var promise = new Promise((resolve, reject) => {\n      const searchPromise = this.usageAnalytics.getTopQueries({\n        pageSize: this.options.numberOfSuggestions,\n        queryText: args.completeQueryExpression.word\n      });\n\n      searchPromise.then((results: string[]) => {\n        this.resultsToBuildWith = _.map(results, result => {\n          return {\n            value: result\n          };\n        });\n        this.lastSuggestions = results;\n        if (!_.isEmpty(this.resultsToBuildWith) && args.completeQueryExpression.word != '') {\n          this.partialQueries.push(args.completeQueryExpression.word);\n        }\n        const element = this.suggestionForOmnibox.buildOmniboxElement(this.resultsToBuildWith, args);\n        this.currentlyDisplayedSuggestions = {};\n        if (element) {\n          _.map($$(element).findAll('.coveo-omnibox-selectable'), (selectable, i?) => {\n            this.currentlyDisplayedSuggestions[$$(selectable).text()] = {\n              element: selectable,\n              pos: i\n            };\n          });\n        }\n        resolve({\n          element: element,\n          zIndex: this.options.omniboxZIndex\n        });\n      });\n      searchPromise.catch(() => {\n        resolve({\n          element: undefined\n        });\n      });\n    });\n\n    args.rows.push({ deferred: promise });\n  }\n\n  private onRowSelection(value: string, args: IPopulateOmniboxEventArgs) {\n    args.clear();\n    args.closeOmnibox();\n    this.queryStateModel.set(QueryStateModel.attributesEnum.q, value);\n    this.usageAnalytics.logSearchEvent<IAnalyticsTopSuggestionMeta>(this.getOmniboxAnalyticsEventCause(), {\n      partialQueries: this.cleanCustomData(this.partialQueries),\n      suggestionRanking: _.indexOf(_.pluck(this.resultsToBuildWith, 'value'), value),\n      suggestions: this.cleanCustomData(this.lastSuggestions),\n      partialQuery: args.completeQueryExpression.word\n    });\n    this.queryController.executeQuery();\n  }\n\n  private onRowTab(value: string, args: IPopulateOmniboxEventArgs) {\n    args.clear();\n    args.closeOmnibox();\n    this.queryStateModel.set(QueryStateModel.attributesEnum.q, `${value}`);\n    this.usageAnalytics.logCustomEvent<IAnalyticsTopSuggestionMeta>(\n      this.getOmniboxAnalyticsEventCause(),\n      {\n        partialQueries: this.cleanCustomData(this.partialQueries),\n        suggestionRanking: _.indexOf(_.pluck(this.resultsToBuildWith, 'value'), value),\n        suggestions: this.cleanCustomData(this.lastSuggestions),\n        partialQuery: args.completeQueryExpression.word\n      },\n      this.element\n    );\n  }\n\n  private cleanCustomData(toClean: string[], rejectLength = 256) {\n    // Filter out only consecutive values that are the identical\n    toClean = _.compact(\n      _.filter(toClean, (partial: string, pos?: number, array?: string[]) => {\n        return pos === 0 || partial !== array[pos - 1];\n      })\n    );\n\n    // Custom dimensions cannot be an array in analytics service: Send a string joined by ; instead.\n    // Need to replace ;\n    toClean = _.map(toClean, partial => {\n      return partial.replace(/;/g, '');\n    });\n\n    // Reduce right to get the last X words that adds to less then rejectLength\n    const reducedToRejectLengthOrLess = [];\n    _.reduceRight(\n      toClean,\n      (memo: number, partial: string) => {\n        const totalSoFar = memo + partial.length;\n        if (totalSoFar <= rejectLength) {\n          reducedToRejectLengthOrLess.push(partial);\n        }\n        return totalSoFar;\n      },\n      0\n    );\n    toClean = reducedToRejectLengthOrLess.reverse();\n    const ret = toClean.join(';');\n\n    // analytics service can store max 256 char in a custom event\n    // if we're over that, call cleanup again with an arbitrary 10 less char accepted\n    if (ret.length >= 256) {\n      return this.cleanCustomData(toClean, rejectLength - 10);\n    }\n\n    return toClean.join(';');\n  }\n\n  private getOmniboxAnalyticsEventCause() {\n    if (this.searchInterface instanceof StandaloneSearchInterface) {\n      return analyticsActionCauseList.omniboxFromLink;\n    }\n    return analyticsActionCauseList.omniboxAnalytics;\n  }\n}\nInitialization.registerAutoCreateComponent(AnalyticsSuggestions);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/AnalyticsSuggestions/AnalyticsSuggestions.ts","import { Component } from '../Base/Component';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { Assert } from '../../misc/Assert';\nimport { QueryEvents, IBuildingCallOptionsEventArgs, IQueryErrorEventArgs } from '../../events/QueryEvents';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { IInitializationEventArgs, InitializationEvents } from '../../events/InitializationEvents';\nimport { SettingsEvents } from '../../events/SettingsEvents';\nimport { ISettingsPopulateMenuArgs } from '../Settings/Settings';\nimport { DomUtils } from '../../utils/DomUtils';\nimport { $$ } from '../../utils/Dom';\nimport { Initialization } from '../Base/Initialization';\nimport { l } from '../../strings/Strings';\nimport { ModalBox } from '../../ExternalModulesShim';\nimport { MissingAuthenticationError } from '../../rest/MissingAuthenticationError';\nimport * as _ from 'underscore';\nimport { exportGlobally } from '../../GlobalExports';\nimport 'styling/_AuthenticationProvider';\nimport { SVGIcons } from '../../utils/SVGIcons';\nimport { HashUtils } from '../../utils/HashUtils';\nimport { QUERY_STATE_ATTRIBUTES } from '../../models/QueryStateModel';\nimport { SafeLocalStorage } from '../../utils/LocalStorageUtils';\n\nconst handshakeTokenParamName = 'handshake_token';\n\nexport interface IAuthenticationProviderOptions {\n  name?: string;\n  caption?: string;\n  useIFrame?: boolean;\n  showIFrame?: boolean;\n}\n\n/**\n * The `AuthenticationProvider` component makes it possible to execute queries with an identity that the end user\n * can obtain using an authentication provider configured on the Coveo REST Search API\n * (see [Claims Authentication](https://docs.coveo.com/en/113/)).\n *\n * When necessary, this component handles redirecting the browser to the address that starts the authentication process.\n *\n * You can use the `data-tab` attribute to enable the `AuthenticationProvider` component only for the tabs of your\n * search interface that require authentication (see the [`Tab`]{@link Tab} component).\n */\nexport class AuthenticationProvider extends Component {\n  static ID = 'AuthenticationProvider';\n  static handshakeInProgress = false;\n\n  static doExport = () => {\n    exportGlobally({\n      AuthenticationProvider: AuthenticationProvider\n    });\n  };\n\n  /**\n   * The options for the component.\n   * @componentOptions\n   */\n  static options: IAuthenticationProviderOptions = {\n    /**\n     * Specifies the name of the authentication provider.\n     *\n     * See [SAML Authentication](https://docs.coveo.com/en/91/).\n     */\n    name: ComponentOptions.buildStringOption(),\n\n    /**\n     * Specifies the display name of the authentication provider. This is the name that you want to appear in the user\n     * interface when the end user is logging in.\n     *\n     * Default value is the [`name`]{@link AuthenticationProvider.options.name} option value.\n     */\n    caption: ComponentOptions.buildStringOption({ postProcessing: (value, options) => value || options.name }),\n\n    /**\n     * Specifies whether to use an `<iframe>` to host the chain of redirection that make up the authentication\n     * process.\n     *\n     * Using an `<iframe>` prevents leaving the search page as part of the authentication process. However, some login\n     * providers refuse to load in an `<iframe>`.\n     *\n     * Default value is `false`.\n     */\n    useIFrame: ComponentOptions.buildBooleanOption({\n      defaultValue: false,\n      alias: ['useIframe']\n    }),\n\n    /**\n     * If the [`useIFrame`]{@link AuthenticationProvider.options.useIFrame} option is `true`, specifies whether to make\n     * the authentication `<iframe>` visible to the user (inside a popup).\n     *\n     * When the underlying authentication provider requires no user interaction (for example, when a user authenticates\n     * using Windows authentication along with SharePoint claims), setting this option to `false` reduces the visual\n     * impact of the authentication process.\n     *\n     * Default value is `true`.\n     */\n    showIFrame: ComponentOptions.buildBooleanOption({\n      defaultValue: true,\n      alias: ['showIframe'],\n      depend: 'useIFrame'\n    })\n  };\n\n  private handlers: ((...args: any[]) => void)[];\n  private redirectCount: number;\n  private storage = new SafeLocalStorage();\n\n  /**\n   * Creates a new `AuthenticationProvider` component.\n   * @param element The HTMLElement on which to instantiate the component.\n   * @param options The options for the `AuthenticationProvider` component.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time).\n   */\n  constructor(\n    public element: HTMLElement,\n    public options: IAuthenticationProviderOptions = {},\n    bindings?: IComponentBindings,\n    public _window?: Window\n  ) {\n    super(element, AuthenticationProvider.ID, bindings);\n\n    this.options = ComponentOptions.initComponentOptions(element, AuthenticationProvider, options);\n\n    Assert.exists(this.options.name);\n\n    this.handlers = [];\n\n    this._window = this._window || window;\n    this.redirectCount = 0;\n\n    this.bind.onRootElement(QueryEvents.buildingCallOptions, this.handleBuildingCallOptions);\n    this.bind.onRootElement(QueryEvents.queryError, this.handleQueryError);\n    this.bind.onRootElement(InitializationEvents.nuke, this.handleNuke);\n    this.bind.onRootElement(InitializationEvents.afterComponentsInitialization, (args: IInitializationEventArgs) =>\n      this.onAfterComponentsInitialization(args)\n    );\n\n    this.bind.onRootElement(SettingsEvents.settingsPopulateMenu, (args: ISettingsPopulateMenuArgs) => {\n      args.menuData.push({\n        text: l('Reauthenticate', this.options.caption),\n        className: 'coveo-authentication-provider',\n        onOpen: () => this.authenticateWithProvider(),\n        svgIcon: SVGIcons.icons.dropdownAuthenticate,\n        svgIconClassName: 'coveo-authentication-provider-svg'\n      });\n    });\n  }\n\n  private getHandshakeTokenFromUrl() {\n    const hash = this.getHashAfterAdjustingForAngular();\n    const token = HashUtils.getValue(handshakeTokenParamName, hash);\n    return typeof token === 'string' ? token : '';\n  }\n\n  private getHashAfterAdjustingForAngular() {\n    const hash = HashUtils.getHash();\n    return this.isAngularHash ? `#${hash.slice(2)}` : hash;\n  }\n\n  private get isAngularHash() {\n    const rawHash = HashUtils.getHash();\n    return rawHash.indexOf('#/') === 0;\n  }\n\n  private onAfterComponentsInitialization(args: IInitializationEventArgs) {\n    if (AuthenticationProvider.handshakeInProgress) {\n      const promise = this.waitForHandshakeToFinish().then(() => this.loadAccessTokenFromStorage());\n\n      args.defer.push(promise);\n      return;\n    }\n\n    const handshakeToken = this.getHandshakeTokenFromUrl();\n\n    if (!handshakeToken) {\n      return this.loadAccessTokenFromStorage();\n    }\n\n    if (!this.shouldExchangeHandshakeToken) {\n      return;\n    }\n\n    this.enableHandshakeInProgressFlag();\n\n    const promise = this.exchangeHandshakeToken(handshakeToken)\n      .then(token => this.storeAccessToken(token))\n      .then(() => this.removeHandshakeTokenFromUrl())\n      .then(() => this.loadAccessTokenFromStorage())\n      .catch(e => this.logger.error(e))\n      .finally(() => this.disableHandshakeInProgressFlag());\n\n    args.defer.push(promise);\n  }\n\n  private get shouldExchangeHandshakeToken() {\n    const tabId = $$(this.element).getAttribute('data-tab');\n    const hash = HashUtils.getHash();\n    const activeTabId = HashUtils.getValue(QUERY_STATE_ATTRIBUTES.T, hash);\n    return !tabId || tabId === activeTabId;\n  }\n\n  private exchangeHandshakeToken(handshakeToken: string) {\n    const accessToken = this.getAccessTokenFromStorage();\n    const options = accessToken ? { handshakeToken, accessToken } : { handshakeToken };\n    return this.queryController.getEndpoint().exchangeHandshakeToken(options);\n  }\n\n  private storeAccessToken(accessToken: string) {\n    this.storage.setItem(this.accessTokenStorageKey, accessToken);\n  }\n\n  private get accessTokenStorageKey() {\n    const { organizationId } = this.queryController.getEndpoint().options.queryStringArguments;\n    return `coveo-auth-provider-access-token-${organizationId}`;\n  }\n\n  private waitForHandshakeToFinish() {\n    return new Promise(resolve => {\n      const interval = setInterval(() => {\n        if (AuthenticationProvider.handshakeInProgress) {\n          return;\n        }\n\n        clearInterval(interval);\n        resolve();\n      }, 100);\n    });\n  }\n\n  private enableHandshakeInProgressFlag() {\n    AuthenticationProvider.handshakeInProgress = true;\n  }\n\n  private disableHandshakeInProgressFlag() {\n    AuthenticationProvider.handshakeInProgress = false;\n  }\n\n  private removeHandshakeTokenFromUrl() {\n    const delimiter = `&`;\n    const hash = this.getHashAfterAdjustingForAngular();\n    const token = this.getHandshakeTokenFromUrl();\n    const handshakeEntry = `${handshakeTokenParamName}=${token}`;\n\n    const entries = hash.substr(1).split(delimiter);\n    const newHash = entries.filter(param => param !== handshakeEntry).join(delimiter);\n    const adjustedHash = this.isAngularHash ? `/${newHash}` : newHash;\n\n    this._window.history.replaceState(null, '', `#${adjustedHash}`);\n  }\n\n  private loadAccessTokenFromStorage() {\n    const token = this.getAccessTokenFromStorage();\n    token && this.queryController.getEndpoint().accessToken.updateToken(token);\n  }\n\n  private getAccessTokenFromStorage() {\n    return this.storage.getItem(this.accessTokenStorageKey);\n  }\n\n  private handleBuildingCallOptions(args: IBuildingCallOptionsEventArgs) {\n    args.options.authentication.push(this.options.name);\n  }\n\n  private handleQueryError(args: IQueryErrorEventArgs) {\n    const token = this.getAccessTokenFromStorage();\n    const shouldClearToken = this.shouldClearTokenFollowingErrorEvent(args);\n\n    if (token && shouldClearToken) {\n      this.storage.removeItem(this.accessTokenStorageKey);\n      this._window.location.reload();\n      return;\n    }\n\n    let missingAuthError = <MissingAuthenticationError>args.error;\n\n    if (\n      missingAuthError.isMissingAuthentication &&\n      missingAuthError.provider === this.options.name &&\n      this.redirectCount < 2 &&\n      this.redirectCount !== -1\n    ) {\n      ++this.redirectCount;\n      this.authenticateWithProvider();\n    } else {\n      this.logger.error('The AuthenticationProvider is in a redirect loop. This may be due to a back-end configuration problem.');\n      this.redirectCount = -1;\n    }\n  }\n\n  private shouldClearTokenFollowingErrorEvent(args: IQueryErrorEventArgs) {\n    const exceptions = ['InvalidTokenException', 'ExpiredTokenException', 'InvalidAuthenticationProviderException'];\n    const error = args.error.name;\n    return exceptions.indexOf(error) !== -1;\n  }\n\n  private authenticateWithProvider() {\n    this.options.useIFrame ? this.authenticateWithIFrame() : this.redirectToAuthenticationProvider();\n  }\n\n  private redirectToAuthenticationProvider() {\n    this.logger.info(`Redirecting to authentication provider ${this.options.name}`);\n    this._window.location.href = this.getAuthenticationProviderUriForRedirect();\n  }\n\n  private authenticateWithIFrame() {\n    this.logger.info(`Using iframe to retrieve authentication for provider ${this.options.name}`);\n\n    let iframe = $$('iframe', {\n      src: this.getAuthenticationProviderUriForIFrame()\n    }).el;\n\n    let modalbox: Coveo.ModalBox.ModalBox;\n    modalbox = this.options.showIFrame ? this.createPopupForVisibleIFrame(iframe) : this.createPopupForWaitMessage(iframe);\n\n    let handler = this.createHandler(modalbox, iframe);\n    $$(<any>this._window).one('message', handler);\n    this.handlers.push(handler);\n  }\n\n  private createHandler(modalbox: Coveo.ModalBox.ModalBox, iframe: HTMLElement): () => void {\n    return () => {\n      $$(iframe).detach();\n      this.logger.info(`Got authentication for provider ${this.options.name}; retrying query.`);\n      modalbox.close();\n      this.queryController.executeQuery();\n    };\n  }\n\n  private handleNuke() {\n    _.each(this.handlers, handler => $$(<any>this._window).off('message', handler));\n  }\n\n  private createPopupForWaitMessage(iframe: HTMLElement): Coveo.ModalBox.ModalBox {\n    let popup = $$(\n      'div',\n      {\n        className: 'coveo-waiting-for-authentication-popup'\n      },\n      DomUtils.getBasicLoadingAnimation()\n    ).el;\n\n    $$(iframe).hide();\n    document.body.appendChild(iframe);\n\n    ModalBox.open(popup, {\n      title: l('Authenticating', this.options.caption),\n      sizeMod: 'small',\n      body: this.searchInterface.options.modalContainer\n    });\n    return ModalBox;\n  }\n\n  private createPopupForVisibleIFrame(iframe: HTMLElement): Coveo.ModalBox.ModalBox {\n    $$(iframe).addClass('coveo-authentication-iframe');\n    let popup = $$('div', {}, iframe).el;\n\n    ModalBox.open(popup, {\n      title: l('Authenticating', this.options.caption),\n      className: 'coveo-authentication-popup',\n      sizeMod: 'big',\n      body: this.searchInterface.options.modalContainer\n    });\n    return ModalBox;\n  }\n\n  private getAuthenticationProviderUriForRedirect(): string {\n    return this.queryController.getEndpoint().getAuthenticationProviderUri(this.options.name, this._window.location.href, undefined);\n  }\n\n  private getAuthenticationProviderUriForIFrame(): string {\n    return this.queryController.getEndpoint().getAuthenticationProviderUri(this.options.name, undefined, 'success');\n  }\n}\n\nInitialization.registerAutoCreateComponent(AuthenticationProvider);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/AuthenticationProvider/AuthenticationProvider.ts","import 'styling/_Backdrop';\nimport { ModalBox as ModalBoxModule } from '../../ExternalModulesShim';\nimport { exportGlobally } from '../../GlobalExports';\nimport { IQueryResult } from '../../rest/QueryResult';\nimport { $$ } from '../../utils/Dom';\nimport { Utils } from '../../utils/Utils';\nimport { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { IFieldOption } from '../Base/IComponentOptions';\nimport { Initialization } from '../Base/Initialization';\nimport { IResultsComponentBindings } from '../Base/ResultsComponentBindings';\nimport { IYouTubeThumbnailOptions, YouTubeThumbnail } from '../YouTube/YouTubeThumbnail';\nimport { AccessibleButton } from '../../utils/AccessibleButton';\n\nexport interface IBackdropOptions {\n  imageUrl?: string;\n  imageField?: IFieldOption;\n  overlayColor?: string;\n  overlayGradient?: boolean;\n}\n\n/**\n * The Backdrop component renders an image URL (either passed as a direct URL or contained in a result field) as a\n * background image. It is useful for displaying information in front of a dynamic background image.\n *\n * The Backdrop component will automatically initialize components embedded within itself:\n *\n * ```html\n *   <div class=\"CoveoBackdrop\" data-image-field=\"ytthumbnailurl\">\n *     <div class=\"CoveoFieldValue\" data-field=\"somefield\"></div>\n *   </div>\n * ```\n */\nexport class Backdrop extends Component {\n  static ID = 'Backdrop';\n\n  static doExport = () => {\n    exportGlobally({\n      Backdrop: Backdrop\n    });\n  };\n\n  /**\n   * @componentOptions\n   */\n  static options: IBackdropOptions = {\n    /**\n     * Specifies a direct URL from which the background image will be sourced.\n     *\n     * Has priority over {@link Backdrop.options.imageField}.\n     */\n    imageUrl: ComponentOptions.buildStringOption(),\n\n    /**\n     * Specifies the field from which the background image will be pulled.\n     *\n     * If {@link Backdrop.options.imageUrl} is specified, it will override this option.\n     */\n    imageField: ComponentOptions.buildFieldOption(),\n\n    /**\n     * Specifies the color that will be overlaid on top of the background image.\n     * This option needs to be declared as a CSS color. Be sure to use RGBA with an alpha value lower than 1 in order to\n     * be able to see the image behind the overlay color.\n     *\n     * Example value : \"`rgba(101, 123, 76, 0.5)`\"\n     */\n    overlayColor: ComponentOptions.buildColorOption(),\n\n    /**\n     * Specifies whether the overlay color should be instead be rendered as a top-to-bottom gradient from\n     * {@link Backdrop.options.overlayColor} to transparent.\n     *\n     * Default value is `false`.\n     */\n    overlayGradient: ComponentOptions.buildBooleanOption({ defaultValue: false, depend: 'overlayColor' })\n  };\n\n  /**\n   * Creates a new Backdrop component.\n   * @param element The HTMLElement on which the component will be instantiated.\n   * @param options The options for the Backdrop component.\n   * @param bindings The bindings that the component requires to function normally. If not set, it will be automatically\n   * resolved (with a slower execution time).\n   * @param result The {@link IQueryResult}.\n   */\n  constructor(\n    public element: HTMLElement,\n    public options?: IBackdropOptions,\n    bindings?: IComponentBindings,\n    public result?: IQueryResult,\n    public _window?: Window,\n    public ModalBox = ModalBoxModule\n  ) {\n    super(element, Backdrop.ID, bindings);\n    this.options = ComponentOptions.initComponentOptions(element, Backdrop, options);\n\n    this._window = this._window || window;\n\n    let background = '';\n    if (this.options.overlayColor) {\n      background +=\n        `linear-gradient(${this.options.overlayColor}, ` +\n        (this.options.overlayGradient ? 'rgba(0,0,0,0)' : this.options.overlayColor) +\n        '), ';\n    }\n\n    const imageSource = this.options.imageUrl || Utils.getFieldValue(result, <string>this.options.imageField);\n    background += `url('${imageSource}') center center`;\n\n    this.element.style.background = background;\n    this.element.style.backgroundSize = 'cover';\n\n    Initialization.automaticallyCreateComponentsInsideResult(element, result);\n    this.configureSpecialBackdropActions();\n  }\n\n  private configureSpecialBackdropActions() {\n    // If the current backdrop is used for a youtube thumbnail, we automatically configure a component for this\n    if (Utils.getFieldValue(this.result, 'ytthumbnailurl')) {\n      // We create the element \"in memory\", but do not append it to the DOM.\n      // We don't want to see a duplicate of the preview for youtube : the backdrop already renders a preview.\n      let thumbnailYouTube = new YouTubeThumbnail(\n        $$('div').el,\n        <IYouTubeThumbnailOptions>{\n          embed: true\n        },\n        <IResultsComponentBindings>this.getBindings(),\n        this.result,\n        this.ModalBox,\n        this.element\n      );\n\n      new AccessibleButton()\n        .withElement(this.element)\n        .withLabel(this.result.title)\n        .withSelectAction(e => {\n          // Since the backdrop often contain a result link, we must make sure the click did no originate from one.\n          // Otherwise, we might end up opening 2 results at the same time\n          if (!$$(<HTMLElement>e.target).hasClass('CoveoResultLink')) {\n            thumbnailYouTube.openResultLink();\n          }\n        })\n        .build();\n    }\n  }\n}\n\nInitialization.registerAutoCreateComponent(Backdrop);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Backdrop/Backdrop.ts","import { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { IQueryResult } from '../../rest/QueryResult';\nimport { Initialization } from '../Base/Initialization';\nimport { FieldValue, IFieldValueOptions } from '../FieldValue/FieldValue';\nimport { StringUtils } from '../../utils/StringUtils';\nimport { Assert } from '../../misc/Assert';\nimport { $$ } from '../../utils/Dom';\nimport * as _ from 'underscore';\nimport { exportGlobally } from '../../GlobalExports';\n\nexport interface IBadgeOptions extends IFieldValueOptions {\n  colors: IBadgeColors;\n}\n\n/**\n * Badge Colors\n */\nexport interface IBadgeColors extends IBadgeColor {\n  values?: { [value: string]: IBadgeColors };\n}\n\nexport interface IBadgeColor {\n  icon?: string;\n  text?: string;\n}\n\n/**\n * The Badge component outputs a field value with customizable colors and an icon preceding it.\n *\n * This component is a result template component (see [Result Templates](https://docs.coveo.com/en/413/)). It\n * extends the {@link FieldValue} component. Therefore all FieldValue options are also available for a Badge component.\n */\nexport class Badge extends FieldValue implements IComponentBindings {\n  static ID = 'Badge';\n\n  static doExport = () => {\n    exportGlobally({\n      Badge: Badge\n    });\n  };\n\n  /**\n   * The options for the component\n   * @componentOptions\n   */\n  static options: IBadgeOptions = {\n    /**\n     * Specifies the colors for the Badge component.\n     *\n     * You must specify the colors in a JSON format similar to what follows:\n     * ```json\n     * {\n     *   \"values\":{\n     *     \"foo\":{\n     *       \"icon\":\"blue\",\n     *       \"text\":\"#222\"\n     *     },\n     *     \"bar\":{\n     *       \"icon\":\"green\",\n     *       \"text\":\"lightgreen\"\n     *     }\n     *   },\n     *   \"icon\":\"red\",\n     *   \"text\":\"#9ab52b\"\n     * }\n     * ```\n     * This format allows you to customize both the icon and text colors for each field value as well as the default\n     * values.\n     *\n     * Colors can be specified in HTML or hexadecimal format.\n     */\n    colors: ComponentOptions.buildCustomOption<IBadgeColors>((value: string) => Badge.parseColors(value), {\n      defaultValue: { values: {} }\n    }),\n    textCaption: ComponentOptions.buildLocalizedStringOption()\n  };\n\n  static parent = FieldValue;\n\n  /**\n   * Creates a new Badge component.\n   * @param element The HTMLElement on which to instantiate the component.\n   * @param options The options for the Badge component.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time).\n   * @param result The result to associate the component with.\n   */\n  constructor(element: HTMLElement, public options: IBadgeOptions, bindings?: IComponentBindings, result?: IQueryResult) {\n    super(element, ComponentOptions.initComponentOptions(element, Badge, options), bindings, result, Badge.ID);\n    if (_.isString(this.options.colors)) {\n      // to support the old string options\n      this.options.colors = Badge.parseColors(<any>this.options.colors);\n    }\n    if (this.options.colors.values == null) {\n      this.options.colors.values = {};\n    }\n  }\n\n  // The following regexes are used to match the old color format:\n\n  // This one matches a single color, e.g. either \"red\" or \"foo: blue\".\n  // Its capture groups will be the following :\n  // 0:( 1:() 2:(red)) or 0:( 1:(foo) 2:(blue))\n  private static colorRegex = /(?:\\s*((?:[^:;]|\\\\[;:])*)\\s*:\\s*)?(\\w+|#[A-Fa-f0-9]{6}|#[A-Fa-f0-9]{3})/g;\n  // This one matches all colors, separated by semicolons, e.g. \"red; foo: blue; bar: green\".\n  // It wraps 'colorRegex' in other capture groups, such as the following:\n  // 0:(red) 1:(foo: blue;) 2:(bar: green)\n  private static colorsRegex = new RegExp('^(\\\\s*' + Badge.colorRegex.source + '\\\\s*;)*(\\\\s*' + Badge.colorRegex.source + ')?\\\\s*$');\n\n  /**\n   * Parses a {@link Badge.options.colors} option string into a workable JSON format.\n   *\n   * @param colorsOption The colors option string to parse. See {@link Badge.options.colors}.\n   */\n  public static parseColors(colorsOption: string): IBadgeColors {\n    if (colorsOption) {\n      if (Badge.colorsRegex.test(colorsOption)) {\n        let badgeColors: IBadgeColors = {\n          values: {}\n        };\n        let colors: string[][] = StringUtils.match(colorsOption, Badge.colorRegex);\n        _.each(colors, (color: string[]) => {\n          let [, fieldValue, colorValue] = color;\n          if (fieldValue != null) {\n            badgeColors.values[fieldValue.replace(/\\\\(:|;)/g, '$1')] = {\n              icon: colorValue\n            };\n          } else {\n            badgeColors.icon = colorValue;\n          }\n        });\n        return badgeColors;\n      }\n      try {\n        return JSON.parse(colorsOption);\n      } catch (e) {\n        Assert.fail(`Invalid colors for badge '${colorsOption}'`);\n      }\n    }\n    return {};\n  }\n\n  /**\n   * Gets the icon and text color of a field value.\n   *\n   * @param value The field value whose colors to return.\n   * @returns {{icon: string, text: string}} An object with the `icon` and `text` keys.\n   */\n  public getColor(value: string = ''): IBadgeColor {\n    var colorKey = _.find(_.keys(this.options.colors.values), (key: string) => value.toLowerCase() == key.toLowerCase());\n    var color: IBadgeColor = colorKey ? this.options.colors.values[colorKey] : {};\n    return {\n      icon: color.icon || this.options.colors.icon,\n      text: color.text || this.options.colors.text\n    };\n  }\n\n  /**\n   * Renders one string value with the appropriate colors and icon.\n   *\n   * @param value The field value to render.\n   * @returns {HTMLElement} An HTML `<span>` tag containing the rendered value.\n   */\n  public renderOneValue(value: string): HTMLElement {\n    let valueDom = super.renderOneValue(value);\n    $$(valueDom).addClass('coveo-value');\n\n    let color = this.getColor(value);\n\n    var icon = $$('span', { className: 'coveo-badge-icon' }).el;\n    if (color.icon != null) {\n      icon.style.color = color.icon;\n    }\n\n    let label = $$('span', { className: 'coveo-badge-label' }, valueDom.innerHTML).el;\n\n    if (color.text != null) {\n      label.style.color = color.text;\n    }\n\n    $$(valueDom).empty();\n\n    valueDom.appendChild(icon);\n    valueDom.appendChild(label);\n    return valueDom;\n  }\n\n  // Override the protected method from FieldValue class to ignore a potential textCaption on a Badge.\n  protected prependTextCaptionToDom(): void {\n    return;\n  }\n}\n\nBadge.options = _.omit(Badge.options, 'textCaption');\n\nInitialization.registerAutoCreateComponent(Badge);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Badge/Badge.ts","import 'styling/_Breadcrumb';\nimport { each, find, isEmpty } from 'underscore';\nimport { BreadcrumbEvents, IBreadcrumbItem, IClearBreadcrumbEventArgs, IPopulateBreadcrumbEventArgs } from '../../events/BreadcrumbEvents';\nimport { InitializationEvents } from '../../events/InitializationEvents';\nimport { QueryEvents } from '../../events/QueryEvents';\nimport { exportGlobally } from '../../GlobalExports';\nimport { l } from '../../strings/Strings';\nimport { AccessibleButton } from '../../utils/AccessibleButton';\nimport { $$ } from '../../utils/Dom';\nimport { analyticsActionCauseList, IAnalyticsNoMeta } from '../Analytics/AnalyticsActionListMeta';\nimport { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { Initialization } from '../Base/Initialization';\n\nexport interface IBreadcrumbOptions {\n  headingLevel?: number;\n}\n\n/**\n * The Breadcrumb component displays a summary of the currently active query filters.\n *\n * For example, when the user selects a {@link Facet} value, the breadcrumbs display this value.\n *\n * The active filters are obtained by the component by firing an event in the Breadcrumb component.\n *\n * All other components having an active state can react to this event by providing custom bits of HTML to display\n * inside the breadcrumbs.\n *\n * Thus, it is possible to easily extend the Breadcrumb component using custom code to display information about custom\n * states and filters.\n *\n * See {@link BreadcrumbEvents} for the list of events and parameters sent when a Breadcrumb component is populated.\n */\nexport class Breadcrumb extends Component {\n  static ID = 'Breadcrumb';\n\n  /**\n   * The options for the Breadcrumb.\n   * @componentOptions\n   */\n  static options: IBreadcrumbOptions = {\n    /**\n     * The [heading level](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Heading_Elements) to use for the heading before the breadcrumbs.\n     *\n     * A value of 0 will render a [`div`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/div) element instead.\n     */\n    headingLevel: ComponentOptions.buildNumberOption({ min: 0, max: 6 })\n  };\n\n  static doExport = () => {\n    exportGlobally({\n      Breadcrumb: Breadcrumb\n    });\n  };\n\n  private lastBreadcrumbs: IBreadcrumbItem[];\n\n  /**\n   * Creates a new Breadcrumb component. Binds event on {@link QueryEvents.deferredQuerySuccess} to draw the\n   * breadcrumbs.\n   * @param element The HTMLElement on which to instantiate the component.\n   * @param options The options for the Breadcrumb component.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time).\n   */\n  constructor(public element: HTMLElement, public options?: IBreadcrumbOptions, bindings?: IComponentBindings) {\n    super(element, Breadcrumb.ID, bindings);\n\n    this.options = ComponentOptions.initComponentOptions(element, Breadcrumb, options);\n\n    this.bind.oneRootElement(InitializationEvents.afterInitialization, () => this.handleAfterInitialization());\n    this.bind.onRootElement(BreadcrumbEvents.redrawBreadcrumb, () => this.redrawBreadcrumb());\n    this.element.style.display = 'none';\n    this.element.setAttribute('tabindex', '-1');\n    this.addDefaultAccessibilityAttributes();\n  }\n\n  /**\n   * Triggers the event to populate the breadcrumbs. Components such as {@link Facet} can populate the breadcrumbs.\n   *\n   * This method triggers a {@link BreadcrumbEvents.populateBreadcrumb} event with an\n   * {@link IPopulateBreadcrumbEventArgs} object (an array) that other components or code can populate.\n   * @returns {IBreadcrumbItem[]} A populated breadcrumb item list.\n   */\n  public getBreadcrumbs(): IBreadcrumbItem[] {\n    const args = <IPopulateBreadcrumbEventArgs>{ breadcrumbs: [], headingLevel: this.options.headingLevel };\n    this.bind.trigger(this.root, BreadcrumbEvents.populateBreadcrumb, args);\n    this.logger.debug('Retrieved breadcrumbs', args.breadcrumbs);\n\n    // If newly received breadcrumbs are empty, and last breadcrumbs were not.\n    // this means end user removed the last filter:\n    // We want to shift keyboard focus to the result list container in that case, for ease of use of the interface\n    // https://coveord.atlassian.net/browse/JSUI-3078\n    if (isEmpty(args.breadcrumbs) && !isEmpty(this.lastBreadcrumbs)) {\n      this.focusFirstEnabledResultList();\n    }\n    this.lastBreadcrumbs = args.breadcrumbs;\n    return args.breadcrumbs;\n  }\n\n  /**\n   * Triggers the event to clear the current breadcrumbs that components such as {@link Facet} can populate.\n   *\n   * Also triggers a new query and logs the `breadcrumbResetAll` event in the usage analytics.\n   */\n  public clearBreadcrumbs() {\n    const args = <IClearBreadcrumbEventArgs>{};\n    this.bind.trigger(this.root, BreadcrumbEvents.clearBreadcrumb, args);\n    this.logger.debug('Clearing breadcrumbs');\n    this.usageAnalytics.logSearchEvent<IAnalyticsNoMeta>(analyticsActionCauseList.breadcrumbResetAll, {});\n    this.queryController.executeQuery();\n  }\n\n  /**\n   * Draws the specified breadcrumb items.\n   * @param breadcrumbs The breadcrumb items to draw.\n   */\n  public drawBreadcrumb(breadcrumbs: IBreadcrumbItem[]) {\n    $$(this.element).empty();\n    if (breadcrumbs.length != 0) {\n      this.element.style.display = '';\n    } else {\n      this.element.style.display = 'none';\n    }\n\n    const breadcrumbItems = document.createElement('div');\n    $$(breadcrumbItems).addClass('coveo-breadcrumb-items');\n    this.element.appendChild(breadcrumbItems);\n    each(breadcrumbs, (bcrumb: IBreadcrumbItem) => {\n      const elem = bcrumb.element;\n      $$(elem).addClass('coveo-breadcrumb-item');\n      breadcrumbItems.appendChild(elem);\n    });\n\n    const clearText = $$('div', undefined, l('ClearAllFilters')).el;\n    const clear = $$(\n      'div',\n      {\n        className: 'coveo-breadcrumb-clear-all'\n      },\n      clearText\n    ).el;\n\n    new AccessibleButton()\n      .withElement(clear)\n      .withSelectAction(() => this.clearBreadcrumbs())\n      .withOwner(this.bind)\n      .withoutLabelOrTitle()\n      .build();\n\n    this.element.appendChild(clear);\n  }\n\n  private redrawBreadcrumb() {\n    this.lastBreadcrumbs ? this.drawBreadcrumb(this.lastBreadcrumbs) : this.drawBreadcrumb(this.getBreadcrumbs());\n  }\n\n  private handleDeferredQuerySuccess() {\n    this.drawBreadcrumb(this.getBreadcrumbs());\n  }\n\n  private handleQueryError() {\n    this.drawBreadcrumb(this.getBreadcrumbs());\n  }\n\n  private handleAfterInitialization() {\n    // We must bind to these events after the initialization to make sure the breadcrumb generation\n    // is made with updated components. (E.G facet, facetrange, ...)\n    this.bind.onRootElement(QueryEvents.deferredQuerySuccess, () => this.handleDeferredQuerySuccess());\n    this.bind.onRootElement(QueryEvents.queryError, () => this.handleQueryError());\n  }\n\n  private focusFirstEnabledResultList() {\n    const resultLists = this.searchInterface.getComponents<Component>('ResultList');\n    const firstEnabledResultList = find(resultLists, resultList => resultList.disabled === false);\n    if (firstEnabledResultList) {\n      $$(firstEnabledResultList.element).focus(true);\n    }\n  }\n\n  private addDefaultAccessibilityAttributes() {\n    if (!this.element.getAttribute('role')) {\n      this.element.setAttribute('role', 'navigation');\n    }\n    if (!this.element.getAttribute('aria-label')) {\n      this.element.setAttribute('aria-label', l('Breadcrumb'));\n    }\n  }\n}\n\nInitialization.registerAutoCreateComponent(Breadcrumb);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Breadcrumb/Breadcrumb.ts","import { Component } from '../Base/Component';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { Initialization } from '../Base/Initialization';\nimport { IQueryResult } from '../../rest/QueryResult';\nimport { Assert } from '../../misc/Assert';\nimport { $$ } from '../../utils/Dom';\nimport { KeyboardUtils, KEYBOARD } from '../../utils/KeyboardUtils';\nimport * as _ from 'underscore';\nimport { exportGlobally } from '../../GlobalExports';\n\nimport 'styling/_CardActionBar';\nimport { SVGIcons } from '../../utils/SVGIcons';\nimport { SVGDom } from '../../utils/SVGDom';\n\nexport interface ICardActionBarOptions {\n  hidden?: boolean;\n  openOnMouseOver?: boolean;\n}\n\n/**\n * The `CardActionBar` component displays an action bar at the bottom of a card result (see\n * [Result Layouts](https://docs.coveo.com/en/360/)). It is a simple container for buttons or complementary\n * information.\n *\n * You should place this component at the bottom of a card result template (i.e., as the last child of the surrounding\n * `coveo-result-frame` div).\n *\n * See [Using the CardActionBar Component](https://docs.coveo.com/en/1349/#using-the-cardactionbar-component)\n */\nexport class CardActionBar extends Component {\n  static ID = 'CardActionBar';\n\n  static doExport = () => {\n    exportGlobally({\n      CardActionBar: CardActionBar\n    });\n  };\n\n  parentResult: HTMLElement;\n  arrowContainer: HTMLElement;\n  removedTabIndexElements: HTMLElement[] = [];\n\n  /**\n   * @componentOptions\n   */\n  static options: ICardActionBarOptions = {\n    /**\n     * Whether to hide the component by default and append a visual indicator to its parent query result.\n     *\n     * If this option is set to `true`, the component will show itself when the user clicks its parent query result.\n     *\n     * Default value is `true`.\n     */\n    hidden: ComponentOptions.buildBooleanOption({ defaultValue: true }),\n\n    /**\n     * Whether to open the `CardActionBar` when the cursor hovers over it.\n     *\n     * This option is only meaningful when [`hidden`]{@link CardActionBar.options.hidden} is set to `true`.\n     *\n     * Default value is `true`.\n     */\n    openOnMouseOver: ComponentOptions.buildBooleanOption({ defaultValue: true, depend: 'hidden' })\n  };\n\n  /**\n   * Creates a new `CardActionBar` component.\n   * @param element The HTMLElement on which to instantiate the component.\n   * @param options The options for the component.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time).\n   * @param result The parent [query result]{@link IQueryResult}..\n   */\n  constructor(\n    public element: HTMLElement,\n    public options?: ICardActionBarOptions,\n    bindings?: IComponentBindings,\n    public result?: IQueryResult\n  ) {\n    super(element, CardActionBar.ID, bindings);\n    this.options = ComponentOptions.initComponentOptions(element, CardActionBar, options);\n\n    this.parentResult = $$(this.element).closest('CoveoResult');\n    Assert.check(this.parentResult !== undefined, 'ActionBar needs to be a child of a Result');\n\n    if (this.options.hidden) {\n      $$(this.parentResult).addClass('coveo-clickable');\n      this.appendArrow();\n      this.bindEvents();\n\n      _.forEach($$(this.element).findAll('*'), (elem: HTMLElement) => {\n        if (elem.hasAttribute('tabindex') && elem.getAttribute('tabindex') == '0') {\n          this.removedTabIndexElements.push(elem);\n          elem.removeAttribute('tabindex');\n        }\n      });\n    } else {\n      this.element.style.transition = 'none';\n      this.element.style.transform = 'none';\n    }\n  }\n\n  /**\n   * Shows the component.\n   */\n  public show() {\n    $$(this.element).addClass('coveo-opened');\n    _.forEach(this.removedTabIndexElements, (e: Element) => {\n      e.setAttribute('tabindex', '0');\n    });\n  }\n\n  /**\n   * Hides the component.\n   */\n  public hide() {\n    $$(this.element).removeClass('coveo-opened');\n    _.forEach(this.removedTabIndexElements, (e: Element) => {\n      e.removeAttribute('tabindex');\n    });\n  }\n\n  private bindEvents() {\n    $$(this.parentResult).on('click', () => this.show());\n    $$(this.parentResult).on('mouseleave', () => this.hide());\n    $$(this.element).on('focusin', () => this.show());\n    $$(this.element).on('focusout', () => this.hide());\n    if (this.options.openOnMouseOver) {\n      $$(this.arrowContainer).on('mouseenter', () => this.show());\n    }\n  }\n\n  private appendArrow() {\n    this.arrowContainer = $$('div', { className: 'coveo-card-action-bar-arrow-container', tabindex: 0 }).el;\n    this.bind.on(\n      this.arrowContainer,\n      'keyup',\n      KeyboardUtils.keypressAction(KEYBOARD.ENTER, () => this.show())\n    );\n    const arrowUp = $$('span', { className: 'coveo-icon coveo-card-action-bar-arrow-icon' }, SVGIcons.icons.arrowUp);\n    SVGDom.addClassToSVGInContainer(arrowUp.el, 'coveo-card-action-bar-arrow-svg');\n    this.arrowContainer.appendChild(arrowUp.el);\n    this.parentResult.appendChild(this.arrowContainer);\n  }\n}\n\nInitialization.registerAutoCreateComponent(CardActionBar);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/CardActionBar/CardActionBar.ts","import { Component } from '../Base/Component';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { Initialization } from '../Base/Initialization';\nimport { CardOverlayEvents } from '../../events/CardOverlayEvents';\nimport { $$ } from '../../utils/Dom';\nimport { Assert } from '../../misc/Assert';\nimport { KeyboardUtils, KEYBOARD } from '../../utils/KeyboardUtils';\nimport { exportGlobally } from '../../GlobalExports';\nimport 'styling/_CardOverlay';\nimport { SVGIcons } from '../../utils/SVGIcons';\nimport { SVGDom } from '../../utils/SVGDom';\nimport { Utils } from '../../utils/Utils';\nimport { l } from '../../strings/Strings';\n\nexport interface ICardOverlayOptions {\n  title: string;\n  icon?: string;\n}\n\n/**\n * The CardOverlay component displays a button that the user can click to toggle the visibility of an overlay on top of\n * an {@link IQueryResult}. While this component typically populates a {@link CardActionBar} component, it is actually\n * possible to place a CardOverlay component anywhere in any result.\n *\n * The primary purpose of the CardOverlay component is to display additional information about a result in a format that\n * fits well within a card result layout (see [Result Layouts](https://docs.coveo.com/en/360/)).\n *\n * When initialized, this component creates a `<div class=\"coveo-card-overlay\">` element as the last child of its parent\n * IQueryResult, and displays a button which toggles the visibility of the overlay.\n */\nexport class CardOverlay extends Component {\n  static ID = 'CardOverlay';\n\n  static doExport = () => {\n    exportGlobally({\n      CardOverlay: CardOverlay\n    });\n  };\n\n  private parentCard: HTMLElement;\n  private overlay: HTMLElement;\n\n  /**\n   * @componentOptions\n   */\n  static options: ICardOverlayOptions = {\n    /**\n     * Specifies the string to use for the overlay title and for the button text.\n     *\n     * Setting a value for this option is required for this component to work.\n     */\n    title: ComponentOptions.buildLocalizedStringOption({\n      required: true,\n      localizedString: () => l('NoTitle')\n    }),\n\n    /**\n     * Specifies the icon to use for the overlay icon and for the button icon.\n     *\n     * The name of the icon to use should be specified in dashed case. ie: facet-expand\n     */\n    icon: ComponentOptions.buildIconOption()\n  };\n\n  /**\n   * Creates a new CardOverlay component.\n   * @param element The HTMLElement on which to instantiate the component.\n   * @param options The options for the CardOverlay component.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time).\n   */\n  constructor(public element: HTMLElement, public options?: ICardOverlayOptions, bindings?: IComponentBindings) {\n    super(element, CardOverlay.ID, bindings);\n    this.options = ComponentOptions.initComponentOptions(element, CardOverlay, options);\n\n    this.parentCard = $$(this.element).closest('.CoveoResult');\n    Assert.exists(this.parentCard);\n    $$(this.parentCard).addClass('coveo-with-card-overlay');\n    this.createOverlay();\n    this.createButton(this.element);\n    this.closeOverlay();\n  }\n\n  /**\n   * Toggles the CardOverlay visibility.\n   *\n   * @param swtch Specifying a value for this parameter forces the component visibility to take the corresponding value\n   * (`true` for visible; `false` for hidden).\n   */\n  public toggleOverlay(swtch?: boolean) {\n    if (swtch !== undefined) {\n      swtch ? this.openOverlay() : this.closeOverlay();\n    } else {\n      if ($$(this.overlay).hasClass('coveo-opened')) {\n        this.closeOverlay();\n      } else {\n        this.openOverlay();\n      }\n    }\n  }\n\n  /**\n   * Opens the CardOverlay.\n   *\n   * Also triggers the {@link CardOverlayEvents.openCardOverlay} event.\n   */\n  public openOverlay() {\n    $$(this.overlay).removeClass('coveo-hidden-for-tab-nav');\n    $$(this.overlay).addClass('coveo-opened');\n    $$(this.parentCard).addClass('coveo-card-overlay-opened');\n    this.bind.trigger(this.element, CardOverlayEvents.openCardOverlay);\n  }\n\n  /**\n   * Closes the CardOverlay.\n   *\n   * Also triggers the {@link CardOverlayEvents.closeCardOverlay} event.\n   */\n  public closeOverlay() {\n    $$(this.overlay).addClass('coveo-hidden-for-tab-nav');\n    $$(this.overlay).removeClass('coveo-opened');\n    $$(this.parentCard).removeClass('coveo-card-overlay-opened');\n    this.bind.trigger(this.element, CardOverlayEvents.closeCardOverlay);\n  }\n\n  private createOverlay() {\n    this.overlay = $$('div', { className: 'coveo-card-overlay' }).el;\n\n    // Create header\n    let overlayHeader = $$('div', { className: 'coveo-card-overlay-header' }).el;\n    this.createButton(overlayHeader);\n    this.overlay.appendChild(overlayHeader);\n\n    // Create body\n    let overlayBody = $$('div', { className: 'coveo-card-overlay-body' }).el;\n    // Transfer all of element's children to the overlay\n    while (this.element.childNodes.length > 0) {\n      overlayBody.appendChild(this.element.firstChild);\n    }\n    this.overlay.appendChild(overlayBody);\n\n    // Create footer\n    const icon = $$('span', { className: 'coveo-icon coveo-open-card-overlay' }, SVGIcons.icons.arrowDown);\n    SVGDom.addClassToSVGInContainer(icon.el, 'coveo-open-card-overlay-svg');\n    let overlayFooter = $$('div', { className: 'coveo-card-overlay-footer', tabindex: '0' }, icon.el);\n    overlayFooter.on('click', () => this.toggleOverlay(false));\n    this.bind.on(overlayFooter.el, 'keyup', KeyboardUtils.keypressAction(KEYBOARD.ENTER, () => this.toggleOverlay(false)));\n\n    this.overlay.appendChild(overlayFooter.el);\n\n    this.parentCard.appendChild(this.overlay);\n  }\n\n  private createButton(element: HTMLElement) {\n    if (this.options.icon) {\n      const icon = $$('span', { className: 'coveo-icon ' }, SVGIcons.icons[this.options.icon]).el;\n      element.appendChild(icon);\n      SVGDom.addClassToSVGInContainer(element, `coveo-${Utils.toDashCase(this.options.icon)}-svg`);\n    }\n    element.appendChild($$('span', { className: 'coveo-label' }, this.options.title).el);\n    element.setAttribute('tabindex', '0');\n    $$(element).on('click', () => this.toggleOverlay());\n    this.bind.on(element, 'keyup', KeyboardUtils.keypressAction(KEYBOARD.ENTER, () => this.toggleOverlay()));\n  }\n}\n\nInitialization.registerAutoCreateComponent(CardOverlay);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/CardOverlay/CardOverlay.ts","import { Initialization } from '../Base/Initialization';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { IQueryResult } from '../../rest/QueryResult';\nimport { Utils } from '../../utils/Utils';\nimport { $$ } from '../../utils/Dom';\nimport { l } from '../../strings/Strings';\nimport { ChatterUtils } from '../../utils/ChatterUtils';\nimport { exportGlobally } from '../../GlobalExports';\n\nexport interface IChatterLikedByOptions {\n  nbLikesToRender: number;\n  openInPrimaryTab: boolean;\n  openInSubTab: boolean;\n}\n\nexport class ChatterLikedBy extends Component {\n  static ID = 'ChatterLikedBy';\n\n  static doExport = () => {\n    exportGlobally({\n      ChatterLikedBy: ChatterLikedBy\n    });\n  };\n\n  static options: IChatterLikedByOptions = {\n    nbLikesToRender: ComponentOptions.buildNumberOption({ defaultValue: 2, min: 0 }),\n    openInPrimaryTab: ComponentOptions.buildBooleanOption({ defaultValue: false }),\n    openInSubTab: ComponentOptions.buildBooleanOption({ defaultValue: true })\n  };\n\n  constructor(\n    public element: HTMLElement,\n    public options?: IChatterLikedByOptions,\n    public bindings?: IComponentBindings,\n    public result?: IQueryResult\n  ) {\n    super(element, ChatterLikedBy.ID, bindings);\n    this.options = ComponentOptions.initComponentOptions(element, ChatterLikedBy, options);\n\n    if (\n      !Utils.isNullOrUndefined(Utils.getFieldValue(result, 'sflikedby')) &&\n      !Utils.isNullOrUndefined(Utils.getFieldValue(result, 'sflikedbyid'))\n    ) {\n      let likeNames = Utils.getFieldValue(result, 'sflikedby').split(';');\n      let likeIds = Utils.getFieldValue(result, 'sflikedbyid').split(';');\n\n      let rootElement = $$('div', {\n        className: 'coveo-chatter-result-box-row'\n      });\n      $$(element).append(rootElement.el);\n\n      let thumbIcon = $$('div', {\n        className: 'coveo-sprites-common-thumbup_inactive coveo-chatter-result-box-icon'\n      });\n      rootElement.append(thumbIcon.el);\n\n      let fullListElement = $$('div', {\n        className: 'coveo-chatter-result-likes'\n      });\n      rootElement.append(fullListElement.el);\n\n      this.renderLikesList(fullListElement.el, result, likeNames, likeIds, this.options.nbLikesToRender);\n    }\n  }\n\n  private renderLikesList(element: HTMLElement, result: IQueryResult, likeNames: string[], likeIds: string[], nbLikesToRender: number) {\n    let tempElement = $$('div');\n\n    for (let i = 0; i < likeIds.length - 1 && (nbLikesToRender == 0 || i < nbLikesToRender); i++) {\n      tempElement.append(this.renderLikeLink(result, likeNames[i], likeIds[i]));\n\n      if ((nbLikesToRender == 0 || i < nbLikesToRender - 1) && i < likeIds.length - 2) {\n        tempElement.append($$('span', {}, ', ').el);\n      } else if (i < likeIds.length - 1) {\n        tempElement.append($$('span', {}, ` ${l('And').toLowerCase()} `).el);\n      }\n    }\n\n    if (nbLikesToRender == 0 || likeIds.length <= nbLikesToRender) {\n      tempElement.append(this.renderLikeLink(result, likeNames[likeIds.length - 1], likeIds[likeIds.length - 1]));\n    } else {\n      let othersCount = likeIds.length - nbLikesToRender;\n      let clickableLink = $$('a');\n      clickableLink.text(` ${l('Others', othersCount.toString(), othersCount)}`);\n      clickableLink.on('click', (e: Event) => {\n        e.preventDefault();\n        $$(element).empty();\n        this.renderLikesList(element, result, likeNames, likeIds, 0);\n      });\n      tempElement.append(clickableLink.el);\n    }\n\n    if (likeIds.length > 0) {\n      let name = $$('span');\n      name.el.innerHTML = l('LikesThis', tempElement.el.innerHTML, likeIds.length);\n      $$(element).append(name.el);\n    }\n  }\n\n  private renderLikeLink(result: IQueryResult, likeName: string, likeId: string): HTMLElement {\n    let link = $$('a', {\n      href: ChatterUtils.buildURI(result.clickUri, Utils.getFieldValue(result, 'sffeeditemid'), likeId)\n    });\n    link.text(likeName);\n    return link.el;\n  }\n}\n\nInitialization.registerAutoCreateComponent(ChatterLikedBy);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ChatterLikedBy/ChatterLikedBy.ts","import { Component } from '../Base/Component';\nimport { IResultsComponentBindings } from '../Base/ResultsComponentBindings';\nimport { IQueryResult } from '../../rest/QueryResult';\nimport { Utils } from '../../utils/Utils';\nimport { ChatterUtils } from '../../utils/ChatterUtils';\nimport { l } from '../../strings/Strings';\nimport { Initialization } from '../Base/Initialization';\nimport { $$ } from '../../utils/Dom';\nimport { exportGlobally } from '../../GlobalExports';\n\nexport interface IChatterPostAttachmentOption {}\n\nexport class ChatterPostAttachment extends Component {\n  static ID = 'ChatterPostAttachment';\n\n  static doExport = () => {\n    exportGlobally({\n      ChatterPostAttachment: ChatterPostAttachment\n    });\n  };\n\n  constructor(\n    public element: HTMLElement,\n    public options?: IChatterPostAttachmentOption,\n    public bindings?: IResultsComponentBindings,\n    public result?: IQueryResult\n  ) {\n    super(element, ChatterPostAttachment.ID, bindings);\n\n    if (!Utils.isNullOrUndefined(Utils.getFieldValue(result, 'sfcontentversionid'))) {\n      let rootElement = $$('div', {\n        className: 'coveo-chatter-result-box-row'\n      });\n      $$(element).append(rootElement.el);\n\n      let icon = $$('div', {\n        className: 'coveo-sprites-common-system coveo-chatter-result-box-icon'\n      });\n      rootElement.append(icon.el);\n\n      let linkElement = $$('a', {\n        href: ChatterUtils.buildURI(\n          result.clickUri,\n          Utils.getFieldValue(result, 'sffeeditemid'),\n          Utils.getFieldValue(result, 'sfcontentversionid')\n        )\n      });\n\n      rootElement.append(linkElement.el);\n\n      const fieldValue = Utils.getFirstAvailableFieldValue(result, ['sfcontentfilename', 'sftitle', 'sf_title']);\n\n      if (!Utils.isNullOrUndefined(fieldValue)) {\n        linkElement.text(fieldValue);\n      } else {\n        linkElement.text(l('ShowAttachment'));\n      }\n    }\n  }\n}\n\nInitialization.registerAutoCreateComponent(ChatterPostAttachment);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ChatterPostAttachment/ChatterPostAttachment.ts","import { Component } from '../Base/Component';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { IResultsComponentBindings } from '../Base/ResultsComponentBindings';\nimport { IQueryResult } from '../../rest/QueryResult';\nimport { ChatterUtils } from '../../utils/ChatterUtils';\nimport { Initialization } from '../Base/Initialization';\nimport { l } from '../../strings/Strings';\nimport { Utils } from '../../utils/Utils';\nimport { $$ } from '../../utils/Dom';\nimport { exportGlobally } from '../../GlobalExports';\n\nexport interface IChatterPostedByOption {\n  enablePostedOn: boolean;\n  useFromInstead: boolean;\n  openInPrimaryTab: boolean;\n  openInSubTab: boolean;\n}\n\nexport class ChatterPostedBy extends Component {\n  static ID = 'ChatterPostedBy';\n\n  static doExport = () => {\n    exportGlobally({\n      ChatterPostedBy: ChatterPostedBy\n    });\n  };\n\n  static options: IChatterPostedByOption = {\n    enablePostedOn: ComponentOptions.buildBooleanOption({ defaultValue: true }),\n    useFromInstead: ComponentOptions.buildBooleanOption({ defaultValue: false }),\n    openInPrimaryTab: ComponentOptions.buildBooleanOption({ defaultValue: false }),\n    openInSubTab: ComponentOptions.buildBooleanOption({ defaultValue: true })\n  };\n\n  static fields = ['sfcreatedbyname', 'sfcreatedbyid', 'sffeeditemid', 'sfuserid', 'sfinsertedbyid', 'sfparentid', 'sfparentname'];\n\n  constructor(\n    public element: HTMLElement,\n    public options?: IChatterPostedByOption,\n    public bindings?: IResultsComponentBindings,\n    public result?: IQueryResult\n  ) {\n    super(element, ChatterPostedBy.ID, bindings);\n    this.options = ComponentOptions.initComponentOptions(element, ChatterPostedBy, options);\n\n    if (Utils.getFieldValue(this.result, 'sfcreatedbyname') != null) {\n      let from = $$('span');\n      from.text(`${this.options.useFromInstead ? l('From') : l('PostedBy')} `);\n      $$(element).append(from.el);\n      $$(element).append(\n        this.renderLink(Utils.getFieldValue(this.result, 'sfcreatedbyname'), Utils.getFieldValue(this.result, 'sfcreatedbyid'))\n      );\n\n      if (\n        this.options.enablePostedOn &&\n        !Utils.isNullOrUndefined(Utils.getFieldValue(this.result, 'sfparentname')) &&\n        !Utils.isNullOrUndefined(Utils.getFieldValue(this.result, 'sfparentid'))\n      ) {\n        // Post on user's wall\n        if (\n          !Utils.isNullOrUndefined(Utils.getFieldValue(this.result, 'sfuserid')) &&\n          Utils.getFieldValue(this.result, 'sfuserid') != Utils.getFieldValue(this.result, 'sfinsertedbyid')\n        ) {\n          let onFeed = $$('span');\n          let content = ` ${l(\n            'OnFeed',\n            this.renderLink(Utils.getFieldValue(this.result, 'sfparentname'), Utils.getFieldValue(this.result, 'sfparentid')).outerHTML\n          )}`;\n          onFeed.el.innerHTML = content;\n          $$(element).append(onFeed.el);\n        } else if (Utils.isNullOrUndefined(Utils.getFieldValue(this.result, 'sfuserid'))) {\n          let onUser = $$('span');\n          onUser.text(` ${l('On').toLowerCase()} `);\n          $$(element).append(onUser.el);\n          $$(element).append(\n            this.renderLink(Utils.getFieldValue(this.result, 'sfparentname'), Utils.getFieldValue(this.result, 'sfparentid'))\n          );\n        }\n      }\n    }\n  }\n\n  private renderLink(text: string, id: string): HTMLElement {\n    let link = $$('a', {\n      href: ChatterUtils.buildURI(this.result.clickUri, Utils.getFieldValue(this.result, 'sffeeditemid'), id)\n    });\n    link.text(text);\n    return ChatterUtils.bindClickEventToElement(link.el, this.options.openInPrimaryTab, this.options.openInSubTab);\n  }\n}\n\nInitialization.registerAutoCreateComponent(ChatterPostedBy);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ChatterPostedBy/ChatterPostedBy.ts","import { Component } from '../Base/Component';\nimport { IResultsComponentBindings } from '../Base/ResultsComponentBindings';\nimport { IQueryResult } from '../../rest/QueryResult';\nimport { Utils } from '../../utils/Utils';\nimport { Initialization } from '../Base/Initialization';\nimport { $$ } from '../../utils/Dom';\nimport { exportGlobally } from '../../GlobalExports';\n\nexport interface IChatterTopicOption {}\n\nexport class ChatterTopic extends Component {\n  static ID = 'ChatterTopic';\n\n  static doExport = () => {\n    exportGlobally({\n      ChatterTopic: ChatterTopic\n    });\n  };\n\n  constructor(\n    public element: HTMLElement,\n    public options?: IChatterTopicOption,\n    public bindings?: IResultsComponentBindings,\n    public result?: IQueryResult\n  ) {\n    super(element, ChatterTopic.ID, bindings);\n\n    if (!Utils.isNullOrUndefined(Utils.getFieldValue(this.result, 'coveochatterfeedtopics'))) {\n      let rootElement = $$('div', {\n        className: 'coveo-chatter-result-box-row'\n      });\n\n      let topics = Utils.getFieldValue(result, 'coveochatterfeedtopics').split(';');\n\n      let icon = $$('div', {\n        className: 'coveo-sprites-common-tagging_tag coveo-chatter-result-box-icon'\n      });\n      rootElement.append(icon.el);\n\n      for (let i = 0; i < topics.length; i++) {\n        let topic = $$('span');\n        topic.text(topics[i]);\n        rootElement.append(topic.el);\n\n        if (i < topics.length - 1) {\n          let separator = $$('span');\n          separator.text(', ');\n          rootElement.append(separator.el);\n        }\n      }\n      $$(element).append(rootElement.el);\n    }\n  }\n}\n\nInitialization.registerAutoCreateComponent(ChatterTopic);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ChatterTopic/ChatterTopic.ts","import 'styling/_DidYouMean';\nimport * as _ from 'underscore';\nimport { exportGlobally } from '../../GlobalExports';\nimport { IBuildingQueryEventArgs, INoResultsEventArgs, IQuerySuccessEventArgs, QueryEvents } from '../../events/QueryEvents';\nimport { Assert } from '../../misc/Assert';\nimport { QueryStateModel } from '../../models/QueryStateModel';\nimport { IQueryCorrection } from '../../rest/QueryCorrection';\nimport { l } from '../../strings/Strings';\nimport { $$ } from '../../utils/Dom';\nimport { StringUtils } from '../../utils/StringUtils';\nimport { Utils } from '../../utils/Utils';\nimport { IAnalyticsNoMeta, analyticsActionCauseList } from '../Analytics/AnalyticsActionListMeta';\nimport { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { Initialization } from '../Base/Initialization';\n\nexport interface IDidYouMeanOptions {\n  enableAutoCorrection?: boolean;\n}\n\n/**\n * The DidYouMean component is responsible for displaying query corrections. If this component is in the page and the\n * query returns no result but finds a possible query correction, the component either suggests the correction or\n * automatically triggers a new query with the suggested term.\n */\nexport class DidYouMean extends Component {\n  static ID = 'DidYouMean';\n\n  static doExport = () => {\n    exportGlobally({\n      DidYouMean: DidYouMean\n    });\n  };\n\n  /**\n   * The options for the component\n   * @componentOptions\n   */\n  static options: IDidYouMeanOptions = {\n    /**\n     * Specifies whether the DidYouMean component automatically triggers a new query when a query returns no result and\n     * a possible correction is available.\n     *\n     * Default value is `true`.\n     */\n    enableAutoCorrection: ComponentOptions.buildBooleanOption({ defaultValue: true })\n  };\n\n  public correctedTerm: string;\n\n  private hideNext: boolean;\n\n  private ignoreNextNoResults: boolean;\n\n  /**\n   * Creates a new DidYouMean component.\n   * @param element The HTMLElement on which to instantiate the component.\n   * @param options The options for the DidYouMean component.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time).\n   */\n  constructor(public element: HTMLElement, public options?: IDidYouMeanOptions, public bindings?: IComponentBindings) {\n    super(element, DidYouMean.ID, bindings);\n\n    this.options = ComponentOptions.initComponentOptions(element, DidYouMean, options);\n    Assert.exists(element);\n    Assert.exists(this.options);\n\n    this.hideNext = true;\n\n    this.ignoreNextNoResults = false;\n\n    this.correctedTerm = null;\n\n    this.bind.onRootElement(QueryEvents.buildingQuery, this.handlePrepareQueryBuilder);\n    this.bind.onRootElement(QueryEvents.querySuccess, this.handleProcessNewQueryResults);\n    this.bind.onRootElement(QueryEvents.noResults, this.handleNoResults);\n    this.bind.onRootElement(QueryEvents.newQuery, this.handleNewQuery);\n    $$(this.element).hide();\n  }\n\n  /**\n   * Executes a query with the corrected term.\n   * Throws an exception if the corrected term has not been initialized.\n   * If successful, logs a `didyoumeanClick` event in the usage analytics.\n   */\n  public doQueryWithCorrectedTerm() {\n    Assert.exists(this.correctedTerm);\n    this.queryStateModel.set(QueryStateModel.attributesEnum.q, this.correctedTerm);\n    this.queryController.deferExecuteQuery({\n      beforeExecuteQuery: () => this.usageAnalytics.logSearchEvent<IAnalyticsNoMeta>(analyticsActionCauseList.didyoumeanClick, {})\n    });\n  }\n\n  private handleNewQuery() {\n    if (this.hideNext) {\n      $$(this.element).empty();\n      $$(this.element).hide();\n      this.correctedTerm = null;\n    } else {\n      this.hideNext = true;\n    }\n  }\n\n  private handlePrepareQueryBuilder(data: IBuildingQueryEventArgs) {\n    Assert.exists(data);\n    data.queryBuilder.enableDidYouMean = true;\n  }\n\n  private handleNoResults(data: INoResultsEventArgs) {\n    if (this.ignoreNextNoResults) {\n      this.logger.warn('Query is being automatically corrected twice while returning no results.');\n      return;\n    }\n\n    // We do not auto-correct on search-as-you-type queries\n    if (Utils.isNonEmptyArray(data.results.queryCorrections) && !data.searchAsYouType && this.options.enableAutoCorrection) {\n      this.ignoreNextNoResults = true;\n      let originalQuery = this.queryStateModel.get(QueryStateModel.attributesEnum.q);\n      this.correctedTerm = data.results.queryCorrections[0].correctedQuery;\n      let correctedSentence = this.buildCorrectedSentence(data.results.queryCorrections[0]);\n      this.queryStateModel.set(QueryStateModel.attributesEnum.q, data.results.queryCorrections[0].correctedQuery);\n      this.searchInterface.historyManager.replaceState(this.queryStateModel.getAttributes());\n      data.retryTheQuery = true;\n      this.hideNext = false;\n\n      let noResultsFor = $$('div', { className: 'coveo-did-you-mean-no-results-for' }).el;\n      noResultsFor.innerHTML = l(\n        'noResultFor',\n        '<span class=\"coveo-highlight coveo-did-you-mean-highlight\">' + StringUtils.htmlEncode(originalQuery) + '</span>'\n      );\n      this.element.appendChild(noResultsFor);\n\n      let automaticCorrect = $$('div', { className: 'coveo-did-you-mean-automatic-correct' }).el;\n      automaticCorrect.innerHTML = l('autoCorrectedQueryTo', '<span class=\"coveo-highlight\">' + correctedSentence + '</span>');\n      this.element.appendChild(automaticCorrect);\n\n      $$(this.element).show();\n      this.usageAnalytics.logSearchEvent<IAnalyticsNoMeta>(analyticsActionCauseList.didyoumeanAutomatic, {});\n    }\n  }\n\n  private handleProcessNewQueryResults(data: IQuerySuccessEventArgs) {\n    Assert.exists(data);\n    Assert.exists(data.results);\n    this.ignoreNextNoResults = false;\n\n    let results = data.results;\n    this.logger.trace('Received query results from new query', results);\n\n    if (Utils.isNonEmptyArray(results.queryCorrections)) {\n      const correctedSentence = this.buildCorrectedSentence(results.queryCorrections[0]);\n      this.correctedTerm = results.queryCorrections[0].correctedQuery;\n\n      const correctedWordEl = $$('button', { type: 'button' }, correctedSentence).el;\n      const didYouMean = $$('div', { className: 'coveo-did-you-mean-suggestion' }, l('didYouMean', correctedWordEl.outerHTML));\n      this.element.appendChild(didYouMean.el);\n\n      const appendedCorrectedWordEl = didYouMean.find(correctedWordEl.tagName);\n      $$(appendedCorrectedWordEl).on('click', () => this.doQueryWithCorrectedTerm());\n\n      $$(this.element).show();\n    }\n  }\n\n  private buildCorrectedSentence(correction: IQueryCorrection) {\n    let toReturn = [];\n    let tagStart = \"<span class='coveo-did-you-mean-word-correction'>\";\n    let tagEnd = '</span>';\n    let currentOffset = 0;\n    _.each(correction.wordCorrections, wordCorrection => {\n      toReturn.push(StringUtils.htmlEncode(correction.correctedQuery.slice(currentOffset, wordCorrection.offset)));\n      currentOffset = wordCorrection.offset;\n      toReturn.push(tagStart);\n      toReturn.push(StringUtils.htmlEncode(correction.correctedQuery.slice(currentOffset, wordCorrection.length + currentOffset)));\n      toReturn.push(tagEnd);\n      currentOffset = wordCorrection.offset + wordCorrection.length;\n    });\n    toReturn.push(StringUtils.htmlEncode(correction.correctedQuery.slice(currentOffset)));\n    return toReturn.join('');\n  }\n}\n\nInitialization.registerAutoCreateComponent(DidYouMean);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/DidYouMean/DidYouMean.ts","import {\n  DistanceEvents,\n  IGeolocationPosition,\n  IGeolocationPositionProvider,\n  IPositionResolvedEventArgs,\n  IResolvingPositionEventArgs\n} from '../../events/DistanceEvents';\nimport { IInitializationEventArgs } from '../../events/InitializationEvents';\nimport { IBuildingQueryEventArgs } from '../../events/QueryEvents';\nimport { InitializationEvents, QueryEvents } from '../../EventsModules';\nimport { exportGlobally } from '../../GlobalExports';\nimport { IQueryFunction } from '../../rest/QueryFunction';\nimport { $$ } from '../../utils/Dom';\nimport { analyticsActionCauseList } from '../Analytics/AnalyticsActionListMeta';\nimport { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { IFieldOption } from '../Base/IComponentOptions';\nimport { Initialization } from '../Base/Initialization';\nimport { get } from '../Base/RegisteredNamedMethods';\nimport { GoogleApiPositionProvider } from './GoogleApiPositionProvider';\nimport { NavigatorPositionProvider } from './NavigatorPositionProvider';\nimport { StaticPositionProvider } from './StaticPositionProvider';\n\nexport interface IDistanceOptions {\n  distanceField: IFieldOption;\n  latitudeField: IFieldOption;\n  longitudeField: IFieldOption;\n  unitConversionFactor: number;\n  disabledDistanceCssClass: string;\n  latitudeValue: number;\n  longitudeValue: number;\n  googleApiKey: string;\n  useNavigator: boolean;\n  triggerNewQueryOnNewPosition: boolean;\n  cancelQueryUntilPositionResolved: boolean;\n}\n\n/**\n * The `DistanceResources` component defines a field that computes the distance according to the current position of the\n * end user.\n *\n * Components relying on the current distance should be disabled until this component successfully provides a distance.\n *\n * See also [`DistanceEvents`]{@link DistanceEvents}.\n *\n * @availablesince [November 2017 Release (v2.3477.9)](https://docs.coveo.com/en/373/#november-2017-release-v234779)\n */\nexport class DistanceResources extends Component {\n  public static ID = 'DistanceResources';\n  static doExport = () => {\n    exportGlobally({\n      DistanceResources: DistanceResources\n    });\n  };\n  private latitude: number;\n  private longitude: number;\n  private lastPositionRequest: Promise<void>;\n  private isFirstPositionResolved = false;\n\n  /**\n   * The possible options for a DistanceResources.\n   * @componentOptions\n   */\n  public static options: IDistanceOptions = {\n    /**\n     * Specifies the name of the field in which to store the distance value.\n     *\n     * Specifying a value for this option is required for the `DistanceResources` component to work.\n     */\n    distanceField: ComponentOptions.buildFieldOption({\n      required: true\n    }),\n\n    /**\n     * Specifies the name of the field that contains the latitude value.\n     *\n     * **Note:**\n     * > The field you specify for this option must be an existing numerical field in your index (see\n     * > [Adding and Managing Fields](https://docs.coveo.com/en/1833/). Otherwise, your query responses\n     * > will contain a `QueryExceptionInvalidQueryFunctionField` or QueryExceptionInvalidQueryFunctionFieldType`\n     * > exception, and the DistanceResources component will be unable to evaluate distances.\n     *\n     * Specifying a value for this option is required for the `DistanceResources` component to work.\n     */\n    latitudeField: ComponentOptions.buildFieldOption({\n      required: true\n    }),\n\n    /**\n     * Specifies the name of the field that contains the longitude value.\n     *\n     * **Note:**\n     * > The field you specify for this option must be an existing numerical field in your index (see\n     * > [Adding and Managing Fields](https://docs.coveo.com/en/1833/). Otherwise, your query responses\n     * > will contain a `QueryExceptionInvalidQueryFunctionField` or QueryExceptionInvalidQueryFunctionFieldType`\n     * > exception, and the DistanceResources component will be unable to evaluate distances.\n     *\n     * Specifying a value for this option is required for the `DistanceResources` component to work.\n     */\n    longitudeField: ComponentOptions.buildFieldOption({\n      required: true\n    }),\n\n    /**\n     * The conversion factor to apply to the base distance unit (meter).\n     *\n     * **Note:**\n     * > - If you want to convert distances to kilometers, you should set the `unitConversionFactor` to `1000`.\n     * > - If you want to convert distance to miles, you should set the `unitConversionFactor` to `1610` (one mile is\n     * > approximately equal to 1610 meters).\n     *\n     * Default value is `1000`.\n     */\n    unitConversionFactor: ComponentOptions.buildNumberOption({\n      defaultValue: 1000,\n      validator: value => {\n        return !!value && value > 0;\n      }\n    }),\n\n    /**\n     * The CSS class for components that need to be re-enabled when the `DistanceResources` component successfully\n     * provides a distance.\n     *\n     * Default value is `coveo-distance-disabled`.\n     */\n    disabledDistanceCssClass: ComponentOptions.buildStringOption({\n      defaultValue: 'coveo-distance-disabled'\n    }),\n\n    /**\n     * The latitude to use if no other position was provided.\n     *\n     * **Note:**\n     * > You must also specify a [`longitudeValue`]{@link DistanceResources.options.longitudeValue} if you specify a\n     * > `latitudeValue`.\n     */\n    latitudeValue: ComponentOptions.buildNumberOption({\n      float: true\n    }),\n\n    /**\n     * The longitude to use if no other position was provided.\n     *\n     * **Note:**\n     * > You must also specify a [`latitudeValue`]{@link DistanceResources.options.latitudeValue} if you specify a\n     * > `longitudeValue`.\n     */\n    longitudeValue: ComponentOptions.buildNumberOption({\n      float: true\n    }),\n\n    /**\n     * The API key to use to request the Google API geolocation service.\n     *\n     * If you do not specify a value for this option, the `DistanceResources` component does not try to request the\n     * service.\n     */\n    googleApiKey: ComponentOptions.buildStringOption(),\n\n    /**\n     * Whether to request the geolocation service of the web browser.\n     *\n     * If not defined, will not try to request the service.\n     *\n     * **Note:**\n     * > Recent web browsers typically require a site to be in HTTPS to enable their geolocation service.\n     *\n     * If you do not specify a value for this option, the `DistanceResources` component does not try to request the\n     * service.\n     */\n    useNavigator: ComponentOptions.buildBooleanOption(),\n\n    /**\n     * Whether to execute a new query when the `DistanceResources` component successfully provides a new position.\n     *\n     * Default value is `false`.\n     */\n    triggerNewQueryOnNewPosition: ComponentOptions.buildBooleanOption({\n      defaultValue: false\n    }),\n\n    /**\n     * Whether to cancel all the queries until the `DistanceResources` component successfully resolves a position.\n     *\n     * Default value is `true`\n     */\n    cancelQueryUntilPositionResolved: ComponentOptions.buildBooleanOption({\n      defaultValue: true\n    })\n  };\n\n  /**\n   * Creates a new `DistanceResources` component.\n   * @param element The HTMLElement on which to instantiate the component.\n   * @param options The options for the `DistanceResources` component.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time).\n   */\n  constructor(public element: HTMLElement, public options: IDistanceOptions, public bindings: IComponentBindings) {\n    super(element, DistanceResources.ID, bindings);\n\n    this.options = ComponentOptions.initComponentOptions(element, DistanceResources, options);\n    this.registerDistanceQuery();\n    this.bind.onRootElement(InitializationEvents.afterComponentsInitialization, (args: IInitializationEventArgs) =>\n      this.onAfterComponentsInitialization(args)\n    );\n  }\n\n  /**\n   * Overrides the current position with the provided values.\n   *\n   * **Note:**\n   * > Calling this method does not automatically trigger a query.\n   *\n   * @param latitude The latitude to set.\n   * @param longitude The longitude to set.\n   */\n  public setPosition(latitude: number, longitude: number): void {\n    this.enable();\n    this.latitude = latitude;\n    this.longitude = longitude;\n\n    const args: IPositionResolvedEventArgs = {\n      position: {\n        latitude: latitude,\n        longitude: longitude\n      }\n    };\n\n    this.bind.trigger(this.element, DistanceEvents.onPositionResolved, args);\n\n    const shouldTriggerQuery = this.shouldTriggerQueryWhenPositionSet();\n    this.isFirstPositionResolved = true;\n    if (shouldTriggerQuery) {\n      this.sendAnalytics();\n      this.queryController.executeQuery();\n    }\n  }\n\n  /**\n   * Returns a promise of the last position resolved using the registered position providers.\n   *\n   * @returns {Promise<IGeolocationPosition>} A promise of the last resolved position value.\n   */\n  public async getLastPositionRequest(): Promise<IGeolocationPosition> {\n    if (!!this.lastPositionRequest) {\n      await this.lastPositionRequest;\n      return {\n        latitude: this.latitude,\n        longitude: this.longitude\n      };\n    } else {\n      Promise.reject('No position request was executed yet.');\n    }\n  }\n\n  private sendAnalytics() {\n    this.usageAnalytics.logSearchEvent(analyticsActionCauseList.positionSet, {});\n  }\n\n  private shouldTriggerQueryWhenPositionSet() {\n    // Don't trigger the query if the first one is not yet executed.\n    return !this.queryController.firstQuery && this.options.triggerNewQueryOnNewPosition;\n  }\n\n  private onAfterComponentsInitialization(afterComponentsInitializationArgs: IInitializationEventArgs): void {\n    const args: IResolvingPositionEventArgs = {\n      providers: this.getProvidersFromOptions()\n    };\n\n    this.bind.trigger(this.element, DistanceEvents.onResolvingPosition, args);\n\n    this.lastPositionRequest = this.tryToSetPositionFromProviders(args.providers);\n\n    if (this.options.cancelQueryUntilPositionResolved) {\n      afterComponentsInitializationArgs.defer.push(this.lastPositionRequest);\n    }\n  }\n\n  private async tryToSetPositionFromProviders(providers: IGeolocationPositionProvider[]): Promise<void> {\n    try {\n      const position = await this.tryGetPositionFromProviders(providers);\n      if (position) {\n        this.setPosition(position.latitude, position.longitude);\n      } else {\n        this.triggerDistanceNotSet();\n      }\n    } catch (error) {\n      this.logger.error('An error occurred while trying to resolve the current position.', error);\n      this.triggerDistanceNotSet();\n    }\n  }\n\n  private getProvidersFromOptions(): IGeolocationPositionProvider[] {\n    const providers: IGeolocationPositionProvider[] = [];\n\n    if (this.options.useNavigator) {\n      providers.push(new NavigatorPositionProvider());\n    }\n\n    if (this.options.googleApiKey) {\n      providers.push(new GoogleApiPositionProvider(this.options.googleApiKey));\n    }\n\n    if (this.options.longitudeValue && this.options.latitudeValue) {\n      providers.push(new StaticPositionProvider(this.options.latitudeValue, this.options.longitudeValue));\n    }\n\n    return providers;\n  }\n\n  private async tryGetPositionFromProviders(providers: IGeolocationPositionProvider[]): Promise<IGeolocationPosition> {\n    while (providers.length > 0) {\n      const provider = providers.shift();\n      try {\n        const position = await provider.getPosition();\n        if (!!position.latitude && !!position.longitude) {\n          return position;\n        }\n      } catch (error) {\n        this.logger.warn('An error occurred while trying to resolve the position within a position provider.', error);\n      }\n    }\n    return;\n  }\n\n  private triggerDistanceNotSet(): void {\n    this.isFirstPositionResolved = true;\n    this.logger.warn(\n      `None of the given position providers could resolve the current position. The distance field will not be calculated and the distance components will be disabled until the next call to 'setPosition'.`\n    );\n    this.bind.trigger(this.element, DistanceEvents.onPositionNotResolved, {});\n    this.disable();\n  }\n\n  private registerDistanceQuery(): void {\n    this.bind.onRootElement(QueryEvents.buildingQuery, (args: IBuildingQueryEventArgs) => {\n      if (this.isFirstPositionResolved) {\n        if (args && args.queryBuilder) {\n          const geoQueryFunction: IQueryFunction = {\n            function: this.getConvertedUnitsFunction(\n              `dist(${this.options.latitudeField}, ${this.options.longitudeField}, ${this.latitude}, ${this.longitude})`\n            ),\n            fieldName: `${this.options.distanceField}`\n          };\n          args.queryBuilder.queryFunctions.push(geoQueryFunction);\n          this.enableDistanceComponents();\n        }\n      }\n    });\n  }\n\n  private enableDistanceComponents(): void {\n    $$(this.root)\n      .findAll(`.${this.options.disabledDistanceCssClass}`)\n      .forEach(element => {\n        try {\n          element.classList.remove(this.options.disabledDistanceCssClass);\n          const coveoComponent = get(element);\n          if (coveoComponent) {\n            coveoComponent.enable();\n          }\n        } catch (exception) {\n          this.logger.error('Could not re-enable distance component.', exception, element);\n        }\n      });\n  }\n\n  private getConvertedUnitsFunction(queryFunction: string): string {\n    return `${queryFunction}/${this.options.unitConversionFactor}`;\n  }\n}\n\nInitialization.registerAutoCreateComponent(DistanceResources);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Distance/DistanceResources.ts","import 'styling/_ErrorReport';\nimport { IQueryErrorEventArgs, QueryEvents } from '../../events/QueryEvents';\nimport { exportGlobally } from '../../GlobalExports';\nimport { Assert } from '../../misc/Assert';\nimport { IEndpointError } from '../../rest/EndpointError';\nimport { MissingAuthenticationError } from '../../rest/MissingAuthenticationError';\nimport { l } from '../../strings/Strings';\nimport { AccessibleButton } from '../../utils/AccessibleButton';\nimport { $$, Dom } from '../../utils/Dom';\nimport { analyticsActionCauseList, IAnalyticsNoMeta } from '../Analytics/AnalyticsActionListMeta';\nimport { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { Initialization } from '../Base/Initialization';\n\nexport interface IErrorReportOptions {\n  showDetailedError: boolean;\n}\n\n/**\n * The ErrorReport component takes care of handling fatal error when doing a query on the index / Search API.\n *\n * For example, the ErrorReport component displays a message when the service responds with a 401 or 503 error. This\n * component also renders a small text area with the JSON content of the error response, for debugging purposes.\n */\nexport class ErrorReport extends Component {\n  static ID = 'ErrorReport';\n\n  static doExport = () => {\n    exportGlobally({\n      ErrorReport: ErrorReport\n    });\n  };\n\n  /**\n   * The options for the component\n   * @componentOptions\n   */\n  static options: IErrorReportOptions = {\n    /**\n     * Specifies whether to display a detailed error message as a JSON in a text content area.\n     *\n     * Default value is `true`.\n     */\n    showDetailedError: ComponentOptions.buildBooleanOption({ defaultValue: true })\n  };\n  private organizationId;\n  private message: Dom;\n  private container: Dom;\n  private helpSuggestion: Dom;\n  private closePopup: () => void;\n\n  /**\n   * Creates a new ErrorReport component.\n   * @param element The HTMLElement on which to instantiate the component.\n   * @param options The options for the ErrorReport component.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time).\n   */\n  constructor(public element: HTMLElement, public options?: IErrorReportOptions, bindings?: IComponentBindings) {\n    super(element, ErrorReport.ID, bindings);\n    this.options = ComponentOptions.initComponentOptions(element, ErrorReport, options);\n    this.container = $$('div', { className: 'coveo-error-report-container' });\n    this.element.appendChild(this.container.el);\n\n    if (this.options.showDetailedError) {\n      this.message = $$('div', {\n        className: 'coveo-error-report-message'\n      });\n      this.container.append(this.message.el);\n    }\n    this.helpSuggestion = $$('div', {\n      className: 'coveo-error-report-help-suggestion'\n    });\n\n    $$(this.element).hide();\n\n    this.bind.onRootElement(QueryEvents.newQuery, () => this.handleNewQuery());\n    this.bind.onRootElement(QueryEvents.queryError, (data: IQueryErrorEventArgs) => this.handleQueryError(data));\n  }\n\n  /**\n   * Performs the \"back\" action in the browser.\n   * Also logs an `errorBack` event in the usage analytics.\n   */\n  public back(): void {\n    this.usageAnalytics.logCustomEvent<IAnalyticsNoMeta>(analyticsActionCauseList.errorBack, {}, this.root);\n    this.usageAnalytics.logSearchEvent<IAnalyticsNoMeta>(analyticsActionCauseList.errorBack, {});\n    history.back();\n  }\n\n  /**\n   * Resets the current state of the query and triggers a new query.\n   * Also logs an `errorClearQuery` event in the usage analytics.\n   */\n  public reset(): void {\n    this.queryStateModel.reset();\n    this.usageAnalytics.logSearchEvent<IAnalyticsNoMeta>(analyticsActionCauseList.errorClearQuery, {});\n    this.usageAnalytics.logCustomEvent<IAnalyticsNoMeta>(analyticsActionCauseList.errorClearQuery, {}, this.root);\n    this.queryController.executeQuery();\n  }\n\n  /**\n   * Retries the same query, in case of a temporary service error.\n   * Also logs an `errorRetry` event in the usage analytics.\n   */\n  public retry(): void {\n    this.usageAnalytics.logSearchEvent<IAnalyticsNoMeta>(analyticsActionCauseList.errorRetry, {});\n    this.usageAnalytics.logCustomEvent<IAnalyticsNoMeta>(analyticsActionCauseList.errorRetry, {}, this.root);\n    this.queryController.executeQuery();\n  }\n\n  private buildOrGetTitleElements() {\n    const titleElement = $$(this.element).find('.coveo-error-report-title');\n\n    let title: Dom;\n    if (titleElement) {\n      title = $$(titleElement);\n    } else {\n      title = $$('div', { className: 'coveo-error-report-title' });\n      this.container.prepend(title.el);\n    }\n\n    let firstHeading = title.find('h1');\n\n    if (!firstHeading) {\n      firstHeading = $$('h1').el;\n      title.append(firstHeading);\n    }\n\n    let secondHeading = title.find('h2');\n    if (!secondHeading) {\n      secondHeading = $$('h2').el;\n      title.append(secondHeading);\n    }\n\n    return {\n      title,\n      h1: $$(firstHeading),\n      h2: $$(secondHeading)\n    };\n  }\n\n  private setErrorTitle(errorName?: string, helpSuggestion?: string): void {\n    const errorTitle = {\n      h1: errorName ? l(errorName) : l('OopsError'),\n      h2: helpSuggestion ? l(helpSuggestion) : l('ProblemPersists')\n    };\n\n    const { h1, h2 } = this.buildOrGetTitleElements();\n    if (h1 && h2) {\n      $$(h1).text(errorTitle.h1);\n      $$(h2).text(errorTitle.h2);\n    }\n  }\n\n  private buildPrevious(): HTMLElement {\n    const previous = $$(\n      'span',\n      {\n        className: 'coveo-error-report-previous'\n      },\n      l('GoBack')\n    );\n\n    new AccessibleButton()\n      .withElement(previous)\n      .withSelectAction(() => this.back())\n      .withLabel(l('GoBack'))\n      .build();\n\n    return previous.el;\n  }\n\n  private buildReset(): HTMLElement {\n    const reset = $$(\n      'span',\n      {\n        className: 'coveo-error-report-clear'\n      },\n      l('Reset')\n    );\n\n    new AccessibleButton()\n      .withElement(reset)\n      .withSelectAction(() => this.reset())\n      .withLabel(l('Reset'))\n      .build();\n\n    return reset.el;\n  }\n\n  private buildRetry(): HTMLElement {\n    const retry = $$(\n      'span',\n      {\n        className: 'coveo-error-report-retry'\n      },\n      l('Retry')\n    );\n\n    new AccessibleButton()\n      .withElement(retry)\n      .withSelectAction(() => this.retry())\n      .withLabel(l('Retry'))\n      .build();\n\n    return retry.el;\n  }\n\n  private handleNewQuery(): void {\n    $$(this.element).hide();\n    const { h1, h2 } = this.buildOrGetTitleElements();\n    h1.remove();\n    h2.remove();\n    if (this.closePopup != null) {\n      this.closePopup();\n    }\n  }\n\n  private handleQueryError(data: IQueryErrorEventArgs): void {\n    Assert.exists(data);\n    Assert.exists(data.error);\n\n    if (data.endpoint.options.queryStringArguments.organizationId) {\n      this.organizationId = data.endpoint.options.queryStringArguments.organizationId;\n    } else {\n      this.organizationId = l('CoveoOrganization');\n    }\n\n    // Do not display the panel if the error is for missing authentication. The\n    // appropriate authentication provider should take care of redirecting.\n    if ((<MissingAuthenticationError>data.error).isMissingAuthentication) {\n      return;\n    }\n\n    switch (data.error.name) {\n      case 'NoEndpointsException':\n        this.options.showDetailedError = false;\n        this.buildEndpointErrorElements('https://docs.coveo.com/en/331/');\n        this.setErrorTitle(l('NoEndpoints', this.organizationId), l('AddSources'));\n        break;\n\n      case 'InvalidTokenException':\n        this.options.showDetailedError = false;\n        this.buildEndpointErrorElements('https://docs.coveo.com/en/56/');\n        this.setErrorTitle(l('CannotAccess', this.organizationId), l('InvalidToken'));\n        break;\n\n      case 'GroupByAndFacetBothExistingException':\n        this.options.showDetailedError = false;\n        this.buildEndpointErrorElements('https://docs.coveo.com/en/2917');\n        this.setErrorTitle(undefined, l('GroupByAndFacetRequestsCannotCoexist'));\n        break;\n\n      case 'OrganizationIsPausedException':\n        this.options.showDetailedError = false;\n        this.buildEndpointErrorElements('https://docs.coveo.com/l6af0467');\n        this.setErrorTitle(l('OrganizationWillResume'), l('OrganizationIsPaused'));\n        break;\n\n      default:\n        this.buildOptionsElement();\n        this.setErrorTitle();\n    }\n\n    if (this.options.showDetailedError) {\n      this.message.empty();\n      const moreInfo = $$(\n        'span',\n        {\n          className: 'coveo-error-report-more-info'\n        },\n        l('MoreInfo')\n      );\n\n      moreInfo.on('click', () => {\n        moreInfo.empty();\n        this.message.el.appendChild(this.buildErrorInfo(data.error));\n      });\n\n      this.message.el.appendChild(moreInfo.el);\n    }\n\n    $$(this.element).show();\n  }\n\n  private buildErrorInfo(data: IEndpointError): HTMLElement {\n    const errorInfo = $$('div', {\n      className: 'coveo-error-info'\n    });\n\n    let textArea = $$('textarea', undefined, JSON.stringify(data, null, 2));\n    errorInfo.el.appendChild(textArea.el);\n\n    const infoLabel = $$(\n      'div',\n      {\n        className: 'coveo-error-info-label'\n      },\n      l('CopyPasteToSupport')\n    );\n    errorInfo.el.appendChild(infoLabel.el);\n\n    return errorInfo.el;\n  }\n\n  private buildOptionsElement() {\n    const oldOptions = this.container.find('.coveo-error-report-options');\n    if (oldOptions) {\n      $$(oldOptions).remove();\n    }\n    const optionsElement = $$('div', { className: 'coveo-error-report-options' });\n    optionsElement.el.appendChild(this.buildPrevious());\n    optionsElement.el.appendChild(this.buildReset());\n    optionsElement.el.appendChild(this.buildRetry());\n    this.container.append(optionsElement.el);\n  }\n\n  private buildEndpointErrorElements(helpLink: string = 'https://docs.coveo.com/en/331/') {\n    this.helpSuggestion.empty();\n\n    const link = $$('a', {\n      href: helpLink,\n      className: 'coveo-error-report-help-link'\n    });\n\n    link.setHtml(l('CoveoOnlineHelp'));\n    this.helpSuggestion.append(link.el);\n    this.container.el.insertBefore(this.helpSuggestion.el, this.message.el);\n  }\n}\n\nInitialization.registerAutoCreateComponent(ErrorReport);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ErrorReport/ErrorReport.ts","import { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { IQueryResult } from '../../rest/QueryResult';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { Assert } from '../../misc/Assert';\nimport { HighlightUtils } from '../../utils/HighlightUtils';\nimport { Initialization } from '../Base/Initialization';\nimport { exportGlobally } from '../../GlobalExports';\nimport 'styling/_Excerpt';\n\n/**\n * The Excerpt component renders an excerpt of its associated result and highlights the keywords from the query using\n * the appropriate template helpers.\n *\n * This component is a result template component (see [Result Templates](https://docs.coveo.com/en/413/)).\n */\nexport class Excerpt extends Component {\n  static ID = 'Excerpt';\n\n  static doExport = () => {\n    exportGlobally({\n      Excerpt: Excerpt\n    });\n  };\n\n  /**\n   * Creates a new Excerpt component.\n   * @param element The HTMLElement on which to instantiate the component.\n   * @param options The options for the Excerpt component.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time).\n   * @param result The result to associate the component with.\n   */\n  constructor(public element: HTMLElement, public options?: any, public bindings?: IComponentBindings, public result?: IQueryResult) {\n    super(element, Excerpt.ID, bindings);\n    this.options = ComponentOptions.initComponentOptions(element, Excerpt, options);\n    this.result = this.result || this.resolveResult();\n    Assert.exists(this.result);\n    this.element.innerHTML = HighlightUtils.highlightString(this.result.excerpt, this.result.excerptHighlights, null, 'coveo-highlight');\n  }\n}\n\nInitialization.registerAutoCreateComponent(Excerpt);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Excerpt/Excerpt.ts","import { Component } from '../Base/Component';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { IFieldOption } from '../Base/IComponentOptions';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { SettingsEvents } from '../../events/SettingsEvents';\nimport { ISettingsPopulateMenuArgs } from '../Settings/Settings';\nimport { IAnalyticsNoMeta, analyticsActionCauseList } from '../Analytics/AnalyticsActionListMeta';\nimport { Initialization } from '../Base/Initialization';\nimport { l } from '../../strings/Strings';\nimport * as _ from 'underscore';\nimport { exportGlobally } from '../../GlobalExports';\nimport 'styling/_ExportToExcel';\nimport { SVGIcons } from '../../utils/SVGIcons';\nimport { SearchInterface } from '../SearchInterface/SearchInterface';\nimport { get } from '../Base/RegisteredNamedMethods';\nimport * as moment from 'moment';\nimport { IQuery } from '../../rest/Query';\n\nlet createAnchor = () => document.createElement('a');\n\nexport function setCreateAnchor(fn: () => HTMLAnchorElement) {\n  createAnchor = fn;\n}\n\nexport interface IExportToExcelOptions {\n  numberOfResults?: number;\n  fieldsToInclude?: IFieldOption[];\n}\n\n/**\n * The ExportToExcel component renders an item in the {@link Settings} menu to allow the end user to export the current\n * search results to the Microsoft Excel format (.xlsx).\n *\n * @availablesince [November 2015 Release (v1.0.139)](https://docs.coveo.com/en/289/#november-2015-release-v10139)\n */\nexport class ExportToExcel extends Component {\n  static ID = 'ExportToExcel';\n\n  static doExport = () => {\n    exportGlobally({\n      ExportToExcel: ExportToExcel\n    });\n  };\n\n  /**\n   * The options for the ExportToExcel\n   * @componentOptions\n   */\n  static options: IExportToExcelOptions = {\n    /**\n     * Specifies the number of results to include in the resulting Excel file.\n     *\n     * Generating and downloading the Excel file should take a reasonably short amount of time when using the default\n     * value. However, this amount of time will increase exponentially as you set the value higher.\n     *\n     * Consequently, you should avoid setting this value above the default index limit of 1000 search results.\n     *\n     * Default value is `100`. Minimum value is `1`.\n     *\n     * @availablesince [February 2016 Release (v1.0.318)](https://docs.coveo.com/en/309/#february-2016-release-v10318)\n     */\n    numberOfResults: ComponentOptions.buildNumberOption({ defaultValue: 100, min: 1 }),\n    /**\n     * Specifies the fields to include in the CSV output.\n     *\n     * Note that this does not affect top level properties such as the title, clickUri, printableUri and sysUri, for example.\n     *\n     * Default value is `undefined`, meaning all fields will be exported.\n     */\n    fieldsToInclude: ComponentOptions.buildFieldsOption()\n  };\n\n  /**\n   * Creates a new ExportToExcel component.\n   * @param element The HTMLElement on which to instantiate the component.\n   * @param options The options for the ExportToExcel component.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time).\n   * @param _window The global Window object (used to download the Excel link).\n   */\n  constructor(\n    public element: HTMLElement,\n    public options: IExportToExcelOptions,\n    public bindings?: IComponentBindings,\n    public _window?: Window\n  ) {\n    super(element, ExportToExcel.ID, bindings);\n    this._window = this._window || window;\n    this.options = ComponentOptions.initComponentOptions(element, ExportToExcel, options);\n    this.bind.onRootElement(SettingsEvents.settingsPopulateMenu, (args: ISettingsPopulateMenuArgs) => {\n      args.menuData.push({\n        text: l('ExportToExcel'),\n        className: 'coveo-export-to-excel',\n        tooltip: l('ExportToExcelDescription'),\n        onOpen: () => this.download(),\n        svgIcon: SVGIcons.icons.dropdownExport,\n        svgIconClassName: 'coveo-export-to-excel-svg'\n      });\n    });\n  }\n\n  /**\n   * Downloads the Excel representation of the current query.\n   *\n   * Also logs an `exportToExcel` event in the usage analytics.\n   */\n  public download() {\n    const query = this.buildExcelQuery();\n    this.logger.debug(\"Performing query following 'Export to Excel' click\");\n\n    const endpoint = this.queryController.getEndpoint();\n    this.usageAnalytics.logCustomEvent<IAnalyticsNoMeta>(analyticsActionCauseList.exportToExcel, {}, this.element);\n\n    endpoint.fetchBinary(query).then(content => this.downloadExcelFile(content));\n  }\n\n  private buildExcelQuery(): IQuery {\n    let query = this.queryController.getLastQuery();\n    query = _.omit(query, ['numberOfResults', 'fieldsToInclude']);\n\n    if (this.options.fieldsToInclude) {\n      query.fieldsToInclude = <string[]>this.options.fieldsToInclude;\n    }\n\n    return {\n      ...query,\n      format: 'xlsx',\n      numberOfResults: this.options.numberOfResults\n    };\n  }\n\n  private downloadExcelFile(content: ArrayBuffer) {\n    const blob = new Blob([content], { type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' });\n    const fileName = this.buildExcelFileName();\n\n    if (window.navigator.msSaveOrOpenBlob) {\n      window.navigator.msSaveOrOpenBlob(blob, fileName);\n      return;\n    }\n\n    const url = URL.createObjectURL(blob);\n\n    const a = createAnchor();\n    a.href = url;\n    a.download = fileName;\n    a.click();\n\n    URL.revokeObjectURL(url);\n  }\n\n  private buildExcelFileName() {\n    const utc = moment().utc();\n    const year = utc.format('YYYY');\n    const month = utc.format('MM');\n    const day = utc.format('DD');\n    const hour = utc.format('HH');\n    const minute = utc.format('mm');\n    const second = utc.format('ss');\n\n    return `query--${year}-${month}-${day}--${hour}-${minute}-${second}.xlsx`;\n  }\n\n  static create(element: HTMLElement, options?: IExportToExcelOptions, root?: HTMLElement): ExportToExcel {\n    return new ExportToExcel(element, options, (<SearchInterface>get(root, SearchInterface)).getBindings());\n  }\n}\n\nInitialization.registerAutoCreateComponent(ExportToExcel);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ExportToExcel/ExportToExcel.ts","import 'styling/_FieldSuggestions';\nimport * as _ from 'underscore';\nimport { IPopulateOmniboxEventArgs, OmniboxEvents } from '../../events/OmniboxEvents';\nimport { exportGlobally } from '../../GlobalExports';\nimport { Assert } from '../../misc/Assert';\nimport { QueryStateModel } from '../../models/QueryStateModel';\nimport { IIndexFieldValue } from '../../rest/FieldValue';\nimport { IStringMap } from '../../rest/GenericParam';\nimport { IListFieldValuesRequest } from '../../rest/ListFieldValuesRequest';\nimport { $$ } from '../../utils/Dom';\nimport { Utils } from '../../utils/Utils';\nimport { analyticsActionCauseList, IAnalyticsNoMeta } from '../Analytics/AnalyticsActionListMeta';\nimport { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { IFieldOption, IQueryExpression } from '../Base/IComponentOptions';\nimport { Initialization } from '../Base/Initialization';\nimport {\n  ISuggestionForOmniboxOptions,\n  ISuggestionForOmniboxOptionsOnSelect,\n  ISuggestionForOmniboxTemplate,\n  SuggestionForOmnibox\n} from '../Misc/SuggestionForOmnibox';\n\nexport interface IFieldSuggestionsOptions extends ISuggestionForOmniboxOptions {\n  field?: IFieldOption;\n  queryOverride?: IQueryExpression;\n}\n\n/**\n * The `FieldSuggestions` component provides query suggestions based on a particular facet field. For example, you could\n * use this component to provide auto-complete suggestions while the end user is typing the title of an item.\n *\n * The query suggestions provided by this component appear in the [`Omnibox`]{@link Omnibox} component.\n *\n * **Note:** Consider [providing Coveo ML query suggestions](https://docs.coveo.com/en/340/#providing-coveo-machine-learning-query-suggestions)\n * rather than field suggestions, as the former yields better performance and relevance.\n */\nexport class FieldSuggestions extends Component {\n  static ID = 'FieldSuggestions';\n\n  static doExport = () => {\n    exportGlobally({\n      FieldSuggestions: FieldSuggestions\n    });\n  };\n\n  /**\n   * @componentOptions\n   */\n  static options: IFieldSuggestionsOptions = {\n    /**\n     * Specifies the facet field from which to provide suggestions.\n     *\n     * Specifying a value for this option is required for the `FieldSuggestions` component to work.\n     */\n    field: ComponentOptions.buildFieldOption({ required: true }),\n\n    /**\n     * Specifies a query override to apply when retrieving suggestions. You can use any valid query expression (see\n     * [Coveo Query Syntax Reference](https://docs.coveo.com/en/1552/searching-with-coveo/coveo-cloud-query-syntax)).\n     *\n     * Default value is the empty string, and the component applies no query override.\n     */\n    queryOverride: ComponentOptions.buildQueryExpressionOption({ defaultValue: '' }),\n\n    /**\n     * Specifies the z-index position at which the suggestions render themselves in the [`Omnibox`]{@link Omnibox}.\n     *\n     * When there are multiple suggestion providers, components with higher `omniboxZIndex` values render themselves\n     * first.\n     *\n     * Default value is `51`. Minimum value is `0`.\n     */\n    omniboxZIndex: ComponentOptions.buildNumberOption({ defaultValue: 51, min: 0 }),\n\n    /**\n     * Specifies the title of the result suggestions group in the [`Omnibox`]{@link Omnibox} component.\n     * If not provided, the component will simply not output any title.\n     *\n     * Default value is `null`.\n     */\n    headerTitle: ComponentOptions.buildLocalizedStringOption(),\n\n    /**\n     * Specifies the number of suggestions to render in the [`Omnibox`]{@link Omnibox}.\n     *\n     * Default value is `5`. Minimum value is `1`.\n     */\n    numberOfSuggestions: ComponentOptions.buildNumberOption({ defaultValue: 5, min: 1 }),\n\n    /**\n     * Specifies the event handler function to execute when the end user selects a suggested value in the\n     * [`Omnibox`]{@link Omnibox}. By default, the query box text is replaced by what the end user selected and a new\n     * query is executed. You can, however, replace this default behavior by providing a callback function to execute\n     * when the value is selected.\n     *\n     * **Note:**\n     * > You cannot set this option directly in the component markup as an HTML attribute. You must either set it in the\n     * > [`init`]{@link init} call of your search interface (see\n     * > [Passing Component Options in the init Call](https://docs.coveo.com/en/346/#passing-component-options-in-the-init-call)),\n     * > or before the `init` call, using the `options` top-level function (see\n     * > [Passing Component Options Before the init Call](https://docs.coveo.com/en/346/#passing-component-options-before-the-init-call)).\n     *\n     * **Example:**\n     *\n     * ```javascript\n     *\n     * var myOnSelectFunction = function(selectedValue, populateOmniboxEventArgs) {\n     *\n     *   // Close the suggestion list when the user clicks a suggestion.\n     *   populateOmniboxEventArgs.closeOmnibox();\n     *\n     *   // Search for matching title results in the default endpoint.\n     *   Coveo.SearchEndpoint.endpoints[\"default\"].search({\n     *     q: \"@title==\" + selectedValue\n     *   }).done(function(results) {\n     *\n     *     // If more than one result is found, select a result that matches the selected title.\n     *     var foundResult = Coveo._.find(results.results, function(result) {\n     *       return selectedValue == result.raw.title;\n     *     });\n     *\n     *     // Open the found result in the current window, or log an error.\n     *     if (foundResult) {\n     *       window.location = foundResult.clickUri;\n     *     }\n     *     else {\n     *       new Coveo.Logger.warn(\"Selected suggested result '\" + selectedValue + \"' not found.\");\n     *     }\n     *   });\n     * };\n     *\n     * // You can set the option in the 'init' call:\n     * Coveo.init(document.querySelector(\"#search\"), {\n     *    FieldSuggestions : {\n     *      onSelect : myOnSelectFunction\n     *    }\n     * });\n     *\n     * // Or before the 'init' call, using the 'options' top-level function:\n     * // Coveo.options(document.querySelector(\"#search\"), {\n     * //   FieldSuggestions : {\n     * //     onSelect : myOnSelectFunction\n     * //   }\n     * // });\n     * ```\n     */\n    onSelect: ComponentOptions.buildCustomOption<ISuggestionForOmniboxOptionsOnSelect>(() => {\n      return null;\n    })\n  };\n\n  private suggestionForOmnibox: SuggestionForOmnibox;\n  private currentlyDisplayedSuggestions: { [suggestion: string]: { element: HTMLElement; pos: number } };\n\n  /**\n   * Creates a new `FieldSuggestions` component.\n   * @param element The HTMLElement on which to instantiate the component.\n   * @param options The options for the `FieldSuggestions` component.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time).\n   */\n  constructor(element: HTMLElement, public options: IFieldSuggestionsOptions, bindings?: IComponentBindings) {\n    super(element, FieldSuggestions.ID, bindings);\n\n    if (this.options && 'omniboxSuggestionOptions' in this.options) {\n      this.options = _.extend(this.options, this.options['omniboxSuggestionOptions']);\n    }\n\n    this.options = ComponentOptions.initComponentOptions(element, FieldSuggestions, options);\n\n    Assert.check(Utils.isCoveoField(<string>this.options.field), this.options.field + ' is not a valid field');\n\n    this.options.onSelect = this.options.onSelect || this.onRowSelection;\n\n    let rowTemplate = (toRender: IStringMap<string>) => {\n      let rowElement = $$('div', {\n        className: 'magic-box-suggestion coveo-omnibox-selectable coveo-top-field-suggestion-row'\n      });\n      if (toRender['data']) {\n        rowElement.el.innerHTML = toRender['data'];\n      }\n      return rowElement.el.outerHTML;\n    };\n\n    let suggestionStructure: ISuggestionForOmniboxTemplate;\n    if (this.options.headerTitle == null) {\n      suggestionStructure = {\n        row: rowTemplate\n      };\n    } else {\n      let headerTemplate = () => {\n        let headerElement = $$('div', {\n          className: 'coveo-top-field-suggestion-header'\n        });\n\n        let iconElement = $$('span', {\n          className: 'coveo-icon-top-field'\n        });\n\n        let captionElement = $$('span', {\n          className: 'coveo-caption'\n        });\n\n        if (this.options.headerTitle) {\n          captionElement.text(this.options.headerTitle);\n        }\n\n        headerElement.append(iconElement.el);\n        headerElement.append(captionElement.el);\n\n        return headerElement.el.outerHTML;\n      };\n\n      suggestionStructure = {\n        header: { template: headerTemplate, title: this.options.headerTitle },\n        row: rowTemplate\n      };\n    }\n\n    this.suggestionForOmnibox = new SuggestionForOmnibox(\n      suggestionStructure,\n      (value: string, args: IPopulateOmniboxEventArgs) => {\n        this.options.onSelect.call(this, value, args);\n      },\n      (value: string, args: IPopulateOmniboxEventArgs) => {\n        this.onRowTab(value, args);\n      }\n    );\n    this.bind.onRootElement(OmniboxEvents.populateOmnibox, (args: IPopulateOmniboxEventArgs) => this.handlePopulateOmnibox(args));\n  }\n\n  public selectSuggestion(suggestion: number);\n  public selectSuggestion(suggestion: string);\n\n  /**\n   * Selects a currently displayed query suggestion. This implies that at least one suggestion must have been returned\n   * at least once.\n   * @param suggestion Either a number (0-based index position of the query suggestion to select) or a string that\n   * matches the suggestion to select.\n   */\n  public selectSuggestion(suggestion: any) {\n    if (this.currentlyDisplayedSuggestions) {\n      if (isNaN(suggestion)) {\n        if (this.currentlyDisplayedSuggestions[suggestion]) {\n          $$(this.currentlyDisplayedSuggestions[suggestion].element).trigger('click');\n        }\n      } else {\n        let currentlySuggested = <{ element: HTMLElement; pos: number }>_.findWhere(<any>this.currentlyDisplayedSuggestions, {\n          pos: suggestion\n        });\n        if (currentlySuggested) {\n          $$(currentlySuggested.element).trigger('click');\n        }\n      }\n    }\n  }\n\n  private handlePopulateOmnibox(args: IPopulateOmniboxEventArgs) {\n    Assert.exists(args);\n\n    let valueToSearch = args.completeQueryExpression.word;\n    let promise = new Promise(resolve => {\n      this.queryController\n        .getEndpoint()\n        .listFieldValues(this.buildListFieldValueRequest(valueToSearch))\n        .then((results: IIndexFieldValue[]) => {\n          let element = this.suggestionForOmnibox.buildOmniboxElement(results, args);\n          this.currentlyDisplayedSuggestions = {};\n          if (element) {\n            _.map($$(element).findAll('.coveo-omnibox-selectable'), (selectable, i?) => {\n              this.currentlyDisplayedSuggestions[$$(selectable).text()] = {\n                element: selectable,\n                pos: i\n              };\n            });\n            resolve({\n              element: element,\n              zIndex: this.options.omniboxZIndex\n            });\n          } else {\n            resolve({\n              element: undefined\n            });\n          }\n        })\n        .catch(() => {\n          resolve({\n            element: undefined\n          });\n        });\n    });\n    args.rows.push({\n      deferred: promise\n    });\n  }\n\n  private onRowSelection(value: string, args: IPopulateOmniboxEventArgs) {\n    args.closeOmnibox();\n    this.queryStateModel.set(QueryStateModel.attributesEnum.q, value);\n    this.usageAnalytics.logSearchEvent<IAnalyticsNoMeta>(analyticsActionCauseList.omniboxField, {});\n    this.queryController.executeQuery();\n  }\n\n  private onRowTab(value: string, args: IPopulateOmniboxEventArgs) {\n    args.clear();\n    args.closeOmnibox();\n    this.queryStateModel.set(QueryStateModel.attributesEnum.q, `${value}`);\n    this.usageAnalytics.logCustomEvent(analyticsActionCauseList.omniboxField, {}, this.element);\n  }\n\n  private buildListFieldValueRequest(valueToSearch: string): IListFieldValuesRequest {\n    return {\n      field: <string>this.options.field,\n      ignoreAccents: true,\n      sortCriteria: 'occurrences',\n      maximumNumberOfValues: this.options.numberOfSuggestions,\n      patternType: 'Wildcards',\n      pattern: '*' + valueToSearch + '*',\n      queryOverride: this.options.queryOverride\n    };\n  }\n}\n\nInitialization.registerAutoCreateComponent(FieldSuggestions);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/FieldSuggestions/FieldSuggestions.ts","import 'styling/_FieldSuggestions';\nimport * as _ from 'underscore';\nimport { IPopulateOmniboxSuggestionsEventArgs, OmniboxEvents } from '../../events/OmniboxEvents';\nimport { exportGlobally } from '../../GlobalExports';\nimport { l } from '../../MiscModules';\nimport { QueryStateModel } from '../../ModelsModules';\nimport { $$ } from '../../utils/Dom';\nimport { DomUtils } from '../../UtilsModules';\nimport { analyticsActionCauseList, IAnalyticsNoMeta } from '../Analytics/AnalyticsActionListMeta';\nimport { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { IFieldOption } from '../Base/IComponentOptions';\nimport { Initialization } from '../Base/Initialization';\nimport { IOmniboxSuggestion, Omnibox } from '../Omnibox/Omnibox';\nimport { FacetValueSuggestionsProvider, IFacetValueSuggestionRow, IFacetValueSuggestionsProvider } from './FacetValueSuggestionsProvider';\nimport { Suggestion } from '../../magicbox/SuggestionsManager';\n\nexport interface IFacetValueSuggestionsOptions {\n  numberOfSuggestions: number;\n  field?: IFieldOption;\n  isCategoryField?: boolean;\n  categoryFieldDelimitingCharacter?: string;\n  useQuerySuggestions?: boolean;\n  useValueFromSearchbox?: boolean;\n  displayEstimateNumberOfResults?: boolean;\n  expression?: string;\n  templateHelper?: (row: IFacetValueSuggestionRow, omnibox: Omnibox) => string;\n}\n\nexport interface IQuerySuggestionKeyword {\n  text: string;\n  html: string;\n}\n\n/**\n * This component provides [`Omnibox`]{@link Omnibox} query suggestions scoped to distinct categories based on the values of a\n * specific [`field`]{@link FacetValueSuggestions.options.field} whose [Facet](https://docs.coveo.com/en/1982/#facet) option is enabled.\n *\n * @externaldocs [Providing Facet Value Suggestions](https://docs.coveo.com/en/340/#providing-facet-value-suggestions)\n *\n * @availablesince [May 2018 Release (v2.4094.8)](https://docs.coveo.com/410/#may-2018-release-v240948)\n */\nexport class FacetValueSuggestions extends Component {\n  static ID = 'FacetValueSuggestions';\n\n  static doExport = () => {\n    exportGlobally({\n      FacetValueSuggestions: FacetValueSuggestions\n    });\n  };\n\n  /**\n   * @componentOptions\n   */\n  static options: IFacetValueSuggestionsOptions = {\n    /**\n     * The field on whose values the scoped query suggestions should be based.\n     *\n     * @examples @productcategory\n     */\n    field: ComponentOptions.buildFieldOption({ required: true }),\n\n    /**\n     * The maximum number of suggestions to render in the [`Omnibox`]{@link Omnibox}.\n     */\n    numberOfSuggestions: ComponentOptions.buildNumberOption({ defaultValue: 5, min: 1 }),\n\n    /**\n     * Whether to get scoped query suggestions from the current Coveo ML query suggestions.\n     *\n     * **Notes:**\n     * - If this option is set to `true`, the [`enableQuerySuggestAddon`]{@link Omnibox.options.enableQuerySuggestAddon} option of the [`Omnibox`]{@link Omnibox} component must be set to `true` as well.\n     * - If this option is set to `true`, an additional `POST` HTTP request is sent to `https://platform.cloud.coveo.com/rest/search/v2/querySuggest`.\n     */\n    useQuerySuggestions: ComponentOptions.buildBooleanOption({ defaultValue: true }),\n\n    /**\n     * Whether to get scoped query suggestions from the current user query entered in the search box.\n     *\n     * **Default:** `true` if [`useQuerySuggestions`]{@link FacetValueSuggestions.options.useQuerySuggestions} is `false`; `false` otherwise\n     */\n    useValueFromSearchbox: ComponentOptions.buildBooleanOption({\n      postProcessing: (value, options: IFacetValueSuggestionsOptions) => {\n        return value || !options.useQuerySuggestions;\n      }\n    }),\n\n    /**\n     * Whether to display an estimate of the number of results for each scoped query suggestions.\n     *\n     * **Notes:**\n     * - Setting this option to `true` has no effect when the [`templateHelper`]{@link FacetValueSuggestions.options.templateHelper} options is set.\n     * - When displaying scoped query suggestions for a standalone search box whose queries are redirected to a search interface enforcing other filters, the number of results will be inaccurate.\n     */\n    displayEstimateNumberOfResults: ComponentOptions.buildBooleanOption({ defaultValue: false }),\n\n    /**\n     * The template helper function to execute when rendering each scoped query suggestion.\n     *\n     * If specified, the function must have the following signature: (row: [IFacetValueSuggestionRow]{@link IFacetValueSuggestionRow}, omnibox: Omnibox) => string\n     *\n     * If not specified, a default function will be used.\n     *\n     * **Note:** You cannot set this option directly in the component markup as an HTML attribute. You must either set it:\n     * - In the [`init`]{@link init} call of your search interface (see [Passing Component Options in the init Call](https://docs.coveo.com/en/346/#passing-component-options-in-the-init-call)\n     * - Before the `init` call, using the [`options`](@link options) top-level function (see [Passing Component Options Before the init Call](https://docs.coveo.com/en/346/#passing-component-options-before-the-init-call)).\n     *\n     * **Example:**\n     *\n     * ```javascript\n     * Coveo.init(document.getElementById('search'), {\n     *   FacetValueSuggestions: {\n     *     templateHelper: (row, omnibox) => { return `Searching for <strong>${row.keyword}</strong> in category <em>${row.value}</em>`; }\n     *   }\n     * })\n     * ```\n     */\n    templateHelper: ComponentOptions.buildCustomOption<(row: IFacetValueSuggestionRow, omnibox: Omnibox) => string>(() => {\n      return null;\n    }),\n\n    /**\n     * Whether the [`field`]{@link FacetValueSuggestions.options.field} option references a multi-value field.\n     *\n     * Setting this option to `true` if appropriate will allow the corresponding [`CategoryFacet`]{@link CategoryFacet} or [`DynamicHierarchicalFacet`]{@link DynamicHierarchicalFacet} component (if present) to properly handle the filter format.\n     *\n     * See also the [`categoryFieldDelimitingCharacter`]{@link FacetValueSuggestions.options.categoryFieldDelimitingCharacter} option.\n     */\n    isCategoryField: ComponentOptions.buildBooleanOption({ defaultValue: false }),\n\n    /**\n     * The delimiting character used for the multi-value field referenced by the [`field`]{@link FacetValueSuggestions.options.field} option.\n     *\n     * @examples ;, #\n     */\n    categoryFieldDelimitingCharacter: ComponentOptions.buildStringOption({ defaultValue: '|', depend: 'isCategoryField' }),\n\n    /**\n     * An advanced query expression to add when requesting facet value suggestions.\n     *\n     * Set this option to ensure that the suggestions are properly scoped when using the component with a standalone search box. For instance, if a certain [tab]{@link Tab} is automatically selected in the search interface the standalone search box is redirecting its queries to, you should set this option to that tab's [`expression`]{@link Tab.options.expression}.\n     *\n     * @examples @objecttype==Message\n     */\n    expression: ComponentOptions.buildQueryExpressionOption()\n  };\n\n  public facetValueSuggestionsProvider: IFacetValueSuggestionsProvider;\n\n  private queryStateFieldFacetId;\n\n  static defaultTemplate(this: FacetValueSuggestions, row: IFacetValueSuggestionRow, omnibox: Omnibox): string {\n    const keyword = row.keyword.html;\n    const facetValue = DomUtils.highlight(row.value, 'coveo-omnibox-hightlight');\n    const details = this.options.displayEstimateNumberOfResults\n      ? DomUtils.highlight(\n          ` (${l('ResultCount', row.numberOfResults.toString(), row.numberOfResults)})`,\n          'coveo-omnibox-suggestion-results-count',\n          true\n        )\n      : '';\n    return `${l('KeywordInCategory', keyword, facetValue)}${details}`;\n  }\n\n  private static getQuerySuggestionKeywordFromText(text: string): IQuerySuggestionKeyword {\n    return {\n      text,\n      html: DomUtils.highlight(text, 'coveo-omnibox-hightlight')\n    };\n  }\n\n  /**\n   * Creates a new `FacetValueSuggestions` component.\n   * @param element The HTMLElement on which to instantiate the component.\n   * @param options The options for the `FacetValueSuggestions` component.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time).\n   */\n  constructor(element: HTMLElement, public options: IFacetValueSuggestionsOptions, bindings?: IComponentBindings) {\n    super(element, FacetValueSuggestions.ID, bindings);\n\n    this.options = ComponentOptions.initComponentOptions(element, FacetValueSuggestions, options);\n\n    this.facetValueSuggestionsProvider = new FacetValueSuggestionsProvider(this.queryController, {\n      field: <string>this.options.field,\n      expression: this.options.expression\n    });\n    this.queryStateFieldFacetId = `f:${this.options.field}`;\n\n    if (!this.options.templateHelper) {\n      this.options.templateHelper = FacetValueSuggestions.defaultTemplate;\n    }\n\n    $$(this.root).on(OmniboxEvents.populateOmniboxSuggestions, (e: Event, args: IPopulateOmniboxSuggestionsEventArgs) => {\n      args.suggestions.push(this.getSuggestions(args.omnibox));\n    });\n  }\n\n  public async getSuggestions(omnibox: Omnibox): Promise<IOmniboxSuggestion[]> {\n    if (this.options.numberOfSuggestions == 0) {\n      return [];\n    }\n\n    const text = omnibox.getText();\n\n    const suggestions: IOmniboxSuggestion[] = await this.getFacetValueSuggestions(text, omnibox);\n\n    return suggestions || [];\n  }\n\n  private async getQuerySuggestionsKeywords(omnibox: Omnibox): Promise<IQuerySuggestionKeyword[]> {\n    if (this.options.useQuerySuggestions && omnibox.suggestionAddon) {\n      const suggestions = await omnibox.suggestionAddon.getSuggestion();\n      return suggestions.map(({ text, html }) => <IQuerySuggestionKeyword>{ text: text || '', html });\n    } else {\n      return [];\n    }\n  }\n\n  private async getFacetValueSuggestions(text: string, omnibox: Omnibox): Promise<IOmniboxSuggestion[]> {\n    const wordsToQuery = this.options.useValueFromSearchbox ? [FacetValueSuggestions.getQuerySuggestionKeywordFromText(text)] : [];\n\n    const suggestionsKeywords: IQuerySuggestionKeyword[] = await this.getQuerySuggestionsKeywords(omnibox);\n    const allKeywordsToQuery = _.unique(\n      wordsToQuery.concat(suggestionsKeywords).filter(keyword => keyword.text != ''),\n      keyword => keyword.text\n    );\n\n    if (allKeywordsToQuery.length === 0) {\n      return [];\n    }\n\n    return this.getSuggestionsForWords(allKeywordsToQuery, omnibox);\n  }\n\n  private async getSuggestionsForWords(keywordToQuery: IQuerySuggestionKeyword[], omnibox: Omnibox): Promise<IOmniboxSuggestion[]> {\n    try {\n      const suggestions = await this.facetValueSuggestionsProvider.getSuggestions(keywordToQuery);\n\n      this.logger.debug('FacetValue Suggestions Results', suggestions);\n\n      const currentSelectedValues: string[] = this.queryStateModel.get(this.queryStateFieldFacetId) || [];\n      const filteredSuggestions = suggestions.filter(suggestion =>\n        this.isSuggestionRowAlreadyCheckedInFacet(suggestion, currentSelectedValues)\n      );\n      return this.rankSuggestionRows(filteredSuggestions).map(result => this.mapFacetValueSuggestion(result, omnibox));\n    } catch (error) {\n      this.logger.error(error);\n      return [];\n    }\n  }\n\n  private isSuggestionRowAlreadyCheckedInFacet(suggestion: IFacetValueSuggestionRow, currentlySelectedValues: string[]): boolean {\n    return !currentlySelectedValues.some(value => value == suggestion.value);\n  }\n\n  private rankSuggestionRows(suggestions: IFacetValueSuggestionRow[]): IFacetValueSuggestionRow[] {\n    const rankedResults = [...suggestions.sort((a, b) => b.score.distanceFromTotalForField - a.score.distanceFromTotalForField)];\n    const firstSlice = Math.ceil(this.options.numberOfSuggestions / 2);\n    const lastSlice = -Math.floor(this.options.numberOfSuggestions / 2);\n\n    const firstResultsToReturn = rankedResults.splice(0, firstSlice);\n\n    if (lastSlice != 0) {\n      const lastResultsToReturn = rankedResults.slice(lastSlice);\n      return [...firstResultsToReturn, ...lastResultsToReturn];\n    }\n\n    return firstResultsToReturn;\n  }\n\n  private mapFacetValueSuggestion(resultToShow: IFacetValueSuggestionRow, omnibox: Omnibox) {\n    const suggestion: IOmniboxSuggestion = {\n      html: this.buildDisplayNameForRow(resultToShow, omnibox),\n      text: resultToShow.keyword.text\n    };\n\n    const fieldValues = this.options.isCategoryField\n      ? resultToShow.value.split(this.options.categoryFieldDelimitingCharacter)\n      : [resultToShow.value];\n\n    suggestion.advancedQuery = fieldValues.map(value => `${this.options.field}==\"${value}\"`).join(' AND ');\n\n    suggestion.onSelect = () => this.onSuggestionSelected(suggestion, fieldValues, omnibox);\n\n    return suggestion;\n  }\n\n  private buildDisplayNameForRow(row: IFacetValueSuggestionRow, omnibox: Omnibox): string {\n    try {\n      return this.options.templateHelper.call(this, row, omnibox);\n    } catch (ex) {\n      this.logger.error('Could not apply template from options for the given row. Will use default template.', ex, row, omnibox);\n      return FacetValueSuggestions.defaultTemplate.call(this, row, omnibox);\n    }\n  }\n\n  private onSuggestionSelected(suggestion: Suggestion, fieldValues: string[], omnibox: Omnibox): void {\n    omnibox.setText(suggestion.text);\n    // Copy the state here, else it will directly modify queryStateModel.defaultAttributes.fv.\n    const fvState: { [key: string]: string[] } = { ...this.queryStateModel.get(QueryStateModel.attributesEnum.fv) };\n    const existingValues: string[] = fvState[this.options.field.toString()] || [];\n\n    fvState[this.options.field.toString()] = existingValues.concat(fieldValues);\n\n    this.queryStateModel.set(QueryStateModel.attributesEnum.fv, fvState);\n    omnibox.magicBox.blur();\n    this.usageAnalytics.logSearchEvent<IAnalyticsNoMeta>(analyticsActionCauseList.omniboxField, {});\n    this.queryController.executeQuery();\n  }\n}\n\nInitialization.registerAutoCreateComponent(FacetValueSuggestions);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/FacetValueSuggestions/FacetValueSuggestions.ts","import 'styling/_FieldTable';\nimport { each, uniqueId } from 'underscore';\nimport { exportGlobally } from '../../GlobalExports';\nimport { IQueryResult } from '../../rest/QueryResult';\nimport { l } from '../../strings/Strings';\nimport { AccessibleButton } from '../../utils/AccessibleButton';\nimport { $$ } from '../../utils/Dom';\nimport { QueryUtils } from '../../utils/QueryUtils';\nimport { SVGDom } from '../../utils/SVGDom';\nimport { SVGIcons } from '../../utils/SVGIcons';\nimport { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { Initialization } from '../Base/Initialization';\nimport { FieldValue, IFieldValueOptions } from '../FieldValue/FieldValue';\n\nexport interface IFieldTableOptions {\n  allowMinimization: boolean;\n  expandedTitle: string;\n  minimizedTitle: string;\n  minimizedByDefault: boolean;\n}\n\n/**\n * The FieldTable component displays a set of {@link FieldValue} components in a table that can optionally be\n * expandable and minimizable. This component automatically takes care of not displaying empty field values.\n *\n * This component is a result template component (see [Result Templates](https://docs.coveo.com/en/413/)).\n *\n * **Example:**\n *\n * ```\n * // This is the FieldTable component itself, which holds a list of table rows.\n * // Each row is a FieldValue component.\n * <table class='CoveoFieldTable'>\n *    // Items\n *    <tr data-field='@sysdate' data-caption='Date' data-helper='dateTime' />\n *    <tr data-field='@sysauthor' data-caption='Author' />\n *    <tr data-field='@clickuri' data-html-value='true' data-caption='URL' data-helper='anchor' data-helper-options='{text: \\\"<%= raw.syssource %>\\\" , target:\\\"_blank\\\"}'>\n * </table>\n * ```\n */\nexport class FieldTable extends Component {\n  static ID = 'FieldTable';\n\n  static doExport = () => {\n    exportGlobally({\n      FieldTable: FieldTable,\n      FieldValue: FieldValue\n    });\n  };\n\n  /**\n   * The options for the component\n   * @componentOptions\n   */\n  static options: IFieldTableOptions = {\n    /**\n     * Specifies whether to allow the minimization (collapsing) of the FieldTable.\n     *\n     * If you set this option to `false`, the component will not create the **Minimize** / **Expand** toggle links.\n     *\n     * See also {@link FieldTable.options.expandedTitle}, {@link FieldTable.options.minimizedTitle} and\n     * {@link FieldTable.options.minimizedByDefault}.\n     *\n     * Default value is `true`.\n     */\n    allowMinimization: ComponentOptions.buildBooleanOption({ defaultValue: true }),\n\n    /**\n     * If {@link FieldTable.options.allowMinimization} is `true`, specifies the caption to show on the **Minimize** link\n     * (the link that appears when the FieldTable is expanded).\n     *\n     * Default value is `\"Details\"`.\n     */\n    expandedTitle: ComponentOptions.buildLocalizedStringOption({\n      localizedString: () => l('Details'),\n      depend: 'allowMinimization'\n    }),\n\n    /**\n     * If {@link FieldTable.options.allowMinimization} is `true`, specifies the caption to show on the **Expand** link\n     * (the link that appears when the FieldTable is minimized).\n     *\n     * Default value is `\"Details\"`.\n     */\n    minimizedTitle: ComponentOptions.buildLocalizedStringOption({\n      localizedString: () => l('Details'),\n      depend: 'allowMinimization'\n    }),\n\n    /**\n     * If {@link FieldTable.options.allowMinimization} is `true`, specifies whether to minimize the table by default.\n     *\n     * Default value is `undefined`, and the FieldTable will collapse by default if the result it is associated with has\n     * a non-empty excerpt.\n     */\n    minimizedByDefault: ComponentOptions.buildBooleanOption({ depend: 'allowMinimization' })\n  };\n  private toggleButton: HTMLElement;\n  private toggleCaption: HTMLElement;\n  private toggleButtonSVGContainer: HTMLElement;\n  private toggleButtonInsideTable: HTMLElement;\n  private toggleContainer: HTMLElement;\n  private toggleContainerHeight: number;\n\n  /**\n   * Creates a new FieldTable.\n   * @param element The HTMLElement on which to instantiate the component.\n   * @param options The options for the FieldTable component.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time).\n   * @param result The result to associate the component with.\n   */\n  constructor(\n    public element: HTMLElement,\n    public options?: IFieldTableOptions,\n    bindings?: IComponentBindings,\n    public result?: IQueryResult\n  ) {\n    super(element, ValueRow.ID, bindings);\n    this.options = ComponentOptions.initComponentOptions(element, FieldTable, options);\n\n    var rows = $$(this.element).findAll('tr[data-field]');\n    each(rows, (e: HTMLElement) => {\n      new ValueRow(e, {}, bindings, result);\n    });\n\n    if ($$(this.element).find('tr') == null) {\n      $$(element).detach();\n    }\n\n    if (this.isTogglable()) {\n      const className = 'coveo-field-table-toggle-container';\n      this.toggleContainer = $$('div', { className, id: uniqueId(className) }).el;\n      this.buildToggle();\n      $$(this.toggleContainer).insertBefore(this.element);\n      this.toggleContainer.appendChild(this.element);\n      this.toggleContainer.appendChild(this.toggleButtonInsideTable);\n    }\n  }\n\n  public get isExpanded() {\n    return !this.toggleButton || this.toggleButton.getAttribute('aria-expanded') === 'true';\n  }\n\n  public set isExpanded(expanded: boolean) {\n    if (this.toggleButton) {\n      this.toggleButton.setAttribute('aria-expanded', expanded.toString());\n    }\n  }\n\n  /**\n   * Toggles between expanding (showing) and minimizing (collapsing) the FieldTable.\n   *\n   * @param anim Specifies whether to show a sliding animation when toggling the display of the FieldTable.\n   */\n  public toggle(anim = false) {\n    this.isExpanded ? this.minimize(anim) : this.expand(anim);\n  }\n\n  /**\n   * Expands (shows) the FieldTable,\n   * @param anim Specifies whether to show a sliding animation when expanding the FieldTable.\n   */\n  public expand(anim = false) {\n    if (this.isTogglable()) {\n      this.isExpanded = true;\n      this.toggleCaption.textContent = this.options.expandedTitle;\n      SVGDom.addClassToSVGInContainer(this.toggleButtonSVGContainer, 'coveo-opened');\n      SVGDom.addClassToSVGInContainer(this.toggleButtonInsideTable, 'coveo-opened');\n      anim ? this.slideToggle(true) : this.slideToggle(true, false);\n    }\n  }\n\n  /**\n   * Minimizes (collapses) the FieldTable.\n   * @param anim Specifies whether to show a sliding animation when minimizing the FieldTable.\n   */\n  public minimize(anim = false) {\n    if (this.isTogglable()) {\n      this.isExpanded = false;\n      this.toggleCaption.textContent = this.options.minimizedTitle;\n      SVGDom.removeClassFromSVGInContainer(this.toggleButtonSVGContainer, 'coveo-opened');\n      SVGDom.removeClassFromSVGInContainer(this.toggleButtonInsideTable, 'coveo-opened');\n      anim ? this.slideToggle(false) : this.slideToggle(false, false);\n    }\n  }\n\n  /**\n   * Updates the toggle height if the content was dynamically resized, so that the expanding and minimizing animation\n   * can match the new content size.\n   */\n  public updateToggleHeight() {\n    this.updateToggleContainerHeight();\n    this.isExpanded ? this.expand() : this.minimize();\n  }\n\n  protected isTogglable() {\n    if (this.options.allowMinimization) {\n      return true;\n    }\n    return false;\n  }\n\n  private buildToggle() {\n    this.toggleCaption = $$('span', {\n      className: 'coveo-field-table-toggle-caption'\n    }).el;\n\n    this.toggleButton = $$('div', {\n      className: 'coveo-field-table-toggle coveo-field-table-toggle-down',\n      ariaControls: this.toggleContainer.id\n    }).el;\n    this.toggleButtonSVGContainer = $$('span', null, SVGIcons.icons.arrowDown).el;\n    SVGDom.addClassToSVGInContainer(this.toggleButtonSVGContainer, 'coveo-field-table-toggle-down-svg');\n    this.toggleButton.appendChild(this.toggleCaption);\n    this.toggleButton.appendChild(this.toggleButtonSVGContainer);\n    $$(this.toggleButton).insertBefore(this.element);\n\n    this.toggleButtonInsideTable = $$(\n      'span',\n      { className: 'coveo-field-table-toggle coveo-field-table-toggle-up' },\n      SVGIcons.icons.arrowUp\n    ).el;\n    SVGDom.addClassToSVGInContainer(this.toggleButtonInsideTable, 'coveo-field-table-toggle-up-svg');\n\n    if (this.options.minimizedByDefault === true) {\n      this.isExpanded = false;\n    } else if (this.options.minimizedByDefault === false) {\n      this.isExpanded = true;\n    } else {\n      this.isExpanded = !QueryUtils.hasExcerpt(this.result);\n    }\n\n    requestAnimationFrame(() => this.updateToggleHeight());\n\n    const toggleAction = () => this.toggle(true);\n\n    new AccessibleButton()\n      .withElement(this.toggleButton)\n      .withSelectAction(() => toggleAction())\n      .withOwner(this.bind)\n      .withLabel(l('Details'))\n      .build();\n\n    $$(this.toggleButtonInsideTable).on('click', toggleAction);\n  }\n\n  private slideToggle(visible: boolean = true, anim: boolean = true) {\n    if (!anim) {\n      $$(this.toggleContainer).addClass('coveo-no-transition');\n    }\n\n    if (visible) {\n      this.toggleContainer.style.display = 'block';\n      this.toggleContainer.style.height = this.containerHeight;\n    } else {\n      this.toggleContainer.style.height = '0';\n    }\n    if (!anim) {\n      this.toggleContainer.offsetHeight; // Force reflow\n      $$(this.toggleContainer).removeClass('coveo-no-transition');\n    }\n  }\n\n  private get containerHeight() {\n    if (!this.toggleContainerHeight) {\n      this.updateToggleContainerHeight();\n    }\n\n    return this.toggleContainerHeight + 'px';\n  }\n\n  private updateToggleContainerHeight() {\n    this.toggleContainerHeight = this.toggleContainer.scrollHeight;\n  }\n}\n\nInitialization.registerAutoCreateComponent(FieldTable);\n\nexport interface IValueRowOptions extends IFieldValueOptions {\n  caption?: string;\n}\n\nclass ValueRow extends FieldValue {\n  static ID = 'ValueRow';\n  static options: IValueRowOptions = {\n    caption: ComponentOptions.buildStringOption({\n      postProcessing: (value, options) => value || options.field.substr(1)\n    })\n  };\n\n  static parent = FieldValue;\n  private valueContainer: HTMLElement;\n\n  constructor(public element: HTMLElement, public options: IValueRowOptions, bindings?: IComponentBindings, public result?: IQueryResult) {\n    super(element, options, bindings, result, ValueRow.ID);\n    this.options = ComponentOptions.initComponentOptions(element, ValueRow, options);\n\n    var caption = $$('th').el;\n    caption.appendChild(document.createTextNode(this.options.caption.toLocaleString()));\n    this.element.insertBefore(caption, this.getValueContainer());\n  }\n\n  protected getValueContainer() {\n    if (this.valueContainer == null) {\n      this.valueContainer = document.createElement('td');\n      this.element.appendChild(this.valueContainer);\n    }\n    return this.valueContainer;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/FieldTable/FieldTable.ts","import { exportGlobally } from '../../GlobalExports';\nimport { IQueryResult } from '../../rest/QueryResult';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { Initialization } from '../Base/Initialization';\nimport { Folding, IFoldingOptions } from '../Folding/Folding';\n\n/**\n * The `FoldingForThread` component inherits from the [`Folding`]{@link Folding} component. It offers the\n * same configuration options.\n *\n * Folding conversations and threads requires different processing. When you need to fold all child items (including\n * their attachments) on the same level under a common ancestor item, use this component rather than the `Folding`\n * component.\n *\n * This component works well with Chatter and Lithium.\n *\n * **Note:**\n * > There can only be one `FoldingForThread` component per [`Tab`]{@link Tab} component.\n *\n * See [Folding Results](https://docs.coveo.com/en/428/).\n */\nexport class FoldingForThread extends Folding {\n  static ID = 'FoldingForThread';\n\n  static doExport = () => {\n    exportGlobally({\n      FoldingForThread: FoldingForThread\n    });\n  };\n\n  /**\n   * Creates a new `FoldingForThread` component\n   * @param element The HTMLElement on which to instantiate the component.\n   * @param options The options for the `FoldingForThread` component.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time).\n   */\n  constructor(public element: HTMLElement, public options: IFoldingOptions, bindings?: IComponentBindings) {\n    super(element, options, bindings);\n    this.options.getMoreResults = (results: IQueryResult[]) => {\n      return Folding.foldWithParent(results)[0].attachments;\n    };\n\n    this.options.getResult = (result: IQueryResult) => {\n      var defaultResult = Folding.defaultGetResult(result);\n      defaultResult.childResults = defaultResult.attachments;\n      defaultResult.attachments = [];\n      return defaultResult;\n    };\n  }\n}\n\nInitialization.registerAutoCreateComponent(FoldingForThread);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/FoldingForThread/FoldingForThread.ts","import { Component } from '../Base/Component';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { l } from '../../strings/Strings';\nimport { QueryEvents, IBuildingQueryEventArgs } from '../../events/QueryEvents';\nimport { BreadcrumbEvents, IPopulateBreadcrumbEventArgs } from '../../events/BreadcrumbEvents';\nimport { analyticsActionCauseList, IAnalyticsContextRemoveMeta } from '../Analytics/AnalyticsActionListMeta';\nimport { QUERY_STATE_ATTRIBUTES, QueryStateModel } from '../../models/QueryStateModel';\nimport { $$ } from '../../utils/Dom';\nimport { Utils } from '../../utils/Utils';\nimport { Initialization } from '../Base/Initialization';\nimport { Assert } from '../../misc/Assert';\nimport * as _ from 'underscore';\nimport { exportGlobally } from '../../GlobalExports';\nimport 'styling/_HiddenQuery';\nimport { SVGIcons } from '../../utils/SVGIcons';\n\nexport interface IHiddenQueryOptions {\n  maximumDescriptionLength: number;\n  title: string;\n}\n\n/**\n * The HiddenQuery component handles a \"hidden\" query parameter (`hq`) and its description (`hd`).\n *\n * Concretely, this means that if a HiddenQuery component is present in your page and you load your search interface\n * with `hq=foo&hd=bar` in the URL hash, the component adds `foo` as an expression to the query (`hq` is the hidden\n * query) and renders `bar` in the {@link Breadcrumb} (`hd` is the hidden query description).\n */\nexport class HiddenQuery extends Component {\n  static ID = 'HiddenQuery';\n\n  static doExport = () => {\n    exportGlobally({\n      HiddenQuery: HiddenQuery\n    });\n  };\n\n  /**\n   * Possible options for the `HiddenQuery` component\n   * @componentOptions\n   */\n  static options: IHiddenQueryOptions = {\n    /**\n     * Specifies the maximum number of characters from the hidden query description (`hd`) to display in the\n     * {@link Breadcrumb}.\n     *\n     * Beyond this length, the HiddenQuery component slices the rest of the description and replaces it by `...`.\n     *\n     * Default value is `100`. Minimum value is `0`.\n     */\n    maximumDescriptionLength: ComponentOptions.buildNumberOption({ min: 0, defaultValue: 100 }),\n\n    /**\n     * Specifies the title that should appear in the {@link Breadcrumb} when the HiddenQuery populates it.\n     *\n     * Default value is the localized string f\n     * or `\"Additional filters:\"`\n     */\n    title: ComponentOptions.buildLocalizedStringOption({\n      localizedString: () => l('AdditionalFilters') + ':'\n    })\n  };\n\n  /**\n   * Creates a new HiddenQuery component, which binds multiple events ({@link QueryEvents.buildingQuery},\n   * {@link BreadcrumbEvents.populateBreadcrumb} and {@link BreadcrumbEvents.clearBreadcrumb}).\n   * @param element The HTMLElement on which to instantiate the component.\n   * @param options The options for the HiddenQuery component.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time).\n   */\n  constructor(public element: HTMLElement, public options?: IHiddenQueryOptions, bindings?: IComponentBindings) {\n    super(element, HiddenQuery.ID, bindings);\n    this.options = ComponentOptions.initComponentOptions(element, HiddenQuery, options);\n\n    this.bind.onRootElement(QueryEvents.buildingQuery, (args: IBuildingQueryEventArgs) => this.handleBuildingQuery(args));\n    this.bind.onRootElement(BreadcrumbEvents.populateBreadcrumb, (args: IPopulateBreadcrumbEventArgs) =>\n      this.handlePopulateBreadcrumb(args)\n    );\n    this.bind.onRootElement(BreadcrumbEvents.clearBreadcrumb, () => this.setStateEmpty());\n  }\n\n  /**\n   * Clears any `hd` or `hq` set in the {@link QueryStateModel}.\n   * Also logs the `contextRemove` event in the usage analytics and triggers a new query.\n   */\n  public clear() {\n    this.setStateEmpty();\n    const hiddenDescriptionRemoved = this.getDescription();\n    this.usageAnalytics.logSearchEvent<IAnalyticsContextRemoveMeta>(analyticsActionCauseList.contextRemove, {\n      contextName: hiddenDescriptionRemoved\n    });\n    this.queryController.executeQuery();\n  }\n\n  private setStateEmpty() {\n    this.queryStateModel.set(QUERY_STATE_ATTRIBUTES.HD, '');\n    this.queryStateModel.set(QUERY_STATE_ATTRIBUTES.HQ, '');\n  }\n\n  private handleBuildingQuery(data: IBuildingQueryEventArgs) {\n    Assert.exists(data);\n    const hiddenQuery = this.queryStateModel.get(QUERY_STATE_ATTRIBUTES.HQ);\n    if (Utils.isNonEmptyString(hiddenQuery)) {\n      data.queryBuilder.advancedExpression.add(hiddenQuery);\n    }\n  }\n\n  private handlePopulateBreadcrumb(args: IPopulateBreadcrumbEventArgs) {\n    const description = this.getDescription();\n    if (!_.isEmpty(description) && !_.isEmpty(this.queryStateModel.get(QUERY_STATE_ATTRIBUTES.HQ))) {\n      const elem = document.createElement('div');\n      $$(elem).addClass('coveo-hidden-query-breadcrumb');\n\n      const title = document.createElement('span');\n      $$(title).addClass('coveo-hidden-query-breadcrumb-title');\n      $$(title).text(this.options.title);\n      elem.appendChild(title);\n\n      const value = $$('span', { className: 'coveo-hidden-query-breadcrumb-value' }, _.escape(description)).el;\n      elem.appendChild(value);\n\n      const clear = $$('span', { className: 'coveo-hidden-query-breadcrumb-clear' }, SVGIcons.icons.mainClear);\n      value.appendChild(clear.el);\n\n      $$(value).on('click', () => this.clear());\n\n      args.breadcrumbs.push({\n        element: elem\n      });\n    }\n  }\n\n  private getDescription() {\n    let description = this.queryStateModel.get(QueryStateModel.attributesEnum.hd);\n    if (_.isEmpty(description)) {\n      description = this.queryStateModel.get(QueryStateModel.attributesEnum.hq);\n    }\n    if (!_.isEmpty(description)) {\n      if (description.length > this.options.maximumDescriptionLength) {\n        description = description.slice(0, this.options.maximumDescriptionLength) + ' ...';\n      }\n    }\n    return description;\n  }\n}\nInitialization.registerAutoCreateComponent(HiddenQuery);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/HiddenQuery/HiddenQuery.ts","/// <reference path=\"../../controllers/HierarchicalFacetQueryController.ts\" />\n/// <reference path=\"HierarchicalFacetValuesList.ts\" />\n/// <reference path=\"HierarchicalFacetSearch.ts\" />\n/// <reference path=\"HierarchicalBreadcrumbValuesList.ts\" />\n/// <reference path=\"HierarchicalFacetValueElement.ts\" />\n\nimport { IFacetOptions } from '../Facet/Facet';\nimport { FacetValue } from '../Facet/FacetValue';\nimport { Facet } from '../Facet/Facet';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { HierarchicalFacetValuesList } from './HierarchicalFacetValuesList';\nimport { HierarchicalFacetQueryController } from '../../controllers/HierarchicalFacetQueryController';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { IIndexFieldValue } from '../../rest/FieldValue';\nimport { Utils } from '../../utils/Utils';\nimport { $$ } from '../../utils/Dom';\nimport { Defer } from '../../misc/Defer';\nimport { HierarchicalFacetSearchValuesList } from './HierarchicalFacetSearchValuesList';\nimport { HierarchicalFacetSearch } from './HierarchicalFacetSearch';\nimport { HierarchicalBreadcrumbValuesList } from './HierarchicalBreadcrumbValuesList';\nimport { IQuerySuccessEventArgs } from '../../events/QueryEvents';\nimport { Assert } from '../../misc/Assert';\nimport { IPopulateBreadcrumbEventArgs } from '../../events/BreadcrumbEvents';\nimport { IPopulateOmniboxEventArgs } from '../../events/OmniboxEvents';\nimport { OmniboxHierarchicalValuesList } from './OmniboxHierarchicalValuesList';\nimport { HierarchicalFacetValueElement } from './HierarchicalFacetValueElement';\nimport { Initialization } from '../Base/Initialization';\nimport { ISearchAlertsPopulateMessageEventArgs } from '../../events/SearchAlertEvents';\nimport * as _ from 'underscore';\nimport { exportGlobally } from '../../GlobalExports';\nimport 'styling/_HierarchicalFacet';\nimport { SVGIcons } from '../../utils/SVGIcons';\nimport { SVGDom } from '../../utils/SVGDom';\nimport { ResponsiveFacetOptions } from '../ResponsiveComponents/ResponsiveFacetOptions';\nimport { AccessibleButton } from '../../utils/AccessibleButton';\n\nexport interface IHierarchicalFacetOptions extends IFacetOptions {\n  delimitingCharacter?: string;\n  levelStart?: number;\n  levelEnd?: number;\n  marginByLevel?: number;\n}\n\nexport interface IValueHierarchy {\n  childs?: IValueHierarchy[];\n  parent?: IValueHierarchy;\n  originalPosition?: number;\n  facetValue: FacetValue;\n  level: number;\n  keepOpened: boolean;\n  hasChildSelected: boolean;\n  allChildShouldBeSelected: boolean;\n}\n\ninterface IFlatHierarchy {\n  facetValue: FacetValue;\n  level: number;\n  parent: string;\n  self: string;\n}\n\n/**\n * @deprecated This component is exposed for legacy reasons. Instead, use the {@link CategoryFacet} component, which is more performant and easier to use.\n *\n * The `HierarchicalFacet` component inherits all of its options and behaviors from the [`Facet`]{@link Facet}\n * component, but is meant to be used to render hierarchical values.\n *\n * **Note:**\n * > The `HierarchicalFacet` component does not support the [`customSort`]{@link Facet.options.customSort}\n * > `Facet` option.\n *\n * The `HierarchicalFacet` component can be used to display files in a file system, or categories for items in a\n * hierarchy.\n *\n * This facet requires a group by field with a special format to work correctly.\n *\n * **Example:**\n *\n * You have the following files indexed on a file system:\n * ```\n * c:\\\n *   folder1\\\n *     text1.txt\n *   folder2\\\n *     folder3\\\n *       text2.txt\n * ```\n * The `text1.txt` item would have a field with the following format:\n * `c; c|folder1;`\n *\n * The `text2.txt` item would have a field with the following format:\n * `c; c|folder2; c|folder2|folder3;`\n *\n * By default, the `|` character determines the hierarchy (`folder3` inside `folder2` inside `c`).\n *\n * Since both items contain the `c` value, selecting it value in the facet would return both items.\n *\n * Selecting the `folder3` value in the facet would only return the `text2.txt` item.\n *\n * @notSupportedIn salesforcefree\n *\n * @deprecatedSince [January 2019 Release (v2.5395.12)](https://docs.coveo.com/en/2763/)\n */\nexport class HierarchicalFacet extends Facet implements IComponentBindings {\n  static ID = 'HierarchicalFacet';\n\n  static doExport = () => {\n    exportGlobally({\n      HierarchicalFacet: HierarchicalFacet\n    });\n  };\n\n  /**\n   * The options for the component\n   * @componentOptions\n   */\n  static options: IHierarchicalFacetOptions = {\n    /**\n     * The character that allows to specify the hierarchical dependency.\n     *\n     * **Example:**\n     *\n     * If your field has the following values:\n     *\n     * `@field: c; c>folder2; c>folder2>folder3;`\n     *\n     * The delimiting character is `>`.\n     *\n     * Default value is `|`.\n     */\n    delimitingCharacter: ComponentOptions.buildStringOption({ defaultValue: '|' }),\n\n    /**\n     * Specifies at which level (0-based index) of the hierarchy the `HierarchicalFacet` should start displaying its\n     * values.\n     *\n     * **Example:**\n     *\n     * If you have the following files indexed on a file system:\n     * ```\n     * c:\\\n     *    folder1\\\n     *        text1.txt\n     *    folder2\\\n     *      folder3\\\n     *        text2.txt\n     * ```\n     * Setting `levelStart` to `1` displays `folder1` and `folder2` in the `HierarchicalFacet`, but omits `c:`.\n     *\n     * Default (and minimum) value is `0`.\n     */\n    levelStart: ComponentOptions.buildNumberOption({ defaultValue: 0, min: 0 }),\n\n    /**\n     * Specifies at which level (0-based index) of the hierarchy the `HierarchicalFacet` should stop displaying its\n     * values.\n     *\n     * Default value is `undefined`, which means the `HierarchicalFacet` component renders all hierarchical levels.\n     * Minimum value is `0`.\n     */\n    levelEnd: ComponentOptions.buildNumberOption({ min: 0 }),\n\n    /**\n     * Specifies the margin (in pixels) to display between each hierarchical level when expanding.\n     *\n     * Default value is `10`.\n     */\n    marginByLevel: ComponentOptions.buildNumberOption({ defaultValue: 10, min: 0 }),\n    ...ResponsiveFacetOptions\n  };\n\n  static parent = Facet;\n\n  public options: IHierarchicalFacetOptions;\n  public facetValuesList: HierarchicalFacetValuesList;\n  public numberOfValuesToShow: number;\n  public facetQueryController: HierarchicalFacetQueryController;\n  public topLevelHierarchy: IValueHierarchy[];\n  public shouldReshuffleFacetValuesClientSide = false;\n  public isFieldValueCompatible = false;\n\n  private valueHierarchy: { [facetValue: string]: IValueHierarchy };\n  private originalNumberOfValuesToShow: number;\n\n  private correctLevels: IFlatHierarchy[] = [];\n\n  /**\n   * Creates a new `HierarchicalFacet` component.\n   * @param element The HTMLElement on which to instantiate the component.\n   * @param options The options for the `HierarchicalFacet` component.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time).\n   */\n  public constructor(public element: HTMLElement, options: IHierarchicalFacetOptions, public bindings: IComponentBindings) {\n    super(element, options, bindings, HierarchicalFacet.ID);\n    this.options = ComponentOptions.initComponentOptions(element, HierarchicalFacet, this.options);\n    this.numberOfValuesToShow = this.originalNumberOfValuesToShow = this.options.numberOfValues || 5;\n    this.numberOfValues = Math.max(this.options.numberOfValues, 10000);\n    this.options.injectionDepth = Math.max(this.options.injectionDepth, 10000);\n    this.logger.info('Hierarchy facet: Set number of values very high in order to build hierarchy', this.numberOfValues, this);\n    this.logger.info('Hierarchy facet: Set injection depth very high in order to build hierarchy', this.options.injectionDepth);\n  }\n\n  /**\n   * Selects a single value.\n   * @param value The value to select.\n   * @param selectChildren Specifies whether to also select all child values (if any). Default value is the opposite of\n   * the [`useAnd`]{@link Facet.options.useAnd} option value set for this `HierarchicalFacet`.\n   */\n  public selectValue(value: FacetValue | string, selectChildren = !this.options.useAnd) {\n    this.ensureDom();\n    this.ensureValueHierarchyExists([value]);\n    let valueHierarchy = this.getValueFromHierarchy(value);\n    if (selectChildren) {\n      this.selectChilds(valueHierarchy, valueHierarchy.childs);\n    }\n    this.flagParentForSelection(valueHierarchy);\n    super.selectValue(value);\n  }\n\n  /**\n   * Selects multiple values\n   * @param values The array of values to select.\n   * @param selectChildren Specifies whether to also select all child values (if any). Default value is the opposite of\n   * the [`useAnd`]{@link Facet.options.useAnd} option value set for this `HierarchicalFacet`.\n   */\n  public selectMultipleValues(values: FacetValue[] | string[], selectChildren = !this.options.useAnd): void {\n    this.ensureDom();\n    this.ensureValueHierarchyExists(values);\n    _.each(values as FacetValue[], value => {\n      let valueHierarchy = this.getValueFromHierarchy(value);\n      this.flagParentForSelection(valueHierarchy);\n      if (selectChildren) {\n        _.each(valueHierarchy.childs, child => {\n          this.selectValue(child.facetValue);\n        });\n      }\n    });\n    super.selectMultipleValues(values);\n  }\n\n  /**\n   * Deselects a single value\n   * @param value The value to deselect.\n   * @param deselectChildren Specifies whether to also deselect all child values (if any). Default value is `true`.\n   */\n  public deselectValue(value: FacetValue | string, deselectChildren = true) {\n    this.ensureDom();\n    this.ensureValueHierarchyExists([value]);\n    let valueHierarchy = this.getValueFromHierarchy(value);\n    if (deselectChildren) {\n      let hasChilds = valueHierarchy.childs != undefined;\n      if (hasChilds) {\n        let activeChilds = _.filter<IValueHierarchy>(valueHierarchy.childs, child => {\n          let valueToCompare = this.getFacetValueFromHierarchy(child.facetValue);\n          return valueToCompare.selected || valueToCompare.excluded;\n        });\n        valueHierarchy.hasChildSelected = false;\n        if (activeChilds.length == valueHierarchy.childs.length) {\n          this.deselectChilds(valueHierarchy, valueHierarchy.childs);\n        }\n      }\n    }\n    this.deselectParent(valueHierarchy.parent);\n    this.unflagParentForSelection(valueHierarchy);\n    super.deselectValue(value);\n  }\n\n  /**\n   * Excludes a single value.\n   * @param value The value to exclude.\n   * @param excludeChildren Specifies whether to also exclude all child values (if any). Default value is the opposite\n   * of the [`useAnd`]{@link Facet.options.useAnd} option value set for this `HierarchicalFacet`.\n   */\n  public excludeValue(value: FacetValue | string, excludeChildren = !this.options.useAnd): void {\n    this.ensureDom();\n    this.ensureValueHierarchyExists([value]);\n    let valueHierarchy = this.getValueFromHierarchy(value);\n    if (excludeChildren) {\n      this.excludeChilds(valueHierarchy.childs);\n    } else {\n      this.deselectChilds(valueHierarchy, valueHierarchy.childs);\n      this.close(valueHierarchy);\n    }\n    this.flagParentForSelection(valueHierarchy);\n    super.excludeValue(value);\n  }\n\n  /**\n   * Un-excludes a single value.\n   * @param value The value to un-exclude.\n   * @param unexludeChildren Specifies whether to also un-exclude all child values (if any). Default value is the\n   * opposite of the [`useAnd`]{@link Facet.options.useAnd} option value set for this `HierarchicalFacet`.\n   */\n  public unexcludeValue(value: FacetValue | string, unexludeChildren = !this.options.useAnd): void {\n    this.ensureDom();\n    this.ensureValueHierarchyExists([value]);\n    let valueHierarchy = this.getValueFromHierarchy(value);\n    if (unexludeChildren) {\n      this.unexcludeChilds(valueHierarchy.childs);\n    }\n    this.unflagParentForSelection(valueHierarchy);\n    super.unexcludeValue(value);\n  }\n\n  /**\n   * Deselects multiple values.\n   * @param values The array of values to deselect.\n   * @param deselectChildren Specifies whether to also deselect all child values (if any). Default value is the opposite\n   * of the [`useAnd`]{@link Facet.options.useAnd} option value set for this `HierarchicalFacet`.\n   */\n  public deselectMultipleValues(values: FacetValue[] | string[], deselectChildren = !this.options.useAnd): void {\n    this.ensureDom();\n    this.ensureValueHierarchyExists(values);\n    _.each(values as FacetValue[], value => {\n      let valueHierarchy = this.getValueFromHierarchy(value);\n      valueHierarchy.hasChildSelected = false;\n      this.unflagParentForSelection(valueHierarchy);\n      if (deselectChildren) {\n        _.each(valueHierarchy.childs, child => {\n          let childInHierarchy = this.getValueFromHierarchy(child.facetValue);\n          childInHierarchy.hasChildSelected = false;\n          this.deselectValue(child.facetValue);\n        });\n      }\n    });\n    super.deselectMultipleValues(values);\n  }\n\n  /**\n   * Toggles the selection of a single value (selects value if not selected; deselects value if selected).\n   * @param value The value to select or deselect.\n   */\n  public toggleSelectValue(value: FacetValue | string): void {\n    this.ensureDom();\n    this.ensureValueHierarchyExists([value]);\n    if (this.getFacetValueFromHierarchy(value).selected == false) {\n      this.selectValue(value);\n    } else {\n      this.deselectValue(value);\n    }\n  }\n\n  /**\n   * Toggles the exclusion of a single value (excludes value if not excluded; un-excludes value if excluded).\n   * @param value The value to exclude or un-exclude.\n   */\n  public toggleExcludeValue(value: FacetValue | string): void {\n    this.ensureDom();\n    this.ensureValueHierarchyExists([value]);\n    if (this.getFacetValueFromHierarchy(value).excluded == false) {\n      this.excludeValue(value);\n    } else {\n      this.unexcludeValue(value);\n    }\n  }\n\n  /**\n   * Gets the caption of a single value.\n   * @param facetValue The value whose caption the method should return.\n   * @returns {string} The caption of the value.\n   */\n  public getValueCaption(facetValue: IIndexFieldValue | FacetValue): string {\n    let stringValue = this.getSelf(facetValue as FacetValue);\n    let ret = stringValue;\n    if (Utils.exists(this.options.valueCaption)) {\n      if (typeof this.options.valueCaption == 'object') {\n        ret = this.options.valueCaption[stringValue] || ret;\n      }\n      if (typeof this.options.valueCaption == 'function') {\n        ret = this.options.valueCaption.call(this, facetValue);\n      }\n    }\n    return ret;\n  }\n\n  /**\n   * Gets the values that the `HierarchicalFacet` is currently displaying.\n   * @returns {any[]} An array containing all the values that the `HierarchicalFacet` is currently displaying.\n   */\n  public getDisplayedValues(): string[] {\n    let displayed = _.filter(this.values.getAll(), v => {\n      let valFromHierarchy = this.getValueFromHierarchy(v);\n      if (valFromHierarchy) {\n        let elem = this.getElementFromFacetValueList(v);\n        return !$$(elem).hasClass('coveo-inactive');\n      }\n      return false;\n    });\n    return _.pluck(displayed, 'value');\n  }\n\n  /**\n   * Updates the sort criteria for the `HierarchicalFacet`.\n   *\n   * See the [`sortCriteria`]{@link IGroupByRequest.sortCriteria} property of the [`IGroupByRequest`] interface for the\n   * list and description of possible values.\n   *\n   * @param criteria The new sort criteria.\n   */\n  public updateSort(criteria: string) {\n    super.updateSort(criteria);\n  }\n\n  /**\n   * Opens (expands) a single value and shows all its children.\n   * @param value The value to open.\n   */\n  public open(value: FacetValue | IValueHierarchy | string) {\n    let getter;\n    if (_.isString(value)) {\n      getter = this.getValueHierarchy(value);\n    } else if (value instanceof FacetValue) {\n      getter = this.getValueHierarchy(value.value);\n    } else {\n      getter = value;\n    }\n    if (getter != undefined) {\n      $$(this.getElementFromFacetValueList(getter.facetValue.value)).addClass('coveo-open');\n      this.showChilds(getter.childs);\n      if (getter.parent != undefined) {\n        this.open(this.getValueHierarchy(getter.facetValue.value).parent);\n      }\n      this.getValueHierarchy(getter.facetValue.value).keepOpened = true;\n    }\n  }\n\n  /**\n   * Closes (collapses) a single value and hides all its children.\n   * @param value The value to close.\n   */\n  public close(value: FacetValue | IValueHierarchy | string) {\n    let getter;\n    if (_.isString(value)) {\n      getter = this.getValueHierarchy(value);\n    } else if (value instanceof FacetValue) {\n      getter = this.getValueHierarchy(value.value);\n    } else {\n      getter = value;\n    }\n    if (getter != undefined) {\n      $$(this.getElementFromFacetValueList(getter.facetValue)).removeClass('coveo-open');\n      this.hideChilds(getter.childs);\n      _.each(getter.childs, (child: IValueHierarchy) => {\n        this.close(this.getValueHierarchy(child.facetValue.value));\n      });\n      this.getValueHierarchy(getter.facetValue.value).keepOpened = false;\n    }\n  }\n\n  /**\n   * Resets the `HierarchicalFacet` state.\n   */\n  public reset() {\n    _.each(this.getAllValueHierarchy(), valueHierarchy => {\n      valueHierarchy.hasChildSelected = false;\n      valueHierarchy.allChildShouldBeSelected = false;\n    });\n    // Need to close all values, otherwise we might end up with orphan(s)\n    // if a parent value, after reset, is no longer visible.\n    _.each(this.getAllValueHierarchy(), valueHierarchy => {\n      this.close(valueHierarchy);\n    });\n    super.reset();\n  }\n\n  public processFacetSearchAllResultsSelected(facetValues: FacetValue[]): void {\n    this.selectMultipleValues(facetValues);\n    this.triggerNewQuery();\n  }\n\n  protected triggerUpdateDeltaQuery(facetValues: FacetValue[]) {\n    this.shouldReshuffleFacetValuesClientSide = this.keepDisplayedValuesNextTime;\n    super.triggerUpdateDeltaQuery(facetValues);\n  }\n\n  protected updateSearchElement(moreValuesAvailable = true) {\n    // We always want to show search for hierarchical facet :\n    // It's useful since child values are folded under their parent most of the time\n    super.updateSearchElement(true);\n  }\n\n  protected facetValueHasChanged() {\n    this.updateQueryStateModel();\n    Defer.defer(() => {\n      this.updateAppearanceDependingOnState();\n    });\n  }\n\n  protected initFacetQueryController() {\n    this.facetQueryController = new HierarchicalFacetQueryController(this);\n  }\n\n  protected initFacetSearch() {\n    this.facetSearch = new HierarchicalFacetSearch(this, HierarchicalFacetSearchValuesList, this.root);\n    this.element.appendChild(this.facetSearch.build());\n  }\n\n  protected handleDeferredQuerySuccess(data: IQuerySuccessEventArgs) {\n    this.updateAppearanceDependingOnState();\n    super.handleDeferredQuerySuccess(data);\n  }\n\n  protected handlePopulateSearchAlerts(args: ISearchAlertsPopulateMessageEventArgs) {\n    if (this.values.hasSelectedOrExcludedValues()) {\n      args.text.push(\n        new HierarchicalBreadcrumbValuesList(\n          this,\n          this.values.getSelected().concat(this.values.getExcluded()),\n          this.getAllValueHierarchy()\n        ).buildAsString()\n      );\n    }\n  }\n\n  protected handlePopulateBreadcrumb(args: IPopulateBreadcrumbEventArgs) {\n    Assert.exists(args);\n    if (this.values.hasSelectedOrExcludedValues()) {\n      let element = new HierarchicalBreadcrumbValuesList(\n        this,\n        this.values.getSelected().concat(this.values.getExcluded()),\n        this.getAllValueHierarchy(),\n        { headingLevel: args.headingLevel }\n      ).build();\n      args.breadcrumbs.push({\n        element: element\n      });\n    }\n  }\n\n  protected handleOmniboxWithStaticValue(eventArg: IPopulateOmniboxEventArgs) {\n    let regex = eventArg.completeQueryExpression.regex;\n    let match = _.first(\n      _.filter<IValueHierarchy>(this.getAllValueHierarchy(), existingValue => {\n        return regex.test(this.getValueCaption(existingValue.facetValue));\n      }),\n      this.options.numberOfValuesInOmnibox\n    );\n    let facetValues = _.compact(\n      _.map(match, gotAMatch => {\n        let fromList = this.getFromFacetValueList(gotAMatch.facetValue);\n        return fromList ? fromList.facetValue : undefined;\n      })\n    );\n    let element = new OmniboxHierarchicalValuesList(this, facetValues, eventArg).build();\n    eventArg.rows.push({\n      element: element,\n      zIndex: this.omniboxZIndex\n    });\n  }\n\n  protected rebuildValueElements() {\n    this.shouldReshuffleFacetValuesClientSide = this.shouldReshuffleFacetValuesClientSide || this.keepDisplayedValuesNextTime;\n    this.numberOfValues = Math.max(this.numberOfValues, 10000);\n    this.processHierarchy();\n    this.setValueListContent();\n    super.rebuildValueElements();\n    this.buildParentChildRelationship();\n    this.checkForOrphans();\n    this.checkForNewUnselectedChild();\n    this.crop();\n    this.shouldReshuffleFacetValuesClientSide = false;\n  }\n\n  protected initFacetValuesList() {\n    this.facetValuesList = new HierarchicalFacetValuesList(this, HierarchicalFacetValueElement);\n    this.element.appendChild(this.facetValuesList.build());\n  }\n\n  protected updateMoreLess() {\n    let moreValuesAvailable = this.numberOfValuesToShow < this.topLevelHierarchy.length;\n    let lessIsShown = this.numberOfValuesToShow > this.originalNumberOfValuesToShow;\n    super.updateMoreLess(lessIsShown, moreValuesAvailable);\n  }\n\n  protected handleClickMore(): void {\n    this.numberOfValuesToShow += this.originalNumberOfValuesToShow;\n    this.numberOfValuesToShow = Math.min(this.numberOfValuesToShow, this.values.size());\n    this.crop();\n    this.updateMoreLess();\n  }\n\n  protected handleClickLess() {\n    this.numberOfValuesToShow = this.originalNumberOfValuesToShow;\n    this.crop();\n    this.updateMoreLess();\n  }\n\n  protected updateNumberOfValues() {\n    this.numberOfValues = Math.max(this.numberOfValues, 10000);\n  }\n\n  private ensureValueHierarchyExists(facetValues: any) {\n    if (facetValues[0] && typeof facetValues[0] == 'string') {\n      facetValues = _.map(facetValues, (value: string) => {\n        return FacetValue.createFromValue(value);\n      });\n    }\n    let atLeastOneDoesNotExists = false;\n    _.each(facetValues, (facetValue: FacetValue) => {\n      if (this.getValueHierarchy(facetValue.value) == undefined) {\n        atLeastOneDoesNotExists = true;\n      }\n    });\n    if (atLeastOneDoesNotExists) {\n      this.processHierarchy(facetValues);\n    }\n  }\n\n  private crop() {\n    // Partition the top level or the facet to only operate on the values that are not selected or excluded\n    let partition = _.partition(this.topLevelHierarchy, (hierarchy: IValueHierarchy) => {\n      return hierarchy.facetValue.selected || hierarchy.facetValue.excluded || hierarchy.hasChildSelected;\n    });\n\n    // Hide and show the partitionned top level values, depending on the numberOfValuesToShow\n    let numberOfValuesLeft = this.numberOfValuesToShow - partition[0].length;\n    _.each(_.last(partition[1], partition[1].length - numberOfValuesLeft), (toHide: IValueHierarchy) => {\n      this.hideFacetValue(toHide);\n      this.hideChilds(toHide.childs);\n    });\n    _.each(_.first(partition[1], numberOfValuesLeft), (toShow: IValueHierarchy) => {\n      this.showFacetValue(toShow);\n    });\n  }\n\n  private placeChildsUnderTheirParent(hierarchy: IValueHierarchy, hierarchyElement: HTMLElement) {\n    let toIterateOver = hierarchy.childs;\n    if (toIterateOver) {\n      let toIterateOverSorted = this.facetValuesList.sortFacetValues(_.pluck(toIterateOver, 'facetValue')).reverse();\n      _.each(toIterateOverSorted, child => {\n        let childFromHierarchy = this.getValueFromHierarchy(child);\n        if (childFromHierarchy) {\n          let childElement = this.getElementFromFacetValueList(child);\n          $$(childElement).insertAfter(hierarchyElement);\n          if (childFromHierarchy.childs && childFromHierarchy.childs.length != 0) {\n            this.placeChildsUnderTheirParent(childFromHierarchy, childElement);\n          }\n        }\n      });\n    }\n\n    if (hierarchy.keepOpened) {\n      this.open(hierarchy);\n      this.showChilds(hierarchy.childs);\n    } else {\n      this.hideChilds(hierarchy.childs);\n    }\n  }\n\n  private addCssClassToParentAndChilds(hierarchy: IValueHierarchy, hierarchyElement: HTMLElement) {\n    $$(hierarchyElement).addClass('coveo-has-childs');\n    if (hierarchy.hasChildSelected) {\n      $$(hierarchyElement).addClass('coveo-has-childs-selected');\n    }\n    const expandChilds = $$('span', { className: 'coveo-hierarchical-facet-expand' }, SVGIcons.icons.facetExpand);\n    const collapseChilds = $$('span', { className: 'coveo-hierarchical-facet-collapse' }, SVGIcons.icons.facetCollapse);\n    SVGDom.addClassToSVGInContainer(expandChilds.el, 'coveo-hierarchical-facet-expand-svg');\n    SVGDom.addClassToSVGInContainer(collapseChilds.el, 'coveo-hierarchical-facet-collapse-svg');\n    let openAndCloseChilds = $$(\n      'div',\n      {\n        className: 'coveo-has-childs-toggle'\n      },\n      expandChilds.el,\n      collapseChilds.el\n    ).el;\n\n    new AccessibleButton()\n      .withElement(openAndCloseChilds)\n      .withoutLabelOrTitle()\n      .withSelectAction(() => {\n        $$(hierarchyElement).hasClass('coveo-open') ? this.close(hierarchy) : this.open(hierarchy);\n      })\n      .build();\n\n    $$(hierarchyElement).prepend(openAndCloseChilds);\n  }\n\n  private buildParentChildRelationship() {\n    let fragment = document.createDocumentFragment();\n    fragment.appendChild(this.facetValuesList.valueContainer);\n    let sorted = _.map(this.facetValuesList.sortFacetValues(), (facetValue: FacetValue) => {\n      return this.getValueFromHierarchy(facetValue);\n    });\n    _.each(sorted, (hierarchy: IValueHierarchy) => {\n      let hierarchyElement = this.getElementFromFacetValueList(hierarchy.facetValue);\n      if (Utils.isNonEmptyArray(hierarchy.childs)) {\n        this.placeChildsUnderTheirParent(hierarchy, hierarchyElement);\n        this.addCssClassToParentAndChilds(hierarchy, hierarchyElement);\n      } else {\n        $$(hierarchyElement).addClass('coveo-no-childs');\n      }\n      hierarchyElement.style.marginLeft = this.options.marginByLevel * (hierarchy.level - this.options.levelStart) + 'px';\n    });\n\n    $$(<any>fragment).insertAfter(this.headerElement);\n  }\n\n  private setValueListContent() {\n    this.facetValuesList.hierarchyFacetValues = _.map(this.correctLevels, hierarchy => {\n      if (!this.values.contains(hierarchy.facetValue.value)) {\n        hierarchy.facetValue.occurrences = 0;\n        this.values.add(hierarchy.facetValue);\n      }\n      return hierarchy.facetValue;\n    });\n  }\n\n  private createHierarchy(valuesToBuildWith: FacetValue[]) {\n    let flatHierarchy = _.map(valuesToBuildWith, (value: FacetValue) => {\n      let parent = this.getParent(value);\n      let self = value.lookupValue || value.value;\n      return {\n        facetValue: value,\n        level: this.getLevel(value),\n        parent: parent,\n        self: self\n      };\n    });\n    this.setInHierarchy(flatHierarchy);\n    _.each(this.getAllValueHierarchy(), valueHierarchy => {\n      if (valueHierarchy.facetValue.selected) {\n        this.flagParentForSelection(valueHierarchy);\n      }\n    });\n    return flatHierarchy;\n  }\n\n  private processHierarchy(facetValues = this.values.getAll()) {\n    _.each(this.getAllValueHierarchy(), (hierarchy: IValueHierarchy) => {\n      if (this.values.get(hierarchy.facetValue.value) == undefined) {\n        this.deleteValueHierarchy(this.getLookupOrValue(hierarchy.facetValue));\n      }\n    });\n    this.createHierarchy(facetValues);\n  }\n\n  private setInHierarchy(flatHierarchy: IFlatHierarchy[]) {\n    this.correctLevels = _.filter<IFlatHierarchy>(flatHierarchy, hierarchy => {\n      let isCorrectMinimumLevel = this.options.levelStart == undefined || hierarchy.level >= this.options.levelStart;\n      let isCorrectMaximumLevel = this.options.levelEnd == undefined || hierarchy.level < this.options.levelEnd;\n      return isCorrectMinimumLevel && isCorrectMaximumLevel;\n    });\n    _.each(this.correctLevels, (hierarchy: IFlatHierarchy) => {\n      let childs = _.map(\n        _.filter<IFlatHierarchy>(this.correctLevels, (possibleChild: IFlatHierarchy) => {\n          return possibleChild.parent != null && possibleChild.parent.toLowerCase() == hierarchy.self.toLowerCase();\n        }),\n        (child): IValueHierarchy => {\n          return {\n            facetValue: child.facetValue,\n            level: child.level,\n            keepOpened: false,\n            hasChildSelected: false,\n            allChildShouldBeSelected: false\n          };\n        }\n      );\n\n      let parent =\n        hierarchy.parent != null\n          ? _.find<IFlatHierarchy>(this.correctLevels, possibleParent => {\n              return possibleParent.self.toLowerCase() == hierarchy.parent.toLowerCase();\n            })\n          : null;\n\n      let hierarchyThatAlreadyExists = this.getValueHierarchy(hierarchy.facetValue.value);\n      if (hierarchyThatAlreadyExists && hierarchyThatAlreadyExists.childs.length != childs.length) {\n        hierarchyThatAlreadyExists.childs = childs;\n      }\n      let hierarchyThatAlreadyExistsAtParent;\n      if (parent) {\n        hierarchyThatAlreadyExistsAtParent = this.getValueHierarchy(parent.facetValue.value);\n      }\n      this.setValueHierarchy(hierarchy.facetValue.value, {\n        childs: childs,\n        parent:\n          parent == undefined\n            ? undefined\n            : {\n                facetValue: parent.facetValue,\n                level: parent.level,\n                keepOpened: hierarchyThatAlreadyExistsAtParent ? hierarchyThatAlreadyExistsAtParent.keepOpened : false,\n                hasChildSelected: hierarchyThatAlreadyExistsAtParent ? hierarchyThatAlreadyExistsAtParent.hasChildSelected : false,\n                originalPosition: hierarchyThatAlreadyExistsAtParent ? hierarchyThatAlreadyExistsAtParent.originalPosition : undefined,\n                allChildShouldBeSelected: hierarchyThatAlreadyExistsAtParent\n                  ? hierarchyThatAlreadyExistsAtParent.allChildShouldBeSelected\n                  : false\n              },\n        facetValue: hierarchy.facetValue,\n        level: hierarchy.level,\n        keepOpened: hierarchyThatAlreadyExists ? hierarchyThatAlreadyExists.keepOpened : false,\n        hasChildSelected: hierarchyThatAlreadyExists ? hierarchyThatAlreadyExists.hasChildSelected : false,\n        originalPosition: hierarchyThatAlreadyExists ? hierarchyThatAlreadyExists.originalPosition : undefined,\n        allChildShouldBeSelected: hierarchyThatAlreadyExists ? hierarchyThatAlreadyExists.allChildShouldBeSelected : false\n      });\n    });\n\n    this.topLevelHierarchy = _.chain(this.values.getAll())\n      .filter((value: FacetValue) => {\n        let fromHierarchy = this.getValueFromHierarchy(value);\n        if (fromHierarchy) {\n          return fromHierarchy.level == (this.options.levelStart || 0);\n        } else {\n          return false;\n        }\n      })\n      .map((value: FacetValue) => {\n        return this.getValueFromHierarchy(value);\n      })\n      .value();\n  }\n\n  private getParent(value: FacetValue) {\n    let lastIndexOfDelimiting = this.getLookupOrValue(value).lastIndexOf(this.options.delimitingCharacter);\n    if (lastIndexOfDelimiting != -1) {\n      return this.getLookupOrValue(value).substring(0, lastIndexOfDelimiting);\n    }\n    return undefined;\n  }\n\n  private getSelf(value: FacetValue) {\n    let parent = this.getParent(value);\n    if (parent == undefined) {\n      return this.getLookupOrValue(value);\n    } else {\n      let indexOfParent = this.getLookupOrValue(value).indexOf(parent);\n      return this.getLookupOrValue(value).substring(indexOfParent + parent.length + 1);\n    }\n  }\n\n  private showFacetValue(value: IValueHierarchy) {\n    $$(this.getElementFromFacetValueList(value.facetValue.value)).removeClass('coveo-inactive');\n  }\n\n  private hideFacetValue(value: IValueHierarchy) {\n    $$(this.getElementFromFacetValueList(value.facetValue.value)).addClass('coveo-inactive');\n  }\n\n  private hideChilds(children: IValueHierarchy[]) {\n    _.each(children, child => {\n      this.hideFacetValue(child);\n    });\n  }\n\n  private showChilds(children: IValueHierarchy[]) {\n    _.each(children, child => {\n      this.showFacetValue(child);\n    });\n  }\n\n  private selectChilds(parent: IValueHierarchy, children: IValueHierarchy[]) {\n    this.flagParentForSelection(parent);\n    parent.allChildShouldBeSelected = true;\n    this.selectMultipleValues(\n      _.map(children, child => {\n        return child.facetValue;\n      })\n    );\n  }\n\n  private deselectChilds(parent: IValueHierarchy, children: IValueHierarchy[]) {\n    parent.hasChildSelected = false;\n    parent.allChildShouldBeSelected = false;\n    this.deselectMultipleValues(\n      _.map(children, child => {\n        return child.facetValue;\n      })\n    );\n  }\n\n  private excludeChilds(children: IValueHierarchy[]) {\n    this.excludeMultipleValues(\n      _.map(children, child => {\n        return child.facetValue;\n      })\n    );\n  }\n\n  private unexcludeChilds(children: IValueHierarchy[]) {\n    this.unexcludeMultipleValues(\n      _.map(children, child => {\n        return child.facetValue;\n      })\n    );\n  }\n\n  private deselectParent(parent: IValueHierarchy) {\n    if (parent != undefined) {\n      this.deselectValue(parent.facetValue, false);\n    }\n  }\n\n  private flagParentForSelection(valueHierarchy: IValueHierarchy) {\n    let parent = valueHierarchy.parent;\n    let current = valueHierarchy;\n    while (parent) {\n      let parentInHierarchy = this.getValueHierarchy(parent.facetValue.value);\n      parentInHierarchy.hasChildSelected = true;\n      let found = _.find(parentInHierarchy.childs, (child: IValueHierarchy) => {\n        return child.facetValue.value.toLowerCase() == current.facetValue.value.toLowerCase();\n      });\n      if (found) {\n        if (this.getValueHierarchy(found.facetValue.value).hasChildSelected) {\n          found.hasChildSelected = true;\n        }\n      }\n      parent = parentInHierarchy.parent;\n      current = parentInHierarchy;\n    }\n  }\n\n  private unflagParentForSelection(valueHierarchy: IValueHierarchy) {\n    let parent = valueHierarchy.parent;\n    while (parent) {\n      let parentInHierarchy = this.getValueHierarchy(parent.facetValue.value);\n      let otherSelectedChilds = _.filter<IValueHierarchy>(parentInHierarchy.childs, child => {\n        let childInHierarchy = this.getValueHierarchy(child.facetValue.value);\n        if (childInHierarchy != undefined) {\n          return (\n            childInHierarchy.facetValue.value != valueHierarchy.facetValue.value &&\n            (childInHierarchy.facetValue.selected || childInHierarchy.facetValue.excluded || childInHierarchy.hasChildSelected)\n          );\n        }\n      });\n\n      if (otherSelectedChilds.length == 0) {\n        parentInHierarchy.hasChildSelected = false;\n      }\n      parentInHierarchy.allChildShouldBeSelected = false;\n      parent = parentInHierarchy.parent;\n    }\n  }\n\n  public getValueFromHierarchy(value: any): IValueHierarchy {\n    let getter = value instanceof FacetValue ? value.value : value;\n    return this.getValueHierarchy(getter);\n  }\n\n  private getFacetValueFromHierarchy(value: any): FacetValue {\n    return this.getValueFromHierarchy(value).facetValue;\n  }\n\n  private getLookupOrValue(value: FacetValue) {\n    return value.lookupValue || value.value;\n  }\n\n  private getElementFromFacetValueList(value: any) {\n    let ret = this.getFromFacetValueList(value);\n    if (ret) {\n      return ret.renderer.listItem;\n    } else {\n      return $$('div').el;\n    }\n  }\n\n  private getFromFacetValueList(value: any) {\n    let fromHierarchy = this.getValueFromHierarchy(value);\n    if (fromHierarchy != undefined) {\n      return this.facetValuesList.get(value);\n    } else {\n      return undefined;\n    }\n  }\n\n  private getLevel(value: FacetValue) {\n    return value.value.split(this.options.delimitingCharacter).length - 1;\n  }\n\n  public getAllValueHierarchy(): { [facetValue: string]: IValueHierarchy } {\n    if (this.valueHierarchy == null) {\n      this.valueHierarchy = {};\n    }\n    return this.valueHierarchy;\n  }\n\n  private deleteValueHierarchy(key: string) {\n    if (this.valueHierarchy != null) {\n      delete this.valueHierarchy[key.toLowerCase()];\n    }\n  }\n\n  private getValueHierarchy(key: string): IValueHierarchy {\n    if (this.valueHierarchy == null) {\n      return undefined;\n    }\n    return this.valueHierarchy[key.toLowerCase()];\n  }\n\n  private setValueHierarchy(key: string, value: IValueHierarchy) {\n    if (this.valueHierarchy == null) {\n      this.valueHierarchy = {};\n    }\n    this.valueHierarchy[key.toLowerCase()] = value;\n  }\n\n  private checkForOrphans() {\n    _.each(this.valueHierarchy, (v: IValueHierarchy) => {\n      if (this.getLevel(v.facetValue) != this.options.levelStart) {\n        if (this.getValueHierarchy(this.getParent(v.facetValue)) == undefined) {\n          this.logger.error(\n            `Orphan value found in HierarchicalFacet : ${v.facetValue.value}`,\n            `Needed : ${this.getParent(v.facetValue)} but not found`\n          );\n          this.logger.warn(`Removing incoherent facet value : ${v.facetValue.value}`);\n          this.hideFacetValue(v);\n        }\n      }\n    });\n  }\n\n  private checkForNewUnselectedChild() {\n    // It's possible that after checking a facet value, the index returns new facet values (because of injection depth);\n    _.each(this.valueHierarchy, (v: IValueHierarchy) => {\n      if (v.allChildShouldBeSelected) {\n        let notAlreadySelected = _.find(v.childs, (child: IValueHierarchy) => {\n          return child.facetValue.selected != true;\n        });\n        if (notAlreadySelected) {\n          this.selectValue(v.facetValue, true);\n          this.logger.info('Re-executing query with new facet values returned by index');\n          this.queryController.deferExecuteQuery();\n        }\n      }\n    });\n  }\n}\nInitialization.registerAutoCreateComponent(HierarchicalFacet);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/HierarchicalFacet/HierarchicalFacet.ts","import { IQuerySuccessEventArgs, QueryEvents } from '../../events/QueryEvents';\nimport { exportGlobally } from '../../GlobalExports';\nimport { l } from '../../strings/Strings';\nimport { $$ } from '../../utils/Dom';\nimport { SVGDom } from '../../utils/SVGDom';\nimport { SVGIcons } from '../../utils/SVGIcons';\nimport { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { Initialization } from '../Base/Initialization';\n\nexport type ValidLogoTarget = '_top' | '_blank' | '_self' | '_parent';\n\nexport interface ILogoOptions {\n  target: string;\n}\n\n/**\n * The Logo component adds a clickable Coveo logo in the search interface.\n */\nexport class Logo extends Component {\n  static ID = 'Logo';\n\n  static doExport = () => {\n    exportGlobally({\n      Logo: Logo\n    });\n  };\n\n  /**\n   * The possible options for the component\n   * @componentOptions\n   */\n  static options: ILogoOptions = {\n    /**\n     * Specifies how the link to the Coveo website should be opened.\n     *\n     * Valid values supported are `_top`, `_blank`, `_self`, `_parent`.\n     *\n     * Default value is `undefined`, meaning standard browser behaviour for links will be respected.\n     */\n    target: ComponentOptions.buildStringOption<ValidLogoTarget>()\n  };\n\n  /**\n   * Creates a new Logo component.\n   * @param element The HTMLElement on which to instantiate the component.\n   * @param options The options for the Logo component.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time).\n   */\n  constructor(public element: HTMLElement, public options?: ILogoOptions, bindings?: IComponentBindings) {\n    super(element, Logo.ID, bindings);\n    this.options = ComponentOptions.initComponentOptions(element, Logo, options);\n    this.buildLink();\n    this.bind.onRootElement(QueryEvents.queryError, () => this.hide());\n    this.bind.onRootElement(QueryEvents.querySuccess, (data: IQuerySuccessEventArgs) => this.handleQuerySuccess(data));\n  }\n\n  private buildLink() {\n    const link = $$(\n      'a',\n      {\n        className: 'coveo-powered-by coveo-footer-logo',\n        href: 'https://www.coveo.com/',\n        'aria-label': l('CoveoHomePage')\n      },\n      SVGIcons.icons.coveoPoweredBy\n    );\n    this.options.target && link.setAttribute('target', this.options.target);\n\n    SVGDom.addClassToSVGInContainer(link.el, 'coveo-powered-by-svg');\n    this.element.appendChild(link.el);\n  }\n\n  private handleQuerySuccess(data: IQuerySuccessEventArgs) {\n    data.results.results.length > 0 ? this.show() : this.hide();\n  }\n\n  public hide() {\n    $$(this.element).addClass('coveo-hidden');\n  }\n\n  public show() {\n    $$(this.element).removeClass('coveo-hidden');\n  }\n}\n\nInitialization.registerAutoCreateComponent(Logo);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Logo/Logo.ts","import * as Globalize from 'globalize';\nimport 'styling/_Matrix';\nimport * as _ from 'underscore';\nimport { IBuildingQueryEventArgs, IDoneBuildingQueryEventArgs, IQuerySuccessEventArgs, QueryEvents } from '../../events/QueryEvents';\nimport { exportGlobally } from '../../GlobalExports';\nimport { QueryStateModel } from '../../models/QueryStateModel';\nimport { IGroupByRequest } from '../../rest/GroupByRequest';\nimport { IQuery } from '../../rest/Query';\nimport { IQueryResult } from '../../rest/QueryResult';\nimport { IQueryResults } from '../../rest/QueryResults';\nimport { $$ } from '../../utils/Dom';\nimport { QueryUtils } from '../../utils/QueryUtils';\nimport { Utils } from '../../utils/Utils';\nimport { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { IFieldOption } from '../Base/IComponentOptions';\nimport { IInitializationParameters, Initialization } from '../Base/Initialization';\nimport { QueryBuilder } from '../Base/QueryBuilder';\nimport { TemplateComponentOptions } from '../Base/TemplateComponentOptions';\nimport { Template } from '../Templates/Template';\nimport { Cell } from './Cell';\nimport { DefaultMatrixResultPreviewTemplate } from './DefaultMatrixResultPreviewTemplate';\n\nexport interface IMatrixOptions {\n  title?: string;\n\n  rowField: IFieldOption;\n  sortCriteria?: string;\n  maximumNumberOfRows?: number;\n  enableRowTotals?: boolean;\n\n  columnField: IFieldOption;\n  columnFieldValues?: string[];\n  columnLabels?: string[];\n  columnHeader?: string;\n  maximumNumberOfValuesInGroupBy?: number;\n  enableColumnTotals?: boolean;\n\n  computedField: IFieldOption;\n  computedFieldOperation?: string;\n  computedFieldFormat?: string;\n  cellFontSize?: string;\n\n  enableHoverPreview?: boolean;\n  previewSortCriteria?: string;\n  previewSortField?: IFieldOption;\n  previewMaxWidth?: string;\n  previewMinWidth?: string;\n  previewDelay?: number;\n  previewTemplate?: Template;\n}\n\n/**\n * The Matrix component uses the values of two fields (row and column) to display the results of the specified computed\n * field in a table.\n *\n * The user specifies the values to use for the columns. An {@link IGroupByRequest} operation performed at the same time\n * as the main query retrieves the values to use for the rows.\n *\n * In a way that is similar to the {@link Facet} component, selecting a Matrix cell allows the end user to drill down\n * inside the results by restricting the row field and the column field to match the values of the selected cell.\n *\n * @notSupportedIn salesforcefree\n */\nexport class Matrix extends Component {\n  static ID = 'Matrix';\n\n  static doExport = () => {\n    exportGlobally({\n      Matrix: Matrix\n    });\n  };\n\n  /**\n   * The possible options for the component\n   * @componentOptions\n   */\n  static options: IMatrixOptions = {\n    /**\n     * Specifies the text to display at the top of the Matrix.\n     */\n    title: ComponentOptions.buildStringOption(),\n\n    /**\n     * Specifies the field to use for the rows.\n     *\n     * Specifying a value for this options is required for this component to work.\n     */\n    rowField: ComponentOptions.buildFieldOption({ required: true }),\n\n    /**\n     * Specifies the field to use for the columns.\n     *\n     * Specifying a value for this options is required for this component to work.\n     */\n    columnField: ComponentOptions.buildFieldOption({ required: true }),\n\n    /**\n     * Specifies the criteria to use for sorting the rows.\n     *\n     * See {@link IGroupByRequest.sortCriteria} for the list of possible values.\n     *\n     * Default value is `computedfielddescending`.\n     */\n    sortCriteria: ComponentOptions.buildStringOption({ defaultValue: 'computedfielddescending' }),\n\n    /**\n     * Specifies the maximum number of rows to display in the Matrix.\n     *\n     * Default value is `10`. Minimum value is `0`.\n     */\n    maximumNumberOfRows: ComponentOptions.buildNumberOption({ defaultValue: 10, min: 0 }),\n\n    /**\n     * Specifies whether to display a **Total** column containing the sum of each row.\n     *\n     * Default value is `true`.\n     */\n    enableRowTotals: ComponentOptions.buildBooleanOption({ defaultValue: true }),\n\n    /**\n     * Specifies the field values to use for each column.\n     *\n     * See also {@link Matrix.options.columnLabels}.\n     *\n     * Default value is `[]`, which means that the Matrix will not generate any column (except the **Total** column, if\n     * {@link Matrix.options.enableRowTotals} is `true`).\n     */\n    columnFieldValues: ComponentOptions.buildListOption<string>({ defaultValue: [] }),\n\n    /**\n     * Specifies the label values to use for each column.\n     *\n     * Default value is `[]`. The array set for this options should match the {@link Matrix.options.columnFieldValues}.\n     */\n    columnLabels: ComponentOptions.buildListOption<string>({ defaultValue: [] }),\n\n    /**\n     * Specifies the label for the first column on the left as a description of the {@link Matrix.options.columnField}.\n     *\n     * Default value is `undefined`.\n     */\n    columnHeader: ComponentOptions.buildStringOption(),\n\n    /**\n     * Specifies the maximum number of results to include in the {@link IGroupByRequest} for the columns.\n     *\n     * This value should always be greater than the {@link Matrix.options.maximumNumberOfRows}. If it is too small, some\n     * of the results will not be displayed in the Matrix.\n     *\n     * Default value is `100`. Minimum value is `0`.\n     */\n    maximumNumberOfValuesInGroupBy: ComponentOptions.buildNumberOption({ defaultValue: 100, min: 0 }),\n\n    /**\n     * Specifies whether to add a **Total** row containing the total of each column.\n     *\n     * Default value is `true`\n     */\n    enableColumnTotals: ComponentOptions.buildBooleanOption({ defaultValue: true }),\n\n    /**\n     * Specifies the field whose computed values you want to display in the cells.\n     *\n     * Specifying a value for this options is required for this component to work.\n     */\n    computedField: ComponentOptions.buildFieldOption({ required: true }),\n\n    /**\n     * Specifies the type of aggregate operation to perform on the {@link Matrix.options.computedField}.\n     *\n     * The possible values are:\n     * - `sum` - Computes the sum of the computed field values.\n     * - `average` - Computes the average of the computed field values.\n     * - `minimum` - Finds the minimum value of the computed field values.\n     * - `maximum` - Finds the maximum value of the computed field values.\n     *\n     * Default value is `sum`.\n     */\n    computedFieldOperation: ComponentOptions.buildStringOption({ defaultValue: 'sum' }),\n\n    /**\n     * Specifies how to format the values resulting from a {@link Matrix.options.computedFieldOperation}.\n     *\n     * The Globalize library defines all available formats (see\n     * [Globalize](https://github.com/klaaspieter/jquery-global#globalizeformat-value-format-culture-)).\n     *\n     * The most commonly used formats are:\n     * - `c0` - Formats the value as a currency.\n     * - `n0` - Formats the value as an integer.\n     * - `n2` - Formats the value as a floating point with 2 decimal digits.\n     *\n     * Default value is `c0`.\n     */\n    computedFieldFormat: ComponentOptions.buildStringOption({ defaultValue: 'c0' }),\n\n    /**\n     * Specifies the font-size to use for displaying text inside the cells.\n     *\n     * This option is mainly useful to prevent a Matrix containing many columns from cropping some of its values.\n     *\n     * However, instead of using this option to solve this kind of issue, you could also remove some of the less\n     * important columns from your Matrix or modify the CSS of your page to allow the Matrix to occupy a larger space.\n     *\n     * Default value is `''`.\n     */\n    cellFontSize: ComponentOptions.buildStringOption({ defaultValue: '' }),\n\n    /**\n     * Specifies whether to show a preview popup of cell results when hovering over a cell.\n     *\n     * See also {@link Matrix.options.previewSortCriteria}, {@link Matrix.options.previewMaxWidth},\n     * {@link Matrix.options.previewMinWidth}, {@link Matrix.options.previewDelay} and\n     * {@link Matrix.options.previewTemplate}.\n     *\n     * Default value is `true`.\n     */\n    enableHoverPreview: ComponentOptions.buildBooleanOption({ defaultValue: true }),\n\n    /**\n     * If {@link Matrix.options.enableHoverPreview} is `true`, specifies the criteria to use for sorting the results of\n     * the hover preview.\n     *\n     * The available sort criteria values are the same as those of the {@link IQuery}.\n     *\n     * The possible values are:\n     * - `relevancy`: Uses all configured ranking weights and any specified ranking expressions to sort the results.\n     * - `dateascending` / `datedescending`: Sorts the results using the `@date` field value, which is typically the\n     * last modification date of an item in the index.\n     * - `qre`: Sorts the results using only the weights applied by ranking expressions. Using `qre` is much like using\n     * `relevancy`, except that `qre` does not compute automatic weights, such as weights based on keyword proximity.\n     * - `nosort`: Does not sort the results. Using `nosort` returns the items in an essentially random order.\n     * - `fieldascending` / `fielddescending`: Sorts the results using the value of a custom field.\n     * - `fieldascending` / `fielddescending`: Sorts the results using the value of a custom field.\n     *\n     * See also {@link Matrix.options.previewSortField}.\n     *\n     * Default value is `FieldDescending`.\n     */\n    previewSortCriteria: ComponentOptions.buildStringOption({ defaultValue: 'FieldDescending' }),\n\n    /**\n     * If {@link Matrix.options.previewSortCriteria} is `fieldascending` or `fielddescending`, specifies the field to\n     * use for sorting the results of the hover preview.\n     *\n     * Default value is the value of {@link Matrix.options.computedField}.\n     */\n    previewSortField: ComponentOptions.buildFieldOption(),\n\n    /**\n     * If {@link Matrix.options.enableHoverPreview} is `true`, specifies the maximum width (in pixels) of the preview\n     * popup.\n     *\n     * Default value is `500px`.\n     */\n    previewMaxWidth: ComponentOptions.buildStringOption({ defaultValue: '500px' }),\n\n    /**\n     * If {@link Matrix.options.enableHoverPreview} is `true`, specifies the minimum width (in pixels) of the preview\n     * popup.\n     *\n     * Default value is `0`.\n     */\n    previewMinWidth: ComponentOptions.buildStringOption({ defaultValue: '0' }),\n\n    /**\n     * If {@link Matrix.options.enableHoverPreview} is `true`, specifies the delay (in milliseconds) before sending the\n     * query to get the preview results.\n     *\n     * Default value is `500`.\n     */\n    previewDelay: ComponentOptions.buildNumberOption({ defaultValue: 500 }),\n\n    /**\n     * If {@link Matrix.options.enableHoverPreview} is `true`, specifies the template ID or CSS selector of the template\n     * to use to render the results of the hover preview.\n     *\n     * You must use either `data-template-id` or `data-template-selector` in the markup to specify a value for this\n     * option.\n     *\n     * **Examples:**\n     *\n     * Specifying what template to use by referring to its template ID:\n     * ```html\n     * <div class='CoveoMatrix' data-template-id='TemplateId'></div>\n     * ```\n     *\n     * Specifying what template to use by referring to its CSS selector:\n     * ```html\n     * <div class='CoveoMatrix' data-template-selector='.templateSelector'></div>\n     * ```\n     */\n    previewTemplate: TemplateComponentOptions.buildTemplateOption()\n  };\n\n  /**\n   * Holds the data for the Matrix.\n   */\n  public data: Cell[][];\n  public groupByIndex = [];\n  public rowId = '';\n  public columnId = '';\n\n  /**\n   * The currently selected row value, or `undefined` if nothing is selected.\n   */\n  public selectedRowValue: string = undefined;\n\n  /**\n   * The currently selected column value, or `undefined` if nothing is selected.\n   */\n  public selectedColumnValue = undefined;\n\n  private numberOfRows = 0;\n  private numberOfColumns = 0;\n  private previewTimeout: number;\n\n  /**\n   * Creates a new Matrix. Also verifies whether options are valid and coherent. Binds query events.\n   * @param element The HTMLElement on which to instantiate the component.\n   * @param options The options for the Matrix component.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time).\n   */\n  constructor(public element: HTMLElement, public options?: IMatrixOptions, bindings?: IComponentBindings) {\n    super(element, Matrix.ID, bindings);\n    this.options = ComponentOptions.initComponentOptions(element, Matrix, options);\n\n    if (!this.options.previewTemplate) {\n      this.options.previewTemplate = new DefaultMatrixResultPreviewTemplate(\n        <string>this.options.computedField,\n        this.options.computedFieldFormat\n      );\n    }\n\n    if (!this.options.previewSortField) {\n      this.options.previewSortField = <string>this.options.computedField;\n    }\n\n    if (this.options.columnFieldValues.length != this.options.columnLabels.length) {\n      this.options.columnLabels = this.options.columnFieldValues;\n    }\n\n    this.buildMatrix();\n    if (this.options.rowField == null) {\n      this.logger.error(\"'rowField' option is required in the Matrix component\");\n    } else if (this.options.columnField == null) {\n      this.logger.error(\"'columnField' option is required in the Matrix component\");\n    } else if (this.options.computedField == null) {\n      this.logger.error(\"'computedField' option is required in the Matrix component\");\n    } else {\n      this.bindEvents();\n      this.initQueryState();\n    }\n  }\n\n  /**\n   * Selects a cell by its row and column number. Does not execute a query.\n   * @param rowNumber The row number of the cell to select.\n   * @param columnNumber The column number of the cell to select.\n   */\n  public selectCell(rowNumber: number, columnNumber: number): void {\n    let rowValue, columnValue;\n    if (rowNumber !== 0 && rowNumber !== this.numberOfRows - 1) {\n      rowValue = this.getRowValue(rowNumber);\n    }\n\n    if (columnNumber !== 0 && columnNumber !== this.numberOfColumns - 1) {\n      columnValue = this.getColumnValue(columnNumber);\n    }\n\n    if (rowValue && this.isRowFacetPresent()) {\n      this.queryStateModel.set(this.rowId, [rowValue]);\n    } else {\n      this.selectedRowValue = rowValue;\n      this.queryStateModel.set(this.rowId, []);\n    }\n\n    if (columnValue && this.isColumnFacetPresent()) {\n      this.queryStateModel.set(this.columnId, [columnValue]);\n    } else {\n      this.selectedColumnValue = columnValue;\n      this.queryStateModel.set(this.columnId, []);\n    }\n  }\n\n  /**\n   * Returns the currently selected column value.\n   */\n  public getSelectedColumnValue(): string {\n    return this.selectedColumnValue;\n  }\n\n  /**\n   * Returns the currently selected row value.\n   */\n  public getSelectedRowValue(): string {\n    return this.selectedRowValue;\n  }\n\n  /**\n   * Gets the HTMLElement associated to a cell.\n   * @param rowNumber The row number of the cell.\n   * @param columnNumber The column number of the cell.\n   * @returns {HTMLElement} The associated HTMLElement.\n   */\n  public getCellElement(rowNumber: number, columnNumber: number): HTMLElement {\n    return this.data[rowNumber][columnNumber].getHTML();\n  }\n\n  /**\n   * Gets the string associated to a cell.\n   * @param rowNumber The row number of the cell.\n   * @param columnNumber The column number of the cell.\n   * @returns {string} The associated string.\n   */\n  public getCellValue(rowNumber: number, columnNumber: number): string {\n    let cell = this.getCellElement(rowNumber, columnNumber);\n    return $$(cell).text();\n  }\n\n  public drawMatrix() {\n    let headerRow = $$('div', {\n      className: 'coveo-matrix-row matrix-header-row'\n    });\n    this.drawRow(headerRow.el, 0);\n    let numberOfRowsToDraw = this.options.enableColumnTotals ? this.numberOfRows - 1 : this.numberOfRows;\n    for (let i = 1; i < numberOfRowsToDraw; i++) {\n      let row = $$('div', {\n        className: 'coveo-matrix-row'\n      }).el;\n      this.drawRow(row, i);\n    }\n\n    if (this.options.enableColumnTotals) {\n      let totalRow = $$('div', {\n        className: 'coveo-matrix-row matrix-total-row'\n      }).el;\n\n      this.drawRow(totalRow, this.numberOfRows - 1);\n    }\n\n    if (this.options.cellFontSize !== '') {\n      let cells = $$(this.element).findAll('.coveo-matrix-cell');\n      _.each(cells, (c: HTMLElement) => {\n        c.style.fontSize = this.options.cellFontSize;\n      });\n    }\n  }\n\n  private bindEvents() {\n    this.bind.onRootElement(QueryEvents.buildingQuery, (args: IBuildingQueryEventArgs) => this.handleBuildingQuery(args));\n    this.bind.onRootElement(QueryEvents.doneBuildingQuery, (args: IDoneBuildingQueryEventArgs) => this.handleDoneBuildingQuery(args));\n    this.bind.onRootElement(QueryEvents.deferredQuerySuccess, (args: IQuerySuccessEventArgs) => this.handleDeferredQuerySuccess(args));\n  }\n\n  private initQueryState() {\n    this.rowId = QueryStateModel.getFacetId(<string>this.options.rowField);\n    this.columnId = QueryStateModel.getFacetId(<string>this.options.columnField);\n\n    this.queryStateModel.registerNewAttribute(this.rowId, []);\n    this.queryStateModel.registerNewAttribute(this.columnId, []);\n  }\n\n  private buildMatrix() {\n    this.buildTitle();\n    this.buildBody();\n    this.data = new Array<Array<Cell>>();\n    this.addHeaderRow();\n  }\n\n  private buildTitle() {\n    let title = this.options.title ? this.options.title : '';\n    let titleHtml = $$(\n      'div',\n      {\n        className: 'coveo-matrix-title'\n      },\n      title\n    ).el;\n    this.element.appendChild(titleHtml);\n  }\n\n  private buildBody() {\n    let body = $$('div', {\n      className: 'coveo-matrix'\n    }).el;\n    this.element.appendChild(body);\n  }\n\n  private handleBuildingQuery(args: IBuildingQueryEventArgs) {\n    if (!this.areFacetsPresent()) {\n      if (this.selectedRowValue && !this.isRowFacetPresent()) {\n        args.queryBuilder.advancedExpression.addFieldExpression(<string>this.options.rowField, '=', [this.selectedRowValue]);\n      }\n      if (this.selectedColumnValue && !this.isColumnFacetPresent()) {\n        args.queryBuilder.advancedExpression.addFieldExpression(<string>this.options.columnField, '=', [this.selectedColumnValue]);\n      }\n    }\n  }\n\n  private handleDoneBuildingQuery(args: IDoneBuildingQueryEventArgs) {\n    this.groupByIndex = [];\n    this.addMainGroubByRequest(args.queryBuilder);\n    this.addColumnsGroupByRequests(args.queryBuilder);\n  }\n\n  private handleDeferredQuerySuccess(args: IQuerySuccessEventArgs) {\n    this.reset();\n    this.parseResults(args.results);\n    this.addTotals();\n    this.drawMatrix();\n    this.formatCells();\n    this.selectedRowValue = undefined;\n    this.selectedColumnValue = undefined;\n  }\n\n  private addMainGroubByRequest(queryBuilder: QueryBuilder) {\n    let groupBy: IGroupByRequest = {\n      field: <string>this.options.rowField,\n      sortCriteria: this.options.sortCriteria,\n      computedFields: this.getComputedFields(),\n      maximumNumberOfValues: this.options.maximumNumberOfRows\n    };\n\n    this.groupByIndex.push(queryBuilder.groupByRequests.length);\n    queryBuilder.groupByRequests.push(groupBy);\n  }\n\n  private addColumnsGroupByRequests(queryBuilder: QueryBuilder) {\n    for (let i = 0; i < this.options.columnFieldValues.length; i++) {\n      let groupBy = {\n        field: <string>this.options.rowField,\n        sortCriteria: this.options.sortCriteria,\n        computedFields: this.getComputedFields(),\n        queryOverride:\n          '(' + this.buildExpression(queryBuilder) + ')' + '(' + this.options.columnField + \"='\" + this.options.columnFieldValues[i] + \"')\",\n        maximumNumberOfValues: this.options.maximumNumberOfValuesInGroupBy\n      };\n\n      this.groupByIndex.push(queryBuilder.groupByRequests.length);\n      queryBuilder.groupByRequests.push(groupBy);\n    }\n  }\n\n  private buildExpression(queryBuilder: QueryBuilder) {\n    let expression = queryBuilder.expression.build();\n    let advancedExpression = queryBuilder.advancedExpression.build();\n    let constantExpression = queryBuilder.constantExpression.build();\n    let totalQuery = '';\n    if (expression) {\n      totalQuery += ' ' + expression;\n    }\n    if (advancedExpression) {\n      totalQuery += ' ' + advancedExpression;\n    }\n    if (constantExpression) {\n      totalQuery += ' ' + constantExpression;\n    }\n    return totalQuery;\n  }\n\n  private getComputedFields() {\n    let computedFields = [\n      {\n        field: <string>this.options.computedField,\n        operation: this.options.computedFieldOperation\n      }\n    ];\n    return computedFields;\n  }\n\n  private getCellResult(results, rowNumber: number, columnNumber: number) {\n    let rowValue = this.getRowValue(rowNumber);\n    let columnValue = this.getColumnValue(columnNumber);\n    let cellResult = 0;\n\n    for (let i = 0; i < results.values.length; i++) {\n      if (results.values[i].value === rowValue) {\n        cellResult = results.values[i].computedFieldResults[0];\n        break;\n      }\n    }\n\n    if (this.isAColumnSelected() && !this.isColumnSelected(columnValue)) {\n      cellResult = 0;\n    }\n\n    return cellResult;\n  }\n\n  private addTotals() {\n    if (this.options.enableRowTotals) {\n      this.addRowTotals();\n    }\n    if (this.options.enableColumnTotals) {\n      this.addColumnTotals();\n    }\n  }\n\n  private addRowTotals() {\n    this.addColumn();\n    this.setValue('Total', 0, this.numberOfColumns - 1);\n    for (let i = 1; i < this.numberOfRows; i++) {\n      let rowTotal = this.computeRowTotal(i);\n      this.setValue(rowTotal, i, this.numberOfColumns - 1);\n    }\n\n    // Fix sort ordering when not all columns field values are present.\n    if (this.options.sortCriteria.toLowerCase() == 'computedfielddescending') {\n      this.data.sort((a: Cell[], b: Cell[]): number => {\n        return b[this.numberOfColumns - 1].getValue() - a[this.numberOfColumns - 1].getValue();\n      });\n    }\n\n    if (this.options.sortCriteria.toLowerCase() == 'computedfieldascending') {\n      this.data.sort((a: Cell[], b: Cell[]): number => {\n        return a[this.numberOfColumns - 1].getValue() - b[this.numberOfColumns - 1].getValue();\n      });\n    }\n  }\n\n  private addColumnTotals() {\n    this.addRow();\n    this.setValue('Total', this.numberOfRows - 1, 0);\n    for (let i = 1; i < this.numberOfColumns; i++) {\n      let columnTotal = this.computeColumnTotal(i);\n      this.setValue(columnTotal, this.numberOfRows - 1, i);\n    }\n  }\n\n  private computeRowTotal(rowNumber: number): number {\n    let total = 0;\n    for (let columnNumber = 1; columnNumber < this.numberOfColumns - 1; columnNumber++) {\n      total += parseInt(this.getCellValue(rowNumber, columnNumber));\n    }\n    return total;\n  }\n\n  private computeColumnTotal(columnNumber: number): number {\n    let total = 0;\n    for (let rowNumber = 1; rowNumber < this.numberOfRows - 1; rowNumber++) {\n      total += parseInt(this.getCellValue(rowNumber, columnNumber));\n    }\n    return total;\n  }\n\n  private formatCells() {\n    for (let i = 1; i < this.numberOfRows; i++) {\n      for (let j = 1; j < this.numberOfColumns; j++) {\n        let cellValue = this.getCellValue(i, j);\n        cellValue = Globalize.format(parseInt(cellValue), this.options.computedFieldFormat);\n        this.setValue(cellValue, i, j);\n      }\n    }\n  }\n\n  private addHeaderRow() {\n    this.addRow();\n    this.addColumn();\n    this.setValue(this.options.columnHeader, 0, 0);\n    for (let i = 0; i < this.options.columnLabels.length; i++) {\n      this.addColumn();\n      this.setValue(this.options.columnLabels[i], 0, i + 1);\n    }\n  }\n\n  private addRow() {\n    this.data.push(new Array<Cell>());\n\n    for (let i = 0; i < this.numberOfColumns; i++) {\n      this.addCellToRow(this.numberOfRows, i);\n    }\n    this.numberOfRows++;\n  }\n\n  private addColumn() {\n    for (let i = 0; i < this.numberOfRows; i++) {\n      this.addCellToRow(i, this.numberOfColumns);\n    }\n\n    this.numberOfColumns++;\n  }\n\n  private addCellToRow(rowNumber: number, columnNumber: number) {\n    let column = $$('div', {\n      className: 'coveo-matrix-cell'\n    });\n\n    if (columnNumber == 0) {\n      column.addClass('matrix-first-column');\n    }\n    this.data[rowNumber].push(new Cell(0, column.el));\n  }\n\n  private setValue(value: any, rowNumber: number, columnNumber: number) {\n    let cell = this.getCellElement(rowNumber, columnNumber);\n    if (!Utils.isNullOrUndefined(value)) {\n      $$(cell).text(value.toString());\n    }\n\n    if (this.isCellSelected(this.getRowValue(rowNumber), this.getColumnValue(columnNumber))) {\n      $$(cell).addClass('coveo-matrix-selected');\n    }\n\n    if (this.isAColumnSelected() && !this.isColumnSelected(this.getColumnValue(columnNumber))) {\n      if (columnNumber != 0 && rowNumber != 0) {\n        $$(cell).addClass('coveo-matrix-unimportant');\n      }\n    }\n\n    this.data[rowNumber][columnNumber].setValue(value);\n  }\n\n  private handleClick(rowNumber: number, columnNumber: number) {\n    this.selectCell(rowNumber, columnNumber);\n    this.queryController.executeQuery();\n  }\n\n  private getRowValue(rowNumber: number): string {\n    return this.data[rowNumber][0].getValue();\n  }\n\n  private getColumnValue(columnNumber: number): string {\n    return this.options.columnFieldValues[columnNumber - 1];\n  }\n\n  private isAColumnSelected(): boolean {\n    let selectedColumnValues = this.queryStateModel.get(this.columnId) || [];\n    return selectedColumnValues.length !== 0 || this.selectedColumnValue != undefined;\n  }\n\n  private isColumnSelected(columnValue: string): boolean {\n    if (this.isAColumnSelected() && columnValue) {\n      let selectedColumnValues = this.queryStateModel.attributes[this.columnId] || [];\n      for (let i = 0; i < selectedColumnValues.length; i++) {\n        if (selectedColumnValues[i].toLowerCase() === columnValue.toLowerCase()) {\n          return true;\n        }\n      }\n    }\n    return this.selectedColumnValue == columnValue;\n  }\n\n  private isARowSelected(): boolean {\n    let selectedRowValues = this.queryStateModel.get(this.rowId) || [];\n    return selectedRowValues.length !== 0 || this.selectedRowValue !== undefined;\n  }\n\n  private isRowSelected(rowValue: string): boolean {\n    if (this.isARowSelected() && rowValue) {\n      let selectedRowValues = this.queryStateModel.get(this.rowId) || [];\n      for (let i = 0; i < selectedRowValues.length; i++) {\n        if (selectedRowValues[i].toLowerCase() === rowValue.toLowerCase()) {\n          return true;\n        }\n      }\n    }\n    return this.selectedRowValue == rowValue;\n  }\n\n  private isCellSelected(rowValue: string, columnValue: string): boolean {\n    if (this.isAColumnSelected() && this.isARowSelected()) {\n      return this.isRowSelected(rowValue) && this.isColumnSelected(columnValue);\n    } else if (this.isAColumnSelected()) {\n      return this.isColumnSelected(columnValue);\n    }\n\n    return false;\n  }\n\n  private areFacetsPresent() {\n    return this.isRowFacetPresent() && this.isColumnFacetPresent();\n  }\n\n  private isRowFacetPresent() {\n    let facet = this.componentStateModel.get(this.rowId);\n    return facet && !facet[0].disabled;\n  }\n\n  private isColumnFacetPresent() {\n    let facet = this.componentStateModel.get(this.columnId);\n    return facet && !facet[0].disabled;\n  }\n\n  private reset() {\n    $$(this.element).empty();\n    this.numberOfRows = 0;\n    this.numberOfColumns = 0;\n    this.data = new Array<Array<Cell>>();\n\n    this.buildMatrix();\n  }\n\n  private parseResults(results: IQueryResults) {\n    if (results) {\n      let mainResults = results.groupByResults[this.groupByIndex[0]];\n      if (mainResults) {\n        for (let i = 0; i < mainResults.values.length; i++) {\n          let value = mainResults.values[i].value;\n          this.addRow();\n          this.setValue(value, i + 1, 0);\n        }\n      }\n\n      for (let i = 1; i < this.numberOfRows; i++) {\n        for (let j = 1; j < this.numberOfColumns; j++) {\n          let columnResult = results.groupByResults[this.groupByIndex[j]];\n          let cellValue = this.getCellResult(columnResult, i, j);\n          this.setValue(cellValue, i, j);\n        }\n      }\n    }\n  }\n\n  private drawRow(row: HTMLElement, rowNumber: number) {\n    let body = $$(this.element).find('.coveo-matrix');\n    for (let i = 0; i < this.numberOfColumns; i++) {\n      let cell = this.data[rowNumber][i].getHTML();\n      $$(cell).on('click', () => {\n        let handler = num => {\n          this.handleClick(rowNumber, num);\n        };\n        handler(i);\n      });\n\n      if (this.options.enableHoverPreview) {\n        ((num: number) => {\n          $$(cell).on('mouseover', () => this.handleHoverIn(rowNumber, num));\n          $$(cell).on('mouseout', () => this.handleHoverOut(rowNumber, num));\n        })(i);\n      }\n      row.appendChild(cell);\n    }\n    body.appendChild(row);\n  }\n\n  private handleHoverIn(rowNumber: number, columnNumber: number) {\n    if (this.isHoverWorkingOnRow(rowNumber) && this.isHoverWorkingOnColumn(columnNumber)) {\n      this.previewTimeout = window.setTimeout(() => {\n        this.displayResultsPreview(rowNumber, columnNumber);\n      }, this.options.previewDelay);\n    }\n  }\n\n  private handleHoverOut(rowNumber: number, columnNumber: number) {\n    clearTimeout(this.previewTimeout);\n    let cell = this.data[rowNumber][columnNumber];\n    cell.removePreview();\n  }\n\n  private displayResultsPreview(rowNumber: number, columnNumber: number) {\n    let query = this.createPreviewQuery(rowNumber, columnNumber);\n    let cell = this.data[rowNumber][columnNumber];\n    cell.addPreview(this.options.previewMinWidth, this.options.previewMaxWidth);\n\n    let endpoint = this.queryController.getEndpoint();\n    endpoint.search(query).then((data: IQueryResults) => {\n      // During the time it take for the query to return, the matrix can change size depending\n      // on if another query was performed : Need to check for undefined before accessing the data\n      // we're trying to render;\n      if (!this.isDataAvailable(rowNumber, columnNumber)) {\n        return;\n      }\n      let cell = this.data[rowNumber][columnNumber];\n      let instantiatedResults = _.map(data.results, (r: IQueryResult) => {\n        return this.instantiateTemplate(r);\n      });\n      let html = '';\n      _.each(instantiatedResults, result => {\n        result.then((builtResultElement: HTMLElement) => {\n          html += builtResultElement.outerHTML;\n        });\n      });\n      Promise.all(instantiatedResults).then(() => {\n        cell.updatePreview(html);\n      });\n    });\n  }\n\n  private instantiateTemplate(result: IQueryResult): Promise<HTMLElement> {\n    return this.options.previewTemplate\n      .instantiateToElement(result, {\n        checkCondition: false,\n        responsiveComponents: this.searchInterface.responsiveComponents\n      })\n      .then((content: HTMLElement) => {\n        let initParameters: IInitializationParameters = {\n          options: this.options,\n          bindings: this.getBindings(),\n          result: result\n        };\n\n        return Initialization.automaticallyCreateComponentsInside(content, initParameters).initResult.then(() => {\n          return content;\n        });\n      });\n  }\n\n  private createPreviewQuery(rowNumber: number, columnNumber: number): IQuery {\n    let rowFieldExpression = '(' + QueryUtils.buildFieldExpression(<string>this.options.rowField, '=', [this.getRowValue(rowNumber)]) + ')';\n    let columnFieldExpression =\n      '(' + QueryUtils.buildFieldExpression(<string>this.options.columnField, '=', [this.getColumnValue(columnNumber)]) + ')';\n    let query = this.queryController.getLastQuery();\n    query.aq = rowFieldExpression;\n    query.aq += columnFieldExpression;\n    query.sortCriteria = this.options.previewSortCriteria;\n    query.sortField = <string>this.options.previewSortField;\n    let fieldSliced = this.options.computedField.slice(1);\n    let fieldExists = _.find(query.fieldsToInclude, (field: string) => {\n      return field == fieldSliced;\n    });\n    if (!fieldExists && query.fieldsToInclude) {\n      query.fieldsToInclude.push(fieldSliced);\n    }\n    return query;\n  }\n\n  private isHoverWorkingOnRow(rowNumber: number) {\n    if (this.options.enableColumnTotals) {\n      return rowNumber !== 0 && rowNumber !== this.numberOfRows - 1;\n    }\n    return rowNumber !== 0;\n  }\n\n  private isHoverWorkingOnColumn(columnNumber: number) {\n    if (this.options.enableRowTotals) {\n      return columnNumber !== 0 && columnNumber !== this.numberOfColumns - 1;\n    }\n    return columnNumber !== 0;\n  }\n\n  private isDataAvailable(row: number, column: number) {\n    return this.data[row] !== undefined && this.data[row][column] !== undefined;\n  }\n}\n\nInitialization.registerAutoCreateComponent(Matrix);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Matrix/Matrix.ts","import 'styling/_OmniboxResultList';\nimport * as _ from 'underscore';\nimport { IPopulateOmniboxEventArgs, OmniboxEvents } from '../../events/OmniboxEvents';\nimport { IBuildingQueryEventArgs, QueryEvents } from '../../events/QueryEvents';\nimport { InitializationEvents } from '../../EventsModules';\nimport { exportGlobally } from '../../GlobalExports';\nimport { Assert } from '../../misc/Assert';\nimport { Logger } from '../../misc/Logger';\nimport { IQueryResult } from '../../rest/QueryResult';\nimport { IQueryResults } from '../../rest/QueryResults';\nimport { l } from '../../strings/Strings';\nimport { $$ } from '../../utils/Dom';\nimport { Utils } from '../../utils/Utils';\nimport { analyticsActionCauseList, IAnalyticsNoMeta } from '../Analytics/AnalyticsActionListMeta';\nimport { logSearchBoxSubmitEvent } from '../Analytics/SharedAnalyticsCalls';\nimport { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { IQueryExpression } from '../Base/IComponentOptions';\nimport { Initialization } from '../Base/Initialization';\nimport { ResultList } from '../ResultList/ResultList';\nimport { IResultListOptions } from '../ResultList/ResultListOptions';\nimport OmniboxModuleDefintion = require('../Omnibox/Omnibox');\n\nexport interface IOmniboxResultListOptions extends IResultListOptions {\n  omniboxZIndex?: number;\n  onSelect?: (result: IQueryResult, resultElement: HTMLElement, omniboxObject: IPopulateOmniboxEventArgs, event?: Event) => void;\n  headerTitle?: string;\n  queryOverride?: IQueryExpression;\n}\n\n/**\n * The OmniboxResultList component behaves exactly like the {@link ResultList} component (which it extends), except that\n * it renders itself inside the {@link Omnibox} component.\n *\n * This component can provide a kind of search-as-you-type functionality, allowing you to easily render complex Result\n * Templates inside the Omnibox component.\n *\n * **Example:**\n *\n * ```html\n * <div class=\"CoveoOmniboxResultList\">\n *   <script class=\"result-template\" type=\"text/x-underscore\">\n *     <div>\n *       <a class='CoveoResultLink'></a>\n *     </div>\n *   </script>\n * </div>\n * ```\n */\nexport class OmniboxResultList extends ResultList implements IComponentBindings {\n  static ID = 'OmniboxResultList';\n\n  /**\n   * Specifies a list a css class that should be ignored when the end user click result in the omnibox\n   *\n   * Any element that is specified here should normally be able to handle the standard click event.\n   *\n   * Any element that does not match this css class and that is clicked will trigger a redirection by the OmniboxResultList.\n   */\n  static elementsToIgnore = [\n    'coveo-field-table-toggle-caption',\n    'CoveoFollowItem',\n    'CoveoPrintableUri',\n    'CoveoQuickview',\n    'CoveoResultLink',\n    'CoveoResultRating',\n    'CoveoResultTagging',\n    'CoveoYouTubeThumbnail'\n  ];\n\n  static doExport = () => {\n    exportGlobally({\n      OmniboxResultList: OmniboxResultList\n    });\n  };\n\n  /**\n   * The options for the component\n   * @componentOptions\n   */\n  static options: IOmniboxResultListOptions = {\n    layout: ComponentOptions.buildStringOption({\n      defaultValue: 'list',\n      postProcessing: optionSetByUser => {\n        if (optionSetByUser != 'list') {\n          const logger = new Logger(OmniboxResultList);\n          logger.warn(`Cannot apply layout ${optionSetByUser} on the OmniboxResultListComponent`);\n          logger.warn(`OmniboxResultList does not support any layout other than \"list\"`);\n        }\n        return 'list';\n      }\n    }),\n    /**\n     * Specifies the z-index at which to render the ResultList inside the Omnibox.\n     *\n     * Default value is `51`. Minimum value is `16` ({@link Facet} components are at `50` by default)\n     */\n    omniboxZIndex: ComponentOptions.buildNumberOption({ defaultValue: 51, min: 16 }),\n\n    /**\n     * Specifies the title to use for this section.\n     *\n     * Default value is the localized string for `Suggested Results`.\n     */\n    headerTitle: ComponentOptions.buildStringOption(),\n\n    /**\n     * Specifies the override to use on the query sent to the OmniboxResultList component.\n     *\n     * Default value is `undefined`, which means no default override is specified.\n     */\n    queryOverride: ComponentOptions.buildQueryExpressionOption(),\n\n    /**\n     * Specifies the function to execute when the user selects a result suggestion.\n     *\n     * The default function opens the corresponding result URI in the browser.\n     *\n     * It is only possible to specify a value for this option in the {@link init} call of your search interface. You\n     * cannot set it directly as an HTML attribute.\n     *\n     * **Example:**\n     *\n     * ```javascript\n     * // You can call the init script using \"pure\" JavaScript:\n     * Coveo.init(document.querySelector('#search'), {\n     *    OmniboxResultList : {\n     *        //Close the omnibox, change the selected HTMLElement background color and alert the result title.\n     *        onSelect : function(result, resultElement, omniBoxObject) {\n     *            omniBoxObject.close();\n     *            resultElement.css('background-color', 'red');\n     *            alert(result.title);\n     *        }\n     *     }\n     * })\n     *\n     * // Or you can call the init script using the jQuery extension:\n     * $(\"#search\").coveo(\"init\", {\n     *    OmniboxResultList : {\n     *        //Close the Omnibox, change the selected HTMLElement background color and alert the result title.\n     *        onSelect : function(result, resultElement, omniBoxObject) {\n     *            omniBoxObject.close();\n     *            resultElement.css('background-color', 'red');\n     *            alert(result.title);\n     *        }\n     *     }\n     * })\n     * ```\n     */\n    onSelect: ComponentOptions.buildCustomOption<\n      (result: IQueryResult, resultElement: HTMLElement, omniboxObject: IPopulateOmniboxEventArgs) => void\n    >(() => {\n      return null;\n    })\n  };\n\n  private lastOmniboxRequest: { omniboxObject: IPopulateOmniboxEventArgs; resolve: (...args: any[]) => void };\n\n  /**\n   * Creates a new OmniboxResultList component.\n   * @param element The HTMLElement on which to instantiate the component.\n   * @param options The options for the OmniboxResultList component.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time).\n   */\n  constructor(public element: HTMLElement, public options?: IOmniboxResultListOptions, public bindings?: IComponentBindings) {\n    super(element, options, bindings, OmniboxResultList.ID);\n    this.options = ComponentOptions.initComponentOptions(element, OmniboxResultList, options);\n    this.setupOptions();\n    this.bind.onRootElement(OmniboxEvents.populateOmnibox, (args: IPopulateOmniboxEventArgs) => this.handlePopulateOmnibox(args));\n    this.bind.onRootElement(QueryEvents.buildingQuery, (args: IBuildingQueryEventArgs) => this.handleBuildingQuery(args));\n    this.bind.onRootElement(InitializationEvents.afterComponentsInitialization, () => {\n      this.handleAfterComponentInit();\n    });\n  }\n\n  /**\n   * Builds and returns an array of `HTMLElement` from the {@link IQueryResults} set received as an argument.\n   * @param results The IQueryResults set to build an array of `HTMLElement` from.\n   */\n  public buildResults(results: IQueryResults): Promise<HTMLElement[]> {\n    const builtResults: HTMLElement[] = [];\n    const builtPromises = _.map(results.results, (result: IQueryResult) => {\n      return this.buildResult(result).then((resultElement: HTMLElement) => {\n        $$(resultElement).addClass('coveo-omnibox-selectable');\n        resultElement['no-text-suggestion'] = true;\n\n        $$(resultElement).on(['keyboardSelect', 'click'], (e: Event) => this.handleOmniboxElementSelection(e, resultElement, result));\n\n        return this.autoCreateComponentsInsideResult(resultElement, result).initResult.then(() => {\n          builtResults.push(resultElement);\n          return resultElement;\n        });\n      });\n    });\n\n    return Promise.all(builtPromises).then(() => {\n      return builtResults;\n    });\n  }\n\n  /**\n   * Creates a result container and appends each element from the received `HTMLElement` array to it. For each element\n   * it appends to the result container, this method triggers a `newResultDisplayed` event. Once all elements have been\n   * appended to the result container, the method triggers a `newResultsDisplayed` event.\n   * @param resultElements The array of `HTMLElement` to render.\n   * @param append\n   */\n  public renderResults(resultElements: HTMLElement[], append = false) {\n    $$(this.options.resultsContainer).empty();\n\n    if (!this.lastOmniboxRequest) {\n      return Promise.resolve(null);\n    }\n\n    if (resultElements.length) {\n      this.appendHeaderIfTitleIsSpecified();\n      this.appendResults(resultElements);\n    }\n\n    this.resolveLastOmniboxRequest();\n\n    return Promise.resolve(null);\n  }\n\n  private handleAfterComponentInit() {\n    const omniboxElement: HTMLElement = $$(this.root).find(`.${Component.computeCssClassNameForType('Omnibox')}`);\n    if (omniboxElement) {\n      const omnibox = <OmniboxModuleDefintion.Omnibox>Component.get(omniboxElement);\n      const magicBox = omnibox.magicBox;\n      magicBox.onsubmit = () => {\n        logSearchBoxSubmitEvent(this.usageAnalytics);\n        this.queryController.executeQuery();\n      };\n    }\n  }\n\n  private appendHeaderIfTitleIsSpecified() {\n    if (this.options.headerTitle) {\n      this.options.resultsContainer.appendChild(\n        $$(\n          'div',\n          { className: 'coveo-omnibox-result-list-header' },\n          $$('span', { className: 'coveo-icon-omnibox-result-list' }).el,\n          $$('span', { className: 'coveo-caption' }, l(this.options.headerTitle)).el\n        ).el\n      );\n    }\n  }\n\n  private appendResults(resultElements: HTMLElement[]) {\n    _.each(resultElements, (resultElement: HTMLElement) => {\n      this.options.resultsContainer.appendChild(resultElement);\n      this.triggerNewResultDisplayed(Component.getResult(resultElement), resultElement);\n    });\n\n    this.triggerNewResultsDisplayed();\n  }\n\n  private resolveLastOmniboxRequest() {\n    if ($$(this.options.resultsContainer).findAll('.coveo-omnibox-selectable').length == 0) {\n      this.lastOmniboxRequest.resolve({ element: null, zIndex: this.options.omniboxZIndex });\n    } else {\n      this.lastOmniboxRequest.resolve({ element: this.options.resultsContainer, zIndex: this.options.omniboxZIndex });\n    }\n  }\n\n  protected handleChangeLayout() {\n    // Since OmniboxResultList does not allow multiple layout,\n    // we simply ignore the event change since the component does not have anything meaningful to do.\n    return;\n  }\n\n  private setupOptions() {\n    this.logger.info('Disabling infinite scroll for OmniboxResultList', this);\n    this.options.enableInfiniteScroll = false;\n    this.options.onSelect = this.options.onSelect || this.onRowSelection;\n  }\n\n  private handlePopulateOmnibox(args: IPopulateOmniboxEventArgs) {\n    const promise = new Promise((resolve, reject) => {\n      this.queryController.executeQuery({\n        searchAsYouType: true,\n        shouldRedirectStandaloneSearchbox: false,\n        beforeExecuteQuery: () => this.usageAnalytics.logSearchAsYouType<IAnalyticsNoMeta>(analyticsActionCauseList.searchboxSubmit, {})\n      });\n      this.lastOmniboxRequest = { omniboxObject: args, resolve: resolve };\n    });\n    args.rows.push({\n      deferred: promise\n    });\n  }\n\n  protected handleBuildingQuery(args: IBuildingQueryEventArgs) {\n    Assert.exists(args);\n    if (Utils.isNonEmptyString(this.options.queryOverride)) {\n      args.queryBuilder.constantExpression.add(this.options.queryOverride);\n    }\n  }\n\n  private handleOmniboxElementSelection(e: Event, resultElement: HTMLElement, result: IQueryResult) {\n    if (e && e.target && this.otherComponentShouldHandleSelection(e, resultElement)) {\n      return;\n    }\n\n    if (this.lastOmniboxRequest) {\n      this.options.onSelect.call(this, result, resultElement, this.lastOmniboxRequest.omniboxObject, e);\n    }\n  }\n\n  private otherComponentShouldHandleSelection(e: Event, resultElement: HTMLElement) {\n    // Other components can \"trap\" the click event, and instead trigger the \"standard\" component behaviour.\n    // So, for example, if someones clicks the ResultLink directly, we want the result link code to execute to redirect to the result, and not the OmniboxResultList selection code.\n    // Same for Quickview, YouTubeThumbnail, etc.\n    let current = e.target as HTMLElement;\n    let otherComponentWillHandleClick = false;\n\n    while (current && current != resultElement) {\n      otherComponentWillHandleClick =\n        _.find(OmniboxResultList.elementsToIgnore, elementToIgnore => $$(current).hasClass(elementToIgnore)) != null;\n\n      if (otherComponentWillHandleClick) {\n        break;\n      }\n\n      current = current.parentElement;\n    }\n    return otherComponentWillHandleClick;\n  }\n\n  private onRowSelection(result: IQueryResult, resultElement: HTMLElement, omniboxObject: IPopulateOmniboxEventArgs, e: Event) {\n    this.usageAnalytics.logClickEvent(\n      analyticsActionCauseList.documentOpen,\n      { author: Utils.getFieldValue(result, 'author') },\n      result,\n      this.root\n    );\n    window.location.href = result.clickUri;\n  }\n\n  protected initResultContainerAddToDom() {\n    //This function is overwritten and don't do anything because we don't want to append the result container\n    //to the DOM. If the resultContainer was to be appended to the DOM, this could lead to result appearing\n    //outside of the magicBox so the rest of the page would be push down\n  }\n}\n\nInitialization.registerAutoCreateComponent(OmniboxResultList);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/OmniboxResultList/OmniboxResultList.ts","import 'styling/_Pager';\nimport {\n  IBuildingQueryEventArgs,\n  INewQueryEventArgs,\n  INoResultsEventArgs,\n  IQuerySuccessEventArgs,\n  QueryEvents\n} from '../../events/QueryEvents';\nimport { ResultListEvents } from '../../events/ResultListEvents';\nimport { exportGlobally } from '../../GlobalExports';\nimport { Assert } from '../../misc/Assert';\nimport { IAttributeChangedEventArg, MODEL_EVENTS } from '../../models/Model';\nimport { QueryStateModel, QUERY_STATE_ATTRIBUTES } from '../../models/QueryStateModel';\nimport { l } from '../../strings/Strings';\nimport { AccessibleButton } from '../../utils/AccessibleButton';\nimport { DeviceUtils } from '../../utils/DeviceUtils';\nimport { $$ } from '../../utils/Dom';\nimport { ResultListUtils } from '../../utils/ResultListUtils';\nimport { SVGDom } from '../../utils/SVGDom';\nimport { SVGIcons } from '../../utils/SVGIcons';\nimport { analyticsActionCauseList, IAnalyticsActionCause, IAnalyticsPagerMeta } from '../Analytics/AnalyticsActionListMeta';\nimport { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { Initialization } from '../Base/Initialization';\n\nexport interface IPagerOptions {\n  numberOfPages: number;\n  enableNavigationButton: boolean;\n  maxNumberOfPages: number;\n  maximumNumberOfResultsFromIndex: number;\n}\n\n/**\n * The Pager component attaches itself to a `div` element and renders widgets that allow the end user to navigate\n * through the different result pages.\n *\n * This component takes care of triggering a query with the correct result range whenever the end user selects a page or\n * uses the navigation buttons (**Previous** and **Next**).\n */\nexport class Pager extends Component {\n  static ID = 'Pager';\n\n  static doExport = () => {\n    exportGlobally({\n      Pager: Pager\n    });\n  };\n\n  /**\n   * The options for the Pager\n   * @componentOptions\n   */\n  static options: IPagerOptions = {\n    /**\n     * Specifies how many page links to display in the pager.\n     *\n     * Default value is `5` on a desktop computers and `3` on a mobile device. Minimum value is `1`.\n     */\n    numberOfPages: ComponentOptions.buildNumberOption({\n      defaultFunction: () => {\n        if (DeviceUtils.isMobileDevice()) {\n          return 3;\n        } else {\n          return 5;\n        }\n      },\n      min: 1\n    }),\n\n    /**\n     * Specifies whether the **Previous** and **Next** buttons should appear at each end of the pager when appropriate.\n     *\n     * The default value is `true`.\n     */\n    enableNavigationButton: ComponentOptions.buildBooleanOption({ defaultValue: true }),\n\n    /**\n     * Specifies the maximum number of pages to display if enough results are available.\n     *\n     * This property is typically set when the default number of accessible results from the index has been changed from its default value of `1000` (10 results per page X 100 `maxNumberOfPages`).\n     * Default value is `100`\n     *\n     * @deprecated This is a deprecated option. The `Pager` now automatically adapts itself on each new query, so you no longer need to specify a value for this option. However, if the default maximum number of accessible results value was changed on your Coveo index, you should use the [`maximumNumberOfResultsFromIndex`]{@link Pager.options.maximumNumberOfResultsFromIndex} option to specify the new value.\n     */\n    maxNumberOfPages: ComponentOptions.buildNumberOption({\n      defaultValue: undefined,\n      deprecated:\n        'This is a deprecated option. The pager will automatically adapt itself on each new query. You no longer need to specify this option. Use maximumNumberOfResultsFromIndex instead.'\n    }),\n    /**\n     * Specifies the maximum number of results that the index can return for any query.\n     *\n     * Default value is `1000` in a Coveo index.\n     *\n     * If this value was modified in your Coveo index, you must specify the new value in this option for the Pager component to work properly\n     */\n    maximumNumberOfResultsFromIndex: ComponentOptions.buildNumberOption({\n      defaultValue: 1000\n    })\n  };\n\n  private listenToQueryStateChange = true;\n  private ignoreNextQuerySuccess = false;\n\n  private _currentPage: number;\n\n  // The normal behavior of this component is to reset to page 1 when a new\n  // query is performed by other components (i.e. not pagers).\n  //\n  // This behavior is overridden when the 'first' state is\n  // programmatically modified.\n  private needToReset = true;\n\n  private list: HTMLElement;\n\n  /**\n   * Creates a new Pager. Binds multiple query events ({@link QueryEvents.newQuery}, {@link QueryEvents.buildingQuery},\n   * {@link QueryEvents.querySuccess}, {@link QueryEvents.queryError} and {@link QueryEvents.noResults}. Renders itself\n   * on every query success.\n   * @param element The HTMLElement on which to instantiate the component (normally a `div`).\n   * @param options The options for the Pager component.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time).\n   */\n  constructor(public element: HTMLElement, public options?: IPagerOptions, bindings?: IComponentBindings) {\n    super(element, Pager.ID, bindings);\n    this.options = ComponentOptions.initComponentOptions(element, Pager, options);\n    this.currentPage = 1;\n\n    this.bind.onRootElement(QueryEvents.newQuery, (args: INewQueryEventArgs) => this.handleNewQuery(args));\n    this.bind.onRootElement(QueryEvents.buildingQuery, (args: IBuildingQueryEventArgs) => this.handleBuildingQuery(args));\n    this.bind.onRootElement(QueryEvents.querySuccess, (args: IQuerySuccessEventArgs) => this.handleQuerySuccess(args));\n    this.bind.onRootElement(QueryEvents.queryError, () => this.handleQueryError());\n    this.bind.onRootElement(QueryEvents.noResults, (args: INoResultsEventArgs) => this.handleNoResults(args));\n    this.bind.onQueryState(MODEL_EVENTS.CHANGE_ONE, QUERY_STATE_ATTRIBUTES.FIRST, (data: IAttributeChangedEventArg) =>\n      this.handleQueryStateFirstResultChanged(data)\n    );\n    this.bind.onQueryState(MODEL_EVENTS.CHANGE_ONE, QUERY_STATE_ATTRIBUTES.NUMBER_OF_RESULTS, (data: IAttributeChangedEventArg) =>\n      this.handleQueryStateNumberOfResultsPerPageChanged(data)\n    );\n    this.addAlwaysActiveListeners();\n    this.addAccessibilityAttributes();\n\n    this.list = $$('ul', {\n      className: 'coveo-pager-list'\n    }).el;\n    element.appendChild(this.list);\n  }\n\n  /**\n   * The current page (1-based index).\n   */\n  public get currentPage(): number {\n    return this._currentPage;\n  }\n\n  public set currentPage(value: number) {\n    let sanitizedValue = value;\n\n    if (isNaN(value)) {\n      this.logger.warn(`Unable to set pager current page to an invalid value: ${value}. Resetting to 1.`);\n      sanitizedValue = 1;\n    }\n\n    sanitizedValue = Math.max(Math.min(sanitizedValue, this.getMaxNumberOfPagesForCurrentResultsPerPage()), 1);\n    sanitizedValue = Math.floor(sanitizedValue);\n\n    this._currentPage = sanitizedValue;\n  }\n\n  /**\n   * Sets the current page, then executes a query.\n   *\n   * Also logs an event in the usage analytics (`pageNumber` by default) with the new current page number as meta data.\n   *\n   * @param pageNumber The page number to navigate to.\n   * @param analyticCause The event to log in the usage analytics.\n   */\n  public setPage(pageNumber: number, analyticCause: IAnalyticsActionCause = analyticsActionCauseList.pagerNumber) {\n    Assert.exists(pageNumber);\n    this.currentPage = pageNumber;\n    this.updateQueryStateModel(this.getFirstResultNumber(this.currentPage));\n    this.usageAnalytics.logCustomEvent<IAnalyticsPagerMeta>(analyticCause, { pagerNumber: this.currentPage }, this.element);\n    this.queryController.executeQuery({\n      ignoreWarningSearchEvent: true,\n      keepLastSearchUid: true,\n      origin: this\n    });\n  }\n\n  /**\n   * Navigates to the previous page, then executes a query.\n   *\n   * Also logs the `pagePrevious` event in the usage analytics with the new current page number as meta data.\n   */\n  public previousPage() {\n    this.setPage(this.currentPage - 1, analyticsActionCauseList.pagerPrevious);\n  }\n\n  /**\n   * Navigates to the next page, then executes a query.\n   *\n   * Also logs the `pageNext` event in the usage analytics with the new current page number as meta data.\n   */\n  public nextPage() {\n    this.setPage(this.currentPage + 1, analyticsActionCauseList.pagerNext);\n  }\n\n  private addAccessibilityAttributes() {\n    if (!this.element.getAttribute('role')) {\n      this.element.setAttribute('role', 'navigation');\n    }\n    if (!this.element.hasAttribute('aria-label')) {\n      this.element.setAttribute('aria-label', l('Pagination'));\n    }\n  }\n\n  private addAlwaysActiveListeners() {\n    this.searchInterface.element.addEventListener(ResultListEvents.newResultsDisplayed, () =>\n      ResultListUtils.hideIfInfiniteScrollEnabled(this)\n    );\n  }\n\n  private getMaxNumberOfPagesForCurrentResultsPerPage() {\n    return Math.ceil(this.options.maximumNumberOfResultsFromIndex / this.searchInterface.resultsPerPage);\n  }\n\n  private handleNewQuery(data: INewQueryEventArgs) {\n    const triggeredByPagerOrDebugMode = data && data.origin && (data.origin.type == Pager.ID || data.origin.type == 'Debug');\n    if (this.needToReset && !triggeredByPagerOrDebugMode) {\n      this.currentPage = 1;\n      this.updateQueryStateModel(this.getFirstResultNumber(this.currentPage));\n    }\n    this.needToReset = true;\n  }\n\n  private updateQueryStateModel(attrValue: number) {\n    this.listenToQueryStateChange = false;\n    this.queryStateModel.set(QueryStateModel.attributesEnum.first, attrValue);\n    this.listenToQueryStateChange = true;\n  }\n\n  private handleQueryError() {\n    this.reset();\n  }\n\n  private handleQuerySuccess(data: IQuerySuccessEventArgs) {\n    this.reset();\n    if (this.ignoreNextQuerySuccess) {\n      this.ignoreNextQuerySuccess = false;\n    } else {\n      Assert.isNotUndefined(data);\n\n      const firstResult = data.query.firstResult;\n      const count = data.results.totalCountFiltered;\n\n      const pagerBoundary = this.computePagerBoundary(firstResult, count);\n      this.currentPage = pagerBoundary.currentPage;\n      if (pagerBoundary.end - pagerBoundary.start > 0) {\n        for (let i = pagerBoundary.start; i <= pagerBoundary.end; i++) {\n          const page = i;\n          const isCurrentPage = page === this.currentPage;\n          const button = $$(\n            'span',\n            {\n              className: 'coveo-pager-list-item-text coveo-pager-anchor',\n              tabindex: 0,\n              ariaPressed: `${isCurrentPage}`\n            },\n            i.toString(10)\n          ).el;\n\n          const listItem = $$('li', {\n            className: 'coveo-pager-list-item'\n          }).el;\n          if (isCurrentPage) {\n            $$(listItem).addClass('coveo-active');\n            button.setAttribute('aria-current', 'page');\n          }\n\n          const clickAction = (e: Event) => {\n            e.stopPropagation();\n            this.handleClickPage(page);\n          };\n\n          new AccessibleButton()\n            .withElement(button)\n            .withLabel(l('PageNumber', i.toString(10)))\n            .withClickAction(clickAction)\n            .withEnterKeyboardAction(clickAction)\n            .build();\n\n          $$(listItem).on('click', e => clickAction(e));\n\n          listItem.appendChild(button);\n          this.list.appendChild(listItem);\n        }\n\n        if (this.options.enableNavigationButton && pagerBoundary.lastResultPage > 1) {\n          this.renderNavigationButton(pagerBoundary);\n        }\n      }\n    }\n  }\n\n  private handleNoResults(data: INoResultsEventArgs) {\n    let lastValidPage;\n    if (data.results.totalCount > 0) {\n      // First scenario : The index returned less results than expected (because of folding).\n      // Recalculate the last valid page, and change to that new page.\n      const possibleValidPage = this.computePagerBoundary(data.results.totalCountFiltered, data.results.totalCount).lastResultPage;\n      if (this.currentPage > possibleValidPage) {\n        lastValidPage = possibleValidPage;\n      }\n    } else if (this.currentPage > this.getMaxNumberOfPagesForCurrentResultsPerPage()) {\n      // Second scenario : Someone tried to access a non-valid page by the URL for example, which is  higher than the current possible with the number of\n      // possible results. The last valid page will be the maximum number of results avaiable from the index.\n      lastValidPage = this.getMaxNumberOfPagesForCurrentResultsPerPage();\n    }\n\n    // This needs to be deferred because we still want all the \"querySuccess\" callbacks the complete their execution\n    // before triggering/queuing the next query;\n    // if we cannot find a lastValidPage to go to, do nothing : this means it's a query that simply return nothing.\n    if (lastValidPage != null) {\n      this.currentPage = lastValidPage;\n      data.retryTheQuery = true;\n      this.needToReset = false;\n      this.ignoreNextQuerySuccess = false;\n      this.updateQueryStateModel(this.getFirstResultNumber(this.currentPage));\n    }\n  }\n\n  private reset() {\n    $$(this.list).empty();\n  }\n\n  private handleBuildingQuery(data: IBuildingQueryEventArgs) {\n    Assert.exists(data);\n    const eventArgs = this.getQueryEventArgs();\n    data.queryBuilder.firstResult = eventArgs.first;\n\n    // Set the number of results only if it was not already set by external code\n    // Most of the time this will be set by either : the SearchInterface with the resultsPerPage option\n    // Or by the ResultsPerPage component (so the end user decides).\n    // Pager will realistically never set this value itself.\n    if (data.queryBuilder.numberOfResults == null) {\n      data.queryBuilder.numberOfResults = eventArgs.count;\n    }\n\n    const maxResultNumber = data.queryBuilder.firstResult + data.queryBuilder.numberOfResults;\n    const numOfExcessResults = Math.max(0, maxResultNumber - this.options.maximumNumberOfResultsFromIndex);\n\n    data.queryBuilder.numberOfResults -= numOfExcessResults;\n  }\n\n  private computePagerBoundary(firstResult: number, totalCount: number) {\n    const resultPerPage = this.searchInterface.resultsPerPage;\n    const currentPage = Math.floor(firstResult / resultPerPage) + 1;\n    const lastPageNumber = Math.max(Math.min(Math.ceil(totalCount / resultPerPage), this.getMaxNumberOfPagesForCurrentResultsPerPage()), 1);\n\n    const halfLength = Math.floor(this.options.numberOfPages / 2);\n    const firstPageNumber = Math.max(Math.min(currentPage - halfLength, lastPageNumber - this.options.numberOfPages + 1), 1);\n    const endPageNumber = Math.min(firstPageNumber + this.options.numberOfPages - 1, lastPageNumber);\n\n    return {\n      start: firstPageNumber,\n      end: endPageNumber,\n      lastResultPage: lastPageNumber,\n      currentPage: currentPage\n    };\n  }\n\n  private renderNavigationButton(pagerBoundary: { start: number; end: number; lastResultPage: number; currentPage: number }) {\n    if (this.currentPage > 1) {\n      const previous = this.renderPreviousButton();\n      this.list.insertBefore(previous.el, this.list.firstChild);\n    }\n\n    if (this.currentPage < pagerBoundary.lastResultPage) {\n      const next = this.renderNextButton();\n      this.list.appendChild(next.el);\n    }\n  }\n\n  private renderPreviousButton() {\n    const previousListItem = $$('li', {\n      className: 'coveo-pager-previous coveo-pager-anchor coveo-pager-list-item'\n    });\n\n    const previousButton = $$('span', {\n      title: l('Previous'),\n      tabindex: 0\n    });\n\n    const previousIcon = $$(\n      'span',\n      {\n        className: 'coveo-pager-previous-icon'\n      },\n      SVGIcons.icons.pagerLeftArrow\n    );\n\n    SVGDom.addClassToSVGInContainer(previousIcon.el, 'coveo-pager-previous-icon-svg');\n\n    previousButton.append(previousIcon.el);\n    previousListItem.append(previousButton.el);\n\n    new AccessibleButton()\n      .withElement(previousButton)\n      .withLabel(l('Previous'))\n      .withSelectAction(() => this.handleClickPrevious())\n      .build();\n\n    return previousListItem;\n  }\n\n  private renderNextButton() {\n    const nextListItem = $$('li', {\n      className: 'coveo-pager-next coveo-pager-anchor coveo-pager-list-item'\n    });\n\n    const nextButton = $$('span', {\n      title: l('Next'),\n      tabindex: 0\n    });\n\n    const nextIcon = $$(\n      'span',\n      {\n        className: 'coveo-pager-next-icon'\n      },\n      SVGIcons.icons.pagerRightArrow\n    );\n\n    SVGDom.addClassToSVGInContainer(nextIcon.el, 'coveo-pager-next-icon-svg');\n\n    nextButton.append(nextIcon.el);\n    nextListItem.append(nextButton.el);\n\n    new AccessibleButton()\n      .withElement(nextButton)\n      .withLabel(l('Next'))\n      .withSelectAction(() => this.handleClickNext())\n      .build();\n\n    return nextListItem;\n  }\n\n  private handleQueryStateFirstResultChanged(data: IAttributeChangedEventArg) {\n    if (!this.listenToQueryStateChange) {\n      return;\n    }\n    Assert.exists(data);\n    this.needToReset = false;\n    const firstResult = data.value;\n    this.currentPage = this.fromFirstResultsToPageNumber(firstResult);\n  }\n\n  private handleQueryStateNumberOfResultsPerPageChanged(data: IAttributeChangedEventArg) {\n    const firstResult = this.queryStateModel.get(QUERY_STATE_ATTRIBUTES.FIRST);\n    this.searchInterface.resultsPerPage = data.value;\n    this.currentPage = this.fromFirstResultsToPageNumber(firstResult);\n  }\n\n  private handleClickPage(pageNumber: number) {\n    Assert.exists(pageNumber);\n    this.setPage(pageNumber);\n  }\n\n  private handleClickPrevious() {\n    this.previousPage();\n  }\n\n  private handleClickNext() {\n    this.nextPage();\n  }\n\n  private fromFirstResultsToPageNumber(firstResult: number): number {\n    return firstResult / this.searchInterface.resultsPerPage + 1;\n  }\n\n  private getFirstResultNumber(pageNumber: number = this.currentPage): number {\n    return (pageNumber - 1) * this.searchInterface.resultsPerPage;\n  }\n\n  private getQueryEventArgs() {\n    return {\n      count: this.searchInterface.resultsPerPage,\n      first: this.getFirstResultNumber()\n    };\n  }\n}\n\nInitialization.registerAutoCreateComponent(Pager);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Pager/Pager.ts","import * as _ from 'underscore';\nimport { IBuildingQueryEventArgs, QueryEvents } from '../../events/QueryEvents';\nimport { exportGlobally } from '../../GlobalExports';\nimport { $$ } from '../../utils/Dom';\nimport { Utils } from '../../utils/Utils';\nimport { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { Initialization } from '../Base/Initialization';\nimport { Context, IPipelineContextProvider } from './PipelineGlobalExports';\n\ndeclare const Coveo;\n\nexport interface IPipelineContextOptions {}\n\n/**\n * The `PipelineContext` component injects custom contextual information into the search requests and usage analytics search events sent from a search interface.\n *\n * This component is meant to be initialized on a `script` HTML tag whose `type` attribute is set to `text/context` and whose optional JSON content defines the custom information to send (each value can be set to a string or array of strings).\n *\n * See [Sending Custom Context Information](https://docs.coveo.com/en/399/).\n * Note: To customize the context sent on all usage analytics events, see [Sending Custom Metadata with Search, Click, or Custom Events](https://docs.coveo.com/en/2004/javascript-search-framework/sending-custom-metadata-with-search-click-or-custom-events).\n */\nexport class PipelineContext extends Component implements IPipelineContextProvider {\n  static ID = 'PipelineContext';\n  static CURRENT_URL = 'CurrentUrl';\n\n  static doExport = () => {\n    exportGlobally({\n      PipelineContext: PipelineContext\n    });\n  };\n\n  private contextContent: Context = {};\n\n  public constructor(public element: HTMLElement, public options?: IPipelineContextOptions, public bindings?: IComponentBindings) {\n    super(element, PipelineContext.ID, bindings);\n    this.options = ComponentOptions.initComponentOptions(element, PipelineContext, options);\n    this.setContext(\n      $$(this.element)\n        .text()\n        .trim()\n    );\n    this.bind.onRootElement(QueryEvents.buildingQuery, (args: IBuildingQueryEventArgs) => this.handleBuildingQuery(args));\n  }\n\n  /**\n   * **Available since the [December 2017 Release](https://docs.coveo.com/en/373).**\n   *\n   * Sets a new context, replacing the previous context if applicable.\n   *\n   * @param newContext The new context to set, which can be directly passed as a JSON, or as a stringified JSON.\n   */\n  public setContext(newContext: string | Context) {\n    if (_.isString(newContext)) {\n      const contextParsed = this.tryParseContextFromString(newContext);\n      this.contextContent = contextParsed;\n    } else {\n      this.contextContent = newContext;\n    }\n  }\n\n  /**\n   * Returns the current context\n   */\n  public getContext(): Context {\n    const keys = this.getContextKeys();\n    return _.object(keys, _.map(keys, key => this.getContextValue(key)));\n  }\n\n  /**\n   * **Available since the [December 2017 Release](https://docs.coveo.com/en/373).**\n   *\n   * Sets a value for a context key, replacing the previous value if applicable.\n   * @param contextKey\n   * @param contextValue\n   */\n  public setContextValue(contextKey: string, contextValue: string | string[]) {\n    this.contextContent[contextKey] = contextValue;\n  }\n\n  /**\n   * Return all the context keys configured for context.\n   * @returns {string[]}\n   */\n  public getContextKeys(): string[] {\n    return _.keys(this.contextContent);\n  }\n\n  /**\n   * Get the context value associated to the given key.\n   *\n   * If the global variable Coveo.context contains the requested key, this method will return the value contained in Coveo.context instead of the one contained internally.\n   *\n   * This is especially useful in a Coveo for Salesforce context, where context values can be extracted from a backend service.\n   * @param key\n   * @returns {string}\n   */\n  public getContextValue(key: string): string | string[] {\n    const contextValue = this.contextContent[key];\n    if (_.isArray(contextValue)) {\n      const contextValues = [];\n      _.each(this.contextContent[key], value => {\n        contextValues.push(this.getModifiedData(value));\n      });\n      return contextValues;\n    } else if (_.isString(contextValue)) {\n      return this.getModifiedData(contextValue);\n    }\n    return '';\n  }\n\n  private handleBuildingQuery(args: IBuildingQueryEventArgs) {\n    let keys = this.getContextKeys();\n    _.each(keys, (key: string) => {\n      args.queryBuilder.addContextValue(key, this.getContextValue(key));\n    });\n  }\n\n  private tryParseContextFromString(contextAsString: string): Context {\n    if (_.isEmpty(contextAsString)) {\n      return {};\n    }\n    try {\n      // Context could be HTML encoded (eg: Coveo for Salesforce)\n      return JSON.parse(Utils.decodeHTMLEntities(contextAsString));\n    } catch (e) {\n      try {\n        return JSON.parse(contextAsString);\n      } catch (e) {\n        this.logger.error(`Error while trying to parse context from the PipelineContext component`, e);\n        return null;\n      }\n    }\n  }\n\n  private getModifiedData(value: string) {\n    /* We need to modify the data to escape special salesforce characters. eg: {! }\n     If we find the matching value in the global Coveo.context variable, we return that one instead of the one present locally.\n     So, concretely, the component could contain : \n     {\n       \"productName\" : \"{! productValueFromSalesforce }\"\n     }\n\n     This means that in those case, we would try to access Coveo.context.productValueFromSalesforce (which would in theory be a \"real\" product value from salesforce, and not a placeholder/variable)\n    */\n    return value.replace(/\\{\\!([^\\}]+)\\}/g, (all: string, contextKey: string) => {\n      const trimmedKey = contextKey.trim();\n      if (Coveo.context && trimmedKey in Coveo.context) {\n        return Coveo.context[trimmedKey];\n      } else if (trimmedKey == PipelineContext.CURRENT_URL) {\n        return window.location.href;\n      }\n      return '';\n    });\n  }\n}\n\nInitialization.registerAutoCreateComponent(PipelineContext);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/PipelineContext/PipelineContext.ts","import { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { SettingsEvents } from '../../events/SettingsEvents';\nimport { ISettingsPopulateMenuArgs } from '../Settings/Settings';\nimport { PreferencesPanelEvents } from '../../events/PreferencesPanelEvents';\nimport { Initialization } from '../Base/Initialization';\nimport { l } from '../../strings/Strings';\nimport { $$ } from '../../utils/Dom';\nimport { exportGlobally } from '../../GlobalExports';\nimport { ModalBox as ModalBoxModule } from '../../ExternalModulesShim';\nimport * as _ from 'underscore';\nimport { AccessibleModal } from '../../utils/AccessibleModal';\n\nimport 'styling/_PreferencesPanel';\nimport { InitializationEvents } from '../../events/InitializationEvents';\nimport { SVGIcons } from '../../utils/SVGIcons';\n\nexport interface IPreferencesPanelOptions {}\n\n/**\n * The PreferencesPanel component renders a **Preferences** item inside the {@link Settings} component which the end\n * user can click to access a panel from which it is possible to specify certain customization options for the search\n * interface. These customization options are then saved in the browser local storage.\n *\n * This component should be used inside the {@link Settings} component.\n *\n * See also the {@link ResultsFiltersPreferences} and {@link ResultsPreferences} components.\n */\nexport class PreferencesPanel extends Component {\n  static ID = 'PreferencesPanel';\n\n  static doExport = () => {\n    exportGlobally({\n      PreferencesPanel: PreferencesPanel\n    });\n  };\n\n  static options: IPreferencesPanelOptions = {};\n  private modalbox: AccessibleModal;\n  private content: HTMLElement[] = [];\n\n  /**\n   * Creates a new PreferencesPanel.\n   * @param element The HTMLElement on which to instantiate the component.\n   * @param options The options for the PreferencesPanel component.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time).\n   */\n  constructor(\n    public element: HTMLElement,\n    public options: IPreferencesPanelOptions,\n    bindings?: IComponentBindings,\n    private ModalBox = ModalBoxModule\n  ) {\n    super(element, PreferencesPanel.ID, bindings);\n    this.options = ComponentOptions.initComponentOptions(element, PreferencesPanel, options);\n    this.bind.onRootElement(SettingsEvents.settingsPopulateMenu, (args: ISettingsPopulateMenuArgs) => {\n      args.menuData.push({\n        className: 'coveo-preferences-panel',\n        text: l('Preferences'),\n        onOpen: () => this.open(),\n        onClose: () => this.close(),\n        svgIcon: SVGIcons.icons.dropdownPreferences,\n        svgIconClassName: 'coveo-preferences-panel-svg'\n      });\n    });\n    this.bind.onRootElement(InitializationEvents.afterComponentsInitialization, () => {\n      this.content = $$(this.element).children();\n    });\n    this.modalbox = new AccessibleModal('coveo-preferences-panel', this.searchInterface.options.modalContainer, this.ModalBox, {\n      overlayClose: true\n    });\n  }\n\n  /**\n   * Opens the PreferencesPanel.\n   */\n  public open(): void {\n    let root = $$('div');\n    _.each(this.content, oneChild => {\n      root.append(oneChild);\n    });\n    this.modalbox.open({\n      title: l('Preferences'),\n      content: root.el,\n      origin: this.element,\n      validation: () => {\n        this.cleanupOnExit();\n        return true;\n      }\n    });\n  }\n\n  /**\n   * Closes the PreferencesPanel without saving changes.\n   *\n   * Also triggers the `exitPreferencesWithoutSave` event.\n   */\n  public close(): void {\n    this.cleanupOnExit();\n    this.modalbox.close();\n  }\n\n  /**\n   * Saves the changes and executes a new query.\n   *\n   * Also triggers the `savePreferences` event.\n   */\n  public save(): void {\n    $$(this.element).trigger(PreferencesPanelEvents.savePreferences);\n    this.queryController.executeQuery();\n  }\n\n  private cleanupOnExit() {\n    $$(this.element).trigger(PreferencesPanelEvents.exitPreferencesWithoutSave);\n  }\n}\n\nInitialization.registerAutoCreateComponent(PreferencesPanel);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/PreferencesPanel/PreferencesPanel.ts","import { ComponentOptions } from '../Base/ComponentOptions';\nimport { IQueryResult } from '../../rest/QueryResult';\nimport { HighlightUtils, StringAndHoles } from '../../utils/HighlightUtils';\nimport { Initialization } from '../Base/Initialization';\nimport { Utils } from '../../utils/Utils';\nimport { $$ } from '../../utils/Dom';\nimport { exportGlobally } from '../../GlobalExports';\nimport 'styling/_PrintableUri';\nimport { ResultLink } from '../ResultLink/ResultLink';\nimport { IResultLinkOptions } from '../ResultLink/ResultLinkOptions';\nimport { IResultsComponentBindings } from '../Base/ResultsComponentBindings';\nimport { getRestHighlightsForAllTerms, DefaultStreamHighlightOptions } from '../../utils/StreamHighlightUtils';\nimport * as _ from 'underscore';\nimport { ComponentOptionsModel } from '../../models/ComponentOptionsModel';\nimport { Component } from '../Base/Component';\nimport { IHighlight } from '../../rest/Highlight';\nimport { AccessibleButton } from '../../utils/AccessibleButton';\nimport { DeviceUtils } from '../../utils/DeviceUtils';\nimport { l } from '../../strings/Strings';\n\nexport interface IPrintableUriOptions extends IResultLinkOptions {}\n\ninterface IPrintableUriRenderOptions {\n  parents: Element[];\n  firstIndexToRender: number;\n  maxNumOfParts: number;\n}\n\n/**\n * The `PrintableUri` component inherits from the [ `ResultLink` ]{@link ResultLink} component and supports all of its options.\n *\n * This component displays the URI, or path, to access a result.\n *\n * This component is a result template component (see [Result Templates](https://docs.coveo.com/en/413/)).\n */\nexport class PrintableUri extends Component {\n  static ID = 'PrintableUri';\n  static options: IPrintableUriOptions = {};\n  static doExport = () => {\n    exportGlobally({\n      PrintableUri: PrintableUri\n    });\n  };\n\n  private links: ResultLink[] = [];\n\n  /**\n   * Creates a new PrintableUri.\n   * @param element The HTMLElement on which to instantiate the component.\n   * @param options The options for the PrintableUri component.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time).\n   * @param result The result to associate the component with.\n   */\n  constructor(\n    public element: HTMLElement,\n    public options: IPrintableUriOptions,\n    public bindings?: IResultsComponentBindings,\n    public result?: IQueryResult\n  ) {\n    super(element, PrintableUri.ID, bindings);\n    this.options = ComponentOptions.initComponentOptions(element, PrintableUri, options);\n    this.options = _.extend({}, this.options, this.componentOptionsModel.get(ComponentOptionsModel.attributesEnum.resultLink));\n    this.renderUri(this.result);\n    this.addAccessibilityAttributes();\n  }\n\n  /**\n   * Opens the result in the same window, no matter how the actual component is configured for the end user.\n   * @param logAnalytics Specifies whether the method should log an analytics event.\n   */\n  public openLink(logAnalytics = true) {\n    _.last(this.links).openLink(logAnalytics);\n  }\n\n  /**\n   * Opens the result in a new window, no matter how the actual component is configured for the end user.\n   * @param logAnalytics Specifies whether the method should log an analytics event.\n   */\n  public openLinkInNewWindow(logAnalytics = true) {\n    _.last(this.links).openLinkInNewWindow(logAnalytics);\n  }\n\n  /**\n   * Opens the link in the same manner the end user would.\n   *\n   * This essentially simulates a click on the result link.\n   *\n   * @param logAnalytics Specifies whether the method should log an analytics event.\n   */\n  public openLinkAsConfigured(logAnalytics = true) {\n    _.last(this.links).openLinkAsConfigured(logAnalytics);\n  }\n\n  private renderUri(result: IQueryResult) {\n    const parentsXml = Utils.getFieldValue(result, 'parents');\n    if (parentsXml) {\n      this.renderParents({\n        parents: this.parseXmlParents(parentsXml),\n        firstIndexToRender: 0,\n        maxNumOfParts: DeviceUtils.isMobileDevice() ? 3 : 5\n      });\n    } else if (this.options.titleTemplate) {\n      const link = new ResultLink(this.buildElementForResultLink(result.printableUri), this.options, this.bindings, this.result);\n      this.links.push(link);\n      this.element.appendChild(this.makeLinkAccessible(link.element));\n    } else {\n      this.renderShortenedUri();\n    }\n  }\n\n  private buildSeparator(): HTMLElement {\n    const separator = $$('span', { className: 'coveo-printable-uri-separator', role: 'separator' }, ' > ');\n    return separator.el;\n  }\n\n  private buildHtmlToken(name: string, uri: string): HTMLElement {\n    let modifiedName = name.charAt(0).toUpperCase() + name.slice(1);\n    const resultPart: IQueryResult = _.extend({}, this.result, {\n      clickUri: uri,\n      title: modifiedName,\n      titleHighlights: this.getModifiedHighlightsForModifiedResultTitle(modifiedName)\n    });\n    const link = new ResultLink(this.buildElementForResultLink(modifiedName), this.options, this.bindings, resultPart);\n    this.links.push(link);\n    return link.element;\n  }\n\n  private parseXmlParents(parentsXml: string): Element[] {\n    const elements = Utils.parseXml(parentsXml).getElementsByTagName('parent');\n    const parents: Element[] = [];\n    for (let i = 0; i < elements.length; i++) {\n      parents.push(elements.item(i));\n    }\n    return parents;\n  }\n\n  private renderParents(renderOptions: IPrintableUriRenderOptions) {\n    $$(this.element).empty();\n    const lastIndex = renderOptions.parents.length - 1;\n    const beforeLastIndex = lastIndex - 1;\n    const maxMiddleParts = renderOptions.maxNumOfParts - 1;\n    const lastMiddlePartIndex = Math.min(beforeLastIndex, renderOptions.firstIndexToRender + maxMiddleParts - 1);\n    const partsBetweenMiddlePartsAndLastPart = beforeLastIndex - lastMiddlePartIndex;\n\n    this.optionallyRenderFirstEllipsis(renderOptions);\n    this.renderMiddleParts(renderOptions, lastMiddlePartIndex);\n    if (partsBetweenMiddlePartsAndLastPart > 0) {\n      this.renderLastEllipsis({\n        ...renderOptions,\n        firstIndexToRender: Math.min(Math.max(lastMiddlePartIndex + 1, 0), renderOptions.parents.length - renderOptions.maxNumOfParts)\n      });\n    }\n    this.renderLastPart(renderOptions);\n  }\n\n  private optionallyRenderFirstEllipsis(nextRenderOptions: IPrintableUriRenderOptions) {\n    if (nextRenderOptions.firstIndexToRender > 0) {\n      this.appendEllipsis({\n        ...nextRenderOptions,\n        firstIndexToRender: Math.max(0, nextRenderOptions.firstIndexToRender - nextRenderOptions.maxNumOfParts + 1)\n      });\n      this.appendSeparator();\n    }\n  }\n\n  private renderMiddleParts(renderOptions: IPrintableUriRenderOptions, lastIndexToRender: number) {\n    for (let i = renderOptions.firstIndexToRender; i <= lastIndexToRender; i++) {\n      if (i > renderOptions.firstIndexToRender) {\n        this.appendSeparator();\n      }\n      this.appendToken(renderOptions.parents[i]);\n    }\n  }\n\n  private renderLastEllipsis(nextRenderOptions: IPrintableUriRenderOptions) {\n    this.appendSeparator();\n    this.appendEllipsis(nextRenderOptions);\n  }\n\n  private renderLastPart(renderOptions: IPrintableUriRenderOptions) {\n    this.appendSeparator();\n    this.appendToken(renderOptions.parents[renderOptions.parents.length - 1]);\n  }\n\n  private appendSeparator() {\n    this.element.appendChild(this.buildSeparator());\n  }\n\n  private appendEllipsis(nextRenderOptions: IPrintableUriRenderOptions) {\n    this.element.appendChild(\n      this.buildEllipsis(() => {\n        this.renderParents(nextRenderOptions);\n        (this.element.firstChild.firstChild as HTMLElement).focus();\n      })\n    );\n  }\n\n  private appendToken(part: Element) {\n    this.element.appendChild(this.makeLinkAccessible(this.buildHtmlToken(part.getAttribute('name'), part.getAttribute('uri'))));\n  }\n\n  private renderShortenedUri() {\n    let stringAndHoles: StringAndHoles;\n    if (this.result.printableUri.indexOf('\\\\') == -1) {\n      stringAndHoles = StringAndHoles.shortenUri(this.result.printableUri, $$(this.element).width());\n    } else {\n      stringAndHoles = StringAndHoles.shortenPath(this.result.printableUri, $$(this.element).width());\n    }\n    const shortenedUri = HighlightUtils.highlightString(\n      stringAndHoles.value,\n      this.result.printableUriHighlights,\n      stringAndHoles.holes,\n      'coveo-highlight'\n    );\n    const resultPart: IQueryResult = _.extend({}, this.result, {\n      title: shortenedUri,\n      titleHighlights: this.getModifiedHighlightsForModifiedResultTitle(shortenedUri)\n    });\n    const link = new ResultLink(this.buildElementForResultLink(this.result.printableUri), this.options, this.bindings, resultPart);\n    this.links.push(link);\n    this.element.appendChild(this.makeLinkAccessible(link.element));\n  }\n\n  private makeLinkAccessible(link: HTMLElement) {\n    return $$(\n      'span',\n      {\n        className: 'coveo-printable-uri-part',\n        role: 'listitem'\n      },\n      link\n    ).el;\n  }\n\n  private buildEllipsis(action: (e: Event) => void) {\n    const button = $$('button', { type: 'button' }, '...');\n    const element = $$(\n      'span',\n      {\n        className: 'coveo-printable-uri-ellipsis',\n        role: 'listitem'\n      },\n      button\n    ).el;\n    new AccessibleButton().withElement(button).withLabel(l('CollapsedUriParts')).withSelectAction(action).build();\n    return element;\n  }\n\n  private buildElementForResultLink(title: string): HTMLElement {\n    return $$('a', {\n      className: 'CoveoResultLink',\n      title\n    }).el;\n  }\n\n  private getModifiedHighlightsForModifiedResultTitle(newTitle: string): IHighlight[] {\n    return getRestHighlightsForAllTerms(\n      newTitle,\n      this.result.termsToHighlight,\n      this.result.phrasesToHighlight,\n      new DefaultStreamHighlightOptions()\n    );\n  }\n\n  private addAccessibilityAttributes() {\n    this.element.setAttribute('role', 'list');\n  }\n}\n\nPrintableUri.options = _.extend({}, PrintableUri.options, ResultLink.options);\nInitialization.registerAutoCreateComponent(PrintableUri);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/PrintableUri/PrintableUri.ts","import { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { QueryEvents, IQuerySuccessEventArgs } from '../../events/QueryEvents';\nimport { Assert } from '../../misc/Assert';\nimport { $$ } from '../../utils/Dom';\nimport { l } from '../../strings/Strings';\nimport { Initialization } from '../Base/Initialization';\nimport * as Globalize from 'globalize';\nimport { exportGlobally } from '../../GlobalExports';\n\nimport 'styling/_QueryDuration';\n\nexport interface IQueryDurationOptions {}\n\n/**\n * The QueryDuration component displays the duration of the last query execution.\n *\n * When a {@link QueryEvents.querySuccess} event is triggered, the QueryDuration component becomes visible. It also\n * displays the global duration, the index duration, and the client duration in a single tooltip.\n *\n * If a {@link QueryEvents.queryError} event is triggered, the QueryDuration component becomes hidden.\n */\nexport class QueryDuration extends Component {\n  static ID = 'QueryDuration';\n\n  static doExport = () => {\n    exportGlobally({\n      QueryDuration: QueryDuration\n    });\n  };\n\n  static options: IQueryDurationOptions = {};\n\n  private textContainer: HTMLElement;\n\n  /**\n   * Creates a new QueryDuration component.\n   * Binds handlers on the {@link QueryEvents.querySuccess} and {@link QueryEvents.queryError} events.\n   * @param element The HTMLElement on which to instantiate the component.\n   * @param options The options for the QueryDuration component.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time).\n   */\n  constructor(public element: HTMLElement, public options?: IQueryDurationOptions, bindings?: IComponentBindings) {\n    super(element, QueryDuration.ID, bindings);\n\n    this.options = ComponentOptions.initComponentOptions(element, QueryDuration, options);\n\n    this.bind.onRootElement(QueryEvents.querySuccess, (data: IQuerySuccessEventArgs) => this.handleQuerySuccess(data));\n    this.bind.onRootElement(QueryEvents.queryError, () => $$(this.element).hide());\n    this.element.style.display = 'none';\n    this.textContainer = $$('span').el;\n    this.element.appendChild(this.textContainer);\n  }\n\n  private handleQuerySuccess(data: IQuerySuccessEventArgs) {\n    if (!this.disabled && data.results.results.length > 0) {\n      Assert.exists(data);\n\n      let tooltip = [\n        l('Duration', this.formatQueryDuration(data.results.duration)),\n        l('SearchAPIDuration', this.formatQueryDuration(data.results.searchAPIDuration)),\n        l('IndexDuration', this.formatQueryDuration(data.results.indexDuration))\n      ].join('\\n');\n\n      this.textContainer.textContent = this.formatQueryDuration(data.results.duration);\n      this.element.setAttribute('title', tooltip);\n      this.element.style.display = 'inline';\n    } else {\n      this.element.style.display = 'none';\n    }\n  }\n\n  private formatQueryDuration(durationInMillis: number): string {\n    if (durationInMillis == undefined) {\n      return l('Unavailable');\n    } else {\n      var seconds = Math.max(durationInMillis / 1000, 0.01);\n      if (String['locale'] === 'en') {\n        return l('Seconds', Globalize.format(seconds, 'n2'), seconds, true);\n      } else {\n        return l('Seconds', Globalize.format(seconds, 'n2'), seconds);\n      }\n    }\n  }\n}\nInitialization.registerAutoCreateComponent(QueryDuration);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/QueryDuration/QueryDuration.ts","import 'styling/_QuerySummary';\nimport { escape } from 'underscore';\nimport { IQuerySuccessEventArgs, QueryEvents } from '../../events/QueryEvents';\nimport { QuerySummaryEvents } from '../../events/QuerySummaryEvents';\nimport { exportGlobally } from '../../GlobalExports';\nimport { Assert } from '../../misc/Assert';\nimport { QueryStateModel } from '../../models/QueryStateModel';\nimport { l } from '../../strings/Strings';\nimport { $$ } from '../../utils/Dom';\nimport { QuerySummaryUtils } from '../../utils/QuerySummaryUtils';\nimport { analyticsActionCauseList, IAnalyticsNoMeta } from '../Analytics/AnalyticsActionListMeta';\nimport { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { Initialization } from '../Base/Initialization';\nimport { AccessibleButton } from '../../utils/AccessibleButton';\n\nexport interface IQuerySummaryOptions {\n  onlyDisplaySearchTips?: boolean;\n  enableNoResultsFoundMessage?: boolean;\n  noResultsFoundMessage?: string;\n  enableCancelLastAction?: boolean;\n  enableSearchTips?: boolean;\n}\n\nexport const noResultsCssClass: string = 'coveo-show-if-no-results';\n\n/**\n * The QuerySummary component can display information about the currently displayed range of results (e.g., \"Results\n * 1-10 of 123\").\n *\n * When the query does not match any items, the QuerySummary component can instead display information to the end users.\n *\n * The information displayed to the end user is customizable through this component.\n */\nexport class QuerySummary extends Component {\n  static ID = 'QuerySummary';\n\n  static doExport = () => {\n    exportGlobally({\n      QuerySummary: QuerySummary\n    });\n  };\n\n  /**\n   * Options for the component\n   * @componentOptions\n   */\n  static options: IQuerySummaryOptions = {\n    /**\n     * Specifies whether to hide the number of returned results.\n     *\n     * When this option is set to true, the number of returned results will be hidden from the page, meaning that your end users will not know how many results were returned for their query.\n     *\n     * Default value is `false`.\n     */\n    onlyDisplaySearchTips: ComponentOptions.buildBooleanOption({ defaultValue: false }),\n\n    /**\n     * Specifies whether to display the {@link QuerySummary.options.noResultsFoundMessage} message when there are no search results.\n     *\n     * Default value is `true`.\n     *\n     * @availablesince [August 2018 Release (v2.4609.6)](https://docs.coveo.com/410/#august-2018-release-v246096)\n     */\n    enableNoResultsFoundMessage: ComponentOptions.buildBooleanOption({ defaultValue: true }),\n\n    /**\n     * Specifies a custom message to display when there are no search results.\n     *\n     * You can refer to the query the end user has entered using the `${query}` query tag.\n     *\n     * **Example**\n     * > For the `noResultFoundMessage` option, you enter `There were no results found for \"${query}\"`.\n     * > Your end user searches for `query without results`, which does not return any result.\n     * > On your page, they see this message: `There were no results found for \"query without results\"`.\n     *\n     * Default value is `No results for ${query}`.\n     *\n     * **Note**\n     * > If there is no query, the value will fallback to `No results`.\n     *\n     * @availablesince [August 2018 Release (v2.4609.6)](https://docs.coveo.com/410/#august-2018-release-v246096)\n     */\n    noResultsFoundMessage: ComponentOptions.buildLocalizedStringOption({\n      localizedString: () => l('noResultFor', '${query}'),\n      depend: 'enableNoResultsFoundMessage',\n      postProcessing: (value: string) => {\n        return escape(value);\n      }\n    }),\n\n    /**\n     * Specifies whether to display the `Cancel last action` link when there are no search results.\n     *\n     * When clicked, the link restores the previous query that contained results.\n     *\n     * Default value is `true`.\n     */\n    enableCancelLastAction: ComponentOptions.buildBooleanOption({ defaultValue: true }),\n\n    /**\n     * Specifies whether to display search tips when there are no search results.\n     *\n     * Default value is `true`.\n     */\n    enableSearchTips: ComponentOptions.buildBooleanOption({ defaultValue: true })\n  };\n\n  private textContainer: HTMLElement;\n  private lastKnownGoodState: any;\n  private noResultsSnapshot: string;\n\n  /**\n   * Creates a new QuerySummary component.\n   * @param element The HTMLElement on which to instantiate the component.\n   * @param options The options for the QuerySummary component.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time).\n   */\n  constructor(public element: HTMLElement, public options?: IQuerySummaryOptions, bindings?: IComponentBindings) {\n    super(element, QuerySummary.ID, bindings);\n\n    this.options = ComponentOptions.initComponentOptions(element, QuerySummary, options);\n    this.bind.onRootElement(QueryEvents.querySuccess, (data: IQuerySuccessEventArgs) => this.handleQuerySuccess(data));\n    this.bind.onRootElement(QueryEvents.queryError, () => this.hide());\n    this.hide();\n    this.textContainer = $$('span').el;\n    $$(this.element).prepend(this.textContainer);\n  }\n\n  private hide() {\n    $$(this.element).addClass('coveo-hidden');\n  }\n\n  private show() {\n    $$(this.element).removeClass('coveo-hidden');\n  }\n\n  private render(data: IQuerySuccessEventArgs) {\n    $$(this.textContainer).empty();\n    this.show();\n\n    this.updateNoResultsSnapshot();\n    this.hideNoResultsPage();\n\n    if (!this.options.onlyDisplaySearchTips) {\n      this.updateSummaryIfResultsWereReceived(data);\n    }\n\n    const queryResults = data.results;\n\n    if (queryResults.exception != null && queryResults.exception.code != null) {\n      const code: string = ('QueryException' + queryResults.exception.code).toLocaleString();\n      this.textContainer.innerHTML = l('QueryException', code);\n    } else if (queryResults.results.length == 0) {\n      this.updateQueryTagsInNoResultsContainer();\n      this.displayInfoOnNoResults();\n    } else {\n      this.lastKnownGoodState = this.queryStateModel.getAttributes();\n    }\n  }\n\n  private handleQuerySuccess(data: IQuerySuccessEventArgs) {\n    Assert.exists(data);\n    this.render(data);\n  }\n\n  private updateSummaryIfResultsWereReceived(data: IQuerySuccessEventArgs) {\n    if (!data.results.results.length) {\n      return;\n    }\n\n    const message = QuerySummaryUtils.htmlMessage(this.root, data);\n    this.textContainer.innerHTML = message;\n  }\n\n  private updateNoResultsSnapshot() {\n    const noResultsContainer = this.getNoResultsContainer();\n    if (this.noResultsSnapshot == null && noResultsContainer) {\n      this.noResultsSnapshot = noResultsContainer.innerHTML;\n    }\n  }\n\n  private updateQueryTagsInNoResultsContainer() {\n    const noResultsContainer = this.getNoResultsContainer();\n    if (noResultsContainer) {\n      noResultsContainer.innerHTML = this.replaceQueryTagsWithHighlightedQuery(this.noResultsSnapshot);\n    }\n  }\n\n  private replaceQueryTagsWithHighlightedQuery(template: string) {\n    const highlightedQuery = `<span class=\"coveo-highlight\">${this.sanitizedQuery}</span>`;\n    return QuerySummaryUtils.replaceQueryTags(template, highlightedQuery);\n  }\n\n  private get sanitizedQuery() {\n    return escape(this.queryStateModel.get(QueryStateModel.attributesEnum.q));\n  }\n\n  private displayInfoOnNoResults() {\n    this.showNoResultsPage();\n\n    if (this.options.enableNoResultsFoundMessage) {\n      const noResultsFoundMessage = this.getNoResultsFoundMessageElement();\n      this.textContainer.appendChild(noResultsFoundMessage.el);\n    }\n\n    if (this.options.enableCancelLastAction) {\n      const cancelLastAction = this.getCancelLastActionElement();\n      this.textContainer.appendChild(cancelLastAction.el);\n    }\n\n    if (this.options.enableSearchTips) {\n      const searchTipsTitle = this.getSearchTipsTitleElement();\n      const searchTipsList = this.getSearchTipsListElement();\n      this.textContainer.appendChild(searchTipsTitle.el);\n      this.textContainer.appendChild(searchTipsList.el);\n    }\n  }\n\n  private hideNoResultsPage() {\n    const noResultsContainers = this.getAllNoResultsContainer();\n    noResultsContainers.forEach(noResultsContainer => {\n      $$(noResultsContainer).removeClass('coveo-no-results');\n    });\n  }\n\n  private showNoResultsPage() {\n    const noResultsContainers = this.getAllNoResultsContainer();\n    noResultsContainers.forEach(noResultsContainer => {\n      $$(noResultsContainer).addClass('coveo-no-results');\n    });\n  }\n\n  private getNoResultsContainer(): HTMLElement {\n    return $$(this.element).find(`.${noResultsCssClass}`);\n  }\n\n  private getAllNoResultsContainer(): HTMLElement[] {\n    return $$(this.element).findAll(`.${noResultsCssClass}`);\n  }\n\n  private get parsedNoResultsFoundMessage() {\n    if (this.sanitizedQuery.trim() === '') {\n      return l('noResult');\n    }\n\n    return this.replaceQueryTagsWithHighlightedQuery(this.options.noResultsFoundMessage);\n  }\n\n  private getNoResultsFoundMessageElement() {\n    const noResultsFoundMessage = $$(\n      'div',\n      {\n        className: 'coveo-query-summary-no-results-string'\n      },\n      this.parsedNoResultsFoundMessage\n    );\n\n    return noResultsFoundMessage;\n  }\n\n  private getCancelLastActionElement() {\n    const cancelLastAction = $$(\n      'div',\n      {\n        className: 'coveo-query-summary-cancel-last'\n      },\n      l('CancelLastAction')\n    );\n\n    new AccessibleButton()\n      .withLabel(l('CancelLastAction'))\n      .withElement(cancelLastAction)\n      .withSelectAction(() => {\n        this.usageAnalytics.logCustomEvent<IAnalyticsNoMeta>(analyticsActionCauseList.noResultsBack, {}, this.root);\n        this.usageAnalytics.logSearchEvent<IAnalyticsNoMeta>(analyticsActionCauseList.noResultsBack, {});\n        if (this.lastKnownGoodState) {\n          this.queryStateModel.reset();\n          this.queryStateModel.setMultiple(this.lastKnownGoodState);\n          $$(this.root).trigger(QuerySummaryEvents.cancelLastAction);\n          this.queryController.executeQuery();\n        } else {\n          history.back();\n        }\n      })\n      .build();\n\n    return cancelLastAction;\n  }\n\n  private getSearchTipsTitleElement() {\n    const searchTipsInfo = $$('div', {\n      className: 'coveo-query-summary-search-tips-info'\n    });\n    searchTipsInfo.text(l('SearchTips'));\n\n    return searchTipsInfo;\n  }\n\n  private getSearchTipsListElement() {\n    const searchTips = $$('ul');\n\n    const checkSpelling = $$('li');\n    checkSpelling.text(l('CheckSpelling'));\n\n    const fewerKeywords = $$('li');\n    fewerKeywords.text(l('TryUsingFewerKeywords'));\n\n    searchTips.el.appendChild(checkSpelling.el);\n    searchTips.el.appendChild(fewerKeywords.el);\n\n    if (this.queryStateModel.atLeastOneFacetIsActive()) {\n      const fewerFilter = $$('li');\n      fewerFilter.text(l('SelectFewerFilters'));\n      searchTips.el.appendChild(fewerFilter.el);\n    }\n\n    return searchTips;\n  }\n}\nInitialization.registerAutoCreateComponent(QuerySummary);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/QuerySummary/QuerySummary.ts","import PopperJs from 'popper.js';\nimport 'styling/_Quickview';\nimport { QuickviewEvents } from '../../events/QuickviewEvents';\nimport { ResultListEvents } from '../../events/ResultListEvents';\nimport { ModalBox as ModalBoxModule } from '../../ExternalModulesShim';\nimport { exportGlobally } from '../../GlobalExports';\nimport { QueryStateModel } from '../../models/QueryStateModel';\nimport { IQueryResult } from '../../rest/QueryResult';\nimport { l } from '../../strings/Strings';\nimport { AccessibleButton } from '../../utils/AccessibleButton';\nimport { $$, Dom } from '../../utils/Dom';\nimport { DomUtils } from '../../utils/DomUtils';\nimport { StringUtils } from '../../utils/StringUtils';\nimport { SVGDom } from '../../utils/SVGDom';\nimport { SVGIcons } from '../../utils/SVGIcons';\nimport { Utils } from '../../utils/Utils';\nimport { analyticsActionCauseList } from '../Analytics/AnalyticsActionListMeta';\nimport { Component } from '../Base/Component';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { ComponentOptionsType } from '../Base/IComponentOptions';\nimport { IInitializationParameters, Initialization } from '../Base/Initialization';\nimport { IResultsComponentBindings } from '../Base/ResultsComponentBindings';\nimport { TemplateComponentOptions } from '../Base/TemplateComponentOptions';\nimport { Template } from '../Templates/Template';\nimport { DefaultQuickviewTemplate } from './DefaultQuickviewTemplate';\nimport { QuickviewDocument } from './QuickviewDocument';\nimport { AccessibleModal } from '../../utils/AccessibleModal';\n\n/**\n * The allowed [`Quickview`]{@link Quickview} [`tooltipPlacement`]{@link Quickview.options.tooltipPlacement} option values. The `-start` and `-end` variations indicate relative alignement. Horizontally (`top`, `bottom`), `-start` means _left_ and `-end` means _right_. Vertically (`left`, `right`), `-start` means _top_ and `-end` means _bottom_. No variation means _center_.\n */\nexport type ValidTooltipPlacement =\n  | 'auto-start'\n  | 'auto'\n  | 'auto-end'\n  | 'top-start'\n  | 'top'\n  | 'top-end'\n  | 'right-start'\n  | 'right'\n  | 'right-end'\n  | 'bottom-end'\n  | 'bottom'\n  | 'bottom-start'\n  | 'left-end'\n  | 'left'\n  | 'left-start';\n\nexport interface IQuickviewOptions {\n  title?: string;\n  showDate?: boolean;\n  contentTemplate?: Template;\n  enableLoadingAnimation?: boolean;\n  loadingAnimation?: HTMLElement | Promise<HTMLElement>;\n  alwaysShow?: boolean;\n  tooltipPlacement?: ValidTooltipPlacement;\n}\n\ninterface IQuickviewOpenerObject {\n  content: Promise<Dom>;\n  loadingAnimation: HTMLElement | Promise<HTMLElement>;\n}\n\n/**\n * The `Quickview` component renders a button/link which the end user can click to open a modal box containing certain\n * information about a result. Most of the time, this component references a\n * [`QuickviewDocument`]{@link QuickviewDocument} in its [`contentTemplate`]{@link Quickview.options.contentTemplate}.\n *\n * **Notes:**\n * > - `Quickview` is not meant to replace a [ResultLink]{@link ResultLink} to access an item; it has certain limitations (e.g., custom styles and embedded\n * images/links may not work as expected in a `Quickview`).\n * > - You can change the appearance of the `Quickview` link/button by adding elements in the inner HTML of its `div`.\n * > - You can change the content of the `Quickview` modal box link by specifying a template `id` or CSS selector (see\n * > the [`contentTemplate`]{@link Quickview.options.contentTemplate} option).\n * > - When using Coveo for Salesforce 3.16, in an environment compliant with LockerService, ensure you use `CoveoSalesforceQuickview` (see [Changing the Default Quick View in Coveo for Salesforce](https://docs.coveo.com/en/1234/)).\n *\n * **Example:**\n * ```html\n * [ ... ]\n *\n * <script class='result-template' type='text/underscore' id='myContentTemplateId'>\n *   <div>\n *     <span>This content will be displayed when then end user opens the quickview modal box. It could also include other Coveo component, and use core helpers.</span>\n *     <table class=\"CoveoFieldTable\">\n *       <tr data-field=\"@liboardshorttitle\" data-caption=\"Board\" />\n *       <tr data-field=\"@licategoryshorttitle\" data-caption=\"Category\" />\n *       <tr data-field=\"@sysauthor\" data-caption=\"Author\" />\n *     </table>\n *   </div>\n * </script>\n *\n * [ ... ]\n *\n * <div class='CoveoResultList'>\n *   <script class='result-template' type='text/underscore' id='myResultTemplateId'>\n *\n *   [ ... ]\n *\n *     <!-- The `myContentTemplateId` template applies when displaying content in the quickview modal box. -->\n *       <div class='CoveoQuickview' data-template-id='myContentTemplateId'>\n *         <!-- This changes the appearance of the Quickview button itself in the results -->\n *         <span>Click here for a quickview</span>\n *       </div>\n *   </script>\n *\n *   [ ... ]\n *\n * <!-- Note that simply including `<div class='CoveoQuickview'></div>` in the markup will be enough most of the time, since the component includes a default template and a default button appearance. -->\n * ```\n *\n * This component is a result template component (see [Result Templates](https://docs.coveo.com/en/413/)).\n */\nexport class Quickview extends Component {\n  static ID = 'Quickview';\n\n  static doExport = () => {\n    exportGlobally({\n      Quickview: Quickview,\n      QuickviewDocument: QuickviewDocument\n    });\n  };\n\n  /**\n   * @componentOptions\n   */\n  static options: IQuickviewOptions = {\n    /**\n     * Specifies whether to always show the `Quickview` button/link, even when the index body of an item is empty.\n     *\n     * In such cases, the [`contentTemplate`]{@link Quickview.options.contentTemplate} defines what appears in the\n     * `Quickview` modal box. Consequently, if there is no quickview for the item, you *MUST* specify a custom\n     * `contentTemplate`, otherwise the component will throw an error when opened.\n     *\n     * Default value is `false`.\n     *\n     * @availablesince [September 2015 Release (v1.0.59)](https://docs.coveo.com/en/289/#september-2015-release-v1059)\n     */\n    alwaysShow: ComponentOptions.buildBooleanOption({ defaultValue: false }),\n\n    /**\n     * Specifies the title that should appear in the `Quickview` modal box header.\n     *\n     * Default value is undefined, which is equivalent to the empty string.\n     */\n    title: ComponentOptions.buildStringOption(),\n\n    /**\n     * Specifies whether to display the item date in the `Quickview` modal box header.\n     *\n     * Default value is `true`.\n     */\n    showDate: ComponentOptions.buildBooleanOption({ defaultValue: true }),\n\n    /**\n     * Specifies whether to enable the loading animation.\n     *\n     * See also [`loadingAnimation`]{Quickview.options.loadingAnimation}.\n     *\n     * Default value is `true`.\n     */\n    enableLoadingAnimation: ComponentOptions.buildBooleanOption({ defaultValue: true }),\n\n    /**\n     * Specifies a custom template to use when displaying content in the `Quickview` modal box.\n     *\n     * **Note:**\n     * > You can use [`CoreHelpers`]{@link ICoreHelpers} methods in your content template.\n     *\n     * You can specify a previously registered template to use either by referring to its HTML `id` attribute or to a\n     * CSS selector (see [`TemplateCache`]{@link TemplateCache}).\n     *\n     * **Example:**\n     *\n     * * Specifying a previously registered template by referring to its HTML `id` attribute:\n     *\n     * ```html\n     * <div class=\"CoveoQuickview\" data-template-id=\"myContentTemplateId\"></div>\n     * ```\n     *\n     * * Specifying a previously registered template by referring to a CSS selector:\n     *\n     * ```html\n     * <div class='CoveoQuickview' data-template-selector=\".myContentTemplateSelector\"></div>\n     * ```\n     *\n     * If you do not specify a custom content template, the component uses its default template.\n     */\n    contentTemplate: TemplateComponentOptions.buildTemplateOption({\n      selectorAttr: 'data-template-selector',\n      idAttr: 'data-template-id'\n    }),\n\n    /**\n     * If [`enableLoadingAnimation`]{@link Quickview.options.enableLoadingAnimation} is `true`, specifies a custom\n     * animation to display while the content of the quickview modal window is loading. You can either specify the CSS\n     * selector of the HTML element you wish to display, or the `id` of a previously registered template (see\n     * [`TemplateCache`]{@link TemplateCache}).\n     *\n     * **Examples:**\n     *\n     * * Specifying the CSS selector of the HTML element to display:\n     *\n     * ```html\n     * <div class=\"CoveoQuickview\" data-loading-animation-selector=\".my-loading-animation\"></div>\n     * ```\n     *\n     * * Specifying the `id` of a previously registered template:\n     *\n     * ```html\n     * <div class=\"CoveoQuickview\" data-loading-animation-template-id=\"my-loading-animation-template\"></div>\n     * ```\n     *\n     * By default, the loading animation is a Coveo animation, which you can customize with CSS (see\n     * [Styling the Coveo JavaScript Search Framework](https://docs.coveo.com/en/423/)).\n     */\n    loadingAnimation: ComponentOptions.buildOption<HTMLElement | Promise<HTMLElement>>(\n      ComponentOptionsType.NONE,\n      (element: HTMLElement) => {\n        const loadingAnimationSelector = element.getAttribute('data-loading-animation-selector');\n        if (loadingAnimationSelector != null) {\n          const loadingAnimation = $$(document.documentElement).find(loadingAnimationSelector);\n          if (loadingAnimation != null) {\n            $$(loadingAnimation).detach();\n            return loadingAnimation;\n          }\n        }\n        const id = element.getAttribute('data-loading-animation-template-id');\n        if (id != null) {\n          const loadingAnimationTemplate = TemplateComponentOptions.loadResultTemplateFromId(id);\n          if (loadingAnimationTemplate) {\n            return loadingAnimationTemplate.instantiateToElement(undefined, {\n              checkCondition: false\n            });\n          }\n        }\n        return DomUtils.getBasicLoadingAnimation();\n      }\n    ),\n\n    /**\n     * Specifies the emplacement of the tooltip in relation to the `Quickview` HTML element.\n     *\n     * **Example:**\n     * > Setting this option to `top-start` will make the tooltip appear on top of the `Quickview` button, aligned to the left.\n     *\n     * @availablesince [January 2019 Release (v2.5395.12)](https://docs.coveo.com/en/2938/)\n     */\n    tooltipPlacement: ComponentOptions.buildCustomOption<ValidTooltipPlacement>((value: ValidTooltipPlacement) => value, {\n      defaultValue: 'bottom'\n    })\n  };\n\n  public static resultCurrentlyBeingRendered: IQueryResult = null;\n\n  private modalbox: AccessibleModal;\n\n  /**\n   * Creates a new `Quickview` component.\n   * @param element The HTMLElement on which to instantiate the component.\n   * @param options The options for the `Quickview` component.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time).\n   * @param result The result to associate the component with.\n   * @param ModalBox The quickview modal box.\n   */\n  constructor(\n    public element: HTMLElement,\n    public options?: IQuickviewOptions,\n    public bindings?: IResultsComponentBindings,\n    public result?: IQueryResult,\n    ModalBox: Coveo.ModalBox.ModalBox = ModalBoxModule\n  ) {\n    super(element, Quickview.ID, bindings);\n    this.options = ComponentOptions.initComponentOptions(element, Quickview, options);\n\n    if (this.options.contentTemplate == null) {\n      this.options.contentTemplate = new DefaultQuickviewTemplate();\n    }\n\n    // If there is no content inside the Quickview div,\n    // we need to add something that will show up in the result template itself\n    if (/^\\s*$/.test(this.element.innerHTML)) {\n      this.buildContent();\n    }\n\n    this.bindClick(result);\n    if (this.bindings.resultElement) {\n      this.bind.on(this.bindings.resultElement, ResultListEvents.openQuickview, (event?: Event) => {\n        event && event.stopPropagation();\n        this.open();\n      });\n    }\n\n    this.modalbox = new AccessibleModal('coveo-quick-view', this.searchInterface.options.modalContainer, ModalBox);\n  }\n\n  private buildContent() {\n    const icon = this.buildIcon();\n    const caption = this.buildCaption();\n    const content = $$('div');\n\n    content.append(icon);\n    content.append(caption);\n    $$(this.element).append(content.el);\n\n    this.buildTooltipIfNotInCardLayout(icon, caption);\n  }\n\n  private buildIcon() {\n    const icon = $$('div', { className: 'coveo-icon-for-quickview' }, SVGIcons.icons.quickview).el;\n    SVGDom.addClassToSVGInContainer(icon, 'coveo-icon-for-quickview-svg');\n    return icon;\n  }\n\n  private buildCaption() {\n    return $$('div', { className: 'coveo-caption-for-icon' }, 'Quickview'.toLocaleString()).el;\n  }\n\n  private buildTooltipIfNotInCardLayout(icon: HTMLElement, caption: HTMLElement) {\n    if (this.resultsAreInCardLayout) {\n      return;\n    }\n\n    const arrow = $$('div').el;\n    caption.appendChild(arrow);\n    this.buildPopper(icon, caption, arrow);\n  }\n\n  private get resultsAreInCardLayout() {\n    return this.queryStateModel.get(QueryStateModel.attributesEnum.layout) === 'card';\n  }\n\n  private buildPopper(icon: HTMLElement, caption: HTMLElement, arrow: HTMLElement) {\n    const popperReference = new PopperJs(icon, caption, {\n      placement: this.options.tooltipPlacement,\n      modifiers: {\n        preventOverflow: {\n          boundariesElement: $$(this.root).el,\n          padding: 0\n        },\n        arrow: {\n          element: arrow\n        },\n        // X,Y offset of the tooltip relative to the icon\n        offset: {\n          offset: '0,8'\n        }\n      },\n      eventsEnabled: false\n    });\n\n    $$(this.element).on('mouseover', () => {\n      popperReference.update();\n    });\n  }\n\n  /**\n   * Opens the `Quickview` modal box.\n   */\n  public open() {\n    if (!this.modalbox.isOpen) {\n      // To prevent the keyboard from opening on mobile if the search bar has focus\n      Quickview.resultCurrentlyBeingRendered = this.result;\n      // activeElement does not exist in LockerService\n      if (document.activeElement && document.activeElement instanceof HTMLElement) {\n        $$(document.activeElement as HTMLElement).trigger('blur');\n      }\n\n      const openerObject = this.prepareOpenQuickviewObject();\n      return this.createModalBox(openerObject).then(() => {\n        this.bindQuickviewEvents(openerObject);\n        this.animateAndOpen();\n        this.logUsageAnalyticsEvent();\n        this.queryStateModel.set(QueryStateModel.attributesEnum.quickview, this.getHashId());\n        Quickview.resultCurrentlyBeingRendered = null;\n      });\n    }\n  }\n\n  /**\n   * Closes the `Quickview` modal box.\n   */\n  public close() {\n    if (this.modalbox.isOpen) {\n      this.modalbox.close();\n    }\n  }\n\n  public getHashId() {\n    return this.result.queryUid + '.' + this.result.index + '.' + StringUtils.hashCode(this.result.uniqueId);\n  }\n\n  private logUsageAnalyticsEvent() {\n    this.usageAnalytics.logClickEvent(\n      analyticsActionCauseList.documentQuickview,\n      {\n        author: Utils.getFieldValue(this.result, 'author'),\n        documentURL: this.result.clickUri,\n        documentTitle: this.result.title\n      },\n      this.result,\n      this.element\n    );\n  }\n\n  private bindClick(result: IQueryResult) {\n    if (typeof result.hasHtmlVersion == 'undefined' || result.hasHtmlVersion || this.options.alwaysShow) {\n      const clickAction = () => this.open();\n\n      new AccessibleButton().withElement(this.element).withSelectAction(clickAction).withLabel(l('Quickview')).withOwner(this.bind).build();\n    } else {\n      this.element.style.display = 'none';\n    }\n  }\n\n  private bindQuickviewEvents(openerObject: IQuickviewOpenerObject) {\n    $$(this.modalbox.content).on(QuickviewEvents.quickviewLoaded, async () => {\n      const anim = await openerObject.loadingAnimation;\n      $$(anim).remove();\n    });\n  }\n\n  private animateAndOpen() {\n    const quickviewDocument = $$(this.modalbox.element).find('.' + Component.computeCssClassName(QuickviewDocument));\n    if (quickviewDocument) {\n      Initialization.dispatchNamedMethodCallOrComponentCreation('open', quickviewDocument, null);\n    }\n  }\n\n  private createModalBox(openerObject: IQuickviewOpenerObject) {\n    const computedModalBoxContent = $$('div');\n    computedModalBoxContent.addClass('coveo-computed-modal-box-content');\n    return openerObject.content.then(builtContent => {\n      computedModalBoxContent.append(builtContent.el);\n      this.modalbox.openResult({\n        result: this.result,\n        options: {\n          showDate: this.options.showDate,\n          title: this.options.title\n        },\n        bindings: this.bindings,\n        content: computedModalBoxContent.el,\n        validation: () => {\n          this.closeQuickview();\n          return true;\n        },\n        origin: this.element\n      });\n      return computedModalBoxContent;\n    });\n  }\n\n  private prepareOpenQuickviewObject() {\n    const loadingAnimation = this.options.loadingAnimation;\n    return {\n      loadingAnimation: loadingAnimation,\n      content: this.prepareQuickviewContent(loadingAnimation)\n    };\n  }\n\n  private async prepareQuickviewContent(loadingAnimation: HTMLElement | Promise<HTMLElement>): Promise<Dom> {\n    const domContent = await this.instantiateTemplateToDom();\n\n    const initOptions = this.searchInterface.options;\n    const initParameters: IInitializationParameters = {\n      options: initOptions,\n      bindings: this.getBindings(),\n      result: this.result\n    };\n\n    await Initialization.automaticallyCreateComponentsInside(domContent.el, initParameters).initResult;\n\n    const containsQuickviewDocumentAndCustomAnimation = () =>\n      domContent.find(`.${Component.computeCssClassName(QuickviewDocument)}`) != undefined && this.options.enableLoadingAnimation;\n\n    if (containsQuickviewDocumentAndCustomAnimation()) {\n      if (loadingAnimation instanceof HTMLElement) {\n        domContent.prepend(loadingAnimation);\n      } else if (loadingAnimation instanceof Promise) {\n        loadingAnimation.then(anim => {\n          domContent.prepend(anim);\n        });\n      }\n    }\n    return domContent;\n  }\n\n  private async instantiateTemplateToDom(): Promise<Dom> {\n    let templateInstantiated: HTMLElement;\n    try {\n      templateInstantiated = await this.options.contentTemplate.instantiateToElement(this.result);\n    } catch (e) {\n      this.logger.warn(e);\n    } finally {\n      if (!templateInstantiated) {\n        this.logger.warn(\n          'An unexpected error happened while trying to render a custom template quickview, fallbacking on default quickview template...',\n          this.options.contentTemplate\n        );\n        templateInstantiated = await new DefaultQuickviewTemplate().instantiateToElement(this.result);\n      }\n    }\n    return $$(templateInstantiated);\n  }\n\n  private closeQuickview() {\n    this.queryStateModel.set(QueryStateModel.attributesEnum.quickview, '');\n  }\n}\nInitialization.registerAutoCreateComponent(Quickview);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Quickview/Quickview.ts","import { Component } from '../Base/Component';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { IResultsComponentBindings } from '../Base/ResultsComponentBindings';\nimport { $$ } from '../../utils/Dom';\nimport { IQueryResult } from '../../rest/QueryResult';\nimport { Assert } from '../../misc/Assert';\nimport { Initialization } from '../Base/Initialization';\nimport { forEach } from 'underscore';\nimport { exportGlobally } from '../../GlobalExports';\nimport 'styling/_ResultActionsMenu';\n\nexport interface IResultActionsMenuOptions {\n  openOnMouseOver?: boolean;\n}\n\n/**\n * The _ResultActionsMenu_ component adds a floating result action menu, meant to be used inside result templates (see [Result Templates](https://docs.coveo.com/en/413/javascript-search-framework/result-templates)).\n * It is designed to contain other components that can execute actions related to the result,\n * typically the [Quickview]{@link Quickview} and AttachToCase components, available in the Coveo for Salesforce and Coveo for Dynamics integrations.\n *\n * ```html\n * <script type=\"text/html\" class=\"result-template\" [...]\n *   <div class=\"coveo-result-frame\">\n *     <div class=\"CoveoResultActionsMenu\">\n *       <div class=\"CoveoQuickview\"></div>\n *     </div>\n *   [...]\n * </script>\n * ```\n *\n * @availablesince [July 2018 Release (v2.4382.10)](https://docs.coveo.com/410/#july-2018-release-v2438210)\n */\nexport class ResultActionsMenu extends Component {\n  static ID = 'ResultActionsMenu';\n\n  static doExport = () => {\n    exportGlobally({\n      ResultActionsMenu: ResultActionsMenu\n    });\n  };\n\n  static readonly SHOW_CLASS: string = 'coveo-menu-opened';\n\n  /**\n   * @componentOptions\n   */\n  static options: IResultActionsMenuOptions = {\n    /**\n     * Specifies whether the menu should open when the user hovers over the result.\n     *\n     * When set to false, the menu opens only when clicking on the result.\n     *\n     * Default value is `true`.\n     */\n    openOnMouseOver: ComponentOptions.buildBooleanOption({ defaultValue: true })\n  };\n\n  /**\n   * The rendered result that contains this menu.\n   */\n  parentResult: HTMLElement;\n\n  /**\n   * A list containing menu items for this menu.\n   */\n  menuItems: HTMLElement[];\n\n  /**\n   * Creates a new `ResultActionsMenu` component.\n   * @param element The HTMLElement on which to instantiate the component.\n   * @param options The options for the `ResultActionsMenu` component.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time).\n   * @param result The result to associate the component with.\n   */\n  constructor(\n    public element: HTMLElement,\n    public options: IResultActionsMenuOptions,\n    public bindings?: IResultsComponentBindings,\n    public result?: IQueryResult\n  ) {\n    super(element, ResultActionsMenu.ID, bindings);\n    this.options = ComponentOptions.initComponentOptions(element, ResultActionsMenu, options);\n\n    this.initializeParentResult();\n    this.bindEvents();\n\n    this.buildMenuItems();\n  }\n\n  /**\n   * Shows the floating menu.\n   */\n  public show() {\n    $$(this.element).addClass(ResultActionsMenu.SHOW_CLASS);\n  }\n\n  /**\n   * Hides the floating menu.\n   */\n  public hide() {\n    $$(this.element).removeClass(ResultActionsMenu.SHOW_CLASS);\n  }\n\n  private initializeParentResult() {\n    // Find the result containing this ResultActionsMenu\n    this.parentResult = $$(this.element).closest('CoveoResult') || $$(this.element).closest('coveo-result-folding-child-result');\n    Assert.check(this.parentResult !== undefined, 'ResultActionsMenu needs to be a child of a Result');\n\n    $$(this.parentResult).addClass('coveo-clickable');\n  }\n\n  private bindEvents() {\n    $$(this.parentResult).on('click', () => this.show());\n\n    $$(this.parentResult).on('mouseleave', () => this.hide());\n    if (this.options.openOnMouseOver) {\n      $$(this.parentResult).on('mouseenter', () => this.show());\n    }\n  }\n\n  private buildMenuItems() {\n    this.menuItems = [];\n    forEach($$(this.element).children(), (elem: HTMLElement) => {\n      this.menuItems.push(elem);\n      $$(elem).addClass('coveo-result-actions-menu-menu-item');\n    });\n  }\n}\n\nInitialization.registerAutoCreateComponent(ResultActionsMenu);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResultActions/ResultActionsMenu.ts","import { Template } from '../Templates/Template';\nimport { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { DefaultResultAttachmentTemplate } from './DefaultResultAttachmentTemplate';\nimport { IQueryResult } from '../../rest/QueryResult';\nimport { Utils } from '../../utils/Utils';\nimport { QueryUtils } from '../../utils/QueryUtils';\nimport { Initialization, IInitializationParameters } from '../Base/Initialization';\nimport { Assert } from '../../misc/Assert';\nimport { $$ } from '../../utils/Dom';\nimport * as _ from 'underscore';\nimport { exportGlobally } from '../../GlobalExports';\n\nimport 'styling/_ResultAttachments';\nimport { TemplateComponentOptions } from '../Base/TemplateComponentOptions';\n\nexport interface IResultAttachmentsOptions {\n  resultTemplate?: Template;\n  subResultTemplate?: Template;\n  maximumAttachmentLevel?: number;\n}\n\n/**\n * The `ResultAttachments` component renders attachments in a result set, for example when displaying emails. This\n * component is usable inside a result template when there is an active [`Folding`]{@link Folding} component in the\n * page.\n *\n * This component is a result template component (see [Result Templates](https://docs.coveo.com/en/413/)).\n * @notSupportedIn salesforcefree\n */\nexport class ResultAttachments extends Component {\n  static ID = 'ResultAttachments';\n\n  static doExport = () => {\n    exportGlobally({\n      ResultAttachments: ResultAttachments,\n      DefaultResultAttachmentTemplate: DefaultResultAttachmentTemplate\n    });\n  };\n\n  /**\n   * The options for the component\n   * @componentOptions\n   */\n  static options: IResultAttachmentsOptions = {\n    /**\n     * Specifies the template to use to render each attachment for a top result.\n     *\n     * You can specify a previously registered template to use either by referring to its HTML `id` attribute or to a\n     * CSS selector (see {@link TemplateCache}).\n     *\n     * **Examples:**\n     *\n     * Specifying a previously registered template by referring to its HTML `id` attribute:\n     *\n     * ```html\n     * <div class=\"CoveoResultAttachments\" data-result-template-id=\"Foo\"></div>\n     * ```\n     *\n     * Specifying a previously registered template by referring to a CSS selector:\n     *\n     * ```html\n     * <div class='CoveoResultAttachments' data-result-template-selector=\".Foo\"></div>\n     * ```\n     *\n     * If you do not specify a custom folding template, the component uses the default result attachment template.\n     */\n    resultTemplate: TemplateComponentOptions.buildTemplateOption({\n      defaultFunction: e => new DefaultResultAttachmentTemplate()\n    }),\n\n    /**\n     * Specifies the template to use to render sub-attachments, which are attachments within attachments, for example\n     * when multiple files are embedded within a `.zip` attachment.\n     *\n     * Sub-attachments can themselves contain sub-attachments, and so on up to a certain level (see the\n     * [`maximumAttachmentLevel`]{@link ResultAttachments.options.maximumAttachmentLevel} option).\n     *\n     * You can specify a previously registered template to use either by referring to its HTML `id` attribute or to a\n     * CSS selector (see {@link TemplateCache}).\n     *\n     * **Example:**\n     *\n     * Specifying a previously registered template by referring to its HTML `id` attribute:\n     *\n     * ```html\n     * <div class=\"CoveoResultAttachments\" data-sub-result-template-id=\"Foo\"></div>\n     * ```\n     *\n     * Specifying a previously registered template by referring to a CSS selector:\n     *\n     * ```html\n     * <div class=\"CoveoResultAttachments\" data-sub-result-template-selector=\".Foo\"></div>\n     * ```\n     *\n     * By default, this option uses the same template you specify for the\n     * [`resultTemplate`]{@link ResultAttachments.options.resultTemplate} option.\n     */\n    subResultTemplate: TemplateComponentOptions.buildTemplateOption({\n      postProcessing: (value: Template, options: IResultAttachmentsOptions) => (value != null ? value : options.resultTemplate)\n    }),\n\n    /**\n     * Specifies the maximum nesting depth. Beyond this depth, the component stops rendering sub-attachments.\n     *\n     * Default value is `5`. Minimum value is `0`.\n     */\n    maximumAttachmentLevel: ComponentOptions.buildNumberOption({ defaultValue: 5, min: 0 })\n  };\n\n  private attachments: IQueryResult[];\n\n  /**\n   * Creates a new `ResultAttachments` component.\n   * @param element The HTMLElement on which to instantiate the component.\n   * @param options The options for the `ResultAttachments` component.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time).\n   * @param result The result to associate the component with.\n   * @param attachmentLevel The nesting depth.\n   */\n  constructor(\n    public element: HTMLElement,\n    public options?: IResultAttachmentsOptions,\n    public bindings?: IComponentBindings,\n    result?: IQueryResult,\n    public attachmentLevel = 0\n  ) {\n    super(element, ResultAttachments.ID, bindings);\n\n    this.options = ComponentOptions.initComponentOptions(element, ResultAttachments, options);\n\n    this.attachments = result.attachments;\n    if (Utils.isNonEmptyArray(this.attachments)) {\n      this.renderAttachments();\n    }\n  }\n\n  private renderAttachments() {\n    _.each(this.attachments, attachment => {\n      QueryUtils.setStateObjectOnQueryResult(this.queryStateModel.get(), attachment);\n      QueryUtils.setSearchInterfaceObjectOnQueryResult(this.searchInterface, attachment);\n      let subTemplatePromise =\n        this.attachmentLevel > 0\n          ? this.options.subResultTemplate.instantiateToElement(attachment)\n          : this.options.resultTemplate.instantiateToElement(attachment);\n\n      subTemplatePromise.then((container: HTMLElement) => {\n        this.autoCreateComponentsInsideResult(container, _.extend({}, attachment, { attachments: [] }));\n\n        $$(container).addClass('coveo-result-attachments-container');\n        this.element.appendChild(container);\n\n        if (this.attachmentHasSubAttachment(attachment) && this.attachmentLevel < this.options.maximumAttachmentLevel) {\n          var childAttachmentContainer = $$('div').el;\n          container.appendChild(childAttachmentContainer);\n          new ResultAttachments(childAttachmentContainer, this.options, this.bindings, attachment, this.attachmentLevel + 1);\n        }\n      });\n    });\n  }\n\n  private attachmentHasSubAttachment(attachment: IQueryResult) {\n    if (Utils.isNonEmptyArray(attachment.attachments)) {\n      return true;\n    } else if (Utils.isNonEmptyArray(attachment.childResults)) {\n      attachment.attachments = attachment.childResults;\n      return true;\n    } else {\n      return false;\n    }\n  }\n\n  private autoCreateComponentsInsideResult(element: HTMLElement, result: IQueryResult) {\n    Assert.exists(element);\n    var initOptions = this.searchInterface.options;\n    var initParameters: IInitializationParameters = {\n      options: initOptions,\n      bindings: this.getBindings(),\n      result: result\n    };\n    Initialization.automaticallyCreateComponentsInside(element, initParameters, [ResultAttachments.ID]);\n  }\n}\n\nInitialization.registerAutoCreateComponent(ResultAttachments);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResultAttachments/ResultAttachments.ts","import { Template } from '../Templates/Template';\nimport { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { DefaultFoldingTemplate } from './DefaultFoldingTemplate';\nimport { IQueryResult } from '../../rest/QueryResult';\nimport { Utils } from '../../utils/Utils';\nimport { QueryUtils } from '../../utils/QueryUtils';\nimport { Initialization } from '../Base/Initialization';\nimport { Assert } from '../../misc/Assert';\nimport { $$, Win } from '../../utils/Dom';\nimport { l } from '../../strings/Strings';\nimport { each, map } from 'underscore';\nimport { exportGlobally } from '../../GlobalExports';\nimport { analyticsActionCauseList, IAnalyticsDocumentViewMeta } from '../Analytics/AnalyticsActionListMeta';\nimport { Logger } from '../../misc/Logger';\n\nimport 'styling/_ResultFolding';\nimport { SVGIcons } from '../../utils/SVGIcons';\nimport { SVGDom } from '../../utils/SVGDom';\nimport { TemplateComponentOptions } from '../Base/TemplateComponentOptions';\nimport { AccessibleButton } from '../../utils/AccessibleButton';\n\nexport interface IResultFoldingOptions {\n  resultTemplate?: Template;\n  normalCaption?: string;\n  expandedCaption?: string;\n  moreCaption?: string;\n  lessCaption?: string;\n  oneResultCaption?: string;\n}\n\n/**\n * The `ResultFolding` component renders folded result sets. It is usable inside a result template when there is an\n * active [`Folding`]{@link Folding} component in the page. This component takes care of rendering the parent result and\n * its child results in a coherent manner.\n *\n * This component is a result template component (see [Result Templates](https://docs.coveo.com/en/413/)).\n *\n * See [Folding Results](https://docs.coveo.com/en/428/).\n */\nexport class ResultFolding extends Component {\n  static ID = 'ResultFolding';\n\n  static doExport = () => {\n    exportGlobally({\n      ResultFolding: ResultFolding,\n      DefaultFoldingTemplate: DefaultFoldingTemplate\n    });\n  };\n\n  /**\n   * The options for the component\n   * @componentOptions\n   */\n  static options: IResultFoldingOptions = {\n    /**\n     * Specifies the template to use to render each of the child results for a top result.\n     *\n     * You can specify a previously registered template to use either by referring to its HTML `id` attribute or to a\n     * CSS selector (see {@link TemplateCache}).\n     *\n     * **Example:**\n     *\n     * Specifying a previously registered template by referring to its HTML `id` attribute:\n     *\n     * ```html\n     * <span class=\"CoveoResultFolding\" data-result-template-id=\"Foo\"></span>\n     * ```\n     *\n     * Specifying a previously registered template by referring to a CSS selector:\n     *\n     * ```html\n     * <span class='CoveoResultFolding' data-result-template-selector=\"#Foo\"></span>\n     * ```\n     *\n     * If you do not specify a custom folding template, the component uses the default result folding template.\n     */\n    resultTemplate: TemplateComponentOptions.buildTemplateOption({ defaultFunction: () => new DefaultFoldingTemplate() }),\n\n    /**\n     * Specifies the caption to display at the top of the child results when the folding result set is not expanded.\n     *\n     * Default value is `undefined`, which displays no caption.\n     */\n    normalCaption: ComponentOptions.buildLocalizedStringOption(),\n\n    /**\n     * Specifies the caption to display at the top of the child results when the folding result set is expanded.\n     *\n     * Default value is `undefined`, which displays no caption.\n     */\n    expandedCaption: ComponentOptions.buildLocalizedStringOption(),\n\n    /**\n     * Specifies the caption to display on the link to expand / show child results.\n     *\n     * Default value is the localized string for `ShowMore`.\n     */\n    moreCaption: ComponentOptions.buildLocalizedStringOption({ postProcessing: value => value || l('ShowMore') }),\n\n    /**\n     * Specifies the caption to display on the link to shrink the loaded folding result set back to only the top result.\n     *\n     * Default value is the localized string for `ShowLess`.\n     */\n    lessCaption: ComponentOptions.buildLocalizedStringOption({ postProcessing: value => value || l('ShowLess') }),\n\n    /**\n     * Specifies the caption to display when there is only one result in a folding result set.\n     *\n     * Default value is the localized string for `DisplayingTheOnlyMessage`\n     */\n    oneResultCaption: ComponentOptions.buildLocalizedStringOption({\n      postProcessing: value => value || l('DisplayingTheOnlyMessage')\n    })\n  };\n\n  private normalCaption: HTMLElement;\n  private expandedCaption: HTMLElement;\n  private oneResultCaption: HTMLElement;\n  private results: HTMLElement;\n  private showMore: HTMLElement;\n  private showLess: HTMLElement;\n  private waitAnimation: HTMLElement;\n  private moreResultsPromise: Promise<IQueryResult[]>;\n  private showingMoreResults = false;\n\n  public childResults: IQueryResult[];\n\n  /**\n   * Creates a new ResultFolding component.\n   * @param options The options for the ResultFolding component.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time).\n   * @param result The result to associate the component with.\n   */\n  constructor(\n    public element: HTMLElement,\n    public options?: IResultFoldingOptions,\n    bindings?: IComponentBindings,\n    public result?: IQueryResult\n  ) {\n    super(element, ResultFolding.ID, bindings);\n\n    this.options = ComponentOptions.initComponentOptions(this.element, ResultFolding, options);\n\n    Assert.exists(result);\n\n    this.buildElements();\n    this.renderElements();\n  }\n\n  /**\n   * Show more results by fetching additional results from the index, which match the current folded conversation.\n   * This is the equivalent of clicking \"Show all conversation\".\n   * @returns {Promise<IQueryResult[]>}\n   */\n  public async showMoreResults() {\n    Assert.exists(this.result.moreResults);\n\n    this.cancelAnyPendingShowMore();\n    this.moreResultsPromise = this.result.moreResults();\n    this.waitAnimation = $$('div', { className: 'coveo-loading-spinner' }).el;\n    this.results.appendChild(this.waitAnimation);\n    this.updateElementVisibility();\n\n    const results = await this.moreResultsPromise;\n    this.childResults = results;\n    this.showingMoreResults = true;\n    this.usageAnalytics.logClickEvent<IAnalyticsDocumentViewMeta>(\n      analyticsActionCauseList.foldingShowMore,\n      this.getAnalyticsMetadata(),\n      this.result,\n      this.element\n    );\n\n    try {\n      await this.displayThoseResults(results);\n      this.updateElementVisibility(results.length);\n    } catch (e) {\n      const logger = new Logger(this);\n      logger.warn('An error occured when trying to display more results');\n    }\n\n    this.moreResultsPromise = undefined;\n    $$(this.waitAnimation).detach();\n    this.waitAnimation = undefined;\n\n    return results;\n  }\n\n  /**\n   * Show less results for a given conversation. This is the equivalent of clicking \"Show less\"\n   */\n  public async showLessResults() {\n    this.cancelAnyPendingShowMore();\n    this.showingMoreResults = false;\n    this.usageAnalytics.logCustomEvent<IAnalyticsDocumentViewMeta>(\n      analyticsActionCauseList.foldingShowLess,\n      this.getAnalyticsMetadata(),\n      this.element\n    );\n    await this.displayThoseResults(this.result.childResults);\n    this.updateElementVisibility();\n    this.scrollToResultElement();\n  }\n\n  private buildElements() {\n    this.buildHeader();\n    this.buildResults();\n    this.buildFooter();\n  }\n\n  private async renderElements() {\n    await this.displayThoseResults(this.result.childResults);\n    this.updateElementVisibility();\n\n    if ($$(this.element.parentElement).hasClass('CoveoCardOverlay')) {\n      this.bindOverlayEvents();\n    }\n\n    if (this.result.childResults.length == 0 && !this.result.moreResults) {\n      $$(this.element).hide();\n    }\n  }\n\n  private buildHeader() {\n    let header = $$('div', { className: 'coveo-folding-header' }).el;\n    this.element.appendChild(header);\n    if (this.options.normalCaption != undefined && this.options.expandedCaption != undefined) {\n      this.normalCaption = $$('div', { className: 'coveo-folding-normal-caption' }, this.options.normalCaption).el;\n      header.appendChild(this.normalCaption);\n\n      this.expandedCaption = $$('div', { className: 'coveo-folding-expanded-caption' }, this.options.expandedCaption).el;\n      header.appendChild(this.expandedCaption);\n    }\n    this.oneResultCaption = $$('div', { className: 'coveo-folding-oneresult-caption' }, this.options.oneResultCaption).el;\n    header.appendChild(this.oneResultCaption);\n  }\n\n  private buildResults() {\n    this.results = $$('div', { className: 'coveo-folding-results' }).el;\n    this.element.appendChild(this.results);\n  }\n\n  private buildFooter() {\n    const footer = $$('div', { className: 'coveo-folding-footer' }).el;\n    this.element.parentElement.appendChild(footer);\n\n    if (this.result.moreResults) {\n      this.showMore = $$('div', { className: 'coveo-folding-footer-section-for-less' }).el;\n      footer.appendChild(this.showMore);\n\n      this.showLess = $$('div', { className: 'coveo-folding-footer-section-for-more' }).el;\n      footer.appendChild(this.showLess);\n\n      const footerIconShowMore = $$(\n        'div',\n        { className: 'coveo-folding-more' },\n        $$('span', { className: 'coveo-folding-footer-icon' }, SVGIcons.icons.arrowDown).el\n      ).el;\n      SVGDom.addClassToSVGInContainer(footerIconShowMore, 'coveo-folding-more-svg');\n\n      const footerIconShowLess = $$(\n        'div',\n        { className: 'coveo-folding-less' },\n        $$('span', { className: 'coveo-folding-footer-icon' }, SVGIcons.icons.arrowUp).el\n      ).el;\n      SVGDom.addClassToSVGInContainer(footerIconShowLess, 'coveo-folding-less-svg');\n\n      const showMoreLink = $$('a', { className: 'coveo-folding-show-more' }, this.options.moreCaption).el;\n      const showLessLink = $$('a', { className: 'coveo-folding-show-less' }, this.options.lessCaption).el;\n\n      new AccessibleButton()\n        .withElement(this.showMore)\n        .withLabel(this.options.moreCaption)\n        .withSelectAction(() => this.showMoreResults())\n        .build();\n\n      new AccessibleButton()\n        .withElement(this.showLess)\n        .withLabel(this.options.lessCaption)\n        .withSelectAction(() => this.showLessResults())\n        .build();\n\n      this.showMore.appendChild(showMoreLink);\n      this.showLess.appendChild(showLessLink);\n      this.showMore.appendChild(footerIconShowMore);\n      this.showLess.appendChild(footerIconShowLess);\n    }\n  }\n\n  private updateElementVisibility(subResultsLength?: number) {\n    if (this.normalCaption) {\n      $$(this.normalCaption).toggle(!this.showingMoreResults && this.result.childResults.length > 0);\n    }\n    if (this.expandedCaption) {\n      $$(this.expandedCaption).toggle(this.showingMoreResults);\n    }\n    $$(this.oneResultCaption).toggleClass('coveo-hidden', !(subResultsLength && subResultsLength == 1));\n\n    if (this.showMore) {\n      $$(this.showMore).toggleClass('coveo-visible', !this.showingMoreResults && !Utils.exists(this.moreResultsPromise));\n      $$(this.showLess).toggleClass('coveo-visible', this.showingMoreResults);\n    }\n\n    let showIfNormal = $$(this.element).find('.coveo-show-if-normal');\n    if (showIfNormal) {\n      $$(showIfNormal).toggle(!this.showingMoreResults);\n    }\n\n    let showIfExpanded = $$(this.element).find('.coveo-show-if-expanded');\n    if (showIfExpanded) {\n      $$(showIfExpanded).toggle(this.showingMoreResults);\n    }\n  }\n\n  private scrollToResultElement() {\n    let resultElem = $$(this.element).closest('CoveoResult');\n    window.scrollTo(0, new Win(window).scrollY() + resultElem.getBoundingClientRect().top);\n  }\n\n  private async displayThoseResults(results: IQueryResult[]): Promise<boolean> {\n    const childResultsPromises = map(results, result => {\n      return this.renderChildResult(result);\n    });\n\n    const childsToAppend: HTMLElement[] = await Promise.all(childResultsPromises);\n    $$(this.results).empty();\n    each(childsToAppend, oneChild => {\n      this.results.appendChild(oneChild);\n    });\n    return true;\n  }\n\n  private async renderChildResult(childResult: IQueryResult): Promise<HTMLElement> {\n    QueryUtils.setStateObjectOnQueryResult(this.queryStateModel.get(), childResult);\n    QueryUtils.setSearchInterfaceObjectOnQueryResult(this.searchInterface, childResult);\n\n    const oneChild: HTMLElement = await this.options.resultTemplate.instantiateToElement(childResult, {\n      wrapInDiv: false,\n      checkCondition: false,\n      responsiveComponents: this.searchInterface.responsiveComponents\n    });\n\n    $$(oneChild).addClass('coveo-result-folding-child-result');\n    $$(oneChild).toggleClass('coveo-normal-child-result', !this.showingMoreResults);\n    $$(oneChild).toggleClass('coveo-expanded-child-result', this.showingMoreResults);\n\n    await Initialization.automaticallyCreateComponentsInsideResult(oneChild, childResult).initResult;\n    return oneChild;\n  }\n\n  private cancelAnyPendingShowMore() {\n    if (this.moreResultsPromise) {\n      this.moreResultsPromise = undefined;\n    }\n\n    Assert.doesNotExists(this.moreResultsPromise);\n    Assert.doesNotExists(this.waitAnimation);\n  }\n\n  private bindOverlayEvents() {\n    this.bind.one(this.element.parentElement, 'openCardOverlay', () => {\n      if (this.result.moreResults) {\n        this.showMoreResults();\n      }\n    });\n  }\n\n  private getAnalyticsMetadata(): IAnalyticsDocumentViewMeta {\n    return {\n      documentURL: this.result.clickUri,\n      documentTitle: this.result.title,\n      author: Utils.getFieldValue(this.result, 'author')\n    };\n  }\n}\n\nInitialization.registerAutoCreateComponent(ResultFolding);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResultFolding/ResultFolding.ts","import 'styling/_ResultRating';\nimport { exportGlobally } from '../../GlobalExports';\nimport { IQueryResult } from '../../rest/QueryResult';\nimport { IRatingRequest } from '../../rest/RatingRequest';\nimport { AccessibleButton } from '../../utils/AccessibleButton';\nimport { $$, Dom } from '../../utils/Dom';\nimport { SVGDom } from '../../utils/SVGDom';\nimport { SVGIcons } from '../../utils/SVGIcons';\nimport { Utils } from '../../utils/Utils';\nimport { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { Initialization } from '../Base/Initialization';\n\nexport enum RatingValues {\n  Undefined,\n  Lowest,\n  Low,\n  Average,\n  Good,\n  Best\n}\n\nexport interface IResultRatingOptions {}\n/**\n * **Note:**\n *\n * > The Coveo Cloud V2 platform does not support collaborative rating. Therefore, this component is obsolete in Coveo Cloud V2.\n *\n * The `ResultRating` component renders a 5-star rating widget. Interactive rating is possible if\n * the [`enableCollaborativeRating`]{@link SearchInterface.options.enableCollaborativeRating} option of your\n * search interface is `true`, and if collaborative rating is enabled on your Coveo index.\n *\n * This component is a result template component (see [Result Templates](https://docs.coveo.com/en/413/)).\n *\n * @notSupportedIn salesforcefree\n */\nexport class ResultRating extends Component {\n  static ID = 'ResultRating';\n\n  static doExport = () => {\n    exportGlobally({\n      ResultRating: ResultRating\n    });\n  };\n\n  /**\n   * Creates a new `ResultRating` component.\n   * @param element The HTMLElement on which to instantiate the component.\n   * @param options The options for the `ResultRating` component.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time).\n   * @param result The result to associate the component with.\n   */\n  constructor(\n    public element: HTMLElement,\n    public options?: IResultRatingOptions,\n    public bindings?: IComponentBindings,\n    public result?: IQueryResult\n  ) {\n    super(element, ResultRating.ID, bindings);\n    this.options = ComponentOptions.initComponentOptions(element, ResultRating, options);\n\n    if (!Utils.isNullOrUndefined(result.rating)) {\n      this.renderComponent(element, result.rating);\n    }\n  }\n\n  private renderComponent(element: HTMLElement, rating: number) {\n    for (let starNumber = 1; starNumber <= 5; starNumber++) {\n      this.renderStar(element, starNumber <= rating, starNumber);\n    }\n  }\n\n  private renderStar(element: HTMLElement, isChecked: boolean, value: number) {\n    let star: Dom;\n    const starElement = $$(element).find('a[rating-value=\"' + value + '\"]');\n    if (starElement == null) {\n      star = $$('a', { className: 'coveo-result-rating-star' }, SVGIcons.icons.star);\n      SVGDom.addClassToSVGInContainer(star.el, 'coveo-result-rating-star-svg');\n      element.appendChild(star.el);\n\n      if (this.bindings.searchInterface.options.enableCollaborativeRating) {\n        new AccessibleButton()\n          .withElement(star)\n          .withSelectAction(e => {\n            const targetElement: HTMLElement = <HTMLElement>e.currentTarget;\n            this.rateDocument(parseInt(targetElement.getAttribute('rating-value')));\n          })\n          .withLabel(value.toString())\n          .build();\n\n        star.on('mouseover', e => {\n          const targetElement: HTMLElement = <HTMLElement>e.currentTarget;\n          this.renderComponent(element, parseInt(targetElement.getAttribute('rating-value')));\n        });\n\n        star.on('mouseout', () => {\n          this.renderComponent(element, this.result.rating);\n        });\n      }\n\n      star.el.setAttribute('rating-value', value.toString());\n    } else {\n      star = $$(starElement);\n    }\n\n    star.toggleClass('coveo-result-rating-star-active', isChecked);\n  }\n\n  /**\n   * Rates an item using the the specified `rating` value.\n   * @param rating The rating to assign to the item.\n   *\n   * The possible values are:\n   *\n   * - `0`: renders no star.\n   * - `1`: renders 1 star.\n   * - `2`: renders 2 stars.\n   * - `3`: renders 3 stars.\n   * - `4`: renders 4 stars.\n   * - `5`: renders 5 stars.\n   */\n  public rateDocument(rating: RatingValues) {\n    const request: IRatingRequest = {\n      rating: RatingValues[rating],\n      uniqueId: this.result.uniqueId\n    };\n\n    this.queryController\n      .getEndpoint()\n      .rateDocument(request)\n      .then(() => {\n        this.result.rating = rating;\n        this.renderComponent(this.element, rating);\n      })\n      .catch(() => {\n        this.logger.error('An error occurred while rating the item');\n      });\n  }\n}\n\nInitialization.registerAutoCreateComponent(ResultRating);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResultRating/ResultRating.ts","import 'styling/_StarRating';\nimport { $$ } from '../../utils/Dom';\nimport { Utils } from '../../utils/Utils';\nimport { l } from '../../strings/Strings';\nimport { Component } from '../Base/Component';\nimport { SVGIcons } from '../../utils/SVGIcons';\nimport { exportGlobally } from '../../GlobalExports';\nimport { IQueryResult } from '../../rest/QueryResult';\nimport { Initialization } from '../Base/Initialization';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { IFieldOption } from '../Base/IComponentOptions';\n\nconst DEFAULT_SCALE = 5;\n\nexport interface IStarRatingOptions {\n  ratingField?: IFieldOption;\n  numberOfRatingsField?: IFieldOption;\n  ratingScale?: number;\n}\n/**\n * The `StarRating` component renders a five-star rating widget for use in commerce result templates.\n *\n * @isresulttemplatecomponent\n *\n * @availablesince [January 2020 Release (v2.7968)](https://docs.coveo.com/en/3163/)\n */\nexport class StarRating extends Component {\n  static ID = 'StarRating';\n  private rating: number;\n  private numberOfRatings: number;\n\n  static doExport = () => {\n    exportGlobally({\n      StarRating: StarRating\n    });\n  };\n\n  /**\n   * @componentOptions\n   */\n  static options: IStarRatingOptions = {\n    /**\n     * Specifies the rating to be displayed as stars. If the rating is on a different scale than 0-5, a `ratingScale` value must be provided.\n     */\n    ratingField: ComponentOptions.buildFieldOption({ required: true }),\n\n    /**\n     * A numeric field whose value should be used to display the total number of ratings label for the result item.\n     *\n     * If unspecified, no number of ratings label is displayed. If the `numberOfRatingsField`'s value is `0` or less, a `(No Ratings)` label is displayed.\n     */\n    numberOfRatingsField: ComponentOptions.buildFieldOption(),\n\n    /**\n     * The scale to apply to the [`ratingField`]{@link StarRating.options.ratingField}'s value. Must be smaller than or equal to the highest possible `ratingField`'s value.\n     *\n     * **Example:** If the `ratingScale` is `100` and the current `ratingField`'s value is `75`, the component will render 3 stars (i.e., `75 * (5 / 100)`, rounded down).\n     */\n    ratingScale: ComponentOptions.buildNumberOption({ defaultValue: 5, min: 1, max: 100000 })\n  };\n\n  /**\n   * Creates a new `StarRating` component.\n   * @param element The HTMLElement on which to instantiate the component.\n   * @param options The options for the `StarRating` component.\n   * @param bindings The bindings that the component requires to function normally.\n   */\n  constructor(\n    public element: HTMLElement,\n    public options: IStarRatingOptions,\n    public bindings?: IComponentBindings,\n    private result?: IQueryResult\n  ) {\n    super(element, StarRating.ID);\n    this.options = ComponentOptions.initComponentOptions(element, StarRating, options);\n\n    if (!result) {\n      this.logger.error('No result passed to Star Rating component.');\n      return;\n    }\n    this.renderComponent();\n  }\n\n  private get configuredFieldsAreValid(): boolean {\n    const rawRating = Utils.getFieldValue(this.result, <string>this.options.ratingField);\n    const rawNumberOfRatings = Utils.getFieldValue(this.result, <string>this.options.numberOfRatingsField);\n\n    if (rawNumberOfRatings !== undefined) {\n      this.numberOfRatings = Number(rawNumberOfRatings) < 0 ? 0 : Number(rawNumberOfRatings) || 0;\n    }\n\n    this.rating = Number(rawRating) < 0 ? 0 : Number(rawRating) || 0;\n    const scale = this.options.ratingScale;\n\n    if (scale < this.rating || scale <= 0) {\n      this.logger.error(`The rating scale property is either missing or invalid.`);\n      return false;\n    }\n\n    this.rating = Math.round(this.rating * (DEFAULT_SCALE / scale));\n    return true;\n  }\n\n  private renderComponent() {\n    if (this.configuredFieldsAreValid) {\n      this.makeAccessible();\n      for (let starNumber = 1; starNumber <= DEFAULT_SCALE; starNumber++) {\n        this.renderStar(starNumber <= this.rating);\n      }\n      if (this.numberOfRatings !== undefined) {\n        this.renderNumberOfReviews(this.numberOfRatings);\n      }\n    }\n  }\n\n  private makeAccessible() {\n    this.setDefaultTabIndex();\n    this.element.setAttribute('aria-label', this.getAriaLabel());\n  }\n\n  private setDefaultTabIndex() {\n    if (Utils.isNullOrUndefined(this.element.getAttribute('tabindex'))) {\n      this.element.tabIndex = 0;\n    }\n  }\n\n  private getAriaLabel() {\n    const numberOfRatingsIsKnown = !Utils.isNullOrUndefined(this.numberOfRatings);\n    const wasRated = !!this.numberOfRatings;\n    if (numberOfRatingsIsKnown && !wasRated) {\n      return l('NoRatings');\n    }\n    const label = l('Rated', this.rating, this.options.ratingScale, this.options.ratingScale);\n    if (numberOfRatingsIsKnown) {\n      return label + ' ' + l('RatedBy', this.numberOfRatings, this.numberOfRatings);\n    }\n    return label;\n  }\n\n  private renderStar(isChecked: boolean) {\n    const star = $$('span', { className: 'coveo-star-rating-star' }, SVGIcons.icons.star);\n    star.toggleClass('coveo-star-rating-star-active', isChecked);\n    this.element.appendChild(star.el);\n  }\n\n  private renderNumberOfReviews(value: number) {\n    const numberString = $$('span', { className: 'coveo-star-rating-label' });\n    numberString.text(value > 0 ? `(${value})` : l('NoRatings'));\n    this.element.appendChild(numberString.el);\n  }\n}\n\nInitialization.registerAutoCreateComponent(StarRating);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/StarRating/StarRating.ts","import 'styling/_ResultsFiltersPreferences';\nimport * as _ from 'underscore';\nimport { BreadcrumbEvents, IPopulateBreadcrumbEventArgs } from '../../events/BreadcrumbEvents';\nimport { InitializationEvents } from '../../events/InitializationEvents';\nimport { PreferencesPanelEvents } from '../../events/PreferencesPanelEvents';\nimport { IBuildingQueryEventArgs, QueryEvents } from '../../events/QueryEvents';\nimport { exportGlobally } from '../../GlobalExports';\nimport { MODEL_EVENTS } from '../../models/Model';\nimport { QueryStateModel, QUERY_STATE_ATTRIBUTES } from '../../models/QueryStateModel';\nimport { l } from '../../strings/Strings';\nimport { getHeadingTag } from '../../utils/AccessibilityUtils';\nimport { AccessibleButton } from '../../utils/AccessibleButton';\nimport { $$ } from '../../utils/Dom';\nimport { LocalStorageUtils } from '../../utils/LocalStorageUtils';\nimport { SVGDom } from '../../utils/SVGDom';\nimport { SVGIcons } from '../../utils/SVGIcons';\nimport { Utils } from '../../utils/Utils';\nimport { analyticsActionCauseList, IAnalyticsCustomFiltersChangeMeta } from '../Analytics/AnalyticsActionListMeta';\nimport { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { Initialization } from '../Base/Initialization';\nimport { Checkbox } from '../FormWidgets/Checkbox';\nimport { FormGroup } from '../FormWidgets/FormGroup';\nimport { MultiSelect } from '../FormWidgets/MultiSelect';\nimport { TextInput } from '../FormWidgets/TextInput';\nimport { Tab } from '../Tab/Tab';\n\nexport interface IResultFilterPreference {\n  selected?: boolean;\n  custom?: boolean;\n  tab?: string[];\n  caption: string;\n  expression: string;\n}\n\nexport interface IResultsFiltersPreferencesOptions {\n  filters?: {\n    [caption: string]: { expression: string; tab?: string[] };\n  };\n  includeInBreadcrumb?: boolean;\n  showAdvancedFilters?: boolean;\n}\n\n/**\n * The `ResultFiltersPreferences` component allows end users to create custom filters to apply to queries. These filters\n * are saved to local storage.\n *\n * Only advanced end users who understand the Coveo query syntax should use this feature (see\n * [Coveo Query Syntax Reference](https://docs.coveo.com/en/1552/searching-with-coveo/coveo-cloud-query-syntax)).\n *\n * This component is normally accessible through the [`Settings`]{@link Settings} menu. Its usual location in the DOM is\n * inside the [`PreferencesPanel`]{@link PreferencesPanel} element.\n *\n * See also the {@link ResultsPreferences} component.\n */\nexport class ResultsFiltersPreferences extends Component {\n  static ID = 'ResultsFiltersPreferences';\n\n  static doExport = () => {\n    exportGlobally({\n      ResultsFiltersPreferences: ResultsFiltersPreferences\n    });\n  };\n\n  /**\n   * The options for the component\n   * @componentOptions\n   */\n  static options: IResultsFiltersPreferencesOptions = {\n    /**\n     * Specifies whether to display the active filter(s) in the [`Breadcrumb`]{@link Breadcrumb}.\n     *\n     * Default value is `true`.\n     */\n    includeInBreadcrumb: ComponentOptions.buildBooleanOption({ defaultValue: true }),\n\n    /**\n     * Specifies whether to show the **Create** button that allows the end user to create filters.\n     *\n     * If you set this option to `false`, only the pre-populated\n     * [`filters`]{@link ResultsFiltersPreferences.options.filters} are available to the end user.\n     *\n     * Default value is `true`.\n     */\n    showAdvancedFilters: ComponentOptions.buildBooleanOption({ defaultValue: true }),\n\n    /**\n     * Specifies the default filters which all end users can apply.\n     *\n     * End users cannot modify or delete these filters. These filters do not count as \"user-made\" filters, but rather as\n     * \"built-in\" filters created by the developer of the search page.\n     *\n     * **Note:**\n     * > You cannot set this option directly in the component markup as an HTML attribute. You must either set it in the\n     * > [`init`]{@link init} call of your search interface (see\n     * > [Passing Component Options in the init Call](https://docs.coveo.com/en/346/#passing-component-options-in-the-init-call)),\n     * > or before the `init` call, using the `options` top-level function (see\n     * > [Passing Component Options Before the init Call](https://docs.coveo.com/en/346/#passing-component-options-before-the-init-call)).\n     *\n     * Filters should follow this definition:\n     *\n     * `filters : { [caption : string] : { expression : string, tab? : string[] } }`;\n     *\n     * **Example:**\n     *\n     * var myFilters = {\n     *   \"Only Google Drive Items\" : {\n     *     expression : \"@connectortype == 'GoogleDriveCrawler'\",\n     *     tab : [\"Tab1\", \"Tab2\"]\n     *   },\n     *\n     *   \"Another Filter\" : {\n     *     expression : [ ... another expression ... ]\n     *   },\n     *\n     *   [ ... ]\n     * };\n     *\n     * ```javascript\n     * // You can set the option in the 'init' call:\n     * Coveo.init(document.querySelector(\"#search\"), {\n     *   ResultsFiltersPreferences : {\n     *     filters : myFilters\n     *   }\n     * });\n     *\n     * // Or before the 'init' call, using the 'options' top-level function:\n     * // Coveo.options(document.querySelector(\"#search\"), {\n     * //   ResultsFiltersPreferences : {\n     *        filters : myFilters\n     *      }\n     * // });\n     * ```\n     *\n     * Default value is `undefined`.\n     */\n    filters: <any>ComponentOptions.buildJsonOption()\n  };\n\n  public preferences: { [caption: string]: IResultFilterPreference };\n  public container: HTMLFieldSetElement;\n  private preferencePanelLocalStorage: LocalStorageUtils<{ [caption: string]: IResultFilterPreference }>;\n  private preferencePanel: HTMLElement;\n  private preferenceContainer: HTMLElement;\n  private preferencePanelCheckboxInput: { [caption: string]: Checkbox } = {};\n  private advancedFilters: HTMLElement;\n  private advancedFiltersBuilder: HTMLElement;\n  private advancedFiltersTextInputCaption: TextInput;\n  private advancedFiltersTextInputExpression: TextInput;\n  private advancedFiltersTabSelect: MultiSelect;\n  private advancedFilterFormValidate: HTMLFormElement;\n  private isFullBreadcrumbClear: boolean;\n\n  /**\n   * Creates a new `ResultsFiltersPreferences` component.\n   * @param element The HTMLElement on which to instantiate the component.\n   * @param options The options for the `ResultsFiltersPreferences` component.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time).\n   */\n  constructor(public element: HTMLElement, public options: IResultsFiltersPreferencesOptions, public bindings: IComponentBindings) {\n    super(element, ResultsFiltersPreferences.ID, bindings);\n\n    this.options = ComponentOptions.initComponentOptions(element, ResultsFiltersPreferences, options);\n\n    this.preferencePanel = $$(this.element).closest(Component.computeCssClassNameForType('PreferencesPanel'));\n    if (!this.preferencePanel) {\n      this.logger.warn(`Cannot instantiate ResultsFilterPreferences, as there is no \"CoveoPreferencesPanel\" in your page !`);\n      return;\n    }\n    this.preferencePanelLocalStorage = new LocalStorageUtils<{ [caption: string]: IResultFilterPreference }>(ResultsFiltersPreferences.ID);\n    this.mergeLocalPreferencesWithStaticPreferences();\n\n    this.bindPreferencePanelEvent();\n    this.bindBreadcrumbEvent();\n    this.bindQueryEvent();\n\n    // We need to wait after all components are initialized before building the dom, because this component interacts with Tab\n    // And we don't know if Tab(s) are initialized before or after this component.\n    this.bind.oneRootElement(InitializationEvents.afterComponentsInitialization, () => this.createDom());\n\n    this.bind.oneQueryState(MODEL_EVENTS.CHANGE_ONE, QUERY_STATE_ATTRIBUTES.T, () => this.fromPreferencesToCheckboxInput());\n  }\n\n  public createDom() {\n    this.container = <HTMLFieldSetElement>new FormGroup([], l('ResultsFilteringExpression')).build();\n    this.element.appendChild(this.container);\n    this.buildCheckboxesInput();\n    if (this.options.showAdvancedFilters) {\n      this.buildAdvancedFilters();\n    }\n  }\n\n  public save() {\n    this.fromCheckboxInputToPreferences();\n    const toSave = _.omit(this.preferences, 'tab');\n    this.logger.info('Saving preferences', toSave);\n    this.preferencePanelLocalStorage.save(toSave);\n  }\n\n  public exitWithoutSave() {\n    this.fromPreferencesToCheckboxInput();\n    this.hideAdvancedFilterBuilder();\n  }\n\n  private bindPreferencePanelEvent() {\n    this.bind.on(this.preferencePanel, PreferencesPanelEvents.savePreferences, () => this.save());\n    this.bind.on(this.preferencePanel, PreferencesPanelEvents.exitPreferencesWithoutSave, () => this.exitWithoutSave());\n  }\n\n  private bindBreadcrumbEvent() {\n    if (this.options.includeInBreadcrumb) {\n      this.bind.onRootElement(BreadcrumbEvents.populateBreadcrumb, (args: IPopulateBreadcrumbEventArgs) =>\n        this.handlePopulateBreadcrumb(args)\n      );\n      this.bind.onRootElement(BreadcrumbEvents.clearBreadcrumb, () => this.handleClearBreadcrumb());\n    }\n  }\n\n  private bindQueryEvent() {\n    this.bind.onRootElement(QueryEvents.buildingQuery, (args: IBuildingQueryEventArgs) => this.handleBuildingQuery(args));\n  }\n\n  private handleBuildingQuery(args: IBuildingQueryEventArgs) {\n    _.each(this.getActiveFilters(), filter => {\n      if (Utils.isNonEmptyString(filter.expression)) {\n        args.queryBuilder.advancedExpression.add(filter.expression);\n      }\n    });\n  }\n\n  private handlePopulateBreadcrumb(args: IPopulateBreadcrumbEventArgs) {\n    const actives = this.getActiveFilters();\n    if (Utils.isNonEmptyArray(actives)) {\n      const container = $$('div', { className: 'coveo-results-filter-preferences-breadcrumb' });\n      const title = $$(getHeadingTag(args.headingLevel, 'span'), { className: 'coveo-title' });\n      title.text(l('FiltersInYourPreferences') + ':');\n      container.el.appendChild(title.el);\n\n      const valuesContainer = $$('span', { className: 'coveo-values' });\n      container.el.appendChild(valuesContainer.el);\n\n      for (var i = 0; i < actives.length; i++) {\n        valuesContainer.el.appendChild(this.buildBreadcrumb(actives[i]));\n      }\n      args.breadcrumbs.push({ element: container.el });\n    }\n  }\n\n  private handleClearBreadcrumb() {\n    this.isFullBreadcrumbClear = true;\n    _.each(this.getActiveFilters(), filter => {\n      filter.selected = false;\n    });\n    this.fromPreferencesToCheckboxInput();\n    this.isFullBreadcrumbClear = false;\n  }\n\n  private buildAdvancedFilters() {\n    this.advancedFilters = $$('div', { className: 'coveo-advanced-filters' }, l('Create')).el;\n    new AccessibleButton()\n      .withElement(this.advancedFilters)\n      .withoutLabelOrTitle()\n      .withSelectAction(() => this.openAdvancedFilterSectionOrSaveFilters())\n      .build();\n\n    this.buildAdvancedFilterInput();\n    this.buildAdvancedFilterFormValidate();\n    this.advancedFiltersBuilder = $$('div', { className: 'coveo-advanced-filters-builder' }).el;\n    this.advancedFiltersBuilder.appendChild(this.advancedFilterFormValidate);\n    const onlineHelp = $$(\n      'a',\n      {\n        href: 'https://docs.coveo.com/en/2053/index-content/inspect-items-with-the-content-browser#result-filtering-expressions',\n        className: 'coveo-online-help'\n      },\n      '?'\n    );\n\n    const title = $$(this.container).find('.coveo-form-group-label');\n\n    onlineHelp.insertAfter(title);\n    $$(this.advancedFilters).insertAfter(title);\n    this.container.appendChild(this.advancedFiltersBuilder);\n  }\n\n  private buildAdvancedFilterInput() {\n    this.advancedFiltersTextInputCaption = new TextInput(() => {}, l('Caption'));\n\n    this.advancedFiltersTextInputCaption.getInput().setAttribute('required', '');\n\n    this.advancedFiltersTextInputExpression = new TextInput(() => {}, l('Expression'));\n\n    this.advancedFiltersTextInputExpression.getInput().setAttribute('required', '');\n\n    this.advancedFiltersTabSelect = new MultiSelect(() => {}, this.getAllTabs(), l('Tab'));\n  }\n\n  private buildAdvancedFilterFormValidate() {\n    this.advancedFilterFormValidate = <HTMLFormElement>$$('form').el;\n\n    const formSubmit = $$('input', {\n      type: 'submit'\n    });\n\n    const saveFormButton = $$(\n      'span',\n      {\n        className: 'coveo-save'\n      },\n      SVGIcons.icons.save\n    );\n    SVGDom.addClassToSVGInContainer(saveFormButton.el, 'coveo-save-svg');\n    new AccessibleButton()\n      .withElement(saveFormButton.el)\n      .withLabel(l('Save'))\n      .withSelectAction(() => formSubmit.el.click())\n      .build();\n\n    const closeFormButton = $$(\n      'span',\n      {\n        className: 'coveo-close'\n      },\n      SVGIcons.icons.close\n    );\n    SVGDom.addClassToSVGInContainer(closeFormButton.el, 'coveo-close-svg');\n    new AccessibleButton()\n      .withElement(closeFormButton.el)\n      .withLabel(l('Close'))\n      .withSelectAction(() => this.hideAdvancedFilterBuilder())\n      .build();\n\n    const saveAndCloseContainer = $$('div', {\n      className: 'coveo-choice-container coveo-close-and-save'\n    });\n\n    saveAndCloseContainer.el.appendChild(saveFormButton.el);\n    saveAndCloseContainer.el.appendChild(closeFormButton.el);\n\n    const inputCaption = this.advancedFiltersTextInputCaption.build();\n    $$(inputCaption).addClass('coveo-caption');\n\n    const filtersTabSelect = this.advancedFiltersTabSelect.build();\n    $$(filtersTabSelect).addClass('coveo-tab');\n\n    const filtersExpression = this.advancedFiltersTextInputExpression.build();\n    $$(filtersExpression).addClass('coveo-expression');\n\n    _.each([inputCaption, filtersExpression, filtersTabSelect, saveAndCloseContainer.el, formSubmit.el], (el: HTMLElement) => {\n      this.advancedFilterFormValidate.appendChild(el);\n    });\n\n    $$(this.advancedFilterFormValidate).on('submit', (e: Event) => this.validateAndSaveAdvancedFilter(e));\n  }\n\n  private getAllTabs() {\n    const tabRef = Component.getComponentRef('Tab');\n    if (tabRef) {\n      const tabsElement = $$(this.root).findAll('.' + Component.computeCssClassName(tabRef));\n      return _.map(tabsElement, (tabElement: HTMLElement) => {\n        let tab = <Tab>Component.get(tabElement);\n        return tab.options.id;\n      });\n    } else {\n      return [];\n    }\n  }\n\n  private getPreferencesBoxInputToBuild() {\n    return _.map(this.preferences, (filter: IResultFilterPreference) => {\n      return {\n        label: filter.caption,\n        tab: filter.tab,\n        expression: filter.expression\n      };\n    });\n  }\n\n  private buildCheckboxesInput() {\n    if (this.preferenceContainer != undefined) {\n      this.preferenceContainer.remove();\n    }\n    const toBuild = this.getPreferencesBoxInputToBuild();\n    if (Utils.isNonEmptyArray(toBuild)) {\n      this.preferenceContainer = $$('div', {\n        className: 'coveo-choices-container'\n      }).el;\n\n      _.each(toBuild, filterToBuild => {\n        const checkbox = new Checkbox((checkbox: Checkbox) => {\n          this.save();\n          const filter = this.preferences[checkbox.getValue()];\n\n          if (!this.queryController.firstQuery && !this.isFullBreadcrumbClear) {\n            this.fromFilterToAnalyticsEvent(filter, filter.selected ? 'selected' : 'unselected');\n            this.queryController.executeQuery({\n              closeModalBox: false\n            });\n          }\n        }, filterToBuild.label);\n        $$(checkbox.build()).addClass('coveo-choice-container');\n        this.preferencePanelCheckboxInput[filterToBuild.label] = checkbox;\n        this.preferenceContainer.appendChild(checkbox.getElement());\n      });\n\n      _.each($$(this.preferenceContainer).findAll('.coveo-choice-container'), (choiceContainer: HTMLElement) => {\n        choiceContainer.appendChild($$('div', { className: 'coveo-section coveo-section-edit-delete' }).el);\n      });\n\n      $$(this.container).append(this.preferenceContainer);\n      this.buildEditAdvancedFilter();\n      this.buildDeleteAdvancedFilter();\n      this.fromPreferencesToCheckboxInput();\n    }\n  }\n\n  private buildDeleteAdvancedFilter() {\n    _.each(this.preferences, filter => {\n      if (filter.custom) {\n        const deleteElement = $$(\n          'span',\n          {\n            className: 'coveo-delete'\n          },\n          SVGIcons.icons.delete\n        ).el;\n        new AccessibleButton()\n          .withElement(deleteElement)\n          .withLabel(l('Delete'))\n          .withSelectAction(() => this.confirmDelete(filter, filterElement))\n          .build();\n        SVGDom.addClassToSVGInContainer(deleteElement, 'coveo-delete-svg');\n        const filterElement = this.getFilterElementByCaption(filter.caption);\n        const insertInto = $$(filterElement).find('.coveo-section-edit-delete');\n        insertInto.appendChild(deleteElement);\n      }\n    });\n  }\n\n  private buildEditAdvancedFilter() {\n    _.each(this.preferences, filter => {\n      if (filter.custom) {\n        const editElement = $$(\n          'span',\n          {\n            className: 'coveo-edit'\n          },\n          SVGIcons.icons.edit\n        );\n        new AccessibleButton()\n          .withElement(editElement)\n          .withLabel(l('Edit'))\n          .withSelectAction(() => this.editElement(filter, filterElement))\n          .build();\n        SVGDom.addClassToSVGInContainer(editElement.el, 'coveo-edit-svg');\n        const filterElement = this.getFilterElementByCaption(filter.caption);\n        const insertInto = $$(filterElement).find('.coveo-section-edit-delete');\n        insertInto.appendChild(editElement.el);\n      }\n    });\n  }\n\n  private buildBreadcrumb(filter: IResultFilterPreference): HTMLElement {\n    const elem = $$('span', { className: 'coveo-value' });\n\n    const caption = $$('span', { className: 'coveo-caption' });\n    caption.text(filter.caption);\n    elem.el.appendChild(caption.el);\n\n    const clear = $$('span', { className: 'coveo-clear' }, SVGIcons.icons.mainClear);\n    elem.el.appendChild(clear.el);\n\n    const onSelectAction = () => {\n      filter.selected = false;\n      this.fromFilterToAnalyticsEvent(filter, 'cleared from breadcrumb');\n      this.fromPreferencesToCheckboxInput();\n    };\n\n    new AccessibleButton().withElement(elem).withLabel(l('RemoveFilterOn', filter.caption)).withSelectAction(onSelectAction).build();\n\n    return elem.el;\n  }\n\n  private confirmDelete(filter: IResultFilterPreference, filterElement: HTMLElement) {\n    if (confirm(l('AreYouSureDeleteFilter', filter.caption, filter.expression))) {\n      const isSelected = filter.selected;\n      this.deleteFilterPreference(filter, filterElement);\n      if (isSelected) {\n        this.fromFilterToAnalyticsEvent(filter, 'deleted');\n        this.queryController.executeQuery({\n          closeModalBox: false\n        });\n      }\n    }\n  }\n\n  private editElement(filter: IResultFilterPreference, filterElement: HTMLElement) {\n    const oldCaption = this.preferences[filter.caption].caption;\n    const oldTab = this.preferences[filter.caption].tab;\n    const oldExpression = this.preferences[filter.caption].expression;\n    this.deleteFilterPreference(filter, filterElement);\n    this.openAdvancedFilterSectionOrSaveFilters();\n    this.populateEditSection({ tab: oldTab, caption: oldCaption, expression: oldExpression });\n  }\n\n  private populateEditSection(toPopulate = { tab: [''], caption: '', expression: '' }) {\n    this.advancedFiltersTextInputCaption.setValue(toPopulate.caption);\n    this.advancedFiltersTextInputExpression.setValue(toPopulate.expression);\n    this.advancedFiltersTabSelect.setValue(toPopulate.tab);\n  }\n\n  private deleteFilterPreference(filter: IResultFilterPreference, filterElement: HTMLElement) {\n    this.preferencePanelLocalStorage.remove(filter.caption);\n    delete this.preferences[filter.caption];\n    $$($$(filterElement).closest('.coveo-choice-container')).detach();\n  }\n\n  private openAdvancedFilterSectionOrSaveFilters() {\n    if ($$(this.advancedFiltersBuilder).hasClass('coveo-active')) {\n      $$($$(this.advancedFilterFormValidate).find('input[type=submit]')).trigger('click');\n      this.hideAdvancedFilterBuilder();\n    } else {\n      this.populateEditSection();\n      this.showAdvancedFilterBuilder();\n    }\n  }\n\n  private validateAndSaveAdvancedFilter(e: Event) {\n    e.preventDefault();\n    this.hideAdvancedFilterBuilder();\n    const caption = this.advancedFiltersTextInputCaption.getValue();\n    const expression = this.advancedFiltersTextInputExpression.getValue();\n    const tabs = this.advancedFiltersTabSelect.getValue();\n    this.preferences[caption] = {\n      caption: caption,\n      custom: true,\n      expression: expression,\n      tab: tabs,\n      selected: true\n    };\n    this.buildCheckboxesInput();\n    this.save();\n    this.queryStateModel.set(QueryStateModel.attributesEnum.t, this.getActiveTab());\n    this.advancedFiltersTextInputCaption.reset();\n    this.advancedFiltersTextInputExpression.reset();\n    this.advancedFiltersTabSelect.reset();\n    this.container.appendChild(this.advancedFiltersBuilder);\n    this.fromFilterToAnalyticsEvent(this.preferences[caption], 'saved');\n    this.queryController.executeQuery({\n      closeModalBox: false\n    });\n  }\n\n  private fromPreferencesToCheckboxInput() {\n    _.each(this.getActiveFilters(), (filter: IResultFilterPreference) => {\n      this.preferencePanelCheckboxInput[filter.caption].select();\n    });\n    _.each(this.getInactiveFilters(), (filter: IResultFilterPreference) => {\n      this.preferencePanelCheckboxInput[filter.caption].reset();\n    });\n    _.each(this.getDormantFilters(), (filter: IResultFilterPreference) => {\n      this.preferencePanelCheckboxInput[filter.caption].select();\n    });\n  }\n\n  private fromCheckboxInputToPreferences() {\n    if (this.preferencePanelCheckboxInput) {\n      const selecteds = _.map(\n        _.filter(this.preferencePanelCheckboxInput, (checkbox: Checkbox) => checkbox.isSelected()),\n        (selected: Checkbox) => selected.getValue()\n      );\n      _.each(this.preferences, (filter: IResultFilterPreference) => {\n        if (_.contains(selecteds, filter.caption)) {\n          filter.selected = true;\n        } else {\n          filter.selected = false;\n        }\n      });\n    }\n  }\n\n  private getDormantFilters() {\n    const activeTab = this.getActiveTab();\n    return _.filter(this.preferences, (filter: IResultFilterPreference) => {\n      return filter.selected && !this.filterIsInActiveTab(filter, activeTab);\n    });\n  }\n\n  private getActiveFilters() {\n    const activeTab = this.getActiveTab();\n    return _.filter(this.preferences, (filter: IResultFilterPreference) => {\n      return filter.selected && this.filterIsInActiveTab(filter, activeTab);\n    });\n  }\n\n  private getInactiveFilters() {\n    const activeTab = this.getActiveTab();\n    return _.filter(this.preferences, (filter: IResultFilterPreference) => {\n      return !filter.selected || !this.filterIsInActiveTab(filter, activeTab);\n    });\n  }\n\n  private getActiveTab() {\n    return this.queryStateModel.get(QueryStateModel.attributesEnum.t);\n  }\n\n  private filterIsInActiveTab(filter: IResultFilterPreference, tab: string) {\n    filter.tab = _.compact(filter.tab);\n    return _.contains(filter.tab, tab) || Utils.isEmptyArray(filter.tab);\n  }\n\n  private getFilterElementByCaption(caption: string): HTMLElement {\n    return $$(this.preferenceContainer).find(\"input[value='\" + caption.replace(/'/g, \"\\\\'\") + \"']\").parentElement;\n  }\n\n  private fromResultsFilterOptionToResultsPreferenceInterface() {\n    const ret: { [key: string]: IResultFilterPreference } = {};\n    _.each(<any>this.options.filters, (filter: { expression: string; tab?: string[]; selected?: boolean }, caption: string) => {\n      ret[caption] = {\n        expression: filter.expression,\n        tab: filter.tab,\n        selected: filter.selected ? filter.selected : false,\n        custom: false,\n        caption: caption\n      };\n    });\n    return ret;\n  }\n\n  private mergeLocalPreferencesWithStaticPreferences() {\n    const staticPreferences = this.fromResultsFilterOptionToResultsPreferenceInterface();\n    const localPreferences = this.preferencePanelLocalStorage.load();\n    const localPreferencesWithoutRemoved = _.filter<IResultFilterPreference>(localPreferences, preference => {\n      const isCustom = preference.custom;\n      const existsInStatic = _.find<IResultFilterPreference>(staticPreferences, staticPreference => {\n        return staticPreference.caption == preference.caption;\n      });\n      return isCustom || existsInStatic != undefined;\n    });\n\n    const localToMerge = {};\n    _.each(localPreferencesWithoutRemoved, (filter: IResultFilterPreference) => {\n      localToMerge[filter.caption] = {\n        expression: filter.expression,\n        tab: filter.tab,\n        selected: filter.selected,\n        custom: filter.custom,\n        caption: filter.caption\n      };\n    });\n    this.preferences = <{ [caption: string]: IResultFilterPreference }>Utils.extendDeep(staticPreferences, localToMerge);\n  }\n\n  private fromFilterToAnalyticsEvent(filter: IResultFilterPreference, type: string) {\n    this.usageAnalytics.logSearchEvent<IAnalyticsCustomFiltersChangeMeta>(analyticsActionCauseList.customfiltersChange, {\n      customFilterName: filter.caption,\n      customFilterExpression: filter.expression,\n      customFilterType: type\n    });\n  }\n\n  private enlargeModalBox() {\n    const modalBoxContainer = $$(document.body).find('.coveo-modal-container');\n    if (modalBoxContainer) {\n      $$(modalBoxContainer).addClass('coveo-mod-big');\n    }\n  }\n\n  private shrinkModalBox() {\n    const modalBoxContainer = $$(document.body).find('.coveo-modal-container');\n    if (modalBoxContainer) {\n      $$(modalBoxContainer).removeClass('coveo-mod-big');\n    }\n  }\n\n  private showAdvancedFilterBuilder() {\n    if (this.advancedFiltersBuilder) {\n      $$(this.advancedFiltersBuilder).addClass('coveo-active');\n      this.enlargeModalBox();\n    }\n  }\n\n  private hideAdvancedFilterBuilder() {\n    if (this.advancedFiltersBuilder) {\n      $$(this.advancedFiltersBuilder).removeClass('coveo-active');\n      this.shrinkModalBox();\n    }\n  }\n}\n\nInitialization.registerAutoCreateComponent(ResultsFiltersPreferences);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResultsFiltersPreferences/ResultsFiltersPreferences.ts","import 'styling/_ResultsPerPage';\nimport * as _ from 'underscore';\nimport { InitializationEvents } from '../../events/InitializationEvents';\nimport { INoResultsEventArgs, IQuerySuccessEventArgs, QueryEvents } from '../../events/QueryEvents';\nimport { ResultListEvents } from '../../events/ResultListEvents';\nimport { exportGlobally } from '../../GlobalExports';\nimport { Assert } from '../../misc/Assert';\nimport { IAttributeChangedEventArg, MODEL_EVENTS } from '../../models/Model';\nimport { QueryStateModel, QUERY_STATE_ATTRIBUTES } from '../../models/QueryStateModel';\nimport { l } from '../../strings/Strings';\nimport { AccessibleButton } from '../../utils/AccessibleButton';\nimport { DeviceUtils } from '../../utils/DeviceUtils';\nimport { $$ } from '../../utils/Dom';\nimport { ResultListUtils } from '../../utils/ResultListUtils';\nimport { analyticsActionCauseList, IAnalyticsActionCause, IAnalyticsResultsPerPageMeta } from '../Analytics/AnalyticsActionListMeta';\nimport { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { Initialization } from '../Base/Initialization';\nimport { uniqueId } from 'underscore';\n\nexport interface IResultsPerPageOptions {\n  choicesDisplayed?: number[];\n  initialChoice?: number;\n}\n\n/**\n * The ResultsPerPage component attaches itself to a `div` and allows the end user to choose how many results to\n * display per page.\n *\n * **Note:** Adding a ResultPerPage component to your page overrides the value of\n * {@link SearchInterface.options.resultsPerPage}.\n */\nexport class ResultsPerPage extends Component {\n  static ID = 'ResultsPerPage';\n\n  static doExport = () => {\n    exportGlobally({\n      ResultsPerPage: ResultsPerPage\n    });\n  };\n\n  /**\n   * The options for the ResultsPerPage\n   * @componentOptions\n   */\n  static options: IResultsPerPageOptions = {\n    /**\n     * Specifies the possible values of number of results to display per page that the end user can select from.\n     *\n     * See also {@link ResultsPerPage.options.initialChoice}.\n     *\n     * Default value is `[10, 25, 50, 100]`.\n     */\n    choicesDisplayed: ComponentOptions.buildCustomListOption<number[]>(\n      function (list: string[]) {\n        const values = _.map(list, function (value) {\n          return parseInt(value, 10);\n        });\n        return values.length == 0 ? null : values;\n      },\n      {\n        defaultFunction: () => {\n          if (DeviceUtils.isMobileDevice()) {\n            return [10, 25, 50];\n          } else {\n            return [10, 25, 50, 100];\n          }\n        }\n      }\n    ),\n    /**\n     * Specifies the value to select by default for the number of results to display per page.\n     *\n     * Default value is the first value of {@link ResultsPerPage.options.choicesDisplayed}.\n     */\n    initialChoice: ComponentOptions.buildNumberOption()\n  };\n\n  private currentResultsPerPage: number;\n  private span: HTMLElement;\n  private list: HTMLElement;\n\n  /**\n   * Creates a new ResultsPerPage. The component renders itself on every query success.\n   * @param element The HTMLElement on which to instantiate the component (normally a `div`).\n   * @param options The options for the ResultsPerPage component.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time).\n   */\n  constructor(public element: HTMLElement, public options?: IResultsPerPageOptions, bindings?: IComponentBindings) {\n    super(element, ResultsPerPage.ID, bindings);\n    this.options = ComponentOptions.initComponentOptions(element, ResultsPerPage, options);\n\n    this.bind.onRootElement(InitializationEvents.afterInitialization, () => this.resolveInitialState());\n    this.bind.onRootElement(QueryEvents.querySuccess, (args: IQuerySuccessEventArgs) => this.handleQuerySuccess(args));\n    this.bind.onRootElement(QueryEvents.queryError, () => this.handleQueryError());\n    this.bind.onRootElement(QueryEvents.noResults, (args: INoResultsEventArgs) => this.handleNoResults());\n    this.bind.onQueryState(MODEL_EVENTS.CHANGE_ONE, QUERY_STATE_ATTRIBUTES.NUMBER_OF_RESULTS, (args: IAttributeChangedEventArg) =>\n      this.handleQueryStateModelChanged(args)\n    );\n    this.addAlwaysActiveListeners();\n\n    this.initComponent();\n  }\n\n  /**\n   * Sets the current number of results per page, then executes a query.\n   *\n   * Also logs an event in the usage analytics (`pagerResize` by default) with the new current number of results per\n   * page as meta data.\n   * @param resultsPerPage The new number of results per page to select.\n   * @param analyticCause The event to log in the usage analytics.\n   */\n  public setResultsPerPage(resultsPerPage: number, analyticCause: IAnalyticsActionCause = analyticsActionCauseList.pagerResize) {\n    Assert.exists(resultsPerPage);\n    Assert.check(this.isValidChoice(resultsPerPage), 'The specified number of results is not available in the options.');\n\n    this.updateResultsPerPage(resultsPerPage);\n    this.updateQueryStateModelResultsPerPage();\n    this.logAnalyticsEvent(analyticCause);\n    this.executeQuery();\n  }\n\n  /**\n   * Returns the current number of results per page.\n   */\n  public get resultsPerPage() {\n    return this.currentResultsPerPage;\n  }\n\n  private updateResultsPerPage(resultsPerPage: number) {\n    this.queryController.options.resultsPerPage = resultsPerPage;\n    this.searchInterface.resultsPerPage = resultsPerPage;\n    this.currentResultsPerPage = resultsPerPage;\n  }\n\n  private updateQueryStateModelResultsPerPage() {\n    this.queryStateModel.set(QueryStateModel.attributesEnum.numberOfResults, this.currentResultsPerPage);\n  }\n\n  private logAnalyticsEvent(analyticCause: IAnalyticsActionCause) {\n    this.usageAnalytics.logCustomEvent<IAnalyticsResultsPerPageMeta>(\n      analyticCause,\n      { currentResultsPerPage: this.currentResultsPerPage },\n      this.element\n    );\n  }\n\n  private executeQuery() {\n    this.queryController.executeQuery({\n      ignoreWarningSearchEvent: true,\n      keepLastSearchUid: true,\n      origin: this\n    });\n  }\n\n  private handleQueryStateModelChanged(args: IAttributeChangedEventArg) {\n    const valueToSet = args.value;\n\n    if (!this.isValidChoice(valueToSet)) {\n      this.logInvalidConfiguredChoiceWarning(valueToSet);\n      this.resolveInitialState();\n    } else {\n      this.updateResultsPerPage(valueToSet);\n    }\n  }\n\n  private addAlwaysActiveListeners() {\n    this.searchInterface.element.addEventListener(ResultListEvents.newResultsDisplayed, () =>\n      ResultListUtils.hideIfInfiniteScrollEnabled(this)\n    );\n  }\n\n  private resolveInitialState() {\n    this.updateResultsPerPage(this.getInitialChoice());\n    this.updateQueryStateModelResultsPerPage();\n  }\n\n  private getInitialChoice(): number {\n    const firstDisplayedChoice = this.options.choicesDisplayed[0];\n    const configuredChoice = this.options.initialChoice;\n    const queryStateModelChoice = this.queryStateModel.get(QueryStateModel.attributesEnum.numberOfResults);\n    const queryStateModelChoiceIsNotDefault = queryStateModelChoice !== QueryStateModel.defaultAttributes.numberOfResults;\n\n    if (queryStateModelChoiceIsNotDefault && this.isValidChoice(queryStateModelChoice)) {\n      return queryStateModelChoice;\n    }\n\n    if (configuredChoice !== undefined) {\n      if (this.isValidChoice(configuredChoice)) {\n        return configuredChoice;\n      }\n      this.logInvalidConfiguredChoiceWarning(configuredChoice);\n    }\n\n    return firstDisplayedChoice;\n  }\n\n  private isValidChoice(choice: number) {\n    return this.options.choicesDisplayed.indexOf(choice) !== -1;\n  }\n\n  private logInvalidConfiguredChoiceWarning(configuredChoice: number) {\n    const validChoices = this.options.choicesDisplayed;\n\n    this.logger.warn(\n      `The choice ${configuredChoice} is not within the choices displayed. Consider setting a value that is valid: ${validChoices}. The first choice will be selected instead.`\n    );\n  }\n\n  private initComponent() {\n    this.span = $$(\n      'span',\n      {\n        id: uniqueId('coveo-results-per-page-text-'),\n        className: 'coveo-results-per-page-text'\n      },\n      l('ResultsPerPage')\n    ).el;\n    this.element.appendChild(this.span);\n    this.list = $$('ul', {\n      className: 'coveo-results-per-page-list',\n      'aria-labelledby': this.span.id\n    }).el;\n    this.element.appendChild(this.list);\n  }\n\n  private render() {\n    $$(this.span).removeClass('coveo-results-per-page-no-results');\n    const numResultsList: number[] = this.options.choicesDisplayed;\n    for (var i = 0; i < numResultsList.length; i++) {\n      const listItem = $$('li', {\n        className: 'coveo-results-per-page-list-item'\n      }).el;\n      const resultsPerPage = numResultsList[i];\n      const isActive = resultsPerPage === this.currentResultsPerPage;\n      if (isActive) {\n        $$(listItem).addClass('coveo-active');\n      }\n\n      const clickAction = e => {\n        e.stopPropagation();\n        this.handleClickPage(resultsPerPage);\n      };\n\n      const button = $$(\n        'span',\n        {\n          className: 'coveo-results-per-page-list-item-text',\n          tabindex: 0,\n          ariaPressed: isActive.toString()\n        },\n        numResultsList[i].toString()\n      ).el;\n      listItem.appendChild(button);\n\n      listItem.addEventListener('click', e => clickAction(e));\n\n      new AccessibleButton()\n        .withElement(button)\n        .withLabel(l('DisplayResultsPerPage', numResultsList[i].toString()))\n        .withClickAction(clickAction)\n        .withEnterKeyboardAction(clickAction)\n        .build();\n\n      this.list.appendChild(listItem);\n    }\n  }\n\n  private handleQueryError() {\n    this.reset();\n  }\n\n  private handleNoResults() {\n    this.reset();\n  }\n\n  private handleQuerySuccess(data: IQuerySuccessEventArgs) {\n    if (this.searchInterface.isResultsPerPageModifiedByPipeline) {\n      this.logger.info('Results per page was modified by backend code (query pipeline). ResultsPerPage component will be hidden', this);\n      this.reset();\n      const resultsPerPage = this.getInitialChoice();\n      this.updateResultsPerPage(resultsPerPage);\n      return;\n    }\n\n    if (data.results.results.length != 0) {\n      this.reset();\n      this.render();\n    }\n  }\n\n  private handleClickPage(resultsPerPage: number) {\n    Assert.exists(resultsPerPage);\n    this.setResultsPerPage(resultsPerPage);\n  }\n\n  private reset() {\n    $$(this.span).addClass('coveo-results-per-page-no-results');\n    $$(this.list).empty();\n  }\n}\n\nInitialization.registerAutoCreateComponent(ResultsPerPage);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResultsPerPage/ResultsPerPage.ts","import 'styling/_ResultsPreferences';\nimport * as _ from 'underscore';\nimport { PreferencesPanelEvents } from '../../events/PreferencesPanelEvents';\nimport { exportGlobally } from '../../GlobalExports';\nimport { Assert } from '../../misc/Assert';\nimport { Defer } from '../../misc/Defer';\nimport { ComponentOptionsModel } from '../../models/ComponentOptionsModel';\nimport { l } from '../../strings/Strings';\nimport { $$ } from '../../utils/Dom';\nimport { StorageUtils } from '../../utils/StorageUtils';\nimport { analyticsActionCauseList, IAnalyticsPreferencesChangeMeta } from '../Analytics/AnalyticsActionListMeta';\nimport { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { Initialization } from '../Base/Initialization';\nimport { Checkbox } from '../FormWidgets/Checkbox';\nimport { FormGroup } from '../FormWidgets/FormGroup';\nimport { IFormWidgetSelectable } from '../FormWidgets/FormWidgets';\nimport { RadioButton } from '../FormWidgets/RadioButton';\n\nexport interface IResultsPreferencesOptions {\n  enableOpenInOutlook?: boolean;\n  enableOpenInNewWindow?: boolean;\n  enableQuerySyntax?: boolean;\n}\n\nexport interface IPossiblePreferences {\n  openInOutlook?: boolean;\n  alwaysOpenInNewWindow?: boolean;\n  enableQuerySyntax?: boolean;\n}\n\n/**\n * The ResultsPreferences component allows the end user to select preferences related to the search results. These\n * preferences are then saved in the local storage of the end user.\n *\n * This component is normally accessible through the {@link Settings} menu. Its usual location in the DOM is inside the\n * {@link PreferencesPanel} component.\n *\n * See also the {@link ResultsFiltersPreferences} component.\n */\nexport class ResultsPreferences extends Component {\n  static ID = 'ResultsPreferences';\n\n  static doExport = () => {\n    exportGlobally({\n      ResultsPreferences: ResultsPreferences\n    });\n  };\n\n  /**\n   * The options for the component\n   * @componentOptions\n   */\n  static options: IResultsPreferencesOptions = {\n    /**\n     * Specifies whether to make the option to open results in Microsoft Outlook available.\n     *\n     * Default value is `false`\n     */\n    enableOpenInOutlook: ComponentOptions.buildBooleanOption({ defaultValue: false }),\n    /**\n     * Specifies whether to make the option to open results in a new window available.\n     *\n     * Default value is `true`\n     */\n    enableOpenInNewWindow: ComponentOptions.buildBooleanOption({ defaultValue: true }),\n    /**\n     * Specifies whether to make the option to allow end users to turn query syntax on or off available.\n     *\n     * If query syntax is enabled, the Coveo Platform tries to interpret special query syntax (e.g.,\n     * `@objecttype=message`) when the end user types a query in the [`Querybox`]{@link Querybox} (see\n     * [Coveo Query Syntax Reference](https://docs.coveo.com/en/1552/searching-with-coveo/coveo-cloud-query-syntax)). Enabling query\n     * syntax also causes the `Querybox` to highlight any query syntax.\n     *\n     * Selecting **On** for the **Enable query syntax** setting enables query syntax, whereas selecting **Off** disables\n     * it. Selecting **Automatic** uses the `Querybox` [`enableQuerySyntax`]{@link Querybox.options.enableQuerySyntax}\n     * option value (which is `false` by default).\n     *\n     * Default value is `false`\n     */\n    enableQuerySyntax: ComponentOptions.buildBooleanOption({ defaultValue: false })\n  };\n\n  public preferences: IPossiblePreferences;\n  private preferencePanelLocalStorage: StorageUtils<IPossiblePreferences>;\n  private preferencesPanel: HTMLElement;\n  private preferencePanelCheckboxInputs: { [label: string]: Checkbox } = {};\n  private preferencePanelRadioInputs: { [label: string]: RadioButton } = {};\n\n  /**\n   * Creates a new ResultsPreference component.\n   * @param element The HTMLElement on which to instantiate the component.\n   * @param options The options for the ResultsPreferences component.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time).\n   */\n  constructor(public element: HTMLElement, public options: IResultsPreferencesOptions, public bindings: IComponentBindings) {\n    super(element, ResultsPreferences.ID, bindings);\n\n    this.options = ComponentOptions.initComponentOptions(element, ResultsPreferences, options);\n\n    this.preferencesPanel = $$(this.element).closest(Component.computeCssClassNameForType('PreferencesPanel'));\n    this.preferencePanelLocalStorage = new StorageUtils(ResultsPreferences.ID);\n    Assert.exists(this.componentOptionsModel);\n    Assert.exists(this.preferencesPanel);\n\n    this.preferences = this.preferencePanelLocalStorage.load() || {};\n    this.adjustPreferencesToComponentConfig();\n\n    ComponentOptions.initComponentOptions(this.element, ResultsPreferences, this.options);\n\n    this.updateComponentOptionsModel();\n\n    this.bind.on(this.preferencesPanel, PreferencesPanelEvents.savePreferences, () => this.save());\n    this.bind.on(this.preferencesPanel, PreferencesPanelEvents.exitPreferencesWithoutSave, () => this.exitWithoutSave());\n    this.buildCheckboxesInput();\n    this.buildRadiosInput();\n  }\n\n  /**\n   * Saves the current state of the ResultsPreferences component in the local storage.\n   */\n  public save() {\n    this.fromInputToPreferences();\n    this.logger.info('Saving preferences', this.preferences);\n    this.preferencePanelLocalStorage.save(this.preferences);\n    this.updateComponentOptionsModel();\n  }\n\n  public exitWithoutSave() {\n    this.fromPreferencesToCheckboxInput();\n  }\n\n  private updateComponentOptionsModel() {\n    const resultLinkOption = _.pick(this.preferences, 'openInOutlook', 'alwaysOpenInNewWindow');\n    const searchBoxOption = _.pick(this.preferences, 'enableQuerySyntax');\n    this.componentOptionsModel.set(ComponentOptionsModel.attributesEnum.resultLink, resultLinkOption);\n    this.componentOptionsModel.set(ComponentOptionsModel.attributesEnum.searchBox, searchBoxOption);\n  }\n\n  private buildRadiosInput() {\n    if (this.options.enableQuerySyntax) {\n      const createRadioButton = (label: string) => {\n        const radio = new RadioButton(\n          radioButtonInstance => {\n            this.fromPreferenceChangeEventToUsageAnalyticsLog(radioButtonInstance.isSelected() ? 'selected' : 'unselected', label);\n            this.save();\n\n            this.queryController.executeQuery({\n              closeModalBox: false\n            });\n          },\n          label,\n          'coveo-results-preferences-query-syntax'\n        );\n        return radio;\n      };\n\n      const translatedLabels = _.map(['On', 'Off', 'Automatic'], label => l(label));\n      const radios = _.map(translatedLabels, label => {\n        const radio = createRadioButton(label);\n        this.preferencePanelRadioInputs[label] = radio;\n        return radio;\n      });\n\n      const formGroup = new FormGroup(radios, l('EnableQuerySyntax'));\n      $$(this.element).append(formGroup.build());\n      this.fromPreferencesToRadioInput();\n    }\n  }\n\n  private buildCheckboxesInput() {\n    const createCheckbox = (label: string) => {\n      const checkbox = new Checkbox(checkboxInstance => {\n        this.fromPreferenceChangeEventToUsageAnalyticsLog(checkboxInstance.isSelected() ? 'selected' : 'unselected', label);\n        this.save();\n        this.queryController.executeQuery({\n          closeModalBox: false\n        });\n      }, label);\n      this.preferencePanelCheckboxInputs[label] = checkbox;\n      return checkbox;\n    };\n\n    const checkboxes: Checkbox[] = [];\n\n    if (this.options.enableOpenInOutlook) {\n      checkboxes.push(createCheckbox(l('OpenInOutlookWhenPossible')));\n    }\n    if (this.options.enableOpenInNewWindow) {\n      checkboxes.push(createCheckbox(l('AlwaysOpenInNewWindow')));\n    }\n\n    this.element.appendChild(new FormGroup(checkboxes, l('ResultLinks')).build());\n    this.fromPreferencesToCheckboxInput();\n  }\n\n  private fromInputToPreferences() {\n    this.preferences = this.preferences || {\n      openInOutlook: false,\n      alwaysOpenInNewWindow: false,\n      enableQuerySyntax: undefined\n    };\n\n    _.each(this.preferencePanelCheckboxInputs, (checkbox: Checkbox, label: string) => {\n      if (label == l('OpenInOutlookWhenPossible')) {\n        if (this.isSelected(l('OpenInOutlookWhenPossible'), label, checkbox)) {\n          this.preferences.openInOutlook = true;\n        } else if (this.preferences.openInOutlook != null) {\n          this.preferences.openInOutlook = false;\n        }\n      }\n      if (label == l('AlwaysOpenInNewWindow')) {\n        if (this.isSelected(l('AlwaysOpenInNewWindow'), label, checkbox)) {\n          this.preferences.alwaysOpenInNewWindow = true;\n        } else if (this.preferences.alwaysOpenInNewWindow != null) {\n          this.preferences.alwaysOpenInNewWindow = false;\n        }\n      }\n    });\n\n    _.each(this.preferencePanelRadioInputs, (radio: RadioButton, label: string) => {\n      if (this.isSelected(l('On'), label, radio)) {\n        this.preferences.enableQuerySyntax = true;\n      }\n      if (this.isSelected(l('Off'), label, radio)) {\n        this.preferences.enableQuerySyntax = false;\n      }\n      if (this.isSelected(l('Automatic'), label, radio)) {\n        delete this.preferences.enableQuerySyntax;\n      }\n    });\n  }\n\n  private fromPreferencesToCheckboxInput() {\n    if (this.preferences.openInOutlook) {\n      this.preferencePanelCheckboxInputs[l('OpenInOutlookWhenPossible')].select(false);\n    }\n    if (this.preferences.alwaysOpenInNewWindow) {\n      this.preferencePanelCheckboxInputs[l('AlwaysOpenInNewWindow')].select(false);\n    }\n  }\n\n  private fromPreferencesToRadioInput() {\n    if (this.preferences.enableQuerySyntax === true) {\n      this.preferencePanelRadioInputs[l('On')].select(false);\n    } else if (this.preferences.enableQuerySyntax === false) {\n      this.preferencePanelRadioInputs[l('Off')].select(false);\n    } else {\n      this.preferencePanelRadioInputs[l('Automatic')].select(false);\n    }\n  }\n\n  private fromPreferenceChangeEventToUsageAnalyticsLog(type: 'selected' | 'unselected', preference: string) {\n    this.usageAnalytics.logCustomEvent<IAnalyticsPreferencesChangeMeta>(\n      analyticsActionCauseList.preferencesChange,\n      { preferenceName: preference, preferenceType: type },\n      this.element\n    );\n    this.usageAnalytics.logSearchEvent<IAnalyticsPreferencesChangeMeta>(analyticsActionCauseList.preferencesChange, {\n      preferenceName: preference,\n      preferenceType: type\n    });\n  }\n\n  private adjustPreferencesToComponentConfig() {\n    // This method is used when there are illogical configuration between what's saved in local storage (the preferences)\n    // and how the component is configured.\n    // This can happen if an admin change the component configuration after end users have already selected a preferences.\n    // We need to adapt the saved preferences to what's actually available in the component\n    let needToSave = false;\n    if (!this.options.enableOpenInNewWindow) {\n      delete this.preferences.alwaysOpenInNewWindow;\n      needToSave = true;\n    }\n\n    if (!this.options.enableOpenInOutlook) {\n      delete this.preferences.openInOutlook;\n      needToSave = true;\n    }\n\n    if (!this.options.enableQuerySyntax) {\n      delete this.preferences.enableQuerySyntax;\n      needToSave = true;\n    }\n\n    if (needToSave) {\n      Defer.defer(() => {\n        this.save();\n      });\n    }\n  }\n\n  private isSelected(checkingFor: string, label: string, input: IFormWidgetSelectable) {\n    return checkingFor == label && input.isSelected();\n  }\n}\n\nInitialization.registerAutoCreateComponent(ResultsPreferences);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResultsPreferences/ResultsPreferences.ts","import 'styling/_ResultTagging';\nimport * as _ from 'underscore';\nimport { exportGlobally } from '../../GlobalExports';\nimport { Assert } from '../../misc/Assert';\nimport { QueryStateModel } from '../../models/QueryStateModel';\nimport { IFieldDescription } from '../../rest/FieldDescription';\nimport { IIndexFieldValue } from '../../rest/FieldValue';\nimport { IQueryResult } from '../../rest/QueryResult';\nimport { ITaggingRequest } from '../../rest/TaggingRequest';\nimport { l } from '../../strings/Strings';\nimport { $$ } from '../../utils/Dom';\nimport { KEYBOARD, KeyboardUtils } from '../../utils/KeyboardUtils';\nimport { StringUtils } from '../../utils/StringUtils';\nimport { SVGDom } from '../../utils/SVGDom';\nimport { SVGIcons } from '../../utils/SVGIcons';\nimport { Utils } from '../../utils/Utils';\nimport { analyticsActionCauseList } from '../Analytics/AnalyticsActionListMeta';\nimport { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { IFieldOption } from '../Base/IComponentOptions';\nimport { Initialization } from '../Base/Initialization';\n\nexport interface IResultTaggingOptions {\n  field: IFieldOption;\n  suggestBoxSize?: number;\n  autoCompleteTimer?: number;\n}\n\nexport interface IAnalyticsResultTaggingMeta {\n  facetId: string;\n  facetField: string;\n  facetValue?: string;\n  facetTitle?: string;\n}\n\n/**\n * The ResultTagging component lists the current tag field values of its associated result and renders a control that\n * allows the end user to add values to a tag field.\n *\n * This component is a result template component (see [Result Templates](https://docs.coveo.com/en/413/)).\n *\n * **Note:**\n * > The ResultTagging component is not supported with Coveo Cloud V2. To implement the ResultTagging component in Coveo Cloud V1, contact [Coveo Support](https://support.coveo.com/s/).\n *\n * @notSupportedIn salesforcefree\n */\nexport class ResultTagging extends Component {\n  static ID = 'ResultTagging';\n  static autoCompleteClass = 'coveo-result-tagging-auto-complete';\n\n  static doExport = () => {\n    exportGlobally({\n      ResultTagging: ResultTagging\n    });\n  };\n\n  /**\n   * @componentOptions\n   */\n  static options: IResultTaggingOptions = {\n    /**\n     * Specifies the tag field that the component will use.\n     *\n     * Specifying a value for this options is necessary for this component to work.\n     */\n    field: ComponentOptions.buildFieldOption({\n      match: (field: IFieldDescription) => field.type == 'Tag',\n      required: true\n    }),\n\n    /**\n     * Specifies the number of items to show in the list of suggested items.\n     *\n     * Default value is `5`. Minimum value is `0 `.\n     */\n    suggestBoxSize: ComponentOptions.buildNumberOption({ defaultValue: 5, min: 0 }),\n\n    /**\n     * Specifies how much time (in milliseconds) it takes for the list of suggested items to disappear when it loses\n     * focus.\n     *\n     * Default value is `2000`. Minimum value is `0`.\n     */\n    autoCompleteTimer: ComponentOptions.buildNumberOption({ defaultValue: 2000, min: 0 })\n  };\n\n  static AUTO_COMPLETE_CLASS = 'coveo-result-tagging-auto-complete';\n\n  private autoCompleteZone: HTMLElement;\n  private textBox: HTMLInputElement;\n  private autoCompletePopup: HTMLElement;\n  private tagZone: HTMLElement;\n  private tags: string[];\n\n  /**\n   * Creates a new ResultTagging component.\n   * @param element The HTMLElement on which to instantiate the component.\n   * @param options The options for the ResultTagging component.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time).\n   * @param result The result to associate the component with.\n   */\n  constructor(\n    public element: HTMLElement,\n    public options?: IResultTaggingOptions,\n    bindings?: IComponentBindings,\n    public result?: IQueryResult\n  ) {\n    super(element, ResultTagging.ID, bindings);\n\n    this.options = ComponentOptions.initComponentOptions(element, ResultTagging, options);\n    this.result = result || this.resolveResult();\n    Assert.exists(this.componentOptionsModel);\n    Assert.exists(this.result);\n\n    if (!this.options.field) {\n      this.logger.error('You must specify a field to the ResultTagging component');\n      return;\n    }\n    let fieldValue = Utils.getFieldValue(this.result, <string>this.options.field);\n    if (fieldValue && Utils.isNonEmptyString(fieldValue)) {\n      this.tags = fieldValue.split(';');\n    } else if (fieldValue && Utils.isNonEmptyArray(fieldValue)) {\n      this.tags = fieldValue;\n    } else {\n      this.tags = [];\n    }\n    this.tags = _.map(this.tags, t => {\n      return t.trim();\n    });\n    this.tagZone = $$('div', {\n      className: 'coveo-result-tagging-tag-zone'\n    }).el;\n    element.appendChild(this.tagZone);\n    element.appendChild(this.buildTagIcon());\n\n    this.autoCompleteZone = $$('div', {\n      className: 'coveo-result-tagging-auto-complete-zone'\n    }).el;\n    element.appendChild(this.autoCompleteZone);\n    this.autoCompleteZone.appendChild(this.buildTextBox());\n    this.autoCompleteZone.appendChild(this.buildAddIcon());\n    this.autoCompleteZone.appendChild(this.buildClearIcon());\n    this.buildExistingTags();\n  }\n\n  private buildExistingTags() {\n    if (this.tags) {\n      _.each(this.tags, (tag: string) => {\n        this.tagZone.appendChild(this.buildTagValue(tag));\n      });\n    }\n  }\n\n  private buildTagIcon(): HTMLElement {\n    let tagZone = $$('div', {\n      className: 'coveo-result-tagging-add-tag'\n    });\n    let tagTextBox = $$('span', {\n      className: 'coveo-result-tagging-add-tag-text'\n    });\n    tagTextBox.text(l('EnterTag'));\n    let tagIcon = $$('span', {\n      className: 'coveo-result-tagging-add-tag-icon'\n    });\n    tagIcon.on('click', () => {\n      _.defer(() => {\n        this.focusOnTextBox();\n      }, 20);\n    });\n    tagZone.el.appendChild(tagIcon.el);\n    tagZone.append(tagTextBox.el);\n    tagZone.setAttribute('title', l('EnterTag'));\n    return tagZone.el;\n  }\n\n  private focusOnTextBox() {\n    this.textBox.focus();\n  }\n\n  private buildTagValue(tagValue: string): HTMLElement {\n    let tag = $$('div', {\n      className: 'coveo-result-tagging-coveo-tag'\n    });\n    tag.el.appendChild(this.buildShortenedTagWithTitle(tagValue));\n    let deleteIcon = $$(\n      'span',\n      {\n        className: 'coveo-result-tagging-delete-icon'\n      },\n      SVGIcons.icons.delete\n    );\n    SVGDom.addClassToSVGInContainer(deleteIcon.el, 'coveo-result-tagging-delete-icon-svg');\n    tag.el.appendChild(deleteIcon.el);\n    deleteIcon.on('click', () => {\n      this.doRemoveTag(tag.el, tagValue.toLowerCase());\n    });\n    return tag.el;\n  }\n\n  private buildShortenedTagWithTitle(tagValue: string): HTMLElement {\n    let shortenedTag = StringUtils.removeMiddle(tagValue, 16, '...');\n    let clickableValue = $$('a', {\n      title: tagValue,\n      href: 'javascript:void(0);'\n    });\n    clickableValue.text(shortenedTag);\n\n    this.bindFacetEventOnValue(clickableValue.el, tagValue);\n    return clickableValue.el;\n  }\n\n  private buildTextBox(): HTMLInputElement {\n    this.textBox = <HTMLInputElement>$$('input', {\n      type: 'text',\n      className: 'coveo-add-tag-textbox',\n      placeholder: l('EnterTag')\n    }).el;\n\n    this.autoCompletePopup = $$('div', {\n      className: ResultTagging.autoCompleteClass\n    }).el;\n    this.autoCompleteZone.appendChild(this.autoCompletePopup);\n    this.manageAutocompleteAutoHide();\n    $$(this.textBox).on('keyup', (e: KeyboardEvent) => {\n      if (e.keyCode == KEYBOARD.UP_ARROW || e.keyCode == KEYBOARD.DOWN_ARROW || e.keyCode == KEYBOARD.ENTER) {\n        this.manageUpDownEnter(e.keyCode);\n      } else if (!KeyboardUtils.isArrowKeyPushed(e.keyCode)) {\n        this.populateSuggestions();\n      }\n      $$(this.element).removeClass('coveo-error');\n    });\n    $$(this.textBox).on('click', () => {\n      this.populateSuggestions();\n    });\n    return this.textBox;\n  }\n\n  private buildAddIcon(): HTMLElement {\n    let icon = $$(\n      'div',\n      {\n        className: 'coveo-result-tagging-add-tag-tick-icon'\n      },\n      SVGIcons.icons.taggingOk\n    );\n    SVGDom.addClassToSVGInContainer(icon.el, 'coveo-result-tagging-add-tag-tick-icon-svg');\n    let clickable = $$('span');\n    clickable.on('click', () => {\n      this.doAddTag();\n    });\n    icon.el.appendChild(clickable.el);\n    return icon.el;\n  }\n\n  private buildClearIcon(): HTMLElement {\n    let icon = $$(\n      'div',\n      {\n        className: 'coveo-result-tagging-clear-icon'\n      },\n      SVGIcons.icons.clear\n    );\n    SVGDom.addClassToSVGInContainer(icon.el, 'coveo-result-tagging-clear-icon-svg');\n    let clickable = $$('span');\n    clickable.on('click', () => {\n      this.textBox.value = '';\n    });\n    icon.el.appendChild(clickable.el);\n    return icon.el;\n  }\n\n  private bindFacetEventOnValue(element: HTMLElement, value: string) {\n    let facetAttributeName = QueryStateModel.getFacetId(<string>this.options.field);\n    let facetModel: string[] = this.queryStateModel.get(facetAttributeName);\n    let facets: Component[] = this.componentStateModel.get(facetAttributeName);\n    let atLeastOneFacetIsEnabled = _.filter(facets, (value: Component) => !value.disabled).length > 0;\n\n    if (facetModel != null && atLeastOneFacetIsEnabled) {\n      $$(element).on('click', () => {\n        if (_.contains(facetModel, value)) {\n          this.queryStateModel.set(facetAttributeName, _.without(facetModel, value));\n        } else {\n          this.queryStateModel.set(facetAttributeName, _.union(facetModel, [value]));\n        }\n        this.queryController.deferExecuteQuery({\n          beforeExecuteQuery: () =>\n            this.usageAnalytics.logSearchEvent<IAnalyticsResultTaggingMeta>(analyticsActionCauseList.documentTag, {\n              facetId: <string>this.options.field,\n              facetField: <string>this.options.field,\n              facetValue: value\n            })\n        });\n      });\n\n      if (_.contains(facetModel, value)) {\n        $$(element).addClass('coveo-selected');\n      }\n      $$(element).addClass('coveo-clickable');\n    }\n  }\n\n  private clearPopup() {\n    $$(this.autoCompletePopup).hide();\n    $$(this.autoCompletePopup).empty();\n  }\n\n  private showPopup() {\n    $$(this.autoCompletePopup).show();\n  }\n\n  private populateSuggestions() {\n    let endpoint = this.queryController.getEndpoint();\n    let searchText = this.textBox.value;\n    let searchOptions = {\n      field: <string>this.options.field,\n      ignoreAccents: true,\n      sortCriteria: 'occurences',\n      maximumNumberOfValues: this.options.suggestBoxSize,\n      queryOverride: '@uri',\n      pattern: this.buildRegEx(searchText),\n      patternType: 'RegularExpression'\n    };\n    endpoint.listFieldValues(searchOptions).then((fieldValues: IIndexFieldValue[]) => {\n      this.clearPopup();\n      _.each(fieldValues, (fieldValue: IIndexFieldValue) => {\n        this.autoCompletePopup.appendChild(this.buildSelectableValue(fieldValue.lookupValue));\n      });\n      this.showPopup();\n      this.autoCompletePopup.style.width = this.textBox.offsetWidth + ' px';\n    });\n  }\n\n  private manageAutocompleteAutoHide() {\n    let timeout: any;\n\n    $$(this.textBox).on('mouseover', () => {\n      clearTimeout(timeout);\n    });\n\n    $$(this.autoCompletePopup).on('mouseout', e => {\n      if ($$(<HTMLElement>e.target).hasClass(ResultTagging.autoCompleteClass)) {\n        timeout = setTimeout(() => {\n          this.clearPopup();\n        }, this.options.autoCompleteTimer);\n      }\n    });\n\n    $$(this.autoCompletePopup).on('mouseenter', () => {\n      clearTimeout(timeout);\n    });\n\n    $$(this.element).on('mouseenter', () => {\n      this.clearPopup();\n      $$(this.element).addClass('coveo-opened');\n    });\n\n    $$($$(this.element).closest('.CoveoResult')).on('mouseleave', () => {\n      this.clearPopup();\n      if (this.textBox.value == '') {\n        $$(this.element).removeClass('coveo-opened');\n      }\n    });\n\n    $$($$(this.element).closest('.CoveoResult')).on('focusout', e => {\n      if (this.textBox.value != '' && $$(<HTMLElement>e.target).closest('.CoveoResult') != $$(this.element).closest('.CoveoResult')) {\n        $$(this.element).addClass('coveo-error');\n      }\n    });\n\n    $$($$(this.element).closest('.CoveoResult')).on('focusin', () => {\n      $$(this.element).removeClass('coveo-error');\n    });\n  }\n\n  // Exclude tags that are already on the result (Since we can tag with the same value twice.\n  private buildRegEx(searchTerm: string) {\n    return '(?=.*' + searchTerm + ')' + _.map(this.tags, (tag: string) => this.buildTermToExclude(tag)).join('') + '.*';\n  }\n\n  private buildTermToExclude(term: string) {\n    return '(?!^' + term + '$)';\n  }\n\n  private manageUpDownEnter(code: number) {\n    let selectableArray = $$(this.element).findAll('.coveo-selectable');\n    if (code == KEYBOARD.ENTER) {\n      this.doAddTag();\n      return;\n    }\n\n    if (selectableArray.length > 0) {\n      let newIndex = this.computeNextIndex(code, selectableArray);\n      newIndex = Math.max(0, newIndex);\n      newIndex = Math.min(selectableArray.length - 1, newIndex);\n      let selected = $$(selectableArray[newIndex]);\n      selected.addClass('coveo-selected');\n      this.textBox.value = selected.text();\n    }\n  }\n\n  private computeNextIndex(code: number, selectableArray: HTMLElement[]): number {\n    let nextIndex = 0;\n    _.each(selectableArray, (selectable: HTMLElement, index) => {\n      if ($$(selectable).hasClass('coveo-selected')) {\n        if (code == KEYBOARD.UP_ARROW) {\n          nextIndex = index - 1;\n        } else if (code == KEYBOARD.DOWN_ARROW) {\n          nextIndex = index + 1;\n        }\n        $$(selectable).removeClass('coveo-selected');\n      }\n    });\n    return nextIndex;\n  }\n\n  private buildSelectableValue(lookupValue: string): HTMLElement {\n    let line = $$('div', {\n      className: 'coveo-selectable'\n    });\n    line.el.appendChild(this.buildShortenedTagWithTitle(lookupValue));\n    line.on('click', () => {\n      this.doAddTagWithValue(lookupValue);\n    });\n    return line.el;\n  }\n\n  private doRemoveTag(element: HTMLElement, tagValue: string) {\n    let request: ITaggingRequest = {\n      fieldName: <string>this.options.field,\n      fieldValue: tagValue,\n      doAdd: false,\n      uniqueId: this.result.uniqueId\n    };\n    this.queryController\n      .getEndpoint()\n      .tagDocument(request)\n      .then(() => {\n        this.tags.splice(_.indexOf(this.tags, tagValue), 1);\n        $$(element).detach();\n      });\n  }\n\n  private doAddTagWithValue(tagValue: string) {\n    _.each(tagValue.split(','), (tag: string) => {\n      this.doAddSingleTagValue(tag);\n    });\n  }\n\n  private doAddSingleTagValue(tagValue: string) {\n    this.clearPopup();\n    if (_.indexOf(this.tags, tagValue) > -1) {\n      $$(this.element).addClass('coveo-error');\n      return;\n    }\n    this.tags.push(tagValue);\n    let request: ITaggingRequest = {\n      fieldName: <string>this.options.field,\n      fieldValue: tagValue,\n      doAdd: true,\n      uniqueId: this.result.uniqueId\n    };\n    this.queryController\n      .getEndpoint()\n      .tagDocument(request)\n      .then(() => {\n        this.tagZone.appendChild(this.buildTagValue(tagValue));\n        this.textBox.value = '';\n        $$(this.element).removeClass('coveo-error');\n      })\n      .catch(() => {\n        // We do this otherwise it's possible to add the same tag while we wait for the server's response\n        this.tags = _.without(this.tags, _.findWhere(this.tags, tagValue));\n      });\n  }\n\n  private doAddTag() {\n    let tagValue = Utils.trim(this.textBox.value.toLowerCase());\n    this.doAddTagWithValue(tagValue);\n  }\n}\nInitialization.registerAutoCreateComponent(ResultTagging);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResultTagging/ResultTagging.ts","import * as _ from 'underscore';\nimport { ISearchAlertsEventArgs, ISearchAlertsFailEventArgs, SearchAlertsEvents } from '../../events/SearchAlertEvents';\nimport { exportGlobally } from '../../GlobalExports';\nimport { Assert } from '../../misc/Assert';\nimport { IQueryResult } from '../../rest/QueryResult';\nimport { ISubscription, ISubscriptionItemRequest, ISubscriptionRequest, SUBSCRIPTION_TYPE } from '../../rest/Subscription';\nimport { l } from '../../strings/Strings';\nimport { $$, Dom } from '../../utils/Dom';\nimport { KEYBOARD, KeyboardUtils } from '../../utils/KeyboardUtils';\nimport { QueryUtils } from '../../utils/QueryUtils';\nimport { SVGDom } from '../../utils/SVGDom';\nimport { SVGIcons } from '../../utils/SVGIcons';\nimport { Utils } from '../../utils/Utils';\nimport {\n  analyticsActionCauseList,\n  IAnalyticsActionCause,\n  IAnalyticsSearchAlertsFollowDocumentMeta\n} from '../Analytics/AnalyticsActionListMeta';\nimport { Component } from '../Base/Component';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { IFieldOption } from '../Base/IComponentOptions';\nimport { Initialization } from '../Base/Initialization';\nimport { IResultsComponentBindings } from '../Base/ResultsComponentBindings';\n\nexport interface IFollowItemOptions {\n  watchedFields?: IFieldOption[];\n  modifiedDateField?: string;\n}\n\n/**\n * The FollowItem component renders a widget that the end user can click to follow a particular item. A user following\n * an item receives email notifications when the item changes.\n *\n * **Note:**\n * > A {@link SearchAlerts} component must be present in the page for this component to work. It is also necessary to\n * > meet certain requirements to be able to use this component (see\n * > [Deploying Search Alerts on a Coveo JS Search Page](https://docs.coveo.com/en/1932/)).\n *\n * This component is a result template component (see [Result Templates](https://docs.coveo.com/en/413/)).\n */\nexport class FollowItem extends Component {\n  static ID = 'FollowItem';\n\n  static doExport = () => {\n    exportGlobally({\n      FollowItem: FollowItem\n    });\n  };\n\n  /**\n   * The options for the follow item component\n   * @componentOptions\n   */\n  static options: IFollowItemOptions = {\n    /**\n     * Specifies the {@link ISubscriptionItemRequest.watchedFields} to use when sending the\n     * {@link ISubscriptionItemRequest}.\n     *\n     * Default value is `undefined`.\n     */\n    watchedFields: ComponentOptions.buildFieldsOption(),\n\n    /**\n     * Specifies the {@link ISubscriptionItemRequest.modifiedDateField} to use when sending the\n     * {@link ISubscriptionItemRequest}.\n     *\n     * Default value is `undefined`.\n     */\n    modifiedDateField: ComponentOptions.buildStringOption()\n  };\n\n  private container: Dom;\n  private text: Dom;\n  private subscription: ISubscription;\n\n  /**\n   * Creates a new FollowItem component.\n   * @param element The HTMLElement on which to instantiate the component.\n   * @param options The options for the FollowItem component.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time)\n   * @param result The result to associate the component with.\n   */\n  constructor(\n    public element: HTMLElement,\n    public options?: IFollowItemOptions,\n    public bindings?: IResultsComponentBindings,\n    public result?: IQueryResult\n  ) {\n    super(element, FollowItem.ID, bindings);\n\n    this.options = ComponentOptions.initComponentOptions(element, FollowItem, options);\n\n    Assert.exists(this.result);\n\n    this.container = $$(this.element);\n    this.text = $$('span');\n    const icon = this.buildIcon();\n    const loadingIcon = this.buildLoadingIcon();\n    this.container.append(icon);\n    this.container.append(loadingIcon);\n    this.container.append(this.text.el);\n    this.container.on('click', () => this.toggleFollow());\n    this.container.setAttribute('tabindex', '0');\n    this.bind.on(this.container, 'keyup', KeyboardUtils.keypressAction(KEYBOARD.ENTER, () => this.toggleFollow()));\n\n    this.bind.onRootElement(SearchAlertsEvents.searchAlertsDeleted, (args: ISearchAlertsEventArgs) => this.handleSubscriptionDeleted(args));\n    this.bind.onRootElement(SearchAlertsEvents.searchAlertsCreated, (args: ISearchAlertsEventArgs) => this.handleSubscriptionCreated(args));\n\n    this.container.addClass('coveo-follow-item-loading');\n\n    this.updateIsFollowed();\n  }\n\n  public setFollowed(subscription: ISubscription) {\n    this.container.removeClass('coveo-follow-item-loading');\n    this.subscription = subscription;\n    this.container.addClass('coveo-follow-item-followed');\n    this.text.text(l('SearchAlerts_unFollowing'));\n  }\n\n  public setNotFollowed() {\n    this.container.removeClass('coveo-follow-item-loading');\n    this.subscription = <ISubscription>FollowItem.buildFollowRequest(this.getId(), this.result.title, this.options);\n    this.container.removeClass('coveo-follow-item-followed');\n    this.text.text(l('SearchAlerts_follow'));\n  }\n\n  /**\n   * Follows the item if not already following it. Stops following the item otherwise.\n   *\n   * Also logs the appropriate event in the usage analytics (either `searchAlertsFollowDocument` or\n   * `searchAlertsUnfollowDocument`).\n   */\n  public toggleFollow() {\n    if (!this.container.hasClass('coveo-follow-item-loading')) {\n      this.container.removeClass('coveo-follow-item-followed');\n      this.container.addClass('coveo-follow-item-loading');\n      if (this.subscription.id) {\n        this.logAnalyticsEvent(analyticsActionCauseList.searchAlertsUnfollowDocument);\n        this.queryController\n          .getEndpoint()\n          .deleteSubscription(this.subscription)\n          .then(() => {\n            const eventArgs: ISearchAlertsEventArgs = {\n              subscription: this.subscription,\n              dom: this.element\n            };\n            $$(this.root).trigger(SearchAlertsEvents.searchAlertsDeleted, eventArgs);\n          })\n          .catch(() => {\n            this.container.removeClass('coveo-follow-item-loading');\n            const eventArgs: ISearchAlertsFailEventArgs = {\n              dom: this.element\n            };\n            $$(this.root).trigger(SearchAlertsEvents.searchAlertsFail, eventArgs);\n          });\n      } else {\n        this.logAnalyticsEvent(analyticsActionCauseList.searchAlertsFollowDocument);\n        this.queryController\n          .getEndpoint()\n          .follow(this.subscription)\n          .then((subscription: ISubscription) => {\n            const eventArgs: ISearchAlertsEventArgs = {\n              subscription: subscription,\n              dom: this.element\n            };\n            $$(this.root).trigger(SearchAlertsEvents.searchAlertsCreated, eventArgs);\n          })\n          .catch(() => {\n            this.container.removeClass('coveo-follow-item-loading');\n            const eventArgs: ISearchAlertsFailEventArgs = {\n              dom: this.element\n            };\n            $$(this.root).trigger(SearchAlertsEvents.searchAlertsFail, eventArgs);\n          });\n      }\n    }\n  }\n\n  protected getText(): string {\n    return this.text.text();\n  }\n\n  private updateIsFollowed() {\n    this.queryController\n      .getEndpoint()\n      .listSubscriptions()\n      .then((subscriptions: ISubscription[]) => {\n        if (_.isArray(subscriptions)) {\n          const subscription: ISubscription = _.find(subscriptions, (subscription: ISubscription) => {\n            const typeConfig = <ISubscriptionItemRequest>subscription.typeConfig;\n            return typeConfig && typeConfig.id != null && typeConfig.id == this.getId();\n          });\n          if (subscription != null) {\n            this.setFollowed(subscription);\n          } else {\n            this.setNotFollowed();\n          }\n        } else {\n          this.remove();\n        }\n      })\n      .catch(() => {\n        this.remove();\n      });\n  }\n  private buildIcon(): HTMLElement {\n    const icon = $$('span', { className: 'coveo-follow-item-icon' }, SVGIcons.icons.dropdownFollowQuery);\n    SVGDom.addClassToSVGInContainer(icon.el, 'coveo-follow-item-icon-svg');\n    return icon.el;\n  }\n\n  private buildLoadingIcon(): HTMLElement {\n    const loadingIcon = $$('span', { className: 'coveo-follow-item-icon-loading' }, SVGIcons.icons.loading);\n    SVGDom.addClassToSVGInContainer(loadingIcon.el, 'coveo-follow-item-icon-loading-svg');\n    return loadingIcon.el;\n  }\n\n  private handleSubscriptionDeleted(args: ISearchAlertsEventArgs) {\n    if (args.subscription && args.subscription.type == SUBSCRIPTION_TYPE.followDocument) {\n      const typeConfig = <ISubscriptionItemRequest>args.subscription.typeConfig;\n      if (typeConfig.id == this.getId()) {\n        this.setNotFollowed();\n      }\n    }\n  }\n\n  private handleSubscriptionCreated(args: ISearchAlertsEventArgs) {\n    if (args.subscription && args.subscription.type == SUBSCRIPTION_TYPE.followDocument) {\n      const typeConfig = <ISubscriptionItemRequest>args.subscription.typeConfig;\n      if (typeConfig.id == this.getId()) {\n        this.setFollowed(args.subscription);\n      }\n    }\n  }\n\n  private remove() {\n    this.element.parentElement && this.element.parentElement.removeChild(this.element);\n  }\n\n  private getId() {\n    return Utils.getFieldValue(this.result, 'sysurihash') || Utils.getFieldValue(this.result, 'urihash');\n  }\n\n  private static buildFollowRequest(id: string, title: string, options: IFollowItemOptions): ISubscriptionRequest {\n    const typeCofig: ISubscriptionItemRequest = {\n      id: id,\n      title: title\n    };\n\n    if (options.modifiedDateField) {\n      typeCofig.modifiedDateField = options.modifiedDateField;\n    }\n\n    if (options.watchedFields) {\n      typeCofig.watchedFields = <string[]>options.watchedFields;\n    }\n\n    return {\n      type: SUBSCRIPTION_TYPE.followDocument,\n      typeConfig: typeCofig,\n      name: title\n    };\n  }\n\n  private logAnalyticsEvent(type: IAnalyticsActionCause) {\n    this.usageAnalytics.logCustomEvent<IAnalyticsSearchAlertsFollowDocumentMeta>(\n      type,\n      {\n        author: QueryUtils.getAuthor(this.result),\n        documentLanguage: QueryUtils.getLanguage(this.result),\n        documentSource: QueryUtils.getSource(this.result),\n        documentTitle: this.result.title,\n        contentIDValue: QueryUtils.getPermanentId(this.result).fieldValue,\n        contentIDKey: QueryUtils.getPermanentId(this.result).fieldUsed\n      },\n      this.element\n    );\n  }\n}\n\nInitialization.registerAutoCreateComponent(FollowItem);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/FollowItem/FollowItem.ts","import * as _ from 'underscore';\nimport { QueryEvents } from '../../events/QueryEvents';\nimport { ISearchAlertsEventArgs, ISearchAlertsFailEventArgs, SearchAlertsEvents } from '../../events/SearchAlertEvents';\nimport { SettingsEvents } from '../../events/SettingsEvents';\nimport { ModalBox as ModalBoxModule } from '../../ExternalModulesShim';\nimport { exportGlobally } from '../../GlobalExports';\nimport { Assert } from '../../misc/Assert';\nimport { AjaxError } from '../../rest/AjaxError';\nimport { IQuery } from '../../rest/Query';\nimport {\n  ISubscription,\n  ISubscriptionItemRequest,\n  ISubscriptionQueryRequest,\n  ISubscriptionRequest,\n  SUBSCRIPTION_TYPE\n} from '../../rest/Subscription';\nimport { l } from '../../strings/Strings';\nimport { $$, Dom } from '../../utils/Dom';\nimport { SVGIcons } from '../../utils/SVGIcons';\nimport {\n  analyticsActionCauseList,\n  IAnalyticsActionCause,\n  IAnalyticsSearchAlertsMeta,\n  IAnalyticsSearchAlertsUpdateMeta\n} from '../Analytics/AnalyticsActionListMeta';\nimport { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { IFieldOption } from '../Base/IComponentOptions';\nimport { Initialization } from '../Base/Initialization';\nimport { get } from '../Base/RegisteredNamedMethods';\nimport { Dropdown } from '../FormWidgets/Dropdown';\nimport { SearchInterface } from '../SearchInterface/SearchInterface';\nimport { ISettingsPopulateMenuArgs } from '../Settings/Settings';\nimport { SearchAlertsMessage } from './SearchAlertsMessage';\nimport ModalBox = Coveo.ModalBox.ModalBox;\n\nexport interface ISearchAlertsOptions {\n  enableManagePanel?: boolean;\n  enableFollowQuery?: boolean;\n  modifiedDateField?: IFieldOption;\n  enableMessage?: boolean;\n  messageCloseDelay?: number;\n}\n\n/**\n * The Search Alerts component renders items in the {@link Settings} menu that allow the end user to follow queries\n * and to manage search alerts. A user following a query receives email notifications when the query results change.\n *\n * **Note:**\n * > It is necessary to meet certain requirements to be able to use this component (see\n * > [Deploying Search Alerts on a Coveo JS Search Page](https://docs.coveo.com/en/1932/)).\n *\n * See also the {@link FollowItem} component.\n */\nexport class SearchAlerts extends Component {\n  static ID = 'SearchAlerts';\n\n  static doExport = () => {\n    exportGlobally({\n      SearchAlerts: SearchAlerts,\n      SearchAlertsMessage: SearchAlertsMessage\n    });\n  };\n\n  /**\n   * The options for the search alerts\n   * @componentOptions\n   */\n  static options: ISearchAlertsOptions = {\n    /**\n     * Specifies whether to add the **Manage Alerts** item in the {@link Settings} menu to allow the end user to manage\n     * search alerts.\n     *\n     * Clicking the **Manage Alerts** item calls the {@link SearchAlerts.openPanel} method.\n     *\n     * Default value is `true`.\n     */\n    enableManagePanel: ComponentOptions.buildBooleanOption({ defaultValue: true }),\n\n    /**\n     * Specifies whether to add the **Follow Query** item in the {@link Settings} menu to allow the end user to follow\n     * the last query.\n     *\n     * Clicking the **Follow Query** item calls the {@link SearchAlerts.followQuery} method.\n     *\n     * Default value is `true`.\n     */\n    enableFollowQuery: ComponentOptions.buildBooleanOption({ defaultValue: true }),\n\n    /**\n     * Specifies which field to use to represent the modification date when sending the\n     * {@link ISubscriptionQueryRequest}.\n     *\n     * Default value is `undefined`.\n     */\n    modifiedDateField: ComponentOptions.buildFieldOption(),\n\n    /**\n     * Specifies whether to display info and error messages when performing search alerts actions.\n     *\n     * If this options is `true`, the SearchAlerts constructor will automatically instantiate a\n     * {@link SearchAlertsMessage} component and set it to the {@link SearchAlerts.message} attribute.\n     *\n     * See also {@link SearchAlerts.options.messageCloseDelay}.\n     *\n     * Default value is `true`.\n     */\n    enableMessage: ComponentOptions.buildBooleanOption({ defaultValue: true }),\n\n    /**\n     * If {@link SearchAlerts.options.enableMessage} is `true`, specifies how long to display the search alert messages\n     * (in milliseconds).\n     *\n     * Default value is `2000`. Minimum value is `0`.\n     */\n    messageCloseDelay: ComponentOptions.buildNumberOption({ defaultValue: 2000, min: 0, depend: 'enableMessage' })\n  };\n\n  private modal: ModalBox;\n\n  /**\n   * A reference to a {@link SearchAlertsMessage} component that the SearchAlerts component uses to display messages.\n   */\n  public message: SearchAlertsMessage;\n\n  /**\n   * Creates a new SearchAlerts component.\n   * @param element The HTMLElement on which to instantiate the component.\n   * @param options The options for the SearchAlerts component.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time).\n   */\n  constructor(\n    public element: HTMLElement,\n    public options: ISearchAlertsOptions,\n    bindings?: IComponentBindings,\n    private ModalBox = ModalBoxModule\n  ) {\n    super(element, SearchAlerts.ID, bindings);\n\n    this.options = ComponentOptions.initComponentOptions(element, SearchAlerts, options);\n\n    if (this.options.enableMessage) {\n      this.message = new SearchAlertsMessage(element, { closeDelay: this.options.messageCloseDelay }, this.getBindings());\n    }\n\n    if (!this.queryController.getEndpoint().options.isGuestUser) {\n      this.bind.onRootElement(SettingsEvents.settingsPopulateMenu, (args: ISettingsPopulateMenuArgs) => {\n        if (this.options.enableManagePanel) {\n          args.menuData.push({\n            text: l('SearchAlerts_Panel'),\n            className: 'coveo-subscriptions-panel',\n            onOpen: () => this.openPanel(),\n            onClose: () => this.close(),\n            svgIcon: SVGIcons.icons.dropdownFollowQuery,\n            svgIconClassName: 'coveo-subscriptions-panel-svg'\n          });\n        }\n      });\n    } else {\n      this.logger.warn('Logged in as guest user, search alerts are therefore not available.');\n    }\n\n    let once = false;\n\n    this.bind.onRootElement(QueryEvents.querySuccess, () => {\n      if (!once) {\n        once = true;\n        this.queryController\n          .getEndpoint()\n          .listSubscriptions()\n          .then(() => {\n            this.bind.onRootElement(SettingsEvents.settingsPopulateMenu, (args: ISettingsPopulateMenuArgs) => {\n              if (this.options.enableFollowQuery) {\n                args.menuData.push({\n                  text: l('SearchAlerts_followQuery'),\n                  className: 'coveo-follow-query',\n                  tooltip: l('FollowQueryDescription'),\n                  onOpen: () => this.followQuery(),\n                  onClose: () => {},\n                  svgIcon: SVGIcons.icons.dropdownFollowQuery,\n                  svgIconClassName: 'coveo-follow-query-svg'\n                });\n              }\n            });\n          })\n          .catch((e: AjaxError) => {\n            // Trap 403 error, as the listSubscription call is called on every page initialization\n            // to check for current subscriptions. By default, the search alert service is not enabled for most organization\n            // Don't want to pollute the console with un-needed noise and confusion\n            if (e.status != 403) {\n              throw e;\n            }\n          });\n      }\n    });\n  }\n\n  /**\n   * Follows the last query. The user will start receiving email notifications when the query results change.\n   *\n   * Also logs the `searchAlertsFollowQuery` event in the usage analytics with the name of the request as meta data.\n   */\n  public followQuery() {\n    const queryBuilder = this.queryController.createQueryBuilder({});\n    const request = this.buildFollowQueryRequest(queryBuilder.build(), this.options);\n\n    this.usageAnalytics.logCustomEvent<IAnalyticsSearchAlertsMeta>(\n      analyticsActionCauseList.searchAlertsFollowQuery,\n      {\n        subscription: request.name\n      },\n      this.element\n    );\n\n    this.queryController\n      .getEndpoint()\n      .follow(request)\n      .then((subscription: ISubscription) => {\n        if (subscription) {\n          const eventArgs: ISearchAlertsEventArgs = {\n            subscription: subscription,\n            dom: this.findQueryBoxDom()\n          };\n          $$(this.root).trigger(SearchAlertsEvents.searchAlertsCreated, eventArgs);\n        } else {\n          this.triggerSearchAlertsFail();\n        }\n      })\n      .catch(() => {\n        this.triggerSearchAlertsFail();\n      });\n  }\n\n  /**\n   * Opens the **Manage Alerts** panel. This panel allows the end user to stop following queries or items. It also\n   * allows the end user to specify email notification frequency for each followed query or item.\n   */\n  public async openPanel(): Promise<void> {\n    const title = $$('div');\n\n    const titleInfo = $$(\n      'div',\n      {\n        className: 'coveo-subscriptions-panel-title'\n      },\n      l('SearchAlerts_Panel')\n    );\n\n    title.append(titleInfo.el);\n\n    const container = $$('div');\n    const table = $$('table', {\n      className: 'coveo-subscriptions-panel-content',\n      cellspacing: 0\n    });\n    container.append(table.el);\n    const tableHead = $$('thead');\n    table.append(tableHead.el);\n\n    const rowHead = $$('tr');\n    tableHead.append(rowHead.el);\n\n    const headerType = $$(\n      'th',\n      {\n        className: 'coveo-subscriptions-panel-content-type'\n      },\n      l('SearchAlerts_Type')\n    );\n    const headerContent = $$('th', null, l('SearchAlerts_Content'));\n    const headerFrequency = $$('th', null, l('SearchAlerts_Frequency'));\n    const headerActions = $$(\n      'th',\n      {\n        className: 'coveo-subscriptions-panel-content-actions'\n      },\n      l('SearchAlerts_Actions')\n    );\n\n    rowHead.append(headerType.el);\n    rowHead.append(headerContent.el);\n    rowHead.append(headerFrequency.el);\n    rowHead.append(headerActions.el);\n\n    const tableBodySpacer = $$(\n      'tbody',\n      {\n        className: 'coveo-subscriptions-panel-spacer'\n      },\n      $$(\n        'tr',\n        null,\n        $$('td', {\n          colsspan: 3\n        })\n      )\n    );\n\n    table.append(tableBodySpacer.el);\n\n    const tableBodySubscriptions = $$(\n      'tbody',\n      {\n        className: 'coveo-subscriptions-panel-subscriptions'\n      },\n      $$(\n        'tr',\n        {\n          className: 'coveo-subscriptions-panel-no-subscriptions'\n        },\n        $$(\n          'td',\n          {\n            colspan: 3\n          },\n          l('SearchAlerts_PanelNoSearchAlerts')\n        )\n      )\n    );\n\n    table.append(tableBodySubscriptions.el);\n    let sizeModForModalBox = 'big';\n\n    try {\n      const subscriptions = await this.queryController.getEndpoint().listSubscriptions();\n      _.each(subscriptions, subscription => this.addSearchAlert(subscription, container));\n    } catch (e) {\n      this.logger.error('Error retrieving subscriptions', e);\n      sizeModForModalBox = 'small';\n      container.empty();\n      container.append(this.getFailureMessage().el);\n    }\n\n    this.modal = this.ModalBox.open(container.el, {\n      title: title.el.outerHTML,\n      className: 'coveo-subscriptions-panel',\n      sizeMod: sizeModForModalBox,\n      body: this.searchInterface.options.modalContainer\n    });\n  }\n\n  private getFailureMessage(): Dom {\n    return $$(\n      'div',\n      {\n        className: 'coveo-subscriptions-panel-fail'\n      },\n      l('SearchAlerts_Fail')\n    );\n  }\n\n  private handleSearchAlertsFail() {\n    if (this.modal != null) {\n      const modalBody = $$(this.modal.wrapper).find('.coveo-modal-body');\n      $$(modalBody).empty();\n      $$(modalBody).append(this.getFailureMessage().el);\n    }\n  }\n\n  private close() {\n    if (this.modal) {\n      this.modal.close();\n      this.modal = null;\n    }\n  }\n\n  private addSearchAlert(subscription: ISubscription, container: Dom) {\n    const frequencies = [\n      { value: 'monthly', label: l('Monthly') },\n      { value: 'daily', label: l('Daily') },\n      { value: 'monday', label: l('Monday') },\n      { value: 'tuesday', label: l('Tuesday') },\n      { value: 'wednesday', label: l('Wednesday') },\n      { value: 'thursday', label: l('Thursday') },\n      { value: 'friday', label: l('Friday') },\n      { value: 'saturday', label: l('Saturday') },\n      { value: 'sunday', label: l('Sunday') }\n    ];\n\n    let context: string;\n    if (subscription.name) {\n      if (subscription.name == '<empty>') {\n        context = '&lt;empty&gt;';\n      } else {\n        const textExtracted = $$('div').el;\n        textExtracted.innerHTML = subscription.name;\n        context = $$(textExtracted).text();\n      }\n    } else if (subscription.type == SUBSCRIPTION_TYPE.followQuery) {\n      const typeConfig = <ISubscriptionQueryRequest>subscription.typeConfig;\n      context = _.escape(typeConfig.query.q) || l('EmptyQuery');\n    } else {\n      const typeConfig = <ISubscriptionItemRequest>subscription.typeConfig;\n      context = _.escape(typeConfig.title || typeConfig.id);\n    }\n\n    const row = $$('tr', {\n      className: 'coveo-subscriptions-panel-subscription'\n    });\n\n    const pluckFrequenciesValues = _.pluck(frequencies, 'value');\n    const valueToLabel = (valueMappedToLabel: string) => _.findWhere(frequencies, { value: valueMappedToLabel }).label;\n\n    const buildDropdown = () => {\n      return new Dropdown(\n        (dropdownInstance: Dropdown) => {\n          this.usageAnalytics.logCustomEvent<IAnalyticsSearchAlertsUpdateMeta>(\n            analyticsActionCauseList.searchAlertsUpdateSubscription,\n            {\n              subscription: context,\n              frequency: dropdownInstance.getValue()\n            },\n            this.element\n          );\n          subscription.frequency = dropdownInstance.getValue();\n          this.updateAndSyncSearchAlert(subscription);\n        },\n        pluckFrequenciesValues,\n        valueToLabel\n      ).build();\n    };\n\n    const contentTypeElement = $$(\n      'td',\n      {\n        className: 'coveo-subscriptions-panel-content-type'\n      },\n      l('SearchAlerts_Type_' + subscription.type)\n    );\n\n    const contextElement = $$('td', {\n      className: 'coveo-subscriptions-panel-context',\n      title: context\n    });\n    contextElement.setHtml(context);\n\n    const frequencyElement = $$(\n      'td',\n      null,\n      $$(\n        'div',\n        {\n          className: 'coveo-subscriptions-panel-frequency'\n        },\n        buildDropdown()\n      )\n    );\n\n    const contentActionsElement = $$(\n      'td',\n      {\n        className: 'coveo-subscriptions-panel-content-actions'\n      },\n      null,\n      $$(\n        'div',\n        {\n          className: 'coveo-subscriptions-panel-action coveo-subscriptions-panel-action-unfollow'\n        },\n        l('SearchAlerts_unFollowing')\n      ),\n      $$(\n        'div',\n        {\n          className: 'coveo-subscriptions-panel-action coveo-subscriptions-panel-action-follow'\n        },\n        l('SearchAlerts_follow')\n      )\n    );\n\n    row.append(contentTypeElement.el);\n    row.append(contextElement.el);\n    row.append(frequencyElement.el);\n    row.append(contentActionsElement.el);\n\n    const noSearchAlerts = container.find('.coveo-subscriptions-panel-no-subscriptions');\n\n    row.insertBefore(noSearchAlerts);\n\n    const frequencyInput = <HTMLSelectElement>frequencyElement.find('select');\n    frequencyInput.value = subscription.frequency;\n\n    $$(row.find('.coveo-subscriptions-panel-action-unfollow')).on('click', () => {\n      row.addClass('coveo-subscription-unfollowed');\n\n      this.queryController\n        .getEndpoint()\n        .deleteSubscription(subscription)\n        .then(() => {\n          if (subscription.type == SUBSCRIPTION_TYPE.followDocument) {\n            this.logAnalyticsEvent(analyticsActionCauseList.searchAlertsUnfollowDocument, subscription);\n          } else if (subscription.type == SUBSCRIPTION_TYPE.followQuery) {\n            this.logAnalyticsEvent(analyticsActionCauseList.searchAlertsUnfollowQuery, subscription);\n          }\n          delete subscription.id;\n\n          const eventArgs: ISearchAlertsEventArgs = { subscription: subscription };\n          $$(this.root).trigger(SearchAlertsEvents.searchAlertsDeleted, eventArgs);\n        })\n        .catch(() => {\n          this.handleSearchAlertsFail();\n        });\n    });\n\n    $$(row.find('.coveo-subscriptions-panel-action-follow')).on('click', () => {\n      row.removeClass('coveo-subscription-unfollowed');\n\n      this.queryController\n        .getEndpoint()\n        .follow(subscription)\n        .then(updatedSearchAlert => {\n          if (subscription.type == SUBSCRIPTION_TYPE.followDocument) {\n            this.logAnalyticsEvent(analyticsActionCauseList.searchAlertsFollowDocument, subscription);\n          } else if (subscription.type == SUBSCRIPTION_TYPE.followQuery) {\n            this.logAnalyticsEvent(analyticsActionCauseList.searchAlertsFollowQuery, subscription);\n          }\n          subscription.id = updatedSearchAlert.id;\n          const eventArgs: ISearchAlertsEventArgs = { subscription: subscription };\n          $$(this.root).trigger(SearchAlertsEvents.searchAlertsCreated, eventArgs);\n        })\n        .catch(() => {\n          this.handleSearchAlertsFail();\n        });\n    });\n  }\n\n  private updateAndSyncSearchAlert(subscription: ISubscription) {\n    this.queryController\n      .getEndpoint()\n      .updateSubscription(subscription)\n      .then((updated: ISubscription) => _.extend(subscription, updated))\n      .catch(() => {\n        this.handleSearchAlertsFail();\n      });\n  }\n\n  private triggerSearchAlertsFail() {\n    const eventArgs: ISearchAlertsFailEventArgs = {\n      dom: this.findQueryBoxDom()\n    };\n    $$(this.root).trigger(SearchAlertsEvents.searchAlertsFail, eventArgs);\n  }\n\n  protected findQueryBoxDom(): HTMLElement {\n    let dom: HTMLElement;\n    const components = this.searchInterface.getComponents<Component>('Querybox');\n    if (components && components.length > 0) {\n      dom = _.first(components).element;\n    } else {\n      const components = this.searchInterface.getComponents<Component>('Omnibox');\n      if (components && components.length > 0) {\n        dom = _.first(components).element;\n      }\n    }\n    return dom;\n  }\n\n  private buildFollowQueryRequest(query: IQuery, options: ISearchAlertsOptions): ISubscriptionRequest {\n    const typeConfig: ISubscriptionQueryRequest = {\n      query: query\n    };\n\n    if (options.modifiedDateField) {\n      typeConfig.modifiedDateField = <string>options.modifiedDateField;\n    }\n\n    return {\n      type: SUBSCRIPTION_TYPE.followQuery,\n      typeConfig: typeConfig,\n      name: this.message.getFollowQueryMessage(query.q)\n    };\n  }\n\n  private logAnalyticsEvent(cause: IAnalyticsActionCause, subscription: ISubscription) {\n    this.usageAnalytics.logCustomEvent<IAnalyticsSearchAlertsMeta>(\n      cause,\n      {\n        subscription: subscription.name\n      },\n      this.element\n    );\n  }\n\n  static create(element: HTMLElement, options?: ISearchAlertsOptions, root?: HTMLElement): SearchAlerts {\n    Assert.exists(element);\n    return new SearchAlerts(element, options, (<SearchInterface>get(root, SearchInterface)).getBindings());\n  }\n}\n\nInitialization.registerAutoCreateComponent(SearchAlerts);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/SearchAlerts/SearchAlerts.ts","import 'styling/_Searchbox';\nimport { exportGlobally } from '../../GlobalExports';\nimport { $$ } from '../../utils/Dom';\nimport { SVGDom } from '../../utils/SVGDom';\nimport { SVGIcons } from '../../utils/SVGIcons';\nimport { SearchBoxResize } from '../../utils/SearchBoxResize';\nimport { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { Initialization } from '../Base/Initialization';\nimport { IOmniboxOptions, Omnibox } from '../Omnibox/Omnibox';\nimport { Querybox } from '../Querybox/Querybox';\nimport { SearchButton } from '../SearchButton/SearchButton';\nimport { each, extend } from 'underscore';\n\nexport interface ISearchboxOptions extends IOmniboxOptions {\n  addSearchButton?: boolean;\n  enableOmnibox?: boolean;\n  height?: number;\n}\n\n/**\n * The `Searchbox` component allows you to conveniently instantiate two components which end users frequently use to\n * enter and submit queries.\n *\n * This component attaches itself to a `div` element and takes care of instantiating either a\n * [`Querybox`]{@link Querybox} or an [`Omnibox`]{@link Omnibox} component (see the\n * [`enableOmnibox`]{@link Searchbox.options.enableOmnibox} option). Optionally, the `Searchbox` can also instantiate a\n * [`SearchButton`]{@link SearchButton} component, and append it inside the same `div` (see the\n * [`addSearchButton`]{@link Searchbox.options.addSearchButton} option).\n */\nexport class Searchbox extends Component {\n  static ID = 'Searchbox';\n  static parent = Omnibox;\n\n  static doExport = () => {\n    exportGlobally({\n      Searchbox: Searchbox,\n      SearchButton: SearchButton,\n      Omnibox: Omnibox,\n      Querybox: Querybox\n    });\n  };\n\n  /**\n   * Possible options for the {@link Searchbox}\n   * @componentOptions\n   */\n  static options: ISearchboxOptions = {\n    /**\n     * Specifies whether to instantiate a [`SearchButton`]{@link SearchButton} component.\n     *\n     * Default value is `true`.\n     */\n    addSearchButton: ComponentOptions.buildBooleanOption({ defaultValue: true }),\n    /**\n     * A custom height for the search box (in pixels).\n     *\n     * Note: Avoid setting this option if you want to modify the search box styling through custom CSS.\n     *\n     * Minimum value is `25`\n     *\n     * Default behavior: The most specific CSS rules targeting HTML elements generated by the Searchbox component are used\n     * (e.g., if you are only using the default CoveoFullSearch.css stylesheet with no further styling customizations,\n     * the search box height will be set to 50 pixels by default).\n     *\n     * @availablesince [July 2019 Release (v2.6459)](https://docs.coveo.com/en/2938/)\n     */\n    height: ComponentOptions.buildNumberOption({ min: 25 }),\n\n    /**\n     * Specifies whether to instantiate an [`Omnibox`]{@link Omnibox} component.\n     *\n     * When this option is `false`, the `Searchbox` instantiates a [`Querybox`]{@link Querybox} component instead.\n     *\n     * **Note:**\n     * > You can use configuration options specific to the component you choose to instantiate with the `Searchbox`.\n     *\n     * **Examples:**\n     *\n     * In this first case, the `Searchbox` instantiates a `Querybox` component. You can configure this `Querybox`\n     * instance using any of the `Querybox` component options, such as\n     * [`triggerQueryOnClear`]{@link Querybox.options.triggerQueryOnClear}.\n     * ```html\n     * <div class='CoveoSearchbox' data-trigger-query-on-clear='true'></div>\n     * ```\n     *\n     * In this second case, the `Searchbox` instantiates an `Omnibox` component. You can configure this `Omnibox`\n     * instance using any of the `Omnibox` component options, such as\n     * [`placeholder`]{@link Omnibox.options.placeholder}.\n     * Moreover, since the `Omnibox` component inherits all of the `Querybox` component options, the\n     * `data-trigger-query-on-clear` option from the previous example would also work on this `Omnibox` instance.\n     * ```html\n     * <div class='CoveoSearchbox' data-enable-omnibox='true' data-placeholder='Please enter a query'></div>\n     * ```\n     *\n     * Default value is `true`.\n     */\n    enableOmnibox: ComponentOptions.buildBooleanOption({ defaultValue: true })\n  };\n\n  /**\n   * The [`SearchButton`]{@link SearchButton} component instance.\n   */\n  public searchButton: SearchButton;\n\n  /**\n   * The component instance which allows end users to input queries.\n   *\n   * Can be either a [`Querybox`]{@link Querybox} or an [`Omnibox`]{@link Omnibox} component, depending on the value of\n   * [`enableOmnibox`]{@link Searchbox.options.enableOmnibox}.\n   */\n  public searchbox: Querybox | Omnibox;\n\n  /**\n   * Creates a new `Searchbox` component. Creates a new `Coveo.Magicbox` instance and wraps magic box methods (`onblur`,\n   * `onsubmit`, etc.). Binds event on `buildingQuery` and on redirection (for standalone box).\n   * @param element The HTMLElement on which to instantiate the component. This cannot be an HTMLInputElement for\n   * technical reasons.\n   * @param options The options for the `Searchbox component`. These will merge with the options from the component set\n   * directly on the `HTMLElement`.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time).\n   */\n  constructor(public element: HTMLElement, public options?: ISearchboxOptions, public bindings?: IComponentBindings) {\n    super(element, Searchbox.ID, bindings);\n\n    this.options = ComponentOptions.initComponentOptions(element, Searchbox, options);\n\n    if (this.options.inline) {\n      $$(element).addClass('coveo-inline');\n    }\n\n    this.initSearchBox();\n    this.initSearchButton();\n    this.applyMagicBoxIcon();\n    this.applyCustomHeight();\n  }\n\n  private initSearchBox() {\n    const div = document.createElement('div');\n    this.element.appendChild(div);\n\n    if (this.options.enableOmnibox) {\n      this.searchbox = new Omnibox(div, this.options, this.bindings);\n    } else {\n      this.searchbox = new Querybox(div, this.options, this.bindings);\n    }\n  }\n\n  private initSearchButton() {\n    if (!this.options.addSearchButton) {\n      return;\n    }\n\n    const anchor = $$('a');\n    this.element.appendChild(anchor.el);\n    this.searchButton = new SearchButton(anchor.el, { searchbox: this.searchbox }, this.bindings);\n  }\n\n  private applyMagicBoxIcon() {\n    const magicBoxIcon = $$(this.element).find('.magic-box-icon');\n    magicBoxIcon.innerHTML = SVGIcons.icons.mainClear;\n    SVGDom.addClassToSVGInContainer(magicBoxIcon, 'magic-box-clear-svg');\n  }\n\n  private applyCustomHeight() {\n    if (!this.options.height) {\n      return;\n    }\n\n    $$(this.element).addClass('coveo-custom-height');\n    SearchBoxResize.resize(this.element, this.options.height);\n  }\n}\n\nSearchbox.options = { ...Searchbox.options, ...Omnibox.options, ...Querybox.options };\n\n// Only parse omnibox option if omnibox is enabled\neach(<any>Searchbox.options, (value, key: string) => {\n  if (key in Omnibox.options && !(key in Querybox.options)) {\n    Searchbox.options[key] = extend({ depend: 'enableOmnibox' }, value);\n  }\n});\n\nInitialization.registerAutoCreateComponent(Searchbox);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Searchbox/Searchbox.ts","import PopperJs from 'popper.js';\nimport 'styling/_Settings';\nimport { each, escape, times } from 'underscore';\nimport { InitializationEvents } from '../../events/InitializationEvents';\nimport { SettingsEvents } from '../../events/SettingsEvents';\nimport { exportGlobally } from '../../GlobalExports';\nimport { l } from '../../strings/Strings';\nimport { AccessibleButton } from '../../utils/AccessibleButton';\nimport { $$ } from '../../utils/Dom';\nimport { SVGDom } from '../../utils/SVGDom';\nimport { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { Initialization } from '../Base/Initialization';\nimport { IMenuItem } from '../Menu/MenuItem';\n\nexport interface ISettingsPopulateMenuArgs {\n  settings: Settings;\n  menuData: IMenuItem[];\n}\n\nexport interface ISettingsOptions {\n  menuDelay: number;\n}\n\n/**\n * The Settings component renders a **Settings** button that the end user can click to access a popup menu from which\n * it is possible to perform several contextual actions. The usual location of the **Settings** button in the page is to\n * the right of the {@link Searchbox}.\n *\n * This component can reference several components to populate its popup menu:\n * - {@link AdvancedSearch}\n * - {@link ExportToExcel}\n * - {@link PreferencesPanel} (see also {@link ResultsFiltersPreferences} and {@link ResultsPreferences})\n * - {@link SearchAlerts} (see also {@link SearchAlertsMessage})\n * - {@link ShareQuery}\n */\nexport class Settings extends Component {\n  static ID = 'Settings';\n\n  static doExport = () => {\n    exportGlobally({\n      Settings: Settings\n    });\n  };\n\n  /**\n   * The options for Settings\n   * @componentOptions\n   */\n  static options: ISettingsOptions = {\n    /**\n     * Specifies the delay (in milliseconds) before hiding the popup menu when the cursor is not hovering over it.\n     *\n     * Default value is `300`. Minimum value is `0 `.\n     */\n    menuDelay: ComponentOptions.buildNumberOption({ defaultValue: 300, min: 0 })\n  };\n\n  private menu: HTMLElement;\n  private closeTimeout: number;\n  private isOpened: boolean = false;\n\n  /**\n   * Creates a new Settings component.\n   * @param element The HTMLElement on which to instantiate the component.\n   * @param options The options for the Settings component.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time).\n   */\n  constructor(public element: HTMLElement, public options: ISettingsOptions, bindings?: IComponentBindings) {\n    super(element, Settings.ID, bindings);\n    this.options = ComponentOptions.initComponentOptions(element, Settings, options);\n    this.bind.onRootElement(InitializationEvents.afterInitialization, () => this.init());\n  }\n\n  /**\n   * Opens the **Settings** popup menu.\n   */\n  public open() {\n    this.isOpened = true;\n    if (this.menu != null) {\n      $$(this.menu).detach();\n    }\n\n    this.menu = this.buildMenu();\n    $$(this.menu).insertAfter(this.element);\n\n    new PopperJs(this.element, this.menu, {\n      placement: 'bottom-end',\n      modifiers: {\n        offset: {\n          offset: '0, 5'\n        },\n        preventOverflow: {\n          boundariesElement: this.root\n        }\n      }\n    });\n  }\n\n  /**\n   * Closes the **Settings** popup menu.\n   */\n  public close() {\n    this.isOpened = false;\n    if (this.menu != null) {\n      $$(this.menu).detach();\n      this.menu = null;\n    }\n  }\n\n  private toggle() {\n    if (this.isOpened) {\n      this.close();\n    } else {\n      this.open();\n    }\n  }\n\n  private init() {\n    const square = $$('span', { className: 'coveo-settings-square' }).el;\n    const squares = $$('span', { className: 'coveo-settings-squares' }).el;\n    times(3, () => squares.appendChild(square.cloneNode()));\n    this.element.appendChild(squares);\n\n    new AccessibleButton()\n      .withElement(this.element)\n      .withOwner(this.bind)\n      .withSelectAction(() => this.toggle())\n      .withFocusAndMouseEnterAction(() => this.onfocus())\n      .withBlurAndMouseLeaveAction(() => this.onblur())\n      .withLabel(l('Settings'))\n      .build();\n  }\n\n  private buildMenu(): HTMLElement {\n    const menu = $$('div', { className: 'coveo-settings-advanced-menu' }).el;\n    const settingsPopulateMenuArgs: ISettingsPopulateMenuArgs = {\n      settings: this,\n      menuData: []\n    };\n    $$(this.root).trigger(SettingsEvents.settingsPopulateMenu, settingsPopulateMenuArgs);\n\n    each(settingsPopulateMenuArgs.menuData, menuItem => {\n      const { menuItemElement, menuItemIcon, menuItemText } = this.buildMenuItem(menuItem, settingsPopulateMenuArgs);\n\n      menuItemElement.appendChild(menuItemIcon);\n      menuItemElement.appendChild(menuItemText);\n\n      menu.appendChild(menuItemElement);\n    });\n    return menu;\n  }\n\n  private buildMenuItem(menuItem: IMenuItem, settingsPopulateMenuArgs: ISettingsPopulateMenuArgs) {\n    const menuItemElement = $$('div', {\n      className: `coveo-settings-item ${menuItem.className}`\n    }).el;\n\n    const selectAction = () => {\n      each(settingsPopulateMenuArgs.menuData, menuItem => {\n        menuItem.onClose && menuItem.onClose();\n      });\n      this.close();\n      menuItem.onOpen();\n    };\n\n    new AccessibleButton()\n      .withElement(menuItemElement)\n      .withSelectAction(selectAction)\n      .withFocusAndMouseEnterAction(() => this.onfocus())\n      .withBlurAndMouseLeaveAction(() => this.onblur())\n      .withLabel(menuItem.tooltip || menuItem.text)\n      .build();\n\n    return {\n      menuItemElement,\n      menuItemIcon: this.buildMenuItemIcon(menuItem),\n      menuItemText: this.buildMenuItemText(menuItem)\n    };\n  }\n\n  private buildMenuItemIcon(menuItem: IMenuItem) {\n    const iconElement = $$('div', {\n      className: 'coveo-icon'\n    }).el;\n\n    if (menuItem.svgIcon) {\n      iconElement.innerHTML = menuItem.svgIcon;\n    }\n\n    if (menuItem.svgIconClassName) {\n      SVGDom.addClassToSVGInContainer(iconElement, menuItem.svgIconClassName);\n    }\n\n    return iconElement;\n  }\n\n  private buildMenuItemText(menuItem: IMenuItem) {\n    const textElement = $$(\n      'div',\n      {\n        className: 'coveo-settings-text'\n      },\n      escape(menuItem.text)\n    ).el;\n\n    return textElement;\n  }\n\n  private onblur() {\n    clearTimeout(this.closeTimeout);\n    this.closeTimeout = window.setTimeout(() => {\n      this.close();\n    }, this.options.menuDelay);\n  }\n\n  private onfocus() {\n    clearTimeout(this.closeTimeout);\n  }\n}\nInitialization.registerAutoCreateComponent(Settings);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Settings/Settings.ts","import { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { SettingsEvents } from '../../events/SettingsEvents';\nimport { ISettingsPopulateMenuArgs } from '../Settings/Settings';\nimport { $$ } from '../../utils/Dom';\nimport { l } from '../../strings/Strings';\nimport { Utils } from '../../utils/Utils';\nimport { Initialization } from '../Base/Initialization';\nimport { exportGlobally } from '../../GlobalExports';\nimport { ModalBox as ModalBoxModule } from '../../ExternalModulesShim';\n\nimport 'styling/_ShareQuery';\nimport { SVGIcons } from '../../utils/SVGIcons';\n\nexport interface IShareQueryOptions {}\n\n/**\n * The ShareQuery component populates the {@link Settings} popup menu with the **Share Query** menu item. When the end\n * user clicks this item, it displays a panel containing two input boxes: one containing a shareable link and the other\n * containing the complete current query expression.\n */\nexport class ShareQuery extends Component {\n  static ID = 'ShareQuery';\n  static options: IShareQueryOptions = {};\n\n  static doExport = () => {\n    exportGlobally({\n      ShareQuery: ShareQuery\n    });\n  };\n\n  public dialogBoxContent: HTMLElement;\n  private linkToThisQuery: HTMLInputElement;\n  private completeQuery: HTMLInputElement;\n  private modalbox: Coveo.ModalBox.ModalBox;\n\n  /**\n   * Creates a new ShareQuery component.\n   * @param element The HTMLElement on which to instantiate the component.\n   * @param options The options for the ShareQuery component.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time).\n   */\n  constructor(\n    public element: HTMLElement,\n    public options: IShareQueryOptions,\n    bindings?: IComponentBindings,\n    private ModalBox = ModalBoxModule\n  ) {\n    super(element, ShareQuery.ID, bindings);\n\n    this.bind.onRootElement(SettingsEvents.settingsPopulateMenu, (args: ISettingsPopulateMenuArgs) => {\n      args.menuData.push({\n        className: 'coveo-share-query',\n        text: l('ShareQuery'),\n        onOpen: () => this.open(),\n        onClose: () => this.close(),\n        svgIcon: SVGIcons.icons.dropdownShareQuery,\n        svgIconClassName: 'coveo-share-query-svg'\n      });\n    });\n  }\n\n  /**\n   * Open the **Share Query** modal box.\n   */\n  public open() {\n    if (this.modalbox == null) {\n      this.dialogBoxContent = this.buildContent();\n      this.modalbox = this.ModalBox.open(this.dialogBoxContent, {\n        title: l('ShareQuery'),\n        className: 'coveo-share-query-opened',\n        body: this.searchInterface.options.modalContainer\n      });\n    }\n  }\n\n  /**\n   * Close the **Share Query** modal box.\n   */\n  public close() {\n    if (this.modalbox) {\n      this.modalbox.close();\n      this.modalbox = null;\n    }\n  }\n\n  /**\n   * Gets the link to the current query.\n   */\n  public getLinkToThisQuery(): string {\n    if (!this.linkToThisQuery) {\n      this.buildLinkToThisQuery();\n    }\n    return this.linkToThisQuery.value;\n  }\n\n  /**\n   * Sets the link to the current query.\n   */\n  public setLinkToThisQuery(link: string): void {\n    if (!this.linkToThisQuery) {\n      this.buildLinkToThisQuery();\n    }\n    this.linkToThisQuery.value = link;\n  }\n\n  /**\n   * Gets the complete query expression string\n   */\n  public getCompleteQuery(): string {\n    if (!this.completeQuery) {\n      this.buildCompleteQuery();\n    }\n    return this.completeQuery.value;\n  }\n\n  /**\n   * Set the complete query expression string.\n   */\n  public setCompleteQuery(completeQuery: string) {\n    if (!this.completeQuery) {\n      this.buildCompleteQuery();\n    }\n    this.completeQuery.value = completeQuery;\n  }\n\n  private outputIfNotNull(value: string): string {\n    if (value) {\n      return '(' + value + ')';\n    }\n    return '';\n  }\n\n  private buildContent(): HTMLElement {\n    const content = $$('div', {\n      className: 'coveo-share-query-summary-info'\n    }).el;\n\n    const boxes = $$('div', {\n      className: 'coveo-share-query-summary-info-boxes'\n    }).el;\n\n    this.buildLinkToThisQuery();\n    this.buildCompleteQuery();\n\n    boxes.appendChild(this.buildTextBoxWithLabel(l('Link'), this.linkToThisQuery));\n    boxes.appendChild(this.buildTextBoxWithLabel(l('CompleteQuery'), this.completeQuery));\n    content.appendChild(boxes);\n\n    Component.pointElementsToDummyForm(content);\n\n    return content;\n  }\n\n  private buildCompleteQuery() {\n    this.completeQuery = <HTMLInputElement>$$('input', {\n      type: 'text',\n      className: 'coveo-share-query-summary-info-input'\n    }).el;\n\n    const lastQuery = this.queryController.getLastQuery();\n    this.completeQuery.value = Utils.trim(\n      `${this.outputIfNotNull(lastQuery.q)} ${this.outputIfNotNull(lastQuery.aq)} ${this.outputIfNotNull(lastQuery.cq)}`\n    );\n  }\n\n  private buildLinkToThisQuery() {\n    this.linkToThisQuery = <HTMLInputElement>$$('input', {\n      type: 'text',\n      className: 'coveo-share-query-summary-info-input'\n    }).el;\n\n    $$(this.linkToThisQuery).on('click', () => this.linkToThisQuery.select());\n    this.linkToThisQuery.value = window.location.href;\n  }\n\n  private buildTextBoxWithLabel(label: string, input: HTMLInputElement): HTMLElement {\n    const labelElement = $$('span', {\n      className: 'coveo-share-query-summary-info-label'\n    });\n    labelElement.text(label);\n\n    const returnDiv = $$('div').el;\n    returnDiv.appendChild(labelElement.el);\n    returnDiv.appendChild(input);\n    return returnDiv;\n  }\n}\n\nInitialization.registerAutoCreateComponent(ShareQuery);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ShareQuery/ShareQuery.ts","import { each } from 'underscore';\nimport { exportGlobally } from '../../GlobalExports';\nimport { Assert } from '../../misc/Assert';\nimport { IQueryResult } from '../../rest/QueryResult';\nimport { $$ } from '../../utils/Dom';\nimport { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { IInitializationParameters, Initialization } from '../Base/Initialization';\nimport { TemplateComponentOptions } from '../Base/TemplateComponentOptions';\nimport { Template } from '../Templates/Template';\n\nexport interface ITemplateLoaderOptions {\n  template: Template;\n  condition?: String;\n}\n\n/**\n * The TemplateLoader component can load one result template into another. You should normally declare any reusable\n * result template outside of the {@link ResultList} component. Otherwise, the framework will evaluate the\n * `data-condition` of the reusable result template and possibly render it.\n *\n * **Example:**\n *\n * ```html\n * [ ... ]\n *\n * <!-- A reusable result template. Note that it is important to declare it outside of the ResultList component. -->\n * <script type='text/underscore' class='result-template' id='ReusableTemplate'>\n *   <table class='CoveoFieldTable'>\n *     <tr data-field='@source' data-caption='Source'></tr>\n *     <tr data-field='@percentScore' data-caption='Score'></tr>\n *   </table>\n * </script>\n *\n * [ ... ]\n *\n * <div class=\"CoveoResultList\" data-wait-animation=\"fade\" data-auto-select-fields-to-include=\"true\">\n *\n *   <!-- A custom result template for Lithium messages. -->\n *   <script type='text/underscore' class='result-template' data-condition='raw.filetype == \"lithiummessage\"'>\n *     <div>\n *       <img class='CoveoIcon' data-small='true'>\n *       <a class='CoveoResultLink'></a>\n *       <div class='CoveoTemplateLoader' data-template-id='ReusableTemplate'></div>\n *     </div>\n *   </script>\n *\n *   <!-- A custom result template for images. -->\n *   <script type='text/underscore' class='result-template' data-condition='raw.filetype == \"Image\"'>\n *     <div>\n *       <img class='CoveoIcon' data-small='true'></img>\n *         <a class='CoveoResultLink'>\n *           <img class='CoveoThumbnail'>\n *         </a>\n *       <div class='CoveoTemplateLoader' data-template-id='ReusableTemplate'></div>\n *     </div>\n *   </script>\n * </div>\n *\n * [ ... ]\n * ```\n *\n * See [Result Templates](https://docs.coveo.com/en/413/).\n */\nexport class TemplateLoader extends Component {\n  static ID = 'TemplateLoader';\n\n  static doExport = () => {\n    exportGlobally({\n      TemplateLoader: TemplateLoader\n    });\n  };\n\n  /**\n   * The possible options for a TemplateLoader.\n   * @componentOptions\n   */\n  static options: ITemplateLoaderOptions = {\n    /**\n     * Specifies how to find the template. This can be either a CSS selector or an HTML `id` attribute.\n     *\n     * **Examples:**\n     *\n     * - With a CSS selector: `data-template-selector='.MySelector'`\n     * - With an HTML `id`: `data-template-id='MyId'`\n     */\n    template: TemplateComponentOptions.buildTemplateOption(),\n\n    /**\n     * Specifies the boolean condition that the result must satisfy in order for the template to load.\n     *\n     * **Example:**\n     *\n     * `data-condition='percentScore > 80'`\n     */\n    condition: ComponentOptions.buildStringOption()\n  };\n\n  /**\n   * Creates a new TemplateLoader.\n   * @param element The HTMLElement on which to instantiate the component.\n   * @param options The options for the TemplateLoader component.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time).\n   * @param result The result to associate the component with.\n   */\n  constructor(\n    public element: HTMLElement,\n    public options?: ITemplateLoaderOptions,\n    public bindings?: IComponentBindings,\n    public result?: IQueryResult\n  ) {\n    super(element, TemplateLoader.ID, bindings);\n    this.options = ComponentOptions.initComponentOptions(element, TemplateLoader, options);\n    this.result = this.result || this.resolveResult();\n    Assert.exists(this.result);\n\n    if (this.options.condition != null) {\n      var conditionFunction = new Function('obj', 'with(obj||{}){return ' + this.options.condition + '}');\n      if (conditionFunction(this.result)) {\n        this.initialize();\n      }\n    } else {\n      this.initialize();\n    }\n  }\n\n  private initialize() {\n    if (this.options.template != null) {\n      var initOptions = this.searchInterface.options;\n      var initParameters: IInitializationParameters = {\n        options: initOptions,\n        bindings: this.bindings,\n        result: this.result\n      };\n\n      var parents = $$(this.element).parents(Component.computeCssClassName(TemplateLoader));\n      each(parents, (parent: HTMLElement) => {\n        let clone = <HTMLElement>parent.cloneNode();\n        $$(clone).empty();\n        let outerHTMLParent = clone.outerHTML;\n        Assert.check(outerHTMLParent.indexOf(this.element.outerHTML) === -1, 'TemplateLoader cannot load a template into itself.');\n      });\n\n      this.element.innerHTML = this.options.template.instantiateToString(this.result, {\n        checkCondition: false,\n        responsiveComponents: this.bindings ? this.bindings.searchInterface.responsiveComponents : null\n      });\n      Initialization.automaticallyCreateComponentsInside(this.element, initParameters);\n    }\n  }\n}\n\nInitialization.registerAutoCreateComponent(TemplateLoader);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/TemplateLoader/TemplateLoader.ts","import 'styling/_Text';\nimport { exportGlobally } from '../../GlobalExports';\nimport { $$ } from '../../utils/Dom';\nimport { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { Initialization } from '../Base/Initialization';\n\nexport interface ITextOptions {\n  value?: string;\n  size?: string;\n  style?: string;\n  color?: string;\n  weight?: string;\n  textAlign?: string;\n\n  marginTop?: string;\n  marginBottom?: string;\n  marginLeft?: string;\n  marginRight?: string;\n\n  paddingTop?: string;\n  paddingBottom?: string;\n  paddingLeft?: string;\n  paddingRight?: string;\n}\n\n/**\n * The Text component embeds itself in a result template to output a simple text value.\n *\n * The only purpose of this component is to make it possible to easily add different text values to result templates\n * when using the Coveo JavaScript Search Interface Editor (see\n * [Interface Editor](https://docs.coveo.com/en/1852/)).\n *\n * If you are not designing a search interface using the Coveo JavaScript Search Interface Editor, using this component\n * is unnecessary.\n *\n * This component is a result template component (see [Result Templates](https://docs.coveo.com/en/413/)).\n */\nexport class Text extends Component {\n  static ID = 'Text';\n\n  static doExport = () => {\n    exportGlobally({\n      Text: Text\n    });\n  };\n\n  /**\n   * @componentOptions\n   */\n  static options: ITextOptions = {\n    /**\n     * Specifies the localized string value that the component should render.\n     */\n    value: ComponentOptions.buildLocalizedStringOption(),\n\n    /**\n     * Specifies the size of the text (set as the `font-size` CSS property).\n     */\n    size: ComponentOptions.buildStringOption(),\n\n    /**\n     * Specifies the style of the text (set as the `font-style` CSS property).\n     */\n    style: ComponentOptions.buildStringOption(),\n\n    /**\n     * Specifies the color of the text (set as the `color` CSS property).\n     */\n    color: ComponentOptions.buildStringOption(),\n\n    /**\n     * Specifies the weight of the text (set as the `font-weight` CSS property).\n     */\n    weight: ComponentOptions.buildStringOption(),\n\n    /**\n     * Specifies the alignment of the text (set as the `text-align` CSS property).\n     */\n    textAlign: ComponentOptions.buildStringOption(),\n\n    /**\n     * Specifies the top margin of the text (set as the `margin-top` CSS property).\n     */\n    marginTop: ComponentOptions.buildStringOption(),\n\n    /**\n     * Specifies the bottom margin of the text (set as the `margin-bottom` CSS property).\n     */\n    marginBottom: ComponentOptions.buildStringOption(),\n\n    /**\n     * Specifies the left margin of the text (set as the `margin-left` CSS property).\n     */\n    marginLeft: ComponentOptions.buildStringOption(),\n\n    /**\n     * Specifies the right margin of the text (set as the `margin-right` CSS property).\n     */\n    marginRight: ComponentOptions.buildStringOption(),\n\n    /**\n     * Specifies the top padding of the text (set as the `padding-top` CSS property).\n     */\n    paddingTop: ComponentOptions.buildStringOption(),\n\n    /**\n     * Specifies the bottom padding of the text (set as the `padding-bottom` CSS property).\n     */\n    paddingBottom: ComponentOptions.buildStringOption(),\n\n    /**\n     * Specifies the left padding of the text (set as the `padding-left` CSS property).\n     */\n    paddingLeft: ComponentOptions.buildStringOption(),\n\n    /**\n     * Specifies the right padding of the text (set as the `padding-right` CSS property).\n     */\n    paddingRight: ComponentOptions.buildStringOption()\n  };\n\n  /**\n   * Creates a new Text component.\n   * @param element The HTMLElement on which to instantiate the component.\n   * @param options The options for the Text component.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time).\n   */\n  constructor(public element: HTMLElement, public options?: ITextOptions, bindings?: IComponentBindings) {\n    super(element, Text.ID, bindings);\n    this.options = ComponentOptions.initComponentOptions(element, Text, options);\n    $$(this.element).text(this.options.value);\n    this.element.style.fontSize = this.options.size;\n    this.element.style.fontStyle = this.options.style;\n    this.element.style.color = this.options.color;\n    this.element.style.fontWeight = this.options.weight;\n    this.element.style.textAlign = this.options.textAlign;\n    this.element.style.marginTop = this.options.marginTop;\n    this.element.style.marginBottom = this.options.marginBottom;\n    this.element.style.marginRight = this.options.marginRight;\n    this.element.style.marginLeft = this.options.marginLeft;\n    this.element.style.paddingTop = this.options.paddingTop;\n    this.element.style.paddingBottom = this.options.paddingBottom;\n    this.element.style.paddingLeft = this.options.paddingLeft;\n    this.element.style.paddingRight = this.options.paddingRight;\n  }\n}\n\nInitialization.registerAutoCreateComponent(Text);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Text/Text.ts","import * as _ from 'underscore';\nimport { exportGlobally } from '../../GlobalExports';\nimport { IQueryResult } from '../../rest/QueryResult';\nimport { ISearchEndpoint } from '../../rest/SearchEndpointInterface';\nimport { $$ } from '../../utils/Dom';\nimport { QueryUtils } from '../../utils/QueryUtils';\nimport { Component } from '../Base/Component';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { Initialization } from '../Base/Initialization';\nimport { get } from '../Base/RegisteredNamedMethods';\nimport { IResultsComponentBindings } from '../Base/ResultsComponentBindings';\nimport { Icon } from '../Icon/Icon';\nimport { ResultLink } from '../ResultLink/ResultLink';\nimport { IResultLinkOptions } from '../ResultLink/ResultLinkOptions';\nimport { FieldTable } from '../FieldTable/FieldTable';\nimport { l } from '../../strings/Strings';\n\nexport interface IThumbnailOptions extends IResultLinkOptions {\n  noThumbnailClass?: string;\n  clickable?: boolean;\n}\n\n/**\n * The Thumbnail component automatically fetches the thumbnail of the result object and outputs an HTML `img` tag with\n * it.\n * @notSupportedIn salesforcefree\n */\nexport class Thumbnail extends Component {\n  static ID = 'Thumbnail';\n\n  static doExport = () => {\n    exportGlobally({\n      Thumbnail: Thumbnail\n    });\n  };\n\n  /**\n   * Options for the Thumbnail\n   * @componentOptions\n   */\n  static options: IThumbnailOptions = {\n    /**\n     * Specifies the CSS class to use on the `img` tag that the Thumbnail component outputs when a result has no\n     * thumbnail in the index.\n     *\n     * Default value is `coveo-no-thumbnail`.\n     */\n    noThumbnailClass: ComponentOptions.buildStringOption({ defaultValue: 'coveo-no-thumbnail' }),\n\n    /**\n     * Specifies whether to create a clickable {@link ResultLink} around the Thumbnail.\n     *\n     * Default value is `false`.\n     *\n     * If set to true, you can use the options specified on {@link ResultLink.options}\n     */\n    clickable: ComponentOptions.buildBooleanOption({ defaultValue: false })\n  };\n\n  static parent = ResultLink;\n\n  public img: HTMLImageElement;\n\n  /**\n   * Creates a new Thumbnail component.\n   * @param element The HTMLElement on which to instantiate the component.\n   * @param options The options for the Thumbnail component.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time).\n   * @param result The result to associate the component with.\n   */\n  constructor(\n    public element: HTMLElement,\n    public options?: IThumbnailOptions,\n    public bindings?: IResultsComponentBindings,\n    public result?: IQueryResult\n  ) {\n    super(element, Thumbnail.ID, bindings);\n\n    this.options = ComponentOptions.initOptions(element, <any>Thumbnail.options, options, Thumbnail.ID);\n\n    if (this.element.tagName.toLowerCase() != 'img') {\n      this.img = <HTMLImageElement>$$('img').el;\n      this.element.appendChild(this.img);\n    } else {\n      this.img = <HTMLImageElement>this.element;\n    }\n\n    if (this.options.clickable) {\n      if (this.element.tagName.toLowerCase() != 'img') {\n        new ResultLink(this.element, this.options, this.bindings, this.result);\n      } else {\n        let href = $$('a');\n        $$(this.element).replaceWith(href.el);\n        $$(href).append(this.element);\n        new ResultLink(href.el, this.options, this.bindings, this.result);\n      }\n    }\n\n    // We need to set src to a blank image right away to avoid the image from\n    // changing size once it's loaded. Also, doing this prevents a border from\n    // appearing on some browsers when there is no thumbnail. I've found no other\n    // way to get rid of it...\n    this.img.setAttribute('src', 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==');\n\n    if (QueryUtils.hasThumbnail(result)) {\n      this.buildThumbnailImage();\n    } else {\n      this.logger.info('Result has no thumbnail. Cannot build thumbnail image, instanciating an Icon component instead.');\n      const icn = new Icon($$('div').el, { small: true }, bindings, result);\n      $$(this.element).replaceWith(icn.element);\n    }\n  }\n\n  private buildThumbnailImage() {\n    let endpoint = this.bindings.queryController.getEndpoint();\n\n    if (endpoint.isJsonp()) {\n      // For jsonp we can't GET/POST for binary data. We are limited\n      // to only setting the src attribute directly on the img.\n      this.buildImageWithDirectSrcAttribute(endpoint);\n    } else {\n      // Base 64 img allows us to GET/POST the image as raw binary, so that we can also\n      // pass the credential of the user. Useful for phonegap among others.\n      this.buildImageWithBase64SrcAttribute(endpoint);\n    }\n\n    this.makeAccessible();\n  }\n\n  private buildImageWithDirectSrcAttribute(endpoint: ISearchEndpoint) {\n    let dataStreamUri = endpoint.getViewAsDatastreamUri(this.result.uniqueId, '$Thumbnail$', {\n      contentType: 'image/png'\n    });\n    this.img.setAttribute('src', dataStreamUri);\n    this.resizeContainingFieldTable();\n  }\n\n  private buildImageWithBase64SrcAttribute(endpoint: ISearchEndpoint) {\n    endpoint\n      .getRawDataStream(this.result.uniqueId, '$Thumbnail$')\n      .then(response => {\n        let rawBinary = String.fromCharCode.apply(null, new Uint8Array(response));\n        this.img.setAttribute('src', 'data:image/png;base64, ' + btoa(rawBinary));\n        this.resizeContainingFieldTable();\n      })\n      .catch(() => {\n        this.setEmptyThumbnailClass();\n      });\n  }\n\n  private makeAccessible() {\n    this.img.setAttribute('alt', l('ThumbnailOf', this.result.title));\n  }\n\n  private resizeContainingFieldTable() {\n    const className = Component.computeCssClassNameForType('FieldTable');\n    let closestFieldTableElement = $$(this.element).closest(className);\n    if (closestFieldTableElement != null) {\n      let fieldTable = <FieldTable>get(closestFieldTableElement);\n      fieldTable.updateToggleHeight();\n    }\n  }\n\n  private setEmptyThumbnailClass() {\n    $$(this.img).addClass(this.options.noThumbnailClass);\n  }\n}\n\nThumbnail.options = _.extend({}, ResultLink.options, Thumbnail.options);\n\nInitialization.registerAutoCreateComponent(Thumbnail);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Thumbnail/Thumbnail.ts","import { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { Assert } from '../../misc/Assert';\nimport { QueryEvents, IQuerySuccessEventArgs } from '../../events/QueryEvents';\nimport { ITriggerNotify, ITriggerExecute, ITriggerRedirect, ITriggerQuery, ITrigger } from '../../rest/Trigger';\nimport { $$ } from '../../utils/Dom';\nimport {\n  IAnalyticsTriggerNotify,\n  analyticsActionCauseList,\n  IAnalyticsTriggerRedirect,\n  IAnalyticsTriggerQuery,\n  IAnalyticsTriggerExecute\n} from '../Analytics/AnalyticsActionListMeta';\nimport { QueryStateModel } from '../../models/QueryStateModel';\nimport { Initialization } from '../Base/Initialization';\nimport { object, map, filter, each, take } from 'underscore';\nimport { exportGlobally } from '../../GlobalExports';\n\nimport 'styling/_Triggers';\n\nexport interface ITriggersOptions {}\n\n/**\n * The Triggers component enables the use of triggers (`notify`, `execute`, `query`, `redirect`) generated by the Coveo\n * Search API (see [Trigger](https://docs.coveo.com/en/1458/)) in the query pipeline (see\n * [Managing the Query Pipeline](https://docs.coveo.com/en/1450/)).\n *\n * Note: adding the Triggers component gives query pipeline administrators the power to influence users' search experience.\n * Bad actors will be able to perform XSS attacks, or redirect users to dangerous sites. Make sure only individuals you trust\n * have query pipeline edit privileges.\n */\nexport class Triggers extends Component {\n  static ID = 'Triggers';\n  static options: ITriggersOptions = {};\n\n  static doExport = () => {\n    exportGlobally({\n      Triggers: Triggers\n    });\n  };\n\n  /**\n   * The list of notifications returned by the Search API for the current query (via `notify` triggers).\n   *\n   * The Triggers component automatically renders this list visually.\n   */\n  public notifications: string[];\n\n  /**\n   * Creates a new Triggers component.\n   * @param element The HTMLElement on which to instantiate the component.\n   * @param options The options for the Triggers component.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time).\n   * @param _window The window on which to execute the triggers.\n   */\n  constructor(\n    public element: HTMLElement,\n    public options?: ITriggersOptions,\n    public bindings?: IComponentBindings,\n    public _window?: Window\n  ) {\n    super(element, Triggers.ID, bindings);\n\n    this._window = this._window || window;\n    this.options = ComponentOptions.initComponentOptions(element, Triggers, options);\n    Assert.exists(element);\n    Assert.exists(this.options);\n\n    this.notifications = [];\n\n    this.bind.onRootElement(QueryEvents.querySuccess, this.handleProcessNewQueryResults);\n  }\n\n  private handleProcessNewQueryResults(data: IQuerySuccessEventArgs) {\n    Assert.exists(data);\n    Assert.exists(data.results);\n\n    $$(this.element).empty();\n    this.notifications.length = 0;\n    let showElement = false;\n\n    if (data.results.triggers === undefined) {\n      $$(this.element).toggleClass('coveo-visible', showElement);\n      return;\n    }\n\n    this.executeTriggers(data.results.triggers, 'notify', (trigger: ITriggerNotify) => {\n      this.usageAnalytics.logCustomEvent<IAnalyticsTriggerNotify>(\n        analyticsActionCauseList.triggerNotify,\n        {\n          notification: trigger.content\n        },\n        this.element\n      );\n\n      this.notifications.push(trigger.content);\n      this.element.appendChild($$('div', { className: 'coveo-trigger-notify' }, trigger.content).el);\n\n      showElement = true;\n    });\n\n    this.executeTriggers(\n      data.results.triggers,\n      'redirect',\n      (trigger: ITriggerRedirect) => {\n        this.usageAnalytics.logCustomEvent<IAnalyticsTriggerRedirect>(\n          analyticsActionCauseList.triggerRedirect,\n          {\n            redirectedTo: trigger.content\n          },\n          this.element\n        );\n\n        this._window.location.replace(trigger.content);\n      },\n      true\n    );\n\n    this.executeTriggers(\n      data.results.triggers,\n      'query',\n      (trigger: ITriggerQuery) => {\n        this.queryStateModel.set(QueryStateModel.attributesEnum.q, trigger.content);\n        this.queryController.executeQuery({\n          beforeExecuteQuery: () => {\n            this.usageAnalytics.logCustomEvent<IAnalyticsTriggerQuery>(\n              analyticsActionCauseList.triggerQuery,\n              {\n                query: trigger.content\n              },\n              this.element\n            );\n          }\n        });\n      },\n      true\n    );\n\n    this.executeTriggers(data.results.triggers, 'execute', (trigger: ITriggerExecute) => {\n      try {\n        let func: Function = this._window['' + trigger.content.name];\n        if (typeof func === 'function') {\n          let params = object(\n            map(trigger.content.params, (value, index) => {\n              return ['param' + (index + 1), value];\n            })\n          );\n          params['element'] = this.element;\n\n          this.usageAnalytics.logCustomEvent<IAnalyticsTriggerExecute>(\n            analyticsActionCauseList.triggerExecute,\n            {\n              executed: trigger.content.name\n            },\n            this.element\n          );\n\n          func.apply(this._window, [params]);\n        } else {\n          this.logger.error(\n            `A trigger tried to call the function '${trigger.content.name}', which doesn't exist.`,\n            this,\n            data.query,\n            trigger\n          );\n        }\n      } catch (error) {\n        this.logger.error(`A trigger called the function '${trigger.content.name}', which threw an error.`, this, data.query, trigger);\n      }\n    });\n\n    $$(this.element).toggleClass('coveo-visible', showElement);\n  }\n\n  private executeTriggers(trigger: ITrigger<any>[], type: string, func: (trigger: ITrigger<any>) => any, single: boolean = false) {\n    let triggersOfType = filter(trigger, (trigger: ITrigger<any>) => {\n      return trigger.type == type;\n    });\n    let oneOrAllTriggers = take(triggersOfType, single ? 1 : Number.MAX_VALUE);\n\n    each(oneOrAllTriggers, func);\n  }\n}\n\nInitialization.registerAutoCreateComponent(Triggers);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Triggers/Triggers.ts","import 'styling/_SimpleFilter';\nimport { contains, each, filter, keys, map } from 'underscore';\nimport { BreadcrumbEvents, IPopulateBreadcrumbEventArgs } from '../../events/BreadcrumbEvents';\nimport { IBuildingQueryEventArgs, IDoneBuildingQueryEventArgs, IQuerySuccessEventArgs, QueryEvents } from '../../events/QueryEvents';\nimport { exportGlobally } from '../../GlobalExports';\nimport { Assert } from '../../misc/Assert';\nimport { Logger } from '../../misc/Logger';\nimport { l } from '../../strings/Strings';\nimport { getHeadingTag } from '../../utils/AccessibilityUtils';\nimport { AccessibleButton } from '../../utils/AccessibleButton';\nimport { $$, Dom } from '../../utils/Dom';\nimport { SVGDom } from '../../utils/SVGDom';\nimport { SVGIcons } from '../../utils/SVGIcons';\nimport { analyticsActionCauseList, IAnalyticsSimpleFilterMeta } from '../Analytics/AnalyticsActionListMeta';\nimport { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { IFieldOption } from '../Base/IComponentOptions';\nimport { Initialization } from '../Base/Initialization';\nimport { FacetSortCriterion } from '../Facet/FacetSortCriterion';\nimport { FacetUtils } from '../Facet/FacetUtils';\nimport { Checkbox } from '../FormWidgets/Checkbox';\nimport { SimpleFilterValues } from './SimpleFilterValues';\n\nexport interface ISimpleFilterOptions {\n  title: string;\n  values: string[];\n  field: IFieldOption;\n  valueCaption: any;\n  maximumNumberOfValues: number;\n  sortCriteria: string;\n  enableClearButton?: boolean;\n}\n\ninterface ILabeledCheckbox {\n  checkbox: Checkbox;\n  label: string;\n}\n\n/**\n * The `SimpleFilter` component displays a dropdown menu containing field values which the end user can select to filter\n * the query results.\n *\n * The list of available field values in the dropdown menu can either be static (defined through the\n * [`values`]{@link SimpleFilter.options.values} option), or dynamic (automatically obtained through a\n * [`GroupByRequest`]{@link IGroupByRequest} operation performed at the same time as the main query).\n *\n * @availablesince [November 2017 Release (v2.3477.9)](https://docs.coveo.com/en/373/#november-2017-release-v234779)\n */\nexport class SimpleFilter extends Component {\n  static ID = 'SimpleFilter';\n  static doExport = () => {\n    exportGlobally({\n      SimpleFilter\n    });\n  };\n\n  static simpleFilterSortCritera() {\n    return ['score', 'occurrences', 'alphaascending', 'alphadescending', 'chisquare'];\n  }\n  /**\n   * The possible options for the SimpleFilter.\n   * @componentOptions\n   */\n  static options: ISimpleFilterOptions = {\n    /**\n     * Specifies the maximum number of field values to display in the `SimpleFilter` dropdown menu.\n     *\n     * Default value is `5`. Minimum value is `0`.\n     */\n    maximumNumberOfValues: ComponentOptions.buildNumberOption({ defaultValue: 5, min: 0 }),\n\n    /**\n     * Specifies a static list of field values to display in the `SimpleFilter` dropdown menu.\n     *\n     * This option is undefined by default, which means that the component generates a dynamic list of field values\n     * by performing a [`GroupByRequest`]{@link IGroupByRequest} operation at the same time as the main query.\n     */\n    values: ComponentOptions.buildListOption<string>(),\n\n    /**\n     * Specifies the field whose values the `SimpleFilter` should output result filters from.\n     *\n     * Specifying a value for this option is required for the `SimpleFilter` component to work.\n     */\n    field: ComponentOptions.buildFieldOption({ required: true }),\n\n    /**\n     * Specifies the title to display for the `SimpleFilter`.\n     *\n     * Default value is the localized string for `NoTitle`.\n     */\n    title: ComponentOptions.buildLocalizedStringOption({ localizedString: () => l('NoTitle') }),\n\n    /**\n     * Specifies a JSON object describing a mapping of `SimpleFilter` values to their desired captions.\n     *\n     * **Examples:**\n     *\n     * * You can set the option in the ['init']{@link init} call:\n     * ```javascript\n     * var myValueCaptions = {\n     *   \"txt\" : \"Text files\",\n     *   \"html\" : \"Web page\",\n     *   [ ... ]\n     * };\n     *\n     * Coveo.init(document.querySelector(\"#search\"), {\n     *   SimpleFilter : {\n     *     valueCaption : myValueCaptions\n     *   }\n     * });\n     * ```\n     *\n     * * Or before the `init` call, using the ['options']{@link options} top-level function:\n     * ```javascript\n     * Coveo.options(document.querySelector(\"#search\"), {\n     *   SimpleFilter : {\n     *     valueCaption : myValueCaptions\n     *   }\n     * });\n     * ```\n     *\n     * * Or directly in the markup:\n     * ```html\n     * <!-- Ensure that the double quotes are properly handled in `data-value-caption`. -->\n     * <div class='CoveoSimpleFilter' data-field='@myotherfield' data-value-caption='{\"txt\":\"Text files\",\"html\":\"Web page\"}'></div>\n     * ```\n     */\n    valueCaption: ComponentOptions.buildJsonOption(),\n    /**\n     *\n     * string?\n     * The sort criteria to use.\n     *\n     * **Default:** `score`\n     *\n     * **Allowed values:**\n     *\n     * `score`: sort using the score value which is computed from the number of occurrences of a field value, as well as from the position\n     * where query result items having this field value appear in the ranked query result set. When using this sort criterion, a field value\n     * with 100 occurrences might appear after one with only 10 occurrences, if the occurrences of the latter field value tend to appear higher\n     * in the ranked query result set.\n     *\n     * `occurrences`: sort by number of occurrences, with field values having the highest number of occurrences appearing first.\n     *\n     * `alphaascending/alphadescending`: sort alphabetically on the field values.\n     *\n     * `chisquare`: sort based on the relative frequency of field values in the query result set compared to their frequency in the entire index. This means that a field value that does\n     * not appear often in the index, but does appear often in the query result set will tend to appear higher.\n     *\n     * @availablesince [July 2019 Release (v2.6459)](https://docs.coveo.com/en/2938/)\n     *\n     */\n    sortCriteria: ComponentOptions.buildStringOption<FacetSortCriterion>({\n      postProcessing: (value, options: ISimpleFilterOptions) => {\n        const sortCriteriaToValidate = value || 'score';\n        if (SimpleFilter.simpleFilterSortCritera().indexOf(sortCriteriaToValidate.toLowerCase()) !== -1) {\n          return sortCriteriaToValidate;\n        } else {\n          new Logger(SimpleFilter).warn(\n            `The simpleFilter component doesn't accept ${sortCriteriaToValidate} as the value for the sortCriteria option.`,\n            `Available option are : ${SimpleFilter.simpleFilterSortCritera().toString()}`\n          );\n          return 'score';\n        }\n      }\n    }),\n    /**\n     * Whether to show a button to clear all selected values.\n     *\n     * @availablesince [March 2020 Release (v2.8521)](https://docs.coveo.com/en/3203/)\n     */\n    enableClearButton: ComponentOptions.buildBooleanOption({ defaultValue: false })\n  };\n\n  private valueContainer: Dom;\n  private checkboxes: ILabeledCheckbox[];\n  private previouslySelected: string[] = [];\n  private circleElement: Dom;\n  private clearElement: Dom;\n  private backdrop: Dom;\n  private selectTitle: Dom;\n  private groupByRequestValues: string[] = [];\n  private isSticky: boolean = false;\n  private groupByBuilder: SimpleFilterValues;\n  private shouldTriggerQuery = true;\n\n  /**\n   * Creates a new `SimpleFilter` component. Binds multiple query events as well.\n   * @param element the HTMLElement on which to instantiate the component.\n   * @param options The options for the `SimpleFilter` component.\n   * @param bindings The bindings that the component requires to function normally.\n   */\n  constructor(public element: HTMLElement, public options: ISimpleFilterOptions, public bindings?: IComponentBindings) {\n    super(element, SimpleFilter.ID, bindings);\n    this.options = ComponentOptions.initComponentOptions(element, SimpleFilter, options);\n    this.element.title = this.options.title;\n    this.buildContent();\n\n    new AccessibleButton()\n      .withElement(this.element)\n      .withClickAction((e: Event) => this.handleClick(e))\n      .withEnterKeyboardAction((e: KeyboardEvent) => this.handleKeyboardSelect(e))\n      .withBlurAction((e: MouseEvent) => this.handleBlur(e))\n      .withLabel(this.options.title)\n      .build();\n\n    this.bind.onRootElement(BreadcrumbEvents.populateBreadcrumb, (args: IPopulateBreadcrumbEventArgs) =>\n      this.handlePopulateBreadcrumb(args)\n    );\n    this.bind.onRootElement(BreadcrumbEvents.clearBreadcrumb, () => this.handleClearBreadcrumb());\n    this.bind.onRootElement(QueryEvents.buildingQuery, (args: IBuildingQueryEventArgs) => this.handleBuildingQuery(args));\n    this.bind.onRootElement(QueryEvents.doneBuildingQuery, (args: IDoneBuildingQueryEventArgs) => this.handleDoneBuildingQuery(args));\n    this.bind.onRootElement(QueryEvents.querySuccess, (args: IQuerySuccessEventArgs) => this.handleQuerySuccess(args));\n  }\n\n  /**\n   * Gets the `SimpleFilter` `valueContainer`.\n   * @returns {Dom} The `SimpleFilter` valueContainer.\n   */\n  public getValueContainer(): Dom {\n    return this.valueContainer;\n  }\n\n  /**\n   * Gets the caption of a specific field value.\n   * @param value The field value whose caption the method should attempt to get.\n   * @returns {any} The value caption, if available; the original value otherwise.\n   */\n  public getValueCaption(value: string): string {\n    let ret = value;\n\n    if (contains(keys(this.options.valueCaption), value)) {\n      ret = this.options.valueCaption[ret] || ret;\n      return l(ret);\n    } else {\n      return FacetUtils.tryToGetTranslatedCaption(this.options.field.toString(), ret);\n    }\n  }\n\n  /**\n   * Gets the captions of the currently selected field values in the `SimpleFilter`.\n   * @returns {string[]} An array containing the selected captions.\n   */\n  public getSelectedCaptions(): string[] {\n    return map(this.getSelectedValues(), (selectedValue: string) => this.getValueCaption(selectedValue));\n  }\n\n  /**\n   * Opens or closes the `SimpleFilter` `valueContainer`, depending on its current state.\n   */\n  public toggleContainer() {\n    $$(this.valueContainer).hasClass('coveo-simplefilter-value-container-expanded') ? this.closeContainer() : this.openContainer();\n  }\n\n  /**\n   * Selects the specified value. Also triggers a query, by default.\n   * @param value The value to select.\n   * @param triggerQuery `true` by default. If set to `false`, the method triggers no query.\n   */\n  public selectValue(value: string, triggerQuery = true) {\n    each(this.checkboxes, (labeledCheckbox: ILabeledCheckbox) => {\n      const translated = this.getValueCaption(labeledCheckbox.label);\n      if (labeledCheckbox.label == value || translated == value) {\n        labeledCheckbox.checkbox.select(triggerQuery);\n      }\n    });\n  }\n\n  /**\n   * Un-selects the specified value.\n   * @param value The value whose state the method should reset.\n   */\n  public deselectValue(value: string) {\n    each(this.checkboxes, (labeledCheckbox: ILabeledCheckbox) => {\n      const translated = this.getValueCaption(labeledCheckbox.label);\n      if (labeledCheckbox.label == value || translated == value) {\n        labeledCheckbox.checkbox.reset();\n      }\n    });\n  }\n\n  /**\n   * Selects or un-selects the specified value, depending on its current state.\n   * @param value The value whose state the method should toggle.\n   */\n  public toggleValue(value: string) {\n    each(this.checkboxes, (labeledCheckbox: ILabeledCheckbox) => {\n      const translated = this.getValueCaption(labeledCheckbox.label);\n      if (labeledCheckbox.label == value || translated == value) {\n        labeledCheckbox.checkbox.toggle();\n      }\n    });\n  }\n\n  /**\n   * Resets the component to its original state.\n   */\n  public resetSimpleFilter() {\n    each(this.checkboxes, (labeledCheckbox: ILabeledCheckbox) => {\n      if (labeledCheckbox.checkbox.isSelected()) {\n        this.deselectValue(labeledCheckbox.label);\n      }\n    });\n  }\n\n  /**\n   * Opens the `SimpleFilter` `valueContainer`.\n   */\n  public openContainer() {\n    $$(this.element).addClass('coveo-simplefilter-value-container-expanded');\n    this.valueContainer.addClass('coveo-simplefilter-value-container-expanded');\n    this.refreshValueContainer();\n    this.isSticky = true;\n    if (!this.backdrop.hasClass('coveo-dropdown-background-active')) {\n      this.showBackdrop();\n    }\n  }\n\n  /**\n   * Closes the `SimpleFilter` `valueContainer`.\n   */\n  public closeContainer() {\n    $$(this.element).removeClass('coveo-simplefilter-value-container-expanded');\n    this.valueContainer.removeClass('coveo-simplefilter-value-container-expanded');\n    if (this.backdrop.hasClass('coveo-dropdown-background-active')) {\n      this.hideBackdrop();\n    }\n    if (this.getSelectedLabeledCheckboxes().length == 0) {\n      this.isSticky = false;\n    }\n  }\n\n  public getSelectedValues() {\n    return map(this.getSelectedLabeledCheckboxes(), (labeledCheckbox: ILabeledCheckbox) => labeledCheckbox.label);\n  }\n\n  private handleClick(e: Event) {\n    e.stopPropagation();\n    if (e.target == this.element) {\n      this.toggleContainer();\n    }\n  }\n\n  private handleKeyboardSelect(e: Event) {\n    if (e.target == this.element) {\n      this.toggleContainer();\n    } else {\n      this.toggleValue($$(e.target as HTMLElement).text());\n    }\n  }\n\n  private handleBlur(e: MouseEvent) {\n    const relatedTarget = e.relatedTarget as HTMLElement;\n    if (!relatedTarget) {\n      return;\n    }\n    if (!$$(relatedTarget).parent(Component.computeCssClassName(SimpleFilter))) {\n      this.closeContainer();\n    }\n  }\n\n  private handleValueToggle(checkbox: Checkbox) {\n    const selectedValues = this.getSelectedValues();\n    this.circleElement.text(selectedValues.length.toString());\n    this.circleElement.removeClass('coveo-simplefilter-circle-hidden');\n    this.options.enableClearButton && this.clearElement.show();\n\n    if (selectedValues.length == 1) {\n      this.setDisplayedTitle(this.getValueCaption(selectedValues[0]));\n      this.element.title = this.getValueCaption(selectedValues[0]);\n    } else {\n      this.setDisplayedTitle(this.options.title);\n      this.element.title = this.options.title;\n\n      if (selectedValues.length < 1) {\n        this.circleElement.addClass('coveo-simplefilter-circle-hidden');\n        this.options.enableClearButton && this.clearElement.hide();\n      }\n    }\n\n    if (selectedValues.length == 0) {\n      this.isSticky = false;\n    }\n\n    const action = checkbox.isSelected()\n      ? analyticsActionCauseList.simpleFilterSelectValue\n      : analyticsActionCauseList.simpleFilterDeselectValue;\n\n    if (this.shouldTriggerQuery) {\n      this.usageAnalytics.logSearchEvent<IAnalyticsSimpleFilterMeta>(action, {\n        simpleFilterTitle: this.options.title,\n        simpleFilterSelectedValue: checkbox.label,\n        simpleFilterField: <string>this.options.field\n      });\n      this.queryController.executeQuery();\n    }\n  }\n\n  private createCheckbox(label: string) {\n    const checkbox = new Checkbox(() => {\n      this.handleValueToggle(checkbox);\n    }, this.getValueCaption(label));\n    checkbox.getElement().title = l(label);\n    return { checkbox, label };\n  }\n\n  private createCheckboxes() {\n    if (this.previouslySelected.length > 0) {\n      this.checkboxes = map(this.previouslySelected, caption => this.createCheckbox(caption));\n      each(this.checkboxes, checkbox => {\n        if (this.previouslySelected.indexOf(checkbox.label) >= 0) {\n          this.selectValue(checkbox.label, false);\n        }\n      });\n    } else if (this.options.values != undefined) {\n      this.checkboxes = map(this.options.values, caption => this.createCheckbox(caption));\n    } else if (this.groupByRequestValues != undefined) {\n      this.checkboxes = map(this.groupByRequestValues, caption => this.createCheckbox(caption));\n    }\n    if (\n      this.options.sortCriteria.toLocaleLowerCase() === 'alphaascending' ||\n      this.options.sortCriteria.toLowerCase() === 'alphadescending'\n    ) {\n      this.checkboxes.sort((a, b) => a.checkbox.label.localeCompare(b.checkbox.label));\n      if (this.options.sortCriteria.toLowerCase() === 'alphadescending') {\n        this.checkboxes.reverse();\n      }\n    }\n    each(this.checkboxes, result => {\n      this.valueContainer.append(result.checkbox.getElement());\n    });\n    if (this.checkboxes.length > 0) {\n      $$($$(this.checkboxes[this.checkboxes.length - 1].checkbox.getElement()).find('.coveo-checkbox-button')).on('blur', () => {\n        this.closeContainer();\n      });\n    }\n  }\n\n  private createValueContainer() {\n    this.valueContainer = $$('div', { className: 'coveo-simplefilter-value-container' });\n  }\n\n  private buildContent() {\n    this.createValueContainer();\n    this.element.appendChild(this.buildSelect());\n    this.element.appendChild(this.valueContainer.el);\n    this.findOrCreateWrapper().append(this.element);\n    this.createBackdrop();\n  }\n\n  private buildSelect(): HTMLElement {\n    const select = $$('span', { className: 'coveo-simplefilter-select' });\n    this.selectTitle = $$('span', { className: 'coveo-simplefilter-selecttext' }, this.options.title);\n    select.append(this.selectTitle.el);\n    select.append(this.buildCircleElement());\n    this.options.enableClearButton && select.append(this.buildClearElement());\n    select.append(this.buildSvgToggleUpIcon());\n    return select.el;\n  }\n\n  private buildSvgToggleUpIcon(): HTMLElement {\n    let svgIcon = $$('span', { className: 'coveo-simplefilter-toggle-svg-container' }, SVGIcons.icons.arrowDown).el;\n    SVGDom.addClassToSVGInContainer(svgIcon, 'coveo-simplefilter-toggle-down-svg');\n    return svgIcon;\n  }\n\n  private buildCircleElement(): HTMLElement {\n    this.circleElement = $$(\n      'span',\n      { className: 'coveo-simplefilter-circle coveo-simplefilter-circle-hidden' },\n      this.getSelectedLabeledCheckboxes().length.toString()\n    );\n    return this.circleElement.el;\n  }\n\n  public buildClearElement(): HTMLElement {\n    this.clearElement = $$(\n      'button',\n      {\n        title: l('DeselectFilterValues', this.options.title),\n        'aria-label': l('Clear', this.options.title),\n        className: 'coveo-simplefilter-eraser',\n        type: 'button'\n      },\n      SVGIcons.icons.mainClear\n    );\n    this.clearElement.hide();\n\n    this.clearElement.on('click', (evt: Event) => {\n      evt.stopPropagation();\n      this.handleClear();\n    });\n\n    return this.clearElement.el;\n  }\n\n  private createBackdrop() {\n    const backdrop = $$(this.root).find('.coveo-dropdown-background');\n\n    if (backdrop == null) {\n      this.backdrop = $$('div', { className: 'coveo-dropdown-background' });\n      this.root.appendChild(this.backdrop.el);\n    } else {\n      this.backdrop = $$(backdrop);\n    }\n    this.backdrop.on('click', () => this.closeContainer());\n  }\n\n  private handlePopulateBreadcrumb(args: IPopulateBreadcrumbEventArgs) {\n    if (this.getSelectedLabeledCheckboxes().length > 0) {\n      const elem = $$('div', { className: 'coveo-simplefilter-breadcrumb' });\n      const title = $$(\n        getHeadingTag(args.headingLevel, 'span'),\n        { className: 'coveo-simplefilter-breadcrumb-title' },\n        `${this.options.title}:`\n      );\n      elem.append(title.el);\n      const values = $$('span', { className: 'coveo-simplefilter-breadcrumb-values' });\n      elem.append(values.el);\n\n      each(this.getSelectedLabeledCheckboxes(), selectedlabeledCheckbox => {\n        const value = $$('span', { className: 'coveo-simplefilter-breadcrumb-value' }, this.getValueCaption(selectedlabeledCheckbox.label));\n        values.append(value.el);\n        const svgContainer = $$('span', { className: 'coveo-simplefilter-breadcrumb-clear' }, SVGIcons.icons.mainClear);\n        value.append(svgContainer.el);\n        value.el.title = this.getValueCaption(selectedlabeledCheckbox.label);\n        $$(value).on('click', () => this.handleRemoveFromBreadcrumb(selectedlabeledCheckbox));\n      });\n\n      args.breadcrumbs.push({\n        element: elem.el\n      });\n    }\n  }\n\n  private handleRemoveFromBreadcrumb(labeledCheckbox: ILabeledCheckbox) {\n    labeledCheckbox.checkbox.reset();\n    this.refreshValueContainer();\n  }\n\n  private handleClearBreadcrumb() {\n    // Bit of a hack with that flag, but essentially we want \"clear breadcrumb\" to be a global, unique event.\n    // Not something that will log a special event for SimpleFilter (or any component)\n    this.resetWithoutTriggeringQuery();\n  }\n\n  private handleClear() {\n    this.usageAnalytics.logSearchEvent<IAnalyticsSimpleFilterMeta>(analyticsActionCauseList.simpleFilterClearAll, {\n      simpleFilterTitle: this.options.title,\n      simpleFilterField: <string>this.options.field\n    });\n\n    this.resetWithoutTriggeringQuery();\n    this.queryController.executeQuery();\n  }\n\n  private resetWithoutTriggeringQuery() {\n    this.shouldTriggerQuery = false;\n    this.resetSimpleFilter();\n    this.shouldTriggerQuery = true;\n  }\n\n  private handleQuerySuccess(data: IQuerySuccessEventArgs) {\n    if (data.results.results.length > 0) {\n      this.findOrCreateWrapper().removeClass('coveo-no-results');\n    } else {\n      this.findOrCreateWrapper().addClass('coveo-no-results');\n    }\n\n    if (this.options.values == undefined) {\n      this.groupByBuilder.groupBy(data);\n      this.groupByRequestValues = this.groupByBuilder.getValuesFromGroupBy();\n      this.refreshValueContainer();\n      if (!$$(this.element).hasClass('coveo-simplefilter-value-container-expanded')) {\n        this.isSticky = false;\n      }\n    }\n  }\n\n  private handleBuildingQuery(args: IBuildingQueryEventArgs) {\n    Assert.exists(args);\n    Assert.exists(args.queryBuilder);\n    const selectedValues = this.getSelectedValues();\n\n    if (selectedValues.length > 0) {\n      args.queryBuilder.advancedExpression.addFieldExpression(this.options.field.toString(), '==', selectedValues);\n    }\n  }\n\n  private handleDoneBuildingQuery(data: IDoneBuildingQueryEventArgs) {\n    if (this.options.values == undefined) {\n      Assert.exists(data);\n      Assert.exists(data.queryBuilder);\n      this.previouslySelected = this.getSelectedValues();\n      this.groupByBuilder = new SimpleFilterValues(this, this.options);\n      this.groupByBuilder.handleDoneBuildingQuery(data);\n    }\n  }\n\n  private getSelectedLabeledCheckboxes(): ILabeledCheckbox[] {\n    return filter(this.checkboxes, (labeledCheckbox: ILabeledCheckbox) => labeledCheckbox.checkbox.isSelected());\n  }\n\n  private setDisplayedTitle(title: string) {\n    this.selectTitle.text(this.getValueCaption(title));\n  }\n\n  private showBackdrop() {\n    this.backdrop.addClass('coveo-dropdown-background-active');\n  }\n\n  private hideBackdrop() {\n    this.backdrop.removeClass('coveo-dropdown-background-active');\n  }\n\n  private findOrCreateWrapper() {\n    if ($$(this.root).find('.coveo-simplefilter-header-wrapper') == null) {\n      const wrapper = $$('div', { className: 'coveo-simplefilter-header-wrapper' });\n      wrapper.insertBefore(this.element);\n      return wrapper;\n    } else {\n      const wrapper = $$(this.root).find('.coveo-simplefilter-header-wrapper');\n      return $$(wrapper);\n    }\n  }\n\n  private refreshValueContainer() {\n    if (!this.isSticky) {\n      this.valueContainer.empty();\n      this.createCheckboxes();\n    }\n\n    if (this.checkboxes.length == 0 && !this.isSticky) {\n      $$(this.element).addClass('coveo-simplefilter-empty');\n    } else {\n      $$(this.element).removeClass('coveo-simplefilter-empty');\n    }\n    $$(this.circleElement).text(this.getSelectedLabeledCheckboxes().length.toString());\n  }\n}\n\nInitialization.registerAutoCreateComponent(SimpleFilter);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/SimpleFilter/SimpleFilter.ts","import * as moment from 'moment';\nimport { pluck } from 'underscore';\nimport { exportGlobally } from '../../GlobalExports';\nimport { IRangeValue } from '../../rest/RangeValue';\nimport { l } from '../../strings/Strings';\nimport { $$, Dom } from '../../utils/Dom';\nimport { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { IFieldOption } from '../Base/IComponentOptions';\nimport { Initialization } from '../Base/Initialization';\nimport { FacetRange } from '../FacetRange/FacetRange';\nimport { IResponsiveComponentOptions } from '../ResponsiveComponents/ResponsiveComponentsManager';\nimport { ResponsiveFacetOptions } from '../ResponsiveComponents/ResponsiveFacetOptions';\n\nexport interface ITimespanFacetOptions extends IResponsiveComponentOptions {\n  title?: string;\n  field?: IFieldOption;\n  id?: string;\n}\n\n/**\n * The TimespanFacet component displays a {@link FacetRange} with prebuilt ranges.\n *\n * The prebuilt ranges allow you to see the items last updated in the last day, week, month, or year.\n *\n * This component in a thin wrapper around the standard {@link FacetRange} component.\n *\n * This component is meant to offer out of the box default ranges, so it can easily be inserted in a standard search page.\n *\n * To configure different ranges than those offered by this component, use the standard {@link FacetRange} component instead.\n *\n * @notSupportedIn salesforcefree\n */\nexport class TimespanFacet extends Component {\n  static ID = 'TimespanFacet';\n\n  /**\n   * @componentOptions\n   */\n  static options: ITimespanFacetOptions = {\n    /**\n     * Specifies the title to display at the top of the facet.\n     *\n     * Default value is the localized string for `Last updated`.\n     */\n    title: ComponentOptions.buildStringOption({\n      defaultValue: l('LastUpdated')\n    }),\n    /**\n     * Specifies the index field whose values the facet should use.\n     *\n     * Default value is the field `@date`\n     */\n    field: ComponentOptions.buildFieldOption({\n      defaultValue: '@date'\n    }),\n    /**\n     * Specifies a unique identifier for the facet. Among other things, this identifier serves the purpose of saving\n     * the facet state in the URL hash.\n     *\n     * If you have two facets with the same field on the same page, you should specify an `id` value for at least one of\n     * those two facets. This `id` must be unique in the page.\n     *\n     * Default value is the [`field`]{@link TimespanFacet.options.field} option value.\n     */\n    id: ComponentOptions.buildStringOption({\n      postProcessing: (value, options: ITimespanFacetOptions) => value || <string>options.field\n    }),\n    ...ResponsiveFacetOptions\n  };\n\n  static doExport = () => {\n    exportGlobally({\n      TimespanFacet\n    });\n  };\n\n  public isFieldValueCompatible = false;\n\n  private rangeValues: IRangeValue[] = [\n    {\n      start: moment(0).toDate(),\n      end: moment().endOf('day').toDate(),\n      label: l('AllDates'),\n      endInclusive: false\n    },\n    {\n      start: moment().startOf('day').subtract(1, 'day').toDate(),\n      end: moment().endOf('day').toDate(),\n      label: l('WithinLastDay'),\n      endInclusive: false\n    },\n    {\n      start: moment().startOf('day').subtract(1, 'week').toDate(),\n      end: moment().endOf('day').toDate(),\n      label: l('WithinLastWeek'),\n      endInclusive: false\n    },\n    {\n      start: moment().startOf('day').subtract(1, 'month').toDate(),\n      end: moment().endOf('day').toDate(),\n      label: l('WithinLastMonth'),\n      endInclusive: false\n    },\n    {\n      start: moment().startOf('day').subtract(1, 'year').toDate(),\n      end: moment().endOf('day').toDate(),\n      label: l('WithinLastYear'),\n      endInclusive: false\n    }\n  ];\n\n  private facetRangeElement: Dom;\n  private facetRange: FacetRange;\n\n  constructor(public element: HTMLElement, public options?: ITimespanFacetOptions, private bindings?: IComponentBindings) {\n    super(element, TimespanFacet.ID, bindings);\n\n    this.options = ComponentOptions.initComponentOptions(element, TimespanFacet, options);\n    this.buildFacet();\n  }\n\n  public isCurrentlyDisplayed() {\n    if (!$$(this.element).isVisible()) {\n      return false;\n    }\n    if (this.disabled) {\n      return false;\n    }\n    return true;\n  }\n\n  /**\n   * Sets a new range for the component.\n   */\n  public set ranges(ranges: IRangeValue[]) {\n    this.rangeValues = ranges;\n    this.buildFacet();\n  }\n\n  /**\n   * Returns the current range the facet uses to query the index\n   */\n  public get ranges() {\n    return this.rangeValues;\n  }\n\n  /**\n   * Returns the underlying {@link FacetRange} component associated to the Timespan Facet.\n   */\n  public get facet() {\n    return this.facetRange;\n  }\n\n  private buildFacet() {\n    this.destroyFacet();\n    this.facetRangeElement = $$('div');\n    $$(this.element).append(this.facetRangeElement.el);\n    this.facetRange = new FacetRange(\n      this.facetRangeElement.el,\n      {\n        field: this.options.field,\n        title: this.options.title,\n        ranges: this.rangeValues,\n        availableSorts: ['custom'],\n        customSort: pluck(this.rangeValues, 'label'),\n        id: this.options.id\n      },\n      this.bindings\n    );\n    this.facetRange.isCurrentlyDisplayed = this.isCurrentlyDisplayed;\n  }\n\n  private destroyFacet() {\n    if (this.facetRangeElement) {\n      this.facetRangeElement.remove();\n    }\n    delete this.facetRange;\n  }\n}\n\nInitialization.registerAutoCreateComponent(TimespanFacet);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/TimespanFacet/TimespanFacet.ts","import 'styling/_PromotedResultsBadge';\nimport { $$, ComponentOptions, Dom, Initialization, l, ResultListEvents } from '../../Core';\nimport { IDisplayedNewResultEventArgs } from '../../events/ResultListEvents';\nimport { exportGlobally } from '../../GlobalExports';\nimport { IQueryResult } from '../../rest/QueryResult';\nimport { Component } from '../../ui/Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\n\nexport interface IPromotedResultsBadgeOptions {\n  showBadgeForFeaturedResults: boolean;\n  showBadgeForRecommendedResults: boolean;\n\n  captionForRecommended: string;\n  captionForFeatured: string;\n\n  colorForFeaturedResults: string;\n  colorForRecommendedResults: string;\n}\n\n/**\n * Depending on its configuration, this component will render badges on query result items whose ranking scores were increased by [featured results](https://docs.coveo.com/en/1961/) query pipeline rules and/or [Coveo ML ART](https://docs.coveo.com/en/1671/#automatic-relevance-tuning-art-feature).\n *\n * This component can be put anywhere in the markup configuration of a search interface. However, it is meant to be initialized only once, and should thus never be included in a result template.\n *\n * @externaldocs [Adding Promoted Results Badges](https://docs.coveo.com/en/3123/)\n * @availablesince [July 2018 Release (v2.4382.10)](https://docs.coveo.com/en/1360/)\n */\nexport class PromotedResultsBadge extends Component {\n  static ID = 'PromotedResultsBadge';\n\n  static doExport = () => {\n    exportGlobally({\n      PromotedResultsBadge\n    });\n  };\n\n  /**\n   * @componentOptions\n   */\n  static options: IPromotedResultsBadgeOptions = {\n    /**\n     * Whether to show a badge when a result was promoted by a featured results query pipeline rule.\n     */\n    showBadgeForFeaturedResults: ComponentOptions.buildBooleanOption({ defaultValue: true }),\n\n    /**\n     * Whether to show a badge when a result was promoted by Coveo ML ART.\n     */\n    showBadgeForRecommendedResults: ComponentOptions.buildBooleanOption({ defaultValue: false }),\n\n    /**\n     * The caption to show on the badge for results promoted by Coveo ML ART.\n     *\n     * Default value is the localized string for `Recommended`.\n     *\n     * @examples Recommended by Coveo ML\n     */\n    captionForRecommended: ComponentOptions.buildLocalizedStringOption({\n      localizedString: () => l('Recommended'),\n      depend: 'showBadgeForRecommendedResults'\n    }),\n\n    /**\n     * The caption to show on the badge for results promoted by a _featured results_ query pipeline rule.\n     *\n     * Default value is the localized string for `Featured`.\n     *\n     * @examples Recommended by ACME\n     */\n    captionForFeatured: ComponentOptions.buildLocalizedStringOption({\n      localizedString: () => l('Featured'),\n      depend: 'showBadgeForFeaturedResults'\n    }),\n\n    /**\n     * The badge color for results promoted by a _featured results_ query pipeline rule.\n     *\n     * Can be specified using:\n     * - a hexadecimal value\n     * - an RGB value\n     * - a CSS color name\n     *\n     * @examples #f58020, rgb(125 10 36), red\n     *\n     * Default value is controlled through the default stylesheet of the framework.\n     */\n    colorForFeaturedResults: ComponentOptions.buildColorOption({ depend: 'showBadgeForFeaturedResults' }),\n\n    /**\n     * The badge color for results promoted by Coveo ML ART.\n     *\n     * Can be specified using:\n     * - a hexadecimal value\n     * - an RGB value\n     * - a CSS color name\n     *\n     * @examples #f58020, rgb(125 10 36), red\n     *\n     * Default value is controlled through the default stylesheet of the framework.\n     */\n    colorForRecommendedResults: ComponentOptions.buildColorOption({ depend: 'showBadgeForRecommendedResults' })\n  };\n\n  constructor(public element: HTMLElement, public options: IPromotedResultsBadgeOptions, public bindings: IComponentBindings) {\n    super(element, PromotedResultsBadge.ID, bindings);\n    this.options = ComponentOptions.initComponentOptions(element, PromotedResultsBadge, options);\n    this.bind.onRootElement(ResultListEvents.newResultDisplayed, (args: IDisplayedNewResultEventArgs) => {\n      const badge = this.buildBadge(args.result, args.item);\n      if (badge) {\n        this.appendBadge(badge, args.item);\n      }\n    });\n  }\n\n  private buildBadge(result: IQueryResult, resultElement: HTMLElement): Dom {\n    if (!this.shouldShowABadge(result, resultElement)) {\n      return null;\n    }\n    const badge = $$('div', {\n      className: this.getClassName(result)\n    });\n\n    this.applyTagline(result, badge);\n    this.applyColor(result, badge);\n    return badge;\n  }\n\n  private appendBadge(badge: Dom, resultElement: HTMLElement) {\n    if (this.isCardLayout(resultElement)) {\n      this.addBadgeToCardLayout(badge, resultElement);\n    } else {\n      $$(resultElement).prepend(badge.el);\n    }\n  }\n\n  private addBadgeToCardLayout(badge: Dom, resultElement: HTMLElement): void {\n    let container: Dom;\n\n    if (resultElement.parentElement == null) {\n      container = $$('div', {\n        className: 'coveo-promoted-result-badge-container-card-layout'\n      });\n\n      container.insertBefore(resultElement);\n    } else {\n      container = $$(resultElement.parentElement);\n    }\n\n    container.append(badge.el);\n    container.append(resultElement);\n  }\n\n  private applyColor(result: IQueryResult, badge: Dom) {\n    if (this.isFeatured(result) && this.options.colorForFeaturedResults) {\n      badge.el.style.backgroundColor = this.options.colorForFeaturedResults;\n    }\n\n    if (this.isRecommended(result) && this.options.colorForRecommendedResults) {\n      badge.el.style.backgroundColor = this.options.colorForRecommendedResults;\n    }\n  }\n\n  private applyTagline(result: IQueryResult, badge: Dom): string {\n    if (this.isFeatured(result) && this.options.showBadgeForFeaturedResults) {\n      badge.text(this.options.captionForFeatured);\n    }\n    if (this.isRecommended(result) && this.options.showBadgeForRecommendedResults) {\n      return badge.text(this.options.captionForRecommended);\n    }\n  }\n\n  private isFeatured(result: IQueryResult): boolean {\n    return result.isTopResult;\n  }\n\n  private isRecommended(result: IQueryResult): boolean {\n    return result.isRecommendation && !result.isTopResult;\n  }\n\n  private isTableLayout(resultElement: HTMLElement): boolean {\n    return $$(resultElement).hasClass('coveo-table-layout');\n  }\n\n  private isCardLayout(resultElement: HTMLElement): boolean {\n    return $$(resultElement).hasClass('coveo-card-layout');\n  }\n\n  private getClassName(result: IQueryResult) {\n    return `coveo-promoted-result-badge coveo-${this.isFeatured(result) ? 'featured' : 'recommended'}-result-badge`;\n  }\n\n  private shouldShowABadge(result: IQueryResult, resultElement: HTMLElement): boolean {\n    if (this.isTableLayout(resultElement)) {\n      return false;\n    }\n\n    if (this.isFeatured(result) && this.options.showBadgeForFeaturedResults) {\n      return true;\n    }\n\n    if (this.isRecommended(result) && this.options.showBadgeForRecommendedResults) {\n      return true;\n    }\n\n    return false;\n  }\n}\n\nInitialization.registerAutoCreateComponent(PromotedResultsBadge);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/PromotedResultsBadge/PromotedResultsBadge.ts","import 'styling/DynamicFacet/_DynamicFacet';\nimport { Component } from '../Base/Component';\nimport { l } from '../../strings/Strings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { $$ } from '../../utils/Dom';\nimport { Initialization } from '../Base/Initialization';\nimport { exportGlobally } from '../../GlobalExports';\nimport { DynamicHierarchicalFacetQueryController } from '../../controllers/DynamicHierarchicalFacetQueryController';\nimport { QueryStateModel } from '../../models/QueryStateModel';\nimport { IAttributesChangedEventArg, MODEL_EVENTS } from '../../models/Model';\nimport { Utils } from '../../utils/Utils';\nimport { isArray, findIndex, last, isEqual } from 'underscore';\nimport { Assert } from '../../misc/Assert';\nimport { QueryEvents, IQuerySuccessEventArgs, IDoneBuildingQueryEventArgs } from '../../events/QueryEvents';\nimport { BreadcrumbEvents, IPopulateBreadcrumbEventArgs } from '../../events/BreadcrumbEvents';\nimport { DynamicHierarchicalFacetBreadcrumb } from './DynamicHierarchicalFacetBreadcrumb';\nimport { analyticsActionCauseList, IAnalyticsActionCause, IAnalyticsFacetMeta } from '../Analytics/AnalyticsActionListMeta';\nimport { QueryBuilder } from '../Base/QueryBuilder';\nimport { ResponsiveFacets } from '../ResponsiveComponents/ResponsiveFacets';\nimport {\n  IDynamicHierarchicalFacetOptions,\n  IDynamicHierarchicalFacet,\n  IDynamicHierarchicalFacetValues,\n  HierarchicalFacetSortCriteria\n} from './IDynamicHierarchicalFacet';\nimport { ResponsiveFacetOptions } from '../ResponsiveComponents/ResponsiveFacetOptions';\nimport { DynamicFacetHeader } from '../DynamicFacet/DynamicFacetHeader/DynamicFacetHeader';\nimport { IStringMap } from '../../rest/GenericParam';\nimport { DependsOnManager, IDependentFacet, IDependentFacetCondition } from '../../utils/DependsOnManager';\nimport { ResultListUtils } from '../../utils/ResultListUtils';\nimport { FacetType } from '../../rest/Facet/FacetRequest';\nimport { DynamicHierarchicalFacetValues } from './DynamicHierarchicalFacetValues/DynamicHierarchicalFacetValues';\nimport { IFacetResponse } from '../../rest/Facet/FacetResponse';\nimport { IQueryOptions } from '../../controllers/QueryController';\nimport { IQueryResults } from '../../rest/QueryResults';\nimport { DynamicFacetManager } from '../DynamicFacetManager/DynamicFacetManager';\nimport { IAnalyticsFacetState } from '../Analytics/IAnalyticsFacetState';\nimport { FacetValueState } from '../../rest/Facet/FacetValueState';\nimport { FacetSortCriteria } from '../../rest/Facet/FacetSortCriteria';\nimport { Logger } from '../../misc/Logger';\nimport { DynamicHierarchicalFacetSearch } from '../DynamicHierarchicalFacetSearch/DynamicHierarchicalFacetSearch';\nimport { IFieldValueCompatibleFacet } from '../FieldValue/IFieldValueCompatibleFacet';\n\n/**\n * The `DynamicHierarchicalFacet` component is a facet that renders values in a hierarchical fashion. It determines the filter to apply depending on the\n * selected path of values.\n *\n * This facet requires a [`field`]{@link DynamicHierarchicalFacet.options.field} with a special format to work correctly.\n *\n * @notSupportedIn salesforcefree\n * @availablesince [January 2020 Release (v2.7968)](https://docs.coveo.com/en/3163/)\n * @externaldocs [Using Hierarchical Facets](https://docs.coveo.com/en/2667)\n */\nexport class DynamicHierarchicalFacet extends Component implements IDynamicHierarchicalFacet, IFieldValueCompatibleFacet {\n  static ID = 'DynamicHierarchicalFacet';\n  static doExport = () => {\n    exportGlobally({\n      DynamicHierarchicalFacet\n    });\n  };\n\n  /**\n   * The options for the DynamicHierarchicalFacet\n   * @componentOptions\n   */\n  static options: IDynamicHierarchicalFacetOptions = {\n    /**\n     * A unique identifier for the facet. Among other things, this identifier serves the purpose of saving\n     * the facet state in the URL hash.\n     *\n     * If you have two facets with the same field on the same page, you should specify an `id` value for at least one of\n     * those two facets. This `id` must be unique among the facets.\n     *\n     * Default value is the [`field`]{@link DynamicHierarchicalFacet.options.field} option value.\n     *\n     * @examples productcategory\n     */\n    id: ComponentOptions.buildStringOption({\n      postProcessing: (value, options: IDynamicHierarchicalFacetOptions) => value || (options.field as string),\n      section: 'CommonOptions'\n    }),\n\n    /**\n     * The index field whose values the facet should use. The field values should have the form:\n     * `the; the|path; the|path|to; the|path|to|given; the|path|to|given|item;`\n     * where the delimiting character is `|`. This default delimiting character can be changed using the [delimitingCharacter]{@link DynamicHierarchicalFacet.options.delimitingCharacter} option.\n     *\n     * To help you verify whether your fields are setup correctly, use the [`debugInfo`]{@link DynamicHierarchicalFacet.debugInfo} method.\n     *\n     * @externaldocs [Using the Hierarchical Facet Component](https://docs.coveo.com/en/2667).\n     * @examples @category\n     */\n    field: ComponentOptions.buildFieldOption({ required: true, section: 'CommonOptions' }),\n\n    /**\n     * The title to display at the top of the facet.\n     *\n     * Default value is the localized string for `NoTitle`.\n     *\n     * @examples Product category\n     */\n    title: ComponentOptions.buildLocalizedStringOption({\n      localizedString: () => l('NoTitle'),\n      section: 'CommonOptions'\n    }),\n\n    /**\n     * The maximum number of field values to display by default in the facet before the user\n     * clicks the arrow to show more.\n     *\n     * See also the [`enableMoreLess`]{@link DynamicHierarchicalFacet.options.enableMoreLess} option.\n     *\n     * @examples 8\n     */\n    numberOfValues: ComponentOptions.buildNumberOption({ defaultValue: 5, min: 0, section: 'CommonOptions' }),\n\n    /**\n     * Whether to allow the end-user to expand and collapse this facet.\n     */\n    enableCollapse: ComponentOptions.buildBooleanOption({ defaultValue: true, section: 'CommonOptions' }),\n\n    /**\n     * Whether this facet should be collapsed by default.\n     */\n    collapsedByDefault: ComponentOptions.buildBooleanOption({ defaultValue: false, section: 'CommonOptions', depend: 'enableCollapse' }),\n\n    /**\n     * Whether to scroll back to the top of the page whenever the end-user interacts with a facet.\n     */\n    enableScrollToTop: ComponentOptions.buildBooleanOption({ defaultValue: true, section: 'CommonOptions' }),\n\n    /**\n     * Whether to notify the [`Breadcrumb`]{@link Breadcrumb} component when toggling values in the facet.\n     */\n    includeInBreadcrumb: ComponentOptions.buildBooleanOption({ defaultValue: true, section: 'CommonOptions' }),\n\n    /**\n     * The number of items to scan for facet values.\n     *\n     * Setting this option to a higher value may enhance the accuracy of facet value counts at the cost of slower query performance.\n     *\n     * @examples 1500\n     */\n    injectionDepth: ComponentOptions.buildNumberOption({ defaultValue: 1000, min: 1000 }),\n\n    /**\n     * Whether to enable the **More** and **Less** buttons in the Facet.\n     *\n     * See also the [`numberOfValues`]{@link DynamicHierarchicalFacet.options.numberOfValues} option.\n     */\n    enableMoreLess: ComponentOptions.buildBooleanOption({ defaultValue: true, section: 'CommonOptions' }),\n\n    /**\n     * Whether to allow the end-user to search the facet values.\n     */\n    enableFacetSearch: ComponentOptions.buildBooleanOption({ section: 'Filtering', defaultValue: false }),\n\n    /**\n     * The character that specifies the hierarchical dependency.\n     *\n     * **Example:**\n     *\n     * If your field has the following values:\n     *\n     * `electronics; electronics>laptops; electronics>laptops>gaming;`\n     *\n     * The delimiting character is `>`.\n     *\n     * @examples >\n     */\n    delimitingCharacter: ComponentOptions.buildStringOption({ defaultValue: '|', section: 'CommonOptions' }),\n\n    /**\n     * A mapping of facet values to their desired captions.\n     *\n     * @externaldocs [Normalizing Facet Value Captions](https://docs.coveo.com/en/368/)\n     */\n    valueCaption: ComponentOptions.buildJsonOption<IStringMap<string>>({ defaultValue: {} }),\n\n    /**\n     * The `id` option value of another facet in which at least one value must be selected in order\n     * for the dependent hierarchical facet to be visible.\n     *\n     * **Default:** `undefined` and the hierarchical facet does not depend on any other facet to be displayed.\n     *\n     * @externaldocs [Defining Dependent Facets](https://docs.coveo.com/3210/)\n     * @examples department\n     */\n    dependsOn: ComponentOptions.buildStringOption({ section: 'CommonOptions' }),\n\n    /**\n     * A function that verifies whether the current state of the `dependsOn` facet allows the dependent facet to be displayed.\n     *\n     * If specified, the function receives a reference to the resolved `dependsOn` facet component instance as an argument, and must return a boolean.\n     * The function's argument should typically be treated as read-only.\n     *\n     * By default, the dependent facet is displayed whenever one or more values are selected in its `dependsOn` facet.\n     *\n     * @externaldocs [Defining Dependent Facets](https://docs.coveo.com/3210/)\n     */\n    dependsOnCondition: ComponentOptions.buildCustomOption<IDependentFacetCondition>(\n      () => {\n        return null;\n      },\n      { depend: 'dependsOn', section: 'CommonOptions' }\n    ),\n\n    /**\n     * Whether to exclude folded result parents when estimating result counts for facet values.\n     *\n     * **Note:** The target folding field must be a facet field with the **Use cache for nested queries** options enabled (see [Add or Edit a Field](https://docs.coveo.com/en/1982)).\n     *\n     * See also the [`Folding`]{@link Folding} and [`FoldingForThread`]{@link FoldingForThread} components.\n     *\n     * **Default:** `true`.\n     */\n    filterFacetCount: ComponentOptions.buildBooleanOption({ section: 'Filtering' }),\n\n    /**\n     * The sort criterion to use for this facet.\n     *\n     * **Default (Search API):** `occurrences`.\n     *\n     * @examples alphanumeric\n     *\n     * @availablesince [March 2020 Release (v2.8521)](https://docs.coveo.com/en/3203/)\n     */\n    sortCriteria: <HierarchicalFacetSortCriteria>ComponentOptions.buildStringOption({\n      postProcessing: value => {\n        if (!value) {\n          return undefined;\n        }\n\n        if (value === FacetSortCriteria.alphanumeric || value === FacetSortCriteria.occurrences) {\n          return value;\n        }\n\n        new Logger(value).warn('sortCriteria is not of the the allowed values: \"alphanumeric\", \"occurrences\"');\n        return undefined;\n      },\n      section: 'Sorting'\n    }),\n\n    /**\n     * Specifies a custom order by which to sort the dynamic hierarchical facet values.\n     *\n     * Custom-ordered values won't necessarily retrieve values from the index.\n     *\n     * **Example:**\n     * ```html\n     * <div\n     *   class=\"CoveoDynamicHierarchicalFacet\"\n     *   data-field=\"@countries\"\n     *   data-title=\"Countries\"\n     *   data-tab=\"All\"\n     *   data-clear-label=\"All Countries\"\n     *   data-delimiting-character=\"|\"\n     *   data-custom-sort=\"America, Asia|Japan, America|Mexico, America|Canada, Europe|Germany, Europe|France, Oceania\"\n     * ></div>\n     * ```\n     */\n    customSort: ComponentOptions.buildStringOption({ section: 'Sorting' }),\n\n    /**\n     * If a custom sort is defined, this specifies the delimiter that separates paths from each other.\n     *\n     * *Example:**\n     * ```html\n     * <div\n     *   class=\"CoveoDynamicHierarchicalFacet\"\n     *   data-field=\"@countries\"\n     *   data-title=\"Countries\"\n     *   data-tab=\"All\"\n     *   data-clear-label=\"All Countries\"\n     *   data-delimiting-character=\"|\"\n     *   data-custom-sort=\"America...Asia|Japan...America|Mexico...America|Canada...Europe|Germany...Europe|France...Oceania\"\n     *   data-custom-sort-delimiting-character=\"...\"\n     * ></div>\n     * ```\n     */\n    customSortDelimitingCharacter: ComponentOptions.buildStringOption({\n      section: 'Sorting',\n      depend: 'customSort',\n      postProcessing: (value, options: IDynamicHierarchicalFacetOptions) =>\n        Utils.isNullOrUndefined(value) ? (options.delimitingCharacter === ',' ? '|' : ',') : value\n    }),\n\n    /**\n     * The label to display to clear the facet when a value is selected.\n     *\n     * Default value is the localized string for `AllCategories`.\n     *\n     * @examples Everything\n     */\n    clearLabel: ComponentOptions.buildLocalizedStringOption({\n      localizedString: () => l('AllCategories'),\n      section: 'CommonOptions'\n    }),\n\n    /**\n     * The base path shared by all values to display in the hierarchical facet.\n     *\n     * If you set this option, the specified base path will always be active on the facet.\n     *\n     * This implies that:\n     * - The end user will not have to manually select the specified base path values.\n     * - Values that do not have the specified base path will not be displayed in the facet.\n     *\n     * @examples electronics, electronics\\,laptops\n     *\n     * @availablesince [April 2020 Release (v2.8864)](https://docs.coveo.com/en/3231/)\n     */\n    basePath: ComponentOptions.buildListOption<string>({ defaultValue: [] }),\n\n    /**\n     * The [heading level](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/Heading_Elements) to use for the heading above the facet.\n     *\n     * A value of 0 will render a [`div`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/div) element instead.\n     *\n     * **Default:** `2`.\n     */\n    headingLevel: ComponentOptions.buildNumberOption({ defaultValue: 2, min: 0, max: 6 }),\n\n    ...ResponsiveFacetOptions\n  };\n\n  private listenToQueryStateChange = true;\n  private search: DynamicHierarchicalFacetSearch;\n\n  public options: IDynamicHierarchicalFacetOptions;\n  public dynamicHierarchicalFacetQueryController: DynamicHierarchicalFacetQueryController;\n  public dependsOnManager: DependsOnManager;\n  public isCollapsed: boolean;\n  public header: DynamicFacetHeader;\n  public values: IDynamicHierarchicalFacetValues;\n  public moreValuesAvailable = false;\n  public position: number;\n  public dynamicFacetManager: DynamicFacetManager;\n  public isDynamicFacet = true;\n  public isFieldValueCompatible = true;\n  public isFieldValueHierarchical = true;\n\n  constructor(public element: HTMLElement, options: IDynamicHierarchicalFacetOptions, bindings?: IComponentBindings) {\n    super(element, 'DynamicHierarchicalFacet', bindings);\n    this.options = ComponentOptions.initComponentOptions(element, DynamicHierarchicalFacet, options);\n\n    this.dynamicHierarchicalFacetQueryController = new DynamicHierarchicalFacetQueryController(this);\n    this.isCollapsed = this.options.enableCollapse && this.options.collapsedByDefault;\n    this.verifyCollapsingConfiguration();\n    this.values = new DynamicHierarchicalFacetValues(this);\n\n    ResponsiveFacets.init(this.root, this, this.options);\n    this.initDependsOnManager();\n    this.initBreadCrumbEvents();\n    this.initQueryEvents();\n    this.initQueryStateEvents();\n  }\n\n  public get fieldName() {\n    return this.options.field.slice(1);\n  }\n\n  public get facetType() {\n    return FacetType.hierarchical;\n  }\n\n  public isCurrentlyDisplayed() {\n    return $$(this.element).isVisible();\n  }\n\n  public get hasActiveValues() {\n    return this.values.hasSelectedValue;\n  }\n\n  public hasSelectedValue(value: string) {\n    const values = this.splitValue(value);\n    return isEqual(values, this.values.selectedPath);\n  }\n\n  public selectValue(value: string) {\n    this.selectPath(this.splitValue(value));\n  }\n\n  public deselectValue() {\n    this.clear();\n  }\n\n  public getCaptionForStringValue(value: string) {\n    return this.getCaption(last(this.splitValue(value)));\n  }\n\n  private initQueryEvents() {\n    this.bind.onRootElement(QueryEvents.doneBuildingQuery, (data: IDoneBuildingQueryEventArgs) => this.handleDoneBuildingQuery(data));\n    this.bind.onRootElement(QueryEvents.deferredQuerySuccess, (data: IQuerySuccessEventArgs) => this.handleQuerySuccess(data.results));\n    this.bind.onRootElement(QueryEvents.duringQuery, () => this.ensureDom());\n    this.bind.onRootElement(QueryEvents.queryError, () => this.onNoValues());\n  }\n\n  private initBreadCrumbEvents() {\n    if (this.options.includeInBreadcrumb) {\n      this.bind.onRootElement(BreadcrumbEvents.populateBreadcrumb, (args: IPopulateBreadcrumbEventArgs) =>\n        this.handlePopulateBreadcrumb(args)\n      );\n      this.bind.onRootElement(BreadcrumbEvents.clearBreadcrumb, () => this.reset());\n    }\n  }\n\n  private get queryStateAttribute() {\n    return QueryStateModel.getFacetId(this.options.id);\n  }\n\n  private handleDoneBuildingQuery(data: IDoneBuildingQueryEventArgs) {\n    // If there is a DynamicFacetManager, it will take care of adding the facet's state\n    if (this.dynamicFacetManager) {\n      return;\n    }\n\n    Assert.exists(data);\n    Assert.exists(data.queryBuilder);\n    this.putStateIntoQueryBuilder(data.queryBuilder);\n    this.putStateIntoAnalytics();\n  }\n\n  private verifyCollapsingConfiguration() {\n    if (this.options.collapsedByDefault && !this.options.enableCollapse) {\n      this.logger.warn('Setting \"collapseByDefault\" to \"true\" has no effect when \"enableCollapse\" is set to \"false\"');\n    }\n  }\n\n  public putStateIntoQueryBuilder(queryBuilder: QueryBuilder) {\n    Assert.exists(queryBuilder);\n    this.dynamicHierarchicalFacetQueryController.putFacetIntoQueryBuilder(queryBuilder);\n  }\n\n  public putStateIntoAnalytics() {\n    const pendingEvent = this.usageAnalytics.getPendingSearchEvent();\n    pendingEvent && pendingEvent.addFacetState(this.analyticsFacetState);\n  }\n\n  public scrollToTop() {\n    if (this.options.enableScrollToTop) {\n      ResultListUtils.scrollToTop(this.root);\n    }\n  }\n\n  private updateAppearance() {\n    this.header.toggleCollapse(this.isCollapsed);\n    this.toggleSearchDisplay();\n    $$(this.element).toggleClass('coveo-dynamic-hierarchical-facet-collapsed', this.isCollapsed);\n    $$(this.element).toggleClass('coveo-hidden', !this.values.allFacetValues.length);\n  }\n\n  private toggleSearchDisplay() {\n    if (this.options.enableFacetSearch === false) {\n      return;\n    }\n\n    return $$(this.search.element).toggleClass('coveo-hidden', this.isCollapsed);\n  }\n\n  private handleQuerySuccess(results: IQueryResults) {\n    // If there is a DynamicFacetManager, it will take care of handling the results\n    if (this.dynamicFacetManager) {\n      return;\n    }\n\n    if (Utils.isNullOrUndefined(results.facets)) {\n      return this.notImplementedError();\n    }\n\n    this.handleQueryResults(results);\n  }\n\n  public handleQueryResults(results: IQueryResults) {\n    const index = findIndex(results.facets, { facetId: this.options.id });\n    const facetResponse = index !== -1 ? results.facets[index] : null;\n\n    this.position = facetResponse ? index + 1 : undefined;\n    facetResponse ? this.onNewValues(facetResponse) : this.onNoValues();\n\n    this.header.hideLoading();\n    this.updateQueryStateModel(this.values.selectedPath);\n    this.values.render();\n    this.updateAppearance();\n  }\n\n  private splitValue(value: string) {\n    return value.trim().split(this.options.delimitingCharacter);\n  }\n\n  private onNewValues(facetResponse: IFacetResponse) {\n    this.moreValuesAvailable = facetResponse.moreValuesAvailable;\n    this.values.createFromResponse(facetResponse);\n    if (this.options.customSort) {\n      const order = this.options.customSort.split(this.options.customSortDelimitingCharacter).map(value => this.splitValue(value));\n      this.values.reorderValues(order);\n    }\n  }\n\n  private onNoValues() {\n    this.moreValuesAvailable = false;\n    this.values.resetValues();\n  }\n\n  private updateQueryStateModel(path: string[]) {\n    this.listenToQueryStateChange = false;\n    this.queryStateModel.set(this.queryStateAttribute, path);\n    this.listenToQueryStateChange = true;\n  }\n\n  private beforeSendingQuery() {\n    this.header.showLoading();\n  }\n\n  public triggerNewQuery(beforeExecuteQuery?: () => void) {\n    this.beforeSendingQuery();\n    const options: IQueryOptions = beforeExecuteQuery ? { beforeExecuteQuery } : { ignoreWarningSearchEvent: true };\n    this.queryController.executeQuery(options);\n  }\n\n  public async triggerNewIsolatedQuery(beforeExecuteQuery?: () => void) {\n    this.beforeSendingQuery();\n    beforeExecuteQuery && beforeExecuteQuery();\n\n    try {\n      const results = await this.dynamicHierarchicalFacetQueryController.getQueryResults();\n      this.handleQueryResults(results);\n    } catch (e) {\n      this.header.hideLoading();\n    }\n  }\n\n  /**\n   * Requests additional values.\n   *\n   * See the [`enableMoreLess`]{@link DynamicHierarchicalFacet.options.enableMoreLess} option.\n   *\n   * Automatically triggers an isolated query.\n   * @param additionalNumberOfValues The number of additional values to request. Minimum value is 1. Defaults to the [numberOfValues]{@link DynamicHierarchicalFacet.options.numberOfValues} option value.\n   */\n  public showMoreValues(additionalNumberOfValues = this.options.numberOfValues) {\n    this.ensureDom();\n    this.logger.info('Show more values');\n    this.dynamicHierarchicalFacetQueryController.increaseNumberOfValuesToRequest(additionalNumberOfValues);\n    this.triggerNewIsolatedQuery(() => this.logAnalyticsFacetShowMoreLess(analyticsActionCauseList.dynamicFacetShowMore));\n  }\n\n  /**\n   * Reduces the number of displayed facet values down to [numberOfValues]{@link DynamicFacet.options.numberOfValues}.\n   *\n   * See the [`enableMoreLess`]{@link DynamicHierarchicalFacet.options.enableMoreLess} option.\n   *\n   * Automatically triggers an isolated query.\n   */\n  public showLessValues() {\n    this.ensureDom();\n    this.logger.info('Show less values');\n    this.dynamicHierarchicalFacetQueryController.resetNumberOfValuesToRequest();\n    this.triggerNewIsolatedQuery(() => this.logAnalyticsFacetShowMoreLess(analyticsActionCauseList.dynamicFacetShowLess));\n  }\n\n  /**\n   * Select a path in the hierarchy.\n   *\n   * Does **not** trigger a query automatically.\n   * Does **not** update the visual of the facet until a query is performed.\n   *\n   * @param path The values representing the path.\n   */\n  public selectPath(path: string[]) {\n    Assert.exists(path);\n    Assert.isLargerThan(0, path.length);\n    this.ensureDom();\n    this.updateQueryStateModel(path);\n    this.values.selectPath(path);\n    this.logger.info('Toggle select facet value at path', path);\n  }\n\n  private clear() {\n    this.reset();\n    this.scrollToTop();\n    this.triggerNewQuery(() => this.logAnalyticsEvent(analyticsActionCauseList.dynamicFacetClearAll));\n  }\n\n  /**\n   * Deselects the path in the facet.\n   *\n   * Does **not** trigger a query automatically.\n   * Does **not** update the visual of the facet until a query is performed.\n   */\n  public reset() {\n    this.ensureDom();\n\n    if (!this.values.hasSelectedValue) {\n      return;\n    }\n\n    this.enablePreventAutoSelectionFlag();\n    this.logger.info('Deselect facet value');\n    this.values.clearPath();\n    this.updateQueryStateModel([]);\n  }\n\n  /**\n   * Collapses or expands the facet depending on it's current state.\n   */\n  public toggleCollapse() {\n    this.isCollapsed ? this.expand() : this.collapse();\n  }\n\n  /**\n   * Expands the facet, displaying all of its currently fetched values.\n   */\n  public expand() {\n    if (!this.options.enableCollapse) {\n      return this.logger.warn(`Calling expand() won't do anything on a facet that has the option \"enableCollapse\" set to \"false\"`);\n    }\n    if (!this.isCollapsed) {\n      return;\n    }\n    this.ensureDom();\n    this.logger.info('Expand facet values');\n    this.isCollapsed = false;\n    this.updateAppearance();\n  }\n\n  /**\n   * For this method to work, the component has to be the child of a [DynamicFacetManager]{@link DynamicFacetManager} component.\n   *\n   * Sets a flag indicating whether the facets should be returned in their current order.\n   *\n   * Setting the flag to `true` helps ensuring that the facets do not move around while the end-user is interacting with them.\n   *\n   * The flag is automatically set back to `false` after a query is built.\n   */\n  public enableFreezeFacetOrderFlag() {\n    this.dynamicHierarchicalFacetQueryController.enableFreezeFacetOrderFlag();\n  }\n\n  public enablePreventAutoSelectionFlag() {\n    this.dynamicHierarchicalFacetQueryController.enablePreventAutoSelectionFlag();\n  }\n\n  /**\n   * Collapses the facet, hiding values.\n   */\n  public collapse() {\n    if (!this.options.enableCollapse) {\n      return this.logger.warn(`Calling collapse() won't do anything on a facet that has the option \"enableCollapse\" set to \"false\"`);\n    }\n    if (this.isCollapsed) {\n      return;\n    }\n    this.ensureDom();\n    this.logger.info('Collapse facet values');\n    this.isCollapsed = true;\n    this.updateAppearance();\n  }\n\n  public createDom() {\n    this.createAndAppendContent();\n    this.updateAppearance();\n  }\n\n  /**\n   *\n   * @param value The string to find a caption for.\n   * Returns the caption for a value or the value itself if no caption is available.\n   */\n  public getCaption(value: string) {\n    const valueCaptions = this.options.valueCaption;\n    const caption = valueCaptions[value];\n    return caption ? caption : value;\n  }\n\n  public logAnalyticsEvent(actionCause: IAnalyticsActionCause) {\n    this.usageAnalytics.logSearchEvent<IAnalyticsFacetMeta>(actionCause, this.analyticsFacetMeta);\n  }\n\n  private get analyticsFacetValue() {\n    return this.values.selectedPath.join(this.options.delimitingCharacter);\n  }\n\n  public get analyticsFacetState(): IAnalyticsFacetState[] {\n    if (!this.values.hasSelectedValue) {\n      return [];\n    }\n\n    return [\n      {\n        field: this.options.field.toString(),\n        id: this.options.id,\n        title: this.options.title,\n        facetType: this.facetType,\n        facetPosition: this.position,\n        value: this.analyticsFacetValue,\n        displayValue: this.analyticsFacetValue,\n        state: FacetValueState.selected,\n        valuePosition: 1\n      }\n    ];\n  }\n\n  public get analyticsFacetMeta(): IAnalyticsFacetMeta {\n    return {\n      facetField: this.options.field.toString(),\n      facetId: this.options.id,\n      facetTitle: this.options.title,\n      facetValue: this.analyticsFacetValue\n    };\n  }\n\n  private createAndAppendContent() {\n    this.createAndAppendHeader();\n    this.createAndAppendSearch();\n    this.createAndAppendValues();\n  }\n\n  private createAndAppendHeader() {\n    this.header = new DynamicFacetHeader({\n      id: this.options.id,\n      title: this.options.title,\n      enableCollapse: this.options.enableCollapse,\n      headingLevel: this.options.headingLevel,\n      clear: () => this.clear(),\n      toggleCollapse: () => this.toggleCollapse(),\n      expand: () => this.expand(),\n      collapse: () => this.collapse()\n    });\n    this.element.appendChild(this.header.element);\n  }\n\n  private createAndAppendSearch() {\n    if (this.options.enableFacetSearch === false) {\n      return;\n    }\n\n    this.search = new DynamicHierarchicalFacetSearch(this);\n    this.element.appendChild(this.search.element);\n  }\n\n  private createAndAppendValues() {\n    this.element.appendChild(this.values.render());\n  }\n\n  private pathIsValidForSelection(path: any): path is string[] {\n    return !Utils.isNullOrUndefined(path) && isArray(path);\n  }\n\n  private handleQueryStateChanged(data: IAttributesChangedEventArg) {\n    if (!this.listenToQueryStateChange) {\n      return;\n    }\n\n    const queryStatePath = data.attributes[this.queryStateAttribute];\n\n    if (!this.pathIsValidForSelection(queryStatePath)) {\n      return;\n    }\n\n    if (Utils.arrayEqual(queryStatePath, this.values.selectedPath)) {\n      return;\n    }\n\n    queryStatePath.length ? this.selectPath(queryStatePath) : this.reset();\n  }\n\n  private initQueryStateEvents() {\n    this.queryStateModel.registerNewAttribute(this.queryStateAttribute, []);\n    this.bind.onQueryState<IAttributesChangedEventArg>(MODEL_EVENTS.CHANGE, undefined, data => this.handleQueryStateChanged(data));\n  }\n\n  private initDependsOnManager() {\n    const facetInfo: IDependentFacet = {\n      reset: () => this.reset(),\n      ref: this\n    };\n\n    this.dependsOnManager = new DependsOnManager(facetInfo);\n  }\n\n  private notImplementedError() {\n    this.logger.error('DynamicHierarchicalFacets are not supported by your current search endpoint. Disabling this component.');\n    this.disable();\n    this.updateAppearance();\n  }\n\n  private handlePopulateBreadcrumb(args: IPopulateBreadcrumbEventArgs) {\n    Assert.exists(args);\n\n    if (!this.values.hasSelectedValue) {\n      return;\n    }\n\n    const breadcrumbs = new DynamicHierarchicalFacetBreadcrumb(this, { headingLevel: args.headingLevel });\n    args.breadcrumbs.push({ element: breadcrumbs.element });\n  }\n\n  private logAnalyticsFacetShowMoreLess(cause: IAnalyticsActionCause) {\n    this.usageAnalytics.logCustomEvent<IAnalyticsFacetMeta>(cause, this.analyticsFacetMeta, this.element);\n  }\n}\n\nInitialization.registerAutoCreateComponent(DynamicHierarchicalFacet);\nDynamicHierarchicalFacet.doExport();\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/DynamicHierarchicalFacet/DynamicHierarchicalFacet.ts","import 'styling/DynamicFacet/_DynamicFacet';\nimport { Initialization } from '../Base/Initialization';\nimport { DynamicFacet } from './DynamicFacet';\nimport { IDynamicFacetRangeOptions, DynamicFacetRangeValueFormat, isFacetRangeValueFormat } from './IDynamicFacetRange';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { exportGlobally } from '../../GlobalExports';\nimport { l } from '../../strings/Strings';\nimport { FacetType } from '../../rest/Facet/FacetRequest';\nimport { IRangeValue } from '../../rest/RangeValue';\nimport { DynamicFacetValues } from './DynamicFacetValues/DynamicFacetValues';\nimport { DynamicFacetRangeValueCreator } from './DynamicFacetValues/DynamicFacetRangeValueCreator';\nimport { DynamicFacetRangeQueryController } from '../../controllers/DynamicFacetRangeQueryController';\nimport { Utils } from '../../Core';\nimport { FacetRangeSortOrder, isFacetRangeSortOrder } from '../../rest/Facet/FacetRangeSortOrder';\nimport { Logger } from '../../misc/Logger';\n\n/**\n * A `DynamicFacetRange` is a [facet](https://docs.coveo.com/en/198/) whose values are expressed as ranges.\n *\n * You must set the [`field`]{@link DynamicFacet.options.field} option to a value targeting a numeric or date [field](https://docs.coveo.com/en/200/)\n * in your index for this component to work.\n *\n * This component extends the [`DynamicFacet`]{@link DynamicFacet} component and supports all `DynamicFacet` options except:\n *\n * - [`enableFacetSearch`]{@link DynamicFacet.options.enableFacetSearch}\n * - [`useLeadingWildcardInFacetSearch`]{@link DynamicFacet.options.useLeadingWildcardInFacetSearch}\n * - [`enableMoreLess`]{@link DynamicFacet.options.enableMoreLess}\n * - [`valueCaption`]{@link DynamicFacet.options.valueCaption}\n *\n * @notSupportedIn salesforcefree\n * @availablesince [October 2019 Release (v2.7219)](https://docs.coveo.com/en/3084/)\n */\nexport class DynamicFacetRange extends DynamicFacet implements IComponentBindings {\n  static ID = 'DynamicFacetRange';\n  static parent = DynamicFacet;\n  static doExport = () => exportGlobally({ DynamicFacetRange });\n\n  /**\n   * The options for the DynamicFacetRange\n   * @componentOptions\n   */\n  static options: IDynamicFacetRangeOptions = {\n    /**\n     * The label to insert between the minimum and maximum value of each range displayed in the facet.\n     *\n     * **Default:** The localized string for `to`.\n     *\n     * @examples until, up to\n     */\n    valueSeparator: ComponentOptions.buildLocalizedStringOption({\n      localizedString: () => l('To'),\n      section: 'CommonOptions'\n    }),\n    field: ComponentOptions.buildFieldOption({ required: true, section: 'CommonOptions' }),\n    /**\n     * The string format to apply to the minimum and maximum value of each range displayed in the facet.\n     *\n     * See [`DynamicFacetRangeValueFormat`]{@link DynamicFacetRangeValueFormat} for the list and\n     * description of allowed formats.\n     *\n     * **Default:** If the [`field`]{@link DynamicFacet.options.field} contains \"date\", the format will be [`date`]{@link DynamicFacetRangeValueFormat.date}.\n     * Else, it will be [`number`]{@link DynamicFacetRangeValueFormat.number}.\n     *\n     * @examples date\n     */\n    valueFormat: ComponentOptions.buildStringOption<DynamicFacetRangeValueFormat>({\n      postProcessing: (value, options: IDynamicFacetRangeOptions) => {\n        if (isFacetRangeValueFormat(value)) {\n          return value;\n        }\n\n        if (options.field.indexOf('date') !== -1) {\n          return DynamicFacetRangeValueFormat.date;\n        }\n\n        return DynamicFacetRangeValueFormat.number;\n      },\n      section: 'CommonOptions'\n    }),\n    /**\n     * The number of decimals to display when the [`valueFormat`]{@link DynamicFacetRange.options.valueFormat} is [`number`]{@link DynamicFacetRangeValueFormat.number}\n     *\n     * By default, the number of decimals is what's returned by the index.\n     *\n     * @examples 2\n     */\n    numberOfDecimals: ComponentOptions.buildNumberOption(),\n    /**\n     * The currency symbol to use if the [`valueFormat`]{@link DynamicFacetRange.options.valueFormat} is [`currency`]{@link DynamicFacetRangeValueFormat.currency}.\n     *\n     * By default, the component uses the currency associated with the currently loaded culture file (see [Changing the Language of Your Search Interface](https://docs.coveo.com/421/)).\n     */\n    currencySymbol: ComponentOptions.buildStringOption({ section: 'CommonOptions' }),\n    /**\n     * The list of [range values]{@link IRangeValue} to request (see [Requesting Specific FacetRange Values](https://docs.coveo.com/en/2790/)).\n     *\n     * This value will override the [`numberOfValues`]{@link DynamicFacet.options.numberOfValues} value.\n     *\n     * If this option is not defined, the index will try to generate automatic ranges.\n     */\n    ranges: ComponentOptions.buildJsonOption<IRangeValue[]>({\n      section: 'CommonOptions',\n      postProcessing: ranges => (Utils.isNonEmptyArray(ranges) ? ranges : [])\n    }),\n    /**\n     * The sort order to use for this facet.\n     *\n     * Can be either `ascending` or `descending`.\n     *\n     * **Default:** `ascending`.\n     */\n    sortOrder: <FacetRangeSortOrder>ComponentOptions.buildStringOption({\n      postProcessing: value => {\n        if (!value) {\n          return undefined;\n        }\n\n        if (isFacetRangeSortOrder(value)) {\n          return value;\n        }\n\n        new Logger(value).warn('sortOrder is not of the the allowed values: \"ascending\", \"descending\"');\n        return undefined;\n      },\n      section: 'Sorting'\n    })\n  };\n\n  public isFieldValueCompatible = false;\n\n  /**\n   * Creates a new `DynamicFacetRange` instance.\n   *\n   * @param element The element from which to instantiate the component.\n   * @param options The component options.\n   * @param bindings The component bindings. Automatically resolved by default.\n   */\n  constructor(public element: HTMLElement, public options: IDynamicFacetRangeOptions, bindings?: IComponentBindings) {\n    super(element, ComponentOptions.initComponentOptions(element, DynamicFacetRange, options), bindings, DynamicFacetRange.ID);\n\n    this.disableUnavailableOptions();\n  }\n\n  protected initValues() {\n    this.values = new DynamicFacetValues(this, DynamicFacetRangeValueCreator);\n  }\n\n  protected initDynamicFacetQueryController() {\n    this.dynamicFacetQueryController = new DynamicFacetRangeQueryController(this);\n  }\n\n  private disableUnavailableOptions() {\n    this.options.enableFacetSearch = false;\n    this.options.useLeadingWildcardInFacetSearch = false;\n    this.options.enableMoreLess = false;\n    this.options.valueCaption = {};\n    this.options.sortCriteria = undefined;\n    this.options.customSort = undefined;\n  }\n\n  public get facetType(): FacetType {\n    if (this.options.valueFormat === DynamicFacetRangeValueFormat.date) {\n      return FacetType.dateRange;\n    }\n\n    return FacetType.numericalRange;\n  }\n\n  public showMoreValues() {\n    this.logger.warn('The \"showMoreValues\" method is not available on the \"DynamicFacetRange\" component');\n  }\n\n  public showLessValues() {\n    this.logger.warn('The \"showLessValues\" method is not available on the \"DynamicFacetRange\" component');\n  }\n\n  public async triggerNewIsolatedQuery() {\n    this.logger.warn('The \"triggerNewIsolatedQuery\" method is not available on the \"DynamicFacetRange\" component');\n  }\n}\n\nInitialization.registerAutoCreateComponent(DynamicFacetRange);\nDynamicFacetRange.doExport();\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/DynamicFacet/DynamicFacetRange.ts","import { Component } from '../Base/Component';\nimport { InitializationEvents } from '../../events/InitializationEvents';\nimport { QueryEvents, IQuerySuccessEventArgs, IDoneBuildingQueryEventArgs } from '../../events/QueryEvents';\nimport { exportGlobally } from '../../GlobalExports';\nimport { find, without, partition } from 'underscore';\nimport { IFacetResponse } from '../../rest/Facet/FacetResponse';\nimport { $$ } from '../../utils/Dom';\nimport { Utils } from '../../utils/Utils';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { Assert } from '../../misc/Assert';\nimport { Initialization } from '../Base/Initialization';\nimport { ComponentsTypes } from '../../utils/ComponentsTypes';\nimport { QueryBuilder } from '../Base/QueryBuilder';\nimport { IAutoLayoutAdjustableInsideFacetColumn } from '../SearchInterface/FacetColumnAutoLayoutAdjustment';\nimport { IQueryResults } from '../../rest/QueryResults';\n\nexport interface IDynamicFacetManagerOptions {\n  enableReorder?: boolean;\n  onUpdate?: IDynamicFacetManagerOnUpdate;\n  compareFacets?: IDynamicFacetManagerCompareFacet;\n  maximumNumberOfExpandedFacets?: number;\n}\n\nexport interface IDynamicFacetManagerOnUpdate {\n  (facet: IDynamicManagerCompatibleFacet, index: number): void;\n}\n\nexport interface IDynamicFacetManagerCompareFacet {\n  (facetA: IDynamicManagerCompatibleFacet, facetB: IDynamicManagerCompatibleFacet): number;\n}\n\nexport interface IDynamicManagerCompatibleFacet extends Component, IAutoLayoutAdjustableInsideFacetColumn {\n  dynamicFacetManager: DynamicFacetManager;\n  hasActiveValues: boolean;\n  isDynamicFacet: boolean;\n\n  handleQueryResults(results: IQueryResults): void;\n  putStateIntoQueryBuilder(queryBuilder: QueryBuilder): void;\n  putStateIntoAnalytics(): void;\n  expand(): void;\n  collapse(): void;\n}\n\n/**\n * The `DynamicFacetManager` component is meant to be a parent for multiple [DynamicFacet]{@link DynamicFacet} & [DynamicFacetRange]{@link DynamicFacetRange} components.\n * This component allows controlling a set of [`DynamicFacet`]{@link DynamicFacet} and [`DynamicFacetRange`]{@link DynamicFacetRange} as a group.\n *\n * @externaldocs [Using Dynamic Facets](https://docs.coveo.com/en/2917/).\n * @availablesince [May 2019 Release (v2.6063)](https://docs.coveo.com/en/2909/)\n */\nexport class DynamicFacetManager extends Component {\n  static ID = 'DynamicFacetManager';\n  static doExport = () => exportGlobally({ DynamicFacetManager });\n\n  /**\n   * The options for the DynamicFacetManager\n   * @componentOptions\n   */\n  static options: IDynamicFacetManagerOptions = {\n    /**\n     * Whether to allow the reordering of facets based on Coveo ML and index ranking scores.\n     *\n     * **Default:** `true`\n     */\n    enableReorder: ComponentOptions.buildBooleanOption({ defaultValue: true, section: 'Filtering' }),\n    /**\n     * A function to execute whenever facets are updated in the query response @externaldocs [Defining Custom Dynamic Facet Behaviors](https://docs.coveo.com/en/2917/javascript-search-framework/using-dynamic-facets#defining-custom-dynamic-facet-behaviors).\n     *\n     * **Note:**\n     * > You cannot set this option directly in the component markup as an HTML attribute. You must either set it in the\n     * > [`init`]{@link init} call of your search interface (see\n     * > [Passing Component Options in the init Call](https://developers.coveo.com/x/PoGfAQ#Components-PassingComponentOptionsintheinitCall)),\n     * > or before the `init` call, using the `options` top-level function (see\n     * > [Passing Component Options Before the init Call](https://developers.coveo.com/x/PoGfAQ#Components-PassingComponentOptionsBeforetheinitCall)).\n     */\n    onUpdate: ComponentOptions.buildCustomOption<IDynamicFacetManagerOnUpdate>(() => {\n      return null;\n    }),\n    /**\n     * A custom sort function to execute on facets on every successful query response @externaldocs [Using Custom Dynamic Facet Sort Functions](https://docs.coveo.com/en/2917/javascript-search-framework/using-dynamic-facets#using-custom-dynamic-facet-sort-functions).\n     *\n     * **Note:**\n     * > If specified, the function must implement the JavaScript compareFunction (see [Array.prototype.sort](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort).\n     * > You cannot set this option directly in the component markup as an HTML attribute. You must either set it in the\n     * > [`init`]{@link init} call of your search interface (see\n     * > [Passing Component Options in the init Call](https://developers.coveo.com/x/PoGfAQ#Components-PassingComponentOptionsintheinitCall)),\n     * > or before the `init` call, using the `options` top-level function (see\n     * > [Passing Component Options Before the init Call](https://developers.coveo.com/x/PoGfAQ#Components-PassingComponentOptionsBeforetheinitCall)).\n     */\n    compareFacets: ComponentOptions.buildCustomOption<IDynamicFacetManagerCompareFacet>(() => {\n      return null;\n    }),\n    /**\n     * The maximum number of expanded facets inside the manager.\n     * Remaining facets are collapsed.\n     *\n     * **Note:**\n     * Prioritizes facets with active values, and then prioritizes first facets.\n     * If the number of facets with active values exceeds the value of the `maximumNumberOfExpandedFacets` option, it overrides the option.\n     *\n     * Using the value `-1` disables the feature and keeps all facets expanded.\n     *\n     * @availablesince [September 2019 Release (v2.7023)](https://docs.coveo.com/en/2990/)\n     */\n    maximumNumberOfExpandedFacets: ComponentOptions.buildNumberOption({ defaultValue: 4, min: -1 })\n  };\n\n  private childrenFacets: IDynamicManagerCompatibleFacet[] = [];\n  private containerElement: HTMLElement;\n\n  private get enabledFacets() {\n    return this.childrenFacets.filter(facet => !facet.disabled);\n  }\n\n  private get displayedFacets() {\n    return this.childrenFacets.filter(facet => facet.isCurrentlyDisplayed());\n  }\n\n  /**\n   * Creates a new `DynamicFacetManager` instance.\n   *\n   * @param element The element from which to instantiate the component.\n   * @param options The component options.\n   * @param bindings The component bindings. Automatically resolved by default.\n   */\n  constructor(element: HTMLElement, public options?: IDynamicFacetManagerOptions) {\n    super(element, 'DynamicFacetManager');\n    this.options = ComponentOptions.initComponentOptions(element, DynamicFacetManager, options);\n    this.resetContainer();\n    this.prependContainer();\n    this.initEvents();\n  }\n\n  private resetContainer() {\n    this.containerElement && $$(this.containerElement).remove();\n    this.containerElement = $$('div', { className: 'coveo-dynamic-facet-manager-container' }).el;\n  }\n\n  private prependContainer() {\n    $$(this.element).prepend(this.containerElement);\n  }\n\n  private initEvents() {\n    this.bind.onRootElement(InitializationEvents.afterComponentsInitialization, () => this.handleAfterComponentsInitialization());\n    this.bind.onRootElement(QueryEvents.doneBuildingQuery, (data: IDoneBuildingQueryEventArgs) => this.handleDoneBuildingQuery(data));\n    this.bind.onRootElement(QueryEvents.deferredQuerySuccess, (data: IQuerySuccessEventArgs) => this.handleQuerySuccess(data));\n  }\n\n  private isDynamicFacet(component: Component) {\n    return !!(component as IDynamicManagerCompatibleFacet).isDynamicFacet;\n  }\n\n  private get allDynamicFacets(): IDynamicManagerCompatibleFacet[] {\n    const allFacetsInComponent = ComponentsTypes.getAllFacetInstancesFromElement(this.element);\n    return <IDynamicManagerCompatibleFacet[]>allFacetsInComponent.filter(this.isDynamicFacet);\n  }\n\n  private handleAfterComponentsInitialization() {\n    this.childrenFacets = this.allDynamicFacets;\n    this.childrenFacets.forEach(dynamicFacet => {\n      dynamicFacet.dynamicFacetManager = this;\n      this.containerElement.appendChild(dynamicFacet.element);\n    });\n\n    if (this.element.children.length > 1) {\n      this.logger.warn(`DynamicFacetManager contains incompatible elements. Those elements may be moved in the DOM.\n        To prevent this warning, move those elements outside of the DynamicFacetManager.`);\n    }\n\n    if (!this.childrenFacets.length) {\n      this.disable();\n    }\n  }\n\n  private handleDoneBuildingQuery(data: IDoneBuildingQueryEventArgs) {\n    Assert.exists(data);\n    Assert.exists(data.queryBuilder);\n\n    this.enabledFacets.forEach(dynamicFacet => {\n      dynamicFacet.putStateIntoQueryBuilder(data.queryBuilder);\n      dynamicFacet.putStateIntoAnalytics();\n    });\n  }\n\n  private handleQuerySuccess(data: IQuerySuccessEventArgs) {\n    if (Utils.isNullOrUndefined(data.results.facets)) {\n      return this.notImplementedError();\n    }\n\n    this.enabledFacets.forEach(dynamicFacet => {\n      dynamicFacet.handleQueryResults(data.results);\n    });\n\n    const wasFacetOrderFrozen = data.query.facetOptions && data.query.facetOptions.freezeFacetOrder;\n    if (wasFacetOrderFrozen) {\n      return this.callOnUpdateOnChildrenFacets();\n    }\n\n    if (this.options.enableReorder) {\n      this.options.compareFacets ? this.sortFacetsWithCompareOption() : this.sortFacetsWithResponseOrder(data.results.facets);\n      this.reorderFacetsInDom();\n    }\n\n    this.respectMaximumExpandedFacetsThreshold();\n    this.callOnUpdateOnChildrenFacets();\n  }\n\n  private callOnUpdateOnChildrenFacets() {\n    if (!this.options.onUpdate) {\n      return;\n    }\n\n    this.childrenFacets.forEach((dynamicFacet, index) => this.options.onUpdate(dynamicFacet, index));\n  }\n\n  private sortFacetsWithResponseOrder(facetsResponse: IFacetResponse[]) {\n    const facetsInResponse = facetsResponse.map(({ facetId }) => this.getChildFacetWithId(facetId)).filter(Utils.exists);\n    const facetsNotInResponse = without(this.childrenFacets, ...facetsInResponse);\n\n    this.childrenFacets = [...facetsInResponse, ...facetsNotInResponse];\n  }\n\n  private sortFacetsWithCompareOption() {\n    this.childrenFacets = this.childrenFacets.sort(this.options.compareFacets);\n  }\n\n  private reorderFacetsInDom() {\n    this.resetContainer();\n    const fragment = document.createDocumentFragment();\n\n    this.childrenFacets.forEach(dynamicFacet => fragment.appendChild(dynamicFacet.element));\n\n    this.containerElement.appendChild(fragment);\n    this.prependContainer();\n  }\n\n  private respectMaximumExpandedFacetsThreshold() {\n    if (this.options.maximumNumberOfExpandedFacets === -1) {\n      return;\n    }\n\n    const [collapsableFacets, uncollapsableFacets] = partition(this.displayedFacets, facet => facet.options.enableCollapse);\n    let facetsLeftToExpandCounter = this.options.maximumNumberOfExpandedFacets - uncollapsableFacets.length;\n\n    collapsableFacets.forEach(dynamicFacet => {\n      if (facetsLeftToExpandCounter < 1) {\n        return dynamicFacet.collapse();\n      }\n\n      if (dynamicFacet.options.collapsedByDefault) {\n        dynamicFacet.logger.info(\n          'The facet has its \"collapsedByDefault\" option set to \"true\", which prevents the DynamicFacetManager from expanding it.',\n          'While this configuration may be legitimate, it partially defeats the purpose of the dynamic navigation experience feature.',\n          'For more information, see https://docs.coveo.com/en/2917/.'\n        );\n        return dynamicFacet.collapse();\n      }\n\n      facetsLeftToExpandCounter--;\n      dynamicFacet.expand();\n    });\n  }\n\n  private getChildFacetWithId(id: string) {\n    return find(this.childrenFacets, facet => facet.options.id === id);\n  }\n\n  private notImplementedError() {\n    this.logger.error('DynamicFacetManager is not supported by your current search endpoint. Disabling this component.');\n    this.disable();\n  }\n\n  public isCurrentlyDisplayed() {\n    return !!find(this.childrenFacets, facet => facet.isCurrentlyDisplayed());\n  }\n}\n\nInitialization.registerAutoCreateComponent(DynamicFacetManager);\nDynamicFacetManager.doExport();\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/DynamicFacetManager/DynamicFacetManager.ts","import 'styling/_MissingTerms';\nimport { $$, Initialization, l } from '../../Core';\nimport { exportGlobally } from '../../GlobalExports';\nimport { IQueryResult } from '../../rest/QueryResult';\nimport { Dom } from '../../utils/Dom';\nimport { analyticsActionCauseList, IAnalyticsMissingTerm } from '../Analytics/AnalyticsActionListMeta';\nimport { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { MissingTermManager } from './MissingTermManager';\nimport XRegExp = require('xregexp');\nimport { intersection } from 'underscore';\nimport { Utils } from '../../UtilsModules';\n\nexport interface IMissingTermsOptions {\n  caption?: string;\n  clickable?: boolean;\n  numberOfTerms?: number;\n}\n\n/**\n * This [result template component](https://docs.coveo.com/en/513/#using-result-template-components) renders a list of query terms\n * that were not matched by the associated result item.\n *\n * @availablesince [July 2019 Release (v2.6459)](https://docs.coveo.com/en/2938/)\n */\nexport class MissingTerms extends Component {\n  static ID = 'MissingTerms';\n\n  /**\n   * @componentOptions\n   */\n  static options: IMissingTermsOptions = {\n    /**\n     * Whether to allow the end-user to click a missing term to filter out items that do not match this term.\n     *\n     * **Default:** `true`\n     */\n    clickable: ComponentOptions.buildBooleanOption({ defaultValue: true }),\n    /**\n     * The text to display before missing terms.\n     *\n     * **Default:** The localized string for `Missing`.\n     */\n    caption: ComponentOptions.buildLocalizedStringOption({\n      localizedString: () => l('Missing')\n    }),\n    /**\n     * The maximum number of missing term to be displayed\n     *\n     * **Default:** `5`\n     * **Minimum value:** `1`\n     */\n    numberOfTerms: ComponentOptions.buildNumberOption({\n      defaultValue: 5,\n      min: 1\n    })\n  };\n\n  static doExport = () => {\n    exportGlobally({\n      MissingTerms: MissingTerms\n    });\n  };\n\n  private termForcedToAppear: string[];\n\n  /**\n   * Creates a new `MissingTerms` component instance.\n   * @param element The element on which to instantiate the component.\n   * @param options The configuration options for the component.\n   * @param bindings The bindings required by the component to function normally. If not set, these will be automatically resolved (with a slower execution time).\n   * @param result The query result item to associate the component with.\n   */\n  constructor(\n    public element: HTMLElement,\n    public options?: IMissingTermsOptions,\n    bindings?: IComponentBindings,\n    public result?: IQueryResult\n  ) {\n    super(element, MissingTerms.ID, bindings);\n\n    this.options = ComponentOptions.initComponentOptions(element, MissingTerms, options);\n    this.addMissingTerms();\n  }\n\n  private get allResultTerms() {\n    let absentTerms = this.result.absentTerms;\n\n    if (this.result.attachments) {\n      absentTerms = this.intersectAbsentTerms(absentTerms, this.result.attachments);\n    }\n\n    if (this.result.childResults) {\n      absentTerms = this.intersectAbsentTerms(absentTerms, this.result.childResults);\n    }\n\n    return absentTerms;\n  }\n\n  private intersectAbsentTerms(absentTerms: string[], results: IQueryResult[]) {\n    return intersection(absentTerms, ...results.map(result => result.absentTerms));\n  }\n\n  /**\n   * Returns all original basic query expression terms and phrases that were not matched by the result item the component instance is associated with.\n   */\n  public get missingTerms() {\n    return [...this.absentTerms, ...this.absentPhrases];\n  }\n\n  private get absentTerms() {\n    const absentTerms: string[] = [];\n    const terms = this.allResultTerms.filter(value => !this.isMissingPhrase(value));\n\n    for (const term of terms) {\n      const termMatch = this.queryMatch(term);\n      termMatch && absentTerms.push(termMatch);\n    }\n\n    return absentTerms;\n  }\n\n  private get absentPhrases() {\n    const absentPhrases: string[] = [];\n    const phrases = this.allResultTerms.filter(value => this.isMissingPhrase(value));\n\n    for (const phrase of phrases) {\n      const withoutQuotes = phrase.slice(1, -1);\n      const phraseMatch = this.queryMatch(withoutQuotes, true);\n      phraseMatch && absentPhrases.push(phraseMatch);\n    }\n\n    return absentPhrases;\n  }\n\n  private isMissingPhrase(value: string) {\n    return Utils.stringStartsWith(value, '\"') && Utils.stringEndsWith(value, '\"');\n  }\n\n  private queryMatch(term: string, stripBreakingCharacters = false): string | null {\n    const regex = this.createWordBoundaryDelimitedRegex(term);\n    const query: string = this.queryStateModel.get('q');\n    // Mimics the query received by the index\n    const queryToExec = stripBreakingCharacters ? query.replace(XRegExp(this.breakingCharacters, 'gi'), ' ') : query;\n    const result = regex.exec(queryToExec);\n\n    if (result) {\n      const originalKeywordInQuery = result[4];\n      return originalKeywordInQuery;\n    }\n\n    return null;\n  }\n\n  /**\n   * Injects a term in the advanced part of the query expression (aq) to filter out items that do not match the term.\n   * @param term The term to add to the advanced query expression.\n   */\n  public addTermForcedToAppear(term: string) {\n    if (this.missingTerms.indexOf(term) === -1) {\n      this.logger.warn(\n        `Method execution aborted because the term to inject in aq (\"${term}\") is not a missing term.`,\n        `Allowed missing terms: ${this.missingTerms.toString()}.`\n      );\n      return;\n    }\n    this.updateTermForcedToAppear();\n    this.termForcedToAppear.push(term);\n    this.queryStateModel.set('missingTerms', [...this.termForcedToAppear]);\n  }\n\n  private updateTermForcedToAppear() {\n    this.termForcedToAppear = [...this.queryStateModel.get('missingTerms')];\n  }\n\n  private addMissingTerms() {\n    if (this.missingTerms.length === 0) {\n      return;\n    }\n    const missingTermElement = this.buildContainer();\n    if (missingTermElement.length > 1) {\n      this.hideMissingTermsOverTheNumberOfResults(missingTermElement);\n      missingTermElement.map(element => {\n        $$(this.element).append(element);\n      });\n    }\n  }\n\n  private buildContainer(): HTMLElement[] {\n    const elements: HTMLElement[] = [];\n    elements.push(this.buildCaption().el);\n    this.buildMissingTerms().forEach(term => {\n      if (term) {\n        elements.push(term.el);\n      }\n    });\n    return elements;\n  }\n\n  private buildCaption(): Dom {\n    return $$('span', { className: 'coveo-field-caption' }, this.options.caption);\n  }\n\n  private buildMissingTerms(): Dom[] {\n    const validTerms = this.absentTerms.filter(term => this.isValidTerm(term));\n    const validPhrases = this.absentPhrases.filter(phrase => this.isValidPhrase(phrase, validTerms));\n    return [...validTerms, ...validPhrases].map(term => {\n      return this.makeTermClickableIfEnabled(term);\n    });\n  }\n\n  private executeNewQuery(missingTerm: string = this.queryStateModel.get('q')) {\n    this.queryController.executeQuery();\n  }\n\n  private makeTermClickableIfEnabled(term: string): Dom {\n    if (this.options.clickable) {\n      const termElement = $$('button', { className: 'coveo-missing-term coveo-clickable', type: 'button' }, term);\n      termElement.on('click', () => {\n        this.addTermForcedToAppear(term);\n        this.logAnalyticsAddMissingTerm(term);\n        this.executeNewQuery(term);\n      });\n      return termElement;\n    } else {\n      return $$('span', { className: 'coveo-missing-term' }, term);\n    }\n  }\n\n  private createWordBoundaryDelimitedRegex(term: string): RegExp {\n    return XRegExp(`${MissingTermManager.wordBoundary}(${term})${MissingTermManager.wordBoundary}`, 'gi');\n  }\n\n  private containsFeaturedResults(term: string): boolean {\n    this.updateTermForcedToAppear();\n    return this.termForcedToAppear.indexOf(term) !== -1;\n  }\n\n  private hideMissingTermsOverTheNumberOfResults(elements: HTMLElement[]) {\n    const allMissingTerms = elements.filter(element => {\n      return element.tagName === 'BUTTON';\n    });\n    if (allMissingTerms.length <= this.options.numberOfTerms) {\n      return;\n    }\n    for (let index = this.options.numberOfTerms; index < allMissingTerms.length; index++) {\n      $$(allMissingTerms[index]).hide();\n    }\n    const nbMoreResults = allMissingTerms.length - this.options.numberOfTerms;\n    const showMore = $$(\n      'button',\n      { className: 'coveo-missing-term-show-more coveo-clickable', type: 'button' },\n      l('NMore', [nbMoreResults])\n    );\n\n    showMore.on('click', () => {\n      this.showAllHiddenMissingTerms();\n    });\n    elements.push(showMore.el);\n  }\n\n  private showAllHiddenMissingTerms() {\n    const showMore = $$(this.element).find('.coveo-missing-term-show-more');\n    showMore.parentNode.removeChild(showMore);\n    const allMissingTerms = $$(this.element).findAll('.coveo-missing-term');\n    for (let index = this.options.numberOfTerms; index < allMissingTerms.length; index++) {\n      $$(allMissingTerms[index]).show();\n      allMissingTerms[index].removeAttribute('style');\n    }\n  }\n\n  private isValidTerm(term: string) {\n    return this.isNonBoundaryTerm(term) && !this.containsFeaturedResults(term);\n  }\n\n  private isValidPhrase(phrase: string, terms: string[]) {\n    return terms.every(term => {\n      const regex = this.createWordBoundaryDelimitedRegex(term);\n      const termInPhrase = regex.exec(phrase);\n      return !termInPhrase;\n    });\n  }\n\n  private get breakingCharacters() {\n    return `[-'?\\*’.~=,\\/\\\\\\\\:\\`;_!&\\(\\)]+`;\n  }\n\n  private isNonBoundaryTerm(term: string) {\n    //p{L} is a Unicode script that matches any character in any language.\n    const wordWithBreakpoints = `\\\\p{L}*${this.breakingCharacters}\\\\p{L}*`;\n    const regex = XRegExp(wordWithBreakpoints, 'gi');\n    const query = this.queryStateModel.get('q');\n    const matches = query.match(regex) || [];\n    return matches.every((word: string) => {\n      return word.indexOf(term) === -1;\n    });\n  }\n\n  private logAnalyticsAddMissingTerm(term: string) {\n    this.usageAnalytics.logSearchEvent<IAnalyticsMissingTerm>(analyticsActionCauseList.addMissingTerm, {\n      missingTerm: term\n    });\n  }\n}\nInitialization.registerAutoCreateComponent(MissingTerms);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/MissingTerm/MissingTerms.ts","import { IComponentBindings } from '../Base/ComponentBindings';\nimport { exportGlobally } from '../../GlobalExports';\nimport { ComponentOptions, Initialization, $$, Component, HtmlTemplate } from '../../Core';\nimport { IQueryResults } from '../../rest/QueryResults';\nimport 'styling/_QuerySuggestPreview';\nimport { Template } from '../Templates/Template';\nimport { TemplateComponentOptions } from '../Base/TemplateComponentOptions';\nimport { ITemplateToHtml, TemplateToHtml } from '../Templates/TemplateToHtml';\nimport { ResultLink } from '../ResultLink/ResultLink';\nimport { OmniboxAnalytics } from '../Omnibox/OmniboxAnalytics';\nimport {\n  IAnalyticsOmniboxSuggestionMeta,\n  analyticsActionCauseList,\n  IAnalyticsClickQuerySuggestPreviewMeta\n} from '../Analytics/AnalyticsActionListMeta';\nimport { ISearchResultPreview } from '../../magicbox/ResultPreviewsManager';\nimport { ImageFieldValue } from '../FieldImage/ImageFieldValue';\nimport {\n  ResultPreviewsManagerEvents,\n  IPopulateSearchResultPreviewsEventArgs,\n  IUpdateResultPreviewsManagerOptionsEventArgs,\n  IBuildingResultPreviewsQueryEventArgs\n} from '../../events/ResultPreviewsManagerEvents';\nimport { IQuery } from '../../rest/Query';\nimport { Suggestion } from '../../magicbox/SuggestionsManager';\n\nexport interface IQuerySuggestPreview {\n  numberOfPreviewResults?: number;\n  resultTemplate?: Template;\n  executeQueryDelay?: number;\n}\n\n/**\n * This component renders previews of the top query results matching the currently focused query suggestion in the search box.\n *\n * As such, this component only works when the search interface can\n * [provide Coveo Machine Learning query suggestions](https://docs.coveo.com/en/340/#providing-coveo-machine-learning-query-suggestions).\n *\n * This component should be initialized on a `div` which can be nested anywhere inside the root element of your search interface.\n *\n * See [Rendering Query Suggestion Result Previews](https://docs.coveo.com/en/340/#rendering-query-suggestion-result-previews).\n *\n * @availablesince [December 2019 Release (v2.7610)](https://docs.coveo.com/en/3142/)\n */\nexport class QuerySuggestPreview extends Component implements IComponentBindings {\n  static ID = 'QuerySuggestPreview';\n\n  static doExport = () => {\n    exportGlobally({\n      QuerySuggestPreview: QuerySuggestPreview\n    });\n  };\n\n  /**\n   * The options for the component\n   * @componentOptions\n   */\n  static options: IQuerySuggestPreview = {\n    /**\n     * The HTML `id` attribute value, or CSS selector of the previously registered\n     * [result template](https://docs.coveo.com/413/) to apply when rendering the\n     * query suggestion result previews.\n     *\n     * **Examples**\n     * * Specifying the `id` attribute of the target result template:\n     * ```html\n     * <div class=\"CoveoQuerySuggestPreview\" data-result-template-id=\"myTemplateId\"></div>\n     * ```\n     * * Specifying an equivalent CSS selector:\n     * ```html\n     * <div class=\"CoveoQuerySuggestPreview\" data-result-template-selector=\"#myTemplateId\"></div>\n     * ```\n     *\n     * If you specify no previously registered template through this option, the component uses its default template.\n     */\n    resultTemplate: TemplateComponentOptions.buildTemplateOption(),\n    /**\n     * The maximum number of query results to render in the preview.\n     */\n    numberOfPreviewResults: ComponentOptions.buildNumberOption({\n      defaultValue: 4,\n      min: 1,\n      max: 6\n    }),\n    /**\n     *  The amount of focus time (in milliseconds) required on a query suggestion before requesting a preview of its top results.\n     */\n    executeQueryDelay: ComponentOptions.buildNumberOption({ defaultValue: 200 })\n  };\n\n  private omniboxAnalytics: OmniboxAnalytics;\n\n  /**\n   * Creates a new QuerySuggestPreview component.\n   * @param element The HTMLElement on which to instantiate the component.\n   * @param options The options for the QuerySuggestPreview component.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time).\n   */\n  constructor(public element: HTMLElement, public options?: IQuerySuggestPreview, public bindings?: IComponentBindings) {\n    super(element, QuerySuggestPreview.ID, bindings);\n\n    this.options = ComponentOptions.initComponentOptions(element, QuerySuggestPreview, options);\n\n    if (!this.options.resultTemplate) {\n      this.logger.warn(`No template was provided for ${QuerySuggestPreview.ID}, a default template was used instead.`);\n      this.options.resultTemplate = this.buildDefaultSearchResultPreviewTemplate();\n    }\n\n    this.bind.onRootElement(\n      ResultPreviewsManagerEvents.updateResultPreviewsManagerOptions,\n      (args: IUpdateResultPreviewsManagerOptionsEventArgs) =>\n        (args.displayAfterDuration = Math.max(args.displayAfterDuration || 0, this.options.executeQueryDelay))\n    );\n\n    this.bind.onRootElement(ResultPreviewsManagerEvents.populateSearchResultPreviews, (args: IPopulateSearchResultPreviewsEventArgs) =>\n      this.populateSearchResultPreviews(args)\n    );\n\n    this.omniboxAnalytics = this.searchInterface.getOmniboxAnalytics();\n  }\n\n  private buildDefaultSearchResultPreviewTemplate() {\n    return HtmlTemplate.create(\n      $$(\n        'div',\n        { className: 'result-template' },\n        $$(\n          'div',\n          { className: 'coveo-result-frame coveo-default-result-preview' },\n          $$('div', { className: Component.computeCssClassName(ImageFieldValue), 'data-field': '@image' }),\n          $$('a', { className: Component.computeCssClassName(ResultLink) })\n        )\n      ).el\n    );\n  }\n\n  private get templateToHtml() {\n    const templateToHtmlArgs: ITemplateToHtml = {\n      searchInterface: this.searchInterface,\n      queryStateModel: this.queryStateModel,\n      resultTemplate: this.options.resultTemplate\n    };\n    return new TemplateToHtml(templateToHtmlArgs);\n  }\n\n  private populateSearchResultPreviews(args: IPopulateSearchResultPreviewsEventArgs) {\n    args.previewsQueries.push(this.fetchSearchResultPreviews(args.suggestion));\n  }\n\n  private async fetchSearchResultPreviews(suggestion: Suggestion) {\n    const query = this.buildQuery(suggestion);\n    this.logShowQuerySuggestPreview();\n    const results = await this.queryController.getEndpoint().search(query);\n    if (!results) {\n      return [];\n    }\n    return this.buildResultsPreview(suggestion, results);\n  }\n\n  private buildQuery(suggestion: Suggestion) {\n    const query = this.buildDefaultQuery(suggestion);\n    $$(this.root).trigger(ResultPreviewsManagerEvents.buildingResultPreviewsQuery, <IBuildingResultPreviewsQueryEventArgs>{ query });\n    return query;\n  }\n\n  private buildDefaultQuery(suggestion: Suggestion): IQuery {\n    const { searchHub, pipeline, tab, locale, timezone, context, cq } = this.queryController.getLastQuery();\n    return {\n      firstResult: 0,\n      searchHub,\n      pipeline,\n      tab,\n      locale,\n      timezone,\n      context,\n      cq,\n      numberOfResults: this.options.numberOfPreviewResults,\n      q: suggestion.text || suggestion.dom.innerText,\n      ...(suggestion.advancedQuery && { aq: suggestion.advancedQuery })\n    };\n  }\n\n  private async buildResultsPreview(suggestion: Suggestion, results: IQueryResults) {\n    const buildResults = await this.templateToHtml.buildResults(results, 'preview', []);\n    if (!(buildResults.length > 0)) {\n      return [];\n    }\n    return buildResults.map((element, index) => this.buildResultPreview(suggestion, element, index));\n  }\n\n  private buildResultPreview(suggestion: Suggestion, element: HTMLElement, rank: number): ISearchResultPreview {\n    element.classList.add('coveo-preview-selectable');\n    const resultLink = element.querySelector(Component.computeSelectorForType(ResultLink.ID)) as HTMLElement;\n    if (resultLink) {\n      element.setAttribute('aria-label', resultLink.textContent);\n      resultLink.setAttribute('role', 'link');\n      resultLink.removeAttribute('aria-level');\n    }\n    return {\n      element,\n      onSelect: () => this.handleSelect(suggestion, element, rank)\n    };\n  }\n\n  private handleSelect(suggestion: Suggestion, element: HTMLElement, rank: number) {\n    this.logClickQuerySuggestPreview(suggestion, rank, element);\n    const link = $$(element).find(`.${Component.computeCssClassNameForType('ResultLink')}`);\n    if (link) {\n      const resultLink = <ResultLink>Component.get(link);\n      resultLink.openLinkAsConfigured();\n      resultLink.openLink();\n    }\n  }\n\n  private logShowQuerySuggestPreview() {\n    this.usageAnalytics.logSearchEvent<IAnalyticsOmniboxSuggestionMeta>(\n      analyticsActionCauseList.showQuerySuggestPreview,\n      this.omniboxAnalytics.buildCustomDataForPartialQueries()\n    );\n  }\n\n  private logClickQuerySuggestPreview(suggestion: Suggestion, displayedRank: number, element: HTMLElement) {\n    this.usageAnalytics.logCustomEvent<IAnalyticsClickQuerySuggestPreviewMeta>(\n      analyticsActionCauseList.clickQuerySuggestPreview,\n      {\n        suggestion: suggestion.text || suggestion.dom.innerText,\n        displayedRank\n      },\n      element\n    );\n  }\n}\n\nInitialization.registerAutoCreateComponent(QuerySuggestPreview);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/QuerySuggestPreview/QuerySuggestPreview.ts","import { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { QueryEvents, IBuildingQueryEventArgs } from '../../events/QueryEvents';\nimport { AnalyticsEvents, IChangeAnalyticsCustomDataEventArgs } from '../../events/AnalyticsEvents';\nimport { Initialization } from '../Base/Initialization';\nimport { exportGlobally } from '../../GlobalExports';\nimport { IBuildingQuerySuggestArgs, OmniboxEvents } from '../../events/OmniboxEvents';\n\nexport interface ICommerceQueryOptions {\n  listing?: string;\n}\n\n/**\n * This component exposes options to handle commerce-related queries.\n *\n * @availablesince [March 2020 Release (v2.8521)](https://docs.coveo.com/en/3203/)\n */\nexport class CommerceQuery extends Component {\n  static ID = 'CommerceQuery';\n\n  static doExport = () => {\n    exportGlobally({\n      CommerceQuery: CommerceQuery\n    });\n  };\n\n  /**\n   * The options for the CommerceQuery.\n   * @componentOptions\n   */\n  static options: ICommerceQueryOptions = {\n    /**\n     * The listing page identifier.\n     *\n     * In a typical Coveo for Commerce solution, all listing pages should share the same `searchHub`/`originLevel1` and be differentiated by setting this option to a unique, human-readable value.\n     *\n     * When specified, this option sets the `tab`/`originLevel2` parameter, as well as the `listing` property of the `context`/`customData` object of each query/usage analytics event originating from the listing page. This allows Coveo ML to provide relevant output for the listing page, and can also be useful for usage analytics reporting purposes.\n     *\n     * @examples ACME Furniture, ACME Jewelry, ACME Clothes\n     */\n    listing: ComponentOptions.buildStringOption()\n  };\n\n  /**\n   * Creates a new CommerceQuery component.\n   * @param element The HTMLElement on which to instantiate the component.\n   * @param options The options for the CommerceQuery component.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time).\n   */\n  constructor(public element: HTMLElement, public options?: ICommerceQueryOptions, public bindings?: IComponentBindings) {\n    super(element, CommerceQuery.ID, bindings);\n\n    this.options = ComponentOptions.initComponentOptions(element, CommerceQuery, options);\n\n    this.bind.onRootElement(QueryEvents.doneBuildingQuery, this.handleDoneBuildingQuery);\n    this.bind.onRootElement(OmniboxEvents.buildingQuerySuggest, this.handleBuildingQuerySuggest);\n    this.bind.onRootElement(AnalyticsEvents.changeAnalyticsCustomData, this.handleChangeAnalytics);\n  }\n\n  private handleDoneBuildingQuery(event: IBuildingQueryEventArgs) {\n    if (this.options.listing) {\n      event.queryBuilder.tab = this.options.listing;\n      event.queryBuilder.addContextValue('listing', this.options.listing);\n    }\n  }\n\n  private handleBuildingQuerySuggest(event: IBuildingQuerySuggestArgs) {\n    if (this.options.listing) {\n      event.payload.tab = this.options.listing;\n      (event.payload.context || (event.payload.context = {})).listing = this.options.listing;\n    }\n  }\n\n  private handleChangeAnalytics(event: IChangeAnalyticsCustomDataEventArgs) {\n    if (this.options.listing) {\n      event.originLevel2 = this.options.listing;\n    }\n  }\n}\n\nInitialization.registerAutoCreateComponent(CommerceQuery);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/CommerceQuery/CommerceQuery.ts","import 'styling/_SortDropdown';\nimport { findIndex } from 'underscore';\nimport { exportGlobally } from '../../GlobalExports';\nimport { IQuerySuccessEventArgs, IQueryErrorEventArgs, QueryEvents } from '../../events/QueryEvents';\nimport { IAttributeChangedEventArg, MODEL_EVENTS } from '../../models/Model';\nimport { QUERY_STATE_ATTRIBUTES, QueryStateModel } from '../../models/QueryStateModel';\nimport { $$ } from '../../utils/Dom';\nimport { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { Initialization } from '../Base/Initialization';\nimport { InitializationEvents } from '../../events/InitializationEvents';\nimport { Sort } from '../Sort/Sort';\nimport { Dropdown } from '../FormWidgets/Dropdown';\nimport { l } from '../../strings/Strings';\n\n/**\n * The `SortDropdown` component renders a dropdown that the end user can interact with to select the criteria to use when sorting query results.\n *\n * It is meant to be a parent of regular [`Sort`]{@link Sort} components. Example:\n * ```\n * <div class=\"CoveoSortDropdown\">\n *   <span class=\"CoveoSort\" data-sort-criteria=\"relevancy\" data-caption=\"Relevance\"></span>\n *   <span class=\"CoveoSort\" data-sort-criteria=\"date descending\" data-caption=\"Newest\"></span>\n *   <span class=\"CoveoSort\" data-sort-criteria=\"date ascending\" data-caption=\"Oldest\"></span>\n * </div>\n * ```\n * Each one of the children `Sort` components should have only one sort criteria to prevent the regular toggle behaviour.\n *\n * @availablesince [March 2020 Release (v2.8521)](https://docs.coveo.com/en/3203/)\n */\nexport class SortDropdown extends Component {\n  static ID = 'SortDropdown';\n  static options: any = {};\n\n  static doExport = () => {\n    exportGlobally({\n      SortDropdown: SortDropdown\n    });\n  };\n\n  private dropdown: Dropdown;\n  private sortComponents: Sort[] = [];\n\n  /**\n   * Creates a new `SortDropdown` component instance.\n   * @param element The HTMLElement on which to instantiate the component.\n   * @param options The options for this component instance.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time).\n   */\n  constructor(public element: HTMLElement, public options?: any, bindings?: IComponentBindings) {\n    super(element, SortDropdown.ID, bindings);\n\n    this.options = ComponentOptions.initComponentOptions(element, SortDropdown, options);\n    this.removeTabSupport();\n\n    this.bind.oneRootElement(InitializationEvents.afterInitialization, () => this.handleAfterInitialization());\n    this.bind.onQueryState(MODEL_EVENTS.CHANGE_ONE, QUERY_STATE_ATTRIBUTES.SORT, (args: IAttributeChangedEventArg) =>\n      this.handleQueryStateChanged(args)\n    );\n    this.bind.onRootElement(QueryEvents.querySuccess, (args: IQuerySuccessEventArgs) => this.handleQuerySuccess(args));\n    this.bind.onRootElement(QueryEvents.queryError, (args: IQueryErrorEventArgs) => this.handleQueryError(args));\n  }\n\n  private handleAfterInitialization() {\n    this.buildDropdown();\n  }\n\n  private clearDropdown() {\n    this.dropdown && this.element.removeChild(this.dropdown.getElement());\n    this.dropdown = null;\n  }\n\n  private buildDropdown() {\n    this.sortComponents = this.getEnabledSortComponents();\n    this.clearDropdown();\n\n    if (!this.sortComponents.length) {\n      return;\n    }\n\n    this.dropdown = new Dropdown(\n      () => this.handleChange(),\n      this.getValuesForDropdown(),\n      value => this.getCaptionForValue(value),\n      l('SortBy')\n    );\n    this.element.appendChild(this.dropdown.getElement());\n    this.update();\n  }\n\n  private getEnabledSortComponents() {\n    const sortComponents = $$(this.element)\n      .findAll(`.${Component.computeCssClassNameForType('Sort')}`)\n      .map(sortElement => {\n        const sortCmp = <Sort>Component.get(sortElement, Sort);\n        if (sortCmp.options.sortCriteria.length == 1) {\n          return sortCmp;\n        } else {\n          this.logger.warn(\n            `Each Sort component inside a SortDropdown should have only one sort criteria. Skipping ${\n              sortCmp.options.caption\n            } in the SortDropdown.`\n          );\n          return;\n        }\n      })\n      .filter(sortCmp => sortCmp && !sortCmp.disabled);\n\n    return sortComponents;\n  }\n\n  private getValuesForDropdown(): string[] {\n    return this.sortComponents.map(sort => sort.options.sortCriteria.toString());\n  }\n\n  private handleQueryStateChanged(data: IAttributeChangedEventArg) {\n    this.update();\n  }\n\n  private update() {\n    if (!this.dropdown) {\n      return;\n    }\n\n    const sortCriteria = <string>this.queryStateModel.get(QueryStateModel.attributesEnum.sort);\n    this.select(sortCriteria);\n  }\n\n  /**\n   * Selects a sort criteria from the options.\n   * @param sortCriteria The sort criteria to select.\n   * @param executeQuery Whether to execute a query after changing the sort criteria\n   */\n  public select(sortCriteria: string, executeQuery: boolean = false) {\n    const sortIndex = this.getSortIndex(sortCriteria);\n    sortIndex > -1 && this.dropdown.select(sortIndex, executeQuery);\n    $$(this.dropdown.getElement()).toggleClass('coveo-selected', sortIndex > -1);\n  }\n\n  private handleQuerySuccess(data: IQuerySuccessEventArgs) {\n    if (!data.results.results.length) {\n      return this.hideElement();\n    }\n\n    this.buildDropdown();\n\n    if (!this.sortComponents.length) {\n      return this.hideElement();\n    }\n\n    this.showElement();\n  }\n\n  private handleQueryError(data: IQueryErrorEventArgs) {\n    this.hideElement();\n  }\n\n  private handleChange() {\n    const selectedValue = this.dropdown.getValue();\n    const sortIndex = this.getSortIndex(selectedValue);\n    sortIndex > -1 && this.sortComponents[sortIndex].selectAndExecuteQuery();\n  }\n\n  private getCaptionForValue(value: string) {\n    const sortIndex = this.getSortIndex(value);\n    return sortIndex > -1 ? this.sortComponents[sortIndex].options.caption : '';\n  }\n\n  private getSortIndex(itemValue: string) {\n    return findIndex(this.sortComponents, sort => sort.options.sortCriteria.toString() === itemValue);\n  }\n\n  private hideElement() {\n    $$(this.element).hide();\n  }\n\n  private showElement() {\n    $$(this.element).show();\n  }\n}\n\nInitialization.registerAutoCreateComponent(SortDropdown);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/SortDropdown/SortDropdown.ts","import { ModalBox as ModalBoxModule } from '../../ExternalModulesShim';\nimport { exportGlobally } from '../../GlobalExports';\nimport { Component } from '../Base/Component';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { QueryEvents, Initialization, $$ } from '../../Core';\nimport { IQuerySuccessEventArgs } from '../../events/QueryEvents';\nimport { IQuestionAnswerResponse } from '../../rest/QuestionAnswerResponse';\nimport 'styling/_SmartSnippet';\nimport { find, map, flatten, compact } from 'underscore';\nimport { IQueryResult } from '../../rest/QueryResult';\nimport { UserFeedbackBanner } from './UserFeedbackBanner';\nimport {\n  analyticsActionCauseList,\n  IAnalyticsNoMeta,\n  IAnalyticsSmartSnippetFeedbackMeta,\n  AnalyticsSmartSnippetFeedbackReason,\n  IAnalyticsSmartSnippetOpenSourceMeta,\n  IAnalyticsSmartSnippetOpenSnippetInlineLinkMeta\n} from '../Analytics/AnalyticsActionListMeta';\nimport { HeightLimiter } from './HeightLimiter';\nimport { ExplanationModal, IReason } from './ExplanationModal';\nimport { l } from '../../strings/Strings';\nimport { attachShadow } from '../../misc/AttachShadowPolyfill';\nimport { Utils } from '../../utils/Utils';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { transformSnippetLinks, getDefaultSnippetStyle, getSanitizedAnswerSnippet } from './SmartSnippetCommon';\nimport { ResultLink } from '../ResultLink/ResultLink';\nimport { IFieldOption } from '../Base/IComponentOptions';\n\ninterface ISmartSnippetReason {\n  analytics: AnalyticsSmartSnippetFeedbackReason;\n  localeKey: string;\n  hasDetails?: boolean;\n}\n\nconst reasons: ISmartSnippetReason[] = [\n  {\n    analytics: AnalyticsSmartSnippetFeedbackReason.DoesNotAnswer,\n    localeKey: 'UsefulnessFeedbackDoesNotAnswer'\n  },\n  {\n    analytics: AnalyticsSmartSnippetFeedbackReason.PartiallyAnswers,\n    localeKey: 'UsefulnessFeedbackPartiallyAnswers'\n  },\n  {\n    analytics: AnalyticsSmartSnippetFeedbackReason.WasNotAQuestion,\n    localeKey: 'UsefulnessFeedbackWasNotAQuestion'\n  },\n  {\n    analytics: AnalyticsSmartSnippetFeedbackReason.Other,\n    localeKey: 'Other',\n    hasDetails: true\n  }\n];\n\nconst BASE_CLASSNAME = 'coveo-smart-snippet';\nconst QUESTION_CLASSNAME = `${BASE_CLASSNAME}-question`;\nconst ANSWER_CONTAINER_CLASSNAME = `${BASE_CLASSNAME}-answer`;\nconst HAS_ANSWER_CLASSNAME = `${BASE_CLASSNAME}-has-answer`;\nconst SHADOW_CLASSNAME = `${BASE_CLASSNAME}-content`;\nconst CONTENT_CLASSNAME = `${BASE_CLASSNAME}-content-wrapper`;\nconst SOURCE_CLASSNAME = `${BASE_CLASSNAME}-source`;\nconst SOURCE_TITLE_CLASSNAME = `${SOURCE_CLASSNAME}-title`;\nconst SOURCE_URL_CLASSNAME = `${SOURCE_CLASSNAME}-url`;\n\nexport const SmartSnippetClassNames = {\n  QUESTION_CLASSNAME,\n  ANSWER_CONTAINER_CLASSNAME,\n  HAS_ANSWER_CLASSNAME,\n  SHADOW_CLASSNAME,\n  CONTENT_CLASSNAME,\n  SOURCE_CLASSNAME,\n  SOURCE_TITLE_CLASSNAME,\n  SOURCE_URL_CLASSNAME\n};\n\nexport interface ISmartSnippetOptions {\n  maximumSnippetHeight: number;\n  titleField: IFieldOption;\n  hrefTemplate?: string;\n  alwaysOpenInNewWindow?: boolean;\n  useIFrame?: boolean;\n}\n/**\n * The SmartSnippet component displays the excerpt of a document that would be most likely to answer a particular query.\n *\n * This excerpt can be visually customized using inline styling.\n */\nexport class SmartSnippet extends Component {\n  static ID = 'SmartSnippet';\n\n  static doExport = () => {\n    exportGlobally({\n      SmartSnippet\n    });\n  };\n\n  /**\n   * The options for the SmartSnippet\n   * @componentOptions\n   */\n  static options: ISmartSnippetOptions = {\n    /**\n     * The maximum height an answer can have in pixels.\n     * Any part of an answer exceeding this height will be hidden by default and expendable via a \"show more\" button.\n     * Default value is `250`.\n     */\n    maximumSnippetHeight: ComponentOptions.buildNumberOption({ defaultValue: 250, min: 0 }),\n\n    /**\n     * The field to display for the title.\n     */\n    titleField: ComponentOptions.buildFieldOption({ defaultValue: '@title' }),\n\n    /**\n     * Specifies a template literal from which to generate the title and URI's `href` attribute value (see\n     * [Template literals](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Template_literals)).\n     *\n     * This option overrides the [`field`]{@link SmartSnippet.options.uriField} option value.\n     *\n     * The template literal can reference any number of fields from the parent result. It can also reference global\n     * scope properties.\n     *\n     * **Examples:**\n     *\n     * - The following markup generates an `href` value such as `http://uri.com?id=itemTitle`:\n     *\n     * ```html\n     * <a class='CoveoSmartSnippet' data-href-template='${clickUri}?id=${raw.title}'></a>\n     * ```\n     *\n     * - The following markup generates an `href` value such as `localhost/fooBar`:\n     *\n     * ```html\n     * <a class='CoveoSmartSnippet' data-href-template='${window.location.hostname}/{Foo.Bar}'></a>\n     * ```\n     *\n     * Default value is `undefined`.\n     */\n    hrefTemplate: ComponentOptions.buildStringOption(),\n\n    /**\n     * Specifies whether the component should open its links in a new window instead of opening them in the current\n     * context.\n     *\n     * Default value is `false`.\n     */\n    alwaysOpenInNewWindow: ComponentOptions.buildBooleanOption({ defaultValue: false }),\n\n    /**\n     * Specify if the SmartSnippet should be displayed inside an iframe or not.\n     *\n     * Use this option in specific cases where your environment has limitations around iframe usage.\n     *\n     * **Examples:**\n     *\n     * ```html\n     * <div class='CoveoSmartSnippet' data-use-i-frame='true'></div>\n     * ```\n     *\n     * Default value is `true`.\n     */\n    useIFrame: ComponentOptions.buildBooleanOption({ defaultValue: true })\n  };\n\n  private lastRenderedResult: IQueryResult = null;\n  private searchUid: string;\n  private questionContainer: HTMLElement;\n  private shadowContainer: HTMLElement;\n  private sourceContainer: HTMLElement;\n  private snippetContainer: HTMLElement;\n  private heightLimiter: HeightLimiter;\n  private explanationModal: ExplanationModal;\n  private feedbackBanner: UserFeedbackBanner;\n  private shadowLoading: Promise<HTMLElement>;\n\n  constructor(\n    public element: HTMLElement,\n    public options?: ISmartSnippetOptions,\n    bindings?: IComponentBindings,\n    private ModalBox = ModalBoxModule\n  ) {\n    super(element, SmartSnippet.ID, bindings);\n    this.options = ComponentOptions.initComponentOptions(element, SmartSnippet, options);\n    this.bind.onRootElement(QueryEvents.deferredQuerySuccess, (data: IQuerySuccessEventArgs) => this.handleQuerySuccess(data));\n  }\n\n  public get loading() {\n    return this.shadowLoading;\n  }\n\n  private get style() {\n    const styles = $$(this.element)\n      .children()\n      .filter(element => element instanceof HTMLScriptElement && element.type.toLowerCase() === 'text/css')\n      .map(element => element.innerHTML);\n    return styles.length ? styles.join('\\n') : null;\n  }\n\n  private set hasAnswer(hasAnswer: boolean) {\n    $$(this.element).toggleClass(HAS_ANSWER_CLASSNAME, hasAnswer);\n  }\n\n  public createDom() {\n    this.element.appendChild(this.buildAnswerContainer());\n    this.feedbackBanner = new UserFeedbackBanner(\n      isUseful => (isUseful ? this.sendLikeSmartSnippetAnalytics() : this.sendDislikeSmartSnippetAnalytics()),\n      () => this.openExplanationModal()\n    );\n    this.element.appendChild(this.feedbackBanner.build());\n    this.explanationModal = new ExplanationModal({\n      reasons: reasons.map(\n        reason =>\n          <IReason>{\n            label: l(reason.localeKey),\n            id: reason.analytics.replace(/_/g, '-'),\n            onSelect: () => this.sendExplanationAnalytics(reason.analytics, this.explanationModal.details),\n            hasDetails: reason.hasDetails\n          }\n      ),\n      onClosed: () => this.sendCloseFeedbackModalAnalytics(),\n      ownerElement: this.searchInterface.options.modalContainer,\n      modalBoxModule: this.ModalBox\n    });\n  }\n\n  private buildAnswerContainer() {\n    return $$(\n      'div',\n      {\n        className: ANSWER_CONTAINER_CLASSNAME\n      },\n      this.buildQuestion(),\n      this.buildShadow(),\n      this.buildHeightLimiter(),\n      this.buildSourceContainer()\n    ).el;\n  }\n\n  private buildQuestion() {\n    return (this.questionContainer = $$('div', { className: QUESTION_CLASSNAME }).el);\n  }\n\n  private buildShadow() {\n    this.shadowContainer = $$('div', { className: SHADOW_CLASSNAME }).el;\n    this.snippetContainer = $$('section', { className: CONTENT_CLASSNAME }).el;\n    this.shadowLoading = attachShadow(this.shadowContainer, {\n      mode: 'open',\n      title: l('AnswerSnippet'),\n      onSizeChanged: () => this.handleAnswerSizeChanged(),\n      useIFrame: this.options.useIFrame\n    }).then(shadow => {\n      shadow.appendChild(this.snippetContainer);\n      const style = this.buildStyle();\n      shadow.appendChild(style);\n      return shadow;\n    });\n    return this.shadowContainer;\n  }\n\n  private buildHeightLimiter() {\n    return (this.heightLimiter = new HeightLimiter(\n      this.shadowContainer,\n      this.shadowContainer.childNodes.item(0) as HTMLElement,\n      this.options.maximumSnippetHeight,\n      isExpanded => (isExpanded ? this.sendExpandSmartSnippetAnalytics() : this.sendCollapseSmartSnippetAnalytics())\n    )).toggleButton;\n  }\n\n  private buildSourceContainer() {\n    return (this.sourceContainer = $$('div', { className: SOURCE_CLASSNAME }).el);\n  }\n\n  private buildStyle() {\n    const style = Utils.isNullOrUndefined(this.style) ? getDefaultSnippetStyle(CONTENT_CLASSNAME) : this.style;\n    const styleTag = document.createElement('style');\n    styleTag.innerHTML = style;\n    return styleTag;\n  }\n\n  private handleAnswerSizeChanged() {\n    this.heightLimiter.onContentHeightChanged();\n  }\n\n  /**\n   * @warning This method only works for the demo. In practice, the source of the answer will not always be part of the results.\n   */\n  private getCorrespondingResult(questionAnswer: IQuestionAnswerResponse) {\n    const lastResults = this.queryController.getLastResults().results;\n    const childResults = flatten(map(lastResults, lastResult => lastResult.childResults)) as IQueryResult[];\n    const attachments = flatten(map(lastResults, lastResult => lastResult.attachments)) as IQueryResult[];\n\n    return find(\n      compact(lastResults.concat(childResults, attachments)),\n      result => result.raw[questionAnswer.documentId.contentIdKey] === questionAnswer.documentId.contentIdValue\n    );\n  }\n\n  private async handleQuerySuccess(data: IQuerySuccessEventArgs) {\n    const { questionAnswer } = data.results;\n    if (!this.containsQuestionAnswer(questionAnswer)) {\n      this.hasAnswer = false;\n      return;\n    }\n    this.hasAnswer = true;\n    this.searchUid = data.results.searchUid;\n    await this.render(questionAnswer);\n  }\n\n  private containsQuestionAnswer(questionAnswer: IQuestionAnswerResponse) {\n    return questionAnswer && questionAnswer.question && questionAnswer.answerSnippet;\n  }\n\n  private async render(questionAnswer: IQuestionAnswerResponse) {\n    this.ensureDom();\n    this.feedbackBanner.reset();\n    this.questionContainer.innerText = questionAnswer.question;\n    this.renderSnippet(questionAnswer);\n    this.lastRenderedResult = this.getCorrespondingResult(questionAnswer);\n    if (this.lastRenderedResult) {\n      this.renderSource();\n    } else {\n      this.lastRenderedResult = null;\n    }\n  }\n\n  private renderSnippet(questionAnswer: IQuestionAnswerResponse) {\n    this.snippetContainer.innerHTML = getSanitizedAnswerSnippet(questionAnswer);\n    transformSnippetLinks(this.snippetContainer, this.options.alwaysOpenInNewWindow, link => this.sendClickSnippetLinkAnalytics(link));\n  }\n\n  private renderSource() {\n    const container = $$(this.sourceContainer);\n    container.empty();\n    container.append(this.renderSourceUrl().el);\n    container.append(this.renderSourceTitle().el);\n  }\n\n  private renderSourceTitle() {\n    const link = this.buildLink(SOURCE_TITLE_CLASSNAME);\n    link.text(Utils.getFieldValue(this.lastRenderedResult, <string>this.options.titleField));\n    return link;\n  }\n\n  private renderSourceUrl() {\n    const link = this.buildLink(SOURCE_URL_CLASSNAME);\n    link.text((link.el as HTMLAnchorElement).href);\n    return link;\n  }\n\n  private buildLink(className: string) {\n    const element = $$('a', { className: 'CoveoResultLink' });\n    element.addClass(className);\n    new ResultLink(\n      element.el,\n      {\n        hrefTemplate: this.options.hrefTemplate,\n        logAnalytics: href => this.sendClickSourceAnalytics(element.el, href),\n        alwaysOpenInNewWindow: this.options.alwaysOpenInNewWindow\n      },\n      { ...this.getBindings(), resultElement: this.element },\n      this.lastRenderedResult\n    );\n    return element;\n  }\n\n  private openExplanationModal() {\n    this.sendOpenFeedbackModalAnalytics();\n    this.explanationModal.open(this.feedbackBanner.explainWhy);\n  }\n\n  private sendLikeSmartSnippetAnalytics() {\n    return this.usageAnalytics.logCustomEvent<IAnalyticsNoMeta>(\n      analyticsActionCauseList.likeSmartSnippet,\n      { searchQueryUid: this.searchUid },\n      this.element\n    );\n  }\n\n  private sendDislikeSmartSnippetAnalytics() {\n    return this.usageAnalytics.logCustomEvent<IAnalyticsNoMeta>(\n      analyticsActionCauseList.dislikeSmartSnippet,\n      { searchQueryUid: this.searchUid },\n      this.element\n    );\n  }\n\n  private sendExpandSmartSnippetAnalytics() {\n    return this.usageAnalytics.logCustomEvent<IAnalyticsNoMeta>(\n      analyticsActionCauseList.expandSmartSnippet,\n      { searchQueryUid: this.searchUid },\n      this.element\n    );\n  }\n\n  private sendCollapseSmartSnippetAnalytics() {\n    return this.usageAnalytics.logCustomEvent<IAnalyticsNoMeta>(\n      analyticsActionCauseList.collapseSmartSnippet,\n      { searchQueryUid: this.searchUid },\n      this.element\n    );\n  }\n\n  private sendOpenFeedbackModalAnalytics() {\n    return this.usageAnalytics.logCustomEvent<IAnalyticsNoMeta>(\n      analyticsActionCauseList.openSmartSnippetFeedbackModal,\n      { searchQueryUid: this.searchUid },\n      this.element\n    );\n  }\n\n  private sendCloseFeedbackModalAnalytics() {\n    return this.usageAnalytics.logCustomEvent<IAnalyticsNoMeta>(\n      analyticsActionCauseList.closeSmartSnippetFeedbackModal,\n      { searchQueryUid: this.searchUid },\n      this.element\n    );\n  }\n\n  private sendExplanationAnalytics(reason: AnalyticsSmartSnippetFeedbackReason, details?: string) {\n    return this.usageAnalytics.logCustomEvent<IAnalyticsSmartSnippetFeedbackMeta>(\n      analyticsActionCauseList.sendSmartSnippetReason,\n      {\n        searchQueryUid: this.searchUid,\n        reason,\n        details\n      },\n      this.element\n    );\n  }\n\n  private sendClickSourceAnalytics(element: HTMLElement, href: string) {\n    return this.usageAnalytics.logClickEvent<IAnalyticsSmartSnippetOpenSourceMeta>(\n      analyticsActionCauseList.openSmartSnippetSource,\n      {\n        searchQueryUid: this.searchUid,\n        documentTitle: this.lastRenderedResult.title,\n        author: Utils.getFieldValue(this.lastRenderedResult, 'author'),\n        documentURL: href\n      },\n      this.lastRenderedResult,\n      element\n    );\n  }\n\n  private sendClickSnippetLinkAnalytics(link: HTMLAnchorElement) {\n    return this.usageAnalytics.logClickEvent<IAnalyticsSmartSnippetOpenSnippetInlineLinkMeta>(\n      analyticsActionCauseList.openSmartSnippetInlineLink,\n      {\n        searchQueryUid: this.searchUid,\n        linkText: link.innerText,\n        linkURL: link.href\n      },\n      this.lastRenderedResult,\n      link\n    );\n  }\n}\nInitialization.registerAutoCreateComponent(SmartSnippet);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/SmartSnippet/SmartSnippet.ts","import 'styling/_SmartSnippetSuggestions';\nimport { Component } from '../Base/Component';\nimport { exportGlobally } from '../../GlobalExports';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { QueryEvents, IQuerySuccessEventArgs } from '../../events/QueryEvents';\nimport { IRelatedQuestionAnswerResponse, IQuestionAnswerResponse } from '../../rest/QuestionAnswerResponse';\nimport { $$, Dom } from '../../utils/Dom';\nimport { uniqueId, isEqual, find } from 'underscore';\nimport { SmartSnippetCollapsibleSuggestion, SmartSnippetCollapsibleSuggestionClassNames } from './SmartSnippetCollapsibleSuggestion';\nimport { l } from '../../strings/Strings';\nimport { Initialization } from '../Base/Initialization';\nimport { Utils } from '../../utils/Utils';\nimport { getDefaultSnippetStyle } from './SmartSnippetCommon';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { IFieldOption } from '../Base/IComponentOptions';\n\nconst BASE_CLASSNAME = 'coveo-smart-snippet-suggestions';\nconst HAS_QUESTIONS_CLASSNAME = `${BASE_CLASSNAME}-has-questions`;\nconst QUESTIONS_LIST_CLASSNAME = `${BASE_CLASSNAME}-questions`;\nconst QUESTIONS_LIST_TITLE_CLASSNAME = `${QUESTIONS_LIST_CLASSNAME}-title`;\n\nexport const SmartSnippetSuggestionsClassNames = {\n  HAS_QUESTIONS_CLASSNAME,\n  QUESTIONS_LIST_CLASSNAME,\n  QUESTIONS_LIST_TITLE_CLASSNAME\n};\n\nexport interface ISmartSnippetSuggestionsOptions {\n  titleField: IFieldOption;\n  hrefTemplate?: string;\n  alwaysOpenInNewWindow?: boolean;\n  useIFrame?: boolean;\n}\n\n/**\n * The SmartSnippetSuggestions component displays additional queries for which a Coveo Smart Snippets model can provide relevant excerpts.\n */\nexport class SmartSnippetSuggestions extends Component {\n  static ID = 'SmartSnippetSuggestions';\n\n  static doExport = () => {\n    exportGlobally({\n      SmartSnippetSuggestions\n    });\n  };\n\n  /**\n   * The options for the SmartSnippetSuggestions\n   * @componentOptions\n   */\n  static options: ISmartSnippetSuggestionsOptions = {\n    /**\n     * The field to display for the title.\n     */\n    titleField: ComponentOptions.buildFieldOption({ defaultValue: '@title' }),\n\n    /**\n     * Specifies a template literal from which to generate the title and URI's `href` attribute value (see\n     * [Template literals](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Template_literals)).\n     *\n     * This option overrides the [`field`]{@link SmartSnippet.options.uriField} option value.\n     *\n     * The template literal can reference any number of fields from the parent result. It can also reference global\n     * scope properties.\n     *\n     * **Examples:**\n     *\n     * - The following markup generates an `href` value such as `http://uri.com?id=itemTitle`:\n     *\n     * ```html\n     * <a class='CoveoSmartSnippet' data-href-template='${clickUri}?id=${raw.title}'></a>\n     * ```\n     *\n     * - The following markup generates an `href` value such as `localhost/fooBar`:\n     *\n     * ```html\n     * <a class='CoveoSmartSnippet' data-href-template='${window.location.hostname}/{Foo.Bar}'></a>\n     * ```\n     *\n     * Default value is `undefined`.\n     */\n    hrefTemplate: ComponentOptions.buildStringOption(),\n\n    /**\n     * Specifies whether the component should open its links in a new window instead of opening them in the current\n     * context.\n     *\n     * Default value is `false`.\n     */\n    alwaysOpenInNewWindow: ComponentOptions.buildBooleanOption({ defaultValue: false }),\n\n    /**\n     * Specify if the SmartSnippetSuggestion snippet should be displayed inside an iframe or not.\n     *\n     * Use this option in specific cases where your environment has limitations around iframe usage.\n     *\n     * **Examples:**\n     *\n     * ```html\n     * <div class='CoveoSmartSnippetSuggestions' data-use-i-frame='true'></div>\n     * ```\n     *\n     * Default value is `true`.\n     */\n    useIFrame: ComponentOptions.buildBooleanOption({ defaultValue: true })\n  };\n\n  private readonly titleId = uniqueId(QUESTIONS_LIST_TITLE_CLASSNAME);\n  private contentLoaded: Promise<SmartSnippetCollapsibleSuggestion[]>;\n  private title: Dom;\n  private questionAnswers: Dom;\n  private renderedQuestionAnswer: IQuestionAnswerResponse;\n  private searchUid: string;\n\n  constructor(public element: HTMLElement, public options?: ISmartSnippetSuggestionsOptions, bindings?: IComponentBindings) {\n    super(element, SmartSnippetSuggestions.ID, bindings);\n    this.options = ComponentOptions.initComponentOptions(element, SmartSnippetSuggestions, options);\n    this.bind.onRootElement(QueryEvents.deferredQuerySuccess, (data: IQuerySuccessEventArgs) => this.handleQuerySuccess(data));\n  }\n\n  public get loading() {\n    return this.contentLoaded;\n  }\n\n  /**\n   * @warning This method only works for the demo. In practice, the source of the answer will not always be part of the results.\n   */\n  private getCorrespondingResult(questionAnswer: IRelatedQuestionAnswerResponse) {\n    return find(\n      this.queryController.getLastResults().results,\n      result => result.raw[questionAnswer.documentId.contentIdKey] === questionAnswer.documentId.contentIdValue\n    );\n  }\n\n  private handleQuerySuccess(data: IQuerySuccessEventArgs) {\n    const questionAnswer = data.results.questionAnswer;\n    const hasQuestions = !!(questionAnswer && questionAnswer.relatedQuestions.length);\n    $$(this.element).toggleClass(HAS_QUESTIONS_CLASSNAME, hasQuestions);\n    if (hasQuestions) {\n      this.searchUid = data.results.searchUid;\n      if (this.renderedQuestionAnswer && isEqual(questionAnswer, this.renderedQuestionAnswer)) {\n        return;\n      }\n      this.detachContent();\n      this.element.appendChild((this.title = this.buildTitle()).el);\n      this.element.appendChild((this.questionAnswers = this.buildQuestionAnswers(questionAnswer.relatedQuestions)).el);\n    } else {\n      this.detachContent();\n    }\n    this.renderedQuestionAnswer = questionAnswer;\n  }\n\n  private detachContent() {\n    this.title && this.title.detach();\n    this.questionAnswers && this.questionAnswers.detach();\n    this.title = this.questionAnswers = null;\n  }\n\n  private buildTitle() {\n    return $$('span', { className: QUESTIONS_LIST_TITLE_CLASSNAME, id: this.titleId }, l('SuggestedQuestions'));\n  }\n\n  private buildQuestionAnswers(questionAnswers: IRelatedQuestionAnswerResponse[]) {\n    const innerCSS = this.getInnerCSS();\n    const answers = questionAnswers.map(\n      questionAnswer =>\n        new SmartSnippetCollapsibleSuggestion({\n          questionAnswer,\n          bindings: this.getBindings(),\n          innerCSS: Utils.isNullOrUndefined(innerCSS)\n            ? getDefaultSnippetStyle(SmartSnippetCollapsibleSuggestionClassNames.RAW_CONTENT_CLASSNAME)\n            : innerCSS,\n          searchUid: this.searchUid,\n          titleField: this.options.titleField,\n          hrefTemplate: this.options.hrefTemplate,\n          alwaysOpenInNewWindow: this.options.alwaysOpenInNewWindow,\n          source: this.getCorrespondingResult(questionAnswer),\n          useIFrame: this.options.useIFrame\n        })\n    );\n    const container = $$(\n      'ul',\n      { className: QUESTIONS_LIST_CLASSNAME, ariaLabelledby: this.titleId },\n      ...answers.map(answer => answer.build())\n    );\n    this.contentLoaded = Promise.all(answers.map(answer => answer.loading.then(() => answer)));\n    return container;\n  }\n\n  private getInnerCSS() {\n    const styles = $$(this.element)\n      .children()\n      .filter(element => element instanceof HTMLScriptElement && element.type.toLowerCase() === 'text/css')\n      .map(element => element.innerHTML);\n    return styles.length ? styles.join('\\n') : null;\n  }\n}\n\nInitialization.registerAutoCreateComponent(SmartSnippetSuggestions);\nSmartSnippetSuggestions.doExport();\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/SmartSnippet/SmartSnippetSuggestions.ts","// This file can be required in Browserify and Node.js for automatic polyfill\n// To use it:  require('es6-promise/auto');\n'use strict';\nmodule.exports = require('./').polyfill();\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/es6-promise/auto.js\n// module id = 300\n// module chunks = 88 89","/*!\n * @overview es6-promise - a tiny implementation of Promises/A+.\n * @copyright Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors (Conversion to ES6 API by Jake Archibald)\n * @license   Licensed under MIT license\n *            See https://raw.githubusercontent.com/stefanpenner/es6-promise/master/LICENSE\n * @version   v4.2.4+314e4831\n */\n\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global.ES6Promise = factory());\n}(this, (function () { 'use strict';\n\nfunction objectOrFunction(x) {\n  var type = typeof x;\n  return x !== null && (type === 'object' || type === 'function');\n}\n\nfunction isFunction(x) {\n  return typeof x === 'function';\n}\n\n\n\nvar _isArray = void 0;\nif (Array.isArray) {\n  _isArray = Array.isArray;\n} else {\n  _isArray = function (x) {\n    return Object.prototype.toString.call(x) === '[object Array]';\n  };\n}\n\nvar isArray = _isArray;\n\nvar len = 0;\nvar vertxNext = void 0;\nvar customSchedulerFn = void 0;\n\nvar asap = function asap(callback, arg) {\n  queue[len] = callback;\n  queue[len + 1] = arg;\n  len += 2;\n  if (len === 2) {\n    // If len is 2, that means that we need to schedule an async flush.\n    // If additional callbacks are queued before the queue is flushed, they\n    // will be processed by this flush that we are scheduling.\n    if (customSchedulerFn) {\n      customSchedulerFn(flush);\n    } else {\n      scheduleFlush();\n    }\n  }\n};\n\nfunction setScheduler(scheduleFn) {\n  customSchedulerFn = scheduleFn;\n}\n\nfunction setAsap(asapFn) {\n  asap = asapFn;\n}\n\nvar browserWindow = typeof window !== 'undefined' ? window : undefined;\nvar browserGlobal = browserWindow || {};\nvar BrowserMutationObserver = browserGlobal.MutationObserver || browserGlobal.WebKitMutationObserver;\nvar isNode = typeof self === 'undefined' && typeof process !== 'undefined' && {}.toString.call(process) === '[object process]';\n\n// test for web worker but not in IE10\nvar isWorker = typeof Uint8ClampedArray !== 'undefined' && typeof importScripts !== 'undefined' && typeof MessageChannel !== 'undefined';\n\n// node\nfunction useNextTick() {\n  // node version 0.10.x displays a deprecation warning when nextTick is used recursively\n  // see https://github.com/cujojs/when/issues/410 for details\n  return function () {\n    return process.nextTick(flush);\n  };\n}\n\n// vertx\nfunction useVertxTimer() {\n  if (typeof vertxNext !== 'undefined') {\n    return function () {\n      vertxNext(flush);\n    };\n  }\n\n  return useSetTimeout();\n}\n\nfunction useMutationObserver() {\n  var iterations = 0;\n  var observer = new BrowserMutationObserver(flush);\n  var node = document.createTextNode('');\n  observer.observe(node, { characterData: true });\n\n  return function () {\n    node.data = iterations = ++iterations % 2;\n  };\n}\n\n// web worker\nfunction useMessageChannel() {\n  var channel = new MessageChannel();\n  channel.port1.onmessage = flush;\n  return function () {\n    return channel.port2.postMessage(0);\n  };\n}\n\nfunction useSetTimeout() {\n  // Store setTimeout reference so es6-promise will be unaffected by\n  // other code modifying setTimeout (like sinon.useFakeTimers())\n  var globalSetTimeout = setTimeout;\n  return function () {\n    return globalSetTimeout(flush, 1);\n  };\n}\n\nvar queue = new Array(1000);\nfunction flush() {\n  for (var i = 0; i < len; i += 2) {\n    var callback = queue[i];\n    var arg = queue[i + 1];\n\n    callback(arg);\n\n    queue[i] = undefined;\n    queue[i + 1] = undefined;\n  }\n\n  len = 0;\n}\n\nfunction attemptVertx() {\n  try {\n    var vertx = Function('return this')().require('vertx');\n    vertxNext = vertx.runOnLoop || vertx.runOnContext;\n    return useVertxTimer();\n  } catch (e) {\n    return useSetTimeout();\n  }\n}\n\nvar scheduleFlush = void 0;\n// Decide what async method to use to triggering processing of queued callbacks:\nif (isNode) {\n  scheduleFlush = useNextTick();\n} else if (BrowserMutationObserver) {\n  scheduleFlush = useMutationObserver();\n} else if (isWorker) {\n  scheduleFlush = useMessageChannel();\n} else if (browserWindow === undefined && typeof require === 'function') {\n  scheduleFlush = attemptVertx();\n} else {\n  scheduleFlush = useSetTimeout();\n}\n\nfunction then(onFulfillment, onRejection) {\n  var parent = this;\n\n  var child = new this.constructor(noop);\n\n  if (child[PROMISE_ID] === undefined) {\n    makePromise(child);\n  }\n\n  var _state = parent._state;\n\n\n  if (_state) {\n    var callback = arguments[_state - 1];\n    asap(function () {\n      return invokeCallback(_state, child, callback, parent._result);\n    });\n  } else {\n    subscribe(parent, child, onFulfillment, onRejection);\n  }\n\n  return child;\n}\n\n/**\n  `Promise.resolve` returns a promise that will become resolved with the\n  passed `value`. It is shorthand for the following:\n\n  ```javascript\n  let promise = new Promise(function(resolve, reject){\n    resolve(1);\n  });\n\n  promise.then(function(value){\n    // value === 1\n  });\n  ```\n\n  Instead of writing the above, your code now simply becomes the following:\n\n  ```javascript\n  let promise = Promise.resolve(1);\n\n  promise.then(function(value){\n    // value === 1\n  });\n  ```\n\n  @method resolve\n  @static\n  @param {Any} value value that the returned promise will be resolved with\n  Useful for tooling.\n  @return {Promise} a promise that will become fulfilled with the given\n  `value`\n*/\nfunction resolve$1(object) {\n  /*jshint validthis:true */\n  var Constructor = this;\n\n  if (object && typeof object === 'object' && object.constructor === Constructor) {\n    return object;\n  }\n\n  var promise = new Constructor(noop);\n  resolve(promise, object);\n  return promise;\n}\n\nvar PROMISE_ID = Math.random().toString(36).substring(2);\n\nfunction noop() {}\n\nvar PENDING = void 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\n\nvar TRY_CATCH_ERROR = { error: null };\n\nfunction selfFulfillment() {\n  return new TypeError(\"You cannot resolve a promise with itself\");\n}\n\nfunction cannotReturnOwn() {\n  return new TypeError('A promises callback cannot return that same promise.');\n}\n\nfunction getThen(promise) {\n  try {\n    return promise.then;\n  } catch (error) {\n    TRY_CATCH_ERROR.error = error;\n    return TRY_CATCH_ERROR;\n  }\n}\n\nfunction tryThen(then$$1, value, fulfillmentHandler, rejectionHandler) {\n  try {\n    then$$1.call(value, fulfillmentHandler, rejectionHandler);\n  } catch (e) {\n    return e;\n  }\n}\n\nfunction handleForeignThenable(promise, thenable, then$$1) {\n  asap(function (promise) {\n    var sealed = false;\n    var error = tryThen(then$$1, thenable, function (value) {\n      if (sealed) {\n        return;\n      }\n      sealed = true;\n      if (thenable !== value) {\n        resolve(promise, value);\n      } else {\n        fulfill(promise, value);\n      }\n    }, function (reason) {\n      if (sealed) {\n        return;\n      }\n      sealed = true;\n\n      reject(promise, reason);\n    }, 'Settle: ' + (promise._label || ' unknown promise'));\n\n    if (!sealed && error) {\n      sealed = true;\n      reject(promise, error);\n    }\n  }, promise);\n}\n\nfunction handleOwnThenable(promise, thenable) {\n  if (thenable._state === FULFILLED) {\n    fulfill(promise, thenable._result);\n  } else if (thenable._state === REJECTED) {\n    reject(promise, thenable._result);\n  } else {\n    subscribe(thenable, undefined, function (value) {\n      return resolve(promise, value);\n    }, function (reason) {\n      return reject(promise, reason);\n    });\n  }\n}\n\nfunction handleMaybeThenable(promise, maybeThenable, then$$1) {\n  if (maybeThenable.constructor === promise.constructor && then$$1 === then && maybeThenable.constructor.resolve === resolve$1) {\n    handleOwnThenable(promise, maybeThenable);\n  } else {\n    if (then$$1 === TRY_CATCH_ERROR) {\n      reject(promise, TRY_CATCH_ERROR.error);\n      TRY_CATCH_ERROR.error = null;\n    } else if (then$$1 === undefined) {\n      fulfill(promise, maybeThenable);\n    } else if (isFunction(then$$1)) {\n      handleForeignThenable(promise, maybeThenable, then$$1);\n    } else {\n      fulfill(promise, maybeThenable);\n    }\n  }\n}\n\nfunction resolve(promise, value) {\n  if (promise === value) {\n    reject(promise, selfFulfillment());\n  } else if (objectOrFunction(value)) {\n    handleMaybeThenable(promise, value, getThen(value));\n  } else {\n    fulfill(promise, value);\n  }\n}\n\nfunction publishRejection(promise) {\n  if (promise._onerror) {\n    promise._onerror(promise._result);\n  }\n\n  publish(promise);\n}\n\nfunction fulfill(promise, value) {\n  if (promise._state !== PENDING) {\n    return;\n  }\n\n  promise._result = value;\n  promise._state = FULFILLED;\n\n  if (promise._subscribers.length !== 0) {\n    asap(publish, promise);\n  }\n}\n\nfunction reject(promise, reason) {\n  if (promise._state !== PENDING) {\n    return;\n  }\n  promise._state = REJECTED;\n  promise._result = reason;\n\n  asap(publishRejection, promise);\n}\n\nfunction subscribe(parent, child, onFulfillment, onRejection) {\n  var _subscribers = parent._subscribers;\n  var length = _subscribers.length;\n\n\n  parent._onerror = null;\n\n  _subscribers[length] = child;\n  _subscribers[length + FULFILLED] = onFulfillment;\n  _subscribers[length + REJECTED] = onRejection;\n\n  if (length === 0 && parent._state) {\n    asap(publish, parent);\n  }\n}\n\nfunction publish(promise) {\n  var subscribers = promise._subscribers;\n  var settled = promise._state;\n\n  if (subscribers.length === 0) {\n    return;\n  }\n\n  var child = void 0,\n      callback = void 0,\n      detail = promise._result;\n\n  for (var i = 0; i < subscribers.length; i += 3) {\n    child = subscribers[i];\n    callback = subscribers[i + settled];\n\n    if (child) {\n      invokeCallback(settled, child, callback, detail);\n    } else {\n      callback(detail);\n    }\n  }\n\n  promise._subscribers.length = 0;\n}\n\nfunction tryCatch(callback, detail) {\n  try {\n    return callback(detail);\n  } catch (e) {\n    TRY_CATCH_ERROR.error = e;\n    return TRY_CATCH_ERROR;\n  }\n}\n\nfunction invokeCallback(settled, promise, callback, detail) {\n  var hasCallback = isFunction(callback),\n      value = void 0,\n      error = void 0,\n      succeeded = void 0,\n      failed = void 0;\n\n  if (hasCallback) {\n    value = tryCatch(callback, detail);\n\n    if (value === TRY_CATCH_ERROR) {\n      failed = true;\n      error = value.error;\n      value.error = null;\n    } else {\n      succeeded = true;\n    }\n\n    if (promise === value) {\n      reject(promise, cannotReturnOwn());\n      return;\n    }\n  } else {\n    value = detail;\n    succeeded = true;\n  }\n\n  if (promise._state !== PENDING) {\n    // noop\n  } else if (hasCallback && succeeded) {\n    resolve(promise, value);\n  } else if (failed) {\n    reject(promise, error);\n  } else if (settled === FULFILLED) {\n    fulfill(promise, value);\n  } else if (settled === REJECTED) {\n    reject(promise, value);\n  }\n}\n\nfunction initializePromise(promise, resolver) {\n  try {\n    resolver(function resolvePromise(value) {\n      resolve(promise, value);\n    }, function rejectPromise(reason) {\n      reject(promise, reason);\n    });\n  } catch (e) {\n    reject(promise, e);\n  }\n}\n\nvar id = 0;\nfunction nextId() {\n  return id++;\n}\n\nfunction makePromise(promise) {\n  promise[PROMISE_ID] = id++;\n  promise._state = undefined;\n  promise._result = undefined;\n  promise._subscribers = [];\n}\n\nfunction validationError() {\n  return new Error('Array Methods must be provided an Array');\n}\n\nvar Enumerator = function () {\n  function Enumerator(Constructor, input) {\n    this._instanceConstructor = Constructor;\n    this.promise = new Constructor(noop);\n\n    if (!this.promise[PROMISE_ID]) {\n      makePromise(this.promise);\n    }\n\n    if (isArray(input)) {\n      this.length = input.length;\n      this._remaining = input.length;\n\n      this._result = new Array(this.length);\n\n      if (this.length === 0) {\n        fulfill(this.promise, this._result);\n      } else {\n        this.length = this.length || 0;\n        this._enumerate(input);\n        if (this._remaining === 0) {\n          fulfill(this.promise, this._result);\n        }\n      }\n    } else {\n      reject(this.promise, validationError());\n    }\n  }\n\n  Enumerator.prototype._enumerate = function _enumerate(input) {\n    for (var i = 0; this._state === PENDING && i < input.length; i++) {\n      this._eachEntry(input[i], i);\n    }\n  };\n\n  Enumerator.prototype._eachEntry = function _eachEntry(entry, i) {\n    var c = this._instanceConstructor;\n    var resolve$$1 = c.resolve;\n\n\n    if (resolve$$1 === resolve$1) {\n      var _then = getThen(entry);\n\n      if (_then === then && entry._state !== PENDING) {\n        this._settledAt(entry._state, i, entry._result);\n      } else if (typeof _then !== 'function') {\n        this._remaining--;\n        this._result[i] = entry;\n      } else if (c === Promise$1) {\n        var promise = new c(noop);\n        handleMaybeThenable(promise, entry, _then);\n        this._willSettleAt(promise, i);\n      } else {\n        this._willSettleAt(new c(function (resolve$$1) {\n          return resolve$$1(entry);\n        }), i);\n      }\n    } else {\n      this._willSettleAt(resolve$$1(entry), i);\n    }\n  };\n\n  Enumerator.prototype._settledAt = function _settledAt(state, i, value) {\n    var promise = this.promise;\n\n\n    if (promise._state === PENDING) {\n      this._remaining--;\n\n      if (state === REJECTED) {\n        reject(promise, value);\n      } else {\n        this._result[i] = value;\n      }\n    }\n\n    if (this._remaining === 0) {\n      fulfill(promise, this._result);\n    }\n  };\n\n  Enumerator.prototype._willSettleAt = function _willSettleAt(promise, i) {\n    var enumerator = this;\n\n    subscribe(promise, undefined, function (value) {\n      return enumerator._settledAt(FULFILLED, i, value);\n    }, function (reason) {\n      return enumerator._settledAt(REJECTED, i, reason);\n    });\n  };\n\n  return Enumerator;\n}();\n\n/**\n  `Promise.all` accepts an array of promises, and returns a new promise which\n  is fulfilled with an array of fulfillment values for the passed promises, or\n  rejected with the reason of the first passed promise to be rejected. It casts all\n  elements of the passed iterable to promises as it runs this algorithm.\n\n  Example:\n\n  ```javascript\n  let promise1 = resolve(1);\n  let promise2 = resolve(2);\n  let promise3 = resolve(3);\n  let promises = [ promise1, promise2, promise3 ];\n\n  Promise.all(promises).then(function(array){\n    // The array here would be [ 1, 2, 3 ];\n  });\n  ```\n\n  If any of the `promises` given to `all` are rejected, the first promise\n  that is rejected will be given as an argument to the returned promises's\n  rejection handler. For example:\n\n  Example:\n\n  ```javascript\n  let promise1 = resolve(1);\n  let promise2 = reject(new Error(\"2\"));\n  let promise3 = reject(new Error(\"3\"));\n  let promises = [ promise1, promise2, promise3 ];\n\n  Promise.all(promises).then(function(array){\n    // Code here never runs because there are rejected promises!\n  }, function(error) {\n    // error.message === \"2\"\n  });\n  ```\n\n  @method all\n  @static\n  @param {Array} entries array of promises\n  @param {String} label optional string for labeling the promise.\n  Useful for tooling.\n  @return {Promise} promise that is fulfilled when all `promises` have been\n  fulfilled, or rejected if any of them become rejected.\n  @static\n*/\nfunction all(entries) {\n  return new Enumerator(this, entries).promise;\n}\n\n/**\n  `Promise.race` returns a new promise which is settled in the same way as the\n  first passed promise to settle.\n\n  Example:\n\n  ```javascript\n  let promise1 = new Promise(function(resolve, reject){\n    setTimeout(function(){\n      resolve('promise 1');\n    }, 200);\n  });\n\n  let promise2 = new Promise(function(resolve, reject){\n    setTimeout(function(){\n      resolve('promise 2');\n    }, 100);\n  });\n\n  Promise.race([promise1, promise2]).then(function(result){\n    // result === 'promise 2' because it was resolved before promise1\n    // was resolved.\n  });\n  ```\n\n  `Promise.race` is deterministic in that only the state of the first\n  settled promise matters. For example, even if other promises given to the\n  `promises` array argument are resolved, but the first settled promise has\n  become rejected before the other promises became fulfilled, the returned\n  promise will become rejected:\n\n  ```javascript\n  let promise1 = new Promise(function(resolve, reject){\n    setTimeout(function(){\n      resolve('promise 1');\n    }, 200);\n  });\n\n  let promise2 = new Promise(function(resolve, reject){\n    setTimeout(function(){\n      reject(new Error('promise 2'));\n    }, 100);\n  });\n\n  Promise.race([promise1, promise2]).then(function(result){\n    // Code here never runs\n  }, function(reason){\n    // reason.message === 'promise 2' because promise 2 became rejected before\n    // promise 1 became fulfilled\n  });\n  ```\n\n  An example real-world use case is implementing timeouts:\n\n  ```javascript\n  Promise.race([ajax('foo.json'), timeout(5000)])\n  ```\n\n  @method race\n  @static\n  @param {Array} promises array of promises to observe\n  Useful for tooling.\n  @return {Promise} a promise which settles in the same way as the first passed\n  promise to settle.\n*/\nfunction race(entries) {\n  /*jshint validthis:true */\n  var Constructor = this;\n\n  if (!isArray(entries)) {\n    return new Constructor(function (_, reject) {\n      return reject(new TypeError('You must pass an array to race.'));\n    });\n  } else {\n    return new Constructor(function (resolve, reject) {\n      var length = entries.length;\n      for (var i = 0; i < length; i++) {\n        Constructor.resolve(entries[i]).then(resolve, reject);\n      }\n    });\n  }\n}\n\n/**\n  `Promise.reject` returns a promise rejected with the passed `reason`.\n  It is shorthand for the following:\n\n  ```javascript\n  let promise = new Promise(function(resolve, reject){\n    reject(new Error('WHOOPS'));\n  });\n\n  promise.then(function(value){\n    // Code here doesn't run because the promise is rejected!\n  }, function(reason){\n    // reason.message === 'WHOOPS'\n  });\n  ```\n\n  Instead of writing the above, your code now simply becomes the following:\n\n  ```javascript\n  let promise = Promise.reject(new Error('WHOOPS'));\n\n  promise.then(function(value){\n    // Code here doesn't run because the promise is rejected!\n  }, function(reason){\n    // reason.message === 'WHOOPS'\n  });\n  ```\n\n  @method reject\n  @static\n  @param {Any} reason value that the returned promise will be rejected with.\n  Useful for tooling.\n  @return {Promise} a promise rejected with the given `reason`.\n*/\nfunction reject$1(reason) {\n  /*jshint validthis:true */\n  var Constructor = this;\n  var promise = new Constructor(noop);\n  reject(promise, reason);\n  return promise;\n}\n\nfunction needsResolver() {\n  throw new TypeError('You must pass a resolver function as the first argument to the promise constructor');\n}\n\nfunction needsNew() {\n  throw new TypeError(\"Failed to construct 'Promise': Please use the 'new' operator, this object constructor cannot be called as a function.\");\n}\n\n/**\n  Promise objects represent the eventual result of an asynchronous operation. The\n  primary way of interacting with a promise is through its `then` method, which\n  registers callbacks to receive either a promise's eventual value or the reason\n  why the promise cannot be fulfilled.\n\n  Terminology\n  -----------\n\n  - `promise` is an object or function with a `then` method whose behavior conforms to this specification.\n  - `thenable` is an object or function that defines a `then` method.\n  - `value` is any legal JavaScript value (including undefined, a thenable, or a promise).\n  - `exception` is a value that is thrown using the throw statement.\n  - `reason` is a value that indicates why a promise was rejected.\n  - `settled` the final resting state of a promise, fulfilled or rejected.\n\n  A promise can be in one of three states: pending, fulfilled, or rejected.\n\n  Promises that are fulfilled have a fulfillment value and are in the fulfilled\n  state.  Promises that are rejected have a rejection reason and are in the\n  rejected state.  A fulfillment value is never a thenable.\n\n  Promises can also be said to *resolve* a value.  If this value is also a\n  promise, then the original promise's settled state will match the value's\n  settled state.  So a promise that *resolves* a promise that rejects will\n  itself reject, and a promise that *resolves* a promise that fulfills will\n  itself fulfill.\n\n\n  Basic Usage:\n  ------------\n\n  ```js\n  let promise = new Promise(function(resolve, reject) {\n    // on success\n    resolve(value);\n\n    // on failure\n    reject(reason);\n  });\n\n  promise.then(function(value) {\n    // on fulfillment\n  }, function(reason) {\n    // on rejection\n  });\n  ```\n\n  Advanced Usage:\n  ---------------\n\n  Promises shine when abstracting away asynchronous interactions such as\n  `XMLHttpRequest`s.\n\n  ```js\n  function getJSON(url) {\n    return new Promise(function(resolve, reject){\n      let xhr = new XMLHttpRequest();\n\n      xhr.open('GET', url);\n      xhr.onreadystatechange = handler;\n      xhr.responseType = 'json';\n      xhr.setRequestHeader('Accept', 'application/json');\n      xhr.send();\n\n      function handler() {\n        if (this.readyState === this.DONE) {\n          if (this.status === 200) {\n            resolve(this.response);\n          } else {\n            reject(new Error('getJSON: `' + url + '` failed with status: [' + this.status + ']'));\n          }\n        }\n      };\n    });\n  }\n\n  getJSON('/posts.json').then(function(json) {\n    // on fulfillment\n  }, function(reason) {\n    // on rejection\n  });\n  ```\n\n  Unlike callbacks, promises are great composable primitives.\n\n  ```js\n  Promise.all([\n    getJSON('/posts'),\n    getJSON('/comments')\n  ]).then(function(values){\n    values[0] // => postsJSON\n    values[1] // => commentsJSON\n\n    return values;\n  });\n  ```\n\n  @class Promise\n  @param {Function} resolver\n  Useful for tooling.\n  @constructor\n*/\n\nvar Promise$1 = function () {\n  function Promise(resolver) {\n    this[PROMISE_ID] = nextId();\n    this._result = this._state = undefined;\n    this._subscribers = [];\n\n    if (noop !== resolver) {\n      typeof resolver !== 'function' && needsResolver();\n      this instanceof Promise ? initializePromise(this, resolver) : needsNew();\n    }\n  }\n\n  /**\n  The primary way of interacting with a promise is through its `then` method,\n  which registers callbacks to receive either a promise's eventual value or the\n  reason why the promise cannot be fulfilled.\n   ```js\n  findUser().then(function(user){\n    // user is available\n  }, function(reason){\n    // user is unavailable, and you are given the reason why\n  });\n  ```\n   Chaining\n  --------\n   The return value of `then` is itself a promise.  This second, 'downstream'\n  promise is resolved with the return value of the first promise's fulfillment\n  or rejection handler, or rejected if the handler throws an exception.\n   ```js\n  findUser().then(function (user) {\n    return user.name;\n  }, function (reason) {\n    return 'default name';\n  }).then(function (userName) {\n    // If `findUser` fulfilled, `userName` will be the user's name, otherwise it\n    // will be `'default name'`\n  });\n   findUser().then(function (user) {\n    throw new Error('Found user, but still unhappy');\n  }, function (reason) {\n    throw new Error('`findUser` rejected and we're unhappy');\n  }).then(function (value) {\n    // never reached\n  }, function (reason) {\n    // if `findUser` fulfilled, `reason` will be 'Found user, but still unhappy'.\n    // If `findUser` rejected, `reason` will be '`findUser` rejected and we're unhappy'.\n  });\n  ```\n  If the downstream promise does not specify a rejection handler, rejection reasons will be propagated further downstream.\n   ```js\n  findUser().then(function (user) {\n    throw new PedagogicalException('Upstream error');\n  }).then(function (value) {\n    // never reached\n  }).then(function (value) {\n    // never reached\n  }, function (reason) {\n    // The `PedgagocialException` is propagated all the way down to here\n  });\n  ```\n   Assimilation\n  ------------\n   Sometimes the value you want to propagate to a downstream promise can only be\n  retrieved asynchronously. This can be achieved by returning a promise in the\n  fulfillment or rejection handler. The downstream promise will then be pending\n  until the returned promise is settled. This is called *assimilation*.\n   ```js\n  findUser().then(function (user) {\n    return findCommentsByAuthor(user);\n  }).then(function (comments) {\n    // The user's comments are now available\n  });\n  ```\n   If the assimliated promise rejects, then the downstream promise will also reject.\n   ```js\n  findUser().then(function (user) {\n    return findCommentsByAuthor(user);\n  }).then(function (comments) {\n    // If `findCommentsByAuthor` fulfills, we'll have the value here\n  }, function (reason) {\n    // If `findCommentsByAuthor` rejects, we'll have the reason here\n  });\n  ```\n   Simple Example\n  --------------\n   Synchronous Example\n   ```javascript\n  let result;\n   try {\n    result = findResult();\n    // success\n  } catch(reason) {\n    // failure\n  }\n  ```\n   Errback Example\n   ```js\n  findResult(function(result, err){\n    if (err) {\n      // failure\n    } else {\n      // success\n    }\n  });\n  ```\n   Promise Example;\n   ```javascript\n  findResult().then(function(result){\n    // success\n  }, function(reason){\n    // failure\n  });\n  ```\n   Advanced Example\n  --------------\n   Synchronous Example\n   ```javascript\n  let author, books;\n   try {\n    author = findAuthor();\n    books  = findBooksByAuthor(author);\n    // success\n  } catch(reason) {\n    // failure\n  }\n  ```\n   Errback Example\n   ```js\n   function foundBooks(books) {\n   }\n   function failure(reason) {\n   }\n   findAuthor(function(author, err){\n    if (err) {\n      failure(err);\n      // failure\n    } else {\n      try {\n        findBoooksByAuthor(author, function(books, err) {\n          if (err) {\n            failure(err);\n          } else {\n            try {\n              foundBooks(books);\n            } catch(reason) {\n              failure(reason);\n            }\n          }\n        });\n      } catch(error) {\n        failure(err);\n      }\n      // success\n    }\n  });\n  ```\n   Promise Example;\n   ```javascript\n  findAuthor().\n    then(findBooksByAuthor).\n    then(function(books){\n      // found books\n  }).catch(function(reason){\n    // something went wrong\n  });\n  ```\n   @method then\n  @param {Function} onFulfilled\n  @param {Function} onRejected\n  Useful for tooling.\n  @return {Promise}\n  */\n\n  /**\n  `catch` is simply sugar for `then(undefined, onRejection)` which makes it the same\n  as the catch block of a try/catch statement.\n  ```js\n  function findAuthor(){\n  throw new Error('couldn't find that author');\n  }\n  // synchronous\n  try {\n  findAuthor();\n  } catch(reason) {\n  // something went wrong\n  }\n  // async with promises\n  findAuthor().catch(function(reason){\n  // something went wrong\n  });\n  ```\n  @method catch\n  @param {Function} onRejection\n  Useful for tooling.\n  @return {Promise}\n  */\n\n\n  Promise.prototype.catch = function _catch(onRejection) {\n    return this.then(null, onRejection);\n  };\n\n  /**\n    `finally` will be invoked regardless of the promise's fate just as native\n    try/catch/finally behaves\n  \n    Synchronous example:\n  \n    ```js\n    findAuthor() {\n      if (Math.random() > 0.5) {\n        throw new Error();\n      }\n      return new Author();\n    }\n  \n    try {\n      return findAuthor(); // succeed or fail\n    } catch(error) {\n      return findOtherAuther();\n    } finally {\n      // always runs\n      // doesn't affect the return value\n    }\n    ```\n  \n    Asynchronous example:\n  \n    ```js\n    findAuthor().catch(function(reason){\n      return findOtherAuther();\n    }).finally(function(){\n      // author was either found, or not\n    });\n    ```\n  \n    @method finally\n    @param {Function} callback\n    @return {Promise}\n  */\n\n\n  Promise.prototype.finally = function _finally(callback) {\n    var promise = this;\n    var constructor = promise.constructor;\n\n    return promise.then(function (value) {\n      return constructor.resolve(callback()).then(function () {\n        return value;\n      });\n    }, function (reason) {\n      return constructor.resolve(callback()).then(function () {\n        throw reason;\n      });\n    });\n  };\n\n  return Promise;\n}();\n\nPromise$1.prototype.then = then;\nPromise$1.all = all;\nPromise$1.race = race;\nPromise$1.resolve = resolve$1;\nPromise$1.reject = reject$1;\nPromise$1._setScheduler = setScheduler;\nPromise$1._setAsap = setAsap;\nPromise$1._asap = asap;\n\n/*global self*/\nfunction polyfill() {\n  var local = void 0;\n\n  if (typeof global !== 'undefined') {\n    local = global;\n  } else if (typeof self !== 'undefined') {\n    local = self;\n  } else {\n    try {\n      local = Function('return this')();\n    } catch (e) {\n      throw new Error('polyfill failed because global object is unavailable in this environment');\n    }\n  }\n\n  var P = local.Promise;\n\n  if (P) {\n    var promiseToString = null;\n    try {\n      promiseToString = Object.prototype.toString.call(P.resolve());\n    } catch (e) {\n      // silently ignored\n    }\n\n    if (promiseToString === '[object Promise]' && !P.cast) {\n      return;\n    }\n  }\n\n  local.Promise = Promise$1;\n}\n\n// Strange compat..\nPromise$1.polyfill = polyfill;\nPromise$1.Promise = Promise$1;\n\nreturn Promise$1;\n\n})));\n\n\n\n\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/es6-promise/dist/es6-promise.js\n// module id = 301\n// module chunks = 88 89","import { shim } from './misc/PromisesShim';\nshim();\nimport { customEventPolyfill } from './misc/CustomEventPolyfill';\ncustomEventPolyfill();\n\n// MISC\nexport { version } from './misc/Version';\nexport { SearchEndpoint } from './rest/SearchEndpoint';\nexport * from './ExternalModulesShim';\n\n// Default language needs to be set after external module, since this is where l10n will be imported\nimport { defaultLanguage } from './strings/DefaultLanguage';\ndefaultLanguage();\nexport { setLanguageAfterPageLoaded } from './strings/DefaultLanguage';\n\n\n\n// WEBPACK FOOTER //\n// ./src/BaseModules.ts","/* istanbul ignore next */\nexport function shim() {\n  const doShim = promiseInstance => {\n    if (typeof promiseInstance.prototype['finally'] != 'function') {\n      promiseInstance.prototype['finally'] = function finallyPolyfill(callback) {\n        let constructor = this.constructor;\n        return this.then(\n          function(value) {\n            return constructor.resolve(callback()).then(function() {\n              return value;\n            });\n          },\n          function(reason) {\n            return constructor.resolve(callback()).then(function() {\n              throw reason;\n            });\n          }\n        );\n      };\n    }\n\n    let rethrowError = self => {\n      self.then(null, function(err) {\n        setTimeout(function() {\n          throw err;\n        }, 0);\n      });\n    };\n\n    if (typeof promiseInstance.prototype['done'] !== 'function') {\n      promiseInstance.prototype['done'] = function(onFulfilled, onRejected) {\n        let self = arguments.length ? this.then.apply(this, arguments) : this;\n        rethrowError(self);\n        return this;\n      };\n    }\n\n    if (typeof promiseInstance.prototype['fail'] !== 'function') {\n      promiseInstance.prototype['fail'] = function(onFulfilled, onRejected) {\n        let self = arguments.length ? this.catch.apply(this, arguments) : this;\n        rethrowError(self);\n        return this;\n      };\n    }\n  };\n\n  const globalPromise = window['Promise'];\n  const localPromise = Promise;\n  if (globalPromise) {\n    doShim(globalPromise);\n  }\n  if (localPromise) {\n    doShim(localPromise);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/misc/PromisesShim.ts","// CustomEvent polyfill from MDN\n// https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent/CustomEvent#Polyfill\n/* istanbul ignore next */\nexport function customEventPolyfill() {\n  // window.CustomEvent is missing from the definitions\n  if (typeof (<any>window).CustomEvent === 'function') {\n    return;\n  }\n\n  let CustomEvent = (event, params) => {\n    params = params || { bubbles: false, cancelable: false, detail: undefined };\n    let customEvent = document.createEvent('CustomEvent');\n    customEvent.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n    return customEvent;\n  };\n\n  // window.Event is specific to IE\n  CustomEvent.prototype = (<any>window).Event.prototype;\n\n  (<any>window).CustomEvent = CustomEvent;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/misc/CustomEventPolyfill.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_ResponsiveComponents.scss\n// module id = 305\n// module chunks = 88 89","\n/**\n * When source maps are enabled, `style-loader` uses a link element with a data-uri to\n * embed the css on the page. This breaks all relative urls because now they are relative to a\n * bundle instead of the current page.\n *\n * One solution is to only use full urls, but that may be impossible.\n *\n * Instead, this function \"fixes\" the relative urls to be absolute according to the current page location.\n *\n * A rudimentary test suite is located at `test/fixUrls.js` and can be run via the `npm test` command.\n *\n */\n\nmodule.exports = function (css) {\n  // get current location\n  var location = typeof window !== \"undefined\" && window.location;\n\n  if (!location) {\n    throw new Error(\"fixUrls requires window.location\");\n  }\n\n\t// blank or null?\n\tif (!css || typeof css !== \"string\") {\n\t  return css;\n  }\n\n  var baseUrl = location.protocol + \"//\" + location.host;\n  var currentDir = baseUrl + location.pathname.replace(/\\/[^\\/]*$/, \"/\");\n\n\t// convert each url(...)\n\t/*\n\tThis regular expression is just a way to recursively match brackets within\n\ta string.\n\n\t /url\\s*\\(  = Match on the word \"url\" with any whitespace after it and then a parens\n\t   (  = Start a capturing group\n\t     (?:  = Start a non-capturing group\n\t         [^)(]  = Match anything that isn't a parentheses\n\t         |  = OR\n\t         \\(  = Match a start parentheses\n\t             (?:  = Start another non-capturing groups\n\t                 [^)(]+  = Match anything that isn't a parentheses\n\t                 |  = OR\n\t                 \\(  = Match a start parentheses\n\t                     [^)(]*  = Match anything that isn't a parentheses\n\t                 \\)  = Match a end parentheses\n\t             )  = End Group\n              *\\) = Match anything and then a close parens\n          )  = Close non-capturing group\n          *  = Match anything\n       )  = Close capturing group\n\t \\)  = Match a close parens\n\n\t /gi  = Get all matches, not the first.  Be case insensitive.\n\t */\n\tvar fixedCss = css.replace(/url\\s*\\(((?:[^)(]|\\((?:[^)(]+|\\([^)(]*\\))*\\))*)\\)/gi, function(fullMatch, origUrl) {\n\t\t// strip quotes (if they exist)\n\t\tvar unquotedOrigUrl = origUrl\n\t\t\t.trim()\n\t\t\t.replace(/^\"(.*)\"$/, function(o, $1){ return $1; })\n\t\t\t.replace(/^'(.*)'$/, function(o, $1){ return $1; });\n\n\t\t// already a full url? no change\n\t\tif (/^(#|data:|http:\\/\\/|https:\\/\\/|file:\\/\\/\\/)/i.test(unquotedOrigUrl)) {\n\t\t  return fullMatch;\n\t\t}\n\n\t\t// convert the url to a full url\n\t\tvar newUrl;\n\n\t\tif (unquotedOrigUrl.indexOf(\"//\") === 0) {\n\t\t  \t//TODO: should we add protocol?\n\t\t\tnewUrl = unquotedOrigUrl;\n\t\t} else if (unquotedOrigUrl.indexOf(\"/\") === 0) {\n\t\t\t// path should be relative to the base url\n\t\t\tnewUrl = baseUrl + unquotedOrigUrl; // already starts with '/'\n\t\t} else {\n\t\t\t// path should be relative to current directory\n\t\t\tnewUrl = currentDir + unquotedOrigUrl.replace(/^\\.\\//, \"\"); // Strip leading './'\n\t\t}\n\n\t\t// send back the fixed url(...)\n\t\treturn \"url(\" + JSON.stringify(newUrl) + \")\";\n\t});\n\n\t// send back the fixed css\n\treturn fixedCss;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/style-loader/lib/urls.js\n// module id = 306\n// module chunks = 88 89","import { Assert } from '../misc/Assert';\nimport { IEndpointError } from '../rest/EndpointError';\n\nexport class AjaxError implements IEndpointError {\n  public type;\n  public name;\n\n  constructor(public message: string, public status: number) {\n    Assert.exists(message);\n    Assert.exists(status);\n    this.name = this.type = 'Ajax Error (status: ' + status + ')';\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/rest/AjaxError.ts","import { IEndpointError } from './EndpointError';\n\nexport class MissingAuthenticationError implements IEndpointError {\n  public type: string;\n  public message: string;\n  public isMissingAuthentication = true;\n  public name: string;\n\n  constructor(public provider: string) {\n    this.name = this.type = this.message = `Missing Authentication (provider: ${provider})`;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/rest/MissingAuthenticationError.ts","\"use strict\";\nvar analytics = require('./analytics');\nexports.analytics = analytics;\nvar SimpleAnalytics = require('./simpleanalytics');\nexports.SimpleAnalytics = SimpleAnalytics;\nvar history = require('./history');\nexports.history = history;\nvar donottrack = require('./donottrack');\nexports.donottrack = donottrack;\nvar storage = require('./storage');\nexports.storage = storage;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/coveo.analytics/dist/index.js\n// module id = 309\n// module chunks = 88 89","\"use strict\";\nvar Cookie = (function () {\n    function Cookie() {\n    }\n    Cookie.set = function (name, value, expiration) {\n        var domain, domainParts, date, expires, host;\n        if (expiration) {\n            date = new Date();\n            date.setTime(date.getTime() + expiration);\n            expires = '; expires=' + date.toGMTString();\n        }\n        else {\n            expires = '';\n        }\n        host = location.hostname;\n        if (host.indexOf('.') === -1) {\n            document.cookie = name + '=' + value + expires + '; path=/';\n        }\n        else {\n            domainParts = host.split('.');\n            domainParts.shift();\n            domain = '.' + domainParts.join('.');\n            document.cookie = name + '=' + value + expires + '; path=/; domain=' + domain;\n            if (Cookie.get(name) == null || Cookie.get(name) != value) {\n                domain = '.' + host;\n                document.cookie = name + '=' + value + expires + '; path=/; domain=' + domain;\n            }\n        }\n    };\n    Cookie.get = function (name) {\n        var cookiePrefix = name + '=';\n        var cookieArray = document.cookie.split(';');\n        for (var i = 0; i < cookieArray.length; i++) {\n            var cookie = cookieArray[i];\n            cookie = cookie.replace(/^\\s+/, '');\n            if (cookie.indexOf(cookiePrefix) == 0) {\n                return cookie.substring(cookiePrefix.length, cookie.length);\n            }\n        }\n        return null;\n    };\n    Cookie.erase = function (name) {\n        Cookie.set(name, '', -1);\n    };\n    return Cookie;\n}());\nexports.Cookie = Cookie;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/coveo.analytics/dist/cookieutils.js\n// module id = 310\n// module chunks = 88 89","(function(self) {\n  'use strict';\n\n  if (self.fetch) {\n    return\n  }\n\n  var support = {\n    searchParams: 'URLSearchParams' in self,\n    iterable: 'Symbol' in self && 'iterator' in Symbol,\n    blob: 'FileReader' in self && 'Blob' in self && (function() {\n      try {\n        new Blob()\n        return true\n      } catch(e) {\n        return false\n      }\n    })(),\n    formData: 'FormData' in self,\n    arrayBuffer: 'ArrayBuffer' in self\n  }\n\n  if (support.arrayBuffer) {\n    var viewClasses = [\n      '[object Int8Array]',\n      '[object Uint8Array]',\n      '[object Uint8ClampedArray]',\n      '[object Int16Array]',\n      '[object Uint16Array]',\n      '[object Int32Array]',\n      '[object Uint32Array]',\n      '[object Float32Array]',\n      '[object Float64Array]'\n    ]\n\n    var isDataView = function(obj) {\n      return obj && DataView.prototype.isPrototypeOf(obj)\n    }\n\n    var isArrayBufferView = ArrayBuffer.isView || function(obj) {\n      return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n    }\n  }\n\n  function normalizeName(name) {\n    if (typeof name !== 'string') {\n      name = String(name)\n    }\n    if (/[^a-z0-9\\-#$%&'*+.\\^_`|~]/i.test(name)) {\n      throw new TypeError('Invalid character in header field name')\n    }\n    return name.toLowerCase()\n  }\n\n  function normalizeValue(value) {\n    if (typeof value !== 'string') {\n      value = String(value)\n    }\n    return value\n  }\n\n  // Build a destructive iterator for the value list\n  function iteratorFor(items) {\n    var iterator = {\n      next: function() {\n        var value = items.shift()\n        return {done: value === undefined, value: value}\n      }\n    }\n\n    if (support.iterable) {\n      iterator[Symbol.iterator] = function() {\n        return iterator\n      }\n    }\n\n    return iterator\n  }\n\n  function Headers(headers) {\n    this.map = {}\n\n    if (headers instanceof Headers) {\n      headers.forEach(function(value, name) {\n        this.append(name, value)\n      }, this)\n    } else if (Array.isArray(headers)) {\n      headers.forEach(function(header) {\n        this.append(header[0], header[1])\n      }, this)\n    } else if (headers) {\n      Object.getOwnPropertyNames(headers).forEach(function(name) {\n        this.append(name, headers[name])\n      }, this)\n    }\n  }\n\n  Headers.prototype.append = function(name, value) {\n    name = normalizeName(name)\n    value = normalizeValue(value)\n    var oldValue = this.map[name]\n    this.map[name] = oldValue ? oldValue+','+value : value\n  }\n\n  Headers.prototype['delete'] = function(name) {\n    delete this.map[normalizeName(name)]\n  }\n\n  Headers.prototype.get = function(name) {\n    name = normalizeName(name)\n    return this.has(name) ? this.map[name] : null\n  }\n\n  Headers.prototype.has = function(name) {\n    return this.map.hasOwnProperty(normalizeName(name))\n  }\n\n  Headers.prototype.set = function(name, value) {\n    this.map[normalizeName(name)] = normalizeValue(value)\n  }\n\n  Headers.prototype.forEach = function(callback, thisArg) {\n    for (var name in this.map) {\n      if (this.map.hasOwnProperty(name)) {\n        callback.call(thisArg, this.map[name], name, this)\n      }\n    }\n  }\n\n  Headers.prototype.keys = function() {\n    var items = []\n    this.forEach(function(value, name) { items.push(name) })\n    return iteratorFor(items)\n  }\n\n  Headers.prototype.values = function() {\n    var items = []\n    this.forEach(function(value) { items.push(value) })\n    return iteratorFor(items)\n  }\n\n  Headers.prototype.entries = function() {\n    var items = []\n    this.forEach(function(value, name) { items.push([name, value]) })\n    return iteratorFor(items)\n  }\n\n  if (support.iterable) {\n    Headers.prototype[Symbol.iterator] = Headers.prototype.entries\n  }\n\n  function consumed(body) {\n    if (body.bodyUsed) {\n      return Promise.reject(new TypeError('Already read'))\n    }\n    body.bodyUsed = true\n  }\n\n  function fileReaderReady(reader) {\n    return new Promise(function(resolve, reject) {\n      reader.onload = function() {\n        resolve(reader.result)\n      }\n      reader.onerror = function() {\n        reject(reader.error)\n      }\n    })\n  }\n\n  function readBlobAsArrayBuffer(blob) {\n    var reader = new FileReader()\n    var promise = fileReaderReady(reader)\n    reader.readAsArrayBuffer(blob)\n    return promise\n  }\n\n  function readBlobAsText(blob) {\n    var reader = new FileReader()\n    var promise = fileReaderReady(reader)\n    reader.readAsText(blob)\n    return promise\n  }\n\n  function readArrayBufferAsText(buf) {\n    var view = new Uint8Array(buf)\n    var chars = new Array(view.length)\n\n    for (var i = 0; i < view.length; i++) {\n      chars[i] = String.fromCharCode(view[i])\n    }\n    return chars.join('')\n  }\n\n  function bufferClone(buf) {\n    if (buf.slice) {\n      return buf.slice(0)\n    } else {\n      var view = new Uint8Array(buf.byteLength)\n      view.set(new Uint8Array(buf))\n      return view.buffer\n    }\n  }\n\n  function Body() {\n    this.bodyUsed = false\n\n    this._initBody = function(body) {\n      this._bodyInit = body\n      if (!body) {\n        this._bodyText = ''\n      } else if (typeof body === 'string') {\n        this._bodyText = body\n      } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n        this._bodyBlob = body\n      } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n        this._bodyFormData = body\n      } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n        this._bodyText = body.toString()\n      } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n        this._bodyArrayBuffer = bufferClone(body.buffer)\n        // IE 10-11 can't handle a DataView body.\n        this._bodyInit = new Blob([this._bodyArrayBuffer])\n      } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n        this._bodyArrayBuffer = bufferClone(body)\n      } else {\n        throw new Error('unsupported BodyInit type')\n      }\n\n      if (!this.headers.get('content-type')) {\n        if (typeof body === 'string') {\n          this.headers.set('content-type', 'text/plain;charset=UTF-8')\n        } else if (this._bodyBlob && this._bodyBlob.type) {\n          this.headers.set('content-type', this._bodyBlob.type)\n        } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n          this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8')\n        }\n      }\n    }\n\n    if (support.blob) {\n      this.blob = function() {\n        var rejected = consumed(this)\n        if (rejected) {\n          return rejected\n        }\n\n        if (this._bodyBlob) {\n          return Promise.resolve(this._bodyBlob)\n        } else if (this._bodyArrayBuffer) {\n          return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n        } else if (this._bodyFormData) {\n          throw new Error('could not read FormData body as blob')\n        } else {\n          return Promise.resolve(new Blob([this._bodyText]))\n        }\n      }\n\n      this.arrayBuffer = function() {\n        if (this._bodyArrayBuffer) {\n          return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n        } else {\n          return this.blob().then(readBlobAsArrayBuffer)\n        }\n      }\n    }\n\n    this.text = function() {\n      var rejected = consumed(this)\n      if (rejected) {\n        return rejected\n      }\n\n      if (this._bodyBlob) {\n        return readBlobAsText(this._bodyBlob)\n      } else if (this._bodyArrayBuffer) {\n        return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n      } else if (this._bodyFormData) {\n        throw new Error('could not read FormData body as text')\n      } else {\n        return Promise.resolve(this._bodyText)\n      }\n    }\n\n    if (support.formData) {\n      this.formData = function() {\n        return this.text().then(decode)\n      }\n    }\n\n    this.json = function() {\n      return this.text().then(JSON.parse)\n    }\n\n    return this\n  }\n\n  // HTTP methods whose capitalization should be normalized\n  var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT']\n\n  function normalizeMethod(method) {\n    var upcased = method.toUpperCase()\n    return (methods.indexOf(upcased) > -1) ? upcased : method\n  }\n\n  function Request(input, options) {\n    options = options || {}\n    var body = options.body\n\n    if (input instanceof Request) {\n      if (input.bodyUsed) {\n        throw new TypeError('Already read')\n      }\n      this.url = input.url\n      this.credentials = input.credentials\n      if (!options.headers) {\n        this.headers = new Headers(input.headers)\n      }\n      this.method = input.method\n      this.mode = input.mode\n      if (!body && input._bodyInit != null) {\n        body = input._bodyInit\n        input.bodyUsed = true\n      }\n    } else {\n      this.url = String(input)\n    }\n\n    this.credentials = options.credentials || this.credentials || 'omit'\n    if (options.headers || !this.headers) {\n      this.headers = new Headers(options.headers)\n    }\n    this.method = normalizeMethod(options.method || this.method || 'GET')\n    this.mode = options.mode || this.mode || null\n    this.referrer = null\n\n    if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n      throw new TypeError('Body not allowed for GET or HEAD requests')\n    }\n    this._initBody(body)\n  }\n\n  Request.prototype.clone = function() {\n    return new Request(this, { body: this._bodyInit })\n  }\n\n  function decode(body) {\n    var form = new FormData()\n    body.trim().split('&').forEach(function(bytes) {\n      if (bytes) {\n        var split = bytes.split('=')\n        var name = split.shift().replace(/\\+/g, ' ')\n        var value = split.join('=').replace(/\\+/g, ' ')\n        form.append(decodeURIComponent(name), decodeURIComponent(value))\n      }\n    })\n    return form\n  }\n\n  function parseHeaders(rawHeaders) {\n    var headers = new Headers()\n    rawHeaders.split(/\\r?\\n/).forEach(function(line) {\n      var parts = line.split(':')\n      var key = parts.shift().trim()\n      if (key) {\n        var value = parts.join(':').trim()\n        headers.append(key, value)\n      }\n    })\n    return headers\n  }\n\n  Body.call(Request.prototype)\n\n  function Response(bodyInit, options) {\n    if (!options) {\n      options = {}\n    }\n\n    this.type = 'default'\n    this.status = 'status' in options ? options.status : 200\n    this.ok = this.status >= 200 && this.status < 300\n    this.statusText = 'statusText' in options ? options.statusText : 'OK'\n    this.headers = new Headers(options.headers)\n    this.url = options.url || ''\n    this._initBody(bodyInit)\n  }\n\n  Body.call(Response.prototype)\n\n  Response.prototype.clone = function() {\n    return new Response(this._bodyInit, {\n      status: this.status,\n      statusText: this.statusText,\n      headers: new Headers(this.headers),\n      url: this.url\n    })\n  }\n\n  Response.error = function() {\n    var response = new Response(null, {status: 0, statusText: ''})\n    response.type = 'error'\n    return response\n  }\n\n  var redirectStatuses = [301, 302, 303, 307, 308]\n\n  Response.redirect = function(url, status) {\n    if (redirectStatuses.indexOf(status) === -1) {\n      throw new RangeError('Invalid status code')\n    }\n\n    return new Response(null, {status: status, headers: {location: url}})\n  }\n\n  self.Headers = Headers\n  self.Request = Request\n  self.Response = Response\n\n  self.fetch = function(input, init) {\n    return new Promise(function(resolve, reject) {\n      var request = new Request(input, init)\n      var xhr = new XMLHttpRequest()\n\n      xhr.onload = function() {\n        var options = {\n          status: xhr.status,\n          statusText: xhr.statusText,\n          headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n        }\n        options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL')\n        var body = 'response' in xhr ? xhr.response : xhr.responseText\n        resolve(new Response(body, options))\n      }\n\n      xhr.onerror = function() {\n        reject(new TypeError('Network request failed'))\n      }\n\n      xhr.ontimeout = function() {\n        reject(new TypeError('Network request failed'))\n      }\n\n      xhr.open(request.method, request.url, true)\n\n      if (request.credentials === 'include') {\n        xhr.withCredentials = true\n      }\n\n      if ('responseType' in xhr && support.blob) {\n        xhr.responseType = 'blob'\n      }\n\n      request.headers.forEach(function(value, name) {\n        xhr.setRequestHeader(name, value)\n      })\n\n      xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit)\n    })\n  }\n  self.fetch.polyfill = true\n})(typeof self !== 'undefined' ? self : this);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/whatwg-fetch/fetch.js\n// module id = 311\n// module chunks = 88 89","\"use strict\";\nvar analytics = require('./analytics');\nvar objectassign_1 = require('./objectassign');\nvar utils_1 = require('./utils');\nvar SimpleAPI = (function () {\n    function SimpleAPI() {\n    }\n    SimpleAPI.prototype.init = function (token, endpoint) {\n        if (typeof token === 'undefined') {\n            throw new Error(\"You must pass your token when you call 'init'\");\n        }\n        if (typeof token === 'string') {\n            endpoint = endpoint || analytics.Endpoints.default;\n            this.client = new analytics.Client({\n                token: token,\n                endpoint: endpoint\n            });\n        }\n        else if (typeof token === 'object' && typeof token.sendEvent !== 'undefined') {\n            this.client = token;\n        }\n        else {\n            throw new Error(\"You must pass either your token or a valid object when you call 'init'\");\n        }\n    };\n    SimpleAPI.prototype.send = function (event, customData) {\n        if (typeof this.client == 'undefined') {\n            throw new Error(\"You must call init before sending an event\");\n        }\n        customData = objectassign_1.default({}, {\n            hash: window.location.hash\n        }, customData);\n        switch (event) {\n            case 'pageview':\n                this.client.sendViewEvent({\n                    location: window.location.toString(),\n                    referrer: document.referrer,\n                    language: document.documentElement.lang,\n                    title: document.title,\n                    contentIdKey: utils_1.popFromObject(customData, 'contentIdKey'),\n                    contentIdValue: utils_1.popFromObject(customData, 'contentIdValue'),\n                    contentType: utils_1.popFromObject(customData, 'contentType'),\n                    anonymous: utils_1.popFromObject(customData, 'anonymous'),\n                    customData: customData\n                });\n                return;\n            default:\n                throw new Error(\"Event type: '\" + event + \"' not implemented\");\n        }\n    };\n    SimpleAPI.prototype.onLoad = function (callback) {\n        if (typeof callback == 'undefined') {\n            throw new Error(\"You must pass a function when you call 'onLoad'\");\n        }\n        callback();\n    };\n    return SimpleAPI;\n}());\nexports.SimpleAPI = SimpleAPI;\nvar simpleAPI = new SimpleAPI();\nexports.SimpleAnalytics = function (action) {\n    var params = [];\n    for (var _i = 1; _i < arguments.length; _i++) {\n        params[_i - 1] = arguments[_i];\n    }\n    var actionFunction = simpleAPI[action];\n    if (actionFunction) {\n        return actionFunction.apply(simpleAPI, params);\n    }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = exports.SimpleAnalytics;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/coveo.analytics/dist/simpleanalytics.js\n// module id = 312\n// module chunks = 88 89","\"use strict\";\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\nvar objectAssignPonyfill = function (target) {\n    var sources = [];\n    for (var _i = 1; _i < arguments.length; _i++) {\n        sources[_i - 1] = arguments[_i];\n    }\n    if (target === undefined || target === null) {\n        throw new TypeError('Cannot convert undefined or null to object');\n    }\n    var output = Object(target);\n    sources.forEach(function (source) {\n        var from = Object(source);\n        for (var key in from) {\n            if (hasOwnProperty.call(from, key)) {\n                output[key] = from[key];\n            }\n        }\n        if (getOwnPropertySymbols) {\n            var symbols = getOwnPropertySymbols(from);\n            symbols.forEach(function (symbol) {\n                if (propIsEnumerable.call(from, symbol)) {\n                    output[symbol] = from[symbol];\n                }\n            });\n        }\n    });\n    return output;\n};\nexports.ponyfill = objectAssignPonyfill;\nexports.assign = typeof Object.assign === 'function' ? Object.assign : objectAssignPonyfill;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = exports.assign;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/coveo.analytics/dist/objectassign.js\n// module id = 313\n// module chunks = 88 89","\"use strict\";\nfunction popFromObject(object, key) {\n    if (object) {\n        var value = object[key];\n        delete object[key];\n        return value;\n    }\n}\nexports.popFromObject = popFromObject;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/coveo.analytics/dist/utils.js\n// module id = 314\n// module chunks = 88 89","\"use strict\";\nexports.doNotTrack = [true, 'yes', '1'].indexOf(navigator.doNotTrack || navigator.msDoNotTrack || window.doNotTrack);\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = exports.doNotTrack;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/coveo.analytics/dist/donottrack.js\n// module id = 315\n// module chunks = 88 89","import { backOff as originalBackOff, IBackOffOptions } from 'exponential-backoff';\n\nlet backOff = originalBackOff;\n\nexport interface IBackOffRequest<T> {\n  fn: () => Promise<T>;\n  options?: Partial<IBackOffOptions>;\n}\n\nexport function setBackOffModule(newModule?: (request: () => Promise<any>, options?: Partial<IBackOffOptions>) => Promise<any>) {\n  backOff = newModule || originalBackOff;\n}\n\nexport class BackOffRequest {\n  private static queue: (() => Promise<any>)[] = [];\n  private static clearingQueue = false;\n\n  public static enqueue<T>(request: IBackOffRequest<T>): Promise<T> {\n    return new Promise((resolve, reject) => {\n      BackOffRequest.enqueueRequest<T>(request, resolve, reject);\n      BackOffRequest.clearQueueIfNotAlready();\n    });\n  }\n\n  private static enqueueRequest<T>(request: IBackOffRequest<T>, resolve, reject) {\n    const req = () =>\n      backOff<T>(request.fn, request.options)\n        .then(resolve)\n        .catch(reject);\n    BackOffRequest.queue.push(req);\n  }\n\n  private static async clearQueueIfNotAlready() {\n    if (BackOffRequest.clearingQueue) {\n      return;\n    }\n\n    BackOffRequest.clearingQueue = true;\n\n    while (BackOffRequest.queue.length) {\n      const request = BackOffRequest.queue.shift();\n      await request();\n    }\n\n    BackOffRequest.clearingQueue = false;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/rest/BackOffRequest.ts","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (_) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar options_1 = require(\"./options\");\nvar delay_factory_1 = require(\"./delay/delay.factory\");\nfunction backOff(request, options) {\n    if (options === void 0) { options = {}; }\n    return __awaiter(this, void 0, void 0, function () {\n        var sanitizedOptions, backOff;\n        return __generator(this, function (_a) {\n            switch (_a.label) {\n                case 0:\n                    sanitizedOptions = options_1.getSanitizedOptions(options);\n                    backOff = new BackOff(request, sanitizedOptions);\n                    return [4 /*yield*/, backOff.execute()];\n                case 1: return [2 /*return*/, _a.sent()];\n            }\n        });\n    });\n}\nexports.backOff = backOff;\nvar BackOff = /** @class */ (function () {\n    function BackOff(request, options) {\n        this.request = request;\n        this.options = options;\n        this.attemptNumber = 0;\n    }\n    BackOff.prototype.execute = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            var e_1, shouldRetry;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        if (!!this.attemptLimitReached) return [3 /*break*/, 6];\n                        _a.label = 1;\n                    case 1:\n                        _a.trys.push([1, 4, , 5]);\n                        return [4 /*yield*/, this.applyDelay()];\n                    case 2:\n                        _a.sent();\n                        return [4 /*yield*/, this.request()];\n                    case 3: return [2 /*return*/, _a.sent()];\n                    case 4:\n                        e_1 = _a.sent();\n                        this.attemptNumber++;\n                        shouldRetry = this.options.retry(e_1, this.attemptNumber);\n                        if (!shouldRetry || this.attemptLimitReached) {\n                            throw e_1;\n                        }\n                        return [3 /*break*/, 5];\n                    case 5: return [3 /*break*/, 0];\n                    case 6: throw new Error(\"Something went wrong.\");\n                }\n            });\n        });\n    };\n    Object.defineProperty(BackOff.prototype, \"attemptLimitReached\", {\n        get: function () {\n            return this.attemptNumber >= this.options.numOfAttempts;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    BackOff.prototype.applyDelay = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            var delay;\n            return __generator(this, function (_a) {\n                switch (_a.label) {\n                    case 0:\n                        delay = delay_factory_1.DelayFactory(this.options, this.attemptNumber);\n                        return [4 /*yield*/, delay.apply()];\n                    case 1:\n                        _a.sent();\n                        return [2 /*return*/];\n                }\n            });\n        });\n    };\n    return BackOff;\n}());\n//# sourceMappingURL=backoff.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/exponential-backoff/dist/backoff.js\n// module id = 317\n// module chunks = 88 89","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar skip_first_delay_1 = require(\"./skip-first/skip-first.delay\");\nvar always_delay_1 = require(\"./always/always.delay\");\nfunction DelayFactory(options, attempt) {\n    var delay = initDelayClass(options);\n    delay.setAttemptNumber(attempt);\n    return delay;\n}\nexports.DelayFactory = DelayFactory;\nfunction initDelayClass(options) {\n    if (!options.delayFirstAttempt) {\n        return new skip_first_delay_1.SkipFirstDelay(options);\n    }\n    return new always_delay_1.AlwaysDelay(options);\n}\n//# sourceMappingURL=delay.factory.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/exponential-backoff/dist/delay/delay.factory.js\n// module id = 318\n// module chunks = 88 89","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n    return new (P || (P = Promise))(function (resolve, reject) {\n        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n        function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n        step((generator = generator.apply(thisArg, _arguments || [])).next());\n    });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n    return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n    function verb(n) { return function (v) { return step([n, v]); }; }\n    function step(op) {\n        if (f) throw new TypeError(\"Generator is already executing.\");\n        while (_) try {\n            if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n            if (y = 0, t) op = [op[0] & 2, t.value];\n            switch (op[0]) {\n                case 0: case 1: t = op; break;\n                case 4: _.label++; return { value: op[1], done: false };\n                case 5: _.label++; y = op[1]; op = [0]; continue;\n                case 7: op = _.ops.pop(); _.trys.pop(); continue;\n                default:\n                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n                    if (t[2]) _.ops.pop();\n                    _.trys.pop(); continue;\n            }\n            op = body.call(thisArg, _);\n        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n    }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar delay_base_1 = require(\"../delay.base\");\nvar SkipFirstDelay = /** @class */ (function (_super) {\n    __extends(SkipFirstDelay, _super);\n    function SkipFirstDelay() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    SkipFirstDelay.prototype.apply = function () {\n        return __awaiter(this, void 0, void 0, function () {\n            return __generator(this, function (_a) {\n                return [2 /*return*/, this.isFirstAttempt ? true : _super.prototype.apply.call(this)];\n            });\n        });\n    };\n    Object.defineProperty(SkipFirstDelay.prototype, \"isFirstAttempt\", {\n        get: function () {\n            return this.attempt === 0;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    Object.defineProperty(SkipFirstDelay.prototype, \"numOfDelayedAttempts\", {\n        get: function () {\n            return this.attempt - 1;\n        },\n        enumerable: true,\n        configurable: true\n    });\n    return SkipFirstDelay;\n}(delay_base_1.Delay));\nexports.SkipFirstDelay = SkipFirstDelay;\n//# sourceMappingURL=skip-first.delay.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/exponential-backoff/dist/delay/skip-first/skip-first.delay.js\n// module id = 319\n// module chunks = 88 89","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar options_1 = require(\"../options\");\nvar full_jitter_1 = require(\"./full/full.jitter\");\nvar no_jitter_1 = require(\"./no/no.jitter\");\nfunction JitterFactory(options) {\n    switch (options.jitter) {\n        case options_1.JitterTypes.Full:\n            return full_jitter_1.fullJitter;\n        case options_1.JitterTypes.None:\n        default:\n            return no_jitter_1.noJitter;\n    }\n}\nexports.JitterFactory = JitterFactory;\n//# sourceMappingURL=jitter.factory.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/exponential-backoff/dist/jitter/jitter.factory.js\n// module id = 320\n// module chunks = 88 89","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction fullJitter(delay) {\n    var jitteredDelay = Math.random() * delay;\n    return Math.round(jitteredDelay);\n}\nexports.fullJitter = fullJitter;\n//# sourceMappingURL=full.jitter.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/exponential-backoff/dist/jitter/full/full.jitter.js\n// module id = 321\n// module chunks = 88 89","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nfunction noJitter(delay) {\n    return delay;\n}\nexports.noJitter = noJitter;\n//# sourceMappingURL=no.jitter.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/exponential-backoff/dist/jitter/no/no.jitter.js\n// module id = 322\n// module chunks = 88 89","\"use strict\";\nvar __extends = (this && this.__extends) || (function () {\n    var extendStatics = function (d, b) {\n        extendStatics = Object.setPrototypeOf ||\n            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n            function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n        return extendStatics(d, b);\n    };\n    return function (d, b) {\n        extendStatics(d, b);\n        function __() { this.constructor = d; }\n        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n    };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar delay_base_1 = require(\"../delay.base\");\nvar AlwaysDelay = /** @class */ (function (_super) {\n    __extends(AlwaysDelay, _super);\n    function AlwaysDelay() {\n        return _super !== null && _super.apply(this, arguments) || this;\n    }\n    return AlwaysDelay;\n}(delay_base_1.Delay));\nexports.AlwaysDelay = AlwaysDelay;\n//# sourceMappingURL=always.delay.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/exponential-backoff/dist/delay/always/always.delay.js\n// module id = 323\n// module chunks = 88 89","import { ITrigger, ITriggerRedirect } from './Trigger';\n\n/**\n * Describes the plan of execution of a search request.\n */\nexport interface IPlanResponse {\n  /**\n   * The output that would be included by the Search API in the query response\n   * once the search request has been fully processed by the query pipeline.\n   */\n  preprocessingOutput: {\n    /**\n     * The query response output generated by _trigger_ rules in the query\n     * pipeline (i.e., by `execute`, `notify`, `query`, and `redirect` rules).\n     */\n    triggers: ITrigger<any>[];\n  };\n  /**\n   * The query expressions that would be sent to the index once the search\n   * request has been fully processed by the query pipeline.\n   */\n  parsedInput: {\n    /**\n     * The final basic query expression (`q`).\n     */\n    basicExpression: string;\n    /**\n     * The final large query expression (`lq`).\n     */\n    largeExpression: string;\n  };\n}\n\n/**\n * The plan of execution of a search request.\n */\nexport class ExecutionPlan {\n  constructor(private response: IPlanResponse) {}\n\n  /**\n   * Gets the final value of the basic expression (`q`) after the search request has been processed in the query pipeline, but before it is sent to the index.\n   */\n  public get basicExpression() {\n    return this.response.parsedInput.basicExpression;\n  }\n\n  /**\n   * Gets the final value of the large expression (`lq`) after the search request has been processed in the query pipeline, but before it is sent to the index.\n   */\n  public get largeExpression() {\n    return this.response.parsedInput.largeExpression;\n  }\n\n  /**\n   * Gets the URL to redirect the browser to, if the search request satisfies the condition of a `redirect` trigger rule in the query pipeline.\n   *\n   * Returns `null` otherwise.\n   */\n  public get redirectionURL() {\n    const redirects: ITriggerRedirect[] = this.response.preprocessingOutput.triggers.filter(trigger => trigger.type === 'redirect');\n    return redirects.length ? redirects[0].content : null;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/rest/Plan.ts","var Coveo;!function(e){var o;!function(e){function o(e,o){void 0===o&&(o={});var n=o.body||document.body;n.className?n.className.indexOf(\"coveo-modal-opened\")==-1&&(n.className+=\" coveo-modal-opened\"):n.className=\"coveo-modal-opened\";var s=document.createElement(\"div\");s.className=\"coveo-modal-container coveo-opened \",\"small\"==o.sizeMod&&(s.className+=\" coveo-mod-small\"),\"big\"==o.sizeMod&&(s.className+=\" coveo-mod-big\"),setTimeout(function(){s.className+=\" coveo-mod-fade-in-scale\"},0),n.appendChild(s),o.fullscreen===!0&&(s.className+=\" coveo-fullscreen\");var r=document.createElement(\"div\");r.className=\"coveo-modal-backdrop coveo-modal-transparent\",n.appendChild(r),setTimeout(function(){c(r,\"coveo-modal-transparent\")},0);var i=document.createElement(\"div\");i.className=\"coveo-modal-content\",s.appendChild(i);var m=function(e,a){void 0===e&&(e=0),void 0===a&&(a=!1);var t=null==o.validation||o.validation(e);if(t!==!1||a){s.parentElement&&s.parentElement.removeChild(s);var l=d.indexOf(m);return l>=0&&d.splice(l,1),null==n.querySelector(\".coveo-modal-container\")&&c(n,\"coveo-modal-opened\"),r.parentNode&&r.parentNode.removeChild(r),!0}return!1},v=a(o,m),u=v.header,p=v.closeIcon;i.appendChild(u),i.appendChild(t(o,e)),p.addEventListener(\"click\",function(){m()}),r.addEventListener(\"click\",function(){m()});var N=function(e){27==e.keyCode&&n.className.indexOf(\"coveo-modal-opened\")!=-1&&(m(),document.removeEventListener(\"keyup\",N))};document.addEventListener(\"keyup\",N);var f,h=function(e,o){var n=document.createElement(\"button\");n.className=\"coveo-btn\",n.textContent=e,n.addEventListener(\"click\",function(){return m(o)}),f.appendChild(n)};return null!=o.buttons&&(f=document.createElement(\"footer\"),f.className=\"coveo-modal-footer\",i.appendChild(f),o.buttons&l.OK&&h(\"Ok\",l.OK),o.buttons&l.APPLY&&h(\"Apply\",l.APPLY),o.buttons&l.YES&&h(\"Yes\",l.YES),o.buttons&l.NO&&h(\"No\",l.NO),o.buttons&l.CANCEL&&h(\"Cancel\",l.CANCEL)),d.push(m),null!=o.className&&(s.className+=\" \"+o.className),{modalBox:s,wrapper:i,buttons:f,content:i,overlay:r,close:m}}function n(e){void 0===e&&(e=!1);for(var o=0;d.length>o;){var n=d[o](0,e);n||o++}}function a(e,o){var n=document.createElement(\"header\");if(n.className=\"coveo-modal-header\",null!=e.title){var a=document.createElement(\"h1\");n.appendChild(a),e.title instanceof HTMLElement?a.appendChild(e.title):a.innerHTML=e.title,e.titleClose===!0&&a.addEventListener(\"click\",function(){return o()})}var t=document.createElement(\"span\");t.className=\"coveo-small-close\",n.appendChild(t);var c='<svg viewBox=\"0 0 22 22\" class=\"coveo-icon coveo-fill-pure-white\">\\n                    <g transform=\"matrix(.7071-.7071.7071.7071-3.142 11)\">\\n                        <path d=\"m9-3.4h2v26.9h-2z\"></path>\\n                        <path d=\"m-3.4 9h26.9v2h-26.9z\"></path>\\n                    </g>\\n                </svg>';return t.innerHTML=c,{header:n,closeIcon:t}}function t(e,o){var n=document.createElement(\"div\");return n.className=\"coveo-modal-body coveo-mod-header-paddding coveo-mod-form-top-bottom-padding\",n.appendChild(o),n}function c(e,o){e.className=e.className.replace(new RegExp(\"(^|\\\\s)\"+o+\"(\\\\s|\\\\b)\",\"g\"),\"$1\")}!function(e){e[e.OK=1]=\"OK\",e[e.APPLY=2]=\"APPLY\",e[e.YES=4]=\"YES\",e[e.NO=8]=\"NO\",e[e.CANCEL=16]=\"CANCEL\"}(e.BUTTON||(e.BUTTON={}));var l=e.BUTTON,d=[];e.open=o,e.close=n}(o=e.ModalBox||(e.ModalBox={}))}(Coveo||(Coveo={}));\n\n/*** EXPORTS FROM exports-loader ***/\nmodule.exports = Coveo.ModalBox;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/exports-loader?Coveo.ModalBox!./node_modules/modal-box/bin/ModalBox.min.js\n// module id = 325\n// module chunks = 88 89","!function(){\"use strict\";var t,e,n=\"undefined\",r=\"string\",i=self.navigator,o=String,a=Object.prototype.hasOwnProperty,l={},u={},s=!1,f=!0,c=/^\\s*application\\/(?:vnd\\.oftn\\.|x-)?l10n\\+json\\s*(?:$|;)/i,p=\"locale\",g=\"defaultLocale\",h=\"toLocaleString\",y=\"toLowerCase\",v=Array.prototype.indexOf||function(t){for(var e=this.length,n=0;e>n;n++)if(n in this&&this[n]===t)return n;return-1},d=function(e){var n=new t;return n.open(\"GET\",e,s),n.send(null),200!==n.status?(setTimeout(function(){var t=new Error(\"Unable to load localization data: \"+e);throw t.name=\"Localization Error\",t},0),{}):JSON.parse(n.responseText)},m=o[h]=function(t){if(arguments.length>0&&\"number\"!=typeof t)if(typeof t===r)m(d(t));else if(t===s)u={};else{var e,n,i;for(e in t)if(a.call(t,e)){if(n=t[e],e=e[y](),e in u&&n!==s||(u[e]={}),n===s)continue;if(typeof n===r){if(0!==o[p][y]().indexOf(e)){e in l||(l[e]=[]),l[e].push(n);continue}n=d(n)}for(i in n)a.call(n,i)&&(u[e][i]=n[i])}}return Function.prototype[h].apply(o,arguments)},w=function(t){for(var e,n=l[t],r=0,i=n.length;i>r;r++)e={},e[t]=d(n[r]),m(e);delete l[t]},b=o.prototype[h]=function(){var t,n=e,r=o[n?g:p],i=r[y]().split(\"-\"),a=i.length,c=this.valueOf();e=s;do if(t=i.slice(0,a).join(\"-\"),t in l&&w(t),t in u&&c in u[t])return u[t][c];while(a-->1);return!n&&o[g]?(e=f,b.call(c)):c};if(typeof XMLHttpRequest===n&&typeof ActiveXObject!==n){var L=ActiveXObject;t=function(){try{return new L(\"Msxml2.XMLHTTP.6.0\")}catch(t){}try{return new L(\"Msxml2.XMLHTTP.3.0\")}catch(e){}try{return new L(\"Msxml2.XMLHTTP\")}catch(n){}throw new Error(\"XMLHttpRequest not supported by this browser.\")}}else t=XMLHttpRequest;if(o[g]=o[g]||\"\",o[p]=i&&(i.language||i.userLanguage)||\"\",typeof document!==n)for(var T,M=document.getElementsByTagName(\"link\"),O=M.length;O--;){var X=M[O],x=(X.getAttribute(\"rel\")||\"\")[y]().split(/\\s+/);c.test(X.type)&&(-1!==v.call(x,\"localizations\")?m(X.getAttribute(\"href\")):-1!==v.call(x,\"localization\")&&(T={},T[(X.getAttribute(\"hreflang\")||\"\")[y]()]=X.getAttribute(\"href\"),m(T)))}}();\n\n/*** EXPORTS FROM exports-loader ***/\nmodule.exports = window.String.toLocaleString;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/exports-loader?window.String.toLocaleString!./lib/l10n/l10n.min.js\n// module id = 326\n// module chunks = 88 89","/*! globalize - v0.1.1 - 2013-04-30\n* https://github.com/jquery/globalize\n* Copyright 2013 ; Licensed MIT */\nvar Globalize = (function(e,r){var t,n,a,s,u,l,i,c,o,f,d,p,h,g,b,m,y,M,v,k,z,F,A,x;t=function(e){return new t.prototype.init(e)},\"undefined\"!=typeof require&&\"undefined\"!=typeof exports&&\"undefined\"!=typeof module?module.exports=t:e.Globalize=t,t.cultures={},t.prototype={constructor:t,init:function(e){return this.cultures=t.cultures,this.cultureSelector=e,this}},t.prototype.init.prototype=t.prototype,t.cultures[\"default\"]={name:\"en\",englishName:\"English\",nativeName:\"English\",isRTL:!1,language:\"en\",numberFormat:{pattern:[\"-n\"],decimals:2,\",\":\",\",\".\":\".\",groupSizes:[3],\"+\":\"+\",\"-\":\"-\",NaN:\"NaN\",negativeInfinity:\"-Infinity\",positiveInfinity:\"Infinity\",percent:{pattern:[\"-n %\",\"n %\"],decimals:2,groupSizes:[3],\",\":\",\",\".\":\".\",symbol:\"%\"},currency:{pattern:[\"($n)\",\"$n\"],decimals:2,groupSizes:[3],\",\":\",\",\".\":\".\",symbol:\"$\"}},calendars:{standard:{name:\"Gregorian_USEnglish\",\"/\":\"/\",\":\":\":\",firstDay:0,days:{names:[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],namesAbbr:[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],namesShort:[\"Su\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\"]},months:{names:[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\",\"\"],namesAbbr:[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\",\"\"]},AM:[\"AM\",\"am\",\"AM\"],PM:[\"PM\",\"pm\",\"PM\"],eras:[{name:\"A.D.\",start:null,offset:0}],twoDigitYearMax:2029,patterns:{d:\"M/d/yyyy\",D:\"dddd, MMMM dd, yyyy\",t:\"h:mm tt\",T:\"h:mm:ss tt\",f:\"dddd, MMMM dd, yyyy h:mm tt\",F:\"dddd, MMMM dd, yyyy h:mm:ss tt\",M:\"MMMM dd\",Y:\"yyyy MMMM\",S:\"yyyy'-'MM'-'dd'T'HH':'mm':'ss\"}}},messages:{}},t.cultures[\"default\"].calendar=t.cultures[\"default\"].calendars.standard,t.cultures.en=t.cultures[\"default\"],t.cultureSelector=\"en\",n=/^0x[a-f0-9]+$/i,a=/^[+\\-]?infinity$/i,s=/^[+\\-]?\\d*\\.?\\d*(e[+\\-]?\\d+)?$/,u=/^\\s+|\\s+$/g,l=function(e,r){if(e.indexOf)return e.indexOf(r);for(var t=0,n=e.length;n>t;t++)if(e[t]===r)return t;return-1},i=function(e,r){return e.substr(e.length-r.length)===r},c=function(){var e,t,n,a,s,u,l=arguments[0]||{},i=1,p=arguments.length,h=!1;for(\"boolean\"==typeof l&&(h=l,l=arguments[1]||{},i=2),\"object\"==typeof l||f(l)||(l={});p>i;i++)if(null!=(e=arguments[i]))for(t in e)n=l[t],a=e[t],l!==a&&(h&&a&&(d(a)||(s=o(a)))?(s?(s=!1,u=n&&o(n)?n:[]):u=n&&d(n)?n:{},l[t]=c(h,u,a)):a!==r&&(l[t]=a));return l},o=Array.isArray||function(e){return\"[object Array]\"===Object.prototype.toString.call(e)},f=function(e){return\"[object Function]\"===Object.prototype.toString.call(e)},d=function(e){return\"[object Object]\"===Object.prototype.toString.call(e)},p=function(e,r){return 0===e.indexOf(r)},h=function(e){return(e+\"\").replace(u,\"\")},g=function(e){return isNaN(e)?0/0:Math[0>e?\"ceil\":\"floor\"](e)},b=function(e,r,t){var n;for(n=e.length;r>n;n+=1)e=t?\"0\"+e:e+\"0\";return e},m=function(e,r){for(var t=0,n=!1,a=0,s=e.length;s>a;a++){var u=e.charAt(a);switch(u){case\"'\":n?r.push(\"'\"):t++,n=!1;break;case\"\\\\\":n&&r.push(\"\\\\\"),n=!n;break;default:r.push(u),n=!1}}return t},y=function(e,r){r=r||\"F\";var t,n=e.patterns,a=r.length;if(1===a){if(t=n[r],!t)throw\"Invalid date format string '\"+r+\"'.\";r=t}else 2===a&&\"%\"===r.charAt(0)&&(r=r.charAt(1));return r},M=function(e,r,t){function n(e,r){var t,n=e+\"\";return r>1&&r>n.length?(t=v[r-2]+n,t.substr(t.length-r,r)):t=n}function a(){return h||g?h:(h=A.test(r),g=!0,h)}function s(e,r){if(b)return b[r];switch(r){case 0:return e.getFullYear();case 1:return e.getMonth();case 2:return e.getDate();default:throw\"Invalid part value \"+r}}var u,l=t.calendar,i=l.convert;if(!r||!r.length||\"i\"===r){if(t&&t.name.length)if(i)u=M(e,l.patterns.F,t);else{var c=new Date(e.getTime()),o=z(e,l.eras);c.setFullYear(F(e,l,o)),u=c.toLocaleString()}else u=\"\"+e;return u}var f=l.eras,d=\"s\"===r;r=y(l,r),u=[];var p,h,g,b,v=[\"0\",\"00\",\"000\"],A=/([^d]|^)(d|dd)([^d]|$)/g,x=0,I=k();for(!d&&i&&(b=i.fromGregorian(e));;){var S=I.lastIndex,w=I.exec(r),C=r.slice(S,w?w.index:r.length);if(x+=m(C,u),!w)break;if(x%2)u.push(w[0]);else{var D=w[0],H=D.length;switch(D){case\"ddd\":case\"dddd\":var O=3===H?l.days.namesAbbr:l.days.names;u.push(O[e.getDay()]);break;case\"d\":case\"dd\":h=!0,u.push(n(s(e,2),H));break;case\"MMM\":case\"MMMM\":var N=s(e,1);u.push(l.monthsGenitive&&a()?l.monthsGenitive[3===H?\"namesAbbr\":\"names\"][N]:l.months[3===H?\"namesAbbr\":\"names\"][N]);break;case\"M\":case\"MM\":u.push(n(s(e,1)+1,H));break;case\"y\":case\"yy\":case\"yyyy\":N=b?b[0]:F(e,l,z(e,f),d),4>H&&(N%=100),u.push(n(N,H));break;case\"h\":case\"hh\":p=e.getHours()%12,0===p&&(p=12),u.push(n(p,H));break;case\"H\":case\"HH\":u.push(n(e.getHours(),H));break;case\"m\":case\"mm\":u.push(n(e.getMinutes(),H));break;case\"s\":case\"ss\":u.push(n(e.getSeconds(),H));break;case\"t\":case\"tt\":N=12>e.getHours()?l.AM?l.AM[0]:\" \":l.PM?l.PM[0]:\" \",u.push(1===H?N.charAt(0):N);break;case\"f\":case\"ff\":case\"fff\":u.push(n(e.getMilliseconds(),3).substr(0,H));break;case\"z\":case\"zz\":p=e.getTimezoneOffset()/60,u.push((0>=p?\"+\":\"-\")+n(Math.floor(Math.abs(p)),H));break;case\"zzz\":p=e.getTimezoneOffset()/60,u.push((0>=p?\"+\":\"-\")+n(Math.floor(Math.abs(p)),2)+\":\"+n(Math.abs(e.getTimezoneOffset()%60),2));break;case\"g\":case\"gg\":l.eras&&u.push(l.eras[z(e,f)].name);break;case\"/\":u.push(l[\"/\"]);break;default:throw\"Invalid date format pattern '\"+D+\"'.\"}}}return u.join(\"\")},function(){var e;e=function(e,r,t){var n=t.groupSizes,a=n[0],s=1,u=Math.pow(10,r),l=Math.round(e*u)/u;isFinite(l)||(l=e),e=l;var i=e+\"\",c=\"\",o=i.split(/e/i),f=o.length>1?parseInt(o[1],10):0;i=o[0],o=i.split(\".\"),i=o[0],c=o.length>1?o[1]:\"\",f>0?(c=b(c,f,!1),i+=c.slice(0,f),c=c.substr(f)):0>f&&(f=-f,i=b(i,f+1,!0),c=i.slice(-f,i.length)+c,i=i.slice(0,-f)),c=r>0?t[\".\"]+(c.length>r?c.slice(0,r):b(c,r)):\"\";for(var d=i.length-1,p=t[\",\"],h=\"\";d>=0;){if(0===a||a>d)return i.slice(0,d+1)+(h.length?p+h+c:c);h=i.slice(d-a+1,d+1)+(h.length?p+h:\"\"),d-=a,n.length>s&&(a=n[s],s++)}return i.slice(0,d+1)+p+h+c},v=function(r,t,n){if(!isFinite(r))return 1/0===r?n.numberFormat.positiveInfinity:r===-1/0?n.numberFormat.negativeInfinity:n.numberFormat.NaN;if(!t||\"i\"===t)return n.name.length?r.toLocaleString():\"\"+r;t=t||\"D\";var a,s=n.numberFormat,u=Math.abs(r),l=-1;t.length>1&&(l=parseInt(t.slice(1),10));var i,c=t.charAt(0).toUpperCase();switch(c){case\"D\":a=\"n\",u=g(u),-1!==l&&(u=b(\"\"+u,l,!0)),0>r&&(u=\"-\"+u);break;case\"N\":i=s;case\"C\":i=i||s.currency;case\"P\":i=i||s.percent,a=0>r?i.pattern[0]:i.pattern[1]||\"n\",-1===l&&(l=i.decimals),u=e(u*(\"P\"===c?100:1),l,i);break;default:throw\"Bad number format specifier: \"+c}for(var o=/n|\\$|-|%/g,f=\"\";;){var d=o.lastIndex,p=o.exec(a);if(f+=a.slice(d,p?p.index:a.length),!p)break;switch(p[0]){case\"n\":f+=u;break;case\"$\":f+=s.currency.symbol;break;case\"-\":/[1-9]/.test(u)&&(f+=s[\"-\"]);break;case\"%\":f+=s.percent.symbol}}return f}}(),k=function(){return/\\/|dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yy|y|hh|h|HH|H|mm|m|ss|s|tt|t|fff|ff|f|zzz|zz|z|gg|g/g},z=function(e,r){if(!r)return 0;for(var t,n=e.getTime(),a=0,s=r.length;s>a;a++)if(t=r[a].start,null===t||n>=t)return a;return 0},F=function(e,r,t,n){var a=e.getFullYear();return!n&&r.eras&&(a-=r.eras[t].offset),a},function(){var e,r,t,n,a,s,u;e=function(e,r){if(100>r){var t=new Date,n=z(t),a=F(t,e,n),s=e.twoDigitYearMax;s=\"string\"==typeof s?(new Date).getFullYear()%100+parseInt(s,10):s,r+=a-a%100,r>s&&(r-=100)}return r},r=function(e,r,t){var n,a=e.days,i=e._upperDays;return i||(e._upperDays=i=[u(a.names),u(a.namesAbbr),u(a.namesShort)]),r=s(r),t?(n=l(i[1],r),-1===n&&(n=l(i[2],r))):n=l(i[0],r),n},t=function(e,r,t){var n=e.months,a=e.monthsGenitive||e.months,i=e._upperMonths,c=e._upperMonthsGen;i||(e._upperMonths=i=[u(n.names),u(n.namesAbbr)],e._upperMonthsGen=c=[u(a.names),u(a.namesAbbr)]),r=s(r);var o=l(t?i[1]:i[0],r);return 0>o&&(o=l(t?c[1]:c[0],r)),o},n=function(e,r){var t=e._parseRegExp;if(t){var n=t[r];if(n)return n}else e._parseRegExp=t={};for(var a,s=y(e,r).replace(/([\\^\\$\\.\\*\\+\\?\\|\\[\\]\\(\\)\\{\\}])/g,\"\\\\\\\\$1\"),u=[\"^\"],l=[],i=0,c=0,o=k();null!==(a=o.exec(s));){var f=s.slice(i,a.index);if(i=o.lastIndex,c+=m(f,u),c%2)u.push(a[0]);else{var d,p=a[0],h=p.length;switch(p){case\"dddd\":case\"ddd\":case\"MMMM\":case\"MMM\":case\"gg\":case\"g\":d=\"(\\\\D+)\";break;case\"tt\":case\"t\":d=\"(\\\\D*)\";break;case\"yyyy\":case\"fff\":case\"ff\":case\"f\":d=\"(\\\\d{\"+h+\"})\";break;case\"dd\":case\"d\":case\"MM\":case\"M\":case\"yy\":case\"y\":case\"HH\":case\"H\":case\"hh\":case\"h\":case\"mm\":case\"m\":case\"ss\":case\"s\":d=\"(\\\\d\\\\d?)\";break;case\"zzz\":d=\"([+-]?\\\\d\\\\d?:\\\\d{2})\";break;case\"zz\":case\"z\":d=\"([+-]?\\\\d\\\\d?)\";break;case\"/\":d=\"(\\\\/)\";break;default:throw\"Invalid date format pattern '\"+p+\"'.\"}d&&u.push(d),l.push(a[0])}}m(s.slice(i),u),u.push(\"$\");var g=u.join(\"\").replace(/\\s+/g,\"\\\\s+\"),b={regExp:g,groups:l};return t[r]=b},a=function(e,r,t){return r>e||e>t},s=function(e){return e.split(\"\\u00a0\").join(\" \").toUpperCase()},u=function(e){for(var r=[],t=0,n=e.length;n>t;t++)r[t]=s(e[t]);return r},A=function(s,u,l){s=h(s);var i=l.calendar,c=n(i,u),o=RegExp(c.regExp).exec(s);if(null===o)return null;for(var f,d=c.groups,g=null,b=null,m=null,y=null,M=null,v=0,k=0,z=0,F=0,A=null,x=!1,I=0,S=d.length;S>I;I++){var w=o[I+1];if(w){var C=d[I],D=C.length,H=parseInt(w,10);switch(C){case\"dd\":case\"d\":if(y=H,a(y,1,31))return null;break;case\"MMM\":case\"MMMM\":if(m=t(i,w,3===D),a(m,0,11))return null;break;case\"M\":case\"MM\":if(m=H-1,a(m,0,11))return null;break;case\"y\":case\"yy\":case\"yyyy\":if(b=4>D?e(i,H):H,a(b,0,9999))return null;break;case\"h\":case\"hh\":if(v=H,12===v&&(v=0),a(v,0,11))return null;break;case\"H\":case\"HH\":if(v=H,a(v,0,23))return null;break;case\"m\":case\"mm\":if(k=H,a(k,0,59))return null;break;case\"s\":case\"ss\":if(z=H,a(z,0,59))return null;break;case\"tt\":case\"t\":if(x=i.PM&&(w===i.PM[0]||w===i.PM[1]||w===i.PM[2]),!x&&(!i.AM||w!==i.AM[0]&&w!==i.AM[1]&&w!==i.AM[2]))return null;break;case\"f\":case\"ff\":case\"fff\":if(F=H*Math.pow(10,3-D),a(F,0,999))return null;break;case\"ddd\":case\"dddd\":if(M=r(i,w,3===D),a(M,0,6))return null;break;case\"zzz\":var O=w.split(/:/);if(2!==O.length)return null;if(f=parseInt(O[0],10),a(f,-12,13))return null;var N=parseInt(O[1],10);if(a(N,0,59))return null;A=60*f+(p(w,\"-\")?-N:N);break;case\"z\":case\"zz\":if(f=H,a(f,-12,13))return null;A=60*f;break;case\"g\":case\"gg\":var T=w;if(!T||!i.eras)return null;T=h(T.toLowerCase());for(var j=0,$=i.eras.length;$>j;j++)if(T===i.eras[j].name.toLowerCase()){g=j;break}if(null===g)return null}}}var P,G=new Date,E=i.convert;if(P=E?E.fromGregorian(G)[0]:G.getFullYear(),null===b?b=P:i.eras&&(b+=i.eras[g||0].offset),null===m&&(m=0),null===y&&(y=1),E){if(G=E.toGregorian(b,m,y),null===G)return null}else{if(G.setFullYear(b,m,y),G.getDate()!==y)return null;if(null!==M&&G.getDay()!==M)return null}if(x&&12>v&&(v+=12),G.setHours(v,k,z,F),null!==A){var Y=G.getMinutes()-(A+G.getTimezoneOffset());G.setHours(G.getHours()+parseInt(Y/60,10),Y%60)}return G}}(),x=function(e,r,t){var n,a=r[\"-\"],s=r[\"+\"];switch(t){case\"n -\":a=\" \"+a,s=\" \"+s;case\"n-\":i(e,a)?n=[\"-\",e.substr(0,e.length-a.length)]:i(e,s)&&(n=[\"+\",e.substr(0,e.length-s.length)]);break;case\"- n\":a+=\" \",s+=\" \";case\"-n\":p(e,a)?n=[\"-\",e.substr(a.length)]:p(e,s)&&(n=[\"+\",e.substr(s.length)]);break;case\"(n)\":p(e,\"(\")&&i(e,\")\")&&(n=[\"-\",e.substr(1,e.length-2)])}return n||[\"\",e]},t.prototype.findClosestCulture=function(e){return t.findClosestCulture.call(this,e)},t.prototype.format=function(e,r,n){return t.format.call(this,e,r,n)},t.prototype.localize=function(e,r){return t.localize.call(this,e,r)},t.prototype.parseInt=function(e,r,n){return t.parseInt.call(this,e,r,n)},t.prototype.parseFloat=function(e,r,n){return t.parseFloat.call(this,e,r,n)},t.prototype.culture=function(e){return t.culture.call(this,e)},t.addCultureInfo=function(e,r,t){var n={},a=!1;\"string\"!=typeof e?(t=e,e=this.culture().name,n=this.cultures[e]):\"string\"!=typeof r?(t=r,a=null==this.cultures[e],n=this.cultures[e]||this.cultures[\"default\"]):(a=!0,n=this.cultures[r]),this.cultures[e]=c(!0,{},n,t),a&&(this.cultures[e].calendar=this.cultures[e].calendars.standard)},t.findClosestCulture=function(e){var r;if(!e)return this.findClosestCulture(this.cultureSelector)||this.cultures[\"default\"];if(\"string\"==typeof e&&(e=e.split(\",\")),o(e)){var t,n,a=this.cultures,s=e,u=s.length,l=[];for(n=0;u>n;n++){e=h(s[n]);var i,c=e.split(\";\");t=h(c[0]),1===c.length?i=1:(e=h(c[1]),0===e.indexOf(\"q=\")?(e=e.substr(2),i=parseFloat(e),i=isNaN(i)?0:i):i=1),l.push({lang:t,pri:i})}for(l.sort(function(e,r){return e.pri<r.pri?1:e.pri>r.pri?-1:0}),n=0;u>n;n++)if(t=l[n].lang,r=a[t])return r;for(n=0;u>n;n++)for(t=l[n].lang;;){var f=t.lastIndexOf(\"-\");if(-1===f)break;if(t=t.substr(0,f),r=a[t])return r}for(n=0;u>n;n++){t=l[n].lang;for(var d in a){var p=a[d];if(p.language===t)return p}}}else if(\"object\"==typeof e)return e;return r||null},t.format=function(e,r,t){var n=this.findClosestCulture(t);return e instanceof Date?e=M(e,r,n):\"number\"==typeof e&&(e=v(e,r,n)),e},t.localize=function(e,r){return this.findClosestCulture(r).messages[e]||this.cultures[\"default\"].messages[e]},t.parseDate=function(e,r,t){t=this.findClosestCulture(t);var n,a,s;if(r){if(\"string\"==typeof r&&(r=[r]),r.length)for(var u=0,l=r.length;l>u;u++){var i=r[u];if(i&&(n=A(e,i,t)))break}}else{s=t.calendar.patterns;for(a in s)if(n=A(e,s[a],t))break}return n||null},t.parseInt=function(e,r,n){return g(t.parseFloat(e,r,n))},t.parseFloat=function(e,r,t){\"number\"!=typeof r&&(t=r,r=10);var u=this.findClosestCulture(t),l=0/0,i=u.numberFormat;if(e.indexOf(u.numberFormat.currency.symbol)>-1&&(e=e.replace(u.numberFormat.currency.symbol,\"\"),e=e.replace(u.numberFormat.currency[\".\"],u.numberFormat[\".\"])),e.indexOf(u.numberFormat.percent.symbol)>-1&&(e=e.replace(u.numberFormat.percent.symbol,\"\")),e=e.replace(/ /g,\"\"),a.test(e))l=parseFloat(e);else if(!r&&n.test(e))l=parseInt(e,16);else{var c=x(e,i,i.pattern[0]),o=c[0],f=c[1];\"\"===o&&\"(n)\"!==i.pattern[0]&&(c=x(e,i,\"(n)\"),o=c[0],f=c[1]),\"\"===o&&\"-n\"!==i.pattern[0]&&(c=x(e,i,\"-n\"),o=c[0],f=c[1]),o=o||\"+\";var d,p,h=f.indexOf(\"e\");0>h&&(h=f.indexOf(\"E\")),0>h?(p=f,d=null):(p=f.substr(0,h),d=f.substr(h+1));var g,b,m=i[\".\"],y=p.indexOf(m);0>y?(g=p,b=null):(g=p.substr(0,y),b=p.substr(y+m.length));var M=i[\",\"];g=g.split(M).join(\"\");var v=M.replace(/\\u00A0/g,\" \");M!==v&&(g=g.split(v).join(\"\"));var k=o+g;if(null!==b&&(k+=\".\"+b),null!==d){var z=x(d,i,\"-n\");k+=\"e\"+(z[0]||\"+\")+z[1]}s.test(k)&&(l=parseFloat(k))}return l},t.culture=function(e){return e!==r&&(this.cultureSelector=e),this.findClosestCulture(e)||this.cultures[\"default\"]}; return Globalize;}(this));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./lib/globalize/globalize.min.js\n// module id = 327\n// module chunks = 88 89","export { AnalyticsEndpoint } from './rest/AnalyticsEndpoint';\nexport { EndpointCaller } from './rest/EndpointCaller';\nexport { QueryError } from './rest/QueryError';\n\n\n\n// WEBPACK FOOTER //\n// ./src/RestModules.ts","import { IEndpointCaller, IEndpointCallerOptions, ISuccessResponse, IEndpointCallParameters, EndpointCaller } from './EndpointCaller';\nimport { UrlUtils } from '../utils/UrlUtils';\n\nexport class AnalyticsEndpointCaller implements IEndpointCaller {\n  private passthrough: EndpointCaller;\n\n  constructor(public options: IEndpointCallerOptions = {}) {\n    this.passthrough = new EndpointCaller(options);\n  }\n\n  public call<T>(params: IEndpointCallParameters): Promise<ISuccessResponse<T>> {\n    if (this.shouldSendAsBeacon(params)) {\n      this.sendBeacon(params);\n      return;\n    }\n\n    return this.passthrough.call(params);\n  }\n\n  private get beaconApiIsUsable() {\n    return typeof navigator.sendBeacon === 'function';\n  }\n\n  private sendBeacon(params: IEndpointCallParameters) {\n    const queryAsString = params.queryString.concat(this.additionalQueryStringParams);\n    const url = UrlUtils.normalizeAsString({ paths: params.url, queryAsString });\n    const data = EndpointCaller.convertJsonToFormBody({ clickEvent: params.requestData });\n    navigator.sendBeacon(url, new Blob([data], { type: 'application/x-www-form-urlencoded' }));\n  }\n\n  private get additionalQueryStringParams() {\n    const tokenParam = this.accessTokenAsQueryString;\n    return tokenParam ? [tokenParam] : [];\n  }\n\n  private get accessTokenAsQueryString() {\n    const token = this.options.accessToken;\n    return token ? `access_token=${token}` : '';\n  }\n\n  private shouldSendAsBeacon(params: IEndpointCallParameters): boolean {\n    return params.url.indexOf('/click') != -1 && this.beaconApiIsUsable;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/rest/AnalyticsEndpointCaller.ts","import {\n  ISearchEndpoint,\n  IEndpointCallOptions,\n  IGetDocumentOptions,\n  ISearchEndpointOptions,\n  IViewAsHtmlOptions,\n  IExchangeHandshakeTokenOptions\n} from './SearchEndpointInterface';\nimport { IQuery } from './Query';\nimport { ITaggingRequest } from './TaggingRequest';\nimport { IRatingRequest } from './RatingRequest';\nimport { IQuerySuggestRequest } from './QuerySuggest';\nimport { IQuerySuggestResponse } from './QuerySuggest';\nimport { IIndexFieldValue } from '../rest/FieldValue';\nimport { IQueryResult } from '../rest/QueryResult';\nimport { IEndpointError } from '../rest/EndpointError';\nimport { IExtension } from '../rest/Extension';\nimport { IQueryResults } from './QueryResults';\nimport { IFieldDescription } from '../rest/FieldDescription';\nimport { IListFieldValuesRequest, IListFieldValuesBatchRequest } from './ListFieldValuesRequest';\nimport { ISubscriptionRequest, ISubscription } from './Subscription';\nimport { ISentryLog } from './SentryLog';\nimport * as _ from 'underscore';\nimport { IFacetSearchRequest } from './Facet/FacetSearchRequest';\nimport { IFacetSearchResponse } from './Facet/FacetSearchResponse';\nimport { ExecutionPlan } from './Plan';\nimport { AccessToken } from './AccessToken';\n\nexport class SearchEndpointWithDefaultCallOptions implements ISearchEndpoint {\n  options: ISearchEndpointOptions;\n\n  constructor(private endpoint: ISearchEndpoint, private callOptions?: IEndpointCallOptions) {\n    this.options = endpoint.options;\n  }\n\n  public get accessToken(): AccessToken {\n    return this.endpoint.accessToken;\n  }\n\n  public getBaseUri(): string {\n    return this.endpoint.getBaseUri();\n  }\n\n  public getBaseAlertsUri(): string {\n    return this.endpoint.getBaseAlertsUri();\n  }\n\n  public getAuthenticationProviderUri(provider: string, returnUri: string, message: string): string {\n    return this.endpoint.getAuthenticationProviderUri(provider, returnUri, message);\n  }\n\n  public isJsonp(): boolean {\n    return this.endpoint.isJsonp();\n  }\n\n  public search(query: IQuery, callOptions?: IEndpointCallOptions): Promise<IQueryResults> {\n    return this.endpoint.search(query, this.enrichCallOptions(callOptions));\n  }\n\n  public fetchBinary(query: IQuery, callOptions?: IEndpointCallOptions) {\n    return this.endpoint.fetchBinary(query, this.enrichCallOptions(callOptions));\n  }\n\n  public plan(query: IQuery, callOptions?: IEndpointCallOptions): Promise<ExecutionPlan> {\n    return this.endpoint.plan(query, this.enrichCallOptions(callOptions));\n  }\n\n  public getExportToExcelLink(query: IQuery, numberOfResults: number, callOptions?: IEndpointCallOptions): string {\n    return this.endpoint.getExportToExcelLink(query, numberOfResults, this.enrichCallOptions(callOptions));\n  }\n\n  public tagDocument(taggingRequest: ITaggingRequest, callOptions?: IEndpointCallOptions): Promise<boolean> {\n    return this.endpoint.tagDocument(taggingRequest, this.enrichCallOptions(callOptions));\n  }\n\n  public getQuerySuggest(request: IQuerySuggestRequest, callOptions?: IEndpointCallOptions): Promise<IQuerySuggestResponse> {\n    return this.endpoint.getQuerySuggest(request, this.enrichCallOptions(callOptions));\n  }\n\n  public facetSearch(request: IFacetSearchRequest, callOptions?: IEndpointCallOptions): Promise<IFacetSearchResponse> {\n    return this.endpoint.facetSearch(request, this.enrichCallOptions(callOptions));\n  }\n\n  public rateDocument(ratingRequest: IRatingRequest, callOptions?: IEndpointCallOptions): Promise<boolean> {\n    return this.endpoint.rateDocument(ratingRequest, this.enrichCallOptions(callOptions));\n  }\n\n  public getRawDataStream(documentUniqueId: string, dataStreamType: string, callOptions?: IViewAsHtmlOptions): Promise<ArrayBuffer> {\n    return this.endpoint.getRawDataStream(documentUniqueId, dataStreamType, this.enrichCallOptions(callOptions));\n  }\n\n  public getDocument(documentUniqueId: string, callOptions?: IGetDocumentOptions): Promise<IQueryResult> {\n    return this.endpoint.getDocument(documentUniqueId, this.enrichCallOptions(callOptions));\n  }\n\n  public getDocumentText(documentUniqueID: string, callOptions?: IEndpointCallOptions): Promise<string> {\n    return this.endpoint.getDocumentText(documentUniqueID, this.enrichCallOptions(callOptions));\n  }\n\n  public getDocumentHtml(documentUniqueID: string, callOptions?: IViewAsHtmlOptions): Promise<HTMLDocument> {\n    return this.endpoint.getDocumentHtml(documentUniqueID, this.enrichCallOptions(callOptions));\n  }\n\n  public getViewAsHtmlUri(documentUniqueID: string, callOptions?: IViewAsHtmlOptions): string {\n    return this.endpoint.getViewAsHtmlUri(documentUniqueID, this.enrichCallOptions(callOptions));\n  }\n\n  public getViewAsDatastreamUri(documentUniqueID: string, dataStreamType: string, callOptions?: IViewAsHtmlOptions): string {\n    return this.endpoint.getViewAsDatastreamUri(documentUniqueID, dataStreamType, this.enrichCallOptions(callOptions));\n  }\n\n  public listFieldValuesBatch(request: IListFieldValuesBatchRequest, callOptions?: IEndpointCallOptions): Promise<IIndexFieldValue[][]> {\n    return this.endpoint.listFieldValuesBatch(request, this.enrichCallOptions(callOptions));\n  }\n\n  public listFieldValues(request: IListFieldValuesRequest, callOptions?: IEndpointCallOptions): Promise<IIndexFieldValue[]> {\n    return this.endpoint.listFieldValues(request, this.enrichCallOptions(callOptions));\n  }\n\n  public listFields(callOptions?: IEndpointCallOptions): Promise<IFieldDescription[]> {\n    return this.endpoint.listFields(this.enrichCallOptions(callOptions));\n  }\n\n  public extensions(callOptions?: IEndpointCallOptions): Promise<IExtension[]> | Promise<IEndpointError> {\n    return this.endpoint.extensions(this.enrichCallOptions(callOptions));\n  }\n\n  public follow(request: ISubscriptionRequest): Promise<ISubscription> {\n    return this.endpoint.follow(request);\n  }\n\n  public listSubscriptions(page: number): Promise<ISubscription[]> {\n    return this.endpoint.listSubscriptions(page);\n  }\n\n  public updateSubscription(subscription: ISubscription): Promise<ISubscription> {\n    return this.endpoint.updateSubscription(subscription);\n  }\n\n  public deleteSubscription(subscription: ISubscription): Promise<ISubscription> {\n    return this.endpoint.deleteSubscription(subscription);\n  }\n\n  public logError(sentryLog: ISentryLog): Promise<boolean> {\n    return this.endpoint.logError(sentryLog);\n  }\n\n  public exchangeHandshakeToken(options: IExchangeHandshakeTokenOptions): Promise<string> {\n    return this.endpoint.exchangeHandshakeToken(options);\n  }\n\n  private enrichCallOptions<T extends IEndpointCallOptions>(callOptions?: T): T {\n    return _.extend({}, callOptions, this.callOptions);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/rest/SearchEndpointWithDefaultCallOptions.ts","export * from './ui/Base/RegisteredNamedMethods';\nexport { ComponentOptionsType } from './ui/Base/IComponentOptions';\nexport { ComponentOptions } from './ui/Base/ComponentOptions';\nexport { Component } from './ui/Base/Component';\nexport { BaseComponent } from './ui/Base/BaseComponent';\nexport { RootComponent } from './ui/Base/RootComponent';\nexport { QueryBuilder } from './ui/Base/QueryBuilder';\nexport { ExpressionBuilder } from './ui/Base/ExpressionBuilder';\nexport { IResultsComponentBindings } from './ui/Base/ResultsComponentBindings';\n// Export Initialization under both name, for legacy reason and old code in the wild that\n// reference the old CoveoJQuery module\nexport { Initialization } from './ui/Base/Initialization';\nexport { Initialization as CoveoJQuery } from './ui/Base/Initialization';\nexport { initCoveoJQuery } from './ui/Base/CoveoJQuery';\nexport { DatePicker } from './ui/FormWidgets/DatePicker';\nexport { ResponsiveComponentsManager } from './ui/ResponsiveComponents/ResponsiveComponentsManager';\nexport { ResponsiveDropdown } from './ui/ResponsiveComponents/ResponsiveDropdown/ResponsiveDropdown';\nexport { ResponsiveDropdownHeader } from './ui/ResponsiveComponents/ResponsiveDropdown/ResponsiveDropdownHeader';\nexport { ResponsiveDropdownContent } from './ui/ResponsiveComponents/ResponsiveDropdown/ResponsiveDropdownContent';\n\n\n\n// WEBPACK FOOTER //\n// ./src/UIBaseModules.ts","(function (root) {/*global exports, Intl*/\n/**\n * This script gives you the zone info key representing your device's time zone setting.\n *\n * @name jsTimezoneDetect\n * @version 1.0.6\n * @author Jon Nylander\n * @license MIT License - https://bitbucket.org/pellepim/jstimezonedetect/src/default/LICENCE.txt\n *\n * For usage and examples, visit:\n * http://pellepim.bitbucket.org/jstz/\n *\n * Copyright (c) Jon Nylander\n */\n\n\n/**\n * Namespace to hold all the code for timezone detection.\n */\nvar jstz = (function () {\n    'use strict';\n    var HEMISPHERE_SOUTH = 's',\n\n        consts = {\n            DAY: 86400000,\n            HOUR: 3600000,\n            MINUTE: 60000,\n            SECOND: 1000,\n            BASELINE_YEAR: 2014,\n            MAX_SCORE: 864000000, // 10 days\n            AMBIGUITIES: {\n                'America/Denver':       ['America/Mazatlan'],\n                'Europe/London':        ['Africa/Casablanca'],\n                'America/Chicago':      ['America/Mexico_City'],\n                'America/Asuncion':     ['America/Campo_Grande', 'America/Santiago'],\n                'America/Montevideo':   ['America/Sao_Paulo', 'America/Santiago'],\n                // Europe/Minsk should not be in this list... but Windows.\n                'Asia/Beirut':          ['Asia/Amman', 'Asia/Jerusalem', 'Europe/Helsinki', 'Asia/Damascus', 'Africa/Cairo', 'Asia/Gaza', 'Europe/Minsk'],\n                'Pacific/Auckland':     ['Pacific/Fiji'],\n                'America/Los_Angeles':  ['America/Santa_Isabel'],\n                'America/New_York':     ['America/Havana'],\n                'America/Halifax':      ['America/Goose_Bay'],\n                'America/Godthab':      ['America/Miquelon'],\n                'Asia/Dubai':           ['Asia/Yerevan'],\n                'Asia/Jakarta':         ['Asia/Krasnoyarsk'],\n                'Asia/Shanghai':        ['Asia/Irkutsk', 'Australia/Perth'],\n                'Australia/Sydney':     ['Australia/Lord_Howe'],\n                'Asia/Tokyo':           ['Asia/Yakutsk'],\n                'Asia/Dhaka':           ['Asia/Omsk'],\n                // In the real world Yerevan is not ambigous for Baku... but Windows.\n                'Asia/Baku':            ['Asia/Yerevan'],\n                'Australia/Brisbane':   ['Asia/Vladivostok'],\n                'Pacific/Noumea':       ['Asia/Vladivostok'],\n                'Pacific/Majuro':       ['Asia/Kamchatka', 'Pacific/Fiji'],\n                'Pacific/Tongatapu':    ['Pacific/Apia'],\n                'Asia/Baghdad':         ['Europe/Minsk', 'Europe/Moscow'],\n                'Asia/Karachi':         ['Asia/Yekaterinburg'],\n                'Africa/Johannesburg':  ['Asia/Gaza', 'Africa/Cairo']\n            }\n        },\n\n        /**\n         * Gets the offset in minutes from UTC for a certain date.\n         * @param {Date} date\n         * @returns {Number}\n         */\n        get_date_offset = function get_date_offset(date) {\n            var offset = -date.getTimezoneOffset();\n            return (offset !== null ? offset : 0);\n        },\n\n        /**\n         * This function does some basic calculations to create information about\n         * the user's timezone. It uses REFERENCE_YEAR as a solid year for which\n         * the script has been tested rather than depend on the year set by the\n         * client device.\n         *\n         * Returns a key that can be used to do lookups in jstz.olson.timezones.\n         * eg: \"720,1,2\".\n         *\n         * @returns {String}\n         */\n        lookup_key = function lookup_key() {\n            var january_offset = get_date_offset(new Date(consts.BASELINE_YEAR, 0, 2)),\n                june_offset = get_date_offset(new Date(consts.BASELINE_YEAR, 5, 2)),\n                diff = january_offset - june_offset;\n\n            if (diff < 0) {\n                return january_offset + \",1\";\n            } else if (diff > 0) {\n                return june_offset + \",1,\" + HEMISPHERE_SOUTH;\n            }\n\n            return january_offset + \",0\";\n        },\n\n\n        /**\n         * Tries to get the time zone key directly from the operating system for those\n         * environments that support the ECMAScript Internationalization API.\n         */\n        get_from_internationalization_api = function get_from_internationalization_api() {\n            var format, timezone;\n            if (typeof Intl === \"undefined\" || typeof Intl.DateTimeFormat === \"undefined\") {\n                return;\n            }\n\n            format = Intl.DateTimeFormat();\n\n            if (typeof format === \"undefined\" || typeof format.resolvedOptions === \"undefined\") {\n                return;\n            }\n\n            timezone = format.resolvedOptions().timeZone;\n\n            if (timezone && (timezone.indexOf(\"/\") > -1 || timezone === 'UTC')) {\n                return timezone;\n            }\n\n        },\n\n        /**\n         * Starting point for getting all the DST rules for a specific year\n         * for the current timezone (as described by the client system).\n         *\n         * Returns an object with start and end attributes, or false if no\n         * DST rules were found for the year.\n         *\n         * @param year\n         * @returns {Object} || {Boolean}\n         */\n        dst_dates = function dst_dates(year) {\n            var yearstart = new Date(year, 0, 1, 0, 0, 1, 0).getTime();\n            var yearend = new Date(year, 12, 31, 23, 59, 59).getTime();\n            var current = yearstart;\n            var offset = (new Date(current)).getTimezoneOffset();\n            var dst_start = null;\n            var dst_end = null;\n\n            while (current < yearend - 86400000) {\n                var dateToCheck = new Date(current);\n                var dateToCheckOffset = dateToCheck.getTimezoneOffset();\n\n                if (dateToCheckOffset !== offset) {\n                    if (dateToCheckOffset < offset) {\n                        dst_start = dateToCheck;\n                    }\n                    if (dateToCheckOffset > offset) {\n                        dst_end = dateToCheck;\n                    }\n                    offset = dateToCheckOffset;\n                }\n\n                current += 86400000;\n            }\n\n            if (dst_start && dst_end) {\n                return {\n                    s: find_dst_fold(dst_start).getTime(),\n                    e: find_dst_fold(dst_end).getTime()\n                };\n            }\n\n            return false;\n        },\n\n        /**\n         * Probably completely unnecessary function that recursively finds the\n         * exact (to the second) time when a DST rule was changed.\n         *\n         * @param a_date - The candidate Date.\n         * @param padding - integer specifying the padding to allow around the candidate\n         *                  date for finding the fold.\n         * @param iterator - integer specifying how many milliseconds to iterate while\n         *                   searching for the fold.\n         *\n         * @returns {Date}\n         */\n        find_dst_fold = function find_dst_fold(a_date, padding, iterator) {\n            if (typeof padding === 'undefined') {\n                padding = consts.DAY;\n                iterator = consts.HOUR;\n            }\n\n            var date_start = new Date(a_date.getTime() - padding).getTime();\n            var date_end = a_date.getTime() + padding;\n            var offset = new Date(date_start).getTimezoneOffset();\n\n            var current = date_start;\n\n            var dst_change = null;\n            while (current < date_end - iterator) {\n                var dateToCheck = new Date(current);\n                var dateToCheckOffset = dateToCheck.getTimezoneOffset();\n\n                if (dateToCheckOffset !== offset) {\n                    dst_change = dateToCheck;\n                    break;\n                }\n                current += iterator;\n            }\n\n            if (padding === consts.DAY) {\n                return find_dst_fold(dst_change, consts.HOUR, consts.MINUTE);\n            }\n\n            if (padding === consts.HOUR) {\n                return find_dst_fold(dst_change, consts.MINUTE, consts.SECOND);\n            }\n\n            return dst_change;\n        },\n\n        windows7_adaptations = function windows7_adaptions(rule_list, preliminary_timezone, score, sample) {\n            if (score !== 'N/A') {\n                return score;\n            }\n            if (preliminary_timezone === 'Asia/Beirut') {\n                if (sample.name === 'Africa/Cairo') {\n                    if (rule_list[6].s === 1398376800000 && rule_list[6].e === 1411678800000) {\n                        return 0;\n                    }\n                }\n                if (sample.name === 'Asia/Jerusalem') {\n                    if (rule_list[6].s === 1395964800000 && rule_list[6].e === 1411858800000) {\n                        return 0;\n                }\n            }\n            } else if (preliminary_timezone === 'America/Santiago') {\n                if (sample.name === 'America/Asuncion') {\n                    if (rule_list[6].s === 1412481600000 && rule_list[6].e === 1397358000000) {\n                        return 0;\n                    }\n                }\n                if (sample.name === 'America/Campo_Grande') {\n                    if (rule_list[6].s === 1413691200000 && rule_list[6].e === 1392519600000) {\n                        return 0;\n                    }\n                }\n            } else if (preliminary_timezone === 'America/Montevideo') {\n                if (sample.name === 'America/Sao_Paulo') {\n                    if (rule_list[6].s === 1413687600000 && rule_list[6].e === 1392516000000) {\n                        return 0;\n                    }\n                }\n            } else if (preliminary_timezone === 'Pacific/Auckland') {\n                if (sample.name === 'Pacific/Fiji') {\n                    if (rule_list[6].s === 1414245600000 && rule_list[6].e === 1396101600000) {\n                        return 0;\n                    }\n                }\n            }\n\n            return score;\n        },\n\n        /**\n         * Takes the DST rules for the current timezone, and proceeds to find matches\n         * in the jstz.olson.dst_rules.zones array.\n         *\n         * Compares samples to the current timezone on a scoring basis.\n         *\n         * Candidates are ruled immediately if either the candidate or the current zone\n         * has a DST rule where the other does not.\n         *\n         * Candidates are ruled out immediately if the current zone has a rule that is\n         * outside the DST scope of the candidate.\n         *\n         * Candidates are included for scoring if the current zones rules fall within the\n         * span of the samples rules.\n         *\n         * Low score is best, the score is calculated by summing up the differences in DST\n         * rules and if the consts.MAX_SCORE is overreached the candidate is ruled out.\n         *\n         * Yah follow? :)\n         *\n         * @param rule_list\n         * @param preliminary_timezone\n         * @returns {*}\n         */\n        best_dst_match = function best_dst_match(rule_list, preliminary_timezone) {\n            var score_sample = function score_sample(sample) {\n                var score = 0;\n\n                for (var j = 0; j < rule_list.length; j++) {\n\n                    // Both sample and current time zone report DST during the year.\n                    if (!!sample.rules[j] && !!rule_list[j]) {\n\n                        // The current time zone's DST rules are inside the sample's. Include.\n                        if (rule_list[j].s >= sample.rules[j].s && rule_list[j].e <= sample.rules[j].e) {\n                            score = 0;\n                            score += Math.abs(rule_list[j].s - sample.rules[j].s);\n                            score += Math.abs(sample.rules[j].e - rule_list[j].e);\n\n                        // The current time zone's DST rules are outside the sample's. Discard.\n                        } else {\n                            score = 'N/A';\n                            break;\n                        }\n\n                        // The max score has been reached. Discard.\n                        if (score > consts.MAX_SCORE) {\n                            score = 'N/A';\n                            break;\n                        }\n                    }\n                }\n\n                score = windows7_adaptations(rule_list, preliminary_timezone, score, sample);\n\n                return score;\n            };\n            var scoreboard = {};\n            var dst_zones = jstz.olson.dst_rules.zones;\n            var dst_zones_length = dst_zones.length;\n            var ambiguities = consts.AMBIGUITIES[preliminary_timezone];\n\n            for (var i = 0; i < dst_zones_length; i++) {\n                var sample = dst_zones[i];\n                var score = score_sample(dst_zones[i]);\n\n                if (score !== 'N/A') {\n                    scoreboard[sample.name] = score;\n                }\n            }\n\n            for (var tz in scoreboard) {\n                if (scoreboard.hasOwnProperty(tz)) {\n                    for (var j = 0; j < ambiguities.length; j++) {\n                        if (ambiguities[j] === tz) {\n                            return tz;\n                        }\n                    }\n                }\n            }\n\n            return preliminary_timezone;\n        },\n\n        /**\n         * Takes the preliminary_timezone as detected by lookup_key().\n         *\n         * Builds up the current timezones DST rules for the years defined\n         * in the jstz.olson.dst_rules.years array.\n         *\n         * If there are no DST occurences for those years, immediately returns\n         * the preliminary timezone. Otherwise proceeds and tries to solve\n         * ambiguities.\n         *\n         * @param preliminary_timezone\n         * @returns {String} timezone_name\n         */\n        get_by_dst = function get_by_dst(preliminary_timezone) {\n            var get_rules = function get_rules() {\n                var rule_list = [];\n                for (var i = 0; i < jstz.olson.dst_rules.years.length; i++) {\n                    var year_rules = dst_dates(jstz.olson.dst_rules.years[i]);\n                    rule_list.push(year_rules);\n                }\n                return rule_list;\n            };\n            var check_has_dst = function check_has_dst(rules) {\n                for (var i = 0; i < rules.length; i++) {\n                    if (rules[i] !== false) {\n                        return true;\n                    }\n                }\n                return false;\n            };\n            var rules = get_rules();\n            var has_dst = check_has_dst(rules);\n\n            if (has_dst) {\n                return best_dst_match(rules, preliminary_timezone);\n            }\n\n            return preliminary_timezone;\n        },\n\n        /**\n         * Uses get_timezone_info() to formulate a key to use in the olson.timezones dictionary.\n         *\n         * Returns an object with one function \".name()\"\n         *\n         * @returns Object\n         */\n        determine = function determine() {\n            var preliminary_tz = get_from_internationalization_api();\n\n            if (!preliminary_tz) {\n                preliminary_tz = jstz.olson.timezones[lookup_key()];\n\n                if (typeof consts.AMBIGUITIES[preliminary_tz] !== 'undefined') {\n                    preliminary_tz = get_by_dst(preliminary_tz);\n                }\n            }\n\n            return {\n                name: function () {\n                    return preliminary_tz;\n                }\n            };\n        };\n\n    return {\n        determine: determine\n    };\n}());\n\n\njstz.olson = jstz.olson || {};\n\n/**\n * The keys in this dictionary are comma separated as such:\n *\n * First the offset compared to UTC time in minutes.\n *\n * Then a flag which is 0 if the timezone does not take daylight savings into account and 1 if it\n * does.\n *\n * Thirdly an optional 's' signifies that the timezone is in the southern hemisphere,\n * only interesting for timezones with DST.\n *\n * The mapped arrays is used for constructing the jstz.TimeZone object from within\n * jstz.determine();\n */\njstz.olson.timezones = {\n    '-720,0': 'Etc/GMT+12',\n    '-660,0': 'Pacific/Pago_Pago',\n    '-660,1,s': 'Pacific/Apia', // Why? Because windows... cry!\n    '-600,1': 'America/Adak',\n    '-600,0': 'Pacific/Honolulu',\n    '-570,0': 'Pacific/Marquesas',\n    '-540,0': 'Pacific/Gambier',\n    '-540,1': 'America/Anchorage',\n    '-480,1': 'America/Los_Angeles',\n    '-480,0': 'Pacific/Pitcairn',\n    '-420,0': 'America/Phoenix',\n    '-420,1': 'America/Denver',\n    '-360,0': 'America/Guatemala',\n    '-360,1': 'America/Chicago',\n    '-360,1,s': 'Pacific/Easter',\n    '-300,0': 'America/Bogota',\n    '-300,1': 'America/New_York',\n    '-270,0': 'America/Caracas',\n    '-240,1': 'America/Halifax',\n    '-240,0': 'America/Santo_Domingo',\n    '-240,1,s': 'America/Asuncion',\n    '-210,1': 'America/St_Johns',\n    '-180,1': 'America/Godthab',\n    '-180,0': 'America/Argentina/Buenos_Aires',\n    '-180,1,s': 'America/Montevideo',\n    '-120,0': 'America/Noronha',\n    '-120,1': 'America/Noronha',\n    '-60,1': 'Atlantic/Azores',\n    '-60,0': 'Atlantic/Cape_Verde',\n    '0,0': 'UTC',\n    '0,1': 'Europe/London',\n    '60,1': 'Europe/Berlin',\n    '60,0': 'Africa/Lagos',\n    '60,1,s': 'Africa/Windhoek',\n    '120,1': 'Asia/Beirut',\n    '120,0': 'Africa/Johannesburg',\n    '180,0': 'Asia/Baghdad',\n    '180,1': 'Europe/Moscow',\n    '210,1': 'Asia/Tehran',\n    '240,0': 'Asia/Dubai',\n    '240,1': 'Asia/Baku',\n    '270,0': 'Asia/Kabul',\n    '300,1': 'Asia/Yekaterinburg',\n    '300,0': 'Asia/Karachi',\n    '330,0': 'Asia/Kolkata',\n    '345,0': 'Asia/Kathmandu',\n    '360,0': 'Asia/Dhaka',\n    '360,1': 'Asia/Omsk',\n    '390,0': 'Asia/Rangoon',\n    '420,1': 'Asia/Krasnoyarsk',\n    '420,0': 'Asia/Jakarta',\n    '480,0': 'Asia/Shanghai',\n    '480,1': 'Asia/Irkutsk',\n    '525,0': 'Australia/Eucla',\n    '525,1,s': 'Australia/Eucla',\n    '540,1': 'Asia/Yakutsk',\n    '540,0': 'Asia/Tokyo',\n    '570,0': 'Australia/Darwin',\n    '570,1,s': 'Australia/Adelaide',\n    '600,0': 'Australia/Brisbane',\n    '600,1': 'Asia/Vladivostok',\n    '600,1,s': 'Australia/Sydney',\n    '630,1,s': 'Australia/Lord_Howe',\n    '660,1': 'Asia/Kamchatka',\n    '660,0': 'Pacific/Noumea',\n    '690,0': 'Pacific/Norfolk',\n    '720,1,s': 'Pacific/Auckland',\n    '720,0': 'Pacific/Majuro',\n    '765,1,s': 'Pacific/Chatham',\n    '780,0': 'Pacific/Tongatapu',\n    '780,1,s': 'Pacific/Apia',\n    '840,0': 'Pacific/Kiritimati'\n};\n\n/* Build time: 2015-11-02 13:01:00Z Build by invoking python utilities/dst.py generate */\njstz.olson.dst_rules = {\n    \"years\": [\n        2008,\n        2009,\n        2010,\n        2011,\n        2012,\n        2013,\n        2014\n    ],\n    \"zones\": [\n        {\n            \"name\": \"Africa/Cairo\",\n            \"rules\": [\n                {\n                    \"e\": 1219957200000,\n                    \"s\": 1209074400000\n                },\n                {\n                    \"e\": 1250802000000,\n                    \"s\": 1240524000000\n                },\n                {\n                    \"e\": 1285880400000,\n                    \"s\": 1284069600000\n                },\n                false,\n                false,\n                false,\n                {\n                    \"e\": 1411678800000,\n                    \"s\": 1406844000000\n                }\n            ]\n        },\n        {\n            \"name\": \"Africa/Casablanca\",\n            \"rules\": [\n                {\n                    \"e\": 1220223600000,\n                    \"s\": 1212278400000\n                },\n                {\n                    \"e\": 1250809200000,\n                    \"s\": 1243814400000\n                },\n                {\n                    \"e\": 1281222000000,\n                    \"s\": 1272758400000\n                },\n                {\n                    \"e\": 1312066800000,\n                    \"s\": 1301788800000\n                },\n                {\n                    \"e\": 1348970400000,\n                    \"s\": 1345428000000\n                },\n                {\n                    \"e\": 1382839200000,\n                    \"s\": 1376100000000\n                },\n                {\n                    \"e\": 1414288800000,\n                    \"s\": 1406944800000\n                }\n            ]\n        },\n        {\n            \"name\": \"America/Asuncion\",\n            \"rules\": [\n                {\n                    \"e\": 1205031600000,\n                    \"s\": 1224388800000\n                },\n                {\n                    \"e\": 1236481200000,\n                    \"s\": 1255838400000\n                },\n                {\n                    \"e\": 1270954800000,\n                    \"s\": 1286078400000\n                },\n                {\n                    \"e\": 1302404400000,\n                    \"s\": 1317528000000\n                },\n                {\n                    \"e\": 1333854000000,\n                    \"s\": 1349582400000\n                },\n                {\n                    \"e\": 1364094000000,\n                    \"s\": 1381032000000\n                },\n                {\n                    \"e\": 1395543600000,\n                    \"s\": 1412481600000\n                }\n            ]\n        },\n        {\n            \"name\": \"America/Campo_Grande\",\n            \"rules\": [\n                {\n                    \"e\": 1203217200000,\n                    \"s\": 1224388800000\n                },\n                {\n                    \"e\": 1234666800000,\n                    \"s\": 1255838400000\n                },\n                {\n                    \"e\": 1266721200000,\n                    \"s\": 1287288000000\n                },\n                {\n                    \"e\": 1298170800000,\n                    \"s\": 1318737600000\n                },\n                {\n                    \"e\": 1330225200000,\n                    \"s\": 1350792000000\n                },\n                {\n                    \"e\": 1361070000000,\n                    \"s\": 1382241600000\n                },\n                {\n                    \"e\": 1392519600000,\n                    \"s\": 1413691200000\n                }\n            ]\n        },\n        {\n            \"name\": \"America/Goose_Bay\",\n            \"rules\": [\n                {\n                    \"e\": 1225594860000,\n                    \"s\": 1205035260000\n                },\n                {\n                    \"e\": 1257044460000,\n                    \"s\": 1236484860000\n                },\n                {\n                    \"e\": 1289098860000,\n                    \"s\": 1268539260000\n                },\n                {\n                    \"e\": 1320555600000,\n                    \"s\": 1299988860000\n                },\n                {\n                    \"e\": 1352005200000,\n                    \"s\": 1331445600000\n                },\n                {\n                    \"e\": 1383454800000,\n                    \"s\": 1362895200000\n                },\n                {\n                    \"e\": 1414904400000,\n                    \"s\": 1394344800000\n                }\n            ]\n        },\n        {\n            \"name\": \"America/Havana\",\n            \"rules\": [\n                {\n                    \"e\": 1224997200000,\n                    \"s\": 1205643600000\n                },\n                {\n                    \"e\": 1256446800000,\n                    \"s\": 1236488400000\n                },\n                {\n                    \"e\": 1288501200000,\n                    \"s\": 1268542800000\n                },\n                {\n                    \"e\": 1321160400000,\n                    \"s\": 1300597200000\n                },\n                {\n                    \"e\": 1352005200000,\n                    \"s\": 1333256400000\n                },\n                {\n                    \"e\": 1383454800000,\n                    \"s\": 1362891600000\n                },\n                {\n                    \"e\": 1414904400000,\n                    \"s\": 1394341200000\n                }\n            ]\n        },\n        {\n            \"name\": \"America/Mazatlan\",\n            \"rules\": [\n                {\n                    \"e\": 1225008000000,\n                    \"s\": 1207472400000\n                },\n                {\n                    \"e\": 1256457600000,\n                    \"s\": 1238922000000\n                },\n                {\n                    \"e\": 1288512000000,\n                    \"s\": 1270371600000\n                },\n                {\n                    \"e\": 1319961600000,\n                    \"s\": 1301821200000\n                },\n                {\n                    \"e\": 1351411200000,\n                    \"s\": 1333270800000\n                },\n                {\n                    \"e\": 1382860800000,\n                    \"s\": 1365325200000\n                },\n                {\n                    \"e\": 1414310400000,\n                    \"s\": 1396774800000\n                }\n            ]\n        },\n        {\n            \"name\": \"America/Mexico_City\",\n            \"rules\": [\n                {\n                    \"e\": 1225004400000,\n                    \"s\": 1207468800000\n                },\n                {\n                    \"e\": 1256454000000,\n                    \"s\": 1238918400000\n                },\n                {\n                    \"e\": 1288508400000,\n                    \"s\": 1270368000000\n                },\n                {\n                    \"e\": 1319958000000,\n                    \"s\": 1301817600000\n                },\n                {\n                    \"e\": 1351407600000,\n                    \"s\": 1333267200000\n                },\n                {\n                    \"e\": 1382857200000,\n                    \"s\": 1365321600000\n                },\n                {\n                    \"e\": 1414306800000,\n                    \"s\": 1396771200000\n                }\n            ]\n        },\n        {\n            \"name\": \"America/Miquelon\",\n            \"rules\": [\n                {\n                    \"e\": 1225598400000,\n                    \"s\": 1205038800000\n                },\n                {\n                    \"e\": 1257048000000,\n                    \"s\": 1236488400000\n                },\n                {\n                    \"e\": 1289102400000,\n                    \"s\": 1268542800000\n                },\n                {\n                    \"e\": 1320552000000,\n                    \"s\": 1299992400000\n                },\n                {\n                    \"e\": 1352001600000,\n                    \"s\": 1331442000000\n                },\n                {\n                    \"e\": 1383451200000,\n                    \"s\": 1362891600000\n                },\n                {\n                    \"e\": 1414900800000,\n                    \"s\": 1394341200000\n                }\n            ]\n        },\n        {\n            \"name\": \"America/Santa_Isabel\",\n            \"rules\": [\n                {\n                    \"e\": 1225011600000,\n                    \"s\": 1207476000000\n                },\n                {\n                    \"e\": 1256461200000,\n                    \"s\": 1238925600000\n                },\n                {\n                    \"e\": 1288515600000,\n                    \"s\": 1270375200000\n                },\n                {\n                    \"e\": 1319965200000,\n                    \"s\": 1301824800000\n                },\n                {\n                    \"e\": 1351414800000,\n                    \"s\": 1333274400000\n                },\n                {\n                    \"e\": 1382864400000,\n                    \"s\": 1365328800000\n                },\n                {\n                    \"e\": 1414314000000,\n                    \"s\": 1396778400000\n                }\n            ]\n        },\n        {\n            \"name\": \"America/Santiago\",\n            \"rules\": [\n                {\n                    \"e\": 1206846000000,\n                    \"s\": 1223784000000\n                },\n                {\n                    \"e\": 1237086000000,\n                    \"s\": 1255233600000\n                },\n                {\n                    \"e\": 1270350000000,\n                    \"s\": 1286683200000\n                },\n                {\n                    \"e\": 1304823600000,\n                    \"s\": 1313899200000\n                },\n                {\n                    \"e\": 1335668400000,\n                    \"s\": 1346558400000\n                },\n                {\n                    \"e\": 1367118000000,\n                    \"s\": 1378612800000\n                },\n                {\n                    \"e\": 1398567600000,\n                    \"s\": 1410062400000\n                }\n            ]\n        },\n        {\n            \"name\": \"America/Sao_Paulo\",\n            \"rules\": [\n                {\n                    \"e\": 1203213600000,\n                    \"s\": 1224385200000\n                },\n                {\n                    \"e\": 1234663200000,\n                    \"s\": 1255834800000\n                },\n                {\n                    \"e\": 1266717600000,\n                    \"s\": 1287284400000\n                },\n                {\n                    \"e\": 1298167200000,\n                    \"s\": 1318734000000\n                },\n                {\n                    \"e\": 1330221600000,\n                    \"s\": 1350788400000\n                },\n                {\n                    \"e\": 1361066400000,\n                    \"s\": 1382238000000\n                },\n                {\n                    \"e\": 1392516000000,\n                    \"s\": 1413687600000\n                }\n            ]\n        },\n        {\n            \"name\": \"Asia/Amman\",\n            \"rules\": [\n                {\n                    \"e\": 1225404000000,\n                    \"s\": 1206655200000\n                },\n                {\n                    \"e\": 1256853600000,\n                    \"s\": 1238104800000\n                },\n                {\n                    \"e\": 1288303200000,\n                    \"s\": 1269554400000\n                },\n                {\n                    \"e\": 1319752800000,\n                    \"s\": 1301608800000\n                },\n                false,\n                false,\n                {\n                    \"e\": 1414706400000,\n                    \"s\": 1395957600000\n                }\n            ]\n        },\n        {\n            \"name\": \"Asia/Damascus\",\n            \"rules\": [\n                {\n                    \"e\": 1225486800000,\n                    \"s\": 1207260000000\n                },\n                {\n                    \"e\": 1256850000000,\n                    \"s\": 1238104800000\n                },\n                {\n                    \"e\": 1288299600000,\n                    \"s\": 1270159200000\n                },\n                {\n                    \"e\": 1319749200000,\n                    \"s\": 1301608800000\n                },\n                {\n                    \"e\": 1351198800000,\n                    \"s\": 1333058400000\n                },\n                {\n                    \"e\": 1382648400000,\n                    \"s\": 1364508000000\n                },\n                {\n                    \"e\": 1414702800000,\n                    \"s\": 1395957600000\n                }\n            ]\n        },\n        {\n            \"name\": \"Asia/Dubai\",\n            \"rules\": [\n                false,\n                false,\n                false,\n                false,\n                false,\n                false,\n                false\n            ]\n        },\n        {\n            \"name\": \"Asia/Gaza\",\n            \"rules\": [\n                {\n                    \"e\": 1219957200000,\n                    \"s\": 1206655200000\n                },\n                {\n                    \"e\": 1252015200000,\n                    \"s\": 1238104800000\n                },\n                {\n                    \"e\": 1281474000000,\n                    \"s\": 1269640860000\n                },\n                {\n                    \"e\": 1312146000000,\n                    \"s\": 1301608860000\n                },\n                {\n                    \"e\": 1348178400000,\n                    \"s\": 1333058400000\n                },\n                {\n                    \"e\": 1380229200000,\n                    \"s\": 1364508000000\n                },\n                {\n                    \"e\": 1414098000000,\n                    \"s\": 1395957600000\n                }\n            ]\n        },\n        {\n            \"name\": \"Asia/Irkutsk\",\n            \"rules\": [\n                {\n                    \"e\": 1224957600000,\n                    \"s\": 1206813600000\n                },\n                {\n                    \"e\": 1256407200000,\n                    \"s\": 1238263200000\n                },\n                {\n                    \"e\": 1288461600000,\n                    \"s\": 1269712800000\n                },\n                false,\n                false,\n                false,\n                false\n            ]\n        },\n        {\n            \"name\": \"Asia/Jerusalem\",\n            \"rules\": [\n                {\n                    \"e\": 1223161200000,\n                    \"s\": 1206662400000\n                },\n                {\n                    \"e\": 1254006000000,\n                    \"s\": 1238112000000\n                },\n                {\n                    \"e\": 1284246000000,\n                    \"s\": 1269561600000\n                },\n                {\n                    \"e\": 1317510000000,\n                    \"s\": 1301616000000\n                },\n                {\n                    \"e\": 1348354800000,\n                    \"s\": 1333065600000\n                },\n                {\n                    \"e\": 1382828400000,\n                    \"s\": 1364515200000\n                },\n                {\n                    \"e\": 1414278000000,\n                    \"s\": 1395964800000\n                }\n            ]\n        },\n        {\n            \"name\": \"Asia/Kamchatka\",\n            \"rules\": [\n                {\n                    \"e\": 1224943200000,\n                    \"s\": 1206799200000\n                },\n                {\n                    \"e\": 1256392800000,\n                    \"s\": 1238248800000\n                },\n                {\n                    \"e\": 1288450800000,\n                    \"s\": 1269698400000\n                },\n                false,\n                false,\n                false,\n                false\n            ]\n        },\n        {\n            \"name\": \"Asia/Krasnoyarsk\",\n            \"rules\": [\n                {\n                    \"e\": 1224961200000,\n                    \"s\": 1206817200000\n                },\n                {\n                    \"e\": 1256410800000,\n                    \"s\": 1238266800000\n                },\n                {\n                    \"e\": 1288465200000,\n                    \"s\": 1269716400000\n                },\n                false,\n                false,\n                false,\n                false\n            ]\n        },\n        {\n            \"name\": \"Asia/Omsk\",\n            \"rules\": [\n                {\n                    \"e\": 1224964800000,\n                    \"s\": 1206820800000\n                },\n                {\n                    \"e\": 1256414400000,\n                    \"s\": 1238270400000\n                },\n                {\n                    \"e\": 1288468800000,\n                    \"s\": 1269720000000\n                },\n                false,\n                false,\n                false,\n                false\n            ]\n        },\n        {\n            \"name\": \"Asia/Vladivostok\",\n            \"rules\": [\n                {\n                    \"e\": 1224950400000,\n                    \"s\": 1206806400000\n                },\n                {\n                    \"e\": 1256400000000,\n                    \"s\": 1238256000000\n                },\n                {\n                    \"e\": 1288454400000,\n                    \"s\": 1269705600000\n                },\n                false,\n                false,\n                false,\n                false\n            ]\n        },\n        {\n            \"name\": \"Asia/Yakutsk\",\n            \"rules\": [\n                {\n                    \"e\": 1224954000000,\n                    \"s\": 1206810000000\n                },\n                {\n                    \"e\": 1256403600000,\n                    \"s\": 1238259600000\n                },\n                {\n                    \"e\": 1288458000000,\n                    \"s\": 1269709200000\n                },\n                false,\n                false,\n                false,\n                false\n            ]\n        },\n        {\n            \"name\": \"Asia/Yekaterinburg\",\n            \"rules\": [\n                {\n                    \"e\": 1224968400000,\n                    \"s\": 1206824400000\n                },\n                {\n                    \"e\": 1256418000000,\n                    \"s\": 1238274000000\n                },\n                {\n                    \"e\": 1288472400000,\n                    \"s\": 1269723600000\n                },\n                false,\n                false,\n                false,\n                false\n            ]\n        },\n        {\n            \"name\": \"Asia/Yerevan\",\n            \"rules\": [\n                {\n                    \"e\": 1224972000000,\n                    \"s\": 1206828000000\n                },\n                {\n                    \"e\": 1256421600000,\n                    \"s\": 1238277600000\n                },\n                {\n                    \"e\": 1288476000000,\n                    \"s\": 1269727200000\n                },\n                {\n                    \"e\": 1319925600000,\n                    \"s\": 1301176800000\n                },\n                false,\n                false,\n                false\n            ]\n        },\n        {\n            \"name\": \"Australia/Lord_Howe\",\n            \"rules\": [\n                {\n                    \"e\": 1207407600000,\n                    \"s\": 1223134200000\n                },\n                {\n                    \"e\": 1238857200000,\n                    \"s\": 1254583800000\n                },\n                {\n                    \"e\": 1270306800000,\n                    \"s\": 1286033400000\n                },\n                {\n                    \"e\": 1301756400000,\n                    \"s\": 1317483000000\n                },\n                {\n                    \"e\": 1333206000000,\n                    \"s\": 1349537400000\n                },\n                {\n                    \"e\": 1365260400000,\n                    \"s\": 1380987000000\n                },\n                {\n                    \"e\": 1396710000000,\n                    \"s\": 1412436600000\n                }\n            ]\n        },\n        {\n            \"name\": \"Australia/Perth\",\n            \"rules\": [\n                {\n                    \"e\": 1206813600000,\n                    \"s\": 1224957600000\n                },\n                false,\n                false,\n                false,\n                false,\n                false,\n                false\n            ]\n        },\n        {\n            \"name\": \"Europe/Helsinki\",\n            \"rules\": [\n                {\n                    \"e\": 1224982800000,\n                    \"s\": 1206838800000\n                },\n                {\n                    \"e\": 1256432400000,\n                    \"s\": 1238288400000\n                },\n                {\n                    \"e\": 1288486800000,\n                    \"s\": 1269738000000\n                },\n                {\n                    \"e\": 1319936400000,\n                    \"s\": 1301187600000\n                },\n                {\n                    \"e\": 1351386000000,\n                    \"s\": 1332637200000\n                },\n                {\n                    \"e\": 1382835600000,\n                    \"s\": 1364691600000\n                },\n                {\n                    \"e\": 1414285200000,\n                    \"s\": 1396141200000\n                }\n            ]\n        },\n        {\n            \"name\": \"Europe/Minsk\",\n            \"rules\": [\n                {\n                    \"e\": 1224979200000,\n                    \"s\": 1206835200000\n                },\n                {\n                    \"e\": 1256428800000,\n                    \"s\": 1238284800000\n                },\n                {\n                    \"e\": 1288483200000,\n                    \"s\": 1269734400000\n                },\n                false,\n                false,\n                false,\n                false\n            ]\n        },\n        {\n            \"name\": \"Europe/Moscow\",\n            \"rules\": [\n                {\n                    \"e\": 1224975600000,\n                    \"s\": 1206831600000\n                },\n                {\n                    \"e\": 1256425200000,\n                    \"s\": 1238281200000\n                },\n                {\n                    \"e\": 1288479600000,\n                    \"s\": 1269730800000\n                },\n                false,\n                false,\n                false,\n                false\n            ]\n        },\n        {\n            \"name\": \"Pacific/Apia\",\n            \"rules\": [\n                false,\n                false,\n                false,\n                {\n                    \"e\": 1301752800000,\n                    \"s\": 1316872800000\n                },\n                {\n                    \"e\": 1333202400000,\n                    \"s\": 1348927200000\n                },\n                {\n                    \"e\": 1365256800000,\n                    \"s\": 1380376800000\n                },\n                {\n                    \"e\": 1396706400000,\n                    \"s\": 1411826400000\n                }\n            ]\n        },\n        {\n            \"name\": \"Pacific/Fiji\",\n            \"rules\": [\n                false,\n                false,\n                {\n                    \"e\": 1269698400000,\n                    \"s\": 1287842400000\n                },\n                {\n                    \"e\": 1327154400000,\n                    \"s\": 1319292000000\n                },\n                {\n                    \"e\": 1358604000000,\n                    \"s\": 1350741600000\n                },\n                {\n                    \"e\": 1390050000000,\n                    \"s\": 1382796000000\n                },\n                {\n                    \"e\": 1421503200000,\n                    \"s\": 1414850400000\n                }\n            ]\n        },\n        {\n            \"name\": \"Europe/London\",\n            \"rules\": [\n                {\n                    \"e\": 1224982800000,\n                    \"s\": 1206838800000\n                },\n                {\n                    \"e\": 1256432400000,\n                    \"s\": 1238288400000\n                },\n                {\n                    \"e\": 1288486800000,\n                    \"s\": 1269738000000\n                },\n                {\n                    \"e\": 1319936400000,\n                    \"s\": 1301187600000\n                },\n                {\n                    \"e\": 1351386000000,\n                    \"s\": 1332637200000\n                },\n                {\n                    \"e\": 1382835600000,\n                    \"s\": 1364691600000\n                },\n                {\n                    \"e\": 1414285200000,\n                    \"s\": 1396141200000\n                }\n            ]\n        }\n    ]\n};\nif (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\n    module.exports = jstz;\n} else if ((typeof define !== 'undefined' && define !== null) && (define.amd != null)) {\n    define([], function() {\n        return jstz;\n    });\n} else {\n    if (typeof root === 'undefined') {\n        window.jstz = jstz;\n    } else {\n        root.jstz = jstz;\n    }\n}\n}());\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/jstimezonedetect/dist/jstz.js\n// module id = 332\n// module chunks = 88 89","module.exports = function() {\r\n\tthrow new Error(\"define cannot be used indirect\");\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/amd-define.js\n// module id = 333\n// module chunks = 88 89","/* globals __webpack_amd_options__ */\r\nmodule.exports = __webpack_amd_options__;\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/amd-options.js\n// module id = 334\n// module chunks = 88 89","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/Globals.scss\n// module id = 335\n// module chunks = 88 89","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_SearchButton.scss\n// module id = 336\n// module chunks = 88 89","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_SearchInterface.scss\n// module id = 337\n// module chunks = 88 89","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_SearchModalBox.scss\n// module id = 338\n// module chunks = 88 89","import { IHistoryManager } from './HistoryManager';\n\nexport class NoopHistoryController implements IHistoryManager {\n  public setState(state: Record<string, any>) {}\n  public replaceState(state: Record<string, any>) {}\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/controllers/NoopHistoryController.ts","import 'styling/accessibility/_ScreenReader.scss';\nimport { $$ } from '../../utils/Dom';\nimport { QueryEvents, IQuerySuccessEventArgs, IQueryErrorEventArgs } from '../../events/QueryEvents';\nimport { QuerySummaryUtils } from '../../utils/QuerySummaryUtils';\nimport { l } from '../../strings/Strings';\nimport { OmniboxEvents } from '../../EventsModules';\nimport { IQuerySuggestSuccessArgs } from '../../events/OmniboxEvents';\n\nexport interface IAriaLive {\n  updateText: (text: string) => void;\n}\n\nexport class AriaLive implements IAriaLive {\n  private ariaLiveEl: HTMLElement;\n  private querySuggestions = 0;\n\n  constructor(private root: HTMLElement) {\n    this.initAriaLiveEl();\n    this.appendToRoot();\n    this.addQueryEventListeners();\n  }\n\n  public updateText(text: string) {\n    const liveText = text === $$(this.ariaLiveEl).text() ? `${text}\\u00A0` : text;\n    $$(this.ariaLiveEl).text(liveText);\n  }\n\n  private appendToRoot() {\n    this.root.appendChild(this.ariaLiveEl);\n  }\n\n  private initAriaLiveEl() {\n    this.ariaLiveEl = $$('div', {\n      'aria-live': 'polite',\n      className: 'coveo-visible-to-screen-reader-only'\n    }).el;\n  }\n\n  private addQueryEventListeners() {\n    const root = $$(this.root);\n    root.on(QueryEvents.duringQuery, () => this.onDuringQuery());\n    root.on(QueryEvents.querySuccess, (e, args: IQuerySuccessEventArgs) => this.onQuerySuccess(args));\n    root.on(QueryEvents.queryError, (e, args: IQueryErrorEventArgs) => this.onQueryError(args));\n    root.on(OmniboxEvents.querySuggestSuccess, (e, args: IQuerySuggestSuccessArgs) =>\n      args.completions.length ? (this.querySuggestions = args.completions.length) : this.onNoQuerySuggest()\n    );\n    root.on(OmniboxEvents.querySuggestRendered, () => this.onQuerySuggest());\n  }\n\n  private onDuringQuery() {\n    const message = l('UpdatingResults');\n    this.updateText(message);\n  }\n\n  private onQuerySuccess(args: IQuerySuccessEventArgs) {\n    const message = this.messageForResultCount(args);\n    this.updateText(message);\n  }\n\n  private onQuerySuggest() {\n    const message = l('QuerySuggestionsAvailable', this.querySuggestions, this.querySuggestions);\n    this.updateText(message);\n  }\n\n  private onNoQuerySuggest() {\n    const message = l('QuerySuggestionsUnavailable');\n    this.updateText(message);\n  }\n\n  private messageForResultCount(args: IQuerySuccessEventArgs) {\n    const hasResults = args.results.results.length;\n\n    if (hasResults) {\n      return QuerySummaryUtils.message(this.root, args);\n    }\n\n    return this.noResultMessage(args.query.q);\n  }\n\n  private noResultMessage(query: string) {\n    const noResultsMessage = l('noResultFor', '${query}');\n    const sanitizedQuery = escape(query);\n    return QuerySummaryUtils.replaceQueryTags(noResultsMessage, sanitizedQuery);\n  }\n\n  private onQueryError(args: IQueryErrorEventArgs) {\n    const message = l('QueryException', args.error.message);\n    this.updateText(message);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/AriaLive/AriaLive.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/accessibility/_ScreenReader.scss\n// module id = 341\n// module chunks = 88 89","module.exports = \"<svg focusable=\\\"false\\\" enable-background=\\\"new 0 0 20 20\\\" viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" role=\\\"img\\\" aria-label=\\\"Search\\\"><title>Search</title><g fill=\\\"currentColor\\\"><path class=\\\"coveo-magnifier-circle-svg\\\" d=\\\"m8.368 16.736c-4.614 0-8.368-3.754-8.368-8.368s3.754-8.368 8.368-8.368 8.368 3.754 8.368 8.368-3.754 8.368-8.368 8.368m0-14.161c-3.195 0-5.793 2.599-5.793 5.793s2.599 5.793 5.793 5.793 5.793-2.599 5.793-5.793-2.599-5.793-5.793-5.793\\\"></path><path d=\\\"m18.713 20c-.329 0-.659-.126-.91-.377l-4.552-4.551c-.503-.503-.503-1.318 0-1.82.503-.503 1.318-.503 1.82 0l4.552 4.551c.503.503.503 1.318 0 1.82-.252.251-.581.377-.91.377\\\"></path></g></svg>\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./image/svg/search.svg\n// module id = 342\n// module chunks = 88 89","module.exports = \"<svg focusable=\\\"false\\\" enable-background=\\\"new 0 0 16 16\\\" viewBox=\\\"0 0 16 16\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" role=\\\"img\\\" aria-label=\\\"More\\\"><title>More</title><g fill=\\\"currentColor\\\"><path class=\\\"coveo-more-background-svg\\\" fill-opacity=\\\"0\\\" d=\\\"m8.03.819c3.987 0 7.227 3.222 7.227 7.181s-3.239 7.181-7.227 7.181c-3.976 0-7.209-3.222-7.209-7.181s3.237-7.181 7.209-7.181\\\"></path><path d=\\\"m0 8c0 4.416 3.572 8 7.991 8 4.425 0 8.009-3.581 8.009-8 0-4.416-3.581-8-8.009-8-4.416 0-7.991 3.581-7.991 8m8.031-6.4c3.553 0 6.441 2.872 6.441 6.4s-2.887 6.4-6.441 6.4c-3.544 0-6.425-2.872-6.425-6.4s2.885-6.4 6.425-6.4\\\"></path><path d=\\\"m10.988 9.024c.551 0 1-.449 1-1s-.449-1-1-1-1 .449-1 1 .449 1 1 1\\\"></path><path d=\\\"m7.991 9c .551 0 1-.449 1-1s-.449-1-1-1-1 .449-1 1 .449 1 1 1\\\"></path><path d=\\\"m4.994 9c .551 0 1-.449 1-1s-.449-1-1-1-1 .449-1 1 .449 1 1 1\\\"></path></g></svg>\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./image/svg/more.svg\n// module id = 343\n// module chunks = 88 89","module.exports = \"<svg focusable=\\\"false\\\" enable-background=\\\"new 0 0 18 18\\\" viewBox=\\\"0 0 18 18\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" role=\\\"img\\\" aria-label=\\\"Loading\\\"><title>Loading</title><g fill=\\\"currentColor\\\"><path d=\\\"m16.76 8.051c-.448 0-.855-.303-.969-.757-.78-3.117-3.573-5.294-6.791-5.294s-6.01 2.177-6.79 5.294c-.134.537-.679.861-1.213.727-.536-.134-.861-.677-.728-1.212 1.004-4.009 4.594-6.809 8.731-6.809 4.138 0 7.728 2.8 8.73 6.809.135.536-.191 1.079-.727 1.213-.081.02-.162.029-.243.029z\\\"></path><path d=\\\"m9 18c-4.238 0-7.943-3.007-8.809-7.149-.113-.541.234-1.071.774-1.184.541-.112 1.071.232 1.184.773.674 3.222 3.555 5.56 6.851 5.56s6.178-2.338 6.852-5.56c.113-.539.634-.892 1.184-.773.54.112.887.643.773 1.184-.866 4.142-4.57 7.149-8.809 7.149z\\\"></path></g></svg>\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./image/svg/loading.svg\n// module id = 344\n// module chunks = 88 89","module.exports = \"<svg focusable=\\\"false\\\" enable-background=\\\"new 0 0 11 11\\\" viewBox=\\\"0 0 11 11\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" role=\\\"img\\\" aria-label=\\\"Toggle\\\"><title>Toggle</title><g class=\\\"coveo-more-svg\\\" fill=\\\"none\\\"><path d=\\\"m10.083 4.583h-3.666v-3.666c0-.524-.393-.917-.917-.917s-.917.393-.917.917v3.667h-3.666c-.524-.001-.917.392-.917.916s.393.917.917.917h3.667v3.667c-.001.523.392.916.916.916s.917-.393.917-.917v-3.666h3.667c.523 0 .916-.393.916-.917-.001-.524-.394-.917-.917-.917z\\\"></path></g><g class=\\\"coveo-line-svg\\\" fill=\\\"none\\\"><path d=\\\"m10 6.5h-9c-.552 0-1-.448-1-1 0-.552.448-1 1-1h9c .552 0 1 .448 1 1 0 .552-.448 1-1 1z\\\"></path></g><g class=\\\"coveo-exclusion-svg\\\" fill=\\\"none\\\"><path d=\\\"m9.233 7.989-2.489-2.489 2.489-2.489c.356-.356.356-.889 0-1.244-.356-.356-.889-.356-1.244 0l-2.489 2.489-2.489-2.489c-.356-.356-.889-.356-1.244 0-.356.356-.356.889 0 1.244l2.489 2.489-2.489 2.489c-.356.356-.356.889 0 1.244.356.356.889.356 1.244 0l2.489-2.489 2.489 2.489c.356.356.889.356 1.244 0 .356-.355.356-.889 0-1.244z\\\"></path></g><g class=\\\"coveo-hook-svg\\\" fill=\\\"none\\\"><path d=\\\"m10.252 2.213c-.155-.142-.354-.211-.573-.213-.215.005-.414.091-.561.24l-4.873 4.932-2.39-2.19c-.154-.144-.385-.214-.57-.214-.214.004-.415.09-.563.24-.148.147-.227.343-.222.549.005.207.093.4.249.542l2.905 2.662c.168.154.388.239.618.239h.022.003c.237-.007.457-.101.618-.266l5.362-5.428c.148-.148.228-.344.223-.551s-.093-.399-.248-.542z\\\"></path></g></svg>\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./image/svg/checkbox-hook-exclusion-more.svg\n// module id = 345\n// module chunks = 88 89","module.exports = \"<svg focusable=\\\"false\\\" enable-background=\\\"new 0 0 10 6\\\" viewBox=\\\"0 0 10 6\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" role=\\\"img\\\" aria-label=\\\"Arrow Up\\\"><title>Arrow Up</title><g fill=\\\"currentColor\\\"><path d=\\\"m5 .068c.222 0 .443.084.612.253l4.134 4.134c.338.338.338.886 0 1.224s-.886.338-1.224 0l-3.522-3.521-3.523 3.521c-.336.338-.886.338-1.224 0s-.337-.886.001-1.224l4.134-4.134c.168-.169.39-.253.612-.253z\\\"></path></g></svg>\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./image/svg/arrow-up.svg\n// module id = 346\n// module chunks = 88 89","module.exports = \"<svg focusable=\\\"false\\\" enable-background=\\\"new 0 0 10 6\\\" viewBox=\\\"0 0 10 6\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" role=\\\"img\\\" aria-label=\\\"Arrow Down\\\"><title>Arrow Down</title><g fill=\\\"currentColor\\\"><path d=\\\"m5 5.932c-.222 0-.443-.084-.612-.253l-4.134-4.134c-.338-.338-.338-.886 0-1.224s.886-.338 1.224 0l3.522 3.521 3.523-3.521c.336-.338.886-.338 1.224 0s .337.886-.001 1.224l-4.135 4.134c-.168.169-.39.253-.611.253z\\\"></path></g></svg>\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./image/svg/arrow-down.svg\n// module id = 347\n// module chunks = 88 89","module.exports = \"<svg focusable=\\\"false\\\" enable-background=\\\"new 0 0 13 13\\\" viewBox=\\\"0 0 13 13\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" role=\\\"img\\\" aria-label=\\\"Clear\\\"><title>Clear</title><g fill=\\\"currentColor\\\"><path d=\\\"m7.881 6.501 4.834-4.834c.38-.38.38-1.001 0-1.381s-1.001-.38-1.381 0l-4.834 4.834-4.834-4.835c-.38-.38-1.001-.38-1.381 0s-.38 1.001 0 1.381l4.834 4.834-4.834 4.834c-.38.38-.38 1.001 0 1.381s1.001.38 1.381 0l4.834-4.834 4.834 4.834c.38.38 1.001.38 1.381 0s .38-1.001 0-1.381z\\\"></path></g></svg>\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./image/svg/main-clear.svg\n// module id = 348\n// module chunks = 88 89","module.exports = \"<svg viewBox=\\\"0 0 18 18\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><path d=\\\"m9 16c-3.9 0-7-3.1-7-7s3.1-7 7-7 7 3.1 7 7-3.1 7-7 7m0-16c-5 0-9 4-9 9s4 9 9 9 9-4 9-9-4-9-9-9\\\"></path><path d=\\\"m11.1 5.5-2.1 2.1-2.1-2.1-1.4 1.4 2.1 2.1-2.1 2.1 1.4 1.4 2.1-2.1 2.1 2.1 1.4-1.4-2.1-2.1 2.1-2.1z\\\"></path></svg>\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./image/svg/clear-small.svg\n// module id = 349\n// module chunks = 88 89","module.exports = \"<svg focusable=\\\"false\\\" enable-background=\\\"new 0 0 11 11\\\" viewBox=\\\"0 0 11 11\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" role=\\\"img\\\" aria-label=\\\"Clear\\\"><title>Clear</title><g class=\\\"coveo-exclusion-svg\\\" fill=\\\"none\\\"><path d=\\\"m9.233 7.989-2.489-2.489 2.489-2.489c.356-.356.356-.889 0-1.244-.356-.356-.889-.356-1.244 0l-2.489 2.489-2.489-2.489c-.356-.356-.889-.356-1.244 0-.356.356-.356.889 0 1.244l2.489 2.489-2.489 2.489c-.356.356-.356.889 0 1.244.356.356.889.356 1.244 0l2.489-2.489 2.489 2.489c.356.356.889.356 1.244 0 .356-.355.356-.889 0-1.244z\\\"></path></g></svg>\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./image/svg/clear.svg\n// module id = 350\n// module chunks = 88 89","module.exports = \"<svg focusable=\\\"false\\\" enable-background=\\\"new 0 0 11 11\\\" viewBox=\\\"0 0 11 11\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" role=\\\"img\\\" aria-label=\\\"Close\\\"><title>Close</title><g class=\\\"coveo-exclusion-svg\\\" fill=\\\"none\\\"><path d=\\\"m9.233 7.989-2.489-2.489 2.489-2.489c.356-.356.356-.889 0-1.244-.356-.356-.889-.356-1.244 0l-2.489 2.489-2.489-2.489c-.356-.356-.889-.356-1.244 0-.356.356-.356.889 0 1.244l2.489 2.489-2.489 2.489c-.356.356-.356.889 0 1.244.356.356.889.356 1.244 0l2.489-2.489 2.489 2.489c.356.356.889.356 1.244 0 .356-.355.356-.889 0-1.244z\\\"></path></g></svg>\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./image/svg/close.svg\n// module id = 351\n// module chunks = 88 89","module.exports = \"<svg focusable=\\\"false\\\" enable-background=\\\"new 0 0 11 11\\\" viewBox=\\\"0 0 11 11\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" role=\\\"img\\\" aria-label=\\\"Delete\\\"><title>Delete</title><g class=\\\"coveo-exclusion-svg\\\" fill=\\\"none\\\"><path d=\\\"m9.233 7.989-2.489-2.489 2.489-2.489c.356-.356.356-.889 0-1.244-.356-.356-.889-.356-1.244 0l-2.489 2.489-2.489-2.489c-.356-.356-.889-.356-1.244 0-.356.356-.356.889 0 1.244l2.489 2.489-2.489 2.489c-.356.356-.356.889 0 1.244.356.356.889.356 1.244 0l2.489-2.489 2.489 2.489c.356.356.889.356 1.244 0 .356-.355.356-.889 0-1.244z\\\"></path></g></svg>\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./image/svg/delete.svg\n// module id = 352\n// module chunks = 88 89","module.exports = \"<svg focusable=\\\"false\\\" enable-background=\\\"new 0 0 11 11\\\" viewBox=\\\"0 0 11 11\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" role=\\\"img\\\" aria-label=\\\"Save\\\"><title>Save</title><g class=\\\"coveo-hook-svg\\\" fill=\\\"none\\\"><path d=\\\"m10.252 2.213c-.155-.142-.354-.211-.573-.213-.215.005-.414.091-.561.24l-4.873 4.932-2.39-2.19c-.154-.144-.385-.214-.57-.214-.214.004-.415.09-.563.24-.148.147-.227.343-.222.549.005.207.093.4.249.542l2.905 2.662c.168.154.388.239.618.239h.022.003c.237-.007.457-.101.618-.266l5.362-5.428c.148-.148.228-.344.223-.551s-.093-.399-.248-.542z\\\"></path></g></svg>\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./image/svg/save.svg\n// module id = 353\n// module chunks = 88 89","module.exports = \"<svg viewBox=\\\"0 0 96 96\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"><g><path d=\\\"m48 .5c-26.2 0-47.5 21.3-47.5 47.5s21.3 47.5 47.5 47.5 47.5-21.3 47.5-47.5-21.3-47.5-47.5-47.5zm0 86.6c-21.6 0-39.1-17.5-39.1-39.1s17.5-39.1 39.1-39.1 39.1 17.5 39.1 39.1-17.5 39.1-39.1 39.1z\\\"></path><path d=\\\"m42.1 51.6-11.3-11.4-10 9.9 21.3 21.3 33.4-33.4-9.9-9.9z\\\"></path></g></svg>\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./image/svg/check-yes.svg\n// module id = 354\n// module chunks = 88 89","module.exports = \"<svg focusable=\\\"false\\\" enable-background=\\\"new 0 0 18 18\\\" viewBox=\\\"0 0 18 18\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" role=\\\"img\\\" aria-label=\\\"Or/And Operator\\\"><title>Or/And Operator</title><g fill=\\\"currentColor\\\"><path class=\\\"coveo-and-svg\\\" d=\\\"m13.769 5.294h-1.063v-1.063c0-2.329-1.894-4.231-4.231-4.231h-4.244c-2.329 0-4.231 1.894-4.231 4.231v4.244c0 2.329 1.894 4.231 4.231 4.231h1.063v1.063c0 2.329 1.894 4.231 4.231 4.231h4.244c2.329 0 4.231-1.894 4.231-4.231v-4.244c0-2.329-1.894-4.231-4.231-4.231zm2.731 8.475c0 1.506-1.225 2.731-2.731 2.731h-4.244c-1.506 0-2.731-1.225-2.731-2.731v-2.563h-2.563c-1.506 0-2.731-1.225-2.731-2.731v-4.244c0-1.506 1.225-2.731 2.731-2.731h4.244c1.506 0 2.731 1.225 2.731 2.731v2.563h2.563c1.506 0 2.731 1.225 2.731 2.731z\\\"></path><path class=\\\"coveo-or-svg\\\" d=\\\"m11.206 6.794v1.909c0 1.38-1.123 2.503-2.503 2.503h-1.909v-1.909c0-1.38 1.123-2.503 2.503-2.503zm1.5-1.5h-3.409c-2.209 0-4.003 1.792-4.003 4.003v3.409h3.409c2.209 0 4.003-1.792 4.003-4.003z\\\"></path></g></svg>\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./image/svg/or-and.svg\n// module id = 355\n// module chunks = 88 89","module.exports = \"<svg focusable=\\\"false\\\" enable-background=\\\"new 0 0 15 14\\\" viewBox=\\\"0 0 15 14\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" role=\\\"img\\\" aria-label=\\\"Sort\\\"><title>Sort</title><g fill=\\\"currentColor\\\"><path class=\\\"coveo-active-shape-svg\\\" d=\\\"m13.002 4.076 0 0c0 .536-.439.975-.975.975h-2.925c-.536 0-.975-.439-.975-.975l0 0c0-.536.439-.975.975-.975h2.925c.537 0 .975.438.975.975z\\\"></path><path class=\\\"coveo-active-shape-svg\\\" d=\\\"m13.002 9.925 0 0c0 .536-.439.975-.975.975h-2.925c-.536 0-.975-.439-.975-.975l0 0c0-.536.439-.975.975-.975h2.925c.537 0 .975.439.975.975z\\\"></path><path class=\\\"coveo-active-shape-svg\\\" d=\\\"m15 7 0 0c0 .536-.439.975-.975.975h-4.923c-.536 0-.974-.438-.974-.975l0 0c0-.536.439-.975.975-.975h4.923c.535.001.974.439.974.975z\\\"></path><path d=\\\"m4.956 9.837-.671.671v-7.015l.671.671c.381.381.997.381 1.379 0 .381-.38.381-.997 0-1.379l-2.335-2.336c-.183-.184-.431-.286-.69-.286s-.506.102-.689.286l-2.335 2.336c-.381.381-.381.997 0 1.379s.997.381 1.379 0l .671-.671v7.015l-.671-.671c-.381-.381-.997-.381-1.379 0-.381.38-.381.997 0 1.379l2.335 2.336c.182.183.431.286.689.286s.506-.103.69-.287l2.335-2.336c.381-.381.381-.997 0-1.379-.382-.381-.998-.381-1.379.001z\\\"></path></g></svg>\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./image/svg/sort.svg\n// module id = 356\n// module chunks = 88 89","module.exports = \"<svg focusable=\\\"false\\\" enable-background=\\\"new 0 0 15 12\\\" viewBox=\\\"0 0 15 12\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" role=\\\"img\\\" aria-label=\\\"Ascending\\\"><title>Ascending</title><g fill=\\\"currentColor\\\"><path class=\\\"coveo-active-shape-svg\\\" d=\\\"m10.936 2.021 0 0c0 .549-.452.998-1.004.998h-1.004c-.552 0-1.004-.449-1.004-.998l0 0c0-.549.452-.998 1.004-.998h1.004c.552 0 1.004.449 1.004.998z\\\"></path><path class=\\\"coveo-active-shape-svg\\\" d=\\\"m12.943 5.015 0 0c0 .549-.452.998-1.004.998h-3.011c-.552 0-1.004-.449-1.004-.998l0 0c0-.549.452-.998 1.004-.998h3.011c.553 0 1.004.449 1.004.998z\\\"></path><path class=\\\"coveo-active-shape-svg\\\" d=\\\"m15 8.008 0 0c0 .549-.452.998-1.004.998h-5.068c-.552 0-1.004-.449-1.004-.998l0 0c0-.549.452-.998 1.004-.998h5.068c.552 0 1.004.449 1.004.998z\\\"></path><path d=\\\"m6.521 2.683-2.403-2.391c-.188-.187-.444-.292-.71-.292s-.521.105-.71.292l-2.404 2.391c-.392.39-.392 1.021 0 1.411s1.027.39 1.419 0l .691-.687v7.594c0 .55.452.999 1.004.999s1.004-.449 1.004-.998v-7.594l.691.687c.392.39 1.027.39 1.419 0s .392-1.021-.001-1.412z\\\"></path></g></svg>\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./image/svg/ascending.svg\n// module id = 357\n// module chunks = 88 89","module.exports = \"<svg focusable=\\\"false\\\" enable-background=\\\"new 0 0 15 12\\\" viewBox=\\\"0 0 15 12\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" role=\\\"img\\\" aria-label=\\\"Descending\\\"><title>Descending</title><g fill=\\\"currentColor\\\"><path d=\\\"m6.521 7.906c-.392-.39-1.027-.39-1.419 0l-.69.686v-7.594c0-.549-.452-.998-1.004-.998s-1.004.449-1.004.998v7.594l-.69-.686c-.392-.39-1.027-.39-1.419 0-.392.39-.392 1.021 0 1.411l2.404 2.391c.188.187.443.292.709.292s.522-.105.71-.292l2.404-2.391c.392-.391.392-1.022-.001-1.411z\\\"></path><path class=\\\"coveo-active-shape-svg\\\" d=\\\"m9.932 11.001h-1.004c-.552 0-1.004-.449-1.004-.998l0 0c0-.549.452-.998 1.004-.998h1.004c.552 0 1.004.449 1.004.998l0 0c0 .549-.452.998-1.004.998z\\\"></path><path class=\\\"coveo-active-shape-svg\\\" d=\\\"m11.94 8.007h-3.012c-.552 0-1.004-.449-1.004-.998l0 0c0-.549.452-.998 1.004-.998h3.011c.552 0 1.004.449 1.004.998l0 0c0 .549-.451.998-1.003.998z\\\"></path><path class=\\\"coveo-active-shape-svg\\\" d=\\\"m13.996 5.014h-5.068c-.552 0-1.004-.449-1.004-.998l0 0c0-.549.452-.998 1.004-.998h5.068c.552 0 1.004.449 1.004.998l0 0c0 .548-.452.998-1.004.998z\\\"></path></g></svg>\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./image/svg/descending.svg\n// module id = 358\n// module chunks = 88 89","module.exports = \"<svg focusable=\\\"false\\\" enable-background=\\\"new 0 0 16 16\\\" viewBox=\\\"0 0 16 16\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" role=\\\"img\\\" aria-label=\\\"Dropdown More\\\"><title>Dropdown More</title><g fill=\\\"currentColor\\\"><path class=\\\"coveo-active-shape-svg\\\" d=\\\"m14 2v12h-12v-12zm1.306-2h-14.607c-.386 0-.699.318-.699.694v14.607c0 .384.315.699.699.699h14.602c.385 0 .699-.316.699-.694v-14.612c0-.383-.311-.694-.694-.694z\\\"></path><path d=\\\"m10.969 7.055h-1.97v-1.968c0-.571-.448-1.032-1-1.032s-1 .462-1 1.032v1.969h-1.969c-.57 0-1.032.448-1.032 1s .463 1 1.032 1h1.97v1.969c0 .57.448 1.032 1 1.032s1-.463 1-1.032v-1.97h1.969c.571 0 1.032-.448 1.032-1 .001-.552-.462-1-1.032-1z\\\"></path></g></svg>\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./image/svg/dropdown-more.svg\n// module id = 359\n// module chunks = 88 89","module.exports = \"<svg focusable=\\\"false\\\" enable-background=\\\"new 0 0 16 16\\\" viewBox=\\\"0 0 16 16\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" role=\\\"img\\\" aria-label=\\\"Dropdown Less\\\"><title>Dropdown Less</title><g fill=\\\"currentColor\\\"><path class=\\\"coveo-active-shape-svg\\\" d=\\\"m14 2v12h-11.999v-12zm1.306-2h-14.607c-.386 0-.699.318-.699.694v14.607c0 .384.315.699.699.699h14.602c.385 0 .699-.316.699-.694v-14.612c0-.383-.311-.694-.694-.694z\\\"></path><path d=\\\"m10.969 9.055h-5.939c-.569 0-1.032-.448-1.032-1s .462-1 1.032-1h5.938c.57 0 1.032.448 1.032 1 .001.552-.46 1-1.031 1\\\"></path></g></svg>\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./image/svg/dropdown-less.svg\n// module id = 360\n// module chunks = 88 89","module.exports = \"<svg focusable=\\\"false\\\" enable-background=\\\"new 0 0 16 16\\\" viewBox=\\\"0 0 16 16\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" role=\\\"img\\\" aria-label=\\\"Collapse\\\"><title>Collapse</title><g fill=\\\"currentColor\\\"><path class=\\\"coveo-active-shape-svg\\\" d=\\\"m8.01 0c-4.425 0-8.01 3.581-8.01 7.992 0 4.425 3.581 8.01 7.999 8.01l.003-.003c4.417 0 7.999-3.581 7.999-7.999 0-4.417-3.581-7.999-7.992-7.999m.002 1.5c3.58 0 6.493 2.916 6.493 6.5s-2.916 6.5-6.5 6.5h-.172c-3.506-.09-6.331-2.975-6.331-6.508 0-3.58 2.92-6.493 6.51-6.492\\\"></path><path d=\\\"m11.04 10.27c-.192 0-.384-.073-.53-.22l-2.51-2.51-2.51 2.51c-.293.293-.768.293-1.061 0s-.293-.768 0-1.061l3.041-3.04c.141-.14.332-.219.53-.219l0 0c .199 0 .39.079.53.22l3.04 3.041c.293.293.293.768 0 1.061-.146.145-.337.218-.53.218z\\\"></path></g></svg>\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./image/svg/facet-collapse.svg\n// module id = 361\n// module chunks = 88 89","module.exports = \"<svg focusable=\\\"false\\\" enable-background=\\\"new 0 0 16 16\\\" viewBox=\\\"0 0 16 16\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" role=\\\"img\\\" aria-label=\\\"Expand\\\"><title>Expand</title><g fill=\\\"currentColor\\\"><path class=\\\"coveo-active-shape-svg\\\" d=\\\"m7.991 16.002c4.425 0 8.01-3.581 8.01-7.992 0-4.425-3.581-8.01-7.999-8.01l-.003.003c-4.417 0-7.999 3.581-7.999 7.999 0 4.417 3.581 7.999 7.992 7.999m-.002-1.5c-3.58 0-6.493-2.916-6.493-6.5s2.916-6.5 6.5-6.5h.172c3.506.09 6.331 2.975 6.331 6.508 0 3.58-2.92 6.493-6.51 6.493\\\"></path><path d=\\\"m4.961 5.732c.192 0 .384.073.53.22l2.51 2.51 2.51-2.51c.293-.293.768-.293 1.061 0s .293.768 0 1.061l-3.041 3.04c-.141.14-.332.219-.53.219l0 0c-.199 0-.39-.079-.53-.22l-3.04-3.041c-.293-.293-.293-.768 0-1.061.146-.145.337-.218.53-.218z\\\"></path></g></svg>\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./image/svg/facet-expand.svg\n// module id = 362\n// module chunks = 88 89","module.exports = \"<svg focusable=\\\"false\\\" viewBox=\\\"0 0 18 14\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" role=\\\"img\\\" aria-label=\\\"Dropdown Share Query\\\"><title>Dropdown Share Query</title><g fill=\\\"currentColor\\\" fill-rule=\\\"evenodd\\\"><path class=\\\"coveo-active-shape-svg\\\" d=\\\"m12.1 13.5c-.426 0-.771-.332-.771-.74 0-.409.346-.74.771-.74h1.862c1.374 0 2.49-1.136 2.49-2.534v-.193c0-1.144-.756-2.15-1.839-2.448l-.488-.134-.066-.484c-.132-.979-1.11-1.673-2.041-1.458l-.635.143-.253-.578c-.626-1.429-2.024-2.352-3.562-2.352-2.147 0-3.892 1.769-3.892 3.944 0 .082.002.164.007.246l.032.541-.529.192c-.986.359-1.65 1.319-1.65 2.388v.192c0 1.398 1.117 2.535 2.49 2.535h.782c.426 0 .771.332.771.74 0 .409-.346.74-.771.74h-.782c-2.224 0-4.03-1.802-4.03-4.02v-.192c0-1.496.842-2.861 2.143-3.549.097-2.908 2.496-5.243 5.432-5.243 1.968 0 3.767 1.061 4.726 2.747 1.501-.024 2.798.945 3.198 2.327 1.495.61 2.501 2.077 2.501 3.717v.193c0 2.215-1.808 4.02-4.03 4.02h-1.863\\\"></path><path d=\\\"m9 5.234c-.098-.149-.3-.233-.511-.234-.212 0-.413.084-.561.232l-3.193 3.176c-.311.309-.312.812-.003 1.123.155.156.359.233.563.233.202 0 .406-.076.56-.231l1.822-1.813v5.485c0 .438.356.794.794.794.438 0 .794-.356.794-.794v-5.504l1.82 1.83c.309.311.812.312 1.122.002.31-.309.312-.812.002-1.123l-3.21-3.176\\\"></path></g></svg>\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./image/svg/dropdown-share-query.svg\n// module id = 363\n// module chunks = 88 89","module.exports = \"<svg focusable=\\\"false\\\" enable-background=\\\"new 0 0 22 22\\\" viewBox=\\\"0 0 22 22\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" role=\\\"img\\\" aria-label=\\\"Dropdown Preferences\\\"><title>Dropdown Preferences</title><g fill=\\\"currentColor\\\"><path class=\\\"coveo-active-shape-svg\\\" d=\\\"m12.989 21.947h-3.978c-.752 0-1.388-.557-1.48-1.295l-.298-2.075c-.309-.154-.611-.33-.905-.526l-1.968.79c-.722.268-1.508-.028-1.858-.668l-1.977-3.419c-.366-.671-.207-1.47.365-1.922l1.669-1.306c-.013-.186-.019-.359-.019-.526s.006-.34.02-.526l-1.665-1.303c-.586-.462-.742-1.292-.365-1.932l1.985-3.434c.343-.633 1.136-.923 1.836-.65l1.98.796c.3-.2.6-.375.901-.527l.301-2.096c.089-.719.726-1.275 1.478-1.275h3.979c.753 0 1.39.557 1.479 1.296l.298 2.074c.31.154.611.33.905.526l1.968-.791c.721-.263 1.508.028 1.857.667l1.979 3.421c.365.671.207 1.47-.365 1.922l-1.669 1.305c.012.166.02.342.02.527s-.008.361-.02.526l1.665 1.302c.576.457.734 1.256.381 1.903l-2 3.463c-.35.636-1.146.922-1.84.649l-1.978-.794c-.301.199-.6.374-.902.526l-.3 2.095c-.088.72-.725 1.277-1.478 1.277m-3.539-2h3.1l.396-2.762.529-.217c.485-.2.964-.478 1.461-.851l.45-.337 2.585 1.038 1.554-2.688-2.198-1.718.071-.563c.035-.277.062-.555.062-.85s-.027-.572-.062-.85l-.071-.563 2.198-1.718-1.555-2.688-2.592 1.042-.452-.348c-.466-.358-.94-.633-1.451-.843l-.529-.217-.396-2.761h-3.1l-.396 2.762-.53.217c-.485.199-.962.477-1.46.85l-.451.337-2.584-1.038-1.554 2.688 2.196 1.718-.07.562c-.034.277-.061.564-.061.851s.027.573.062.852l.07.562-2.196 1.718 1.554 2.688 2.591-1.041.452.348c.465.356.939.632 1.452.843l.529.217z\\\"></path><path d=\\\"m11 15c-2.206 0-4-1.794-4-4s1.794-4 4-4 4 1.794 4 4-1.794 4-4 4m0-6c-1.103 0-2 .897-2 2s .897 2 2 2 2-.897 2-2-.897-2-2-2\\\"></path></g></svg>\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./image/svg/dropdown-preferences.svg\n// module id = 364\n// module chunks = 88 89","module.exports = \"<svg focusable=\\\"false\\\" enable-background=\\\"new 0 0 12 16\\\" viewBox=\\\"0 0 12 16\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" role=\\\"img\\\" aria-label=\\\"Dropdown Authenticate\\\"><title>Dropdown Authenticate</title><g class=\\\"coveo-dropdown-authenticate-svg\\\" fill=\\\"none\\\"><path d=\\\"m10 5h-8c-1.1 0-2 .9-2 2v5c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2v-5c0-1.1-.9-2-2-2m0 1.5c.3 0 .5.2.5.5v5c0 .3-.2.5-.5.5h-8c-.3 0-.5-.2-.5-.5v-5c0-.3.2-.5.5-.5z\\\"></path><path d=\\\"m10 5h-1.6v-1.1c0-1.3-1.1-2.4-2.4-2.4s-2.4 1.1-2.4 2.4v1.1h-1.6v-1.1c0-2.1 1.8-3.9 4-3.9s4 1.8 4 3.9z\\\"></path></g><g class=\\\"coveo-dropdown-authenticate-hover-svg\\\" fill=\\\"none\\\"><path class=\\\"coveo-active-shape-svg\\\" d=\\\"m10 7h-8c-1.1 0-2 .9-2 2v5c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2v-5c0-1.1-.9-2-2-2m0 1.5c.3 0 .5.2.5.5v5c0 .3-.2.5-.5.5h-8c-.3 0-.5-.2-.5-.5v-5c0-.3.2-.5.5-.5z\\\"></path><path d=\\\"m5.1.1c-1.8.4-3.1 2.1-3.1 4v2.9h1.6v-3.1c0-1.7 1.8-3 3.6-2.1.8.4 1.2 1.3 1.2 2.2v.6c0 .4.4.8.8.8s.8-.4.8-.8v-.7c0-2.4-2.3-4.4-4.9-3.8z\\\"></path></g></svg>\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./image/svg/dropdown-authenticate.svg\n// module id = 365\n// module chunks = 88 89","module.exports = \"<svg focusable=\\\"false\\\" enable-background=\\\"new 0 0 14 14\\\" viewBox=\\\"0 0 14 14\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" role=\\\"img\\\" aria-label=\\\"Dropdown Export\\\"><title>Dropdown Export</title><g fill=\\\"currentColor\\\" transform=\\\"matrix(0 1 -1 0 20 0)\\\"><path d=\\\"m7.699 8.591 1.05 1.05c.49.49 1.05 0 1.05 0s .49-.56 0-1.05l-2.31-2.381c-.28-.28-.7-.28-.98 0l-2.309 2.451c-.49.49 0 .98 0 .98s.56.49 1.05 0l1.05-1.05v7.91c0 .42.35.7.7.7s.7-.35.7-.7z\\\"></path><path class=\\\"coveo-active-shape-svg\\\" d=\\\"m10.5 12.301h2.033l.065 6.301h-11.198v-6.301h2.1c.386 0 .7-.314.7-.7l0 0c0-.386-.314-.7-.7-.7h-2.806c-.383-.001-.694.31-.694.694v7.706c0 .385.318.699.694.699h12.607c.384 0 .699-.315.699-.699v-7.7c0-.386-.316-.699-.694-.699h-2.806c-.386 0-.7.314-.7.7l0 0c0 .385.314.699.7.699z\\\"></path></g></svg>\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./image/svg/dropdown-export.svg\n// module id = 366\n// module chunks = 88 89","module.exports = \"<svg focusable=\\\"false\\\" enable-background=\\\"new 0 0 15 12\\\" viewBox=\\\"0 0 15 12\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" role=\\\"img\\\" aria-label=\\\"Dropdown Follow Query\\\"><title>Dropdown Follow Query</title><g fill=\\\"currentColor\\\"><path d=\\\"m9.224 11.999c-.198 0-.496-.103-.694-.308-.397-.411-.397-1.025 0-1.436l3.965-4.409-3.966-4.102c-.397-.411-.397-1.025 0-1.436s.991-.411 1.388 0l4.859 4.922c.298.308.298.718 0 1.025l-4.859 5.435c-.198.206-.496.309-.693.309\\\"></path><path class=\\\"coveo-active-shape-svg\\\" d=\\\"m4.958.411c-.397-.411-.991-.411-1.388 0s-.397 1.025 0 1.436l2.973 2.974h-5.552c-.594 0-.991.41-.991 1.025s.397 1.025.991 1.025h5.651l-3.074 3.384c-.397.411-.397 1.025 0 1.436.199.206.398.309.695.309.298 0 .495-.103.694-.308l4.859-5.333c.298-.308.298-.718 0-1.025z\\\"></path></g></svg>\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./image/svg/dropdown-follow-query.svg\n// module id = 367\n// module chunks = 88 89","module.exports = \"<svg focusable=\\\"false\\\" enable-background=\\\"new 0 0 20 12\\\" viewBox=\\\"0 0 20 12\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" role=\\\"img\\\" aria-label=\\\"Quickview\\\"><title>Quickview</title><g fill=\\\"currentColor\\\"><path d=\\\"m10 4.3c-1 0-1.7.8-1.7 1.7 0 1 .8 1.7 1.7 1.7 1 0 1.7-.8 1.7-1.7 0-1-.7-1.7-1.7-1.7m0 4.7c-1.6 0-3-1.4-3-3s1.4-3 3-3 3 1.4 3 3-1.4 3-3 3\\\"></path><path d=\\\"m19.8 6.4v-.001c.069-.117.109-.253.109-.399s-.04-.282-.109-.399v-.001c-.005-.008.005.007 0 0-2.203-3.473-5.917-5.6-9.8-5.6-3.884 0-7.655 2.091-9.8 5.602l0 0c-.069.117-.109.253-.109.398s.04.281.109.398c0 0-.001-.002 0 0 2.203 3.475 5.916 5.602 9.8 5.602 3.883 0 7.597-2.127 9.8-5.6.005-.007-.005.008 0 0zm-9.8 4.1c-3.236 0-6.28-1.635-8.189-4.339-.067-.095-.067-.228-.002-.324 1.908-2.797 4.953-4.337 8.191-4.337 3.235 0 6.278 1.634 8.187 4.337.068.096.068.231 0 .327-1.909 2.702-4.952 4.336-8.187 4.336z\\\"></path></g></svg>\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./image/svg/quickview.svg\n// module id = 368\n// module chunks = 88 89","module.exports = \"<svg focusable=\\\"false\\\" enable-background=\\\"new 0 0 11 20\\\" viewBox=\\\"0 0 11 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" role=\\\"img\\\" aria-label=\\\"Right Arrow\\\"><title>Right Arrow</title><g fill=\\\"currentColor\\\"><path d=\\\"m .308 18.189c-.412.413-.411 1.086 0 1.5.2.201.465.311.746.311.282 0 .547-.11.747-.31l8.891-8.939c.199-.2.307-.466.307-.75 0-.286-.109-.551-.305-.748l-8.893-8.942c-.199-.2-.465-.311-.747-.311-.001 0-.001 0-.001 0-.281 0-.546.11-.745.309-.198.201-.308.468-.308.753 0 .284.11.548.306.745l8.145 8.193z\\\"></path></g></svg>\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./image/svg/pager-right-arrow.svg\n// module id = 369\n// module chunks = 88 89","module.exports = \"<svg focusable=\\\"false\\\" enable-background=\\\"new 0 0 11 20\\\" viewBox=\\\"0 0 11 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" role=\\\"img\\\" aria-label=\\\"Left Arrow\\\"><title>Left Arrow</title><g fill=\\\"currentColor\\\"><path d=\\\"m10.692 1.811c.412-.413.411-1.086 0-1.5-.2-.201-.465-.311-.746-.311-.283 0-.548.11-.747.31l-8.892 8.939c-.198.2-.307.466-.307.75 0 .286.109.551.305.748l8.893 8.941c.2.201.466.312.748.312h.001c.281 0 .546-.11.745-.309.199-.201.308-.468.308-.753 0-.284-.109-.548-.306-.745l-8.146-8.194z\\\"></path></g></svg>\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./image/svg/pager-left-arrow.svg\n// module id = 370\n// module chunks = 88 89","module.exports = \"<svg focusable=\\\"false\\\" viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" role=\\\"img\\\" aria-label=\\\"Replies\\\"><title>Replies</title><g fill=\\\"currentColor\\\" fill-rule=\\\"evenodd\\\" transform=\\\"translate(1)\\\"><path d=\\\"m4 5h7v1h-7v-1m0 3h7v1h-7v-1m0 3h7v1h-7v-1\\\"></path><path d=\\\"m15 1c.009-.525.066-1-1-1h-12.998c-.651 0-1 .33-1 1v15c0 .66.351 1 1 1h1.998v2c.075.546.383 1 1 1h13c.718 0 1-.295 1-1v-16c.001-.468-.406-.99-1-1h-2v-1m-13 14v-13h11v13h-11m14 3h-11v-.995l9-.005c.5.005.976-.428 1-1l.021-12h.979v14\\\"></path></g></svg>\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./image/svg/replies.svg\n// module id = 371\n// module chunks = 88 89","module.exports = \"<svg focusable=\\\"false\\\" enable-background=\\\"new 0 0 60 60\\\" viewBox=\\\"0 0 60 60\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" role=\\\"img\\\" aria-label=\\\"Video\\\"><title>Video</title><path clip-rule=\\\"evenodd\\\" d=\\\"m3.753 60c-2.073 0-3.753-1.667-3.753-3.753v-52.494c0-2.073 1.667-3.753 3.753-3.753h52.494c2.073 0 3.753 1.667 3.753 3.753v52.493c0 2.074-1.667 3.754-3.753 3.754z\\\" fill=\\\"#cc0d00\\\" fill-rule=\\\"evenodd\\\"></path><path d=\\\"m42.8 21.536h-8.96c-.267-.64-.64-1.173-1.12-1.653l3.36-4.32c.533-.693.427-1.707-.267-2.24-.693-.533-1.707-.427-2.24.267l-3.733 4.8c-.32 0-.587-.053-.907-.053s-.587.053-.853.053l-3.733-4.8c-.533-.693-1.547-.8-2.24-.267s-.8 1.547-.267 2.24l3.36 4.32c-.48.48-.853 1.013-1.12 1.653h-6.88c-1.76 0-3.2 1.44-3.2 3.2v14.933c0 1.76 1.44 3.2 3.2 3.2h25.6c1.76 0 3.2-1.44 3.2-3.2v-14.933c0-1.76-1.44-3.2-3.2-3.2zm-4.267 17.067c0 .587-.48 1.067-1.067 1.067h-19.2c-.587 0-1.067-.48-1.067-1.067v-12.8c0-.587.48-1.067 1.067-1.067h19.2c.587 0 1.067.48 1.067 1.067zm3.734-5.334c-.907 0-1.6-.693-1.6-1.6s.693-1.6 1.6-1.6 1.6.693 1.6 1.6-.694 1.6-1.6 1.6zm0-5.333c-.907 0-1.6-.693-1.6-1.6s.693-1.6 1.6-1.6 1.6.693 1.6 1.6-.694 1.6-1.6 1.6z\\\" fill=\\\"#fff\\\"></path></svg>\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./image/svg/video.svg\n// module id = 372\n// module chunks = 88 89","module.exports = \"<svg version=\\\"1.1\\\" id=\\\"prefix__Layer_1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" x=\\\"0\\\" y=\\\"0\\\" viewBox=\\\"0 0 409.4 103.6\\\" xml:space=\\\"preserve\\\" aria-label=\\\"Coveo Logo\\\"><style>.prefix__st0{fill:#333357}</style><path class=\\\"prefix__st0\\\" d=\\\"M164.6 36.2l-4.9 5.2c-3.3-3.3-7-5.2-11.9-5.2-8.5 0-14.9 6.7-14.9 16.1s6.4 16.1 14.9 16.1c4.9 0 9.1-2.1 12.2-5.2l4.6 5.2c-4 4.6-9.7 7-16.4 7-14 0-23.1-10-23.1-23.1 0-13.4 9.1-23.4 23.1-23.4 6.6 0 12.4 2.7 16.4 7.3zM219.3 52.3c0 13.1-10 23.1-23.4 23.1-13.7 0-23.7-10-23.7-23.1 0-13.4 10-23.4 23.7-23.4 13.3 0 23.4 10 23.4 23.4zm-39.2 0c0 9.4 6.7 16.1 15.8 16.1 8.8 0 15.5-6.7 15.5-16.1s-6.7-16.1-15.5-16.1c-9.2 0-15.8 6.7-15.8 16.1zM252.1 74.5H243l-18.9-44.4h8.5l14.9 36.8 14.9-36.8h8.2l-18.5 44.4zM318.6 52v3h-35c.9 9.1 7.3 13.7 14.9 13.7 5.5 0 10-1.8 14-5.2l4 5.2c-5.5 5.2-11.5 6.7-18.2 6.7-13.4 0-22.8-9.1-22.8-23.1 0-13.7 9.4-23.4 22.2-23.4 12.1 0 20.9 9.7 20.9 23.1zm-34.9-3.4h27.4c-.9-7.6-6.1-12.8-13.4-12.8-7.9.1-12.8 5.2-14 12.8zM375.8 52.3c0 13.1-10 23.1-23.4 23.1-13.7 0-23.7-10-23.7-23.1 0-13.4 10-23.4 23.7-23.4 13.4 0 23.4 10 23.4 23.4zm-39.2 0c0 9.4 6.7 16.1 15.8 16.1 8.8 0 15.5-6.7 15.5-16.1s-6.7-16.1-15.5-16.1c-9.1 0-15.8 6.7-15.8 16.1z\\\"></path><g><path class=\\\"prefix__st0\\\" d=\\\"M394 30.2h-9v1.7h3.6V43h1.9V31.9h3.5v-1.7M409.4 30.2h-2l-3.7 8-3.7-8h-2V43h2v-8.6l3 6.3h1.5l2.9-6.3V43h2V30.2\\\"></path></g><g><path d=\\\"M88.1 15C79.2 6.1 67.9 1.1 56.2 0 54.8-.1 54 1.6 55 2.6l18.7 18.7c.1.1 0 .3-.2.2-5.3-3.9-11.5-6.1-17.8-6.7-1-.1-1.5 1.1-.8 1.8l12.7 12.7c.1.1 0 .3-.2.2-3.5-2.4-7.5-3.8-11.6-4.2-.7-.1-1.1.8-.6 1.2l21.6 21.6c.5.5 1.3.1 1.2-.6-.4-4.1-1.8-8-4.2-11.5-.1-.1.1-.3.2-.2L86.2 48c.7.7 1.9.1 1.8-.8-.6-6.3-2.8-12.4-6.7-17.8-.1-.1.1-.3.2-.2L100.4 48c1 1 2.7.2 2.6-1.2-1-11.6-6-22.9-14.9-31.8\\\" fill=\\\"#00adff\\\"></path><path d=\\\"M15 15C23.9 6.1 35.2 1.1 46.8 0 48.2-.1 49 1.6 48 2.6L29.4 21.3c-.1.1 0 .3.2.2 5.3-3.9 11.5-6.1 17.8-6.7 1-.1 1.5 1.1.8 1.8L35.4 29.3c-.1.1 0 .3.2.2 3.5-2.4 7.5-3.8 11.6-4.2.7-.1 1.1.8.6 1.2L26.1 48.2c-.5.5-1.3.1-1.2-.6.4-4.1 1.8-8 4.2-11.5.1-.1-.1-.3-.2-.2L16.6 48.1c-.7.7-1.9.1-1.8-.8.6-6.3 2.8-12.4 6.7-17.8.1-.1-.1-.3-.2-.2L2.6 48c-1 1-2.7.2-2.6-1.2C1.1 35.2 6.1 23.9 15 15\\\" fill=\\\"#f05245\\\"></path><path d=\\\"M15 88.7c8.9 8.9 20.2 13.9 31.9 15 1.4.1 2.2-1.6 1.2-2.6L29.4 82.4c-.1-.1 0-.3.2-.2 5.3 3.9 11.5 6.1 17.8 6.7 1 .1 1.5-1.1.8-1.8L35.4 74.3c-.1-.1 0-.3.2-.2 3.5 2.4 7.5 3.8 11.6 4.2.7.1 1.1-.8.6-1.2L26.1 55.4c-.5-.5-1.3-.1-1.2.6.4 4.1 1.8 8 4.2 11.5.1.1-.1.3-.2.2L16.6 55.5c-.7-.7-1.9-.1-1.8.8.6 6.3 2.8 12.4 6.7 17.8.1.1-.1.3-.2.2L2.6 55.6c-1-1-2.7-.2-2.6 1.2 1.1 11.7 6.1 23 15 31.9\\\" fill=\\\"#1cebcf\\\"></path><path d=\\\"M88.1 88.7c-8.9 8.9-20.2 13.9-31.9 15-1.4.1-2.2-1.6-1.2-2.6l18.7-18.7c.1-.1 0-.3-.2-.2-5.3 3.8-11.5 6.1-17.8 6.6-1 .1-1.5-1.1-.8-1.8l12.7-12.7c.1-.1 0-.3-.2-.2-3.5 2.4-7.5 3.8-11.6 4.2-.7.1-1.1-.8-.6-1.2l21.6-21.6c.5-.5 1.3-.1 1.2.6-.4 4.1-1.8 8-4.2 11.5-.1.1.1.3.2.2l12.2-12.2c.7-.7 1.9-.1 1.8.8-.6 6.3-2.8 12.4-6.7 17.8-.1.1.1.3.2.2l18.7-18.7c1-1 2.7-.2 2.6 1.2-.8 11.6-5.8 22.9-14.7 31.8\\\" fill=\\\"#ffe300\\\"></path></g></svg>\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./image/svg/coveo-logo.svg\n// module id = 373\n// module chunks = 88 89","module.exports = \"<svg version=\\\"1.1\\\" id=\\\"prefix__Layer_1\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" x=\\\"0\\\" y=\\\"0\\\" viewBox=\\\"0 0 409.4 103.6\\\" xml:space=\\\"preserve\\\" aria-label=\\\"Powered By Coveo Logo\\\"><style>.prefix__st0{fill:#282829}</style><path class=\\\"prefix__st0\\\" d=\\\"M164.6 36.2l-4.9 5.2c-3.3-3.3-7-5.2-11.9-5.2-8.5 0-14.9 6.7-14.9 16.1s6.4 16.1 14.9 16.1c4.9 0 9.1-2.1 12.2-5.2l4.6 5.2c-4 4.6-9.7 7-16.4 7-14 0-23.1-10-23.1-23.1 0-13.4 9.1-23.4 23.1-23.4 6.6 0 12.4 2.7 16.4 7.3zM219.3 52.3c0 13.1-10 23.1-23.4 23.1-13.7 0-23.7-10-23.7-23.1 0-13.4 10-23.4 23.7-23.4 13.3 0 23.4 10 23.4 23.4zm-39.2 0c0 9.4 6.7 16.1 15.8 16.1 8.8 0 15.5-6.7 15.5-16.1s-6.7-16.1-15.5-16.1c-9.2 0-15.8 6.7-15.8 16.1zM252.1 74.5H243l-18.9-44.4h8.5l14.9 36.8 14.9-36.8h8.2zM318.6 52v3h-35c.9 9.1 7.3 13.7 14.9 13.7 5.5 0 10-1.8 14-5.2l4 5.2c-5.5 5.2-11.5 6.7-18.2 6.7-13.4 0-22.8-9.1-22.8-23.1 0-13.7 9.4-23.4 22.2-23.4 12.1 0 20.9 9.7 20.9 23.1zm-34.9-3.4h27.4c-.9-7.6-6.1-12.8-13.4-12.8-7.9.1-12.8 5.2-14 12.8zM375.8 52.3c0 13.1-10 23.1-23.4 23.1-13.7 0-23.7-10-23.7-23.1 0-13.4 10-23.4 23.7-23.4 13.4 0 23.4 10 23.4 23.4zm-39.2 0c0 9.4 6.7 16.1 15.8 16.1 8.8 0 15.5-6.7 15.5-16.1s-6.7-16.1-15.5-16.1c-9.1 0-15.8 6.7-15.8 16.1z\\\"></path><g><path class=\\\"prefix__st0\\\" d=\\\"M394 30.2h-9v1.7h3.6V43h1.9V31.9h3.5v-1.7M409.4 30.2h-2l-3.7 8-3.7-8h-2V43h2v-8.6l3 6.3h1.5l2.9-6.3V43h2V30.2\\\"></path></g><g><path class=\\\"prefix__st0\\\" d=\\\"M88.1 15C79.2 6.1 67.9 1.1 56.2 0 54.8-.1 54 1.6 55 2.6l18.7 18.7c.1.1 0 .3-.2.2-5.3-3.9-11.5-6.1-17.8-6.7-1-.1-1.5 1.1-.8 1.8l12.7 12.7c.1.1 0 .3-.2.2-3.5-2.4-7.5-3.8-11.6-4.2-.7-.1-1.1.8-.6 1.2l21.6 21.6c.5.5 1.3.1 1.2-.6-.4-4.1-1.8-8-4.2-11.5-.1-.1.1-.3.2-.2L86.2 48c.7.7 1.9.1 1.8-.8-.6-6.3-2.8-12.4-6.7-17.8-.1-.1.1-.3.2-.2L100.4 48c1 1 2.7.2 2.6-1.2-1-11.6-6-22.9-14.9-31.8M15 15C23.9 6.1 35.2 1.1 46.8 0 48.2-.1 49 1.6 48 2.6L29.4 21.3c-.1.1 0 .3.2.2 5.3-3.9 11.5-6.1 17.8-6.7 1-.1 1.5 1.1.8 1.8L35.4 29.3c-.1.1 0 .3.2.2 3.5-2.4 7.5-3.8 11.6-4.2.7-.1 1.1.8.6 1.2L26.1 48.2c-.5.5-1.3.1-1.2-.6.4-4.1 1.8-8 4.2-11.5.1-.1-.1-.3-.2-.2L16.6 48.1c-.7.7-1.9.1-1.8-.8.6-6.3 2.8-12.4 6.7-17.8.1-.1-.1-.3-.2-.2L2.6 48c-1 1-2.7.2-2.6-1.2C1.1 35.2 6.1 23.9 15 15M15 88.7c8.9 8.9 20.2 13.9 31.9 15 1.4.1 2.2-1.6 1.2-2.6L29.4 82.4c-.1-.1 0-.3.2-.2 5.3 3.9 11.5 6.1 17.8 6.7 1 .1 1.5-1.1.8-1.8L35.4 74.3c-.1-.1 0-.3.2-.2 3.5 2.4 7.5 3.8 11.6 4.2.7.1 1.1-.8.6-1.2L26.1 55.4c-.5-.5-1.3-.1-1.2.6.4 4.1 1.8 8 4.2 11.5.1.1-.1.3-.2.2L16.6 55.5c-.7-.7-1.9-.1-1.8.8.6 6.3 2.8 12.4 6.7 17.8.1.1-.1.3-.2.2L2.6 55.6c-1-1-2.7-.2-2.6 1.2 1.1 11.7 6.1 23 15 31.9M88.1 88.7c-8.9 8.9-20.2 13.9-31.9 15-1.4.1-2.2-1.6-1.2-2.6l18.7-18.7c.1-.1 0-.3-.2-.2-5.3 3.8-11.5 6.1-17.8 6.6-1 .1-1.5-1.1-.8-1.8l12.7-12.7c.1-.1 0-.3-.2-.2-3.5 2.4-7.5 3.8-11.6 4.2-.7.1-1.1-.8-.6-1.2l21.6-21.6c.5-.5 1.3-.1 1.2.6-.4 4.1-1.8 8-4.2 11.5-.1.1.1.3.2.2l12.2-12.2c.7-.7 1.9-.1 1.8.8-.6 6.3-2.8 12.4-6.7 17.8-.1.1.1.3.2.2l18.7-18.7c1-1 2.7-.2 2.6 1.2-.8 11.6-5.8 22.9-14.7 31.8\\\"></path></g></svg>\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./image/svg/coveo-powered-by-logo.svg\n// module id = 374\n// module chunks = 88 89","module.exports = \"<svg focusable=\\\"false\\\" enable-background=\\\"new 0 0 9 7\\\" viewBox=\\\"0 0 9 7\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" role=\\\"img\\\" aria-label=\\\"Tagging Ok\\\"><title>Tagging Ok</title><g fill=\\\"currentColor\\\"><path d=\\\"m8.755.446c-.154-.145-.35-.216-.567-.218-.212.005-.409.093-.555.246l-4.176 4.422-2.117-2.003c-.152-.147-.381-.22-.564-.22-.211.004-.41.092-.556.247-.147.151-.225.352-.22.563.005.213.092.41.246.557l2.627 2.487c.166.158.384.245.611.245h.022.003c.234-.007.452-.103.611-.272l4.66-4.931c.146-.153.225-.354.22-.566-.005-.213-.092-.41-.245-.557z\\\"></path></g></svg>\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./image/svg/tagging-ok.svg\n// module id = 375\n// module chunks = 88 89","module.exports = \"<svg focusable=\\\"false\\\" enable-background=\\\"new 0 0 20 20\\\" viewBox=\\\"0 0 20 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" role=\\\"img\\\" aria-label=\\\"Edit\\\"><title>Edit</title><g fill=\\\"currentColor\\\"><path d=\\\"m1 4c0-.552.448-1 1-1h7c .552 0 1 .448 1 1v0c0 .552-.448 1-1 1h-6v12h12v-6c0-.552.448-1 1-1h0c .552 0 1 .448 1 1v7c0 .552-.448 1-1 1h-14c-.552 0-1-.448-1-1z\\\"></path><path d=\\\"m17.8.8c-.2-.2-.5-.2-.7 0l-1.7 1.7 2 2 1.7-1.7c.2-.2.2-.5 0-.7z\\\"></path><path d=\\\"m14.5 3.5-6.9 6.9c-.1.1-.2.2-.2.3l-1.2 2.8c-.1.2.1.4.3.3l2.8-1.2c.1 0 .2-.1.3-.2l6.9-6.9z\\\"></path></g></svg>\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./image/svg/edit.svg\n// module id = 376\n// module chunks = 88 89","module.exports = \"<svg focusable=\\\"false\\\" enable-background=\\\"new 0 0 16 16\\\" viewBox=\\\"0 0 16 16\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" role=\\\"img\\\" aria-label=\\\"Star\\\"><title>Star</title><g fill=\\\"currentColor\\\"><path d=\\\"m8.683.852 1.558 4.794h5.041c.695 0 .985.889.421 1.298l-4.077 2.963 1.558 4.794c.215.661-.542 1.211-1.104.802l-4.08-2.962-4.077 2.963c-.562.409-1.32-.141-1.104-.802l1.558-4.794-4.079-2.963c-.563-.409-.274-1.298.421-1.298h5.041l1.558-4.794c.214-.662 1.15-.662 1.365-.001z\\\"></path></g></svg>\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./image/svg/star.svg\n// module id = 377\n// module chunks = 88 89","module.exports = \"<svg focusable=\\\"false\\\" enable-background=\\\"new 0 0 19 14\\\" viewBox=\\\"0 0 19 14\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" role=\\\"img\\\" aria-label=\\\"List Layout\\\"><title>List Layout</title><g fill=\\\"currentColor\\\"><path d=\\\"m19 12c0 .552-.397 1-.813 1h-11.375c-.416 0-.813-.448-.813-1s .397-1 .813-1h11.375c.416 0 .813.448.813 1\\\"></path><path d=\\\"m19 7c0 .552-.397 1-.813 1h-11.375c-.416 0-.813-.448-.813-1s .397-1 .813-1h11.375c.416 0 .813.448.813 1\\\"></path><path d=\\\"m19 2c0 .552-.397 1-.813 1h-11.375c-.416 0-.813-.448-.813-1s .397-1 .813-1h11.375c.416 0 .813.448.813 1\\\"></path><path d=\\\"m2 10c1.105 0 2 .895 2 2s-.895 2-2 2-2-.895-2-2 .895-2 2-2\\\"></path><path d=\\\"m2 5c1.105 0 2 .895 2 2s-.895 2-2 2-2-.895-2-2 .895-2 2-2\\\"></path><path d=\\\"m2 0c1.105 0 2 .895 2 2s-.895 2-2 2-2-.895-2-2 .895-2 2-2\\\"></path></g></svg>\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./image/svg/list-layout.svg\n// module id = 378\n// module chunks = 88 89","module.exports = \"<svg focusable=\\\"false\\\" viewBox=\\\"0 0 16 16\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" role=\\\"img\\\" aria-label=\\\"Card Layout\\\"><title>Card Layout</title><g fill=\\\"currentColor\\\" fill-rule=\\\"evenodd\\\"><rect x=\\\"12\\\" y=\\\"12\\\" width=\\\"4\\\" height=\\\"4\\\" rx=\\\"1\\\"></rect><rect x=\\\"6\\\" y=\\\"12\\\" width=\\\"4\\\" height=\\\"4\\\" rx=\\\"1\\\"></rect><rect y=\\\"12\\\" width=\\\"4\\\" height=\\\"4\\\" rx=\\\"1\\\"></rect><rect x=\\\"12\\\" y=\\\"6\\\" width=\\\"4\\\" height=\\\"4\\\" rx=\\\"1\\\"></rect><rect x=\\\"6\\\" y=\\\"6\\\" width=\\\"4\\\" height=\\\"4\\\" rx=\\\"1\\\"></rect><rect y=\\\"6\\\" width=\\\"4\\\" height=\\\"4\\\" rx=\\\"1\\\"></rect><rect x=\\\"12\\\" width=\\\"4\\\" height=\\\"4\\\" rx=\\\"1\\\"></rect><rect x=\\\"6\\\" width=\\\"4\\\" height=\\\"4\\\" rx=\\\"1\\\"></rect><rect width=\\\"4\\\" height=\\\"4\\\" rx=\\\"1\\\"></rect></g></svg>\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./image/svg/card-layout.svg\n// module id = 379\n// module chunks = 88 89","module.exports = \"<svg focusable=\\\"false\\\" viewBox=\\\"0 0 18 13\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" role=\\\"img\\\" aria-label=\\\"Table Layout\\\"><title>Table Layout</title><g fill=\\\"currentColor\\\" fill-rule=\\\"evenodd\\\"><rect x=\\\"11\\\" y=\\\"10\\\" width=\\\"7\\\" height=\\\"3\\\" rx=\\\"1\\\"></rect><rect x=\\\"11\\\" y=\\\"5\\\" width=\\\"7\\\" height=\\\"3\\\" rx=\\\"1\\\"></rect><rect x=\\\"11\\\" width=\\\"7\\\" height=\\\"3\\\" rx=\\\"1\\\"></rect><rect y=\\\"10\\\" width=\\\"9\\\" height=\\\"3\\\" rx=\\\"1\\\"></rect><rect y=\\\"5\\\" width=\\\"9\\\" height=\\\"3\\\" rx=\\\"1\\\"></rect><rect width=\\\"9\\\" height=\\\"3\\\" rx=\\\"1\\\"></rect></g></svg>\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./image/svg/table-layout.svg\n// module id = 380\n// module chunks = 88 89","module.exports = \"<svg viewBox=\\\"0 0 512 512\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\" role=\\\"img\\\" aria-label=\\\"Plus\\\"><title>Plus</title><path d=\\\"M496 208H304V16h-96v192H16v96h192v192h96V304h192\\\"></path></svg>\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./image/svg/plus.svg\n// module id = 381\n// module chunks = 88 89","import { find } from 'underscore';\nimport { Logger } from '../../misc/Logger';\nimport { Utils } from '../../utils/Utils';\nimport { ComponentOptionsType, IComponentLocalizedStringOptionArgs, IComponentOptionsOption } from './IComponentOptions';\n\nexport class ComponentOptionLoader {\n  private logger: Logger;\n\n  constructor(\n    public element: HTMLElement,\n    public values: Record<string, any>,\n    public optionName: string,\n    public optionDefinition: IComponentOptionsOption<any>\n  ) {\n    this.logger = new Logger(this);\n  }\n\n  public load() {\n    return this.findFirstValidValue(\n      this.loadFromAttribute.bind(this),\n      this.loadFromOptionsDictionnary.bind(this),\n      this.loadFromDefaultValue.bind(this),\n      this.loadFromDefaultFunction.bind(this)\n    );\n  }\n\n  private loadFromAttribute() {\n    return this.optionDefinition.load ? this.optionDefinition.load(this.element, this.optionName, this.optionDefinition) : null;\n  }\n\n  private loadFromOptionsDictionnary() {\n    return this.values[this.optionName];\n  }\n\n  private loadFromDefaultValue() {\n    if (this.optionDefinition.type == ComponentOptionsType.LOCALIZED_STRING) {\n      return this.loadDefaultLocalizedString();\n    }\n\n    if (Utils.isNullOrUndefined(this.optionDefinition.defaultValue)) {\n      return null;\n    }\n\n    switch (this.optionDefinition.type) {\n      case ComponentOptionsType.LIST:\n        return [...this.optionDefinition.defaultValue];\n      case ComponentOptionsType.OBJECT:\n        return { ...this.optionDefinition.defaultValue };\n      default:\n        return this.optionDefinition.defaultValue;\n    }\n  }\n\n  private loadDefaultLocalizedString() {\n    if (!Utils.isNullOrUndefined(this.optionDefinition.defaultValue)) {\n      return this.warnDeprecatedLocalizedStringAndReturnDefaultValue();\n    }\n\n    const isLocalizedOptionLoader = this.optionDefinition as IComponentLocalizedStringOptionArgs;\n    return isLocalizedOptionLoader.localizedString ? isLocalizedOptionLoader.localizedString() : null;\n  }\n\n  private loadFromDefaultFunction() {\n    return this.optionDefinition.defaultFunction ? this.optionDefinition.defaultFunction(this.element) : null;\n  }\n\n  private warnDeprecatedLocalizedStringAndReturnDefaultValue() {\n    this.logger.warn(\n      `defaultValue for option ${\n        this.optionName\n      } is deprecated. You should instead use localizedString. Not doing so could cause localization bug in your interface.`\n    );\n    return this.optionDefinition.defaultValue;\n  }\n\n  private findFirstValidValue(...chain: { (): any }[]): any {\n    let resolvedValue: any = null;\n    find(chain, fn => {\n      resolvedValue = fn();\n      return !Utils.isNullOrUndefined(resolvedValue);\n    });\n    return resolvedValue;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Base/ComponentOptionsLoader.ts","import { l } from '../../strings/Strings';\nimport { Utils } from '../../utils/Utils';\nimport { ComponentOptionsType, IComponentOptionsOption } from './IComponentOptions';\n\nexport interface IComponentOptionsToMerge {\n  name: string;\n  value: any;\n}\n\nexport class ComponentOptionsMerger {\n  constructor(\n    public optionDefinition: IComponentOptionsOption<any>,\n    public valueToMerge: IComponentOptionsToMerge,\n    public optionsDictionary: Record<string, any>\n  ) {}\n\n  public merge() {\n    const { name, value } = this.valueToMerge;\n    if (Utils.isNullOrUndefined(value)) {\n      return;\n    }\n\n    switch (this.optionDefinition.type) {\n      case ComponentOptionsType.OBJECT:\n        const currentValue = this.optionsDictionary[name] || {};\n        this.optionsDictionary[name] = { ...currentValue, ...value };\n        break;\n      case ComponentOptionsType.LOCALIZED_STRING:\n        this.optionsDictionary[name] = l(value);\n        break;\n      default:\n        this.optionsDictionary[name] = value;\n    }\n    return this.valueToMerge;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Base/ComponentOptionsMerger.ts","import { each } from 'underscore';\nimport { IComponentOptionsOption } from './IComponentOptions';\nimport { Utils } from '../../utils/Utils';\nimport { Logger } from '../../misc/Logger';\n\nexport class ComponentOptionsPostProcessor<T> {\n  private logger: Logger;\n  constructor(\n    public allOptionsDefinitions: { [name: string]: IComponentOptionsOption<T> },\n    public optionsDictionnary: Record<any, any>,\n    public componentID: string\n  ) {\n    this.logger = new Logger(this);\n  }\n\n  postProcess() {\n    each(this.allOptionsDefinitions, (optionDefinition, name) => {\n      if (optionDefinition.required && Utils.isNullOrUndefined(this.optionsDictionnary[name])) {\n        this.logger.warn(\n          `Option \"${name}\" is *REQUIRED* on the component \"${\n            this.componentID\n          }\". The component or the search page might *NOT WORK PROPERLY*.`\n        );\n      }\n\n      if (optionDefinition.postProcessing) {\n        this.optionsDictionnary[name] = optionDefinition.postProcessing(this.optionsDictionnary[name], this.optionsDictionnary);\n      }\n    });\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Base/ComponentOptionsPostProcessor.ts","import { Logger } from '../../misc/Logger';\nimport { IComponentOptionsOption } from './IComponentOptions';\n\nexport interface IComponentOptionsToValidate<T> {\n  name: string;\n  value: T;\n  componentID: string;\n}\n\nexport class ComponentOptionsValidator<T> {\n  private logger: Logger;\n  constructor(\n    public optionDefinition: IComponentOptionsOption<T>,\n    public valueToValidate: IComponentOptionsToValidate<T>,\n    public optionsDictionnary: Record<any, any>\n  ) {\n    this.logger = new Logger(this);\n  }\n\n  public validate() {\n    const { name, value, componentID } = this.valueToValidate;\n\n    const isValid = this.optionDefinition.validator ? this.optionDefinition.validator(value) : true;\n    if (isValid) {\n      return;\n    }\n\n    this.logger.warn(`${componentID} .${name} has invalid value: ${value}`);\n    if (this.optionDefinition.required) {\n      this.logger.error(`${componentID} .${name} is required and has an invalid value: ${value}. ***THIS COMPONENT WILL NOT WORK***`);\n    }\n\n    delete this.optionsDictionnary[name];\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Base/ComponentOptionsValidator.ts","const diacriticsToLatinCharacters = {\n  Á: 'A',\n  Ă: 'A',\n  Ắ: 'A',\n  Ặ: 'A',\n  Ằ: 'A',\n  Ẳ: 'A',\n  Ẵ: 'A',\n  Ǎ: 'A',\n  Â: 'A',\n  Ấ: 'A',\n  Ậ: 'A',\n  Ầ: 'A',\n  Ẩ: 'A',\n  Ẫ: 'A',\n  Ä: 'A',\n  Ǟ: 'A',\n  Ȧ: 'A',\n  Ǡ: 'A',\n  Ạ: 'A',\n  Ȁ: 'A',\n  À: 'A',\n  Ả: 'A',\n  Ȃ: 'A',\n  Ā: 'A',\n  Ą: 'A',\n  Å: 'A',\n  Ǻ: 'A',\n  Ḁ: 'A',\n  Ⱥ: 'A',\n  Ã: 'A',\n  Ꜳ: 'AA',\n  Æ: 'AE',\n  Ǽ: 'AE',\n  Ǣ: 'AE',\n  Ꜵ: 'AO',\n  Ꜷ: 'AU',\n  Ꜹ: 'AV',\n  Ꜻ: 'AV',\n  Ꜽ: 'AY',\n  Ḃ: 'B',\n  Ḅ: 'B',\n  Ɓ: 'B',\n  Ḇ: 'B',\n  Ƀ: 'B',\n  Ƃ: 'B',\n  Ć: 'C',\n  Č: 'C',\n  Ç: 'C',\n  Ḉ: 'C',\n  Ĉ: 'C',\n  Ċ: 'C',\n  Ƈ: 'C',\n  Ȼ: 'C',\n  Ď: 'D',\n  Ḑ: 'D',\n  Ḓ: 'D',\n  Ḋ: 'D',\n  Ḍ: 'D',\n  Ɗ: 'D',\n  Ḏ: 'D',\n  Dz: 'D',\n  Dž: 'D',\n  Đ: 'D',\n  Ð: 'D',\n  Ƌ: 'D',\n  DZ: 'DZ',\n  DŽ: 'DZ',\n  É: 'E',\n  Ĕ: 'E',\n  Ě: 'E',\n  Ȩ: 'E',\n  Ḝ: 'E',\n  Ê: 'E',\n  Ế: 'E',\n  Ệ: 'E',\n  Ề: 'E',\n  Ể: 'E',\n  Ễ: 'E',\n  Ḙ: 'E',\n  Ë: 'E',\n  Ė: 'E',\n  Ẹ: 'E',\n  Ȅ: 'E',\n  È: 'E',\n  Ẻ: 'E',\n  Ȇ: 'E',\n  Ē: 'E',\n  Ḗ: 'E',\n  Ḕ: 'E',\n  Ę: 'E',\n  Ɇ: 'E',\n  Ẽ: 'E',\n  Ḛ: 'E',\n  Ꝫ: 'ET',\n  Ḟ: 'F',\n  Ƒ: 'F',\n  Ǵ: 'G',\n  Ğ: 'G',\n  Ǧ: 'G',\n  Ģ: 'G',\n  Ĝ: 'G',\n  Ġ: 'G',\n  Ɠ: 'G',\n  Ḡ: 'G',\n  Ǥ: 'G',\n  Ḫ: 'H',\n  Ȟ: 'H',\n  Ḩ: 'H',\n  Ĥ: 'H',\n  Ⱨ: 'H',\n  Ḧ: 'H',\n  Ḣ: 'H',\n  Ḥ: 'H',\n  Ħ: 'H',\n  Í: 'I',\n  Ĭ: 'I',\n  Ǐ: 'I',\n  Î: 'I',\n  Ï: 'I',\n  Ḯ: 'I',\n  İ: 'I',\n  Ị: 'I',\n  Ȉ: 'I',\n  Ì: 'I',\n  Ỉ: 'I',\n  Ȋ: 'I',\n  Ī: 'I',\n  Į: 'I',\n  Ɨ: 'I',\n  Ĩ: 'I',\n  Ḭ: 'I',\n  І: 'I',\n  Ꝺ: 'D',\n  Ꝼ: 'F',\n  Ᵹ: 'G',\n  Ꞃ: 'R',\n  Ꞅ: 'S',\n  Ꞇ: 'T',\n  Ꝭ: 'IS',\n  Ĵ: 'J',\n  Ɉ: 'J',\n  Ḱ: 'K',\n  Ǩ: 'K',\n  Ķ: 'K',\n  Ⱪ: 'K',\n  Ꝃ: 'K',\n  Ḳ: 'K',\n  Ƙ: 'K',\n  Ḵ: 'K',\n  Ꝁ: 'K',\n  Ꝅ: 'K',\n  Ĺ: 'L',\n  Ƚ: 'L',\n  Ľ: 'L',\n  Ļ: 'L',\n  Ḽ: 'L',\n  Ḷ: 'L',\n  Ḹ: 'L',\n  Ⱡ: 'L',\n  Ꝉ: 'L',\n  Ḻ: 'L',\n  Ŀ: 'L',\n  Ɫ: 'L',\n  Lj: 'L',\n  Ł: 'L',\n  LJ: 'LJ',\n  Ḿ: 'M',\n  Ṁ: 'M',\n  Ṃ: 'M',\n  Ɱ: 'M',\n  Ń: 'N',\n  Ň: 'N',\n  Ņ: 'N',\n  Ṋ: 'N',\n  Ṅ: 'N',\n  Ṇ: 'N',\n  Ǹ: 'N',\n  Ɲ: 'N',\n  Ṉ: 'N',\n  Ƞ: 'N',\n  Nj: 'N',\n  Ñ: 'N',\n  NJ: 'NJ',\n  Ó: 'O',\n  Ŏ: 'O',\n  Ǒ: 'O',\n  Ô: 'O',\n  Ố: 'O',\n  Ộ: 'O',\n  Ồ: 'O',\n  Ổ: 'O',\n  Ỗ: 'O',\n  Ö: 'O',\n  Ȫ: 'O',\n  Ȯ: 'O',\n  Ȱ: 'O',\n  Ọ: 'O',\n  Ő: 'O',\n  Ȍ: 'O',\n  Ò: 'O',\n  Ỏ: 'O',\n  Ơ: 'O',\n  Ớ: 'O',\n  Ợ: 'O',\n  Ờ: 'O',\n  Ở: 'O',\n  Ỡ: 'O',\n  Ȏ: 'O',\n  Ꝋ: 'O',\n  Ꝍ: 'O',\n  Ō: 'O',\n  Ṓ: 'O',\n  Ṑ: 'O',\n  Ɵ: 'O',\n  Ǫ: 'O',\n  Ǭ: 'O',\n  Ø: 'O',\n  Ǿ: 'O',\n  Õ: 'O',\n  Ṍ: 'O',\n  Ṏ: 'O',\n  Ȭ: 'O',\n  Ƣ: 'OI',\n  Ꝏ: 'OO',\n  Ɛ: 'E',\n  Ɔ: 'O',\n  Ȣ: 'OU',\n  Ṕ: 'P',\n  Ṗ: 'P',\n  Ꝓ: 'P',\n  Ƥ: 'P',\n  Ꝕ: 'P',\n  Ᵽ: 'P',\n  Ꝑ: 'P',\n  Ꝙ: 'Q',\n  Ꝗ: 'Q',\n  Ŕ: 'R',\n  Ř: 'R',\n  Ŗ: 'R',\n  Ṙ: 'R',\n  Ṛ: 'R',\n  Ṝ: 'R',\n  Ȑ: 'R',\n  Ȓ: 'R',\n  Ṟ: 'R',\n  Ɍ: 'R',\n  Ɽ: 'R',\n  Ꜿ: 'C',\n  Ǝ: 'E',\n  Ś: 'S',\n  Ṥ: 'S',\n  Š: 'S',\n  Ṧ: 'S',\n  Ş: 'S',\n  Ŝ: 'S',\n  Ș: 'S',\n  Ṡ: 'S',\n  Ṣ: 'S',\n  Ṩ: 'S',\n  ß: 'ss',\n  Ť: 'T',\n  Ţ: 'T',\n  Ṱ: 'T',\n  Ț: 'T',\n  Ⱦ: 'T',\n  Ṫ: 'T',\n  Ṭ: 'T',\n  Ƭ: 'T',\n  Ṯ: 'T',\n  Ʈ: 'T',\n  Ŧ: 'T',\n  Ɐ: 'A',\n  Ꞁ: 'L',\n  Ɯ: 'M',\n  Ʌ: 'V',\n  Ꜩ: 'TZ',\n  Ú: 'U',\n  Ŭ: 'U',\n  Ǔ: 'U',\n  Û: 'U',\n  Ṷ: 'U',\n  Ü: 'U',\n  Ǘ: 'U',\n  Ǚ: 'U',\n  Ǜ: 'U',\n  Ǖ: 'U',\n  Ṳ: 'U',\n  Ụ: 'U',\n  Ű: 'U',\n  Ȕ: 'U',\n  Ù: 'U',\n  Ủ: 'U',\n  Ư: 'U',\n  Ứ: 'U',\n  Ự: 'U',\n  Ừ: 'U',\n  Ử: 'U',\n  Ữ: 'U',\n  Ȗ: 'U',\n  Ū: 'U',\n  Ṻ: 'U',\n  Ų: 'U',\n  Ů: 'U',\n  Ũ: 'U',\n  Ṹ: 'U',\n  Ṵ: 'U',\n  Ꝟ: 'V',\n  Ṿ: 'V',\n  Ʋ: 'V',\n  Ṽ: 'V',\n  Ꝡ: 'VY',\n  Ẃ: 'W',\n  Ŵ: 'W',\n  Ẅ: 'W',\n  Ẇ: 'W',\n  Ẉ: 'W',\n  Ẁ: 'W',\n  Ⱳ: 'W',\n  Ẍ: 'X',\n  Ẋ: 'X',\n  Ý: 'Y',\n  Ŷ: 'Y',\n  Ÿ: 'Y',\n  Ẏ: 'Y',\n  Ỵ: 'Y',\n  Ỳ: 'Y',\n  Ƴ: 'Y',\n  Ỷ: 'Y',\n  Ỿ: 'Y',\n  Ȳ: 'Y',\n  Ɏ: 'Y',\n  Ỹ: 'Y',\n  Ї: 'YI',\n  Ź: 'Z',\n  Ž: 'Z',\n  Ẑ: 'Z',\n  Ⱬ: 'Z',\n  Ż: 'Z',\n  Ẓ: 'Z',\n  Ȥ: 'Z',\n  Ẕ: 'Z',\n  Ƶ: 'Z',\n  Þ: 'TH',\n  IJ: 'IJ',\n  Œ: 'OE',\n  ᴀ: 'A',\n  ᴁ: 'AE',\n  ʙ: 'B',\n  ᴃ: 'B',\n  ᴄ: 'C',\n  ᴅ: 'D',\n  ᴇ: 'E',\n  ꜰ: 'F',\n  ɢ: 'G',\n  ʛ: 'G',\n  ʜ: 'H',\n  ɪ: 'I',\n  ʁ: 'R',\n  ᴊ: 'J',\n  ᴋ: 'K',\n  ʟ: 'L',\n  ᴌ: 'L',\n  ᴍ: 'M',\n  ɴ: 'N',\n  ᴏ: 'O',\n  ɶ: 'OE',\n  ᴐ: 'O',\n  ᴕ: 'OU',\n  ᴘ: 'P',\n  ʀ: 'R',\n  ᴎ: 'N',\n  ᴙ: 'R',\n  ꜱ: 'S',\n  ᴛ: 'T',\n  ⱻ: 'E',\n  ᴚ: 'R',\n  ᴜ: 'U',\n  ᴠ: 'V',\n  ᴡ: 'W',\n  ʏ: 'Y',\n  ᴢ: 'Z',\n  á: 'a',\n  ă: 'a',\n  ắ: 'a',\n  ặ: 'a',\n  ằ: 'a',\n  ẳ: 'a',\n  ẵ: 'a',\n  ǎ: 'a',\n  â: 'a',\n  ấ: 'a',\n  ậ: 'a',\n  ầ: 'a',\n  ẩ: 'a',\n  ẫ: 'a',\n  ä: 'a',\n  ǟ: 'a',\n  ȧ: 'a',\n  ǡ: 'a',\n  ạ: 'a',\n  ȁ: 'a',\n  à: 'a',\n  ả: 'a',\n  ȃ: 'a',\n  ā: 'a',\n  ą: 'a',\n  ᶏ: 'a',\n  ẚ: 'a',\n  å: 'a',\n  ǻ: 'a',\n  ḁ: 'a',\n  ⱥ: 'a',\n  ã: 'a',\n  ꜳ: 'aa',\n  æ: 'ae',\n  ǽ: 'ae',\n  ǣ: 'ae',\n  ꜵ: 'ao',\n  ꜷ: 'au',\n  ꜹ: 'av',\n  ꜻ: 'av',\n  ꜽ: 'ay',\n  ḃ: 'b',\n  ḅ: 'b',\n  ɓ: 'b',\n  ḇ: 'b',\n  ᵬ: 'b',\n  ᶀ: 'b',\n  ƀ: 'b',\n  ƃ: 'b',\n  ɵ: 'o',\n  ć: 'c',\n  č: 'c',\n  ç: 'c',\n  ḉ: 'c',\n  ĉ: 'c',\n  ɕ: 'c',\n  ċ: 'c',\n  ƈ: 'c',\n  ȼ: 'c',\n  ď: 'd',\n  ḑ: 'd',\n  ḓ: 'd',\n  ȡ: 'd',\n  ḋ: 'd',\n  ḍ: 'd',\n  ɗ: 'd',\n  ᶑ: 'd',\n  ḏ: 'd',\n  ᵭ: 'd',\n  ᶁ: 'd',\n  đ: 'd',\n  ɖ: 'd',\n  ƌ: 'd',\n  ð: 'd',\n  ı: 'i',\n  ȷ: 'j',\n  ɟ: 'j',\n  ʄ: 'j',\n  dz: 'dz',\n  dž: 'dz',\n  é: 'e',\n  ĕ: 'e',\n  ě: 'e',\n  ȩ: 'e',\n  ḝ: 'e',\n  ê: 'e',\n  ế: 'e',\n  ệ: 'e',\n  ề: 'e',\n  ể: 'e',\n  ễ: 'e',\n  ḙ: 'e',\n  ë: 'e',\n  ė: 'e',\n  ẹ: 'e',\n  ȅ: 'e',\n  è: 'e',\n  ẻ: 'e',\n  ȇ: 'e',\n  ē: 'e',\n  ḗ: 'e',\n  ḕ: 'e',\n  ⱸ: 'e',\n  ę: 'e',\n  ᶒ: 'e',\n  ɇ: 'e',\n  ẽ: 'e',\n  ḛ: 'e',\n  ꝫ: 'et',\n  ḟ: 'f',\n  ƒ: 'f',\n  ᵮ: 'f',\n  ᶂ: 'f',\n  ǵ: 'g',\n  ğ: 'g',\n  ǧ: 'g',\n  ģ: 'g',\n  ĝ: 'g',\n  ġ: 'g',\n  ɠ: 'g',\n  ḡ: 'g',\n  ᶃ: 'g',\n  ǥ: 'g',\n  ḫ: 'h',\n  ȟ: 'h',\n  ḩ: 'h',\n  ĥ: 'h',\n  ⱨ: 'h',\n  ḧ: 'h',\n  ḣ: 'h',\n  ḥ: 'h',\n  ɦ: 'h',\n  ẖ: 'h',\n  ħ: 'h',\n  ƕ: 'hv',\n  í: 'i',\n  ĭ: 'i',\n  ǐ: 'i',\n  î: 'i',\n  ï: 'i',\n  ḯ: 'i',\n  ị: 'i',\n  ȉ: 'i',\n  ì: 'i',\n  ỉ: 'i',\n  ȋ: 'i',\n  ī: 'i',\n  į: 'i',\n  ᶖ: 'i',\n  ɨ: 'i',\n  ĩ: 'i',\n  ḭ: 'i',\n  і: 'i',\n  ꝺ: 'd',\n  ꝼ: 'f',\n  ᵹ: 'g',\n  ꞃ: 'r',\n  ꞅ: 's',\n  ꞇ: 't',\n  ꝭ: 'is',\n  ǰ: 'j',\n  ĵ: 'j',\n  ʝ: 'j',\n  ɉ: 'j',\n  ḱ: 'k',\n  ǩ: 'k',\n  ķ: 'k',\n  ⱪ: 'k',\n  ꝃ: 'k',\n  ḳ: 'k',\n  ƙ: 'k',\n  ḵ: 'k',\n  ᶄ: 'k',\n  ꝁ: 'k',\n  ꝅ: 'k',\n  ĺ: 'l',\n  ƚ: 'l',\n  ɬ: 'l',\n  ľ: 'l',\n  ļ: 'l',\n  ḽ: 'l',\n  ȴ: 'l',\n  ḷ: 'l',\n  ḹ: 'l',\n  ⱡ: 'l',\n  ꝉ: 'l',\n  ḻ: 'l',\n  ŀ: 'l',\n  ɫ: 'l',\n  ᶅ: 'l',\n  ɭ: 'l',\n  ł: 'l',\n  lj: 'lj',\n  ſ: 's',\n  ẜ: 's',\n  ẛ: 's',\n  ẝ: 's',\n  ḿ: 'm',\n  ṁ: 'm',\n  ṃ: 'm',\n  ɱ: 'm',\n  ᵯ: 'm',\n  ᶆ: 'm',\n  ń: 'n',\n  ň: 'n',\n  ņ: 'n',\n  ṋ: 'n',\n  ȵ: 'n',\n  ṅ: 'n',\n  ṇ: 'n',\n  ǹ: 'n',\n  ɲ: 'n',\n  ṉ: 'n',\n  ƞ: 'n',\n  ᵰ: 'n',\n  ᶇ: 'n',\n  ɳ: 'n',\n  ñ: 'n',\n  nj: 'nj',\n  ó: 'o',\n  ŏ: 'o',\n  ǒ: 'o',\n  ô: 'o',\n  ố: 'o',\n  ộ: 'o',\n  ồ: 'o',\n  ổ: 'o',\n  ỗ: 'o',\n  ö: 'o',\n  ȫ: 'o',\n  ȯ: 'o',\n  ȱ: 'o',\n  ọ: 'o',\n  ő: 'o',\n  ȍ: 'o',\n  ò: 'o',\n  ỏ: 'o',\n  ơ: 'o',\n  ớ: 'o',\n  ợ: 'o',\n  ờ: 'o',\n  ở: 'o',\n  ỡ: 'o',\n  ȏ: 'o',\n  ꝋ: 'o',\n  ꝍ: 'o',\n  ⱺ: 'o',\n  ō: 'o',\n  ṓ: 'o',\n  ṑ: 'o',\n  ǫ: 'o',\n  ǭ: 'o',\n  ø: 'o',\n  ǿ: 'o',\n  õ: 'o',\n  ṍ: 'o',\n  ṏ: 'o',\n  ȭ: 'o',\n  ƣ: 'oi',\n  ꝏ: 'oo',\n  ɛ: 'e',\n  ᶓ: 'e',\n  ɔ: 'o',\n  ᶗ: 'o',\n  ȣ: 'ou',\n  ṕ: 'p',\n  ṗ: 'p',\n  ꝓ: 'p',\n  ƥ: 'p',\n  ᵱ: 'p',\n  ᶈ: 'p',\n  ꝕ: 'p',\n  ᵽ: 'p',\n  ꝑ: 'p',\n  ꝙ: 'q',\n  ʠ: 'q',\n  ɋ: 'q',\n  ꝗ: 'q',\n  ŕ: 'r',\n  ř: 'r',\n  ŗ: 'r',\n  ṙ: 'r',\n  ṛ: 'r',\n  ṝ: 'r',\n  ȑ: 'r',\n  ɾ: 'r',\n  ᵳ: 'r',\n  ȓ: 'r',\n  ṟ: 'r',\n  ɼ: 'r',\n  ᵲ: 'r',\n  ᶉ: 'r',\n  ɍ: 'r',\n  ɽ: 'r',\n  ↄ: 'c',\n  ꜿ: 'c',\n  ɘ: 'e',\n  ɿ: 'r',\n  ś: 's',\n  ṥ: 's',\n  š: 's',\n  ṧ: 's',\n  ş: 's',\n  ŝ: 's',\n  ș: 's',\n  ṡ: 's',\n  ṣ: 's',\n  ṩ: 's',\n  ʂ: 's',\n  ᵴ: 's',\n  ᶊ: 's',\n  ȿ: 's',\n  ɡ: 'g',\n  ᴑ: 'o',\n  ᴓ: 'o',\n  ᴝ: 'u',\n  ť: 't',\n  ţ: 't',\n  ṱ: 't',\n  ț: 't',\n  ȶ: 't',\n  ẗ: 't',\n  ⱦ: 't',\n  ṫ: 't',\n  ṭ: 't',\n  ƭ: 't',\n  ṯ: 't',\n  ᵵ: 't',\n  ƫ: 't',\n  ʈ: 't',\n  ŧ: 't',\n  ᵺ: 'th',\n  ɐ: 'a',\n  ᴂ: 'ae',\n  ǝ: 'e',\n  ᵷ: 'g',\n  ɥ: 'h',\n  ʮ: 'h',\n  ʯ: 'h',\n  ᴉ: 'i',\n  ʞ: 'k',\n  ꞁ: 'l',\n  ɯ: 'm',\n  ɰ: 'm',\n  ᴔ: 'oe',\n  ɹ: 'r',\n  ɻ: 'r',\n  ɺ: 'r',\n  ⱹ: 'r',\n  ʇ: 't',\n  ʌ: 'v',\n  ʍ: 'w',\n  ʎ: 'y',\n  ꜩ: 'tz',\n  ú: 'u',\n  ŭ: 'u',\n  ǔ: 'u',\n  û: 'u',\n  ṷ: 'u',\n  ü: 'u',\n  ǘ: 'u',\n  ǚ: 'u',\n  ǜ: 'u',\n  ǖ: 'u',\n  ṳ: 'u',\n  ụ: 'u',\n  ű: 'u',\n  ȕ: 'u',\n  ù: 'u',\n  ủ: 'u',\n  ư: 'u',\n  ứ: 'u',\n  ự: 'u',\n  ừ: 'u',\n  ử: 'u',\n  ữ: 'u',\n  ȗ: 'u',\n  ū: 'u',\n  ṻ: 'u',\n  ų: 'u',\n  ᶙ: 'u',\n  ů: 'u',\n  ũ: 'u',\n  ṹ: 'u',\n  ṵ: 'u',\n  ᵫ: 'ue',\n  ꝸ: 'um',\n  ⱴ: 'v',\n  ꝟ: 'v',\n  ṿ: 'v',\n  ʋ: 'v',\n  ᶌ: 'v',\n  ⱱ: 'v',\n  ṽ: 'v',\n  ꝡ: 'vy',\n  ẃ: 'w',\n  ŵ: 'w',\n  ẅ: 'w',\n  ẇ: 'w',\n  ẉ: 'w',\n  ẁ: 'w',\n  ⱳ: 'w',\n  ẘ: 'w',\n  ẍ: 'x',\n  ẋ: 'x',\n  ᶍ: 'x',\n  ý: 'y',\n  ŷ: 'y',\n  ÿ: 'y',\n  ẏ: 'y',\n  ỵ: 'y',\n  ỳ: 'y',\n  ƴ: 'y',\n  ỷ: 'y',\n  ỿ: 'y',\n  ȳ: 'y',\n  ẙ: 'y',\n  ɏ: 'y',\n  ỹ: 'y',\n  ї: 'yi',\n  ź: 'z',\n  ž: 'z',\n  ẑ: 'z',\n  ʑ: 'z',\n  ⱬ: 'z',\n  ż: 'z',\n  ẓ: 'z',\n  ȥ: 'z',\n  ẕ: 'z',\n  ᵶ: 'z',\n  ᶎ: 'z',\n  ʐ: 'z',\n  ƶ: 'z',\n  ɀ: 'z',\n  þ: 'th',\n  ff: 'ff',\n  ffi: 'ffi',\n  ffl: 'ffl',\n  fi: 'fi',\n  fl: 'fl',\n  ij: 'ij',\n  œ: 'oe',\n  st: 'st',\n  ₐ: 'a',\n  ₑ: 'e',\n  ᵢ: 'i',\n  ⱼ: 'j',\n  ₒ: 'o',\n  ᵣ: 'r',\n  ᵤ: 'u',\n  ᵥ: 'v',\n  ₓ: 'x',\n  Ё: 'YO',\n  Й: 'I',\n  Ц: 'TS',\n  У: 'U',\n  К: 'K',\n  Е: 'E',\n  Н: 'N',\n  Г: 'G',\n  Ґ: 'G',\n  Ш: 'SH',\n  Щ: 'SCH',\n  З: 'Z',\n  Х: 'H',\n  Ъ: \"'\",\n  ё: 'yo',\n  й: 'i',\n  ц: 'ts',\n  у: 'u',\n  к: 'k',\n  е: 'e',\n  н: 'n',\n  г: 'g',\n  ґ: 'g',\n  ш: 'sh',\n  щ: 'sch',\n  з: 'z',\n  х: 'h',\n  ъ: \"'\",\n  Ф: 'F',\n  Ы: 'I',\n  В: 'V',\n  А: 'a',\n  П: 'P',\n  Р: 'R',\n  О: 'O',\n  Л: 'L',\n  Д: 'D',\n  Ж: 'ZH',\n  Э: 'E',\n  ф: 'f',\n  ы: 'i',\n  в: 'v',\n  а: 'a',\n  п: 'p',\n  р: 'r',\n  о: 'o',\n  л: 'l',\n  д: 'd',\n  ж: 'zh',\n  э: 'e',\n  Я: 'Ya',\n  Ч: 'CH',\n  С: 'S',\n  М: 'M',\n  И: 'I',\n  Т: 'T',\n  Ь: \"'\",\n  Б: 'B',\n  Ю: 'YU',\n  я: 'ya',\n  ч: 'ch',\n  с: 's',\n  м: 'm',\n  и: 'i',\n  т: 't',\n  ь: \"'\",\n  б: 'b',\n  ю: 'yu'\n};\n\nexport function latinize(str: string) {\n  if (typeof str === 'string') {\n    return str.replace(/[^A-Za-z0-9]/g, function (char) {\n      return diacriticsToLatinCharacters[char] || char;\n    });\n  } else {\n    return str;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/Latinize.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_InitializationPlaceholder.scss\n// module id = 387\n// module chunks = 88 89","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_Debug.scss\n// module id = 388\n// module chunks = 88 89","import { each } from 'underscore';\nimport { IQueryOptions } from '../../controllers/QueryController';\nimport { IDoneBuildingQueryEventArgs, QueryEvents } from '../../events/QueryEvents';\nimport { IDisplayedNewResultEventArgs, ResultListEvents } from '../../events/ResultListEvents';\nimport { COMPONENT_OPTIONS_ATTRIBUTES } from '../../models/ComponentOptionsModel';\nimport { $$ } from '../../utils/Dom';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { Checkbox } from '../FormWidgets/Checkbox';\nimport { TextInput } from '../FormWidgets/TextInput';\nimport { Debug } from './Debug';\n\nexport class DebugHeader {\n  private debug = false;\n  private enableQuerySyntax = false;\n  private highlightRecommendation = false;\n  private requestAllFields = false;\n  private search: TextInput;\n  private widgets: HTMLElement[] = [];\n\n  constructor(public debugInstance: Debug, public element: HTMLElement, public onSearch: (value: string) => void, public infoToDebug: any) {\n    this.widgets.push(this.buildEnabledHighlightRecommendation());\n    this.widgets.push(this.buildEnableDebugCheckbox());\n    this.widgets.push(this.buildEnableQuerySyntaxCheckbox());\n    this.widgets.push(this.buildRequestAllFieldsCheckbox());\n    this.widgets.push(this.buildSearch());\n    this.moveTo(element);\n\n    $$(this.root).on(ResultListEvents.newResultDisplayed, (e, args: IDisplayedNewResultEventArgs) => this.handleNewResultDisplayed(args));\n    $$(this.root).on(QueryEvents.doneBuildingQuery, (e, args: IDoneBuildingQueryEventArgs) => this.handleDoneBuildingQuery(args));\n  }\n\n  public moveTo(newElement: HTMLElement) {\n    each(this.widgets, (widget: HTMLElement) => newElement.appendChild(widget));\n    this.element = newElement;\n  }\n\n  public setSearch(onSearch: (value: string) => void) {\n    this.onSearch = onSearch;\n    this.resetSearchbox();\n  }\n\n  public setNewInfoToDebug(newInfoToDebug) {\n    this.infoToDebug = newInfoToDebug;\n  }\n\n  private resetSearchbox() {\n    if (this.search) {\n      this.search.reset();\n    }\n  }\n\n  private get bindings(): IComponentBindings {\n    return this.debugInstance.bindings;\n  }\n\n  private get root(): HTMLElement {\n    return this.debugInstance.element;\n  }\n\n  private get queryOptions(): IQueryOptions {\n    return {\n      closeModalBox: false,\n      origin: this.debugInstance\n    };\n  }\n\n  private handleNewResultDisplayed(args: IDisplayedNewResultEventArgs) {\n    if (args.item != null && args.result.isRecommendation && this.highlightRecommendation) {\n      $$(args.item).addClass('coveo-is-recommendation');\n    }\n  }\n\n  private handleDoneBuildingQuery(args: IDoneBuildingQueryEventArgs) {\n    args.queryBuilder.enableDebug = this.debug || args.queryBuilder.enableDebug;\n    if (this.requestAllFields) {\n      args.queryBuilder.fieldsToInclude = undefined;\n      args.queryBuilder.includeRequiredFields = false;\n    }\n  }\n\n  private buildSearch() {\n    this.search = new TextInput(txtInputInstance => {\n      const value = txtInputInstance.getValue().toLowerCase();\n      this.onSearch(value);\n    }, 'Search in debug');\n    this.search.build();\n    return this.search.getElement();\n  }\n\n  private buildEnableDebugCheckbox() {\n    const checkbox = new Checkbox(checkboxInstance => {\n      this.debug = checkboxInstance.isSelected();\n\n      this.bindings.queryController.executeQuery(this.queryOptions);\n      this.resetSearchbox();\n    }, 'Enable query debug');\n    if (this.debug) {\n      checkbox.select();\n    }\n    return checkbox.build();\n  }\n\n  private buildEnableQuerySyntaxCheckbox() {\n    const checkbox = new Checkbox(checkboxInstance => {\n      this.enableQuerySyntax = checkboxInstance.isSelected();\n\n      this.bindings.componentOptionsModel.set(COMPONENT_OPTIONS_ATTRIBUTES.SEARCH_BOX, {\n        enableQuerySyntax: this.enableQuerySyntax\n      });\n\n      this.bindings.queryController.executeQuery(this.queryOptions);\n    }, 'Enable query syntax in search box');\n    if (this.enableQuerySyntax) {\n      checkbox.select();\n    }\n    return checkbox.build();\n  }\n\n  private buildRequestAllFieldsCheckbox() {\n    const checkbox = new Checkbox(checkboxInstance => {\n      this.requestAllFields = checkboxInstance.isSelected();\n      this.bindings.queryController.executeQuery(this.queryOptions);\n    }, 'Request all fields available');\n    if (this.requestAllFields) {\n      checkbox.select();\n    }\n    return checkbox.build();\n  }\n\n  private buildEnabledHighlightRecommendation() {\n    const checkbox = new Checkbox(checkboxInstance => {\n      this.highlightRecommendation = checkboxInstance.isSelected();\n      this.bindings.queryController.executeQuery(this.queryOptions);\n    }, 'Highlight recommendation');\n    if (this.highlightRecommendation) {\n      checkbox.select();\n    }\n    return checkbox.build();\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Debug/DebugHeader.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/vapor/_Checkbox.scss\n// module id = 390\n// module chunks = 88 89","import { IQueryResult } from '../../rest/QueryResult';\nimport { IFieldDescription } from '../../rest/FieldDescription';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { IStringMap } from '../../rest/GenericParam';\nimport { StringUtils } from '../../utils/StringUtils';\nimport * as _ from 'underscore';\n\nexport class DebugForResult {\n  private fields: { [field: string]: IFieldDescription };\n\n  constructor(public bindings: IComponentBindings) {}\n\n  public generateDebugInfoForResult(result: IQueryResult) {\n    return {\n      result: result,\n      fields: () => this.buildFieldsSection(result),\n      rankingInfo: () => this.buildRankingInfoSection(result)\n    };\n  }\n\n  private fetchFields(): Promise<{ [field: string]: IFieldDescription }> {\n    if (this.fields == null) {\n      return this.bindings.queryController\n        .getEndpoint()\n        .listFields()\n        .then((fields: IFieldDescription[]) => {\n          this.fields = {};\n          fields.forEach(field => {\n            this.fields[field.name] = field;\n          });\n          return this.fields;\n        });\n    } else {\n      return Promise.resolve(this.fields);\n    }\n  }\n\n  private buildRankingInfoSection(result: IQueryResult) {\n    return result.rankingInfo && this.parseRankingInfo(result.rankingInfo);\n  }\n\n  private parseWeights(value: string) {\n    let listOfWeight = value.match(/(\\w+(?:\\s\\w+)*): ([-0-9]+)/g);\n    return _.object(\n      _.map(listOfWeight, weight => {\n        let weightGroup = weight.match(/^(\\w+(?:\\s\\w+)*): ([-0-9]+)$/);\n        return [weightGroup[1], Number(weightGroup[2])];\n      })\n    );\n  }\n\n  private buildFieldsSection(result: IQueryResult) {\n    return this.fetchFields().then((fieldDescriptions: IStringMap<IFieldDescription>) => {\n      let fields = {};\n      _.each(result.raw, (value: any, key: string) => {\n        let fieldDescription = fieldDescriptions['@' + key];\n        if (fieldDescription == null && key.match(/^sys/)) {\n          fieldDescription = fieldDescriptions['@' + key.substr(3)];\n        }\n        if (fieldDescription == null) {\n          fields['@' + key] = value;\n        } else if (fieldDescription.fieldType == 'Date') {\n          fields['@' + key] = new Date(value);\n        } else if (fieldDescription.splitGroupByField && _.isString(value)) {\n          fields['@' + key] = value.split(/\\s*;\\s*/);\n        } else {\n          fields['@' + key] = value;\n        }\n      });\n      return fields;\n    });\n  }\n\n  private parseRankingInfo(value: string) {\n    let rankingInfo = {};\n    if (value) {\n      let documentWeights = /Document weights:\\n((?:.)*?)\\n+/g.exec(value);\n      let termsWeight = /Terms weights:\\n((?:.|\\n)*)\\n+/g.exec(value);\n      let totalWeight = /Total weight: ([0-9]+)/g.exec(value);\n\n      if (documentWeights && documentWeights[1]) {\n        rankingInfo['Document weights'] = this.parseWeights(documentWeights[1]);\n      }\n\n      if (totalWeight && totalWeight[1]) {\n        rankingInfo['Total weight'] = Number(totalWeight[1]);\n      }\n\n      if (termsWeight && termsWeight[1]) {\n        let terms = StringUtils.match(termsWeight[1], /((?:[^:]+: [0-9]+, [0-9]+; )+)\\n((?:\\w+: [0-9]+; )+)/g);\n        rankingInfo['Terms weights'] = _.object(\n          _.map(terms, term => {\n            let words = _.object(\n              _.map(StringUtils.match(term[1], /([^:]+): ([0-9]+), ([0-9]+); /g), word => {\n                return [\n                  word[1],\n                  {\n                    Correlation: Number(word[2]),\n                    'TF-IDF': Number(word[3])\n                  }\n                ];\n              })\n            );\n            let weights = this.parseWeights(term[2]);\n            return [\n              _.keys(words).join(', '),\n              {\n                terms: words,\n                Weights: weights\n              }\n            ];\n          })\n        );\n      }\n    }\n\n    return rankingInfo;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Debug/DebugForResult.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_MissingTermsBreadcrumb.scss\n// module id = 392\n// module chunks = 88 89","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime-corejs2/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _create = _interopRequireDefault(require(\"@babel/runtime-corejs2/core-js/object/create\"));\n\nvar _slicedToArray2 = _interopRequireDefault(require(\"@babel/runtime-corejs2/helpers/slicedToArray\"));\n\nvar _getIterator2 = _interopRequireDefault(require(\"@babel/runtime-corejs2/core-js/get-iterator\"));\n\nvar _parseInt2 = _interopRequireDefault(require(\"@babel/runtime-corejs2/core-js/parse-int\"));\n\n/*!\n * XRegExp 4.2.4\n * <xregexp.com>\n * Steven Levithan (c) 2007-present MIT License\n */\n\n/**\n * XRegExp provides augmented, extensible regular expressions. You get additional regex syntax and\n * flags, beyond what browsers support natively. XRegExp is also a regex utility belt with tools to\n * make your client-side grepping simpler and more powerful, while freeing you from related\n * cross-browser inconsistencies.\n */\n// ==--------------------------==\n// Private stuff\n// ==--------------------------==\n// Property name used for extended regex instance data\nvar REGEX_DATA = 'xregexp'; // Optional features that can be installed and uninstalled\n\nvar features = {\n  astral: false,\n  namespacing: false\n}; // Native methods to use and restore ('native' is an ES3 reserved keyword)\n\nvar nativ = {\n  exec: RegExp.prototype.exec,\n  test: RegExp.prototype.test,\n  match: String.prototype.match,\n  replace: String.prototype.replace,\n  split: String.prototype.split\n}; // Storage for fixed/extended native methods\n\nvar fixed = {}; // Storage for regexes cached by `XRegExp.cache`\n\nvar regexCache = {}; // Storage for pattern details cached by the `XRegExp` constructor\n\nvar patternCache = {}; // Storage for regex syntax tokens added internally or by `XRegExp.addToken`\n\nvar tokens = []; // Token scopes\n\nvar defaultScope = 'default';\nvar classScope = 'class'; // Regexes that match native regex syntax, including octals\n\nvar nativeTokens = {\n  // Any native multicharacter token in default scope, or any single character\n  'default': /\\\\(?:0(?:[0-3][0-7]{0,2}|[4-7][0-7]?)?|[1-9]\\d*|x[\\dA-Fa-f]{2}|u(?:[\\dA-Fa-f]{4}|{[\\dA-Fa-f]+})|c[A-Za-z]|[\\s\\S])|\\(\\?(?:[:=!]|<[=!])|[?*+]\\?|{\\d+(?:,\\d*)?}\\??|[\\s\\S]/,\n  // Any native multicharacter token in character class scope, or any single character\n  'class': /\\\\(?:[0-3][0-7]{0,2}|[4-7][0-7]?|x[\\dA-Fa-f]{2}|u(?:[\\dA-Fa-f]{4}|{[\\dA-Fa-f]+})|c[A-Za-z]|[\\s\\S])|[\\s\\S]/\n}; // Any backreference or dollar-prefixed character in replacement strings\n\nvar replacementToken = /\\$(?:{([\\w$]+)}|<([\\w$]+)>|(\\d\\d?|[\\s\\S]))/g; // Check for correct `exec` handling of nonparticipating capturing groups\n\nvar correctExecNpcg = nativ.exec.call(/()??/, '')[1] === undefined; // Check for ES6 `flags` prop support\n\nvar hasFlagsProp = /x/.flags !== undefined; // Shortcut to `Object.prototype.toString`\n\nvar _ref = {},\n    toString = _ref.toString;\n\nfunction hasNativeFlag(flag) {\n  // Can't check based on the presence of properties/getters since browsers might support such\n  // properties even when they don't support the corresponding flag in regex construction (tested\n  // in Chrome 48, where `'unicode' in /x/` is true but trying to construct a regex with flag `u`\n  // throws an error)\n  var isSupported = true;\n\n  try {\n    // Can't use regex literals for testing even in a `try` because regex literals with\n    // unsupported flags cause a compilation error in IE\n    new RegExp('', flag);\n  } catch (exception) {\n    isSupported = false;\n  }\n\n  return isSupported;\n} // Check for ES6 `u` flag support\n\n\nvar hasNativeU = hasNativeFlag('u'); // Check for ES6 `y` flag support\n\nvar hasNativeY = hasNativeFlag('y'); // Tracker for known flags, including addon flags\n\nvar registeredFlags = {\n  g: true,\n  i: true,\n  m: true,\n  u: hasNativeU,\n  y: hasNativeY\n};\n/**\n * Attaches extended data and `XRegExp.prototype` properties to a regex object.\n *\n * @private\n * @param {RegExp} regex Regex to augment.\n * @param {Array} captureNames Array with capture names, or `null`.\n * @param {String} xSource XRegExp pattern used to generate `regex`, or `null` if N/A.\n * @param {String} xFlags XRegExp flags used to generate `regex`, or `null` if N/A.\n * @param {Boolean} [isInternalOnly=false] Whether the regex will be used only for internal\n *   operations, and never exposed to users. For internal-only regexes, we can improve perf by\n *   skipping some operations like attaching `XRegExp.prototype` properties.\n * @returns {RegExp} Augmented regex.\n */\n\nfunction augment(regex, captureNames, xSource, xFlags, isInternalOnly) {\n  regex[REGEX_DATA] = {\n    captureNames: captureNames\n  };\n\n  if (isInternalOnly) {\n    return regex;\n  } // Can't auto-inherit these since the XRegExp constructor returns a nonprimitive value\n\n\n  if (regex.__proto__) {\n    regex.__proto__ = XRegExp.prototype;\n  } else {\n    for (var p in XRegExp.prototype) {\n      // An `XRegExp.prototype.hasOwnProperty(p)` check wouldn't be worth it here, since this\n      // is performance sensitive, and enumerable `Object.prototype` or `RegExp.prototype`\n      // extensions exist on `regex.prototype` anyway\n      regex[p] = XRegExp.prototype[p];\n    }\n  }\n\n  regex[REGEX_DATA].source = xSource; // Emulate the ES6 `flags` prop by ensuring flags are in alphabetical order\n\n  regex[REGEX_DATA].flags = xFlags ? xFlags.split('').sort().join('') : xFlags;\n  return regex;\n}\n/**\n * Removes any duplicate characters from the provided string.\n *\n * @private\n * @param {String} str String to remove duplicate characters from.\n * @returns {String} String with any duplicate characters removed.\n */\n\n\nfunction clipDuplicates(str) {\n  return nativ.replace.call(str, /([\\s\\S])(?=[\\s\\S]*\\1)/g, '');\n}\n/**\n * Copies a regex object while preserving extended data and augmenting with `XRegExp.prototype`\n * properties. The copy has a fresh `lastIndex` property (set to zero). Allows adding and removing\n * flags g and y while copying the regex.\n *\n * @private\n * @param {RegExp} regex Regex to copy.\n * @param {Object} [options] Options object with optional properties:\n *   - `addG` {Boolean} Add flag g while copying the regex.\n *   - `addY` {Boolean} Add flag y while copying the regex.\n *   - `removeG` {Boolean} Remove flag g while copying the regex.\n *   - `removeY` {Boolean} Remove flag y while copying the regex.\n *   - `isInternalOnly` {Boolean} Whether the copied regex will be used only for internal\n *     operations, and never exposed to users. For internal-only regexes, we can improve perf by\n *     skipping some operations like attaching `XRegExp.prototype` properties.\n *   - `source` {String} Overrides `<regex>.source`, for special cases.\n * @returns {RegExp} Copy of the provided regex, possibly with modified flags.\n */\n\n\nfunction copyRegex(regex, options) {\n  if (!XRegExp.isRegExp(regex)) {\n    throw new TypeError('Type RegExp expected');\n  }\n\n  var xData = regex[REGEX_DATA] || {};\n  var flags = getNativeFlags(regex);\n  var flagsToAdd = '';\n  var flagsToRemove = '';\n  var xregexpSource = null;\n  var xregexpFlags = null;\n  options = options || {};\n\n  if (options.removeG) {\n    flagsToRemove += 'g';\n  }\n\n  if (options.removeY) {\n    flagsToRemove += 'y';\n  }\n\n  if (flagsToRemove) {\n    flags = nativ.replace.call(flags, new RegExp(\"[\".concat(flagsToRemove, \"]+\"), 'g'), '');\n  }\n\n  if (options.addG) {\n    flagsToAdd += 'g';\n  }\n\n  if (options.addY) {\n    flagsToAdd += 'y';\n  }\n\n  if (flagsToAdd) {\n    flags = clipDuplicates(flags + flagsToAdd);\n  }\n\n  if (!options.isInternalOnly) {\n    if (xData.source !== undefined) {\n      xregexpSource = xData.source;\n    } // null or undefined; don't want to add to `flags` if the previous value was null, since\n    // that indicates we're not tracking original precompilation flags\n\n\n    if (xData.flags != null) {\n      // Flags are only added for non-internal regexes by `XRegExp.globalize`. Flags are never\n      // removed for non-internal regexes, so don't need to handle it\n      xregexpFlags = flagsToAdd ? clipDuplicates(xData.flags + flagsToAdd) : xData.flags;\n    }\n  } // Augment with `XRegExp.prototype` properties, but use the native `RegExp` constructor to avoid\n  // searching for special tokens. That would be wrong for regexes constructed by `RegExp`, and\n  // unnecessary for regexes constructed by `XRegExp` because the regex has already undergone the\n  // translation to native regex syntax\n\n\n  regex = augment(new RegExp(options.source || regex.source, flags), hasNamedCapture(regex) ? xData.captureNames.slice(0) : null, xregexpSource, xregexpFlags, options.isInternalOnly);\n  return regex;\n}\n/**\n * Converts hexadecimal to decimal.\n *\n * @private\n * @param {String} hex\n * @returns {Number}\n */\n\n\nfunction dec(hex) {\n  return (0, _parseInt2.default)(hex, 16);\n}\n/**\n * Returns a pattern that can be used in a native RegExp in place of an ignorable token such as an\n * inline comment or whitespace with flag x. This is used directly as a token handler function\n * passed to `XRegExp.addToken`.\n *\n * @private\n * @param {String} match Match arg of `XRegExp.addToken` handler\n * @param {String} scope Scope arg of `XRegExp.addToken` handler\n * @param {String} flags Flags arg of `XRegExp.addToken` handler\n * @returns {String} Either '' or '(?:)', depending on which is needed in the context of the match.\n */\n\n\nfunction getContextualTokenSeparator(match, scope, flags) {\n  if ( // No need to separate tokens if at the beginning or end of a group\n  match.input[match.index - 1] === '(' || match.input[match.index + match[0].length] === ')' || // No need to separate tokens if before or after a `|`\n  match.input[match.index - 1] === '|' || match.input[match.index + match[0].length] === '|' || // No need to separate tokens if at the beginning or end of the pattern\n  match.index < 1 || match.index + match[0].length >= match.input.length || // No need to separate tokens if at the beginning of a noncapturing group or lookahead.\n  // The way this is written relies on:\n  // - The search regex matching only 3-char strings.\n  // - Although `substr` gives chars from the end of the string if given a negative index,\n  //   the resulting substring will be too short to match. Ex: `'abcd'.substr(-1, 3) === 'd'`\n  nativ.test.call(/^\\(\\?[:=!]/, match.input.substr(match.index - 3, 3)) || // Avoid separating tokens when the following token is a quantifier\n  isQuantifierNext(match.input, match.index + match[0].length, flags)) {\n    return '';\n  } // Keep tokens separated. This avoids e.g. inadvertedly changing `\\1 1` or `\\1(?#)1` to `\\11`.\n  // This also ensures all tokens remain as discrete atoms, e.g. it avoids converting the syntax\n  // error `(? :` into `(?:`.\n\n\n  return '(?:)';\n}\n/**\n * Returns native `RegExp` flags used by a regex object.\n *\n * @private\n * @param {RegExp} regex Regex to check.\n * @returns {String} Native flags in use.\n */\n\n\nfunction getNativeFlags(regex) {\n  return hasFlagsProp ? regex.flags : // Explicitly using `RegExp.prototype.toString` (rather than e.g. `String` or concatenation\n  // with an empty string) allows this to continue working predictably when\n  // `XRegExp.proptotype.toString` is overridden\n  nativ.exec.call(/\\/([a-z]*)$/i, RegExp.prototype.toString.call(regex))[1];\n}\n/**\n * Determines whether a regex has extended instance data used to track capture names.\n *\n * @private\n * @param {RegExp} regex Regex to check.\n * @returns {Boolean} Whether the regex uses named capture.\n */\n\n\nfunction hasNamedCapture(regex) {\n  return !!(regex[REGEX_DATA] && regex[REGEX_DATA].captureNames);\n}\n/**\n * Converts decimal to hexadecimal.\n *\n * @private\n * @param {Number|String} dec\n * @returns {String}\n */\n\n\nfunction hex(dec) {\n  return (0, _parseInt2.default)(dec, 10).toString(16);\n}\n/**\n * Checks whether the next nonignorable token after the specified position is a quantifier.\n *\n * @private\n * @param {String} pattern Pattern to search within.\n * @param {Number} pos Index in `pattern` to search at.\n * @param {String} flags Flags used by the pattern.\n * @returns {Boolean} Whether the next nonignorable token is a quantifier.\n */\n\n\nfunction isQuantifierNext(pattern, pos, flags) {\n  var inlineCommentPattern = '\\\\(\\\\?#[^)]*\\\\)';\n  var lineCommentPattern = '#[^#\\\\n]*';\n  var quantifierPattern = '[?*+]|{\\\\d+(?:,\\\\d*)?}';\n  return nativ.test.call(flags.indexOf('x') !== -1 ? // Ignore any leading whitespace, line comments, and inline comments\n  /^(?:\\s|#[^#\\n]*|\\(\\?#[^)]*\\))*(?:[?*+]|{\\d+(?:,\\d*)?})/ : // Ignore any leading inline comments\n  /^(?:\\(\\?#[^)]*\\))*(?:[?*+]|{\\d+(?:,\\d*)?})/, pattern.slice(pos));\n}\n/**\n * Determines whether a value is of the specified type, by resolving its internal [[Class]].\n *\n * @private\n * @param {*} value Object to check.\n * @param {String} type Type to check for, in TitleCase.\n * @returns {Boolean} Whether the object matches the type.\n */\n\n\nfunction isType(value, type) {\n  return toString.call(value) === \"[object \".concat(type, \"]\");\n}\n/**\n * Adds leading zeros if shorter than four characters. Used for fixed-length hexadecimal values.\n *\n * @private\n * @param {String} str\n * @returns {String}\n */\n\n\nfunction pad4(str) {\n  while (str.length < 4) {\n    str = \"0\".concat(str);\n  }\n\n  return str;\n}\n/**\n * Checks for flag-related errors, and strips/applies flags in a leading mode modifier. Offloads\n * the flag preparation logic from the `XRegExp` constructor.\n *\n * @private\n * @param {String} pattern Regex pattern, possibly with a leading mode modifier.\n * @param {String} flags Any combination of flags.\n * @returns {Object} Object with properties `pattern` and `flags`.\n */\n\n\nfunction prepareFlags(pattern, flags) {\n  // Recent browsers throw on duplicate flags, so copy this behavior for nonnative flags\n  if (clipDuplicates(flags) !== flags) {\n    throw new SyntaxError(\"Invalid duplicate regex flag \".concat(flags));\n  } // Strip and apply a leading mode modifier with any combination of flags except g or y\n\n\n  pattern = nativ.replace.call(pattern, /^\\(\\?([\\w$]+)\\)/, function ($0, $1) {\n    if (nativ.test.call(/[gy]/, $1)) {\n      throw new SyntaxError(\"Cannot use flag g or y in mode modifier \".concat($0));\n    } // Allow duplicate flags within the mode modifier\n\n\n    flags = clipDuplicates(flags + $1);\n    return '';\n  }); // Throw on unknown native or nonnative flags\n\n  var _iteratorNormalCompletion = true;\n  var _didIteratorError = false;\n  var _iteratorError = undefined;\n\n  try {\n    for (var _iterator = (0, _getIterator2.default)(flags), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n      var flag = _step.value;\n\n      if (!registeredFlags[flag]) {\n        throw new SyntaxError(\"Unknown regex flag \".concat(flag));\n      }\n    }\n  } catch (err) {\n    _didIteratorError = true;\n    _iteratorError = err;\n  } finally {\n    try {\n      if (!_iteratorNormalCompletion && _iterator.return != null) {\n        _iterator.return();\n      }\n    } finally {\n      if (_didIteratorError) {\n        throw _iteratorError;\n      }\n    }\n  }\n\n  return {\n    pattern: pattern,\n    flags: flags\n  };\n}\n/**\n * Prepares an options object from the given value.\n *\n * @private\n * @param {String|Object} value Value to convert to an options object.\n * @returns {Object} Options object.\n */\n\n\nfunction prepareOptions(value) {\n  var options = {};\n\n  if (isType(value, 'String')) {\n    XRegExp.forEach(value, /[^\\s,]+/, function (match) {\n      options[match] = true;\n    });\n    return options;\n  }\n\n  return value;\n}\n/**\n * Registers a flag so it doesn't throw an 'unknown flag' error.\n *\n * @private\n * @param {String} flag Single-character flag to register.\n */\n\n\nfunction registerFlag(flag) {\n  if (!/^[\\w$]$/.test(flag)) {\n    throw new Error('Flag must be a single character A-Za-z0-9_$');\n  }\n\n  registeredFlags[flag] = true;\n}\n/**\n * Runs built-in and custom regex syntax tokens in reverse insertion order at the specified\n * position, until a match is found.\n *\n * @private\n * @param {String} pattern Original pattern from which an XRegExp object is being built.\n * @param {String} flags Flags being used to construct the regex.\n * @param {Number} pos Position to search for tokens within `pattern`.\n * @param {Number} scope Regex scope to apply: 'default' or 'class'.\n * @param {Object} context Context object to use for token handler functions.\n * @returns {Object} Object with properties `matchLength`, `output`, and `reparse`; or `null`.\n */\n\n\nfunction runTokens(pattern, flags, pos, scope, context) {\n  var i = tokens.length;\n  var leadChar = pattern[pos];\n  var result = null;\n  var match;\n  var t; // Run in reverse insertion order\n\n  while (i--) {\n    t = tokens[i];\n\n    if (t.leadChar && t.leadChar !== leadChar || t.scope !== scope && t.scope !== 'all' || t.flag && !(flags.indexOf(t.flag) !== -1)) {\n      continue;\n    }\n\n    match = XRegExp.exec(pattern, t.regex, pos, 'sticky');\n\n    if (match) {\n      result = {\n        matchLength: match[0].length,\n        output: t.handler.call(context, match, scope, flags),\n        reparse: t.reparse\n      }; // Finished with token tests\n\n      break;\n    }\n  }\n\n  return result;\n}\n/**\n * Enables or disables implicit astral mode opt-in. When enabled, flag A is automatically added to\n * all new regexes created by XRegExp. This causes an error to be thrown when creating regexes if\n * the Unicode Base addon is not available, since flag A is registered by that addon.\n *\n * @private\n * @param {Boolean} on `true` to enable; `false` to disable.\n */\n\n\nfunction setAstral(on) {\n  features.astral = on;\n}\n/**\n * Adds named capture groups to the `groups` property of match arrays. See here for details:\n * https://github.com/tc39/proposal-regexp-named-groups\n *\n * @private\n * @param {Boolean} on `true` to enable; `false` to disable.\n */\n\n\nfunction setNamespacing(on) {\n  features.namespacing = on;\n}\n/**\n * Returns the object, or throws an error if it is `null` or `undefined`. This is used to follow\n * the ES5 abstract operation `ToObject`.\n *\n * @private\n * @param {*} value Object to check and return.\n * @returns {*} The provided object.\n */\n\n\nfunction toObject(value) {\n  // null or undefined\n  if (value == null) {\n    throw new TypeError('Cannot convert null or undefined to object');\n  }\n\n  return value;\n} // ==--------------------------==\n// Constructor\n// ==--------------------------==\n\n/**\n * Creates an extended regular expression object for matching text with a pattern. Differs from a\n * native regular expression in that additional syntax and flags are supported. The returned object\n * is in fact a native `RegExp` and works with all native methods.\n *\n * @class XRegExp\n * @constructor\n * @param {String|RegExp} pattern Regex pattern string, or an existing regex object to copy.\n * @param {String} [flags] Any combination of flags.\n *   Native flags:\n *     - `g` - global\n *     - `i` - ignore case\n *     - `m` - multiline anchors\n *     - `u` - unicode (ES6)\n *     - `y` - sticky (Firefox 3+, ES6)\n *   Additional XRegExp flags:\n *     - `n` - explicit capture\n *     - `s` - dot matches all (aka singleline)\n *     - `x` - free-spacing and line comments (aka extended)\n *     - `A` - astral (requires the Unicode Base addon)\n *   Flags cannot be provided when constructing one `RegExp` from another.\n * @returns {RegExp} Extended regular expression object.\n * @example\n *\n * // With named capture and flag x\n * XRegExp(`(?<year>  [0-9]{4} ) -?  # year\n *          (?<month> [0-9]{2} ) -?  # month\n *          (?<day>   [0-9]{2} )     # day`, 'x');\n *\n * // Providing a regex object copies it. Native regexes are recompiled using native (not XRegExp)\n * // syntax. Copies maintain extended data, are augmented with `XRegExp.prototype` properties, and\n * // have fresh `lastIndex` properties (set to zero).\n * XRegExp(/regex/);\n */\n\n\nfunction XRegExp(pattern, flags) {\n  if (XRegExp.isRegExp(pattern)) {\n    if (flags !== undefined) {\n      throw new TypeError('Cannot supply flags when copying a RegExp');\n    }\n\n    return copyRegex(pattern);\n  } // Copy the argument behavior of `RegExp`\n\n\n  pattern = pattern === undefined ? '' : String(pattern);\n  flags = flags === undefined ? '' : String(flags);\n\n  if (XRegExp.isInstalled('astral') && !(flags.indexOf('A') !== -1)) {\n    // This causes an error to be thrown if the Unicode Base addon is not available\n    flags += 'A';\n  }\n\n  if (!patternCache[pattern]) {\n    patternCache[pattern] = {};\n  }\n\n  if (!patternCache[pattern][flags]) {\n    var context = {\n      hasNamedCapture: false,\n      captureNames: []\n    };\n    var scope = defaultScope;\n    var output = '';\n    var pos = 0;\n    var result; // Check for flag-related errors, and strip/apply flags in a leading mode modifier\n\n    var applied = prepareFlags(pattern, flags);\n    var appliedPattern = applied.pattern;\n    var appliedFlags = applied.flags; // Use XRegExp's tokens to translate the pattern to a native regex pattern.\n    // `appliedPattern.length` may change on each iteration if tokens use `reparse`\n\n    while (pos < appliedPattern.length) {\n      do {\n        // Check for custom tokens at the current position\n        result = runTokens(appliedPattern, appliedFlags, pos, scope, context); // If the matched token used the `reparse` option, splice its output into the\n        // pattern before running tokens again at the same position\n\n        if (result && result.reparse) {\n          appliedPattern = appliedPattern.slice(0, pos) + result.output + appliedPattern.slice(pos + result.matchLength);\n        }\n      } while (result && result.reparse);\n\n      if (result) {\n        output += result.output;\n        pos += result.matchLength || 1;\n      } else {\n        // Get the native token at the current position\n        var _XRegExp$exec = XRegExp.exec(appliedPattern, nativeTokens[scope], pos, 'sticky'),\n            _XRegExp$exec2 = (0, _slicedToArray2.default)(_XRegExp$exec, 1),\n            token = _XRegExp$exec2[0];\n\n        output += token;\n        pos += token.length;\n\n        if (token === '[' && scope === defaultScope) {\n          scope = classScope;\n        } else if (token === ']' && scope === classScope) {\n          scope = defaultScope;\n        }\n      }\n    }\n\n    patternCache[pattern][flags] = {\n      // Use basic cleanup to collapse repeated empty groups like `(?:)(?:)` to `(?:)`. Empty\n      // groups are sometimes inserted during regex transpilation in order to keep tokens\n      // separated. However, more than one empty group in a row is never needed.\n      pattern: nativ.replace.call(output, /(?:\\(\\?:\\))+/g, '(?:)'),\n      // Strip all but native flags\n      flags: nativ.replace.call(appliedFlags, /[^gimuy]+/g, ''),\n      // `context.captureNames` has an item for each capturing group, even if unnamed\n      captures: context.hasNamedCapture ? context.captureNames : null\n    };\n  }\n\n  var generated = patternCache[pattern][flags];\n  return augment(new RegExp(generated.pattern, generated.flags), generated.captures, pattern, flags);\n} // Add `RegExp.prototype` to the prototype chain\n\n\nXRegExp.prototype = /(?:)/; // ==--------------------------==\n// Public properties\n// ==--------------------------==\n\n/**\n * The XRegExp version number as a string containing three dot-separated parts. For example,\n * '2.0.0-beta-3'.\n *\n * @static\n * @memberOf XRegExp\n * @type String\n */\n\nXRegExp.version = '4.2.4'; // ==--------------------------==\n// Public methods\n// ==--------------------------==\n// Intentionally undocumented; used in tests and addons\n\nXRegExp._clipDuplicates = clipDuplicates;\nXRegExp._hasNativeFlag = hasNativeFlag;\nXRegExp._dec = dec;\nXRegExp._hex = hex;\nXRegExp._pad4 = pad4;\n/**\n * Extends XRegExp syntax and allows custom flags. This is used internally and can be used to\n * create XRegExp addons. If more than one token can match the same string, the last added wins.\n *\n * @memberOf XRegExp\n * @param {RegExp} regex Regex object that matches the new token.\n * @param {Function} handler Function that returns a new pattern string (using native regex syntax)\n *   to replace the matched token within all future XRegExp regexes. Has access to persistent\n *   properties of the regex being built, through `this`. Invoked with three arguments:\n *   - The match array, with named backreference properties.\n *   - The regex scope where the match was found: 'default' or 'class'.\n *   - The flags used by the regex, including any flags in a leading mode modifier.\n *   The handler function becomes part of the XRegExp construction process, so be careful not to\n *   construct XRegExps within the function or you will trigger infinite recursion.\n * @param {Object} [options] Options object with optional properties:\n *   - `scope` {String} Scope where the token applies: 'default', 'class', or 'all'.\n *   - `flag` {String} Single-character flag that triggers the token. This also registers the\n *     flag, which prevents XRegExp from throwing an 'unknown flag' error when the flag is used.\n *   - `optionalFlags` {String} Any custom flags checked for within the token `handler` that are\n *     not required to trigger the token. This registers the flags, to prevent XRegExp from\n *     throwing an 'unknown flag' error when any of the flags are used.\n *   - `reparse` {Boolean} Whether the `handler` function's output should not be treated as\n *     final, and instead be reparseable by other tokens (including the current token). Allows\n *     token chaining or deferring.\n *   - `leadChar` {String} Single character that occurs at the beginning of any successful match\n *     of the token (not always applicable). This doesn't change the behavior of the token unless\n *     you provide an erroneous value. However, providing it can increase the token's performance\n *     since the token can be skipped at any positions where this character doesn't appear.\n * @example\n *\n * // Basic usage: Add \\a for the ALERT control code\n * XRegExp.addToken(\n *   /\\\\a/,\n *   () => '\\\\x07',\n *   {scope: 'all'}\n * );\n * XRegExp('\\\\a[\\\\a-\\\\n]+').test('\\x07\\n\\x07'); // -> true\n *\n * // Add the U (ungreedy) flag from PCRE and RE2, which reverses greedy and lazy quantifiers.\n * // Since `scope` is not specified, it uses 'default' (i.e., transformations apply outside of\n * // character classes only)\n * XRegExp.addToken(\n *   /([?*+]|{\\d+(?:,\\d*)?})(\\??)/,\n *   (match) => `${match[1]}${match[2] ? '' : '?'}`,\n *   {flag: 'U'}\n * );\n * XRegExp('a+', 'U').exec('aaa')[0]; // -> 'a'\n * XRegExp('a+?', 'U').exec('aaa')[0]; // -> 'aaa'\n */\n\nXRegExp.addToken = function (regex, handler, options) {\n  options = options || {};\n  var _options = options,\n      optionalFlags = _options.optionalFlags;\n\n  if (options.flag) {\n    registerFlag(options.flag);\n  }\n\n  if (optionalFlags) {\n    optionalFlags = nativ.split.call(optionalFlags, '');\n    var _iteratorNormalCompletion2 = true;\n    var _didIteratorError2 = false;\n    var _iteratorError2 = undefined;\n\n    try {\n      for (var _iterator2 = (0, _getIterator2.default)(optionalFlags), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n        var flag = _step2.value;\n        registerFlag(flag);\n      }\n    } catch (err) {\n      _didIteratorError2 = true;\n      _iteratorError2 = err;\n    } finally {\n      try {\n        if (!_iteratorNormalCompletion2 && _iterator2.return != null) {\n          _iterator2.return();\n        }\n      } finally {\n        if (_didIteratorError2) {\n          throw _iteratorError2;\n        }\n      }\n    }\n  } // Add to the private list of syntax tokens\n\n\n  tokens.push({\n    regex: copyRegex(regex, {\n      addG: true,\n      addY: hasNativeY,\n      isInternalOnly: true\n    }),\n    handler: handler,\n    scope: options.scope || defaultScope,\n    flag: options.flag,\n    reparse: options.reparse,\n    leadChar: options.leadChar\n  }); // Reset the pattern cache used by the `XRegExp` constructor, since the same pattern and flags\n  // might now produce different results\n\n  XRegExp.cache.flush('patterns');\n};\n/**\n * Caches and returns the result of calling `XRegExp(pattern, flags)`. On any subsequent call with\n * the same pattern and flag combination, the cached copy of the regex is returned.\n *\n * @memberOf XRegExp\n * @param {String} pattern Regex pattern string.\n * @param {String} [flags] Any combination of XRegExp flags.\n * @returns {RegExp} Cached XRegExp object.\n * @example\n *\n * while (match = XRegExp.cache('.', 'gs').exec(str)) {\n *   // The regex is compiled once only\n * }\n */\n\n\nXRegExp.cache = function (pattern, flags) {\n  if (!regexCache[pattern]) {\n    regexCache[pattern] = {};\n  }\n\n  return regexCache[pattern][flags] || (regexCache[pattern][flags] = XRegExp(pattern, flags));\n}; // Intentionally undocumented; used in tests\n\n\nXRegExp.cache.flush = function (cacheName) {\n  if (cacheName === 'patterns') {\n    // Flush the pattern cache used by the `XRegExp` constructor\n    patternCache = {};\n  } else {\n    // Flush the regex cache populated by `XRegExp.cache`\n    regexCache = {};\n  }\n};\n/**\n * Escapes any regular expression metacharacters, for use when matching literal strings. The result\n * can safely be used at any point within a regex that uses any flags.\n *\n * @memberOf XRegExp\n * @param {String} str String to escape.\n * @returns {String} String with regex metacharacters escaped.\n * @example\n *\n * XRegExp.escape('Escaped? <.>');\n * // -> 'Escaped\\?\\ <\\.>'\n */\n\n\nXRegExp.escape = function (str) {\n  return nativ.replace.call(toObject(str), /[-\\[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n};\n/**\n * Executes a regex search in a specified string. Returns a match array or `null`. If the provided\n * regex uses named capture, named backreference properties are included on the match array.\n * Optional `pos` and `sticky` arguments specify the search start position, and whether the match\n * must start at the specified position only. The `lastIndex` property of the provided regex is not\n * used, but is updated for compatibility. Also fixes browser bugs compared to the native\n * `RegExp.prototype.exec` and can be used reliably cross-browser.\n *\n * @memberOf XRegExp\n * @param {String} str String to search.\n * @param {RegExp} regex Regex to search with.\n * @param {Number} [pos=0] Zero-based index at which to start the search.\n * @param {Boolean|String} [sticky=false] Whether the match must start at the specified position\n *   only. The string `'sticky'` is accepted as an alternative to `true`.\n * @returns {Array} Match array with named backreference properties, or `null`.\n * @example\n *\n * // Basic use, with named backreference\n * let match = XRegExp.exec('U+2620', XRegExp('U\\\\+(?<hex>[0-9A-F]{4})'));\n * match.hex; // -> '2620'\n *\n * // With pos and sticky, in a loop\n * let pos = 2, result = [], match;\n * while (match = XRegExp.exec('<1><2><3><4>5<6>', /<(\\d)>/, pos, 'sticky')) {\n *   result.push(match[1]);\n *   pos = match.index + match[0].length;\n * }\n * // result -> ['2', '3', '4']\n */\n\n\nXRegExp.exec = function (str, regex, pos, sticky) {\n  var cacheKey = 'g';\n  var addY = false;\n  var fakeY = false;\n  var match;\n  addY = hasNativeY && !!(sticky || regex.sticky && sticky !== false);\n\n  if (addY) {\n    cacheKey += 'y';\n  } else if (sticky) {\n    // Simulate sticky matching by appending an empty capture to the original regex. The\n    // resulting regex will succeed no matter what at the current index (set with `lastIndex`),\n    // and will not search the rest of the subject string. We'll know that the original regex\n    // has failed if that last capture is `''` rather than `undefined` (i.e., if that last\n    // capture participated in the match).\n    fakeY = true;\n    cacheKey += 'FakeY';\n  }\n\n  regex[REGEX_DATA] = regex[REGEX_DATA] || {}; // Shares cached copies with `XRegExp.match`/`replace`\n\n  var r2 = regex[REGEX_DATA][cacheKey] || (regex[REGEX_DATA][cacheKey] = copyRegex(regex, {\n    addG: true,\n    addY: addY,\n    source: fakeY ? \"\".concat(regex.source, \"|()\") : undefined,\n    removeY: sticky === false,\n    isInternalOnly: true\n  }));\n  pos = pos || 0;\n  r2.lastIndex = pos; // Fixed `exec` required for `lastIndex` fix, named backreferences, etc.\n\n  match = fixed.exec.call(r2, str); // Get rid of the capture added by the pseudo-sticky matcher if needed. An empty string means\n  // the original regexp failed (see above).\n\n  if (fakeY && match && match.pop() === '') {\n    match = null;\n  }\n\n  if (regex.global) {\n    regex.lastIndex = match ? r2.lastIndex : 0;\n  }\n\n  return match;\n};\n/**\n * Executes a provided function once per regex match. Searches always start at the beginning of the\n * string and continue until the end, regardless of the state of the regex's `global` property and\n * initial `lastIndex`.\n *\n * @memberOf XRegExp\n * @param {String} str String to search.\n * @param {RegExp} regex Regex to search with.\n * @param {Function} callback Function to execute for each match. Invoked with four arguments:\n *   - The match array, with named backreference properties.\n *   - The zero-based match index.\n *   - The string being traversed.\n *   - The regex object being used to traverse the string.\n * @example\n *\n * // Extracts every other digit from a string\n * const evens = [];\n * XRegExp.forEach('1a2345', /\\d/, (match, i) => {\n *   if (i % 2) evens.push(+match[0]);\n * });\n * // evens -> [2, 4]\n */\n\n\nXRegExp.forEach = function (str, regex, callback) {\n  var pos = 0;\n  var i = -1;\n  var match;\n\n  while (match = XRegExp.exec(str, regex, pos)) {\n    // Because `regex` is provided to `callback`, the function could use the deprecated/\n    // nonstandard `RegExp.prototype.compile` to mutate the regex. However, since `XRegExp.exec`\n    // doesn't use `lastIndex` to set the search position, this can't lead to an infinite loop,\n    // at least. Actually, because of the way `XRegExp.exec` caches globalized versions of\n    // regexes, mutating the regex will not have any effect on the iteration or matched strings,\n    // which is a nice side effect that brings extra safety.\n    callback(match, ++i, str, regex);\n    pos = match.index + (match[0].length || 1);\n  }\n};\n/**\n * Copies a regex object and adds flag `g`. The copy maintains extended data, is augmented with\n * `XRegExp.prototype` properties, and has a fresh `lastIndex` property (set to zero). Native\n * regexes are not recompiled using XRegExp syntax.\n *\n * @memberOf XRegExp\n * @param {RegExp} regex Regex to globalize.\n * @returns {RegExp} Copy of the provided regex with flag `g` added.\n * @example\n *\n * const globalCopy = XRegExp.globalize(/regex/);\n * globalCopy.global; // -> true\n */\n\n\nXRegExp.globalize = function (regex) {\n  return copyRegex(regex, {\n    addG: true\n  });\n};\n/**\n * Installs optional features according to the specified options. Can be undone using\n * `XRegExp.uninstall`.\n *\n * @memberOf XRegExp\n * @param {Object|String} options Options object or string.\n * @example\n *\n * // With an options object\n * XRegExp.install({\n *   // Enables support for astral code points in Unicode addons (implicitly sets flag A)\n *   astral: true,\n *\n *   // Adds named capture groups to the `groups` property of matches\n *   namespacing: true\n * });\n *\n * // With an options string\n * XRegExp.install('astral namespacing');\n */\n\n\nXRegExp.install = function (options) {\n  options = prepareOptions(options);\n\n  if (!features.astral && options.astral) {\n    setAstral(true);\n  }\n\n  if (!features.namespacing && options.namespacing) {\n    setNamespacing(true);\n  }\n};\n/**\n * Checks whether an individual optional feature is installed.\n *\n * @memberOf XRegExp\n * @param {String} feature Name of the feature to check. One of:\n *   - `astral`\n *   - `namespacing`\n * @returns {Boolean} Whether the feature is installed.\n * @example\n *\n * XRegExp.isInstalled('astral');\n */\n\n\nXRegExp.isInstalled = function (feature) {\n  return !!features[feature];\n};\n/**\n * Returns `true` if an object is a regex; `false` if it isn't. This works correctly for regexes\n * created in another frame, when `instanceof` and `constructor` checks would fail.\n *\n * @memberOf XRegExp\n * @param {*} value Object to check.\n * @returns {Boolean} Whether the object is a `RegExp` object.\n * @example\n *\n * XRegExp.isRegExp('string'); // -> false\n * XRegExp.isRegExp(/regex/i); // -> true\n * XRegExp.isRegExp(RegExp('^', 'm')); // -> true\n * XRegExp.isRegExp(XRegExp('(?s).')); // -> true\n */\n\n\nXRegExp.isRegExp = function (value) {\n  return toString.call(value) === '[object RegExp]';\n}; // isType(value, 'RegExp');\n\n/**\n * Returns the first matched string, or in global mode, an array containing all matched strings.\n * This is essentially a more convenient re-implementation of `String.prototype.match` that gives\n * the result types you actually want (string instead of `exec`-style array in match-first mode,\n * and an empty array instead of `null` when no matches are found in match-all mode). It also lets\n * you override flag g and ignore `lastIndex`, and fixes browser bugs.\n *\n * @memberOf XRegExp\n * @param {String} str String to search.\n * @param {RegExp} regex Regex to search with.\n * @param {String} [scope='one'] Use 'one' to return the first match as a string. Use 'all' to\n *   return an array of all matched strings. If not explicitly specified and `regex` uses flag g,\n *   `scope` is 'all'.\n * @returns {String|Array} In match-first mode: First match as a string, or `null`. In match-all\n *   mode: Array of all matched strings, or an empty array.\n * @example\n *\n * // Match first\n * XRegExp.match('abc', /\\w/); // -> 'a'\n * XRegExp.match('abc', /\\w/g, 'one'); // -> 'a'\n * XRegExp.match('abc', /x/g, 'one'); // -> null\n *\n * // Match all\n * XRegExp.match('abc', /\\w/g); // -> ['a', 'b', 'c']\n * XRegExp.match('abc', /\\w/, 'all'); // -> ['a', 'b', 'c']\n * XRegExp.match('abc', /x/, 'all'); // -> []\n */\n\n\nXRegExp.match = function (str, regex, scope) {\n  var global = regex.global && scope !== 'one' || scope === 'all';\n  var cacheKey = (global ? 'g' : '') + (regex.sticky ? 'y' : '') || 'noGY';\n  regex[REGEX_DATA] = regex[REGEX_DATA] || {}; // Shares cached copies with `XRegExp.exec`/`replace`\n\n  var r2 = regex[REGEX_DATA][cacheKey] || (regex[REGEX_DATA][cacheKey] = copyRegex(regex, {\n    addG: !!global,\n    removeG: scope === 'one',\n    isInternalOnly: true\n  }));\n  var result = nativ.match.call(toObject(str), r2);\n\n  if (regex.global) {\n    regex.lastIndex = scope === 'one' && result ? // Can't use `r2.lastIndex` since `r2` is nonglobal in this case\n    result.index + result[0].length : 0;\n  }\n\n  return global ? result || [] : result && result[0];\n};\n/**\n * Retrieves the matches from searching a string using a chain of regexes that successively search\n * within previous matches. The provided `chain` array can contain regexes and or objects with\n * `regex` and `backref` properties. When a backreference is specified, the named or numbered\n * backreference is passed forward to the next regex or returned.\n *\n * @memberOf XRegExp\n * @param {String} str String to search.\n * @param {Array} chain Regexes that each search for matches within preceding results.\n * @returns {Array} Matches by the last regex in the chain, or an empty array.\n * @example\n *\n * // Basic usage; matches numbers within <b> tags\n * XRegExp.matchChain('1 <b>2</b> 3 <b>4 a 56</b>', [\n *   XRegExp('(?is)<b>.*?</b>'),\n *   /\\d+/\n * ]);\n * // -> ['2', '4', '56']\n *\n * // Passing forward and returning specific backreferences\n * html = '<a href=\"http://xregexp.com/api/\">XRegExp</a>\\\n *         <a href=\"http://www.google.com/\">Google</a>';\n * XRegExp.matchChain(html, [\n *   {regex: /<a href=\"([^\"]+)\">/i, backref: 1},\n *   {regex: XRegExp('(?i)^https?://(?<domain>[^/?#]+)'), backref: 'domain'}\n * ]);\n * // -> ['xregexp.com', 'www.google.com']\n */\n\n\nXRegExp.matchChain = function (str, chain) {\n  return function recurseChain(values, level) {\n    var item = chain[level].regex ? chain[level] : {\n      regex: chain[level]\n    };\n    var matches = [];\n\n    function addMatch(match) {\n      if (item.backref) {\n        var ERR_UNDEFINED_GROUP = \"Backreference to undefined group: \".concat(item.backref);\n        var isNamedBackref = isNaN(item.backref);\n\n        if (isNamedBackref && XRegExp.isInstalled('namespacing')) {\n          // `groups` has `null` as prototype, so using `in` instead of `hasOwnProperty`\n          if (!(item.backref in match.groups)) {\n            throw new ReferenceError(ERR_UNDEFINED_GROUP);\n          }\n        } else if (!match.hasOwnProperty(item.backref)) {\n          throw new ReferenceError(ERR_UNDEFINED_GROUP);\n        }\n\n        var backrefValue = isNamedBackref && XRegExp.isInstalled('namespacing') ? match.groups[item.backref] : match[item.backref];\n        matches.push(backrefValue || '');\n      } else {\n        matches.push(match[0]);\n      }\n    }\n\n    var _iteratorNormalCompletion3 = true;\n    var _didIteratorError3 = false;\n    var _iteratorError3 = undefined;\n\n    try {\n      for (var _iterator3 = (0, _getIterator2.default)(values), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n        var value = _step3.value;\n        XRegExp.forEach(value, item.regex, addMatch);\n      }\n    } catch (err) {\n      _didIteratorError3 = true;\n      _iteratorError3 = err;\n    } finally {\n      try {\n        if (!_iteratorNormalCompletion3 && _iterator3.return != null) {\n          _iterator3.return();\n        }\n      } finally {\n        if (_didIteratorError3) {\n          throw _iteratorError3;\n        }\n      }\n    }\n\n    return level === chain.length - 1 || !matches.length ? matches : recurseChain(matches, level + 1);\n  }([str], 0);\n};\n/**\n * Returns a new string with one or all matches of a pattern replaced. The pattern can be a string\n * or regex, and the replacement can be a string or a function to be called for each match. To\n * perform a global search and replace, use the optional `scope` argument or include flag g if using\n * a regex. Replacement strings can use `${n}` or `$<n>` for named and numbered backreferences.\n * Replacement functions can use named backreferences via `arguments[0].name`. Also fixes browser\n * bugs compared to the native `String.prototype.replace` and can be used reliably cross-browser.\n *\n * @memberOf XRegExp\n * @param {String} str String to search.\n * @param {RegExp|String} search Search pattern to be replaced.\n * @param {String|Function} replacement Replacement string or a function invoked to create it.\n *   Replacement strings can include special replacement syntax:\n *     - $$ - Inserts a literal $ character.\n *     - $&, $0 - Inserts the matched substring.\n *     - $` - Inserts the string that precedes the matched substring (left context).\n *     - $' - Inserts the string that follows the matched substring (right context).\n *     - $n, $nn - Where n/nn are digits referencing an existent capturing group, inserts\n *       backreference n/nn.\n *     - ${n}, $<n> - Where n is a name or any number of digits that reference an existent capturing\n *       group, inserts backreference n.\n *   Replacement functions are invoked with three or more arguments:\n *     - The matched substring (corresponds to $& above). Named backreferences are accessible as\n *       properties of this first argument.\n *     - 0..n arguments, one for each backreference (corresponding to $1, $2, etc. above).\n *     - The zero-based index of the match within the total search string.\n *     - The total string being searched.\n * @param {String} [scope='one'] Use 'one' to replace the first match only, or 'all'. If not\n *   explicitly specified and using a regex with flag g, `scope` is 'all'.\n * @returns {String} New string with one or all matches replaced.\n * @example\n *\n * // Regex search, using named backreferences in replacement string\n * const name = XRegExp('(?<first>\\\\w+) (?<last>\\\\w+)');\n * XRegExp.replace('John Smith', name, '$<last>, $<first>');\n * // -> 'Smith, John'\n *\n * // Regex search, using named backreferences in replacement function\n * XRegExp.replace('John Smith', name, (match) => `${match.last}, ${match.first}`);\n * // -> 'Smith, John'\n *\n * // String search, with replace-all\n * XRegExp.replace('RegExp builds RegExps', 'RegExp', 'XRegExp', 'all');\n * // -> 'XRegExp builds XRegExps'\n */\n\n\nXRegExp.replace = function (str, search, replacement, scope) {\n  var isRegex = XRegExp.isRegExp(search);\n  var global = search.global && scope !== 'one' || scope === 'all';\n  var cacheKey = (global ? 'g' : '') + (search.sticky ? 'y' : '') || 'noGY';\n  var s2 = search;\n\n  if (isRegex) {\n    search[REGEX_DATA] = search[REGEX_DATA] || {}; // Shares cached copies with `XRegExp.exec`/`match`. Since a copy is used, `search`'s\n    // `lastIndex` isn't updated *during* replacement iterations\n\n    s2 = search[REGEX_DATA][cacheKey] || (search[REGEX_DATA][cacheKey] = copyRegex(search, {\n      addG: !!global,\n      removeG: scope === 'one',\n      isInternalOnly: true\n    }));\n  } else if (global) {\n    s2 = new RegExp(XRegExp.escape(String(search)), 'g');\n  } // Fixed `replace` required for named backreferences, etc.\n\n\n  var result = fixed.replace.call(toObject(str), s2, replacement);\n\n  if (isRegex && search.global) {\n    // Fixes IE, Safari bug (last tested IE 9, Safari 5.1)\n    search.lastIndex = 0;\n  }\n\n  return result;\n};\n/**\n * Performs batch processing of string replacements. Used like `XRegExp.replace`, but accepts an\n * array of replacement details. Later replacements operate on the output of earlier replacements.\n * Replacement details are accepted as an array with a regex or string to search for, the\n * replacement string or function, and an optional scope of 'one' or 'all'. Uses the XRegExp\n * replacement text syntax, which supports named backreference properties via `${name}` or\n * `$<name>`.\n *\n * @memberOf XRegExp\n * @param {String} str String to search.\n * @param {Array} replacements Array of replacement detail arrays.\n * @returns {String} New string with all replacements.\n * @example\n *\n * str = XRegExp.replaceEach(str, [\n *   [XRegExp('(?<name>a)'), 'z${name}'],\n *   [/b/gi, 'y'],\n *   [/c/g, 'x', 'one'], // scope 'one' overrides /g\n *   [/d/, 'w', 'all'],  // scope 'all' overrides lack of /g\n *   ['e', 'v', 'all'],  // scope 'all' allows replace-all for strings\n *   [/f/g, ($0) => $0.toUpperCase()]\n * ]);\n */\n\n\nXRegExp.replaceEach = function (str, replacements) {\n  var _iteratorNormalCompletion4 = true;\n  var _didIteratorError4 = false;\n  var _iteratorError4 = undefined;\n\n  try {\n    for (var _iterator4 = (0, _getIterator2.default)(replacements), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n      var r = _step4.value;\n      str = XRegExp.replace(str, r[0], r[1], r[2]);\n    }\n  } catch (err) {\n    _didIteratorError4 = true;\n    _iteratorError4 = err;\n  } finally {\n    try {\n      if (!_iteratorNormalCompletion4 && _iterator4.return != null) {\n        _iterator4.return();\n      }\n    } finally {\n      if (_didIteratorError4) {\n        throw _iteratorError4;\n      }\n    }\n  }\n\n  return str;\n};\n/**\n * Splits a string into an array of strings using a regex or string separator. Matches of the\n * separator are not included in the result array. However, if `separator` is a regex that contains\n * capturing groups, backreferences are spliced into the result each time `separator` is matched.\n * Fixes browser bugs compared to the native `String.prototype.split` and can be used reliably\n * cross-browser.\n *\n * @memberOf XRegExp\n * @param {String} str String to split.\n * @param {RegExp|String} separator Regex or string to use for separating the string.\n * @param {Number} [limit] Maximum number of items to include in the result array.\n * @returns {Array} Array of substrings.\n * @example\n *\n * // Basic use\n * XRegExp.split('a b c', ' ');\n * // -> ['a', 'b', 'c']\n *\n * // With limit\n * XRegExp.split('a b c', ' ', 2);\n * // -> ['a', 'b']\n *\n * // Backreferences in result array\n * XRegExp.split('..word1..', /([a-z]+)(\\d+)/i);\n * // -> ['..', 'word', '1', '..']\n */\n\n\nXRegExp.split = function (str, separator, limit) {\n  return fixed.split.call(toObject(str), separator, limit);\n};\n/**\n * Executes a regex search in a specified string. Returns `true` or `false`. Optional `pos` and\n * `sticky` arguments specify the search start position, and whether the match must start at the\n * specified position only. The `lastIndex` property of the provided regex is not used, but is\n * updated for compatibility. Also fixes browser bugs compared to the native\n * `RegExp.prototype.test` and can be used reliably cross-browser.\n *\n * @memberOf XRegExp\n * @param {String} str String to search.\n * @param {RegExp} regex Regex to search with.\n * @param {Number} [pos=0] Zero-based index at which to start the search.\n * @param {Boolean|String} [sticky=false] Whether the match must start at the specified position\n *   only. The string `'sticky'` is accepted as an alternative to `true`.\n * @returns {Boolean} Whether the regex matched the provided value.\n * @example\n *\n * // Basic use\n * XRegExp.test('abc', /c/); // -> true\n *\n * // With pos and sticky\n * XRegExp.test('abc', /c/, 0, 'sticky'); // -> false\n * XRegExp.test('abc', /c/, 2, 'sticky'); // -> true\n */\n// Do this the easy way :-)\n\n\nXRegExp.test = function (str, regex, pos, sticky) {\n  return !!XRegExp.exec(str, regex, pos, sticky);\n};\n/**\n * Uninstalls optional features according to the specified options. All optional features start out\n * uninstalled, so this is used to undo the actions of `XRegExp.install`.\n *\n * @memberOf XRegExp\n * @param {Object|String} options Options object or string.\n * @example\n *\n * // With an options object\n * XRegExp.uninstall({\n *   // Disables support for astral code points in Unicode addons\n *   astral: true,\n *\n *   // Don't add named capture groups to the `groups` property of matches\n *   namespacing: true\n * });\n *\n * // With an options string\n * XRegExp.uninstall('astral namespacing');\n */\n\n\nXRegExp.uninstall = function (options) {\n  options = prepareOptions(options);\n\n  if (features.astral && options.astral) {\n    setAstral(false);\n  }\n\n  if (features.namespacing && options.namespacing) {\n    setNamespacing(false);\n  }\n};\n/**\n * Returns an XRegExp object that is the union of the given patterns. Patterns can be provided as\n * regex objects or strings. Metacharacters are escaped in patterns provided as strings.\n * Backreferences in provided regex objects are automatically renumbered to work correctly within\n * the larger combined pattern. Native flags used by provided regexes are ignored in favor of the\n * `flags` argument.\n *\n * @memberOf XRegExp\n * @param {Array} patterns Regexes and strings to combine.\n * @param {String} [flags] Any combination of XRegExp flags.\n * @param {Object} [options] Options object with optional properties:\n *   - `conjunction` {String} Type of conjunction to use: 'or' (default) or 'none'.\n * @returns {RegExp} Union of the provided regexes and strings.\n * @example\n *\n * XRegExp.union(['a+b*c', /(dogs)\\1/, /(cats)\\1/], 'i');\n * // -> /a\\+b\\*c|(dogs)\\1|(cats)\\2/i\n *\n * XRegExp.union([/man/, /bear/, /pig/], 'i', {conjunction: 'none'});\n * // -> /manbearpig/i\n */\n\n\nXRegExp.union = function (patterns, flags, options) {\n  options = options || {};\n  var conjunction = options.conjunction || 'or';\n  var numCaptures = 0;\n  var numPriorCaptures;\n  var captureNames;\n\n  function rewrite(match, paren, backref) {\n    var name = captureNames[numCaptures - numPriorCaptures]; // Capturing group\n\n    if (paren) {\n      ++numCaptures; // If the current capture has a name, preserve the name\n\n      if (name) {\n        return \"(?<\".concat(name, \">\");\n      } // Backreference\n\n    } else if (backref) {\n      // Rewrite the backreference\n      return \"\\\\\".concat(+backref + numPriorCaptures);\n    }\n\n    return match;\n  }\n\n  if (!(isType(patterns, 'Array') && patterns.length)) {\n    throw new TypeError('Must provide a nonempty array of patterns to merge');\n  }\n\n  var parts = /(\\()(?!\\?)|\\\\([1-9]\\d*)|\\\\[\\s\\S]|\\[(?:[^\\\\\\]]|\\\\[\\s\\S])*\\]/g;\n  var output = [];\n  var _iteratorNormalCompletion5 = true;\n  var _didIteratorError5 = false;\n  var _iteratorError5 = undefined;\n\n  try {\n    for (var _iterator5 = (0, _getIterator2.default)(patterns), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {\n      var pattern = _step5.value;\n\n      if (XRegExp.isRegExp(pattern)) {\n        numPriorCaptures = numCaptures;\n        captureNames = pattern[REGEX_DATA] && pattern[REGEX_DATA].captureNames || []; // Rewrite backreferences. Passing to XRegExp dies on octals and ensures patterns are\n        // independently valid; helps keep this simple. Named captures are put back\n\n        output.push(nativ.replace.call(XRegExp(pattern.source).source, parts, rewrite));\n      } else {\n        output.push(XRegExp.escape(pattern));\n      }\n    }\n  } catch (err) {\n    _didIteratorError5 = true;\n    _iteratorError5 = err;\n  } finally {\n    try {\n      if (!_iteratorNormalCompletion5 && _iterator5.return != null) {\n        _iterator5.return();\n      }\n    } finally {\n      if (_didIteratorError5) {\n        throw _iteratorError5;\n      }\n    }\n  }\n\n  var separator = conjunction === 'none' ? '' : '|';\n  return XRegExp(output.join(separator), flags);\n}; // ==--------------------------==\n// Fixed/extended native methods\n// ==--------------------------==\n\n/**\n * Adds named capture support (with backreferences returned as `result.name`), and fixes browser\n * bugs in the native `RegExp.prototype.exec`. Use via `XRegExp.exec`.\n *\n * @memberOf RegExp\n * @param {String} str String to search.\n * @returns {Array} Match array with named backreference properties, or `null`.\n */\n\n\nfixed.exec = function (str) {\n  var origLastIndex = this.lastIndex;\n  var match = nativ.exec.apply(this, arguments);\n\n  if (match) {\n    // Fix browsers whose `exec` methods don't return `undefined` for nonparticipating capturing\n    // groups. This fixes IE 5.5-8, but not IE 9's quirks mode or emulation of older IEs. IE 9\n    // in standards mode follows the spec.\n    if (!correctExecNpcg && match.length > 1 && match.indexOf('') !== -1) {\n      var r2 = copyRegex(this, {\n        removeG: true,\n        isInternalOnly: true\n      }); // Using `str.slice(match.index)` rather than `match[0]` in case lookahead allowed\n      // matching due to characters outside the match\n\n      nativ.replace.call(String(str).slice(match.index), r2, function () {\n        var len = arguments.length; // Skip index 0 and the last 2\n\n        for (var i = 1; i < len - 2; ++i) {\n          if ((i < 0 || arguments.length <= i ? undefined : arguments[i]) === undefined) {\n            match[i] = undefined;\n          }\n        }\n      });\n    } // Attach named capture properties\n\n\n    var groupsObject = match;\n\n    if (XRegExp.isInstalled('namespacing')) {\n      // https://tc39.github.io/proposal-regexp-named-groups/#sec-regexpbuiltinexec\n      match.groups = (0, _create.default)(null);\n      groupsObject = match.groups;\n    }\n\n    if (this[REGEX_DATA] && this[REGEX_DATA].captureNames) {\n      // Skip index 0\n      for (var i = 1; i < match.length; ++i) {\n        var name = this[REGEX_DATA].captureNames[i - 1];\n\n        if (name) {\n          groupsObject[name] = match[i];\n        }\n      }\n    } // Fix browsers that increment `lastIndex` after zero-length matches\n\n\n    if (this.global && !match[0].length && this.lastIndex > match.index) {\n      this.lastIndex = match.index;\n    }\n  }\n\n  if (!this.global) {\n    // Fixes IE, Opera bug (last tested IE 9, Opera 11.6)\n    this.lastIndex = origLastIndex;\n  }\n\n  return match;\n};\n/**\n * Fixes browser bugs in the native `RegExp.prototype.test`.\n *\n * @memberOf RegExp\n * @param {String} str String to search.\n * @returns {Boolean} Whether the regex matched the provided value.\n */\n\n\nfixed.test = function (str) {\n  // Do this the easy way :-)\n  return !!fixed.exec.call(this, str);\n};\n/**\n * Adds named capture support (with backreferences returned as `result.name`), and fixes browser\n * bugs in the native `String.prototype.match`.\n *\n * @memberOf String\n * @param {RegExp|*} regex Regex to search with. If not a regex object, it is passed to `RegExp`.\n * @returns {Array} If `regex` uses flag g, an array of match strings or `null`. Without flag g,\n *   the result of calling `regex.exec(this)`.\n */\n\n\nfixed.match = function (regex) {\n  if (!XRegExp.isRegExp(regex)) {\n    // Use the native `RegExp` rather than `XRegExp`\n    regex = new RegExp(regex);\n  } else if (regex.global) {\n    var result = nativ.match.apply(this, arguments); // Fixes IE bug\n\n    regex.lastIndex = 0;\n    return result;\n  }\n\n  return fixed.exec.call(regex, toObject(this));\n};\n/**\n * Adds support for `${n}` (or `$<n>`) tokens for named and numbered backreferences in replacement\n * text, and provides named backreferences to replacement functions as `arguments[0].name`. Also\n * fixes browser bugs in replacement text syntax when performing a replacement using a nonregex\n * search value, and the value of a replacement regex's `lastIndex` property during replacement\n * iterations and upon completion. Note that this doesn't support SpiderMonkey's proprietary third\n * (`flags`) argument. Use via `XRegExp.replace`.\n *\n * @memberOf String\n * @param {RegExp|String} search Search pattern to be replaced.\n * @param {String|Function} replacement Replacement string or a function invoked to create it.\n * @returns {String} New string with one or all matches replaced.\n */\n\n\nfixed.replace = function (search, replacement) {\n  var isRegex = XRegExp.isRegExp(search);\n  var origLastIndex;\n  var captureNames;\n  var result;\n\n  if (isRegex) {\n    if (search[REGEX_DATA]) {\n      captureNames = search[REGEX_DATA].captureNames;\n    } // Only needed if `search` is nonglobal\n\n\n    origLastIndex = search.lastIndex;\n  } else {\n    search += ''; // Type-convert\n  } // Don't use `typeof`; some older browsers return 'function' for regex objects\n\n\n  if (isType(replacement, 'Function')) {\n    // Stringifying `this` fixes a bug in IE < 9 where the last argument in replacement\n    // functions isn't type-converted to a string\n    result = nativ.replace.call(String(this), search, function () {\n      for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n        args[_key] = arguments[_key];\n      }\n\n      if (captureNames) {\n        var groupsObject;\n\n        if (XRegExp.isInstalled('namespacing')) {\n          // https://tc39.github.io/proposal-regexp-named-groups/#sec-regexpbuiltinexec\n          groupsObject = (0, _create.default)(null);\n          args.push(groupsObject);\n        } else {\n          // Change the `args[0]` string primitive to a `String` object that can store\n          // properties. This really does need to use `String` as a constructor\n          args[0] = new String(args[0]);\n          groupsObject = args[0];\n        } // Store named backreferences\n\n\n        for (var i = 0; i < captureNames.length; ++i) {\n          if (captureNames[i]) {\n            groupsObject[captureNames[i]] = args[i + 1];\n          }\n        }\n      } // Update `lastIndex` before calling `replacement`. Fixes IE, Chrome, Firefox, Safari\n      // bug (last tested IE 9, Chrome 17, Firefox 11, Safari 5.1)\n\n\n      if (isRegex && search.global) {\n        search.lastIndex = args[args.length - 2] + args[0].length;\n      } // ES6 specs the context for replacement functions as `undefined`\n\n\n      return replacement.apply(void 0, args);\n    });\n  } else {\n    // Ensure that the last value of `args` will be a string when given nonstring `this`,\n    // while still throwing on null or undefined context\n    result = nativ.replace.call(this == null ? this : String(this), search, function () {\n      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        args[_key2] = arguments[_key2];\n      }\n\n      return nativ.replace.call(String(replacement), replacementToken, replacer);\n\n      function replacer($0, bracketed, angled, dollarToken) {\n        bracketed = bracketed || angled; // Named or numbered backreference with curly or angled braces\n\n        if (bracketed) {\n          // XRegExp behavior for `${n}` or `$<n>`:\n          // 1. Backreference to numbered capture, if `n` is an integer. Use `0` for the\n          //    entire match. Any number of leading zeros may be used.\n          // 2. Backreference to named capture `n`, if it exists and is not an integer\n          //    overridden by numbered capture. In practice, this does not overlap with\n          //    numbered capture since XRegExp does not allow named capture to use a bare\n          //    integer as the name.\n          // 3. If the name or number does not refer to an existing capturing group, it's\n          //    an error.\n          var n = +bracketed; // Type-convert; drop leading zeros\n\n          if (n <= args.length - 3) {\n            return args[n] || '';\n          } // Groups with the same name is an error, else would need `lastIndexOf`\n\n\n          n = captureNames ? captureNames.indexOf(bracketed) : -1;\n\n          if (n < 0) {\n            throw new SyntaxError(\"Backreference to undefined group \".concat($0));\n          }\n\n          return args[n + 1] || '';\n        } // Else, special variable or numbered backreference without curly braces\n\n\n        if (dollarToken === '$') {\n          // $$\n          return '$';\n        }\n\n        if (dollarToken === '&' || +dollarToken === 0) {\n          // $&, $0 (not followed by 1-9), $00\n          return args[0];\n        }\n\n        if (dollarToken === '`') {\n          // $` (left context)\n          return args[args.length - 1].slice(0, args[args.length - 2]);\n        }\n\n        if (dollarToken === \"'\") {\n          // $' (right context)\n          return args[args.length - 1].slice(args[args.length - 2] + args[0].length);\n        } // Else, numbered backreference without braces\n\n\n        dollarToken = +dollarToken; // Type-convert; drop leading zero\n        // XRegExp behavior for `$n` and `$nn`:\n        // - Backrefs end after 1 or 2 digits. Use `${..}` or `$<..>` for more digits.\n        // - `$1` is an error if no capturing groups.\n        // - `$10` is an error if less than 10 capturing groups. Use `${1}0` or `$<1>0`\n        //   instead.\n        // - `$01` is `$1` if at least one capturing group, else it's an error.\n        // - `$0` (not followed by 1-9) and `$00` are the entire match.\n        // Native behavior, for comparison:\n        // - Backrefs end after 1 or 2 digits. Cannot reference capturing group 100+.\n        // - `$1` is a literal `$1` if no capturing groups.\n        // - `$10` is `$1` followed by a literal `0` if less than 10 capturing groups.\n        // - `$01` is `$1` if at least one capturing group, else it's a literal `$01`.\n        // - `$0` is a literal `$0`.\n\n        if (!isNaN(dollarToken)) {\n          if (dollarToken > args.length - 3) {\n            throw new SyntaxError(\"Backreference to undefined group \".concat($0));\n          }\n\n          return args[dollarToken] || '';\n        } // `$` followed by an unsupported char is an error, unlike native JS\n\n\n        throw new SyntaxError(\"Invalid token \".concat($0));\n      }\n    });\n  }\n\n  if (isRegex) {\n    if (search.global) {\n      // Fixes IE, Safari bug (last tested IE 9, Safari 5.1)\n      search.lastIndex = 0;\n    } else {\n      // Fixes IE, Opera bug (last tested IE 9, Opera 11.6)\n      search.lastIndex = origLastIndex;\n    }\n  }\n\n  return result;\n};\n/**\n * Fixes browser bugs in the native `String.prototype.split`. Use via `XRegExp.split`.\n *\n * @memberOf String\n * @param {RegExp|String} separator Regex or string to use for separating the string.\n * @param {Number} [limit] Maximum number of items to include in the result array.\n * @returns {Array} Array of substrings.\n */\n\n\nfixed.split = function (separator, limit) {\n  if (!XRegExp.isRegExp(separator)) {\n    // Browsers handle nonregex split correctly, so use the faster native method\n    return nativ.split.apply(this, arguments);\n  }\n\n  var str = String(this);\n  var output = [];\n  var origLastIndex = separator.lastIndex;\n  var lastLastIndex = 0;\n  var lastLength; // Values for `limit`, per the spec:\n  // If undefined: pow(2,32) - 1\n  // If 0, Infinity, or NaN: 0\n  // If positive number: limit = floor(limit); if (limit >= pow(2,32)) limit -= pow(2,32);\n  // If negative number: pow(2,32) - floor(abs(limit))\n  // If other: Type-convert, then use the above rules\n  // This line fails in very strange ways for some values of `limit` in Opera 10.5-10.63, unless\n  // Opera Dragonfly is open (go figure). It works in at least Opera 9.5-10.1 and 11+\n\n  limit = (limit === undefined ? -1 : limit) >>> 0;\n  XRegExp.forEach(str, separator, function (match) {\n    // This condition is not the same as `if (match[0].length)`\n    if (match.index + match[0].length > lastLastIndex) {\n      output.push(str.slice(lastLastIndex, match.index));\n\n      if (match.length > 1 && match.index < str.length) {\n        Array.prototype.push.apply(output, match.slice(1));\n      }\n\n      lastLength = match[0].length;\n      lastLastIndex = match.index + lastLength;\n    }\n  });\n\n  if (lastLastIndex === str.length) {\n    if (!nativ.test.call(separator, '') || lastLength) {\n      output.push('');\n    }\n  } else {\n    output.push(str.slice(lastLastIndex));\n  }\n\n  separator.lastIndex = origLastIndex;\n  return output.length > limit ? output.slice(0, limit) : output;\n}; // ==--------------------------==\n// Built-in syntax/flag tokens\n// ==--------------------------==\n\n/*\n * Letter escapes that natively match literal characters: `\\a`, `\\A`, etc. These should be\n * SyntaxErrors but are allowed in web reality. XRegExp makes them errors for cross-browser\n * consistency and to reserve their syntax, but lets them be superseded by addons.\n */\n\n\nXRegExp.addToken(/\\\\([ABCE-RTUVXYZaeg-mopqyz]|c(?![A-Za-z])|u(?![\\dA-Fa-f]{4}|{[\\dA-Fa-f]+})|x(?![\\dA-Fa-f]{2}))/, function (match, scope) {\n  // \\B is allowed in default scope only\n  if (match[1] === 'B' && scope === defaultScope) {\n    return match[0];\n  }\n\n  throw new SyntaxError(\"Invalid escape \".concat(match[0]));\n}, {\n  scope: 'all',\n  leadChar: '\\\\'\n});\n/*\n * Unicode code point escape with curly braces: `\\u{N..}`. `N..` is any one or more digit\n * hexadecimal number from 0-10FFFF, and can include leading zeros. Requires the native ES6 `u` flag\n * to support code points greater than U+FFFF. Avoids converting code points above U+FFFF to\n * surrogate pairs (which could be done without flag `u`), since that could lead to broken behavior\n * if you follow a `\\u{N..}` token that references a code point above U+FFFF with a quantifier, or\n * if you use the same in a character class.\n */\n\nXRegExp.addToken(/\\\\u{([\\dA-Fa-f]+)}/, function (match, scope, flags) {\n  var code = dec(match[1]);\n\n  if (code > 0x10FFFF) {\n    throw new SyntaxError(\"Invalid Unicode code point \".concat(match[0]));\n  }\n\n  if (code <= 0xFFFF) {\n    // Converting to \\uNNNN avoids needing to escape the literal character and keep it\n    // separate from preceding tokens\n    return \"\\\\u\".concat(pad4(hex(code)));\n  } // If `code` is between 0xFFFF and 0x10FFFF, require and defer to native handling\n\n\n  if (hasNativeU && flags.indexOf('u') !== -1) {\n    return match[0];\n  }\n\n  throw new SyntaxError('Cannot use Unicode code point above \\\\u{FFFF} without flag u');\n}, {\n  scope: 'all',\n  leadChar: '\\\\'\n});\n/*\n * Empty character class: `[]` or `[^]`. This fixes a critical cross-browser syntax inconsistency.\n * Unless this is standardized (per the ES spec), regex syntax can't be accurately parsed because\n * character class endings can't be determined.\n */\n\nXRegExp.addToken(/\\[(\\^?)\\]/, // For cross-browser compatibility with ES3, convert [] to \\b\\B and [^] to [\\s\\S].\n// (?!) should work like \\b\\B, but is unreliable in some versions of Firefox\n\n/* eslint-disable no-confusing-arrow */\nfunction (match) {\n  return match[1] ? '[\\\\s\\\\S]' : '\\\\b\\\\B';\n},\n/* eslint-enable no-confusing-arrow */\n{\n  leadChar: '['\n});\n/*\n * Comment pattern: `(?# )`. Inline comments are an alternative to the line comments allowed in\n * free-spacing mode (flag x).\n */\n\nXRegExp.addToken(/\\(\\?#[^)]*\\)/, getContextualTokenSeparator, {\n  leadChar: '('\n});\n/*\n * Whitespace and line comments, in free-spacing mode (aka extended mode, flag x) only.\n */\n\nXRegExp.addToken(/\\s+|#[^\\n]*\\n?/, getContextualTokenSeparator, {\n  flag: 'x'\n});\n/*\n * Dot, in dotall mode (aka singleline mode, flag s) only.\n */\n\nXRegExp.addToken(/\\./, function () {\n  return '[\\\\s\\\\S]';\n}, {\n  flag: 's',\n  leadChar: '.'\n});\n/*\n * Named backreference: `\\k<name>`. Backreference names can use the characters A-Z, a-z, 0-9, _,\n * and $ only. Also allows numbered backreferences as `\\k<n>`.\n */\n\nXRegExp.addToken(/\\\\k<([\\w$]+)>/, function (match) {\n  // Groups with the same name is an error, else would need `lastIndexOf`\n  var index = isNaN(match[1]) ? this.captureNames.indexOf(match[1]) + 1 : +match[1];\n  var endIndex = match.index + match[0].length;\n\n  if (!index || index > this.captureNames.length) {\n    throw new SyntaxError(\"Backreference to undefined group \".concat(match[0]));\n  } // Keep backreferences separate from subsequent literal numbers. This avoids e.g.\n  // inadvertedly changing `(?<n>)\\k<n>1` to `()\\11`.\n\n\n  return \"\\\\\".concat(index).concat(endIndex === match.input.length || isNaN(match.input[endIndex]) ? '' : '(?:)');\n}, {\n  leadChar: '\\\\'\n});\n/*\n * Numbered backreference or octal, plus any following digits: `\\0`, `\\11`, etc. Octals except `\\0`\n * not followed by 0-9 and backreferences to unopened capture groups throw an error. Other matches\n * are returned unaltered. IE < 9 doesn't support backreferences above `\\99` in regex syntax.\n */\n\nXRegExp.addToken(/\\\\(\\d+)/, function (match, scope) {\n  if (!(scope === defaultScope && /^[1-9]/.test(match[1]) && +match[1] <= this.captureNames.length) && match[1] !== '0') {\n    throw new SyntaxError(\"Cannot use octal escape or backreference to undefined group \".concat(match[0]));\n  }\n\n  return match[0];\n}, {\n  scope: 'all',\n  leadChar: '\\\\'\n});\n/*\n * Named capturing group; match the opening delimiter only: `(?<name>`. Capture names can use the\n * characters A-Z, a-z, 0-9, _, and $ only. Names can't be integers. Supports Python-style\n * `(?P<name>` as an alternate syntax to avoid issues in some older versions of Opera which natively\n * supported the Python-style syntax. Otherwise, XRegExp might treat numbered backreferences to\n * Python-style named capture as octals.\n */\n\nXRegExp.addToken(/\\(\\?P?<([\\w$]+)>/, function (match) {\n  // Disallow bare integers as names because named backreferences are added to match arrays\n  // and therefore numeric properties may lead to incorrect lookups\n  if (!isNaN(match[1])) {\n    throw new SyntaxError(\"Cannot use integer as capture name \".concat(match[0]));\n  }\n\n  if (!XRegExp.isInstalled('namespacing') && (match[1] === 'length' || match[1] === '__proto__')) {\n    throw new SyntaxError(\"Cannot use reserved word as capture name \".concat(match[0]));\n  }\n\n  if (this.captureNames.indexOf(match[1]) !== -1) {\n    throw new SyntaxError(\"Cannot use same name for multiple groups \".concat(match[0]));\n  }\n\n  this.captureNames.push(match[1]);\n  this.hasNamedCapture = true;\n  return '(';\n}, {\n  leadChar: '('\n});\n/*\n * Capturing group; match the opening parenthesis only. Required for support of named capturing\n * groups. Also adds explicit capture mode (flag n).\n */\n\nXRegExp.addToken(/\\((?!\\?)/, function (match, scope, flags) {\n  if (flags.indexOf('n') !== -1) {\n    return '(?:';\n  }\n\n  this.captureNames.push(null);\n  return '(';\n}, {\n  optionalFlags: 'n',\n  leadChar: '('\n});\nvar _default = XRegExp;\nexports.default = _default;\nmodule.exports = exports[\"default\"];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/xregexp/lib/xregexp.js\n// module id = 393\n// module chunks = 88 89","module.exports = require(\"core-js/library/fn/object/create\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/core-js/object/create.js\n// module id = 394\n// module chunks = 88 89","require('../../modules/es6.object.create');\nvar $Object = require('../../modules/_core').Object;\nmodule.exports = function create(P, D) {\n  return $Object.create(P, D);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/fn/object/create.js\n// module id = 395\n// module chunks = 88 89","var $export = require('./_export');\n// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\n$export($export.S, 'Object', { create: require('./_object-create') });\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/es6.object.create.js\n// module id = 396\n// module chunks = 88 89","// optional / simple context binding\nvar aFunction = require('./_a-function');\nmodule.exports = function (fn, that, length) {\n  aFunction(fn);\n  if (that === undefined) return fn;\n  switch (length) {\n    case 1: return function (a) {\n      return fn.call(that, a);\n    };\n    case 2: return function (a, b) {\n      return fn.call(that, a, b);\n    };\n    case 3: return function (a, b, c) {\n      return fn.call(that, a, b, c);\n    };\n  }\n  return function (/* ...args */) {\n    return fn.apply(that, arguments);\n  };\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_ctx.js\n// module id = 397\n// module chunks = 88 89","module.exports = function (it) {\n  if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n  return it;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_a-function.js\n// module id = 398\n// module chunks = 88 89","module.exports = !require('./_descriptors') && !require('./_fails')(function () {\n  return Object.defineProperty(require('./_dom-create')('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_ie8-dom-define.js\n// module id = 399\n// module chunks = 88 89","// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = require('./_is-object');\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n  if (!isObject(it)) return it;\n  var fn, val;\n  if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n  if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n  throw TypeError(\"Can't convert object to primitive value\");\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_to-primitive.js\n// module id = 400\n// module chunks = 88 89","var dP = require('./_object-dp');\nvar anObject = require('./_an-object');\nvar getKeys = require('./_object-keys');\n\nmodule.exports = require('./_descriptors') ? Object.defineProperties : function defineProperties(O, Properties) {\n  anObject(O);\n  var keys = getKeys(Properties);\n  var length = keys.length;\n  var i = 0;\n  var P;\n  while (length > i) dP.f(O, P = keys[i++], Properties[P]);\n  return O;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_object-dps.js\n// module id = 401\n// module chunks = 88 89","// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = require('./_object-keys-internal');\nvar enumBugKeys = require('./_enum-bug-keys');\n\nmodule.exports = Object.keys || function keys(O) {\n  return $keys(O, enumBugKeys);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_object-keys.js\n// module id = 402\n// module chunks = 88 89","var has = require('./_has');\nvar toIObject = require('./_to-iobject');\nvar arrayIndexOf = require('./_array-includes')(false);\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\n\nmodule.exports = function (object, names) {\n  var O = toIObject(object);\n  var i = 0;\n  var result = [];\n  var key;\n  for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n  // Don't enum bug & hidden keys\n  while (names.length > i) if (has(O, key = names[i++])) {\n    ~arrayIndexOf(result, key) || result.push(key);\n  }\n  return result;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_object-keys-internal.js\n// module id = 403\n// module chunks = 88 89","// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = require('./_cof');\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n  return cof(it) == 'String' ? it.split('') : Object(it);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_iobject.js\n// module id = 404\n// module chunks = 88 89","// false -> Array#indexOf\n// true  -> Array#includes\nvar toIObject = require('./_to-iobject');\nvar toLength = require('./_to-length');\nvar toAbsoluteIndex = require('./_to-absolute-index');\nmodule.exports = function (IS_INCLUDES) {\n  return function ($this, el, fromIndex) {\n    var O = toIObject($this);\n    var length = toLength(O.length);\n    var index = toAbsoluteIndex(fromIndex, length);\n    var value;\n    // Array#includes uses SameValueZero equality algorithm\n    // eslint-disable-next-line no-self-compare\n    if (IS_INCLUDES && el != el) while (length > index) {\n      value = O[index++];\n      // eslint-disable-next-line no-self-compare\n      if (value != value) return true;\n    // Array#indexOf ignores holes, Array#includes - not\n    } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n      if (O[index] === el) return IS_INCLUDES || index || 0;\n    } return !IS_INCLUDES && -1;\n  };\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_array-includes.js\n// module id = 405\n// module chunks = 88 89","// 7.1.15 ToLength\nvar toInteger = require('./_to-integer');\nvar min = Math.min;\nmodule.exports = function (it) {\n  return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_to-length.js\n// module id = 406\n// module chunks = 88 89","var toInteger = require('./_to-integer');\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n  index = toInteger(index);\n  return index < 0 ? max(index + length, 0) : min(index, length);\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_to-absolute-index.js\n// module id = 407\n// module chunks = 88 89","var document = require('./_global').document;\nmodule.exports = document && document.documentElement;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_html.js\n// module id = 408\n// module chunks = 88 89","var arrayWithHoles = require(\"./arrayWithHoles\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit\");\n\nvar nonIterableRest = require(\"./nonIterableRest\");\n\nfunction _slicedToArray(arr, i) {\n  return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/helpers/slicedToArray.js\n// module id = 409\n// module chunks = 88 89","var _Array$isArray = require(\"../core-js/array/is-array\");\n\nfunction _arrayWithHoles(arr) {\n  if (_Array$isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/helpers/arrayWithHoles.js\n// module id = 410\n// module chunks = 88 89","module.exports = require(\"core-js/library/fn/array/is-array\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/core-js/array/is-array.js\n// module id = 411\n// module chunks = 88 89","require('../../modules/es6.array.is-array');\nmodule.exports = require('../../modules/_core').Array.isArray;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/fn/array/is-array.js\n// module id = 412\n// module chunks = 88 89","// 22.1.2.2 / 15.4.3.2 Array.isArray(arg)\nvar $export = require('./_export');\n\n$export($export.S, 'Array', { isArray: require('./_is-array') });\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/es6.array.is-array.js\n// module id = 413\n// module chunks = 88 89","// 7.2.2 IsArray(argument)\nvar cof = require('./_cof');\nmodule.exports = Array.isArray || function isArray(arg) {\n  return cof(arg) == 'Array';\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_is-array.js\n// module id = 414\n// module chunks = 88 89","var _getIterator = require(\"../core-js/get-iterator\");\n\nfunction _iterableToArrayLimit(arr, i) {\n  var _arr = [];\n  var _n = true;\n  var _d = false;\n  var _e = undefined;\n\n  try {\n    for (var _i = _getIterator(arr), _s; !(_n = (_s = _i.next()).done); _n = true) {\n      _arr.push(_s.value);\n\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\n  return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/helpers/iterableToArrayLimit.js\n// module id = 415\n// module chunks = 88 89","require('../modules/web.dom.iterable');\nrequire('../modules/es6.string.iterator');\nmodule.exports = require('../modules/core.get-iterator');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/fn/get-iterator.js\n// module id = 416\n// module chunks = 88 89","require('./es6.array.iterator');\nvar global = require('./_global');\nvar hide = require('./_hide');\nvar Iterators = require('./_iterators');\nvar TO_STRING_TAG = require('./_wks')('toStringTag');\n\nvar DOMIterables = ('CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,' +\n  'DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,' +\n  'MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,' +\n  'SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,' +\n  'TextTrackList,TouchList').split(',');\n\nfor (var i = 0; i < DOMIterables.length; i++) {\n  var NAME = DOMIterables[i];\n  var Collection = global[NAME];\n  var proto = Collection && Collection.prototype;\n  if (proto && !proto[TO_STRING_TAG]) hide(proto, TO_STRING_TAG, NAME);\n  Iterators[NAME] = Iterators.Array;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/web.dom.iterable.js\n// module id = 417\n// module chunks = 88 89","'use strict';\nvar addToUnscopables = require('./_add-to-unscopables');\nvar step = require('./_iter-step');\nvar Iterators = require('./_iterators');\nvar toIObject = require('./_to-iobject');\n\n// 22.1.3.4 Array.prototype.entries()\n// 22.1.3.13 Array.prototype.keys()\n// 22.1.3.29 Array.prototype.values()\n// 22.1.3.30 Array.prototype[@@iterator]()\nmodule.exports = require('./_iter-define')(Array, 'Array', function (iterated, kind) {\n  this._t = toIObject(iterated); // target\n  this._i = 0;                   // next index\n  this._k = kind;                // kind\n// 22.1.5.2.1 %ArrayIteratorPrototype%.next()\n}, function () {\n  var O = this._t;\n  var kind = this._k;\n  var index = this._i++;\n  if (!O || index >= O.length) {\n    this._t = undefined;\n    return step(1);\n  }\n  if (kind == 'keys') return step(0, index);\n  if (kind == 'values') return step(0, O[index]);\n  return step(0, [index, O[index]]);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values% (9.4.4.6, 9.4.4.7)\nIterators.Arguments = Iterators.Array;\n\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/es6.array.iterator.js\n// module id = 418\n// module chunks = 88 89","module.exports = function () { /* empty */ };\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_add-to-unscopables.js\n// module id = 419\n// module chunks = 88 89","module.exports = function (done, value) {\n  return { value: value, done: !!done };\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_iter-step.js\n// module id = 420\n// module chunks = 88 89","module.exports = require('./_hide');\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_redefine.js\n// module id = 421\n// module chunks = 88 89","'use strict';\nvar create = require('./_object-create');\nvar descriptor = require('./_property-desc');\nvar setToStringTag = require('./_set-to-string-tag');\nvar IteratorPrototype = {};\n\n// 25.1.2.1.1 %IteratorPrototype%[@@iterator]()\nrequire('./_hide')(IteratorPrototype, require('./_wks')('iterator'), function () { return this; });\n\nmodule.exports = function (Constructor, NAME, next) {\n  Constructor.prototype = create(IteratorPrototype, { next: descriptor(1, next) });\n  setToStringTag(Constructor, NAME + ' Iterator');\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_iter-create.js\n// module id = 422\n// module chunks = 88 89","// 19.1.2.9 / 15.2.3.2 Object.getPrototypeOf(O)\nvar has = require('./_has');\nvar toObject = require('./_to-object');\nvar IE_PROTO = require('./_shared-key')('IE_PROTO');\nvar ObjectProto = Object.prototype;\n\nmodule.exports = Object.getPrototypeOf || function (O) {\n  O = toObject(O);\n  if (has(O, IE_PROTO)) return O[IE_PROTO];\n  if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n    return O.constructor.prototype;\n  } return O instanceof Object ? ObjectProto : null;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_object-gpo.js\n// module id = 423\n// module chunks = 88 89","// 7.1.13 ToObject(argument)\nvar defined = require('./_defined');\nmodule.exports = function (it) {\n  return Object(defined(it));\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_to-object.js\n// module id = 424\n// module chunks = 88 89","'use strict';\nvar $at = require('./_string-at')(true);\n\n// 21.1.3.27 String.prototype[@@iterator]()\nrequire('./_iter-define')(String, 'String', function (iterated) {\n  this._t = String(iterated); // target\n  this._i = 0;                // next index\n// 21.1.5.2.1 %StringIteratorPrototype%.next()\n}, function () {\n  var O = this._t;\n  var index = this._i;\n  var point;\n  if (index >= O.length) return { value: undefined, done: true };\n  point = $at(O, index);\n  this._i += point.length;\n  return { value: point, done: false };\n});\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/es6.string.iterator.js\n// module id = 425\n// module chunks = 88 89","var toInteger = require('./_to-integer');\nvar defined = require('./_defined');\n// true  -> String#at\n// false -> String#codePointAt\nmodule.exports = function (TO_STRING) {\n  return function (that, pos) {\n    var s = String(defined(that));\n    var i = toInteger(pos);\n    var l = s.length;\n    var a, b;\n    if (i < 0 || i >= l) return TO_STRING ? '' : undefined;\n    a = s.charCodeAt(i);\n    return a < 0xd800 || a > 0xdbff || i + 1 === l || (b = s.charCodeAt(i + 1)) < 0xdc00 || b > 0xdfff\n      ? TO_STRING ? s.charAt(i) : a\n      : TO_STRING ? s.slice(i, i + 2) : (a - 0xd800 << 10) + (b - 0xdc00) + 0x10000;\n  };\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_string-at.js\n// module id = 426\n// module chunks = 88 89","var anObject = require('./_an-object');\nvar get = require('./core.get-iterator-method');\nmodule.exports = require('./_core').getIterator = function (it) {\n  var iterFn = get(it);\n  if (typeof iterFn != 'function') throw TypeError(it + ' is not iterable!');\n  return anObject(iterFn.call(it));\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/core.get-iterator.js\n// module id = 427\n// module chunks = 88 89","var classof = require('./_classof');\nvar ITERATOR = require('./_wks')('iterator');\nvar Iterators = require('./_iterators');\nmodule.exports = require('./_core').getIteratorMethod = function (it) {\n  if (it != undefined) return it[ITERATOR]\n    || it['@@iterator']\n    || Iterators[classof(it)];\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/core.get-iterator-method.js\n// module id = 428\n// module chunks = 88 89","// getting tag from 19.1.3.6 Object.prototype.toString()\nvar cof = require('./_cof');\nvar TAG = require('./_wks')('toStringTag');\n// ES3 wrong here\nvar ARG = cof(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n  try {\n    return it[key];\n  } catch (e) { /* empty */ }\n};\n\nmodule.exports = function (it) {\n  var O, T, B;\n  return it === undefined ? 'Undefined' : it === null ? 'Null'\n    // @@toStringTag case\n    : typeof (T = tryGet(O = Object(it), TAG)) == 'string' ? T\n    // builtinTag case\n    : ARG ? cof(O)\n    // ES3 arguments fallback\n    : (B = cof(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : B;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_classof.js\n// module id = 429\n// module chunks = 88 89","function _nonIterableRest() {\n  throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}\n\nmodule.exports = _nonIterableRest;\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/helpers/nonIterableRest.js\n// module id = 430\n// module chunks = 88 89","module.exports = require(\"core-js/library/fn/parse-int\");\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/core-js/parse-int.js\n// module id = 431\n// module chunks = 88 89","require('../modules/es6.parse-int');\nmodule.exports = require('../modules/_core').parseInt;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/fn/parse-int.js\n// module id = 432\n// module chunks = 88 89","var $export = require('./_export');\nvar $parseInt = require('./_parse-int');\n// 18.2.5 parseInt(string, radix)\n$export($export.G + $export.F * (parseInt != $parseInt), { parseInt: $parseInt });\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/es6.parse-int.js\n// module id = 433\n// module chunks = 88 89","var $parseInt = require('./_global').parseInt;\nvar $trim = require('./_string-trim').trim;\nvar ws = require('./_string-ws');\nvar hex = /^[-+]?0[xX]/;\n\nmodule.exports = $parseInt(ws + '08') !== 8 || $parseInt(ws + '0x16') !== 22 ? function parseInt(str, radix) {\n  var string = $trim(String(str), 3);\n  return $parseInt(string, (radix >>> 0) || (hex.test(string) ? 16 : 10));\n} : $parseInt;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_parse-int.js\n// module id = 434\n// module chunks = 88 89","var $export = require('./_export');\nvar defined = require('./_defined');\nvar fails = require('./_fails');\nvar spaces = require('./_string-ws');\nvar space = '[' + spaces + ']';\nvar non = '\\u200b\\u0085';\nvar ltrim = RegExp('^' + space + space + '*');\nvar rtrim = RegExp(space + space + '*$');\n\nvar exporter = function (KEY, exec, ALIAS) {\n  var exp = {};\n  var FORCE = fails(function () {\n    return !!spaces[KEY]() || non[KEY]() != non;\n  });\n  var fn = exp[KEY] = FORCE ? exec(trim) : spaces[KEY];\n  if (ALIAS) exp[ALIAS] = fn;\n  $export($export.P + $export.F * FORCE, 'String', exp);\n};\n\n// 1 -> String#trimLeft\n// 2 -> String#trimRight\n// 3 -> String#trim\nvar trim = exporter.trim = function (string, TYPE) {\n  string = String(defined(string));\n  if (TYPE & 1) string = string.replace(ltrim, '');\n  if (TYPE & 2) string = string.replace(rtrim, '');\n  return string;\n};\n\nmodule.exports = exporter;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/@babel/runtime-corejs2/node_modules/core-js/library/modules/_string-trim.js\n// module id = 435\n// module chunks = 88 89","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\n/*!\n * XRegExp.build 4.2.4\n * <xregexp.com>\n * Steven Levithan (c) 2012-present MIT License\n */\nvar _default = function _default(XRegExp) {\n  var REGEX_DATA = 'xregexp';\n  var subParts = /(\\()(?!\\?)|\\\\([1-9]\\d*)|\\\\[\\s\\S]|\\[(?:[^\\\\\\]]|\\\\[\\s\\S])*\\]/g;\n  var parts = XRegExp.union([/\\({{([\\w$]+)}}\\)|{{([\\w$]+)}}/, subParts], 'g', {\n    conjunction: 'or'\n  });\n  /**\n   * Strips a leading `^` and trailing unescaped `$`, if both are present.\n   *\n   * @private\n   * @param {String} pattern Pattern to process.\n   * @returns {String} Pattern with edge anchors removed.\n   */\n\n  function deanchor(pattern) {\n    // Allow any number of empty noncapturing groups before/after anchors, because regexes\n    // built/generated by XRegExp sometimes include them\n    var leadingAnchor = /^(?:\\(\\?:\\))*\\^/;\n    var trailingAnchor = /\\$(?:\\(\\?:\\))*$/;\n\n    if (leadingAnchor.test(pattern) && trailingAnchor.test(pattern) && // Ensure that the trailing `$` isn't escaped\n    trailingAnchor.test(pattern.replace(/\\\\[\\s\\S]/g, ''))) {\n      return pattern.replace(leadingAnchor, '').replace(trailingAnchor, '');\n    }\n\n    return pattern;\n  }\n  /**\n   * Converts the provided value to an XRegExp. Native RegExp flags are not preserved.\n   *\n   * @private\n   * @param {String|RegExp} value Value to convert.\n   * @param {Boolean} [addFlagX] Whether to apply the `x` flag in cases when `value` is not\n   *   already a regex generated by XRegExp\n   * @returns {RegExp} XRegExp object with XRegExp syntax applied.\n   */\n\n\n  function asXRegExp(value, addFlagX) {\n    var flags = addFlagX ? 'x' : '';\n    return XRegExp.isRegExp(value) ? value[REGEX_DATA] && value[REGEX_DATA].captureNames ? // Don't recompile, to preserve capture names\n    value : // Recompile as XRegExp\n    XRegExp(value.source, flags) : // Compile string as XRegExp\n    XRegExp(value, flags);\n  }\n\n  function interpolate(substitution) {\n    return substitution instanceof RegExp ? substitution : XRegExp.escape(substitution);\n  }\n\n  function reduceToSubpatternsObject(subpatterns, interpolated, subpatternIndex) {\n    subpatterns[\"subpattern\".concat(subpatternIndex)] = interpolated;\n    return subpatterns;\n  }\n\n  function embedSubpatternAfter(raw, subpatternIndex, rawLiterals) {\n    var hasSubpattern = subpatternIndex < rawLiterals.length - 1;\n    return raw + (hasSubpattern ? \"{{subpattern\".concat(subpatternIndex, \"}}\") : '');\n  }\n  /**\n   * Provides tagged template literals that create regexes with XRegExp syntax and flags. The\n   * provided pattern is handled as a raw string, so backslashes don't need to be escaped.\n   *\n   * Interpolation of strings and regexes shares the features of `XRegExp.build`. Interpolated\n   * patterns are treated as atomic units when quantified, interpolated strings have their special\n   * characters escaped, a leading `^` and trailing unescaped `$` are stripped from interpolated\n   * regexes if both are present, and any backreferences within an interpolated regex are\n   * rewritten to work within the overall pattern.\n   *\n   * @memberOf XRegExp\n   * @param {String} [flags] Any combination of XRegExp flags.\n   * @returns {Function} Handler for template literals that construct regexes with XRegExp syntax.\n   * @example\n   *\n   * const h12 = /1[0-2]|0?[1-9]/;\n   * const h24 = /2[0-3]|[01][0-9]/;\n   * const hours = XRegExp.tag('x')`${h12} : | ${h24}`;\n   * const minutes = /^[0-5][0-9]$/;\n   * // Note that explicitly naming the 'minutes' group is required for named backreferences\n   * const time = XRegExp.tag('x')`^ ${hours} (?<minutes>${minutes}) $`;\n   * time.test('10:59'); // -> true\n   * XRegExp.exec('10:59', time).minutes; // -> '59'\n   */\n\n\n  XRegExp.tag = function (flags) {\n    return function (literals) {\n      for (var _len = arguments.length, substitutions = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n        substitutions[_key - 1] = arguments[_key];\n      }\n\n      var subpatterns = substitutions.map(interpolate).reduce(reduceToSubpatternsObject, {});\n      var pattern = literals.raw.map(embedSubpatternAfter).join('');\n      return XRegExp.build(pattern, subpatterns, flags);\n    };\n  };\n  /**\n   * Builds regexes using named subpatterns, for readability and pattern reuse. Backreferences in\n   * the outer pattern and provided subpatterns are automatically renumbered to work correctly.\n   * Native flags used by provided subpatterns are ignored in favor of the `flags` argument.\n   *\n   * @memberOf XRegExp\n   * @param {String} pattern XRegExp pattern using `{{name}}` for embedded subpatterns. Allows\n   *   `({{name}})` as shorthand for `(?<name>{{name}})`. Patterns cannot be embedded within\n   *   character classes.\n   * @param {Object} subs Lookup object for named subpatterns. Values can be strings or regexes. A\n   *   leading `^` and trailing unescaped `$` are stripped from subpatterns, if both are present.\n   * @param {String} [flags] Any combination of XRegExp flags.\n   * @returns {RegExp} Regex with interpolated subpatterns.\n   * @example\n   *\n   * const time = XRegExp.build('(?x)^ {{hours}} ({{minutes}}) $', {\n   *   hours: XRegExp.build('{{h12}} : | {{h24}}', {\n   *     h12: /1[0-2]|0?[1-9]/,\n   *     h24: /2[0-3]|[01][0-9]/\n   *   }, 'x'),\n   *   minutes: /^[0-5][0-9]$/\n   * });\n   * time.test('10:59'); // -> true\n   * XRegExp.exec('10:59', time).minutes; // -> '59'\n   */\n\n\n  XRegExp.build = function (pattern, subs, flags) {\n    flags = flags || ''; // Used with `asXRegExp` calls for `pattern` and subpatterns in `subs`, to work around how\n    // some browsers convert `RegExp('\\n')` to a regex that contains the literal characters `\\`\n    // and `n`. See more details at <https://github.com/slevithan/xregexp/pull/163>.\n\n    var addFlagX = flags.indexOf('x') !== -1;\n    var inlineFlags = /^\\(\\?([\\w$]+)\\)/.exec(pattern); // Add flags within a leading mode modifier to the overall pattern's flags\n\n    if (inlineFlags) {\n      flags = XRegExp._clipDuplicates(flags + inlineFlags[1]);\n    }\n\n    var data = {};\n\n    for (var p in subs) {\n      if (subs.hasOwnProperty(p)) {\n        // Passing to XRegExp enables extended syntax and ensures independent validity,\n        // lest an unescaped `(`, `)`, `[`, or trailing `\\` breaks the `(?:)` wrapper. For\n        // subpatterns provided as native regexes, it dies on octals and adds the property\n        // used to hold extended regex instance data, for simplicity.\n        var sub = asXRegExp(subs[p], addFlagX);\n        data[p] = {\n          // Deanchoring allows embedding independently useful anchored regexes. If you\n          // really need to keep your anchors, double them (i.e., `^^...$$`).\n          pattern: deanchor(sub.source),\n          names: sub[REGEX_DATA].captureNames || []\n        };\n      }\n    } // Passing to XRegExp dies on octals and ensures the outer pattern is independently valid;\n    // helps keep this simple. Named captures will be put back.\n\n\n    var patternAsRegex = asXRegExp(pattern, addFlagX); // 'Caps' is short for 'captures'\n\n    var numCaps = 0;\n    var numPriorCaps;\n    var numOuterCaps = 0;\n    var outerCapsMap = [0];\n    var outerCapNames = patternAsRegex[REGEX_DATA].captureNames || [];\n    var output = patternAsRegex.source.replace(parts, function ($0, $1, $2, $3, $4) {\n      var subName = $1 || $2;\n      var capName;\n      var intro;\n      var localCapIndex; // Named subpattern\n\n      if (subName) {\n        if (!data.hasOwnProperty(subName)) {\n          throw new ReferenceError(\"Undefined property \".concat($0));\n        } // Named subpattern was wrapped in a capturing group\n\n\n        if ($1) {\n          capName = outerCapNames[numOuterCaps];\n          outerCapsMap[++numOuterCaps] = ++numCaps; // If it's a named group, preserve the name. Otherwise, use the subpattern name\n          // as the capture name\n\n          intro = \"(?<\".concat(capName || subName, \">\");\n        } else {\n          intro = '(?:';\n        }\n\n        numPriorCaps = numCaps;\n        var rewrittenSubpattern = data[subName].pattern.replace(subParts, function (match, paren, backref) {\n          // Capturing group\n          if (paren) {\n            capName = data[subName].names[numCaps - numPriorCaps];\n            ++numCaps; // If the current capture has a name, preserve the name\n\n            if (capName) {\n              return \"(?<\".concat(capName, \">\");\n            } // Backreference\n\n          } else if (backref) {\n            localCapIndex = +backref - 1; // Rewrite the backreference\n\n            return data[subName].names[localCapIndex] ? // Need to preserve the backreference name in case using flag `n`\n            \"\\\\k<\".concat(data[subName].names[localCapIndex], \">\") : \"\\\\\".concat(+backref + numPriorCaps);\n          }\n\n          return match;\n        });\n        return \"\".concat(intro).concat(rewrittenSubpattern, \")\");\n      } // Capturing group\n\n\n      if ($3) {\n        capName = outerCapNames[numOuterCaps];\n        outerCapsMap[++numOuterCaps] = ++numCaps; // If the current capture has a name, preserve the name\n\n        if (capName) {\n          return \"(?<\".concat(capName, \">\");\n        } // Backreference\n\n      } else if ($4) {\n        localCapIndex = +$4 - 1; // Rewrite the backreference\n\n        return outerCapNames[localCapIndex] ? // Need to preserve the backreference name in case using flag `n`\n        \"\\\\k<\".concat(outerCapNames[localCapIndex], \">\") : \"\\\\\".concat(outerCapsMap[+$4]);\n      }\n\n      return $0;\n    });\n    return XRegExp(output, flags);\n  };\n};\n\nexports.default = _default;\nmodule.exports = exports[\"default\"];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/xregexp/lib/addons/build.js\n// module id = 436\n// module chunks = 88 89","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\n/*!\n * XRegExp.matchRecursive 4.2.4\n * <xregexp.com>\n * Steven Levithan (c) 2009-present MIT License\n */\nvar _default = function _default(XRegExp) {\n  /**\n   * Returns a match detail object composed of the provided values.\n   *\n   * @private\n   */\n  function row(name, value, start, end) {\n    return {\n      name: name,\n      value: value,\n      start: start,\n      end: end\n    };\n  }\n  /**\n   * Returns an array of match strings between outermost left and right delimiters, or an array of\n   * objects with detailed match parts and position data. An error is thrown if delimiters are\n   * unbalanced within the data.\n   *\n   * @memberOf XRegExp\n   * @param {String} str String to search.\n   * @param {String} left Left delimiter as an XRegExp pattern.\n   * @param {String} right Right delimiter as an XRegExp pattern.\n   * @param {String} [flags] Any native or XRegExp flags, used for the left and right delimiters.\n   * @param {Object} [options] Lets you specify `valueNames` and `escapeChar` options.\n   * @returns {Array} Array of matches, or an empty array.\n   * @example\n   *\n   * // Basic usage\n   * let str = '(t((e))s)t()(ing)';\n   * XRegExp.matchRecursive(str, '\\\\(', '\\\\)', 'g');\n   * // -> ['t((e))s', '', 'ing']\n   *\n   * // Extended information mode with valueNames\n   * str = 'Here is <div> <div>an</div></div> example';\n   * XRegExp.matchRecursive(str, '<div\\\\s*>', '</div>', 'gi', {\n   *   valueNames: ['between', 'left', 'match', 'right']\n   * });\n   * // -> [\n   * // {name: 'between', value: 'Here is ',       start: 0,  end: 8},\n   * // {name: 'left',    value: '<div>',          start: 8,  end: 13},\n   * // {name: 'match',   value: ' <div>an</div>', start: 13, end: 27},\n   * // {name: 'right',   value: '</div>',         start: 27, end: 33},\n   * // {name: 'between', value: ' example',       start: 33, end: 41}\n   * // ]\n   *\n   * // Omitting unneeded parts with null valueNames, and using escapeChar\n   * str = '...{1}.\\\\{{function(x,y){return {y:x}}}';\n   * XRegExp.matchRecursive(str, '{', '}', 'g', {\n   *   valueNames: ['literal', null, 'value', null],\n   *   escapeChar: '\\\\'\n   * });\n   * // -> [\n   * // {name: 'literal', value: '...',  start: 0, end: 3},\n   * // {name: 'value',   value: '1',    start: 4, end: 5},\n   * // {name: 'literal', value: '.\\\\{', start: 6, end: 9},\n   * // {name: 'value',   value: 'function(x,y){return {y:x}}', start: 10, end: 37}\n   * // ]\n   *\n   * // Sticky mode via flag y\n   * str = '<1><<<2>>><3>4<5>';\n   * XRegExp.matchRecursive(str, '<', '>', 'gy');\n   * // -> ['1', '<<2>>', '3']\n   */\n\n\n  XRegExp.matchRecursive = function (str, left, right, flags, options) {\n    flags = flags || '';\n    options = options || {};\n    var global = flags.indexOf('g') !== -1;\n    var sticky = flags.indexOf('y') !== -1; // Flag `y` is controlled internally\n\n    var basicFlags = flags.replace(/y/g, '');\n    var _options = options,\n        escapeChar = _options.escapeChar;\n    var vN = options.valueNames;\n    var output = [];\n    var openTokens = 0;\n    var delimStart = 0;\n    var delimEnd = 0;\n    var lastOuterEnd = 0;\n    var outerStart;\n    var innerStart;\n    var leftMatch;\n    var rightMatch;\n    var esc;\n    left = XRegExp(left, basicFlags);\n    right = XRegExp(right, basicFlags);\n\n    if (escapeChar) {\n      if (escapeChar.length > 1) {\n        throw new Error('Cannot use more than one escape character');\n      }\n\n      escapeChar = XRegExp.escape(escapeChar); // Example of concatenated `esc` regex:\n      // `escapeChar`: '%'\n      // `left`: '<'\n      // `right`: '>'\n      // Regex is: /(?:%[\\S\\s]|(?:(?!<|>)[^%])+)+/\n\n      esc = new RegExp(\"(?:\".concat(escapeChar, \"[\\\\S\\\\s]|(?:(?!\").concat( // Using `XRegExp.union` safely rewrites backreferences in `left` and `right`.\n      // Intentionally not passing `basicFlags` to `XRegExp.union` since any syntax\n      // transformation resulting from those flags was already applied to `left` and\n      // `right` when they were passed through the XRegExp constructor above.\n      XRegExp.union([left, right], '', {\n        conjunction: 'or'\n      }).source, \")[^\").concat(escapeChar, \"])+)+\"), // Flags `gy` not needed here\n      flags.replace(/[^imu]+/g, ''));\n    }\n\n    while (true) {\n      // If using an escape character, advance to the delimiter's next starting position,\n      // skipping any escaped characters in between\n      if (escapeChar) {\n        delimEnd += (XRegExp.exec(str, esc, delimEnd, 'sticky') || [''])[0].length;\n      }\n\n      leftMatch = XRegExp.exec(str, left, delimEnd);\n      rightMatch = XRegExp.exec(str, right, delimEnd); // Keep the leftmost match only\n\n      if (leftMatch && rightMatch) {\n        if (leftMatch.index <= rightMatch.index) {\n          rightMatch = null;\n        } else {\n          leftMatch = null;\n        }\n      } // Paths (LM: leftMatch, RM: rightMatch, OT: openTokens):\n      // LM | RM | OT | Result\n      // 1  | 0  | 1  | loop\n      // 1  | 0  | 0  | loop\n      // 0  | 1  | 1  | loop\n      // 0  | 1  | 0  | throw\n      // 0  | 0  | 1  | throw\n      // 0  | 0  | 0  | break\n      // The paths above don't include the sticky mode special case. The loop ends after the\n      // first completed match if not `global`.\n\n\n      if (leftMatch || rightMatch) {\n        delimStart = (leftMatch || rightMatch).index;\n        delimEnd = delimStart + (leftMatch || rightMatch)[0].length;\n      } else if (!openTokens) {\n        break;\n      }\n\n      if (sticky && !openTokens && delimStart > lastOuterEnd) {\n        break;\n      }\n\n      if (leftMatch) {\n        if (!openTokens) {\n          outerStart = delimStart;\n          innerStart = delimEnd;\n        }\n\n        ++openTokens;\n      } else if (rightMatch && openTokens) {\n        if (! --openTokens) {\n          if (vN) {\n            if (vN[0] && outerStart > lastOuterEnd) {\n              output.push(row(vN[0], str.slice(lastOuterEnd, outerStart), lastOuterEnd, outerStart));\n            }\n\n            if (vN[1]) {\n              output.push(row(vN[1], str.slice(outerStart, innerStart), outerStart, innerStart));\n            }\n\n            if (vN[2]) {\n              output.push(row(vN[2], str.slice(innerStart, delimStart), innerStart, delimStart));\n            }\n\n            if (vN[3]) {\n              output.push(row(vN[3], str.slice(delimStart, delimEnd), delimStart, delimEnd));\n            }\n          } else {\n            output.push(str.slice(innerStart, delimStart));\n          }\n\n          lastOuterEnd = delimEnd;\n\n          if (!global) {\n            break;\n          }\n        }\n      } else {\n        throw new Error('Unbalanced delimiter found in string');\n      } // If the delimiter matched an empty string, avoid an infinite loop\n\n\n      if (delimStart === delimEnd) {\n        ++delimEnd;\n      }\n    }\n\n    if (global && !sticky && vN && vN[0] && str.length > lastOuterEnd) {\n      output.push(row(vN[0], str.slice(lastOuterEnd), lastOuterEnd, str.length));\n    }\n\n    return output;\n  };\n};\n\nexports.default = _default;\nmodule.exports = exports[\"default\"];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/xregexp/lib/addons/matchrecursive.js\n// module id = 437\n// module chunks = 88 89","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime-corejs2/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _getIterator2 = _interopRequireDefault(require(\"@babel/runtime-corejs2/core-js/get-iterator\"));\n\n/*!\n * XRegExp Unicode Base 4.2.4\n * <xregexp.com>\n * Steven Levithan (c) 2008-present MIT License\n */\nvar _default = function _default(XRegExp) {\n  /**\n   * Adds base support for Unicode matching:\n   * - Adds syntax `\\p{..}` for matching Unicode tokens. Tokens can be inverted using `\\P{..}` or\n   *   `\\p{^..}`. Token names ignore case, spaces, hyphens, and underscores. You can omit the\n   *   braces for token names that are a single letter (e.g. `\\pL` or `PL`).\n   * - Adds flag A (astral), which enables 21-bit Unicode support.\n   * - Adds the `XRegExp.addUnicodeData` method used by other addons to provide character data.\n   *\n   * Unicode Base relies on externally provided Unicode character data. Official addons are\n   * available to provide data for Unicode categories, scripts, blocks, and properties.\n   *\n   * @requires XRegExp\n   */\n  // ==--------------------------==\n  // Private stuff\n  // ==--------------------------==\n  // Storage for Unicode data\n  var unicode = {}; // Reuse utils\n\n  var dec = XRegExp._dec;\n  var hex = XRegExp._hex;\n  var pad4 = XRegExp._pad4; // Generates a token lookup name: lowercase, with hyphens, spaces, and underscores removed\n\n  function normalize(name) {\n    return name.replace(/[- _]+/g, '').toLowerCase();\n  } // Gets the decimal code of a literal code unit, \\xHH, \\uHHHH, or a backslash-escaped literal\n\n\n  function charCode(chr) {\n    var esc = /^\\\\[xu](.+)/.exec(chr);\n    return esc ? dec(esc[1]) : chr.charCodeAt(chr[0] === '\\\\' ? 1 : 0);\n  } // Inverts a list of ordered BMP characters and ranges\n\n\n  function invertBmp(range) {\n    var output = '';\n    var lastEnd = -1;\n    XRegExp.forEach(range, /(\\\\x..|\\\\u....|\\\\?[\\s\\S])(?:-(\\\\x..|\\\\u....|\\\\?[\\s\\S]))?/, function (m) {\n      var start = charCode(m[1]);\n\n      if (start > lastEnd + 1) {\n        output += \"\\\\u\".concat(pad4(hex(lastEnd + 1)));\n\n        if (start > lastEnd + 2) {\n          output += \"-\\\\u\".concat(pad4(hex(start - 1)));\n        }\n      }\n\n      lastEnd = charCode(m[2] || m[1]);\n    });\n\n    if (lastEnd < 0xFFFF) {\n      output += \"\\\\u\".concat(pad4(hex(lastEnd + 1)));\n\n      if (lastEnd < 0xFFFE) {\n        output += '-\\\\uFFFF';\n      }\n    }\n\n    return output;\n  } // Generates an inverted BMP range on first use\n\n\n  function cacheInvertedBmp(slug) {\n    var prop = 'b!';\n    return unicode[slug][prop] || (unicode[slug][prop] = invertBmp(unicode[slug].bmp));\n  } // Combines and optionally negates BMP and astral data\n\n\n  function buildAstral(slug, isNegated) {\n    var item = unicode[slug];\n    var combined = '';\n\n    if (item.bmp && !item.isBmpLast) {\n      combined = \"[\".concat(item.bmp, \"]\").concat(item.astral ? '|' : '');\n    }\n\n    if (item.astral) {\n      combined += item.astral;\n    }\n\n    if (item.isBmpLast && item.bmp) {\n      combined += \"\".concat(item.astral ? '|' : '', \"[\").concat(item.bmp, \"]\");\n    } // Astral Unicode tokens always match a code point, never a code unit\n\n\n    return isNegated ? \"(?:(?!\".concat(combined, \")(?:[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\0-\\uFFFF]))\") : \"(?:\".concat(combined, \")\");\n  } // Builds a complete astral pattern on first use\n\n\n  function cacheAstral(slug, isNegated) {\n    var prop = isNegated ? 'a!' : 'a=';\n    return unicode[slug][prop] || (unicode[slug][prop] = buildAstral(slug, isNegated));\n  } // ==--------------------------==\n  // Core functionality\n  // ==--------------------------==\n\n  /*\n   * Add astral mode (flag A) and Unicode token syntax: `\\p{..}`, `\\P{..}`, `\\p{^..}`, `\\pC`.\n   */\n\n\n  XRegExp.addToken( // Use `*` instead of `+` to avoid capturing `^` as the token name in `\\p{^}`\n  /\\\\([pP])(?:{(\\^?)([^}]*)}|([A-Za-z]))/, function (match, scope, flags) {\n    var ERR_DOUBLE_NEG = 'Invalid double negation ';\n    var ERR_UNKNOWN_NAME = 'Unknown Unicode token ';\n    var ERR_UNKNOWN_REF = 'Unicode token missing data ';\n    var ERR_ASTRAL_ONLY = 'Astral mode required for Unicode token ';\n    var ERR_ASTRAL_IN_CLASS = 'Astral mode does not support Unicode tokens within character classes'; // Negated via \\P{..} or \\p{^..}\n\n    var isNegated = match[1] === 'P' || !!match[2]; // Switch from BMP (0-FFFF) to astral (0-10FFFF) mode via flag A\n\n    var isAstralMode = flags.indexOf('A') !== -1; // Token lookup name. Check `[4]` first to avoid passing `undefined` via `\\p{}`\n\n    var slug = normalize(match[4] || match[3]); // Token data object\n\n    var item = unicode[slug];\n\n    if (match[1] === 'P' && match[2]) {\n      throw new SyntaxError(ERR_DOUBLE_NEG + match[0]);\n    }\n\n    if (!unicode.hasOwnProperty(slug)) {\n      throw new SyntaxError(ERR_UNKNOWN_NAME + match[0]);\n    } // Switch to the negated form of the referenced Unicode token\n\n\n    if (item.inverseOf) {\n      slug = normalize(item.inverseOf);\n\n      if (!unicode.hasOwnProperty(slug)) {\n        throw new ReferenceError(\"\".concat(ERR_UNKNOWN_REF + match[0], \" -> \").concat(item.inverseOf));\n      }\n\n      item = unicode[slug];\n      isNegated = !isNegated;\n    }\n\n    if (!(item.bmp || isAstralMode)) {\n      throw new SyntaxError(ERR_ASTRAL_ONLY + match[0]);\n    }\n\n    if (isAstralMode) {\n      if (scope === 'class') {\n        throw new SyntaxError(ERR_ASTRAL_IN_CLASS);\n      }\n\n      return cacheAstral(slug, isNegated);\n    }\n\n    return scope === 'class' ? isNegated ? cacheInvertedBmp(slug) : item.bmp : \"\".concat((isNegated ? '[^' : '[') + item.bmp, \"]\");\n  }, {\n    scope: 'all',\n    optionalFlags: 'A',\n    leadChar: '\\\\'\n  });\n  /**\n   * Adds to the list of Unicode tokens that XRegExp regexes can match via `\\p` or `\\P`.\n   *\n   * @memberOf XRegExp\n   * @param {Array} data Objects with named character ranges. Each object may have properties\n   *   `name`, `alias`, `isBmpLast`, `inverseOf`, `bmp`, and `astral`. All but `name` are\n   *   optional, although one of `bmp` or `astral` is required (unless `inverseOf` is set). If\n   *   `astral` is absent, the `bmp` data is used for BMP and astral modes. If `bmp` is absent,\n   *   the name errors in BMP mode but works in astral mode. If both `bmp` and `astral` are\n   *   provided, the `bmp` data only is used in BMP mode, and the combination of `bmp` and\n   *   `astral` data is used in astral mode. `isBmpLast` is needed when a token matches orphan\n   *   high surrogates *and* uses surrogate pairs to match astral code points. The `bmp` and\n   *   `astral` data should be a combination of literal characters and `\\xHH` or `\\uHHHH` escape\n   *   sequences, with hyphens to create ranges. Any regex metacharacters in the data should be\n   *   escaped, apart from range-creating hyphens. The `astral` data can additionally use\n   *   character classes and alternation, and should use surrogate pairs to represent astral code\n   *   points. `inverseOf` can be used to avoid duplicating character data if a Unicode token is\n   *   defined as the exact inverse of another token.\n   * @example\n   *\n   * // Basic use\n   * XRegExp.addUnicodeData([{\n   *   name: 'XDigit',\n   *   alias: 'Hexadecimal',\n   *   bmp: '0-9A-Fa-f'\n   * }]);\n   * XRegExp('\\\\p{XDigit}:\\\\p{Hexadecimal}+').test('0:3D'); // -> true\n   */\n\n  XRegExp.addUnicodeData = function (data) {\n    var ERR_NO_NAME = 'Unicode token requires name';\n    var ERR_NO_DATA = 'Unicode token has no character data ';\n    var _iteratorNormalCompletion = true;\n    var _didIteratorError = false;\n    var _iteratorError = undefined;\n\n    try {\n      for (var _iterator = (0, _getIterator2.default)(data), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n        var item = _step.value;\n\n        if (!item.name) {\n          throw new Error(ERR_NO_NAME);\n        }\n\n        if (!(item.inverseOf || item.bmp || item.astral)) {\n          throw new Error(ERR_NO_DATA + item.name);\n        }\n\n        unicode[normalize(item.name)] = item;\n\n        if (item.alias) {\n          unicode[normalize(item.alias)] = item;\n        }\n      } // Reset the pattern cache used by the `XRegExp` constructor, since the same pattern and\n      // flags might now produce different results\n\n    } catch (err) {\n      _didIteratorError = true;\n      _iteratorError = err;\n    } finally {\n      try {\n        if (!_iteratorNormalCompletion && _iterator.return != null) {\n          _iterator.return();\n        }\n      } finally {\n        if (_didIteratorError) {\n          throw _iteratorError;\n        }\n      }\n    }\n\n    XRegExp.cache.flush('patterns');\n  };\n  /**\n   * @ignore\n   *\n   * Return a reference to the internal Unicode definition structure for the given Unicode\n   * Property if the given name is a legal Unicode Property for use in XRegExp `\\p` or `\\P` regex\n   * constructs.\n   *\n   * @memberOf XRegExp\n   * @param {String} name Name by which the Unicode Property may be recognized (case-insensitive),\n   *   e.g. `'N'` or `'Number'`. The given name is matched against all registered Unicode\n   *   Properties and Property Aliases.\n   * @returns {Object} Reference to definition structure when the name matches a Unicode Property.\n   *\n   * @note\n   * For more info on Unicode Properties, see also http://unicode.org/reports/tr18/#Categories.\n   *\n   * @note\n   * This method is *not* part of the officially documented API and may change or be removed in\n   * the future. It is meant for userland code that wishes to reuse the (large) internal Unicode\n   * structures set up by XRegExp.\n   */\n\n\n  XRegExp._getUnicodeProperty = function (name) {\n    var slug = normalize(name);\n    return unicode[slug];\n  };\n};\n\nexports.default = _default;\nmodule.exports = exports[\"default\"];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/xregexp/lib/addons/unicode-base.js\n// module id = 438\n// module chunks = 88 89","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime-corejs2/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _blocks = _interopRequireDefault(require(\"../../tools/output/blocks\"));\n\n/*!\n * XRegExp Unicode Blocks 4.2.4\n * <xregexp.com>\n * Steven Levithan (c) 2010-present MIT License\n * Unicode data by Mathias Bynens <mathiasbynens.be>\n */\nvar _default = function _default(XRegExp) {\n  /**\n   * Adds support for all Unicode blocks. Block names use the prefix 'In'. E.g.,\n   * `\\p{InBasicLatin}`. Token names are case insensitive, and any spaces, hyphens, and\n   * underscores are ignored.\n   *\n   * Uses Unicode 11.0.0.\n   *\n   * @requires XRegExp, Unicode Base\n   */\n  if (!XRegExp.addUnicodeData) {\n    throw new ReferenceError('Unicode Base must be loaded before Unicode Blocks');\n  }\n\n  XRegExp.addUnicodeData(_blocks.default);\n};\n\nexports.default = _default;\nmodule.exports = exports[\"default\"];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/xregexp/lib/addons/unicode-blocks.js\n// module id = 439\n// module chunks = 88 89","module.exports = [\n    {\n        'name': 'InAdlam',\n        'astral': '\\uD83A[\\uDD00-\\uDD5F]'\n    },\n    {\n        'name': 'InAegean_Numbers',\n        'astral': '\\uD800[\\uDD00-\\uDD3F]'\n    },\n    {\n        'name': 'InAhom',\n        'astral': '\\uD805[\\uDF00-\\uDF3F]'\n    },\n    {\n        'name': 'InAlchemical_Symbols',\n        'astral': '\\uD83D[\\uDF00-\\uDF7F]'\n    },\n    {\n        'name': 'InAlphabetic_Presentation_Forms',\n        'bmp': '\\uFB00-\\uFB4F'\n    },\n    {\n        'name': 'InAnatolian_Hieroglyphs',\n        'astral': '\\uD811[\\uDC00-\\uDE7F]'\n    },\n    {\n        'name': 'InAncient_Greek_Musical_Notation',\n        'astral': '\\uD834[\\uDE00-\\uDE4F]'\n    },\n    {\n        'name': 'InAncient_Greek_Numbers',\n        'astral': '\\uD800[\\uDD40-\\uDD8F]'\n    },\n    {\n        'name': 'InAncient_Symbols',\n        'astral': '\\uD800[\\uDD90-\\uDDCF]'\n    },\n    {\n        'name': 'InArabic',\n        'bmp': '\\u0600-\\u06FF'\n    },\n    {\n        'name': 'InArabic_Extended_A',\n        'bmp': '\\u08A0-\\u08FF'\n    },\n    {\n        'name': 'InArabic_Mathematical_Alphabetic_Symbols',\n        'astral': '\\uD83B[\\uDE00-\\uDEFF]'\n    },\n    {\n        'name': 'InArabic_Presentation_Forms_A',\n        'bmp': '\\uFB50-\\uFDFF'\n    },\n    {\n        'name': 'InArabic_Presentation_Forms_B',\n        'bmp': '\\uFE70-\\uFEFF'\n    },\n    {\n        'name': 'InArabic_Supplement',\n        'bmp': '\\u0750-\\u077F'\n    },\n    {\n        'name': 'InArmenian',\n        'bmp': '\\u0530-\\u058F'\n    },\n    {\n        'name': 'InArrows',\n        'bmp': '\\u2190-\\u21FF'\n    },\n    {\n        'name': 'InAvestan',\n        'astral': '\\uD802[\\uDF00-\\uDF3F]'\n    },\n    {\n        'name': 'InBalinese',\n        'bmp': '\\u1B00-\\u1B7F'\n    },\n    {\n        'name': 'InBamum',\n        'bmp': '\\uA6A0-\\uA6FF'\n    },\n    {\n        'name': 'InBamum_Supplement',\n        'astral': '\\uD81A[\\uDC00-\\uDE3F]'\n    },\n    {\n        'name': 'InBasic_Latin',\n        'bmp': '\\0-\\x7F'\n    },\n    {\n        'name': 'InBassa_Vah',\n        'astral': '\\uD81A[\\uDED0-\\uDEFF]'\n    },\n    {\n        'name': 'InBatak',\n        'bmp': '\\u1BC0-\\u1BFF'\n    },\n    {\n        'name': 'InBengali',\n        'bmp': '\\u0980-\\u09FF'\n    },\n    {\n        'name': 'InBhaiksuki',\n        'astral': '\\uD807[\\uDC00-\\uDC6F]'\n    },\n    {\n        'name': 'InBlock_Elements',\n        'bmp': '\\u2580-\\u259F'\n    },\n    {\n        'name': 'InBopomofo',\n        'bmp': '\\u3100-\\u312F'\n    },\n    {\n        'name': 'InBopomofo_Extended',\n        'bmp': '\\u31A0-\\u31BF'\n    },\n    {\n        'name': 'InBox_Drawing',\n        'bmp': '\\u2500-\\u257F'\n    },\n    {\n        'name': 'InBrahmi',\n        'astral': '\\uD804[\\uDC00-\\uDC7F]'\n    },\n    {\n        'name': 'InBraille_Patterns',\n        'bmp': '\\u2800-\\u28FF'\n    },\n    {\n        'name': 'InBuginese',\n        'bmp': '\\u1A00-\\u1A1F'\n    },\n    {\n        'name': 'InBuhid',\n        'bmp': '\\u1740-\\u175F'\n    },\n    {\n        'name': 'InByzantine_Musical_Symbols',\n        'astral': '\\uD834[\\uDC00-\\uDCFF]'\n    },\n    {\n        'name': 'InCJK_Compatibility',\n        'bmp': '\\u3300-\\u33FF'\n    },\n    {\n        'name': 'InCJK_Compatibility_Forms',\n        'bmp': '\\uFE30-\\uFE4F'\n    },\n    {\n        'name': 'InCJK_Compatibility_Ideographs',\n        'bmp': '\\uF900-\\uFAFF'\n    },\n    {\n        'name': 'InCJK_Compatibility_Ideographs_Supplement',\n        'astral': '\\uD87E[\\uDC00-\\uDE1F]'\n    },\n    {\n        'name': 'InCJK_Radicals_Supplement',\n        'bmp': '\\u2E80-\\u2EFF'\n    },\n    {\n        'name': 'InCJK_Strokes',\n        'bmp': '\\u31C0-\\u31EF'\n    },\n    {\n        'name': 'InCJK_Symbols_And_Punctuation',\n        'bmp': '\\u3000-\\u303F'\n    },\n    {\n        'name': 'InCJK_Unified_Ideographs',\n        'bmp': '\\u4E00-\\u9FFF'\n    },\n    {\n        'name': 'InCJK_Unified_Ideographs_Extension_A',\n        'bmp': '\\u3400-\\u4DBF'\n    },\n    {\n        'name': 'InCJK_Unified_Ideographs_Extension_B',\n        'astral': '[\\uD840-\\uD868][\\uDC00-\\uDFFF]|\\uD869[\\uDC00-\\uDEDF]'\n    },\n    {\n        'name': 'InCJK_Unified_Ideographs_Extension_C',\n        'astral': '\\uD869[\\uDF00-\\uDFFF]|[\\uD86A-\\uD86C][\\uDC00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF3F]'\n    },\n    {\n        'name': 'InCJK_Unified_Ideographs_Extension_D',\n        'astral': '\\uD86D[\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1F]'\n    },\n    {\n        'name': 'InCJK_Unified_Ideographs_Extension_E',\n        'astral': '\\uD86E[\\uDC20-\\uDFFF]|[\\uD86F-\\uD872][\\uDC00-\\uDFFF]|\\uD873[\\uDC00-\\uDEAF]'\n    },\n    {\n        'name': 'InCJK_Unified_Ideographs_Extension_F',\n        'astral': '\\uD873[\\uDEB0-\\uDFFF]|[\\uD874-\\uD879][\\uDC00-\\uDFFF]|\\uD87A[\\uDC00-\\uDFEF]'\n    },\n    {\n        'name': 'InCarian',\n        'astral': '\\uD800[\\uDEA0-\\uDEDF]'\n    },\n    {\n        'name': 'InCaucasian_Albanian',\n        'astral': '\\uD801[\\uDD30-\\uDD6F]'\n    },\n    {\n        'name': 'InChakma',\n        'astral': '\\uD804[\\uDD00-\\uDD4F]'\n    },\n    {\n        'name': 'InCham',\n        'bmp': '\\uAA00-\\uAA5F'\n    },\n    {\n        'name': 'InCherokee',\n        'bmp': '\\u13A0-\\u13FF'\n    },\n    {\n        'name': 'InCherokee_Supplement',\n        'bmp': '\\uAB70-\\uABBF'\n    },\n    {\n        'name': 'InChess_Symbols',\n        'astral': '\\uD83E[\\uDE00-\\uDE6F]'\n    },\n    {\n        'name': 'InCombining_Diacritical_Marks',\n        'bmp': '\\u0300-\\u036F'\n    },\n    {\n        'name': 'InCombining_Diacritical_Marks_Extended',\n        'bmp': '\\u1AB0-\\u1AFF'\n    },\n    {\n        'name': 'InCombining_Diacritical_Marks_For_Symbols',\n        'bmp': '\\u20D0-\\u20FF'\n    },\n    {\n        'name': 'InCombining_Diacritical_Marks_Supplement',\n        'bmp': '\\u1DC0-\\u1DFF'\n    },\n    {\n        'name': 'InCombining_Half_Marks',\n        'bmp': '\\uFE20-\\uFE2F'\n    },\n    {\n        'name': 'InCommon_Indic_Number_Forms',\n        'bmp': '\\uA830-\\uA83F'\n    },\n    {\n        'name': 'InControl_Pictures',\n        'bmp': '\\u2400-\\u243F'\n    },\n    {\n        'name': 'InCoptic',\n        'bmp': '\\u2C80-\\u2CFF'\n    },\n    {\n        'name': 'InCoptic_Epact_Numbers',\n        'astral': '\\uD800[\\uDEE0-\\uDEFF]'\n    },\n    {\n        'name': 'InCounting_Rod_Numerals',\n        'astral': '\\uD834[\\uDF60-\\uDF7F]'\n    },\n    {\n        'name': 'InCuneiform',\n        'astral': '\\uD808[\\uDC00-\\uDFFF]'\n    },\n    {\n        'name': 'InCuneiform_Numbers_And_Punctuation',\n        'astral': '\\uD809[\\uDC00-\\uDC7F]'\n    },\n    {\n        'name': 'InCurrency_Symbols',\n        'bmp': '\\u20A0-\\u20CF'\n    },\n    {\n        'name': 'InCypriot_Syllabary',\n        'astral': '\\uD802[\\uDC00-\\uDC3F]'\n    },\n    {\n        'name': 'InCyrillic',\n        'bmp': '\\u0400-\\u04FF'\n    },\n    {\n        'name': 'InCyrillic_Extended_A',\n        'bmp': '\\u2DE0-\\u2DFF'\n    },\n    {\n        'name': 'InCyrillic_Extended_B',\n        'bmp': '\\uA640-\\uA69F'\n    },\n    {\n        'name': 'InCyrillic_Extended_C',\n        'bmp': '\\u1C80-\\u1C8F'\n    },\n    {\n        'name': 'InCyrillic_Supplement',\n        'bmp': '\\u0500-\\u052F'\n    },\n    {\n        'name': 'InDeseret',\n        'astral': '\\uD801[\\uDC00-\\uDC4F]'\n    },\n    {\n        'name': 'InDevanagari',\n        'bmp': '\\u0900-\\u097F'\n    },\n    {\n        'name': 'InDevanagari_Extended',\n        'bmp': '\\uA8E0-\\uA8FF'\n    },\n    {\n        'name': 'InDingbats',\n        'bmp': '\\u2700-\\u27BF'\n    },\n    {\n        'name': 'InDogra',\n        'astral': '\\uD806[\\uDC00-\\uDC4F]'\n    },\n    {\n        'name': 'InDomino_Tiles',\n        'astral': '\\uD83C[\\uDC30-\\uDC9F]'\n    },\n    {\n        'name': 'InDuployan',\n        'astral': '\\uD82F[\\uDC00-\\uDC9F]'\n    },\n    {\n        'name': 'InEarly_Dynastic_Cuneiform',\n        'astral': '\\uD809[\\uDC80-\\uDD4F]'\n    },\n    {\n        'name': 'InEgyptian_Hieroglyphs',\n        'astral': '\\uD80C[\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2F]'\n    },\n    {\n        'name': 'InElbasan',\n        'astral': '\\uD801[\\uDD00-\\uDD2F]'\n    },\n    {\n        'name': 'InEmoticons',\n        'astral': '\\uD83D[\\uDE00-\\uDE4F]'\n    },\n    {\n        'name': 'InEnclosed_Alphanumeric_Supplement',\n        'astral': '\\uD83C[\\uDD00-\\uDDFF]'\n    },\n    {\n        'name': 'InEnclosed_Alphanumerics',\n        'bmp': '\\u2460-\\u24FF'\n    },\n    {\n        'name': 'InEnclosed_CJK_Letters_And_Months',\n        'bmp': '\\u3200-\\u32FF'\n    },\n    {\n        'name': 'InEnclosed_Ideographic_Supplement',\n        'astral': '\\uD83C[\\uDE00-\\uDEFF]'\n    },\n    {\n        'name': 'InEthiopic',\n        'bmp': '\\u1200-\\u137F'\n    },\n    {\n        'name': 'InEthiopic_Extended',\n        'bmp': '\\u2D80-\\u2DDF'\n    },\n    {\n        'name': 'InEthiopic_Extended_A',\n        'bmp': '\\uAB00-\\uAB2F'\n    },\n    {\n        'name': 'InEthiopic_Supplement',\n        'bmp': '\\u1380-\\u139F'\n    },\n    {\n        'name': 'InGeneral_Punctuation',\n        'bmp': '\\u2000-\\u206F'\n    },\n    {\n        'name': 'InGeometric_Shapes',\n        'bmp': '\\u25A0-\\u25FF'\n    },\n    {\n        'name': 'InGeometric_Shapes_Extended',\n        'astral': '\\uD83D[\\uDF80-\\uDFFF]'\n    },\n    {\n        'name': 'InGeorgian',\n        'bmp': '\\u10A0-\\u10FF'\n    },\n    {\n        'name': 'InGeorgian_Extended',\n        'bmp': '\\u1C90-\\u1CBF'\n    },\n    {\n        'name': 'InGeorgian_Supplement',\n        'bmp': '\\u2D00-\\u2D2F'\n    },\n    {\n        'name': 'InGlagolitic',\n        'bmp': '\\u2C00-\\u2C5F'\n    },\n    {\n        'name': 'InGlagolitic_Supplement',\n        'astral': '\\uD838[\\uDC00-\\uDC2F]'\n    },\n    {\n        'name': 'InGothic',\n        'astral': '\\uD800[\\uDF30-\\uDF4F]'\n    },\n    {\n        'name': 'InGrantha',\n        'astral': '\\uD804[\\uDF00-\\uDF7F]'\n    },\n    {\n        'name': 'InGreek_And_Coptic',\n        'bmp': '\\u0370-\\u03FF'\n    },\n    {\n        'name': 'InGreek_Extended',\n        'bmp': '\\u1F00-\\u1FFF'\n    },\n    {\n        'name': 'InGujarati',\n        'bmp': '\\u0A80-\\u0AFF'\n    },\n    {\n        'name': 'InGunjala_Gondi',\n        'astral': '\\uD807[\\uDD60-\\uDDAF]'\n    },\n    {\n        'name': 'InGurmukhi',\n        'bmp': '\\u0A00-\\u0A7F'\n    },\n    {\n        'name': 'InHalfwidth_And_Fullwidth_Forms',\n        'bmp': '\\uFF00-\\uFFEF'\n    },\n    {\n        'name': 'InHangul_Compatibility_Jamo',\n        'bmp': '\\u3130-\\u318F'\n    },\n    {\n        'name': 'InHangul_Jamo',\n        'bmp': '\\u1100-\\u11FF'\n    },\n    {\n        'name': 'InHangul_Jamo_Extended_A',\n        'bmp': '\\uA960-\\uA97F'\n    },\n    {\n        'name': 'InHangul_Jamo_Extended_B',\n        'bmp': '\\uD7B0-\\uD7FF'\n    },\n    {\n        'name': 'InHangul_Syllables',\n        'bmp': '\\uAC00-\\uD7AF'\n    },\n    {\n        'name': 'InHanifi_Rohingya',\n        'astral': '\\uD803[\\uDD00-\\uDD3F]'\n    },\n    {\n        'name': 'InHanunoo',\n        'bmp': '\\u1720-\\u173F'\n    },\n    {\n        'name': 'InHatran',\n        'astral': '\\uD802[\\uDCE0-\\uDCFF]'\n    },\n    {\n        'name': 'InHebrew',\n        'bmp': '\\u0590-\\u05FF'\n    },\n    {\n        'name': 'InHigh_Private_Use_Surrogates',\n        'bmp': '\\uDB80-\\uDBFF'\n    },\n    {\n        'name': 'InHigh_Surrogates',\n        'bmp': '\\uD800-\\uDB7F'\n    },\n    {\n        'name': 'InHiragana',\n        'bmp': '\\u3040-\\u309F'\n    },\n    {\n        'name': 'InIPA_Extensions',\n        'bmp': '\\u0250-\\u02AF'\n    },\n    {\n        'name': 'InIdeographic_Description_Characters',\n        'bmp': '\\u2FF0-\\u2FFF'\n    },\n    {\n        'name': 'InIdeographic_Symbols_And_Punctuation',\n        'astral': '\\uD81B[\\uDFE0-\\uDFFF]'\n    },\n    {\n        'name': 'InImperial_Aramaic',\n        'astral': '\\uD802[\\uDC40-\\uDC5F]'\n    },\n    {\n        'name': 'InIndic_Siyaq_Numbers',\n        'astral': '\\uD83B[\\uDC70-\\uDCBF]'\n    },\n    {\n        'name': 'InInscriptional_Pahlavi',\n        'astral': '\\uD802[\\uDF60-\\uDF7F]'\n    },\n    {\n        'name': 'InInscriptional_Parthian',\n        'astral': '\\uD802[\\uDF40-\\uDF5F]'\n    },\n    {\n        'name': 'InJavanese',\n        'bmp': '\\uA980-\\uA9DF'\n    },\n    {\n        'name': 'InKaithi',\n        'astral': '\\uD804[\\uDC80-\\uDCCF]'\n    },\n    {\n        'name': 'InKana_Extended_A',\n        'astral': '\\uD82C[\\uDD00-\\uDD2F]'\n    },\n    {\n        'name': 'InKana_Supplement',\n        'astral': '\\uD82C[\\uDC00-\\uDCFF]'\n    },\n    {\n        'name': 'InKanbun',\n        'bmp': '\\u3190-\\u319F'\n    },\n    {\n        'name': 'InKangxi_Radicals',\n        'bmp': '\\u2F00-\\u2FDF'\n    },\n    {\n        'name': 'InKannada',\n        'bmp': '\\u0C80-\\u0CFF'\n    },\n    {\n        'name': 'InKatakana',\n        'bmp': '\\u30A0-\\u30FF'\n    },\n    {\n        'name': 'InKatakana_Phonetic_Extensions',\n        'bmp': '\\u31F0-\\u31FF'\n    },\n    {\n        'name': 'InKayah_Li',\n        'bmp': '\\uA900-\\uA92F'\n    },\n    {\n        'name': 'InKharoshthi',\n        'astral': '\\uD802[\\uDE00-\\uDE5F]'\n    },\n    {\n        'name': 'InKhmer',\n        'bmp': '\\u1780-\\u17FF'\n    },\n    {\n        'name': 'InKhmer_Symbols',\n        'bmp': '\\u19E0-\\u19FF'\n    },\n    {\n        'name': 'InKhojki',\n        'astral': '\\uD804[\\uDE00-\\uDE4F]'\n    },\n    {\n        'name': 'InKhudawadi',\n        'astral': '\\uD804[\\uDEB0-\\uDEFF]'\n    },\n    {\n        'name': 'InLao',\n        'bmp': '\\u0E80-\\u0EFF'\n    },\n    {\n        'name': 'InLatin_1_Supplement',\n        'bmp': '\\x80-\\xFF'\n    },\n    {\n        'name': 'InLatin_Extended_A',\n        'bmp': '\\u0100-\\u017F'\n    },\n    {\n        'name': 'InLatin_Extended_Additional',\n        'bmp': '\\u1E00-\\u1EFF'\n    },\n    {\n        'name': 'InLatin_Extended_B',\n        'bmp': '\\u0180-\\u024F'\n    },\n    {\n        'name': 'InLatin_Extended_C',\n        'bmp': '\\u2C60-\\u2C7F'\n    },\n    {\n        'name': 'InLatin_Extended_D',\n        'bmp': '\\uA720-\\uA7FF'\n    },\n    {\n        'name': 'InLatin_Extended_E',\n        'bmp': '\\uAB30-\\uAB6F'\n    },\n    {\n        'name': 'InLepcha',\n        'bmp': '\\u1C00-\\u1C4F'\n    },\n    {\n        'name': 'InLetterlike_Symbols',\n        'bmp': '\\u2100-\\u214F'\n    },\n    {\n        'name': 'InLimbu',\n        'bmp': '\\u1900-\\u194F'\n    },\n    {\n        'name': 'InLinear_A',\n        'astral': '\\uD801[\\uDE00-\\uDF7F]'\n    },\n    {\n        'name': 'InLinear_B_Ideograms',\n        'astral': '\\uD800[\\uDC80-\\uDCFF]'\n    },\n    {\n        'name': 'InLinear_B_Syllabary',\n        'astral': '\\uD800[\\uDC00-\\uDC7F]'\n    },\n    {\n        'name': 'InLisu',\n        'bmp': '\\uA4D0-\\uA4FF'\n    },\n    {\n        'name': 'InLow_Surrogates',\n        'bmp': '\\uDC00-\\uDFFF'\n    },\n    {\n        'name': 'InLycian',\n        'astral': '\\uD800[\\uDE80-\\uDE9F]'\n    },\n    {\n        'name': 'InLydian',\n        'astral': '\\uD802[\\uDD20-\\uDD3F]'\n    },\n    {\n        'name': 'InMahajani',\n        'astral': '\\uD804[\\uDD50-\\uDD7F]'\n    },\n    {\n        'name': 'InMahjong_Tiles',\n        'astral': '\\uD83C[\\uDC00-\\uDC2F]'\n    },\n    {\n        'name': 'InMakasar',\n        'astral': '\\uD807[\\uDEE0-\\uDEFF]'\n    },\n    {\n        'name': 'InMalayalam',\n        'bmp': '\\u0D00-\\u0D7F'\n    },\n    {\n        'name': 'InMandaic',\n        'bmp': '\\u0840-\\u085F'\n    },\n    {\n        'name': 'InManichaean',\n        'astral': '\\uD802[\\uDEC0-\\uDEFF]'\n    },\n    {\n        'name': 'InMarchen',\n        'astral': '\\uD807[\\uDC70-\\uDCBF]'\n    },\n    {\n        'name': 'InMasaram_Gondi',\n        'astral': '\\uD807[\\uDD00-\\uDD5F]'\n    },\n    {\n        'name': 'InMathematical_Alphanumeric_Symbols',\n        'astral': '\\uD835[\\uDC00-\\uDFFF]'\n    },\n    {\n        'name': 'InMathematical_Operators',\n        'bmp': '\\u2200-\\u22FF'\n    },\n    {\n        'name': 'InMayan_Numerals',\n        'astral': '\\uD834[\\uDEE0-\\uDEFF]'\n    },\n    {\n        'name': 'InMedefaidrin',\n        'astral': '\\uD81B[\\uDE40-\\uDE9F]'\n    },\n    {\n        'name': 'InMeetei_Mayek',\n        'bmp': '\\uABC0-\\uABFF'\n    },\n    {\n        'name': 'InMeetei_Mayek_Extensions',\n        'bmp': '\\uAAE0-\\uAAFF'\n    },\n    {\n        'name': 'InMende_Kikakui',\n        'astral': '\\uD83A[\\uDC00-\\uDCDF]'\n    },\n    {\n        'name': 'InMeroitic_Cursive',\n        'astral': '\\uD802[\\uDDA0-\\uDDFF]'\n    },\n    {\n        'name': 'InMeroitic_Hieroglyphs',\n        'astral': '\\uD802[\\uDD80-\\uDD9F]'\n    },\n    {\n        'name': 'InMiao',\n        'astral': '\\uD81B[\\uDF00-\\uDF9F]'\n    },\n    {\n        'name': 'InMiscellaneous_Mathematical_Symbols_A',\n        'bmp': '\\u27C0-\\u27EF'\n    },\n    {\n        'name': 'InMiscellaneous_Mathematical_Symbols_B',\n        'bmp': '\\u2980-\\u29FF'\n    },\n    {\n        'name': 'InMiscellaneous_Symbols',\n        'bmp': '\\u2600-\\u26FF'\n    },\n    {\n        'name': 'InMiscellaneous_Symbols_And_Arrows',\n        'bmp': '\\u2B00-\\u2BFF'\n    },\n    {\n        'name': 'InMiscellaneous_Symbols_And_Pictographs',\n        'astral': '\\uD83C[\\uDF00-\\uDFFF]|\\uD83D[\\uDC00-\\uDDFF]'\n    },\n    {\n        'name': 'InMiscellaneous_Technical',\n        'bmp': '\\u2300-\\u23FF'\n    },\n    {\n        'name': 'InModi',\n        'astral': '\\uD805[\\uDE00-\\uDE5F]'\n    },\n    {\n        'name': 'InModifier_Tone_Letters',\n        'bmp': '\\uA700-\\uA71F'\n    },\n    {\n        'name': 'InMongolian',\n        'bmp': '\\u1800-\\u18AF'\n    },\n    {\n        'name': 'InMongolian_Supplement',\n        'astral': '\\uD805[\\uDE60-\\uDE7F]'\n    },\n    {\n        'name': 'InMro',\n        'astral': '\\uD81A[\\uDE40-\\uDE6F]'\n    },\n    {\n        'name': 'InMultani',\n        'astral': '\\uD804[\\uDE80-\\uDEAF]'\n    },\n    {\n        'name': 'InMusical_Symbols',\n        'astral': '\\uD834[\\uDD00-\\uDDFF]'\n    },\n    {\n        'name': 'InMyanmar',\n        'bmp': '\\u1000-\\u109F'\n    },\n    {\n        'name': 'InMyanmar_Extended_A',\n        'bmp': '\\uAA60-\\uAA7F'\n    },\n    {\n        'name': 'InMyanmar_Extended_B',\n        'bmp': '\\uA9E0-\\uA9FF'\n    },\n    {\n        'name': 'InNKo',\n        'bmp': '\\u07C0-\\u07FF'\n    },\n    {\n        'name': 'InNabataean',\n        'astral': '\\uD802[\\uDC80-\\uDCAF]'\n    },\n    {\n        'name': 'InNew_Tai_Lue',\n        'bmp': '\\u1980-\\u19DF'\n    },\n    {\n        'name': 'InNewa',\n        'astral': '\\uD805[\\uDC00-\\uDC7F]'\n    },\n    {\n        'name': 'InNumber_Forms',\n        'bmp': '\\u2150-\\u218F'\n    },\n    {\n        'name': 'InNushu',\n        'astral': '\\uD82C[\\uDD70-\\uDEFF]'\n    },\n    {\n        'name': 'InOgham',\n        'bmp': '\\u1680-\\u169F'\n    },\n    {\n        'name': 'InOl_Chiki',\n        'bmp': '\\u1C50-\\u1C7F'\n    },\n    {\n        'name': 'InOld_Hungarian',\n        'astral': '\\uD803[\\uDC80-\\uDCFF]'\n    },\n    {\n        'name': 'InOld_Italic',\n        'astral': '\\uD800[\\uDF00-\\uDF2F]'\n    },\n    {\n        'name': 'InOld_North_Arabian',\n        'astral': '\\uD802[\\uDE80-\\uDE9F]'\n    },\n    {\n        'name': 'InOld_Permic',\n        'astral': '\\uD800[\\uDF50-\\uDF7F]'\n    },\n    {\n        'name': 'InOld_Persian',\n        'astral': '\\uD800[\\uDFA0-\\uDFDF]'\n    },\n    {\n        'name': 'InOld_Sogdian',\n        'astral': '\\uD803[\\uDF00-\\uDF2F]'\n    },\n    {\n        'name': 'InOld_South_Arabian',\n        'astral': '\\uD802[\\uDE60-\\uDE7F]'\n    },\n    {\n        'name': 'InOld_Turkic',\n        'astral': '\\uD803[\\uDC00-\\uDC4F]'\n    },\n    {\n        'name': 'InOptical_Character_Recognition',\n        'bmp': '\\u2440-\\u245F'\n    },\n    {\n        'name': 'InOriya',\n        'bmp': '\\u0B00-\\u0B7F'\n    },\n    {\n        'name': 'InOrnamental_Dingbats',\n        'astral': '\\uD83D[\\uDE50-\\uDE7F]'\n    },\n    {\n        'name': 'InOsage',\n        'astral': '\\uD801[\\uDCB0-\\uDCFF]'\n    },\n    {\n        'name': 'InOsmanya',\n        'astral': '\\uD801[\\uDC80-\\uDCAF]'\n    },\n    {\n        'name': 'InPahawh_Hmong',\n        'astral': '\\uD81A[\\uDF00-\\uDF8F]'\n    },\n    {\n        'name': 'InPalmyrene',\n        'astral': '\\uD802[\\uDC60-\\uDC7F]'\n    },\n    {\n        'name': 'InPau_Cin_Hau',\n        'astral': '\\uD806[\\uDEC0-\\uDEFF]'\n    },\n    {\n        'name': 'InPhags_Pa',\n        'bmp': '\\uA840-\\uA87F'\n    },\n    {\n        'name': 'InPhaistos_Disc',\n        'astral': '\\uD800[\\uDDD0-\\uDDFF]'\n    },\n    {\n        'name': 'InPhoenician',\n        'astral': '\\uD802[\\uDD00-\\uDD1F]'\n    },\n    {\n        'name': 'InPhonetic_Extensions',\n        'bmp': '\\u1D00-\\u1D7F'\n    },\n    {\n        'name': 'InPhonetic_Extensions_Supplement',\n        'bmp': '\\u1D80-\\u1DBF'\n    },\n    {\n        'name': 'InPlaying_Cards',\n        'astral': '\\uD83C[\\uDCA0-\\uDCFF]'\n    },\n    {\n        'name': 'InPrivate_Use_Area',\n        'bmp': '\\uE000-\\uF8FF'\n    },\n    {\n        'name': 'InPsalter_Pahlavi',\n        'astral': '\\uD802[\\uDF80-\\uDFAF]'\n    },\n    {\n        'name': 'InRejang',\n        'bmp': '\\uA930-\\uA95F'\n    },\n    {\n        'name': 'InRumi_Numeral_Symbols',\n        'astral': '\\uD803[\\uDE60-\\uDE7F]'\n    },\n    {\n        'name': 'InRunic',\n        'bmp': '\\u16A0-\\u16FF'\n    },\n    {\n        'name': 'InSamaritan',\n        'bmp': '\\u0800-\\u083F'\n    },\n    {\n        'name': 'InSaurashtra',\n        'bmp': '\\uA880-\\uA8DF'\n    },\n    {\n        'name': 'InSharada',\n        'astral': '\\uD804[\\uDD80-\\uDDDF]'\n    },\n    {\n        'name': 'InShavian',\n        'astral': '\\uD801[\\uDC50-\\uDC7F]'\n    },\n    {\n        'name': 'InShorthand_Format_Controls',\n        'astral': '\\uD82F[\\uDCA0-\\uDCAF]'\n    },\n    {\n        'name': 'InSiddham',\n        'astral': '\\uD805[\\uDD80-\\uDDFF]'\n    },\n    {\n        'name': 'InSinhala',\n        'bmp': '\\u0D80-\\u0DFF'\n    },\n    {\n        'name': 'InSinhala_Archaic_Numbers',\n        'astral': '\\uD804[\\uDDE0-\\uDDFF]'\n    },\n    {\n        'name': 'InSmall_Form_Variants',\n        'bmp': '\\uFE50-\\uFE6F'\n    },\n    {\n        'name': 'InSogdian',\n        'astral': '\\uD803[\\uDF30-\\uDF6F]'\n    },\n    {\n        'name': 'InSora_Sompeng',\n        'astral': '\\uD804[\\uDCD0-\\uDCFF]'\n    },\n    {\n        'name': 'InSoyombo',\n        'astral': '\\uD806[\\uDE50-\\uDEAF]'\n    },\n    {\n        'name': 'InSpacing_Modifier_Letters',\n        'bmp': '\\u02B0-\\u02FF'\n    },\n    {\n        'name': 'InSpecials',\n        'bmp': '\\uFFF0-\\uFFFF'\n    },\n    {\n        'name': 'InSundanese',\n        'bmp': '\\u1B80-\\u1BBF'\n    },\n    {\n        'name': 'InSundanese_Supplement',\n        'bmp': '\\u1CC0-\\u1CCF'\n    },\n    {\n        'name': 'InSuperscripts_And_Subscripts',\n        'bmp': '\\u2070-\\u209F'\n    },\n    {\n        'name': 'InSupplemental_Arrows_A',\n        'bmp': '\\u27F0-\\u27FF'\n    },\n    {\n        'name': 'InSupplemental_Arrows_B',\n        'bmp': '\\u2900-\\u297F'\n    },\n    {\n        'name': 'InSupplemental_Arrows_C',\n        'astral': '\\uD83E[\\uDC00-\\uDCFF]'\n    },\n    {\n        'name': 'InSupplemental_Mathematical_Operators',\n        'bmp': '\\u2A00-\\u2AFF'\n    },\n    {\n        'name': 'InSupplemental_Punctuation',\n        'bmp': '\\u2E00-\\u2E7F'\n    },\n    {\n        'name': 'InSupplemental_Symbols_And_Pictographs',\n        'astral': '\\uD83E[\\uDD00-\\uDDFF]'\n    },\n    {\n        'name': 'InSupplementary_Private_Use_Area_A',\n        'astral': '[\\uDB80-\\uDBBF][\\uDC00-\\uDFFF]'\n    },\n    {\n        'name': 'InSupplementary_Private_Use_Area_B',\n        'astral': '[\\uDBC0-\\uDBFF][\\uDC00-\\uDFFF]'\n    },\n    {\n        'name': 'InSutton_SignWriting',\n        'astral': '\\uD836[\\uDC00-\\uDEAF]'\n    },\n    {\n        'name': 'InSyloti_Nagri',\n        'bmp': '\\uA800-\\uA82F'\n    },\n    {\n        'name': 'InSyriac',\n        'bmp': '\\u0700-\\u074F'\n    },\n    {\n        'name': 'InSyriac_Supplement',\n        'bmp': '\\u0860-\\u086F'\n    },\n    {\n        'name': 'InTagalog',\n        'bmp': '\\u1700-\\u171F'\n    },\n    {\n        'name': 'InTagbanwa',\n        'bmp': '\\u1760-\\u177F'\n    },\n    {\n        'name': 'InTags',\n        'astral': '\\uDB40[\\uDC00-\\uDC7F]'\n    },\n    {\n        'name': 'InTai_Le',\n        'bmp': '\\u1950-\\u197F'\n    },\n    {\n        'name': 'InTai_Tham',\n        'bmp': '\\u1A20-\\u1AAF'\n    },\n    {\n        'name': 'InTai_Viet',\n        'bmp': '\\uAA80-\\uAADF'\n    },\n    {\n        'name': 'InTai_Xuan_Jing_Symbols',\n        'astral': '\\uD834[\\uDF00-\\uDF5F]'\n    },\n    {\n        'name': 'InTakri',\n        'astral': '\\uD805[\\uDE80-\\uDECF]'\n    },\n    {\n        'name': 'InTamil',\n        'bmp': '\\u0B80-\\u0BFF'\n    },\n    {\n        'name': 'InTangut',\n        'astral': '[\\uD81C-\\uD821][\\uDC00-\\uDFFF]'\n    },\n    {\n        'name': 'InTangut_Components',\n        'astral': '\\uD822[\\uDC00-\\uDEFF]'\n    },\n    {\n        'name': 'InTelugu',\n        'bmp': '\\u0C00-\\u0C7F'\n    },\n    {\n        'name': 'InThaana',\n        'bmp': '\\u0780-\\u07BF'\n    },\n    {\n        'name': 'InThai',\n        'bmp': '\\u0E00-\\u0E7F'\n    },\n    {\n        'name': 'InTibetan',\n        'bmp': '\\u0F00-\\u0FFF'\n    },\n    {\n        'name': 'InTifinagh',\n        'bmp': '\\u2D30-\\u2D7F'\n    },\n    {\n        'name': 'InTirhuta',\n        'astral': '\\uD805[\\uDC80-\\uDCDF]'\n    },\n    {\n        'name': 'InTransport_And_Map_Symbols',\n        'astral': '\\uD83D[\\uDE80-\\uDEFF]'\n    },\n    {\n        'name': 'InUgaritic',\n        'astral': '\\uD800[\\uDF80-\\uDF9F]'\n    },\n    {\n        'name': 'InUnified_Canadian_Aboriginal_Syllabics',\n        'bmp': '\\u1400-\\u167F'\n    },\n    {\n        'name': 'InUnified_Canadian_Aboriginal_Syllabics_Extended',\n        'bmp': '\\u18B0-\\u18FF'\n    },\n    {\n        'name': 'InVai',\n        'bmp': '\\uA500-\\uA63F'\n    },\n    {\n        'name': 'InVariation_Selectors',\n        'bmp': '\\uFE00-\\uFE0F'\n    },\n    {\n        'name': 'InVariation_Selectors_Supplement',\n        'astral': '\\uDB40[\\uDD00-\\uDDEF]'\n    },\n    {\n        'name': 'InVedic_Extensions',\n        'bmp': '\\u1CD0-\\u1CFF'\n    },\n    {\n        'name': 'InVertical_Forms',\n        'bmp': '\\uFE10-\\uFE1F'\n    },\n    {\n        'name': 'InWarang_Citi',\n        'astral': '\\uD806[\\uDCA0-\\uDCFF]'\n    },\n    {\n        'name': 'InYi_Radicals',\n        'bmp': '\\uA490-\\uA4CF'\n    },\n    {\n        'name': 'InYi_Syllables',\n        'bmp': '\\uA000-\\uA48F'\n    },\n    {\n        'name': 'InYijing_Hexagram_Symbols',\n        'bmp': '\\u4DC0-\\u4DFF'\n    },\n    {\n        'name': 'InZanabazar_Square',\n        'astral': '\\uD806[\\uDE00-\\uDE4F]'\n    }\n];\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/xregexp/tools/output/blocks.js\n// module id = 440\n// module chunks = 88 89","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime-corejs2/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _categories = _interopRequireDefault(require(\"../../tools/output/categories\"));\n\n/*!\n * XRegExp Unicode Categories 4.2.4\n * <xregexp.com>\n * Steven Levithan (c) 2010-present MIT License\n * Unicode data by Mathias Bynens <mathiasbynens.be>\n */\nvar _default = function _default(XRegExp) {\n  /**\n   * Adds support for Unicode's general categories. E.g., `\\p{Lu}` or `\\p{Uppercase Letter}`. See\n   * category descriptions in UAX #44 <http://unicode.org/reports/tr44/#GC_Values_Table>. Token\n   * names are case insensitive, and any spaces, hyphens, and underscores are ignored.\n   *\n   * Uses Unicode 11.0.0.\n   *\n   * @requires XRegExp, Unicode Base\n   */\n  if (!XRegExp.addUnicodeData) {\n    throw new ReferenceError('Unicode Base must be loaded before Unicode Categories');\n  }\n\n  XRegExp.addUnicodeData(_categories.default);\n};\n\nexports.default = _default;\nmodule.exports = exports[\"default\"];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/xregexp/lib/addons/unicode-categories.js\n// module id = 441\n// module chunks = 88 89","module.exports = [\n    {\n        'name': 'C',\n        'alias': 'Other',\n        'isBmpLast': true,\n        'bmp': '\\0-\\x1F\\x7F-\\x9F\\xAD\\u0378\\u0379\\u0380-\\u0383\\u038B\\u038D\\u03A2\\u0530\\u0557\\u0558\\u058B\\u058C\\u0590\\u05C8-\\u05CF\\u05EB-\\u05EE\\u05F5-\\u0605\\u061C\\u061D\\u06DD\\u070E\\u070F\\u074B\\u074C\\u07B2-\\u07BF\\u07FB\\u07FC\\u082E\\u082F\\u083F\\u085C\\u085D\\u085F\\u086B-\\u089F\\u08B5\\u08BE-\\u08D2\\u08E2\\u0984\\u098D\\u098E\\u0991\\u0992\\u09A9\\u09B1\\u09B3-\\u09B5\\u09BA\\u09BB\\u09C5\\u09C6\\u09C9\\u09CA\\u09CF-\\u09D6\\u09D8-\\u09DB\\u09DE\\u09E4\\u09E5\\u09FF\\u0A00\\u0A04\\u0A0B-\\u0A0E\\u0A11\\u0A12\\u0A29\\u0A31\\u0A34\\u0A37\\u0A3A\\u0A3B\\u0A3D\\u0A43-\\u0A46\\u0A49\\u0A4A\\u0A4E-\\u0A50\\u0A52-\\u0A58\\u0A5D\\u0A5F-\\u0A65\\u0A77-\\u0A80\\u0A84\\u0A8E\\u0A92\\u0AA9\\u0AB1\\u0AB4\\u0ABA\\u0ABB\\u0AC6\\u0ACA\\u0ACE\\u0ACF\\u0AD1-\\u0ADF\\u0AE4\\u0AE5\\u0AF2-\\u0AF8\\u0B00\\u0B04\\u0B0D\\u0B0E\\u0B11\\u0B12\\u0B29\\u0B31\\u0B34\\u0B3A\\u0B3B\\u0B45\\u0B46\\u0B49\\u0B4A\\u0B4E-\\u0B55\\u0B58-\\u0B5B\\u0B5E\\u0B64\\u0B65\\u0B78-\\u0B81\\u0B84\\u0B8B-\\u0B8D\\u0B91\\u0B96-\\u0B98\\u0B9B\\u0B9D\\u0BA0-\\u0BA2\\u0BA5-\\u0BA7\\u0BAB-\\u0BAD\\u0BBA-\\u0BBD\\u0BC3-\\u0BC5\\u0BC9\\u0BCE\\u0BCF\\u0BD1-\\u0BD6\\u0BD8-\\u0BE5\\u0BFB-\\u0BFF\\u0C0D\\u0C11\\u0C29\\u0C3A-\\u0C3C\\u0C45\\u0C49\\u0C4E-\\u0C54\\u0C57\\u0C5B-\\u0C5F\\u0C64\\u0C65\\u0C70-\\u0C77\\u0C8D\\u0C91\\u0CA9\\u0CB4\\u0CBA\\u0CBB\\u0CC5\\u0CC9\\u0CCE-\\u0CD4\\u0CD7-\\u0CDD\\u0CDF\\u0CE4\\u0CE5\\u0CF0\\u0CF3-\\u0CFF\\u0D04\\u0D0D\\u0D11\\u0D45\\u0D49\\u0D50-\\u0D53\\u0D64\\u0D65\\u0D80\\u0D81\\u0D84\\u0D97-\\u0D99\\u0DB2\\u0DBC\\u0DBE\\u0DBF\\u0DC7-\\u0DC9\\u0DCB-\\u0DCE\\u0DD5\\u0DD7\\u0DE0-\\u0DE5\\u0DF0\\u0DF1\\u0DF5-\\u0E00\\u0E3B-\\u0E3E\\u0E5C-\\u0E80\\u0E83\\u0E85\\u0E86\\u0E89\\u0E8B\\u0E8C\\u0E8E-\\u0E93\\u0E98\\u0EA0\\u0EA4\\u0EA6\\u0EA8\\u0EA9\\u0EAC\\u0EBA\\u0EBE\\u0EBF\\u0EC5\\u0EC7\\u0ECE\\u0ECF\\u0EDA\\u0EDB\\u0EE0-\\u0EFF\\u0F48\\u0F6D-\\u0F70\\u0F98\\u0FBD\\u0FCD\\u0FDB-\\u0FFF\\u10C6\\u10C8-\\u10CC\\u10CE\\u10CF\\u1249\\u124E\\u124F\\u1257\\u1259\\u125E\\u125F\\u1289\\u128E\\u128F\\u12B1\\u12B6\\u12B7\\u12BF\\u12C1\\u12C6\\u12C7\\u12D7\\u1311\\u1316\\u1317\\u135B\\u135C\\u137D-\\u137F\\u139A-\\u139F\\u13F6\\u13F7\\u13FE\\u13FF\\u169D-\\u169F\\u16F9-\\u16FF\\u170D\\u1715-\\u171F\\u1737-\\u173F\\u1754-\\u175F\\u176D\\u1771\\u1774-\\u177F\\u17DE\\u17DF\\u17EA-\\u17EF\\u17FA-\\u17FF\\u180E\\u180F\\u181A-\\u181F\\u1879-\\u187F\\u18AB-\\u18AF\\u18F6-\\u18FF\\u191F\\u192C-\\u192F\\u193C-\\u193F\\u1941-\\u1943\\u196E\\u196F\\u1975-\\u197F\\u19AC-\\u19AF\\u19CA-\\u19CF\\u19DB-\\u19DD\\u1A1C\\u1A1D\\u1A5F\\u1A7D\\u1A7E\\u1A8A-\\u1A8F\\u1A9A-\\u1A9F\\u1AAE\\u1AAF\\u1ABF-\\u1AFF\\u1B4C-\\u1B4F\\u1B7D-\\u1B7F\\u1BF4-\\u1BFB\\u1C38-\\u1C3A\\u1C4A-\\u1C4C\\u1C89-\\u1C8F\\u1CBB\\u1CBC\\u1CC8-\\u1CCF\\u1CFA-\\u1CFF\\u1DFA\\u1F16\\u1F17\\u1F1E\\u1F1F\\u1F46\\u1F47\\u1F4E\\u1F4F\\u1F58\\u1F5A\\u1F5C\\u1F5E\\u1F7E\\u1F7F\\u1FB5\\u1FC5\\u1FD4\\u1FD5\\u1FDC\\u1FF0\\u1FF1\\u1FF5\\u1FFF\\u200B-\\u200F\\u202A-\\u202E\\u2060-\\u206F\\u2072\\u2073\\u208F\\u209D-\\u209F\\u20C0-\\u20CF\\u20F1-\\u20FF\\u218C-\\u218F\\u2427-\\u243F\\u244B-\\u245F\\u2B74\\u2B75\\u2B96\\u2B97\\u2BC9\\u2BFF\\u2C2F\\u2C5F\\u2CF4-\\u2CF8\\u2D26\\u2D28-\\u2D2C\\u2D2E\\u2D2F\\u2D68-\\u2D6E\\u2D71-\\u2D7E\\u2D97-\\u2D9F\\u2DA7\\u2DAF\\u2DB7\\u2DBF\\u2DC7\\u2DCF\\u2DD7\\u2DDF\\u2E4F-\\u2E7F\\u2E9A\\u2EF4-\\u2EFF\\u2FD6-\\u2FEF\\u2FFC-\\u2FFF\\u3040\\u3097\\u3098\\u3100-\\u3104\\u3130\\u318F\\u31BB-\\u31BF\\u31E4-\\u31EF\\u321F\\u32FF\\u4DB6-\\u4DBF\\u9FF0-\\u9FFF\\uA48D-\\uA48F\\uA4C7-\\uA4CF\\uA62C-\\uA63F\\uA6F8-\\uA6FF\\uA7BA-\\uA7F6\\uA82C-\\uA82F\\uA83A-\\uA83F\\uA878-\\uA87F\\uA8C6-\\uA8CD\\uA8DA-\\uA8DF\\uA954-\\uA95E\\uA97D-\\uA97F\\uA9CE\\uA9DA-\\uA9DD\\uA9FF\\uAA37-\\uAA3F\\uAA4E\\uAA4F\\uAA5A\\uAA5B\\uAAC3-\\uAADA\\uAAF7-\\uAB00\\uAB07\\uAB08\\uAB0F\\uAB10\\uAB17-\\uAB1F\\uAB27\\uAB2F\\uAB66-\\uAB6F\\uABEE\\uABEF\\uABFA-\\uABFF\\uD7A4-\\uD7AF\\uD7C7-\\uD7CA\\uD7FC-\\uF8FF\\uFA6E\\uFA6F\\uFADA-\\uFAFF\\uFB07-\\uFB12\\uFB18-\\uFB1C\\uFB37\\uFB3D\\uFB3F\\uFB42\\uFB45\\uFBC2-\\uFBD2\\uFD40-\\uFD4F\\uFD90\\uFD91\\uFDC8-\\uFDEF\\uFDFE\\uFDFF\\uFE1A-\\uFE1F\\uFE53\\uFE67\\uFE6C-\\uFE6F\\uFE75\\uFEFD-\\uFF00\\uFFBF-\\uFFC1\\uFFC8\\uFFC9\\uFFD0\\uFFD1\\uFFD8\\uFFD9\\uFFDD-\\uFFDF\\uFFE7\\uFFEF-\\uFFFB\\uFFFE\\uFFFF',\n        'astral': '\\uD800[\\uDC0C\\uDC27\\uDC3B\\uDC3E\\uDC4E\\uDC4F\\uDC5E-\\uDC7F\\uDCFB-\\uDCFF\\uDD03-\\uDD06\\uDD34-\\uDD36\\uDD8F\\uDD9C-\\uDD9F\\uDDA1-\\uDDCF\\uDDFE-\\uDE7F\\uDE9D-\\uDE9F\\uDED1-\\uDEDF\\uDEFC-\\uDEFF\\uDF24-\\uDF2C\\uDF4B-\\uDF4F\\uDF7B-\\uDF7F\\uDF9E\\uDFC4-\\uDFC7\\uDFD6-\\uDFFF]|\\uD801[\\uDC9E\\uDC9F\\uDCAA-\\uDCAF\\uDCD4-\\uDCD7\\uDCFC-\\uDCFF\\uDD28-\\uDD2F\\uDD64-\\uDD6E\\uDD70-\\uDDFF\\uDF37-\\uDF3F\\uDF56-\\uDF5F\\uDF68-\\uDFFF]|\\uD802[\\uDC06\\uDC07\\uDC09\\uDC36\\uDC39-\\uDC3B\\uDC3D\\uDC3E\\uDC56\\uDC9F-\\uDCA6\\uDCB0-\\uDCDF\\uDCF3\\uDCF6-\\uDCFA\\uDD1C-\\uDD1E\\uDD3A-\\uDD3E\\uDD40-\\uDD7F\\uDDB8-\\uDDBB\\uDDD0\\uDDD1\\uDE04\\uDE07-\\uDE0B\\uDE14\\uDE18\\uDE36\\uDE37\\uDE3B-\\uDE3E\\uDE49-\\uDE4F\\uDE59-\\uDE5F\\uDEA0-\\uDEBF\\uDEE7-\\uDEEA\\uDEF7-\\uDEFF\\uDF36-\\uDF38\\uDF56\\uDF57\\uDF73-\\uDF77\\uDF92-\\uDF98\\uDF9D-\\uDFA8\\uDFB0-\\uDFFF]|\\uD803[\\uDC49-\\uDC7F\\uDCB3-\\uDCBF\\uDCF3-\\uDCF9\\uDD28-\\uDD2F\\uDD3A-\\uDE5F\\uDE7F-\\uDEFF\\uDF28-\\uDF2F\\uDF5A-\\uDFFF]|\\uD804[\\uDC4E-\\uDC51\\uDC70-\\uDC7E\\uDCBD\\uDCC2-\\uDCCF\\uDCE9-\\uDCEF\\uDCFA-\\uDCFF\\uDD35\\uDD47-\\uDD4F\\uDD77-\\uDD7F\\uDDCE\\uDDCF\\uDDE0\\uDDF5-\\uDDFF\\uDE12\\uDE3F-\\uDE7F\\uDE87\\uDE89\\uDE8E\\uDE9E\\uDEAA-\\uDEAF\\uDEEB-\\uDEEF\\uDEFA-\\uDEFF\\uDF04\\uDF0D\\uDF0E\\uDF11\\uDF12\\uDF29\\uDF31\\uDF34\\uDF3A\\uDF45\\uDF46\\uDF49\\uDF4A\\uDF4E\\uDF4F\\uDF51-\\uDF56\\uDF58-\\uDF5C\\uDF64\\uDF65\\uDF6D-\\uDF6F\\uDF75-\\uDFFF]|\\uD805[\\uDC5A\\uDC5C\\uDC5F-\\uDC7F\\uDCC8-\\uDCCF\\uDCDA-\\uDD7F\\uDDB6\\uDDB7\\uDDDE-\\uDDFF\\uDE45-\\uDE4F\\uDE5A-\\uDE5F\\uDE6D-\\uDE7F\\uDEB8-\\uDEBF\\uDECA-\\uDEFF\\uDF1B\\uDF1C\\uDF2C-\\uDF2F\\uDF40-\\uDFFF]|\\uD806[\\uDC3C-\\uDC9F\\uDCF3-\\uDCFE\\uDD00-\\uDDFF\\uDE48-\\uDE4F\\uDE84\\uDE85\\uDEA3-\\uDEBF\\uDEF9-\\uDFFF]|\\uD807[\\uDC09\\uDC37\\uDC46-\\uDC4F\\uDC6D-\\uDC6F\\uDC90\\uDC91\\uDCA8\\uDCB7-\\uDCFF\\uDD07\\uDD0A\\uDD37-\\uDD39\\uDD3B\\uDD3E\\uDD48-\\uDD4F\\uDD5A-\\uDD5F\\uDD66\\uDD69\\uDD8F\\uDD92\\uDD99-\\uDD9F\\uDDAA-\\uDEDF\\uDEF9-\\uDFFF]|\\uD808[\\uDF9A-\\uDFFF]|\\uD809[\\uDC6F\\uDC75-\\uDC7F\\uDD44-\\uDFFF]|[\\uD80A\\uD80B\\uD80E-\\uD810\\uD812-\\uD819\\uD823-\\uD82B\\uD82D\\uD82E\\uD830-\\uD833\\uD837\\uD839\\uD83F\\uD87B-\\uD87D\\uD87F-\\uDB3F\\uDB41-\\uDBFF][\\uDC00-\\uDFFF]|\\uD80D[\\uDC2F-\\uDFFF]|\\uD811[\\uDE47-\\uDFFF]|\\uD81A[\\uDE39-\\uDE3F\\uDE5F\\uDE6A-\\uDE6D\\uDE70-\\uDECF\\uDEEE\\uDEEF\\uDEF6-\\uDEFF\\uDF46-\\uDF4F\\uDF5A\\uDF62\\uDF78-\\uDF7C\\uDF90-\\uDFFF]|\\uD81B[\\uDC00-\\uDE3F\\uDE9B-\\uDEFF\\uDF45-\\uDF4F\\uDF7F-\\uDF8E\\uDFA0-\\uDFDF\\uDFE2-\\uDFFF]|\\uD821[\\uDFF2-\\uDFFF]|\\uD822[\\uDEF3-\\uDFFF]|\\uD82C[\\uDD1F-\\uDD6F\\uDEFC-\\uDFFF]|\\uD82F[\\uDC6B-\\uDC6F\\uDC7D-\\uDC7F\\uDC89-\\uDC8F\\uDC9A\\uDC9B\\uDCA0-\\uDFFF]|\\uD834[\\uDCF6-\\uDCFF\\uDD27\\uDD28\\uDD73-\\uDD7A\\uDDE9-\\uDDFF\\uDE46-\\uDEDF\\uDEF4-\\uDEFF\\uDF57-\\uDF5F\\uDF79-\\uDFFF]|\\uD835[\\uDC55\\uDC9D\\uDCA0\\uDCA1\\uDCA3\\uDCA4\\uDCA7\\uDCA8\\uDCAD\\uDCBA\\uDCBC\\uDCC4\\uDD06\\uDD0B\\uDD0C\\uDD15\\uDD1D\\uDD3A\\uDD3F\\uDD45\\uDD47-\\uDD49\\uDD51\\uDEA6\\uDEA7\\uDFCC\\uDFCD]|\\uD836[\\uDE8C-\\uDE9A\\uDEA0\\uDEB0-\\uDFFF]|\\uD838[\\uDC07\\uDC19\\uDC1A\\uDC22\\uDC25\\uDC2B-\\uDFFF]|\\uD83A[\\uDCC5\\uDCC6\\uDCD7-\\uDCFF\\uDD4B-\\uDD4F\\uDD5A-\\uDD5D\\uDD60-\\uDFFF]|\\uD83B[\\uDC00-\\uDC70\\uDCB5-\\uDDFF\\uDE04\\uDE20\\uDE23\\uDE25\\uDE26\\uDE28\\uDE33\\uDE38\\uDE3A\\uDE3C-\\uDE41\\uDE43-\\uDE46\\uDE48\\uDE4A\\uDE4C\\uDE50\\uDE53\\uDE55\\uDE56\\uDE58\\uDE5A\\uDE5C\\uDE5E\\uDE60\\uDE63\\uDE65\\uDE66\\uDE6B\\uDE73\\uDE78\\uDE7D\\uDE7F\\uDE8A\\uDE9C-\\uDEA0\\uDEA4\\uDEAA\\uDEBC-\\uDEEF\\uDEF2-\\uDFFF]|\\uD83C[\\uDC2C-\\uDC2F\\uDC94-\\uDC9F\\uDCAF\\uDCB0\\uDCC0\\uDCD0\\uDCF6-\\uDCFF\\uDD0D-\\uDD0F\\uDD6C-\\uDD6F\\uDDAD-\\uDDE5\\uDE03-\\uDE0F\\uDE3C-\\uDE3F\\uDE49-\\uDE4F\\uDE52-\\uDE5F\\uDE66-\\uDEFF]|\\uD83D[\\uDED5-\\uDEDF\\uDEED-\\uDEEF\\uDEFA-\\uDEFF\\uDF74-\\uDF7F\\uDFD9-\\uDFFF]|\\uD83E[\\uDC0C-\\uDC0F\\uDC48-\\uDC4F\\uDC5A-\\uDC5F\\uDC88-\\uDC8F\\uDCAE-\\uDCFF\\uDD0C-\\uDD0F\\uDD3F\\uDD71\\uDD72\\uDD77-\\uDD79\\uDD7B\\uDDA3-\\uDDAF\\uDDBA-\\uDDBF\\uDDC3-\\uDDCF\\uDE00-\\uDE5F\\uDE6E-\\uDFFF]|\\uD869[\\uDED7-\\uDEFF]|\\uD86D[\\uDF35-\\uDF3F]|\\uD86E[\\uDC1E\\uDC1F]|\\uD873[\\uDEA2-\\uDEAF]|\\uD87A[\\uDFE1-\\uDFFF]|\\uD87E[\\uDE1E-\\uDFFF]|\\uDB40[\\uDC00-\\uDCFF\\uDDF0-\\uDFFF]'\n    },\n    {\n        'name': 'Cc',\n        'alias': 'Control',\n        'bmp': '\\0-\\x1F\\x7F-\\x9F'\n    },\n    {\n        'name': 'Cf',\n        'alias': 'Format',\n        'bmp': '\\xAD\\u0600-\\u0605\\u061C\\u06DD\\u070F\\u08E2\\u180E\\u200B-\\u200F\\u202A-\\u202E\\u2060-\\u2064\\u2066-\\u206F\\uFEFF\\uFFF9-\\uFFFB',\n        'astral': '\\uD804[\\uDCBD\\uDCCD]|\\uD82F[\\uDCA0-\\uDCA3]|\\uD834[\\uDD73-\\uDD7A]|\\uDB40[\\uDC01\\uDC20-\\uDC7F]'\n    },\n    {\n        'name': 'Cn',\n        'alias': 'Unassigned',\n        'bmp': '\\u0378\\u0379\\u0380-\\u0383\\u038B\\u038D\\u03A2\\u0530\\u0557\\u0558\\u058B\\u058C\\u0590\\u05C8-\\u05CF\\u05EB-\\u05EE\\u05F5-\\u05FF\\u061D\\u070E\\u074B\\u074C\\u07B2-\\u07BF\\u07FB\\u07FC\\u082E\\u082F\\u083F\\u085C\\u085D\\u085F\\u086B-\\u089F\\u08B5\\u08BE-\\u08D2\\u0984\\u098D\\u098E\\u0991\\u0992\\u09A9\\u09B1\\u09B3-\\u09B5\\u09BA\\u09BB\\u09C5\\u09C6\\u09C9\\u09CA\\u09CF-\\u09D6\\u09D8-\\u09DB\\u09DE\\u09E4\\u09E5\\u09FF\\u0A00\\u0A04\\u0A0B-\\u0A0E\\u0A11\\u0A12\\u0A29\\u0A31\\u0A34\\u0A37\\u0A3A\\u0A3B\\u0A3D\\u0A43-\\u0A46\\u0A49\\u0A4A\\u0A4E-\\u0A50\\u0A52-\\u0A58\\u0A5D\\u0A5F-\\u0A65\\u0A77-\\u0A80\\u0A84\\u0A8E\\u0A92\\u0AA9\\u0AB1\\u0AB4\\u0ABA\\u0ABB\\u0AC6\\u0ACA\\u0ACE\\u0ACF\\u0AD1-\\u0ADF\\u0AE4\\u0AE5\\u0AF2-\\u0AF8\\u0B00\\u0B04\\u0B0D\\u0B0E\\u0B11\\u0B12\\u0B29\\u0B31\\u0B34\\u0B3A\\u0B3B\\u0B45\\u0B46\\u0B49\\u0B4A\\u0B4E-\\u0B55\\u0B58-\\u0B5B\\u0B5E\\u0B64\\u0B65\\u0B78-\\u0B81\\u0B84\\u0B8B-\\u0B8D\\u0B91\\u0B96-\\u0B98\\u0B9B\\u0B9D\\u0BA0-\\u0BA2\\u0BA5-\\u0BA7\\u0BAB-\\u0BAD\\u0BBA-\\u0BBD\\u0BC3-\\u0BC5\\u0BC9\\u0BCE\\u0BCF\\u0BD1-\\u0BD6\\u0BD8-\\u0BE5\\u0BFB-\\u0BFF\\u0C0D\\u0C11\\u0C29\\u0C3A-\\u0C3C\\u0C45\\u0C49\\u0C4E-\\u0C54\\u0C57\\u0C5B-\\u0C5F\\u0C64\\u0C65\\u0C70-\\u0C77\\u0C8D\\u0C91\\u0CA9\\u0CB4\\u0CBA\\u0CBB\\u0CC5\\u0CC9\\u0CCE-\\u0CD4\\u0CD7-\\u0CDD\\u0CDF\\u0CE4\\u0CE5\\u0CF0\\u0CF3-\\u0CFF\\u0D04\\u0D0D\\u0D11\\u0D45\\u0D49\\u0D50-\\u0D53\\u0D64\\u0D65\\u0D80\\u0D81\\u0D84\\u0D97-\\u0D99\\u0DB2\\u0DBC\\u0DBE\\u0DBF\\u0DC7-\\u0DC9\\u0DCB-\\u0DCE\\u0DD5\\u0DD7\\u0DE0-\\u0DE5\\u0DF0\\u0DF1\\u0DF5-\\u0E00\\u0E3B-\\u0E3E\\u0E5C-\\u0E80\\u0E83\\u0E85\\u0E86\\u0E89\\u0E8B\\u0E8C\\u0E8E-\\u0E93\\u0E98\\u0EA0\\u0EA4\\u0EA6\\u0EA8\\u0EA9\\u0EAC\\u0EBA\\u0EBE\\u0EBF\\u0EC5\\u0EC7\\u0ECE\\u0ECF\\u0EDA\\u0EDB\\u0EE0-\\u0EFF\\u0F48\\u0F6D-\\u0F70\\u0F98\\u0FBD\\u0FCD\\u0FDB-\\u0FFF\\u10C6\\u10C8-\\u10CC\\u10CE\\u10CF\\u1249\\u124E\\u124F\\u1257\\u1259\\u125E\\u125F\\u1289\\u128E\\u128F\\u12B1\\u12B6\\u12B7\\u12BF\\u12C1\\u12C6\\u12C7\\u12D7\\u1311\\u1316\\u1317\\u135B\\u135C\\u137D-\\u137F\\u139A-\\u139F\\u13F6\\u13F7\\u13FE\\u13FF\\u169D-\\u169F\\u16F9-\\u16FF\\u170D\\u1715-\\u171F\\u1737-\\u173F\\u1754-\\u175F\\u176D\\u1771\\u1774-\\u177F\\u17DE\\u17DF\\u17EA-\\u17EF\\u17FA-\\u17FF\\u180F\\u181A-\\u181F\\u1879-\\u187F\\u18AB-\\u18AF\\u18F6-\\u18FF\\u191F\\u192C-\\u192F\\u193C-\\u193F\\u1941-\\u1943\\u196E\\u196F\\u1975-\\u197F\\u19AC-\\u19AF\\u19CA-\\u19CF\\u19DB-\\u19DD\\u1A1C\\u1A1D\\u1A5F\\u1A7D\\u1A7E\\u1A8A-\\u1A8F\\u1A9A-\\u1A9F\\u1AAE\\u1AAF\\u1ABF-\\u1AFF\\u1B4C-\\u1B4F\\u1B7D-\\u1B7F\\u1BF4-\\u1BFB\\u1C38-\\u1C3A\\u1C4A-\\u1C4C\\u1C89-\\u1C8F\\u1CBB\\u1CBC\\u1CC8-\\u1CCF\\u1CFA-\\u1CFF\\u1DFA\\u1F16\\u1F17\\u1F1E\\u1F1F\\u1F46\\u1F47\\u1F4E\\u1F4F\\u1F58\\u1F5A\\u1F5C\\u1F5E\\u1F7E\\u1F7F\\u1FB5\\u1FC5\\u1FD4\\u1FD5\\u1FDC\\u1FF0\\u1FF1\\u1FF5\\u1FFF\\u2065\\u2072\\u2073\\u208F\\u209D-\\u209F\\u20C0-\\u20CF\\u20F1-\\u20FF\\u218C-\\u218F\\u2427-\\u243F\\u244B-\\u245F\\u2B74\\u2B75\\u2B96\\u2B97\\u2BC9\\u2BFF\\u2C2F\\u2C5F\\u2CF4-\\u2CF8\\u2D26\\u2D28-\\u2D2C\\u2D2E\\u2D2F\\u2D68-\\u2D6E\\u2D71-\\u2D7E\\u2D97-\\u2D9F\\u2DA7\\u2DAF\\u2DB7\\u2DBF\\u2DC7\\u2DCF\\u2DD7\\u2DDF\\u2E4F-\\u2E7F\\u2E9A\\u2EF4-\\u2EFF\\u2FD6-\\u2FEF\\u2FFC-\\u2FFF\\u3040\\u3097\\u3098\\u3100-\\u3104\\u3130\\u318F\\u31BB-\\u31BF\\u31E4-\\u31EF\\u321F\\u32FF\\u4DB6-\\u4DBF\\u9FF0-\\u9FFF\\uA48D-\\uA48F\\uA4C7-\\uA4CF\\uA62C-\\uA63F\\uA6F8-\\uA6FF\\uA7BA-\\uA7F6\\uA82C-\\uA82F\\uA83A-\\uA83F\\uA878-\\uA87F\\uA8C6-\\uA8CD\\uA8DA-\\uA8DF\\uA954-\\uA95E\\uA97D-\\uA97F\\uA9CE\\uA9DA-\\uA9DD\\uA9FF\\uAA37-\\uAA3F\\uAA4E\\uAA4F\\uAA5A\\uAA5B\\uAAC3-\\uAADA\\uAAF7-\\uAB00\\uAB07\\uAB08\\uAB0F\\uAB10\\uAB17-\\uAB1F\\uAB27\\uAB2F\\uAB66-\\uAB6F\\uABEE\\uABEF\\uABFA-\\uABFF\\uD7A4-\\uD7AF\\uD7C7-\\uD7CA\\uD7FC-\\uD7FF\\uFA6E\\uFA6F\\uFADA-\\uFAFF\\uFB07-\\uFB12\\uFB18-\\uFB1C\\uFB37\\uFB3D\\uFB3F\\uFB42\\uFB45\\uFBC2-\\uFBD2\\uFD40-\\uFD4F\\uFD90\\uFD91\\uFDC8-\\uFDEF\\uFDFE\\uFDFF\\uFE1A-\\uFE1F\\uFE53\\uFE67\\uFE6C-\\uFE6F\\uFE75\\uFEFD\\uFEFE\\uFF00\\uFFBF-\\uFFC1\\uFFC8\\uFFC9\\uFFD0\\uFFD1\\uFFD8\\uFFD9\\uFFDD-\\uFFDF\\uFFE7\\uFFEF-\\uFFF8\\uFFFE\\uFFFF',\n        'astral': '\\uD800[\\uDC0C\\uDC27\\uDC3B\\uDC3E\\uDC4E\\uDC4F\\uDC5E-\\uDC7F\\uDCFB-\\uDCFF\\uDD03-\\uDD06\\uDD34-\\uDD36\\uDD8F\\uDD9C-\\uDD9F\\uDDA1-\\uDDCF\\uDDFE-\\uDE7F\\uDE9D-\\uDE9F\\uDED1-\\uDEDF\\uDEFC-\\uDEFF\\uDF24-\\uDF2C\\uDF4B-\\uDF4F\\uDF7B-\\uDF7F\\uDF9E\\uDFC4-\\uDFC7\\uDFD6-\\uDFFF]|\\uD801[\\uDC9E\\uDC9F\\uDCAA-\\uDCAF\\uDCD4-\\uDCD7\\uDCFC-\\uDCFF\\uDD28-\\uDD2F\\uDD64-\\uDD6E\\uDD70-\\uDDFF\\uDF37-\\uDF3F\\uDF56-\\uDF5F\\uDF68-\\uDFFF]|\\uD802[\\uDC06\\uDC07\\uDC09\\uDC36\\uDC39-\\uDC3B\\uDC3D\\uDC3E\\uDC56\\uDC9F-\\uDCA6\\uDCB0-\\uDCDF\\uDCF3\\uDCF6-\\uDCFA\\uDD1C-\\uDD1E\\uDD3A-\\uDD3E\\uDD40-\\uDD7F\\uDDB8-\\uDDBB\\uDDD0\\uDDD1\\uDE04\\uDE07-\\uDE0B\\uDE14\\uDE18\\uDE36\\uDE37\\uDE3B-\\uDE3E\\uDE49-\\uDE4F\\uDE59-\\uDE5F\\uDEA0-\\uDEBF\\uDEE7-\\uDEEA\\uDEF7-\\uDEFF\\uDF36-\\uDF38\\uDF56\\uDF57\\uDF73-\\uDF77\\uDF92-\\uDF98\\uDF9D-\\uDFA8\\uDFB0-\\uDFFF]|\\uD803[\\uDC49-\\uDC7F\\uDCB3-\\uDCBF\\uDCF3-\\uDCF9\\uDD28-\\uDD2F\\uDD3A-\\uDE5F\\uDE7F-\\uDEFF\\uDF28-\\uDF2F\\uDF5A-\\uDFFF]|\\uD804[\\uDC4E-\\uDC51\\uDC70-\\uDC7E\\uDCC2-\\uDCCC\\uDCCE\\uDCCF\\uDCE9-\\uDCEF\\uDCFA-\\uDCFF\\uDD35\\uDD47-\\uDD4F\\uDD77-\\uDD7F\\uDDCE\\uDDCF\\uDDE0\\uDDF5-\\uDDFF\\uDE12\\uDE3F-\\uDE7F\\uDE87\\uDE89\\uDE8E\\uDE9E\\uDEAA-\\uDEAF\\uDEEB-\\uDEEF\\uDEFA-\\uDEFF\\uDF04\\uDF0D\\uDF0E\\uDF11\\uDF12\\uDF29\\uDF31\\uDF34\\uDF3A\\uDF45\\uDF46\\uDF49\\uDF4A\\uDF4E\\uDF4F\\uDF51-\\uDF56\\uDF58-\\uDF5C\\uDF64\\uDF65\\uDF6D-\\uDF6F\\uDF75-\\uDFFF]|\\uD805[\\uDC5A\\uDC5C\\uDC5F-\\uDC7F\\uDCC8-\\uDCCF\\uDCDA-\\uDD7F\\uDDB6\\uDDB7\\uDDDE-\\uDDFF\\uDE45-\\uDE4F\\uDE5A-\\uDE5F\\uDE6D-\\uDE7F\\uDEB8-\\uDEBF\\uDECA-\\uDEFF\\uDF1B\\uDF1C\\uDF2C-\\uDF2F\\uDF40-\\uDFFF]|\\uD806[\\uDC3C-\\uDC9F\\uDCF3-\\uDCFE\\uDD00-\\uDDFF\\uDE48-\\uDE4F\\uDE84\\uDE85\\uDEA3-\\uDEBF\\uDEF9-\\uDFFF]|\\uD807[\\uDC09\\uDC37\\uDC46-\\uDC4F\\uDC6D-\\uDC6F\\uDC90\\uDC91\\uDCA8\\uDCB7-\\uDCFF\\uDD07\\uDD0A\\uDD37-\\uDD39\\uDD3B\\uDD3E\\uDD48-\\uDD4F\\uDD5A-\\uDD5F\\uDD66\\uDD69\\uDD8F\\uDD92\\uDD99-\\uDD9F\\uDDAA-\\uDEDF\\uDEF9-\\uDFFF]|\\uD808[\\uDF9A-\\uDFFF]|\\uD809[\\uDC6F\\uDC75-\\uDC7F\\uDD44-\\uDFFF]|[\\uD80A\\uD80B\\uD80E-\\uD810\\uD812-\\uD819\\uD823-\\uD82B\\uD82D\\uD82E\\uD830-\\uD833\\uD837\\uD839\\uD83F\\uD87B-\\uD87D\\uD87F-\\uDB3F\\uDB41-\\uDB7F][\\uDC00-\\uDFFF]|\\uD80D[\\uDC2F-\\uDFFF]|\\uD811[\\uDE47-\\uDFFF]|\\uD81A[\\uDE39-\\uDE3F\\uDE5F\\uDE6A-\\uDE6D\\uDE70-\\uDECF\\uDEEE\\uDEEF\\uDEF6-\\uDEFF\\uDF46-\\uDF4F\\uDF5A\\uDF62\\uDF78-\\uDF7C\\uDF90-\\uDFFF]|\\uD81B[\\uDC00-\\uDE3F\\uDE9B-\\uDEFF\\uDF45-\\uDF4F\\uDF7F-\\uDF8E\\uDFA0-\\uDFDF\\uDFE2-\\uDFFF]|\\uD821[\\uDFF2-\\uDFFF]|\\uD822[\\uDEF3-\\uDFFF]|\\uD82C[\\uDD1F-\\uDD6F\\uDEFC-\\uDFFF]|\\uD82F[\\uDC6B-\\uDC6F\\uDC7D-\\uDC7F\\uDC89-\\uDC8F\\uDC9A\\uDC9B\\uDCA4-\\uDFFF]|\\uD834[\\uDCF6-\\uDCFF\\uDD27\\uDD28\\uDDE9-\\uDDFF\\uDE46-\\uDEDF\\uDEF4-\\uDEFF\\uDF57-\\uDF5F\\uDF79-\\uDFFF]|\\uD835[\\uDC55\\uDC9D\\uDCA0\\uDCA1\\uDCA3\\uDCA4\\uDCA7\\uDCA8\\uDCAD\\uDCBA\\uDCBC\\uDCC4\\uDD06\\uDD0B\\uDD0C\\uDD15\\uDD1D\\uDD3A\\uDD3F\\uDD45\\uDD47-\\uDD49\\uDD51\\uDEA6\\uDEA7\\uDFCC\\uDFCD]|\\uD836[\\uDE8C-\\uDE9A\\uDEA0\\uDEB0-\\uDFFF]|\\uD838[\\uDC07\\uDC19\\uDC1A\\uDC22\\uDC25\\uDC2B-\\uDFFF]|\\uD83A[\\uDCC5\\uDCC6\\uDCD7-\\uDCFF\\uDD4B-\\uDD4F\\uDD5A-\\uDD5D\\uDD60-\\uDFFF]|\\uD83B[\\uDC00-\\uDC70\\uDCB5-\\uDDFF\\uDE04\\uDE20\\uDE23\\uDE25\\uDE26\\uDE28\\uDE33\\uDE38\\uDE3A\\uDE3C-\\uDE41\\uDE43-\\uDE46\\uDE48\\uDE4A\\uDE4C\\uDE50\\uDE53\\uDE55\\uDE56\\uDE58\\uDE5A\\uDE5C\\uDE5E\\uDE60\\uDE63\\uDE65\\uDE66\\uDE6B\\uDE73\\uDE78\\uDE7D\\uDE7F\\uDE8A\\uDE9C-\\uDEA0\\uDEA4\\uDEAA\\uDEBC-\\uDEEF\\uDEF2-\\uDFFF]|\\uD83C[\\uDC2C-\\uDC2F\\uDC94-\\uDC9F\\uDCAF\\uDCB0\\uDCC0\\uDCD0\\uDCF6-\\uDCFF\\uDD0D-\\uDD0F\\uDD6C-\\uDD6F\\uDDAD-\\uDDE5\\uDE03-\\uDE0F\\uDE3C-\\uDE3F\\uDE49-\\uDE4F\\uDE52-\\uDE5F\\uDE66-\\uDEFF]|\\uD83D[\\uDED5-\\uDEDF\\uDEED-\\uDEEF\\uDEFA-\\uDEFF\\uDF74-\\uDF7F\\uDFD9-\\uDFFF]|\\uD83E[\\uDC0C-\\uDC0F\\uDC48-\\uDC4F\\uDC5A-\\uDC5F\\uDC88-\\uDC8F\\uDCAE-\\uDCFF\\uDD0C-\\uDD0F\\uDD3F\\uDD71\\uDD72\\uDD77-\\uDD79\\uDD7B\\uDDA3-\\uDDAF\\uDDBA-\\uDDBF\\uDDC3-\\uDDCF\\uDE00-\\uDE5F\\uDE6E-\\uDFFF]|\\uD869[\\uDED7-\\uDEFF]|\\uD86D[\\uDF35-\\uDF3F]|\\uD86E[\\uDC1E\\uDC1F]|\\uD873[\\uDEA2-\\uDEAF]|\\uD87A[\\uDFE1-\\uDFFF]|\\uD87E[\\uDE1E-\\uDFFF]|\\uDB40[\\uDC00\\uDC02-\\uDC1F\\uDC80-\\uDCFF\\uDDF0-\\uDFFF]|[\\uDBBF\\uDBFF][\\uDFFE\\uDFFF]'\n    },\n    {\n        'name': 'Co',\n        'alias': 'Private_Use',\n        'bmp': '\\uE000-\\uF8FF',\n        'astral': '[\\uDB80-\\uDBBE\\uDBC0-\\uDBFE][\\uDC00-\\uDFFF]|[\\uDBBF\\uDBFF][\\uDC00-\\uDFFD]'\n    },\n    {\n        'name': 'Cs',\n        'alias': 'Surrogate',\n        'bmp': '\\uD800-\\uDFFF'\n    },\n    {\n        'name': 'L',\n        'alias': 'Letter',\n        'bmp': 'A-Za-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u0860-\\u086A\\u08A0-\\u08B4\\u08B6-\\u08BD\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C60\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16F1-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1878\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FEF\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7B9\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA8FE\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC',\n        'astral': '\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF2D-\\uDF40\\uDF42-\\uDF49\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF]|\\uD801[\\uDC00-\\uDC9D\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDD00-\\uDD23\\uDF00-\\uDF1C\\uDF27\\uDF30-\\uDF45]|\\uD804[\\uDC03-\\uDC37\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD44\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDF00-\\uDF1A]|\\uD806[\\uDC00-\\uDC2B\\uDCA0-\\uDCDF\\uDCFF\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE83\\uDE86-\\uDE89\\uDE9D\\uDEC0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD89\\uDD98\\uDEE0-\\uDEF2]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC80-\\uDD43]|[\\uD80C\\uD81C-\\uD820\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDE40-\\uDE7F\\uDF00-\\uDF44\\uDF50\\uDF93-\\uDF9F\\uDFE0\\uDFE1]|\\uD821[\\uDC00-\\uDFF1]|\\uD822[\\uDC00-\\uDEF2]|\\uD82C[\\uDC00-\\uDD1E\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD83A[\\uDC00-\\uDCC4\\uDD00-\\uDD43]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]'\n    },\n    {\n        'name': 'LC',\n        'alias': 'Cased_Letter',\n        'bmp': 'A-Za-z\\xB5\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u01BA\\u01BC-\\u01BF\\u01C4-\\u0293\\u0295-\\u02AF\\u0370-\\u0373\\u0376\\u0377\\u037B-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0560-\\u0588\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FD-\\u10FF\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1C80-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1D00-\\u1D2B\\u1D6B-\\u1D77\\u1D79-\\u1D9A\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2134\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2C7B\\u2C7E-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\uA640-\\uA66D\\uA680-\\uA69B\\uA722-\\uA76F\\uA771-\\uA787\\uA78B-\\uA78E\\uA790-\\uA7B9\\uA7FA\\uAB30-\\uAB5A\\uAB60-\\uAB65\\uAB70-\\uABBF\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFF21-\\uFF3A\\uFF41-\\uFF5A',\n        'astral': '\\uD801[\\uDC00-\\uDC4F\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB]|\\uD803[\\uDC80-\\uDCB2\\uDCC0-\\uDCF2]|\\uD806[\\uDCA0-\\uDCDF]|\\uD81B[\\uDE40-\\uDE7F]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD83A[\\uDD00-\\uDD43]'\n    },\n    {\n        'name': 'Ll',\n        'alias': 'Lowercase_Letter',\n        'bmp': 'a-z\\xB5\\xDF-\\xF6\\xF8-\\xFF\\u0101\\u0103\\u0105\\u0107\\u0109\\u010B\\u010D\\u010F\\u0111\\u0113\\u0115\\u0117\\u0119\\u011B\\u011D\\u011F\\u0121\\u0123\\u0125\\u0127\\u0129\\u012B\\u012D\\u012F\\u0131\\u0133\\u0135\\u0137\\u0138\\u013A\\u013C\\u013E\\u0140\\u0142\\u0144\\u0146\\u0148\\u0149\\u014B\\u014D\\u014F\\u0151\\u0153\\u0155\\u0157\\u0159\\u015B\\u015D\\u015F\\u0161\\u0163\\u0165\\u0167\\u0169\\u016B\\u016D\\u016F\\u0171\\u0173\\u0175\\u0177\\u017A\\u017C\\u017E-\\u0180\\u0183\\u0185\\u0188\\u018C\\u018D\\u0192\\u0195\\u0199-\\u019B\\u019E\\u01A1\\u01A3\\u01A5\\u01A8\\u01AA\\u01AB\\u01AD\\u01B0\\u01B4\\u01B6\\u01B9\\u01BA\\u01BD-\\u01BF\\u01C6\\u01C9\\u01CC\\u01CE\\u01D0\\u01D2\\u01D4\\u01D6\\u01D8\\u01DA\\u01DC\\u01DD\\u01DF\\u01E1\\u01E3\\u01E5\\u01E7\\u01E9\\u01EB\\u01ED\\u01EF\\u01F0\\u01F3\\u01F5\\u01F9\\u01FB\\u01FD\\u01FF\\u0201\\u0203\\u0205\\u0207\\u0209\\u020B\\u020D\\u020F\\u0211\\u0213\\u0215\\u0217\\u0219\\u021B\\u021D\\u021F\\u0221\\u0223\\u0225\\u0227\\u0229\\u022B\\u022D\\u022F\\u0231\\u0233-\\u0239\\u023C\\u023F\\u0240\\u0242\\u0247\\u0249\\u024B\\u024D\\u024F-\\u0293\\u0295-\\u02AF\\u0371\\u0373\\u0377\\u037B-\\u037D\\u0390\\u03AC-\\u03CE\\u03D0\\u03D1\\u03D5-\\u03D7\\u03D9\\u03DB\\u03DD\\u03DF\\u03E1\\u03E3\\u03E5\\u03E7\\u03E9\\u03EB\\u03ED\\u03EF-\\u03F3\\u03F5\\u03F8\\u03FB\\u03FC\\u0430-\\u045F\\u0461\\u0463\\u0465\\u0467\\u0469\\u046B\\u046D\\u046F\\u0471\\u0473\\u0475\\u0477\\u0479\\u047B\\u047D\\u047F\\u0481\\u048B\\u048D\\u048F\\u0491\\u0493\\u0495\\u0497\\u0499\\u049B\\u049D\\u049F\\u04A1\\u04A3\\u04A5\\u04A7\\u04A9\\u04AB\\u04AD\\u04AF\\u04B1\\u04B3\\u04B5\\u04B7\\u04B9\\u04BB\\u04BD\\u04BF\\u04C2\\u04C4\\u04C6\\u04C8\\u04CA\\u04CC\\u04CE\\u04CF\\u04D1\\u04D3\\u04D5\\u04D7\\u04D9\\u04DB\\u04DD\\u04DF\\u04E1\\u04E3\\u04E5\\u04E7\\u04E9\\u04EB\\u04ED\\u04EF\\u04F1\\u04F3\\u04F5\\u04F7\\u04F9\\u04FB\\u04FD\\u04FF\\u0501\\u0503\\u0505\\u0507\\u0509\\u050B\\u050D\\u050F\\u0511\\u0513\\u0515\\u0517\\u0519\\u051B\\u051D\\u051F\\u0521\\u0523\\u0525\\u0527\\u0529\\u052B\\u052D\\u052F\\u0560-\\u0588\\u10D0-\\u10FA\\u10FD-\\u10FF\\u13F8-\\u13FD\\u1C80-\\u1C88\\u1D00-\\u1D2B\\u1D6B-\\u1D77\\u1D79-\\u1D9A\\u1E01\\u1E03\\u1E05\\u1E07\\u1E09\\u1E0B\\u1E0D\\u1E0F\\u1E11\\u1E13\\u1E15\\u1E17\\u1E19\\u1E1B\\u1E1D\\u1E1F\\u1E21\\u1E23\\u1E25\\u1E27\\u1E29\\u1E2B\\u1E2D\\u1E2F\\u1E31\\u1E33\\u1E35\\u1E37\\u1E39\\u1E3B\\u1E3D\\u1E3F\\u1E41\\u1E43\\u1E45\\u1E47\\u1E49\\u1E4B\\u1E4D\\u1E4F\\u1E51\\u1E53\\u1E55\\u1E57\\u1E59\\u1E5B\\u1E5D\\u1E5F\\u1E61\\u1E63\\u1E65\\u1E67\\u1E69\\u1E6B\\u1E6D\\u1E6F\\u1E71\\u1E73\\u1E75\\u1E77\\u1E79\\u1E7B\\u1E7D\\u1E7F\\u1E81\\u1E83\\u1E85\\u1E87\\u1E89\\u1E8B\\u1E8D\\u1E8F\\u1E91\\u1E93\\u1E95-\\u1E9D\\u1E9F\\u1EA1\\u1EA3\\u1EA5\\u1EA7\\u1EA9\\u1EAB\\u1EAD\\u1EAF\\u1EB1\\u1EB3\\u1EB5\\u1EB7\\u1EB9\\u1EBB\\u1EBD\\u1EBF\\u1EC1\\u1EC3\\u1EC5\\u1EC7\\u1EC9\\u1ECB\\u1ECD\\u1ECF\\u1ED1\\u1ED3\\u1ED5\\u1ED7\\u1ED9\\u1EDB\\u1EDD\\u1EDF\\u1EE1\\u1EE3\\u1EE5\\u1EE7\\u1EE9\\u1EEB\\u1EED\\u1EEF\\u1EF1\\u1EF3\\u1EF5\\u1EF7\\u1EF9\\u1EFB\\u1EFD\\u1EFF-\\u1F07\\u1F10-\\u1F15\\u1F20-\\u1F27\\u1F30-\\u1F37\\u1F40-\\u1F45\\u1F50-\\u1F57\\u1F60-\\u1F67\\u1F70-\\u1F7D\\u1F80-\\u1F87\\u1F90-\\u1F97\\u1FA0-\\u1FA7\\u1FB0-\\u1FB4\\u1FB6\\u1FB7\\u1FBE\\u1FC2-\\u1FC4\\u1FC6\\u1FC7\\u1FD0-\\u1FD3\\u1FD6\\u1FD7\\u1FE0-\\u1FE7\\u1FF2-\\u1FF4\\u1FF6\\u1FF7\\u210A\\u210E\\u210F\\u2113\\u212F\\u2134\\u2139\\u213C\\u213D\\u2146-\\u2149\\u214E\\u2184\\u2C30-\\u2C5E\\u2C61\\u2C65\\u2C66\\u2C68\\u2C6A\\u2C6C\\u2C71\\u2C73\\u2C74\\u2C76-\\u2C7B\\u2C81\\u2C83\\u2C85\\u2C87\\u2C89\\u2C8B\\u2C8D\\u2C8F\\u2C91\\u2C93\\u2C95\\u2C97\\u2C99\\u2C9B\\u2C9D\\u2C9F\\u2CA1\\u2CA3\\u2CA5\\u2CA7\\u2CA9\\u2CAB\\u2CAD\\u2CAF\\u2CB1\\u2CB3\\u2CB5\\u2CB7\\u2CB9\\u2CBB\\u2CBD\\u2CBF\\u2CC1\\u2CC3\\u2CC5\\u2CC7\\u2CC9\\u2CCB\\u2CCD\\u2CCF\\u2CD1\\u2CD3\\u2CD5\\u2CD7\\u2CD9\\u2CDB\\u2CDD\\u2CDF\\u2CE1\\u2CE3\\u2CE4\\u2CEC\\u2CEE\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\uA641\\uA643\\uA645\\uA647\\uA649\\uA64B\\uA64D\\uA64F\\uA651\\uA653\\uA655\\uA657\\uA659\\uA65B\\uA65D\\uA65F\\uA661\\uA663\\uA665\\uA667\\uA669\\uA66B\\uA66D\\uA681\\uA683\\uA685\\uA687\\uA689\\uA68B\\uA68D\\uA68F\\uA691\\uA693\\uA695\\uA697\\uA699\\uA69B\\uA723\\uA725\\uA727\\uA729\\uA72B\\uA72D\\uA72F-\\uA731\\uA733\\uA735\\uA737\\uA739\\uA73B\\uA73D\\uA73F\\uA741\\uA743\\uA745\\uA747\\uA749\\uA74B\\uA74D\\uA74F\\uA751\\uA753\\uA755\\uA757\\uA759\\uA75B\\uA75D\\uA75F\\uA761\\uA763\\uA765\\uA767\\uA769\\uA76B\\uA76D\\uA76F\\uA771-\\uA778\\uA77A\\uA77C\\uA77F\\uA781\\uA783\\uA785\\uA787\\uA78C\\uA78E\\uA791\\uA793-\\uA795\\uA797\\uA799\\uA79B\\uA79D\\uA79F\\uA7A1\\uA7A3\\uA7A5\\uA7A7\\uA7A9\\uA7AF\\uA7B5\\uA7B7\\uA7B9\\uA7FA\\uAB30-\\uAB5A\\uAB60-\\uAB65\\uAB70-\\uABBF\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFF41-\\uFF5A',\n        'astral': '\\uD801[\\uDC28-\\uDC4F\\uDCD8-\\uDCFB]|\\uD803[\\uDCC0-\\uDCF2]|\\uD806[\\uDCC0-\\uDCDF]|\\uD81B[\\uDE60-\\uDE7F]|\\uD835[\\uDC1A-\\uDC33\\uDC4E-\\uDC54\\uDC56-\\uDC67\\uDC82-\\uDC9B\\uDCB6-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDCCF\\uDCEA-\\uDD03\\uDD1E-\\uDD37\\uDD52-\\uDD6B\\uDD86-\\uDD9F\\uDDBA-\\uDDD3\\uDDEE-\\uDE07\\uDE22-\\uDE3B\\uDE56-\\uDE6F\\uDE8A-\\uDEA5\\uDEC2-\\uDEDA\\uDEDC-\\uDEE1\\uDEFC-\\uDF14\\uDF16-\\uDF1B\\uDF36-\\uDF4E\\uDF50-\\uDF55\\uDF70-\\uDF88\\uDF8A-\\uDF8F\\uDFAA-\\uDFC2\\uDFC4-\\uDFC9\\uDFCB]|\\uD83A[\\uDD22-\\uDD43]'\n    },\n    {\n        'name': 'Lm',\n        'alias': 'Modifier_Letter',\n        'bmp': '\\u02B0-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0374\\u037A\\u0559\\u0640\\u06E5\\u06E6\\u07F4\\u07F5\\u07FA\\u081A\\u0824\\u0828\\u0971\\u0E46\\u0EC6\\u10FC\\u17D7\\u1843\\u1AA7\\u1C78-\\u1C7D\\u1D2C-\\u1D6A\\u1D78\\u1D9B-\\u1DBF\\u2071\\u207F\\u2090-\\u209C\\u2C7C\\u2C7D\\u2D6F\\u2E2F\\u3005\\u3031-\\u3035\\u303B\\u309D\\u309E\\u30FC-\\u30FE\\uA015\\uA4F8-\\uA4FD\\uA60C\\uA67F\\uA69C\\uA69D\\uA717-\\uA71F\\uA770\\uA788\\uA7F8\\uA7F9\\uA9CF\\uA9E6\\uAA70\\uAADD\\uAAF3\\uAAF4\\uAB5C-\\uAB5F\\uFF70\\uFF9E\\uFF9F',\n        'astral': '\\uD81A[\\uDF40-\\uDF43]|\\uD81B[\\uDF93-\\uDF9F\\uDFE0\\uDFE1]'\n    },\n    {\n        'name': 'Lo',\n        'alias': 'Other_Letter',\n        'bmp': '\\xAA\\xBA\\u01BB\\u01C0-\\u01C3\\u0294\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0620-\\u063F\\u0641-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u0800-\\u0815\\u0840-\\u0858\\u0860-\\u086A\\u08A0-\\u08B4\\u08B6-\\u08BD\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0972-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u09FC\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C60\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E45\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u1100-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16F1-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17DC\\u1820-\\u1842\\u1844-\\u1878\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C77\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u2135-\\u2138\\u2D30-\\u2D67\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u3006\\u303C\\u3041-\\u3096\\u309F\\u30A1-\\u30FA\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FEF\\uA000-\\uA014\\uA016-\\uA48C\\uA4D0-\\uA4F7\\uA500-\\uA60B\\uA610-\\uA61F\\uA62A\\uA62B\\uA66E\\uA6A0-\\uA6E5\\uA78F\\uA7F7\\uA7FB-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA8FE\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9E0-\\uA9E4\\uA9E7-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA6F\\uAA71-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB\\uAADC\\uAAE0-\\uAAEA\\uAAF2\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uABC0-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF66-\\uFF6F\\uFF71-\\uFF9D\\uFFA0-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC',\n        'astral': '\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF2D-\\uDF40\\uDF42-\\uDF49\\uDF50-\\uDF75\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF]|\\uD801[\\uDC50-\\uDC9D\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00\\uDE10-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDD00-\\uDD23\\uDF00-\\uDF1C\\uDF27\\uDF30-\\uDF45]|\\uD804[\\uDC03-\\uDC37\\uDC83-\\uDCAF\\uDCD0-\\uDCE8\\uDD03-\\uDD26\\uDD44\\uDD50-\\uDD72\\uDD76\\uDD83-\\uDDB2\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE2B\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEDE\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D\\uDF50\\uDF5D-\\uDF61]|\\uD805[\\uDC00-\\uDC34\\uDC47-\\uDC4A\\uDC80-\\uDCAF\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDAE\\uDDD8-\\uDDDB\\uDE00-\\uDE2F\\uDE44\\uDE80-\\uDEAA\\uDF00-\\uDF1A]|\\uD806[\\uDC00-\\uDC2B\\uDCFF\\uDE00\\uDE0B-\\uDE32\\uDE3A\\uDE50\\uDE5C-\\uDE83\\uDE86-\\uDE89\\uDE9D\\uDEC0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC2E\\uDC40\\uDC72-\\uDC8F\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD30\\uDD46\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD89\\uDD98\\uDEE0-\\uDEF2]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC80-\\uDD43]|[\\uD80C\\uD81C-\\uD820\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDED0-\\uDEED\\uDF00-\\uDF2F\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDF00-\\uDF44\\uDF50]|\\uD821[\\uDC00-\\uDFF1]|\\uD822[\\uDC00-\\uDEF2]|\\uD82C[\\uDC00-\\uDD1E\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99]|\\uD83A[\\uDC00-\\uDCC4]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]'\n    },\n    {\n        'name': 'Lt',\n        'alias': 'Titlecase_Letter',\n        'bmp': '\\u01C5\\u01C8\\u01CB\\u01F2\\u1F88-\\u1F8F\\u1F98-\\u1F9F\\u1FA8-\\u1FAF\\u1FBC\\u1FCC\\u1FFC'\n    },\n    {\n        'name': 'Lu',\n        'alias': 'Uppercase_Letter',\n        'bmp': 'A-Z\\xC0-\\xD6\\xD8-\\xDE\\u0100\\u0102\\u0104\\u0106\\u0108\\u010A\\u010C\\u010E\\u0110\\u0112\\u0114\\u0116\\u0118\\u011A\\u011C\\u011E\\u0120\\u0122\\u0124\\u0126\\u0128\\u012A\\u012C\\u012E\\u0130\\u0132\\u0134\\u0136\\u0139\\u013B\\u013D\\u013F\\u0141\\u0143\\u0145\\u0147\\u014A\\u014C\\u014E\\u0150\\u0152\\u0154\\u0156\\u0158\\u015A\\u015C\\u015E\\u0160\\u0162\\u0164\\u0166\\u0168\\u016A\\u016C\\u016E\\u0170\\u0172\\u0174\\u0176\\u0178\\u0179\\u017B\\u017D\\u0181\\u0182\\u0184\\u0186\\u0187\\u0189-\\u018B\\u018E-\\u0191\\u0193\\u0194\\u0196-\\u0198\\u019C\\u019D\\u019F\\u01A0\\u01A2\\u01A4\\u01A6\\u01A7\\u01A9\\u01AC\\u01AE\\u01AF\\u01B1-\\u01B3\\u01B5\\u01B7\\u01B8\\u01BC\\u01C4\\u01C7\\u01CA\\u01CD\\u01CF\\u01D1\\u01D3\\u01D5\\u01D7\\u01D9\\u01DB\\u01DE\\u01E0\\u01E2\\u01E4\\u01E6\\u01E8\\u01EA\\u01EC\\u01EE\\u01F1\\u01F4\\u01F6-\\u01F8\\u01FA\\u01FC\\u01FE\\u0200\\u0202\\u0204\\u0206\\u0208\\u020A\\u020C\\u020E\\u0210\\u0212\\u0214\\u0216\\u0218\\u021A\\u021C\\u021E\\u0220\\u0222\\u0224\\u0226\\u0228\\u022A\\u022C\\u022E\\u0230\\u0232\\u023A\\u023B\\u023D\\u023E\\u0241\\u0243-\\u0246\\u0248\\u024A\\u024C\\u024E\\u0370\\u0372\\u0376\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E\\u038F\\u0391-\\u03A1\\u03A3-\\u03AB\\u03CF\\u03D2-\\u03D4\\u03D8\\u03DA\\u03DC\\u03DE\\u03E0\\u03E2\\u03E4\\u03E6\\u03E8\\u03EA\\u03EC\\u03EE\\u03F4\\u03F7\\u03F9\\u03FA\\u03FD-\\u042F\\u0460\\u0462\\u0464\\u0466\\u0468\\u046A\\u046C\\u046E\\u0470\\u0472\\u0474\\u0476\\u0478\\u047A\\u047C\\u047E\\u0480\\u048A\\u048C\\u048E\\u0490\\u0492\\u0494\\u0496\\u0498\\u049A\\u049C\\u049E\\u04A0\\u04A2\\u04A4\\u04A6\\u04A8\\u04AA\\u04AC\\u04AE\\u04B0\\u04B2\\u04B4\\u04B6\\u04B8\\u04BA\\u04BC\\u04BE\\u04C0\\u04C1\\u04C3\\u04C5\\u04C7\\u04C9\\u04CB\\u04CD\\u04D0\\u04D2\\u04D4\\u04D6\\u04D8\\u04DA\\u04DC\\u04DE\\u04E0\\u04E2\\u04E4\\u04E6\\u04E8\\u04EA\\u04EC\\u04EE\\u04F0\\u04F2\\u04F4\\u04F6\\u04F8\\u04FA\\u04FC\\u04FE\\u0500\\u0502\\u0504\\u0506\\u0508\\u050A\\u050C\\u050E\\u0510\\u0512\\u0514\\u0516\\u0518\\u051A\\u051C\\u051E\\u0520\\u0522\\u0524\\u0526\\u0528\\u052A\\u052C\\u052E\\u0531-\\u0556\\u10A0-\\u10C5\\u10C7\\u10CD\\u13A0-\\u13F5\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1E00\\u1E02\\u1E04\\u1E06\\u1E08\\u1E0A\\u1E0C\\u1E0E\\u1E10\\u1E12\\u1E14\\u1E16\\u1E18\\u1E1A\\u1E1C\\u1E1E\\u1E20\\u1E22\\u1E24\\u1E26\\u1E28\\u1E2A\\u1E2C\\u1E2E\\u1E30\\u1E32\\u1E34\\u1E36\\u1E38\\u1E3A\\u1E3C\\u1E3E\\u1E40\\u1E42\\u1E44\\u1E46\\u1E48\\u1E4A\\u1E4C\\u1E4E\\u1E50\\u1E52\\u1E54\\u1E56\\u1E58\\u1E5A\\u1E5C\\u1E5E\\u1E60\\u1E62\\u1E64\\u1E66\\u1E68\\u1E6A\\u1E6C\\u1E6E\\u1E70\\u1E72\\u1E74\\u1E76\\u1E78\\u1E7A\\u1E7C\\u1E7E\\u1E80\\u1E82\\u1E84\\u1E86\\u1E88\\u1E8A\\u1E8C\\u1E8E\\u1E90\\u1E92\\u1E94\\u1E9E\\u1EA0\\u1EA2\\u1EA4\\u1EA6\\u1EA8\\u1EAA\\u1EAC\\u1EAE\\u1EB0\\u1EB2\\u1EB4\\u1EB6\\u1EB8\\u1EBA\\u1EBC\\u1EBE\\u1EC0\\u1EC2\\u1EC4\\u1EC6\\u1EC8\\u1ECA\\u1ECC\\u1ECE\\u1ED0\\u1ED2\\u1ED4\\u1ED6\\u1ED8\\u1EDA\\u1EDC\\u1EDE\\u1EE0\\u1EE2\\u1EE4\\u1EE6\\u1EE8\\u1EEA\\u1EEC\\u1EEE\\u1EF0\\u1EF2\\u1EF4\\u1EF6\\u1EF8\\u1EFA\\u1EFC\\u1EFE\\u1F08-\\u1F0F\\u1F18-\\u1F1D\\u1F28-\\u1F2F\\u1F38-\\u1F3F\\u1F48-\\u1F4D\\u1F59\\u1F5B\\u1F5D\\u1F5F\\u1F68-\\u1F6F\\u1FB8-\\u1FBB\\u1FC8-\\u1FCB\\u1FD8-\\u1FDB\\u1FE8-\\u1FEC\\u1FF8-\\u1FFB\\u2102\\u2107\\u210B-\\u210D\\u2110-\\u2112\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u2130-\\u2133\\u213E\\u213F\\u2145\\u2183\\u2C00-\\u2C2E\\u2C60\\u2C62-\\u2C64\\u2C67\\u2C69\\u2C6B\\u2C6D-\\u2C70\\u2C72\\u2C75\\u2C7E-\\u2C80\\u2C82\\u2C84\\u2C86\\u2C88\\u2C8A\\u2C8C\\u2C8E\\u2C90\\u2C92\\u2C94\\u2C96\\u2C98\\u2C9A\\u2C9C\\u2C9E\\u2CA0\\u2CA2\\u2CA4\\u2CA6\\u2CA8\\u2CAA\\u2CAC\\u2CAE\\u2CB0\\u2CB2\\u2CB4\\u2CB6\\u2CB8\\u2CBA\\u2CBC\\u2CBE\\u2CC0\\u2CC2\\u2CC4\\u2CC6\\u2CC8\\u2CCA\\u2CCC\\u2CCE\\u2CD0\\u2CD2\\u2CD4\\u2CD6\\u2CD8\\u2CDA\\u2CDC\\u2CDE\\u2CE0\\u2CE2\\u2CEB\\u2CED\\u2CF2\\uA640\\uA642\\uA644\\uA646\\uA648\\uA64A\\uA64C\\uA64E\\uA650\\uA652\\uA654\\uA656\\uA658\\uA65A\\uA65C\\uA65E\\uA660\\uA662\\uA664\\uA666\\uA668\\uA66A\\uA66C\\uA680\\uA682\\uA684\\uA686\\uA688\\uA68A\\uA68C\\uA68E\\uA690\\uA692\\uA694\\uA696\\uA698\\uA69A\\uA722\\uA724\\uA726\\uA728\\uA72A\\uA72C\\uA72E\\uA732\\uA734\\uA736\\uA738\\uA73A\\uA73C\\uA73E\\uA740\\uA742\\uA744\\uA746\\uA748\\uA74A\\uA74C\\uA74E\\uA750\\uA752\\uA754\\uA756\\uA758\\uA75A\\uA75C\\uA75E\\uA760\\uA762\\uA764\\uA766\\uA768\\uA76A\\uA76C\\uA76E\\uA779\\uA77B\\uA77D\\uA77E\\uA780\\uA782\\uA784\\uA786\\uA78B\\uA78D\\uA790\\uA792\\uA796\\uA798\\uA79A\\uA79C\\uA79E\\uA7A0\\uA7A2\\uA7A4\\uA7A6\\uA7A8\\uA7AA-\\uA7AE\\uA7B0-\\uA7B4\\uA7B6\\uA7B8\\uFF21-\\uFF3A',\n        'astral': '\\uD801[\\uDC00-\\uDC27\\uDCB0-\\uDCD3]|\\uD803[\\uDC80-\\uDCB2]|\\uD806[\\uDCA0-\\uDCBF]|\\uD81B[\\uDE40-\\uDE5F]|\\uD835[\\uDC00-\\uDC19\\uDC34-\\uDC4D\\uDC68-\\uDC81\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB5\\uDCD0-\\uDCE9\\uDD04\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD38\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD6C-\\uDD85\\uDDA0-\\uDDB9\\uDDD4-\\uDDED\\uDE08-\\uDE21\\uDE3C-\\uDE55\\uDE70-\\uDE89\\uDEA8-\\uDEC0\\uDEE2-\\uDEFA\\uDF1C-\\uDF34\\uDF56-\\uDF6E\\uDF90-\\uDFA8\\uDFCA]|\\uD83A[\\uDD00-\\uDD21]'\n    },\n    {\n        'name': 'M',\n        'alias': 'Mark',\n        'bmp': '\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u07FD\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08D3-\\u08E1\\u08E3-\\u0903\\u093A-\\u093C\\u093E-\\u094F\\u0951-\\u0957\\u0962\\u0963\\u0981-\\u0983\\u09BC\\u09BE-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CD\\u09D7\\u09E2\\u09E3\\u09FE\\u0A01-\\u0A03\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81-\\u0A83\\u0ABC\\u0ABE-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AE2\\u0AE3\\u0AFA-\\u0AFF\\u0B01-\\u0B03\\u0B3C\\u0B3E-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B62\\u0B63\\u0B82\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD7\\u0C00-\\u0C04\\u0C3E-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81-\\u0C83\\u0CBC\\u0CBE-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CE2\\u0CE3\\u0D00-\\u0D03\\u0D3B\\u0D3C\\u0D3E-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4D\\u0D57\\u0D62\\u0D63\\u0D82\\u0D83\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F3E\\u0F3F\\u0F71-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102B-\\u103E\\u1056-\\u1059\\u105E-\\u1060\\u1062-\\u1064\\u1067-\\u106D\\u1071-\\u1074\\u1082-\\u108D\\u108F\\u109A-\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4-\\u17D3\\u17DD\\u180B-\\u180D\\u1885\\u1886\\u18A9\\u1920-\\u192B\\u1930-\\u193B\\u1A17-\\u1A1B\\u1A55-\\u1A5E\\u1A60-\\u1A7C\\u1A7F\\u1AB0-\\u1ABE\\u1B00-\\u1B04\\u1B34-\\u1B44\\u1B6B-\\u1B73\\u1B80-\\u1B82\\u1BA1-\\u1BAD\\u1BE6-\\u1BF3\\u1C24-\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE8\\u1CED\\u1CF2-\\u1CF4\\u1CF7-\\u1CF9\\u1DC0-\\u1DF9\\u1DFB-\\u1DFF\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69E\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA823-\\uA827\\uA880\\uA881\\uA8B4-\\uA8C5\\uA8E0-\\uA8F1\\uA8FF\\uA926-\\uA92D\\uA947-\\uA953\\uA980-\\uA983\\uA9B3-\\uA9C0\\uA9E5\\uAA29-\\uAA36\\uAA43\\uAA4C\\uAA4D\\uAA7B-\\uAA7D\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEB-\\uAAEF\\uAAF5\\uAAF6\\uABE3-\\uABEA\\uABEC\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2F',\n        'astral': '\\uD800[\\uDDFD\\uDEE0\\uDF76-\\uDF7A]|\\uD802[\\uDE01-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE0F\\uDE38-\\uDE3A\\uDE3F\\uDEE5\\uDEE6]|\\uD803[\\uDD24-\\uDD27\\uDF46-\\uDF50]|\\uD804[\\uDC00-\\uDC02\\uDC38-\\uDC46\\uDC7F-\\uDC82\\uDCB0-\\uDCBA\\uDD00-\\uDD02\\uDD27-\\uDD34\\uDD45\\uDD46\\uDD73\\uDD80-\\uDD82\\uDDB3-\\uDDC0\\uDDC9-\\uDDCC\\uDE2C-\\uDE37\\uDE3E\\uDEDF-\\uDEEA\\uDF00-\\uDF03\\uDF3B\\uDF3C\\uDF3E-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF57\\uDF62\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC35-\\uDC46\\uDC5E\\uDCB0-\\uDCC3\\uDDAF-\\uDDB5\\uDDB8-\\uDDC0\\uDDDC\\uDDDD\\uDE30-\\uDE40\\uDEAB-\\uDEB7\\uDF1D-\\uDF2B]|\\uD806[\\uDC2C-\\uDC3A\\uDE01-\\uDE0A\\uDE33-\\uDE39\\uDE3B-\\uDE3E\\uDE47\\uDE51-\\uDE5B\\uDE8A-\\uDE99]|\\uD807[\\uDC2F-\\uDC36\\uDC38-\\uDC3F\\uDC92-\\uDCA7\\uDCA9-\\uDCB6\\uDD31-\\uDD36\\uDD3A\\uDD3C\\uDD3D\\uDD3F-\\uDD45\\uDD47\\uDD8A-\\uDD8E\\uDD90\\uDD91\\uDD93-\\uDD97\\uDEF3-\\uDEF6]|\\uD81A[\\uDEF0-\\uDEF4\\uDF30-\\uDF36]|\\uD81B[\\uDF51-\\uDF7E\\uDF8F-\\uDF92]|\\uD82F[\\uDC9D\\uDC9E]|\\uD834[\\uDD65-\\uDD69\\uDD6D-\\uDD72\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD836[\\uDE00-\\uDE36\\uDE3B-\\uDE6C\\uDE75\\uDE84\\uDE9B-\\uDE9F\\uDEA1-\\uDEAF]|\\uD838[\\uDC00-\\uDC06\\uDC08-\\uDC18\\uDC1B-\\uDC21\\uDC23\\uDC24\\uDC26-\\uDC2A]|\\uD83A[\\uDCD0-\\uDCD6\\uDD44-\\uDD4A]|\\uDB40[\\uDD00-\\uDDEF]'\n    },\n    {\n        'name': 'Mc',\n        'alias': 'Spacing_Mark',\n        'bmp': '\\u0903\\u093B\\u093E-\\u0940\\u0949-\\u094C\\u094E\\u094F\\u0982\\u0983\\u09BE-\\u09C0\\u09C7\\u09C8\\u09CB\\u09CC\\u09D7\\u0A03\\u0A3E-\\u0A40\\u0A83\\u0ABE-\\u0AC0\\u0AC9\\u0ACB\\u0ACC\\u0B02\\u0B03\\u0B3E\\u0B40\\u0B47\\u0B48\\u0B4B\\u0B4C\\u0B57\\u0BBE\\u0BBF\\u0BC1\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCC\\u0BD7\\u0C01-\\u0C03\\u0C41-\\u0C44\\u0C82\\u0C83\\u0CBE\\u0CC0-\\u0CC4\\u0CC7\\u0CC8\\u0CCA\\u0CCB\\u0CD5\\u0CD6\\u0D02\\u0D03\\u0D3E-\\u0D40\\u0D46-\\u0D48\\u0D4A-\\u0D4C\\u0D57\\u0D82\\u0D83\\u0DCF-\\u0DD1\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0F3E\\u0F3F\\u0F7F\\u102B\\u102C\\u1031\\u1038\\u103B\\u103C\\u1056\\u1057\\u1062-\\u1064\\u1067-\\u106D\\u1083\\u1084\\u1087-\\u108C\\u108F\\u109A-\\u109C\\u17B6\\u17BE-\\u17C5\\u17C7\\u17C8\\u1923-\\u1926\\u1929-\\u192B\\u1930\\u1931\\u1933-\\u1938\\u1A19\\u1A1A\\u1A55\\u1A57\\u1A61\\u1A63\\u1A64\\u1A6D-\\u1A72\\u1B04\\u1B35\\u1B3B\\u1B3D-\\u1B41\\u1B43\\u1B44\\u1B82\\u1BA1\\u1BA6\\u1BA7\\u1BAA\\u1BE7\\u1BEA-\\u1BEC\\u1BEE\\u1BF2\\u1BF3\\u1C24-\\u1C2B\\u1C34\\u1C35\\u1CE1\\u1CF2\\u1CF3\\u1CF7\\u302E\\u302F\\uA823\\uA824\\uA827\\uA880\\uA881\\uA8B4-\\uA8C3\\uA952\\uA953\\uA983\\uA9B4\\uA9B5\\uA9BA\\uA9BB\\uA9BD-\\uA9C0\\uAA2F\\uAA30\\uAA33\\uAA34\\uAA4D\\uAA7B\\uAA7D\\uAAEB\\uAAEE\\uAAEF\\uAAF5\\uABE3\\uABE4\\uABE6\\uABE7\\uABE9\\uABEA\\uABEC',\n        'astral': '\\uD804[\\uDC00\\uDC02\\uDC82\\uDCB0-\\uDCB2\\uDCB7\\uDCB8\\uDD2C\\uDD45\\uDD46\\uDD82\\uDDB3-\\uDDB5\\uDDBF\\uDDC0\\uDE2C-\\uDE2E\\uDE32\\uDE33\\uDE35\\uDEE0-\\uDEE2\\uDF02\\uDF03\\uDF3E\\uDF3F\\uDF41-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF57\\uDF62\\uDF63]|\\uD805[\\uDC35-\\uDC37\\uDC40\\uDC41\\uDC45\\uDCB0-\\uDCB2\\uDCB9\\uDCBB-\\uDCBE\\uDCC1\\uDDAF-\\uDDB1\\uDDB8-\\uDDBB\\uDDBE\\uDE30-\\uDE32\\uDE3B\\uDE3C\\uDE3E\\uDEAC\\uDEAE\\uDEAF\\uDEB6\\uDF20\\uDF21\\uDF26]|\\uD806[\\uDC2C-\\uDC2E\\uDC38\\uDE39\\uDE57\\uDE58\\uDE97]|\\uD807[\\uDC2F\\uDC3E\\uDCA9\\uDCB1\\uDCB4\\uDD8A-\\uDD8E\\uDD93\\uDD94\\uDD96\\uDEF5\\uDEF6]|\\uD81B[\\uDF51-\\uDF7E]|\\uD834[\\uDD65\\uDD66\\uDD6D-\\uDD72]'\n    },\n    {\n        'name': 'Me',\n        'alias': 'Enclosing_Mark',\n        'bmp': '\\u0488\\u0489\\u1ABE\\u20DD-\\u20E0\\u20E2-\\u20E4\\uA670-\\uA672'\n    },\n    {\n        'name': 'Mn',\n        'alias': 'Nonspacing_Mark',\n        'bmp': '\\u0300-\\u036F\\u0483-\\u0487\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u07FD\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08D3-\\u08E1\\u08E3-\\u0902\\u093A\\u093C\\u0941-\\u0948\\u094D\\u0951-\\u0957\\u0962\\u0963\\u0981\\u09BC\\u09C1-\\u09C4\\u09CD\\u09E2\\u09E3\\u09FE\\u0A01\\u0A02\\u0A3C\\u0A41\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81\\u0A82\\u0ABC\\u0AC1-\\u0AC5\\u0AC7\\u0AC8\\u0ACD\\u0AE2\\u0AE3\\u0AFA-\\u0AFF\\u0B01\\u0B3C\\u0B3F\\u0B41-\\u0B44\\u0B4D\\u0B56\\u0B62\\u0B63\\u0B82\\u0BC0\\u0BCD\\u0C00\\u0C04\\u0C3E-\\u0C40\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81\\u0CBC\\u0CBF\\u0CC6\\u0CCC\\u0CCD\\u0CE2\\u0CE3\\u0D00\\u0D01\\u0D3B\\u0D3C\\u0D41-\\u0D44\\u0D4D\\u0D62\\u0D63\\u0DCA\\u0DD2-\\u0DD4\\u0DD6\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F71-\\u0F7E\\u0F80-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102D-\\u1030\\u1032-\\u1037\\u1039\\u103A\\u103D\\u103E\\u1058\\u1059\\u105E-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108D\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4\\u17B5\\u17B7-\\u17BD\\u17C6\\u17C9-\\u17D3\\u17DD\\u180B-\\u180D\\u1885\\u1886\\u18A9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193B\\u1A17\\u1A18\\u1A1B\\u1A56\\u1A58-\\u1A5E\\u1A60\\u1A62\\u1A65-\\u1A6C\\u1A73-\\u1A7C\\u1A7F\\u1AB0-\\u1ABD\\u1B00-\\u1B03\\u1B34\\u1B36-\\u1B3A\\u1B3C\\u1B42\\u1B6B-\\u1B73\\u1B80\\u1B81\\u1BA2-\\u1BA5\\u1BA8\\u1BA9\\u1BAB-\\u1BAD\\u1BE6\\u1BE8\\u1BE9\\u1BED\\u1BEF-\\u1BF1\\u1C2C-\\u1C33\\u1C36\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DF9\\u1DFB-\\u1DFF\\u20D0-\\u20DC\\u20E1\\u20E5-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302D\\u3099\\u309A\\uA66F\\uA674-\\uA67D\\uA69E\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA825\\uA826\\uA8C4\\uA8C5\\uA8E0-\\uA8F1\\uA8FF\\uA926-\\uA92D\\uA947-\\uA951\\uA980-\\uA982\\uA9B3\\uA9B6-\\uA9B9\\uA9BC\\uA9E5\\uAA29-\\uAA2E\\uAA31\\uAA32\\uAA35\\uAA36\\uAA43\\uAA4C\\uAA7C\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEC\\uAAED\\uAAF6\\uABE5\\uABE8\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2F',\n        'astral': '\\uD800[\\uDDFD\\uDEE0\\uDF76-\\uDF7A]|\\uD802[\\uDE01-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE0F\\uDE38-\\uDE3A\\uDE3F\\uDEE5\\uDEE6]|\\uD803[\\uDD24-\\uDD27\\uDF46-\\uDF50]|\\uD804[\\uDC01\\uDC38-\\uDC46\\uDC7F-\\uDC81\\uDCB3-\\uDCB6\\uDCB9\\uDCBA\\uDD00-\\uDD02\\uDD27-\\uDD2B\\uDD2D-\\uDD34\\uDD73\\uDD80\\uDD81\\uDDB6-\\uDDBE\\uDDC9-\\uDDCC\\uDE2F-\\uDE31\\uDE34\\uDE36\\uDE37\\uDE3E\\uDEDF\\uDEE3-\\uDEEA\\uDF00\\uDF01\\uDF3B\\uDF3C\\uDF40\\uDF66-\\uDF6C\\uDF70-\\uDF74]|\\uD805[\\uDC38-\\uDC3F\\uDC42-\\uDC44\\uDC46\\uDC5E\\uDCB3-\\uDCB8\\uDCBA\\uDCBF\\uDCC0\\uDCC2\\uDCC3\\uDDB2-\\uDDB5\\uDDBC\\uDDBD\\uDDBF\\uDDC0\\uDDDC\\uDDDD\\uDE33-\\uDE3A\\uDE3D\\uDE3F\\uDE40\\uDEAB\\uDEAD\\uDEB0-\\uDEB5\\uDEB7\\uDF1D-\\uDF1F\\uDF22-\\uDF25\\uDF27-\\uDF2B]|\\uD806[\\uDC2F-\\uDC37\\uDC39\\uDC3A\\uDE01-\\uDE0A\\uDE33-\\uDE38\\uDE3B-\\uDE3E\\uDE47\\uDE51-\\uDE56\\uDE59-\\uDE5B\\uDE8A-\\uDE96\\uDE98\\uDE99]|\\uD807[\\uDC30-\\uDC36\\uDC38-\\uDC3D\\uDC3F\\uDC92-\\uDCA7\\uDCAA-\\uDCB0\\uDCB2\\uDCB3\\uDCB5\\uDCB6\\uDD31-\\uDD36\\uDD3A\\uDD3C\\uDD3D\\uDD3F-\\uDD45\\uDD47\\uDD90\\uDD91\\uDD95\\uDD97\\uDEF3\\uDEF4]|\\uD81A[\\uDEF0-\\uDEF4\\uDF30-\\uDF36]|\\uD81B[\\uDF8F-\\uDF92]|\\uD82F[\\uDC9D\\uDC9E]|\\uD834[\\uDD67-\\uDD69\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD\\uDE42-\\uDE44]|\\uD836[\\uDE00-\\uDE36\\uDE3B-\\uDE6C\\uDE75\\uDE84\\uDE9B-\\uDE9F\\uDEA1-\\uDEAF]|\\uD838[\\uDC00-\\uDC06\\uDC08-\\uDC18\\uDC1B-\\uDC21\\uDC23\\uDC24\\uDC26-\\uDC2A]|\\uD83A[\\uDCD0-\\uDCD6\\uDD44-\\uDD4A]|\\uDB40[\\uDD00-\\uDDEF]'\n    },\n    {\n        'name': 'N',\n        'alias': 'Number',\n        'bmp': '0-9\\xB2\\xB3\\xB9\\xBC-\\xBE\\u0660-\\u0669\\u06F0-\\u06F9\\u07C0-\\u07C9\\u0966-\\u096F\\u09E6-\\u09EF\\u09F4-\\u09F9\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0B72-\\u0B77\\u0BE6-\\u0BF2\\u0C66-\\u0C6F\\u0C78-\\u0C7E\\u0CE6-\\u0CEF\\u0D58-\\u0D5E\\u0D66-\\u0D78\\u0DE6-\\u0DEF\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F33\\u1040-\\u1049\\u1090-\\u1099\\u1369-\\u137C\\u16EE-\\u16F0\\u17E0-\\u17E9\\u17F0-\\u17F9\\u1810-\\u1819\\u1946-\\u194F\\u19D0-\\u19DA\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1B50-\\u1B59\\u1BB0-\\u1BB9\\u1C40-\\u1C49\\u1C50-\\u1C59\\u2070\\u2074-\\u2079\\u2080-\\u2089\\u2150-\\u2182\\u2185-\\u2189\\u2460-\\u249B\\u24EA-\\u24FF\\u2776-\\u2793\\u2CFD\\u3007\\u3021-\\u3029\\u3038-\\u303A\\u3192-\\u3195\\u3220-\\u3229\\u3248-\\u324F\\u3251-\\u325F\\u3280-\\u3289\\u32B1-\\u32BF\\uA620-\\uA629\\uA6E6-\\uA6EF\\uA830-\\uA835\\uA8D0-\\uA8D9\\uA900-\\uA909\\uA9D0-\\uA9D9\\uA9F0-\\uA9F9\\uAA50-\\uAA59\\uABF0-\\uABF9\\uFF10-\\uFF19',\n        'astral': '\\uD800[\\uDD07-\\uDD33\\uDD40-\\uDD78\\uDD8A\\uDD8B\\uDEE1-\\uDEFB\\uDF20-\\uDF23\\uDF41\\uDF4A\\uDFD1-\\uDFD5]|\\uD801[\\uDCA0-\\uDCA9]|\\uD802[\\uDC58-\\uDC5F\\uDC79-\\uDC7F\\uDCA7-\\uDCAF\\uDCFB-\\uDCFF\\uDD16-\\uDD1B\\uDDBC\\uDDBD\\uDDC0-\\uDDCF\\uDDD2-\\uDDFF\\uDE40-\\uDE48\\uDE7D\\uDE7E\\uDE9D-\\uDE9F\\uDEEB-\\uDEEF\\uDF58-\\uDF5F\\uDF78-\\uDF7F\\uDFA9-\\uDFAF]|\\uD803[\\uDCFA-\\uDCFF\\uDD30-\\uDD39\\uDE60-\\uDE7E\\uDF1D-\\uDF26\\uDF51-\\uDF54]|\\uD804[\\uDC52-\\uDC6F\\uDCF0-\\uDCF9\\uDD36-\\uDD3F\\uDDD0-\\uDDD9\\uDDE1-\\uDDF4\\uDEF0-\\uDEF9]|\\uD805[\\uDC50-\\uDC59\\uDCD0-\\uDCD9\\uDE50-\\uDE59\\uDEC0-\\uDEC9\\uDF30-\\uDF3B]|\\uD806[\\uDCE0-\\uDCF2]|\\uD807[\\uDC50-\\uDC6C\\uDD50-\\uDD59\\uDDA0-\\uDDA9]|\\uD809[\\uDC00-\\uDC6E]|\\uD81A[\\uDE60-\\uDE69\\uDF50-\\uDF59\\uDF5B-\\uDF61]|\\uD81B[\\uDE80-\\uDE96]|\\uD834[\\uDEE0-\\uDEF3\\uDF60-\\uDF78]|\\uD835[\\uDFCE-\\uDFFF]|\\uD83A[\\uDCC7-\\uDCCF\\uDD50-\\uDD59]|\\uD83B[\\uDC71-\\uDCAB\\uDCAD-\\uDCAF\\uDCB1-\\uDCB4]|\\uD83C[\\uDD00-\\uDD0C]'\n    },\n    {\n        'name': 'Nd',\n        'alias': 'Decimal_Number',\n        'bmp': '0-9\\u0660-\\u0669\\u06F0-\\u06F9\\u07C0-\\u07C9\\u0966-\\u096F\\u09E6-\\u09EF\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0BE6-\\u0BEF\\u0C66-\\u0C6F\\u0CE6-\\u0CEF\\u0D66-\\u0D6F\\u0DE6-\\u0DEF\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F29\\u1040-\\u1049\\u1090-\\u1099\\u17E0-\\u17E9\\u1810-\\u1819\\u1946-\\u194F\\u19D0-\\u19D9\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1B50-\\u1B59\\u1BB0-\\u1BB9\\u1C40-\\u1C49\\u1C50-\\u1C59\\uA620-\\uA629\\uA8D0-\\uA8D9\\uA900-\\uA909\\uA9D0-\\uA9D9\\uA9F0-\\uA9F9\\uAA50-\\uAA59\\uABF0-\\uABF9\\uFF10-\\uFF19',\n        'astral': '\\uD801[\\uDCA0-\\uDCA9]|\\uD803[\\uDD30-\\uDD39]|\\uD804[\\uDC66-\\uDC6F\\uDCF0-\\uDCF9\\uDD36-\\uDD3F\\uDDD0-\\uDDD9\\uDEF0-\\uDEF9]|\\uD805[\\uDC50-\\uDC59\\uDCD0-\\uDCD9\\uDE50-\\uDE59\\uDEC0-\\uDEC9\\uDF30-\\uDF39]|\\uD806[\\uDCE0-\\uDCE9]|\\uD807[\\uDC50-\\uDC59\\uDD50-\\uDD59\\uDDA0-\\uDDA9]|\\uD81A[\\uDE60-\\uDE69\\uDF50-\\uDF59]|\\uD835[\\uDFCE-\\uDFFF]|\\uD83A[\\uDD50-\\uDD59]'\n    },\n    {\n        'name': 'Nl',\n        'alias': 'Letter_Number',\n        'bmp': '\\u16EE-\\u16F0\\u2160-\\u2182\\u2185-\\u2188\\u3007\\u3021-\\u3029\\u3038-\\u303A\\uA6E6-\\uA6EF',\n        'astral': '\\uD800[\\uDD40-\\uDD74\\uDF41\\uDF4A\\uDFD1-\\uDFD5]|\\uD809[\\uDC00-\\uDC6E]'\n    },\n    {\n        'name': 'No',\n        'alias': 'Other_Number',\n        'bmp': '\\xB2\\xB3\\xB9\\xBC-\\xBE\\u09F4-\\u09F9\\u0B72-\\u0B77\\u0BF0-\\u0BF2\\u0C78-\\u0C7E\\u0D58-\\u0D5E\\u0D70-\\u0D78\\u0F2A-\\u0F33\\u1369-\\u137C\\u17F0-\\u17F9\\u19DA\\u2070\\u2074-\\u2079\\u2080-\\u2089\\u2150-\\u215F\\u2189\\u2460-\\u249B\\u24EA-\\u24FF\\u2776-\\u2793\\u2CFD\\u3192-\\u3195\\u3220-\\u3229\\u3248-\\u324F\\u3251-\\u325F\\u3280-\\u3289\\u32B1-\\u32BF\\uA830-\\uA835',\n        'astral': '\\uD800[\\uDD07-\\uDD33\\uDD75-\\uDD78\\uDD8A\\uDD8B\\uDEE1-\\uDEFB\\uDF20-\\uDF23]|\\uD802[\\uDC58-\\uDC5F\\uDC79-\\uDC7F\\uDCA7-\\uDCAF\\uDCFB-\\uDCFF\\uDD16-\\uDD1B\\uDDBC\\uDDBD\\uDDC0-\\uDDCF\\uDDD2-\\uDDFF\\uDE40-\\uDE48\\uDE7D\\uDE7E\\uDE9D-\\uDE9F\\uDEEB-\\uDEEF\\uDF58-\\uDF5F\\uDF78-\\uDF7F\\uDFA9-\\uDFAF]|\\uD803[\\uDCFA-\\uDCFF\\uDE60-\\uDE7E\\uDF1D-\\uDF26\\uDF51-\\uDF54]|\\uD804[\\uDC52-\\uDC65\\uDDE1-\\uDDF4]|\\uD805[\\uDF3A\\uDF3B]|\\uD806[\\uDCEA-\\uDCF2]|\\uD807[\\uDC5A-\\uDC6C]|\\uD81A[\\uDF5B-\\uDF61]|\\uD81B[\\uDE80-\\uDE96]|\\uD834[\\uDEE0-\\uDEF3\\uDF60-\\uDF78]|\\uD83A[\\uDCC7-\\uDCCF]|\\uD83B[\\uDC71-\\uDCAB\\uDCAD-\\uDCAF\\uDCB1-\\uDCB4]|\\uD83C[\\uDD00-\\uDD0C]'\n    },\n    {\n        'name': 'P',\n        'alias': 'Punctuation',\n        'bmp': '!-#%-\\\\*,-\\\\/:;\\\\?@\\\\[-\\\\]_\\\\{\\\\}\\xA1\\xA7\\xAB\\xB6\\xB7\\xBB\\xBF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u09FD\\u0A76\\u0AF0\\u0C84\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166D\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2308-\\u230B\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E4E\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65',\n        'astral': '\\uD800[\\uDD00-\\uDD02\\uDF9F\\uDFD0]|\\uD801\\uDD6F|\\uD802[\\uDC57\\uDD1F\\uDD3F\\uDE50-\\uDE58\\uDE7F\\uDEF0-\\uDEF6\\uDF39-\\uDF3F\\uDF99-\\uDF9C]|\\uD803[\\uDF55-\\uDF59]|\\uD804[\\uDC47-\\uDC4D\\uDCBB\\uDCBC\\uDCBE-\\uDCC1\\uDD40-\\uDD43\\uDD74\\uDD75\\uDDC5-\\uDDC8\\uDDCD\\uDDDB\\uDDDD-\\uDDDF\\uDE38-\\uDE3D\\uDEA9]|\\uD805[\\uDC4B-\\uDC4F\\uDC5B\\uDC5D\\uDCC6\\uDDC1-\\uDDD7\\uDE41-\\uDE43\\uDE60-\\uDE6C\\uDF3C-\\uDF3E]|\\uD806[\\uDC3B\\uDE3F-\\uDE46\\uDE9A-\\uDE9C\\uDE9E-\\uDEA2]|\\uD807[\\uDC41-\\uDC45\\uDC70\\uDC71\\uDEF7\\uDEF8]|\\uD809[\\uDC70-\\uDC74]|\\uD81A[\\uDE6E\\uDE6F\\uDEF5\\uDF37-\\uDF3B\\uDF44]|\\uD81B[\\uDE97-\\uDE9A]|\\uD82F\\uDC9F|\\uD836[\\uDE87-\\uDE8B]|\\uD83A[\\uDD5E\\uDD5F]'\n    },\n    {\n        'name': 'Pc',\n        'alias': 'Connector_Punctuation',\n        'bmp': '_\\u203F\\u2040\\u2054\\uFE33\\uFE34\\uFE4D-\\uFE4F\\uFF3F'\n    },\n    {\n        'name': 'Pd',\n        'alias': 'Dash_Punctuation',\n        'bmp': '\\\\-\\u058A\\u05BE\\u1400\\u1806\\u2010-\\u2015\\u2E17\\u2E1A\\u2E3A\\u2E3B\\u2E40\\u301C\\u3030\\u30A0\\uFE31\\uFE32\\uFE58\\uFE63\\uFF0D'\n    },\n    {\n        'name': 'Pe',\n        'alias': 'Close_Punctuation',\n        'bmp': '\\\\)\\\\]\\\\}\\u0F3B\\u0F3D\\u169C\\u2046\\u207E\\u208E\\u2309\\u230B\\u232A\\u2769\\u276B\\u276D\\u276F\\u2771\\u2773\\u2775\\u27C6\\u27E7\\u27E9\\u27EB\\u27ED\\u27EF\\u2984\\u2986\\u2988\\u298A\\u298C\\u298E\\u2990\\u2992\\u2994\\u2996\\u2998\\u29D9\\u29DB\\u29FD\\u2E23\\u2E25\\u2E27\\u2E29\\u3009\\u300B\\u300D\\u300F\\u3011\\u3015\\u3017\\u3019\\u301B\\u301E\\u301F\\uFD3E\\uFE18\\uFE36\\uFE38\\uFE3A\\uFE3C\\uFE3E\\uFE40\\uFE42\\uFE44\\uFE48\\uFE5A\\uFE5C\\uFE5E\\uFF09\\uFF3D\\uFF5D\\uFF60\\uFF63'\n    },\n    {\n        'name': 'Pf',\n        'alias': 'Final_Punctuation',\n        'bmp': '\\xBB\\u2019\\u201D\\u203A\\u2E03\\u2E05\\u2E0A\\u2E0D\\u2E1D\\u2E21'\n    },\n    {\n        'name': 'Pi',\n        'alias': 'Initial_Punctuation',\n        'bmp': '\\xAB\\u2018\\u201B\\u201C\\u201F\\u2039\\u2E02\\u2E04\\u2E09\\u2E0C\\u2E1C\\u2E20'\n    },\n    {\n        'name': 'Po',\n        'alias': 'Other_Punctuation',\n        'bmp': '!-#%-\\'\\\\*,\\\\.\\\\/:;\\\\?@\\\\\\xA1\\xA7\\xB6\\xB7\\xBF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u09FD\\u0A76\\u0AF0\\u0C84\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u166D\\u166E\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u1805\\u1807-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2016\\u2017\\u2020-\\u2027\\u2030-\\u2038\\u203B-\\u203E\\u2041-\\u2043\\u2047-\\u2051\\u2053\\u2055-\\u205E\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00\\u2E01\\u2E06-\\u2E08\\u2E0B\\u2E0E-\\u2E16\\u2E18\\u2E19\\u2E1B\\u2E1E\\u2E1F\\u2E2A-\\u2E2E\\u2E30-\\u2E39\\u2E3C-\\u2E3F\\u2E41\\u2E43-\\u2E4E\\u3001-\\u3003\\u303D\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA8FC\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFE10-\\uFE16\\uFE19\\uFE30\\uFE45\\uFE46\\uFE49-\\uFE4C\\uFE50-\\uFE52\\uFE54-\\uFE57\\uFE5F-\\uFE61\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF07\\uFF0A\\uFF0C\\uFF0E\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3C\\uFF61\\uFF64\\uFF65',\n        'astral': '\\uD800[\\uDD00-\\uDD02\\uDF9F\\uDFD0]|\\uD801\\uDD6F|\\uD802[\\uDC57\\uDD1F\\uDD3F\\uDE50-\\uDE58\\uDE7F\\uDEF0-\\uDEF6\\uDF39-\\uDF3F\\uDF99-\\uDF9C]|\\uD803[\\uDF55-\\uDF59]|\\uD804[\\uDC47-\\uDC4D\\uDCBB\\uDCBC\\uDCBE-\\uDCC1\\uDD40-\\uDD43\\uDD74\\uDD75\\uDDC5-\\uDDC8\\uDDCD\\uDDDB\\uDDDD-\\uDDDF\\uDE38-\\uDE3D\\uDEA9]|\\uD805[\\uDC4B-\\uDC4F\\uDC5B\\uDC5D\\uDCC6\\uDDC1-\\uDDD7\\uDE41-\\uDE43\\uDE60-\\uDE6C\\uDF3C-\\uDF3E]|\\uD806[\\uDC3B\\uDE3F-\\uDE46\\uDE9A-\\uDE9C\\uDE9E-\\uDEA2]|\\uD807[\\uDC41-\\uDC45\\uDC70\\uDC71\\uDEF7\\uDEF8]|\\uD809[\\uDC70-\\uDC74]|\\uD81A[\\uDE6E\\uDE6F\\uDEF5\\uDF37-\\uDF3B\\uDF44]|\\uD81B[\\uDE97-\\uDE9A]|\\uD82F\\uDC9F|\\uD836[\\uDE87-\\uDE8B]|\\uD83A[\\uDD5E\\uDD5F]'\n    },\n    {\n        'name': 'Ps',\n        'alias': 'Open_Punctuation',\n        'bmp': '\\\\(\\\\[\\\\{\\u0F3A\\u0F3C\\u169B\\u201A\\u201E\\u2045\\u207D\\u208D\\u2308\\u230A\\u2329\\u2768\\u276A\\u276C\\u276E\\u2770\\u2772\\u2774\\u27C5\\u27E6\\u27E8\\u27EA\\u27EC\\u27EE\\u2983\\u2985\\u2987\\u2989\\u298B\\u298D\\u298F\\u2991\\u2993\\u2995\\u2997\\u29D8\\u29DA\\u29FC\\u2E22\\u2E24\\u2E26\\u2E28\\u2E42\\u3008\\u300A\\u300C\\u300E\\u3010\\u3014\\u3016\\u3018\\u301A\\u301D\\uFD3F\\uFE17\\uFE35\\uFE37\\uFE39\\uFE3B\\uFE3D\\uFE3F\\uFE41\\uFE43\\uFE47\\uFE59\\uFE5B\\uFE5D\\uFF08\\uFF3B\\uFF5B\\uFF5F\\uFF62'\n    },\n    {\n        'name': 'S',\n        'alias': 'Symbol',\n        'bmp': '\\\\$\\\\+<->\\\\^`\\\\|~\\xA2-\\xA6\\xA8\\xA9\\xAC\\xAE-\\xB1\\xB4\\xB8\\xD7\\xF7\\u02C2-\\u02C5\\u02D2-\\u02DF\\u02E5-\\u02EB\\u02ED\\u02EF-\\u02FF\\u0375\\u0384\\u0385\\u03F6\\u0482\\u058D-\\u058F\\u0606-\\u0608\\u060B\\u060E\\u060F\\u06DE\\u06E9\\u06FD\\u06FE\\u07F6\\u07FE\\u07FF\\u09F2\\u09F3\\u09FA\\u09FB\\u0AF1\\u0B70\\u0BF3-\\u0BFA\\u0C7F\\u0D4F\\u0D79\\u0E3F\\u0F01-\\u0F03\\u0F13\\u0F15-\\u0F17\\u0F1A-\\u0F1F\\u0F34\\u0F36\\u0F38\\u0FBE-\\u0FC5\\u0FC7-\\u0FCC\\u0FCE\\u0FCF\\u0FD5-\\u0FD8\\u109E\\u109F\\u1390-\\u1399\\u17DB\\u1940\\u19DE-\\u19FF\\u1B61-\\u1B6A\\u1B74-\\u1B7C\\u1FBD\\u1FBF-\\u1FC1\\u1FCD-\\u1FCF\\u1FDD-\\u1FDF\\u1FED-\\u1FEF\\u1FFD\\u1FFE\\u2044\\u2052\\u207A-\\u207C\\u208A-\\u208C\\u20A0-\\u20BF\\u2100\\u2101\\u2103-\\u2106\\u2108\\u2109\\u2114\\u2116-\\u2118\\u211E-\\u2123\\u2125\\u2127\\u2129\\u212E\\u213A\\u213B\\u2140-\\u2144\\u214A-\\u214D\\u214F\\u218A\\u218B\\u2190-\\u2307\\u230C-\\u2328\\u232B-\\u2426\\u2440-\\u244A\\u249C-\\u24E9\\u2500-\\u2767\\u2794-\\u27C4\\u27C7-\\u27E5\\u27F0-\\u2982\\u2999-\\u29D7\\u29DC-\\u29FB\\u29FE-\\u2B73\\u2B76-\\u2B95\\u2B98-\\u2BC8\\u2BCA-\\u2BFE\\u2CE5-\\u2CEA\\u2E80-\\u2E99\\u2E9B-\\u2EF3\\u2F00-\\u2FD5\\u2FF0-\\u2FFB\\u3004\\u3012\\u3013\\u3020\\u3036\\u3037\\u303E\\u303F\\u309B\\u309C\\u3190\\u3191\\u3196-\\u319F\\u31C0-\\u31E3\\u3200-\\u321E\\u322A-\\u3247\\u3250\\u3260-\\u327F\\u328A-\\u32B0\\u32C0-\\u32FE\\u3300-\\u33FF\\u4DC0-\\u4DFF\\uA490-\\uA4C6\\uA700-\\uA716\\uA720\\uA721\\uA789\\uA78A\\uA828-\\uA82B\\uA836-\\uA839\\uAA77-\\uAA79\\uAB5B\\uFB29\\uFBB2-\\uFBC1\\uFDFC\\uFDFD\\uFE62\\uFE64-\\uFE66\\uFE69\\uFF04\\uFF0B\\uFF1C-\\uFF1E\\uFF3E\\uFF40\\uFF5C\\uFF5E\\uFFE0-\\uFFE6\\uFFE8-\\uFFEE\\uFFFC\\uFFFD',\n        'astral': '\\uD800[\\uDD37-\\uDD3F\\uDD79-\\uDD89\\uDD8C-\\uDD8E\\uDD90-\\uDD9B\\uDDA0\\uDDD0-\\uDDFC]|\\uD802[\\uDC77\\uDC78\\uDEC8]|\\uD805\\uDF3F|\\uD81A[\\uDF3C-\\uDF3F\\uDF45]|\\uD82F\\uDC9C|\\uD834[\\uDC00-\\uDCF5\\uDD00-\\uDD26\\uDD29-\\uDD64\\uDD6A-\\uDD6C\\uDD83\\uDD84\\uDD8C-\\uDDA9\\uDDAE-\\uDDE8\\uDE00-\\uDE41\\uDE45\\uDF00-\\uDF56]|\\uD835[\\uDEC1\\uDEDB\\uDEFB\\uDF15\\uDF35\\uDF4F\\uDF6F\\uDF89\\uDFA9\\uDFC3]|\\uD836[\\uDC00-\\uDDFF\\uDE37-\\uDE3A\\uDE6D-\\uDE74\\uDE76-\\uDE83\\uDE85\\uDE86]|\\uD83B[\\uDCAC\\uDCB0\\uDEF0\\uDEF1]|\\uD83C[\\uDC00-\\uDC2B\\uDC30-\\uDC93\\uDCA0-\\uDCAE\\uDCB1-\\uDCBF\\uDCC1-\\uDCCF\\uDCD1-\\uDCF5\\uDD10-\\uDD6B\\uDD70-\\uDDAC\\uDDE6-\\uDE02\\uDE10-\\uDE3B\\uDE40-\\uDE48\\uDE50\\uDE51\\uDE60-\\uDE65\\uDF00-\\uDFFF]|\\uD83D[\\uDC00-\\uDED4\\uDEE0-\\uDEEC\\uDEF0-\\uDEF9\\uDF00-\\uDF73\\uDF80-\\uDFD8]|\\uD83E[\\uDC00-\\uDC0B\\uDC10-\\uDC47\\uDC50-\\uDC59\\uDC60-\\uDC87\\uDC90-\\uDCAD\\uDD00-\\uDD0B\\uDD10-\\uDD3E\\uDD40-\\uDD70\\uDD73-\\uDD76\\uDD7A\\uDD7C-\\uDDA2\\uDDB0-\\uDDB9\\uDDC0-\\uDDC2\\uDDD0-\\uDDFF\\uDE60-\\uDE6D]'\n    },\n    {\n        'name': 'Sc',\n        'alias': 'Currency_Symbol',\n        'bmp': '\\\\$\\xA2-\\xA5\\u058F\\u060B\\u07FE\\u07FF\\u09F2\\u09F3\\u09FB\\u0AF1\\u0BF9\\u0E3F\\u17DB\\u20A0-\\u20BF\\uA838\\uFDFC\\uFE69\\uFF04\\uFFE0\\uFFE1\\uFFE5\\uFFE6',\n        'astral': '\\uD83B\\uDCB0'\n    },\n    {\n        'name': 'Sk',\n        'alias': 'Modifier_Symbol',\n        'bmp': '\\\\^`\\xA8\\xAF\\xB4\\xB8\\u02C2-\\u02C5\\u02D2-\\u02DF\\u02E5-\\u02EB\\u02ED\\u02EF-\\u02FF\\u0375\\u0384\\u0385\\u1FBD\\u1FBF-\\u1FC1\\u1FCD-\\u1FCF\\u1FDD-\\u1FDF\\u1FED-\\u1FEF\\u1FFD\\u1FFE\\u309B\\u309C\\uA700-\\uA716\\uA720\\uA721\\uA789\\uA78A\\uAB5B\\uFBB2-\\uFBC1\\uFF3E\\uFF40\\uFFE3',\n        'astral': '\\uD83C[\\uDFFB-\\uDFFF]'\n    },\n    {\n        'name': 'Sm',\n        'alias': 'Math_Symbol',\n        'bmp': '\\\\+<->\\\\|~\\xAC\\xB1\\xD7\\xF7\\u03F6\\u0606-\\u0608\\u2044\\u2052\\u207A-\\u207C\\u208A-\\u208C\\u2118\\u2140-\\u2144\\u214B\\u2190-\\u2194\\u219A\\u219B\\u21A0\\u21A3\\u21A6\\u21AE\\u21CE\\u21CF\\u21D2\\u21D4\\u21F4-\\u22FF\\u2320\\u2321\\u237C\\u239B-\\u23B3\\u23DC-\\u23E1\\u25B7\\u25C1\\u25F8-\\u25FF\\u266F\\u27C0-\\u27C4\\u27C7-\\u27E5\\u27F0-\\u27FF\\u2900-\\u2982\\u2999-\\u29D7\\u29DC-\\u29FB\\u29FE-\\u2AFF\\u2B30-\\u2B44\\u2B47-\\u2B4C\\uFB29\\uFE62\\uFE64-\\uFE66\\uFF0B\\uFF1C-\\uFF1E\\uFF5C\\uFF5E\\uFFE2\\uFFE9-\\uFFEC',\n        'astral': '\\uD835[\\uDEC1\\uDEDB\\uDEFB\\uDF15\\uDF35\\uDF4F\\uDF6F\\uDF89\\uDFA9\\uDFC3]|\\uD83B[\\uDEF0\\uDEF1]'\n    },\n    {\n        'name': 'So',\n        'alias': 'Other_Symbol',\n        'bmp': '\\xA6\\xA9\\xAE\\xB0\\u0482\\u058D\\u058E\\u060E\\u060F\\u06DE\\u06E9\\u06FD\\u06FE\\u07F6\\u09FA\\u0B70\\u0BF3-\\u0BF8\\u0BFA\\u0C7F\\u0D4F\\u0D79\\u0F01-\\u0F03\\u0F13\\u0F15-\\u0F17\\u0F1A-\\u0F1F\\u0F34\\u0F36\\u0F38\\u0FBE-\\u0FC5\\u0FC7-\\u0FCC\\u0FCE\\u0FCF\\u0FD5-\\u0FD8\\u109E\\u109F\\u1390-\\u1399\\u1940\\u19DE-\\u19FF\\u1B61-\\u1B6A\\u1B74-\\u1B7C\\u2100\\u2101\\u2103-\\u2106\\u2108\\u2109\\u2114\\u2116\\u2117\\u211E-\\u2123\\u2125\\u2127\\u2129\\u212E\\u213A\\u213B\\u214A\\u214C\\u214D\\u214F\\u218A\\u218B\\u2195-\\u2199\\u219C-\\u219F\\u21A1\\u21A2\\u21A4\\u21A5\\u21A7-\\u21AD\\u21AF-\\u21CD\\u21D0\\u21D1\\u21D3\\u21D5-\\u21F3\\u2300-\\u2307\\u230C-\\u231F\\u2322-\\u2328\\u232B-\\u237B\\u237D-\\u239A\\u23B4-\\u23DB\\u23E2-\\u2426\\u2440-\\u244A\\u249C-\\u24E9\\u2500-\\u25B6\\u25B8-\\u25C0\\u25C2-\\u25F7\\u2600-\\u266E\\u2670-\\u2767\\u2794-\\u27BF\\u2800-\\u28FF\\u2B00-\\u2B2F\\u2B45\\u2B46\\u2B4D-\\u2B73\\u2B76-\\u2B95\\u2B98-\\u2BC8\\u2BCA-\\u2BFE\\u2CE5-\\u2CEA\\u2E80-\\u2E99\\u2E9B-\\u2EF3\\u2F00-\\u2FD5\\u2FF0-\\u2FFB\\u3004\\u3012\\u3013\\u3020\\u3036\\u3037\\u303E\\u303F\\u3190\\u3191\\u3196-\\u319F\\u31C0-\\u31E3\\u3200-\\u321E\\u322A-\\u3247\\u3250\\u3260-\\u327F\\u328A-\\u32B0\\u32C0-\\u32FE\\u3300-\\u33FF\\u4DC0-\\u4DFF\\uA490-\\uA4C6\\uA828-\\uA82B\\uA836\\uA837\\uA839\\uAA77-\\uAA79\\uFDFD\\uFFE4\\uFFE8\\uFFED\\uFFEE\\uFFFC\\uFFFD',\n        'astral': '\\uD800[\\uDD37-\\uDD3F\\uDD79-\\uDD89\\uDD8C-\\uDD8E\\uDD90-\\uDD9B\\uDDA0\\uDDD0-\\uDDFC]|\\uD802[\\uDC77\\uDC78\\uDEC8]|\\uD805\\uDF3F|\\uD81A[\\uDF3C-\\uDF3F\\uDF45]|\\uD82F\\uDC9C|\\uD834[\\uDC00-\\uDCF5\\uDD00-\\uDD26\\uDD29-\\uDD64\\uDD6A-\\uDD6C\\uDD83\\uDD84\\uDD8C-\\uDDA9\\uDDAE-\\uDDE8\\uDE00-\\uDE41\\uDE45\\uDF00-\\uDF56]|\\uD836[\\uDC00-\\uDDFF\\uDE37-\\uDE3A\\uDE6D-\\uDE74\\uDE76-\\uDE83\\uDE85\\uDE86]|\\uD83B\\uDCAC|\\uD83C[\\uDC00-\\uDC2B\\uDC30-\\uDC93\\uDCA0-\\uDCAE\\uDCB1-\\uDCBF\\uDCC1-\\uDCCF\\uDCD1-\\uDCF5\\uDD10-\\uDD6B\\uDD70-\\uDDAC\\uDDE6-\\uDE02\\uDE10-\\uDE3B\\uDE40-\\uDE48\\uDE50\\uDE51\\uDE60-\\uDE65\\uDF00-\\uDFFA]|\\uD83D[\\uDC00-\\uDED4\\uDEE0-\\uDEEC\\uDEF0-\\uDEF9\\uDF00-\\uDF73\\uDF80-\\uDFD8]|\\uD83E[\\uDC00-\\uDC0B\\uDC10-\\uDC47\\uDC50-\\uDC59\\uDC60-\\uDC87\\uDC90-\\uDCAD\\uDD00-\\uDD0B\\uDD10-\\uDD3E\\uDD40-\\uDD70\\uDD73-\\uDD76\\uDD7A\\uDD7C-\\uDDA2\\uDDB0-\\uDDB9\\uDDC0-\\uDDC2\\uDDD0-\\uDDFF\\uDE60-\\uDE6D]'\n    },\n    {\n        'name': 'Z',\n        'alias': 'Separator',\n        'bmp': ' \\xA0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000'\n    },\n    {\n        'name': 'Zl',\n        'alias': 'Line_Separator',\n        'bmp': '\\u2028'\n    },\n    {\n        'name': 'Zp',\n        'alias': 'Paragraph_Separator',\n        'bmp': '\\u2029'\n    },\n    {\n        'name': 'Zs',\n        'alias': 'Space_Separator',\n        'bmp': ' \\xA0\\u1680\\u2000-\\u200A\\u202F\\u205F\\u3000'\n    }\n];\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/xregexp/tools/output/categories.js\n// module id = 442\n// module chunks = 88 89","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime-corejs2/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _properties = _interopRequireDefault(require(\"../../tools/output/properties\"));\n\n/*!\n * XRegExp Unicode Properties 4.2.4\n * <xregexp.com>\n * Steven Levithan (c) 2012-present MIT License\n * Unicode data by Mathias Bynens <mathiasbynens.be>\n */\nvar _default = function _default(XRegExp) {\n  /**\n   * Adds properties to meet the UTS #18 Level 1 RL1.2 requirements for Unicode regex support. See\n   * <http://unicode.org/reports/tr18/#RL1.2>. Following are definitions of these properties from\n   * UAX #44 <http://unicode.org/reports/tr44/>:\n   *\n   * - Alphabetic\n   *   Characters with the Alphabetic property. Generated from: Lowercase + Uppercase + Lt + Lm +\n   *   Lo + Nl + Other_Alphabetic.\n   *\n   * - Default_Ignorable_Code_Point\n   *   For programmatic determination of default ignorable code points. New characters that should\n   *   be ignored in rendering (unless explicitly supported) will be assigned in these ranges,\n   *   permitting programs to correctly handle the default rendering of such characters when not\n   *   otherwise supported.\n   *\n   * - Lowercase\n   *   Characters with the Lowercase property. Generated from: Ll + Other_Lowercase.\n   *\n   * - Noncharacter_Code_Point\n   *   Code points permanently reserved for internal use.\n   *\n   * - Uppercase\n   *   Characters with the Uppercase property. Generated from: Lu + Other_Uppercase.\n   *\n   * - White_Space\n   *   Spaces, separator characters and other control characters which should be treated by\n   *   programming languages as \"white space\" for the purpose of parsing elements.\n   *\n   * The properties ASCII, Any, and Assigned are also included but are not defined in UAX #44. UTS\n   * #18 RL1.2 additionally requires support for Unicode scripts and general categories. These are\n   * included in XRegExp's Unicode Categories and Unicode Scripts addons.\n   *\n   * Token names are case insensitive, and any spaces, hyphens, and underscores are ignored.\n   *\n   * Uses Unicode 11.0.0.\n   *\n   * @requires XRegExp, Unicode Base\n   */\n  if (!XRegExp.addUnicodeData) {\n    throw new ReferenceError('Unicode Base must be loaded before Unicode Properties');\n  }\n\n  var unicodeData = _properties.default; // Add non-generated data\n\n  unicodeData.push({\n    name: 'Assigned',\n    // Since this is defined as the inverse of Unicode category Cn (Unassigned), the Unicode\n    // Categories addon is required to use this property\n    inverseOf: 'Cn'\n  });\n  XRegExp.addUnicodeData(unicodeData);\n};\n\nexports.default = _default;\nmodule.exports = exports[\"default\"];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/xregexp/lib/addons/unicode-properties.js\n// module id = 443\n// module chunks = 88 89","module.exports = [\n    {\n        'name': 'ASCII',\n        'bmp': '\\0-\\x7F'\n    },\n    {\n        'name': 'Alphabetic',\n        'bmp': 'A-Za-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0345\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0560-\\u0588\\u05B0-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u05D0-\\u05EA\\u05EF-\\u05F2\\u0610-\\u061A\\u0620-\\u0657\\u0659-\\u065F\\u066E-\\u06D3\\u06D5-\\u06DC\\u06E1-\\u06E8\\u06ED-\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710-\\u073F\\u074D-\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0817\\u081A-\\u082C\\u0840-\\u0858\\u0860-\\u086A\\u08A0-\\u08B4\\u08B6-\\u08BD\\u08D4-\\u08DF\\u08E3-\\u08E9\\u08F0-\\u093B\\u093D-\\u094C\\u094E-\\u0950\\u0955-\\u0963\\u0971-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD-\\u09C4\\u09C7\\u09C8\\u09CB\\u09CC\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09F0\\u09F1\\u09FC\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B\\u0A4C\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A70-\\u0A75\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB\\u0ACC\\u0AD0\\u0AE0-\\u0AE3\\u0AF9-\\u0AFC\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D-\\u0B44\\u0B47\\u0B48\\u0B4B\\u0B4C\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B71\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCC\\u0BD0\\u0BD7\\u0C00-\\u0C03\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4C\\u0C55\\u0C56\\u0C58-\\u0C5A\\u0C60-\\u0C63\\u0C80-\\u0C83\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCC\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CF1\\u0CF2\\u0D00-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4C\\u0D4E\\u0D54-\\u0D57\\u0D5F-\\u0D63\\u0D7A-\\u0D7F\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0E01-\\u0E3A\\u0E40-\\u0E46\\u0E4D\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0ECD\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F81\\u0F88-\\u0F97\\u0F99-\\u0FBC\\u1000-\\u1036\\u1038\\u103B-\\u103F\\u1050-\\u1062\\u1065-\\u1068\\u106E-\\u1086\\u108E\\u109C\\u109D\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135F\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16EE-\\u16F8\\u1700-\\u170C\\u170E-\\u1713\\u1720-\\u1733\\u1740-\\u1753\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773\\u1780-\\u17B3\\u17B6-\\u17C8\\u17D7\\u17DC\\u1820-\\u1878\\u1880-\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u1938\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A1B\\u1A20-\\u1A5E\\u1A61-\\u1A74\\u1AA7\\u1B00-\\u1B33\\u1B35-\\u1B43\\u1B45-\\u1B4B\\u1B80-\\u1BA9\\u1BAC-\\u1BAF\\u1BBA-\\u1BE5\\u1BE7-\\u1BF1\\u1C00-\\u1C35\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C88\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1DE7-\\u1DF4\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2160-\\u2188\\u24B6-\\u24E9\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2DE0-\\u2DFF\\u2E2F\\u3005-\\u3007\\u3021-\\u3029\\u3031-\\u3035\\u3038-\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312F\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FEF\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA674-\\uA67B\\uA67F-\\uA6EF\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7B9\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA827\\uA840-\\uA873\\uA880-\\uA8C3\\uA8C5\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA8FE\\uA90A-\\uA92A\\uA930-\\uA952\\uA960-\\uA97C\\uA980-\\uA9B2\\uA9B4-\\uA9BF\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAABE\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEF\\uAAF2-\\uAAF5\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABEA\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC',\n        'astral': '\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA\\uDD40-\\uDD74\\uDE80-\\uDE9C\\uDEA0-\\uDED0\\uDF00-\\uDF1F\\uDF2D-\\uDF4A\\uDF50-\\uDF7A\\uDF80-\\uDF9D\\uDFA0-\\uDFC3\\uDFC8-\\uDFCF\\uDFD1-\\uDFD5]|\\uD801[\\uDC00-\\uDC9D\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB\\uDD00-\\uDD27\\uDD30-\\uDD63\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]|\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F-\\uDC55\\uDC60-\\uDC76\\uDC80-\\uDC9E\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDD00-\\uDD15\\uDD20-\\uDD39\\uDD80-\\uDDB7\\uDDBE\\uDDBF\\uDE00-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE60-\\uDE7C\\uDE80-\\uDE9C\\uDEC0-\\uDEC7\\uDEC9-\\uDEE4\\uDF00-\\uDF35\\uDF40-\\uDF55\\uDF60-\\uDF72\\uDF80-\\uDF91]|\\uD803[\\uDC00-\\uDC48\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDD00-\\uDD27\\uDF00-\\uDF1C\\uDF27\\uDF30-\\uDF45]|\\uD804[\\uDC00-\\uDC45\\uDC82-\\uDCB8\\uDCD0-\\uDCE8\\uDD00-\\uDD32\\uDD44-\\uDD46\\uDD50-\\uDD72\\uDD76\\uDD80-\\uDDBF\\uDDC1-\\uDDC4\\uDDDA\\uDDDC\\uDE00-\\uDE11\\uDE13-\\uDE34\\uDE37\\uDE3E\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA8\\uDEB0-\\uDEE8\\uDF00-\\uDF03\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3D-\\uDF44\\uDF47\\uDF48\\uDF4B\\uDF4C\\uDF50\\uDF57\\uDF5D-\\uDF63]|\\uD805[\\uDC00-\\uDC41\\uDC43-\\uDC45\\uDC47-\\uDC4A\\uDC80-\\uDCC1\\uDCC4\\uDCC5\\uDCC7\\uDD80-\\uDDB5\\uDDB8-\\uDDBE\\uDDD8-\\uDDDD\\uDE00-\\uDE3E\\uDE40\\uDE44\\uDE80-\\uDEB5\\uDF00-\\uDF1A\\uDF1D-\\uDF2A]|\\uD806[\\uDC00-\\uDC38\\uDCA0-\\uDCDF\\uDCFF\\uDE00-\\uDE32\\uDE35-\\uDE3E\\uDE50-\\uDE83\\uDE86-\\uDE97\\uDE9D\\uDEC0-\\uDEF8]|\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC36\\uDC38-\\uDC3E\\uDC40\\uDC72-\\uDC8F\\uDC92-\\uDCA7\\uDCA9-\\uDCB6\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD36\\uDD3A\\uDD3C\\uDD3D\\uDD3F-\\uDD41\\uDD43\\uDD46\\uDD47\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD8E\\uDD90\\uDD91\\uDD93-\\uDD96\\uDD98\\uDEE0-\\uDEF6]|\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC80-\\uDD43]|[\\uD80C\\uD81C-\\uD820\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879][\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]|\\uD811[\\uDC00-\\uDE46]|\\uD81A[\\uDC00-\\uDE38\\uDE40-\\uDE5E\\uDED0-\\uDEED\\uDF00-\\uDF36\\uDF40-\\uDF43\\uDF63-\\uDF77\\uDF7D-\\uDF8F]|\\uD81B[\\uDE40-\\uDE7F\\uDF00-\\uDF44\\uDF50-\\uDF7E\\uDF93-\\uDF9F\\uDFE0\\uDFE1]|\\uD821[\\uDC00-\\uDFF1]|\\uD822[\\uDC00-\\uDEF2]|\\uD82C[\\uDC00-\\uDD1E\\uDD70-\\uDEFB]|\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99\\uDC9E]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDEC0\\uDEC2-\\uDEDA\\uDEDC-\\uDEFA\\uDEFC-\\uDF14\\uDF16-\\uDF34\\uDF36-\\uDF4E\\uDF50-\\uDF6E\\uDF70-\\uDF88\\uDF8A-\\uDFA8\\uDFAA-\\uDFC2\\uDFC4-\\uDFCB]|\\uD838[\\uDC00-\\uDC06\\uDC08-\\uDC18\\uDC1B-\\uDC21\\uDC23\\uDC24\\uDC26-\\uDC2A]|\\uD83A[\\uDC00-\\uDCC4\\uDD00-\\uDD43\\uDD47]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB]|\\uD83C[\\uDD30-\\uDD49\\uDD50-\\uDD69\\uDD70-\\uDD89]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]'\n    },\n    {\n        'name': 'Any',\n        'isBmpLast': true,\n        'bmp': '\\0-\\uFFFF',\n        'astral': '[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]'\n    },\n    {\n        'name': 'Default_Ignorable_Code_Point',\n        'bmp': '\\xAD\\u034F\\u061C\\u115F\\u1160\\u17B4\\u17B5\\u180B-\\u180E\\u200B-\\u200F\\u202A-\\u202E\\u2060-\\u206F\\u3164\\uFE00-\\uFE0F\\uFEFF\\uFFA0\\uFFF0-\\uFFF8',\n        'astral': '\\uD82F[\\uDCA0-\\uDCA3]|\\uD834[\\uDD73-\\uDD7A]|[\\uDB40-\\uDB43][\\uDC00-\\uDFFF]'\n    },\n    {\n        'name': 'Lowercase',\n        'bmp': 'a-z\\xAA\\xB5\\xBA\\xDF-\\xF6\\xF8-\\xFF\\u0101\\u0103\\u0105\\u0107\\u0109\\u010B\\u010D\\u010F\\u0111\\u0113\\u0115\\u0117\\u0119\\u011B\\u011D\\u011F\\u0121\\u0123\\u0125\\u0127\\u0129\\u012B\\u012D\\u012F\\u0131\\u0133\\u0135\\u0137\\u0138\\u013A\\u013C\\u013E\\u0140\\u0142\\u0144\\u0146\\u0148\\u0149\\u014B\\u014D\\u014F\\u0151\\u0153\\u0155\\u0157\\u0159\\u015B\\u015D\\u015F\\u0161\\u0163\\u0165\\u0167\\u0169\\u016B\\u016D\\u016F\\u0171\\u0173\\u0175\\u0177\\u017A\\u017C\\u017E-\\u0180\\u0183\\u0185\\u0188\\u018C\\u018D\\u0192\\u0195\\u0199-\\u019B\\u019E\\u01A1\\u01A3\\u01A5\\u01A8\\u01AA\\u01AB\\u01AD\\u01B0\\u01B4\\u01B6\\u01B9\\u01BA\\u01BD-\\u01BF\\u01C6\\u01C9\\u01CC\\u01CE\\u01D0\\u01D2\\u01D4\\u01D6\\u01D8\\u01DA\\u01DC\\u01DD\\u01DF\\u01E1\\u01E3\\u01E5\\u01E7\\u01E9\\u01EB\\u01ED\\u01EF\\u01F0\\u01F3\\u01F5\\u01F9\\u01FB\\u01FD\\u01FF\\u0201\\u0203\\u0205\\u0207\\u0209\\u020B\\u020D\\u020F\\u0211\\u0213\\u0215\\u0217\\u0219\\u021B\\u021D\\u021F\\u0221\\u0223\\u0225\\u0227\\u0229\\u022B\\u022D\\u022F\\u0231\\u0233-\\u0239\\u023C\\u023F\\u0240\\u0242\\u0247\\u0249\\u024B\\u024D\\u024F-\\u0293\\u0295-\\u02B8\\u02C0\\u02C1\\u02E0-\\u02E4\\u0345\\u0371\\u0373\\u0377\\u037A-\\u037D\\u0390\\u03AC-\\u03CE\\u03D0\\u03D1\\u03D5-\\u03D7\\u03D9\\u03DB\\u03DD\\u03DF\\u03E1\\u03E3\\u03E5\\u03E7\\u03E9\\u03EB\\u03ED\\u03EF-\\u03F3\\u03F5\\u03F8\\u03FB\\u03FC\\u0430-\\u045F\\u0461\\u0463\\u0465\\u0467\\u0469\\u046B\\u046D\\u046F\\u0471\\u0473\\u0475\\u0477\\u0479\\u047B\\u047D\\u047F\\u0481\\u048B\\u048D\\u048F\\u0491\\u0493\\u0495\\u0497\\u0499\\u049B\\u049D\\u049F\\u04A1\\u04A3\\u04A5\\u04A7\\u04A9\\u04AB\\u04AD\\u04AF\\u04B1\\u04B3\\u04B5\\u04B7\\u04B9\\u04BB\\u04BD\\u04BF\\u04C2\\u04C4\\u04C6\\u04C8\\u04CA\\u04CC\\u04CE\\u04CF\\u04D1\\u04D3\\u04D5\\u04D7\\u04D9\\u04DB\\u04DD\\u04DF\\u04E1\\u04E3\\u04E5\\u04E7\\u04E9\\u04EB\\u04ED\\u04EF\\u04F1\\u04F3\\u04F5\\u04F7\\u04F9\\u04FB\\u04FD\\u04FF\\u0501\\u0503\\u0505\\u0507\\u0509\\u050B\\u050D\\u050F\\u0511\\u0513\\u0515\\u0517\\u0519\\u051B\\u051D\\u051F\\u0521\\u0523\\u0525\\u0527\\u0529\\u052B\\u052D\\u052F\\u0560-\\u0588\\u10D0-\\u10FA\\u10FD-\\u10FF\\u13F8-\\u13FD\\u1C80-\\u1C88\\u1D00-\\u1DBF\\u1E01\\u1E03\\u1E05\\u1E07\\u1E09\\u1E0B\\u1E0D\\u1E0F\\u1E11\\u1E13\\u1E15\\u1E17\\u1E19\\u1E1B\\u1E1D\\u1E1F\\u1E21\\u1E23\\u1E25\\u1E27\\u1E29\\u1E2B\\u1E2D\\u1E2F\\u1E31\\u1E33\\u1E35\\u1E37\\u1E39\\u1E3B\\u1E3D\\u1E3F\\u1E41\\u1E43\\u1E45\\u1E47\\u1E49\\u1E4B\\u1E4D\\u1E4F\\u1E51\\u1E53\\u1E55\\u1E57\\u1E59\\u1E5B\\u1E5D\\u1E5F\\u1E61\\u1E63\\u1E65\\u1E67\\u1E69\\u1E6B\\u1E6D\\u1E6F\\u1E71\\u1E73\\u1E75\\u1E77\\u1E79\\u1E7B\\u1E7D\\u1E7F\\u1E81\\u1E83\\u1E85\\u1E87\\u1E89\\u1E8B\\u1E8D\\u1E8F\\u1E91\\u1E93\\u1E95-\\u1E9D\\u1E9F\\u1EA1\\u1EA3\\u1EA5\\u1EA7\\u1EA9\\u1EAB\\u1EAD\\u1EAF\\u1EB1\\u1EB3\\u1EB5\\u1EB7\\u1EB9\\u1EBB\\u1EBD\\u1EBF\\u1EC1\\u1EC3\\u1EC5\\u1EC7\\u1EC9\\u1ECB\\u1ECD\\u1ECF\\u1ED1\\u1ED3\\u1ED5\\u1ED7\\u1ED9\\u1EDB\\u1EDD\\u1EDF\\u1EE1\\u1EE3\\u1EE5\\u1EE7\\u1EE9\\u1EEB\\u1EED\\u1EEF\\u1EF1\\u1EF3\\u1EF5\\u1EF7\\u1EF9\\u1EFB\\u1EFD\\u1EFF-\\u1F07\\u1F10-\\u1F15\\u1F20-\\u1F27\\u1F30-\\u1F37\\u1F40-\\u1F45\\u1F50-\\u1F57\\u1F60-\\u1F67\\u1F70-\\u1F7D\\u1F80-\\u1F87\\u1F90-\\u1F97\\u1FA0-\\u1FA7\\u1FB0-\\u1FB4\\u1FB6\\u1FB7\\u1FBE\\u1FC2-\\u1FC4\\u1FC6\\u1FC7\\u1FD0-\\u1FD3\\u1FD6\\u1FD7\\u1FE0-\\u1FE7\\u1FF2-\\u1FF4\\u1FF6\\u1FF7\\u2071\\u207F\\u2090-\\u209C\\u210A\\u210E\\u210F\\u2113\\u212F\\u2134\\u2139\\u213C\\u213D\\u2146-\\u2149\\u214E\\u2170-\\u217F\\u2184\\u24D0-\\u24E9\\u2C30-\\u2C5E\\u2C61\\u2C65\\u2C66\\u2C68\\u2C6A\\u2C6C\\u2C71\\u2C73\\u2C74\\u2C76-\\u2C7D\\u2C81\\u2C83\\u2C85\\u2C87\\u2C89\\u2C8B\\u2C8D\\u2C8F\\u2C91\\u2C93\\u2C95\\u2C97\\u2C99\\u2C9B\\u2C9D\\u2C9F\\u2CA1\\u2CA3\\u2CA5\\u2CA7\\u2CA9\\u2CAB\\u2CAD\\u2CAF\\u2CB1\\u2CB3\\u2CB5\\u2CB7\\u2CB9\\u2CBB\\u2CBD\\u2CBF\\u2CC1\\u2CC3\\u2CC5\\u2CC7\\u2CC9\\u2CCB\\u2CCD\\u2CCF\\u2CD1\\u2CD3\\u2CD5\\u2CD7\\u2CD9\\u2CDB\\u2CDD\\u2CDF\\u2CE1\\u2CE3\\u2CE4\\u2CEC\\u2CEE\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\uA641\\uA643\\uA645\\uA647\\uA649\\uA64B\\uA64D\\uA64F\\uA651\\uA653\\uA655\\uA657\\uA659\\uA65B\\uA65D\\uA65F\\uA661\\uA663\\uA665\\uA667\\uA669\\uA66B\\uA66D\\uA681\\uA683\\uA685\\uA687\\uA689\\uA68B\\uA68D\\uA68F\\uA691\\uA693\\uA695\\uA697\\uA699\\uA69B-\\uA69D\\uA723\\uA725\\uA727\\uA729\\uA72B\\uA72D\\uA72F-\\uA731\\uA733\\uA735\\uA737\\uA739\\uA73B\\uA73D\\uA73F\\uA741\\uA743\\uA745\\uA747\\uA749\\uA74B\\uA74D\\uA74F\\uA751\\uA753\\uA755\\uA757\\uA759\\uA75B\\uA75D\\uA75F\\uA761\\uA763\\uA765\\uA767\\uA769\\uA76B\\uA76D\\uA76F-\\uA778\\uA77A\\uA77C\\uA77F\\uA781\\uA783\\uA785\\uA787\\uA78C\\uA78E\\uA791\\uA793-\\uA795\\uA797\\uA799\\uA79B\\uA79D\\uA79F\\uA7A1\\uA7A3\\uA7A5\\uA7A7\\uA7A9\\uA7AF\\uA7B5\\uA7B7\\uA7B9\\uA7F8-\\uA7FA\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABBF\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFF41-\\uFF5A',\n        'astral': '\\uD801[\\uDC28-\\uDC4F\\uDCD8-\\uDCFB]|\\uD803[\\uDCC0-\\uDCF2]|\\uD806[\\uDCC0-\\uDCDF]|\\uD81B[\\uDE60-\\uDE7F]|\\uD835[\\uDC1A-\\uDC33\\uDC4E-\\uDC54\\uDC56-\\uDC67\\uDC82-\\uDC9B\\uDCB6-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDCCF\\uDCEA-\\uDD03\\uDD1E-\\uDD37\\uDD52-\\uDD6B\\uDD86-\\uDD9F\\uDDBA-\\uDDD3\\uDDEE-\\uDE07\\uDE22-\\uDE3B\\uDE56-\\uDE6F\\uDE8A-\\uDEA5\\uDEC2-\\uDEDA\\uDEDC-\\uDEE1\\uDEFC-\\uDF14\\uDF16-\\uDF1B\\uDF36-\\uDF4E\\uDF50-\\uDF55\\uDF70-\\uDF88\\uDF8A-\\uDF8F\\uDFAA-\\uDFC2\\uDFC4-\\uDFC9\\uDFCB]|\\uD83A[\\uDD22-\\uDD43]'\n    },\n    {\n        'name': 'Noncharacter_Code_Point',\n        'bmp': '\\uFDD0-\\uFDEF\\uFFFE\\uFFFF',\n        'astral': '[\\uD83F\\uD87F\\uD8BF\\uD8FF\\uD93F\\uD97F\\uD9BF\\uD9FF\\uDA3F\\uDA7F\\uDABF\\uDAFF\\uDB3F\\uDB7F\\uDBBF\\uDBFF][\\uDFFE\\uDFFF]'\n    },\n    {\n        'name': 'Uppercase',\n        'bmp': 'A-Z\\xC0-\\xD6\\xD8-\\xDE\\u0100\\u0102\\u0104\\u0106\\u0108\\u010A\\u010C\\u010E\\u0110\\u0112\\u0114\\u0116\\u0118\\u011A\\u011C\\u011E\\u0120\\u0122\\u0124\\u0126\\u0128\\u012A\\u012C\\u012E\\u0130\\u0132\\u0134\\u0136\\u0139\\u013B\\u013D\\u013F\\u0141\\u0143\\u0145\\u0147\\u014A\\u014C\\u014E\\u0150\\u0152\\u0154\\u0156\\u0158\\u015A\\u015C\\u015E\\u0160\\u0162\\u0164\\u0166\\u0168\\u016A\\u016C\\u016E\\u0170\\u0172\\u0174\\u0176\\u0178\\u0179\\u017B\\u017D\\u0181\\u0182\\u0184\\u0186\\u0187\\u0189-\\u018B\\u018E-\\u0191\\u0193\\u0194\\u0196-\\u0198\\u019C\\u019D\\u019F\\u01A0\\u01A2\\u01A4\\u01A6\\u01A7\\u01A9\\u01AC\\u01AE\\u01AF\\u01B1-\\u01B3\\u01B5\\u01B7\\u01B8\\u01BC\\u01C4\\u01C7\\u01CA\\u01CD\\u01CF\\u01D1\\u01D3\\u01D5\\u01D7\\u01D9\\u01DB\\u01DE\\u01E0\\u01E2\\u01E4\\u01E6\\u01E8\\u01EA\\u01EC\\u01EE\\u01F1\\u01F4\\u01F6-\\u01F8\\u01FA\\u01FC\\u01FE\\u0200\\u0202\\u0204\\u0206\\u0208\\u020A\\u020C\\u020E\\u0210\\u0212\\u0214\\u0216\\u0218\\u021A\\u021C\\u021E\\u0220\\u0222\\u0224\\u0226\\u0228\\u022A\\u022C\\u022E\\u0230\\u0232\\u023A\\u023B\\u023D\\u023E\\u0241\\u0243-\\u0246\\u0248\\u024A\\u024C\\u024E\\u0370\\u0372\\u0376\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E\\u038F\\u0391-\\u03A1\\u03A3-\\u03AB\\u03CF\\u03D2-\\u03D4\\u03D8\\u03DA\\u03DC\\u03DE\\u03E0\\u03E2\\u03E4\\u03E6\\u03E8\\u03EA\\u03EC\\u03EE\\u03F4\\u03F7\\u03F9\\u03FA\\u03FD-\\u042F\\u0460\\u0462\\u0464\\u0466\\u0468\\u046A\\u046C\\u046E\\u0470\\u0472\\u0474\\u0476\\u0478\\u047A\\u047C\\u047E\\u0480\\u048A\\u048C\\u048E\\u0490\\u0492\\u0494\\u0496\\u0498\\u049A\\u049C\\u049E\\u04A0\\u04A2\\u04A4\\u04A6\\u04A8\\u04AA\\u04AC\\u04AE\\u04B0\\u04B2\\u04B4\\u04B6\\u04B8\\u04BA\\u04BC\\u04BE\\u04C0\\u04C1\\u04C3\\u04C5\\u04C7\\u04C9\\u04CB\\u04CD\\u04D0\\u04D2\\u04D4\\u04D6\\u04D8\\u04DA\\u04DC\\u04DE\\u04E0\\u04E2\\u04E4\\u04E6\\u04E8\\u04EA\\u04EC\\u04EE\\u04F0\\u04F2\\u04F4\\u04F6\\u04F8\\u04FA\\u04FC\\u04FE\\u0500\\u0502\\u0504\\u0506\\u0508\\u050A\\u050C\\u050E\\u0510\\u0512\\u0514\\u0516\\u0518\\u051A\\u051C\\u051E\\u0520\\u0522\\u0524\\u0526\\u0528\\u052A\\u052C\\u052E\\u0531-\\u0556\\u10A0-\\u10C5\\u10C7\\u10CD\\u13A0-\\u13F5\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u1E00\\u1E02\\u1E04\\u1E06\\u1E08\\u1E0A\\u1E0C\\u1E0E\\u1E10\\u1E12\\u1E14\\u1E16\\u1E18\\u1E1A\\u1E1C\\u1E1E\\u1E20\\u1E22\\u1E24\\u1E26\\u1E28\\u1E2A\\u1E2C\\u1E2E\\u1E30\\u1E32\\u1E34\\u1E36\\u1E38\\u1E3A\\u1E3C\\u1E3E\\u1E40\\u1E42\\u1E44\\u1E46\\u1E48\\u1E4A\\u1E4C\\u1E4E\\u1E50\\u1E52\\u1E54\\u1E56\\u1E58\\u1E5A\\u1E5C\\u1E5E\\u1E60\\u1E62\\u1E64\\u1E66\\u1E68\\u1E6A\\u1E6C\\u1E6E\\u1E70\\u1E72\\u1E74\\u1E76\\u1E78\\u1E7A\\u1E7C\\u1E7E\\u1E80\\u1E82\\u1E84\\u1E86\\u1E88\\u1E8A\\u1E8C\\u1E8E\\u1E90\\u1E92\\u1E94\\u1E9E\\u1EA0\\u1EA2\\u1EA4\\u1EA6\\u1EA8\\u1EAA\\u1EAC\\u1EAE\\u1EB0\\u1EB2\\u1EB4\\u1EB6\\u1EB8\\u1EBA\\u1EBC\\u1EBE\\u1EC0\\u1EC2\\u1EC4\\u1EC6\\u1EC8\\u1ECA\\u1ECC\\u1ECE\\u1ED0\\u1ED2\\u1ED4\\u1ED6\\u1ED8\\u1EDA\\u1EDC\\u1EDE\\u1EE0\\u1EE2\\u1EE4\\u1EE6\\u1EE8\\u1EEA\\u1EEC\\u1EEE\\u1EF0\\u1EF2\\u1EF4\\u1EF6\\u1EF8\\u1EFA\\u1EFC\\u1EFE\\u1F08-\\u1F0F\\u1F18-\\u1F1D\\u1F28-\\u1F2F\\u1F38-\\u1F3F\\u1F48-\\u1F4D\\u1F59\\u1F5B\\u1F5D\\u1F5F\\u1F68-\\u1F6F\\u1FB8-\\u1FBB\\u1FC8-\\u1FCB\\u1FD8-\\u1FDB\\u1FE8-\\u1FEC\\u1FF8-\\u1FFB\\u2102\\u2107\\u210B-\\u210D\\u2110-\\u2112\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u2130-\\u2133\\u213E\\u213F\\u2145\\u2160-\\u216F\\u2183\\u24B6-\\u24CF\\u2C00-\\u2C2E\\u2C60\\u2C62-\\u2C64\\u2C67\\u2C69\\u2C6B\\u2C6D-\\u2C70\\u2C72\\u2C75\\u2C7E-\\u2C80\\u2C82\\u2C84\\u2C86\\u2C88\\u2C8A\\u2C8C\\u2C8E\\u2C90\\u2C92\\u2C94\\u2C96\\u2C98\\u2C9A\\u2C9C\\u2C9E\\u2CA0\\u2CA2\\u2CA4\\u2CA6\\u2CA8\\u2CAA\\u2CAC\\u2CAE\\u2CB0\\u2CB2\\u2CB4\\u2CB6\\u2CB8\\u2CBA\\u2CBC\\u2CBE\\u2CC0\\u2CC2\\u2CC4\\u2CC6\\u2CC8\\u2CCA\\u2CCC\\u2CCE\\u2CD0\\u2CD2\\u2CD4\\u2CD6\\u2CD8\\u2CDA\\u2CDC\\u2CDE\\u2CE0\\u2CE2\\u2CEB\\u2CED\\u2CF2\\uA640\\uA642\\uA644\\uA646\\uA648\\uA64A\\uA64C\\uA64E\\uA650\\uA652\\uA654\\uA656\\uA658\\uA65A\\uA65C\\uA65E\\uA660\\uA662\\uA664\\uA666\\uA668\\uA66A\\uA66C\\uA680\\uA682\\uA684\\uA686\\uA688\\uA68A\\uA68C\\uA68E\\uA690\\uA692\\uA694\\uA696\\uA698\\uA69A\\uA722\\uA724\\uA726\\uA728\\uA72A\\uA72C\\uA72E\\uA732\\uA734\\uA736\\uA738\\uA73A\\uA73C\\uA73E\\uA740\\uA742\\uA744\\uA746\\uA748\\uA74A\\uA74C\\uA74E\\uA750\\uA752\\uA754\\uA756\\uA758\\uA75A\\uA75C\\uA75E\\uA760\\uA762\\uA764\\uA766\\uA768\\uA76A\\uA76C\\uA76E\\uA779\\uA77B\\uA77D\\uA77E\\uA780\\uA782\\uA784\\uA786\\uA78B\\uA78D\\uA790\\uA792\\uA796\\uA798\\uA79A\\uA79C\\uA79E\\uA7A0\\uA7A2\\uA7A4\\uA7A6\\uA7A8\\uA7AA-\\uA7AE\\uA7B0-\\uA7B4\\uA7B6\\uA7B8\\uFF21-\\uFF3A',\n        'astral': '\\uD801[\\uDC00-\\uDC27\\uDCB0-\\uDCD3]|\\uD803[\\uDC80-\\uDCB2]|\\uD806[\\uDCA0-\\uDCBF]|\\uD81B[\\uDE40-\\uDE5F]|\\uD835[\\uDC00-\\uDC19\\uDC34-\\uDC4D\\uDC68-\\uDC81\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB5\\uDCD0-\\uDCE9\\uDD04\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD38\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD6C-\\uDD85\\uDDA0-\\uDDB9\\uDDD4-\\uDDED\\uDE08-\\uDE21\\uDE3C-\\uDE55\\uDE70-\\uDE89\\uDEA8-\\uDEC0\\uDEE2-\\uDEFA\\uDF1C-\\uDF34\\uDF56-\\uDF6E\\uDF90-\\uDFA8\\uDFCA]|\\uD83A[\\uDD00-\\uDD21]|\\uD83C[\\uDD30-\\uDD49\\uDD50-\\uDD69\\uDD70-\\uDD89]'\n    },\n    {\n        'name': 'White_Space',\n        'bmp': '\\t-\\r \\x85\\xA0\\u1680\\u2000-\\u200A\\u2028\\u2029\\u202F\\u205F\\u3000'\n    }\n];\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/xregexp/tools/output/properties.js\n// module id = 444\n// module chunks = 88 89","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime-corejs2/helpers/interopRequireDefault\");\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\n\nvar _scripts = _interopRequireDefault(require(\"../../tools/output/scripts\"));\n\n/*!\n * XRegExp Unicode Scripts 4.2.4\n * <xregexp.com>\n * Steven Levithan (c) 2010-present MIT License\n * Unicode data by Mathias Bynens <mathiasbynens.be>\n */\nvar _default = function _default(XRegExp) {\n  /**\n   * Adds support for all Unicode scripts. E.g., `\\p{Latin}`. Token names are case insensitive,\n   * and any spaces, hyphens, and underscores are ignored.\n   *\n   * Uses Unicode 11.0.0.\n   *\n   * @requires XRegExp, Unicode Base\n   */\n  if (!XRegExp.addUnicodeData) {\n    throw new ReferenceError('Unicode Base must be loaded before Unicode Scripts');\n  }\n\n  XRegExp.addUnicodeData(_scripts.default);\n};\n\nexports.default = _default;\nmodule.exports = exports[\"default\"];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/xregexp/lib/addons/unicode-scripts.js\n// module id = 445\n// module chunks = 88 89","module.exports = [\n    {\n        'name': 'Adlam',\n        'astral': '\\uD83A[\\uDD00-\\uDD4A\\uDD50-\\uDD59\\uDD5E\\uDD5F]'\n    },\n    {\n        'name': 'Ahom',\n        'astral': '\\uD805[\\uDF00-\\uDF1A\\uDF1D-\\uDF2B\\uDF30-\\uDF3F]'\n    },\n    {\n        'name': 'Anatolian_Hieroglyphs',\n        'astral': '\\uD811[\\uDC00-\\uDE46]'\n    },\n    {\n        'name': 'Arabic',\n        'bmp': '\\u0600-\\u0604\\u0606-\\u060B\\u060D-\\u061A\\u061C\\u061E\\u0620-\\u063F\\u0641-\\u064A\\u0656-\\u066F\\u0671-\\u06DC\\u06DE-\\u06FF\\u0750-\\u077F\\u08A0-\\u08B4\\u08B6-\\u08BD\\u08D3-\\u08E1\\u08E3-\\u08FF\\uFB50-\\uFBC1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFD\\uFE70-\\uFE74\\uFE76-\\uFEFC',\n        'astral': '\\uD803[\\uDE60-\\uDE7E]|\\uD83B[\\uDE00-\\uDE03\\uDE05-\\uDE1F\\uDE21\\uDE22\\uDE24\\uDE27\\uDE29-\\uDE32\\uDE34-\\uDE37\\uDE39\\uDE3B\\uDE42\\uDE47\\uDE49\\uDE4B\\uDE4D-\\uDE4F\\uDE51\\uDE52\\uDE54\\uDE57\\uDE59\\uDE5B\\uDE5D\\uDE5F\\uDE61\\uDE62\\uDE64\\uDE67-\\uDE6A\\uDE6C-\\uDE72\\uDE74-\\uDE77\\uDE79-\\uDE7C\\uDE7E\\uDE80-\\uDE89\\uDE8B-\\uDE9B\\uDEA1-\\uDEA3\\uDEA5-\\uDEA9\\uDEAB-\\uDEBB\\uDEF0\\uDEF1]'\n    },\n    {\n        'name': 'Armenian',\n        'bmp': '\\u0531-\\u0556\\u0559-\\u0588\\u058A\\u058D-\\u058F\\uFB13-\\uFB17'\n    },\n    {\n        'name': 'Avestan',\n        'astral': '\\uD802[\\uDF00-\\uDF35\\uDF39-\\uDF3F]'\n    },\n    {\n        'name': 'Balinese',\n        'bmp': '\\u1B00-\\u1B4B\\u1B50-\\u1B7C'\n    },\n    {\n        'name': 'Bamum',\n        'bmp': '\\uA6A0-\\uA6F7',\n        'astral': '\\uD81A[\\uDC00-\\uDE38]'\n    },\n    {\n        'name': 'Bassa_Vah',\n        'astral': '\\uD81A[\\uDED0-\\uDEED\\uDEF0-\\uDEF5]'\n    },\n    {\n        'name': 'Batak',\n        'bmp': '\\u1BC0-\\u1BF3\\u1BFC-\\u1BFF'\n    },\n    {\n        'name': 'Bengali',\n        'bmp': '\\u0980-\\u0983\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BC-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CE\\u09D7\\u09DC\\u09DD\\u09DF-\\u09E3\\u09E6-\\u09FE'\n    },\n    {\n        'name': 'Bhaiksuki',\n        'astral': '\\uD807[\\uDC00-\\uDC08\\uDC0A-\\uDC36\\uDC38-\\uDC45\\uDC50-\\uDC6C]'\n    },\n    {\n        'name': 'Bopomofo',\n        'bmp': '\\u02EA\\u02EB\\u3105-\\u312F\\u31A0-\\u31BA'\n    },\n    {\n        'name': 'Brahmi',\n        'astral': '\\uD804[\\uDC00-\\uDC4D\\uDC52-\\uDC6F\\uDC7F]'\n    },\n    {\n        'name': 'Braille',\n        'bmp': '\\u2800-\\u28FF'\n    },\n    {\n        'name': 'Buginese',\n        'bmp': '\\u1A00-\\u1A1B\\u1A1E\\u1A1F'\n    },\n    {\n        'name': 'Buhid',\n        'bmp': '\\u1740-\\u1753'\n    },\n    {\n        'name': 'Canadian_Aboriginal',\n        'bmp': '\\u1400-\\u167F\\u18B0-\\u18F5'\n    },\n    {\n        'name': 'Carian',\n        'astral': '\\uD800[\\uDEA0-\\uDED0]'\n    },\n    {\n        'name': 'Caucasian_Albanian',\n        'astral': '\\uD801[\\uDD30-\\uDD63\\uDD6F]'\n    },\n    {\n        'name': 'Chakma',\n        'astral': '\\uD804[\\uDD00-\\uDD34\\uDD36-\\uDD46]'\n    },\n    {\n        'name': 'Cham',\n        'bmp': '\\uAA00-\\uAA36\\uAA40-\\uAA4D\\uAA50-\\uAA59\\uAA5C-\\uAA5F'\n    },\n    {\n        'name': 'Cherokee',\n        'bmp': '\\u13A0-\\u13F5\\u13F8-\\u13FD\\uAB70-\\uABBF'\n    },\n    {\n        'name': 'Common',\n        'bmp': '\\0-@\\\\[-`\\\\{-\\xA9\\xAB-\\xB9\\xBB-\\xBF\\xD7\\xF7\\u02B9-\\u02DF\\u02E5-\\u02E9\\u02EC-\\u02FF\\u0374\\u037E\\u0385\\u0387\\u0589\\u0605\\u060C\\u061B\\u061F\\u0640\\u06DD\\u08E2\\u0964\\u0965\\u0E3F\\u0FD5-\\u0FD8\\u10FB\\u16EB-\\u16ED\\u1735\\u1736\\u1802\\u1803\\u1805\\u1CD3\\u1CE1\\u1CE9-\\u1CEC\\u1CEE-\\u1CF3\\u1CF5-\\u1CF7\\u2000-\\u200B\\u200E-\\u2064\\u2066-\\u2070\\u2074-\\u207E\\u2080-\\u208E\\u20A0-\\u20BF\\u2100-\\u2125\\u2127-\\u2129\\u212C-\\u2131\\u2133-\\u214D\\u214F-\\u215F\\u2189-\\u218B\\u2190-\\u2426\\u2440-\\u244A\\u2460-\\u27FF\\u2900-\\u2B73\\u2B76-\\u2B95\\u2B98-\\u2BC8\\u2BCA-\\u2BFE\\u2E00-\\u2E4E\\u2FF0-\\u2FFB\\u3000-\\u3004\\u3006\\u3008-\\u3020\\u3030-\\u3037\\u303C-\\u303F\\u309B\\u309C\\u30A0\\u30FB\\u30FC\\u3190-\\u319F\\u31C0-\\u31E3\\u3220-\\u325F\\u327F-\\u32CF\\u3358-\\u33FF\\u4DC0-\\u4DFF\\uA700-\\uA721\\uA788-\\uA78A\\uA830-\\uA839\\uA92E\\uA9CF\\uAB5B\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE66\\uFE68-\\uFE6B\\uFEFF\\uFF01-\\uFF20\\uFF3B-\\uFF40\\uFF5B-\\uFF65\\uFF70\\uFF9E\\uFF9F\\uFFE0-\\uFFE6\\uFFE8-\\uFFEE\\uFFF9-\\uFFFD',\n        'astral': '\\uD800[\\uDD00-\\uDD02\\uDD07-\\uDD33\\uDD37-\\uDD3F\\uDD90-\\uDD9B\\uDDD0-\\uDDFC\\uDEE1-\\uDEFB]|\\uD82F[\\uDCA0-\\uDCA3]|\\uD834[\\uDC00-\\uDCF5\\uDD00-\\uDD26\\uDD29-\\uDD66\\uDD6A-\\uDD7A\\uDD83\\uDD84\\uDD8C-\\uDDA9\\uDDAE-\\uDDE8\\uDEE0-\\uDEF3\\uDF00-\\uDF56\\uDF60-\\uDF78]|\\uD835[\\uDC00-\\uDC54\\uDC56-\\uDC9C\\uDC9E\\uDC9F\\uDCA2\\uDCA5\\uDCA6\\uDCA9-\\uDCAC\\uDCAE-\\uDCB9\\uDCBB\\uDCBD-\\uDCC3\\uDCC5-\\uDD05\\uDD07-\\uDD0A\\uDD0D-\\uDD14\\uDD16-\\uDD1C\\uDD1E-\\uDD39\\uDD3B-\\uDD3E\\uDD40-\\uDD44\\uDD46\\uDD4A-\\uDD50\\uDD52-\\uDEA5\\uDEA8-\\uDFCB\\uDFCE-\\uDFFF]|\\uD83B[\\uDC71-\\uDCB4]|\\uD83C[\\uDC00-\\uDC2B\\uDC30-\\uDC93\\uDCA0-\\uDCAE\\uDCB1-\\uDCBF\\uDCC1-\\uDCCF\\uDCD1-\\uDCF5\\uDD00-\\uDD0C\\uDD10-\\uDD6B\\uDD70-\\uDDAC\\uDDE6-\\uDDFF\\uDE01\\uDE02\\uDE10-\\uDE3B\\uDE40-\\uDE48\\uDE50\\uDE51\\uDE60-\\uDE65\\uDF00-\\uDFFF]|\\uD83D[\\uDC00-\\uDED4\\uDEE0-\\uDEEC\\uDEF0-\\uDEF9\\uDF00-\\uDF73\\uDF80-\\uDFD8]|\\uD83E[\\uDC00-\\uDC0B\\uDC10-\\uDC47\\uDC50-\\uDC59\\uDC60-\\uDC87\\uDC90-\\uDCAD\\uDD00-\\uDD0B\\uDD10-\\uDD3E\\uDD40-\\uDD70\\uDD73-\\uDD76\\uDD7A\\uDD7C-\\uDDA2\\uDDB0-\\uDDB9\\uDDC0-\\uDDC2\\uDDD0-\\uDDFF\\uDE60-\\uDE6D]|\\uDB40[\\uDC01\\uDC20-\\uDC7F]'\n    },\n    {\n        'name': 'Coptic',\n        'bmp': '\\u03E2-\\u03EF\\u2C80-\\u2CF3\\u2CF9-\\u2CFF'\n    },\n    {\n        'name': 'Cuneiform',\n        'astral': '\\uD808[\\uDC00-\\uDF99]|\\uD809[\\uDC00-\\uDC6E\\uDC70-\\uDC74\\uDC80-\\uDD43]'\n    },\n    {\n        'name': 'Cypriot',\n        'astral': '\\uD802[\\uDC00-\\uDC05\\uDC08\\uDC0A-\\uDC35\\uDC37\\uDC38\\uDC3C\\uDC3F]'\n    },\n    {\n        'name': 'Cyrillic',\n        'bmp': '\\u0400-\\u0484\\u0487-\\u052F\\u1C80-\\u1C88\\u1D2B\\u1D78\\u2DE0-\\u2DFF\\uA640-\\uA69F\\uFE2E\\uFE2F'\n    },\n    {\n        'name': 'Deseret',\n        'astral': '\\uD801[\\uDC00-\\uDC4F]'\n    },\n    {\n        'name': 'Devanagari',\n        'bmp': '\\u0900-\\u0950\\u0953-\\u0963\\u0966-\\u097F\\uA8E0-\\uA8FF'\n    },\n    {\n        'name': 'Dogra',\n        'astral': '\\uD806[\\uDC00-\\uDC3B]'\n    },\n    {\n        'name': 'Duployan',\n        'astral': '\\uD82F[\\uDC00-\\uDC6A\\uDC70-\\uDC7C\\uDC80-\\uDC88\\uDC90-\\uDC99\\uDC9C-\\uDC9F]'\n    },\n    {\n        'name': 'Egyptian_Hieroglyphs',\n        'astral': '\\uD80C[\\uDC00-\\uDFFF]|\\uD80D[\\uDC00-\\uDC2E]'\n    },\n    {\n        'name': 'Elbasan',\n        'astral': '\\uD801[\\uDD00-\\uDD27]'\n    },\n    {\n        'name': 'Ethiopic',\n        'bmp': '\\u1200-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u135D-\\u137C\\u1380-\\u1399\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E'\n    },\n    {\n        'name': 'Georgian',\n        'bmp': '\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u10FF\\u1C90-\\u1CBA\\u1CBD-\\u1CBF\\u2D00-\\u2D25\\u2D27\\u2D2D'\n    },\n    {\n        'name': 'Glagolitic',\n        'bmp': '\\u2C00-\\u2C2E\\u2C30-\\u2C5E',\n        'astral': '\\uD838[\\uDC00-\\uDC06\\uDC08-\\uDC18\\uDC1B-\\uDC21\\uDC23\\uDC24\\uDC26-\\uDC2A]'\n    },\n    {\n        'name': 'Gothic',\n        'astral': '\\uD800[\\uDF30-\\uDF4A]'\n    },\n    {\n        'name': 'Grantha',\n        'astral': '\\uD804[\\uDF00-\\uDF03\\uDF05-\\uDF0C\\uDF0F\\uDF10\\uDF13-\\uDF28\\uDF2A-\\uDF30\\uDF32\\uDF33\\uDF35-\\uDF39\\uDF3C-\\uDF44\\uDF47\\uDF48\\uDF4B-\\uDF4D\\uDF50\\uDF57\\uDF5D-\\uDF63\\uDF66-\\uDF6C\\uDF70-\\uDF74]'\n    },\n    {\n        'name': 'Greek',\n        'bmp': '\\u0370-\\u0373\\u0375-\\u0377\\u037A-\\u037D\\u037F\\u0384\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03E1\\u03F0-\\u03FF\\u1D26-\\u1D2A\\u1D5D-\\u1D61\\u1D66-\\u1D6A\\u1DBF\\u1F00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FC4\\u1FC6-\\u1FD3\\u1FD6-\\u1FDB\\u1FDD-\\u1FEF\\u1FF2-\\u1FF4\\u1FF6-\\u1FFE\\u2126\\uAB65',\n        'astral': '\\uD800[\\uDD40-\\uDD8E\\uDDA0]|\\uD834[\\uDE00-\\uDE45]'\n    },\n    {\n        'name': 'Gujarati',\n        'bmp': '\\u0A81-\\u0A83\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABC-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AD0\\u0AE0-\\u0AE3\\u0AE6-\\u0AF1\\u0AF9-\\u0AFF'\n    },\n    {\n        'name': 'Gunjala_Gondi',\n        'astral': '\\uD807[\\uDD60-\\uDD65\\uDD67\\uDD68\\uDD6A-\\uDD8E\\uDD90\\uDD91\\uDD93-\\uDD98\\uDDA0-\\uDDA9]'\n    },\n    {\n        'name': 'Gurmukhi',\n        'bmp': '\\u0A01-\\u0A03\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A59-\\u0A5C\\u0A5E\\u0A66-\\u0A76'\n    },\n    {\n        'name': 'Han',\n        'bmp': '\\u2E80-\\u2E99\\u2E9B-\\u2EF3\\u2F00-\\u2FD5\\u3005\\u3007\\u3021-\\u3029\\u3038-\\u303B\\u3400-\\u4DB5\\u4E00-\\u9FEF\\uF900-\\uFA6D\\uFA70-\\uFAD9',\n        'astral': '[\\uD840-\\uD868\\uD86A-\\uD86C\\uD86F-\\uD872\\uD874-\\uD879][\\uDC00-\\uDFFF]|\\uD869[\\uDC00-\\uDED6\\uDF00-\\uDFFF]|\\uD86D[\\uDC00-\\uDF34\\uDF40-\\uDFFF]|\\uD86E[\\uDC00-\\uDC1D\\uDC20-\\uDFFF]|\\uD873[\\uDC00-\\uDEA1\\uDEB0-\\uDFFF]|\\uD87A[\\uDC00-\\uDFE0]|\\uD87E[\\uDC00-\\uDE1D]'\n    },\n    {\n        'name': 'Hangul',\n        'bmp': '\\u1100-\\u11FF\\u302E\\u302F\\u3131-\\u318E\\u3200-\\u321E\\u3260-\\u327E\\uA960-\\uA97C\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uFFA0-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC'\n    },\n    {\n        'name': 'Hanifi_Rohingya',\n        'astral': '\\uD803[\\uDD00-\\uDD27\\uDD30-\\uDD39]'\n    },\n    {\n        'name': 'Hanunoo',\n        'bmp': '\\u1720-\\u1734'\n    },\n    {\n        'name': 'Hatran',\n        'astral': '\\uD802[\\uDCE0-\\uDCF2\\uDCF4\\uDCF5\\uDCFB-\\uDCFF]'\n    },\n    {\n        'name': 'Hebrew',\n        'bmp': '\\u0591-\\u05C7\\u05D0-\\u05EA\\u05EF-\\u05F4\\uFB1D-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFB4F'\n    },\n    {\n        'name': 'Hiragana',\n        'bmp': '\\u3041-\\u3096\\u309D-\\u309F',\n        'astral': '\\uD82C[\\uDC01-\\uDD1E]|\\uD83C\\uDE00'\n    },\n    {\n        'name': 'Imperial_Aramaic',\n        'astral': '\\uD802[\\uDC40-\\uDC55\\uDC57-\\uDC5F]'\n    },\n    {\n        'name': 'Inherited',\n        'bmp': '\\u0300-\\u036F\\u0485\\u0486\\u064B-\\u0655\\u0670\\u0951\\u0952\\u1AB0-\\u1ABE\\u1CD0-\\u1CD2\\u1CD4-\\u1CE0\\u1CE2-\\u1CE8\\u1CED\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DF9\\u1DFB-\\u1DFF\\u200C\\u200D\\u20D0-\\u20F0\\u302A-\\u302D\\u3099\\u309A\\uFE00-\\uFE0F\\uFE20-\\uFE2D',\n        'astral': '\\uD800[\\uDDFD\\uDEE0]|\\uD804\\uDF3B|\\uD834[\\uDD67-\\uDD69\\uDD7B-\\uDD82\\uDD85-\\uDD8B\\uDDAA-\\uDDAD]|\\uDB40[\\uDD00-\\uDDEF]'\n    },\n    {\n        'name': 'Inscriptional_Pahlavi',\n        'astral': '\\uD802[\\uDF60-\\uDF72\\uDF78-\\uDF7F]'\n    },\n    {\n        'name': 'Inscriptional_Parthian',\n        'astral': '\\uD802[\\uDF40-\\uDF55\\uDF58-\\uDF5F]'\n    },\n    {\n        'name': 'Javanese',\n        'bmp': '\\uA980-\\uA9CD\\uA9D0-\\uA9D9\\uA9DE\\uA9DF'\n    },\n    {\n        'name': 'Kaithi',\n        'astral': '\\uD804[\\uDC80-\\uDCC1\\uDCCD]'\n    },\n    {\n        'name': 'Kannada',\n        'bmp': '\\u0C80-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBC-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CDE\\u0CE0-\\u0CE3\\u0CE6-\\u0CEF\\u0CF1\\u0CF2'\n    },\n    {\n        'name': 'Katakana',\n        'bmp': '\\u30A1-\\u30FA\\u30FD-\\u30FF\\u31F0-\\u31FF\\u32D0-\\u32FE\\u3300-\\u3357\\uFF66-\\uFF6F\\uFF71-\\uFF9D',\n        'astral': '\\uD82C\\uDC00'\n    },\n    {\n        'name': 'Kayah_Li',\n        'bmp': '\\uA900-\\uA92D\\uA92F'\n    },\n    {\n        'name': 'Kharoshthi',\n        'astral': '\\uD802[\\uDE00-\\uDE03\\uDE05\\uDE06\\uDE0C-\\uDE13\\uDE15-\\uDE17\\uDE19-\\uDE35\\uDE38-\\uDE3A\\uDE3F-\\uDE48\\uDE50-\\uDE58]'\n    },\n    {\n        'name': 'Khmer',\n        'bmp': '\\u1780-\\u17DD\\u17E0-\\u17E9\\u17F0-\\u17F9\\u19E0-\\u19FF'\n    },\n    {\n        'name': 'Khojki',\n        'astral': '\\uD804[\\uDE00-\\uDE11\\uDE13-\\uDE3E]'\n    },\n    {\n        'name': 'Khudawadi',\n        'astral': '\\uD804[\\uDEB0-\\uDEEA\\uDEF0-\\uDEF9]'\n    },\n    {\n        'name': 'Lao',\n        'bmp': '\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB9\\u0EBB-\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EC8-\\u0ECD\\u0ED0-\\u0ED9\\u0EDC-\\u0EDF'\n    },\n    {\n        'name': 'Latin',\n        'bmp': 'A-Za-z\\xAA\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02B8\\u02E0-\\u02E4\\u1D00-\\u1D25\\u1D2C-\\u1D5C\\u1D62-\\u1D65\\u1D6B-\\u1D77\\u1D79-\\u1DBE\\u1E00-\\u1EFF\\u2071\\u207F\\u2090-\\u209C\\u212A\\u212B\\u2132\\u214E\\u2160-\\u2188\\u2C60-\\u2C7F\\uA722-\\uA787\\uA78B-\\uA7B9\\uA7F7-\\uA7FF\\uAB30-\\uAB5A\\uAB5C-\\uAB64\\uFB00-\\uFB06\\uFF21-\\uFF3A\\uFF41-\\uFF5A'\n    },\n    {\n        'name': 'Lepcha',\n        'bmp': '\\u1C00-\\u1C37\\u1C3B-\\u1C49\\u1C4D-\\u1C4F'\n    },\n    {\n        'name': 'Limbu',\n        'bmp': '\\u1900-\\u191E\\u1920-\\u192B\\u1930-\\u193B\\u1940\\u1944-\\u194F'\n    },\n    {\n        'name': 'Linear_A',\n        'astral': '\\uD801[\\uDE00-\\uDF36\\uDF40-\\uDF55\\uDF60-\\uDF67]'\n    },\n    {\n        'name': 'Linear_B',\n        'astral': '\\uD800[\\uDC00-\\uDC0B\\uDC0D-\\uDC26\\uDC28-\\uDC3A\\uDC3C\\uDC3D\\uDC3F-\\uDC4D\\uDC50-\\uDC5D\\uDC80-\\uDCFA]'\n    },\n    {\n        'name': 'Lisu',\n        'bmp': '\\uA4D0-\\uA4FF'\n    },\n    {\n        'name': 'Lycian',\n        'astral': '\\uD800[\\uDE80-\\uDE9C]'\n    },\n    {\n        'name': 'Lydian',\n        'astral': '\\uD802[\\uDD20-\\uDD39\\uDD3F]'\n    },\n    {\n        'name': 'Mahajani',\n        'astral': '\\uD804[\\uDD50-\\uDD76]'\n    },\n    {\n        'name': 'Makasar',\n        'astral': '\\uD807[\\uDEE0-\\uDEF8]'\n    },\n    {\n        'name': 'Malayalam',\n        'bmp': '\\u0D00-\\u0D03\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4F\\u0D54-\\u0D63\\u0D66-\\u0D7F'\n    },\n    {\n        'name': 'Mandaic',\n        'bmp': '\\u0840-\\u085B\\u085E'\n    },\n    {\n        'name': 'Manichaean',\n        'astral': '\\uD802[\\uDEC0-\\uDEE6\\uDEEB-\\uDEF6]'\n    },\n    {\n        'name': 'Marchen',\n        'astral': '\\uD807[\\uDC70-\\uDC8F\\uDC92-\\uDCA7\\uDCA9-\\uDCB6]'\n    },\n    {\n        'name': 'Masaram_Gondi',\n        'astral': '\\uD807[\\uDD00-\\uDD06\\uDD08\\uDD09\\uDD0B-\\uDD36\\uDD3A\\uDD3C\\uDD3D\\uDD3F-\\uDD47\\uDD50-\\uDD59]'\n    },\n    {\n        'name': 'Medefaidrin',\n        'astral': '\\uD81B[\\uDE40-\\uDE9A]'\n    },\n    {\n        'name': 'Meetei_Mayek',\n        'bmp': '\\uAAE0-\\uAAF6\\uABC0-\\uABED\\uABF0-\\uABF9'\n    },\n    {\n        'name': 'Mende_Kikakui',\n        'astral': '\\uD83A[\\uDC00-\\uDCC4\\uDCC7-\\uDCD6]'\n    },\n    {\n        'name': 'Meroitic_Cursive',\n        'astral': '\\uD802[\\uDDA0-\\uDDB7\\uDDBC-\\uDDCF\\uDDD2-\\uDDFF]'\n    },\n    {\n        'name': 'Meroitic_Hieroglyphs',\n        'astral': '\\uD802[\\uDD80-\\uDD9F]'\n    },\n    {\n        'name': 'Miao',\n        'astral': '\\uD81B[\\uDF00-\\uDF44\\uDF50-\\uDF7E\\uDF8F-\\uDF9F]'\n    },\n    {\n        'name': 'Modi',\n        'astral': '\\uD805[\\uDE00-\\uDE44\\uDE50-\\uDE59]'\n    },\n    {\n        'name': 'Mongolian',\n        'bmp': '\\u1800\\u1801\\u1804\\u1806-\\u180E\\u1810-\\u1819\\u1820-\\u1878\\u1880-\\u18AA',\n        'astral': '\\uD805[\\uDE60-\\uDE6C]'\n    },\n    {\n        'name': 'Mro',\n        'astral': '\\uD81A[\\uDE40-\\uDE5E\\uDE60-\\uDE69\\uDE6E\\uDE6F]'\n    },\n    {\n        'name': 'Multani',\n        'astral': '\\uD804[\\uDE80-\\uDE86\\uDE88\\uDE8A-\\uDE8D\\uDE8F-\\uDE9D\\uDE9F-\\uDEA9]'\n    },\n    {\n        'name': 'Myanmar',\n        'bmp': '\\u1000-\\u109F\\uA9E0-\\uA9FE\\uAA60-\\uAA7F'\n    },\n    {\n        'name': 'Nabataean',\n        'astral': '\\uD802[\\uDC80-\\uDC9E\\uDCA7-\\uDCAF]'\n    },\n    {\n        'name': 'New_Tai_Lue',\n        'bmp': '\\u1980-\\u19AB\\u19B0-\\u19C9\\u19D0-\\u19DA\\u19DE\\u19DF'\n    },\n    {\n        'name': 'Newa',\n        'astral': '\\uD805[\\uDC00-\\uDC59\\uDC5B\\uDC5D\\uDC5E]'\n    },\n    {\n        'name': 'Nko',\n        'bmp': '\\u07C0-\\u07FA\\u07FD-\\u07FF'\n    },\n    {\n        'name': 'Nushu',\n        'astral': '\\uD81B\\uDFE1|\\uD82C[\\uDD70-\\uDEFB]'\n    },\n    {\n        'name': 'Ogham',\n        'bmp': '\\u1680-\\u169C'\n    },\n    {\n        'name': 'Ol_Chiki',\n        'bmp': '\\u1C50-\\u1C7F'\n    },\n    {\n        'name': 'Old_Hungarian',\n        'astral': '\\uD803[\\uDC80-\\uDCB2\\uDCC0-\\uDCF2\\uDCFA-\\uDCFF]'\n    },\n    {\n        'name': 'Old_Italic',\n        'astral': '\\uD800[\\uDF00-\\uDF23\\uDF2D-\\uDF2F]'\n    },\n    {\n        'name': 'Old_North_Arabian',\n        'astral': '\\uD802[\\uDE80-\\uDE9F]'\n    },\n    {\n        'name': 'Old_Permic',\n        'astral': '\\uD800[\\uDF50-\\uDF7A]'\n    },\n    {\n        'name': 'Old_Persian',\n        'astral': '\\uD800[\\uDFA0-\\uDFC3\\uDFC8-\\uDFD5]'\n    },\n    {\n        'name': 'Old_Sogdian',\n        'astral': '\\uD803[\\uDF00-\\uDF27]'\n    },\n    {\n        'name': 'Old_South_Arabian',\n        'astral': '\\uD802[\\uDE60-\\uDE7F]'\n    },\n    {\n        'name': 'Old_Turkic',\n        'astral': '\\uD803[\\uDC00-\\uDC48]'\n    },\n    {\n        'name': 'Oriya',\n        'bmp': '\\u0B01-\\u0B03\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3C-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B5C\\u0B5D\\u0B5F-\\u0B63\\u0B66-\\u0B77'\n    },\n    {\n        'name': 'Osage',\n        'astral': '\\uD801[\\uDCB0-\\uDCD3\\uDCD8-\\uDCFB]'\n    },\n    {\n        'name': 'Osmanya',\n        'astral': '\\uD801[\\uDC80-\\uDC9D\\uDCA0-\\uDCA9]'\n    },\n    {\n        'name': 'Pahawh_Hmong',\n        'astral': '\\uD81A[\\uDF00-\\uDF45\\uDF50-\\uDF59\\uDF5B-\\uDF61\\uDF63-\\uDF77\\uDF7D-\\uDF8F]'\n    },\n    {\n        'name': 'Palmyrene',\n        'astral': '\\uD802[\\uDC60-\\uDC7F]'\n    },\n    {\n        'name': 'Pau_Cin_Hau',\n        'astral': '\\uD806[\\uDEC0-\\uDEF8]'\n    },\n    {\n        'name': 'Phags_Pa',\n        'bmp': '\\uA840-\\uA877'\n    },\n    {\n        'name': 'Phoenician',\n        'astral': '\\uD802[\\uDD00-\\uDD1B\\uDD1F]'\n    },\n    {\n        'name': 'Psalter_Pahlavi',\n        'astral': '\\uD802[\\uDF80-\\uDF91\\uDF99-\\uDF9C\\uDFA9-\\uDFAF]'\n    },\n    {\n        'name': 'Rejang',\n        'bmp': '\\uA930-\\uA953\\uA95F'\n    },\n    {\n        'name': 'Runic',\n        'bmp': '\\u16A0-\\u16EA\\u16EE-\\u16F8'\n    },\n    {\n        'name': 'Samaritan',\n        'bmp': '\\u0800-\\u082D\\u0830-\\u083E'\n    },\n    {\n        'name': 'Saurashtra',\n        'bmp': '\\uA880-\\uA8C5\\uA8CE-\\uA8D9'\n    },\n    {\n        'name': 'Sharada',\n        'astral': '\\uD804[\\uDD80-\\uDDCD\\uDDD0-\\uDDDF]'\n    },\n    {\n        'name': 'Shavian',\n        'astral': '\\uD801[\\uDC50-\\uDC7F]'\n    },\n    {\n        'name': 'Siddham',\n        'astral': '\\uD805[\\uDD80-\\uDDB5\\uDDB8-\\uDDDD]'\n    },\n    {\n        'name': 'SignWriting',\n        'astral': '\\uD836[\\uDC00-\\uDE8B\\uDE9B-\\uDE9F\\uDEA1-\\uDEAF]'\n    },\n    {\n        'name': 'Sinhala',\n        'bmp': '\\u0D82\\u0D83\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DE6-\\u0DEF\\u0DF2-\\u0DF4',\n        'astral': '\\uD804[\\uDDE1-\\uDDF4]'\n    },\n    {\n        'name': 'Sogdian',\n        'astral': '\\uD803[\\uDF30-\\uDF59]'\n    },\n    {\n        'name': 'Sora_Sompeng',\n        'astral': '\\uD804[\\uDCD0-\\uDCE8\\uDCF0-\\uDCF9]'\n    },\n    {\n        'name': 'Soyombo',\n        'astral': '\\uD806[\\uDE50-\\uDE83\\uDE86-\\uDEA2]'\n    },\n    {\n        'name': 'Sundanese',\n        'bmp': '\\u1B80-\\u1BBF\\u1CC0-\\u1CC7'\n    },\n    {\n        'name': 'Syloti_Nagri',\n        'bmp': '\\uA800-\\uA82B'\n    },\n    {\n        'name': 'Syriac',\n        'bmp': '\\u0700-\\u070D\\u070F-\\u074A\\u074D-\\u074F\\u0860-\\u086A'\n    },\n    {\n        'name': 'Tagalog',\n        'bmp': '\\u1700-\\u170C\\u170E-\\u1714'\n    },\n    {\n        'name': 'Tagbanwa',\n        'bmp': '\\u1760-\\u176C\\u176E-\\u1770\\u1772\\u1773'\n    },\n    {\n        'name': 'Tai_Le',\n        'bmp': '\\u1950-\\u196D\\u1970-\\u1974'\n    },\n    {\n        'name': 'Tai_Tham',\n        'bmp': '\\u1A20-\\u1A5E\\u1A60-\\u1A7C\\u1A7F-\\u1A89\\u1A90-\\u1A99\\u1AA0-\\u1AAD'\n    },\n    {\n        'name': 'Tai_Viet',\n        'bmp': '\\uAA80-\\uAAC2\\uAADB-\\uAADF'\n    },\n    {\n        'name': 'Takri',\n        'astral': '\\uD805[\\uDE80-\\uDEB7\\uDEC0-\\uDEC9]'\n    },\n    {\n        'name': 'Tamil',\n        'bmp': '\\u0B82\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD0\\u0BD7\\u0BE6-\\u0BFA'\n    },\n    {\n        'name': 'Tangut',\n        'astral': '\\uD81B\\uDFE0|[\\uD81C-\\uD820][\\uDC00-\\uDFFF]|\\uD821[\\uDC00-\\uDFF1]|\\uD822[\\uDC00-\\uDEF2]'\n    },\n    {\n        'name': 'Telugu',\n        'bmp': '\\u0C00-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C58-\\u0C5A\\u0C60-\\u0C63\\u0C66-\\u0C6F\\u0C78-\\u0C7F'\n    },\n    {\n        'name': 'Thaana',\n        'bmp': '\\u0780-\\u07B1'\n    },\n    {\n        'name': 'Thai',\n        'bmp': '\\u0E01-\\u0E3A\\u0E40-\\u0E5B'\n    },\n    {\n        'name': 'Tibetan',\n        'bmp': '\\u0F00-\\u0F47\\u0F49-\\u0F6C\\u0F71-\\u0F97\\u0F99-\\u0FBC\\u0FBE-\\u0FCC\\u0FCE-\\u0FD4\\u0FD9\\u0FDA'\n    },\n    {\n        'name': 'Tifinagh',\n        'bmp': '\\u2D30-\\u2D67\\u2D6F\\u2D70\\u2D7F'\n    },\n    {\n        'name': 'Tirhuta',\n        'astral': '\\uD805[\\uDC80-\\uDCC7\\uDCD0-\\uDCD9]'\n    },\n    {\n        'name': 'Ugaritic',\n        'astral': '\\uD800[\\uDF80-\\uDF9D\\uDF9F]'\n    },\n    {\n        'name': 'Vai',\n        'bmp': '\\uA500-\\uA62B'\n    },\n    {\n        'name': 'Warang_Citi',\n        'astral': '\\uD806[\\uDCA0-\\uDCF2\\uDCFF]'\n    },\n    {\n        'name': 'Yi',\n        'bmp': '\\uA000-\\uA48C\\uA490-\\uA4C6'\n    },\n    {\n        'name': 'Zanabazar_Square',\n        'astral': '\\uD806[\\uDE00-\\uDE47]'\n    }\n];\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/xregexp/tools/output/scripts.js\n// module id = 446\n// module chunks = 88 89","import { last, compact, filter, reduceRight } from 'underscore';\nimport { IAnalyticsOmniboxSuggestionMeta } from '../Analytics/AnalyticsActionListMeta';\n\nexport interface IOmniboxAnalytics {\n  partialQueries: string[];\n  suggestionRanking: number;\n  suggestions: string[];\n  partialQuery: string;\n  buildCustomDataForPartialQueries: () => IAnalyticsOmniboxSuggestionMeta;\n}\n\nexport class OmniboxAnalytics implements IOmniboxAnalytics {\n  public partialQueries: string[] = [];\n  public suggestionRanking: number;\n  public suggestions: string[] = [];\n  public partialQuery: string;\n\n  private readonly analyticsLengthLimit = 256;\n\n  constructor() {}\n\n  public buildCustomDataForPartialQueries(): IAnalyticsOmniboxSuggestionMeta {\n    this.partialQuery = last(this.partialQueries);\n\n    return {\n      partialQueries: this.cleanCustomData(this.partialQueries),\n      suggestionRanking: this.suggestionRanking,\n      suggestions: this.cleanCustomData(this.suggestions),\n      partialQuery: this.partialQuery\n    };\n  }\n\n  private cleanCustomData(toClean: string[], rejectLength = this.analyticsLengthLimit) {\n    const filterOutConsecutiveValues = this.filterOutConsecutiveValues(toClean);\n\n    // Custom dimensions cannot be an array in analytics service: Send a string joined by ; instead.\n    // Need to replace ;\n    const redimensionedArray = filterOutConsecutiveValues.map(value => this.removeSemicolons(value));\n\n    // Reduce right to get the last X words that adds to less then rejectLength\n    const reducedToRejectLengthOrLess = this.reduceAnalyticsToLengthLimit(redimensionedArray, rejectLength);\n\n    const cleanStrings = reducedToRejectLengthOrLess.reverse();\n    const ret = cleanStrings.join(';');\n\n    // analytics service can store max 256 char in a custom event\n    // if we're over that, call cleanup again with an arbitrary 10 less char accepted\n    if (ret.length >= this.analyticsLengthLimit) {\n      return this.cleanCustomData(cleanStrings, rejectLength - 10);\n    }\n\n    return cleanStrings.join(';');\n  }\n\n  private filterOutConsecutiveValues(toClean: string[]) {\n    return compact(\n      filter(toClean, (partial: string, pos?: number, array?: string[]) => {\n        return pos === 0 || partial !== array[pos - 1];\n      })\n    );\n  }\n\n  private removeSemicolons(partial: string) {\n    return partial.replace(/;/g, '');\n  }\n\n  private reduceAnalyticsToLengthLimit(toClean: string[], rejectLength: number) {\n    const reducedToRejectLengthOrLess: string[] = [];\n    reduceRight(\n      toClean,\n      (memo: number, partial: string) => {\n        const totalSoFar = memo + partial.length;\n        if (totalSoFar <= rejectLength) {\n          reducedToRejectLengthOrLess.push(partial);\n        }\n        return totalSoFar;\n      },\n      0\n    );\n    return reducedToRejectLengthOrLess;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Omnibox/OmniboxAnalytics.ts","import { $$ } from '../../utils/Dom';\nimport { Logger } from '../../misc/Logger';\nimport { QueryEvents } from '../../events/QueryEvents';\nimport { every, find } from 'underscore';\nimport { get } from '../Base/RegisteredNamedMethods';\n\nexport interface IAutoLayoutAdjustableInsideFacetColumn {\n  isCurrentlyDisplayed: () => boolean;\n}\n\nexport class FacetColumnAutoLayoutAdjustment {\n  public static autoLayoutAdjustmentComponent: Map<HTMLElement, IAutoLayoutAdjustableInsideFacetColumn[]> = new Map();\n  public static autoLayoutAdjustmentHandlers: Map<HTMLElement, () => void> = new Map();\n\n  public static isAutoLayoutAdjustable(component: any): component is IAutoLayoutAdjustableInsideFacetColumn {\n    return 'isCurrentlyDisplayed' in component;\n  }\n\n  public static initializeAutoLayoutAdjustment(root: HTMLElement, component: IAutoLayoutAdjustableInsideFacetColumn) {\n    if (!this.autoLayoutAdjustmentComponent.has(root)) {\n      this.autoLayoutAdjustmentComponent.set(root, []);\n    }\n\n    this.autoLayoutAdjustmentComponent.get(root).push(component);\n\n    if (this.autoLayoutAdjustmentHandlers.has(root)) {\n      return;\n    }\n    const hiddenClass = 'coveo-no-visible-facet';\n\n    const handler = () =>\n      $$(root).on(QueryEvents.deferredQuerySuccess, () => {\n        const column = this.findColumn(root);\n\n        if (this.everyStandardComponentsAreInvisible(root) && this.columnsDoesNotContainVisibleCustomElement(column)) {\n          $$(root).addClass(hiddenClass);\n        } else {\n          $$(root).removeClass(hiddenClass);\n        }\n      });\n\n    handler();\n\n    this.autoLayoutAdjustmentHandlers.set(root, handler);\n  }\n\n  private static columnsDoesNotContainVisibleCustomElement(column: HTMLElement) {\n    if (!column) {\n      return true;\n    }\n\n    const children = $$(column).children();\n    const shouldBeIgnored = ['coveo-facet-header-filter-by-container', 'coveo-topSpace', 'coveo-bottomSpace'];\n\n    const columnDoesNotContainVisibleCustomElement = every(children, child => {\n      const willBeIgnored = find(shouldBeIgnored, toIgnore => {\n        return $$(child).hasClass(toIgnore);\n      });\n\n      if (willBeIgnored != null) {\n        return true;\n      }\n\n      try {\n        const component = get(child);\n        if (component && this.isAutoLayoutAdjustable(component)) {\n          return true;\n        }\n      } catch (e) {}\n\n      return !$$(child).isVisible();\n    });\n\n    return columnDoesNotContainVisibleCustomElement;\n  }\n\n  private static everyStandardComponentsAreInvisible(root: HTMLElement) {\n    const components = this.autoLayoutAdjustmentComponent.get(root);\n    return every(components, component => !component.isCurrentlyDisplayed());\n  }\n\n  private static findColumn(root: HTMLElement) {\n    const column = $$(root).find('.coveo-facet-column');\n    if (!column) {\n      const logger = new Logger('ResponsiveFacets');\n      logger.info('No element with class coveo-facet-column. Facet column auto layout adjustment cannot be enabled');\n    }\n    return column;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/SearchInterface/FacetColumnAutoLayoutAdjustment.ts","import { QueryStateModel } from '../../models/QueryStateModel';\nimport { ComponentsTypes, IComponentsTypesSearchInterface } from '../../utils/ComponentsTypes';\nimport { Component } from '../Base/Component';\n\nexport class FacetValueStateHandler {\n  constructor(public searchInterface: IComponentsTypesSearchInterface) {}\n\n  public handleFacetValueState(stateToSet: Record<string, any>): void {\n    const allFacets = ComponentsTypes.getAllFacetsFromSearchInterface(this.searchInterface);\n    const fvState = stateToSet.fv;\n    const facetValueStateToFacetState = new FacetValueStateToFacetStateTransformer(stateToSet, fvState, allFacets);\n    const facetValueStateToHiddenQuery = new FacetValueStateToHiddenQueryTransformer(stateToSet, fvState);\n\n    const allFieldIdsInFacetValueState = Object.keys(fvState);\n\n    const remainingFields = allFieldIdsInFacetValueState\n      .filter(field => fvState[field] && fvState[field].length > 0)\n      .filter(field => !facetValueStateToFacetState.tryTransform(field, fvState[field]));\n\n    facetValueStateToHiddenQuery.transform(remainingFields);\n  }\n}\n\nclass FacetValueStateToFacetStateTransformer {\n  constructor(private queryState: Record<string, any>, private facetValueState: Record<string, any>, private allFacets: Component[]) {}\n\n  public tryTransform(fieldId: string, valueInState: string): boolean {\n    const facetsWithField = this.allFacets.filter(facet => facet.options.field == fieldId);\n    if (facetsWithField.length > 0) {\n      delete this.facetValueState[fieldId];\n      facetsWithField.forEach(facet => (this.queryState[QueryStateModel.getFacetId(facet.options.id)] = valueInState));\n      return true;\n    } else {\n      return false;\n    }\n  }\n}\n\nclass FacetValueStateToHiddenQueryTransformer {\n  constructor(private queryState: Record<string, any>, private facetValueState: Record<string, any>) {}\n\n  public transform(fieldIds: string[]): void {\n    const valuesTransformedToHiddenQuery = fieldIds.map(fieldId => this.facetValueIntoQuery(fieldId));\n    if (valuesTransformedToHiddenQuery.length > 0) {\n      this.queryState[QueryStateModel.attributesEnum.hq] = valuesTransformedToHiddenQuery.join(' AND ');\n    }\n  }\n\n  private facetValueIntoQuery(fieldId: string) {\n    const value = this.facetValueState[fieldId];\n    delete this.facetValueState[fieldId];\n    return `${fieldId}==\"${value}\"`;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/SearchInterface/FacetValueStateHandler.ts","import { ResultListEvents, IDisplayedNewResultsEventArgs } from '../../events/ResultListEvents';\nimport { $$ } from '../../utils/Dom';\nimport { Logger } from '../../misc/Logger';\nimport { StorageUtils } from '../../utils/StorageUtils';\nimport { QueryStateModel } from '../../models/QueryStateModel';\n\ninterface IScrollRestorationInfo {\n  lastPosition: number;\n  pageHeight: number;\n}\n\nexport class ScrollRestorer {\n  private ID = 'ScrollRestorer';\n\n  private scrollInfoStorage: StorageUtils<Record<string, IScrollRestorationInfo>>;\n\n  private restorationTimeOutInMs = 5000;\n  private tryToScrollIntervalInMs = 50;\n  private timeoutHandle;\n\n  constructor(public root: HTMLElement, private queryStateModel: QueryStateModel) {\n    this.scrollInfoStorage = new StorageUtils<Record<string, IScrollRestorationInfo>>(this.ID, 'session');\n    window.addEventListener('beforeunload', () => {\n      this.saveScrollInfo();\n    });\n    $$(this.root).on(ResultListEvents.newResultsDisplayed, (event: Event, args: IDisplayedNewResultsEventArgs) =>\n      this.handleNewResultsDisplayed(args)\n    );\n  }\n\n  private saveScrollInfo() {\n    const scrollInfo: IScrollRestorationInfo = {\n      pageHeight: window.document.body.scrollHeight,\n      lastPosition: window.pageYOffset\n    };\n\n    const key = this.getKeyForCurrentQuery();\n    const prevScrollInfo = this.scrollInfoStorage.load();\n    this.scrollInfoStorage.save({\n      ...prevScrollInfo,\n      [key]: scrollInfo\n    });\n  }\n\n  public handleNewResultsDisplayed(args: IDisplayedNewResultsEventArgs) {\n    if (args.isInfiniteScrollEnabled) {\n      new Logger(this).warn('Scroll restoration is not supported on result lists with infinite scrolling enabled.');\n      this.resetScrollInfo();\n      return;\n    }\n\n    const scrollInfo = this.getScrollInfoForCurrentQuery();\n\n    this.resetScrollInfo();\n\n    if (scrollInfo && scrollInfo.lastPosition) {\n      const stopTryingAt = Date.now() + this.restorationTimeOutInMs;\n      this.tryToRestoreScrollPosition(scrollInfo, stopTryingAt);\n    }\n  }\n\n  private resetScrollInfo() {\n    this.scrollInfoStorage.remove(this.getKeyForCurrentQuery());\n  }\n\n  private tryToRestoreScrollPosition(scrollInfo: IScrollRestorationInfo, stopAt: number) {\n    const html = window.document.documentElement;\n    const body = window.document.body;\n\n    const documentHeight = Math.max(body.scrollHeight, body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight);\n\n    clearTimeout(this.timeoutHandle);\n\n    if (documentHeight >= scrollInfo.pageHeight || Date.now() >= stopAt) {\n      window.scrollTo(0, scrollInfo.lastPosition);\n    } else {\n      this.timeoutHandle = setTimeout(() => this.tryToRestoreScrollPosition(scrollInfo, stopAt), this.tryToScrollIntervalInMs);\n    }\n  }\n\n  private getScrollInfoForCurrentQuery() {\n    const scrollInfo = this.scrollInfoStorage.load() || {};\n    return scrollInfo[this.getKeyForCurrentQuery()];\n  }\n\n  private getKeyForCurrentQuery() {\n    return JSON.stringify(this.queryStateModel.getAttributes());\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/SearchInterface/ScrollRestorer.ts","module.exports = function(module) {\r\n\tif(!module.webpackPolyfill) {\r\n\t\tmodule.deprecate = function() {};\r\n\t\tmodule.paths = [];\r\n\t\t// module.parent = undefined by default\r\n\t\tif(!module.children) module.children = [];\r\n\t\tObject.defineProperty(module, \"loaded\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.l;\r\n\t\t\t}\r\n\t\t});\r\n\t\tObject.defineProperty(module, \"id\", {\r\n\t\t\tenumerable: true,\r\n\t\t\tget: function() {\r\n\t\t\t\treturn module.i;\r\n\t\t\t}\r\n\t\t});\r\n\t\tmodule.webpackPolyfill = 1;\r\n\t}\r\n\treturn module;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/module.js\n// module id = 451\n// module chunks = 88 89","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_AccessibleButton.scss\n// module id = 452\n// module chunks = 88 89","import { Component } from './Component';\nimport { $$ } from '../../utils/Dom';\nimport * as _ from 'underscore';\nimport { Initialization } from './Initialization';\nimport { Utils } from '../../UtilsModules';\n\nexport type DOMElementToInitialize = { componentClassId: string; htmlElements: HTMLElement[] };\n\nexport class InitializationHelper {\n  public static findDOMElementsToIgnore(container: HTMLElement, componentIdsToIgnore: string[]): HTMLElement[] {\n    let htmlElementsToIgnore = [];\n\n    _.each(componentIdsToIgnore, componentIdToIgnore => {\n      const rootsToIgnore = this.findDOMElementsMatchingComponentId(container, componentIdToIgnore);\n      htmlElementsToIgnore = Utils.concatWithoutDuplicate(htmlElementsToIgnore, rootsToIgnore);\n\n      _.each(rootsToIgnore, rootToIgnore => {\n        const childsElementsToIgnore = $$(rootToIgnore).findAll('*');\n        htmlElementsToIgnore = Utils.concatWithoutDuplicate(htmlElementsToIgnore, childsElementsToIgnore);\n      });\n    });\n\n    return htmlElementsToIgnore;\n  }\n\n  public static findDOMElementsToInitialize(container: HTMLElement, htmlElementsToIgnore: HTMLElement[]): DOMElementToInitialize[] {\n    const elementsToInitialize: DOMElementToInitialize[] = [];\n\n    _.each(Initialization.getListOfRegisteredComponents(), (componentClassId: string) => {\n      let htmlElements = [];\n\n      htmlElements = Utils.concatWithoutDuplicate(htmlElements, this.findDOMElementsMatchingComponentId(container, componentClassId));\n\n      const aliases = Initialization.componentAliases[componentClassId];\n      _.each(aliases, alias => {\n        htmlElements = Utils.concatWithoutDuplicate(htmlElements, this.findDOMElementsMatchingComponentId(container, alias as string));\n      });\n\n      if (\n        $$(container).hasClass(Component.computeCssClassNameForType(`${componentClassId}`)) &&\n        !_.contains(htmlElementsToIgnore, container)\n      ) {\n        htmlElements.push(container);\n      }\n\n      elementsToInitialize.push({\n        componentClassId,\n        htmlElements: _.difference(htmlElements, htmlElementsToIgnore)\n      });\n    });\n\n    return elementsToInitialize;\n  }\n\n  private static findDOMElementsMatchingComponentId(container: HTMLElement, componentId: string): HTMLElement[] {\n    const classname = Component.computeCssClassNameForType(`${componentId}`);\n    return $$(container).findAll(`.${classname}`);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Base/InitializationHelper.ts","import { IAnalyticsClient } from './AnalyticsClient';\nimport { PendingSearchEvent } from './PendingSearchEvent';\nimport { IAnalyticsActionCause } from './AnalyticsActionListMeta';\nimport { IQueryResult } from '../../rest/QueryResult';\nimport { ITopQueries } from '../../rest/TopQueries';\nimport { IAPIAnalyticsEventResponse } from '../../rest/APIAnalyticsEventResponse';\nimport * as _ from 'underscore';\nimport { AnalyticsEndpoint } from '../../rest/AnalyticsEndpoint';\n\nexport class MultiAnalyticsClient implements IAnalyticsClient {\n  public isContextual = false;\n  public endpoint: AnalyticsEndpoint = _.first(this.analyticsClients).endpoint;\n\n  constructor(private analyticsClients: IAnalyticsClient[] = []) {}\n\n  public isActivated(): boolean {\n    return _.some(this.analyticsClients, (analyticsClient: IAnalyticsClient) => analyticsClient.isActivated());\n  }\n\n  public getCurrentEventCause(): string {\n    return _.find(\n      _.map(this.analyticsClients, (analyticsClient: IAnalyticsClient) => analyticsClient.getCurrentEventCause()),\n      (currentEventCause: string) => currentEventCause != null\n    );\n  }\n\n  public getCurrentEventMeta(): { [key: string]: any } {\n    return _.find(\n      _.map(this.analyticsClients, (analyticsClient: IAnalyticsClient) => analyticsClient.getCurrentEventMeta()),\n      (currentEventMeta: { [key: string]: any }) => currentEventMeta != null\n    );\n  }\n\n  public logSearchEvent<TMeta>(actionCause: IAnalyticsActionCause, meta: TMeta) {\n    _.each(this.analyticsClients, (analyticsClient: IAnalyticsClient) => analyticsClient.logSearchEvent<TMeta>(actionCause, meta));\n  }\n\n  public logSearchAsYouType<TMeta>(actionCause: IAnalyticsActionCause, meta: TMeta) {\n    _.each(this.analyticsClients, (analyticsClient: IAnalyticsClient) => analyticsClient.logSearchEvent<TMeta>(actionCause, meta));\n  }\n\n  public logClickEvent<TMeta>(\n    actionCause: IAnalyticsActionCause,\n    meta: TMeta,\n    result: IQueryResult,\n    element: HTMLElement\n  ): Promise<IAPIAnalyticsEventResponse> {\n    return Promise.all(\n      _.map(this.analyticsClients, (analyticsClient: IAnalyticsClient) => {\n        return analyticsClient.logClickEvent(actionCause, meta, result, element);\n      })\n    ).then(responses => _.first(responses));\n  }\n\n  public logCustomEvent<TMeta>(\n    actionCause: IAnalyticsActionCause,\n    meta?: TMeta,\n    element?: HTMLElement\n  ): Promise<IAPIAnalyticsEventResponse> {\n    return Promise.all(\n      _.map(this.analyticsClients, (analyticsClient: IAnalyticsClient) => {\n        return analyticsClient.logCustomEvent<TMeta>(actionCause, meta, element);\n      })\n    ).then(responses => _.first(responses));\n  }\n\n  public getTopQueries(params: ITopQueries): Promise<string[]> {\n    return Promise.all(\n      _.map(this.analyticsClients, client => {\n        return client.getTopQueries(params);\n      })\n    ).then((values: string[][]) => {\n      return this.mergeTopQueries(values, params.pageSize);\n    });\n  }\n\n  public getCurrentVisitIdPromise(): Promise<string> {\n    return _.first(this.analyticsClients).getCurrentVisitIdPromise();\n  }\n\n  public getCurrentVisitId(): string {\n    return _.first(this.analyticsClients).getCurrentVisitId();\n  }\n\n  public sendAllPendingEvents(): void {\n    _.each(this.analyticsClients, (analyticsClient: IAnalyticsClient) => analyticsClient.sendAllPendingEvents());\n  }\n\n  public warnAboutSearchEvent(): void {\n    _.each(this.analyticsClients, (analyticsClient: IAnalyticsClient) => analyticsClient.warnAboutSearchEvent());\n  }\n\n  public cancelAllPendingEvents(): void {\n    _.each(this.analyticsClients, (analyticsClient: IAnalyticsClient) => analyticsClient.cancelAllPendingEvents());\n  }\n\n  public getPendingSearchEvent(): PendingSearchEvent {\n    return _.first(this.analyticsClients).getPendingSearchEvent();\n  }\n\n  public setOriginContext(originContext: string) {\n    _.each(this.analyticsClients, (analyticsClient: IAnalyticsClient) => analyticsClient.setOriginContext(originContext));\n  }\n\n  public getOriginContext(): string {\n    return _.first(this.analyticsClients).getOriginContext();\n  }\n\n  public getUserDisplayName(): string {\n    return _.first(this.analyticsClients).getUserDisplayName();\n  }\n\n  private mergeTopQueries(values: string[][], pageSize: number = 5) {\n    return _.chain(values).flatten().first(pageSize).value();\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Analytics/MultiAnalyticsClient.ts","/*!\n * Pikaday\n *\n * Copyright © 2014 David Bushell | BSD & MIT license | https://github.com/dbushell/Pikaday\n */\n\n(function (root, factory)\n{\n    'use strict';\n\n    var moment;\n    if (typeof exports === 'object') {\n        // CommonJS module\n        // Load moment.js as an optional dependency\n        try { moment = require('moment'); } catch (e) {}\n        module.exports = factory(moment);\n    } else if (typeof define === 'function' && define.amd) {\n        // AMD. Register as an anonymous module.\n        define(function (req)\n        {\n            // Load moment.js as an optional dependency\n            var id = 'moment';\n            try { moment = req(id); } catch (e) {}\n            return factory(moment);\n        });\n    } else {\n        root.Pikaday = factory(root.moment);\n    }\n}(this, function (moment)\n{\n    'use strict';\n\n    /**\n     * feature detection and helper functions\n     */\n    var hasMoment = typeof moment === 'function',\n\n    hasEventListeners = !!window.addEventListener,\n\n    document = window.document,\n\n    sto = window.setTimeout,\n\n    addEvent = function(el, e, callback, capture)\n    {\n        if (hasEventListeners) {\n            el.addEventListener(e, callback, !!capture);\n        } else {\n            el.attachEvent('on' + e, callback);\n        }\n    },\n\n    removeEvent = function(el, e, callback, capture)\n    {\n        if (hasEventListeners) {\n            el.removeEventListener(e, callback, !!capture);\n        } else {\n            el.detachEvent('on' + e, callback);\n        }\n    },\n\n    trim = function(str)\n    {\n        return str.trim ? str.trim() : str.replace(/^\\s+|\\s+$/g,'');\n    },\n\n    hasClass = function(el, cn)\n    {\n        return (' ' + el.className + ' ').indexOf(' ' + cn + ' ') !== -1;\n    },\n\n    addClass = function(el, cn)\n    {\n        if (!hasClass(el, cn)) {\n            el.className = (el.className === '') ? cn : el.className + ' ' + cn;\n        }\n    },\n\n    removeClass = function(el, cn)\n    {\n        el.className = trim((' ' + el.className + ' ').replace(' ' + cn + ' ', ' '));\n    },\n\n    isArray = function(obj)\n    {\n        return (/Array/).test(Object.prototype.toString.call(obj));\n    },\n\n    isDate = function(obj)\n    {\n        return (/Date/).test(Object.prototype.toString.call(obj)) && !isNaN(obj.getTime());\n    },\n\n    isWeekend = function(date)\n    {\n        var day = date.getDay();\n        return day === 0 || day === 6;\n    },\n\n    isLeapYear = function(year)\n    {\n        // solution by Matti Virkkunen: http://stackoverflow.com/a/4881951\n        return year % 4 === 0 && year % 100 !== 0 || year % 400 === 0;\n    },\n\n    getDaysInMonth = function(year, month)\n    {\n        return [31, isLeapYear(year) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31][month];\n    },\n\n    setToStartOfDay = function(date)\n    {\n        if (isDate(date)) date.setHours(0,0,0,0);\n    },\n\n    compareDates = function(a,b)\n    {\n        // weak date comparison (use setToStartOfDay(date) to ensure correct result)\n        return a.getTime() === b.getTime();\n    },\n\n    extend = function(to, from, overwrite)\n    {\n        var prop, hasProp;\n        for (prop in from) {\n            hasProp = to[prop] !== undefined;\n            if (hasProp && typeof from[prop] === 'object' && from[prop] !== null && from[prop].nodeName === undefined) {\n                if (isDate(from[prop])) {\n                    if (overwrite) {\n                        to[prop] = new Date(from[prop].getTime());\n                    }\n                }\n                else if (isArray(from[prop])) {\n                    if (overwrite) {\n                        to[prop] = from[prop].slice(0);\n                    }\n                } else {\n                    to[prop] = extend({}, from[prop], overwrite);\n                }\n            } else if (overwrite || !hasProp) {\n                to[prop] = from[prop];\n            }\n        }\n        return to;\n    },\n\n    fireEvent = function(el, eventName, data)\n    {\n        var ev;\n\n        if (document.createEvent) {\n            ev = document.createEvent('HTMLEvents');\n            ev.initEvent(eventName, true, false);\n            ev = extend(ev, data);\n            el.dispatchEvent(ev);\n        } else if (document.createEventObject) {\n            ev = document.createEventObject();\n            ev = extend(ev, data);\n            el.fireEvent('on' + eventName, ev);\n        }\n    },\n\n    adjustCalendar = function(calendar) {\n        if (calendar.month < 0) {\n            calendar.year -= Math.ceil(Math.abs(calendar.month)/12);\n            calendar.month += 12;\n        }\n        if (calendar.month > 11) {\n            calendar.year += Math.floor(Math.abs(calendar.month)/12);\n            calendar.month -= 12;\n        }\n        return calendar;\n    },\n\n    /**\n     * defaults and localisation\n     */\n    defaults = {\n\n        // bind the picker to a form field\n        field: null,\n\n        // automatically show/hide the picker on `field` focus (default `true` if `field` is set)\n        bound: undefined,\n\n        // position of the datepicker, relative to the field (default to bottom & left)\n        // ('bottom' & 'left' keywords are not used, 'top' & 'right' are modifier on the bottom/left position)\n        position: 'bottom left',\n\n        // automatically fit in the viewport even if it means repositioning from the position option\n        reposition: true,\n\n        // the default output format for `.toString()` and `field` value\n        format: 'YYYY-MM-DD',\n\n        // the toString function which gets passed a current date object and format\n        // and returns a string\n        toString: null,\n\n        // used to create date object from current input string\n        parse: null,\n\n        // the initial date to view when first opened\n        defaultDate: null,\n\n        // make the `defaultDate` the initial selected value\n        setDefaultDate: false,\n\n        // first day of week (0: Sunday, 1: Monday etc)\n        firstDay: 0,\n\n        // the default flag for moment's strict date parsing\n        formatStrict: false,\n\n        // the minimum/earliest date that can be selected\n        minDate: null,\n        // the maximum/latest date that can be selected\n        maxDate: null,\n\n        // number of years either side, or array of upper/lower range\n        yearRange: 10,\n\n        // show week numbers at head of row\n        showWeekNumber: false,\n\n        // Week picker mode\n        pickWholeWeek: false,\n\n        // used internally (don't config outside)\n        minYear: 0,\n        maxYear: 9999,\n        minMonth: undefined,\n        maxMonth: undefined,\n\n        startRange: null,\n        endRange: null,\n\n        isRTL: false,\n\n        // Additional text to append to the year in the calendar title\n        yearSuffix: '',\n\n        // Render the month after year in the calendar title\n        showMonthAfterYear: false,\n\n        // Render days of the calendar grid that fall in the next or previous month\n        showDaysInNextAndPreviousMonths: false,\n\n        // Allows user to select days that fall in the next or previous month\n        enableSelectionDaysInNextAndPreviousMonths: false,\n\n        // how many months are visible\n        numberOfMonths: 1,\n\n        // when numberOfMonths is used, this will help you to choose where the main calendar will be (default `left`, can be set to `right`)\n        // only used for the first display or when a selected date is not visible\n        mainCalendar: 'left',\n\n        // Specify a DOM element to render the calendar in\n        container: undefined,\n\n        // Blur field when date is selected\n        blurFieldOnSelect : true,\n\n        // internationalization\n        i18n: {\n            previousMonth : 'Previous Month',\n            nextMonth     : 'Next Month',\n            months        : ['January','February','March','April','May','June','July','August','September','October','November','December'],\n            weekdays      : ['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'],\n            weekdaysShort : ['Sun','Mon','Tue','Wed','Thu','Fri','Sat']\n        },\n\n        // Theme Classname\n        theme: null,\n\n        // events array\n        events: [],\n\n        // callback function\n        onSelect: null,\n        onOpen: null,\n        onClose: null,\n        onDraw: null,\n\n        // Enable keyboard input\n        keyboardInput: true\n    },\n\n\n    /**\n     * templating functions to abstract HTML rendering\n     */\n    renderDayName = function(opts, day, abbr)\n    {\n        day += opts.firstDay;\n        while (day >= 7) {\n            day -= 7;\n        }\n        return abbr ? opts.i18n.weekdaysShort[day] : opts.i18n.weekdays[day];\n    },\n\n    renderDay = function(opts)\n    {\n        var arr = [];\n        var ariaSelected = 'false';\n        if (opts.isEmpty) {\n            if (opts.showDaysInNextAndPreviousMonths) {\n                arr.push('is-outside-current-month');\n\n                if(!opts.enableSelectionDaysInNextAndPreviousMonths) {\n                    arr.push('is-selection-disabled');\n                }\n\n            } else {\n                return '<td class=\"is-empty\"></td>';\n            }\n        }\n        if (opts.isDisabled) {\n            arr.push('is-disabled');\n        }\n        if (opts.isToday) {\n            arr.push('is-today');\n        }\n        if (opts.isSelected) {\n            arr.push('is-selected');\n            ariaSelected = 'true';\n        }\n        if (opts.hasEvent) {\n            arr.push('has-event');\n        }\n        if (opts.isInRange) {\n            arr.push('is-inrange');\n        }\n        if (opts.isStartRange) {\n            arr.push('is-startrange');\n        }\n        if (opts.isEndRange) {\n            arr.push('is-endrange');\n        }\n        return '<td data-day=\"' + opts.day + '\" class=\"' + arr.join(' ') + '\" aria-selected=\"' + ariaSelected + '\">' +\n                 '<button class=\"pika-button pika-day\" type=\"button\" ' +\n                    'data-pika-year=\"' + opts.year + '\" data-pika-month=\"' + opts.month + '\" data-pika-day=\"' + opts.day + '\">' +\n                        opts.day +\n                 '</button>' +\n               '</td>';\n    },\n\n    renderWeek = function (d, m, y) {\n        // Lifted from http://javascript.about.com/library/blweekyear.htm, lightly modified.\n        var onejan = new Date(y, 0, 1),\n            weekNum = Math.ceil((((new Date(y, m, d) - onejan) / 86400000) + onejan.getDay()+1)/7);\n        return '<td class=\"pika-week\">' + weekNum + '</td>';\n    },\n\n    renderRow = function(days, isRTL, pickWholeWeek, isRowSelected)\n    {\n        return '<tr class=\"pika-row' + (pickWholeWeek ? ' pick-whole-week' : '') + (isRowSelected ? ' is-selected' : '') + '\">' + (isRTL ? days.reverse() : days).join('') + '</tr>';\n    },\n\n    renderBody = function(rows)\n    {\n        return '<tbody>' + rows.join('') + '</tbody>';\n    },\n\n    renderHead = function(opts)\n    {\n        var i, arr = [];\n        if (opts.showWeekNumber) {\n            arr.push('<th></th>');\n        }\n        for (i = 0; i < 7; i++) {\n            arr.push('<th scope=\"col\"><abbr title=\"' + renderDayName(opts, i) + '\">' + renderDayName(opts, i, true) + '</abbr></th>');\n        }\n        return '<thead><tr>' + (opts.isRTL ? arr.reverse() : arr).join('') + '</tr></thead>';\n    },\n\n    renderTitle = function(instance, c, year, month, refYear, randId)\n    {\n        var i, j, arr,\n            opts = instance._o,\n            isMinYear = year === opts.minYear,\n            isMaxYear = year === opts.maxYear,\n            html = '<div id=\"' + randId + '\" class=\"pika-title\" role=\"heading\" aria-live=\"assertive\">',\n            monthHtml,\n            yearHtml,\n            prev = true,\n            next = true;\n\n        for (arr = [], i = 0; i < 12; i++) {\n            arr.push('<option value=\"' + (year === refYear ? i - c : 12 + i - c) + '\"' +\n                (i === month ? ' selected=\"selected\"': '') +\n                ((isMinYear && i < opts.minMonth) || (isMaxYear && i > opts.maxMonth) ? 'disabled=\"disabled\"' : '') + '>' +\n                opts.i18n.months[i] + '</option>');\n        }\n\n        monthHtml = '<div class=\"pika-label\">' + opts.i18n.months[month] + '<select class=\"pika-select pika-select-month\" tabindex=\"-1\">' + arr.join('') + '</select></div>';\n\n        if (isArray(opts.yearRange)) {\n            i = opts.yearRange[0];\n            j = opts.yearRange[1] + 1;\n        } else {\n            i = year - opts.yearRange;\n            j = 1 + year + opts.yearRange;\n        }\n\n        for (arr = []; i < j && i <= opts.maxYear; i++) {\n            if (i >= opts.minYear) {\n                arr.push('<option value=\"' + i + '\"' + (i === year ? ' selected=\"selected\"': '') + '>' + (i) + '</option>');\n            }\n        }\n        yearHtml = '<div class=\"pika-label\">' + year + opts.yearSuffix + '<select class=\"pika-select pika-select-year\" tabindex=\"-1\">' + arr.join('') + '</select></div>';\n\n        if (opts.showMonthAfterYear) {\n            html += yearHtml + monthHtml;\n        } else {\n            html += monthHtml + yearHtml;\n        }\n\n        if (isMinYear && (month === 0 || opts.minMonth >= month)) {\n            prev = false;\n        }\n\n        if (isMaxYear && (month === 11 || opts.maxMonth <= month)) {\n            next = false;\n        }\n\n        if (c === 0) {\n            html += '<button class=\"pika-prev' + (prev ? '' : ' is-disabled') + '\" type=\"button\">' + opts.i18n.previousMonth + '</button>';\n        }\n        if (c === (instance._o.numberOfMonths - 1) ) {\n            html += '<button class=\"pika-next' + (next ? '' : ' is-disabled') + '\" type=\"button\">' + opts.i18n.nextMonth + '</button>';\n        }\n\n        return html += '</div>';\n    },\n\n    renderTable = function(opts, data, randId)\n    {\n        return '<table cellpadding=\"0\" cellspacing=\"0\" class=\"pika-table\" role=\"grid\" aria-labelledby=\"' + randId + '\">' + renderHead(opts) + renderBody(data) + '</table>';\n    },\n\n\n    /**\n     * Pikaday constructor\n     */\n    Pikaday = function(options)\n    {\n        var self = this,\n            opts = self.config(options);\n\n        self._onMouseDown = function(e)\n        {\n            if (!self._v) {\n                return;\n            }\n            e = e || window.event;\n            var target = e.target || e.srcElement;\n            if (!target) {\n                return;\n            }\n\n            if (!hasClass(target, 'is-disabled')) {\n                if (hasClass(target, 'pika-button') && !hasClass(target, 'is-empty') && !hasClass(target.parentNode, 'is-disabled')) {\n                    self.setDate(new Date(target.getAttribute('data-pika-year'), target.getAttribute('data-pika-month'), target.getAttribute('data-pika-day')));\n                    if (opts.bound) {\n                        sto(function() {\n                            self.hide();\n                            if (opts.blurFieldOnSelect && opts.field) {\n                                opts.field.blur();\n                            }\n                        }, 100);\n                    }\n                }\n                else if (hasClass(target, 'pika-prev')) {\n                    self.prevMonth();\n                }\n                else if (hasClass(target, 'pika-next')) {\n                    self.nextMonth();\n                }\n            }\n            if (!hasClass(target, 'pika-select')) {\n                // if this is touch event prevent mouse events emulation\n                if (e.preventDefault) {\n                    e.preventDefault();\n                } else {\n                    e.returnValue = false;\n                    return false;\n                }\n            } else {\n                self._c = true;\n            }\n        };\n\n        self._onChange = function(e)\n        {\n            e = e || window.event;\n            var target = e.target || e.srcElement;\n            if (!target) {\n                return;\n            }\n            if (hasClass(target, 'pika-select-month')) {\n                self.gotoMonth(target.value);\n            }\n            else if (hasClass(target, 'pika-select-year')) {\n                self.gotoYear(target.value);\n            }\n        };\n\n        self._onKeyChange = function(e)\n        {\n            e = e || window.event;\n\n            if (self.isVisible()) {\n\n                switch(e.keyCode){\n                    case 13:\n                    case 27:\n                        if (opts.field) {\n                            opts.field.blur();\n                        }\n                        break;\n                    case 37:\n                        e.preventDefault();\n                        self.adjustDate('subtract', 1);\n                        break;\n                    case 38:\n                        self.adjustDate('subtract', 7);\n                        break;\n                    case 39:\n                        self.adjustDate('add', 1);\n                        break;\n                    case 40:\n                        self.adjustDate('add', 7);\n                        break;\n                }\n            }\n        };\n\n        self._onInputChange = function(e)\n        {\n            var date;\n\n            if (e.firedBy === self) {\n                return;\n            }\n            if (opts.parse) {\n                date = opts.parse(opts.field.value, opts.format);\n            } else if (hasMoment) {\n                date = moment(opts.field.value, opts.format, opts.formatStrict);\n                date = (date && date.isValid()) ? date.toDate() : null;\n            }\n            else {\n                date = new Date(Date.parse(opts.field.value));\n            }\n            if (isDate(date)) {\n              self.setDate(date);\n            }\n            if (!self._v) {\n                self.show();\n            }\n        };\n\n        self._onInputFocus = function()\n        {\n            self.show();\n        };\n\n        self._onInputClick = function()\n        {\n            self.show();\n        };\n\n        self._onInputBlur = function()\n        {\n            // IE allows pika div to gain focus; catch blur the input field\n            var pEl = document.activeElement;\n            do {\n                if (hasClass(pEl, 'pika-single')) {\n                    return;\n                }\n            }\n            while ((pEl = pEl.parentNode));\n\n            if (!self._c) {\n                self._b = sto(function() {\n                    self.hide();\n                }, 50);\n            }\n            self._c = false;\n        };\n\n        self._onClick = function(e)\n        {\n            e = e || window.event;\n            var target = e.target || e.srcElement,\n                pEl = target;\n            if (!target) {\n                return;\n            }\n            if (!hasEventListeners && hasClass(target, 'pika-select')) {\n                if (!target.onchange) {\n                    target.setAttribute('onchange', 'return;');\n                    addEvent(target, 'change', self._onChange);\n                }\n            }\n            do {\n                if (hasClass(pEl, 'pika-single') || pEl === opts.trigger) {\n                    return;\n                }\n            }\n            while ((pEl = pEl.parentNode));\n            if (self._v && target !== opts.trigger && pEl !== opts.trigger) {\n                self.hide();\n            }\n        };\n\n        self.el = document.createElement('div');\n        self.el.className = 'pika-single' + (opts.isRTL ? ' is-rtl' : '') + (opts.theme ? ' ' + opts.theme : '');\n\n        addEvent(self.el, 'mousedown', self._onMouseDown, true);\n        addEvent(self.el, 'touchend', self._onMouseDown, true);\n        addEvent(self.el, 'change', self._onChange);\n\n        if (opts.keyboardInput) {\n            addEvent(document, 'keydown', self._onKeyChange);\n        }\n\n        if (opts.field) {\n            if (opts.container) {\n                opts.container.appendChild(self.el);\n            } else if (opts.bound) {\n                document.body.appendChild(self.el);\n            } else {\n                opts.field.parentNode.insertBefore(self.el, opts.field.nextSibling);\n            }\n            addEvent(opts.field, 'change', self._onInputChange);\n\n            if (!opts.defaultDate) {\n                if (hasMoment && opts.field.value) {\n                    opts.defaultDate = moment(opts.field.value, opts.format).toDate();\n                } else {\n                    opts.defaultDate = new Date(Date.parse(opts.field.value));\n                }\n                opts.setDefaultDate = true;\n            }\n        }\n\n        var defDate = opts.defaultDate;\n\n        if (isDate(defDate)) {\n            if (opts.setDefaultDate) {\n                self.setDate(defDate, true);\n            } else {\n                self.gotoDate(defDate);\n            }\n        } else {\n            self.gotoDate(new Date());\n        }\n\n        if (opts.bound) {\n            this.hide();\n            self.el.className += ' is-bound';\n            addEvent(opts.trigger, 'click', self._onInputClick);\n            addEvent(opts.trigger, 'focus', self._onInputFocus);\n            addEvent(opts.trigger, 'blur', self._onInputBlur);\n        } else {\n            this.show();\n        }\n    };\n\n\n    /**\n     * public Pikaday API\n     */\n    Pikaday.prototype = {\n\n\n        /**\n         * configure functionality\n         */\n        config: function(options)\n        {\n            if (!this._o) {\n                this._o = extend({}, defaults, true);\n            }\n\n            var opts = extend(this._o, options, true);\n\n            opts.isRTL = !!opts.isRTL;\n\n            opts.field = (opts.field && opts.field.nodeName) ? opts.field : null;\n\n            opts.theme = (typeof opts.theme) === 'string' && opts.theme ? opts.theme : null;\n\n            opts.bound = !!(opts.bound !== undefined ? opts.field && opts.bound : opts.field);\n\n            opts.trigger = (opts.trigger && opts.trigger.nodeName) ? opts.trigger : opts.field;\n\n            opts.disableWeekends = !!opts.disableWeekends;\n\n            opts.disableDayFn = (typeof opts.disableDayFn) === 'function' ? opts.disableDayFn : null;\n\n            var nom = parseInt(opts.numberOfMonths, 10) || 1;\n            opts.numberOfMonths = nom > 4 ? 4 : nom;\n\n            if (!isDate(opts.minDate)) {\n                opts.minDate = false;\n            }\n            if (!isDate(opts.maxDate)) {\n                opts.maxDate = false;\n            }\n            if ((opts.minDate && opts.maxDate) && opts.maxDate < opts.minDate) {\n                opts.maxDate = opts.minDate = false;\n            }\n            if (opts.minDate) {\n                this.setMinDate(opts.minDate);\n            }\n            if (opts.maxDate) {\n                this.setMaxDate(opts.maxDate);\n            }\n\n            if (isArray(opts.yearRange)) {\n                var fallback = new Date().getFullYear() - 10;\n                opts.yearRange[0] = parseInt(opts.yearRange[0], 10) || fallback;\n                opts.yearRange[1] = parseInt(opts.yearRange[1], 10) || fallback;\n            } else {\n                opts.yearRange = Math.abs(parseInt(opts.yearRange, 10)) || defaults.yearRange;\n                if (opts.yearRange > 100) {\n                    opts.yearRange = 100;\n                }\n            }\n\n            return opts;\n        },\n\n        /**\n         * return a formatted string of the current selection (using Moment.js if available)\n         */\n        toString: function(format)\n        {\n            format = format || this._o.format;\n            if (!isDate(this._d)) {\n                return '';\n            }\n            if (this._o.toString) {\n              return this._o.toString(this._d, format);\n            }\n            if (hasMoment) {\n              return moment(this._d).format(format);\n            }\n            return this._d.toDateString();\n        },\n\n        /**\n         * return a Moment.js object of the current selection (if available)\n         */\n        getMoment: function()\n        {\n            return hasMoment ? moment(this._d) : null;\n        },\n\n        /**\n         * set the current selection from a Moment.js object (if available)\n         */\n        setMoment: function(date, preventOnSelect)\n        {\n            if (hasMoment && moment.isMoment(date)) {\n                this.setDate(date.toDate(), preventOnSelect);\n            }\n        },\n\n        /**\n         * return a Date object of the current selection\n         */\n        getDate: function()\n        {\n            return isDate(this._d) ? new Date(this._d.getTime()) : null;\n        },\n\n        /**\n         * set the current selection\n         */\n        setDate: function(date, preventOnSelect)\n        {\n            if (!date) {\n                this._d = null;\n\n                if (this._o.field) {\n                    this._o.field.value = '';\n                    fireEvent(this._o.field, 'change', { firedBy: this });\n                }\n\n                return this.draw();\n            }\n            if (typeof date === 'string') {\n                date = new Date(Date.parse(date));\n            }\n            if (!isDate(date)) {\n                return;\n            }\n\n            var min = this._o.minDate,\n                max = this._o.maxDate;\n\n            if (isDate(min) && date < min) {\n                date = min;\n            } else if (isDate(max) && date > max) {\n                date = max;\n            }\n\n            this._d = new Date(date.getTime());\n            setToStartOfDay(this._d);\n            this.gotoDate(this._d);\n\n            if (this._o.field) {\n                this._o.field.value = this.toString();\n                fireEvent(this._o.field, 'change', { firedBy: this });\n            }\n            if (!preventOnSelect && typeof this._o.onSelect === 'function') {\n                this._o.onSelect.call(this, this.getDate());\n            }\n        },\n\n        /**\n         * change view to a specific date\n         */\n        gotoDate: function(date)\n        {\n            var newCalendar = true;\n\n            if (!isDate(date)) {\n                return;\n            }\n\n            if (this.calendars) {\n                var firstVisibleDate = new Date(this.calendars[0].year, this.calendars[0].month, 1),\n                    lastVisibleDate = new Date(this.calendars[this.calendars.length-1].year, this.calendars[this.calendars.length-1].month, 1),\n                    visibleDate = date.getTime();\n                // get the end of the month\n                lastVisibleDate.setMonth(lastVisibleDate.getMonth()+1);\n                lastVisibleDate.setDate(lastVisibleDate.getDate()-1);\n                newCalendar = (visibleDate < firstVisibleDate.getTime() || lastVisibleDate.getTime() < visibleDate);\n            }\n\n            if (newCalendar) {\n                this.calendars = [{\n                    month: date.getMonth(),\n                    year: date.getFullYear()\n                }];\n                if (this._o.mainCalendar === 'right') {\n                    this.calendars[0].month += 1 - this._o.numberOfMonths;\n                }\n            }\n\n            this.adjustCalendars();\n        },\n\n        adjustDate: function(sign, days) {\n\n            var day = this.getDate() || new Date();\n            var difference = parseInt(days)*24*60*60*1000;\n\n            var newDay;\n\n            if (sign === 'add') {\n                newDay = new Date(day.valueOf() + difference);\n            } else if (sign === 'subtract') {\n                newDay = new Date(day.valueOf() - difference);\n            }\n\n            this.setDate(newDay);\n        },\n\n        adjustCalendars: function() {\n            this.calendars[0] = adjustCalendar(this.calendars[0]);\n            for (var c = 1; c < this._o.numberOfMonths; c++) {\n                this.calendars[c] = adjustCalendar({\n                    month: this.calendars[0].month + c,\n                    year: this.calendars[0].year\n                });\n            }\n            this.draw();\n        },\n\n        gotoToday: function()\n        {\n            this.gotoDate(new Date());\n        },\n\n        /**\n         * change view to a specific month (zero-index, e.g. 0: January)\n         */\n        gotoMonth: function(month)\n        {\n            if (!isNaN(month)) {\n                this.calendars[0].month = parseInt(month, 10);\n                this.adjustCalendars();\n            }\n        },\n\n        nextMonth: function()\n        {\n            this.calendars[0].month++;\n            this.adjustCalendars();\n        },\n\n        prevMonth: function()\n        {\n            this.calendars[0].month--;\n            this.adjustCalendars();\n        },\n\n        /**\n         * change view to a specific full year (e.g. \"2012\")\n         */\n        gotoYear: function(year)\n        {\n            if (!isNaN(year)) {\n                this.calendars[0].year = parseInt(year, 10);\n                this.adjustCalendars();\n            }\n        },\n\n        /**\n         * change the minDate\n         */\n        setMinDate: function(value)\n        {\n            if(value instanceof Date) {\n                setToStartOfDay(value);\n                this._o.minDate = value;\n                this._o.minYear  = value.getFullYear();\n                this._o.minMonth = value.getMonth();\n            } else {\n                this._o.minDate = defaults.minDate;\n                this._o.minYear  = defaults.minYear;\n                this._o.minMonth = defaults.minMonth;\n                this._o.startRange = defaults.startRange;\n            }\n\n            this.draw();\n        },\n\n        /**\n         * change the maxDate\n         */\n        setMaxDate: function(value)\n        {\n            if(value instanceof Date) {\n                setToStartOfDay(value);\n                this._o.maxDate = value;\n                this._o.maxYear = value.getFullYear();\n                this._o.maxMonth = value.getMonth();\n            } else {\n                this._o.maxDate = defaults.maxDate;\n                this._o.maxYear = defaults.maxYear;\n                this._o.maxMonth = defaults.maxMonth;\n                this._o.endRange = defaults.endRange;\n            }\n\n            this.draw();\n        },\n\n        setStartRange: function(value)\n        {\n            this._o.startRange = value;\n        },\n\n        setEndRange: function(value)\n        {\n            this._o.endRange = value;\n        },\n\n        /**\n         * refresh the HTML\n         */\n        draw: function(force)\n        {\n            if (!this._v && !force) {\n                return;\n            }\n            var opts = this._o,\n                minYear = opts.minYear,\n                maxYear = opts.maxYear,\n                minMonth = opts.minMonth,\n                maxMonth = opts.maxMonth,\n                html = '',\n                randId;\n\n            if (this._y <= minYear) {\n                this._y = minYear;\n                if (!isNaN(minMonth) && this._m < minMonth) {\n                    this._m = minMonth;\n                }\n            }\n            if (this._y >= maxYear) {\n                this._y = maxYear;\n                if (!isNaN(maxMonth) && this._m > maxMonth) {\n                    this._m = maxMonth;\n                }\n            }\n\n            randId = 'pika-title-' + Math.random().toString(36).replace(/[^a-z]+/g, '').substr(0, 2);\n\n            for (var c = 0; c < opts.numberOfMonths; c++) {\n                html += '<div class=\"pika-lendar\">' + renderTitle(this, c, this.calendars[c].year, this.calendars[c].month, this.calendars[0].year, randId) + this.render(this.calendars[c].year, this.calendars[c].month, randId) + '</div>';\n            }\n\n            this.el.innerHTML = html;\n\n            if (opts.bound) {\n                if(opts.field.type !== 'hidden') {\n                    sto(function() {\n                        opts.trigger.focus();\n                    }, 1);\n                }\n            }\n\n            if (typeof this._o.onDraw === 'function') {\n                this._o.onDraw(this);\n            }\n\n            if (opts.bound) {\n                // let the screen reader user know to use arrow keys\n                opts.field.setAttribute('aria-label', 'Use the arrow keys to pick a date');\n            }\n        },\n\n        adjustPosition: function()\n        {\n            var field, pEl, width, height, viewportWidth, viewportHeight, scrollTop, left, top, clientRect;\n\n            if (this._o.container) return;\n\n            this.el.style.position = 'absolute';\n\n            field = this._o.trigger;\n            pEl = field;\n            width = this.el.offsetWidth;\n            height = this.el.offsetHeight;\n            viewportWidth = window.innerWidth || document.documentElement.clientWidth;\n            viewportHeight = window.innerHeight || document.documentElement.clientHeight;\n            scrollTop = window.pageYOffset || document.body.scrollTop || document.documentElement.scrollTop;\n\n            if (typeof field.getBoundingClientRect === 'function') {\n                clientRect = field.getBoundingClientRect();\n                left = clientRect.left + window.pageXOffset;\n                top = clientRect.bottom + window.pageYOffset;\n            } else {\n                left = pEl.offsetLeft;\n                top  = pEl.offsetTop + pEl.offsetHeight;\n                while((pEl = pEl.offsetParent)) {\n                    left += pEl.offsetLeft;\n                    top  += pEl.offsetTop;\n                }\n            }\n\n            // default position is bottom & left\n            if ((this._o.reposition && left + width > viewportWidth) ||\n                (\n                    this._o.position.indexOf('right') > -1 &&\n                    left - width + field.offsetWidth > 0\n                )\n            ) {\n                left = left - width + field.offsetWidth;\n            }\n            if ((this._o.reposition && top + height > viewportHeight + scrollTop) ||\n                (\n                    this._o.position.indexOf('top') > -1 &&\n                    top - height - field.offsetHeight > 0\n                )\n            ) {\n                top = top - height - field.offsetHeight;\n            }\n\n            this.el.style.left = left + 'px';\n            this.el.style.top = top + 'px';\n        },\n\n        /**\n         * render HTML for a particular month\n         */\n        render: function(year, month, randId)\n        {\n            var opts   = this._o,\n                now    = new Date(),\n                days   = getDaysInMonth(year, month),\n                before = new Date(year, month, 1).getDay(),\n                data   = [],\n                row    = [];\n            setToStartOfDay(now);\n            if (opts.firstDay > 0) {\n                before -= opts.firstDay;\n                if (before < 0) {\n                    before += 7;\n                }\n            }\n            var previousMonth = month === 0 ? 11 : month - 1,\n                nextMonth = month === 11 ? 0 : month + 1,\n                yearOfPreviousMonth = month === 0 ? year - 1 : year,\n                yearOfNextMonth = month === 11 ? year + 1 : year,\n                daysInPreviousMonth = getDaysInMonth(yearOfPreviousMonth, previousMonth);\n            var cells = days + before,\n                after = cells;\n            while(after > 7) {\n                after -= 7;\n            }\n            cells += 7 - after;\n            var isWeekSelected = false;\n            for (var i = 0, r = 0; i < cells; i++)\n            {\n                var day = new Date(year, month, 1 + (i - before)),\n                    isSelected = isDate(this._d) ? compareDates(day, this._d) : false,\n                    isToday = compareDates(day, now),\n                    hasEvent = opts.events.indexOf(day.toDateString()) !== -1 ? true : false,\n                    isEmpty = i < before || i >= (days + before),\n                    dayNumber = 1 + (i - before),\n                    monthNumber = month,\n                    yearNumber = year,\n                    isStartRange = opts.startRange && compareDates(opts.startRange, day),\n                    isEndRange = opts.endRange && compareDates(opts.endRange, day),\n                    isInRange = opts.startRange && opts.endRange && opts.startRange < day && day < opts.endRange,\n                    isDisabled = (opts.minDate && day < opts.minDate) ||\n                                 (opts.maxDate && day > opts.maxDate) ||\n                                 (opts.disableWeekends && isWeekend(day)) ||\n                                 (opts.disableDayFn && opts.disableDayFn(day));\n\n                if (isEmpty) {\n                    if (i < before) {\n                        dayNumber = daysInPreviousMonth + dayNumber;\n                        monthNumber = previousMonth;\n                        yearNumber = yearOfPreviousMonth;\n                    } else {\n                        dayNumber = dayNumber - days;\n                        monthNumber = nextMonth;\n                        yearNumber = yearOfNextMonth;\n                    }\n                }\n\n                var dayConfig = {\n                        day: dayNumber,\n                        month: monthNumber,\n                        year: yearNumber,\n                        hasEvent: hasEvent,\n                        isSelected: isSelected,\n                        isToday: isToday,\n                        isDisabled: isDisabled,\n                        isEmpty: isEmpty,\n                        isStartRange: isStartRange,\n                        isEndRange: isEndRange,\n                        isInRange: isInRange,\n                        showDaysInNextAndPreviousMonths: opts.showDaysInNextAndPreviousMonths,\n                        enableSelectionDaysInNextAndPreviousMonths: opts.enableSelectionDaysInNextAndPreviousMonths\n                    };\n\n                if (opts.pickWholeWeek && isSelected) {\n                    isWeekSelected = true;\n                }\n\n                row.push(renderDay(dayConfig));\n\n                if (++r === 7) {\n                    if (opts.showWeekNumber) {\n                        row.unshift(renderWeek(i - before, month, year));\n                    }\n                    data.push(renderRow(row, opts.isRTL, opts.pickWholeWeek, isWeekSelected));\n                    row = [];\n                    r = 0;\n                    isWeekSelected = false;\n                }\n            }\n            return renderTable(opts, data, randId);\n        },\n\n        isVisible: function()\n        {\n            return this._v;\n        },\n\n        show: function()\n        {\n            if (!this.isVisible()) {\n                this._v = true;\n                this.draw();\n                removeClass(this.el, 'is-hidden');\n                if (this._o.bound) {\n                    addEvent(document, 'click', this._onClick);\n                    this.adjustPosition();\n                }\n                if (typeof this._o.onOpen === 'function') {\n                    this._o.onOpen.call(this);\n                }\n            }\n        },\n\n        hide: function()\n        {\n            var v = this._v;\n            if (v !== false) {\n                if (this._o.bound) {\n                    removeEvent(document, 'click', this._onClick);\n                }\n                this.el.style.position = 'static'; // reset\n                this.el.style.left = 'auto';\n                this.el.style.top = 'auto';\n                addClass(this.el, 'is-hidden');\n                this._v = false;\n                if (v !== undefined && typeof this._o.onClose === 'function') {\n                    this._o.onClose.call(this);\n                }\n            }\n        },\n\n        /**\n         * GAME OVER\n         */\n        destroy: function()\n        {\n            var opts = this._o;\n\n            this.hide();\n            removeEvent(this.el, 'mousedown', this._onMouseDown, true);\n            removeEvent(this.el, 'touchend', this._onMouseDown, true);\n            removeEvent(this.el, 'change', this._onChange);\n            if (opts.keyboardInput) {\n                removeEvent(document, 'keydown', this._onKeyChange);\n            }\n            if (opts.field) {\n                removeEvent(opts.field, 'change', this._onInputChange);\n                if (opts.bound) {\n                    removeEvent(opts.trigger, 'click', this._onInputClick);\n                    removeEvent(opts.trigger, 'focus', this._onInputFocus);\n                    removeEvent(opts.trigger, 'blur', this._onInputBlur);\n                }\n            }\n            if (this.el.parentNode) {\n                this.el.parentNode.removeChild(this.el);\n            }\n        }\n\n    };\n\n    return Pikaday;\n}));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/pikaday/pikaday.js\n// module id = 455\n// module chunks = 88 89","export { TemplateHelpers } from './ui/Templates/TemplateHelpers';\nexport { TemplateList } from './ui/Templates/TemplateList';\nexport { TemplateCache } from './ui/Templates/TemplateCache';\nexport { HtmlTemplate } from './ui/Templates/HtmlTemplate';\nexport { UnderscoreTemplate } from './ui/Templates/UnderscoreTemplate';\n\n\n\n// WEBPACK FOOTER //\n// ./src/TemplatesModules.ts","import { Initialization } from '../Base/Initialization';\n\nconst fields = ['sflikedby', 'sflikedbyid', 'clickableuri', 'sffeeditemid'];\n\nexport function registerFields() {\n  Initialization.registerComponentFields('ChatterLikedBy', fields);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ChatterLikedBy/ChatterLikedByFields.ts","import { Initialization } from '../Base/Initialization';\n\nconst fields = ['sfcontentversionid', 'sffeeditemid', 'sfcontentfilename', 'sftitle', 'sf_title'];\n\nexport function registerFields() {\n  Initialization.registerComponentFields('ChatterPostAttachment', fields);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ChatterPostAttachment/ChatterPostAttachmentFields.ts","import { Initialization } from '../Base/Initialization';\n\nconst fields = ['sfcreatedby', 'sfcreatedbyid', 'sffeeditemid', 'sfuserid', 'sfinsertedbyid', 'sfparentid', 'sfparentname'];\n\nexport function registerFields() {\n  Initialization.registerComponentFields('ChatterPostedBy', fields);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ChatterPostedBy/ChatterPostedByFields.ts","import { Initialization } from '../Base/Initialization';\n\nconst fields = ['coveochatterfeedtopics'];\n\nexport function registerFields() {\n  Initialization.registerComponentFields('ChatterTopic', fields);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ChatterTopic/ChatterTopicFields.ts","import { Initialization } from '../Base/Initialization';\n\nconst fields = ['objecttype', 'filetype'];\n\nexport function registerFields() {\n  Initialization.registerComponentFields('Icon', fields);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Icon/IconFields.ts","import { Initialization } from '../Base/Initialization';\n\nconst fields = ['parents'];\n\nexport function registerFields() {\n  Initialization.registerComponentFields('PrintableUri', fields);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/PrintableUri/PrintableUriFields.ts","import { Initialization } from '../Base/Initialization';\n\nconst fields = [\n  'urihash', // analytics\n  'collection', // analytics\n  'source', // analytics,\n  'author', // analytics,\n  'date' // used in header of the quickview\n];\n\nexport function registerFields() {\n  Initialization.registerComponentFields('Quickview', fields);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Quickview/QuickviewFields.ts","import { Initialization } from '../Base/Initialization';\n\nexport const fields = [\n  'outlookformacuri',\n  'outlookuri',\n  'connectortype',\n  'urihash', // analytics\n  'collection', // analytics\n  'source', // analytics\n  'author' // analytics\n];\n\nexport function registerFields() {\n  Initialization.registerComponentFields('ResultLink', fields);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResultLink/ResultLinkFields.ts","import { Initialization } from '../Base/Initialization';\n\nconst fields = ['urihash'];\n\nexport function registerFields() {\n  Initialization.registerComponentFields('FollowItem', fields);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/FollowItem/FollowItemFields.ts","import { Initialization } from '../Base/Initialization';\n\nconst fields = [\n  'outlookformacuri',\n  'outlookuri',\n  'connectortype',\n  'urihash', //     ⎫\n  'collection', //   ⎬--- analytics\n  'source' //        ⎭\n];\n\nexport function registerFields() {\n  Initialization.registerComponentFields('Thumbnail', fields);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Thumbnail/ThumbnailFields.ts","import * as _ from 'underscore';\n\n// Webpack output a library target with a temporary name.\n// It does not take care of merging the namespace if the global variable already exists.\n// If another piece of code in the page use the Coveo namespace (eg: extension), then they get overwritten\n// This code swap the current module to the \"real\" Coveo variable, without overwriting the whole global var.\n\nexport function swapVar(scope: any) {\n  if (window['Coveo'] == undefined) {\n    window['Coveo'] = scope;\n  } else {\n    _.each(_.keys(scope), k => {\n      window['Coveo'][k] = scope[k];\n    });\n  }\n  if (window['__extends'] == undefined) {\n    var __extends = function(d, b) {\n      for (var p in b) {\n        if (b.hasOwnProperty(p)) {\n          d[p] = b[p];\n        }\n      }\n      function __() {\n        this.constructor = d;\n      }\n\n      d.prototype = b === null ? Object.create(b) : ((__.prototype = b.prototype), new __());\n    };\n    window['__extends'] = __extends;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/SwapVar.ts","import { Template, TemplateRole } from './Template';\nimport { TemplateList } from './TemplateList';\nimport _ = require('underscore');\n\nexport class TableTemplate extends TemplateList {\n  instantiateRoleToString(role: TemplateRole) {\n    const roledTemplate = _.find(this.templates, t => t.role === role);\n    if (roledTemplate) {\n      return roledTemplate.instantiateToString(undefined, {});\n    } else {\n      return this.defaultRoledTemplates[role];\n    }\n  }\n  instantiateRoleToElement(role: TemplateRole) {\n    const roledTemplate = _.find(this.templates, t => t.role === role);\n    if (roledTemplate) {\n      return roledTemplate.instantiateToElement(undefined, {});\n    } else {\n      const tmpl = new Template(() => this.defaultRoledTemplates[role]);\n      tmpl.layout = 'table';\n      return tmpl.instantiateToElement(undefined);\n    }\n  }\n\n  private defaultTemplate = `<td><a class=\"CoveoResultLink\"></a></td>\n                             <td><span class=\"CoveoExcerpt\"></span></td>\n                             <td><span class=\"CoveoFieldValue\" data-field=\"@date\" data-helper=\"date\"></span></td>`;\n\n  private defaultRoledTemplates = {\n    'table-header': `<th style=\"width: 40%\">Link</th>\n                     <th>Excerpt</th>\n                     <th style=\"width: 20%\"\n                         class=\"CoveoSort coveo-table-header-sort\"\n                         data-sort-criteria=\"date ascending,date descending\"\n                         data-display-unselected-icon=\"false\">Date</th>`,\n    'table-footer': `<th>Link</th>\n                     <th>Excerpt</th>\n                     <th>Date</th>`\n  };\n\n  protected getFallbackTemplate(): Template {\n    return new Template(() => this.defaultTemplate);\n  }\n\n  hasTemplateWithRole(role: TemplateRole) {\n    return _.find(this.templates, t => t.role === role);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Templates/TableTemplate.ts","import { Defer } from '../../misc/Defer';\nimport { without, chain } from 'underscore';\nimport { $$, Dom } from '../../utils/Dom';\n\nexport interface FocusTrapOptions {\n  focusableSelector: string;\n}\n\nexport class FocusTrap {\n  private focusInEvent: (e: FocusEvent) => void;\n  private focusOutEvent: (e: FocusEvent) => void;\n  private hiddenElements: HTMLElement[];\n  private enabled: boolean;\n\n  private get focusableElements(): HTMLElement[] {\n    return chain(Dom.nodeListToArray(this.container.querySelectorAll(this.options.focusableSelector)))\n      .filter(element => $$(element).isVisible())\n      .sortBy(element => element.tabIndex)\n      .value();\n  }\n\n  constructor(\n    private container: HTMLElement,\n    private options: FocusTrapOptions = {\n      focusableSelector: '[tabindex], button'\n    }\n  ) {\n    this.hiddenElements = [];\n    this.enable();\n  }\n\n  public disable() {\n    document.removeEventListener('focusin', this.focusInEvent);\n    document.removeEventListener('focusout', this.focusOutEvent);\n    this.showHiddenElements();\n    this.enabled = false;\n  }\n\n  private enable() {\n    document.addEventListener('focusin', (this.focusInEvent = e => this.onFocusIn(e)));\n    document.addEventListener('focusout', (this.focusOutEvent = e => this.onFocusOut(e)));\n    this.hideAllExcept(this.container);\n    this.enabled = true;\n  }\n\n  private showHiddenElements() {\n    while (this.hiddenElements.length) {\n      this.hiddenElements.pop().removeAttribute('aria-hidden');\n    }\n  }\n\n  private hideElement(element: HTMLElement) {\n    if (element.getAttribute('aria-hidden')) {\n      return;\n    }\n    this.hiddenElements.push(element);\n    element.setAttribute('aria-hidden', `${true}`);\n  }\n\n  private hideSiblings(allowedElement: HTMLElement) {\n    const parent = allowedElement.parentElement;\n    if (parent) {\n      without($$(parent).children(), allowedElement).forEach(elementToHide => {\n        this.hideElement(elementToHide);\n      });\n    }\n  }\n\n  private hideAllExcept(allowedElement: HTMLElement) {\n    this.hideSiblings(allowedElement);\n    const parent = allowedElement.parentElement;\n    if (parent && parent !== document.body) {\n      this.hideAllExcept(parent);\n    }\n  }\n\n  private getFocusableSibling(element: HTMLElement, previous = false) {\n    const elements = this.focusableElements;\n    const currentIndex = elements.indexOf(element);\n    if (currentIndex === -1) {\n      return null;\n    }\n    return elements[(currentIndex + (previous ? -1 : 1) + elements.length) % elements.length];\n  }\n\n  private focusSibling(element: HTMLElement, previous = false) {\n    const sibling = this.getFocusableSibling(element, previous);\n    if (sibling) {\n      sibling.focus();\n    }\n  }\n\n  private focusFirstElement() {\n    const elements = this.focusableElements;\n    if (elements.length) {\n      elements[0].focus();\n    }\n  }\n\n  private elementIsBefore(oldElement: HTMLElement, newElement: HTMLElement) {\n    if (!newElement) {\n      return false;\n    }\n    return oldElement.compareDocumentPosition(newElement) === Node.DOCUMENT_POSITION_PRECEDING;\n  }\n\n  private onLosingFocus(oldElement: HTMLElement, newElement: HTMLElement) {\n    Defer.defer(() => {\n      if (!this.enabled) {\n        return;\n      }\n      this.enabled = false;\n      if (oldElement && this.focusIsAllowed(oldElement)) {\n        this.focusSibling(oldElement, this.elementIsBefore(oldElement, newElement));\n      } else {\n        this.focusFirstElement();\n      }\n      this.enabled = true;\n    });\n  }\n\n  private focusIsAllowed(element: HTMLElement) {\n    return this.container.contains(element);\n  }\n\n  private elementIsInPage(element: HTMLElement) {\n    return element && element !== document.body.parentElement;\n  }\n\n  private onFocusIn(e: FocusEvent) {\n    if (!this.enabled) {\n      return;\n    }\n    const oldElement = e.relatedTarget as HTMLElement;\n    const handledByFocusOut = this.elementIsInPage(oldElement);\n    if (handledByFocusOut) {\n      return;\n    }\n    const newElement = e.target as HTMLElement;\n    if (!this.elementIsInPage(newElement)) {\n      return;\n    }\n    if (!this.focusIsAllowed(newElement)) {\n      this.onLosingFocus(null, newElement);\n    }\n  }\n\n  private onFocusOut(e: FocusEvent) {\n    if (!this.enabled) {\n      return;\n    }\n    const newElement = e.relatedTarget as HTMLElement;\n    if (!this.elementIsInPage(newElement)) {\n      return;\n    }\n    if (!newElement || !this.focusIsAllowed(newElement)) {\n      this.onLosingFocus(e.target as HTMLElement, newElement);\n    }\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/FocusTrap/FocusTrap.ts","import { Template } from './Template';\nimport { IQueryResult } from '../../rest/QueryResult';\n\nexport class DefaultRecommendationTemplate extends Template {\n  instantiateToString(object?: IQueryResult): string {\n    var template = `<div class=\"coveo-result-frame\">\n        <div class=\"coveo-result-row\">\n          <div class=\"coveo-result-cell\" style=\"width:40px;text-align:center;vertical-align:middle;\">\n            <span class=\"CoveoIcon\" data-small=\"true\" data-with-label=\"false\">\n            </span>\n          </div>\n          <div class=\"coveo-result-cell\" style=\"padding:0 0 3px 5px;vertical-align:middle\">\n            <div class=\"coveo-result-row\">\n              <div class=\"coveo-result-cell\" style=\"font-size:10pt;\">\n                <a class=\"CoveoResultLink\" style=\"display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis\">\n                </a>\n              </div>\n            </div>\n          </div>\n        </div>\n      </div>`;\n    return template;\n  }\n\n  instantiateToElement(object?: IQueryResult): Promise<HTMLElement> {\n    return new Promise((resolve, reject) => {\n      var div = document.createElement('div');\n      div.innerHTML = this.instantiateToString(object);\n      resolve(div);\n    });\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Templates/DefaultRecommendationTemplate.ts","import { IQueryResults } from '../../rest/QueryResults';\nimport { IQueryResult } from '../../rest/QueryResult';\nimport { Assert, QueryUtils, Component, Initialization, QueryStateModel } from '../../Core';\nimport { IInitResult } from '../Base/Initialization';\nimport { Template } from './Template';\nimport { SearchInterface } from '../../ui/SearchInterface/SearchInterface';\nimport { ResultList } from '../ResultList/ResultList';\nimport { RendererValidLayout } from '../ResultLayoutSelector/ValidLayout';\nimport { pluck, sortBy, map } from 'underscore';\nimport { $$ } from '../../utils/Dom';\nimport { Logger } from '../../misc/Logger';\n\nexport interface ITemplateToHtml {\n  resultTemplate: Template;\n  queryStateModel: QueryStateModel;\n  searchInterface: SearchInterface;\n}\n\nexport class TemplateToHtml {\n  constructor(public args: ITemplateToHtml) {}\n\n  public async buildResults(\n    results: IQueryResults,\n    layout: RendererValidLayout,\n    currentlyDisplayedResults: IQueryResult[]\n  ): Promise<HTMLElement[]> {\n    const res: { elem: HTMLElement; idx: number }[] = [];\n    const resultsPromises = map(results.results, (result: IQueryResult, index: number) => {\n      return this.buildResult(result, layout, currentlyDisplayedResults).then((resultElement: HTMLElement) => {\n        if (resultElement != null) {\n          res.push({ elem: resultElement, idx: index });\n        }\n        ResultList.resultCurrentlyBeingRendered = null;\n        return resultElement;\n      });\n    });\n\n    // We need to sort by the original index order, because in lazy loading mode, it's possible that results does not gets rendered\n    // in the correct order returned by the index, depending on the time it takes to load all the results component for a given result template\n    return Promise.all(resultsPromises).then(() => {\n      return pluck(sortBy(res, 'idx'), 'elem');\n    });\n  }\n\n  public async buildResult(\n    result: IQueryResult,\n    layout: RendererValidLayout,\n    currentlyDisplayedResults: IQueryResult[]\n  ): Promise<HTMLElement> {\n    Assert.exists(result);\n    QueryUtils.setStateObjectOnQueryResult(this.args.queryStateModel.get(), result);\n    QueryUtils.setSearchInterfaceObjectOnQueryResult(this.args.searchInterface, result);\n    ResultList.resultCurrentlyBeingRendered = result;\n    const resultElement = await this.createHtmlElement(result, layout);\n\n    if (resultElement != null) {\n      Component.bindResultToElement(resultElement, result);\n    }\n    currentlyDisplayedResults.push(result);\n\n    await this.autoCreateComponentsInsideResult(resultElement, result).initResult;\n\n    this.verifyChildren(resultElement);\n    return resultElement;\n  }\n\n  public autoCreateComponentsInsideResult(element: HTMLElement, result: IQueryResult): IInitResult {\n    Assert.exists(element);\n    return Initialization.automaticallyCreateComponentsInsideResult(element, result);\n  }\n\n  private createHtmlElement(result: IQueryResult, layout: RendererValidLayout) {\n    return this.args.resultTemplate.instantiateToElement(result, {\n      wrapInDiv: true,\n      checkCondition: true,\n      currentLayout: layout,\n      responsiveComponents: this.args.searchInterface.responsiveComponents\n    });\n  }\n\n  private verifyChildren(element: HTMLElement) {\n    const containsResultLink = !!$$(element).find('.CoveoResultLink');\n    if (containsResultLink) {\n      return;\n    }\n\n    const msg = `Result does not contain a \"CoveoResultLink\" component, please verify the result template`;\n    new Logger(element).warn(msg, this.args.resultTemplate);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Templates/TemplateToHtml.ts","import { TemplateHelpers, ITemplateHelperFunction } from './TemplateHelpers';\nimport { IHighlight, IHighlightPhrase, IHighlightTerm } from '../../rest/Highlight';\nimport { HighlightUtils, StringAndHoles } from '../../utils/HighlightUtils';\nimport { IStreamHighlightOptions } from '../../utils/StreamHighlightUtils';\nimport { IDateToStringOptions, DateUtils } from '../../utils/DateUtils';\nimport { ICurrencyToStringOptions, CurrencyUtils } from '../../utils/CurrencyUtils';\nimport { IAnchorUtilsOptions, IImageUtilsOptions, AnchorUtils, ImageUtils } from '../../utils/HtmlUtils';\nimport { IQueryResult } from '../../rest/QueryResult';\nimport { Utils } from '../../utils/Utils';\nimport { StringUtils } from '../../utils/StringUtils';\nimport { TimeSpan, ITimeSpanUtilsOptions } from '../../utils/TimeSpanUtils';\nimport { EmailUtils } from '../../utils/EmailUtils';\nimport { QueryUtils } from '../../utils/QueryUtils';\nimport { DeviceUtils } from '../../utils/DeviceUtils';\nimport { $$ } from '../../utils/Dom';\nimport { SearchEndpoint } from '../../rest/SearchEndpoint';\nimport { StreamHighlightUtils } from '../../utils/StreamHighlightUtils';\nimport { FacetUtils } from '../Facet/FacetUtils';\nimport * as Globalize from 'globalize';\nimport { IStringMap } from '../../rest/GenericParam';\nimport * as _ from 'underscore';\nimport { Component } from '../Base/Component';\nimport { TemplateCache } from './TemplateCache';\nimport { INumberFormatOptions } from '../../utils/NumberUtils';\n\n/**\n * The core template helpers provided by default.\n *\n * **Examples:**\n *\n * **HTML**\n *\n * ```html\n * <div class=\"CoveoFieldValue\" data-field=\"@videoduration\" data-helper=\"timeSpan\" data-helper-options-is-milliseconds=\"false\"></div>\n * ```\n *\n * **Underscore**\n *\n * ```erb\n * <%= timeSpan(raw.videoduration, { isMilliseconds: false }) %>\n * ```\n */\nexport interface ICoreHelpers {\n  /**\n   * Shortens a string so that its length does not exceed a specific number of\n   * characters. An ellipsis is appended to the string if it exceeds the\n   * maximum length.\n   *\n   * - `content`: The string to shorten.\n   * - `length`: The maximum length of the resulting string.\n   * - `highlights`: Optional. If provided, the string will be highlighted\n   *   using this highlight information.\n   * - `cssClass`: Optional. When highlighting, the name of the CSS class to use.\n   */\n  shorten: (content: string, length: number, highlights?: IHighlight[], cssClass?: string) => string;\n  /**\n   * Shortens a string using an algorithm suitable for file paths. The helper\n   * will insert an ellipsis in the string where text has been removed when\n   * the path exceeds the maximum length.\n   *\n   * - `content`: The path to shorten.\n   * - `length`: The maximum length of the resulting string.\n   * - `highlights`: Optional. If provided, the string will be highlighted using\n   *   this highlight information.\n   * - `cssClass`: Optional. When highlighting, the name of the CSS class to use.\n   */\n  shortenPath: (content: string, length: number, highlights?: IHighlight[], cssClass?: string) => string;\n  /**\n   * Shortens a string using an algorithm suitable for URIs. The helper will\n   * insert an ellipsis in the string where text has been removed when the URI\n   * exceeds the maximum length.\n   *\n   * - `content`: The URI to shorten.\n   * - `length`: The maximum length of the resulting string.\n   * - `highlights`: Optional. If provided, the string will be highlighted\n   *   using this highlight information.\n   * - `cssClass`: Optional. When highlighting, the name of the CSS class to use.\n   */\n  shortenUri: (content: string, length: number, highlights?: IHighlight[], cssClass?: string) => string;\n  /**\n   * Highlights a string using the provided highlight information.\n   *\n   * - `content`: The URI to shorten.\n   * - `highlights`: Optional. The highlight information to use.\n   * - `cssClass`: Optional. The name of the CSS class to use for highlighting.\n   */\n  highlight: (content: string, highlights?: IHighlight[], cssClass?: string) => string;\n  /**\n   * Highlights the provided terms in a given string.<br/>\n   * By default, the terms to highlight are the current query and the\n   * associated stemming words from the index.\n   * The only required parameter is the content, which specify the string that needs to be highlighted.\n   * The other parameters will normally be automatically resolved for you from the current result object.\n   *\n   * - `content`: The string content to highlight\n   * - `termsToHighlight`: The terms to highlight (see {@link IHighlightTerm})\n   * - `phraseToHighlight`: The phrases to highlight (see {@link IHighlightPhrase})\n   * - `options`: Optional. The options defined below as {@link IStreamHighlightOptions}\n   *\n   * **Note:**\n   * > `highlightStreamText` should only be used for very particular/specific use cases (e.g., augmenting the result template with additional information rather than the typical excerpt/title), and is not a proper replacement for actually having the correct title and excerpt on your results.\n   * >\n   * > Using incorrect result titles or excerpts on your search interface also causes relevancy to suffer greatly, as the index uses the title and excerpt to find relevant results. Consequently, end users are more likely to see results whose titles do not match their query.\n   * >\n   * > Moreover, the recommended method to implement simple title and/or excerpt highlighting is to simply use the {@link Excerpt} and {@link ResultLink} components.\n   */\n  highlightStreamText: (\n    content: string,\n    termsToHighlight: IHighlightTerm,\n    phrasesToHighlight: IHighlightPhrase,\n    options?: IStreamHighlightOptions\n  ) => string;\n  /**\n   * This helper operates exactly like the {@link highlightStreamText} helper, except\n   * that it should be used to highlight HTML content. The helper takes care\n   * of not highlighting the HTML markup.\n   *\n   * - `content`: The string content to highlight\n   * - `termsToHighlight`: The terms to highlight (see {@link IHighlightTerm})\n   * - `phraseToHighlight`: The phrases to highlight (see {@link IHighlightPhrase})\n   * - `options`: Optional. The options defined below as {@link IStreamHighlightOptions}\n   *\n   * **Note:**\n   * > `highlightStreamHTML` should only be used for very particular/specific use cases (e.g., augmenting the result template with additional information rather than the typical excerpt/title), and is not a proper replacement for actually having the correct title and excerpt on your results.\n   * >\n   * > Using incorrect result titles or excerpts on your search interface also causes relevancy to suffer greatly, as the index uses the title and excerpt to find relevant results. Consequently, end users are more likely to see results whose titles do not match their query.\n   * >\n   * > Moreover, the recommended method to implement simple title and/or excerpt highlighting is to simply use the {@link Excerpt} and {@link ResultLink} components.\n   */\n  highlightStreamHTML: (\n    content: string,\n    termsToHighlight: IHighlightTerm,\n    phrasesToHighlight: IHighlightPhrase,\n    options?: IStreamHighlightOptions\n  ) => string;\n  /**\n   * Formats a numeric value using the format string.\n   *\n   * - `content`: The numeric value to format.\n   * - `format` Optional. The string format to use. See the <a href=\"https://github.com/klaaspieter/jquery-global#numbers\" target=\"_blank\">Globalize</a> library for the list of available formats.\n   *\n   * When the helper is used in a [`FieldValue`]{@link FieldValue} component, this value is automatically retrieved from the specified [`field`]{@link FieldValue.options.field}.\n   *\n   * **Example:**\n   *\n   *  ```html\n   *  <div class=\"CoveoFieldValue\" data-field=\"@viewcount\" data-text-caption=\"Views\" data-helper=\"number\" data-helper-options-format=\"n0\"></div>\n   *  ```\n   */\n  number: (content: string, format: string | INumberFormatOptions) => string;\n  /**\n   * Formats a date value to a date-only string using the specified options.\n   *\n   * - `content`: The Date value to format.\n   * - `options`: Optional. The options to use (see {@link IDateToStringOptions}).\n   */\n  date: (content: any, options?: IDateToStringOptions) => string;\n  /**\n   * Formats a date value to a time-only string using the specified options.\n   *\n   * - `content`: The Date value to format.\n   * - `options`: Optional. The options to use (see {@link IDateToStringOptions}).\n   */\n  time: (content: any, options?: IDateToStringOptions) => string;\n  /**\n   * Formats a date value to a date and time string using the specified\n   * options.\n   *\n   * - `content`: The Date value to format.\n   * - `options`: Optional. The options to use (see {@link IDateToStringOptions}).\n   */\n  dateTime: (content: any, options?: IDateToStringOptions) => string;\n  /**\n   * Formats a currency value to a string using the specified options.\n   *\n   * - `content`: The number value to format.\n   * - `options`: Optional. The options to use (see {@link ICurrencyToStringOptions}).\n   */\n  currency: (content: any, options?: ICurrencyToStringOptions) => string;\n  /**\n   * Formats a date value to a date and time string using options suitable for\n   * email dates\n   *\n   * - `content`: The Date value to format.\n   * - `options`: Optional. The options to use (see {@link IDateToStringOptions}).\n   */\n  emailDateTime: (content: any, options?: IDateToStringOptions) => string;\n  /**\n   * Renders one or several email values in `mailto:` hyperlinks.\n   *\n   * - `value`: The string or array of strings that contains a list of semicolon-separated email\n   *   values. When multiple values are passed, each value is displayed in a\n   *   separate hyperlink.\n   * - `companyDomain`: Optional. The string that contains your own domain (e.g.:\n   *   coveo.com). When specified, this parameter allows email addresses\n   *   coming from your own domain to be displayed in a shortened format\n   *   (e.g.: Full Name), whereas email addresses coming from an external\n   *   domain will be displayed in an extended format (e.g.: Full Name\n   *   (domain.com)). If this parameter is not specified, then the shortened\n   *   format will automatically be used.\n   * - `me`: Optional. The string that contains the current username. If it is\n   *   specified, then the email address containing the current username will\n   *   be replaced by the localized string 'Me'.\n   * - `lengthLimit`: Optional. The number of email addresses that you want to display\n   *   before an ellipse is added (e.g.: 'From Joe, John and 5 others').<br/>\n   *   The default value is 2.\n   * - `truncateName`: Optional. When the username is available from the email address,\n   *   then you can specify if you want to truncate the full name. (e.g.:\n   *   'John S.' instead of 'John Smith').<br/>\n   *   The default value is `false`.\n   */\n  email: (value: string | string[], companyDomain?: string, me?: string, lengthLimit?: number, truncateName?: boolean) => string;\n  /**\n   * Formats a clickable HTML link (`<a>`).\n   *\n   * - `href`: The link URI\n   * - `options`: Optional. The options to use (see {@link IAnchorUtilsOptions})\n   */\n  anchor: (href: string, options?: IAnchorUtilsOptions) => string;\n  /**\n   * Formats an HTML image tag (`<img>`).\n   *\n   * - `src`: The image source URI\n   * - `options`: Optional. The options to use (see {@link IImageUtilsOptions})\n   */\n  image: (src: string, options?: IImageUtilsOptions) => string;\n  /**\n   * Formats an HTML image tag (`<img>`), and automatically uses the result\n   * object to query the REST API to get the thumbnail for this result. For\n   * example, this can be used to great effect when designing a template\n   * showing users or previews of files.\n   * - `result`: Optional. The current result object inside your template. In\n   *   underscore, it is referenced as `obj`. By default, the result\n   *   will be resolved automatically from your current template function (\n   *   Meaning the nearest result in the current call stack execution inside\n   *   your template)\n   * - `endpoint`: Optional. The name of the endpoint to use for your\n   *   thumbnail. Default is default.\n   * - `options`: Optional. The options to use (see {@link IImageUtilsOptions}).\n   */\n  thumbnail: (result?: IQueryResult, endpoint?: string, options?: IImageUtilsOptions) => string;\n  /**\n   * Generates an icon based on the file type of the current result. The icon\n   * will be contained inside a `<span>` element with the appropriate CSS\n   * class.\n   *\n   * - `result`: Optional. The current result object inside your template. In\n   *   underscore, it is referenced as `obj`. By default, the result\n   *   will be resolved automatically from your current template function (\n   *   Meaning the nearest result in the current call stack execution inside\n   *   your template)\n   * - `options`: Optional. The options to use (see {@link IIconOptions}).\n   */\n  fromFileTypeToIcon: (result?: IQueryResult, options?: any) => string;\n  /**\n   * Loads a partial template in the current template, by passing the ID of\n   * the template to load, the condition for which this template should be\n   * loaded, and the context object (the object that the loaded template will\n   * use as its data). By default, the context object will be the same as the\n   * template that called this helper function. So, for example, in a\n   * ResultList Component, the contextObject would, by default, be the Query\n   * Results.\n   *\n   * - `templateId`: The ID of the template to load.\n   * - `condition`: Optional. The boolean condition to determine if this template should\n   *   load for this result set. Most of the time this would be a condition of\n   *   the type if raw.somefield == 'something'.\n   * - `contextObject`: Optional. The object that should be used by the loaded template\n   *   as its contextObject.\n   */\n  loadTemplate: (templateId: string, condition?: boolean, contextObject?: any) => string;\n  /**\n   * Given a number, either in millisecond or second, convert to a HH:MM:SS format.\n   *\n   * **Examples**\n   *\n   * >`timeSpan(1, {isMilliseconds: false}) => '00:01'`\n   * >\n   * >`timeSpan(1000, {isMilliseconds: true}) => '00:01'`\n   *\n   * - `value`: The number to convert to a timespan\n   * - `options` : The options to use (see {@link ITimeSpanUtilsOptions})\n   */\n  timeSpan: (value: number, options: ITimeSpanUtilsOptions) => string;\n  /**\n   * Formats a number, which represents a file size in bytes, into a logical unit size.\n   *\n   * **Examples:**\n   *\n   * >`size(1024) => 1024 B`\n   * >\n   * >`size(1025) => 1 KB`\n   * >\n   * >`size(10240) => 10 KB`\n   *\n   * **Examples:**\n   *\n   * >**HTML**\n   * >\n   * > ```html\n   * > <div class=\"CoveoFieldValue\" data-field='@size' data-helper=\"size\" data-helper-options-base=\"1\"></div>\n   * > ```\n   *\n   * >**Underscore**\n   * >\n   * > ```erb\n   * > <%= size(raw.size, {base: 0, precision: 2}) %>\n   * > ```\n   *\n   * - `value`: The number to format\n   * - `options` : The options to use (see {@link ISizeOptions})\n   */\n  size: (value: number, options?: ISizeOptions) => string;\n  /**\n   * Given a filetype value, try to return a translated and human readable version.\n   *\n   * If the filetype is known and recognized by the framework, a translated value will be returned.\n   *\n   * **Examples**\n   *\n   * >`translatedCaption('doc') => Document`\n   * >\n   * >`translatedCaption('xls') => Spreadsheet Document`\n   *\n   * - `value`: The string value to translate\n   */\n  translatedCaption: (value: string) => string;\n  /**\n   * Replace all carriage return in a string by a &lt;br /&gt; tag\n   *\n   * - `value`: The string value to replace the carriage returns in.\n   */\n  encodeCarriageReturn: (value: string) => string;\n  /**\n   * Detect if the results is being rendered in a mobile device.\n   *\n   * If it's not a mobile device, the helper return null ;\n   *\n   * If it's a mobile device, return the type of device (Android, iPhone, iPad) etc.\n   */\n  isMobileDevice: () => string;\n}\n\n/**\n * Available options for the size templateHelpers.\n *\n * Example:\n * <div class=\"CoveoFieldValue\" data-helper=\"helperName\" data-helper-options-optionName=\"option-value\"></div>\n */\nexport interface ISizeOptions {\n  /**\n   * The base into which to format the value.\n   *\n   * Formula: value * 10^(3 * base)\n   *\n   * **Examples:**\n   * > **Base 0:**\n   * >\n   * > 1 => 1B\n   * >\n   * > 1000 => 1KB\n   *\n   * > **Base 1:**\n   * >\n   * > 1 => 1KB\n   * >\n   * > 1000 => 1MB\n   */\n  base?: number;\n  /**\n   * The precision to use to format the size (i.e., the number of digits to display after the decimal)\n   *\n   * **Examples:**\n   * > **Precision 0:**\n   * >\n   * > 1.0 => 1\n   * >\n   * > 1.85 => 1\n   *\n   * > **Precision 1:**\n   * >\n   * > 1.0 => 1.0\n   * >\n   * > 1.85 => 1.8\n   */\n\n  precision?: number;\n}\n\nexport interface IShortenOptions {\n  length: number;\n  highlights?: IHighlight[];\n  cssClass?: string;\n}\n\nexport interface IHighlightsOptions {\n  highlights: IHighlight[];\n  cssClass?: string;\n}\n\nexport interface IHelperStreamHighlightOptions {\n  termsToHighlight: IHighlightTerm;\n  phrasesToHighlight: IHighlightPhrase;\n  opts?: IStreamHighlightOptions;\n}\n\nexport class CoreHelpers {\n  public constructor() {}\n\n  /**\n   * For backward compatibility reason, the \"global\" template helper should be available under the\n   * coveo namespace.\n   * @param scope\n   */\n  public static exportAllHelpersGlobally(scope: IStringMap<any>) {\n    _.each(TemplateHelpers.getHelpers(), (helper: ITemplateHelperFunction, name: string) => {\n      if (scope[name] == undefined) {\n        scope[name] = helper;\n      }\n    });\n  }\n}\n\nTemplateHelpers.registerFieldHelper('javascriptEncode', (value: string) => {\n  return Utils.exists(value) ? StringUtils.javascriptEncode(value) : undefined;\n});\n\nconst executeShorten = (content: string, options: IShortenOptions) => {\n  const strAndHoles = StringAndHoles.shortenString(content, options.length, '...');\n  if (Utils.exists(options.highlights)) {\n    return HighlightUtils.highlightString(strAndHoles.value, options.highlights, strAndHoles.holes, options.cssClass || 'highlight');\n  } else {\n    return strAndHoles.value;\n  }\n};\n\nTemplateHelpers.registerTemplateHelper('shorten', (content: string, length: number, highlights?: IHighlight[], cssClass?: string) => {\n  return executeShorten(content, {\n    length,\n    highlights,\n    cssClass\n  });\n});\n\nTemplateHelpers.registerTemplateHelper('shortenv2', (content: string, options: IShortenOptions) => {\n  return executeShorten(content, options);\n});\n\nconst executeShortenPath = (content: string, options: IShortenOptions) => {\n  const strAndHoles = StringAndHoles.shortenPath(content, options.length);\n  if (Utils.exists(options.highlights)) {\n    return HighlightUtils.highlightString(strAndHoles.value, options.highlights, strAndHoles.holes, options.cssClass || 'highlight');\n  } else {\n    return strAndHoles.value;\n  }\n};\n\nTemplateHelpers.registerTemplateHelper('shortenPath', (content: string, length: number, highlights?: IHighlight[], cssClass?: string) => {\n  return executeShortenPath(content, {\n    length,\n    highlights,\n    cssClass\n  });\n});\n\nTemplateHelpers.registerFieldHelper('shortenPathv2', (content: string, options: IShortenOptions) => {\n  return executeShortenPath(content, options);\n});\n\nconst executeShortenUri = (content: string, options: IShortenOptions) => {\n  const strAndHoles = StringAndHoles.shortenUri(content, options.length);\n\n  if (Utils.exists(options.highlights)) {\n    return HighlightUtils.highlightString(strAndHoles.value, options.highlights, strAndHoles.holes, options.cssClass || 'highlight');\n  } else {\n    return strAndHoles.value;\n  }\n};\n\nTemplateHelpers.registerTemplateHelper('shortenUri', (content: string, length: number, highlights?: IHighlight[], cssClass?: string) => {\n  return executeShortenUri(content, {\n    length,\n    highlights,\n    cssClass\n  });\n});\n\nTemplateHelpers.registerTemplateHelper('shortenUriv2', (content: string, options: IShortenOptions) => {\n  return executeShortenUri(content, options);\n});\n\nconst executeHighlight = (content: string, options: IHighlightsOptions) => {\n  if (Utils.exists(content)) {\n    if (Utils.exists(options.highlights)) {\n      return HighlightUtils.highlightString(content, options.highlights, null, options.cssClass || 'highlight');\n    } else {\n      return content;\n    }\n  } else {\n    return undefined;\n  }\n};\n\nTemplateHelpers.registerTemplateHelper('highlight', (content: string, highlights: IHighlight[], cssClass?: string) => {\n  return executeHighlight(content, {\n    highlights,\n    cssClass\n  });\n});\n\nTemplateHelpers.registerTemplateHelper('highlightv2', (content: string, options: IHighlightsOptions) => {\n  return executeHighlight(content, options);\n});\n\nconst executeHighlightStreamText = (content: string, options: IHelperStreamHighlightOptions) => {\n  if (Utils.exists(content) && Utils.exists(options.termsToHighlight) && Utils.exists(options.phrasesToHighlight)) {\n    if (termsToHighlightAreDefined(options.termsToHighlight, options.phrasesToHighlight)) {\n      return StreamHighlightUtils.highlightStreamText(content, options.termsToHighlight, options.phrasesToHighlight, options.opts);\n    } else {\n      return content;\n    }\n  } else {\n    return undefined;\n  }\n};\n\nTemplateHelpers.registerTemplateHelper(\n  'highlightStreamText',\n  (\n    content: string,\n    termsToHighlight = resolveTermsToHighlight(),\n    phrasesToHighlight = resolvePhrasesToHighlight(),\n    opts?: IStreamHighlightOptions\n  ) => {\n    return executeHighlightStreamText(content, {\n      termsToHighlight,\n      phrasesToHighlight,\n      opts\n    });\n  }\n);\n\nTemplateHelpers.registerTemplateHelper('highlightStreamTextv2', (content: string, options: IHelperStreamHighlightOptions) => {\n  const mergedOptions = {\n    termsToHighlight: resolveTermsToHighlight(),\n    phrasesToHighlight: resolvePhrasesToHighlight(),\n    ...options\n  };\n  return executeHighlightStreamText(content, mergedOptions);\n});\n\nconst executeHighlightStreamHTML = (content: string, options: IHelperStreamHighlightOptions) => {\n  if (Utils.exists(content) && Utils.exists(options.termsToHighlight) && Utils.exists(options.phrasesToHighlight)) {\n    if (termsToHighlightAreDefined(options.termsToHighlight, options.phrasesToHighlight)) {\n      return StreamHighlightUtils.highlightStreamHTML(content, options.termsToHighlight, options.phrasesToHighlight, options.opts);\n    } else {\n      return content;\n    }\n  } else {\n    return undefined;\n  }\n};\n\nTemplateHelpers.registerTemplateHelper(\n  'highlightStreamHTML',\n  (\n    content: string,\n    termsToHighlight = resolveTermsToHighlight(),\n    phrasesToHighlight = resolvePhrasesToHighlight(),\n    opts?: IStreamHighlightOptions\n  ) => {\n    return executeHighlightStreamHTML(content, {\n      termsToHighlight,\n      phrasesToHighlight,\n      opts\n    });\n  }\n);\n\nTemplateHelpers.registerTemplateHelper('highlightStreamHTMLv2', (content: string, options: IHelperStreamHighlightOptions) => {\n  const mergedOptions = {\n    termsToHighlight: resolveTermsToHighlight(),\n    phrasesToHighlight: resolvePhrasesToHighlight(),\n    ...options\n  };\n  return executeHighlightStreamHTML(content, mergedOptions);\n});\n\nTemplateHelpers.registerFieldHelper('number', (value: any, options?: INumberFormatOptions | string) => {\n  if (!Utils.exists(value)) {\n    return undefined;\n  }\n\n  const numberValue = Number(value);\n  const format = _.isString(options) ? options : options && options.format;\n  if (!format) {\n    return StringUtils.htmlEncode(numberValue.toString());\n  }\n\n  return StringUtils.htmlEncode(Globalize.format(numberValue, <string>format));\n});\n\nTemplateHelpers.registerFieldHelper('date', (value: any, options?: IDateToStringOptions) => {\n  return DateUtils.dateToString(DateUtils.convertFromJsonDateIfNeeded(value), options);\n});\n\nTemplateHelpers.registerFieldHelper('time', (value: any, options?: IDateToStringOptions) => {\n  return DateUtils.timeToString(DateUtils.convertFromJsonDateIfNeeded(value), options);\n});\n\nTemplateHelpers.registerFieldHelper('dateTime', (value: any, options?: IDateToStringOptions) => {\n  return DateUtils.dateTimeToString(DateUtils.convertFromJsonDateIfNeeded(value), options);\n});\n\nTemplateHelpers.registerFieldHelper('emailDateTime', (value: any, options?: IDateToStringOptions) => {\n  var defaultOptions = <IDateToStringOptions>{};\n  defaultOptions.includeTimeIfThisWeek = true;\n  var optionsToUse = <IDateToStringOptions>_.extend(options, defaultOptions);\n  return value ? DateUtils.dateTimeToString(DateUtils.convertFromJsonDateIfNeeded(value), optionsToUse) : undefined;\n});\n\nTemplateHelpers.registerFieldHelper('currency', (value: any, options?: ICurrencyToStringOptions) => {\n  return CurrencyUtils.currencyToString(value, options);\n});\n\nTemplateHelpers.registerFieldHelper('timeSpan', (value: any, options: ITimeSpanUtilsOptions = { isMilliseconds: false }) => {\n  return new TimeSpan(value, options.isMilliseconds).getHHMMSS();\n});\n\nTemplateHelpers.registerFieldHelper('email', (value: string | string[], ...args: any[]) => {\n  // support old arguments (value: any, companyDomain: string, me: string, lengthLimit = 2, truncateName = false)\n  var companyDomain: string;\n  var me: string;\n  var lengthLimit: number;\n  var truncateName: boolean;\n  if (_.isObject(args[0])) {\n    companyDomain = args[0]['companyDomain'];\n    me = args[0]['me'];\n    lengthLimit = args[0]['lengthLimit'];\n    truncateName = args[0]['truncateName'];\n  } else {\n    companyDomain = args[0];\n    me = args[1];\n    lengthLimit = args[2];\n    truncateName = args[3];\n  }\n  if (lengthLimit == undefined) {\n    lengthLimit = 2;\n  }\n  if (truncateName == undefined) {\n    truncateName = false;\n  }\n  if (_.isString(value)) {\n    var listOfAddresses = EmailUtils.splitSemicolonSeparatedListOfEmailAddresses(<string>value);\n    return EmailUtils.emailAddressesToHyperlinks(listOfAddresses, companyDomain, me, lengthLimit, truncateName);\n  } else if (_.isArray(value)) {\n    return EmailUtils.emailAddressesToHyperlinks(<string[]>value, companyDomain, me, lengthLimit, truncateName);\n  } else {\n    return undefined;\n  }\n});\n\nTemplateHelpers.registerTemplateHelper('excessEmailToggle', (target: HTMLElement) => {\n  $$(target).removeClass('coveo-active');\n  if ($$(target).hasClass('coveo-emails-excess-collapsed')) {\n    _.each($$(target).siblings('.coveo-emails-excess-expanded'), sibling => {\n      $$(sibling).addClass('coveo-active');\n    });\n  } else if ($$(target).hasClass('coveo-hide-expanded')) {\n    $$(target.parentElement).addClass('coveo-inactive');\n    _.each($$(target.parentElement).siblings('.coveo-emails-excess-collapsed'), sibling => {\n      $$(sibling).addClass('coveo-active');\n    });\n  }\n  return undefined;\n});\n\nTemplateHelpers.registerFieldHelper('anchor', (href: string, options?: IAnchorUtilsOptions) => {\n  return AnchorUtils.buildAnchor(href, options);\n});\n\nTemplateHelpers.registerFieldHelper('image', (src: string, options?: IImageUtilsOptions, result: IQueryResult = resolveQueryResult()) => {\n  if (options && options.srcTemplate) {\n    return ImageUtils.buildImage(StringUtils.buildStringTemplateFromResult(options.srcTemplate, result), {\n      alt: options.alt,\n      height: options.height,\n      width: options.width\n    });\n  }\n  return ImageUtils.buildImage(src, options);\n});\n\nTemplateHelpers.registerTemplateHelper(\n  'thumbnail',\n  (result: IQueryResult = resolveQueryResult(), endpoint: string = 'default', options?: IImageUtilsOptions) => {\n    if (QueryUtils.hasThumbnail(result)) {\n      return ImageUtils.buildImageFromResult(result, SearchEndpoint.endpoints[endpoint], options);\n    }\n  }\n);\n\nTemplateHelpers.registerTemplateHelper('fromFileTypeToIcon', (result: IQueryResult = resolveQueryResult(), options = {}) => {\n  let icon = Component.getComponentRef('Icon');\n  if (icon) {\n    return icon.createIcon(result, options).outerHTML;\n  }\n});\n\nTemplateHelpers.registerTemplateHelper('attrEncode', (value: string) => {\n  return ('' + value) /* Forces the conversion to string. */\n    .replace(/&/g, '&amp;') /* This MUST be the 1st replacement. */\n    .replace(/'/g, '&apos;') /* The 4 other predefined entities, required. */\n    .replace(/'/g, '&quot;')\n    .replace(/</g, '&lt;')\n    .replace(/>/g, '&gt;');\n});\n\nTemplateHelpers.registerTemplateHelper('loadTemplates', (templatesToLoad: { [id: string]: any }, once = true) => {\n  var ret = '';\n  var data = resolveQueryResult();\n  var atLeastOneWasLoaded = false;\n  var toLoad = templatesToLoad;\n  var defaultTmpl;\n  _.each(templatesToLoad, (value, key?, obj?) => {\n    if (value == 'default') {\n      defaultTmpl = key;\n    }\n  });\n  if (defaultTmpl != undefined) {\n    toLoad = _.omit(templatesToLoad, defaultTmpl);\n  }\n  _.each(toLoad, (condition, id?, obj?) => {\n    if (!atLeastOneWasLoaded || !once) {\n      atLeastOneWasLoaded = atLeastOneWasLoaded || condition;\n      ret += TemplateHelpers.getHelper('loadTemplate')(id, condition, data);\n    }\n  });\n  if (!atLeastOneWasLoaded && defaultTmpl != undefined) {\n    ret += TemplateHelpers.getHelper('loadTemplate')(defaultTmpl, true, data);\n  }\n  return ret;\n});\n\nconst byteMeasure = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB'];\n\nTemplateHelpers.registerFieldHelper('size', (value: any, options?: ISizeOptions) => {\n  var size = parseInt(value, 10);\n  var precision = options != null && options.precision != null ? options.precision : 2;\n  var base = options != null && options.base != null ? options.base : 0;\n  while (size > 1024 && base + 1 < byteMeasure.length) {\n    size /= 1024;\n    base++;\n  }\n  size = Math.floor(size * Math.pow(10, precision)) / Math.pow(10, precision);\n  return size + ' ' + byteMeasure[base];\n});\n\nTemplateHelpers.registerFieldHelper('translatedCaption', (value: string) => {\n  return FacetUtils.tryToGetTranslatedCaption('@filetype', value);\n});\n\nTemplateHelpers.registerTemplateHelper('loadTemplate', (id: string, condition: boolean = true, data?: any) => {\n  if (Utils.isNullOrUndefined(data)) {\n    data = resolveQueryResult();\n  }\n  if (condition) {\n    return TemplateCache.getTemplate(id).instantiateToString(data, {\n      checkCondition: false\n    });\n  }\n  return '';\n});\n\nTemplateHelpers.registerTemplateHelper('encodeCarriageReturn', (data: string) => {\n  if (Utils.isNullOrUndefined(data)) {\n    return undefined;\n  } else {\n    return StringUtils.encodeCarriageReturn(data);\n  }\n});\n\nTemplateHelpers.registerTemplateHelper('isMobileDevice', () => {\n  return DeviceUtils.isMobileDevice() ? DeviceUtils.getDeviceName() : null;\n});\n\nfunction resolveQueryResult(): IQueryResult {\n  let found;\n  let resultList = Component.getComponentRef('ResultList');\n  if (resultList) {\n    found = resultList.resultCurrentlyBeingRendered;\n  }\n  if (!found) {\n    let quickview = Component.getComponentRef('Quickview');\n    if (quickview) {\n      found = quickview.resultCurrentlyBeingRendered;\n    }\n  }\n  return found;\n}\n\nfunction resolveTermsToHighlight(): IHighlightTerm {\n  let currentQueryResult = resolveQueryResult();\n  if (currentQueryResult) {\n    return currentQueryResult.termsToHighlight;\n  }\n}\n\nfunction resolvePhrasesToHighlight(): IHighlightPhrase {\n  let currentQueryResult = resolveQueryResult();\n  if (currentQueryResult) {\n    return currentQueryResult.phrasesToHighlight;\n  }\n}\n\nfunction termsToHighlightAreDefined(termsToHighlight, phrasesToHighlight) {\n  return Utils.isNonEmptyArray(_.keys(termsToHighlight)) || Utils.isNonEmptyArray(_.keys(phrasesToHighlight));\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Templates/CoreHelpers.ts","import { once } from 'underscore';\nimport { $$ } from '../../utils/Dom';\n\nexport function bindAnalyticsToLink(element: HTMLElement, logAnalytics: () => void) {\n  const executeOnlyOnce = once(() => logAnalytics());\n\n  $$(element).on(['contextmenu', 'click', 'mousedown', 'mouseup'], executeOnlyOnce);\n  let longPressTimer: number;\n  $$(element).on('touchstart', () => {\n    longPressTimer = window.setTimeout(executeOnlyOnce, 1000);\n  });\n  $$(element).on('touchend', () => {\n    if (longPressTimer) {\n      clearTimeout(longPressTimer);\n    }\n  });\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResultLink/ResultLinkCommon.ts","/**\n * The possible values for the [allowedValuesPatternType]{@link IGroupByRequest.allowedValuesPatternType} property of the `IGroupByRequest` interface.\n */\nexport enum AllowedValuesPatternType {\n  /**\n   * Only supports trailing wildcards in the pattern.\n   */\n  Legacy = 'legacy',\n  /**\n   * Fully supports wildcards.\n   */\n  Wildcards = 'wildcards',\n  /**\n   * Supports regular expression as the pattern.\n   */\n  Regex = 'regex',\n  /**\n   *Applies the Edit Distance algorithm to match values that are close to the specified pattern.\n   */\n  EditDistance = 'editdistance',\n  /**\n   *Applies a phonetic algorithm to match values that are phonetically similar to the specified pattern.\n   */\n  Phonetic = 'phonetic'\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/rest/AllowedValuesPatternType.ts","/// <reference path=\"Facet.ts\" />\nimport { Facet } from './Facet';\nimport { FacetValue } from './FacetValue';\nimport { IPopulateOmniboxObject } from '../Omnibox/OmniboxInterface';\nimport { ValueElementRenderer } from './ValueElementRenderer';\nimport { Utils } from '../../utils/Utils';\nimport { IAnalyticsActionCause, analyticsActionCauseList, IAnalyticsFacetMeta } from '../Analytics/AnalyticsActionListMeta';\nimport { $$ } from '../../utils/Dom';\nimport { KeyboardUtils, KEYBOARD } from '../../utils/KeyboardUtils';\n\nexport interface IValueElementKlass {\n  new (facet: Facet, facetValue: FacetValue): ValueElement;\n}\n\nexport interface IValueElementEventsBinding {\n  displayNextTime: boolean;\n  pinFacet: boolean;\n  omniboxObject?: IPopulateOmniboxObject;\n}\n\nexport class ValueElement {\n  public renderer: ValueElementRenderer;\n  private isOmnibox: boolean;\n\n  constructor(\n    public facet: Facet,\n    public facetValue: FacetValue,\n    public onSelect?: (elem: ValueElement, cause: IAnalyticsActionCause) => void,\n    public onExclude?: (elem: ValueElement, cause: IAnalyticsActionCause) => void\n  ) {}\n\n  public build(): ValueElement {\n    this.renderer = new ValueElementRenderer(this.facet, this.facetValue).build();\n    this.bindEvent({ displayNextTime: true, pinFacet: this.facet.options.preservePosition });\n    return this;\n  }\n\n  public bindEvent(eventBindings: IValueElementEventsBinding) {\n    if (!Utils.isNullOrUndefined(eventBindings.omniboxObject)) {\n      this.isOmnibox = true;\n    } else {\n      this.isOmnibox = false;\n    }\n    this.handleEventForCheckboxChange(eventBindings);\n    if (this.facetValue.excluded) {\n      this.handleEventForExcludedValueElement(eventBindings);\n    } else {\n      this.handleEventForValueElement(eventBindings);\n    }\n  }\n\n  public select() {\n    this.facetValue.selected = true;\n    this.facetValue.excluded = false;\n    this.renderer.setCssClassOnListValueElement();\n  }\n\n  public unselect() {\n    this.facetValue.selected = false;\n    this.facetValue.excluded = false;\n    this.renderer.setCssClassOnListValueElement();\n  }\n\n  public exclude() {\n    this.facetValue.selected = false;\n    this.facetValue.excluded = true;\n    this.renderer.setCssClassOnListValueElement();\n  }\n\n  public unexclude() {\n    this.facetValue.selected = false;\n    this.facetValue.excluded = false;\n    this.renderer.setCssClassOnListValueElement();\n  }\n\n  public toggleExcludeWithUA() {\n    let actionCause: IAnalyticsActionCause;\n    if (this.facetValue.excluded) {\n      actionCause = this.isOmnibox ? analyticsActionCauseList.omniboxFacetUnexclude : analyticsActionCauseList.facetUnexclude;\n    } else {\n      actionCause = this.isOmnibox ? analyticsActionCauseList.omniboxFacetExclude : analyticsActionCauseList.facetExclude;\n    }\n\n    this.facet.toggleExcludeValue(this.facetValue);\n\n    if (this.onExclude) {\n      this.facet.triggerNewQuery(() => this.onExclude(this, actionCause));\n    } else {\n      this.facet.triggerNewQuery(() =>\n        this.facet.usageAnalytics.logSearchEvent<IAnalyticsFacetMeta>(actionCause, this.getAnalyticsFacetMeta())\n      );\n    }\n  }\n\n  protected handleSelectValue(eventBindings: IValueElementEventsBinding) {\n    this.facet.keepDisplayedValuesNextTime = eventBindings.displayNextTime && !this.facet.options.useAnd;\n    var actionCause: IAnalyticsActionCause;\n    if (this.facetValue.excluded) {\n      actionCause = this.isOmnibox ? analyticsActionCauseList.omniboxFacetUnexclude : analyticsActionCauseList.facetUnexclude;\n      this.facet.unexcludeValue(this.facetValue);\n    } else {\n      if (this.facetValue.selected) {\n        actionCause = this.isOmnibox ? analyticsActionCauseList.omniboxFacetDeselect : analyticsActionCauseList.facetDeselect;\n      } else {\n        actionCause = this.isOmnibox ? analyticsActionCauseList.omniboxFacetSelect : analyticsActionCauseList.facetSelect;\n      }\n      this.facet.toggleSelectValue(this.facetValue);\n    }\n    if (this.onSelect) {\n      this.facet.triggerNewQuery(() => this.onSelect(this, actionCause));\n    } else {\n      this.facet.triggerNewQuery(() =>\n        this.facet.usageAnalytics.logSearchEvent<IAnalyticsFacetMeta>(actionCause, this.getAnalyticsFacetMeta())\n      );\n    }\n  }\n\n  protected handleExcludeClick(eventBindings: IValueElementEventsBinding) {\n    this.facet.keepDisplayedValuesNextTime = eventBindings.displayNextTime && !this.facet.options.useAnd;\n    this.toggleExcludeWithUA();\n  }\n\n  protected handleSelectEventForExcludedValueElement(eventBindings: IValueElementEventsBinding) {\n    const clickEvent = () => {\n      if (eventBindings.pinFacet) {\n        this.facet.pinFacetPosition();\n      }\n      if (eventBindings.omniboxObject) {\n        this.omniboxCloseEvent(eventBindings.omniboxObject);\n      }\n      this.handleSelectValue(eventBindings);\n      this.tryDismissSearchResults();\n      return false;\n    };\n\n    $$(this.renderer.label).on('click', e => {\n      e.stopPropagation();\n      clickEvent();\n    });\n\n    $$(this.renderer.stylishCheckbox).on('keydown', KeyboardUtils.keypressAction([KEYBOARD.SPACEBAR, KEYBOARD.ENTER], clickEvent));\n  }\n\n  protected handleExcludeEventForValueElement(eventBindings: IValueElementEventsBinding) {\n    const excludeAction = (event: Event) => {\n      if (eventBindings.omniboxObject) {\n        this.omniboxCloseEvent(eventBindings.omniboxObject);\n      }\n\n      this.handleExcludeClick(eventBindings);\n\n      this.tryDismissSearchResults();\n      event.stopPropagation();\n      event.preventDefault();\n    };\n    $$(this.renderer.excludeIcon).on('click', excludeAction);\n\n    $$(this.renderer.excludeIcon).on('keydown', KeyboardUtils.keypressAction([KEYBOARD.SPACEBAR, KEYBOARD.ENTER], excludeAction));\n  }\n\n  protected handleSelectEventForValueElement(eventBindings: IValueElementEventsBinding) {\n    const selectAction = (event: Event) => {\n      if (eventBindings.pinFacet) {\n        this.facet.pinFacetPosition();\n      }\n\n      this.tryDismissSearchResults();\n      $$(this.renderer.checkbox).trigger('change');\n      event.preventDefault();\n    };\n\n    $$(this.renderer.label).on('click', selectAction);\n\n    $$(this.renderer.stylishCheckbox).on('keydown', KeyboardUtils.keypressAction([KEYBOARD.SPACEBAR, KEYBOARD.ENTER], selectAction));\n  }\n\n  protected handleEventForExcludedValueElement(eventBindings: IValueElementEventsBinding) {\n    this.handleSelectEventForExcludedValueElement(eventBindings);\n    this.handleExcludeEventForValueElement(eventBindings);\n  }\n\n  protected handleEventForValueElement(eventBindings: IValueElementEventsBinding) {\n    this.handleSelectEventForValueElement(eventBindings);\n    this.handleExcludeEventForValueElement(eventBindings);\n  }\n\n  protected handleEventForCheckboxChange(eventBindings: IValueElementEventsBinding) {\n    $$(this.renderer.checkbox).on('change', () => {\n      if (eventBindings.omniboxObject) {\n        this.omniboxCloseEvent(eventBindings.omniboxObject);\n      }\n      this.handleSelectValue(eventBindings);\n    });\n  }\n\n  protected omniboxCloseEvent(eventArg: IPopulateOmniboxObject) {\n    eventArg.closeOmnibox();\n    eventArg.clear();\n  }\n\n  private tryDismissSearchResults() {\n    if (this.facet && this.facet.facetSearch && this.facet.facetSearch.dismissSearchResults) {\n      this.facet.facetSearch.dismissSearchResults();\n    }\n  }\n\n  private getAnalyticsFacetMeta(): IAnalyticsFacetMeta {\n    return {\n      facetId: this.facet.options.id,\n      facetField: this.facet.options.field.toString(),\n      facetValue: this.facetValue.value,\n      facetTitle: this.facet.options.title\n    };\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Facet/ValueElement.ts","import { Facet } from './Facet';\nimport { FacetValue } from './FacetValue';\nimport { $$ } from '../../utils/Dom';\nimport { Utils } from '../../utils/Utils';\nimport { l } from '../../strings/Strings';\nimport { Component } from '../Base/Component';\nimport * as _ from 'underscore';\nimport { SVGIcons } from '../../utils/SVGIcons';\nimport { SVGDom } from '../../utils/SVGDom';\n\nexport class ValueElementRenderer {\n  public listItem: HTMLElement;\n  public label: HTMLElement;\n  public checkbox: HTMLElement;\n  public stylishCheckbox: HTMLElement;\n  public valueCaption: HTMLElement;\n  public valueCount: HTMLElement;\n  public icon: HTMLElement;\n  public excludeIcon: HTMLElement;\n  public computedField: HTMLElement;\n  private facetValueLabelWrapper: HTMLElement;\n\n  constructor(public facet: Facet, public facetValue: FacetValue) {}\n\n  public withNo(element: HTMLElement[]): ValueElementRenderer;\n  public withNo(element: HTMLElement): ValueElementRenderer;\n  public withNo(element: any): ValueElementRenderer {\n    if (_.isArray(element)) {\n      _.each(element, (e: HTMLElement) => {\n        if (e) {\n          $$(e).detach();\n        }\n      });\n    } else {\n      if (element) {\n        $$(element).detach();\n      }\n    }\n    return this;\n  }\n\n  public build(): ValueElementRenderer {\n    this.buildListItem();\n    this.initAndAppendLabel();\n    this.initAndAppendExcludeIcon();\n    this.setCssClassOnListValueElement();\n    this.addAccessibilityAttributesToTargetElement();\n    return this;\n  }\n\n  public setCssClassOnListValueElement(): void {\n    $$(this.listItem).toggleClass('coveo-selected', this.facetValue.selected);\n    $$(this.listItem).toggleClass('coveo-excluded', this.facetValue.excluded);\n  }\n\n  public get accessibleElement() {\n    return this.stylishCheckbox;\n  }\n\n  protected buildExcludeIcon(): HTMLElement {\n    const isExcluded = this.facetValue.excluded;\n    const excludeIcon = $$('div', {\n      ariaLabel: l('ExcludeValueWithResultCount', this.caption, l('ResultCount', this.count, parseInt(this.count, 10))),\n      className: 'coveo-facet-value-exclude',\n      tabindex: 0,\n      role: 'button',\n      ariaPressed: isExcluded.toString()\n    }).el;\n    this.addFocusAndBlurEventListeners(excludeIcon);\n    excludeIcon.innerHTML = isExcluded ? SVGIcons.icons.plus : SVGIcons.icons.checkboxHookExclusionMore;\n    SVGDom.addClassToSVGInContainer(excludeIcon, isExcluded ? 'coveo-facet-value-unexclude-svg' : 'coveo-facet-value-exclude-svg');\n    SVGDom.addAttributesToSVGInContainer(excludeIcon, { 'aria-hidden': 'true' });\n    return excludeIcon;\n  }\n\n  protected buildValueComputedField(): HTMLElement {\n    const computedField = this.facetValue.getFormattedComputedField(this.facet.options.computedFieldFormat);\n    if (Utils.isNonEmptyString(computedField)) {\n      const elem = $$('span', {\n        className: 'coveo-facet-value-computed-field'\n      }).el;\n      $$(elem).text(computedField);\n      return elem;\n    } else {\n      return undefined;\n    }\n  }\n\n  protected buildValueCheckbox(): HTMLElement {\n    const checkbox = $$('input', {\n      type: 'checkbox',\n      ariaHidden: true,\n      ariaLabel: this.ariaLabel\n    }).el;\n\n    this.facetValue.selected ? checkbox.setAttribute('checked', 'checked') : checkbox.removeAttribute('checked');\n    this.facetValue.excluded ? checkbox.setAttribute('disabled', 'disabled') : checkbox.removeAttribute('disabled');\n\n    Component.pointElementsToDummyForm(checkbox);\n    return checkbox;\n  }\n\n  protected buildValueStylishCheckbox(): HTMLElement {\n    const checkbox = $$('div', {\n      className: 'coveo-facet-value-checkbox',\n      tabindex: 0\n    }).el;\n    checkbox.innerHTML = SVGIcons.icons.checkboxHookExclusionMore;\n    SVGDom.addClassToSVGInContainer(checkbox, 'coveo-facet-value-checkbox-svg');\n    this.addFocusAndBlurEventListeners(checkbox);\n    return checkbox;\n  }\n\n  protected buildValueIcon(): HTMLElement {\n    const icon = this.getValueIcon();\n    if (Utils.exists(icon)) {\n      return $$('img', {\n        className: 'coveo-facet-value-icon coveo-icon',\n        src: this.getValueIcon()\n      }).el;\n    } else {\n      return this.buildValueIconFromSprite();\n    }\n  }\n\n  protected getValueIcon(): string {\n    if (Utils.exists(this.facet.options.valueIcon)) {\n      return this.facet.options.valueIcon(this.facetValue);\n    } else {\n      return undefined;\n    }\n  }\n\n  protected buildValueIconFromSprite(): HTMLElement {\n    return $$('div', {\n      className: 'coveo-facet-value-icon coveo-icon ' + this.facet.options.field.substr(1) + ' ' + this.facetValue.value\n    }).el;\n  }\n\n  protected buildValueCaption(): HTMLElement {\n    const valueCaption = $$('span', {\n      className: 'coveo-facet-value-caption',\n      title: this.caption,\n      'data-original-value': this.facetValue.value\n    }).el;\n\n    $$(valueCaption).text(this.caption);\n    return valueCaption;\n  }\n\n  protected buildValueCount(): HTMLElement {\n    if (Utils.isNonEmptyString(this.count)) {\n      const countElement = $$('span', {\n        className: 'coveo-facet-value-count'\n      }).el;\n      $$(countElement).text(this.count);\n      return countElement;\n    } else {\n      return undefined;\n    }\n  }\n\n  private get caption() {\n    return this.facet.getValueCaption(this.facetValue);\n  }\n\n  private get count() {\n    return this.facetValue.getFormattedCount();\n  }\n\n  private addFocusAndBlurEventListeners(elem: HTMLElement) {\n    $$(elem).on('focus', () => $$(this.listItem).addClass('coveo-focused'));\n    $$(elem).on('blur', () => $$(this.listItem).removeClass('coveo-focused'));\n  }\n\n  private buildListItem() {\n    this.listItem = $$('li', { className: 'coveo-facet-value coveo-facet-selectable', ariaLabel: this.ariaLabel }).el;\n\n    if (!$$(this.listItem).canHandleEvent('touchstart')) {\n      $$(this.listItem).addClass('coveo-with-hover');\n    }\n\n    this.listItem.setAttribute('data-value', this.facetValue.value);\n  }\n\n  private initAndAppendLabel() {\n    this.label = $$('label', { className: 'coveo-facet-value-label', role: 'group' }).el;\n    this.tryToInitAndAppendComputedField();\n    this.initAndAppendFacetValueLabelWrapper();\n    this.listItem.appendChild(this.label);\n  }\n\n  private initAndAppendExcludeIcon() {\n    this.excludeIcon = this.buildExcludeIcon();\n    this.attachExcludeIconEventHandlers();\n    this.listItem.appendChild(this.excludeIcon);\n  }\n\n  private attachExcludeIconEventHandlers() {\n    $$(this.excludeIcon).on('mouseover', () => {\n      $$(this.listItem).addClass('coveo-facet-value-will-exclude');\n    });\n\n    $$(this.excludeIcon).on('mouseout', () => {\n      $$(this.listItem).removeClass('coveo-facet-value-will-exclude');\n    });\n  }\n\n  private tryToInitAndAppendComputedField() {\n    if (!Utils.exists(this.facetValue.computedField)) {\n      return;\n    }\n\n    this.computedField = this.buildValueComputedField();\n\n    if (!this.computedField) {\n      return;\n    }\n\n    this.label.appendChild(this.computedField);\n    $$(this.label).addClass('coveo-with-computed-field');\n  }\n\n  private initAndAppendFacetValueLabelWrapper() {\n    this.facetValueLabelWrapper = $$('div', { className: 'coveo-facet-value-label-wrapper' }).el;\n\n    this.initAndAppendCheckbox();\n    this.initAndAppendStylishCheckbox();\n    this.initAndAppendValueCaption();\n    this.initAndAppendValueCount();\n\n    this.label.appendChild(this.facetValueLabelWrapper);\n  }\n\n  private initAndAppendCheckbox() {\n    this.checkbox = this.buildValueCheckbox();\n    this.facetValueLabelWrapper.appendChild(this.checkbox);\n  }\n\n  private initAndAppendStylishCheckbox() {\n    this.stylishCheckbox = this.buildValueStylishCheckbox();\n    this.facetValueLabelWrapper.appendChild(this.stylishCheckbox);\n  }\n\n  private initAndAppendValueCount() {\n    this.valueCount = this.buildValueCount();\n\n    if (!this.valueCount) {\n      return;\n    }\n\n    this.facetValueLabelWrapper.appendChild(this.valueCount);\n  }\n\n  private initAndAppendValueCaption() {\n    this.valueCaption = this.buildValueCaption();\n    this.facetValueLabelWrapper.appendChild(this.valueCaption);\n  }\n\n  private addAccessibilityAttributesToTargetElement() {\n    const el = this.accessibleElement;\n    el.setAttribute('aria-label', this.ariaLabel);\n    el.setAttribute('role', 'button');\n    el.setAttribute('aria-pressed', this.ariaPressed);\n  }\n\n  private get ariaLabel() {\n    const resultCount = l('ResultCount', this.count, parseInt(this.count, 10));\n    return `${l('IncludeValueWithResultCount', this.caption, resultCount)}`;\n  }\n\n  private get ariaPressed() {\n    if (this.facetValue.excluded) {\n      return 'mixed';\n    }\n    return this.facetValue.selected ? 'true' : 'false';\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Facet/ValueElementRenderer.ts","import { Facet } from './Facet';\nimport { FacetValue } from './FacetValue';\nimport { StringUtils } from '../../utils/StringUtils';\nimport { FacetSort } from './FacetSort';\nimport { IIndexFieldValue } from '../../rest/FieldValue';\nimport * as _ from 'underscore';\n\nexport class FacetValuesOrder {\n  constructor(public facet: Facet, public facetSort: FacetSort) {}\n\n  public reorderValues(facetValues: IIndexFieldValue[]): IIndexFieldValue[];\n  public reorderValues(facetValues: FacetValue[]): FacetValue[];\n  public reorderValues(facetValues: any[]): FacetValue[] | IIndexFieldValue[] {\n    if (this.facetSort && this.facetSort.activeSort) {\n      if (this.usingCustomSort) {\n        return this.reorderValuesWithCustomOrder(facetValues);\n      }\n\n      if (this.usingAlphabeticalSort) {\n        return this.reorderValuesWithCustomCaption(facetValues);\n      }\n    }\n    return facetValues;\n  }\n\n  public reorderValuesIfUsingCustomSort(values: FacetValue[]) {\n    return this.usingCustomSort ? this.reorderValuesWithCustomOrder(values) : values;\n  }\n\n  public reorderValuesIfUsingAlphabeticalSort(values: FacetValue[]) {\n    return this.usingAlphabeticalSort ? this.reorderValuesWithCustomCaption(values) : values;\n  }\n\n  private get usingCustomSort() {\n    return this.facetSort.activeSort.name == 'custom' && this.facet.options.customSort != undefined;\n  }\n\n  private get usingAlphabeticalSort() {\n    return this.facetSort.activeSort.name.indexOf('alpha') != -1;\n  }\n\n  private reorderValuesWithCustomOrder(facetValues: FacetValue[]) {\n    let customSortsLowercase = _.map(this.facet.options.customSort, customSort => customSort.toLowerCase());\n    let valueIndexPair = _.map(facetValues, (facetValue, i) => {\n      // Get the index of the current value in the custom sort array.\n      // If it's not found, put it's index to it's original value + the length of customSort so that's always after the specified custom sort order.\n      let index = _.findIndex(customSortsLowercase, customSort => {\n        return (\n          StringUtils.equalsCaseInsensitive(<string>customSort, facetValue.value) ||\n          (facetValue.lookupValue != null && StringUtils.equalsCaseInsensitive(<string>customSort, facetValue.lookupValue))\n        );\n      });\n      if (index == -1) {\n        index = i + customSortsLowercase.length;\n      }\n      return { facetValue: facetValue, index: index };\n    });\n    let sorted = _.sortBy(valueIndexPair, 'index');\n    sorted = this.facetSort.customSortDirection == 'ascending' ? sorted : sorted.reverse();\n    return _.pluck(sorted, 'facetValue');\n  }\n\n  private reorderValuesWithCustomCaption(facetValues: FacetValue[]) {\n    let sorted = facetValues.sort((firstValue, secondValue) => {\n      return this.facet.getValueCaption(firstValue).localeCompare(this.facet.getValueCaption(secondValue), String['locale'], {\n        sensitivity: 'base'\n      });\n    });\n    if (this.facetSort.activeSort.name.indexOf('descending') != -1) {\n      sorted = sorted.reverse();\n    }\n    return sorted;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Facet/FacetValuesOrder.ts","import { $$, Dom } from '../../utils/Dom';\nimport { SVGIcons } from '../../utils/SVGIcons';\nimport { SVGDom } from '../../utils/SVGDom';\nimport { Component } from '../Base/Component';\nimport { l } from '../../strings/Strings';\nimport { EventsUtils } from '../../utils/EventsUtils';\nimport { IFacetSearch } from './IFacetSearch';\nimport { FacetSearchUserInputHandler } from './FacetSearchUserInputHandler';\nimport { uniqueId } from 'underscore';\nimport { ISearchDropdownNavigator, ISearchDropdownConfig } from './FacetSearchDropdownNavigation/DefaultSearchDropdownNavigator';\nimport { SearchDropdownNavigatorFactory } from './FacetSearchDropdownNavigation/SearchDropdownNavigatorFactory';\nimport { KEYBOARD } from '../../utils/KeyboardUtils';\n\nexport class FacetSearchElement {\n  public search: HTMLElement | undefined;\n  public magnifier: HTMLElement | undefined;\n  public wait: HTMLElement | undefined;\n  public clear: HTMLElement | undefined;\n  public input: HTMLInputElement | undefined;\n  public combobox: HTMLElement | undefined;\n  public searchBarIsAnimating: boolean = false;\n  public searchResults: HTMLElement;\n  public facetSearchUserInputHandler: FacetSearchUserInputHandler;\n\n  private triggeredScroll = false;\n  private facetSearchId = uniqueId('coveo-facet-search-results');\n  private facetValueNotFoundId = uniqueId('coveo-facet-value-not-found');\n  private searchDropdownNavigator: ISearchDropdownNavigator;\n\n  constructor(private facetSearch: IFacetSearch) {\n    this.facetSearchUserInputHandler = new FacetSearchUserInputHandler(this.facetSearch);\n    this.initSearchResults();\n  }\n\n  public build(handleFacetSearchClear?: () => void) {\n    this.search = document.createElement('div');\n    $$(this.search).addClass('coveo-facet-search');\n\n    this.magnifier = this.buildMagnifierIcon();\n    this.search.appendChild(this.magnifier);\n\n    this.wait = this.buildWaitIcon();\n    this.search.appendChild(this.wait);\n\n    this.hideFacetSearchWaitingAnimation();\n\n    this.clear = $$('div', { className: 'coveo-facet-search-clear', title: l('Clear', l('Search')) }, SVGIcons.icons.clear).el;\n    SVGDom.addClassToSVGInContainer(this.clear, 'coveo-facet-search-clear-svg');\n    this.clear.style.display = 'none';\n    this.search.appendChild(this.clear);\n\n    this.combobox = this.buildCombobox();\n    this.search.appendChild(this.combobox);\n\n    this.input = this.buildInputElement();\n    Component.pointElementsToDummyForm(this.input);\n    this.combobox.appendChild(this.input);\n\n    $$(this.input).on('keyup', (e: KeyboardEvent) => {\n      this.facetSearchUserInputHandler.handleKeyboardEvent(e);\n    });\n    $$(this.clear).on('click', (e: Event) => {\n      handleFacetSearchClear && handleFacetSearchClear();\n    });\n    $$(this.input).on('focus', (e: Event) => {\n      this.handleFacetSearchFocus();\n    });\n    $$(this.input).on('blur', (e: FocusEvent) => this.onInputBlur(e));\n\n    this.detectSearchBarAnimation();\n    this.initSearchDropdownNavigator();\n\n    return this.search;\n  }\n\n  private initSearchResults() {\n    this.searchResults = $$('ul', { id: this.facetSearchId, className: 'coveo-facet-search-results', role: 'listbox' }).el;\n    $$(this.searchResults).on('scroll', () => this.handleScrollEvent());\n    $$(this.searchResults).on('keyup', (e: KeyboardEvent) => {\n      if (e.which === KEYBOARD.ESCAPE) {\n        this.facetSearch.dismissSearchResults();\n      }\n    });\n    $$(this.searchResults).on('focusout', (event: FocusEvent) => this.onSearchResultsFocusOut(event));\n    $$(this.searchResults).hide();\n  }\n\n  private onInputBlur(e: FocusEvent) {\n    const target = e.relatedTarget as HTMLElement;\n    const isUsingKeyboard = !!target;\n    const focusedOnSearchResult = this.searchResults.contains(target);\n\n    if (isUsingKeyboard && !focusedOnSearchResult) {\n      this.facetSearch.dismissSearchResults();\n    }\n  }\n\n  private onSearchResultsFocusOut(e: FocusEvent) {\n    const target = e.relatedTarget as HTMLElement;\n    const isUsingKeyboard = !!target;\n    const focusedOnInput = this.input.contains(target);\n    const focusedOnSearchResult = this.searchResults.contains(target);\n\n    if (isUsingKeyboard && !focusedOnInput && !focusedOnSearchResult) {\n      this.facetSearch.dismissSearchResults();\n    }\n  }\n\n  private initSearchDropdownNavigator() {\n    const config: ISearchDropdownConfig = {\n      input: this.input,\n      searchResults: this.searchResults,\n      setScrollTrigger: (val: boolean) => (this.triggeredScroll = val)\n    };\n\n    this.searchDropdownNavigator = SearchDropdownNavigatorFactory(this.facetSearch, config);\n  }\n\n  private buildCombobox() {\n    return $$('div', {\n      className: 'coveo-facet-search-middle',\n      ariaHaspopup: 'listbox',\n      ariaExpanded: 'true'\n    }).el;\n  }\n\n  public showFacetSearchWaitingAnimation() {\n    this.magnifier && $$(this.magnifier).hide();\n    $$(this.wait).show();\n  }\n\n  public getValueInInputForFacetSearch() {\n    return this.input.value.trim();\n  }\n\n  public hideFacetSearchWaitingAnimation() {\n    $$(this.magnifier).show();\n    $$(this.wait).hide();\n  }\n\n  public detectSearchBarAnimation() {\n    EventsUtils.addPrefixedEvent(this.search, 'AnimationStart', event => {\n      if (event.animationName == 'grow') {\n        this.searchBarIsAnimating = true;\n      }\n    });\n\n    EventsUtils.addPrefixedEvent(this.search, 'AnimationEnd', event => {\n      if (event.animationName == 'grow') {\n        this.searchBarIsAnimating = false;\n      }\n    });\n  }\n\n  public positionSearchResults() {\n    if (this.searchResults != null) {\n      $$(this.searchResults).insertAfter(this.search);\n      $$(this.searchResults).show();\n\n      if ($$(this.searchResults).css('display') == 'none') {\n        this.searchResults.style.display = '';\n      }\n      let searchBar = $$(this.search);\n      if (searchBar.css('display') == 'none' || this.searchBarIsAnimating) {\n        if ($$(this.searchResults).css('display') == 'none') {\n          this.searchResults.style.display = '';\n        }\n        EventsUtils.addPrefixedEvent(this.search, 'AnimationEnd', () => {\n          EventsUtils.removePrefixedEvent(this.search, 'AnimationEnd', this);\n        });\n      }\n    }\n    this.addAriaAttributes();\n  }\n\n  public setAsCurrentResult(toSet: Dom) {\n    this.searchDropdownNavigator.setAsCurrentResult(toSet);\n  }\n\n  public get currentResult() {\n    return this.searchDropdownNavigator.currentResult;\n  }\n\n  public moveCurrentResultDown() {\n    this.searchDropdownNavigator.focusNextElement();\n  }\n\n  public moveCurrentResultUp() {\n    this.searchDropdownNavigator.focusPreviousElement();\n  }\n\n  public highlightCurrentQueryInSearchResults(regex: RegExp) {\n    const captions = this.facetSearch.getCaptions();\n    captions.forEach(caption => {\n      caption.innerHTML = $$(caption).text().replace(regex, '<span class=\"coveo-highlight\">$1</span>');\n    });\n  }\n\n  public appendToSearchResults(el: HTMLElement) {\n    this.searchResults.appendChild(el);\n    this.setupFacetSearchResultsEvents(el);\n  }\n\n  public emptyAndShowNoResults() {\n    $$(this.searchResults).empty();\n    this.searchResults.appendChild(\n      $$(\n        'li',\n        { id: this.facetValueNotFoundId, className: 'coveo-facet-value-not-found', role: 'option', ariaSelected: 'true', tabindex: 0 },\n        l('NoValuesFound')\n      ).el\n    );\n    this.input.setAttribute('aria-activedescendant', this.facetValueNotFoundId);\n  }\n\n  public updateAriaLiveWithResults(inputValue: string, numberOfResults: number, moreValuesToFetch: boolean) {\n    let ariaLiveText =\n      inputValue === ''\n        ? l('ShowingResults', numberOfResults, inputValue, numberOfResults)\n        : l('ShowingResultsWithQuery', numberOfResults, inputValue, numberOfResults);\n\n    if (moreValuesToFetch) {\n      ariaLiveText = `${ariaLiveText} (${l('MoreValuesAvailable')})`;\n    }\n\n    this.facetSearch.updateAriaLive(ariaLiveText);\n  }\n\n  public focus() {\n    this.input.focus();\n    this.handleFacetSearchFocus();\n  }\n\n  private handleFacetSearchFocus() {\n    if (this.facetSearch.currentlyDisplayedResults == null) {\n      this.facetSearch.displayNewValues();\n      this.addAriaAttributes();\n    }\n  }\n\n  private setupFacetSearchResultsEvents(el: HTMLElement) {\n    $$(el).on('mousemove', () => {\n      this.setAsCurrentResult($$(el));\n    });\n\n    // Prevent closing the search results on the end of a touch drag\n    let touchDragging = false;\n    let mouseDragging = false;\n    $$(el).on('mousedown', () => (mouseDragging = false));\n    $$(el).on('mousemove', () => (mouseDragging = true));\n    $$(el).on('touchmove', () => (touchDragging = true));\n\n    $$(el).on('mouseup touchend', () => {\n      if (!touchDragging && !mouseDragging) {\n        setTimeout(() => {\n          this.facetSearch.dismissSearchResults();\n        }, 0); // setTimeout is to give time to trigger the click event before hiding the search menu.\n      }\n      touchDragging = false;\n      mouseDragging = false;\n    });\n  }\n\n  public hideSearchResultsElement() {\n    this.removeAriaAttributes();\n    $$(this.searchResults).hide();\n    $$(this.searchResults).remove();\n  }\n\n  public clearSearchInput() {\n    if (this.input) {\n      this.input.value = '';\n    }\n  }\n\n  private buildMagnifierIcon() {\n    const magnifier = document.createElement('div');\n    magnifier.innerHTML = SVGIcons.icons.search;\n    $$(magnifier).addClass('coveo-facet-search-magnifier');\n    SVGDom.addClassToSVGInContainer(magnifier, 'coveo-facet-search-magnifier-svg');\n    this.search.appendChild(magnifier);\n    return magnifier;\n  }\n\n  private buildWaitIcon() {\n    const wait = document.createElement('div');\n    wait.innerHTML = SVGIcons.icons.loading;\n    $$(wait).addClass('coveo-facet-search-wait-animation');\n    SVGDom.addClassToSVGInContainer(wait, 'coveo-facet-search-wait-animation-svg');\n    return wait;\n  }\n\n  private buildInputElement() {\n    return <HTMLInputElement>$$('input', {\n      className: 'coveo-facet-search-input',\n      type: 'text',\n      autocapitalize: 'off',\n      autocorrect: 'off',\n      ariaLabel: l('SearchFacetResults', this.facetSearch.facetTitle),\n      ariaHaspopup: 'true',\n      ariaAutocomplete: 'list'\n    }).el;\n  }\n\n  private handleScrollEvent() {\n    if (this.triggeredScroll) {\n      this.triggeredScroll = false;\n    } else {\n      this.facetSearchUserInputHandler.handleFacetSearchResultsScroll();\n    }\n  }\n\n  private addAriaAttributes() {\n    if (!this.input || !this.combobox) {\n      return;\n    }\n\n    this.combobox.setAttribute('role', 'combobox');\n    this.combobox.setAttribute('aria-owns', this.facetSearchId);\n    this.input.setAttribute('aria-controls', this.facetSearchId);\n    this.input.setAttribute('aria-expanded', 'true');\n    this.facetSearch.setExpandedFacetSearchAccessibilityAttributes(this.searchResults);\n  }\n\n  private removeAriaAttributes() {\n    if (!this.input || !this.combobox) {\n      return;\n    }\n\n    this.combobox.removeAttribute('role');\n    this.combobox.removeAttribute('aria-owns');\n    this.input.removeAttribute('aria-controls');\n    this.input.removeAttribute('aria-activedescendant');\n    this.input.setAttribute('aria-expanded', 'false');\n    this.facetSearch.setCollapsedFacetSearchAccessibilityAttributes();\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Facet/FacetSearchElement.ts","import { first, last } from 'underscore';\nimport { $$, Dom } from '../../../utils/Dom';\n\nexport interface ISearchDropdownNavigator {\n  focusNextElement: () => void;\n  focusPreviousElement: () => void;\n  currentResult: Dom;\n  setAsCurrentResult: (el: Dom) => void;\n}\n\nexport interface ISearchDropdownConfig {\n  input: HTMLInputElement;\n  searchResults: HTMLElement;\n  setScrollTrigger: (value: boolean) => void;\n}\n\nexport class DefaultSearchDropdownNavigator implements ISearchDropdownNavigator {\n  public currentResult: Dom;\n\n  constructor(private config: ISearchDropdownConfig) {}\n\n  public setAsCurrentResult(toSet: Dom) {\n    this.currentResult && this.currentResult.removeClass('coveo-facet-search-current-result');\n    this.currentResult = toSet;\n    toSet.addClass('coveo-facet-search-current-result');\n    this.updateSelectedOption(toSet);\n  }\n\n  public focusNextElement() {\n    this.moveCurrentResultDown();\n  }\n\n  public focusPreviousElement() {\n    this.moveCurrentResultUp();\n  }\n\n  public moveCurrentResultDown() {\n    let nextResult = this.currentResult.el.nextElementSibling;\n    if (!nextResult) {\n      nextResult = first(this.searchResults.children);\n    }\n    this.setAsCurrentResult($$(<HTMLElement>nextResult));\n    this.highlightAndShowCurrentResultWithKeyboard();\n  }\n\n  public moveCurrentResultUp() {\n    let previousResult = this.currentResult.el.previousElementSibling;\n    if (!previousResult) {\n      previousResult = last(this.searchResults.children);\n    }\n    this.setAsCurrentResult($$(<HTMLElement>previousResult));\n    this.highlightAndShowCurrentResultWithKeyboard();\n  }\n\n  private highlightAndShowCurrentResultWithKeyboard() {\n    this.currentResult.addClass('coveo-facet-search-current-result');\n    this.config.setScrollTrigger(true);\n    this.searchResults.scrollTop = this.currentResult.el.offsetTop;\n  }\n\n  private get searchResults() {\n    return this.config.searchResults;\n  }\n\n  private updateSelectedOption(option: Dom) {\n    this.config.input.setAttribute('aria-activedescendant', option.getAttribute('id'));\n\n    const previouslySelectedOption = $$(this.searchResults).find('[aria-selected^=\"true\"]');\n    previouslySelectedOption && previouslySelectedOption.setAttribute('aria-selected', 'false');\n\n    option.setAttribute('aria-selected', 'true');\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Facet/FacetSearchDropdownNavigation/DefaultSearchDropdownNavigator.ts","import { Dom } from '../../utils/Dom';\nimport { CategoryFacetTemplates } from './CategoryFacetTemplates';\nimport { CategoryValue, CategoryValueParent } from './CategoryValue';\nimport { CategoryFacet } from './CategoryFacet';\nimport { ICategoryFacetValue } from '../../rest/CategoryFacetValue';\nimport { each } from 'underscore';\n\nexport class CategoryChildrenValueRenderer {\n  public children: CategoryValue[] = [];\n\n  constructor(\n    private element: Dom,\n    private categoryFacetTemplates: CategoryFacetTemplates,\n    private categoryValue: CategoryValueParent,\n    private categoryFacet: CategoryFacet\n  ) {}\n\n  public clearChildren() {\n    this.element.removeClass('coveo-active-category-facet-parent');\n    this.children.forEach(child => {\n      child.clear();\n    });\n    this.children = [];\n  }\n\n  public renderChildren(values: ICategoryFacetValue[]) {\n    each(values, value => {\n      this.renderValue(value, true).makeSelectable();\n    });\n  }\n\n  public renderAsParent(value: ICategoryFacetValue) {\n    const categoryValue = this.renderValue(value, false);\n    return categoryValue;\n  }\n\n  private renderValue(value: ICategoryFacetValue, isChild: boolean) {\n    const path = this.categoryValue.path.concat([value.value]);\n    const categoryValueDescriptor = {\n      value: value.value,\n      count: value.numberOfResults,\n      path\n    };\n    const categoryValue = new CategoryValue(\n      this.categoryValue.listRoot,\n      categoryValueDescriptor,\n      this.categoryFacetTemplates,\n      this.categoryFacet\n    );\n    categoryValue.render(isChild);\n    this.children.push(categoryValue);\n    return categoryValue;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/CategoryFacet/CategoryValueChildrenRenderer.ts","import Popper from 'popper.js';\nimport 'styling/_FacetSettings';\nimport { compact, contains, each, escape, filter, find, findWhere, map } from 'underscore';\nimport { InitializationEvents } from '../../events/InitializationEvents';\nimport { QueryStateModel } from '../../models/QueryStateModel';\nimport { l } from '../../strings/Strings';\nimport { AccessibleButton } from '../../utils/AccessibleButton';\nimport { $$ } from '../../utils/Dom';\nimport { KEYBOARD, KeyboardUtils } from '../../utils/KeyboardUtils';\nimport { LocalStorageUtils } from '../../utils/LocalStorageUtils';\nimport { SVGDom } from '../../utils/SVGDom';\nimport { SVGIcons } from '../../utils/SVGIcons';\nimport { Utils } from '../../utils/Utils';\nimport { analyticsActionCauseList, IAnalyticsFacetMeta } from '../Analytics/AnalyticsActionListMeta';\nimport { Facet } from './Facet';\nimport { FacetSort, IFacetSortDescription } from './FacetSort';\n\nexport interface IFacetSettingsKlass {\n  new (sorts: string[], facet: Facet): FacetSettings;\n}\n\nexport interface IFacetState {\n  included: string[];\n  excluded: string[];\n  operator: string;\n}\n\n/**\n * Handle the rendering of the {@link Facet} settings menu (typically the ... in the facet header).\n */\nexport class FacetSettings extends FacetSort {\n  public loadedFromSettings: { [attribute: string]: any };\n  public settingsButton: HTMLElement;\n  public settingsPopup: HTMLElement;\n\n  private facetStateLocalStorage: LocalStorageUtils<IFacetState>;\n  private includedStateAttribute: string;\n  private excludedStateAttribute: string;\n  private operatorStateAttribute: string;\n  private directionSection: HTMLElement[];\n  private saveStateSection: HTMLElement;\n  private clearStateSection: HTMLElement;\n  private hideSection: HTMLElement;\n  private showSection: HTMLElement;\n  private sortSection: { element: HTMLElement; sortItems: HTMLElement[] };\n  private customSortDirectionChange = false;\n  private onDocumentClick = () => this.close();\n  private closeTimeout: number;\n  private enabledSortsIgnoreRenderBecauseOfPairs: IFacetSortDescription[] = [];\n\n  private get isExpanded() {\n    return this.settingsButton && this.settingsButton.getAttribute('aria-expanded') === `${true}`;\n  }\n\n  private set isExpanded(expanded: boolean) {\n    this.settingsButton.setAttribute('aria-expanded', `${expanded}`);\n  }\n\n  private get firstFocusablePopupElement() {\n    return find($$(this.settingsPopup).findAll('[tabindex]'), element => element.tabIndex >= 0);\n  }\n\n  constructor(public sorts: string[], public facet: Facet) {\n    super(sorts, facet);\n    this.filterDuplicateForRendering();\n  }\n\n  /**\n   * Build the menu, hook click events.\n   * @returns {HTMLElement}\n   */\n  public build() {\n    this.buildSettingsButton();\n    this.buildSettingsPopup();\n\n    if (Utils.isNonEmptyArray(this.enabledSorts)) {\n      this.sortSection = this.buildSortSection();\n      if (this.enabledSortsAllowDirection()) {\n        this.directionSection = this.buildDirectionSection();\n      }\n    }\n    if (this.facet.options.enableSettingsFacetState) {\n      this.saveStateSection = this.buildSaveStateSection();\n      this.clearStateSection = this.buildClearStateSection();\n    }\n    if (this.facet.options.enableCollapse) {\n      this.hideSection = this.buildHideSection();\n      this.showSection = this.buildShowSection();\n    }\n\n    const appendCommon = () => {\n      this.appendIfNotUndefined(this.saveStateSection);\n      this.appendIfNotUndefined(this.clearStateSection);\n      this.appendIfNotUndefined(this.hideSection);\n      this.appendIfNotUndefined(this.showSection);\n    };\n\n    this.addOnDocumentClickHandler();\n    this.addOnNukeHandler();\n\n    if (Utils.isNonEmptyArray(this.enabledSorts)) {\n      this.settingsPopup.appendChild(this.sortSection.element);\n      each(this.directionSection, d => {\n        this.appendIfNotUndefined(d);\n      });\n      appendCommon();\n    } else {\n      appendCommon();\n    }\n    return this.settingsButton;\n  }\n\n  /**\n   * Restore the facet state from local storage, and apply it in the query state model.\n   */\n  public loadSavedState() {\n    if (this.facetStateLocalStorage) {\n      // set the state from the settings only if there is nothing\n      // in the query state model for the current facet\n      const state = this.facetStateLocalStorage.load();\n      const currentStateIncluded = this.facet.queryStateModel.get(this.includedStateAttribute);\n      const currentStateExcluded = this.facet.queryStateModel.get(this.excludedStateAttribute);\n      const currentStateOperator = this.facet.queryStateModel.get(this.operatorStateAttribute);\n      if (\n        !Utils.isNullOrUndefined(state) &&\n        Utils.isEmptyArray(currentStateIncluded) &&\n        Utils.isEmptyArray(currentStateExcluded) &&\n        !Utils.isNonEmptyString(currentStateOperator)\n      ) {\n        const toSet: { [key: string]: any } = {};\n        toSet[this.includedStateAttribute] = state.included;\n        toSet[this.excludedStateAttribute] = state.excluded;\n        toSet[this.operatorStateAttribute] = state.operator;\n        this.facet.queryStateModel.setMultiple(toSet);\n        this.loadedFromSettings = toSet;\n      }\n    } else {\n      this.facet.logger.info('Facet state local storage not enabled : See Facet.options.enableSettingsFacetState');\n    }\n  }\n\n  /**\n   * Take the current state of the facet and save it in the local storage.\n   */\n  public saveState() {\n    if (this.facetStateLocalStorage) {\n      this.facetStateLocalStorage.save({\n        included: this.facet.queryStateModel.get(this.includedStateAttribute),\n        excluded: this.facet.queryStateModel.get(this.excludedStateAttribute),\n        operator: this.facet.queryStateModel.get(this.operatorStateAttribute)\n      });\n    } else {\n      this.facet.logger.info('Facet state local storage not enabled : See Facet.options.enableSettingsFacetState');\n    }\n  }\n\n  /**\n   * Close the settings menu\n   */\n  public close() {\n    if (!this.isExpanded) {\n      return;\n    }\n    this.isExpanded = false;\n    $$(this.settingsPopup).detach();\n  }\n\n  /**\n   * Open the settings menu\n   */\n  public open() {\n    $$(this.settingsPopup).insertAfter(this.settingsButton);\n    new Popper(this.settingsButton, this.settingsPopup);\n\n    this.isExpanded = true;\n\n    if (this.hideSection && this.showSection) {\n      $$(this.hideSection).toggle(!$$(this.facet.element).hasClass('coveo-facet-collapsed'));\n      $$(this.showSection).toggle($$(this.facet.element).hasClass('coveo-facet-collapsed'));\n    }\n\n    if (this.facet.options.enableSettingsFacetState) {\n      $$(this.clearStateSection).toggle(!Utils.isNullOrUndefined(this.facetStateLocalStorage.load()));\n    }\n\n    each(this.enabledSorts, (criteria: IFacetSortDescription, i) => {\n      if (this.activeSort.name == criteria.name.toLowerCase()) {\n        this.selectItem(this.getSortItem(criteria.name));\n      } else {\n        this.unselectItem(this.getSortItem(criteria.name));\n      }\n    });\n\n    const elementToFocus = this.firstFocusablePopupElement;\n    if (elementToFocus) {\n      elementToFocus.focus();\n    }\n  }\n\n  public getSortItem(sortName: string): HTMLElement {\n    return find(this.sortSection.sortItems, sortItem => {\n      return $$(sortItem).getAttribute('data-sort-name').toLowerCase() == sortName.replace('ascending|descending', '').toLowerCase();\n    });\n  }\n\n  public get button() {\n    return this.settingsButton;\n  }\n\n  private buildSettingsButton() {\n    this.settingsButton = $$('div', { className: 'coveo-facet-header-settings', 'aria-haspopup': 'true' }).el;\n    this.settingsButton.innerHTML = SVGIcons.icons.more;\n    SVGDom.addClassToSVGInContainer(this.settingsButton, 'coveo-facet-settings-more-svg');\n\n    this.hideElementOnMouseEnterLeave(this.settingsButton);\n\n    this.isExpanded = false;\n\n    new AccessibleButton()\n      .withElement(this.settingsButton)\n      .withLabel(l('Settings'))\n      .withClickAction(e => this.handleSettingsButtonClick(e))\n      .withEnterKeyboardAction(e => this.handleSettingsButtonClick(e))\n      .build();\n  }\n\n  private hideElementOnMouseEnterLeave(el: HTMLElement) {\n    const mouseLeave = () => (this.closeTimeout = window.setTimeout(() => this.close(), 300));\n    const mouseEnter = () => clearTimeout(this.closeTimeout);\n\n    $$(el).on('mouseleave', mouseLeave);\n    $$(el).on('mouseenter', mouseEnter);\n    $$(el).on(\n      'keyup',\n      KeyboardUtils.keypressAction(KEYBOARD.ESCAPE, () => this.handleKeyboardClose())\n    );\n  }\n\n  private handleKeyboardClose() {\n    this.close();\n    this.settingsButton.focus();\n  }\n\n  private buildSettingsPopup() {\n    this.settingsPopup = $$('div', { className: 'coveo-facet-settings-popup' }).el;\n    this.hideElementOnMouseEnterLeave(this.settingsPopup);\n    $$(this.settingsPopup).on('focusout', (e: FocusEvent) => {\n      if (e.relatedTarget && this.settingsPopup.contains(e.relatedTarget as Node)) {\n        return;\n      }\n      this.close();\n    });\n  }\n\n  private buildSortSection() {\n    const sortSection = this.buildSection('coveo-facet-settings-section-sort');\n    const sortSectionIcon = this.buildIcon('coveo-facet-settings-section-sort-svg', SVGIcons.icons.sort);\n    const sortSectionItems = this.buildItems();\n\n    const sortTitle = document.createElement('div');\n    $$(sortTitle).addClass('coveo-facet-settings-section-sort-title');\n    $$(sortTitle).text(l('SortBy') + ' :');\n    sortSectionItems.appendChild(sortTitle);\n\n    const sortItems = this.buildSortSectionItems();\n    each(sortItems, s => {\n      sortSectionItems.appendChild(s);\n    });\n    sortSection.appendChild(sortSectionIcon);\n    sortSection.appendChild(sortSectionItems);\n    return { element: sortSection, sortItems: sortItems };\n  }\n\n  private buildSortSectionItems() {\n    let elems = map(this.enabledSorts, enabledSort => {\n      if (contains(this.enabledSortsIgnoreRenderBecauseOfPairs, enabledSort)) {\n        return undefined;\n      } else {\n        const elem = this.buildItem(l(enabledSort.label), enabledSort.description);\n        $$(elem).setAttribute('data-sort-name', enabledSort.name.toLowerCase().replace('ascending|descending', ''));\n\n        new AccessibleButton()\n          .withElement(elem)\n          .withSelectAction((e: Event) => this.handleClickSortButton(e, enabledSort))\n          .withLabel(enabledSort.label)\n          .build();\n\n        return elem;\n      }\n    });\n    elems = compact(elems);\n    return elems;\n  }\n\n  private closePopupAndUpdateSort() {\n    this.close();\n    if (this.activeSort.name != 'custom') {\n      this.facet.updateSort(this.activeSort.name);\n    } else {\n      this.facet.updateSort('nosort');\n      if (this.customSortDirectionChange) {\n        this.customSortDirectionChange = false;\n        this.facet.queryController.executeQuery();\n      }\n    }\n  }\n\n  private enabledSortsAllowDirection() {\n    const allEnabledSortsWithPossibleDirectionToggle = filter(this.enabledSorts, (facetSortDescription: IFacetSortDescription) => {\n      return facetSortDescription.directionToggle;\n    });\n    const allowToggle = filter(allEnabledSortsWithPossibleDirectionToggle, possibleDirectionToggle => {\n      return findWhere(this.enabledSorts, { name: possibleDirectionToggle.relatedSort }) != undefined;\n    });\n    return allowToggle.length > 0;\n  }\n\n  private buildDirectionSection() {\n    const directionAscendingSection = this.buildAscendingOrDescendingSection('Ascending');\n    const iconAscending = this.buildIcon('coveo-facet-settings-section-direction-ascending-svg', SVGIcons.icons.ascending);\n    const iconDescending = this.buildIcon('coveo-facet-settings-section-direction-descending-svg', SVGIcons.icons.descending);\n    const directionItemsAscending = this.buildItems();\n    const ascending = this.buildAscendingOrDescending('Ascending');\n\n    directionItemsAscending.appendChild(ascending);\n    directionAscendingSection.appendChild(iconAscending);\n    directionAscendingSection.appendChild(directionItemsAscending);\n    new AccessibleButton()\n      .withElement(ascending)\n      .withoutLabelOrTitle()\n      .withSelectAction(() => this.handleDirectionClick(ascending, 'ascending'))\n      .build();\n    this.unselectSection(directionAscendingSection);\n\n    const directionDescendingSection = this.buildAscendingOrDescendingSection('Descending');\n    const directionItemsDescending = this.buildItems();\n    const descending = this.buildAscendingOrDescending('Descending');\n\n    directionItemsDescending.appendChild(descending);\n    directionDescendingSection.appendChild(iconDescending);\n    directionDescendingSection.appendChild(directionItemsDescending);\n    new AccessibleButton()\n      .withElement(descending)\n      .withoutLabelOrTitle()\n      .withSelectAction(() => this.handleDirectionClick(descending, 'descending'))\n      .build();\n    this.unselectSection(directionDescendingSection);\n\n    if (!this.activeSort.directionToggle) {\n      $$(directionAscendingSection).addClass('coveo-facet-settings-disabled');\n      $$(directionDescendingSection).addClass('coveo-facet-settings-disabled');\n    } else {\n      this.selectItem(this.getItems(directionAscendingSection)[0]);\n    }\n    return [directionAscendingSection, directionDescendingSection];\n  }\n\n  private buildSaveStateSection() {\n    const saveStateSection = this.buildSection('coveo-facet-settings-section-save-state');\n    const icon = this.buildIcon('coveo-facet-settings-section-save-state-svg', SVGIcons.icons.dropdownMore);\n    const saveStateItems = this.buildItems();\n\n    this.facetStateLocalStorage = new LocalStorageUtils<IFacetState>('facet-state-' + this.facet.options.id);\n    this.includedStateAttribute = QueryStateModel.getFacetId(this.facet.options.id);\n    this.excludedStateAttribute = QueryStateModel.getFacetId(this.facet.options.id, false);\n    this.operatorStateAttribute = QueryStateModel.getFacetOperator(this.facet.options.id);\n\n    const saveStateItem = document.createElement('div');\n    $$(saveStateItem).addClass('coveo-facet-settings-item');\n    saveStateItem.setAttribute('title', l('SaveFacetState'));\n    $$(saveStateItem).text(l('SaveFacetState'));\n    saveStateItems.appendChild(saveStateItem);\n\n    saveStateSection.appendChild(icon);\n    saveStateSection.appendChild(saveStateItems);\n    new AccessibleButton()\n      .withElement(saveStateSection)\n      .withSelectAction(() => this.handleSaveStateClick())\n      .withoutLabelOrTitle()\n      .build();\n\n    return saveStateSection;\n  }\n\n  private buildClearStateSection() {\n    const clearStateSection = this.buildSection('coveo-facet-settings-section-clear-state');\n    const icon = this.buildIcon('coveo-facet-settings-section-clear-state-svg', SVGIcons.icons.dropdownLess);\n    const clearStateItems = this.buildItems();\n    const clearStateItem = this.buildItem(l('ClearFacetState'));\n    clearStateItems.appendChild(clearStateItem);\n    clearStateSection.appendChild(icon);\n    clearStateSection.appendChild(clearStateItems);\n    new AccessibleButton()\n      .withElement(clearStateSection)\n      .withSelectAction(() => this.handleClearStateClick())\n      .withoutLabelOrTitle()\n      .build();\n\n    return clearStateSection;\n  }\n\n  private buildHideSection() {\n    const hideSection = this.buildSection('coveo-facet-settings-section-hide');\n    const icon = this.buildIcon('coveo-facet-settings-section-hide-svg', SVGIcons.icons.facetCollapse);\n    const hideItems = this.buildItems();\n    const hideItem = this.buildItem(l('Collapse'));\n    hideItems.appendChild(hideItem);\n\n    hideSection.appendChild(icon);\n    hideSection.appendChild(hideItems);\n    new AccessibleButton()\n      .withElement(hideSection)\n      .withSelectAction(() => {\n        this.facet.facetHeader.collapseFacet();\n        this.close();\n      })\n      .withLabel(l('CollapseFacet', this.facet.options.title))\n      .build();\n\n    return hideSection;\n  }\n\n  private buildShowSection() {\n    const showSection = this.buildSection('coveo-facet-settings-section-show');\n    const icon = this.buildIcon('coveo-facet-settings-section-show-svg', SVGIcons.icons.facetExpand);\n    const showItems = this.buildItems();\n    const showItem = this.buildItem(l('Expand'));\n    showItems.appendChild(showItem);\n\n    showSection.appendChild(icon);\n    showSection.appendChild(showItems);\n\n    new AccessibleButton()\n      .withElement(showSection)\n      .withSelectAction(() => {\n        this.facet.facetHeader.expandFacet();\n        this.close();\n      })\n      .withLabel(l('ExpandFacet', this.facet.options.title))\n      .build();\n\n    return showSection;\n  }\n\n  private buildIcon(iconClass?: string, svgIcon?: string) {\n    if (iconClass && svgIcon) {\n      const icon = $$('div', { className: 'coveo-icon-container' }, svgIcon);\n      SVGDom.addClassToSVGInContainer(icon.el, iconClass);\n      return icon.el;\n    } else {\n      return $$('div', { className: 'coveo-icon' }).el;\n    }\n  }\n\n  private buildAscendingOrDescending(direction: string) {\n    const elem = this.buildItem(l(direction));\n    elem.setAttribute('aria-disabled', 'true');\n    elem.setAttribute('data-direction', direction.toLowerCase());\n    return elem;\n  }\n\n  private buildAscendingOrDescendingSection(direction: string) {\n    return this.buildSection('coveo-facet-settings-section-direction-' + direction.toLowerCase());\n  }\n\n  private buildItem(label: string, title = label) {\n    return $$(\n      'div',\n      {\n        className: 'coveo-facet-settings-item',\n        title: title\n      },\n      escape(label)\n    ).el;\n  }\n\n  private buildItems() {\n    const elem = document.createElement('div');\n    $$(elem).addClass('coveo-facet-settings-items');\n    return elem;\n  }\n\n  private buildSection(className: string) {\n    const section = document.createElement('div');\n    $$(section).addClass(['coveo-facet-settings-section', className]);\n    return section;\n  }\n\n  private handleSettingsButtonClick(event: Event) {\n    event.stopPropagation();\n    const settingsPopupIsOpen = !Utils.isNullOrUndefined(this.settingsPopup.parentElement);\n    settingsPopupIsOpen ? this.close() : this.open();\n  }\n\n  private handleClickSortButton(e: Event, enabledSort: IFacetSortDescription) {\n    if (this.activeSort != enabledSort && this.activeSort.relatedSort != enabledSort.name) {\n      this.activeSort = enabledSort;\n      if (enabledSort.directionToggle && contains(this.enabledSorts, FacetSettings.availableSorts[this.activeSort.relatedSort])) {\n        this.activateDirectionSection();\n      } else {\n        this.disableDirectionSection();\n      }\n      this.unselectSection(this.sortSection.element);\n      this.selectItem(<HTMLElement>e.target);\n      this.closePopupAndUpdateSort();\n    }\n  }\n\n  private handleDirectionClick(item: HTMLElement, direction: string) {\n    if (item.getAttribute('aria-disabled') === 'false' && this.activeSort.name.indexOf(direction) === -1) {\n      this.activeSort = FacetSettings.availableSorts[this.activeSort.relatedSort];\n      each(this.directionSection, d => {\n        this.unselectSection(d);\n      });\n      this.selectItem(item);\n      if (this.activeSort.name == 'custom' && this.customSortDirection != direction) {\n        this.customSortDirection = direction;\n        this.customSortDirectionChange = true;\n      }\n      this.closePopupAndUpdateSort();\n    }\n  }\n\n  private handleSaveStateClick() {\n    this.saveState();\n    this.close();\n  }\n\n  private handleClearStateClick() {\n    this.facetStateLocalStorage.remove();\n    this.facet.reset();\n    this.close();\n    this.facet.triggerNewQuery(() =>\n      this.facet.usageAnalytics.logSearchEvent<IAnalyticsFacetMeta>(analyticsActionCauseList.facetClearAll, {\n        facetId: this.facet.options.id,\n        facetField: this.facet.options.field.toString(),\n        facetTitle: this.facet.options.title\n      })\n    );\n  }\n\n  private addOnNukeHandler() {\n    $$(this.facet.root).on(InitializationEvents.nuke, () => this.handleNuke());\n  }\n\n  private addOnDocumentClickHandler() {\n    document.addEventListener('click', () => this.onDocumentClick());\n  }\n\n  public getCurrentDirectionItem(directionSection = this.directionSection) {\n    let found: HTMLElement;\n    each(directionSection, direction => {\n      if (!found) {\n        found = find(this.getItems(direction), (direction: HTMLElement) => {\n          return this.activeSort.name.indexOf(direction.getAttribute('data-direction')) != -1;\n        });\n      }\n    });\n    if (!found) {\n      found = directionSection[0];\n    }\n    return found;\n  }\n\n  private activateDirectionSection() {\n    each(this.directionSection, direction => {\n      $$(direction).removeClass('coveo-facet-settings-disabled');\n      $$(direction).find('.coveo-facet-settings-item').setAttribute('aria-disabled', 'false');\n      this.unselectSection(direction);\n    });\n    this.selectItem(this.getCurrentDirectionItem());\n  }\n\n  private disableDirectionSection() {\n    each(this.directionSection, direction => {\n      $$(direction).addClass('coveo-facet-settings-disabled');\n      $$(direction).find('.coveo-facet-settings-item').setAttribute('aria-disabled', 'true');\n      this.unselectSection(direction);\n    });\n  }\n\n  private getItems(section: HTMLElement) {\n    return $$(section).findAll('.coveo-facet-settings-item');\n  }\n\n  private unselectSection(section: HTMLElement) {\n    each(this.getItems(section), i => this.unselectItem(i));\n  }\n\n  private selectItem(item: HTMLElement) {\n    if (item) {\n      $$(item).addClass('coveo-selected');\n      item.setAttribute('aria-pressed', 'true');\n    }\n  }\n\n  private unselectItem(item: HTMLElement) {\n    if (item) {\n      $$(item).removeClass('coveo-selected');\n      item.setAttribute('aria-pressed', 'false');\n    }\n  }\n\n  private filterDuplicateForRendering() {\n    each(this.enabledSorts, (enabledSort: IFacetSortDescription, i: number) => {\n      if (enabledSort.relatedSort != null) {\n        for (let j = i + 1; j < this.enabledSorts.length; j++) {\n          if (this.enabledSorts[j].name == enabledSort.relatedSort) {\n            this.enabledSortsIgnoreRenderBecauseOfPairs.push(this.enabledSorts[j]);\n            break;\n          }\n        }\n      }\n    });\n  }\n\n  private appendIfNotUndefined(toAppend: HTMLElement) {\n    if (!Utils.isNullOrUndefined(toAppend)) {\n      this.settingsPopup.appendChild(toAppend);\n    }\n  }\n\n  private handleNuke() {\n    document.removeEventListener('click', this.onDocumentClick);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Facet/FacetSettings.ts","/// <reference path=\"Facet.ts\" />\n/// <reference path=\"FacetSettings.ts\" />\nimport { Facet } from './Facet';\nimport { l } from '../../strings/Strings';\nimport { FacetSettings } from './FacetSettings';\nimport { Utils } from '../../utils/Utils';\nimport * as _ from 'underscore';\n\ndeclare const Coveo;\n\nexport interface IFacetSortKlass {\n  new (sorts: string[], facet: Facet): FacetSort;\n}\n\nexport interface IFacetSortDescription {\n  label: string;\n  directionToggle: boolean;\n  description: string;\n  name: string;\n  relatedSort?: string;\n}\n\nexport class FacetSort {\n  public static availableSorts: { [name: string]: IFacetSortDescription } = {\n    score: {\n      label: l('Score'),\n      directionToggle: false,\n      description: l('ScoreDescription'),\n      name: 'score'\n    },\n    occurrences: {\n      label: l('Occurrences'),\n      directionToggle: false,\n      description: l('OccurrencesDescription'),\n      name: 'occurrences'\n    },\n    alphaascending: {\n      label: l('Label'),\n      directionToggle: true,\n      description: l('LabelDescription'),\n      name: 'alphaascending',\n      relatedSort: 'alphadescending'\n    },\n    alphadescending: {\n      label: l('Label'),\n      directionToggle: true,\n      description: l('LabelDescription'),\n      name: 'alphadescending',\n      relatedSort: 'alphaascending'\n    },\n    computedfieldascending: {\n      label: l('Value'),\n      directionToggle: true,\n      description: l('ValueDescription'),\n      name: 'computedfieldascending',\n      relatedSort: 'computedfielddescending'\n    },\n    computedfielddescending: {\n      label: l('Value'),\n      directionToggle: true,\n      description: l('ValueDescription'),\n      name: 'computedfielddescending',\n      relatedSort: 'computedfieldascending'\n    },\n    chisquare: {\n      label: l('RelativeFrequency'),\n      directionToggle: false,\n      description: l('RelativeFrequencyDescription'),\n      name: 'chisquare'\n    },\n    nosort: {\n      label: l('Nosort'),\n      directionToggle: false,\n      description: l('NosortDescription'),\n      name: 'nosort'\n    },\n    custom: {\n      label: l('Custom'),\n      directionToggle: true,\n      description: l('CustomDescription'),\n      name: 'custom',\n      relatedSort: 'custom'\n    }\n  };\n\n  public enabledSorts: IFacetSortDescription[] = [];\n  public activeSort: IFacetSortDescription;\n  public customSortDirection = 'ascending';\n\n  constructor(sorts: string[], public facet: Facet) {\n    _.each(sorts, sortToActivate => {\n      var newSortToEnable = FacetSettings.availableSorts[sortToActivate.toLowerCase()];\n      if (newSortToEnable != undefined) {\n        this.enabledSorts.push(newSortToEnable);\n      }\n    });\n    this.removeEnabledSortsBasedOnFacetType();\n    if (Utils.isNonEmptyArray(this.enabledSorts)) {\n      if (this.facet.options.sortCriteria != undefined) {\n        this.activeSort = _.find<IFacetSortDescription>(this.enabledSorts, enabledSort => {\n          return enabledSort.name == this.facet.options.sortCriteria;\n        });\n      }\n      if (!this.activeSort) {\n        this.activeSort = this.enabledSorts[0];\n      }\n    }\n  }\n\n  private removeEnabledSortsBasedOnFacetType() {\n    if (Coveo.FacetRange && this.facet instanceof Coveo.FacetRange) {\n      var facetRange = this.facet;\n      if (facetRange.options['slider']) {\n        this.enabledSorts = [];\n      }\n    }\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Facet/FacetSort.ts","import FacetSliderModuleDefinition = require('../FacetSlider/FacetSlider');\nimport FacetModuleDefinition = require('./Facet');\nimport { IFacetSettingsKlass, FacetSettings } from './FacetSettings';\nimport { IFacetSortKlass, FacetSort } from './FacetSort';\nimport { $$ } from '../../utils/Dom';\nimport { l } from '../../strings/Strings';\nimport { IAnalyticsFacetOperatorMeta, IAnalyticsFacetMeta, analyticsActionCauseList } from '../Analytics/AnalyticsActionListMeta';\nimport 'styling/_FacetHeader';\nimport { SVGIcons } from '../../utils/SVGIcons';\nimport { SVGDom } from '../../utils/SVGDom';\nimport { AccessibleButton } from '../../utils/AccessibleButton';\n\nexport interface IFacetHeaderOptions {\n  facetElement: HTMLElement;\n  facet?: FacetModuleDefinition.Facet;\n  title: string;\n  field: string;\n  enableClearElement: boolean;\n  enableCollapseElement: boolean;\n  icon?: string;\n  facetSlider?: FacetSliderModuleDefinition.FacetSlider;\n  settingsKlass?: IFacetSettingsKlass;\n  sortKlass?: IFacetSortKlass;\n  availableSorts?: string[];\n}\n\nexport class FacetHeader {\n  public element: HTMLElement;\n  public iconElement: HTMLElement;\n  public waitElement: HTMLElement;\n  public collapseElement: HTMLElement;\n  public expandElement: HTMLElement;\n  public operatorElement: HTMLElement;\n  public eraserElement: HTMLElement;\n  public settings: FacetSettings;\n  public sort: FacetSort;\n\n  constructor(public options: IFacetHeaderOptions) {\n    this.element = document.createElement('div');\n    $$(this.element).addClass('coveo-facet-header');\n  }\n\n  public build(): HTMLElement {\n    let titleSection = $$('div', {\n      className: 'coveo-facet-header-title-section'\n    });\n    if (this.options.icon != undefined) {\n      this.iconElement = this.buildIcon();\n      titleSection.append(this.iconElement);\n    }\n    titleSection.append(this.buildTitle());\n    this.waitElement = this.buildWaitAnimation();\n    titleSection.append(this.waitElement);\n    this.element.appendChild(titleSection.el);\n\n    let settingsSection = $$('div', {\n      className: 'coveo-facet-header-settings-section'\n    });\n\n    this.eraserElement = this.buildEraser();\n    settingsSection.append(this.eraserElement);\n\n    if (this.options.facet) {\n      this.operatorElement = this.buildOperatorToggle();\n      settingsSection.append(this.operatorElement);\n      $$(this.operatorElement).toggle(this.options.facet.options.enableTogglingOperator);\n    }\n\n    if (this.options.settingsKlass) {\n      this.sort = this.settings = new this.options.settingsKlass(this.options.availableSorts, this.options.facet);\n      settingsSection.append(this.settings.build());\n    } else if (this.options.sortKlass) {\n      this.sort = new this.options.sortKlass(this.options.availableSorts, this.options.facet);\n    }\n    this.element.appendChild(settingsSection.el);\n\n    return this.element;\n  }\n\n  public switchToAnd(): void {\n    if (this.options.facet) {\n      this.options.facet.options.useAnd = true;\n      this.rebuildOperatorToggle();\n      this.updateOperatorQueryStateModel();\n    }\n  }\n\n  public switchToOr(): void {\n    if (this.options.facet) {\n      this.options.facet.options.useAnd = false;\n      this.rebuildOperatorToggle();\n      this.updateOperatorQueryStateModel();\n    }\n  }\n\n  public collapseFacet(): void {\n    if (this.collapseElement && this.expandElement) {\n      $$(this.collapseElement).hide();\n      $$(this.expandElement).show();\n    }\n    $$(this.options.facetElement).addClass('coveo-facet-collapsed');\n  }\n\n  public expandFacet(): void {\n    if (this.collapseElement && this.expandElement) {\n      $$(this.expandElement).hide();\n      $$(this.collapseElement).show();\n    }\n    $$(this.options.facetElement).removeClass('coveo-facet-collapsed');\n  }\n\n  public updateOperatorQueryStateModel(): void {\n    if (this.options.facet && this.options.facet.options.enableTogglingOperator) {\n      let valueToSet = '';\n      if (this.options.facet.getSelectedValues().length != 0 || this.options.facet.getExcludedValues().length != 0) {\n        valueToSet = this.options.facet.options.useAnd ? 'and' : 'or';\n      }\n      this.options.facet.queryStateModel.set(this.options.facet.operatorAttributeId, valueToSet);\n    }\n  }\n\n  private rebuildOperatorToggle(): void {\n    const newElement = this.buildOperatorToggle();\n    if (this.operatorElement) {\n      $$(this.operatorElement).replaceWith(newElement);\n    }\n    this.operatorElement = newElement;\n  }\n\n  private buildIcon(): HTMLElement {\n    let cssClassForIcon;\n    if (this.options.icon) {\n      cssClassForIcon = 'coveo-icon-custom ' + this.options.icon;\n    } else {\n      cssClassForIcon = 'coveo-icon ' + this.options.field.substr(1);\n    }\n    this.iconElement = document.createElement('div');\n    $$(this.iconElement).addClass(cssClassForIcon);\n    return this.iconElement;\n  }\n\n  private buildWaitAnimation(): HTMLElement {\n    this.waitElement = $$('div', { className: 'coveo-facet-header-wait-animation' }, SVGIcons.icons.loading).el;\n    SVGDom.addClassToSVGInContainer(this.waitElement, 'coveo-facet-header-wait-animation-svg');\n    this.waitElement.style.visibility = 'hidden';\n    return this.waitElement;\n  }\n\n  private buildOperatorToggle(): HTMLElement {\n    const label = l('SwitchTo', this.options.facet.options.useAnd ? l('Or') : l('And'));\n    const icon = $$('span', { className: 'coveo-' + (this.options.facet.options.useAnd ? 'and' : 'or') }, SVGIcons.icons.orAnd);\n    SVGDom.addClassToSVGInContainer(icon.el, 'coveo-or-and-svg');\n    const toggle = $$('div', {\n      className: 'coveo-facet-header-operator',\n      title: label\n    });\n    toggle.append(icon.el);\n\n    new AccessibleButton()\n      .withElement(toggle)\n      .withLabel(label)\n      .withSelectAction(() => this.handleOperatorClick())\n      .build();\n\n    return toggle.el;\n  }\n\n  private handleOperatorClick(): void {\n    if (this.options.facet.options.useAnd) {\n      this.options.facet.switchToOr();\n    } else {\n      this.options.facet.switchToAnd();\n    }\n    if (this.options.facet.getSelectedValues().length != 0) {\n      const operatorNow = this.options.facet.options.useAnd ? 'AND' : 'OR';\n      const operatorBefore = this.options.facet.options.useAnd ? 'OR' : 'AND';\n      this.options.facet.triggerNewQuery(() =>\n        this.options.facet.usageAnalytics.logSearchEvent<IAnalyticsFacetOperatorMeta>(analyticsActionCauseList.facetToggle, {\n          facetId: this.options.facet.options.id,\n          facetField: this.options.field.toString(),\n          facetOperatorBefore: operatorBefore,\n          facetOperatorAfter: operatorNow,\n          facetTitle: this.options.title\n        })\n      );\n    }\n  }\n\n  private buildTitle(): HTMLElement {\n    const title = $$('div', { className: 'coveo-facet-header-title' });\n    title.text(this.options.title);\n    title.setAttribute('role', 'heading');\n    title.setAttribute('aria-level', '2');\n    title.setAttribute('aria-label', `${l('FacetTitle', this.options.title)}.`);\n    return title.el;\n  }\n\n  public buildEraser(): HTMLElement {\n    const eraser = $$('div', { className: 'coveo-facet-header-eraser' }, SVGIcons.icons.mainClear);\n\n    SVGDom.addClassToSVGInContainer(eraser.el, 'coveo-facet-header-eraser-svg');\n\n    new AccessibleButton()\n      .withElement(eraser.el)\n      .withLabel(l('Clear', this.options.title))\n      .withClickAction(() => this.onEraserClick())\n      .withEnterKeyboardAction(() => this.onEraserClick())\n      .build();\n\n    return eraser.el;\n  }\n\n  private onEraserClick() {\n    const cmp = this.options.facet || this.options.facetSlider;\n    cmp.reset();\n    cmp.usageAnalytics.logSearchEvent<IAnalyticsFacetMeta>(analyticsActionCauseList.facetClearAll, {\n      facetId: cmp.options.id,\n      facetField: cmp.options.field.toString(),\n      facetTitle: cmp.options.title\n    });\n    cmp.queryController.executeQuery();\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Facet/FacetHeader.ts","/// <reference path=\"Facet.ts\" />\n\nimport 'styling/_FacetBreadcrumb';\nimport { compact, first } from 'underscore';\nimport { Assert } from '../../misc/Assert';\nimport { AccessibleButton } from '../../utils/AccessibleButton';\nimport { $$, Dom } from '../../utils/Dom';\nimport { SVGIcons } from '../../utils/SVGIcons';\nimport { analyticsActionCauseList, IAnalyticsFacetMeta } from '../Analytics/AnalyticsActionListMeta';\nimport { Facet } from './Facet';\nimport { FacetValue } from './FacetValue';\nimport { l } from '../../strings/Strings';\nimport { Component } from '../Base/Component';\n\nexport interface IBreadcrumbValueElementKlass {\n  new (facet: Facet, facetValue: FacetValue): BreadcrumbValueElement;\n}\n\nexport class BreadcrumbValueElement {\n  constructor(public facet: Facet, public facetValue: FacetValue) {}\n\n  public build(): Dom {\n    Assert.exists(this.facetValue);\n\n    const { container, caption, clear, listContainer } = this.buildElements();\n\n    container.append(caption.el);\n    container.append(clear.el);\n    listContainer.append(container.el);\n\n    return listContainer;\n  }\n\n  public getBreadcrumbTooltip(): string {\n    const tooltipParts = [\n      this.facet.getValueCaption(this.facetValue),\n      this.facetValue.getFormattedCount(),\n      this.facetValue.getFormattedComputedField(this.facet.options.computedFieldFormat)\n    ];\n    return compact(tooltipParts).join(' ');\n  }\n\n  private buildElements() {\n    return {\n      container: this.buildContainer(),\n      clear: this.buildClear(),\n      caption: this.buildCaption(),\n      listContainer: this.buildListContainer()\n    };\n  }\n\n  private buildContainer() {\n    const container = $$('div', {\n      className: 'coveo-facet-breadcrumb-value'\n    });\n\n    container.toggleClass('coveo-selected', this.facetValue.selected);\n    container.toggleClass('coveo-excluded', this.facetValue.excluded);\n\n    const labelString = this.facetValue.excluded ? 'Unexclude' : 'RemoveFilterOn';\n    const label = l(labelString, this.facet.getValueCaption(this.facetValue));\n\n    new AccessibleButton()\n      .withElement(container)\n      .withLabel(label)\n      .withSelectAction(() => this.selectAction())\n      .build();\n\n    return container;\n  }\n\n  private buildListContainer() {\n    return $$('li', {\n      className: 'coveo-facet-breadcrumb-value-list-item'\n    });\n  }\n\n  private buildClear() {\n    const clear = $$(\n      'span',\n      {\n        className: 'coveo-facet-breadcrumb-clear'\n      },\n      SVGIcons.icons.mainClear\n    );\n\n    return clear;\n  }\n\n  private buildCaption() {\n    const caption = $$('span', {\n      className: 'coveo-facet-breadcrumb-caption'\n    });\n    caption.text(this.facet.getValueCaption(this.facetValue));\n    return caption;\n  }\n\n  private selectAction() {\n    if (this.facetValue.excluded) {\n      this.facet.unexcludeValue(this.facetValue.value);\n    } else {\n      this.facet.deselectValue(this.facetValue.value);\n    }\n    this.facet.triggerNewQuery(() =>\n      this.facet.usageAnalytics.logSearchEvent<IAnalyticsFacetMeta>(analyticsActionCauseList.breadcrumbFacet, {\n        facetId: this.facet.options.id,\n        facetField: this.facet.options.field.toString(),\n        facetValue: this.facetValue.value,\n        facetTitle: this.facet.options.title\n      })\n    );\n\n    this.focusOnContainer();\n  }\n\n  private focusOnContainer() {\n    const breadcrumb = first(this.facet.searchInterface.getComponents<Component>('Breadcrumb'));\n    breadcrumb ? breadcrumb.element.focus() : null;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Facet/BreadcrumbValueElement.ts","import * as Globalize from 'globalize';\nimport { first, rest, filter } from 'underscore';\nimport { Assert } from '../../misc/Assert';\nimport { l } from '../../strings/Strings';\nimport { $$ } from '../../utils/Dom';\nimport { IBreadcrumbValueElementKlass } from './BreadcrumbValueElement';\nimport { Facet } from './Facet';\nimport { FacetValue } from './FacetValue';\nimport { AccessibleButton } from '../../utils/AccessibleButton';\nimport { getHeadingTag } from '../../utils/AccessibilityUtils';\n\nexport interface IBreadcrumbValueListOptions {\n  headingLevel?: number;\n}\n\nexport class BreadcrumbValueList {\n  private expanded: FacetValue[];\n  private collapsed: FacetValue[];\n  protected elem: HTMLElement;\n  private valueContainer: HTMLElement;\n\n  constructor(\n    public facet: Facet,\n    public facetValues: FacetValue[],\n    public breadcrumbValueElementKlass: IBreadcrumbValueElementKlass,\n    private readonly options?: IBreadcrumbValueListOptions\n  ) {\n    this.setExpandedAndCollapsed();\n    this.elem = $$('div', {\n      className: 'coveo-facet-breadcrumb'\n    }).el;\n\n    const title = $$(getHeadingTag(this.options && this.options.headingLevel, 'span'));\n    title.addClass('coveo-facet-breadcrumb-title');\n    title.text(this.facet.options.title + ':');\n    this.elem.appendChild(title.el);\n\n    this.valueContainer = $$('ul', {\n      className: 'coveo-facet-breadcrumb-values'\n    }).el;\n\n    this.elem.appendChild(this.valueContainer);\n  }\n\n  public build(): HTMLElement {\n    this.buildExpanded();\n    if (this.collapsed.length != 0) {\n      this.buildCollapsed();\n    }\n    return this.elem;\n  }\n\n  public buildAsString(): string {\n    this.build();\n    if (this.elem) {\n      return (\n        `${this.facet.options.title}: ` +\n        $$(this.elem)\n          .findAll('.coveo-facet-breadcrumb-value')\n          .map((value: HTMLElement) => {\n            return $$(value).text();\n          })\n          .join(', ')\n      );\n    }\n    return '';\n  }\n\n  private buildExpanded() {\n    this.expanded.forEach((value: FacetValue) => {\n      const elementBreadcrumb = new this.breadcrumbValueElementKlass(this.facet, value).build();\n      this.valueContainer.appendChild(elementBreadcrumb.el);\n    });\n  }\n\n  private buildCollapsed() {\n    const numberOfSelected = filter(this.collapsed, (value: FacetValue) => value.selected).length;\n    const numberOfExcluded = filter(this.collapsed, (value: FacetValue) => value.excluded).length;\n    Assert.check(numberOfSelected + numberOfExcluded == this.collapsed.length);\n\n    const nMoreElement = $$(\n      'div',\n      {\n        className: 'coveo-facet-breadcrumb-value'\n      },\n      $$(\n        'span',\n        {\n          className: 'coveo-facet-breadcrumb-multi-count'\n        },\n        l('NMore', Globalize.format(numberOfSelected + numberOfExcluded, 'n0'))\n      )\n    );\n\n    const nMoreContainer = $$(\n      'li',\n      {\n        className: 'coveo-facet-breadcrumb-value-list-item'\n      },\n      nMoreElement\n    );\n\n    const collapsedBreadcrumbs = this.collapsed.map((value: FacetValue) => new this.breadcrumbValueElementKlass(this.facet, value));\n    const toolTip = collapsedBreadcrumbs.map(element => element.getBreadcrumbTooltip()).join('\\n');\n\n    new AccessibleButton()\n      .withElement(nMoreElement)\n      .withTitle(toolTip)\n      .withSelectAction(() => {\n        nMoreElement.remove();\n        collapsedBreadcrumbs.forEach(breadcrumb => {\n          this.valueContainer.appendChild(breadcrumb.build().el);\n        });\n      })\n      .build();\n\n    this.valueContainer.appendChild(nMoreContainer.el);\n  }\n\n  private setExpandedAndCollapsed() {\n    if (this.facetValues.length > this.facet.options.numberOfValuesInBreadcrumb) {\n      this.collapsed = rest(this.facetValues, this.facet.options.numberOfValuesInBreadcrumb);\n      this.expanded = first(this.facetValues, this.facet.options.numberOfValuesInBreadcrumb);\n    } else {\n      this.collapsed = [];\n      this.expanded = this.facetValues;\n    }\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Facet/BreadcrumbValuesList.ts","/// <reference path=\"Facet.ts\" />\n\nimport { IIndexFieldValue } from '../../rest/FieldValue';\nimport { Facet } from './Facet';\nimport { $$ } from '../../utils/Dom';\nimport { Utils } from '../../utils/Utils';\nimport { InitializationEvents } from '../../events/InitializationEvents';\nimport { FacetSearchParameters } from './FacetSearchParameters';\nimport { IAnalyticsFacetMeta, analyticsActionCauseList } from '../Analytics/AnalyticsActionListMeta';\nimport { IEndpointError } from '../../rest/EndpointError';\nimport { l } from '../../strings/Strings';\nimport { Assert } from '../../misc/Assert';\nimport { FacetValue } from './FacetValue';\nimport { StringUtils } from '../../utils/StringUtils';\nimport { IFacetSearchValuesListKlass } from './FacetSearchValuesList';\nimport { FacetValueElement } from './FacetValueElement';\nimport { ModalBox } from '../../ExternalModulesShim';\nimport { SearchInterface } from '../SearchInterface/SearchInterface';\nimport { ResponsiveComponentsUtils } from '../ResponsiveComponents/ResponsiveComponentsUtils';\nimport { FacetValuesOrder } from './FacetValuesOrder';\nimport 'styling/_FacetSearch';\nimport { each, debounce, map, pluck } from 'underscore';\nimport { FacetSearchElement } from './FacetSearchElement';\nimport { IFacetSearch } from './IFacetSearch';\n\n/**\n * Used by the {@link Facet} component to render and handle the facet search part of each facet.\n */\nexport class FacetSearch implements IFacetSearch {\n  public currentlyDisplayedResults: string[];\n  public facetSearchElement: FacetSearchElement;\n  public facetSearchPromise: Promise<IIndexFieldValue[]>;\n  public moreValuesToFetch = true;\n\n  private facetSearchTimeout: number;\n  private onResize: (...args: any[]) => void;\n  private onDocumentClick: (e: Event) => void;\n  private lastSearchWasEmpty = true;\n\n  constructor(public facet: Facet, public facetSearchValuesListKlass: IFacetSearchValuesListKlass, private root: HTMLElement) {\n    this.facetSearchElement = new FacetSearchElement(this);\n    this.onResize = debounce(() => {\n      // Mitigate issues in UT where the window in phantom js might get resized in the scope of another test.\n      // These would point to random instance of a test karma object, and not a real search interface.\n      if (this.facet instanceof Facet && this.facet.searchInterface instanceof SearchInterface) {\n        if (this.shouldPositionSearchResults()) {\n          this.positionSearchResults();\n        }\n      }\n    }, 250);\n    this.onDocumentClick = (e: Event) => {\n      this.handleClickElsewhere(e);\n    };\n    window.addEventListener('resize', this.onResize);\n    document.addEventListener('click', (e: Event) => this.onDocumentClick(e));\n    $$(facet.root).on(InitializationEvents.nuke, () => this.handleNuke());\n  }\n\n  public get facetType() {\n    return Facet.ID;\n  }\n\n  public get facetTitle() {\n    return this.facet.options.title || this.facet.options.field.toString();\n  }\n\n  /**\n   * Build the search component and return an `HTMLElement` which can be appended to the {@link Facet}.\n   * @returns {HTMLElement}\n   */\n  public build(): HTMLElement {\n    return this.buildBaseSearch();\n  }\n\n  /**\n   * Position the search results at the footer of the facet.\n   */\n  public positionSearchResults() {\n    this.facetSearchElement.positionSearchResults();\n  }\n\n  public fetchMoreValues() {\n    this.triggerNewFacetSearch(this.buildParamsForFetchingMore());\n  }\n\n  /**\n   * Dismiss the search results\n   */\n  public dismissSearchResults() {\n    this.cancelAnyPendingSearchOperation();\n    this.facet.unfadeInactiveValuesInMainList();\n    $$(this.searchResults).empty();\n    this.moreValuesToFetch = true;\n    $$(this.search).removeClass('coveo-facet-search-no-results');\n    $$(this.facet.element).removeClass('coveo-facet-searching');\n    this.facetSearchElement.hideSearchResultsElement();\n    this.input.value = '';\n    $$(this.clear).hide();\n    this.currentlyDisplayedResults = undefined;\n  }\n\n  /**\n   * Trigger a new facet search, and display the results.\n   * @param params\n   */\n  public triggerNewFacetSearch(params: FacetSearchParameters) {\n    this.cancelAnyPendingSearchOperation();\n    this.facetSearchElement.showFacetSearchWaitingAnimation();\n\n    this.facet.logger.info('Triggering new facet search');\n\n    this.facetSearchPromise = this.facet.facetQueryController.search(params);\n\n    if (this.facetSearchPromise) {\n      this.facetSearchPromise\n        .then((fieldValues: IIndexFieldValue[]) => {\n          this.facet.usageAnalytics.logCustomEvent<IAnalyticsFacetMeta>(\n            analyticsActionCauseList.facetSearch,\n            {\n              facetId: this.facet.options.id,\n              facetField: this.facet.options.field.toString(),\n              facetTitle: this.facet.options.title\n            },\n            this.facet.root\n          );\n          this.facet.logger.debug('Received field values', fieldValues);\n          this.processNewFacetSearchResults(fieldValues, params);\n          this.facetSearchElement.hideFacetSearchWaitingAnimation();\n          this.facetSearchPromise = undefined;\n        })\n        .catch((error: IEndpointError) => {\n          // The request might be normally cancelled if another search is triggered.\n          // In this case we do not hide the animation to prevent flicking.\n          if (Utils.exists(error)) {\n            this.facet.logger.error('Error while retrieving facet values', error);\n            this.facetSearchElement.hideFacetSearchWaitingAnimation();\n          }\n          this.facetSearchPromise = undefined;\n          return null;\n        });\n    }\n  }\n\n  /**\n   * Trigger the event associated with the focus of the search input.\n   */\n  public focus(): void {\n    this.facetSearchElement.focus();\n  }\n\n  public get searchResults() {\n    return this.facetSearchElement.searchResults;\n  }\n\n  public get searchBarIsAnimating() {\n    return this.facetSearchElement.searchBarIsAnimating;\n  }\n\n  public get search() {\n    return this.facetSearchElement.search;\n  }\n\n  public setExpandedFacetSearchAccessibilityAttributes(searchResultsElement: HTMLElement) {\n    this.facet.setExpandedFacetSearchAccessibilityAttributes(searchResultsElement);\n  }\n\n  public setCollapsedFacetSearchAccessibilityAttributes() {\n    this.facet.setCollapsedFacetSearchAccessibilityAttributes();\n  }\n\n  public keyboardEventDefaultHandler() {\n    this.moreValuesToFetch = true;\n    this.highlightCurrentQueryWithinSearchResults();\n    if (!this.inputIsEmpty()) {\n      this.lastSearchWasEmpty = false;\n      this.displayNewValues(this.buildParamsForNormalSearch());\n    } else if (!this.lastSearchWasEmpty) {\n      // This normally happen if a user delete the search box content to go back to \"empty\" state.\n      this.currentlyDisplayedResults = undefined;\n      $$(this.searchResults).empty();\n      this.lastSearchWasEmpty = true;\n      this.displayNewValues(this.buildParamsForFetchingMore());\n    }\n  }\n\n  public keyboardNavigationEnterPressed(event: KeyboardEvent) {\n    if (event.shiftKey) {\n      this.triggerNewFacetSearch(this.buildParamsForNormalSearch());\n    } else {\n      if (this.searchResults.style.display != 'none') {\n        this.performActionOnCurrentSearchResult();\n        this.dismissSearchResults();\n      } else if ($$(this.search).is('.coveo-facet-search-no-results')) {\n        this.selectAllValuesMatchingSearch();\n      }\n    }\n  }\n\n  public keyboardNavigationDeletePressed(event: KeyboardEvent) {\n    if (event.shiftKey) {\n      this.performExcludeActionOnCurrentSearchResult();\n      this.dismissSearchResults();\n      this.input.value = '';\n    }\n  }\n\n  public displayNewValues(params: FacetSearchParameters = this.buildParamsForExcludingCurrentlyDisplayedValues()) {\n    this.cancelAnyPendingSearchOperation();\n    this.facetSearchTimeout = window.setTimeout(() => {\n      this.triggerNewFacetSearch(params);\n    }, this.facet.options.facetSearchDelay);\n  }\n\n  public getCaptions() {\n    return $$(this.searchResults).findAll('.coveo-facet-value-caption');\n  }\n\n  public getValueInInputForFacetSearch() {\n    return this.facetSearchElement.getValueInInputForFacetSearch();\n  }\n\n  public updateAriaLive(text: string) {\n    this.facet.searchInterface.ariaLive.updateText(text);\n  }\n\n  private get input() {\n    return this.facetSearchElement.input;\n  }\n\n  private get clear() {\n    return this.facetSearchElement.clear;\n  }\n\n  private shouldPositionSearchResults(): boolean {\n    return !ResponsiveComponentsUtils.isSmallFacetActivated($$(this.root)) && $$(this.facet.element).hasClass('coveo-facet-searching');\n  }\n\n  private buildBaseSearch(): HTMLElement {\n    this.facetSearchElement.build(() => this.handleFacetSearchClear());\n    $$(this.facetSearchElement.input).on('keyup', () => this.showOrHideClearElement());\n    return this.search;\n  }\n\n  private handleNuke() {\n    window.removeEventListener('resize', this.onResize);\n    document.removeEventListener('click', this.onDocumentClick);\n  }\n\n  private handleClickElsewhere(event: Event) {\n    if (this.currentlyDisplayedResults && this.search != event.target && this.searchResults != event.target && this.input != event.target) {\n      this.dismissSearchResults();\n    }\n  }\n\n  private handleFacetSearchClear() {\n    this.input.value = '';\n    $$(this.clear).hide();\n    this.dismissSearchResults();\n  }\n\n  private showOrHideClearElement() {\n    if (!this.inputIsEmpty()) {\n      $$(this.clear).show();\n    } else {\n      $$(this.clear).hide();\n      $$(this.search).removeClass('coveo-facet-search-no-results');\n    }\n  }\n  private cancelAnyPendingSearchOperation() {\n    if (Utils.exists(this.facetSearchTimeout)) {\n      clearTimeout(this.facetSearchTimeout);\n      this.facetSearchTimeout = undefined;\n    }\n    if (Utils.exists(this.facetSearchPromise)) {\n      Promise.reject(this.facetSearchPromise).catch(() => {});\n      this.facetSearchPromise = undefined;\n    }\n\n    this.facetSearchElement.hideFacetSearchWaitingAnimation();\n  }\n\n  private inputIsEmpty() {\n    return this.input.value.trim() == '';\n  }\n\n  private processNewFacetSearchResults(fieldValues: IIndexFieldValue[], facetSearchParameters: FacetSearchParameters) {\n    Assert.exists(fieldValues);\n    fieldValues = new FacetValuesOrder(this.facet, this.facet.facetSort).reorderValues(fieldValues);\n    if (fieldValues.length > 0) {\n      $$(this.search).removeClass('coveo-facet-search-no-results');\n      this.facet.fadeInactiveValuesInMainList(this.facet.options.facetSearchDelay);\n      this.rebuildSearchResults(fieldValues, facetSearchParameters);\n      if (!facetSearchParameters.fetchMore) {\n        this.showSearchResultsElement();\n      }\n      this.highlightCurrentQueryWithinSearchResults();\n      this.makeFirstSearchResultTheCurrentOne();\n      this.facetSearchElement.updateAriaLiveWithResults(this.input.value, this.currentlyDisplayedResults.length, this.moreValuesToFetch);\n    } else {\n      if (facetSearchParameters.fetchMore) {\n        this.moreValuesToFetch = false;\n      } else {\n        $$(this.search).addClass('coveo-facet-search-no-results');\n        this.showSearchResultsElement();\n        this.facetSearchElement.emptyAndShowNoResults();\n      }\n    }\n  }\n\n  private rebuildSearchResults(fieldValues: IIndexFieldValue[], facetSearchParameters: FacetSearchParameters) {\n    Assert.exists(fieldValues);\n    if (!facetSearchParameters.fetchMore) {\n      $$(this.searchResults).empty();\n    }\n\n    const facetSearchHasQuery = Utils.isNonEmptyString(facetSearchParameters.valueToSearch);\n\n    if (facetSearchHasQuery) {\n      this.appendSelectAllResultsButton();\n    }\n\n    let facetValues = map(fieldValues, fieldValue => {\n      return FacetValue.create(fieldValue);\n    });\n    each(new this.facetSearchValuesListKlass(this.facet, FacetValueElement).build(facetValues), (listElement: HTMLElement) => {\n      this.facetSearchElement.appendToSearchResults(listElement);\n    });\n    if (this.currentlyDisplayedResults) {\n      this.currentlyDisplayedResults = this.currentlyDisplayedResults.concat(pluck(facetValues, 'value'));\n    } else {\n      this.currentlyDisplayedResults = pluck(facetValues, 'value');\n    }\n\n    each($$(this.searchResults).findAll('.coveo-facet-selectable'), (elem: HTMLElement, index: number) => {\n      $$(elem).setAttribute('id', `coveo-facet-search-${this.facet.options.id}-suggestion-${index}`);\n      $$(elem).setAttribute('role', 'option');\n      $$(elem).setAttribute('aria-selected', 'false');\n      $$(elem).addClass('coveo-facet-search-selectable');\n    });\n  }\n\n  private appendSelectAllResultsButton() {\n    const selectAll = document.createElement('li');\n    $$(selectAll).addClass(['coveo-facet-selectable', 'coveo-facet-search-selectable', 'coveo-facet-search-select-all']);\n    $$(selectAll).text(l('SelectAll'));\n    $$(selectAll).on('click', () => this.selectAllValuesMatchingSearch());\n    this.facetSearchElement.appendToSearchResults(selectAll);\n  }\n\n  private buildParamsForNormalSearch() {\n    let params = new FacetSearchParameters(this.facet);\n    params.setValueToSearch(this.getValueInInputForFacetSearch());\n    params.fetchMore = false;\n    return params;\n  }\n\n  private buildParamsForFetchingMore() {\n    let params = this.buildParamsForExcludingCurrentlyDisplayedValues();\n    params.fetchMore = true;\n    return params;\n  }\n\n  protected buildParamsForExcludingCurrentlyDisplayedValues() {\n    let params = new FacetSearchParameters(this.facet);\n    params.excludeCurrentlyDisplayedValuesInSearch(this.searchResults);\n    params.setValueToSearch(this.getValueInInputForFacetSearch());\n    return params;\n  }\n\n  private showSearchResultsElement() {\n    this.positionSearchResults();\n  }\n\n  private highlightCurrentQueryWithinSearchResults() {\n    let search = this.getValueInInputForFacetSearch();\n    let regex = new RegExp('(' + StringUtils.wildcardsToRegex(search, this.facet.options.facetSearchIgnoreAccents) + ')', 'ig');\n    this.facetSearchElement.highlightCurrentQueryInSearchResults(regex);\n  }\n\n  private makeFirstSearchResultTheCurrentOne() {\n    this.facetSearchElement.setAsCurrentResult($$(this.getSelectables()[0]));\n  }\n\n  private getSelectables(target = this.searchResults) {\n    return $$(target).findAll('.coveo-facet-selectable');\n  }\n\n  private performActionOnCurrentSearchResult() {\n    let current = $$(this.searchResults).find('.coveo-facet-search-current-result');\n    Assert.check(current != undefined);\n\n    const shouldExclude = $$(current).hasClass('coveo-facet-value-will-exclude');\n\n    if (shouldExclude) {\n      const excludeIcon = $$(current).find('.coveo-facet-value-exclude');\n      excludeIcon.click();\n      return;\n    }\n\n    const checkbox = <HTMLInputElement>$$(current).find('input[type=\"checkbox\"]');\n\n    if (checkbox) {\n      checkbox.checked = true;\n      $$(checkbox).trigger('change');\n    } else {\n      current.click();\n    }\n  }\n\n  private performExcludeActionOnCurrentSearchResult() {\n    let current = $$(this.searchResults).find('.coveo-facet-search-current-result');\n    Assert.check(current != null);\n    let valueCaption = $$(current).find('.coveo-facet-value-caption');\n    let valueElement = this.facet.facetValuesList.get($$(valueCaption).text());\n\n    valueElement.toggleExcludeWithUA();\n  }\n\n  protected selectAllValuesMatchingSearch() {\n    this.facet.showWaitingAnimation();\n\n    let searchParameters = new FacetSearchParameters(this.facet);\n    searchParameters.nbResults = 1000;\n    searchParameters.setValueToSearch(this.getValueInInputForFacetSearch());\n    this.facet.facetQueryController.search(searchParameters).then((fieldValues: IIndexFieldValue[]) => {\n      this.dismissSearchResults();\n      ModalBox.close(true);\n      let facetValues = map(fieldValues, fieldValue => {\n        let facetValue = this.facet.values.get(fieldValue.value);\n        if (!Utils.exists(facetValue)) {\n          facetValue = FacetValue.create(fieldValue);\n        }\n        facetValue.selected = true;\n        facetValue.excluded = false;\n        return facetValue;\n      });\n      this.facet.processFacetSearchAllResultsSelected(facetValues);\n    });\n    this.dismissSearchResults();\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Facet/FacetSearch.ts","/// <reference path=\"Facet.ts\" />\nimport { Facet } from './Facet';\nimport { IFacetValueElementKlass } from './FacetValueElement';\nimport { FacetValue } from './FacetValue';\nimport * as _ from 'underscore';\n\nexport interface IFacetSearchValuesListKlass {\n  new (facet: Facet, facetValueElementKlass: IFacetValueElementKlass): FacetSearchValuesList;\n}\n\nexport class FacetSearchValuesList {\n  constructor(public facet: Facet, public facetValueElementKlass: IFacetValueElementKlass) {}\n\n  public build(facetValues: FacetValue[]): HTMLElement[] {\n    var valuesToBuildWith = _.map(facetValues, facetValue => {\n      return (\n        _.find(this.facet.values.getAll(), (valueAlreadyInFacet: FacetValue) => {\n          return valueAlreadyInFacet.value == facetValue.value;\n        }) || facetValue\n      );\n    });\n    return _.map(valuesToBuildWith, facetValue => {\n      const valueElement = new this.facetValueElementKlass(this.facet, facetValue, this.facet.keepDisplayedValuesNextTime).build();\n      valueElement.renderer.excludeIcon.setAttribute('aria-hidden', 'true');\n      valueElement.renderer.label.setAttribute('aria-hidden', 'true');\n      return valueElement.renderer.listItem;\n    });\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Facet/FacetSearchValuesList.ts","/// <reference path=\"Facet.ts\" />\n\nimport { FacetValueElement, IFacetValueElementKlass } from './FacetValueElement';\nimport { Facet } from './Facet';\nimport { $$ } from '../../utils/Dom';\nimport { ValueElement } from './ValueElement';\nimport { FacetValue } from './FacetValue';\nimport { Utils } from '../../utils/Utils';\nimport { FacetUtils } from './FacetUtils';\nimport * as _ from 'underscore';\n\nexport class FacetValuesList {\n  // Dictionary of values. The key is always in lowercase.\n  private valueList: { [value: string]: FacetValueElement } = {};\n\n  public valueContainer: HTMLElement;\n  private currentlyDisplayed: ValueElement[] = [];\n\n  constructor(public facet: Facet, public facetValueElementKlass: IFacetValueElementKlass) {}\n\n  public build(): HTMLElement {\n    this.valueContainer = document.createElement('ul');\n    $$(this.valueContainer).addClass('coveo-facet-values');\n    return this.valueContainer;\n  }\n\n  public getAllCurrentlyDisplayed(): ValueElement[] {\n    return this.currentlyDisplayed;\n  }\n\n  public getAll(): ValueElement[] {\n    return _.toArray<ValueElement>(this.valueList);\n  }\n\n  public getAllFacetValue(): FacetValue[] {\n    return _.map(this.getAll(), (v: ValueElement) => {\n      return v.facetValue;\n    });\n  }\n\n  public get(value: FacetValue | string): ValueElement {\n    var getter;\n    if (value instanceof FacetValue) {\n      getter = value.value;\n    } else {\n      value = Utils.anyTypeToString(value);\n      getter = value;\n    }\n    this.ensureFacetValueIsInList(value);\n    return this.valueList[getter.toLowerCase()];\n  }\n\n  public select(value: FacetValue | string): ValueElement {\n    var valueElement = this.get(value);\n    valueElement.select();\n    return valueElement;\n  }\n\n  public unselect(value: FacetValue | string): ValueElement {\n    var valueElement = this.get(value);\n    valueElement.unselect();\n    return valueElement;\n  }\n\n  public exclude(value: FacetValue | string): ValueElement {\n    var valueElement = this.get(value);\n    valueElement.exclude();\n    return valueElement;\n  }\n\n  public unExclude(value: FacetValue | string): ValueElement {\n    var valueElement = this.get(value);\n    valueElement.unexclude();\n    return valueElement;\n  }\n\n  public toggleSelect(value: FacetValue | string): ValueElement {\n    var valueElement = this.get(value);\n    if (valueElement.facetValue.selected) {\n      valueElement.unselect();\n    } else {\n      valueElement.select();\n    }\n    return valueElement;\n  }\n\n  public toggleExclude(value: FacetValue | string): ValueElement {\n    var valueElement = this.get(value);\n    if (valueElement.facetValue.excluded) {\n      valueElement.unexclude();\n    } else {\n      valueElement.exclude();\n    }\n    return valueElement;\n  }\n\n  public rebuild(numberOfValues: number): void {\n    $$(this.valueContainer).empty();\n    this.currentlyDisplayed = [];\n    var allValues = this.getValuesToBuildWith();\n    var toCompare = numberOfValues;\n    let docFragment = document.createDocumentFragment();\n    _.each(allValues, (facetValue: FacetValue, index?: number, list?) => {\n      if (this.facetValueShouldBeRemoved(facetValue)) {\n        this.facet.values.remove(facetValue.value);\n        toCompare += 1;\n      } else if (index < toCompare) {\n        var valueElement = new this.facetValueElementKlass(this.facet, facetValue, true);\n        this.valueList[facetValue.value.toLowerCase()] = valueElement;\n        var valueListElement = valueElement.build().renderer.listItem;\n        docFragment.appendChild(valueListElement);\n        this.currentlyDisplayed.push(valueElement);\n      }\n    });\n    this.valueContainer.appendChild(docFragment);\n\n    FacetUtils.addNoStateCssClassToFacetValues(this.facet, this.valueContainer);\n  }\n\n  protected getValuesToBuildWith() {\n    return this.facet.values.getAll();\n  }\n\n  private facetValueShouldBeRemoved(facetValue: FacetValue): boolean {\n    return (\n      facetValue.occurrences == 0 &&\n      (facetValue.delta == 0 || facetValue.delta == undefined) &&\n      !facetValue.selected &&\n      !facetValue.excluded &&\n      !this.facet.keepDisplayedValuesNextTime\n    );\n  }\n\n  private ensureFacetValueIsInList(value: any) {\n    var facetValue: FacetValue;\n    if (value instanceof FacetValue) {\n      facetValue = this.facet.values.get((<FacetValue>value).value);\n      if (facetValue == null) {\n        this.facet.values.add(value);\n        facetValue = value;\n      }\n    } else {\n      facetValue = this.facet.values.get(value);\n      if (facetValue == null) {\n        facetValue = FacetValue.createFromValue(value);\n        this.facet.values.add(facetValue);\n      }\n    }\n\n    var key = facetValue.value.toLowerCase();\n    var found = this.valueList[key];\n    if (found == undefined) {\n      found = this.valueList[key] = new FacetValueElement(this.facet, facetValue, true);\n      found.build();\n    } else {\n      found.facetValue = facetValue;\n    }\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Facet/FacetValuesList.ts","/// <reference path=\"Facet.ts\" />\n\nimport { Facet } from './Facet';\nimport { FacetValue } from './FacetValue';\nimport { IPopulateOmniboxObject } from '../Omnibox/OmniboxInterface';\nimport { ValueElement } from './ValueElement';\nimport { IAnalyticsActionCause } from '../Analytics/AnalyticsActionListMeta';\n\nexport interface IOmniboxValueElementKlass {\n  new (\n    facet: Facet,\n    facetValue: FacetValue,\n    eventArg: IPopulateOmniboxObject,\n    onSelect?: (elem: ValueElement, cause: IAnalyticsActionCause) => void,\n    onExclude?: (elem: ValueElement, cause: IAnalyticsActionCause) => void\n  ): OmniboxValueElement;\n}\n\nexport class OmniboxValueElement extends ValueElement {\n  constructor(\n    public facet: Facet,\n    public facetValue: FacetValue,\n    public eventArg: IPopulateOmniboxObject,\n    onSelect?: (elem: ValueElement, cause: IAnalyticsActionCause) => void,\n    onExclude?: (elem: ValueElement, cause: IAnalyticsActionCause) => void\n  ) {\n    super(facet, facetValue, onSelect, onExclude);\n  }\n\n  public bindEvent() {\n    super.bindEvent({ displayNextTime: false, pinFacet: false, omniboxObject: this.eventArg });\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Facet/OmniboxValueElement.ts","/// <reference path=\"Facet.ts\" />\nimport { each, indexOf, pluck } from 'underscore';\nimport { $$ } from '../../utils/Dom';\nimport { Utils } from '../../utils/Utils';\nimport { IAnalyticsActionCause, IAnalyticsOmniboxFacetMeta } from '../Analytics/AnalyticsActionListMeta';\nimport { IPopulateOmniboxObject } from '../Omnibox/OmniboxInterface';\nimport { Facet } from './Facet';\nimport { FacetUtils } from './FacetUtils';\nimport { FacetValue } from './FacetValue';\nimport { IOmniboxValueElementKlass } from './OmniboxValueElement';\nimport { ValueElement } from './ValueElement';\n\nexport class OmniboxValuesList {\n  constructor(\n    public facet: Facet,\n    public facetValues: FacetValue[],\n    public omniboxObject: IPopulateOmniboxObject,\n    public omniboxValueElementKlass: IOmniboxValueElementKlass\n  ) {}\n\n  public build() {\n    const rows: HTMLElement[] = [];\n    each(this.facetValues, (facetValue: FacetValue) => {\n      rows.push(this.buildOmniboxForOneRow(facetValue, this.omniboxObject));\n    });\n    return this.buildFinalOmniboxElement(rows);\n  }\n\n  private buildOmniboxForOneRow(facetValue: FacetValue, omniboxObject: IPopulateOmniboxObject): HTMLElement {\n    const selectCallback = (elem: ValueElement, cause: IAnalyticsActionCause) => this.logAnalyticsEvent(elem, cause);\n    const excludeCallback = (elem: ValueElement, cause: IAnalyticsActionCause) => this.logAnalyticsEvent(elem, cause);\n    const omniboxValueElement = new this.omniboxValueElementKlass(this.facet, facetValue, omniboxObject, selectCallback, excludeCallback);\n    const omniboxRowContent = omniboxValueElement.build().renderer.listItem;\n\n    const regex = omniboxObject.completeQueryExpression.regex;\n    const valueToSearch = omniboxObject.completeQueryExpression.word;\n    const caption = $$(omniboxRowContent).find('.coveo-facet-value-caption');\n    caption.innerHTML = this.highlightOmniboxMatch(this.facet.getValueCaption(facetValue), regex, valueToSearch);\n\n    const omniboxRow = $$('ul', {\n      className: 'coveo-omnibox-selectable coveo-facet-value coveo-omnibox-facet-value'\n    }).el;\n    omniboxRow.appendChild(omniboxRowContent);\n    $$(omniboxRow).on('keyboardSelect', () => {\n      const input = $$(omniboxRowContent).find('input[type=checkbox]');\n      $$(input).trigger('change');\n    });\n    omniboxRow['no-text-suggestion'] = true;\n    return omniboxRow;\n  }\n\n  private buildFinalOmniboxElement(rows: HTMLElement[]) {\n    const header = this.buildOmniboxHeader();\n    if (Utils.isEmptyArray(rows)) {\n      return undefined;\n    } else {\n      const ret = $$('div', {\n        className: 'coveo-omnibox-facet-value'\n      }).el;\n      ret.appendChild(header);\n      each(rows, r => {\n        ret.appendChild(r);\n      });\n      FacetUtils.addNoStateCssClassToFacetValues(this.facet, ret);\n      return ret;\n    }\n  }\n\n  private buildOmniboxHeader(): HTMLElement {\n    const title = this.facet.options.title;\n    const header = $$('div', {\n      className: 'coveo-omnibox-facet-header'\n    }).el;\n    $$(header).text(title);\n    return header;\n  }\n\n  private highlightOmniboxMatch(orignalStr: string, regex: RegExp, valueToSearch: string) {\n    const firstChar = orignalStr.search(regex);\n    const lastChar = firstChar + valueToSearch.length;\n    return (\n      orignalStr.slice(0, firstChar) +\n      '<span class=\"coveo-highlight\">' +\n      orignalStr.slice(firstChar, lastChar) +\n      '</span>' +\n      orignalStr.slice(lastChar)\n    );\n  }\n\n  private logAnalyticsEvent(elem: ValueElement, cause: IAnalyticsActionCause) {\n    const strippedFacetValues = pluck(this.facetValues, 'value');\n    elem.facet.usageAnalytics.logSearchEvent<IAnalyticsOmniboxFacetMeta>(cause, {\n      query: this.omniboxObject.completeQueryExpression.word,\n      facetId: elem.facet.options.id,\n      facetField: elem.facet.options.field.toString(),\n      facetTitle: elem.facet.options.title,\n      facetValue: elem.facetValue.value,\n      suggestions: strippedFacetValues.join(';'),\n      suggestionRanking: indexOf(strippedFacetValues, elem.facetValue.value)\n    });\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Facet/OmniboxValuesList.ts","import { Expression } from './Expression';\nimport { Result } from '../Result/Result';\nimport { Grammar } from '../Grammar';\nimport { RefResult } from '../Result/RefResult';\nimport { ExpressionEndOfInput } from './ExpressionEndOfInput';\nimport _ = require('underscore');\n\nexport class ExpressionRef implements Expression {\n  constructor(public ref: string, public occurrence: string | number, public id: string, public grammar: Grammar) {}\n\n  parse(input: string, end: boolean): Result {\n    var ref = this.grammar.getExpression(this.ref);\n    if (ref == null) {\n      throw new Error('Expression not found:' + this.ref);\n    }\n    if (this.occurrence == '?' || this.occurrence == null) {\n      return this.parseOnce(input, end, ref);\n    } else {\n      return this.parseMany(input, end, ref);\n    }\n  }\n\n  parseOnce(input: string, end: boolean, ref: Expression): Result {\n    var refResult = ref.parse(input, end);\n    var success = refResult.isSuccess();\n    if (!success && this.occurrence == '?') {\n      if (end) {\n        // if end was found\n        if (input.length == 0) {\n          return new RefResult([], this, input, refResult);\n        }\n        // if end was not found and all error expression are EndOfInput, reparse with end = false.\n        if (_.all(refResult.getBestExpect(), expect => expect.expression == ExpressionEndOfInput)) {\n          return new RefResult([new Result(null, ExpressionEndOfInput, input)], this, input, refResult);\n        }\n        return refResult;\n      }\n      // the ref is not required and it do not need to end the input\n      return new RefResult([], this, input, null);\n    }\n    return new RefResult([refResult], this, input, success ? null : refResult);\n  }\n\n  parseMany(input: string, end: boolean, ref: Expression) {\n    var subResults: Result[] = [];\n    var subResult: Result;\n    var subInput = input;\n    var success: boolean;\n\n    // try to parse until it do not match, do not manage the end yet\n    do {\n      subResult = ref.parse(subInput, false);\n      success = subResult.isSuccess();\n      if (success) {\n        subResults.push(subResult);\n        subInput = subInput.substr(subResult.getLength());\n      }\n    } while (success && subResult.input != subInput);\n\n    // minimal occurance of a ref\n    var requiredOccurance = _.isNumber(this.occurrence) ? <number>this.occurrence : this.occurrence == '+' ? 1 : 0;\n\n    // if the minimal occurance is not reached add the fail result to the list\n    if (subResults.length < requiredOccurance) {\n      subResults.push(subResult);\n    } else if (end) {\n      // if there is at least one match, check if the last match is at the end\n      if (subResults.length > 0) {\n        var last = _.last(subResults);\n        subResult = ref.parse(last.input, true);\n        if (subResult.isSuccess()) {\n          // if successful, replace the last subResult by the one with end\n          subResults[subResults.length - 1] = subResult;\n        } else {\n          // if not successful, we keep the last successful result and we add a endOfInputExpected Result after it\n          subResults.push(new Result(null, ExpressionEndOfInput, last.input.substr(last.getLength())));\n          // we parse back the last with the length of the successful Result (at the same place we put the endOfInputExpected) and put it in failAttempt\n          subResult = ref.parse(last.input.substr(last.getLength()), true);\n        }\n      } else if (input.length != 0) {\n        // if there is no result at all and we are not at the end, return a endOfInputExpected Result\n        var endOfInput = new Result(null, ExpressionEndOfInput, input);\n        return new RefResult([endOfInput], this, input, subResult);\n      }\n    }\n    return new RefResult(subResults, this, input, subResult);\n  }\n\n  public toString() {\n    return this.id;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/magicbox/Expression/ExpressionRef.ts","import { Result } from './Result';\nimport { Expression } from '../Expression/Expression';\nimport _ = require('underscore');\n\nexport class RefResult extends Result {\n  public failAttempt: Result;\n  constructor(results: Result[], public expression: Expression, public input: string, lastResult: Result) {\n    super(results, expression, input);\n    if (_.last(results) != lastResult) {\n      this.failAttempt = lastResult;\n      if (this.failAttempt != null) {\n        this.failAttempt.parent = this;\n      }\n    }\n  }\n\n  /**\n   * Return all fail result.\n   */\n  public getExpect(): Result[] {\n    var expect = super.getExpect();\n    // add the failAttempt to the expect\n    if (this.failAttempt != null) {\n      return expect.concat(this.failAttempt.getExpect());\n    }\n    return expect;\n  }\n\n  /**\n   * Clean the result to have the most relevant result. If the result is successful just return a clone of it.\n   */\n  public clean(path?: Result[]): Result {\n    // if there is no failAttempt, we will use the default clean\n    if (this.failAttempt != null && (path != null || !this.isSuccess())) {\n      path = path || _.last(this.getBestExpect()).path(this);\n      var next = _.first(path);\n      // if the next is in the subResults, not the failAttempt, do the default clean;\n      if (next != null && next == this.failAttempt) {\n        var last = _.last(this.subResults);\n        // if the last is not successful, remove it because we want the failAttempt path\n        var subResults: Result[] = _.map(last != null && last.isSuccess() ? this.subResults : _.initial(this.subResults), subResult =>\n          subResult.clean()\n        );\n        subResults.push(next.clean(_.rest(path)));\n        return new Result(subResults, this.expression, this.input);\n      }\n    }\n    return super.clean(path);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/magicbox/Result/RefResult.ts","import { Expression } from './Expression';\nimport { ExpressionRef } from './ExpressionRef';\nimport { Result } from '../Result/Result';\nimport { OptionResult } from '../Result/OptionResult';\n\nexport class ExpressionOptions implements Expression {\n  constructor(public parts: ExpressionRef[], public id: string) {}\n\n  parse(input: string, end: boolean): Result {\n    var failAttempt: Result[] = [];\n    for (var i = 0; i < this.parts.length; i++) {\n      var subResult = this.parts[i].parse(input, end);\n      if (subResult.isSuccess()) {\n        return new OptionResult(subResult, this, input, failAttempt);\n      }\n      failAttempt.push(subResult);\n    }\n    return new OptionResult(null, this, input, failAttempt);\n  }\n\n  public toString() {\n    return this.id;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/magicbox/Expression/ExpressionOptions.ts","import { Result } from './Result';\nimport _ = require('underscore');\nimport { Expression } from '../Expression/Expression';\n\nexport class OptionResult extends Result {\n  constructor(private result: Result, public expression: Expression, public input: string, public failAttempt: Result[]) {\n    super(result != null ? [result] : null, expression, input);\n    _.forEach(this.failAttempt, subResult => {\n      subResult.parent = this;\n    });\n  }\n\n  /**\n   * Return all fail result.\n   */\n  public getExpect(): Result[] {\n    var expect = [];\n    if (this.result != null) {\n      expect = this.result.getExpect();\n    }\n    expect = _.reduce(this.failAttempt, (expect: Result[], result: Result) => expect.concat(result.getExpect()), expect);\n    if (expect.length > 0 && _.all(expect, result => result.input == this.input)) {\n      return [this];\n    }\n    return expect;\n  }\n\n  /**\n   * Clean the result to have the most relevant result. If the result is successful just return a clone of it.\n   */\n  public clean(path?: Result[]): Result {\n    if (path != null || !this.isSuccess()) {\n      // Result will be a ref. We skip it for cleaner tree.\n      path = _.rest(path || _.last(this.getBestExpect()).path(this));\n      // next can be Result or one of the failAttempt. In both case we have only one child\n      var next = _.first(path);\n      if (next == null) {\n        return new Result(null, this.expression, this.input);\n      }\n      return new Result([next.clean(_.rest(path))], this.expression, this.input);\n    }\n    // Result will be a ref. We skip it for cleaner tree.\n    return new Result(_.map(this.result.subResults, subResult => subResult.clean()), this.expression, this.input);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/magicbox/Result/OptionResult.ts","import { Expression } from './Expression';\nimport { Grammar } from '../Grammar';\nimport { Result } from '../Result/Result';\nimport { EndOfInputResult } from '../Result/Result';\n\nexport class ExpressionRegExp implements Expression {\n  constructor(public value: RegExp, public id: string, grammar: Grammar) {}\n\n  parse(input: string, end: boolean): Result {\n    var groups = input.match(this.value);\n    // if the RegExp do not match at the start, ignore it\n    if (groups != null && groups.index != 0) {\n      groups = null;\n    }\n    var result = new Result(groups != null ? groups[0] : null, this, input);\n    // if is successful and we require the end but the length of parsed is\n    // lower than the input length, return a EndOfInputExpected Result\n    if (result.isSuccess() && end && input.length > result.value.length) {\n      return new EndOfInputResult(result);\n    }\n    return result;\n  }\n\n  public toString() {\n    return this.id;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/magicbox/Expression/ExpressionRegExp.ts","import { Expression } from './Expression';\nimport { Result } from '../Result/Result';\nimport { Grammar } from '../Grammar';\n\nexport interface ExpressionFunctionArgument {\n  (input: string, end: boolean, expression: Expression): Result;\n}\n\nexport class ExpressionFunction implements Expression {\n  constructor(public func: ExpressionFunctionArgument, public id: string, public grammar: Grammar) {}\n\n  public parse(input: string, end: boolean): Result {\n    return this.func(input, end, this);\n  }\n\n  public toString() {\n    return this.id;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/magicbox/Expression/ExpressionFunction.ts","import { Result } from '../Result/Result';\nimport { Expression } from './Expression';\n\nexport class ExpressionList implements Expression {\n  constructor(private parts: Expression[], public id: string) {\n    if (parts.length == 0) {\n      throw new Error(JSON.stringify(id) + ' should have at least 1 parts');\n    }\n  }\n\n  parse(input: string, end: boolean): Result {\n    var subResults: Result[] = [];\n    var subResult: Result;\n    var subInput = input;\n\n    for (var i = 0; i < this.parts.length; i++) {\n      var part = this.parts[i];\n      subResult = part.parse(subInput, end && i == this.parts.length - 1);\n      subResults.push(subResult);\n      // if the subResult do not succeed, stop the parsing\n      if (!subResult.isSuccess()) {\n        break;\n      } else {\n        subInput = subInput.substr(subResult.getLength());\n      }\n    }\n    return new Result(subResults, this, input);\n  }\n\n  public toString() {\n    return this.id;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/magicbox/Expression/ExpressionList.ts","import { SubGrammar } from './Expressions';\nimport { Field } from './Field';\n\nexport var NestedQuery: SubGrammar = {\n  basicExpressions: ['NestedQuery'],\n  grammars: {\n    NestedQuery: '[[NestedField][OptionalSpaces][Expressions]]',\n    NestedField: '[[Field]]',\n    FieldValue: ['NestedQuery']\n  },\n  include: [Field]\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/magicbox/Grammars/NestedQuery.ts","import { SubGrammar } from './Expressions';\nimport { Basic } from './Basic';\n\nexport const Date: SubGrammar = {\n  grammars: {\n    Date: '[DateYear]/[DateMonth]/[DateDay]',\n    DateYear: /([0-9]{4})/,\n    DateMonth: /(1[0-2]|0?[1-9])/,\n    DateDay: /([1-2][0-9]|3[0-1]|0?[1-9])/,\n    DateRange: '[Date][Spaces?]..[Spaces?][Date]',\n    DateRelative: ['DateRelativeNegative', 'DateRelativeTerm'],\n    DateRelativeTerm: /now|today|yesterday/,\n    DateRelativeNegative: '[DateRelativeTerm][DateRelativeNegativeRef]',\n    DateRelativeNegativeRef: /([\\-\\+][0-9]+(s|m|h|d|mo|y))/\n  },\n  include: [Basic]\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/magicbox/Grammars/Date.ts","import { Basic } from './Basic';\nimport { SubGrammar } from './Expressions';\nexport const QueryExtension: SubGrammar = {\n  basicExpressions: ['QueryExtension'],\n  grammars: {\n    QueryExtension: '$[QueryExtensionName]([QueryExtensionArguments])',\n    QueryExtensionName: /\\w+/,\n    QueryExtensionArguments: '[QueryExtensionArgumentList*][QueryExtensionArgument]',\n    QueryExtensionArgumentList: '[QueryExtensionArgument][Spaces?],[Spaces?]',\n    QueryExtensionArgument: '[QueryExtensionArgumentName]:[Spaces?][QueryExtensionArgumentValue]',\n    QueryExtensionArgumentName: /\\w+/,\n    QueryExtensionArgumentValue: ['SingleQuoted', 'Expressions']\n  },\n  include: [Basic]\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/magicbox/Grammars/QueryExtension.ts","import { SubGrammar } from './Expressions';\n\nexport const SubExpression: SubGrammar = {\n  basicExpressions: ['SubExpression'],\n  grammars: {\n    SubExpression: '([Expressions])'\n  }\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/magicbox/Grammars/SubExpression.ts","import * as _ from 'underscore';\nimport { Component } from '../Core';\nimport { l } from '../strings/Strings';\nimport { $$ } from '../utils/Dom';\nimport { KEYBOARD } from '../utils/KeyboardUtils';\nimport { MagicBoxInstance } from './MagicBox';\nimport { Result } from './Result/Result';\n\nexport class InputManager {\n  public input: HTMLInputElement;\n  private underlay: HTMLElement;\n  private highlightContainer: HTMLElement;\n  private ghostTextContainer: HTMLElement;\n  private root: HTMLElement;\n\n  private result: Result;\n  private wordCompletion: string;\n\n  private hasFocus: boolean = false;\n\n  /**\n   * Binding event\n   */\n  public onblur: () => void;\n  public onfocus: () => void;\n  public onkeyup: (key: number) => boolean;\n  public onkeydown: (key: number) => boolean;\n  public onchangecursor: () => void;\n  public ontabpress: () => void;\n\n  public set expanded(isExpanded: boolean) {\n    this.input.setAttribute('aria-expanded', isExpanded.toString());\n  }\n\n  public set activeDescendant(element: HTMLElement) {\n    if (element) {\n      this.input.setAttribute('aria-activedescendant', element.id);\n    } else {\n      this.input.removeAttribute('aria-activedescendant');\n    }\n  }\n\n  constructor(element: HTMLElement, private onchange: (text: string, wordCompletion: boolean) => void, private magicBox: MagicBoxInstance) {\n    this.root = Component.resolveRoot(element);\n    this.underlay = document.createElement('div');\n    this.underlay.className = 'magic-box-underlay';\n\n    this.highlightContainer = document.createElement('span');\n    this.highlightContainer.className = 'magic-box-highlight-container';\n    this.underlay.appendChild(this.highlightContainer);\n\n    this.ghostTextContainer = document.createElement('span');\n    this.ghostTextContainer.className = 'magic-box-ghost-text';\n    this.underlay.appendChild(this.ghostTextContainer);\n\n    this.input = $$(element).find('input') as HTMLInputElement;\n    if (!this.input) {\n      this.input = document.createElement('input');\n      element.appendChild(this.underlay);\n      element.appendChild(this.input);\n    } else {\n      element.insertBefore(this.underlay, this.input);\n    }\n\n    this.setupHandler();\n    this.addAccessibilitiesProperties();\n  }\n\n  /**\n   * Update the input with the result value\n   */\n  private updateInput() {\n    if (this.input.value != this.result.input) {\n      this.input.value = this.result.input;\n      if (this.hasFocus) {\n        this.setCursor(this.getValue().length);\n      }\n    }\n  }\n\n  /**\n   * Update the highlight with the result value\n   */\n  private updateHighlight() {\n    $$(this.highlightContainer).empty();\n    this.highlightContainer.appendChild(this.result.toHtmlElement());\n  }\n\n  /**\n   * Update the ghostText with the wordCompletion\n   */\n  private updateWordCompletion() {\n    $$(this.ghostTextContainer).empty();\n    this.ghostTextContainer.innerHTML = '';\n    if (this.wordCompletion != null) {\n      this.ghostTextContainer.appendChild(document.createTextNode(this.wordCompletion.substr(this.result.input.length)));\n    }\n  }\n\n  /**\n   * Set the result and update visual if needed\n   */\n  public setResult(result: Result, wordCompletion?: string) {\n    this.result = result;\n\n    this.updateInput();\n\n    this.updateHighlight();\n\n    // reuse last wordCompletion for a better visual\n    if (_.isUndefined(wordCompletion) && this.wordCompletion != null && this.wordCompletion.indexOf(this.result.input) == 0) {\n      this.updateWordCompletion();\n    } else {\n      this.setWordCompletion(wordCompletion);\n    }\n\n    this.updateScroll();\n  }\n\n  /**\n   * Set the word completion. will be ignore if the word completion do not start with the result input\n   */\n  public setWordCompletion(wordCompletion: string) {\n    if (wordCompletion != null && wordCompletion.toLowerCase().indexOf(this.result.input.toLowerCase()) != 0) {\n      wordCompletion = null;\n    }\n    this.wordCompletion = wordCompletion;\n    this.updateWordCompletion();\n    this.updateScroll();\n  }\n\n  /**\n   * Set cursor position\n   */\n  public setCursor(index: number) {\n    this.input.focus();\n    if ((<any>this.input).createTextRange) {\n      var range = (<any>this.input).createTextRange();\n      range.move('character', index);\n      range.select();\n    } else if (this.input.selectionStart != null) {\n      this.input.focus();\n      this.input.setSelectionRange(index, index);\n    }\n  }\n\n  public getCursor() {\n    return this.input.selectionStart;\n  }\n\n  /**\n   * Update the scroll of the underlay this allowed the highlight to match the text\n   */\n\n  private updateScrollDefer: number;\n  private updateScroll(defer = true) {\n    var callback = () => {\n      // this is the cheapest call we can do before update scroll\n      if (this.underlay.clientWidth < this.underlay.scrollWidth) {\n        this.underlay.style.visibility = 'hidden';\n        this.underlay.scrollLeft = this.input.scrollLeft;\n        this.underlay.scrollTop = this.input.scrollTop;\n        this.underlay.style.visibility = 'visible';\n      }\n      this.updateScrollDefer = null;\n      // one day we will have to remove this\n      if (this.hasFocus) {\n        this.updateScroll();\n      }\n    };\n    // sometime we want it to be updated as soon as posible to have no flickering\n    if (!defer) {\n      callback();\n    } else if (this.updateScrollDefer == null) {\n      this.updateScrollDefer = requestAnimationFrame(callback);\n    }\n  }\n\n  private setupHandler() {\n    this.input.onblur = () => {\n      this.hasFocus = false;\n      setTimeout(() => {\n        if (!this.hasFocus) {\n          this.onblur && this.onblur();\n        }\n      }, 300);\n      this.updateScroll();\n    };\n    this.input.onfocus = () => {\n      if (!this.hasFocus) {\n        this.hasFocus = true;\n        this.updateScroll();\n        this.onfocus && this.onfocus();\n      }\n    };\n    this.input.onkeydown = e => {\n      this.keydown(e);\n    };\n    this.input.onkeyup = e => {\n      this.keyup(e);\n    };\n    this.input.oncut = () => {\n      setTimeout(() => {\n        this.onInputChange();\n      });\n    };\n    this.input.onpaste = () => {\n      setTimeout(() => {\n        this.onInputChange();\n      });\n    };\n  }\n\n  private addAccessibilitiesProperties() {\n    this.input.setAttribute('autocomplete', 'off');\n    this.input.setAttribute('type', 'text');\n    this.input.setAttribute('role', 'combobox');\n    this.input.setAttribute('form', 'coveo-dummy-form');\n    this.input.setAttribute('aria-autocomplete', 'list');\n    this.input.setAttribute('title', `${l('InsertAQuery')}. ${l('PressEnterToSend')}`);\n  }\n\n  public focus() {\n    // neet a timeout for IE8-9\n    setTimeout(() => {\n      this.input.focus();\n      this.setCursor(this.getValue().length);\n    });\n  }\n\n  public blur() {\n    if (this.hasFocus) {\n      this.input.blur();\n    }\n  }\n\n  private keydown(e: KeyboardEvent) {\n    switch (e.keyCode || e.which) {\n      case KEYBOARD.TAB:\n        // Take care of not \"preventing\" the default event behaviour : For accessibility reasons, it is much simpler\n        // to simply let the browser do it's standard action (which is to focus out of the input).\n        // Instead, handle \"tabPress\" immediately instead of \"keyup\".\n        // The focus will be on the next element in the page when the key is released, so keyup on the input will never be triggered.\n        this.tabPress();\n        this.magicBox.clearSuggestion();\n        break;\n      default:\n        e.stopPropagation();\n        if (this.onkeydown == null || this.onkeydown(e.keyCode || e.which)) {\n          requestAnimationFrame(() => {\n            this.onInputChange();\n          });\n        } else {\n          e.preventDefault();\n        }\n        break;\n    }\n  }\n\n  private keyup(e: KeyboardEvent) {\n    switch (e.keyCode || e.which) {\n      case KEYBOARD.LEFT_ARROW:\n      case KEYBOARD.RIGHT_ARROW:\n        this.handleLeftRightArrow(e);\n        break;\n      default:\n        if (this.onkeydown == null || this.onkeyup(e.keyCode || e.which)) {\n          this.onInputChange();\n        } else {\n          e.preventDefault();\n        }\n        break;\n    }\n  }\n\n  private handleLeftRightArrow(e: KeyboardEvent) {\n    const querySuggestPreview = $$(this.root).find(`.${Component.computeCssClassNameForType('QuerySuggestPreview')}`);\n    if (!querySuggestPreview) {\n      this.onchangecursor();\n    }\n\n    const inputChanged = this.onkeydown == null || this.onkeyup(e.keyCode || e.which);\n    inputChanged ? this.onInputChange() : e.preventDefault();\n  }\n\n  private tabPress() {\n    this.ontabpress && this.ontabpress();\n    this.onblur && this.onblur();\n  }\n\n  private onInputChange() {\n    if (this.result.input != this.input.value) {\n      this.onchange(this.input.value, false);\n    }\n  }\n\n  public getValue() {\n    return this.input.value;\n  }\n\n  public getWordCompletion() {\n    return this.wordCompletion;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/magicbox/InputManager.ts","import { flatten } from 'underscore';\n\nexport interface IQueryProcessorOptions {\n  timeout: number;\n}\n\nexport enum ProcessingStatus {\n  Finished,\n  TimedOut,\n  Overriden\n}\n\nexport interface IQueryProcessResult<T> {\n  status: ProcessingStatus;\n  results: T[];\n}\n\n/**\n * IE11 equivalent of Promise.race\n * Adapted from Promise.race(iterable) polyfill on https://www.promisejs.org/api/\n */\nfunction racePromises<T>(promises: Thenable<T>[]): Promise<T> {\n  return new Promise<T>((resolve, reject) => promises.forEach(value => Promise.resolve(value).then(resolve, reject)));\n}\n\nexport class QueryProcessor<T> {\n  private override: () => void;\n  private options: IQueryProcessorOptions;\n  private processedResults: T[][];\n\n  constructor(options: Partial<IQueryProcessorOptions> = {}) {\n    this.options = { timeout: 500, ...options };\n  }\n\n  /**\n   * Overrides the previous queries and accumulates the result of promise arrays with a timeout.\n   */\n  public async processQueries(queries: (T[] | Promise<T[]>)[]): Promise<IQueryProcessResult<T>> {\n    this.overrideIfProcessing();\n    this.processedResults = new Array(queries.length);\n    const asyncQueries = queries.map(query => (query instanceof Promise ? query : Promise.resolve(query)));\n\n    return racePromises([\n      this.accumulateResultsChronologically(asyncQueries).then(() => this.buildProcessResults(ProcessingStatus.Finished)),\n      this.waitForOverride().then(() => this.buildProcessResults(ProcessingStatus.Overriden)),\n      this.waitForTimeout().then(() => this.buildProcessResults(ProcessingStatus.TimedOut))\n    ]);\n  }\n\n  public async overrideIfProcessing() {\n    if (this.override) {\n      this.override();\n    }\n  }\n\n  private get orderedResults(): T[] {\n    return flatten(this.processedResults.filter(result => !!result), true);\n  }\n\n  private buildProcessResults(status: ProcessingStatus): IQueryProcessResult<T> {\n    return {\n      status,\n      results: status !== ProcessingStatus.Overriden ? this.orderedResults : []\n    };\n  }\n\n  private async accumulateResultsChronologically(queries: Promise<T[]>[]) {\n    const output = this.processedResults;\n    await Promise.all(queries.map((query, i) => query.then(items => (output[i] = items))));\n  }\n\n  private waitForOverride() {\n    return new Promise<void>(resolve => {\n      this.override = () => {\n        this.override = null;\n        resolve();\n      };\n    });\n  }\n\n  private waitForTimeout() {\n    return new Promise<void>(resolve => setTimeout(() => resolve(), this.options.timeout));\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/magicbox/QueryProcessor.ts","import { $$, Dom } from '../../../utils/Dom';\nimport { SVGDom } from '../../../utils/SVGDom';\n\nexport interface IDynamicFacetHeaderButtonOptions {\n  label: string;\n  ariaLabel?: string;\n  shouldDisplay?: boolean;\n  className?: string;\n  iconSVG?: string;\n  iconClassName?: string;\n  action?: () => void;\n}\n\nexport class DynamicFacetHeaderButton {\n  private button: Dom;\n  public element: HTMLElement;\n\n  constructor(private rootOptions: IDynamicFacetHeaderButtonOptions) {\n    this.create();\n  }\n\n  private create() {\n    const hasIcon = this.rootOptions.iconSVG && this.rootOptions.iconClassName;\n\n    this.button = $$(\n      'button',\n      {\n        className: `coveo-dynamic-facet-header-btn ${this.rootOptions.className || ''}`.trim(),\n        type: 'button'\n      },\n      hasIcon ? this.rootOptions.iconSVG : this.rootOptions.label\n    );\n\n    this.rootOptions.action && this.button.on('click', this.rootOptions.action);\n\n    if (hasIcon) {\n      this.button.setAttribute('aria-label', this.rootOptions.label);\n      this.button.setAttribute('title', this.rootOptions.label);\n      SVGDom.addClassToSVGInContainer(this.button.el, this.rootOptions.iconClassName);\n    }\n\n    if (this.rootOptions.ariaLabel) {\n      this.button.setAttribute('aria-label', this.rootOptions.ariaLabel);\n    }\n\n    if (this.rootOptions.shouldDisplay !== undefined) {\n      this.toggle(this.rootOptions.shouldDisplay);\n    }\n\n    this.element = this.button.el;\n  }\n\n  public toggle(shouldDisplay: boolean) {\n    this.button.toggle(shouldDisplay);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/DynamicFacet/DynamicFacetHeader/DynamicFacetHeaderButton.ts","import { chain, contains, first, values } from 'underscore';\nimport { Assert } from '../../misc/Assert';\nimport { QueryBuilder } from '../../ui/Base/QueryBuilder';\n\nexport enum VALID_SORT {\n  RELEVANCY = 'relevancy',\n  DATE = 'date',\n  QRE = 'qre'\n}\n\nexport enum VALID_DIRECTION {\n  ASCENDING = 'ascending',\n  DESCENDING = 'descending'\n}\n\nexport class SortCriterion {\n  private static sortsNeedingDirection = [VALID_SORT.DATE];\n\n  /**\n   * Create a new SortCriteria\n   * @param sort The sort criteria (e.g.: relevancy, date)\n   * @param direction The direction by which to sort (e.g.: ascending, descending)\n   */\n  constructor(public sort: VALID_SORT, public direction: VALID_DIRECTION | '' = '') {\n    if (!SortCriterion.sortIsField(sort)) {\n      Assert.check(\n        this.isValidSort(sort),\n        `${sort} is not a valid sort criteria. Valid values are ${values(VALID_SORT)} or a valid index sortable index field.`\n      );\n    }\n    if (SortCriterion.sortNeedsDirection(sort)) {\n      Assert.check(\n        this.isValidDirection(direction),\n        `${direction} is not a valid sort criteria direction. Valid values are ${values(VALID_DIRECTION)}`\n      );\n    } else {\n      Assert.check(direction == '');\n    }\n  }\n\n  private isValidDirection(direction: string): direction is VALID_DIRECTION {\n    return chain(VALID_DIRECTION)\n      .values()\n      .contains(direction as any)\n      .value();\n  }\n\n  private isValidSort(sort: string): sort is VALID_SORT {\n    return chain(VALID_SORT)\n      .values()\n      .contains(sort as any)\n      .value();\n  }\n\n  private static sortIsField(criteria: string) {\n    return criteria.charAt(0) == '@';\n  }\n\n  private static sortNeedsDirection(sort: string) {\n    return contains(SortCriterion.sortsNeedingDirection, sort) || SortCriterion.sortIsField(sort);\n  }\n}\n\nexport class SortCriteria {\n  private criteria: SortCriterion[] = [];\n\n  constructor(rawCriteriaString: string) {\n    const criteria = rawCriteriaString.split(';');\n    criteria.forEach(criterion => {\n      const split = criterion.match(/\\S+/g);\n      this.criteria.push(new SortCriterion(split[0] as VALID_SORT, split[1] as VALID_DIRECTION));\n    });\n  }\n\n  public get direction() {\n    return first(this.criteria).direction;\n  }\n\n  public get sort() {\n    return first(this.criteria).sort;\n  }\n\n  /**\n   * Return a new SortCriteria from a string\n   * @param criteria The string from which to create the SortCriteria\n   */\n  static parse(criteria: string): SortCriteria {\n    return new SortCriteria(criteria);\n  }\n\n  /**\n   * Put the sort criteria in the passed queryBuilder\n   * @param queryBuilder The queryBuilder in which to put the sort criteria.\n   */\n  public putInQueryBuilder(queryBuilder: QueryBuilder) {\n    Assert.exists(queryBuilder);\n    queryBuilder.sortCriteria = this.toString()\n      .split(';')\n      .join(',');\n  }\n\n  /**\n   * Returns a string representation of the sort criteria (e.g.: 'date ascending').\n   */\n  public toString(): string {\n    return this.criteria\n      .map(criterion => {\n        return criterion.direction ? `${criterion.sort} ${criterion.direction}` : `${criterion.sort}`;\n      })\n      .join(';');\n  }\n\n  /**\n   * Checks if the SortCriteria is equal to another.\n   * @param criteria The SortCriteria to compare with\n   */\n  public equals(criteria: SortCriteria): boolean {\n    return criteria.toString() == this.toString();\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Sort/SortCriteria.ts","import { SubGrammar } from './Expressions';\nimport { NestedQuery } from './NestedQuery';\nimport { QueryExtension } from './QueryExtension';\nimport { Basic } from './Basic';\nimport { Field } from './Field';\nimport { SubExpression } from './SubExpression';\n\nexport const Complete: SubGrammar = {\n  include: [NestedQuery, QueryExtension, SubExpression, Field, Basic]\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/magicbox/Grammars/Complete.ts","import { Grammar } from '../Grammar';\nimport { ExpressionDef } from '../Expression/Expression';\nimport * as _ from 'underscore';\n\nexport interface SubGrammar {\n  grammars?: { [id: string]: ExpressionDef };\n  expressions?: string[];\n  basicExpressions?: string[];\n  include?: SubGrammar[];\n}\n\nfunction loadSubGrammar(\n  expressions: string[],\n  basicExpressions: string[],\n  grammars: { [id: string]: ExpressionDef },\n  subGrammar: SubGrammar\n) {\n  _.each(subGrammar.expressions, expression => {\n    if (!_.contains(expressions, expression)) {\n      expressions.push(expression);\n    }\n  });\n  _.each(subGrammar.basicExpressions, expression => {\n    if (!_.contains(basicExpressions, expression)) {\n      basicExpressions.push(expression);\n    }\n  });\n  _.each(subGrammar.grammars, (expressionDef: ExpressionDef, id: string) => {\n    if (!(id in grammars)) {\n      grammars[id] = expressionDef;\n    } else {\n      if (_.isArray(grammars[id]) && _.isArray(expressionDef)) {\n        _.each(<string[]>expressionDef, (value: string) => {\n          (<string[]>grammars[id]).push(value);\n        });\n      } else {\n        _.each(<string[]>expressionDef, (value: string) => {\n          (<string[]>grammars[id]).push(value);\n        });\n        throw new Error('Can not merge ' + id + '(' + JSON.stringify(expressionDef) + ' => ' + JSON.stringify(grammars[id]) + ')');\n      }\n    }\n  });\n}\n\nexport function Expressions(...subGrammars: SubGrammar[]): { start: string; expressions: { [id: string]: ExpressionDef } } {\n  var expressions: string[] = [];\n  var BasicExpression: string[] = [];\n  var grammars: { [id: string]: ExpressionDef } = {\n    Start: ['Expressions', 'Empty'],\n    Expressions: '[OptionalSpaces][Expression][ExpressionsList*][OptionalSpaces]',\n    ExpressionsList: '[Spaces][Expression]',\n    Expression: expressions,\n    BasicExpression: BasicExpression,\n    OptionalSpaces: / */,\n    Spaces: / +/,\n    Empty: /(?!.)/\n  };\n  for (var i = 0; i < subGrammars.length; i++) {\n    loadSubGrammar(expressions, BasicExpression, grammars, subGrammars[i]);\n    _.each(subGrammars[i].include, subGrammar => {\n      if (!_.contains(subGrammars, subGrammar)) {\n        subGrammars.push(subGrammar);\n      }\n    });\n  }\n  expressions.push('BasicExpression');\n  return {\n    start: 'Start',\n    expressions: grammars\n  };\n}\n\nexport function ExpressionsGrammar(...subGrammars: SubGrammar[]) {\n  var grammar = Expressions.apply(this, subGrammars);\n  return new Grammar(grammar.start, grammar.expressions);\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/magicbox/Grammars/Expressions.ts","import { ISearchResultPreview } from '../magicbox/ResultPreviewsManager';\nimport { Suggestion } from '../magicbox/SuggestionsManager';\nimport { IQuery } from '../rest/Query';\n\nexport interface IBuildingResultPreviewsQueryEventArgs {\n  /**\n   * The query to be sent to Search API.\n   */\n  query: IQuery;\n}\n\n/**\n * Executed when a {@link Suggestion} is focused before {@link PopulateSearchResultPreviews} is called to fetch more options.\n */\nexport interface IUpdateResultPreviewsManagerOptionsEventArgs {\n  /**\n   * How many milliseconds should a {@link Suggestion} be focused for before {@link PopulateSearchResultPreviews} is called.\n   *\n   * If this is not defined, it will default to 200ms.\n   */\n  displayAfterDuration?: number;\n}\n\n/**\n * Executed when a {@link Suggestion} is focused and waiting for search result previews.\n */\nexport interface IPopulateSearchResultPreviewsEventArgs {\n  /**\n   * The suggestion to look up search result previews for.\n   */\n  suggestion: Suggestion;\n  /**\n   * The result previews query. This must be set synchronously before the event resolves.\n   * Setting this to a non-empty array will display the given search result previews.\n   */\n  previewsQueries: (ISearchResultPreview[] | Promise<ISearchResultPreview[]>)[];\n}\n\n/**\n * Those are the string definitions of events for ResultPreviewsManager.\n *\n * Those events should be bound to the element returned by `resolveRoot`.\n */\nexport class ResultPreviewsManagerEvents {\n  /**\n   * Executed when building a query to fetch result previews.\n   * This always receives {@link IBuildingResultPreviewsQueryEventArgs} as arguments.\n   */\n  public static buildingResultPreviewsQuery = 'buildingResultPreviewsQuery';\n  /**\n   * Executed when a {@link Suggestion} is focused before {@link PopulateSearchResultPreviews} is called to fetch more options.\n   * This always receives {@link IUpdateResultPreviewsManagerOptionsEventArgs} as arguments.\n   */\n  public static updateResultPreviewsManagerOptions = 'updateResultPreviewsManagerOptions';\n  /**\n   * Executed when a {@link Suggestion} is focused and waiting for search result previews.\n   * This always receives {@link IPopulateSearchResultPreviewsEventArgs} as arguments.\n   */\n  public static populateSearchResultPreviews = 'populateSearchResultPreviews';\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/events/ResultPreviewsManagerEvents.ts","import { Omnibox, IOmniboxOptions } from '../Omnibox/Omnibox';\nimport { Querybox, IQueryboxOptions } from './Querybox';\nimport { ComponentOptionsModel } from '../../models/ComponentOptionsModel';\n\nexport class QueryboxOptionsProcessing {\n  constructor(public owner: Omnibox | Querybox) {}\n\n  private get options() {\n    return this.owner.options;\n  }\n\n  private set options(options: IOmniboxOptions | IQueryboxOptions) {\n    this.owner.options = options;\n  }\n\n  public postProcess() {\n    this.options = { ...this.options, ...this.owner.componentOptionsModel.get(ComponentOptionsModel.attributesEnum.searchBox) };\n    this.processQueryOnClearVersusEmptyQuery();\n    this.processQueryOnClearVersusSearchAsYouType();\n  }\n\n  private processQueryOnClearVersusEmptyQuery() {\n    if (this.options.triggerQueryOnClear && this.owner.searchInterface.options.allowQueriesWithoutKeywords === false) {\n      this.owner.logger.warn(\n        'Forcing option triggerQueryOnClear to false, as it is not supported when the search interface is configured to not allow queries without keywords (data-allow-queries-without-keywords=\"false\")',\n        this.owner\n      );\n      this.options.triggerQueryOnClear = false;\n    }\n  }\n\n  private processQueryOnClearVersusSearchAsYouType() {\n    if (\n      this.owner.searchInterface.options.allowQueriesWithoutKeywords === true &&\n      this.options.triggerQueryOnClear === false &&\n      this.options.enableSearchAsYouType === true\n    ) {\n      this.owner.logger.warn('Forcing option triggerQueryOnClear to true, since search-as-you-type is enabled', this.owner);\n      this.options.triggerQueryOnClear = true;\n    }\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Querybox/QueryboxOptionsProcessing.ts","import { IQueryboxOptions } from './Querybox';\nimport { QueryBuilder } from '../Base/QueryBuilder';\nimport * as _ from 'underscore';\nimport { Defer } from '../../MiscModules';\n\nexport class QueryboxQueryParameters {\n  private static queryIsCurrentlyBlocked = false;\n\n  constructor(private options: IQueryboxOptions) {}\n\n  private static queryIsBlocked() {\n    // This code runs on some assumption :\n    // Since all \"buildingQuery\" events would have to be run in the same call stack\n    // We can add a static flag to block 2 or more query box/omnibox from trying to modify the query inside the same event.\n    // If 2 query box are activated, we get duplicate terms in the query, or duplicate term correction with did you mean.\n    // This means that only one query box/searchbox would be able to modify the query in a single search page.\n    // This also means that if there is 2 search box enabled, the first one in the markup in the page would be able to do the job correctly as far as the query is concerned.\n    // The second one is inactive as far as the query is concerned.\n\n    // The flag gets reset in \"defer\" (setTimeout 0) so that it gets reset correctly when the query event has finished executing\n    if (!QueryboxQueryParameters.queryIsCurrentlyBlocked) {\n      QueryboxQueryParameters.queryIsCurrentlyBlocked = true;\n      Defer.defer(() => QueryboxQueryParameters.allowDuplicateQuery());\n      return false;\n    }\n    return true;\n  }\n\n  public static allowDuplicateQuery() {\n    QueryboxQueryParameters.queryIsCurrentlyBlocked = false;\n  }\n\n  public addParameters(queryBuilder: QueryBuilder, lastQuery: string) {\n    if (!QueryboxQueryParameters.queryIsBlocked()) {\n      if (this.options.enableWildcards) {\n        queryBuilder.enableWildcards = true;\n      }\n\n      if (this.options.enableQuestionMarks) {\n        queryBuilder.enableQuestionMarks = true;\n      }\n\n      if (this.options.enableLowercaseOperators) {\n        queryBuilder.enableLowercaseOperators = true;\n      }\n\n      if (!_.isEmpty(lastQuery)) {\n        queryBuilder.enableQuerySyntax = this.options.enableQuerySyntax;\n        queryBuilder.expression.add(lastQuery);\n        if (this.options.enablePartialMatch) {\n          queryBuilder.enablePartialMatch = this.options.enablePartialMatch;\n          if (this.options.partialMatchKeywords) {\n            queryBuilder.partialMatchKeywords = this.options.partialMatchKeywords;\n          }\n          if (this.options.partialMatchThreshold) {\n            queryBuilder.partialMatchThreshold = this.options.partialMatchThreshold;\n          }\n        }\n      }\n    }\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Querybox/QueryboxQueryParameters.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/DynamicFacet/_DynamicFacetBreadcrumbs.scss\n// module id = 511\n// module chunks = 2 4 8 88","/**\n * The allowed sort criteria for a Search API\n * [facet request]{@link IFacetRequest}.\n */\nexport enum FacetSortCriteria {\n  /**\n   * Sort facet values in descending score order.\n   *\n   * Facet value scores are based on number of occurrences and position in the\n   * ranked query result set.\n   *\n   * The Coveo Machine Learning dynamic navigation experience feature only\n   * works with this sort criterion.\n   */\n  score = 'score',\n  /**\n   * Sort facet values in ascending alphanumeric order.\n   */\n  alphanumeric = 'alphanumeric',\n  /**\n   * Sort facet values in descending number of occurrences.\n   */\n  occurrences = 'occurrences'\n}\n\nexport function isFacetSortCriteria(sortCriteria: string) {\n  return !!FacetSortCriteria[sortCriteria];\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/rest/Facet/FacetSortCriteria.ts","import { $$ } from '../../utils/Dom';\nimport { ComboboxInput } from './ComboboxInput';\nimport { uniqueId, throttle } from 'underscore';\nimport { SVGIcons } from '../../utils/SVGIcons';\nimport { SVGDom } from '../../utils/SVGDom';\nimport { ComboboxValues } from './ComboboxValues';\nimport 'styling/_Combobox';\nimport { Utils } from '../../utils/Utils';\nimport { l } from '../../strings/Strings';\nimport { IComboboxOptions, ICombobox, IComboboxAccessibilityAttributes } from './ICombobox';\n\nexport class Combobox implements ICombobox {\n  public element: HTMLElement;\n  public id: string;\n  public values: ComboboxValues;\n  private input: ComboboxInput;\n  private waitAnimationElement: HTMLElement;\n  private defaultOptions: Partial<IComboboxOptions> = {\n    wrapperClassName: '',\n    clearOnBlur: false\n  };\n  private throttlingDelay = 600;\n  private isRequestCancelled = false;\n\n  constructor(public options: IComboboxOptions) {\n    this.options = {\n      ...this.defaultOptions,\n      ...this.options\n    };\n\n    this.id = uniqueId('coveo-combobox-');\n    this.create();\n  }\n\n  private create() {\n    this.element = $$('div', { className: `coveo-combobox-wrapper ${this.options.wrapperClassName}` }).el;\n    this.createAndAppendInput();\n    this.createAndAppendWaitAnimation();\n    this.createAndAppendValues();\n  }\n\n  private createAndAppendInput() {\n    this.input = new ComboboxInput(this);\n    this.element.appendChild(this.input.element);\n  }\n\n  private createAndAppendWaitAnimation() {\n    this.waitAnimationElement = $$('div', { className: 'coveo-combobox-wait-animation' }, SVGIcons.icons.loading).el;\n    SVGDom.addClassToSVGInContainer(this.waitAnimationElement, 'coveo-combobox-wait-animation-svg');\n    this.toggleWaitAnimation(false);\n    this.input.element.appendChild(this.waitAnimationElement);\n  }\n\n  private toggleWaitAnimation(show: boolean) {\n    $$(this.waitAnimationElement).toggle(show);\n  }\n\n  private createAndAppendValues() {\n    this.values = new ComboboxValues(this);\n    this.element.appendChild(this.values.element);\n  }\n\n  public clearAll() {\n    this.clearValues();\n    this.input.clearInput();\n  }\n\n  private clearValues() {\n    this.values.clearValues();\n    this.cancelRequest();\n  }\n\n  private cancelRequest() {\n    this.toggleWaitAnimation(false);\n    this.throttledRequest.cancel();\n    this.isRequestCancelled = true;\n  }\n\n  public onInputChange(value: string) {\n    if (Utils.isEmptyString(value)) {\n      return this.clearValues();\n    }\n\n    this.throttledRequest(\n      () => this.options.requestValues(value),\n      () => this.values.resetScroll()\n    );\n  }\n\n  public onInputBlur() {\n    if (this.values.mouseIsOverValue) {\n      return;\n    }\n\n    if (this.values.isRenderingNewValues) {\n      return;\n    }\n\n    if (this.options.clearOnBlur) {\n      return this.clearAll();\n    }\n\n    this.clearValues();\n  }\n\n  public updateAccessibilityAttributes(attributes: IComboboxAccessibilityAttributes) {\n    this.input.updateAccessibilityAttributes(attributes);\n  }\n\n  public updateAriaLive() {\n    if (!this.values.hasValues()) {\n      this.options.ariaLive.updateText(l('NoValuesFound'));\n      return;\n    }\n\n    let text = l('ShowingResultsWithQuery', this.values.numberOfValues, this.input.value, this.values.numberOfValues);\n    if (this.options.scrollable && this.options.scrollable.areMoreValuesAvailable()) {\n      text = `${text} (${l('MoreValuesAvailable')})`;\n    }\n\n    this.options.ariaLive.updateText(text);\n  }\n\n  public onScrollEndReached() {\n    this.values.saveFocusedValue();\n    this.options.scrollable &&\n      this.throttledRequest(\n        () => this.options.scrollable.requestMoreValues(),\n        () => this.values.restoreFocusedValue()\n      );\n  }\n\n  private throttledRequest = throttle(this.triggerRequest, this.throttlingDelay, {\n    leading: true,\n    trailing: true\n  });\n\n  private async triggerRequest(request: () => Promise<any>, callback?: Function) {\n    this.isRequestCancelled = false;\n    this.toggleWaitAnimation(true);\n\n    const response = await request();\n    this.toggleWaitAnimation(false);\n\n    if (!this.isRequestCancelled) {\n      this.values.renderFromResponse(response);\n      callback && callback();\n    }\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Combobox/Combobox.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/DynamicFacetSearch/_DynamicFacetSearch.scss\n// module id = 514\n// module chunks = 2 4 8 88","import { Checkbox } from '../../FormWidgets/Checkbox';\nimport { DynamicFacetValue } from './DynamicFacetValue';\nimport { $$ } from '../../../utils/Dom';\n\nexport class DynamicFacetValueCheckbox {\n  private checkbox: Checkbox;\n  public element: HTMLElement;\n\n  constructor(private facetValue: DynamicFacetValue, selectAction = () => {}) {\n    this.checkbox = new Checkbox(\n      selectAction.bind(this),\n      this.facetValue.displayValue,\n      this.facetValue.selectAriaLabel,\n      `(${this.facetValue.formattedCount})`\n    );\n\n    const label = $$(this.checkbox.getElement()).find('.coveo-checkbox-span-label');\n    const labelSuffix = $$(this.checkbox.getElement()).find('.coveo-checkbox-span-label-suffix');\n\n    if (label && labelSuffix) {\n      label.setAttribute('title', this.facetValue.displayValue);\n      label.setAttribute('aria-hidden', 'true');\n      labelSuffix.setAttribute('aria-hidden', 'true');\n    }\n\n    this.facetValue.isSelected && this.checkbox.select(false);\n    this.element = this.checkbox.getElement();\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/DynamicFacet/DynamicFacetValues/DynamicFacetValueCheckbox.ts","import 'styling/DynamicFacet/_DynamicFacetValues';\nimport { $$ } from '../../../utils/Dom';\nimport { findWhere, find, escape } from 'underscore';\nimport { DynamicFacetValue } from './DynamicFacetValue';\nimport { IFacetResponse } from '../../../rest/Facet/FacetResponse';\nimport { FacetValueState } from '../../../rest/Facet/FacetValueState';\nimport { l } from '../../../strings/Strings';\nimport { IDynamicFacet, IValueCreator, IDynamicFacetValue, IDynamicFacetValues } from '../IDynamicFacet';\nimport { DynamicFacetValueShowMoreLessButton } from './DynamicFacetValueMoreLessButton';\nimport { Utils } from '../../../utils/Utils';\nimport { getDynamicFacetHeaderId } from '../DynamicFacetHeader/DynamicFacetHeader';\n\nexport interface IDynamicFacetValueCreatorKlass {\n  new (facet: IDynamicFacet): IValueCreator;\n}\n\nexport class DynamicFacetValues implements IDynamicFacetValues {\n  private facetValues: IDynamicFacetValue[];\n  private list = $$('ul', {\n    className: 'coveo-dynamic-facet-values',\n    'aria-labelledby': getDynamicFacetHeaderId(this.facet.options.id),\n    role: 'group'\n  }).el;\n  private valueCreator: IValueCreator;\n\n  constructor(private facet: IDynamicFacet, creatorKlass: IDynamicFacetValueCreatorKlass) {\n    this.valueCreator = new creatorKlass(this.facet);\n    this.resetValues();\n  }\n\n  public createFromResponse(response: IFacetResponse) {\n    this.facetValues = response.values.map((facetValue, index) => this.valueCreator.createFromResponse(facetValue, index));\n  }\n\n  public reorderValues(order: string[]) {\n    this.facetValues = Utils.reorderValuesByKeys(this.facetValues, order, value => value.value);\n  }\n\n  public resetValues() {\n    this.facetValues = this.valueCreator.getDefaultValues();\n  }\n\n  public get allFacetValues() {\n    return this.facetValues;\n  }\n\n  public get allValues() {\n    return this.facetValues.map(facetValue => facetValue.value);\n  }\n\n  public get selectedValues() {\n    return this.facetValues.filter(value => value.isSelected).map(({ value }) => value);\n  }\n\n  private get selectedDisplayValues() {\n    return this.facetValues.filter(value => value.isSelected).map(({ displayValue }) => displayValue);\n  }\n\n  public get activeValues() {\n    return this.facetValues.filter(value => !value.isIdle);\n  }\n\n  private get displayedValues() {\n    return this.facetValues.filter(value => !value.isIdle || value.numberOfResults > 0);\n  }\n\n  public get hasSelectedValues() {\n    return !!findWhere(this.facetValues, { state: FacetValueState.selected });\n  }\n\n  public get hasActiveValues() {\n    return !!this.activeValues.length;\n  }\n\n  public get hasIdleValues() {\n    return !!findWhere(this.facetValues, { state: FacetValueState.idle });\n  }\n\n  public clearAll() {\n    this.facetValues.forEach(value => value.deselect());\n  }\n\n  public get hasValues() {\n    return !!this.allFacetValues.length;\n  }\n\n  public get hasDisplayedValues() {\n    return !!this.displayedValues.length;\n  }\n\n  public hasSelectedValue(arg: string | DynamicFacetValue) {\n    const value = typeof arg === 'string' ? arg : arg.value;\n    const foundValue = find(this.facetValues, facetValue => facetValue.equals(value));\n    return foundValue && foundValue.isSelected;\n  }\n\n  public get(arg: string | DynamicFacetValue) {\n    const value = typeof arg === 'string' ? arg : arg.value;\n    const facetValue = find(this.facetValues, facetValue => facetValue.equals(value));\n\n    if (facetValue) {\n      return facetValue;\n    }\n\n    const newFacetValue = this.valueCreator.createFromValue(value);\n    if (!newFacetValue) {\n      return null;\n    }\n\n    this.facetValues.push(newFacetValue);\n    return newFacetValue;\n  }\n\n  public focus(value: string) {\n    const facetValue = find(this.facetValues, facetValue => facetValue.equals(value));\n    if (!facetValue) {\n      return;\n    }\n    facetValue.focus();\n  }\n\n  private buildShowLess() {\n    const showLess = new DynamicFacetValueShowMoreLessButton({\n      className: 'coveo-dynamic-facet-show-less',\n      ariaLabel: l('ShowLessFacetResults', this.facet.options.title),\n      label: l('ShowLess'),\n      action: () => {\n        this.facet.enableFreezeFacetOrderFlag();\n        this.facet.showLessValues();\n      }\n    });\n\n    return showLess.element;\n  }\n\n  private buildShowMore() {\n    const showMore = new DynamicFacetValueShowMoreLessButton({\n      className: 'coveo-dynamic-facet-show-more',\n      ariaLabel: l('ShowMoreFacetResults', this.facet.options.title),\n      label: l('ShowMore'),\n      action: () => {\n        this.facet.enableFreezeFacetOrderFlag();\n        this.facet.showMoreValues();\n      }\n    });\n\n    return showMore.element;\n  }\n\n  private get shouldEnableShowLess() {\n    const hasMoreValuesThenDefault = this.facetValues.length > this.facet.options.numberOfValues;\n\n    return hasMoreValuesThenDefault && this.hasIdleValues;\n  }\n\n  private appendShowMoreLess(fragment: DocumentFragment) {\n    if (!this.facet.options.enableMoreLess) {\n      return;\n    }\n\n    if (this.shouldEnableShowLess) {\n      fragment.appendChild(this.buildShowLess());\n    }\n\n    if (this.facet.moreValuesAvailable) {\n      fragment.appendChild(this.buildShowMore());\n    }\n  }\n\n  private appendSelectedCollapsedValues(fragment: DocumentFragment) {\n    if (!this.hasSelectedValues) {\n      return;\n    }\n\n    const selectedValues = this.selectedDisplayValues.join(', ');\n    fragment.appendChild(\n      $$(\n        'li',\n        {\n          className: 'coveo-dynamic-facet-collapsed-values',\n          ariaLabel: `${l('CurrentSelections')}: ${selectedValues}`\n        },\n        escape(selectedValues)\n      ).el\n    );\n  }\n\n  public render() {\n    const fragment = document.createDocumentFragment();\n    $$(this.list).empty();\n\n    this.displayedValues.forEach(facetValue => {\n      fragment.appendChild(facetValue.renderedElement);\n    });\n\n    this.appendShowMoreLess(fragment);\n\n    this.appendSelectedCollapsedValues(fragment);\n\n    this.list.appendChild(fragment);\n    return this.list;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/DynamicFacet/DynamicFacetValues/DynamicFacetValues.ts","import { QueryBuilder } from '../ui/Base/QueryBuilder';\nimport { Assert } from '../misc/Assert';\nimport { IFacetRequest, IFacetRequestValue } from '../rest/Facet/FacetRequest';\nimport { QueryEvents } from '../events/QueryEvents';\nimport { findIndex } from 'underscore';\nimport { IQueryResults } from '../rest/QueryResults';\nimport { IDynamicFacet } from '../ui/DynamicFacet/IDynamicFacet';\nimport { DynamicFacetRequestBuilder } from './DynamicFacetRequestBuilder';\n\nexport class DynamicFacetQueryController {\n  protected requestBuilder: DynamicFacetRequestBuilder;\n  private numberOfValuesToRequest: number;\n  private freezeCurrentValues = false;\n  private freezeFacetOrder = false;\n  private preventAutoSelection = false;\n\n  constructor(protected facet: IDynamicFacet) {\n    this.requestBuilder = new DynamicFacetRequestBuilder({\n      facetId: this.facet.options.id,\n      field: this.facet.fieldName,\n      type: this.facet.facetType,\n      sortCriteria: this.facet.options.sortCriteria,\n      injectionDepth: this.facet.options.injectionDepth,\n      filterFacetCount: this.facet.options.filterFacetCount\n    });\n    this.resetNumberOfValuesToRequest();\n    this.resetFlagsDuringQuery();\n  }\n\n  private resetFlagsDuringQuery() {\n    this.facet.bind.onRootElement(QueryEvents.duringQuery, () => {\n      this.freezeCurrentValues = false;\n      this.freezeFacetOrder = false;\n      this.preventAutoSelection = false;\n    });\n  }\n\n  public increaseNumberOfValuesToRequest(additionalNumberOfValues: number) {\n    this.numberOfValuesToRequest += additionalNumberOfValues;\n  }\n\n  public resetNumberOfValuesToRequest() {\n    this.numberOfValuesToRequest = this.facet.options.numberOfValues;\n  }\n\n  public enablePreventAutoSelectionFlag() {\n    this.preventAutoSelection = true;\n  }\n\n  public enableFreezeCurrentValuesFlag() {\n    if (this.areValuesIncorrectlyAffectedByDependsOn) {\n      return;\n    }\n\n    this.freezeCurrentValues = true;\n  }\n\n  public enableFreezeFacetOrderFlag() {\n    this.freezeFacetOrder = true;\n  }\n\n  private get areValuesIncorrectlyAffectedByDependsOn() {\n    if (!this.facet.dependsOnManager.hasDependentFacets) {\n      return false;\n    }\n\n    if (this.facet.dependsOnManager.dependentFacetsHaveSelectedValues) {\n      return false;\n    }\n\n    return this.currentValues.length < this.numberOfValuesToRequest;\n  }\n\n  /**\n   * Build the facets request for the DynamicFacet, and insert it in the query builder\n   * @param queryBuilder\n   */\n  public putFacetIntoQueryBuilder(queryBuilder: QueryBuilder) {\n    Assert.exists(queryBuilder);\n\n    queryBuilder.facetRequests.push(this.buildFacetRequest());\n    if (this.freezeFacetOrder) {\n      queryBuilder.facetOptions.freezeFacetOrder = true;\n    }\n  }\n\n  public buildFacetRequest(): IFacetRequest {\n    return {\n      ...this.requestBuilder.buildBaseRequestForQuery(),\n      currentValues: this.currentValues,\n      numberOfValues: this.numberOfValues,\n      freezeCurrentValues: this.freezeCurrentValues,\n      preventAutoSelect: this.preventAutoSelection,\n      isFieldExpanded: this.numberOfValuesToRequest > this.facet.options.numberOfValues\n    };\n  }\n\n  public getQueryResults(): Promise<IQueryResults> {\n    const query = this.facet.queryController.getLastQuery();\n    // Specifying a numberOfResults of 0 will not log the query as a full fledged query in the API\n    // it will also alleviate the load on the index\n    query.numberOfResults = 0;\n\n    const previousFacetRequestIndex = findIndex(query.facets, { facetId: this.facet.options.id });\n    if (previousFacetRequestIndex !== -1) {\n      query.facets[previousFacetRequestIndex] = this.buildFacetRequest();\n    } else if (query.facets) {\n      query.facets.push(this.buildFacetRequest());\n    } else {\n      query.facets = [this.buildFacetRequest()];\n    }\n\n    return this.facet.queryController.getEndpoint().search(query);\n  }\n\n  protected get currentValues(): IFacetRequestValue[] {\n    return this.facet.values.allFacetValues.map(({ value, state }) => ({\n      value,\n      state\n    }));\n  }\n\n  protected get numberOfValues() {\n    if (this.freezeCurrentValues) {\n      return this.currentValues.length;\n    }\n\n    return Math.max(this.numberOfValuesToRequest, this.facet.values.activeValues.length);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/controllers/DynamicFacetQueryController.ts","import { $$, Dom } from '../../../utils/Dom';\nimport { DynamicFacetValue } from './DynamicFacetValue';\nimport { DynamicFacetValueCheckbox } from './DynamicFacetValueCheckbox';\nimport { IDynamicFacet, IValueRenderer } from '../IDynamicFacet';\n\nexport class DynamicFacetValueRenderer implements IValueRenderer {\n  private dom: Dom;\n  private valueCheckbox: DynamicFacetValueCheckbox;\n\n  constructor(private facetValue: DynamicFacetValue, private facet: IDynamicFacet) {}\n\n  public render() {\n    this.dom = $$('li', {\n      className: 'coveo-dynamic-facet-value',\n      role: 'none',\n      dataValue: this.facetValue.value\n    });\n\n    this.toggleSelectedClass();\n    this.renderCheckbox();\n    this.addFocusAndBlurEventListeners();\n\n    return this.dom.el;\n  }\n\n  private toggleSelectedClass() {\n    this.dom.toggleClass('coveo-selected', this.facetValue.isSelected);\n  }\n\n  private renderCheckbox() {\n    this.valueCheckbox = new DynamicFacetValueCheckbox(this.facetValue, this.selectAction.bind(this));\n    this.dom.append(this.valueCheckbox.element);\n  }\n\n  private addFocusAndBlurEventListeners() {\n    const checkboxButton = $$(this.valueCheckbox.element).find('button');\n    $$(checkboxButton).on('focusin', () => this.onFocusIn());\n    $$(checkboxButton).on('focusout', () => this.onFocusOut());\n  }\n\n  private onFocusIn() {\n    this.dom.addClass('coveo-focused');\n  }\n\n  private onFocusOut() {\n    this.dom.removeClass('coveo-focused');\n  }\n\n  private selectAction() {\n    this.facet.toggleSelectValue(this.facetValue.value);\n    this.toggleSelectedClass();\n    this.facet.enableFreezeCurrentValuesFlag();\n    this.facet.enableFreezeFacetOrderFlag();\n    this.facet.enablePreventAutoSelectionFlag();\n    this.facet.scrollToTop();\n    this.facet.focusValueAfterRerender(this.facetValue.value);\n    this.facet.triggerNewQuery(() => this.facetValue.logSelectActionToAnalytics());\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/DynamicFacet/DynamicFacetValues/DynamicFacetValueRenderer.ts","/**\n * Argument sent to all handlers bound on {@link QuerySummaryEvents.cancelLastAction}\n */\nexport interface IQuerySummaryCancelLastActionArgs {}\n\n/**\n * This static class is there to contains the different string definition for all the events related to the {@link AdvancedSearch} component.\n */\nexport class QuerySummaryEvents {\n  /**\n   * Triggered when the last action is being cancelled by the query summary component\n   *\n   * Allows external code to revert their last action.\n   * @type {string}\n   */\n  public static cancelLastAction = 'cancelLastAction';\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/events/QuerySummaryEvents.ts","import { IPopulateOmniboxEventArgs } from '../../events/OmniboxEvents';\nimport { DomUtils } from '../../utils/DomUtils';\nimport { $$ } from '../../utils/Dom';\nimport * as _ from 'underscore';\n\nexport interface ISuggestionForOmniboxOptionsOnSelect {\n  (value: string, args: IPopulateOmniboxEventArgs): void;\n}\n\nexport interface ISuggestionForOmniboxOptions {\n  omniboxZIndex?: number;\n  headerTitle?: string;\n  onSelect?: ISuggestionForOmniboxOptionsOnSelect;\n  numberOfSuggestions?: number;\n}\n\nexport interface ISuggestionForOmniboxTemplate {\n  header?: {\n    template: (...args: any[]) => string;\n    title: string;\n  };\n  row: (...args: any[]) => string;\n}\n\nexport interface ISuggestionForOmniboxResult {\n  value: string;\n}\n\nexport class SuggestionForOmnibox {\n  constructor(\n    public structure: ISuggestionForOmniboxTemplate,\n    public onSelect: (value: string, args: IPopulateOmniboxEventArgs) => void,\n    public onTabPress: (value: string, args: IPopulateOmniboxEventArgs) => void\n  ) {}\n\n  public buildOmniboxElement(results: ISuggestionForOmniboxResult[], args: IPopulateOmniboxEventArgs): HTMLElement {\n    let element: HTMLElement;\n    if (results.length != 0) {\n      element = $$('div').el;\n      if (this.structure.header) {\n        let header = this.buildElementHeader();\n        element.appendChild(header);\n      }\n      let rows = this.buildRowElements(results, args);\n      _.each(rows, row => {\n        element.appendChild(row);\n      });\n    }\n    return element;\n  }\n\n  private buildElementHeader(): HTMLElement {\n    return $$(\n      'div',\n      undefined,\n      this.structure.header.template({\n        headerTitle: this.structure.header.title\n      })\n    ).el;\n  }\n\n  private buildRowElements(results: ISuggestionForOmniboxResult[], args: IPopulateOmniboxEventArgs): HTMLElement[] {\n    let ret = [];\n    _.each(results, result => {\n      let row = $$(\n        'div',\n        undefined,\n        this.structure.row({\n          rawValue: result.value,\n          data: DomUtils.highlightElement(result.value, args.completeQueryExpression.word)\n        })\n      ).el;\n      $$(row).on('click', () => {\n        this.onSelect.call(this, result.value, args);\n      });\n      $$(row).on('keyboardSelect', () => {\n        this.onSelect.call(this, result.value, args);\n      });\n      $$(row).on('tabSelect', () => {\n        this.onTabPress.call(this, result.value, args);\n      });\n      ret.push(row);\n    });\n    return ret;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Misc/SuggestionForOmnibox.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_FieldSuggestions.scss\n// module id = 521\n// module chunks = 47 48 88","import { $$ } from '../utils/Dom';\nimport 'styling/_AttachShadowPolyfill';\n\nexport interface IShadowOptions {\n  title: string;\n  onSizeChanged?: Function;\n  useIFrame?: Boolean;\n}\n\nexport async function attachShadow(element: HTMLElement, options: IShadowOptions & ShadowRootInit): Promise<HTMLElement> {\n  const elementOptions = { className: 'coveo-shadow-iframe', scrolling: 'no', title: options.title };\n  let autoUpdateContainer: HTMLIFrameElement | HTMLElement;\n  let contentBody: HTMLElement;\n  if (options.useIFrame) {\n    autoUpdateContainer = $$('iframe', elementOptions).el;\n    const onLoad = new Promise(resolve => autoUpdateContainer.addEventListener('load', () => resolve()));\n    element.appendChild(autoUpdateContainer);\n    await onLoad;\n    contentBody = (autoUpdateContainer as HTMLIFrameElement).contentDocument.body;\n  } else {\n    autoUpdateContainer = $$('div', elementOptions).el;\n    contentBody = autoUpdateContainer;\n    element.appendChild(autoUpdateContainer);\n  }\n\n  contentBody.style.margin = '0';\n  const shadowRootContainer = $$('div', { style: 'overflow: auto;' }).el;\n  contentBody.appendChild(shadowRootContainer);\n  autoUpdateHeight(autoUpdateContainer, shadowRootContainer, options.onSizeChanged);\n  if (options.mode === 'open') {\n    Object.defineProperty(element, 'shadowRoot', { get: () => shadowRootContainer });\n  }\n\n  return shadowRootContainer;\n}\n\nfunction autoUpdateHeight(elementToResize: HTMLElement, content: HTMLElement, onUpdate?: Function) {\n  let lastWidth = content.clientWidth;\n  let lastHeight = content.clientHeight;\n\n  const heightObserver = new MutationObserver(() => {\n    if (lastWidth === content.clientWidth && lastHeight === content.clientHeight) {\n      return;\n    }\n    lastWidth = content.clientWidth;\n    lastHeight = content.clientHeight;\n    elementToResize.style.width = `${content.clientWidth}px`;\n    elementToResize.style.height = `${content.clientHeight}px`;\n    if (onUpdate) {\n      onUpdate();\n    }\n  });\n  heightObserver.observe(content, {\n    attributes: true,\n    characterData: true,\n    childList: true,\n    subtree: true\n  });\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/misc/AttachShadowPolyfill.ts","export function initRange(domain, range) {\n  switch (arguments.length) {\n    case 0: break;\n    case 1: this.range(domain); break;\n    default: this.range(range).domain(domain); break;\n  }\n  return this;\n}\n\nexport function initInterpolator(domain, interpolator) {\n  switch (arguments.length) {\n    case 0: break;\n    case 1: this.interpolator(domain); break;\n    default: this.interpolator(interpolator).domain(domain); break;\n  }\n  return this;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale/src/init.js\n// module id = null\n// module chunks = ","var array = Array.prototype;\n\nexport var map = array.map;\nexport var slice = array.slice;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale/src/array.js\n// module id = null\n// module chunks = ","import {map} from \"d3-collection\";\nimport {slice} from \"./array\";\nimport {initRange} from \"./init\";\n\nexport var implicit = {name: \"implicit\"};\n\nexport default function ordinal() {\n  var index = map(),\n      domain = [],\n      range = [],\n      unknown = implicit;\n\n  function scale(d) {\n    var key = d + \"\", i = index.get(key);\n    if (!i) {\n      if (unknown !== implicit) return unknown;\n      index.set(key, i = domain.push(d));\n    }\n    return range[(i - 1) % range.length];\n  }\n\n  scale.domain = function(_) {\n    if (!arguments.length) return domain.slice();\n    domain = [], index = map();\n    var i = -1, n = _.length, d, key;\n    while (++i < n) if (!index.has(key = (d = _[i]) + \"\")) index.set(key, domain.push(d));\n    return scale;\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = slice.call(_), scale) : range.slice();\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.copy = function() {\n    return ordinal(domain, range).unknown(unknown);\n  };\n\n  initRange.apply(scale, arguments);\n\n  return scale;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale/src/ordinal.js\n// module id = null\n// module chunks = ","import {range as sequence} from \"d3-array\";\nimport {initRange} from \"./init\";\nimport ordinal from \"./ordinal\";\n\nexport default function band() {\n  var scale = ordinal().unknown(undefined),\n      domain = scale.domain,\n      ordinalRange = scale.range,\n      range = [0, 1],\n      step,\n      bandwidth,\n      round = false,\n      paddingInner = 0,\n      paddingOuter = 0,\n      align = 0.5;\n\n  delete scale.unknown;\n\n  function rescale() {\n    var n = domain().length,\n        reverse = range[1] < range[0],\n        start = range[reverse - 0],\n        stop = range[1 - reverse];\n    step = (stop - start) / Math.max(1, n - paddingInner + paddingOuter * 2);\n    if (round) step = Math.floor(step);\n    start += (stop - start - step * (n - paddingInner)) * align;\n    bandwidth = step * (1 - paddingInner);\n    if (round) start = Math.round(start), bandwidth = Math.round(bandwidth);\n    var values = sequence(n).map(function(i) { return start + step * i; });\n    return ordinalRange(reverse ? values.reverse() : values);\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? (domain(_), rescale()) : domain();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = [+_[0], +_[1]], rescale()) : range.slice();\n  };\n\n  scale.rangeRound = function(_) {\n    return range = [+_[0], +_[1]], round = true, rescale();\n  };\n\n  scale.bandwidth = function() {\n    return bandwidth;\n  };\n\n  scale.step = function() {\n    return step;\n  };\n\n  scale.round = function(_) {\n    return arguments.length ? (round = !!_, rescale()) : round;\n  };\n\n  scale.padding = function(_) {\n    return arguments.length ? (paddingInner = Math.min(1, paddingOuter = +_), rescale()) : paddingInner;\n  };\n\n  scale.paddingInner = function(_) {\n    return arguments.length ? (paddingInner = Math.min(1, _), rescale()) : paddingInner;\n  };\n\n  scale.paddingOuter = function(_) {\n    return arguments.length ? (paddingOuter = +_, rescale()) : paddingOuter;\n  };\n\n  scale.align = function(_) {\n    return arguments.length ? (align = Math.max(0, Math.min(1, _)), rescale()) : align;\n  };\n\n  scale.copy = function() {\n    return band(domain(), range)\n        .round(round)\n        .paddingInner(paddingInner)\n        .paddingOuter(paddingOuter)\n        .align(align);\n  };\n\n  return initRange.apply(rescale(), arguments);\n}\n\nfunction pointish(scale) {\n  var copy = scale.copy;\n\n  scale.padding = scale.paddingOuter;\n  delete scale.paddingInner;\n  delete scale.paddingOuter;\n\n  scale.copy = function() {\n    return pointish(copy());\n  };\n\n  return scale;\n}\n\nexport function point() {\n  return pointish(band.apply(null, arguments).paddingInner(1));\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale/src/band.js\n// module id = null\n// module chunks = ","export default function(x) {\n  return function() {\n    return x;\n  };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale/src/constant.js\n// module id = null\n// module chunks = ","export default function(x) {\n  return +x;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale/src/number.js\n// module id = null\n// module chunks = ","import {bisect} from \"d3-array\";\nimport {interpolate as interpolateValue, interpolateNumber, interpolateRound} from \"d3-interpolate\";\nimport {map, slice} from \"./array\";\nimport constant from \"./constant\";\nimport number from \"./number\";\n\nvar unit = [0, 1];\n\nexport function identity(x) {\n  return x;\n}\n\nfunction normalize(a, b) {\n  return (b -= (a = +a))\n      ? function(x) { return (x - a) / b; }\n      : constant(isNaN(b) ? NaN : 0.5);\n}\n\nfunction clamper(domain) {\n  var a = domain[0], b = domain[domain.length - 1], t;\n  if (a > b) t = a, a = b, b = t;\n  return function(x) { return Math.max(a, Math.min(b, x)); };\n}\n\n// normalize(a, b)(x) takes a domain value x in [a,b] and returns the corresponding parameter t in [0,1].\n// interpolate(a, b)(t) takes a parameter t in [0,1] and returns the corresponding range value x in [a,b].\nfunction bimap(domain, range, interpolate) {\n  var d0 = domain[0], d1 = domain[1], r0 = range[0], r1 = range[1];\n  if (d1 < d0) d0 = normalize(d1, d0), r0 = interpolate(r1, r0);\n  else d0 = normalize(d0, d1), r0 = interpolate(r0, r1);\n  return function(x) { return r0(d0(x)); };\n}\n\nfunction polymap(domain, range, interpolate) {\n  var j = Math.min(domain.length, range.length) - 1,\n      d = new Array(j),\n      r = new Array(j),\n      i = -1;\n\n  // Reverse descending domains.\n  if (domain[j] < domain[0]) {\n    domain = domain.slice().reverse();\n    range = range.slice().reverse();\n  }\n\n  while (++i < j) {\n    d[i] = normalize(domain[i], domain[i + 1]);\n    r[i] = interpolate(range[i], range[i + 1]);\n  }\n\n  return function(x) {\n    var i = bisect(domain, x, 1, j) - 1;\n    return r[i](d[i](x));\n  };\n}\n\nexport function copy(source, target) {\n  return target\n      .domain(source.domain())\n      .range(source.range())\n      .interpolate(source.interpolate())\n      .clamp(source.clamp())\n      .unknown(source.unknown());\n}\n\nexport function transformer() {\n  var domain = unit,\n      range = unit,\n      interpolate = interpolateValue,\n      transform,\n      untransform,\n      unknown,\n      clamp = identity,\n      piecewise,\n      output,\n      input;\n\n  function rescale() {\n    piecewise = Math.min(domain.length, range.length) > 2 ? polymap : bimap;\n    output = input = null;\n    return scale;\n  }\n\n  function scale(x) {\n    return isNaN(x = +x) ? unknown : (output || (output = piecewise(domain.map(transform), range, interpolate)))(transform(clamp(x)));\n  }\n\n  scale.invert = function(y) {\n    return clamp(untransform((input || (input = piecewise(range, domain.map(transform), interpolateNumber)))(y)));\n  };\n\n  scale.domain = function(_) {\n    return arguments.length ? (domain = map.call(_, number), clamp === identity || (clamp = clamper(domain)), rescale()) : domain.slice();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = slice.call(_), rescale()) : range.slice();\n  };\n\n  scale.rangeRound = function(_) {\n    return range = slice.call(_), interpolate = interpolateRound, rescale();\n  };\n\n  scale.clamp = function(_) {\n    return arguments.length ? (clamp = _ ? clamper(domain) : identity, scale) : clamp !== identity;\n  };\n\n  scale.interpolate = function(_) {\n    return arguments.length ? (interpolate = _, rescale()) : interpolate;\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  return function(t, u) {\n    transform = t, untransform = u;\n    return rescale();\n  };\n}\n\nexport default function continuous(transform, untransform) {\n  return transformer()(transform, untransform);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale/src/continuous.js\n// module id = null\n// module chunks = ","import {tickStep} from \"d3-array\";\nimport {format, formatPrefix, formatSpecifier, precisionFixed, precisionPrefix, precisionRound} from \"d3-format\";\n\nexport default function(start, stop, count, specifier) {\n  var step = tickStep(start, stop, count),\n      precision;\n  specifier = formatSpecifier(specifier == null ? \",f\" : specifier);\n  switch (specifier.type) {\n    case \"s\": {\n      var value = Math.max(Math.abs(start), Math.abs(stop));\n      if (specifier.precision == null && !isNaN(precision = precisionPrefix(step, value))) specifier.precision = precision;\n      return formatPrefix(specifier, value);\n    }\n    case \"\":\n    case \"e\":\n    case \"g\":\n    case \"p\":\n    case \"r\": {\n      if (specifier.precision == null && !isNaN(precision = precisionRound(step, Math.max(Math.abs(start), Math.abs(stop))))) specifier.precision = precision - (specifier.type === \"e\");\n      break;\n    }\n    case \"f\":\n    case \"%\": {\n      if (specifier.precision == null && !isNaN(precision = precisionFixed(step))) specifier.precision = precision - (specifier.type === \"%\") * 2;\n      break;\n    }\n  }\n  return format(specifier);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale/src/tickFormat.js\n// module id = null\n// module chunks = ","import {ticks, tickIncrement} from \"d3-array\";\nimport continuous, {copy, identity} from \"./continuous\";\nimport {initRange} from \"./init\";\nimport tickFormat from \"./tickFormat\";\n\nexport function linearish(scale) {\n  var domain = scale.domain;\n\n  scale.ticks = function(count) {\n    var d = domain();\n    return ticks(d[0], d[d.length - 1], count == null ? 10 : count);\n  };\n\n  scale.tickFormat = function(count, specifier) {\n    var d = domain();\n    return tickFormat(d[0], d[d.length - 1], count == null ? 10 : count, specifier);\n  };\n\n  scale.nice = function(count) {\n    if (count == null) count = 10;\n\n    var d = domain(),\n        i0 = 0,\n        i1 = d.length - 1,\n        start = d[i0],\n        stop = d[i1],\n        step;\n\n    if (stop < start) {\n      step = start, start = stop, stop = step;\n      step = i0, i0 = i1, i1 = step;\n    }\n\n    step = tickIncrement(start, stop, count);\n\n    if (step > 0) {\n      start = Math.floor(start / step) * step;\n      stop = Math.ceil(stop / step) * step;\n      step = tickIncrement(start, stop, count);\n    } else if (step < 0) {\n      start = Math.ceil(start * step) / step;\n      stop = Math.floor(stop * step) / step;\n      step = tickIncrement(start, stop, count);\n    }\n\n    if (step > 0) {\n      d[i0] = Math.floor(start / step) * step;\n      d[i1] = Math.ceil(stop / step) * step;\n      domain(d);\n    } else if (step < 0) {\n      d[i0] = Math.ceil(start * step) / step;\n      d[i1] = Math.floor(stop * step) / step;\n      domain(d);\n    }\n\n    return scale;\n  };\n\n  return scale;\n}\n\nexport default function linear() {\n  var scale = continuous(identity, identity);\n\n  scale.copy = function() {\n    return copy(scale, linear());\n  };\n\n  initRange.apply(scale, arguments);\n\n  return linearish(scale);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale/src/linear.js\n// module id = null\n// module chunks = ","import {map} from \"./array\";\nimport {linearish} from \"./linear\";\nimport number from \"./number\";\n\nexport default function identity(domain) {\n  var unknown;\n\n  function scale(x) {\n    return isNaN(x = +x) ? unknown : x;\n  }\n\n  scale.invert = scale;\n\n  scale.domain = scale.range = function(_) {\n    return arguments.length ? (domain = map.call(_, number), scale) : domain.slice();\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.copy = function() {\n    return identity(domain).unknown(unknown);\n  };\n\n  domain = arguments.length ? map.call(domain, number) : [0, 1];\n\n  return linearish(scale);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale/src/identity.js\n// module id = null\n// module chunks = ","export default function(domain, interval) {\n  domain = domain.slice();\n\n  var i0 = 0,\n      i1 = domain.length - 1,\n      x0 = domain[i0],\n      x1 = domain[i1],\n      t;\n\n  if (x1 < x0) {\n    t = i0, i0 = i1, i1 = t;\n    t = x0, x0 = x1, x1 = t;\n  }\n\n  domain[i0] = interval.floor(x0);\n  domain[i1] = interval.ceil(x1);\n  return domain;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale/src/nice.js\n// module id = null\n// module chunks = ","import {ticks} from \"d3-array\";\nimport {format} from \"d3-format\";\nimport nice from \"./nice\";\nimport {copy, transformer} from \"./continuous\";\nimport {initRange} from \"./init\";\n\nfunction transformLog(x) {\n  return Math.log(x);\n}\n\nfunction transformExp(x) {\n  return Math.exp(x);\n}\n\nfunction transformLogn(x) {\n  return -Math.log(-x);\n}\n\nfunction transformExpn(x) {\n  return -Math.exp(-x);\n}\n\nfunction pow10(x) {\n  return isFinite(x) ? +(\"1e\" + x) : x < 0 ? 0 : x;\n}\n\nfunction powp(base) {\n  return base === 10 ? pow10\n      : base === Math.E ? Math.exp\n      : function(x) { return Math.pow(base, x); };\n}\n\nfunction logp(base) {\n  return base === Math.E ? Math.log\n      : base === 10 && Math.log10\n      || base === 2 && Math.log2\n      || (base = Math.log(base), function(x) { return Math.log(x) / base; });\n}\n\nfunction reflect(f) {\n  return function(x) {\n    return -f(-x);\n  };\n}\n\nexport function loggish(transform) {\n  var scale = transform(transformLog, transformExp),\n      domain = scale.domain,\n      base = 10,\n      logs,\n      pows;\n\n  function rescale() {\n    logs = logp(base), pows = powp(base);\n    if (domain()[0] < 0) {\n      logs = reflect(logs), pows = reflect(pows);\n      transform(transformLogn, transformExpn);\n    } else {\n      transform(transformLog, transformExp);\n    }\n    return scale;\n  }\n\n  scale.base = function(_) {\n    return arguments.length ? (base = +_, rescale()) : base;\n  };\n\n  scale.domain = function(_) {\n    return arguments.length ? (domain(_), rescale()) : domain();\n  };\n\n  scale.ticks = function(count) {\n    var d = domain(),\n        u = d[0],\n        v = d[d.length - 1],\n        r;\n\n    if (r = v < u) i = u, u = v, v = i;\n\n    var i = logs(u),\n        j = logs(v),\n        p,\n        k,\n        t,\n        n = count == null ? 10 : +count,\n        z = [];\n\n    if (!(base % 1) && j - i < n) {\n      i = Math.round(i) - 1, j = Math.round(j) + 1;\n      if (u > 0) for (; i < j; ++i) {\n        for (k = 1, p = pows(i); k < base; ++k) {\n          t = p * k;\n          if (t < u) continue;\n          if (t > v) break;\n          z.push(t);\n        }\n      } else for (; i < j; ++i) {\n        for (k = base - 1, p = pows(i); k >= 1; --k) {\n          t = p * k;\n          if (t < u) continue;\n          if (t > v) break;\n          z.push(t);\n        }\n      }\n    } else {\n      z = ticks(i, j, Math.min(j - i, n)).map(pows);\n    }\n\n    return r ? z.reverse() : z;\n  };\n\n  scale.tickFormat = function(count, specifier) {\n    if (specifier == null) specifier = base === 10 ? \".0e\" : \",\";\n    if (typeof specifier !== \"function\") specifier = format(specifier);\n    if (count === Infinity) return specifier;\n    if (count == null) count = 10;\n    var k = Math.max(1, base * count / scale.ticks().length); // TODO fast estimate?\n    return function(d) {\n      var i = d / pows(Math.round(logs(d)));\n      if (i * base < base - 0.5) i *= base;\n      return i <= k ? specifier(d) : \"\";\n    };\n  };\n\n  scale.nice = function() {\n    return domain(nice(domain(), {\n      floor: function(x) { return pows(Math.floor(logs(x))); },\n      ceil: function(x) { return pows(Math.ceil(logs(x))); }\n    }));\n  };\n\n  return scale;\n}\n\nexport default function log() {\n  var scale = loggish(transformer()).domain([1, 10]);\n\n  scale.copy = function() {\n    return copy(scale, log()).base(scale.base());\n  };\n\n  initRange.apply(scale, arguments);\n\n  return scale;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale/src/log.js\n// module id = null\n// module chunks = ","import {linearish} from \"./linear\";\nimport {copy, transformer} from \"./continuous\";\nimport {initRange} from \"./init\";\n\nfunction transformSymlog(c) {\n  return function(x) {\n    return Math.sign(x) * Math.log1p(Math.abs(x / c));\n  };\n}\n\nfunction transformSymexp(c) {\n  return function(x) {\n    return Math.sign(x) * Math.expm1(Math.abs(x)) * c;\n  };\n}\n\nexport function symlogish(transform) {\n  var c = 1, scale = transform(transformSymlog(c), transformSymexp(c));\n\n  scale.constant = function(_) {\n    return arguments.length ? transform(transformSymlog(c = +_), transformSymexp(c)) : c;\n  };\n\n  return linearish(scale);\n}\n\nexport default function symlog() {\n  var scale = symlogish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, symlog()).constant(scale.constant());\n  };\n\n  return initRange.apply(scale, arguments);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale/src/symlog.js\n// module id = null\n// module chunks = ","import {linearish} from \"./linear\";\nimport {copy, identity, transformer} from \"./continuous\";\nimport {initRange} from \"./init\";\n\nfunction transformPow(exponent) {\n  return function(x) {\n    return x < 0 ? -Math.pow(-x, exponent) : Math.pow(x, exponent);\n  };\n}\n\nfunction transformSqrt(x) {\n  return x < 0 ? -Math.sqrt(-x) : Math.sqrt(x);\n}\n\nfunction transformSquare(x) {\n  return x < 0 ? -x * x : x * x;\n}\n\nexport function powish(transform) {\n  var scale = transform(identity, identity),\n      exponent = 1;\n\n  function rescale() {\n    return exponent === 1 ? transform(identity, identity)\n        : exponent === 0.5 ? transform(transformSqrt, transformSquare)\n        : transform(transformPow(exponent), transformPow(1 / exponent));\n  }\n\n  scale.exponent = function(_) {\n    return arguments.length ? (exponent = +_, rescale()) : exponent;\n  };\n\n  return linearish(scale);\n}\n\nexport default function pow() {\n  var scale = powish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, pow()).exponent(scale.exponent());\n  };\n\n  initRange.apply(scale, arguments);\n\n  return scale;\n}\n\nexport function sqrt() {\n  return pow.apply(null, arguments).exponent(0.5);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale/src/pow.js\n// module id = null\n// module chunks = ","import {ascending, bisect, quantile as threshold} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {initRange} from \"./init\";\n\nexport default function quantile() {\n  var domain = [],\n      range = [],\n      thresholds = [],\n      unknown;\n\n  function rescale() {\n    var i = 0, n = Math.max(1, range.length);\n    thresholds = new Array(n - 1);\n    while (++i < n) thresholds[i - 1] = threshold(domain, i / n);\n    return scale;\n  }\n\n  function scale(x) {\n    return isNaN(x = +x) ? unknown : range[bisect(thresholds, x)];\n  }\n\n  scale.invertExtent = function(y) {\n    var i = range.indexOf(y);\n    return i < 0 ? [NaN, NaN] : [\n      i > 0 ? thresholds[i - 1] : domain[0],\n      i < thresholds.length ? thresholds[i] : domain[domain.length - 1]\n    ];\n  };\n\n  scale.domain = function(_) {\n    if (!arguments.length) return domain.slice();\n    domain = [];\n    for (var i = 0, n = _.length, d; i < n; ++i) if (d = _[i], d != null && !isNaN(d = +d)) domain.push(d);\n    domain.sort(ascending);\n    return rescale();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = slice.call(_), rescale()) : range.slice();\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.quantiles = function() {\n    return thresholds.slice();\n  };\n\n  scale.copy = function() {\n    return quantile()\n        .domain(domain)\n        .range(range)\n        .unknown(unknown);\n  };\n\n  return initRange.apply(scale, arguments);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale/src/quantile.js\n// module id = null\n// module chunks = ","import {bisect} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {linearish} from \"./linear\";\nimport {initRange} from \"./init\";\n\nexport default function quantize() {\n  var x0 = 0,\n      x1 = 1,\n      n = 1,\n      domain = [0.5],\n      range = [0, 1],\n      unknown;\n\n  function scale(x) {\n    return x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n  }\n\n  function rescale() {\n    var i = -1;\n    domain = new Array(n);\n    while (++i < n) domain[i] = ((i + 1) * x1 - (i - n) * x0) / (n + 1);\n    return scale;\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? (x0 = +_[0], x1 = +_[1], rescale()) : [x0, x1];\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (n = (range = slice.call(_)).length - 1, rescale()) : range.slice();\n  };\n\n  scale.invertExtent = function(y) {\n    var i = range.indexOf(y);\n    return i < 0 ? [NaN, NaN]\n        : i < 1 ? [x0, domain[0]]\n        : i >= n ? [domain[n - 1], x1]\n        : [domain[i - 1], domain[i]];\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : scale;\n  };\n\n  scale.thresholds = function() {\n    return domain.slice();\n  };\n\n  scale.copy = function() {\n    return quantize()\n        .domain([x0, x1])\n        .range(range)\n        .unknown(unknown);\n  };\n\n  return initRange.apply(linearish(scale), arguments);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale/src/quantize.js\n// module id = null\n// module chunks = ","import {bisect} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {initRange} from \"./init\";\n\nexport default function threshold() {\n  var domain = [0.5],\n      range = [0, 1],\n      unknown,\n      n = 1;\n\n  function scale(x) {\n    return x <= x ? range[bisect(domain, x, 0, n)] : unknown;\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? (domain = slice.call(_), n = Math.min(domain.length, range.length - 1), scale) : domain.slice();\n  };\n\n  scale.range = function(_) {\n    return arguments.length ? (range = slice.call(_), n = Math.min(domain.length, range.length - 1), scale) : range.slice();\n  };\n\n  scale.invertExtent = function(y) {\n    var i = range.indexOf(y);\n    return [domain[i - 1], domain[i]];\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  scale.copy = function() {\n    return threshold()\n        .domain(domain)\n        .range(range)\n        .unknown(unknown);\n  };\n\n  return initRange.apply(scale, arguments);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale/src/threshold.js\n// module id = null\n// module chunks = ","import {bisector, tickStep} from \"d3-array\";\nimport {timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond} from \"d3-time\";\nimport {timeFormat} from \"d3-time-format\";\nimport {map} from \"./array\";\nimport continuous, {copy, identity} from \"./continuous\";\nimport {initRange} from \"./init\";\nimport nice from \"./nice\";\n\nvar durationSecond = 1000,\n    durationMinute = durationSecond * 60,\n    durationHour = durationMinute * 60,\n    durationDay = durationHour * 24,\n    durationWeek = durationDay * 7,\n    durationMonth = durationDay * 30,\n    durationYear = durationDay * 365;\n\nfunction date(t) {\n  return new Date(t);\n}\n\nfunction number(t) {\n  return t instanceof Date ? +t : +new Date(+t);\n}\n\nexport function calendar(year, month, week, day, hour, minute, second, millisecond, format) {\n  var scale = continuous(identity, identity),\n      invert = scale.invert,\n      domain = scale.domain;\n\n  var formatMillisecond = format(\".%L\"),\n      formatSecond = format(\":%S\"),\n      formatMinute = format(\"%I:%M\"),\n      formatHour = format(\"%I %p\"),\n      formatDay = format(\"%a %d\"),\n      formatWeek = format(\"%b %d\"),\n      formatMonth = format(\"%B\"),\n      formatYear = format(\"%Y\");\n\n  var tickIntervals = [\n    [second,  1,      durationSecond],\n    [second,  5,  5 * durationSecond],\n    [second, 15, 15 * durationSecond],\n    [second, 30, 30 * durationSecond],\n    [minute,  1,      durationMinute],\n    [minute,  5,  5 * durationMinute],\n    [minute, 15, 15 * durationMinute],\n    [minute, 30, 30 * durationMinute],\n    [  hour,  1,      durationHour  ],\n    [  hour,  3,  3 * durationHour  ],\n    [  hour,  6,  6 * durationHour  ],\n    [  hour, 12, 12 * durationHour  ],\n    [   day,  1,      durationDay   ],\n    [   day,  2,  2 * durationDay   ],\n    [  week,  1,      durationWeek  ],\n    [ month,  1,      durationMonth ],\n    [ month,  3,  3 * durationMonth ],\n    [  year,  1,      durationYear  ]\n  ];\n\n  function tickFormat(date) {\n    return (second(date) < date ? formatMillisecond\n        : minute(date) < date ? formatSecond\n        : hour(date) < date ? formatMinute\n        : day(date) < date ? formatHour\n        : month(date) < date ? (week(date) < date ? formatDay : formatWeek)\n        : year(date) < date ? formatMonth\n        : formatYear)(date);\n  }\n\n  function tickInterval(interval, start, stop, step) {\n    if (interval == null) interval = 10;\n\n    // If a desired tick count is specified, pick a reasonable tick interval\n    // based on the extent of the domain and a rough estimate of tick size.\n    // Otherwise, assume interval is already a time interval and use it.\n    if (typeof interval === \"number\") {\n      var target = Math.abs(stop - start) / interval,\n          i = bisector(function(i) { return i[2]; }).right(tickIntervals, target);\n      if (i === tickIntervals.length) {\n        step = tickStep(start / durationYear, stop / durationYear, interval);\n        interval = year;\n      } else if (i) {\n        i = tickIntervals[target / tickIntervals[i - 1][2] < tickIntervals[i][2] / target ? i - 1 : i];\n        step = i[1];\n        interval = i[0];\n      } else {\n        step = Math.max(tickStep(start, stop, interval), 1);\n        interval = millisecond;\n      }\n    }\n\n    return step == null ? interval : interval.every(step);\n  }\n\n  scale.invert = function(y) {\n    return new Date(invert(y));\n  };\n\n  scale.domain = function(_) {\n    return arguments.length ? domain(map.call(_, number)) : domain().map(date);\n  };\n\n  scale.ticks = function(interval, step) {\n    var d = domain(),\n        t0 = d[0],\n        t1 = d[d.length - 1],\n        r = t1 < t0,\n        t;\n    if (r) t = t0, t0 = t1, t1 = t;\n    t = tickInterval(interval, t0, t1, step);\n    t = t ? t.range(t0, t1 + 1) : []; // inclusive stop\n    return r ? t.reverse() : t;\n  };\n\n  scale.tickFormat = function(count, specifier) {\n    return specifier == null ? tickFormat : format(specifier);\n  };\n\n  scale.nice = function(interval, step) {\n    var d = domain();\n    return (interval = tickInterval(interval, d[0], d[d.length - 1], step))\n        ? domain(nice(d, interval))\n        : scale;\n  };\n\n  scale.copy = function() {\n    return copy(scale, calendar(year, month, week, day, hour, minute, second, millisecond, format));\n  };\n\n  return scale;\n}\n\nexport default function() {\n  return initRange.apply(calendar(timeYear, timeMonth, timeWeek, timeDay, timeHour, timeMinute, timeSecond, timeMillisecond, timeFormat).domain([new Date(2000, 0, 1), new Date(2000, 0, 2)]), arguments);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale/src/time.js\n// module id = null\n// module chunks = ","import {calendar} from \"./time\";\nimport {utcFormat} from \"d3-time-format\";\nimport {utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcMillisecond} from \"d3-time\";\nimport {initRange} from \"./init\";\n\nexport default function() {\n  return initRange.apply(calendar(utcYear, utcMonth, utcWeek, utcDay, utcHour, utcMinute, utcSecond, utcMillisecond, utcFormat).domain([Date.UTC(2000, 0, 1), Date.UTC(2000, 0, 2)]), arguments);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale/src/utcTime.js\n// module id = null\n// module chunks = ","import {identity} from \"./continuous\";\nimport {initInterpolator} from \"./init\";\nimport {linearish} from \"./linear\";\nimport {loggish} from \"./log\";\nimport {symlogish} from \"./symlog\";\nimport {powish} from \"./pow\";\n\nfunction transformer() {\n  var x0 = 0,\n      x1 = 1,\n      t0,\n      t1,\n      k10,\n      transform,\n      interpolator = identity,\n      clamp = false,\n      unknown;\n\n  function scale(x) {\n    return isNaN(x = +x) ? unknown : interpolator(k10 === 0 ? 0.5 : (x = (transform(x) - t0) * k10, clamp ? Math.max(0, Math.min(1, x)) : x));\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? (t0 = transform(x0 = +_[0]), t1 = transform(x1 = +_[1]), k10 = t0 === t1 ? 0 : 1 / (t1 - t0), scale) : [x0, x1];\n  };\n\n  scale.clamp = function(_) {\n    return arguments.length ? (clamp = !!_, scale) : clamp;\n  };\n\n  scale.interpolator = function(_) {\n    return arguments.length ? (interpolator = _, scale) : interpolator;\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  return function(t) {\n    transform = t, t0 = t(x0), t1 = t(x1), k10 = t0 === t1 ? 0 : 1 / (t1 - t0);\n    return scale;\n  };\n}\n\nexport function copy(source, target) {\n  return target\n      .domain(source.domain())\n      .interpolator(source.interpolator())\n      .clamp(source.clamp())\n      .unknown(source.unknown());\n}\n\nexport default function sequential() {\n  var scale = linearish(transformer()(identity));\n\n  scale.copy = function() {\n    return copy(scale, sequential());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialLog() {\n  var scale = loggish(transformer()).domain([1, 10]);\n\n  scale.copy = function() {\n    return copy(scale, sequentialLog()).base(scale.base());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSymlog() {\n  var scale = symlogish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, sequentialSymlog()).constant(scale.constant());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialPow() {\n  var scale = powish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, sequentialPow()).exponent(scale.exponent());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function sequentialSqrt() {\n  return sequentialPow.apply(null, arguments).exponent(0.5);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale/src/sequential.js\n// module id = null\n// module chunks = ","import {ascending, bisect} from \"d3-array\";\nimport {identity} from \"./continuous\";\nimport {initInterpolator} from \"./init\";\n\nexport default function sequentialQuantile() {\n  var domain = [],\n      interpolator = identity;\n\n  function scale(x) {\n    if (!isNaN(x = +x)) return interpolator((bisect(domain, x) - 1) / (domain.length - 1));\n  }\n\n  scale.domain = function(_) {\n    if (!arguments.length) return domain.slice();\n    domain = [];\n    for (var i = 0, n = _.length, d; i < n; ++i) if (d = _[i], d != null && !isNaN(d = +d)) domain.push(d);\n    domain.sort(ascending);\n    return scale;\n  };\n\n  scale.interpolator = function(_) {\n    return arguments.length ? (interpolator = _, scale) : interpolator;\n  };\n\n  scale.copy = function() {\n    return sequentialQuantile(interpolator).domain(domain);\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale/src/sequentialQuantile.js\n// module id = null\n// module chunks = ","import {identity} from \"./continuous\";\nimport {initInterpolator} from \"./init\";\nimport {linearish} from \"./linear\";\nimport {loggish} from \"./log\";\nimport {copy} from \"./sequential\";\nimport {symlogish} from \"./symlog\";\nimport {powish} from \"./pow\";\n\nfunction transformer() {\n  var x0 = 0,\n      x1 = 0.5,\n      x2 = 1,\n      t0,\n      t1,\n      t2,\n      k10,\n      k21,\n      interpolator = identity,\n      transform,\n      clamp = false,\n      unknown;\n\n  function scale(x) {\n    return isNaN(x = +x) ? unknown : (x = 0.5 + ((x = +transform(x)) - t1) * (x < t1 ? k10 : k21), interpolator(clamp ? Math.max(0, Math.min(1, x)) : x));\n  }\n\n  scale.domain = function(_) {\n    return arguments.length ? (t0 = transform(x0 = +_[0]), t1 = transform(x1 = +_[1]), t2 = transform(x2 = +_[2]), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1), scale) : [x0, x1, x2];\n  };\n\n  scale.clamp = function(_) {\n    return arguments.length ? (clamp = !!_, scale) : clamp;\n  };\n\n  scale.interpolator = function(_) {\n    return arguments.length ? (interpolator = _, scale) : interpolator;\n  };\n\n  scale.unknown = function(_) {\n    return arguments.length ? (unknown = _, scale) : unknown;\n  };\n\n  return function(t) {\n    transform = t, t0 = t(x0), t1 = t(x1), t2 = t(x2), k10 = t0 === t1 ? 0 : 0.5 / (t1 - t0), k21 = t1 === t2 ? 0 : 0.5 / (t2 - t1);\n    return scale;\n  };\n}\n\nexport default function diverging() {\n  var scale = linearish(transformer()(identity));\n\n  scale.copy = function() {\n    return copy(scale, diverging());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingLog() {\n  var scale = loggish(transformer()).domain([0.1, 1, 10]);\n\n  scale.copy = function() {\n    return copy(scale, divergingLog()).base(scale.base());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSymlog() {\n  var scale = symlogish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, divergingSymlog()).constant(scale.constant());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingPow() {\n  var scale = powish(transformer());\n\n  scale.copy = function() {\n    return copy(scale, divergingPow()).exponent(scale.exponent());\n  };\n\n  return initInterpolator.apply(scale, arguments);\n}\n\nexport function divergingSqrt() {\n  return divergingPow.apply(null, arguments).exponent(0.5);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale/src/diverging.js\n// module id = null\n// module chunks = ","export {\n  default as scaleBand,\n  point as scalePoint\n} from \"./band\";\n\nexport {\n  default as scaleIdentity\n} from \"./identity\";\n\nexport {\n  default as scaleLinear\n} from \"./linear\";\n\nexport {\n  default as scaleLog\n} from \"./log\";\n\nexport {\n  default as scaleSymlog\n} from \"./symlog\";\n\nexport {\n  default as scaleOrdinal,\n  implicit as scaleImplicit\n} from \"./ordinal\";\n\nexport {\n  default as scalePow,\n  sqrt as scaleSqrt\n} from \"./pow\";\n\nexport {\n  default as scaleQuantile\n} from \"./quantile\";\n\nexport {\n  default as scaleQuantize\n} from \"./quantize\";\n\nexport {\n  default as scaleThreshold\n} from \"./threshold\";\n\nexport {\n  default as scaleTime\n} from \"./time\";\n\nexport {\n  default as scaleUtc\n} from \"./utcTime\";\n\nexport {\n  default as scaleSequential,\n  sequentialLog as scaleSequentialLog,\n  sequentialPow as scaleSequentialPow,\n  sequentialSqrt as scaleSequentialSqrt,\n  sequentialSymlog as scaleSequentialSymlog\n} from \"./sequential\";\n\nexport {\n  default as scaleSequentialQuantile\n} from \"./sequentialQuantile\";\n\nexport {\n  default as scaleDiverging,\n  divergingLog as scaleDivergingLog,\n  divergingPow as scaleDivergingPow,\n  divergingSqrt as scaleDivergingSqrt,\n  divergingSymlog as scaleDivergingSymlog\n} from \"./diverging\";\n\nexport {\n  default as tickFormat\n} from \"./tickFormat\";\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale/src/index.js\n// module id = null\n// module chunks = ","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_SimpleFilter.scss\n// module id = 524\n// module chunks = 36 88","import { IDynamicFacetOptions, IDynamicFacet } from './IDynamicFacet';\nimport { IRangeValue } from '../../rest/RangeValue';\nimport { FacetRangeSortOrder } from '../../rest/Facet/FacetRangeSortOrder';\n\n/**\n * The allowed values for the [`valueFormat`]{@link DynamicFacetRange.options.valueFormat} option\n * of the [`DynamicFacetRange`]{@link DynamicFacetRange} component.\n */\nexport enum DynamicFacetRangeValueFormat {\n  /**\n   * Format range values as localized currency strings.\n   */\n  currency = 'currency',\n  /**\n   * Format range values as localized numeric strings.\n   */\n  number = 'number',\n  /**\n   * Format range values as localized date strings.\n   */\n  date = 'date'\n}\n\nexport function isFacetRangeValueFormat(rangeValueFormat: string) {\n  return !!DynamicFacetRangeValueFormat[rangeValueFormat];\n}\n\nexport interface IDynamicFacetRangeOptions extends IDynamicFacetOptions {\n  valueSeparator?: string;\n  valueFormat?: DynamicFacetRangeValueFormat;\n  ranges?: IRangeValue[];\n  numberOfDecimals?: number;\n  currencySymbol?: string;\n  sortOrder?: FacetRangeSortOrder;\n}\n\nexport interface IDynamicFacetRange extends IDynamicFacet {\n  options: IDynamicFacetRangeOptions;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/DynamicFacet/IDynamicFacetRange.ts","// 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\nvar getOwnPropertyDescriptors = Object.getOwnPropertyDescriptors ||\n  function getOwnPropertyDescriptors(obj) {\n    var keys = Object.keys(obj);\n    var descriptors = {};\n    for (var i = 0; i < keys.length; i++) {\n      descriptors[keys[i]] = Object.getOwnPropertyDescriptor(obj, keys[i]);\n    }\n    return descriptors;\n  };\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n  if (!isString(f)) {\n    var objects = [];\n    for (var i = 0; i < arguments.length; i++) {\n      objects.push(inspect(arguments[i]));\n    }\n    return objects.join(' ');\n  }\n\n  var i = 1;\n  var args = arguments;\n  var len = args.length;\n  var str = String(f).replace(formatRegExp, function(x) {\n    if (x === '%%') return '%';\n    if (i >= len) return x;\n    switch (x) {\n      case '%s': return String(args[i++]);\n      case '%d': return Number(args[i++]);\n      case '%j':\n        try {\n          return JSON.stringify(args[i++]);\n        } catch (_) {\n          return '[Circular]';\n        }\n      default:\n        return x;\n    }\n  });\n  for (var x = args[i]; i < len; x = args[++i]) {\n    if (isNull(x) || !isObject(x)) {\n      str += ' ' + x;\n    } else {\n      str += ' ' + inspect(x);\n    }\n  }\n  return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n  if (typeof process !== 'undefined' && process.noDeprecation === true) {\n    return fn;\n  }\n\n  // Allow for deprecating things in the process of starting up.\n  if (typeof process === 'undefined') {\n    return function() {\n      return exports.deprecate(fn, msg).apply(this, arguments);\n    };\n  }\n\n  var warned = false;\n  function deprecated() {\n    if (!warned) {\n      if (process.throwDeprecation) {\n        throw new Error(msg);\n      } else if (process.traceDeprecation) {\n        console.trace(msg);\n      } else {\n        console.error(msg);\n      }\n      warned = true;\n    }\n    return fn.apply(this, arguments);\n  }\n\n  return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexports.debuglog = function(set) {\n  if (isUndefined(debugEnviron))\n    debugEnviron = process.env.NODE_DEBUG || '';\n  set = set.toUpperCase();\n  if (!debugs[set]) {\n    if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n      var pid = process.pid;\n      debugs[set] = function() {\n        var msg = exports.format.apply(exports, arguments);\n        console.error('%s %d: %s', set, pid, msg);\n      };\n    } else {\n      debugs[set] = function() {};\n    }\n  }\n  return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n  // default options\n  var ctx = {\n    seen: [],\n    stylize: stylizeNoColor\n  };\n  // legacy...\n  if (arguments.length >= 3) ctx.depth = arguments[2];\n  if (arguments.length >= 4) ctx.colors = arguments[3];\n  if (isBoolean(opts)) {\n    // legacy...\n    ctx.showHidden = opts;\n  } else if (opts) {\n    // got an \"options\" object\n    exports._extend(ctx, opts);\n  }\n  // set default options\n  if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n  if (isUndefined(ctx.depth)) ctx.depth = 2;\n  if (isUndefined(ctx.colors)) ctx.colors = false;\n  if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n  if (ctx.colors) ctx.stylize = stylizeWithColor;\n  return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n  'bold' : [1, 22],\n  'italic' : [3, 23],\n  'underline' : [4, 24],\n  'inverse' : [7, 27],\n  'white' : [37, 39],\n  'grey' : [90, 39],\n  'black' : [30, 39],\n  'blue' : [34, 39],\n  'cyan' : [36, 39],\n  'green' : [32, 39],\n  'magenta' : [35, 39],\n  'red' : [31, 39],\n  'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n  'special': 'cyan',\n  'number': 'yellow',\n  'boolean': 'yellow',\n  'undefined': 'grey',\n  'null': 'bold',\n  'string': 'green',\n  'date': 'magenta',\n  // \"name\": intentionally not styling\n  'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n  var style = inspect.styles[styleType];\n\n  if (style) {\n    return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n           '\\u001b[' + inspect.colors[style][1] + 'm';\n  } else {\n    return str;\n  }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n  return str;\n}\n\n\nfunction arrayToHash(array) {\n  var hash = {};\n\n  array.forEach(function(val, idx) {\n    hash[val] = true;\n  });\n\n  return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n  // Provide a hook for user-specified inspect functions.\n  // Check that value is an object with an inspect function on it\n  if (ctx.customInspect &&\n      value &&\n      isFunction(value.inspect) &&\n      // Filter out the util module, it's inspect function is special\n      value.inspect !== exports.inspect &&\n      // Also filter out any prototype objects using the circular check.\n      !(value.constructor && value.constructor.prototype === value)) {\n    var ret = value.inspect(recurseTimes, ctx);\n    if (!isString(ret)) {\n      ret = formatValue(ctx, ret, recurseTimes);\n    }\n    return ret;\n  }\n\n  // Primitive types cannot have properties\n  var primitive = formatPrimitive(ctx, value);\n  if (primitive) {\n    return primitive;\n  }\n\n  // Look up the keys of the object.\n  var keys = Object.keys(value);\n  var visibleKeys = arrayToHash(keys);\n\n  if (ctx.showHidden) {\n    keys = Object.getOwnPropertyNames(value);\n  }\n\n  // IE doesn't make error fields non-enumerable\n  // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n  if (isError(value)\n      && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n    return formatError(value);\n  }\n\n  // Some type of object without properties can be shortcutted.\n  if (keys.length === 0) {\n    if (isFunction(value)) {\n      var name = value.name ? ': ' + value.name : '';\n      return ctx.stylize('[Function' + name + ']', 'special');\n    }\n    if (isRegExp(value)) {\n      return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n    }\n    if (isDate(value)) {\n      return ctx.stylize(Date.prototype.toString.call(value), 'date');\n    }\n    if (isError(value)) {\n      return formatError(value);\n    }\n  }\n\n  var base = '', array = false, braces = ['{', '}'];\n\n  // Make Array say that they are Array\n  if (isArray(value)) {\n    array = true;\n    braces = ['[', ']'];\n  }\n\n  // Make functions say that they are functions\n  if (isFunction(value)) {\n    var n = value.name ? ': ' + value.name : '';\n    base = ' [Function' + n + ']';\n  }\n\n  // Make RegExps say that they are RegExps\n  if (isRegExp(value)) {\n    base = ' ' + RegExp.prototype.toString.call(value);\n  }\n\n  // Make dates with properties first say the date\n  if (isDate(value)) {\n    base = ' ' + Date.prototype.toUTCString.call(value);\n  }\n\n  // Make error with message first say the error\n  if (isError(value)) {\n    base = ' ' + formatError(value);\n  }\n\n  if (keys.length === 0 && (!array || value.length == 0)) {\n    return braces[0] + base + braces[1];\n  }\n\n  if (recurseTimes < 0) {\n    if (isRegExp(value)) {\n      return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n    } else {\n      return ctx.stylize('[Object]', 'special');\n    }\n  }\n\n  ctx.seen.push(value);\n\n  var output;\n  if (array) {\n    output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n  } else {\n    output = keys.map(function(key) {\n      return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n    });\n  }\n\n  ctx.seen.pop();\n\n  return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n  if (isUndefined(value))\n    return ctx.stylize('undefined', 'undefined');\n  if (isString(value)) {\n    var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n                                             .replace(/'/g, \"\\\\'\")\n                                             .replace(/\\\\\"/g, '\"') + '\\'';\n    return ctx.stylize(simple, 'string');\n  }\n  if (isNumber(value))\n    return ctx.stylize('' + value, 'number');\n  if (isBoolean(value))\n    return ctx.stylize('' + value, 'boolean');\n  // For some reason typeof null is \"object\", so special case here.\n  if (isNull(value))\n    return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n  return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n  var output = [];\n  for (var i = 0, l = value.length; i < l; ++i) {\n    if (hasOwnProperty(value, String(i))) {\n      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n          String(i), true));\n    } else {\n      output.push('');\n    }\n  }\n  keys.forEach(function(key) {\n    if (!key.match(/^\\d+$/)) {\n      output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n          key, true));\n    }\n  });\n  return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n  var name, str, desc;\n  desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n  if (desc.get) {\n    if (desc.set) {\n      str = ctx.stylize('[Getter/Setter]', 'special');\n    } else {\n      str = ctx.stylize('[Getter]', 'special');\n    }\n  } else {\n    if (desc.set) {\n      str = ctx.stylize('[Setter]', 'special');\n    }\n  }\n  if (!hasOwnProperty(visibleKeys, key)) {\n    name = '[' + key + ']';\n  }\n  if (!str) {\n    if (ctx.seen.indexOf(desc.value) < 0) {\n      if (isNull(recurseTimes)) {\n        str = formatValue(ctx, desc.value, null);\n      } else {\n        str = formatValue(ctx, desc.value, recurseTimes - 1);\n      }\n      if (str.indexOf('\\n') > -1) {\n        if (array) {\n          str = str.split('\\n').map(function(line) {\n            return '  ' + line;\n          }).join('\\n').substr(2);\n        } else {\n          str = '\\n' + str.split('\\n').map(function(line) {\n            return '   ' + line;\n          }).join('\\n');\n        }\n      }\n    } else {\n      str = ctx.stylize('[Circular]', 'special');\n    }\n  }\n  if (isUndefined(name)) {\n    if (array && key.match(/^\\d+$/)) {\n      return str;\n    }\n    name = JSON.stringify('' + key);\n    if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n      name = name.substr(1, name.length - 2);\n      name = ctx.stylize(name, 'name');\n    } else {\n      name = name.replace(/'/g, \"\\\\'\")\n                 .replace(/\\\\\"/g, '\"')\n                 .replace(/(^\"|\"$)/g, \"'\");\n      name = ctx.stylize(name, 'string');\n    }\n  }\n\n  return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n  var numLinesEst = 0;\n  var length = output.reduce(function(prev, cur) {\n    numLinesEst++;\n    if (cur.indexOf('\\n') >= 0) numLinesEst++;\n    return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n  }, 0);\n\n  if (length > 60) {\n    return braces[0] +\n           (base === '' ? '' : base + '\\n ') +\n           ' ' +\n           output.join(',\\n  ') +\n           ' ' +\n           braces[1];\n  }\n\n  return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(ar) {\n  return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n  return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n  return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n  return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n  return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n  return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n  return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n  return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n  return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n  return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n  return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n  return isObject(e) &&\n      (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n  return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n  return arg === null ||\n         typeof arg === 'boolean' ||\n         typeof arg === 'number' ||\n         typeof arg === 'string' ||\n         typeof arg === 'symbol' ||  // ES6 symbol\n         typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n  return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n  return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n              'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n  var d = new Date();\n  var time = [pad(d.getHours()),\n              pad(d.getMinutes()),\n              pad(d.getSeconds())].join(':');\n  return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n  console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n *     prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n  // Don't do anything if add isn't an object\n  if (!add || !isObject(add)) return origin;\n\n  var keys = Object.keys(add);\n  var i = keys.length;\n  while (i--) {\n    origin[keys[i]] = add[keys[i]];\n  }\n  return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n  return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nvar kCustomPromisifiedSymbol = typeof Symbol !== 'undefined' ? Symbol('util.promisify.custom') : undefined;\n\nexports.promisify = function promisify(original) {\n  if (typeof original !== 'function')\n    throw new TypeError('The \"original\" argument must be of type Function');\n\n  if (kCustomPromisifiedSymbol && original[kCustomPromisifiedSymbol]) {\n    var fn = original[kCustomPromisifiedSymbol];\n    if (typeof fn !== 'function') {\n      throw new TypeError('The \"util.promisify.custom\" argument must be of type Function');\n    }\n    Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n      value: fn, enumerable: false, writable: false, configurable: true\n    });\n    return fn;\n  }\n\n  function fn() {\n    var promiseResolve, promiseReject;\n    var promise = new Promise(function (resolve, reject) {\n      promiseResolve = resolve;\n      promiseReject = reject;\n    });\n\n    var args = [];\n    for (var i = 0; i < arguments.length; i++) {\n      args.push(arguments[i]);\n    }\n    args.push(function (err, value) {\n      if (err) {\n        promiseReject(err);\n      } else {\n        promiseResolve(value);\n      }\n    });\n\n    try {\n      original.apply(this, args);\n    } catch (err) {\n      promiseReject(err);\n    }\n\n    return promise;\n  }\n\n  Object.setPrototypeOf(fn, Object.getPrototypeOf(original));\n\n  if (kCustomPromisifiedSymbol) Object.defineProperty(fn, kCustomPromisifiedSymbol, {\n    value: fn, enumerable: false, writable: false, configurable: true\n  });\n  return Object.defineProperties(\n    fn,\n    getOwnPropertyDescriptors(original)\n  );\n}\n\nexports.promisify.custom = kCustomPromisifiedSymbol\n\nfunction callbackifyOnRejected(reason, cb) {\n  // `!reason` guard inspired by bluebird (Ref: https://goo.gl/t5IS6M).\n  // Because `null` is a special error value in callbacks which means \"no error\n  // occurred\", we error-wrap so the callback consumer can distinguish between\n  // \"the promise rejected with null\" or \"the promise fulfilled with undefined\".\n  if (!reason) {\n    var newReason = new Error('Promise was rejected with a falsy value');\n    newReason.reason = reason;\n    reason = newReason;\n  }\n  return cb(reason);\n}\n\nfunction callbackify(original) {\n  if (typeof original !== 'function') {\n    throw new TypeError('The \"original\" argument must be of type Function');\n  }\n\n  // We DO NOT return the promise as it gives the user a false sense that\n  // the promise is actually somehow related to the callback's execution\n  // and that the callback throwing will reject the promise.\n  function callbackified() {\n    var args = [];\n    for (var i = 0; i < arguments.length; i++) {\n      args.push(arguments[i]);\n    }\n\n    var maybeCb = args.pop();\n    if (typeof maybeCb !== 'function') {\n      throw new TypeError('The last argument must be of type Function');\n    }\n    var self = this;\n    var cb = function() {\n      return maybeCb.apply(self, arguments);\n    };\n    // In true node style we process the callback on `nextTick` with all the\n    // implications (stack, `uncaughtException`, `async_hooks`)\n    original.apply(this, args)\n      .then(function(ret) { process.nextTick(cb, null, ret) },\n            function(rej) { process.nextTick(callbackifyOnRejected, rej, cb) });\n  }\n\n  Object.setPrototypeOf(callbackified, Object.getPrototypeOf(original));\n  Object.defineProperties(callbackified,\n                          getOwnPropertyDescriptors(original));\n  return callbackified;\n}\nexports.callbackify = callbackify;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/node-libs-browser/node_modules/util/util.js\n// module id = 526\n// module chunks = 8 88","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_Result.scss\n// module id = 527\n// module chunks = 1 2 4 5 6 7 8 12 15 16 17 19 88","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_ResultFrame.scss\n// module id = 528\n// module chunks = 1 2 4 5 6 7 8 12 15 16 17 19 88","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_ResultList.scss\n// module id = 529\n// module chunks = 1 2 4 5 6 7 8 12 15 16 17 19 88","import { IResponsiveComponent, IResponsiveComponentOptions, ResponsiveComponentsManager } from './ResponsiveComponentsManager';\nimport { SearchInterface } from '../SearchInterface/SearchInterface';\nimport { ResultList } from '../ResultList/ResultList';\nimport { $$, Dom } from '../../utils/Dom';\nimport { Component } from '../Base/Component';\nimport { Logger } from '../../misc/Logger';\nimport { ResponsiveDropdown } from './ResponsiveDropdown/ResponsiveDropdown';\n\nexport class ResponsiveDefaultResultTemplate implements IResponsiveComponent {\n  private searchInterface: SearchInterface;\n  private resultList: ResultList;\n\n  private currentMode: string;\n\n  public static init(root: HTMLElement, component: ResultList, options: IResponsiveComponentOptions) {\n    if (!$$(root).find(`.${Component.computeCssClassName(ResultList)}`)) {\n      let logger = new Logger('ResponsiveDefaultResultTemplate');\n      logger.trace('No ResultLayout component found : Cannot instantiate ResponsiveResultLayout');\n      return;\n    }\n    ResponsiveComponentsManager.register(ResponsiveDefaultResultTemplate, $$(root), ResultList.ID, component, options);\n  }\n\n  constructor(public coveoRoot: Dom, public ID: string, options: IResponsiveComponentOptions, responsiveDropdown?: ResponsiveDropdown) {\n    this.searchInterface = <SearchInterface>Component.get(this.coveoRoot.el, SearchInterface, false);\n    this.currentMode = 'large';\n  }\n\n  public registerComponent(accept: ResultList) {\n    if (accept instanceof ResultList) {\n      this.resultList = accept;\n      return true;\n    }\n    return false;\n  }\n\n  public handleResizeEvent() {\n    let lastResults = this.resultList.queryController.getLastResults();\n    if (this.needSmallMode()) {\n      $$(this.resultList.options.resultsContainer).addClass('coveo-card-layout-container');\n      $$(this.resultList.options.resultsContainer).removeClass(`coveo-list-layout-container`);\n      if (this.currentMode != 'small') {\n        if (lastResults) {\n          this.resultList.buildResults(lastResults).then((elements: HTMLElement[]) => {\n            this.resultList.renderResults(elements);\n          });\n        }\n        this.currentMode = 'small';\n      }\n    } else {\n      $$(this.resultList.options.resultsContainer).removeClass('coveo-card-layout-container');\n      $$(this.resultList.options.resultsContainer).addClass(`coveo-list-layout-container`);\n      if (this.currentMode != 'large') {\n        if (lastResults) {\n          this.resultList.buildResults(lastResults).then((elements: HTMLElement[]) => {\n            this.resultList.renderResults(elements);\n          });\n        }\n        this.currentMode = 'large';\n      }\n    }\n  }\n\n  private needSmallMode(): boolean {\n    return this.coveoRoot.width() <= this.searchInterface.responsiveComponents.getSmallScreenWidth();\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResponsiveComponents/ResponsiveDefaultResultTemplate.ts","import { IQueryResult } from '../../rest/QueryResult';\nimport { $$, Dom } from '../../utils/Dom';\nimport { Component } from '../Base/Component';\nimport { SearchInterface } from '../SearchInterface/SearchInterface';\n\nexport interface ResultToRender {\n  resultElement: HTMLElement;\n  componentsInside: Component[];\n}\n\nexport class ResultContainer {\n  public static resultCurrentlyBeingRendered: IQueryResult = null;\n\n  public resultContainerElement: Dom;\n\n  constructor(resultContainer: HTMLElement, private searchInterface: SearchInterface) {\n    this.resultContainerElement = $$(resultContainer);\n  }\n\n  public empty() {\n    this.searchInterface.detachComponentsInside(this.resultContainerElement.el);\n    $$(this.resultContainerElement).empty();\n  }\n\n  public addClass(classToAdd: string) {\n    this.resultContainerElement.addClass(classToAdd);\n  }\n\n  public isEmpty() {\n    return this.resultContainerElement.isEmpty();\n  }\n\n  public hideChildren() {\n    this.resultContainerElement.children().forEach(child => $$(child).hide());\n  }\n\n  public getResultElements() {\n    return this.resultContainerElement.findAll('.CoveoResult');\n  }\n\n  public get el() {\n    return this.resultContainerElement.el;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResultList/ResultContainer.ts","import { ResultListRenderer } from './ResultListRenderer';\nimport { $$ } from '../../utils/Dom';\nimport _ = require('underscore');\n\nexport class ResultListCardRenderer extends ResultListRenderer {\n  getEndFragment(resultElements: HTMLElement[]) {\n    return new Promise<DocumentFragment>(resolve => {\n      if (!_.isEmpty(resultElements)) {\n        // with infinite scrolling, we want the additional results to append at the end of the previous query.\n        // For this, we need to remove the padding.\n        if (this.resultListOptions.enableInfiniteScroll) {\n          const needToBeRemoved = $$(this.resultListOptions.resultsContainer).findAll('.coveo-card-layout-padding');\n          _.each(needToBeRemoved, toRemove => $$(toRemove).remove());\n        }\n        // Used to prevent last card from spanning the grid's whole width\n        const emptyCards = document.createDocumentFragment();\n        _.times(3, () => emptyCards.appendChild($$('div', { className: 'coveo-card-layout coveo-card-layout-padding' }).el));\n        resolve(emptyCards);\n      }\n      resolve(null);\n    });\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResultList/ResultListCardRenderer.ts","import { IResultListOptions } from './ResultListOptions';\nimport { ResultListRenderer } from './ResultListRenderer';\nimport { TemplateRole } from '../Templates/Template';\nimport { TableTemplate } from '../Templates/TableTemplate';\nimport { $$ } from '../../utils/Dom';\nimport _ = require('underscore');\n\nexport class ResultListTableRenderer extends ResultListRenderer {\n  private shouldDisplayHeader: boolean = true;\n  private shouldDisplayFooter: boolean = false;\n\n  constructor(protected resultListOptions: IResultListOptions, protected autoCreateComponentsFn: Function) {\n    super(resultListOptions, autoCreateComponentsFn);\n    if (this.resultListOptions.resultTemplate instanceof TableTemplate) {\n      if (this.resultListOptions.resultTemplate.hasTemplateWithRole('table-footer')) {\n        this.shouldDisplayFooter = true;\n      }\n      // If custom templates are defined but no header template, do not display it.\n      if (\n        this.resultListOptions.resultTemplate.templates.length !== 0 &&\n        !this.resultListOptions.resultTemplate.hasTemplateWithRole('table-header')\n      ) {\n        this.shouldDisplayHeader = false;\n      }\n    }\n  }\n\n  getStartFragment(resultElements: HTMLElement[], append: boolean): Promise<DocumentFragment> {\n    if (!append && !_.isEmpty(resultElements) && this.shouldDisplayHeader) {\n      return this.renderRoledTemplate('table-header');\n    }\n  }\n\n  getEndFragment(resultElements: HTMLElement[], append: boolean): Promise<DocumentFragment> {\n    if (!append && !_.isEmpty(resultElements) && this.shouldDisplayFooter) {\n      return this.renderRoledTemplate('table-footer');\n    }\n  }\n\n  private async renderRoledTemplate(role: TemplateRole) {\n    const elem = await (<TableTemplate>this.resultListOptions.resultTemplate).instantiateRoleToElement(role);\n    $$(elem).addClass(`coveo-result-list-${role}`);\n    this.autoCreateComponentsFn(elem, undefined);\n    const frag = document.createDocumentFragment();\n    frag.appendChild(elem);\n    return frag;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResultList/ResultListTableRenderer.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_ResultLink.scss\n// module id = 534\n// module chunks = 0 12 18 21 23 27 28 30 42 88","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_ResponsiveFacets.scss\n// module id = 535\n// module chunks = 1 2 4 5 6 7 8 13 88","import { IResponsiveDropdownContent, ResponsiveDropdownContent } from './ResponsiveDropdownContent';\nimport { Dom, $$, l } from '../../../Core';\nimport { SVGIcons } from '../../../utils/SVGIcons';\nimport { FocusTrap } from '../../FocusTrap/FocusTrap';\n\nexport class ResponsiveDropdownModalContent implements IResponsiveDropdownContent {\n  private closeButton: Dom;\n  private className: string;\n  private focusTrap: FocusTrap;\n\n  constructor(private componentName: string, public element: Dom, private closeButtonLabel: string, private close: () => void) {\n    this.className = `coveo-${this.componentName}-dropdown-modal-content`;\n  }\n\n  private set hidden(shouldHide: boolean) {\n    this.element.toggleClass('coveo-hidden', shouldHide);\n  }\n\n  public positionDropdown() {\n    this.element.el.classList.add(this.className, ResponsiveDropdownContent.DEFAULT_CSS_CLASS_NAME);\n    this.element.setAttribute('role', 'group');\n    this.element.setAttribute('aria-label', l('FiltersDropdown'));\n    this.hidden = false;\n    this.ensureCloseButton();\n    this.ensureFocusTrap();\n  }\n\n  public hideDropdown() {\n    this.element.el.classList.remove(this.className, ResponsiveDropdownContent.DEFAULT_CSS_CLASS_NAME);\n    this.element.setAttribute('role', null);\n    this.element.setAttribute('aria-label', null);\n    this.hidden = true;\n    this.removeCloseButton();\n    this.removeFocusTrap();\n  }\n\n  public cleanUp() {\n    this.hidden = false;\n  }\n\n  private ensureCloseButton() {\n    if (!this.closeButton) {\n      this.closeButton = $$(\n        'button',\n        {\n          className: 'coveo-facet-modal-close-button',\n          type: 'button',\n          ariaLabel: this.closeButtonLabel\n        },\n        SVGIcons.icons.mainClear\n      );\n      this.closeButton.on('click', () => this.close());\n      this.element.prepend(this.closeButton.el);\n    }\n  }\n\n  private get focusableSelector() {\n    const facetElements = '[data-field]:not(.coveo-facet-empty) [tabindex]';\n    const dynamicFacetsElements = '[data-field]:not(.coveo-hidden) button';\n    const modalButton = '.coveo-facet-modal-close-button';\n    return [facetElements, dynamicFacetsElements, modalButton].join(' , ');\n  }\n\n  private ensureFocusTrap() {\n    if (!this.focusTrap) {\n      this.focusTrap = new FocusTrap(this.element.el, { focusableSelector: this.focusableSelector });\n    }\n  }\n\n  private removeCloseButton() {\n    if (this.closeButton) {\n      this.closeButton.remove();\n      this.closeButton = null;\n    }\n  }\n\n  private removeFocusTrap() {\n    if (this.focusTrap) {\n      this.focusTrap.disable();\n      this.focusTrap = null;\n    }\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResponsiveComponents/ResponsiveDropdown/ResponsiveDropdownModalContent.ts","/**\n * The names of the events that can be triggered by the [FacetsMobileMode]{@link FacetsMobileMode} component.\n */\nexport class FacetsMobileModeEvents {\n  /**\n   * The name of the event that gets triggered when the facets pop-up (or modal) is opened in mobile mode.\n   */\n  public static popupOpened = 'popupOpened';\n  /**\n   * The name of the event that gets triggered when the facets pop-up (or modal) is closed in mobile mode.\n   */\n  public static popupClosed = 'popupClosed';\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/events/FacetsMobileModeEvents.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_FacetHeader.scss\n// module id = 538\n// module chunks = 1 4 5 6 7 13 88","import { Component } from '../Base/Component';\n\nexport function isFacetFieldValueCompatible(facet: Component): facet is IFieldValueCompatibleFacet {\n  return !!facet['isFieldValueCompatible'];\n}\n\nexport interface IFieldValueCompatibleFacet extends Component {\n  isFieldValueCompatible: boolean;\n  isFieldValueHierarchical: boolean;\n  hasSelectedValue(value: string): boolean;\n  selectValue(value: string): void;\n  deselectValue(value: string): void;\n  getCaptionForStringValue(value: string): string;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/FieldValue/IFieldValueCompatibleFacet.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_Facet.scss\n// module id = 540\n// module chunks = 1 4 5 6 7 88","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_FacetFooter.scss\n// module id = 541\n// module chunks = 1 4 5 6 7 88","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_FacetBreadcrumb.scss\n// module id = 542\n// module chunks = 1 4 5 6 7 88","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_FacetSearch.scss\n// module id = 543\n// module chunks = 1 4 5 6 7 88","import { IFacetSearch } from './IFacetSearch';\nimport { KEYBOARD } from '../../utils/KeyboardUtils';\nexport class FacetSearchUserInputHandler {\n  constructor(private facetSearch: IFacetSearch) {}\n\n  public handleKeyboardEvent(event: KeyboardEvent) {\n    switch (event.which) {\n      case KEYBOARD.ENTER:\n        this.facetSearch.keyboardNavigationEnterPressed(event);\n        break;\n      case KEYBOARD.DELETE:\n        this.facetSearch.keyboardNavigationDeletePressed && this.facetSearch.keyboardNavigationDeletePressed(event);\n        break;\n      case KEYBOARD.ESCAPE:\n        this.facetSearch.dismissSearchResults();\n        break;\n      case KEYBOARD.DOWN_ARROW:\n        this.facetSearch.facetSearchElement.moveCurrentResultDown();\n        break;\n      case KEYBOARD.UP_ARROW:\n        this.facetSearch.facetSearchElement.moveCurrentResultUp();\n        break;\n      default:\n        this.facetSearch.keyboardEventDefaultHandler();\n    }\n  }\n\n  public handleFacetSearchResultsScroll() {\n    if (\n      this.facetSearch.facetSearchPromise ||\n      this.facetSearch.facetSearchElement.getValueInInputForFacetSearch() != '' ||\n      !this.facetSearch.moreValuesToFetch\n    ) {\n      return;\n    }\n\n    let elementHeight = this.facetSearch.facetSearchElement.searchResults.clientHeight;\n    let scrollHeight = this.facetSearch.facetSearchElement.searchResults.scrollHeight;\n    let bottomPosition = this.facetSearch.facetSearchElement.searchResults.scrollTop + elementHeight;\n    if (scrollHeight - bottomPosition < elementHeight / 2) {\n      this.facetSearch.fetchMoreValues();\n    }\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Facet/FacetSearchUserInputHandler.ts","import { ISearchDropdownNavigator, ISearchDropdownConfig, DefaultSearchDropdownNavigator } from './DefaultSearchDropdownNavigator';\nimport { FacetSearchDropdownNavigator } from './FacetSearchDropdownNavigator';\nimport { IFacetSearch } from '../IFacetSearch';\nimport { CategoryFacet } from '../../CategoryFacet/CategoryFacet';\nimport { Facet } from '../Facet';\n\nexport function SearchDropdownNavigatorFactory(facetSearch: IFacetSearch, config: ISearchDropdownConfig): ISearchDropdownNavigator {\n  switch (facetSearch.facetType) {\n    case Facet.ID:\n      return new FacetSearchDropdownNavigator({ ...config, facetSearch });\n\n    case CategoryFacet.ID:\n    default:\n      return new DefaultSearchDropdownNavigator(config);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Facet/FacetSearchDropdownNavigation/SearchDropdownNavigatorFactory.ts","import { ISearchDropdownNavigator, DefaultSearchDropdownNavigator, ISearchDropdownConfig } from './DefaultSearchDropdownNavigator';\nimport { $$, Dom } from '../../../utils/Dom';\nimport { IFacetSearch } from '../IFacetSearch';\n\nexport interface IFacetSearchDropdownConfig extends ISearchDropdownConfig {\n  facetSearch: IFacetSearch;\n}\n\nexport class FacetSearchDropdownNavigator implements ISearchDropdownNavigator {\n  private defaultDropdownNavigator: DefaultSearchDropdownNavigator;\n\n  constructor(private config: IFacetSearchDropdownConfig) {\n    this.defaultDropdownNavigator = new DefaultSearchDropdownNavigator(config);\n  }\n\n  public setAsCurrentResult(dom: Dom) {\n    this.defaultDropdownNavigator.setAsCurrentResult(dom);\n  }\n\n  public get currentResult() {\n    return this.defaultDropdownNavigator.currentResult;\n  }\n\n  public focusNextElement() {\n    this.toggleCanExcludeCurrentResult();\n\n    if (this.willExcludeCurrentResult) {\n      this.announceCurrentResultCanBeExcluded();\n      return;\n    }\n\n    this.defaultDropdownNavigator.moveCurrentResultDown();\n  }\n\n  public focusPreviousElement() {\n    if (this.willExcludeCurrentResult) {\n      this.toggleCanExcludeCurrentResult();\n      return;\n    }\n\n    this.moveResultUp();\n    this.toggleCanExcludeCurrentResult();\n  }\n\n  private moveResultUp() {\n    if (this.willExcludeCurrentResult) {\n      this.toggleCanExcludeCurrentResult();\n      return;\n    }\n\n    this.defaultDropdownNavigator.moveCurrentResultUp();\n    this.toggleCanExcludeCurrentResult();\n  }\n\n  private get isCurrentResultNotAFacetValue() {\n    return this.currentResult.hasClass('coveo-facet-search-select-all') || this.currentResult.hasClass('coveo-facet-value-not-found');\n  }\n\n  private get willExcludeCurrentResult() {\n    return this.currentResult.hasClass('coveo-facet-value-will-exclude');\n  }\n\n  private toggleCanExcludeCurrentResult() {\n    if (this.isCurrentResultNotAFacetValue) {\n      return;\n    }\n\n    this.currentResult.toggleClass('coveo-facet-value-will-exclude', !this.willExcludeCurrentResult);\n  }\n\n  private announceCurrentResultCanBeExcluded() {\n    if (this.isCurrentResultNotAFacetValue) {\n      return;\n    }\n\n    const excludeIcon = $$(this.currentResult).find('.coveo-facet-value-exclude');\n    this.config.facetSearch.updateAriaLive(excludeIcon.getAttribute('aria-label'));\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Facet/FacetSearchDropdownNavigation/FacetSearchDropdownNavigator.ts","import { $$, Dom } from '../../utils/Dom';\nimport { SVGIcons } from '../../utils/SVGIcons';\nimport { SVGDom } from '../../utils/SVGDom';\nimport { escape } from 'underscore';\nimport { l } from '../../strings/Strings';\nimport * as Globalize from 'globalize';\n\nexport interface CategoryFacetData {\n  value: string;\n  count: number;\n}\n\nexport class CategoryFacetTemplates {\n  private listRoot: Dom;\n  private collapseArrow: Dom;\n\n  constructor() {\n    this.listRoot = $$('ul', { className: 'coveo-category-facet-values' });\n    this.collapseArrow = $$('span', { className: 'coveo-category-facet-collapse-children' }, SVGIcons.icons.arrowDown);\n    SVGDom.addClassToSVGInContainer(this.collapseArrow.el, 'coveo-category-facet-collapse-children-svg');\n  }\n\n  public buildListRoot() {\n    return this.listRoot.clone(true);\n  }\n\n  public buildListElement(data: CategoryFacetData) {\n    const div = $$('div', {}, this.createListElement(data));\n    return $$(div.el.firstChild as HTMLElement);\n  }\n\n  public buildAllCategoriesButton() {\n    const allCategoriesCaption = $$('span', { className: 'coveo-category-facet-all-categories-caption' }, l('AllCategories'));\n    const allCategories = $$(\n      'li',\n      { className: 'coveo-category-facet-value coveo-category-facet-all-categories' },\n      this.buildCollapseArrow(),\n      allCategoriesCaption\n    );\n    return allCategories;\n  }\n\n  public buildEllipsis() {\n    const ellipsisCaption = $$('span', { className: 'coveo-category-facet-ellipsis-caption' }, '[ ... ]');\n    const ellipsis = $$('li', { className: 'coveo-category-facet-ellipsis' }, ellipsisCaption);\n    return ellipsis;\n  }\n\n  public buildCollapseArrow() {\n    return this.collapseArrow.clone(true);\n  }\n\n  private getFormattedCount(count: number) {\n    return Globalize.format(count, 'n0');\n  }\n\n  private createListElement(data: CategoryFacetData) {\n    return `<li class=\"coveo-category-facet-value\">\n        <label class=\"coveo-category-facet-value-label\">\n          <span title=\"${escape(data.value)}\" class=\"coveo-category-facet-value-caption\">${escape(data.value)}</span>\n          <span class=\"coveo-category-facet-value-count\">${this.getFormattedCount(data.count)}</span>\n        </label>\n      </li>`;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/CategoryFacet/CategoryFacetTemplates.ts","import { CategoryFacetTemplates } from './CategoryFacetTemplates';\nimport { Dom } from '../../utils/Dom';\nimport { CategoryChildrenValueRenderer } from './CategoryValueChildrenRenderer';\nimport { CategoryFacet } from './CategoryFacet';\nimport { ICategoryFacetValue } from '../../rest/CategoryFacetValue';\nimport { CategoryValueParent, CategoryValue } from './CategoryValue';\n\nexport class CategoryValueRoot implements CategoryValueParent {\n  public path = [];\n  public categoryChildrenValueRenderer: CategoryChildrenValueRenderer;\n  public listRoot: Dom;\n\n  constructor(private element: Dom, categoryFacetTemplates: CategoryFacetTemplates, categoryFacet: CategoryFacet) {\n    this.categoryChildrenValueRenderer = new CategoryChildrenValueRenderer(element, categoryFacetTemplates, this, categoryFacet);\n    this.listRoot = categoryFacetTemplates.buildListRoot();\n    this.appendListRoot();\n  }\n\n  public renderChildren(values: ICategoryFacetValue[]) {\n    this.appendListRoot();\n    this.categoryChildrenValueRenderer.renderChildren(values);\n  }\n\n  public renderAsParent(value: ICategoryFacetValue): CategoryValue {\n    this.appendListRoot();\n    return this.categoryChildrenValueRenderer.renderAsParent(value);\n  }\n\n  public get children(): CategoryValue[] {\n    return this.categoryChildrenValueRenderer.children;\n  }\n\n  public clear() {\n    this.listRoot.detach();\n    this.listRoot.empty();\n    this.categoryChildrenValueRenderer.clearChildren();\n  }\n\n  private appendListRoot() {\n    this.element.append(this.listRoot.el);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/CategoryFacet/CategoryValueRoot.ts","import { Dom, $$ } from '../../utils/Dom';\nimport { CategoryFacetTemplates } from './CategoryFacetTemplates';\nimport { CategoryChildrenValueRenderer } from './CategoryValueChildrenRenderer';\nimport { CategoryFacet, CategoryValueDescriptor } from './CategoryFacet';\nimport { ICategoryFacetValue } from '../../rest/CategoryFacetValue';\nimport { analyticsActionCauseList } from '../Analytics/AnalyticsActionListMeta';\nimport { AccessibleButton } from '../../utils/AccessibleButton';\nimport { l } from '../../strings/Strings';\n\nexport interface CategoryValueParent {\n  listRoot: Dom;\n  path: string[];\n  categoryChildrenValueRenderer: CategoryChildrenValueRenderer;\n  renderAsParent(categoryFacetValue: ICategoryFacetValue): CategoryValue;\n  renderChildren(categoryFacetValues: ICategoryFacetValue[]): void;\n}\n\nexport class CategoryValue implements CategoryValueParent {\n  private collapseArrow: Dom;\n\n  public path: string[];\n  public element: Dom;\n  public isActive = false;\n  public categoryChildrenValueRenderer: CategoryChildrenValueRenderer;\n\n  constructor(\n    public listRoot: Dom,\n    public categoryValueDescriptor: CategoryValueDescriptor,\n    private categoryFacetTemplates: CategoryFacetTemplates,\n    private categoryFacet: CategoryFacet\n  ) {\n    this.element = this.categoryFacetTemplates.buildListElement({\n      value: this.captionedValueDescriptorValue,\n      count: this.categoryValueDescriptor.count\n    });\n    this.collapseArrow = this.categoryFacetTemplates.buildCollapseArrow();\n    this.categoryChildrenValueRenderer = new CategoryChildrenValueRenderer(this.element, categoryFacetTemplates, this, this.categoryFacet);\n    this.path = this.categoryValueDescriptor.path;\n  }\n\n  public render(isChild: boolean) {\n    if (this.pastMaximumDepth()) {\n      this.element.addClass('coveo-category-facet-last-value');\n    }\n\n    if (isChild) {\n      this.element.addClass('coveo-category-facet-child-value');\n    } else {\n      this.element.addClass('coveo-category-facet-parent-value');\n    }\n\n    this.listRoot.append(this.element.el);\n  }\n\n  public getDescriptor() {\n    return {\n      value: this.categoryValueDescriptor.value,\n      count: this.categoryValueDescriptor.count,\n      path: this.path\n    };\n  }\n\n  public clear() {\n    this.element.detach();\n    this.categoryChildrenValueRenderer.clearChildren();\n  }\n\n  public renderChildren(values: ICategoryFacetValue[]) {\n    this.isActive = true;\n    this.element.addClass('coveo-active-category-facet-parent');\n    this.categoryChildrenValueRenderer.renderChildren(values);\n  }\n\n  public renderAsParent(value: ICategoryFacetValue) {\n    return this.categoryChildrenValueRenderer.renderAsParent(value);\n  }\n\n  public get children() {\n    return this.categoryChildrenValueRenderer.children;\n  }\n\n  public makeSelectable() {\n    const element = $$(this.element.find('.coveo-category-facet-value-label'));\n    element.addClass('coveo-selectable');\n\n    const count = this.categoryValueDescriptor.count;\n    const countLabel = l('ResultCount', count.toString(), count);\n    const label = l('IncludeValueWithResultCount', this.captionedValueDescriptorValue, countLabel);\n\n    new AccessibleButton()\n      .withElement(element)\n      .withSelectAction(() => this.onSelect())\n      .withLabel(label)\n      .build();\n\n    return this;\n  }\n\n  public showCollapseArrow() {\n    if (!this.collapseArrow.el.parentElement) {\n      const label = this.element.find('label');\n      $$(label).prepend(this.collapseArrow.el);\n    }\n\n    return this;\n  }\n\n  private get captionedValueDescriptorValue() {\n    const value = this.categoryValueDescriptor.value;\n    return this.categoryFacet.getCaption(value);\n  }\n\n  private onSelect() {\n    if (!this.pastMaximumDepth()) {\n      this.categoryFacet.logAnalyticsEvent(analyticsActionCauseList.categoryFacetSelect, this.path);\n      this.categoryFacet.scrollToTop();\n      this.categoryFacet.changeActivePath(this.path);\n      this.categoryFacet.executeQuery();\n    }\n  }\n\n  private pastMaximumDepth() {\n    return this.path.length - this.categoryFacet.options.basePath.length >= this.categoryFacet.options.maximumDepth;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/CategoryFacet/CategoryValue.ts","import { CategoryFacet } from '../ui/CategoryFacet/CategoryFacet';\nimport { QueryBuilder } from '../ui/Base/QueryBuilder';\nimport { ICategoryFacetRequest } from '../rest/CategoryFacetRequest';\nimport { IGroupByRequest } from '../rest/GroupByRequest';\nimport { AllowedValuesPatternType } from '../rest/AllowedValuesPatternType';\nimport { IGroupByValue } from '../rest/GroupByValue';\nimport { Utils } from '../utils/Utils';\n\nexport class CategoryFacetQueryController {\n  constructor(private categoryFacet: CategoryFacet) {}\n\n  public putCategoryFacetInQueryBuilder(queryBuilder: QueryBuilder, path: string[], maximumNumberOfValues: number): number {\n    const positionInQuery = queryBuilder.categoryFacets.length;\n    this.addQueryFilter(queryBuilder, path);\n    this.addCategoryFacetRequest(queryBuilder, path, maximumNumberOfValues);\n    return positionInQuery;\n  }\n\n  public async searchFacetValues(value: string, numberOfValues: number): Promise<IGroupByValue[]> {\n    const lastQuery = { ...this.categoryFacet.queryController.getLastQuery() };\n\n    const groupByRequest: IGroupByRequest = {\n      allowedValues: [this.getAllowedValuesPattern(value)],\n      allowedValuesPatternType: AllowedValuesPatternType.Wildcards,\n      maximumNumberOfValues: numberOfValues,\n      field: this.categoryFacet.options.field as string,\n      sortCriteria: 'occurrences',\n      injectionDepth: this.categoryFacet.options.injectionDepth\n    };\n\n    lastQuery.groupBy = [groupByRequest];\n    lastQuery.categoryFacets.splice(this.categoryFacet.positionInQuery, 1);\n    const results = await this.categoryFacet.queryController.getEndpoint().search(lastQuery);\n\n    const sortByNumberOfResultsThenPathLength = (firstGroupByValue: IGroupByValue, secondGroupByValue: IGroupByValue) => {\n      if (firstGroupByValue.numberOfResults == secondGroupByValue.numberOfResults) {\n        return firstGroupByValue.value.length - secondGroupByValue.value.length;\n      }\n      return secondGroupByValue.numberOfResults - firstGroupByValue.numberOfResults;\n    };\n\n    return results.groupByResults[0].values.sort(sortByNumberOfResultsThenPathLength);\n  }\n\n  public addDebugGroupBy(queryBuilder: QueryBuilder, value: string) {\n    queryBuilder.groupByRequests.push({\n      field: this.categoryFacet.options.field as string,\n      allowedValues: [`.*${Utils.escapeRegexCharacter(value)}.*`],\n      allowedValuesPatternType: AllowedValuesPatternType.Regex\n    });\n  }\n\n  private shouldAddFilterToQuery(path: string[]) {\n    return path.length != 0 && !Utils.arrayEqual(path, this.categoryFacet.options.basePath);\n  }\n\n  private addQueryFilter(queryBuilder: QueryBuilder, path: string[]) {\n    if (this.shouldAddFilterToQuery(path)) {\n      queryBuilder.advancedExpression.addFieldExpression(this.categoryFacet.options.field as string, '==', [\n        path.join(this.categoryFacet.options.delimitingCharacter)\n      ]);\n    }\n  }\n\n  private addCategoryFacetRequest(queryBuilder: QueryBuilder, path: string[], maximumNumberOfValues: number) {\n    const categoryFacetsRequest: ICategoryFacetRequest = {\n      field: this.categoryFacet.options.field as string,\n      path,\n      injectionDepth: this.categoryFacet.options.injectionDepth,\n      maximumNumberOfValues,\n      delimitingCharacter: this.categoryFacet.options.delimitingCharacter\n    };\n    queryBuilder.categoryFacets.push(categoryFacetsRequest);\n  }\n\n  private getAllowedValuesPattern(value: string) {\n    const basePath = this.categoryFacet.options.basePath;\n    const delimiter = this.categoryFacet.options.delimitingCharacter;\n\n    if (Utils.isNonEmptyArray(basePath)) {\n      return `${basePath.join(delimiter)}${delimiter}*${value}*`;\n    }\n    return `*${value}*`;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/controllers/CategoryFacetQueryController.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_CategoryFacet.scss\n// module id = 551\n// module chunks = 1 4 5 6 7 88","import { CategoryFacet } from './CategoryFacet';\nimport { FacetSearchElement } from '../Facet/FacetSearchElement';\nimport { pluck, debounce, last } from 'underscore';\nimport { $$, Dom } from '../../utils/Dom';\nimport { SVGDom } from '../../utils/SVGDom';\nimport { SVGIcons } from '../../utils/SVGIcons';\nimport { l } from '../../strings/Strings';\nimport { IGroupByValue } from '../../rest/GroupByValue';\nimport 'styling/_CategoryFacetSearch';\nimport { StringUtils } from '../../utils/StringUtils';\nimport { analyticsActionCauseList, IAnalyticsCategoryFacetMeta } from '../Analytics/AnalyticsActionListMeta';\nimport { IFacetSearch } from '../Facet/IFacetSearch';\nimport { IIndexFieldValue } from '../../rest/FieldValue';\nimport { AccessibleButton } from '../../utils/AccessibleButton';\nimport * as Globalize from 'globalize';\n\nexport class CategoryFacetSearch implements IFacetSearch {\n  public container: Dom | undefined;\n  public facetSearchElement: FacetSearchElement;\n  public displayNewValues: () => void;\n  public currentlyDisplayedResults: string[];\n  public moreValuesToFetch = true;\n  public facetSearchPromise: Promise<IIndexFieldValue[]>;\n\n  private numberOfValuesToFetch: number;\n\n  constructor(private categoryFacet: CategoryFacet, private displayButton = true) {\n    this.facetSearchElement = new FacetSearchElement(this);\n    this.displayNewValues = debounce(this.getDisplayNewValuesFunction(), this.categoryFacet.options.facetSearchDelay);\n    this.categoryFacet.root.addEventListener('click', (e: MouseEvent) => this.handleClickElsewhere(e));\n    this.numberOfValuesToFetch = this.categoryFacet.options.numberOfResultsInFacetSearch;\n  }\n\n  public get facetType() {\n    return CategoryFacet.ID;\n  }\n\n  public get facetTitle() {\n    return this.categoryFacet.options.title || this.categoryFacet.options.field.toString();\n  }\n\n  public setExpandedFacetSearchAccessibilityAttributes(searchResultsElements: HTMLElement) {\n    this.container.setAttribute('aria-expanded', 'true');\n  }\n\n  public setCollapsedFacetSearchAccessibilityAttributes() {\n    this.container.setAttribute('aria-expanded', 'false');\n  }\n\n  public build() {\n    this.container = $$('div', {\n      className: 'coveo-category-facet-search-container',\n      role: 'button'\n    });\n    this.container.toggleClass('coveo-category-facet-search-without-button', !this.displayButton);\n\n    this.displayButton && this.buildButton();\n\n    this.container.append(this.facetSearchElement.build());\n    $$(this.facetSearchElement.search).toggleClass('without-animation', !this.displayButton);\n    return this.container;\n  }\n\n  private buildButton() {\n    new AccessibleButton()\n      .withElement(this.container)\n      .withSelectAction(() => {\n        $$(this.categoryFacet.element).addClass('coveo-category-facet-searching');\n        this.focus();\n      })\n      .withLabel(l('SearchFacetResults', this.facetTitle))\n      .build();\n\n    this.buildfacetSearchPlaceholder();\n  }\n\n  public focus() {\n    this.facetSearchElement.focus();\n  }\n\n  public clear() {\n    this.dismissSearchResults();\n    this.container && this.container.detach();\n  }\n\n  public dismissSearchResults() {\n    this.removeNoResultsCssClasses();\n    $$(this.categoryFacet.element).removeClass('coveo-category-facet-searching');\n    $$(this.facetSearchElement.searchResults).empty();\n    this.facetSearchElement.clearSearchInput();\n    this.facetSearchElement.hideSearchResultsElement();\n    this.currentlyDisplayedResults = null;\n    this.numberOfValuesToFetch = this.categoryFacet.options.numberOfResultsInFacetSearch;\n    this.moreValuesToFetch = true;\n  }\n\n  public keyboardEventDefaultHandler() {\n    this.moreValuesToFetch = true;\n    this.displayNewValues();\n  }\n\n  public keyboardNavigationEnterPressed() {\n    this.selectCurrentResult();\n  }\n\n  public fetchMoreValues() {\n    this.numberOfValuesToFetch += this.categoryFacet.options.numberOfResultsInFacetSearch;\n    this.displayNewValues();\n  }\n\n  public getCaptions() {\n    const searchResults = $$(this.facetSearchElement.searchResults);\n    const captions = searchResults\n      .findAll('.coveo-category-facet-search-value-caption')\n      .concat(searchResults.findAll('.coveo-category-facet-search-path-parents'))\n      .concat(searchResults.findAll('.coveo-category-facet-search-path-last-value'));\n    return captions;\n  }\n\n  public updateAriaLive(text: string) {\n    this.categoryFacet.searchInterface.ariaLive.updateText(text);\n  }\n\n  private selectCurrentResult() {\n    if (this.facetSearchElement.currentResult) {\n      const currentResultPathData = this.facetSearchElement.currentResult.el.dataset.path;\n      const delimiter = this.categoryFacet.options.delimitingCharacter;\n      const path = currentResultPathData.split(delimiter);\n      this.categoryFacet.changeActivePath(path);\n      this.categoryFacet.logAnalyticsEvent(analyticsActionCauseList.categoryFacetSelect, path);\n      this.categoryFacet.executeQuery();\n      this.categoryFacet.scrollToTop();\n    }\n  }\n\n  private handleClickElsewhere(e: MouseEvent) {\n    const closestContainer = $$(<HTMLElement>e.target).closest('.coveo-category-facet-search-container');\n\n    const isSelfContainer = this.container && closestContainer === this.container.el;\n    if (!closestContainer || !isSelfContainer) {\n      this.dismissSearchResults();\n    }\n  }\n\n  private buildfacetSearchPlaceholder() {\n    const placeholder = $$('div', { className: 'coveo-category-facet-search-placeholder' });\n\n    const icon = $$('div', { className: 'coveo-category-facet-search-icon' }, SVGIcons.icons.checkboxHookExclusionMore);\n    SVGDom.addClassToSVGInContainer(icon.el, 'coveo-category-facet-search-icon-svg');\n\n    const label = $$('span', { className: 'coveo-category-facet-search-label' }, l('Search'));\n\n    placeholder.append(icon.el);\n    placeholder.append(label.el);\n    this.container.append(placeholder.el);\n  }\n\n  private getDisplayNewValuesFunction() {\n    return async () => {\n      this.facetSearchElement.showFacetSearchWaitingAnimation();\n      this.categoryFacet.logger.info('Triggering new Category Facet search');\n      const categoryFacetValues = await this.categoryFacet.categoryFacetQueryController.searchFacetValues(\n        this.facetSearchElement.input.value,\n        this.numberOfValuesToFetch\n      );\n      this.logAnalyticsEvent();\n      if (categoryFacetValues.length < this.numberOfValuesToFetch) {\n        this.moreValuesToFetch = false;\n      }\n      if (categoryFacetValues.length == 0) {\n        this.noFacetSearchResults();\n        return;\n      }\n      this.removeNoResultsCssClasses();\n      this.setFacetSearchResults(categoryFacetValues);\n\n      if (this.shouldPositionSearchResults) {\n        this.facetSearchElement.positionSearchResults();\n      }\n\n      this.facetSearchElement.hideFacetSearchWaitingAnimation();\n    };\n  }\n\n  private setFacetSearchResults(categoryFacetValues: IGroupByValue[]) {\n    $$(this.facetSearchElement.searchResults).empty();\n    this.currentlyDisplayedResults = pluck(categoryFacetValues, 'value');\n    for (let i = 0; i < categoryFacetValues.length; i++) {\n      const searchResult = this.buildFacetSearchValue(categoryFacetValues[i], i);\n      if (i == 0) {\n        this.facetSearchElement.setAsCurrentResult(searchResult);\n      }\n      this.facetSearchElement.appendToSearchResults(searchResult.el);\n    }\n    this.highlightCurrentQueryWithinSearchResults();\n    this.facetSearchElement.updateAriaLiveWithResults(\n      this.facetSearchElement.input.value,\n      this.currentlyDisplayedResults.length,\n      this.moreValuesToFetch\n    );\n  }\n\n  private getFormattedCount(count: number) {\n    return Globalize.format(count, 'n0');\n  }\n\n  private buildFacetSearchValue(categoryFacetValue: IGroupByValue, index: number) {\n    const path = categoryFacetValue.value.split(this.categoryFacet.options.delimitingCharacter);\n\n    const pathParents = path.slice(0, -1).length != 0 ? `${path.slice(0, -1).join('/')}/` : '';\n\n    const value = $$('span', { className: 'coveo-category-facet-search-value-caption' }, last(path));\n    const number = $$(\n      'span',\n      { className: 'coveo-category-facet-search-value-number' },\n      this.getFormattedCount(categoryFacetValue.numberOfResults)\n    );\n    const pathParentsCaption = $$('span', { className: 'coveo-category-facet-search-path-parents' }, pathParents);\n\n    const pathToValueCaption = $$('span', { className: 'coveo-category-facet-search-path' }, pathParentsCaption);\n\n    const firstRow = $$('div', { className: 'coveo-category-facet-search-first-row' }, value, number);\n    const secondRow = $$('div', { className: 'coveo-category-facet-search-second-row' }, pathToValueCaption);\n    const item = $$(\n      'li',\n      {\n        id: `coveo-category-facet-search-suggestion-${index}`,\n        role: 'option',\n        ariaSelected: 'false',\n        className: 'coveo-category-facet-search-value',\n        title: path\n      },\n      firstRow,\n      secondRow\n    );\n    item.el.dataset.path = categoryFacetValue.value;\n\n    const countLabel = l('ResultCount', this.getFormattedCount(categoryFacetValue.numberOfResults), categoryFacetValue.numberOfResults);\n    const label = l('IncludeValueWithResultCount', last(path), countLabel);\n\n    new AccessibleButton()\n      .withElement(item)\n      .withSelectAction(() => {\n        this.categoryFacet.changeActivePath(path);\n        this.categoryFacet.scrollToTop();\n        this.categoryFacet.logAnalyticsEvent(analyticsActionCauseList.categoryFacetSelect, path);\n        this.categoryFacet.executeQuery();\n      })\n      .withLabel(label)\n      .build();\n\n    return item;\n  }\n\n  private noFacetSearchResults() {\n    this.facetSearchElement.hideFacetSearchWaitingAnimation();\n    this.facetSearchElement.emptyAndShowNoResults();\n    $$(this.facetSearchElement.search).addClass('coveo-facet-search-no-results');\n    $$(this.categoryFacet.element).addClass('coveo-no-results');\n  }\n\n  private removeNoResultsCssClasses() {\n    this.facetSearchElement.search && $$(this.facetSearchElement.search).removeClass('coveo-facet-search-no-results');\n    $$(this.categoryFacet.element).removeClass('coveo-no-results');\n  }\n\n  private highlightCurrentQueryWithinSearchResults() {\n    const regex = new RegExp(`(${StringUtils.stringToRegex(this.facetSearchElement.input.value, true)})`, 'ig');\n    this.facetSearchElement.highlightCurrentQueryInSearchResults(regex);\n  }\n\n  private logAnalyticsEvent() {\n    this.categoryFacet.usageAnalytics.logCustomEvent<IAnalyticsCategoryFacetMeta>(\n      analyticsActionCauseList.categoryFacetSearch,\n      {\n        categoryFacetId: this.categoryFacet.options.id,\n        categoryFacetField: this.categoryFacet.options.field.toString(),\n        categoryFacetTitle: this.categoryFacet.options.title\n      },\n      this.categoryFacet.root\n    );\n  }\n\n  private get shouldPositionSearchResults() {\n    const searchResults = this.facetSearchElement.searchResults;\n    return searchResults && !searchResults.parentElement;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/CategoryFacet/CategoryFacetSearch.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_CategoryFacetSearch.scss\n// module id = 553\n// module chunks = 1 4 5 6 7 88","import { $$ } from '../../utils/Dom';\nimport { SVGIcons } from '../../utils/SVGIcons';\nimport { CategoryValueDescriptor, CategoryFacet } from './CategoryFacet';\nimport { AccessibleButton } from '../../utils/AccessibleButton';\nimport { l } from '../../strings/Strings';\nimport { without } from 'underscore';\nimport { getHeadingTag } from '../../utils/AccessibilityUtils';\n\nexport interface ICategoryFacetBreadcrumbOptions {\n  headingLevel?: number;\n}\n\nexport class CategoryFacetBreadcrumb {\n  constructor(\n    private categoryFacet: CategoryFacet,\n    private onClickHandler: (e: MouseEvent) => void,\n    private categoryValueDescriptor: CategoryValueDescriptor,\n    private readonly options?: ICategoryFacetBreadcrumbOptions\n  ) {}\n\n  public build(): HTMLElement {\n    const clear = $$(\n      'span',\n      {\n        className: 'coveo-facet-breadcrumb-clear'\n      },\n      SVGIcons.icons.mainClear\n    );\n\n    const pathToRender = without(this.categoryValueDescriptor.path, ...this.categoryFacet.options.basePath);\n    const captionLabel = pathToRender.map(pathPart => this.categoryFacet.getCaption(pathPart)).join('/');\n\n    const breadcrumbTitle = $$(\n      getHeadingTag(this.options && this.options.headingLevel, 'span'),\n      { className: 'coveo-category-facet-breadcrumb-title' },\n      `${this.categoryFacet.options.title}:`\n    );\n    const valuesContainer = $$('span', { className: 'coveo-category-facet-breadcrumb-values' }, captionLabel, clear);\n\n    new AccessibleButton()\n      .withElement(valuesContainer)\n      .withLabel(l('RemoveFilterOn', captionLabel))\n      .withSelectAction(this.onClickHandler)\n      .build();\n\n    const breadcrumb = $$('span', { className: 'coveo-category-facet-breadcrumb' }, breadcrumbTitle, valuesContainer);\n    return breadcrumb.el;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/CategoryFacet/CategoryFacetBreadcrumb.ts","import { CategoryFacet } from './CategoryFacet';\nimport { IBuildingQueryEventArgs, QueryEvents, IQuerySuccessEventArgs } from '../../events/QueryEvents';\nimport { IGroupByResult } from '../../rest/GroupByResult';\nimport { QueryBuilder } from '../Base/QueryBuilder';\nimport { sortBy, chain } from 'underscore';\nimport { Logger } from '../../misc/Logger';\nimport { IGroupByValue } from '../../rest/GroupByValue';\n\nclass PathMap {\n  get: (key: string) => PathMap;\n  set: (key: string, value?: PathMap) => void;\n}\n\ntype DebugGroupByPositionInQuery = {\n  start: number;\n  end: number;\n};\n\nexport class CategoryFacetDebug {\n  private static logger = new Logger(CategoryFacet);\n  private positionInQuery: DebugGroupByPositionInQuery;\n  constructor(private categoryFacet: CategoryFacet) {\n    this.categoryFacet.bind.onRootElement<IBuildingQueryEventArgs>(QueryEvents.buildingQuery, args => this.handleBuildingQuery(args));\n    this.categoryFacet.bind.onRootElement<IQuerySuccessEventArgs>(QueryEvents.querySuccess, args => {\n      this.handleQuerySuccess(args);\n    });\n  }\n\n  private handleBuildingQuery(args: IBuildingQueryEventArgs) {\n    const firstPositionInQuery = args.queryBuilder.groupByRequests.length;\n    if (this.categoryFacet.activePath.length == 0) {\n      this.positionInQuery = { start: firstPositionInQuery, end: firstPositionInQuery + 1 };\n      this.addGroupByForEmptyPath(args.queryBuilder);\n    } else {\n      const path = this.categoryFacet.activePath;\n      this.positionInQuery = { start: firstPositionInQuery, end: firstPositionInQuery + path.length };\n      this.addGroupByForEachPathElement(args.queryBuilder, path);\n    }\n  }\n\n  private handleQuerySuccess(args: IQuerySuccessEventArgs) {\n    args.results.groupByResults\n      .slice(this.positionInQuery.start, this.positionInQuery.end)\n      .forEach(groupByResult => CategoryFacetDebug.analyzeResults(groupByResult, this.categoryFacet.options.delimitingCharacter));\n  }\n\n  private addGroupByForEmptyPath(queryBuilder: QueryBuilder) {\n    queryBuilder.groupByRequests.push({\n      field: this.categoryFacet.options.field as string,\n      injectionDepth: this.categoryFacet.options.injectionDepth\n    });\n  }\n\n  private addGroupByForEachPathElement(queryBuilder: QueryBuilder, path: string[]) {\n    path.forEach(pathElement => {\n      this.categoryFacet.categoryFacetQueryController.addDebugGroupBy(queryBuilder, pathElement);\n    });\n  }\n\n  public static analyzeResults(groupByResults: IGroupByResult, delimiter: string) {\n    const treeRoot: PathMap = new Map<string, PathMap>();\n    const orphans: string[] = [];\n\n    let paths = this.buildPathsFromGroupByValues(groupByResults.values, delimiter);\n    paths = sortBy(paths, value => value.length);\n\n    paths.forEach(path => {\n      if (path.length == 1) {\n        this.addFirstNodeToTree(treeRoot, path);\n      } else {\n        let pathIsValid = true;\n        const parentsOnly = path.slice(0, -1);\n        let currentNode = treeRoot;\n        for (const parent of parentsOnly) {\n          currentNode = currentNode.get(parent);\n          if (!currentNode) {\n            this.processOrphan(orphans, path, delimiter);\n            pathIsValid = false;\n            break;\n          }\n        }\n        if (pathIsValid) {\n          this.addValidNodeToTree(currentNode, path);\n        }\n      }\n    });\n    return orphans;\n  }\n\n  private static buildPathsFromGroupByValues(values: IGroupByValue[], delimiter: string) {\n    return chain(values)\n      .pluck('value')\n      .map((value: string) => value.split(delimiter))\n      .sortBy(value => value.length)\n      .value();\n  }\n\n  private static addFirstNodeToTree(treeRoot: PathMap, path: string[]) {\n    treeRoot.set(path[0], new Map<string, PathMap>());\n  }\n\n  private static addValidNodeToTree(node: PathMap, path: string[]) {\n    node.set(path.slice(-1)[0], new Map<string, PathMap>());\n  }\n\n  private static processOrphan(orphans: string[], path: string[], delimiter: string) {\n    const formattedOrphan = path.join(delimiter);\n    orphans.push(formattedOrphan);\n    this.logger.error(`Value ${formattedOrphan} has no parent.`);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/CategoryFacet/CategoryFacetDebug.ts","import { CategoryFacet } from './CategoryFacet';\nimport { $$ } from '../../utils/Dom';\nimport { l } from '../../strings/Strings';\nimport { SVGIcons } from '../../utils/SVGIcons';\nimport { SVGDom } from '../../utils/SVGDom';\nimport { AccessibleButton } from '../../utils/AccessibleButton';\n\nexport interface ICategoryFacetHeaderOptions {\n  categoryFacet: CategoryFacet;\n  title: string;\n}\n\nexport class CategoryFacetHeader {\n  public element: HTMLElement;\n\n  constructor(private options: ICategoryFacetHeaderOptions) {\n    this.element = document.createElement('div');\n    $$(this.element).addClass('coveo-facet-header');\n  }\n\n  public build(): HTMLElement {\n    const waitElement = this.buildWaitAnimation();\n\n    const titleSection = $$(\n      'div',\n      {\n        className: 'coveo-category-facet-title',\n        role: 'heading',\n        'aria-level': '2',\n        'aria-label': `${l('FacetTitle', this.options.title)}.`\n      },\n      this.options.title\n    );\n    this.element = $$('div', { className: 'coveo-category-facet-header' }, titleSection).el;\n    $$(this.element).append(waitElement);\n\n    const eraserElement = this.buildEraser();\n    $$(this.element).append(eraserElement);\n    return this.element;\n  }\n\n  private buildWaitAnimation(): HTMLElement {\n    const waitElement = $$('div', { className: CategoryFacet.WAIT_ELEMENT_CLASS }, SVGIcons.icons.loading).el;\n    SVGDom.addClassToSVGInContainer(waitElement, 'coveo-category-facet-header-wait-animation-svg');\n    waitElement.style.visibility = 'hidden';\n    return waitElement;\n  }\n\n  private buildEraser() {\n    const eraserElement = $$('div', { className: 'coveo-category-facet-header-eraser coveo-facet-header-eraser' }, SVGIcons.icons.mainClear)\n      .el;\n\n    SVGDom.addClassToSVGInContainer(eraserElement, 'coveo-facet-header-eraser-svg');\n\n    const onClearClick = () => {\n      this.options.categoryFacet.reset();\n      this.options.categoryFacet.scrollToTop();\n    };\n\n    new AccessibleButton()\n      .withElement(eraserElement)\n      .withLabel(l('Clear', this.options.title))\n      .withClickAction(onClearClick)\n      .withEnterKeyboardAction(onClearClick)\n      .build();\n\n    return eraserElement;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/CategoryFacet/CategoryFacetHeader.ts","import { ICategoryFacetValue } from '../../rest/CategoryFacetValue';\nimport { ICategoryFacetResult } from '../../rest/CategoryFacetResult';\nimport { find } from 'underscore';\n\nexport type ISeenValue = { result: ICategoryFacetValue; children: ISeenValue[] };\n\nexport class CategoryFacetValuesTree {\n  public seenValues: ISeenValue[] = [];\n\n  public getValueForLastPartInPath(path: string[]) {\n    const nullCategoryFacetValue: ICategoryFacetValue = { value: '', numberOfResults: 0 };\n    let currentNode: ISeenValue;\n\n    for (const part of path) {\n      const nodesToSearch = currentNode ? currentNode.children : this.seenValues;\n      const node = this.findNodeWithValue(nodesToSearch, part);\n\n      if (!node) {\n        return nullCategoryFacetValue;\n      }\n\n      currentNode = node;\n    }\n\n    return currentNode ? currentNode.result : nullCategoryFacetValue;\n  }\n\n  public storeNewValues(categoryFacetResult: ICategoryFacetResult) {\n    let currentNodes = this.seenValues;\n\n    for (const parent of categoryFacetResult.parentValues) {\n      const node = this.findNodeWithValue(currentNodes, parent.value);\n\n      if (!node) {\n        const newNode: ISeenValue = { result: parent, children: [] };\n        currentNodes.push(newNode);\n      }\n\n      currentNodes = this.findNodeWithValue(currentNodes, parent.value).children;\n    }\n\n    categoryFacetResult.values\n      .filter(result => !this.findNodeWithValue(currentNodes, result.value))\n      .forEach(result => currentNodes.push({ result, children: [] }));\n  }\n\n  private findNodeWithValue(nodes: ISeenValue[], value: string) {\n    return find(nodes, node => node.result.value === value);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/CategoryFacet/CategoryFacetValuesTree.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_FacetSettings.scss\n// module id = 558\n// module chunks = 1 4 5 6 7 88","import { Assert } from '../../misc/Assert';\nimport { Utils } from '../../utils/Utils';\nimport { IGroupByResult } from '../../rest/GroupByResult';\nimport { FacetValue } from './FacetValue';\nimport * as _ from 'underscore';\nimport { FacetValuesOrder } from './FacetValuesOrder';\n\nexport interface ISortFacetValuesOptions {\n  facetValuesOrder: FacetValuesOrder;\n  numberOfValues: number;\n}\n\nexport class FacetValues {\n  private values: FacetValue[];\n\n  constructor(groupByResult?: IGroupByResult) {\n    if (Utils.exists(groupByResult)) {\n      this.values = _.map(groupByResult.values, groupByValue => FacetValue.createFromGroupByValue(groupByValue));\n    } else {\n      this.values = [];\n    }\n  }\n\n  add(facetValue: FacetValue) {\n    Assert.exists(facetValue);\n    Assert.check(!this.contains(facetValue.value));\n    this.values.push(facetValue);\n  }\n\n  remove(value: string) {\n    Assert.isNonEmptyString(value);\n    value = value;\n    this.values = _.filter(this.values, (elem: FacetValue) => elem.value != value);\n  }\n\n  size(): number {\n    return this.values.length;\n  }\n\n  isEmpty(): boolean {\n    return this.values.length == 0;\n  }\n\n  at(index: number): FacetValue {\n    Assert.isLargerOrEqualsThan(0, index);\n    Assert.isSmallerThan(this.values.length, index);\n    return this.values[index];\n  }\n\n  get(value: string): FacetValue {\n    return _.find(this.values, (elem: FacetValue) => elem.value.toLowerCase() == value.toLowerCase());\n  }\n\n  contains(value: string): boolean {\n    return Utils.exists(this.get(value));\n  }\n\n  getAll(): FacetValue[] {\n    return this.values;\n  }\n\n  getSelected(): FacetValue[] {\n    return _.filter(this.values, (value: FacetValue) => value.selected);\n  }\n\n  getExcluded(): FacetValue[] {\n    return _.filter(this.values, (value: FacetValue) => value.excluded);\n  }\n\n  hasSelectedOrExcludedValues(): boolean {\n    return this.getSelected().length != 0 || this.getExcluded().length != 0;\n  }\n\n  hasSelectedAndExcludedValues(): boolean {\n    return this.getSelected().length != 0 && this.getExcluded().length != 0;\n  }\n\n  hasOnlyExcludedValues(): boolean {\n    return this.getSelected().length == 0 && this.getExcluded().length != 0;\n  }\n\n  hasOnlySelectedValues(): boolean {\n    return this.getSelected().length != 0 && this.getExcluded().length == 0;\n  }\n\n  reset() {\n    _.each(this.values, (elem: FacetValue) => elem.reset());\n  }\n\n  importActiveValuesFromOtherList(other: FacetValues) {\n    Assert.exists(other);\n\n    _.each(other.getSelected(), (otherValue: FacetValue) => {\n      var myValue = this.get(otherValue.value);\n      if (Utils.exists(myValue)) {\n        myValue.selected = true;\n      } else {\n        this.values.push(otherValue.cloneWithZeroOccurrences());\n      }\n    });\n\n    _.each(other.getExcluded(), (otherValue: FacetValue) => {\n      var myValue = this.get(otherValue.value);\n      if (Utils.exists(myValue)) {\n        myValue.excluded = true;\n      } else if (otherValue.occurrences != 0) {\n        var occurrences = otherValue.occurrences;\n        var clone = otherValue.cloneWithZeroOccurrences();\n        clone.occurrences = occurrences;\n        this.values.push(clone);\n      } else {\n        this.values.push(otherValue.cloneWithZeroOccurrences());\n      }\n    });\n  }\n\n  updateCountsFromNewValues(newValues: FacetValues) {\n    Assert.exists(newValues);\n\n    this.values = _.map(this.values, (myValue: FacetValue) => {\n      var newValue = newValues.get(myValue.value);\n      if (Utils.exists(newValue)) {\n        myValue.updateCountsFromNewValue(newValue);\n        return myValue;\n      } else if (myValue.occurrences == null) {\n        return myValue.cloneWithZeroOccurrences();\n      }\n      return myValue;\n    });\n  }\n\n  updateDeltaWithFilteredFacetValues(filtered: FacetValues, isMultiValueField: boolean) {\n    Assert.exists(filtered);\n    _.each(this.values, (unfilteredValue: FacetValue) => {\n      var filteredValue = filtered.get(unfilteredValue.value);\n      unfilteredValue.waitingForDelta = false;\n      if (Utils.exists(filteredValue)) {\n        if (unfilteredValue.occurrences - filteredValue.occurrences > 0) {\n          // When there are only exclusion in the facet, there should be no \"delta\"\n          // The number of value for each facet will be what is selected, no addition.\n          if (this.hasOnlyExcludedValues()) {\n            unfilteredValue.delta = null;\n            unfilteredValue.occurrences = filteredValue.occurrences;\n          } else {\n            unfilteredValue.delta = unfilteredValue.occurrences - filteredValue.occurrences;\n          }\n        } else {\n          unfilteredValue.delta = null;\n        }\n      } else if (!unfilteredValue.selected && !unfilteredValue.excluded) {\n        if (isMultiValueField && filtered.values.length == 0) {\n          unfilteredValue.delta = null;\n          unfilteredValue.occurrences = 0;\n        } else {\n          unfilteredValue.delta = unfilteredValue.occurrences;\n        }\n      }\n    });\n  }\n\n  mergeWithUnfilteredFacetValues(unfiltered: FacetValues) {\n    Assert.exists(unfiltered);\n\n    var values: FacetValue[] = [];\n    _.each(unfiltered.values, (unfilteredValue: FacetValue) => {\n      var filteredValue = this.get(unfilteredValue.value);\n      if (Utils.exists(filteredValue)) {\n        if (filteredValue.occurrences == unfilteredValue.occurrences) {\n          values.push(filteredValue);\n        } else {\n          values.push(unfilteredValue.cloneWithDelta(unfilteredValue.occurrences, unfilteredValue.occurrences - filteredValue.occurrences));\n        }\n      } else {\n        values.push(unfilteredValue.cloneWithDelta(unfilteredValue.occurrences, unfilteredValue.occurrences));\n      }\n    });\n\n    var index = 0;\n    _.each(this.values, (value: FacetValue) => {\n      var unfilteredValue = unfiltered.get(value.value);\n      if (!Utils.exists(unfilteredValue)) {\n        if (value.selected || value.excluded) {\n          values.splice(index, 0, value);\n          index++;\n        }\n      } else {\n        for (var i = 0; i < values.length; i++) {\n          if (values[i].value == value.value) {\n            index = i + 1;\n            break;\n          }\n        }\n      }\n    });\n    this.values = values;\n  }\n\n  sort(options: ISortFacetValuesOptions) {\n    const { facetValuesOrder, numberOfValues } = options;\n\n    this.values = facetValuesOrder.reorderValuesIfUsingAlphabeticalSort(this.values);\n    this.sortValuesDependingOnStatus(numberOfValues);\n    this.values = facetValuesOrder.reorderValuesIfUsingCustomSort(this.values);\n  }\n\n  sortValuesDependingOnStatus(numOfDisplayedValues: number) {\n    this.values = _.sortBy(this.values, (value: FacetValue) => {\n      if (value.selected) {\n        return 1;\n      } else if (value.excluded) {\n        return 3;\n      } else {\n        return 2;\n      }\n    });\n\n    this.ensureExcludedValuesAreDisplayed(numOfDisplayedValues);\n  }\n\n  private ensureExcludedValuesAreDisplayed(numOfDisplayedValues: number) {\n    if (numOfDisplayedValues != null && numOfDisplayedValues < this.values.length) {\n      var nbExclude = this.getExcluded().length;\n      var excludedValues = this.values.splice(this.values.length - nbExclude, nbExclude);\n      this.values.splice(numOfDisplayedValues - nbExclude, 0, ...excludedValues);\n    }\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Facet/FacetValues.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/vapor/_Radio.scss\n// module id = 560\n// module chunks = 14 18 25 56 88","import { exportGlobally } from '../GlobalExports';\nimport { Expression } from './Expression/Expression';\nimport { ExpressionConstant } from './Expression/ExpressionConstant';\nimport { ExpressionEndOfInput } from './Expression/ExpressionEndOfInput';\nimport { ExpressionFunction, ExpressionFunctionArgument } from './Expression/ExpressionFunction';\nimport { ExpressionList } from './Expression/ExpressionList';\nimport { ExpressionOptions } from './Expression/ExpressionOptions';\nimport { ExpressionRef } from './Expression/ExpressionRef';\nimport { ExpressionRegExp } from './Expression/ExpressionRegExp';\nimport { Grammar } from './Grammar';\nimport { SubGrammar } from './Grammars/Expressions';\nimport { Grammars } from './Grammars/Grammars';\nimport { InputManager } from './InputManager';\nimport { createMagicBox, MagicBoxInstance, requestAnimationFrame } from './MagicBox';\nimport { MagicBoxUtils as Utils } from './MagicBoxUtils';\nimport { OptionResult } from './Result/OptionResult';\nimport { RefResult } from './Result/RefResult';\nimport { EndOfInputResult, Result } from './Result/Result';\nimport { Suggestion, SuggestionsManager } from './SuggestionsManager';\nexport type ExpressionImportedLocally = Expression;\nexport type SuggestionImportedLocally = Suggestion;\nexport type SubGrammarLocally = SubGrammar;\nexport type ExpressionFunctionArgumentLocally = ExpressionFunctionArgument;\nexport const GrammarsImportedLocally = Grammars;\n\nexport function doMagicBoxExport() {\n  exportGlobally({\n    MagicBox: {\n      EndOfInputResult,\n      ExpressionConstant,\n      ExpressionEndOfInput,\n      ExpressionFunction,\n      ExpressionList,\n      ExpressionOptions,\n      ExpressionRef,\n      ExpressionRegExp,\n      Grammar,\n      Grammars,\n      InputManager,\n      Instance: MagicBoxInstance,\n      OptionResult,\n      RefResult,\n      Result,\n      SuggestionsManager,\n      Utils,\n      create: createMagicBox,\n      requestAnimationFrame\n    }\n  });\n}\n\nexport declare namespace MagicBox {\n  export const EndOfInputResult: EndOfInputResult;\n  export const ExpressionConstant: ExpressionConstant;\n  export const ExpressionFunction: ExpressionFunction;\n  export const ExpressionList: ExpressionList;\n  export const ExpressionOptions: ExpressionOptions;\n  export const ExpressionRef: ExpressionRef;\n  export const ExpressionRegExp: ExpressionRegExp;\n  export const Grammar: Grammar;\n  export const InputManager: InputManager;\n  export const Instance: MagicBoxInstance;\n  export const OptionResult: OptionResult;\n  export const RefResult: RefResult;\n  export const Result: Result;\n  export const SuggestionsManager: SuggestionsManager;\n  export const Utils: Utils;\n  export const ExpressionEndOfInput;\n  export type Instance = MagicBoxInstance;\n  export type Suggestion = SuggestionImportedLocally;\n\n  export namespace Grammars {\n    export const Basic: typeof GrammarsImportedLocally.Basic;\n    export const notInWord: typeof GrammarsImportedLocally.notInWord;\n    export const notWordStart: typeof GrammarsImportedLocally.notWordStart;\n    export const Complete: typeof GrammarsImportedLocally.Complete;\n    export const Date: typeof GrammarsImportedLocally.Date;\n    export const Expressions: typeof GrammarsImportedLocally.Expressions;\n    export const ExpressionsGrammar: typeof GrammarsImportedLocally.ExpressionsGrammar;\n    export const Field: typeof GrammarsImportedLocally.Field;\n    export const NestedQuery: typeof GrammarsImportedLocally.NestedQuery;\n    export const QueryExtension: typeof GrammarsImportedLocally.QueryExtension;\n    export const SubExpression: typeof GrammarsImportedLocally.SubExpression;\n  }\n\n  export const createMagicBox;\n  export const create;\n  export const requestAnimationFrame;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/magicbox/doMagicBoxExport.ts","import { Basic, notInWord, notWordStart } from './Basic';\nimport { Complete } from './Complete';\nimport { Date } from './Date';\nimport { Expressions, ExpressionsGrammar, SubGrammar } from './Expressions';\nimport { ExpressionFunctionArgument } from '../Expression/ExpressionFunction';\nimport { Field } from './Field';\nimport { NestedQuery } from './NestedQuery';\nimport { QueryExtension } from './QueryExtension';\nimport { SubExpression } from './SubExpression';\nexport type SubGrammarImported = SubGrammar;\nexport type ExpressionFunctionArgumentImported = ExpressionFunctionArgument;\n\nexport const Grammars = {\n  Basic,\n  notInWord,\n  notWordStart,\n  Complete,\n  Date,\n  Expressions,\n  ExpressionsGrammar,\n  Field,\n  NestedQuery,\n  QueryExtension,\n  SubExpression\n};\n\n\n\n// WEBPACK FOOTER //\n// ./src/magicbox/Grammars/Grammars.ts","import { $$, Dom } from '../utils/Dom';\nimport { l } from '../strings/Strings';\nimport { defaults, findIndex } from 'underscore';\nimport { Component } from '../ui/Base/Component';\nimport { Direction, Suggestion } from './SuggestionsManager';\nimport {\n  ResultPreviewsManagerEvents,\n  IPopulateSearchResultPreviewsEventArgs,\n  IUpdateResultPreviewsManagerOptionsEventArgs\n} from '../events/ResultPreviewsManagerEvents';\nimport { QueryProcessor, ProcessingStatus } from './QueryProcessor';\nimport { Utils } from '../utils/Utils';\n\nexport interface ISearchResultPreview {\n  element: HTMLElement;\n  onSelect: () => void;\n}\n\nexport interface IResultPreviewsManagerOptions {\n  previewClass: string;\n  selectedClass: string;\n  previewHeaderText: string;\n  previewHeaderFieldText: string;\n  timeout: number;\n}\n\nexport class ResultPreviewsManager {\n  private options: IResultPreviewsManagerOptions;\n  private suggestionsPreviewContainer: Dom;\n  private resultPreviewsContainer: Dom;\n  private lastQueriedSuggestion: Suggestion;\n  private lastDisplayedSuggestion: Suggestion;\n  private previewsProcessor: QueryProcessor<ISearchResultPreview>;\n  private lastDelay: Promise<void>;\n  private root: HTMLElement;\n\n  public get previewsOwner() {\n    return this.lastDisplayedSuggestion;\n  }\n\n  public get hasPreviews() {\n    return !!this.suggestionsPreviewContainer;\n  }\n\n  public get focusedPreviewElement() {\n    if (!this.hasPreviews) {\n      return null;\n    }\n    const focusedElement = this.suggestionsPreviewContainer.findClass(this.options.selectedClass)[0];\n    if (!focusedElement || !focusedElement.classList.contains(this.options.previewClass)) {\n      return null;\n    }\n    return focusedElement;\n  }\n\n  public get previewElements() {\n    if (!this.hasPreviews) {\n      return [];\n    }\n    return this.suggestionsPreviewContainer.findClass(this.options.previewClass);\n  }\n\n  private get suggestionsListbox() {\n    return $$($$(this.element).findClass('coveo-magicbox-suggestions')[0]);\n  }\n\n  private get numberOfResultsPerRow() {\n    const previewSelectables = this.suggestionsPreviewContainer.findClass(this.options.previewClass);\n    if (previewSelectables.length === 0) {\n      return 0;\n    }\n    const firstVerticalOffset = previewSelectables[0].offsetTop;\n    const firstIndexOnNextRow = findIndex(previewSelectables, previewSelectable => previewSelectable.offsetTop !== firstVerticalOffset);\n    return firstIndexOnNextRow !== -1 ? firstIndexOnNextRow : previewSelectables.length;\n  }\n\n  private get previewContainerId() {\n    return `coveo-previews-for-${this.lastDisplayedSuggestion.dom.id}`;\n  }\n\n  constructor(private element: HTMLElement, options: Partial<IResultPreviewsManagerOptions> = {}) {\n    this.options = defaults(options, <IResultPreviewsManagerOptions>{\n      previewHeaderText: l('QuerySuggestPreview'),\n      previewHeaderFieldText: l('QuerySuggestPreviewWithField'),\n      previewClass: 'coveo-preview-selectable',\n      selectedClass: 'magic-box-selected'\n    });\n    this.root = Component.resolveRoot(element);\n    this.previewsProcessor = new QueryProcessor({ timeout: this.options.timeout });\n  }\n\n  public async displaySearchResultPreviewsForSuggestion(suggestion: Suggestion) {\n    const externalOptions = this.getExternalOptions();\n    const currentDelay = (this.lastDelay = Utils.resolveAfter(\n      Utils.isNullOrUndefined(externalOptions.displayAfterDuration) ? 200 : externalOptions.displayAfterDuration\n    ));\n    await currentDelay;\n    if (currentDelay !== this.lastDelay) {\n      return;\n    }\n    const isQueryForSuggestionOngoing = suggestion && this.lastQueriedSuggestion === suggestion;\n    if (isQueryForSuggestionOngoing) {\n      return;\n    }\n    const arePreviewsForSuggestionCurrentlyDisplayed = this.lastDisplayedSuggestion === suggestion;\n    if (arePreviewsForSuggestionCurrentlyDisplayed) {\n      this.previewsProcessor.overrideIfProcessing();\n      this.lastQueriedSuggestion = null;\n      return;\n    }\n    this.lastQueriedSuggestion = suggestion;\n    if (!suggestion) {\n      this.displaySuggestionPreviews(null, []);\n      return;\n    }\n    const { status, results } = await this.getSearchResultPreviewsQuery(suggestion);\n    if (status === ProcessingStatus.Overriden) {\n      return;\n    }\n    this.lastQueriedSuggestion = null;\n    this.displaySuggestionPreviews(suggestion, results);\n  }\n\n  public getElementInDirection(direction: Direction) {\n    const previewElements = this.previewElements;\n    const focusedIndex = previewElements.indexOf(this.focusedPreviewElement);\n\n    if (focusedIndex === -1) {\n      return null;\n    }\n\n    if (focusedIndex === 0 && direction === Direction.Left) {\n      return null;\n    }\n\n    return previewElements[(focusedIndex + this.getIncrementInDirection(direction)) % previewElements.length];\n  }\n\n  private getIncrementInDirection(direction: Direction) {\n    switch (direction) {\n      case Direction.Left:\n        return -1;\n      case Direction.Right:\n        return 1;\n      case Direction.Up:\n        return -this.numberOfResultsPerRow;\n      case Direction.Down:\n        return this.numberOfResultsPerRow;\n    }\n  }\n\n  private setHasPreviews(shouldHavePreviews: boolean) {\n    if (this.hasPreviews === !!shouldHavePreviews) {\n      return;\n    }\n    if (shouldHavePreviews) {\n      this.initPreviewForSuggestions();\n    } else {\n      this.revertPreviewForSuggestions();\n    }\n  }\n\n  private initPreviewForSuggestions() {\n    this.suggestionsPreviewContainer = $$(\n      'div',\n      {\n        className: 'coveo-suggestion-container'\n      },\n      this.suggestionsListbox.el,\n      this.buildPreviewContainer()\n    );\n    this.element.appendChild(this.suggestionsPreviewContainer.el);\n    this.suggestionsListbox.setAttribute('aria-controls', this.previewContainerId);\n  }\n\n  private revertPreviewForSuggestions() {\n    this.element.appendChild(this.suggestionsListbox.el);\n    this.suggestionsPreviewContainer.remove();\n    this.suggestionsPreviewContainer = null;\n  }\n\n  private buildPreviewContainer() {\n    return $$(\n      'div',\n      {\n        className: 'coveo-preview-container',\n        id: this.previewContainerId\n      },\n      (this.resultPreviewsContainer = $$('div', {\n        className: 'coveo-preview-results',\n        role: 'listbox',\n        'aria-orientation': 'horizontal'\n      }))\n    ).el;\n  }\n\n  private getExternalOptions() {\n    const optionsEventArgs: IUpdateResultPreviewsManagerOptionsEventArgs = {};\n    $$(this.root).trigger(ResultPreviewsManagerEvents.updateResultPreviewsManagerOptions, optionsEventArgs);\n    return optionsEventArgs;\n  }\n\n  private getSearchResultPreviewsQuery(suggestion: Suggestion) {\n    const populateEventArgs: IPopulateSearchResultPreviewsEventArgs = {\n      suggestion,\n      previewsQueries: []\n    };\n    $$(this.root).trigger(ResultPreviewsManagerEvents.populateSearchResultPreviews, populateEventArgs);\n    return this.previewsProcessor.processQueries(populateEventArgs.previewsQueries);\n  }\n\n  private appendSearchResultPreview(preview: ISearchResultPreview, position: number) {\n    this.resultPreviewsContainer.append(preview.element);\n    preview.element.id = `coveo-result-preview-${position}`;\n    const elementDom = $$(preview.element);\n    elementDom.setAttribute('aria-selected', 'false');\n    elementDom.setAttribute('role', 'option');\n    elementDom.on('click', () => preview.onSelect());\n    elementDom.on('keyboardSelect', () => preview.onSelect());\n  }\n\n  private appendSearchResultPreviews(previews: ISearchResultPreview[]) {\n    this.resultPreviewsContainer.empty();\n    previews.forEach((preview, i) => this.appendSearchResultPreview(preview, i));\n  }\n\n  private displaySuggestionPreviews(suggestion: Suggestion, previews: ISearchResultPreview[]) {\n    this.lastDisplayedSuggestion = suggestion;\n    this.setHasPreviews(previews && previews.length > 0);\n    this.element.classList.toggle('magic-box-hasPreviews', this.hasPreviews);\n    if (!this.hasPreviews) {\n      return;\n    }\n    this.appendSearchResultPreviews(previews);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/magicbox/ResultPreviewsManager.ts","import { $$, Dom } from '../utils/Dom';\nimport { MagicBoxInstance } from './MagicBox';\nimport { l } from '../strings/Strings';\nimport { AccessibleButton } from '../utils/AccessibleButton';\n\nexport class MagicBoxClear {\n  public element: Dom;\n\n  constructor(magicBox: MagicBoxInstance) {\n    this.element = $$('div', {\n      className: 'magic-box-clear'\n    });\n    const clearIcon = $$('div', {\n      className: 'magic-box-icon'\n    });\n    this.element.append(clearIcon.el);\n\n    this.element.insertAfter($$(magicBox.element).find('input'));\n\n    new AccessibleButton()\n      .withElement(this.element)\n      .withLabel(l('Clear'))\n      .withSelectAction(() => magicBox.clear())\n      .build();\n\n    this.toggleTabindexAndAriaHidden(false);\n  }\n\n  public toggleTabindexAndAriaHidden(hasText: boolean) {\n    const tabindex = hasText ? '0' : '-1';\n    this.element.setAttribute('tabindex', tabindex);\n    this.element.setAttribute('aria-hidden', `${!hasText}`);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/magicbox/MagicBoxClear.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_Querybox.scss\n// module id = 565\n// module chunks = 9 10 11 88","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/vapor/_FormGroup.scss\n// module id = 566\n// module chunks = 25 26 58 88","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/DynamicFacet/_DynamicFacetHeader.scss\n// module id = 567\n// module chunks = 2 4 8 88","import { l } from '../../../strings/Strings';\nimport { SVGIcons } from '../../../utils/SVGIcons';\nimport { $$ } from '../../../utils/Dom';\nimport { DynamicFacetHeaderButton } from './DynamicFacetHeaderButton';\nimport { IDynamicFacetHeaderOptions } from './DynamicFacetHeader';\nimport { SVGDom } from '../../../utils/SVGDom';\n\nexport interface IDynamicFacetCollapseToggleOptions {\n  collapsed: boolean;\n}\n\nexport class DynamicFacetHeaderCollapseToggle {\n  public element: HTMLElement;\n  private button: DynamicFacetHeaderButton;\n\n  constructor(private options: IDynamicFacetHeaderOptions) {\n    this.create();\n  }\n\n  private create() {\n    const parent = $$('div');\n\n    this.button = new DynamicFacetHeaderButton({\n      label: l('CollapseFacet', this.options.title),\n      iconSVG: SVGIcons.icons.arrowUp,\n      iconClassName: 'coveo-dynamic-facet-collapse-toggle-svg',\n      className: 'coveo-dynamic-facet-header-collapse',\n      shouldDisplay: true,\n      action: () => this.options.toggleCollapse()\n    });\n\n    parent.append(this.button.element);\n    this.element = parent.el;\n  }\n\n  public toggleButton(isCollapsed: boolean) {\n    const node = $$(this.button.element);\n    const label = isCollapsed ? l('ExpandFacet', this.options.title) : l('CollapseFacet', this.options.title);\n    const icon = isCollapsed ? SVGIcons.icons.arrowDown : SVGIcons.icons.arrowUp;\n\n    node.setAttribute('aria-label', label);\n    node.setAttribute('title', label);\n    node.setAttribute('aria-expanded', (!isCollapsed).toString());\n\n    node.toggleClass('coveo-dynamic-facet-header-expand', isCollapsed);\n    node.toggleClass('coveo-dynamic-facet-header-collapse', !isCollapsed);\n\n    node.setHtml(icon);\n    SVGDom.addClassToSVGInContainer(node.el, 'coveo-dynamic-facet-collapse-toggle-svg');\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/DynamicFacet/DynamicFacetHeader/DynamicFacetHeaderCollapseToggle.ts","import { TextInput, ITextInputOptions } from '../FormWidgets/TextInput';\nimport { $$ } from '../../utils/Dom';\nimport { KEYBOARD } from '../../utils/KeyboardUtils';\nimport { Utils } from '../../utils/Utils';\nimport { IComboboxAccessibilityAttributes, ICombobox } from './ICombobox';\n\nexport class ComboboxInput {\n  public element: HTMLElement;\n  private textInput: TextInput;\n  private inputElement: HTMLInputElement;\n  private inputOptions: ITextInputOptions = {\n    usePlaceholder: true,\n    className: 'coveo-combobox-input',\n    triggerOnChangeAsYouType: true,\n    isRequired: false,\n    icon: 'search'\n  };\n\n  constructor(private combobox: ICombobox) {\n    this.create();\n    this.element = this.textInput.getElement();\n    this.inputElement = $$(this.element).find('input') as HTMLInputElement;\n    this.addEventListeners();\n    this.addAccessibilityAttributes();\n  }\n\n  public get value() {\n    return this.inputElement.value;\n  }\n\n  private create() {\n    this.textInput = new TextInput(\n      (inputInstance: TextInput) => this.combobox.onInputChange(inputInstance.getValue()),\n      this.combobox.options.placeholderText,\n      this.inputOptions\n    );\n  }\n\n  private addEventListeners() {\n    if (!this.combobox.options.clearOnBlur) {\n      this.inputElement.addEventListener('focus', () => this.combobox.onInputChange(this.textInput.getValue()));\n    }\n    this.combobox.element.addEventListener('focusout', (e: FocusEvent) => this.handleFocusOut(e));\n    this.combobox.element.addEventListener('keydown', (e: KeyboardEvent) => this.handleKeyboardDirection(e));\n    this.combobox.element.addEventListener('keyup', (e: KeyboardEvent) => this.handleKeyboardEnterEscape(e));\n  }\n\n  private addAccessibilityAttributes() {\n    const listboxId = `${this.combobox.id}-listbox`;\n    this.inputElement.setAttribute('role', 'combobox');\n    this.inputElement.setAttribute('aria-owns', listboxId);\n    this.inputElement.setAttribute('aria-haspopup', 'listbox');\n    this.inputElement.setAttribute('aria-autocomplete', 'list');\n    this.inputElement.setAttribute('id', `${this.combobox.id}-input`);\n    this.inputElement.setAttribute('aria-label', this.combobox.options.label);\n\n    this.updateAccessibilityAttributes({\n      activeDescendant: '',\n      expanded: false\n    });\n  }\n\n  public updateAccessibilityAttributes(attributes: IComboboxAccessibilityAttributes) {\n    this.inputElement.setAttribute('aria-expanded', attributes.expanded ? 'true' : 'false');\n    Utils.isEmptyString(attributes.activeDescendant)\n      ? this.inputElement.removeAttribute('aria-activedescendant')\n      : this.inputElement.setAttribute('aria-activedescendant', attributes.activeDescendant);\n  }\n\n  public clearInput() {\n    this.textInput.reset();\n  }\n\n  private handleFocusOut(event: FocusEvent) {\n    const newTarget = event.relatedTarget as HTMLElement;\n    const focusInsideCombobox = this.combobox.element.contains(newTarget);\n    if (focusInsideCombobox) {\n      return;\n    }\n\n    const comboboxValuesHovered = $$(this.combobox.element).find('.coveo-combobox-values:hover');\n    if (comboboxValuesHovered) {\n      this.inputElement.focus();\n      return;\n    }\n\n    this.combobox.onInputBlur();\n  }\n\n  private handleKeyboardDirection(event: KeyboardEvent) {\n    switch (event.which) {\n      case KEYBOARD.DOWN_ARROW:\n        event.preventDefault();\n        this.combobox.values.focusNextValue();\n        break;\n      case KEYBOARD.UP_ARROW:\n        event.preventDefault();\n        this.combobox.values.focusPreviousValue();\n        break;\n      case KEYBOARD.HOME:\n        event.preventDefault();\n        this.combobox.values.focusFirstValue();\n        break;\n      case KEYBOARD.END:\n        event.preventDefault();\n        this.combobox.values.focusLastValue();\n        break;\n    }\n  }\n\n  private handleKeyboardEnterEscape(event: KeyboardEvent) {\n    switch (event.which) {\n      case KEYBOARD.ENTER:\n        this.combobox.values.selectActiveValue();\n        break;\n      case KEYBOARD.ESCAPE:\n        if (Utils.isNonEmptyString(this.textInput.getValue())) {\n          event.stopPropagation();\n        }\n        this.combobox.clearAll();\n        break;\n    }\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Combobox/ComboboxInput.ts","import { ICombobox, IComboboxValues, IComboboxValue } from './ICombobox';\nimport { $$ } from '../../utils/Dom';\nimport { find } from 'underscore';\nimport { l } from '../../strings/Strings';\nimport { HighlightUtils } from '../../UtilsModules';\n\nexport class ComboboxValues implements IComboboxValues {\n  public element: HTMLElement;\n  public mouseIsOverValue = false;\n  public isRenderingNewValues = false;\n  private values: IComboboxValue[] = [];\n  private keyboardActiveValue?: IComboboxValue;\n  private isScrollable: boolean;\n  private focusedValueId: string;\n\n  constructor(private combobox: ICombobox) {\n    this.element = $$('ul', {\n      id: `${this.combobox.id}-listbox`,\n      role: 'listbox',\n      className: 'coveo-combobox-values',\n      ariaLabelledby: `${this.combobox.id}-input`\n    }).el;\n    $$(this.element).hide();\n\n    this.isScrollable = !!this.combobox.options.scrollable;\n    this.isScrollable && this.element.addEventListener('scroll', () => this.onScroll());\n  }\n\n  public renderFromResponse(response: any) {\n    this.isRenderingNewValues = true;\n    this.clearValues();\n    this.values = this.combobox.options.createValuesFromResponse(response);\n    this.render();\n    this.combobox.updateAriaLive();\n    this.isRenderingNewValues = false;\n  }\n\n  private render() {\n    $$(this.element).show();\n\n    if (!this.hasValues()) {\n      return this.renderNoValuesFound();\n    }\n\n    this.renderValues();\n    this.addEventListeners();\n    this.updateAccessibilityAttributes();\n  }\n\n  private renderValues() {\n    const fragment = document.createDocumentFragment();\n    this.values.forEach((value, index) => {\n      const elementWrapper = $$(\n        'li',\n        { id: `${this.combobox.id}-value-${index}`, className: 'coveo-combobox-value', role: 'option', tabindex: 0 },\n        value.element\n      ).el;\n      this.highlightCurrentQueryInSearchResults(value.element);\n      value.element = elementWrapper;\n      fragment.appendChild(value.element);\n    });\n\n    this.element.appendChild(fragment);\n  }\n\n  private highlightCurrentQueryInSearchResults(searchResult: HTMLElement) {\n    if (this.combobox.options.highlightValueClassName) {\n      const query = this.combobox.element.querySelector('input').value;\n      const result = $$(searchResult).hasClass(this.combobox.options.highlightValueClassName)\n        ? searchResult\n        : $$(searchResult).find(`.${this.combobox.options.highlightValueClassName}`);\n      if (result) {\n        const text = $$(result).text();\n        const nodes = HighlightUtils.highlight(text, query, 'coveo-highlight');\n\n        $$(result).empty();\n        nodes.forEach(node => result.appendChild(node));\n      }\n    }\n  }\n\n  public hasValues() {\n    return !!this.numberOfValues;\n  }\n\n  public get numberOfValues() {\n    return this.values.length;\n  }\n\n  private renderNoValuesFound() {\n    const noValuesFoundElement = $$(\n      'li',\n      {\n        role: 'option',\n        className: 'coveo-combobox-value-not-found'\n      },\n      l('NoValuesFound')\n    ).el;\n\n    this.element.appendChild(noValuesFoundElement);\n  }\n\n  private addEventListeners() {\n    this.values.forEach(value => {\n      $$(value.element).on('mouseenter', () => (this.mouseIsOverValue = true));\n      $$(value.element).on('mouseleave', () => (this.mouseIsOverValue = false));\n      $$(value.element).on('click', (e: MouseEvent) => this.onValueClick(e));\n      $$(value.element).on('focus', () => this.setKeyboardActiveValue(value));\n    });\n  }\n\n  private onValueClick(e: MouseEvent) {\n    const target = <HTMLElement>e.target;\n    const targetElement = $$(target).hasClass('coveo-combobox-value') ? target : $$(target).parent('coveo-combobox-value');\n\n    if (!targetElement) {\n      return;\n    }\n\n    const targetId = targetElement.getAttribute('id');\n    const value = find(this.values, ({ element }) => element.getAttribute('id') === targetId);\n    value && this.combobox.options.onSelectValue(value);\n    this.combobox.clearAll();\n  }\n\n  private updateAccessibilityAttributes() {\n    const activeDescendant = this.keyboardActiveValue ? this.keyboardActiveValue.element.getAttribute('id') : '';\n\n    this.combobox.updateAccessibilityAttributes({\n      activeDescendant,\n      expanded: this.hasValues()\n    });\n  }\n\n  public clearValues() {\n    this.mouseIsOverValue = false;\n    this.resetKeyboardActiveValue();\n    $$(this.element).empty();\n    $$(this.element).hide();\n    this.values = [];\n    this.updateAccessibilityAttributes();\n  }\n\n  private setKeyboardActiveValue(value: IComboboxValue) {\n    this.resetKeyboardActiveValue();\n    this.keyboardActiveValue = value;\n    this.activateFocusOnValue(this.keyboardActiveValue);\n    this.updateAccessibilityAttributes();\n  }\n\n  private resetKeyboardActiveValue() {\n    if (!this.keyboardActiveValue) {\n      return;\n    }\n\n    this.deactivateFocusOnValue(this.keyboardActiveValue);\n    this.keyboardActiveValue = null;\n  }\n\n  private activateFocusOnValue({ element }: IComboboxValue) {\n    $$(element).addClass('coveo-focused');\n    element.setAttribute('aria-selected', 'true');\n  }\n\n  private deactivateFocusOnValue({ element }: IComboboxValue) {\n    $$(element).removeClass('coveo-focused');\n    element.setAttribute('aria-selected', 'false');\n  }\n\n  public selectActiveValue() {\n    if (!this.keyboardActiveValue) {\n      return;\n    }\n\n    this.combobox.options.onSelectValue(this.keyboardActiveValue);\n    this.combobox.clearAll();\n  }\n\n  private onScroll() {\n    const scrollEndReached = this.element.scrollTop + this.element.clientHeight >= this.element.scrollHeight;\n    if (scrollEndReached && this.combobox.options.scrollable.areMoreValuesAvailable()) {\n      this.combobox.onScrollEndReached();\n    }\n  }\n\n  public resetScroll() {\n    if (!this.isScrollable) {\n      return;\n    }\n    this.element.style.maxHeight = `${this.combobox.options.scrollable.maxDropdownHeight}px`;\n    this.element.scrollTop = 0;\n  }\n\n  public focusFirstValue() {\n    if (!this.hasValues()) {\n      return;\n    }\n\n    this.firstValue.element.focus();\n  }\n\n  public focusLastValue() {\n    if (!this.hasValues()) {\n      return;\n    }\n\n    this.lastValue.element.focus();\n  }\n\n  public focusNextValue() {\n    if (!this.hasValues()) {\n      return;\n    }\n\n    const nextActiveValue = this.nextOrFirstValue;\n    nextActiveValue.element.focus();\n  }\n\n  public focusPreviousValue() {\n    if (!this.hasValues()) {\n      return;\n    }\n\n    const previousActiveValue = this.previousOrLastValue;\n    previousActiveValue.element.focus();\n  }\n\n  private get nextOrFirstValue() {\n    if (!this.keyboardActiveValue) {\n      return this.firstValue;\n    }\n\n    const nextValueIndex = (this.values.indexOf(this.keyboardActiveValue) + 1) % this.numberOfValues;\n    return this.values[nextValueIndex];\n  }\n\n  private get firstValue() {\n    return this.values[0];\n  }\n\n  private get previousOrLastValue() {\n    if (!this.keyboardActiveValue) {\n      return this.lastValue;\n    }\n\n    const previousValueIndex = this.values.indexOf(this.keyboardActiveValue) - 1;\n    return previousValueIndex >= 0 ? this.values[previousValueIndex] : this.values[this.numberOfValues - 1];\n  }\n\n  private get lastValue() {\n    const lastValueIndex = this.numberOfValues - 1;\n    return this.values[lastValueIndex];\n  }\n\n  public saveFocusedValue() {\n    if (!this.keyboardActiveValue) {\n      this.focusedValueId = null;\n      return;\n    }\n\n    this.focusedValueId = this.keyboardActiveValue.element.id;\n  }\n\n  public restoreFocusedValue() {\n    if (!this.focusedValueId) {\n      return;\n    }\n\n    const element = $$(this.element).find(`#${this.focusedValueId}`);\n    element.focus();\n    this.focusedValueId = null;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Combobox/ComboboxValues.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_Combobox.scss\n// module id = 571\n// module chunks = 2 4 8 88","/// <reference path=\"../ui/FacetRange/FacetRange.ts\" />\n\nimport { FacetQueryController } from './FacetQueryController';\nimport { FacetRange } from '../ui/FacetRange/FacetRange';\nimport { Utils } from '../utils/Utils';\nimport { IGroupByRequest } from '../rest/GroupByRequest';\n\nexport class FacetRangeQueryController extends FacetQueryController {\n  public graphGroupByQueriesIndex: number;\n\n  constructor(public facet: FacetRange) {\n    super(facet);\n  }\n\n  protected createBasicGroupByRequest(allowedValues?: string[], addComputedField: boolean = true) {\n    var groupByQuery = super.createBasicGroupByRequest(null, addComputedField);\n    groupByQuery.allowedValues = undefined;\n    if (Utils.isNonEmptyArray(this.facet.options.ranges)) {\n      groupByQuery = this.buildGroupByQueryForPredefinedRanges(groupByQuery);\n    } else {\n      groupByQuery = this.buildGroupByQueryForAutomaticRanges(groupByQuery);\n    }\n    return groupByQuery;\n  }\n\n  protected createGroupByAllowedValues(): string[] {\n    return undefined;\n  }\n\n  private buildGroupByQueryForAutomaticRanges(groupByQuery: IGroupByRequest) {\n    groupByQuery.generateAutomaticRanges = true;\n    return groupByQuery;\n  }\n\n  private buildGroupByQueryForPredefinedRanges(groupByQuery: IGroupByRequest) {\n    groupByQuery.rangeValues = this.facet.options.ranges;\n    groupByQuery.maximumNumberOfValues = this.facet.options.ranges.length;\n    return groupByQuery;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/controllers/FacetRangeQueryController.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_Omnibox.scss\n// module id = 573\n// module chunks = 9 10 88","///<reference path='Omnibox.ts'/>\nimport { Omnibox, IOmniboxSuggestion } from './Omnibox';\nimport { OmniboxEvents, IPopulateOmniboxSuggestionsEventArgs } from '../../events/OmniboxEvents';\nimport { IFieldDescription } from '../../rest/FieldDescription';\nimport { IEndpointError } from '../../rest/EndpointError';\nimport * as _ from 'underscore';\nimport { Result } from '../../magicbox/Result/Result';\nimport { MagicBoxUtils } from '../../magicbox/MagicBoxUtils';\n\ninterface IFieldAddonHash {\n  type: string;\n  before: string;\n  after: string;\n  current: string;\n  field?: string;\n}\n\nexport class FieldAddon {\n  static INDEX = 64;\n  cache: { [hash: string]: Promise<IOmniboxSuggestion[]> } = {};\n\n  constructor(public omnibox: Omnibox) {\n    this.omnibox.bind.on(this.omnibox.element, OmniboxEvents.populateOmniboxSuggestions, (args: IPopulateOmniboxSuggestionsEventArgs) => {\n      args.suggestions.push(this.getSuggestion());\n    });\n  }\n\n  public getSuggestion(): Promise<IOmniboxSuggestion[]> {\n    const hash = this.getHash();\n    if (hash == null) {\n      return null;\n    }\n    const hashString = this.hashToString(hash);\n    if (this.cache[hashString] != null) {\n      return this.hashValueToSuggestion(hash, this.cache[hashString]);\n    }\n    let values: Promise<IOmniboxSuggestion[]>;\n    if (hash.type == 'FieldName') {\n      values = this.fieldNames(hash.current);\n    }\n    if (hash.type == 'FieldValue') {\n      values = this.fieldValues(hash.field, hash.current);\n    }\n    if (hash.type == 'SimpleFieldName') {\n      values = this.simpleFieldNames(hash.current);\n    }\n    this.cache[hashString] = values;\n    values.catch(() => {\n      delete this.cache[hashString];\n    });\n    return this.hashValueToSuggestion(hash, values);\n  }\n\n  private getHash(): IFieldAddonHash {\n    let fieldName: Result = _.last(this.omnibox.resultAtCursor('FieldName'));\n    if (fieldName != null) {\n      fieldName = fieldName.findParent('Field') || fieldName;\n      const currentField = fieldName.toString();\n      const before = fieldName.before();\n      const after = fieldName.after();\n      return { type: 'FieldName', current: currentField, before: before, after: after };\n    }\n    const fieldValue: Result = _.last(this.omnibox.resultAtCursor('FieldValue'));\n    if (fieldValue) {\n      const fieldQuery =\n        fieldValue.findParent('FieldQuery') || (this.omnibox.options.enableSimpleFieldAddon && fieldValue.findParent('FieldSimpleQuery'));\n      if (fieldQuery) {\n        let field = fieldQuery.find('FieldName').toString();\n        if (this.omnibox.options.fieldAlias) {\n          if (field in this.omnibox.options.fieldAlias) {\n            field = this.omnibox.options.fieldAlias[field];\n          }\n        }\n        const value = fieldValue.toString();\n        const before = fieldValue.before();\n        const after = fieldValue.after();\n        return { type: 'FieldValue', field: field, current: value, before: before, after: after };\n      }\n    }\n    if (this.omnibox.options.enableSimpleFieldAddon) {\n      const word: Result = _.last(this.omnibox.resultAtCursor('Word'));\n      if (word != null) {\n        const current = word.toString();\n        const before = word.before();\n        const after = word.after();\n        return { type: 'SimpleFieldName', current, before, after };\n      }\n    }\n  }\n\n  private hashToString(hash: IFieldAddonHash) {\n    if (hash == null) {\n      return null;\n    }\n    return hash.type + hash.current + (hash.field || '');\n  }\n\n  private hashValueToSuggestion(hash: IFieldAddonHash, promise: Promise<IOmniboxSuggestion[]>): Promise<IOmniboxSuggestion[]> {\n    return promise.then(values => {\n      const suggestions = _.map<any, IOmniboxSuggestion>(values, (value: string, i): IOmniboxSuggestion => {\n        const suggestion: IOmniboxSuggestion = {\n          text:\n            hash.before +\n            (hash.current.toLowerCase().indexOf(value.toLowerCase()) == 0 ? hash.current + value.substr(hash.current.length) : value) +\n            hash.after,\n          html: MagicBoxUtils.highlightText(value, hash.current, true),\n          index: FieldAddon.INDEX - i / values.length\n        };\n        return suggestion;\n      });\n      return suggestions;\n    });\n  }\n\n  private fields: Promise<IOmniboxSuggestion[]>;\n\n  private getFields(): Promise<IOmniboxSuggestion[]> {\n    if (this.fields == null) {\n      this.fields = new Promise<any[]>((resolve, reject) => {\n        if (this.omnibox.options.listOfFields != null) {\n          resolve(<string[]>this.omnibox.options.listOfFields);\n        } else {\n          const promise: Promise<IFieldDescription[] | IEndpointError> = this.omnibox.queryController.getEndpoint().listFields();\n          promise\n            .then((fieldDescriptions: IFieldDescription[]) => {\n              const fieldNames = _.chain(fieldDescriptions)\n                .filter((fieldDescription: IFieldDescription) => fieldDescription.includeInQuery && fieldDescription.groupByField)\n                .map((fieldDescription: IFieldDescription) => fieldDescription.name.substr(1))\n                .value();\n\n              resolve(fieldNames);\n            })\n            .catch(() => {\n              reject();\n            });\n        }\n      });\n    }\n    return this.fields;\n  }\n\n  private fieldNames(current: string): Promise<IOmniboxSuggestion[]> {\n    const withAt = current.length > 0 && current[0] == '@';\n    const fieldName = withAt ? current.substr(1) : current;\n    const fieldNameLC = fieldName.toLowerCase();\n\n    return this.getFields().then((fields: string[] | IOmniboxSuggestion[]): any[] => {\n      let matchFields = _.chain(fields)\n        .map((fieldName: any) => {\n          const fieldNameBeginsWithAt = fieldName.length > 0 && fieldName[0] == '@';\n          return {\n            index: fieldName.toLowerCase().indexOf(fieldNameLC),\n            field: fieldNameBeginsWithAt ? fieldName : '@' + fieldName\n          };\n        })\n        .filter(field => {\n          return field.index != -1 && field.field.length > current.length;\n        })\n        .sortBy('index')\n        .map(field => field.field)\n        .value();\n      matchFields = _.first(matchFields, 5);\n      return matchFields;\n    });\n  }\n\n  private fieldValues(field: string, current: string): Promise<any[]> {\n    return this.omnibox.queryController\n      .getEndpoint()\n      .listFieldValues({\n        pattern: '.*' + current + '.*',\n        patternType: 'RegularExpression',\n        sortCriteria: 'occurrences',\n        field: '@' + field,\n        maximumNumberOfValues: 5\n      })\n      .then(values => {\n        return _.chain(values)\n          .map(value => {\n            return {\n              index: value.value.toLowerCase().indexOf(current),\n              value: value.value\n            };\n          })\n          .filter(value => {\n            return value.value.length > current.length;\n          })\n          .sortBy('index')\n          .map(value => {\n            return value.value.replace(/ /g, '\\u00A0');\n          })\n          .value();\n      });\n  }\n\n  private simpleFieldNames(current: string): Promise<IOmniboxSuggestion[]> {\n    const fieldName = current;\n    const fieldNameLC = fieldName.toLowerCase();\n\n    return this.getFields().then((fields: any[]): IOmniboxSuggestion[] => {\n      let matchFields: any = _.chain(fields)\n        .map((field: string) => {\n          return {\n            index: field.toLowerCase().indexOf(fieldNameLC),\n            field: field + ':'\n          };\n        })\n        .filter(field => {\n          return field.index != -1 && field.field.length > current.length;\n        })\n        .sortBy('index')\n        .map(field => field.field)\n        .value();\n      matchFields = _.first(matchFields, 5);\n      return matchFields;\n    });\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Omnibox/FieldAddon.ts","///<reference path=\"Omnibox.ts\"/>\nimport { Omnibox, IOmniboxSuggestion } from './Omnibox';\nimport { IOmniboxDataRow } from './OmniboxInterface';\nimport {\n  OmniboxEvents,\n  IPopulateOmniboxEventArgs,\n  IPopulateOmniboxEventRow,\n  IPopulateOmniboxSuggestionsEventArgs\n} from '../../events/OmniboxEvents';\nimport { $$ } from '../../utils/Dom';\nimport { Utils } from '../../utils/Utils';\nimport * as _ from 'underscore';\n\nexport class OldOmniboxAddon {\n  constructor(public omnibox: Omnibox) {\n    this.omnibox.bind.on(this.omnibox.element, OmniboxEvents.populateOmniboxSuggestions, (args: IPopulateOmniboxSuggestionsEventArgs) => {\n      _.each(this.getSuggestion(), suggestion => {\n        args.suggestions.push(suggestion);\n      });\n    });\n  }\n\n  public getSuggestion(): Promise<IOmniboxSuggestion[]>[] {\n    const text = this.omnibox.magicBox.getText();\n\n    if (text.length == 0) {\n      return null;\n    }\n\n    const eventArgs = this.buildPopulateOmniboxEventArgs();\n    $$(this.omnibox.root).trigger(OmniboxEvents.populateOmnibox, eventArgs);\n\n    return this.rowsToSuggestions(eventArgs.rows);\n  }\n\n  private getCurrentQueryExpression() {\n    const cursorPos = this.omnibox.getCursor();\n    const value = this.omnibox.getText();\n    const length = value.length;\n    let start = cursorPos;\n    let end = cursorPos;\n    if (value[start] == ' ') {\n      start--;\n    }\n    while (start > 0 && value[start] != ' ') {\n      start--;\n    }\n    while (end < length && value[end] != ' ') {\n      end++;\n    }\n    return value.substring(start, end);\n  }\n\n  private getRegexToSearch(strValue?: string) {\n    if (strValue == null) {\n      strValue = this.omnibox.getText();\n    }\n    return new RegExp(Utils.escapeRegexCharacter(strValue), 'i');\n  }\n\n  private getQueryExpressionBreakDown() {\n    const ret = [];\n    const queryWords = this.omnibox.getText().split(' ');\n    _.each(queryWords, word => {\n      ret.push({\n        word: word,\n        regex: this.getRegexToSearch(word)\n      });\n    });\n    return ret;\n  }\n\n  private replace(searchValue: string, newValue: string) {\n    this.omnibox.setText(this.omnibox.getText().replace(searchValue, newValue));\n  }\n\n  private clearCurrentExpression() {\n    this.replace(this.getCurrentQueryExpression(), '');\n  }\n\n  private insertAt(at: number, toInsert: string) {\n    const oldValue = this.omnibox.getText();\n    const newValue = [oldValue.slice(0, at), toInsert, oldValue.slice(at)].join('');\n    this.omnibox.setText(newValue);\n  }\n\n  private replaceCurrentExpression(newValue: string) {\n    this.replace(this.getCurrentQueryExpression(), newValue);\n  }\n\n  private buildPopulateOmniboxEventArgs() {\n    const currentQueryExpression = this.getCurrentQueryExpression();\n    const ret: IPopulateOmniboxEventArgs = {\n      rows: [],\n      completeQueryExpression: {\n        word: this.omnibox.getText(),\n        regex: this.getRegexToSearch()\n      },\n      currentQueryExpression: {\n        word: currentQueryExpression,\n        regex: this.getRegexToSearch(currentQueryExpression)\n      },\n      allQueryExpressions: this.getQueryExpressionBreakDown(),\n      cursorPosition: this.omnibox.getCursor(),\n      clear: () => {\n        this.omnibox.clear();\n      },\n      clearCurrentExpression: () => {\n        this.clearCurrentExpression();\n      },\n      replace: (searchValue: string, newValue: string) => {\n        this.replace(searchValue, newValue);\n      },\n      replaceCurrentExpression: (newValue: string) => {\n        this.replaceCurrentExpression(newValue);\n      },\n      insertAt: (at: number, toInsert: string) => {\n        this.insertAt(at, toInsert);\n      },\n      closeOmnibox: () => {\n        this.omnibox.magicBox.blur();\n      }\n    };\n    return ret;\n  }\n\n  private rowsToSuggestions(rows: IOmniboxDataRow[]): Promise<IOmniboxSuggestion[]>[] {\n    return _.map(rows, (row: IPopulateOmniboxEventRow) => {\n      if (!Utils.isNullOrUndefined(row.element)) {\n        return new Promise<IOmniboxSuggestion[]>(resolve => {\n          resolve([\n            {\n              dom: row.element,\n              index: row.zIndex\n            }\n          ]);\n        });\n      } else if (!Utils.isNullOrUndefined(row.deferred)) {\n        return new Promise<IOmniboxSuggestion[]>(resolve => {\n          row.deferred.then(row => {\n            if (row.element != null) {\n              resolve([\n                {\n                  dom: row.element,\n                  index: row.zIndex\n                }\n              ]);\n            } else {\n              resolve(null);\n            }\n          });\n        });\n      }\n      return null;\n    });\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Omnibox/OldOmniboxAddon.ts","///<reference path='Omnibox.ts'/>\nimport { OmniboxEvents, IPopulateOmniboxSuggestionsEventArgs } from '../../events/OmniboxEvents';\nimport { Omnibox, IOmniboxSuggestion } from './Omnibox';\nimport { IExtension } from '../../rest/Extension';\nimport * as _ from 'underscore';\nimport { MagicBoxInstance } from '../../magicbox/MagicBox';\nimport { MagicBoxUtils } from '../../magicbox/MagicBoxUtils';\nimport { Result } from '../../magicbox/Result/Result';\n\ninterface IQueryExtensionAddonHash {\n  type: string;\n  before: string;\n  after: string;\n  current: string;\n  name?: string;\n  used?: string[];\n}\n\nexport class QueryExtensionAddon {\n  static INDEX = 62;\n\n  cache: { [hash: string]: Promise<string[]> } = {};\n\n  constructor(public omnibox: Omnibox) {\n    this.omnibox.bind.on(this.omnibox.element, OmniboxEvents.populateOmniboxSuggestions, (args: IPopulateOmniboxSuggestionsEventArgs) => {\n      args.suggestions.push(this.getSuggestion());\n    });\n  }\n\n  public getSuggestion(): Promise<IOmniboxSuggestion[]> {\n    var hash = this.getHash(this.omnibox.magicBox);\n    if (hash == null) {\n      return null;\n    }\n    var hashString = this.hashToString(hash);\n    if (this.cache[hashString] != null) {\n      return this.hashValueToSuggestion(hash, this.cache[hashString]);\n    }\n    var values = hash.type == 'QueryExtensionName' ? this.names(hash.current) : this.attributeNames(hash.name, hash.current, hash.used);\n    this.cache[hashString] = values;\n    values.catch(() => {\n      delete this.cache[hashString];\n    });\n    return this.hashValueToSuggestion(hash, values);\n  }\n\n  private getHash(magicBox: MagicBoxInstance): IQueryExtensionAddonHash {\n    var queryExtension: Result = _.last(magicBox.resultAtCursor('QueryExtension'));\n    if (queryExtension != null) {\n      var queryExtensionArgumentResults = queryExtension.findAll('QueryExtensionArgument');\n      var current = _.last(magicBox.resultAtCursor('QueryExtensionName'));\n      if (current != null) {\n        return {\n          type: 'QueryExtensionName',\n          current: current.toString(),\n          before: current.before(),\n          after: current.after()\n        };\n      }\n\n      current = _.last(magicBox.resultAtCursor('QueryExtensionArgumentName'));\n      if (current != null) {\n        var used: string[] = _.chain(queryExtensionArgumentResults)\n          .map(result => {\n            var name = result.find('QueryExtensionArgumentName');\n            return name && name.toString();\n          })\n          .compact()\n          .value();\n\n        var name = queryExtension.find('QueryExtensionName').toString();\n\n        return {\n          type: 'QueryExtensionArgumentName',\n          current: current.toString(),\n          before: current.before(),\n          after: current.after(),\n          name: name,\n          used: used\n        };\n      }\n    }\n    return null;\n  }\n\n  private hashToString(hash: IQueryExtensionAddonHash) {\n    if (hash == null) {\n      return null;\n    }\n    return [hash.type, hash.current, hash.name || '', hash.used ? hash.used.join() : ''].join();\n  }\n\n  private hashValueToSuggestion(hash: IQueryExtensionAddonHash, promise: Promise<string[]>): Promise<IOmniboxSuggestion[]> {\n    return promise.then(values => {\n      var suggestions: IOmniboxSuggestion[] = _.map(values, (value, i) => {\n        return {\n          html: MagicBoxUtils.highlightText(value, hash.current, true),\n          text: hash.before + value + hash.after,\n          index: QueryExtensionAddon.INDEX - i / values.length\n        };\n      });\n      return suggestions;\n    });\n  }\n\n  private extensions: Promise<any>;\n\n  private getExtensions() {\n    if (this.extensions == null) {\n      this.extensions = this.omnibox.queryController.getEndpoint().extensions();\n    }\n    return this.extensions;\n  }\n\n  private names(current: string): Promise<string[]> {\n    var extensionName = current.toLowerCase();\n    return this.getExtensions().then((extensions: IExtension[]) => {\n      var matchExtensions = _.chain(extensions)\n        .map((extension: IExtension) => {\n          return {\n            index: extension.name.toLowerCase().indexOf(extensionName),\n            extension: extension.name\n          };\n        })\n        .filter(extension => {\n          return extension.index != -1 && extension.extension.length > extensionName.length;\n        })\n        .sortBy('index')\n        .pluck('extension')\n        .value();\n      matchExtensions = _.first(matchExtensions, 5);\n      return matchExtensions;\n    });\n  }\n\n  private attributeNames(name: string, current: string, used: string[]): Promise<string[]> {\n    return this.getExtensions().then((extensions: IExtension[]) => {\n      var extension = _.find(extensions, (extension: IExtension) => extension.name == name);\n      if (extension == null) {\n        return [];\n      } else {\n        return _.filter(_.difference(extension.argumentNames, used), (argumentName: string) => argumentName.indexOf(current) == 0);\n      }\n    });\n  }\n\n  public hash() {\n    return;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Omnibox/QueryExtensionAddon.ts","///<reference path=\"Omnibox.ts\"/>\nimport { Omnibox, IOmniboxSuggestion } from './Omnibox';\nimport { $$, Dom } from '../../utils/Dom';\nimport { IQuerySuggestCompletion, IQuerySuggestRequest, IQuerySuggestResponse } from '../../rest/QuerySuggest';\nimport { ComponentOptionsModel } from '../../models/ComponentOptionsModel';\nimport {\n  OmniboxEvents,\n  IPopulateOmniboxSuggestionsEventArgs,\n  IBuildingQuerySuggestArgs,\n  IQuerySuggestSuccessArgs\n} from '../../events/OmniboxEvents';\nimport { StringUtils } from '../../utils/StringUtils';\nimport { map, every, last, indexOf, find } from 'underscore';\nimport { QUERY_STATE_ATTRIBUTES } from '../../models/QueryStateModel';\nimport { Utils } from '../../utils/Utils';\nimport { buildHistoryStore } from '../../utils/HistoryStore';\nimport { AnalyticsInformation } from '../Analytics/AnalyticsInformation';\n\nexport interface IQuerySuggestAddon {\n  getSuggestion(): Promise<IOmniboxSuggestion[]>;\n}\n\nexport class QuerySuggestAddon implements IQuerySuggestAddon {\n  static INDEX = 60;\n\n  private static suggestiontHtml(suggestion: IQuerySuggestCompletion) {\n    return suggestion.highlighted.replace(/\\[(.*?)\\]|\\{(.*?)\\}|\\((.*?)\\)/g, (part, notMatched, matched, corrected) => {\n      var className = '';\n      if (matched) {\n        className = 'coveo-omnibox-hightlight';\n      }\n      if (corrected) {\n        className = 'coveo-omnibox-hightlight2';\n      }\n\n      let ret: Dom;\n      if (className) {\n        ret = $$('span', {\n          className: className\n        });\n      } else {\n        ret = $$('span');\n      }\n      ret.text(notMatched || matched || corrected);\n      return ret.el.outerHTML;\n    });\n  }\n\n  private static isPartialMatch(suggestion: IQuerySuggestCompletion) {\n    // groups : 1=notMatched, 2=matched, 3=corrected\n    var parts = StringUtils.match(suggestion.highlighted, /\\[(.*?)\\]|\\{(.*?)\\}|\\((.*?)\\)/g);\n    var firstFail = find(parts, (part: string[]) => part[1] != null);\n    // if no fail found, this is a partial or a full match\n    if (firstFail == null) {\n      return true;\n    }\n    // if all right parts are notMatched, the right parts is autocomplete\n    return every(last(parts, indexOf(parts, firstFail) - parts.length), (part: string[]) => part[1] != null);\n  }\n\n  constructor(public omnibox: Omnibox) {\n    $$(this.omnibox.element).on(OmniboxEvents.populateOmniboxSuggestions, (e: Event, args: IPopulateOmniboxSuggestionsEventArgs) => {\n      args.suggestions.push(this.getSuggestion());\n    });\n  }\n\n  public getSuggestion(): Promise<IOmniboxSuggestion[]> {\n    const text = this.omnibox.magicBox.getText();\n\n    if (text.length >= this.omnibox.options.querySuggestCharacterThreshold) {\n      return this.getQuerySuggest(text);\n    }\n    return Promise.resolve([]);\n  }\n\n  private async getQuerySuggest(text: string): Promise<IOmniboxSuggestion[]> {\n    const payload: IQuerySuggestRequest = {\n      q: text,\n      locale: this.locale,\n      searchHub: this.searchHub,\n      pipeline: this.pipeline,\n      enableWordCompletion: this.enableWordCompletion,\n      context: this.context,\n      count: this.count,\n      tab: this.tab,\n      referrer: document.referrer,\n      actionsHistory: this.actionsHistory,\n      timezone: this.timezone,\n      visitorId: this.visitorId,\n      isGuestUser: this.isGuestUser\n    };\n\n    $$(this.omnibox.getBindings().searchInterface.element).trigger(OmniboxEvents.buildingQuerySuggest, <IBuildingQuerySuggestArgs>{\n      payload\n    });\n\n    let results: IQuerySuggestResponse;\n    try {\n      results = await this.omnibox.queryController.getEndpoint().getQuerySuggest(payload);\n    } catch {\n      return [];\n    }\n    const completions = results.completions;\n\n    $$(this.omnibox.getBindings().searchInterface.element).trigger(OmniboxEvents.querySuggestSuccess, <IQuerySuggestSuccessArgs>{\n      completions\n    });\n\n    return map(completions, (completion, i) => {\n      return {\n        html: QuerySuggestAddon.suggestiontHtml(completion),\n        text: completion.expression,\n        index: QuerySuggestAddon.INDEX - i / completions.length,\n        partial: QuerySuggestAddon.isPartialMatch(completion),\n        executableConfidence: completion.executableConfidence\n      };\n    });\n  }\n\n  private get tab() {\n    const tab = this.omnibox.getBindings().queryStateModel.get(QUERY_STATE_ATTRIBUTES.T) as string;\n\n    if (Utils.isNonEmptyString(tab)) {\n      return tab;\n    }\n\n    return undefined;\n  }\n\n  private get locale() {\n    return String['locale'];\n  }\n\n  private get searchHub() {\n    return this.omnibox.getBindings().componentOptionsModel.get(ComponentOptionsModel.attributesEnum.searchHub);\n  }\n\n  private get pipeline() {\n    return this.omnibox.getBindings().searchInterface.options.pipeline;\n  }\n\n  private get enableWordCompletion() {\n    return this.omnibox.options.enableSearchAsYouType;\n  }\n\n  private get context() {\n    return this.omnibox.getBindings().searchInterface.getQueryContext();\n  }\n\n  private get count() {\n    return this.omnibox.options.numberOfSuggestions;\n  }\n\n  private get actionsHistory() {\n    const historyStore = buildHistoryStore();\n    const historyFromStore = historyStore.getHistory();\n    if (historyFromStore == null) {\n      return [];\n    }\n    return historyFromStore;\n  }\n\n  private get timezone() {\n    return this.omnibox.getBindings().searchInterface.options.timezone;\n  }\n\n  private get visitorId() {\n    return new AnalyticsInformation().clientId;\n  }\n\n  private get isGuestUser() {\n    return this.omnibox.getBindings().queryController.getEndpoint().options.isGuestUser;\n  }\n}\n\nexport class VoidQuerySuggestAddon implements IQuerySuggestAddon {\n  getSuggestion(): Promise<IOmniboxSuggestion[]> {\n    return Promise.resolve([]);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Omnibox/QuerySuggestAddon.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/vapor/_MultiSelect.scss\n// module id = 578\n// module chunks = 26 57 88","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_Sort.scss\n// module id = 579\n// module chunks = 24 41 88","import { ResponsiveFacetColumn } from './ResponsiveFacetColumn';\nimport { IResponsiveComponentOptions } from './ResponsiveComponentsManager';\nimport { DynamicFacet } from '../DynamicFacet/DynamicFacet';\n\nexport class ResponsiveDynamicFacets extends ResponsiveFacetColumn {\n  public static init(root: HTMLElement, component, options: IResponsiveComponentOptions) {\n    ResponsiveFacetColumn.init(ResponsiveDynamicFacets, root, component, options, DynamicFacet.ID);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResponsiveComponents/ResponsiveDynamicFacets.ts","import 'styling/DynamicFacet/_DynamicFacetBreadcrumbs';\nimport { $$ } from '../../utils/Dom';\nimport { l } from '../../strings/Strings';\nimport { SVGIcons } from '../../utils/SVGIcons';\nimport { analyticsActionCauseList } from '../Analytics/AnalyticsActionListMeta';\nimport { IDynamicFacet, IDynamicFacetValue } from './IDynamicFacet';\nimport { escape } from 'underscore';\nimport { getHeadingTag } from '../../utils/AccessibilityUtils';\n\nexport interface IDynamicFacetBreadcrumbsOptions {\n  headingLevel?: number;\n}\n\nexport class DynamicFacetBreadcrumbs {\n  public element: HTMLElement;\n\n  constructor(private facet: IDynamicFacet, private readonly options?: IDynamicFacetBreadcrumbsOptions) {\n    this.create();\n  }\n\n  private create() {\n    this.element = $$('ul', { className: 'coveo-dynamic-facet-breadcrumb coveo-breadcrumb-item', ariaLabel: this.facet.options.title }).el;\n    this.createAndAppendTitle();\n\n    const activeFacetValues = this.facet.values.activeValues;\n    const breadcrumbFacetValues = activeFacetValues.slice(0, this.facet.options.numberOfValuesInBreadcrumb);\n    const collapsedFacetValues = activeFacetValues.slice(this.facet.options.numberOfValuesInBreadcrumb);\n\n    this.createAndAppendBreadcrumbValues(breadcrumbFacetValues);\n\n    if (collapsedFacetValues.length) {\n      this.createAndAppendCollapsedBreadcrumbs(collapsedFacetValues);\n    }\n  }\n\n  private createAndAppendTitle() {\n    const titleElement = $$(\n      getHeadingTag(this.options && this.options.headingLevel, 'h3'),\n      { className: 'coveo-dynamic-facet-breadcrumb-title', ariaHidden: 'true' },\n      `${this.facet.options.title}:`\n    ).el;\n    this.element.appendChild(titleElement);\n  }\n\n  private createAndAppendBreadcrumbValues(facetValues: IDynamicFacetValue[]) {\n    facetValues.forEach(facetValue => this.createAndAppendBreadcrumbValue(facetValue));\n  }\n\n  private createAndAppendBreadcrumbValue(facetValue: IDynamicFacetValue) {\n    const listContainer = $$('li', { className: 'coveo-dynamic-facet-breadcrumb-value-list-item' }).el;\n    const valueElement = $$(\n      'button',\n      {\n        type: 'button',\n        className: 'coveo-dynamic-facet-breadcrumb-value',\n        ariaLabel: l('RemoveFilterOn', facetValue.displayValue)\n      },\n      escape(facetValue.displayValue)\n    ).el;\n    const clearElement = $$('span', { className: 'coveo-dynamic-facet-breadcrumb-value-clear' }, SVGIcons.icons.mainClear).el;\n    valueElement.appendChild(clearElement);\n\n    $$(valueElement).on('click', () => this.valueSelectAction(facetValue));\n    listContainer.appendChild(valueElement);\n    this.element.appendChild(listContainer);\n  }\n\n  private valueSelectAction(facetValue: IDynamicFacetValue) {\n    this.facet.deselectValue(facetValue.value);\n    this.facet.enablePreventAutoSelectionFlag();\n    this.facet.triggerNewQuery(() => this.logActionToAnalytics());\n  }\n\n  private logActionToAnalytics() {\n    this.facet.logAnalyticsEvent(analyticsActionCauseList.breadcrumbFacet, this.facet.basicAnalyticsFacetMeta);\n  }\n\n  private createAndAppendCollapsedBreadcrumbs(facetValues: IDynamicFacetValue[]) {\n    const label = l('NMore', `${facetValues.length}`);\n    const title = facetValues.map(({ value }) => value).join('\\n');\n    const collapsedElement = $$(\n      'button',\n      {\n        className: 'coveo-dynamic-facet-breadcrumb-collapse',\n        type: 'button',\n        title\n      },\n      label\n    ).el;\n\n    $$(collapsedElement).on('click', () => {\n      $$(collapsedElement).remove();\n      this.createAndAppendBreadcrumbValues(facetValues);\n    });\n\n    this.element.appendChild(collapsedElement);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/DynamicFacet/DynamicFacetBreadcrumbs.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/DynamicFacet/_DynamicFacetValues.scss\n// module id = 582\n// module chunks = 2 8 88","import { Combobox } from '../Combobox/Combobox';\nimport { l } from '../../strings/Strings';\nimport { FacetSearchController } from '../../controllers/FacetSearchController';\nimport { IFacetSearchResponse } from '../../rest/Facet/FacetSearchResponse';\nimport { DynamicFacetValue } from '../DynamicFacet/DynamicFacetValues/DynamicFacetValue';\nimport { FacetValueState } from '../../rest/Facet/FacetValueState';\nimport { DynamicFacetSearchValueRenderer } from './DynamicFacetSearchValueRenderer';\nimport { IComboboxValue } from '../Combobox/ICombobox';\nimport 'styling/DynamicFacetSearch/_DynamicFacetSearch';\nimport { IDynamicFacet } from '../DynamicFacet/IDynamicFacet';\nimport { FacetUtils } from '../Facet/FacetUtils';\n\nexport class DynamicFacetSearch {\n  public element: HTMLElement;\n  private facetSearchController: FacetSearchController;\n  private combobox: Combobox;\n\n  constructor(private facet: IDynamicFacet) {\n    this.facetSearchController = new FacetSearchController(this.facet);\n\n    this.combobox = new Combobox({\n      label: l('SearchFacetResults', this.facet.options.title),\n      ariaLive: this.facet.searchInterface.ariaLive,\n      requestValues: terms => this.facetSearchController.search(terms),\n      createValuesFromResponse: (response: IFacetSearchResponse) => this.createValuesFromResponse(response),\n      onSelectValue: this.onSelectValue,\n      placeholderText: l('Search'),\n      wrapperClassName: 'coveo-dynamic-facet-search',\n      clearOnBlur: true,\n      scrollable: {\n        requestMoreValues: () => this.facetSearchController.fetchMoreResults(),\n        areMoreValuesAvailable: () => this.facetSearchController.moreValuesAvailable,\n        maxDropdownHeight: 250\n      },\n      highlightValueClassName: 'coveo-checkbox-span-label'\n    });\n\n    this.element = this.combobox.element;\n  }\n\n  private getDisplayValue(value: string) {\n    return FacetUtils.getDisplayValueFromValueCaption(value, this.facet.options.field as string, this.facet.options.valueCaption);\n  }\n\n  private createValuesFromResponse(response: IFacetSearchResponse): IComboboxValue[] {\n    return response.values.map((value, index) => {\n      const facetValue = new DynamicFacetValue(\n        {\n          value: value.rawValue,\n          // TODO: remove when https://coveord.atlassian.net/browse/SEARCHAPI-4958 is fixed\n          displayValue: this.getDisplayValue(value.displayValue),\n          numberOfResults: value.count,\n          state: FacetValueState.idle,\n          position: index + 1\n        },\n        this.facet,\n        DynamicFacetSearchValueRenderer\n      );\n      return {\n        value: facetValue,\n        element: facetValue.renderedElement\n      };\n    });\n  }\n\n  private onSelectValue({ value }: IComboboxValue) {\n    (<DynamicFacetSearchValueRenderer>value.renderer).selectAction();\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/DynamicFacetSearch/DynamicFacetSearch.ts","import { IFacetSearchResponse } from '../rest/Facet/FacetSearchResponse';\nimport { FileTypes } from '../ui/Misc/FileTypes';\nimport { QueryUtils } from '../utils/QueryUtils';\nimport { DateUtils } from '../utils/DateUtils';\nimport { IDynamicFacet } from '../ui/DynamicFacet/IDynamicFacet';\nimport { IFacetSearchRequest } from '../rest/Facet/FacetSearchRequest';\nimport { determineFilterFacetCount } from './DynamicFacetRequestBuilder';\n\nexport class FacetSearchController {\n  private terms = '';\n  private pageCount = 1;\n  private numberOfValuesMultiplier = 3;\n\n  public moreValuesAvailable = true;\n\n  constructor(private facet: IDynamicFacet) {}\n\n  private getMonthsValueCaptions() {\n    const monthsValueCaptions: Record<string, string> = {};\n    for (let month = 1; month <= 12; month++) {\n      const key = `0${month}`.substr(-2);\n      monthsValueCaptions[key] = DateUtils.monthToString(month - 1);\n    }\n\n    return monthsValueCaptions;\n  }\n\n  private addTypesCaptionsIfNecessary(): Record<string, string> {\n    const field = this.facet.options.field.toLowerCase();\n    const isFileType = QueryUtils.isStratusAgnosticField(field, '@filetype');\n    const isObjectType = QueryUtils.isStratusAgnosticField(field, '@objecttype');\n    const isMonth = QueryUtils.isStratusAgnosticField(field, '@month');\n\n    if (isFileType || isObjectType) {\n      return FileTypes.getFileTypeCaptions();\n    }\n\n    if (isMonth) {\n      return this.getMonthsValueCaptions();\n    }\n\n    return {};\n  }\n\n  private get captions(): Record<string, string> {\n    return {\n      ...this.addTypesCaptionsIfNecessary(),\n      ...this.facet.options.valueCaption\n    };\n  }\n\n  private get numberOfValues() {\n    return this.facet.options.numberOfValues * this.numberOfValuesMultiplier * this.pageCount;\n  }\n\n  private get request(): IFacetSearchRequest {\n    const optionalLeadingWildcard = this.facet.options.useLeadingWildcardInFacetSearch ? '*' : '';\n\n    return {\n      field: this.facet.fieldName,\n      filterFacetCount: determineFilterFacetCount(this.facet.options),\n      numberOfValues: this.numberOfValues,\n      ignoreValues: this.facet.values.activeValues.map(value => value.value),\n      captions: this.captions,\n      searchContext: this.facet.queryController.getLastQuery(),\n      query: `${optionalLeadingWildcard}${this.terms}*`\n    };\n  }\n\n  private async triggerRequest() {\n    const response = await this.facet.queryController.getEndpoint().facetSearch(this.request);\n    this.moreValuesAvailable = response.moreValuesAvailable;\n    return response;\n  }\n\n  public search(terms: string): Promise<IFacetSearchResponse> {\n    this.terms = terms;\n    this.pageCount = 1;\n    return this.triggerRequest();\n  }\n\n  public fetchMoreResults(): Promise<IFacetSearchResponse> {\n    this.pageCount++;\n    return this.triggerRequest();\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/controllers/FacetSearchController.ts","import { $$, Dom } from '../../utils/Dom';\nimport { DynamicFacetValue } from '../DynamicFacet/DynamicFacetValues/DynamicFacetValue';\nimport { DynamicFacetValueCheckbox } from '../DynamicFacet/DynamicFacetValues/DynamicFacetValueCheckbox';\nimport { IDynamicFacet, IValueRenderer } from '../DynamicFacet/IDynamicFacet';\n\nexport class DynamicFacetSearchValueRenderer implements IValueRenderer {\n  private dom: Dom;\n  private valueCheckbox: DynamicFacetValueCheckbox;\n\n  constructor(private facetValue: DynamicFacetValue, private facet: IDynamicFacet) {}\n\n  public render() {\n    this.dom = $$('div', {\n      className: 'coveo-dynamic-facet-value',\n      dataValue: this.facetValue.value\n    });\n\n    this.renderCheckbox();\n    return this.dom.el;\n  }\n\n  private renderCheckbox() {\n    this.valueCheckbox = new DynamicFacetValueCheckbox(this.facetValue);\n    $$(this.valueCheckbox.element).find('button').setAttribute('tabindex', '-1');\n\n    this.dom.append(this.valueCheckbox.element);\n  }\n\n  public selectAction() {\n    this.facet.enableFreezeFacetOrderFlag();\n    this.facet.toggleSelectValue(this.facetValue.value);\n    this.facetValue.select();\n    this.facet.scrollToTop();\n    this.facet.triggerNewQuery(() => this.facetValue.logSelectActionToAnalytics());\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/DynamicFacetSearch/DynamicFacetSearchValueRenderer.ts","import { FacetUtils } from '../../Facet/FacetUtils';\nimport { IDynamicFacet, IValueCreator } from '../IDynamicFacet';\nimport { DynamicFacetValue } from './DynamicFacetValue';\nimport { IFacetResponseValue } from '../../../rest/Facet/FacetResponse';\nimport { FacetValueState } from '../../../rest/Facet/FacetValueState';\nimport { DynamicFacetValueRenderer } from './DynamicFacetValueRenderer';\n\nexport class DynamicFacetValueCreator implements IValueCreator {\n  constructor(private facet: IDynamicFacet) {}\n\n  private getDisplayValue(value: string) {\n    return FacetUtils.getDisplayValueFromValueCaption(value, this.facet.options.field as string, this.facet.options.valueCaption);\n  }\n\n  public getDefaultValues() {\n    return [];\n  }\n\n  public createFromResponse(facetValue: IFacetResponseValue, index: number) {\n    return new DynamicFacetValue(\n      {\n        value: facetValue.value,\n        displayValue: this.getDisplayValue(facetValue.value),\n        numberOfResults: facetValue.numberOfResults,\n        state: facetValue.state,\n        position: index + 1\n      },\n      this.facet,\n      DynamicFacetValueRenderer\n    );\n  }\n\n  public createFromValue(value: string) {\n    const position = this.facet.values.allFacetValues.length + 1;\n    const state = FacetValueState.idle;\n    const displayValue = this.getDisplayValue(value);\n    return new DynamicFacetValue({ value, displayValue, state, numberOfResults: 0, position }, this.facet, DynamicFacetValueRenderer);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/DynamicFacet/DynamicFacetValues/DynamicFacetValueCreator.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_AttachShadowPolyfill.scss\n// module id = 587\n// module chunks = 18 21 88","/*! @license DOMPurify 2.4.0 | (c) Cure53 and other contributors | Released under the Apache license 2.0 and Mozilla Public License 2.0 | github.com/cure53/DOMPurify/blob/2.4.0/LICENSE */\n\n(function (global, factory) {\n  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n  typeof define === 'function' && define.amd ? define(factory) :\n  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.DOMPurify = factory());\n})(this, (function () { 'use strict';\n\n  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  }\n\n  function _setPrototypeOf(o, p) {\n    _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n      o.__proto__ = p;\n      return o;\n    };\n\n    return _setPrototypeOf(o, p);\n  }\n\n  function _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\n    try {\n      Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n      return true;\n    } catch (e) {\n      return false;\n    }\n  }\n\n  function _construct(Parent, args, Class) {\n    if (_isNativeReflectConstruct()) {\n      _construct = Reflect.construct;\n    } else {\n      _construct = function _construct(Parent, args, Class) {\n        var a = [null];\n        a.push.apply(a, args);\n        var Constructor = Function.bind.apply(Parent, a);\n        var instance = new Constructor();\n        if (Class) _setPrototypeOf(instance, Class.prototype);\n        return instance;\n      };\n    }\n\n    return _construct.apply(null, arguments);\n  }\n\n  function _toConsumableArray(arr) {\n    return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n  }\n\n  function _arrayWithoutHoles(arr) {\n    if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n  }\n\n  function _iterableToArray(iter) {\n    if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n  }\n\n  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  }\n\n  function _arrayLikeToArray(arr, len) {\n    if (len == null || len > arr.length) len = arr.length;\n\n    for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n    return arr2;\n  }\n\n  function _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  }\n\n  var hasOwnProperty = Object.hasOwnProperty,\n      setPrototypeOf = Object.setPrototypeOf,\n      isFrozen = Object.isFrozen,\n      getPrototypeOf = Object.getPrototypeOf,\n      getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n  var freeze = Object.freeze,\n      seal = Object.seal,\n      create = Object.create; // eslint-disable-line import/no-mutable-exports\n\n  var _ref = typeof Reflect !== 'undefined' && Reflect,\n      apply = _ref.apply,\n      construct = _ref.construct;\n\n  if (!apply) {\n    apply = function apply(fun, thisValue, args) {\n      return fun.apply(thisValue, args);\n    };\n  }\n\n  if (!freeze) {\n    freeze = function freeze(x) {\n      return x;\n    };\n  }\n\n  if (!seal) {\n    seal = function seal(x) {\n      return x;\n    };\n  }\n\n  if (!construct) {\n    construct = function construct(Func, args) {\n      return _construct(Func, _toConsumableArray(args));\n    };\n  }\n\n  var arrayForEach = unapply(Array.prototype.forEach);\n  var arrayPop = unapply(Array.prototype.pop);\n  var arrayPush = unapply(Array.prototype.push);\n  var stringToLowerCase = unapply(String.prototype.toLowerCase);\n  var stringMatch = unapply(String.prototype.match);\n  var stringReplace = unapply(String.prototype.replace);\n  var stringIndexOf = unapply(String.prototype.indexOf);\n  var stringTrim = unapply(String.prototype.trim);\n  var regExpTest = unapply(RegExp.prototype.test);\n  var typeErrorCreate = unconstruct(TypeError);\n  function unapply(func) {\n    return function (thisArg) {\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\n      return apply(func, thisArg, args);\n    };\n  }\n  function unconstruct(func) {\n    return function () {\n      for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n        args[_key2] = arguments[_key2];\n      }\n\n      return construct(func, args);\n    };\n  }\n  /* Add properties to a lookup table */\n\n  function addToSet(set, array, transformCaseFunc) {\n    transformCaseFunc = transformCaseFunc ? transformCaseFunc : stringToLowerCase;\n\n    if (setPrototypeOf) {\n      // Make 'in' and truthy checks like Boolean(set.constructor)\n      // independent of any properties defined on Object.prototype.\n      // Prevent prototype setters from intercepting set as a this value.\n      setPrototypeOf(set, null);\n    }\n\n    var l = array.length;\n\n    while (l--) {\n      var element = array[l];\n\n      if (typeof element === 'string') {\n        var lcElement = transformCaseFunc(element);\n\n        if (lcElement !== element) {\n          // Config presets (e.g. tags.js, attrs.js) are immutable.\n          if (!isFrozen(array)) {\n            array[l] = lcElement;\n          }\n\n          element = lcElement;\n        }\n      }\n\n      set[element] = true;\n    }\n\n    return set;\n  }\n  /* Shallow clone an object */\n\n  function clone(object) {\n    var newObject = create(null);\n    var property;\n\n    for (property in object) {\n      if (apply(hasOwnProperty, object, [property])) {\n        newObject[property] = object[property];\n      }\n    }\n\n    return newObject;\n  }\n  /* IE10 doesn't support __lookupGetter__ so lets'\n   * simulate it. It also automatically checks\n   * if the prop is function or getter and behaves\n   * accordingly. */\n\n  function lookupGetter(object, prop) {\n    while (object !== null) {\n      var desc = getOwnPropertyDescriptor(object, prop);\n\n      if (desc) {\n        if (desc.get) {\n          return unapply(desc.get);\n        }\n\n        if (typeof desc.value === 'function') {\n          return unapply(desc.value);\n        }\n      }\n\n      object = getPrototypeOf(object);\n    }\n\n    function fallbackValue(element) {\n      console.warn('fallback value for', element);\n      return null;\n    }\n\n    return fallbackValue;\n  }\n\n  var html$1 = freeze(['a', 'abbr', 'acronym', 'address', 'area', 'article', 'aside', 'audio', 'b', 'bdi', 'bdo', 'big', 'blink', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'center', 'cite', 'code', 'col', 'colgroup', 'content', 'data', 'datalist', 'dd', 'decorator', 'del', 'details', 'dfn', 'dialog', 'dir', 'div', 'dl', 'dt', 'element', 'em', 'fieldset', 'figcaption', 'figure', 'font', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'img', 'input', 'ins', 'kbd', 'label', 'legend', 'li', 'main', 'map', 'mark', 'marquee', 'menu', 'menuitem', 'meter', 'nav', 'nobr', 'ol', 'optgroup', 'option', 'output', 'p', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'section', 'select', 'shadow', 'small', 'source', 'spacer', 'span', 'strike', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'time', 'tr', 'track', 'tt', 'u', 'ul', 'var', 'video', 'wbr']); // SVG\n\n  var svg$1 = freeze(['svg', 'a', 'altglyph', 'altglyphdef', 'altglyphitem', 'animatecolor', 'animatemotion', 'animatetransform', 'circle', 'clippath', 'defs', 'desc', 'ellipse', 'filter', 'font', 'g', 'glyph', 'glyphref', 'hkern', 'image', 'line', 'lineargradient', 'marker', 'mask', 'metadata', 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialgradient', 'rect', 'stop', 'style', 'switch', 'symbol', 'text', 'textpath', 'title', 'tref', 'tspan', 'view', 'vkern']);\n  var svgFilters = freeze(['feBlend', 'feColorMatrix', 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence']); // List of SVG elements that are disallowed by default.\n  // We still need to know them so that we can do namespace\n  // checks properly in case one wants to add them to\n  // allow-list.\n\n  var svgDisallowed = freeze(['animate', 'color-profile', 'cursor', 'discard', 'fedropshadow', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignobject', 'hatch', 'hatchpath', 'mesh', 'meshgradient', 'meshpatch', 'meshrow', 'missing-glyph', 'script', 'set', 'solidcolor', 'unknown', 'use']);\n  var mathMl$1 = freeze(['math', 'menclose', 'merror', 'mfenced', 'mfrac', 'mglyph', 'mi', 'mlabeledtr', 'mmultiscripts', 'mn', 'mo', 'mover', 'mpadded', 'mphantom', 'mroot', 'mrow', 'ms', 'mspace', 'msqrt', 'mstyle', 'msub', 'msup', 'msubsup', 'mtable', 'mtd', 'mtext', 'mtr', 'munder', 'munderover']); // Similarly to SVG, we want to know all MathML elements,\n  // even those that we disallow by default.\n\n  var mathMlDisallowed = freeze(['maction', 'maligngroup', 'malignmark', 'mlongdiv', 'mscarries', 'mscarry', 'msgroup', 'mstack', 'msline', 'msrow', 'semantics', 'annotation', 'annotation-xml', 'mprescripts', 'none']);\n  var text = freeze(['#text']);\n\n  var html = freeze(['accept', 'action', 'align', 'alt', 'autocapitalize', 'autocomplete', 'autopictureinpicture', 'autoplay', 'background', 'bgcolor', 'border', 'capture', 'cellpadding', 'cellspacing', 'checked', 'cite', 'class', 'clear', 'color', 'cols', 'colspan', 'controls', 'controlslist', 'coords', 'crossorigin', 'datetime', 'decoding', 'default', 'dir', 'disabled', 'disablepictureinpicture', 'disableremoteplayback', 'download', 'draggable', 'enctype', 'enterkeyhint', 'face', 'for', 'headers', 'height', 'hidden', 'high', 'href', 'hreflang', 'id', 'inputmode', 'integrity', 'ismap', 'kind', 'label', 'lang', 'list', 'loading', 'loop', 'low', 'max', 'maxlength', 'media', 'method', 'min', 'minlength', 'multiple', 'muted', 'name', 'nonce', 'noshade', 'novalidate', 'nowrap', 'open', 'optimum', 'pattern', 'placeholder', 'playsinline', 'poster', 'preload', 'pubdate', 'radiogroup', 'readonly', 'rel', 'required', 'rev', 'reversed', 'role', 'rows', 'rowspan', 'spellcheck', 'scope', 'selected', 'shape', 'size', 'sizes', 'span', 'srclang', 'start', 'src', 'srcset', 'step', 'style', 'summary', 'tabindex', 'title', 'translate', 'type', 'usemap', 'valign', 'value', 'width', 'xmlns', 'slot']);\n  var svg = freeze(['accent-height', 'accumulate', 'additive', 'alignment-baseline', 'ascent', 'attributename', 'attributetype', 'azimuth', 'basefrequency', 'baseline-shift', 'begin', 'bias', 'by', 'class', 'clip', 'clippathunits', 'clip-path', 'clip-rule', 'color', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'cx', 'cy', 'd', 'dx', 'dy', 'diffuseconstant', 'direction', 'display', 'divisor', 'dur', 'edgemode', 'elevation', 'end', 'fill', 'fill-opacity', 'fill-rule', 'filter', 'filterunits', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'fx', 'fy', 'g1', 'g2', 'glyph-name', 'glyphref', 'gradientunits', 'gradienttransform', 'height', 'href', 'id', 'image-rendering', 'in', 'in2', 'k', 'k1', 'k2', 'k3', 'k4', 'kerning', 'keypoints', 'keysplines', 'keytimes', 'lang', 'lengthadjust', 'letter-spacing', 'kernelmatrix', 'kernelunitlength', 'lighting-color', 'local', 'marker-end', 'marker-mid', 'marker-start', 'markerheight', 'markerunits', 'markerwidth', 'maskcontentunits', 'maskunits', 'max', 'mask', 'media', 'method', 'mode', 'min', 'name', 'numoctaves', 'offset', 'operator', 'opacity', 'order', 'orient', 'orientation', 'origin', 'overflow', 'paint-order', 'path', 'pathlength', 'patterncontentunits', 'patterntransform', 'patternunits', 'points', 'preservealpha', 'preserveaspectratio', 'primitiveunits', 'r', 'rx', 'ry', 'radius', 'refx', 'refy', 'repeatcount', 'repeatdur', 'restart', 'result', 'rotate', 'scale', 'seed', 'shape-rendering', 'specularconstant', 'specularexponent', 'spreadmethod', 'startoffset', 'stddeviation', 'stitchtiles', 'stop-color', 'stop-opacity', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke', 'stroke-width', 'style', 'surfacescale', 'systemlanguage', 'tabindex', 'targetx', 'targety', 'transform', 'transform-origin', 'text-anchor', 'text-decoration', 'text-rendering', 'textlength', 'type', 'u1', 'u2', 'unicode', 'values', 'viewbox', 'visibility', 'version', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'width', 'word-spacing', 'wrap', 'writing-mode', 'xchannelselector', 'ychannelselector', 'x', 'x1', 'x2', 'xmlns', 'y', 'y1', 'y2', 'z', 'zoomandpan']);\n  var mathMl = freeze(['accent', 'accentunder', 'align', 'bevelled', 'close', 'columnsalign', 'columnlines', 'columnspan', 'denomalign', 'depth', 'dir', 'display', 'displaystyle', 'encoding', 'fence', 'frame', 'height', 'href', 'id', 'largeop', 'length', 'linethickness', 'lspace', 'lquote', 'mathbackground', 'mathcolor', 'mathsize', 'mathvariant', 'maxsize', 'minsize', 'movablelimits', 'notation', 'numalign', 'open', 'rowalign', 'rowlines', 'rowspacing', 'rowspan', 'rspace', 'rquote', 'scriptlevel', 'scriptminsize', 'scriptsizemultiplier', 'selection', 'separator', 'separators', 'stretchy', 'subscriptshift', 'supscriptshift', 'symmetric', 'voffset', 'width', 'xmlns']);\n  var xml = freeze(['xlink:href', 'xml:id', 'xlink:title', 'xml:space', 'xmlns:xlink']);\n\n  var MUSTACHE_EXPR = seal(/\\{\\{[\\w\\W]*|[\\w\\W]*\\}\\}/gm); // Specify template detection regex for SAFE_FOR_TEMPLATES mode\n\n  var ERB_EXPR = seal(/<%[\\w\\W]*|[\\w\\W]*%>/gm);\n  var DATA_ATTR = seal(/^data-[\\-\\w.\\u00B7-\\uFFFF]/); // eslint-disable-line no-useless-escape\n\n  var ARIA_ATTR = seal(/^aria-[\\-\\w]+$/); // eslint-disable-line no-useless-escape\n\n  var IS_ALLOWED_URI = seal(/^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp):|[^a-z]|[a-z+.\\-]+(?:[^a-z+.\\-:]|$))/i // eslint-disable-line no-useless-escape\n  );\n  var IS_SCRIPT_OR_DATA = seal(/^(?:\\w+script|data):/i);\n  var ATTR_WHITESPACE = seal(/[\\u0000-\\u0020\\u00A0\\u1680\\u180E\\u2000-\\u2029\\u205F\\u3000]/g // eslint-disable-line no-control-regex\n  );\n  var DOCTYPE_NAME = seal(/^html$/i);\n\n  var getGlobal = function getGlobal() {\n    return typeof window === 'undefined' ? null : window;\n  };\n  /**\n   * Creates a no-op policy for internal use only.\n   * Don't export this function outside this module!\n   * @param {?TrustedTypePolicyFactory} trustedTypes The policy factory.\n   * @param {Document} document The document object (to determine policy name suffix)\n   * @return {?TrustedTypePolicy} The policy created (or null, if Trusted Types\n   * are not supported).\n   */\n\n\n  var _createTrustedTypesPolicy = function _createTrustedTypesPolicy(trustedTypes, document) {\n    if (_typeof(trustedTypes) !== 'object' || typeof trustedTypes.createPolicy !== 'function') {\n      return null;\n    } // Allow the callers to control the unique policy name\n    // by adding a data-tt-policy-suffix to the script element with the DOMPurify.\n    // Policy creation with duplicate names throws in Trusted Types.\n\n\n    var suffix = null;\n    var ATTR_NAME = 'data-tt-policy-suffix';\n\n    if (document.currentScript && document.currentScript.hasAttribute(ATTR_NAME)) {\n      suffix = document.currentScript.getAttribute(ATTR_NAME);\n    }\n\n    var policyName = 'dompurify' + (suffix ? '#' + suffix : '');\n\n    try {\n      return trustedTypes.createPolicy(policyName, {\n        createHTML: function createHTML(html) {\n          return html;\n        },\n        createScriptURL: function createScriptURL(scriptUrl) {\n          return scriptUrl;\n        }\n      });\n    } catch (_) {\n      // Policy creation failed (most likely another DOMPurify script has\n      // already run). Skip creating the policy, as this will only cause errors\n      // if TT are enforced.\n      console.warn('TrustedTypes policy ' + policyName + ' could not be created.');\n      return null;\n    }\n  };\n\n  function createDOMPurify() {\n    var window = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : getGlobal();\n\n    var DOMPurify = function DOMPurify(root) {\n      return createDOMPurify(root);\n    };\n    /**\n     * Version label, exposed for easier checks\n     * if DOMPurify is up to date or not\n     */\n\n\n    DOMPurify.version = '2.4.0';\n    /**\n     * Array of elements that DOMPurify removed during sanitation.\n     * Empty if nothing was removed.\n     */\n\n    DOMPurify.removed = [];\n\n    if (!window || !window.document || window.document.nodeType !== 9) {\n      // Not running in a browser, provide a factory function\n      // so that you can pass your own Window\n      DOMPurify.isSupported = false;\n      return DOMPurify;\n    }\n\n    var originalDocument = window.document;\n    var document = window.document;\n    var DocumentFragment = window.DocumentFragment,\n        HTMLTemplateElement = window.HTMLTemplateElement,\n        Node = window.Node,\n        Element = window.Element,\n        NodeFilter = window.NodeFilter,\n        _window$NamedNodeMap = window.NamedNodeMap,\n        NamedNodeMap = _window$NamedNodeMap === void 0 ? window.NamedNodeMap || window.MozNamedAttrMap : _window$NamedNodeMap,\n        HTMLFormElement = window.HTMLFormElement,\n        DOMParser = window.DOMParser,\n        trustedTypes = window.trustedTypes;\n    var ElementPrototype = Element.prototype;\n    var cloneNode = lookupGetter(ElementPrototype, 'cloneNode');\n    var getNextSibling = lookupGetter(ElementPrototype, 'nextSibling');\n    var getChildNodes = lookupGetter(ElementPrototype, 'childNodes');\n    var getParentNode = lookupGetter(ElementPrototype, 'parentNode'); // As per issue #47, the web-components registry is inherited by a\n    // new document created via createHTMLDocument. As per the spec\n    // (http://w3c.github.io/webcomponents/spec/custom/#creating-and-passing-registries)\n    // a new empty registry is used when creating a template contents owner\n    // document, so we use that as our parent document to ensure nothing\n    // is inherited.\n\n    if (typeof HTMLTemplateElement === 'function') {\n      var template = document.createElement('template');\n\n      if (template.content && template.content.ownerDocument) {\n        document = template.content.ownerDocument;\n      }\n    }\n\n    var trustedTypesPolicy = _createTrustedTypesPolicy(trustedTypes, originalDocument);\n\n    var emptyHTML = trustedTypesPolicy ? trustedTypesPolicy.createHTML('') : '';\n    var _document = document,\n        implementation = _document.implementation,\n        createNodeIterator = _document.createNodeIterator,\n        createDocumentFragment = _document.createDocumentFragment,\n        getElementsByTagName = _document.getElementsByTagName;\n    var importNode = originalDocument.importNode;\n    var documentMode = {};\n\n    try {\n      documentMode = clone(document).documentMode ? document.documentMode : {};\n    } catch (_) {}\n\n    var hooks = {};\n    /**\n     * Expose whether this browser supports running the full DOMPurify.\n     */\n\n    DOMPurify.isSupported = typeof getParentNode === 'function' && implementation && typeof implementation.createHTMLDocument !== 'undefined' && documentMode !== 9;\n    var MUSTACHE_EXPR$1 = MUSTACHE_EXPR,\n        ERB_EXPR$1 = ERB_EXPR,\n        DATA_ATTR$1 = DATA_ATTR,\n        ARIA_ATTR$1 = ARIA_ATTR,\n        IS_SCRIPT_OR_DATA$1 = IS_SCRIPT_OR_DATA,\n        ATTR_WHITESPACE$1 = ATTR_WHITESPACE;\n    var IS_ALLOWED_URI$1 = IS_ALLOWED_URI;\n    /**\n     * We consider the elements and attributes below to be safe. Ideally\n     * don't add any new ones but feel free to remove unwanted ones.\n     */\n\n    /* allowed element names */\n\n    var ALLOWED_TAGS = null;\n    var DEFAULT_ALLOWED_TAGS = addToSet({}, [].concat(_toConsumableArray(html$1), _toConsumableArray(svg$1), _toConsumableArray(svgFilters), _toConsumableArray(mathMl$1), _toConsumableArray(text)));\n    /* Allowed attribute names */\n\n    var ALLOWED_ATTR = null;\n    var DEFAULT_ALLOWED_ATTR = addToSet({}, [].concat(_toConsumableArray(html), _toConsumableArray(svg), _toConsumableArray(mathMl), _toConsumableArray(xml)));\n    /*\n     * Configure how DOMPUrify should handle custom elements and their attributes as well as customized built-in elements.\n     * @property {RegExp|Function|null} tagNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any custom elements)\n     * @property {RegExp|Function|null} attributeNameCheck one of [null, regexPattern, predicate]. Default: `null` (disallow any attributes not on the allow list)\n     * @property {boolean} allowCustomizedBuiltInElements allow custom elements derived from built-ins if they pass CUSTOM_ELEMENT_HANDLING.tagNameCheck. Default: `false`.\n     */\n\n    var CUSTOM_ELEMENT_HANDLING = Object.seal(Object.create(null, {\n      tagNameCheck: {\n        writable: true,\n        configurable: false,\n        enumerable: true,\n        value: null\n      },\n      attributeNameCheck: {\n        writable: true,\n        configurable: false,\n        enumerable: true,\n        value: null\n      },\n      allowCustomizedBuiltInElements: {\n        writable: true,\n        configurable: false,\n        enumerable: true,\n        value: false\n      }\n    }));\n    /* Explicitly forbidden tags (overrides ALLOWED_TAGS/ADD_TAGS) */\n\n    var FORBID_TAGS = null;\n    /* Explicitly forbidden attributes (overrides ALLOWED_ATTR/ADD_ATTR) */\n\n    var FORBID_ATTR = null;\n    /* Decide if ARIA attributes are okay */\n\n    var ALLOW_ARIA_ATTR = true;\n    /* Decide if custom data attributes are okay */\n\n    var ALLOW_DATA_ATTR = true;\n    /* Decide if unknown protocols are okay */\n\n    var ALLOW_UNKNOWN_PROTOCOLS = false;\n    /* Output should be safe for common template engines.\n     * This means, DOMPurify removes data attributes, mustaches and ERB\n     */\n\n    var SAFE_FOR_TEMPLATES = false;\n    /* Decide if document with <html>... should be returned */\n\n    var WHOLE_DOCUMENT = false;\n    /* Track whether config is already set on this instance of DOMPurify. */\n\n    var SET_CONFIG = false;\n    /* Decide if all elements (e.g. style, script) must be children of\n     * document.body. By default, browsers might move them to document.head */\n\n    var FORCE_BODY = false;\n    /* Decide if a DOM `HTMLBodyElement` should be returned, instead of a html\n     * string (or a TrustedHTML object if Trusted Types are supported).\n     * If `WHOLE_DOCUMENT` is enabled a `HTMLHtmlElement` will be returned instead\n     */\n\n    var RETURN_DOM = false;\n    /* Decide if a DOM `DocumentFragment` should be returned, instead of a html\n     * string  (or a TrustedHTML object if Trusted Types are supported) */\n\n    var RETURN_DOM_FRAGMENT = false;\n    /* Try to return a Trusted Type object instead of a string, return a string in\n     * case Trusted Types are not supported  */\n\n    var RETURN_TRUSTED_TYPE = false;\n    /* Output should be free from DOM clobbering attacks?\n     * This sanitizes markups named with colliding, clobberable built-in DOM APIs.\n     */\n\n    var SANITIZE_DOM = true;\n    /* Achieve full DOM Clobbering protection by isolating the namespace of named\n     * properties and JS variables, mitigating attacks that abuse the HTML/DOM spec rules.\n     *\n     * HTML/DOM spec rules that enable DOM Clobbering:\n     *   - Named Access on Window (§7.3.3)\n     *   - DOM Tree Accessors (§3.1.5)\n     *   - Form Element Parent-Child Relations (§4.10.3)\n     *   - Iframe srcdoc / Nested WindowProxies (§4.8.5)\n     *   - HTMLCollection (§4.2.10.2)\n     *\n     * Namespace isolation is implemented by prefixing `id` and `name` attributes\n     * with a constant string, i.e., `user-content-`\n     */\n\n    var SANITIZE_NAMED_PROPS = false;\n    var SANITIZE_NAMED_PROPS_PREFIX = 'user-content-';\n    /* Keep element content when removing element? */\n\n    var KEEP_CONTENT = true;\n    /* If a `Node` is passed to sanitize(), then performs sanitization in-place instead\n     * of importing it into a new Document and returning a sanitized copy */\n\n    var IN_PLACE = false;\n    /* Allow usage of profiles like html, svg and mathMl */\n\n    var USE_PROFILES = {};\n    /* Tags to ignore content of when KEEP_CONTENT is true */\n\n    var FORBID_CONTENTS = null;\n    var DEFAULT_FORBID_CONTENTS = addToSet({}, ['annotation-xml', 'audio', 'colgroup', 'desc', 'foreignobject', 'head', 'iframe', 'math', 'mi', 'mn', 'mo', 'ms', 'mtext', 'noembed', 'noframes', 'noscript', 'plaintext', 'script', 'style', 'svg', 'template', 'thead', 'title', 'video', 'xmp']);\n    /* Tags that are safe for data: URIs */\n\n    var DATA_URI_TAGS = null;\n    var DEFAULT_DATA_URI_TAGS = addToSet({}, ['audio', 'video', 'img', 'source', 'image', 'track']);\n    /* Attributes safe for values like \"javascript:\" */\n\n    var URI_SAFE_ATTRIBUTES = null;\n    var DEFAULT_URI_SAFE_ATTRIBUTES = addToSet({}, ['alt', 'class', 'for', 'id', 'label', 'name', 'pattern', 'placeholder', 'role', 'summary', 'title', 'value', 'style', 'xmlns']);\n    var MATHML_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';\n    var SVG_NAMESPACE = 'http://www.w3.org/2000/svg';\n    var HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';\n    /* Document namespace */\n\n    var NAMESPACE = HTML_NAMESPACE;\n    var IS_EMPTY_INPUT = false;\n    /* Parsing of strict XHTML documents */\n\n    var PARSER_MEDIA_TYPE;\n    var SUPPORTED_PARSER_MEDIA_TYPES = ['application/xhtml+xml', 'text/html'];\n    var DEFAULT_PARSER_MEDIA_TYPE = 'text/html';\n    var transformCaseFunc;\n    /* Keep a reference to config to pass to hooks */\n\n    var CONFIG = null;\n    /* Ideally, do not touch anything below this line */\n\n    /* ______________________________________________ */\n\n    var formElement = document.createElement('form');\n\n    var isRegexOrFunction = function isRegexOrFunction(testValue) {\n      return testValue instanceof RegExp || testValue instanceof Function;\n    };\n    /**\n     * _parseConfig\n     *\n     * @param  {Object} cfg optional config literal\n     */\n    // eslint-disable-next-line complexity\n\n\n    var _parseConfig = function _parseConfig(cfg) {\n      if (CONFIG && CONFIG === cfg) {\n        return;\n      }\n      /* Shield configuration object from tampering */\n\n\n      if (!cfg || _typeof(cfg) !== 'object') {\n        cfg = {};\n      }\n      /* Shield configuration object from prototype pollution */\n\n\n      cfg = clone(cfg);\n      PARSER_MEDIA_TYPE = // eslint-disable-next-line unicorn/prefer-includes\n      SUPPORTED_PARSER_MEDIA_TYPES.indexOf(cfg.PARSER_MEDIA_TYPE) === -1 ? PARSER_MEDIA_TYPE = DEFAULT_PARSER_MEDIA_TYPE : PARSER_MEDIA_TYPE = cfg.PARSER_MEDIA_TYPE; // HTML tags and attributes are not case-sensitive, converting to lowercase. Keeping XHTML as is.\n\n      transformCaseFunc = PARSER_MEDIA_TYPE === 'application/xhtml+xml' ? function (x) {\n        return x;\n      } : stringToLowerCase;\n      /* Set configuration parameters */\n\n      ALLOWED_TAGS = 'ALLOWED_TAGS' in cfg ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc) : DEFAULT_ALLOWED_TAGS;\n      ALLOWED_ATTR = 'ALLOWED_ATTR' in cfg ? addToSet({}, cfg.ALLOWED_ATTR, transformCaseFunc) : DEFAULT_ALLOWED_ATTR;\n      URI_SAFE_ATTRIBUTES = 'ADD_URI_SAFE_ATTR' in cfg ? addToSet(clone(DEFAULT_URI_SAFE_ATTRIBUTES), // eslint-disable-line indent\n      cfg.ADD_URI_SAFE_ATTR, // eslint-disable-line indent\n      transformCaseFunc // eslint-disable-line indent\n      ) // eslint-disable-line indent\n      : DEFAULT_URI_SAFE_ATTRIBUTES;\n      DATA_URI_TAGS = 'ADD_DATA_URI_TAGS' in cfg ? addToSet(clone(DEFAULT_DATA_URI_TAGS), // eslint-disable-line indent\n      cfg.ADD_DATA_URI_TAGS, // eslint-disable-line indent\n      transformCaseFunc // eslint-disable-line indent\n      ) // eslint-disable-line indent\n      : DEFAULT_DATA_URI_TAGS;\n      FORBID_CONTENTS = 'FORBID_CONTENTS' in cfg ? addToSet({}, cfg.FORBID_CONTENTS, transformCaseFunc) : DEFAULT_FORBID_CONTENTS;\n      FORBID_TAGS = 'FORBID_TAGS' in cfg ? addToSet({}, cfg.FORBID_TAGS, transformCaseFunc) : {};\n      FORBID_ATTR = 'FORBID_ATTR' in cfg ? addToSet({}, cfg.FORBID_ATTR, transformCaseFunc) : {};\n      USE_PROFILES = 'USE_PROFILES' in cfg ? cfg.USE_PROFILES : false;\n      ALLOW_ARIA_ATTR = cfg.ALLOW_ARIA_ATTR !== false; // Default true\n\n      ALLOW_DATA_ATTR = cfg.ALLOW_DATA_ATTR !== false; // Default true\n\n      ALLOW_UNKNOWN_PROTOCOLS = cfg.ALLOW_UNKNOWN_PROTOCOLS || false; // Default false\n\n      SAFE_FOR_TEMPLATES = cfg.SAFE_FOR_TEMPLATES || false; // Default false\n\n      WHOLE_DOCUMENT = cfg.WHOLE_DOCUMENT || false; // Default false\n\n      RETURN_DOM = cfg.RETURN_DOM || false; // Default false\n\n      RETURN_DOM_FRAGMENT = cfg.RETURN_DOM_FRAGMENT || false; // Default false\n\n      RETURN_TRUSTED_TYPE = cfg.RETURN_TRUSTED_TYPE || false; // Default false\n\n      FORCE_BODY = cfg.FORCE_BODY || false; // Default false\n\n      SANITIZE_DOM = cfg.SANITIZE_DOM !== false; // Default true\n\n      SANITIZE_NAMED_PROPS = cfg.SANITIZE_NAMED_PROPS || false; // Default false\n\n      KEEP_CONTENT = cfg.KEEP_CONTENT !== false; // Default true\n\n      IN_PLACE = cfg.IN_PLACE || false; // Default false\n\n      IS_ALLOWED_URI$1 = cfg.ALLOWED_URI_REGEXP || IS_ALLOWED_URI$1;\n      NAMESPACE = cfg.NAMESPACE || HTML_NAMESPACE;\n\n      if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck)) {\n        CUSTOM_ELEMENT_HANDLING.tagNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.tagNameCheck;\n      }\n\n      if (cfg.CUSTOM_ELEMENT_HANDLING && isRegexOrFunction(cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck)) {\n        CUSTOM_ELEMENT_HANDLING.attributeNameCheck = cfg.CUSTOM_ELEMENT_HANDLING.attributeNameCheck;\n      }\n\n      if (cfg.CUSTOM_ELEMENT_HANDLING && typeof cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements === 'boolean') {\n        CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements = cfg.CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements;\n      }\n\n      if (SAFE_FOR_TEMPLATES) {\n        ALLOW_DATA_ATTR = false;\n      }\n\n      if (RETURN_DOM_FRAGMENT) {\n        RETURN_DOM = true;\n      }\n      /* Parse profile info */\n\n\n      if (USE_PROFILES) {\n        ALLOWED_TAGS = addToSet({}, _toConsumableArray(text));\n        ALLOWED_ATTR = [];\n\n        if (USE_PROFILES.html === true) {\n          addToSet(ALLOWED_TAGS, html$1);\n          addToSet(ALLOWED_ATTR, html);\n        }\n\n        if (USE_PROFILES.svg === true) {\n          addToSet(ALLOWED_TAGS, svg$1);\n          addToSet(ALLOWED_ATTR, svg);\n          addToSet(ALLOWED_ATTR, xml);\n        }\n\n        if (USE_PROFILES.svgFilters === true) {\n          addToSet(ALLOWED_TAGS, svgFilters);\n          addToSet(ALLOWED_ATTR, svg);\n          addToSet(ALLOWED_ATTR, xml);\n        }\n\n        if (USE_PROFILES.mathMl === true) {\n          addToSet(ALLOWED_TAGS, mathMl$1);\n          addToSet(ALLOWED_ATTR, mathMl);\n          addToSet(ALLOWED_ATTR, xml);\n        }\n      }\n      /* Merge configuration parameters */\n\n\n      if (cfg.ADD_TAGS) {\n        if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n          ALLOWED_TAGS = clone(ALLOWED_TAGS);\n        }\n\n        addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n      }\n\n      if (cfg.ADD_ATTR) {\n        if (ALLOWED_ATTR === DEFAULT_ALLOWED_ATTR) {\n          ALLOWED_ATTR = clone(ALLOWED_ATTR);\n        }\n\n        addToSet(ALLOWED_ATTR, cfg.ADD_ATTR, transformCaseFunc);\n      }\n\n      if (cfg.ADD_URI_SAFE_ATTR) {\n        addToSet(URI_SAFE_ATTRIBUTES, cfg.ADD_URI_SAFE_ATTR, transformCaseFunc);\n      }\n\n      if (cfg.FORBID_CONTENTS) {\n        if (FORBID_CONTENTS === DEFAULT_FORBID_CONTENTS) {\n          FORBID_CONTENTS = clone(FORBID_CONTENTS);\n        }\n\n        addToSet(FORBID_CONTENTS, cfg.FORBID_CONTENTS, transformCaseFunc);\n      }\n      /* Add #text in case KEEP_CONTENT is set to true */\n\n\n      if (KEEP_CONTENT) {\n        ALLOWED_TAGS['#text'] = true;\n      }\n      /* Add html, head and body to ALLOWED_TAGS in case WHOLE_DOCUMENT is true */\n\n\n      if (WHOLE_DOCUMENT) {\n        addToSet(ALLOWED_TAGS, ['html', 'head', 'body']);\n      }\n      /* Add tbody to ALLOWED_TAGS in case tables are permitted, see #286, #365 */\n\n\n      if (ALLOWED_TAGS.table) {\n        addToSet(ALLOWED_TAGS, ['tbody']);\n        delete FORBID_TAGS.tbody;\n      } // Prevent further manipulation of configuration.\n      // Not available in IE8, Safari 5, etc.\n\n\n      if (freeze) {\n        freeze(cfg);\n      }\n\n      CONFIG = cfg;\n    };\n\n    var MATHML_TEXT_INTEGRATION_POINTS = addToSet({}, ['mi', 'mo', 'mn', 'ms', 'mtext']);\n    var HTML_INTEGRATION_POINTS = addToSet({}, ['foreignobject', 'desc', 'title', 'annotation-xml']); // Certain elements are allowed in both SVG and HTML\n    // namespace. We need to specify them explicitly\n    // so that they don't get erroneously deleted from\n    // HTML namespace.\n\n    var COMMON_SVG_AND_HTML_ELEMENTS = addToSet({}, ['title', 'style', 'font', 'a', 'script']);\n    /* Keep track of all possible SVG and MathML tags\n     * so that we can perform the namespace checks\n     * correctly. */\n\n    var ALL_SVG_TAGS = addToSet({}, svg$1);\n    addToSet(ALL_SVG_TAGS, svgFilters);\n    addToSet(ALL_SVG_TAGS, svgDisallowed);\n    var ALL_MATHML_TAGS = addToSet({}, mathMl$1);\n    addToSet(ALL_MATHML_TAGS, mathMlDisallowed);\n    /**\n     *\n     *\n     * @param  {Element} element a DOM element whose namespace is being checked\n     * @returns {boolean} Return false if the element has a\n     *  namespace that a spec-compliant parser would never\n     *  return. Return true otherwise.\n     */\n\n    var _checkValidNamespace = function _checkValidNamespace(element) {\n      var parent = getParentNode(element); // In JSDOM, if we're inside shadow DOM, then parentNode\n      // can be null. We just simulate parent in this case.\n\n      if (!parent || !parent.tagName) {\n        parent = {\n          namespaceURI: HTML_NAMESPACE,\n          tagName: 'template'\n        };\n      }\n\n      var tagName = stringToLowerCase(element.tagName);\n      var parentTagName = stringToLowerCase(parent.tagName);\n\n      if (element.namespaceURI === SVG_NAMESPACE) {\n        // The only way to switch from HTML namespace to SVG\n        // is via <svg>. If it happens via any other tag, then\n        // it should be killed.\n        if (parent.namespaceURI === HTML_NAMESPACE) {\n          return tagName === 'svg';\n        } // The only way to switch from MathML to SVG is via\n        // svg if parent is either <annotation-xml> or MathML\n        // text integration points.\n\n\n        if (parent.namespaceURI === MATHML_NAMESPACE) {\n          return tagName === 'svg' && (parentTagName === 'annotation-xml' || MATHML_TEXT_INTEGRATION_POINTS[parentTagName]);\n        } // We only allow elements that are defined in SVG\n        // spec. All others are disallowed in SVG namespace.\n\n\n        return Boolean(ALL_SVG_TAGS[tagName]);\n      }\n\n      if (element.namespaceURI === MATHML_NAMESPACE) {\n        // The only way to switch from HTML namespace to MathML\n        // is via <math>. If it happens via any other tag, then\n        // it should be killed.\n        if (parent.namespaceURI === HTML_NAMESPACE) {\n          return tagName === 'math';\n        } // The only way to switch from SVG to MathML is via\n        // <math> and HTML integration points\n\n\n        if (parent.namespaceURI === SVG_NAMESPACE) {\n          return tagName === 'math' && HTML_INTEGRATION_POINTS[parentTagName];\n        } // We only allow elements that are defined in MathML\n        // spec. All others are disallowed in MathML namespace.\n\n\n        return Boolean(ALL_MATHML_TAGS[tagName]);\n      }\n\n      if (element.namespaceURI === HTML_NAMESPACE) {\n        // The only way to switch from SVG to HTML is via\n        // HTML integration points, and from MathML to HTML\n        // is via MathML text integration points\n        if (parent.namespaceURI === SVG_NAMESPACE && !HTML_INTEGRATION_POINTS[parentTagName]) {\n          return false;\n        }\n\n        if (parent.namespaceURI === MATHML_NAMESPACE && !MATHML_TEXT_INTEGRATION_POINTS[parentTagName]) {\n          return false;\n        } // We disallow tags that are specific for MathML\n        // or SVG and should never appear in HTML namespace\n\n\n        return !ALL_MATHML_TAGS[tagName] && (COMMON_SVG_AND_HTML_ELEMENTS[tagName] || !ALL_SVG_TAGS[tagName]);\n      } // The code should never reach this place (this means\n      // that the element somehow got namespace that is not\n      // HTML, SVG or MathML). Return false just in case.\n\n\n      return false;\n    };\n    /**\n     * _forceRemove\n     *\n     * @param  {Node} node a DOM node\n     */\n\n\n    var _forceRemove = function _forceRemove(node) {\n      arrayPush(DOMPurify.removed, {\n        element: node\n      });\n\n      try {\n        // eslint-disable-next-line unicorn/prefer-dom-node-remove\n        node.parentNode.removeChild(node);\n      } catch (_) {\n        try {\n          node.outerHTML = emptyHTML;\n        } catch (_) {\n          node.remove();\n        }\n      }\n    };\n    /**\n     * _removeAttribute\n     *\n     * @param  {String} name an Attribute name\n     * @param  {Node} node a DOM node\n     */\n\n\n    var _removeAttribute = function _removeAttribute(name, node) {\n      try {\n        arrayPush(DOMPurify.removed, {\n          attribute: node.getAttributeNode(name),\n          from: node\n        });\n      } catch (_) {\n        arrayPush(DOMPurify.removed, {\n          attribute: null,\n          from: node\n        });\n      }\n\n      node.removeAttribute(name); // We void attribute values for unremovable \"is\"\" attributes\n\n      if (name === 'is' && !ALLOWED_ATTR[name]) {\n        if (RETURN_DOM || RETURN_DOM_FRAGMENT) {\n          try {\n            _forceRemove(node);\n          } catch (_) {}\n        } else {\n          try {\n            node.setAttribute(name, '');\n          } catch (_) {}\n        }\n      }\n    };\n    /**\n     * _initDocument\n     *\n     * @param  {String} dirty a string of dirty markup\n     * @return {Document} a DOM, filled with the dirty markup\n     */\n\n\n    var _initDocument = function _initDocument(dirty) {\n      /* Create a HTML document */\n      var doc;\n      var leadingWhitespace;\n\n      if (FORCE_BODY) {\n        dirty = '<remove></remove>' + dirty;\n      } else {\n        /* If FORCE_BODY isn't used, leading whitespace needs to be preserved manually */\n        var matches = stringMatch(dirty, /^[\\r\\n\\t ]+/);\n        leadingWhitespace = matches && matches[0];\n      }\n\n      if (PARSER_MEDIA_TYPE === 'application/xhtml+xml') {\n        // Root of XHTML doc must contain xmlns declaration (see https://www.w3.org/TR/xhtml1/normative.html#strict)\n        dirty = '<html xmlns=\"http://www.w3.org/1999/xhtml\"><head></head><body>' + dirty + '</body></html>';\n      }\n\n      var dirtyPayload = trustedTypesPolicy ? trustedTypesPolicy.createHTML(dirty) : dirty;\n      /*\n       * Use the DOMParser API by default, fallback later if needs be\n       * DOMParser not work for svg when has multiple root element.\n       */\n\n      if (NAMESPACE === HTML_NAMESPACE) {\n        try {\n          doc = new DOMParser().parseFromString(dirtyPayload, PARSER_MEDIA_TYPE);\n        } catch (_) {}\n      }\n      /* Use createHTMLDocument in case DOMParser is not available */\n\n\n      if (!doc || !doc.documentElement) {\n        doc = implementation.createDocument(NAMESPACE, 'template', null);\n\n        try {\n          doc.documentElement.innerHTML = IS_EMPTY_INPUT ? '' : dirtyPayload;\n        } catch (_) {// Syntax error if dirtyPayload is invalid xml\n        }\n      }\n\n      var body = doc.body || doc.documentElement;\n\n      if (dirty && leadingWhitespace) {\n        body.insertBefore(document.createTextNode(leadingWhitespace), body.childNodes[0] || null);\n      }\n      /* Work on whole document or just its body */\n\n\n      if (NAMESPACE === HTML_NAMESPACE) {\n        return getElementsByTagName.call(doc, WHOLE_DOCUMENT ? 'html' : 'body')[0];\n      }\n\n      return WHOLE_DOCUMENT ? doc.documentElement : body;\n    };\n    /**\n     * _createIterator\n     *\n     * @param  {Document} root document/fragment to create iterator for\n     * @return {Iterator} iterator instance\n     */\n\n\n    var _createIterator = function _createIterator(root) {\n      return createNodeIterator.call(root.ownerDocument || root, root, // eslint-disable-next-line no-bitwise\n      NodeFilter.SHOW_ELEMENT | NodeFilter.SHOW_COMMENT | NodeFilter.SHOW_TEXT, null, false);\n    };\n    /**\n     * _isClobbered\n     *\n     * @param  {Node} elm element to check for clobbering attacks\n     * @return {Boolean} true if clobbered, false if safe\n     */\n\n\n    var _isClobbered = function _isClobbered(elm) {\n      return elm instanceof HTMLFormElement && (typeof elm.nodeName !== 'string' || typeof elm.textContent !== 'string' || typeof elm.removeChild !== 'function' || !(elm.attributes instanceof NamedNodeMap) || typeof elm.removeAttribute !== 'function' || typeof elm.setAttribute !== 'function' || typeof elm.namespaceURI !== 'string' || typeof elm.insertBefore !== 'function');\n    };\n    /**\n     * _isNode\n     *\n     * @param  {Node} obj object to check whether it's a DOM node\n     * @return {Boolean} true is object is a DOM node\n     */\n\n\n    var _isNode = function _isNode(object) {\n      return _typeof(Node) === 'object' ? object instanceof Node : object && _typeof(object) === 'object' && typeof object.nodeType === 'number' && typeof object.nodeName === 'string';\n    };\n    /**\n     * _executeHook\n     * Execute user configurable hooks\n     *\n     * @param  {String} entryPoint  Name of the hook's entry point\n     * @param  {Node} currentNode node to work on with the hook\n     * @param  {Object} data additional hook parameters\n     */\n\n\n    var _executeHook = function _executeHook(entryPoint, currentNode, data) {\n      if (!hooks[entryPoint]) {\n        return;\n      }\n\n      arrayForEach(hooks[entryPoint], function (hook) {\n        hook.call(DOMPurify, currentNode, data, CONFIG);\n      });\n    };\n    /**\n     * _sanitizeElements\n     *\n     * @protect nodeName\n     * @protect textContent\n     * @protect removeChild\n     *\n     * @param   {Node} currentNode to check for permission to exist\n     * @return  {Boolean} true if node was killed, false if left alive\n     */\n\n\n    var _sanitizeElements = function _sanitizeElements(currentNode) {\n      var content;\n      /* Execute a hook if present */\n\n      _executeHook('beforeSanitizeElements', currentNode, null);\n      /* Check if element is clobbered or can clobber */\n\n\n      if (_isClobbered(currentNode)) {\n        _forceRemove(currentNode);\n\n        return true;\n      }\n      /* Check if tagname contains Unicode */\n\n\n      if (regExpTest(/[\\u0080-\\uFFFF]/, currentNode.nodeName)) {\n        _forceRemove(currentNode);\n\n        return true;\n      }\n      /* Now let's check the element's type and name */\n\n\n      var tagName = transformCaseFunc(currentNode.nodeName);\n      /* Execute a hook if present */\n\n      _executeHook('uponSanitizeElement', currentNode, {\n        tagName: tagName,\n        allowedTags: ALLOWED_TAGS\n      });\n      /* Detect mXSS attempts abusing namespace confusion */\n\n\n      if (currentNode.hasChildNodes() && !_isNode(currentNode.firstElementChild) && (!_isNode(currentNode.content) || !_isNode(currentNode.content.firstElementChild)) && regExpTest(/<[/\\w]/g, currentNode.innerHTML) && regExpTest(/<[/\\w]/g, currentNode.textContent)) {\n        _forceRemove(currentNode);\n\n        return true;\n      }\n      /* Mitigate a problem with templates inside select */\n\n\n      if (tagName === 'select' && regExpTest(/<template/i, currentNode.innerHTML)) {\n        _forceRemove(currentNode);\n\n        return true;\n      }\n      /* Remove element if anything forbids its presence */\n\n\n      if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n        /* Check if we have a custom element to handle */\n        if (!FORBID_TAGS[tagName] && _basicCustomElementTest(tagName)) {\n          if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, tagName)) return false;\n          if (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(tagName)) return false;\n        }\n        /* Keep content except for bad-listed elements */\n\n\n        if (KEEP_CONTENT && !FORBID_CONTENTS[tagName]) {\n          var parentNode = getParentNode(currentNode) || currentNode.parentNode;\n          var childNodes = getChildNodes(currentNode) || currentNode.childNodes;\n\n          if (childNodes && parentNode) {\n            var childCount = childNodes.length;\n\n            for (var i = childCount - 1; i >= 0; --i) {\n              parentNode.insertBefore(cloneNode(childNodes[i], true), getNextSibling(currentNode));\n            }\n          }\n        }\n\n        _forceRemove(currentNode);\n\n        return true;\n      }\n      /* Check whether element has a valid namespace */\n\n\n      if (currentNode instanceof Element && !_checkValidNamespace(currentNode)) {\n        _forceRemove(currentNode);\n\n        return true;\n      }\n\n      if ((tagName === 'noscript' || tagName === 'noembed') && regExpTest(/<\\/no(script|embed)/i, currentNode.innerHTML)) {\n        _forceRemove(currentNode);\n\n        return true;\n      }\n      /* Sanitize element content to be template-safe */\n\n\n      if (SAFE_FOR_TEMPLATES && currentNode.nodeType === 3) {\n        /* Get the element's text content */\n        content = currentNode.textContent;\n        content = stringReplace(content, MUSTACHE_EXPR$1, ' ');\n        content = stringReplace(content, ERB_EXPR$1, ' ');\n\n        if (currentNode.textContent !== content) {\n          arrayPush(DOMPurify.removed, {\n            element: currentNode.cloneNode()\n          });\n          currentNode.textContent = content;\n        }\n      }\n      /* Execute a hook if present */\n\n\n      _executeHook('afterSanitizeElements', currentNode, null);\n\n      return false;\n    };\n    /**\n     * _isValidAttribute\n     *\n     * @param  {string} lcTag Lowercase tag name of containing element.\n     * @param  {string} lcName Lowercase attribute name.\n     * @param  {string} value Attribute value.\n     * @return {Boolean} Returns true if `value` is valid, otherwise false.\n     */\n    // eslint-disable-next-line complexity\n\n\n    var _isValidAttribute = function _isValidAttribute(lcTag, lcName, value) {\n      /* Make sure attribute cannot clobber */\n      if (SANITIZE_DOM && (lcName === 'id' || lcName === 'name') && (value in document || value in formElement)) {\n        return false;\n      }\n      /* Allow valid data-* attributes: At least one character after \"-\"\n          (https://html.spec.whatwg.org/multipage/dom.html#embedding-custom-non-visible-data-with-the-data-*-attributes)\n          XML-compatible (https://html.spec.whatwg.org/multipage/infrastructure.html#xml-compatible and http://www.w3.org/TR/xml/#d0e804)\n          We don't need to check the value; it's always URI safe. */\n\n\n      if (ALLOW_DATA_ATTR && !FORBID_ATTR[lcName] && regExpTest(DATA_ATTR$1, lcName)) ; else if (ALLOW_ARIA_ATTR && regExpTest(ARIA_ATTR$1, lcName)) ; else if (!ALLOWED_ATTR[lcName] || FORBID_ATTR[lcName]) {\n        if ( // First condition does a very basic check if a) it's basically a valid custom element tagname AND\n        // b) if the tagName passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n        // and c) if the attribute name passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.attributeNameCheck\n        _basicCustomElementTest(lcTag) && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, lcTag) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(lcTag)) && (CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.attributeNameCheck, lcName) || CUSTOM_ELEMENT_HANDLING.attributeNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.attributeNameCheck(lcName)) || // Alternative, second condition checks if it's an `is`-attribute, AND\n        // the value passes whatever the user has configured for CUSTOM_ELEMENT_HANDLING.tagNameCheck\n        lcName === 'is' && CUSTOM_ELEMENT_HANDLING.allowCustomizedBuiltInElements && (CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof RegExp && regExpTest(CUSTOM_ELEMENT_HANDLING.tagNameCheck, value) || CUSTOM_ELEMENT_HANDLING.tagNameCheck instanceof Function && CUSTOM_ELEMENT_HANDLING.tagNameCheck(value))) ; else {\n          return false;\n        }\n        /* Check value is safe. First, is attr inert? If so, is safe */\n\n      } else if (URI_SAFE_ATTRIBUTES[lcName]) ; else if (regExpTest(IS_ALLOWED_URI$1, stringReplace(value, ATTR_WHITESPACE$1, ''))) ; else if ((lcName === 'src' || lcName === 'xlink:href' || lcName === 'href') && lcTag !== 'script' && stringIndexOf(value, 'data:') === 0 && DATA_URI_TAGS[lcTag]) ; else if (ALLOW_UNKNOWN_PROTOCOLS && !regExpTest(IS_SCRIPT_OR_DATA$1, stringReplace(value, ATTR_WHITESPACE$1, ''))) ; else if (!value) ; else {\n        return false;\n      }\n\n      return true;\n    };\n    /**\n     * _basicCustomElementCheck\n     * checks if at least one dash is included in tagName, and it's not the first char\n     * for more sophisticated checking see https://github.com/sindresorhus/validate-element-name\n     * @param {string} tagName name of the tag of the node to sanitize\n     */\n\n\n    var _basicCustomElementTest = function _basicCustomElementTest(tagName) {\n      return tagName.indexOf('-') > 0;\n    };\n    /**\n     * _sanitizeAttributes\n     *\n     * @protect attributes\n     * @protect nodeName\n     * @protect removeAttribute\n     * @protect setAttribute\n     *\n     * @param  {Node} currentNode to sanitize\n     */\n\n\n    var _sanitizeAttributes = function _sanitizeAttributes(currentNode) {\n      var attr;\n      var value;\n      var lcName;\n      var l;\n      /* Execute a hook if present */\n\n      _executeHook('beforeSanitizeAttributes', currentNode, null);\n\n      var attributes = currentNode.attributes;\n      /* Check if we have attributes; if not we might have a text node */\n\n      if (!attributes) {\n        return;\n      }\n\n      var hookEvent = {\n        attrName: '',\n        attrValue: '',\n        keepAttr: true,\n        allowedAttributes: ALLOWED_ATTR\n      };\n      l = attributes.length;\n      /* Go backwards over all attributes; safely remove bad ones */\n\n      while (l--) {\n        attr = attributes[l];\n        var _attr = attr,\n            name = _attr.name,\n            namespaceURI = _attr.namespaceURI;\n        value = name === 'value' ? attr.value : stringTrim(attr.value);\n        lcName = transformCaseFunc(name);\n        /* Execute a hook if present */\n\n        hookEvent.attrName = lcName;\n        hookEvent.attrValue = value;\n        hookEvent.keepAttr = true;\n        hookEvent.forceKeepAttr = undefined; // Allows developers to see this is a property they can set\n\n        _executeHook('uponSanitizeAttribute', currentNode, hookEvent);\n\n        value = hookEvent.attrValue;\n        /* Did the hooks approve of the attribute? */\n\n        if (hookEvent.forceKeepAttr) {\n          continue;\n        }\n        /* Remove attribute */\n\n\n        _removeAttribute(name, currentNode);\n        /* Did the hooks approve of the attribute? */\n\n\n        if (!hookEvent.keepAttr) {\n          continue;\n        }\n        /* Work around a security issue in jQuery 3.0 */\n\n\n        if (regExpTest(/\\/>/i, value)) {\n          _removeAttribute(name, currentNode);\n\n          continue;\n        }\n        /* Sanitize attribute content to be template-safe */\n\n\n        if (SAFE_FOR_TEMPLATES) {\n          value = stringReplace(value, MUSTACHE_EXPR$1, ' ');\n          value = stringReplace(value, ERB_EXPR$1, ' ');\n        }\n        /* Is `value` valid for this attribute? */\n\n\n        var lcTag = transformCaseFunc(currentNode.nodeName);\n\n        if (!_isValidAttribute(lcTag, lcName, value)) {\n          continue;\n        }\n        /* Full DOM Clobbering protection via namespace isolation,\n         * Prefix id and name attributes with `user-content-`\n         */\n\n\n        if (SANITIZE_NAMED_PROPS && (lcName === 'id' || lcName === 'name')) {\n          // Remove the attribute with this value\n          _removeAttribute(name, currentNode); // Prefix the value and later re-create the attribute with the sanitized value\n\n\n          value = SANITIZE_NAMED_PROPS_PREFIX + value;\n        }\n        /* Handle attributes that require Trusted Types */\n\n\n        if (trustedTypesPolicy && _typeof(trustedTypes) === 'object' && typeof trustedTypes.getAttributeType === 'function') {\n          if (namespaceURI) ; else {\n            switch (trustedTypes.getAttributeType(lcTag, lcName)) {\n              case 'TrustedHTML':\n                value = trustedTypesPolicy.createHTML(value);\n                break;\n\n              case 'TrustedScriptURL':\n                value = trustedTypesPolicy.createScriptURL(value);\n                break;\n            }\n          }\n        }\n        /* Handle invalid data-* attribute set by try-catching it */\n\n\n        try {\n          if (namespaceURI) {\n            currentNode.setAttributeNS(namespaceURI, name, value);\n          } else {\n            /* Fallback to setAttribute() for browser-unrecognized namespaces e.g. \"x-schema\". */\n            currentNode.setAttribute(name, value);\n          }\n\n          arrayPop(DOMPurify.removed);\n        } catch (_) {}\n      }\n      /* Execute a hook if present */\n\n\n      _executeHook('afterSanitizeAttributes', currentNode, null);\n    };\n    /**\n     * _sanitizeShadowDOM\n     *\n     * @param  {DocumentFragment} fragment to iterate over recursively\n     */\n\n\n    var _sanitizeShadowDOM = function _sanitizeShadowDOM(fragment) {\n      var shadowNode;\n\n      var shadowIterator = _createIterator(fragment);\n      /* Execute a hook if present */\n\n\n      _executeHook('beforeSanitizeShadowDOM', fragment, null);\n\n      while (shadowNode = shadowIterator.nextNode()) {\n        /* Execute a hook if present */\n        _executeHook('uponSanitizeShadowNode', shadowNode, null);\n        /* Sanitize tags and elements */\n\n\n        if (_sanitizeElements(shadowNode)) {\n          continue;\n        }\n        /* Deep shadow DOM detected */\n\n\n        if (shadowNode.content instanceof DocumentFragment) {\n          _sanitizeShadowDOM(shadowNode.content);\n        }\n        /* Check attributes, sanitize if necessary */\n\n\n        _sanitizeAttributes(shadowNode);\n      }\n      /* Execute a hook if present */\n\n\n      _executeHook('afterSanitizeShadowDOM', fragment, null);\n    };\n    /**\n     * Sanitize\n     * Public method providing core sanitation functionality\n     *\n     * @param {String|Node} dirty string or DOM node\n     * @param {Object} configuration object\n     */\n    // eslint-disable-next-line complexity\n\n\n    DOMPurify.sanitize = function (dirty) {\n      var cfg = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n      var body;\n      var importedNode;\n      var currentNode;\n      var oldNode;\n      var returnNode;\n      /* Make sure we have a string to sanitize.\n        DO NOT return early, as this will return the wrong type if\n        the user has requested a DOM object rather than a string */\n\n      IS_EMPTY_INPUT = !dirty;\n\n      if (IS_EMPTY_INPUT) {\n        dirty = '<!-->';\n      }\n      /* Stringify, in case dirty is an object */\n\n\n      if (typeof dirty !== 'string' && !_isNode(dirty)) {\n        // eslint-disable-next-line no-negated-condition\n        if (typeof dirty.toString !== 'function') {\n          throw typeErrorCreate('toString is not a function');\n        } else {\n          dirty = dirty.toString();\n\n          if (typeof dirty !== 'string') {\n            throw typeErrorCreate('dirty is not a string, aborting');\n          }\n        }\n      }\n      /* Check we can run. Otherwise fall back or ignore */\n\n\n      if (!DOMPurify.isSupported) {\n        if (_typeof(window.toStaticHTML) === 'object' || typeof window.toStaticHTML === 'function') {\n          if (typeof dirty === 'string') {\n            return window.toStaticHTML(dirty);\n          }\n\n          if (_isNode(dirty)) {\n            return window.toStaticHTML(dirty.outerHTML);\n          }\n        }\n\n        return dirty;\n      }\n      /* Assign config vars */\n\n\n      if (!SET_CONFIG) {\n        _parseConfig(cfg);\n      }\n      /* Clean up removed elements */\n\n\n      DOMPurify.removed = [];\n      /* Check if dirty is correctly typed for IN_PLACE */\n\n      if (typeof dirty === 'string') {\n        IN_PLACE = false;\n      }\n\n      if (IN_PLACE) {\n        /* Do some early pre-sanitization to avoid unsafe root nodes */\n        if (dirty.nodeName) {\n          var tagName = transformCaseFunc(dirty.nodeName);\n\n          if (!ALLOWED_TAGS[tagName] || FORBID_TAGS[tagName]) {\n            throw typeErrorCreate('root node is forbidden and cannot be sanitized in-place');\n          }\n        }\n      } else if (dirty instanceof Node) {\n        /* If dirty is a DOM element, append to an empty document to avoid\n           elements being stripped by the parser */\n        body = _initDocument('<!---->');\n        importedNode = body.ownerDocument.importNode(dirty, true);\n\n        if (importedNode.nodeType === 1 && importedNode.nodeName === 'BODY') {\n          /* Node is already a body, use as is */\n          body = importedNode;\n        } else if (importedNode.nodeName === 'HTML') {\n          body = importedNode;\n        } else {\n          // eslint-disable-next-line unicorn/prefer-dom-node-append\n          body.appendChild(importedNode);\n        }\n      } else {\n        /* Exit directly if we have nothing to do */\n        if (!RETURN_DOM && !SAFE_FOR_TEMPLATES && !WHOLE_DOCUMENT && // eslint-disable-next-line unicorn/prefer-includes\n        dirty.indexOf('<') === -1) {\n          return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(dirty) : dirty;\n        }\n        /* Initialize the document to work on */\n\n\n        body = _initDocument(dirty);\n        /* Check we have a DOM node from the data */\n\n        if (!body) {\n          return RETURN_DOM ? null : RETURN_TRUSTED_TYPE ? emptyHTML : '';\n        }\n      }\n      /* Remove first element node (ours) if FORCE_BODY is set */\n\n\n      if (body && FORCE_BODY) {\n        _forceRemove(body.firstChild);\n      }\n      /* Get node iterator */\n\n\n      var nodeIterator = _createIterator(IN_PLACE ? dirty : body);\n      /* Now start iterating over the created document */\n\n\n      while (currentNode = nodeIterator.nextNode()) {\n        /* Fix IE's strange behavior with manipulated textNodes #89 */\n        if (currentNode.nodeType === 3 && currentNode === oldNode) {\n          continue;\n        }\n        /* Sanitize tags and elements */\n\n\n        if (_sanitizeElements(currentNode)) {\n          continue;\n        }\n        /* Shadow DOM detected, sanitize it */\n\n\n        if (currentNode.content instanceof DocumentFragment) {\n          _sanitizeShadowDOM(currentNode.content);\n        }\n        /* Check attributes, sanitize if necessary */\n\n\n        _sanitizeAttributes(currentNode);\n\n        oldNode = currentNode;\n      }\n\n      oldNode = null;\n      /* If we sanitized `dirty` in-place, return it. */\n\n      if (IN_PLACE) {\n        return dirty;\n      }\n      /* Return sanitized string or DOM */\n\n\n      if (RETURN_DOM) {\n        if (RETURN_DOM_FRAGMENT) {\n          returnNode = createDocumentFragment.call(body.ownerDocument);\n\n          while (body.firstChild) {\n            // eslint-disable-next-line unicorn/prefer-dom-node-append\n            returnNode.appendChild(body.firstChild);\n          }\n        } else {\n          returnNode = body;\n        }\n\n        if (ALLOWED_ATTR.shadowroot) {\n          /*\n            AdoptNode() is not used because internal state is not reset\n            (e.g. the past names map of a HTMLFormElement), this is safe\n            in theory but we would rather not risk another attack vector.\n            The state that is cloned by importNode() is explicitly defined\n            by the specs.\n          */\n          returnNode = importNode.call(originalDocument, returnNode, true);\n        }\n\n        return returnNode;\n      }\n\n      var serializedHTML = WHOLE_DOCUMENT ? body.outerHTML : body.innerHTML;\n      /* Serialize doctype if allowed */\n\n      if (WHOLE_DOCUMENT && ALLOWED_TAGS['!doctype'] && body.ownerDocument && body.ownerDocument.doctype && body.ownerDocument.doctype.name && regExpTest(DOCTYPE_NAME, body.ownerDocument.doctype.name)) {\n        serializedHTML = '<!DOCTYPE ' + body.ownerDocument.doctype.name + '>\\n' + serializedHTML;\n      }\n      /* Sanitize final string template-safe */\n\n\n      if (SAFE_FOR_TEMPLATES) {\n        serializedHTML = stringReplace(serializedHTML, MUSTACHE_EXPR$1, ' ');\n        serializedHTML = stringReplace(serializedHTML, ERB_EXPR$1, ' ');\n      }\n\n      return trustedTypesPolicy && RETURN_TRUSTED_TYPE ? trustedTypesPolicy.createHTML(serializedHTML) : serializedHTML;\n    };\n    /**\n     * Public method to set the configuration once\n     * setConfig\n     *\n     * @param {Object} cfg configuration object\n     */\n\n\n    DOMPurify.setConfig = function (cfg) {\n      _parseConfig(cfg);\n\n      SET_CONFIG = true;\n    };\n    /**\n     * Public method to remove the configuration\n     * clearConfig\n     *\n     */\n\n\n    DOMPurify.clearConfig = function () {\n      CONFIG = null;\n      SET_CONFIG = false;\n    };\n    /**\n     * Public method to check if an attribute value is valid.\n     * Uses last set config, if any. Otherwise, uses config defaults.\n     * isValidAttribute\n     *\n     * @param  {string} tag Tag name of containing element.\n     * @param  {string} attr Attribute name.\n     * @param  {string} value Attribute value.\n     * @return {Boolean} Returns true if `value` is valid. Otherwise, returns false.\n     */\n\n\n    DOMPurify.isValidAttribute = function (tag, attr, value) {\n      /* Initialize shared config vars if necessary. */\n      if (!CONFIG) {\n        _parseConfig({});\n      }\n\n      var lcTag = transformCaseFunc(tag);\n      var lcName = transformCaseFunc(attr);\n      return _isValidAttribute(lcTag, lcName, value);\n    };\n    /**\n     * AddHook\n     * Public method to add DOMPurify hooks\n     *\n     * @param {String} entryPoint entry point for the hook to add\n     * @param {Function} hookFunction function to execute\n     */\n\n\n    DOMPurify.addHook = function (entryPoint, hookFunction) {\n      if (typeof hookFunction !== 'function') {\n        return;\n      }\n\n      hooks[entryPoint] = hooks[entryPoint] || [];\n      arrayPush(hooks[entryPoint], hookFunction);\n    };\n    /**\n     * RemoveHook\n     * Public method to remove a DOMPurify hook at a given entryPoint\n     * (pops it from the stack of hooks if more are present)\n     *\n     * @param {String} entryPoint entry point for the hook to remove\n     * @return {Function} removed(popped) hook\n     */\n\n\n    DOMPurify.removeHook = function (entryPoint) {\n      if (hooks[entryPoint]) {\n        return arrayPop(hooks[entryPoint]);\n      }\n    };\n    /**\n     * RemoveHooks\n     * Public method to remove all DOMPurify hooks at a given entryPoint\n     *\n     * @param  {String} entryPoint entry point for the hooks to remove\n     */\n\n\n    DOMPurify.removeHooks = function (entryPoint) {\n      if (hooks[entryPoint]) {\n        hooks[entryPoint] = [];\n      }\n    };\n    /**\n     * RemoveAllHooks\n     * Public method to remove all DOMPurify hooks\n     *\n     */\n\n\n    DOMPurify.removeAllHooks = function () {\n      hooks = {};\n    };\n\n    return DOMPurify;\n  }\n\n  var purify = createDOMPurify();\n\n  return purify;\n\n}));\n//# sourceMappingURL=purify.js.map\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/dompurify/dist/purify.js\n// module id = 588\n// module chunks = 18 21 88","import { ISearchEndpoint } from '../../rest/SearchEndpointInterface';\nimport { AllKeywordsInput } from './KeywordsInput/AllKeywordsInput';\nimport { ExactKeywordsInput } from './KeywordsInput/ExactKeywordsInput';\nimport { AnyKeywordsInput } from './KeywordsInput/AnyKeywordsInput';\nimport { NoneKeywordsInput } from './KeywordsInput/NoneKeywordsInput';\nimport { AnytimeDateInput } from './DateInput/AnytimeDateInput';\nimport { InTheLastDateInput } from './DateInput/InTheLastDateInput';\nimport { BetweenDateInput } from './DateInput/BetweenDateInput';\nimport { IAdvancedSearchInput } from './AdvancedSearchInput';\nimport { SimpleFieldInput } from './DocumentInput/SimpleFieldInput';\nimport { AdvancedFieldInput } from './DocumentInput/AdvancedFieldInput';\nimport { SizeInput } from './DocumentInput/SizeInput';\nimport { IFieldInputParameters } from './AdvancedSearchInput';\n\nexport class AdvancedSearchInputFactory {\n  constructor(private endpoint: ISearchEndpoint, private root: HTMLElement) {}\n\n  public create(name: string, options?: IFieldInputParameters): IAdvancedSearchInput {\n    switch (name) {\n      case 'keywords_all':\n        return this.createAllKeywordsInput();\n      case 'keywords_exact':\n        return this.createExactKeywordsInput();\n      case 'keywords_any':\n        return this.createAnyKeywordsInput();\n      case 'keywords_none':\n        return this.createNoneKeywordsInput();\n      case 'date_any':\n        return this.createAnytimeDateInput();\n      case 'date_last':\n        return this.createInTheLastDateInput();\n      case 'date_between':\n        return this.createBetweenDateInput();\n      case 'document_field':\n        return this.createSimpleFieldInput(options.name, options.field);\n      case 'document_advanced_field':\n        return this.createAdvancedFieldInput(options.name, options.field);\n      case 'document_size':\n        return this.createSizeInput();\n      default:\n        return null;\n    }\n  }\n\n  public createAllKeywordsInput(): AllKeywordsInput {\n    return new AllKeywordsInput(this.root);\n  }\n\n  public createExactKeywordsInput(): ExactKeywordsInput {\n    return new ExactKeywordsInput(this.root);\n  }\n\n  public createAnyKeywordsInput(): AnyKeywordsInput {\n    return new AnyKeywordsInput(this.root);\n  }\n\n  public createNoneKeywordsInput(): NoneKeywordsInput {\n    return new NoneKeywordsInput(this.root);\n  }\n\n  public createAnytimeDateInput(): AnytimeDateInput {\n    return new AnytimeDateInput(this.root);\n  }\n\n  public createInTheLastDateInput(): InTheLastDateInput {\n    return new InTheLastDateInput(this.root);\n  }\n\n  public createBetweenDateInput(): BetweenDateInput {\n    return new BetweenDateInput(this.root);\n  }\n\n  public createSimpleFieldInput(name: string, field: string): SimpleFieldInput {\n    return new SimpleFieldInput(name, field, this.endpoint, this.root);\n  }\n\n  public createAdvancedFieldInput(name: string, field: string): AdvancedFieldInput {\n    return new AdvancedFieldInput(name, field, this.root);\n  }\n\n  public createSizeInput() {\n    return new SizeInput(this.root);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/AdvancedSearch/AdvancedSearchInputFactory.ts","import { KeywordsInput } from './KeywordsInput';\nimport { l } from '../../../strings/Strings';\n\nexport class AllKeywordsInput extends KeywordsInput {\n  constructor(public root: HTMLElement) {\n    super(l('AllTheseWords'), root);\n  }\n\n  public getValue() {\n    const value = super.getValue();\n    if (!value) {\n      return '';\n    }\n    return `<@-${value}-@>`;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/AdvancedSearch/KeywordsInput/AllKeywordsInput.ts","import { KeywordsInput } from './KeywordsInput';\nimport { l } from '../../../strings/Strings';\n\nexport class ExactKeywordsInput extends KeywordsInput {\n  constructor(public root: HTMLElement) {\n    super(l('ExactPhrase'), root);\n  }\n\n  public getValue() {\n    const value = super.getValue();\n    if (!value) {\n      return '';\n    }\n    return `\"<@-${value}-@>\"`;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/AdvancedSearch/KeywordsInput/ExactKeywordsInput.ts","import { KeywordsInput } from './KeywordsInput';\nimport { l } from '../../../strings/Strings';\n\nexport class AnyKeywordsInput extends KeywordsInput {\n  constructor(public root: HTMLElement) {\n    super(l('AnyOfTheseWords'), root);\n  }\n\n  public getValue() {\n    const value = super.getValue();\n    if (!value) {\n      return '';\n    }\n    return super\n      .getValue()\n      .replace(/\\s+/g, ' ')\n      .split(' ')\n      .map(keyword => `\"<@-${keyword}-@>\"`)\n      .join(' OR ');\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/AdvancedSearch/KeywordsInput/AnyKeywordsInput.ts","import { KeywordsInput } from './KeywordsInput';\nimport { l } from '../../../strings/Strings';\n\nexport class NoneKeywordsInput extends KeywordsInput {\n  constructor(public root: HTMLElement) {\n    super(l('NoneOfTheseWords'), root);\n  }\n\n  public getValue() {\n    const value = super.getValue();\n    if (!value) {\n      return '';\n    }\n    return value\n      .replace(/\\s+/g, ' ')\n      .split(' ')\n      .map(keyword => `NOT \"<@-${keyword}-@>\"`)\n      .join(' ');\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/AdvancedSearch/KeywordsInput/NoneKeywordsInput.ts","import { DateInput } from './DateInput';\nimport { l } from '../../../strings/Strings';\nimport { $$ } from '../../../utils/Dom';\nimport { AdvancedSearchEvents } from '../../../events/AdvancedSearchEvents';\n\nexport class AnytimeDateInput extends DateInput {\n  constructor(public root: HTMLElement) {\n    super(l('Anytime'), root);\n  }\n\n  public getValue() {\n    return null;\n  }\n\n  public build(): HTMLElement {\n    super.build();\n    let radio = this.getRadio();\n    radio.checked = true;\n    $$(radio).on('change', () => {\n      if (this.root) {\n        $$(this.root).trigger(AdvancedSearchEvents.executeAdvancedSearch);\n      } else {\n        $$(this.element).trigger(AdvancedSearchEvents.executeAdvancedSearch);\n      }\n    });\n    return this.element;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/AdvancedSearch/DateInput/AnytimeDateInput.ts","import { DateInput } from './DateInput';\nimport { $$ } from '../../../utils/Dom';\nimport { l } from '../../../strings/Strings';\nimport { Dropdown } from '../../FormWidgets/Dropdown';\nimport { NumericSpinner } from '../../FormWidgets/NumericSpinner';\nimport { DateUtils } from '../../../utils/DateUtils';\n\nexport class InTheLastDateInput extends DateInput {\n  public dropdown: Dropdown;\n  public spinner: NumericSpinner;\n\n  constructor(public root: HTMLElement) {\n    super(l('InTheLast'), root);\n  }\n\n  public reset() {\n    this.dropdown.reset();\n    this.spinner.reset();\n  }\n\n  public build(): HTMLElement {\n    super.build();\n    const input = $$('fieldset', { className: 'coveo-advanced-search-date-input' });\n    (<HTMLFieldSetElement>input.el).disabled = true;\n\n    this.spinner = new NumericSpinner(this.onChange.bind(this), undefined, undefined, l('InTheLast'));\n    input.append(this.spinner.getElement());\n\n    this.dropdown = new Dropdown(this.onChange.bind(this), ['Days', 'Months'], undefined, l('InTheLast'));\n    this.dropdown.setId('coveo-advanced-search-in-the-last-select');\n    input.append(this.dropdown.getElement());\n\n    this.element.appendChild(input.el);\n\n    $$(this.getRadio()).on('change', this.onChange.bind(this));\n    return this.element;\n  }\n\n  public getValue(): string {\n    const currentDate = new Date();\n    const time = this.spinner.getIntValue();\n    const size = this.dropdown.getValue().toLowerCase();\n\n    const date = new Date();\n    if (size == 'months') {\n      date.setMonth(currentDate.getMonth() - time);\n    } else {\n      date.setDate(currentDate.getDate() - time);\n    }\n\n    return this.isSelected() && time ? '@date>=' + DateUtils.dateForQuery(date) : '';\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/AdvancedSearch/DateInput/InTheLastDateInput.ts","import { DateInput } from './DateInput';\nimport { DatePicker } from '../../FormWidgets/DatePicker';\nimport { l } from '../../../strings/Strings';\nimport { $$ } from '../../../utils/Dom';\nimport { DateUtils } from '../../../utils/DateUtils';\nimport { TimeSpan } from '../../../utils/TimeSpanUtils';\n\nexport class BetweenDateInput extends DateInput {\n  public firstDatePicker: DatePicker = new DatePicker(this.onChange.bind(this));\n  public secondDatePicker: DatePicker = new DatePicker(this.onChange.bind(this));\n\n  constructor(public root: HTMLElement) {\n    super(l('Between'), root);\n  }\n\n  public reset() {\n    this.firstDatePicker.reset();\n    this.secondDatePicker.reset();\n  }\n\n  public build(): HTMLElement {\n    super.build();\n    const container = $$('fieldset', { className: 'coveo-advanced-search-date-input' });\n    (<HTMLFieldSetElement>container.el).disabled = true;\n\n    container.append(this.firstDatePicker.getElement());\n    container.append(this.buildAnd());\n    container.append(this.secondDatePicker.getElement());\n\n    this.element.appendChild(container.el);\n    return this.element;\n  }\n\n  public getValue(): string {\n    const firstDate = this.firstDatePicker.getDateValue();\n    const secondDate = this.secondDatePicker.getDateValue();\n    const firstDateAsString = this.firstDatePicker.getValue();\n    const secondDateAsString = this.secondDatePicker.getValue();\n\n    let query = '';\n\n    if (this.isSelected()) {\n      if (firstDate && secondDate) {\n        const timespan = TimeSpan.fromDates(\n          DateUtils.convertFromJsonDateIfNeeded(firstDate),\n          DateUtils.convertFromJsonDateIfNeeded(secondDateAsString)\n        );\n        if (timespan.getMilliseconds() < 0) {\n          throw l('QueryExceptionInvalidDate');\n        }\n      }\n      if (firstDateAsString) {\n        query += `(@date>=${firstDateAsString})`;\n      }\n      if (secondDateAsString) {\n        query += `(@date<=${secondDateAsString})`;\n      }\n    }\n    return query;\n  }\n\n  private buildAnd(): HTMLElement {\n    const and = $$('div', { className: 'coveo-advanced-search-and' });\n    and.text(l('And').toLowerCase());\n    return and.el;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/AdvancedSearch/DateInput/BetweenDateInput.ts","import * as _ from 'underscore';\nimport { IIndexFieldValue } from '../../../rest/FieldValue';\nimport { ISearchEndpoint } from '../../../rest/SearchEndpointInterface';\nimport { FacetUtils } from '../../../ui/Facet/FacetUtils';\nimport { $$ } from '../../../utils/Dom';\nimport { QueryBuilder } from '../../Base/QueryBuilder';\nimport { Dropdown } from '../../FormWidgets/Dropdown';\nimport { DocumentInput } from './DocumentInput';\n\nexport class SimpleFieldInput extends DocumentInput {\n  protected element: HTMLElement;\n  public dropDown: Dropdown;\n\n  constructor(public inputName: string, public fieldName: string, private endpoint: ISearchEndpoint, public root: HTMLElement) {\n    super(inputName, root);\n  }\n\n  public reset() {\n    this.dropDown.reset();\n  }\n\n  public build(): HTMLElement {\n    let fieldInput = $$(super.build());\n    this.buildFieldSelect().then(() => {\n      fieldInput.append(this.dropDown.getElement());\n    });\n    this.element = fieldInput.el;\n    return this.element;\n  }\n\n  public getValue(): string {\n    let value = this.dropDown ? this.dropDown.getValue() : '';\n    let queryBuilder = new QueryBuilder();\n    if (value) {\n      queryBuilder.advancedExpression.addFieldExpression(this.fieldName, '==', [value]);\n      return queryBuilder.build().aq;\n    } else {\n      return '';\n    }\n  }\n\n  private buildFieldSelect() {\n    return this.endpoint\n      .listFieldValues({\n        field: this.fieldName,\n        maximumNumberOfValues: 50\n      })\n      .then((values: IIndexFieldValue[]) => {\n        let options = [''];\n        _.each(values, (value: IIndexFieldValue) => {\n          options.push(value.value);\n        });\n        this.dropDown = new Dropdown(\n          this.onChange.bind(this),\n          options,\n          (str: string) => {\n            return FacetUtils.tryToGetTranslatedCaption(this.fieldName, str);\n          },\n          this.inputName\n        );\n      });\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/AdvancedSearch/DocumentInput/SimpleFieldInput.ts","import { Dropdown } from '../../FormWidgets/Dropdown';\nimport { TextInput } from '../../FormWidgets/TextInput';\nimport { $$ } from '../../../utils/Dom';\nimport { DocumentInput } from './DocumentInput';\nimport { QueryBuilder } from '../../Base/QueryBuilder';\n\nexport class AdvancedFieldInput extends DocumentInput {\n  protected element: HTMLElement;\n  public mode: Dropdown;\n  public input: TextInput;\n\n  constructor(public inputName: string, public fieldName: string, public root: HTMLElement) {\n    super(inputName, root);\n  }\n\n  public reset() {\n    this.mode.reset();\n    this.input.reset();\n  }\n\n  public build(): HTMLElement {\n    const fieldInput = $$(super.build());\n    this.mode = new Dropdown(this.onChange.bind(this), ['Contains', 'DoesNotContain', 'Matches'], undefined, this.inputName);\n    fieldInput.append(this.mode.getElement());\n    this.input = new TextInput(this.onChange.bind(this), this.inputName);\n    fieldInput.append(this.input.getElement());\n    this.element = fieldInput.el;\n    return this.element;\n  }\n\n  public getValue(): string {\n    let inputValue = this.input.getValue();\n    let builder = new QueryBuilder();\n    if (inputValue) {\n      switch (this.mode.getValue()) {\n        case 'Contains':\n          builder.advancedExpression.addFieldExpression(this.fieldName, '=', [inputValue]);\n          return builder.build().aq;\n\n        case 'DoesNotContain':\n          builder.advancedExpression.addFieldExpression(this.fieldName, '<>', [inputValue]);\n          return builder.build().aq;\n        default:\n          builder.advancedExpression.addFieldExpression(this.fieldName, '==', [inputValue]);\n          return builder.build().aq;\n      }\n    }\n    return '';\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/AdvancedSearch/DocumentInput/AdvancedFieldInput.ts","import { l } from '../../../strings/Strings';\nimport { $$ } from '../../../utils/Dom';\nimport { QueryBuilder } from '../../Base/QueryBuilder';\nimport { Dropdown } from '../../FormWidgets/Dropdown';\nimport { NumericSpinner } from '../../FormWidgets/NumericSpinner';\nimport { DocumentInput } from './DocumentInput';\n\nexport class SizeInput extends DocumentInput {\n  public static modes = ['AtLeast', 'AtMost'];\n  public static sizes = ['KB', 'MB', 'Bytes'];\n\n  protected element: HTMLElement;\n  public modeSelect: Dropdown;\n  public sizeInput: NumericSpinner;\n  public sizeSelect: Dropdown;\n\n  constructor(public root: HTMLElement) {\n    super('Size', root);\n  }\n\n  public reset() {\n    this.modeSelect.reset();\n    this.sizeInput.reset();\n  }\n\n  public build(): HTMLElement {\n    const sizeInput = $$(super.build());\n    const sizeInputSection = $$('div', { className: 'coveo-size-input-mode-section' });\n\n    this.modeSelect = new Dropdown(this.onChange.bind(this), SizeInput.modes, undefined, l('Size'));\n    this.modeSelect.setId('coveo-size-input-mode');\n    sizeInputSection.append(this.modeSelect.getElement());\n\n    this.sizeInput = new NumericSpinner(this.onChange.bind(this), undefined, undefined, l('SizeValue'));\n    sizeInputSection.append(this.sizeInput.getElement());\n\n    this.sizeSelect = new Dropdown(this.onChange.bind(this), SizeInput.sizes, undefined, l('UnitMeasurement'));\n    this.sizeSelect.setId('coveo-size-input-select');\n    sizeInputSection.append(this.sizeSelect.getElement());\n    sizeInput.append(sizeInputSection.el);\n    this.element = sizeInput.el;\n    return this.element;\n  }\n\n  public getValue(): string {\n    let size = this.getSizeInBytes();\n    let queryBuilder = new QueryBuilder();\n    if (size) {\n      switch (this.modeSelect.getValue()) {\n        case 'AtLeast':\n          queryBuilder.advancedExpression.addFieldExpression('@size', '>=', [this.getSizeInBytes().toString()]);\n          return queryBuilder.build().aq;\n        default:\n          queryBuilder.advancedExpression.addFieldExpression('@size', '<=', [this.getSizeInBytes().toString()]);\n          return queryBuilder.build().aq;\n      }\n    }\n    return '';\n  }\n\n  private getSizeInBytes(): number {\n    let size = this.sizeInput.getFloatValue();\n    switch (this.sizeSelect.getValue()) {\n      case 'KB':\n        return size * 1024;\n      case 'MB':\n        return size * Math.pow(1024, 2);\n      default:\n        return size;\n    }\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/AdvancedSearch/DocumentInput/SizeInput.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_AdvancedSearch.scss\n// module id = 600\n// module chunks = 14 88","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_AuthenticationProvider.scss\n// module id = 601\n// module chunks = 77 88","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_Backdrop.scss\n// module id = 602\n// module chunks = 23 88","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_Breadcrumb.scss\n// module id = 603\n// module chunks = 76 88","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_CardActionBar.scss\n// module id = 604\n// module chunks = 75 88","/**\n * The CardOverlayEvents class contains string definitions for all events related to the {@link CardOverlay} component.\n */\nexport class CardOverlayEvents {\n  /**\n   * Opening a {@link CardOverlay} component triggers this event (see {@link CardOverlay.openOverlay}).\n   *\n   * @type {string}\n   */\n  public static openCardOverlay = 'openCardOverlay';\n\n  /**\n   * Closing a {@link CardOverlay} component triggers this event (see {@link CardOverlay.closeOverlay}).\n   *\n   * @type {string}\n   */\n  public static closeCardOverlay = 'closeCardOverlay';\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/events/CardOverlayEvents.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_CardOverlay.scss\n// module id = 606\n// module chunks = 49 88","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_DidYouMean.scss\n// module id = 607\n// module chunks = 74 88","import { EndpointCaller } from '../../rest/EndpointCaller';\nimport { IGeolocationPosition, IGeolocationPositionProvider } from '../../events/DistanceEvents';\n\nconst GOOGLE_MAP_BASE_URL = 'https://www.googleapis.com/geolocation/v1/geolocate';\n\ninterface IGeolocationResponse {\n  location: IGeolocationResponseLocation;\n}\n\ninterface IGeolocationResponseLocation {\n  lat: number;\n  lng: number;\n}\n\n/**\n * The `GoogleApiPositionProvider` class uses the\n * [Google Maps Geolocation API](https://developers.google.com/maps/documentation/geolocation/intro) to provide the\n * position of the end user to a [`DistanceResources`]{@link DistanceResources} component whose\n * [`googleApiKey`]{@link DistanceResources.options.googleApiKey} option is set to a valid  Google Maps Geolocation API\n * key.\n */\nexport class GoogleApiPositionProvider implements IGeolocationPositionProvider {\n  constructor(private googleApiKey: string) {}\n\n  public async getPosition(): Promise<IGeolocationPosition> {\n    const responseData = await new EndpointCaller().call<IGeolocationResponse>({\n      errorsAsSuccess: false,\n      method: 'POST',\n      queryString: [`key=${this.googleApiKey}`],\n      requestData: {},\n      responseType: 'json',\n      url: GOOGLE_MAP_BASE_URL\n    });\n    const location = responseData.data.location;\n    return {\n      longitude: location.lng,\n      latitude: location.lat\n    };\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Distance/GoogleApiPositionProvider.ts","import { IGeolocationPositionProvider, IGeolocationPosition } from '../../events/DistanceEvents';\n\n/**\n * The `NavigatorPositionProvider` class uses the current web browser to provide the position of the end user to\n * a [`DistanceResources`]{@link DistanceResources} component whose\n * [`useNavigator`]{DistanceResources.options.useNavigator} option is set to `true`.\n *\n * **Note:**\n * > Recent web browsers typically require a site to be in HTTPS to enable their geolocation service.\n */\nexport class NavigatorPositionProvider implements IGeolocationPositionProvider {\n  public getPosition(): Promise<IGeolocationPosition> {\n    return new Promise<IGeolocationPosition>((resolve, reject) => {\n      navigator.geolocation.getCurrentPosition(\n        position => {\n          resolve({\n            latitude: position.coords.latitude,\n            longitude: position.coords.longitude\n          });\n        },\n        error => {\n          reject(error);\n        }\n      );\n    });\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Distance/NavigatorPositionProvider.ts","import { IGeolocationPositionProvider, IGeolocationPosition } from '../../events/DistanceEvents';\n\n/**\n * The `StaticPositionProvider` class provides a static end user position to a\n * [`DistanceResources`]{@link DistanceResources} component.\n */\nexport class StaticPositionProvider implements IGeolocationPositionProvider {\n  constructor(private latitude: number, private longitude: number) {}\n\n  public getPosition(): Promise<IGeolocationPosition> {\n    return Promise.resolve({\n      longitude: this.longitude,\n      latitude: this.latitude\n    });\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Distance/StaticPositionProvider.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_ErrorReport.scss\n// module id = 611\n// module chunks = 73 88","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_Excerpt.scss\n// module id = 612\n// module chunks = 72 88","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_ExportToExcel.scss\n// module id = 613\n// module chunks = 71 88","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_FacetSlider.scss\n// module id = 614\n// module chunks = 13 88","/// <reference path=\"../ui/FacetSlider/FacetSlider.ts\" />\n\nimport { clone, each, map, range } from 'underscore';\nimport { IQuerySuccessEventArgs, QueryEvents } from '../events/QueryEvents';\nimport { Logger } from '../misc/Logger';\nimport { IGroupByRequest } from '../rest/GroupByRequest';\nimport { IRangeValue } from '../rest/RangeValue';\nimport { ExpressionBuilder } from '../ui/Base/ExpressionBuilder';\nimport { QueryBuilder } from '../ui/Base/QueryBuilder';\nimport { FacetSlider } from '../ui/FacetSlider/FacetSlider';\nimport { DateUtils } from '../utils/DateUtils';\nimport { QueryUtils } from '../utils/QueryUtils';\nimport { QueryBuilderExpression } from '../ui/Base/QueryBuilderExpression';\nimport { Utils } from '../utils/Utils';\n\nexport class FacetSliderQueryController {\n  public graphGroupByQueriesIndex: number;\n  private rangeValuesForGraphToUse: { start: any; end: any }[];\n  public lastGroupByRequestIndex: number;\n  public lastGroupByRequestForFullRangeIndex: number;\n\n  constructor(public facet: FacetSlider) {\n    this.facet.bind.onRootElement(QueryEvents.querySuccess, (args: IQuerySuccessEventArgs) => this.handleQuerySuccess(args));\n  }\n\n  public prepareForNewQuery() {\n    this.lastGroupByRequestIndex = undefined;\n  }\n\n  public putGroupByIntoQueryBuilder(queryBuilder: QueryBuilder) {\n    if (this.facet.options.graph) {\n      this.putGroupByForGraphIntoQueryBuilder(queryBuilder);\n    }\n    this.putGroupByForSliderIntoQueryBuilder(queryBuilder);\n  }\n\n  private createBasicGroupByRequest() {\n    const groupByQuery: IGroupByRequest = {\n      field: <string>this.facet.options.field,\n      completeFacetWithStandardValues: true,\n      allowedValues: undefined\n    };\n    return groupByQuery;\n  }\n\n  public computeOurFilterExpression(boundary = [this.facet.startOfSlider, this.facet.endOfSlider]) {\n    const builder = new ExpressionBuilder();\n    if (boundary[0] != undefined && boundary[1] != undefined) {\n      if (this.facet.options.excludeOuterBounds) {\n        this.addFilterExpressionWithOuterBoundsExcluded(boundary[0], boundary[1], builder);\n      } else {\n        this.addFilterExpressionWithOuterBoundsIncluded(boundary[0], boundary[1], builder);\n      }\n    }\n    return builder.build();\n  }\n\n  private handleQuerySuccess(args: IQuerySuccessEventArgs) {\n    if (!this.isAValidRangeResponse(args)) {\n      const logger = new Logger(this);\n      logger.error(\n        `Cannot instantiate FacetSlider for this field : ${this.facet.options.field}. It needs to be configured as a numerical field in the index`\n      );\n      logger.error(`Disabling the FacetSlider`, this.facet);\n      this.facet.disable();\n      return;\n    }\n\n    if (this.facet.options && this.facet.options.graph && this.rangeValuesForGraphToUse == undefined) {\n      this.rangeValuesForGraphToUse = [];\n      const groupByResult = args.results.groupByResults[this.graphGroupByQueriesIndex];\n      const rawValues = groupByResult ? groupByResult.values : [];\n      each(rawValues, rawValue => {\n        const rawSplit = rawValue.value.split('..');\n        this.rangeValuesForGraphToUse.push({\n          start: this.facet.options.dateField ? this.getISOFormat(rawSplit[0].replace('@', ' ')) : parseInt(rawSplit[0], 10),\n          end: this.facet.options.dateField ? this.getISOFormat(rawSplit[1].replace('@', ' ')) : parseInt(rawSplit[1], 10)\n        });\n      });\n    }\n  }\n\n  private isAValidRangeResponse(args: IQuerySuccessEventArgs) {\n    if (this.lastGroupByRequestIndex != undefined && args.results.groupByResults[this.lastGroupByRequestIndex]) {\n      const firstValue = args.results.groupByResults[this.lastGroupByRequestIndex].values[0];\n      if (firstValue && !QueryUtils.isRangeString(firstValue.value)) {\n        return false;\n      }\n    }\n    return true;\n  }\n\n  private addFilterExpressionWithOuterBoundsIncluded(start: any, end: any, builder: ExpressionBuilder) {\n    if (start != this.facet.options.start || end != this.facet.options.end) {\n      if (this.facet.options.dateField) {\n        start = this.getFilterDateFormat(start);\n        end = this.getFilterDateFormat(end);\n      }\n      builder.addFieldExpression(<string>this.facet.options.field, '==', [start + '..' + end]);\n    }\n  }\n\n  private addFilterExpressionWithOuterBoundsExcluded(start: any, end: any, builder: ExpressionBuilder) {\n    let startCompare = this.facet.options.start;\n    let endCompare = this.facet.options.end;\n    let startCompared = start;\n    let endCompared = end;\n    if (this.facet.options.dateField) {\n      startCompared = this.getFilterDateFormat(start);\n      endCompared = this.getFilterDateFormat(end);\n      startCompare = this.getFilterDateFormat(startCompare);\n      endCompare = this.getFilterDateFormat(endCompare);\n    } else {\n      startCompared += '';\n      endCompared += '';\n      startCompare += '';\n      endCompare += '';\n    }\n    if (startCompared != startCompare && endCompared == endCompare) {\n      builder.addFieldExpression(<string>this.facet.options.field, '>=', [startCompared]);\n    } else if (startCompared == startCompare && endCompared != endCompare) {\n      builder.addFieldExpression(<string>this.facet.options.field, '<=', [endCompared]);\n    } else {\n      this.addFilterExpressionWithOuterBoundsIncluded(start, end, builder);\n    }\n  }\n\n  private putGroupByForGraphIntoQueryBuilder(queryBuilder: QueryBuilder) {\n    this.graphGroupByQueriesIndex = queryBuilder.groupByRequests.length;\n    const basicGroupByRequestForGraph = this.createBasicGroupByRequest();\n\n    if (this.facet.isSimpleSliderConfig) {\n      basicGroupByRequestForGraph.rangeValues = this.createRangeValuesForGraphUsingStartAndEnd();\n      basicGroupByRequestForGraph.generateAutomaticRanges = false;\n    } else {\n      basicGroupByRequestForGraph.generateAutomaticRanges = true;\n    }\n\n    this.addExpressionToExcludeInvalidDates(basicGroupByRequestForGraph);\n\n    const filter = this.computeOurFilterExpression(this.facet.getSliderBoundaryForQuery());\n    this.processQueryOverride(filter, basicGroupByRequestForGraph, queryBuilder);\n\n    basicGroupByRequestForGraph.sortCriteria = 'nosort';\n    basicGroupByRequestForGraph.maximumNumberOfValues = this.facet.options.graph.steps;\n    queryBuilder.groupByRequests.push(basicGroupByRequestForGraph);\n  }\n\n  private putGroupByForSliderIntoQueryBuilder(queryBuilder: QueryBuilder) {\n    this.lastGroupByRequestIndex = queryBuilder.groupByRequests.length;\n\n    const basicGroupByRequestForSlider = this.putGroupByBasicSliderIntoQueryBuilder(queryBuilder);\n    this.putGroupByForFullRangeSliderIntoQueryBuilder(queryBuilder, basicGroupByRequestForSlider);\n  }\n\n  private processQueryOverride(filter: string, groupByRequest: IGroupByRequest, queryBuilder: QueryBuilder) {\n    let expression: QueryBuilderExpression;\n    if (filter != undefined) {\n      expression = queryBuilder.computeCompleteExpressionPartsExcept(filter);\n    } else {\n      expression = queryBuilder.computeCompleteExpressionParts();\n    }\n\n    const queryOverrideFromOptions = this.facet.options.queryOverride || '@uri';\n\n    groupByRequest.queryOverride = this.appendOrSetGroupByOverrideParam(groupByRequest.queryOverride, expression.basic);\n    groupByRequest.advancedQueryOverride = this.appendOrSetGroupByOverrideParam(groupByRequest.advancedQueryOverride, expression.advanced);\n    groupByRequest.constantQueryOverride = this.appendOrSetGroupByOverrideParam(groupByRequest.constantQueryOverride, expression.constant);\n    groupByRequest.advancedQueryOverride = this.appendOrSetGroupByOverrideParam(\n      groupByRequest.advancedQueryOverride,\n      queryOverrideFromOptions\n    );\n  }\n\n  private createRangeValuesForGraphUsingStartAndEnd() {\n    const { start, end } = this.getFormattedStartAndEnd();\n    const oneRange: IRangeValue = {\n      start: start,\n      end: end,\n      endInclusive: true,\n      label: 'Slider'\n    };\n\n    if (this.facet.options.graph.steps == undefined) {\n      this.facet.options.graph.steps = 10;\n    }\n    if (this.facet.options.dateField && isNaN(this.facet.options.start)) {\n      this.facet.options.start = new Date(this.facet.options.start).getTime();\n    }\n    if (this.facet.options.dateField && isNaN(this.facet.options.end)) {\n      this.facet.options.end = new Date(this.facet.options.end).getTime();\n    }\n    if (this.rangeValuesForGraphToUse != undefined) {\n      return this.usePrebuiltRange(oneRange);\n    } else {\n      return this.buildRange(oneRange);\n    }\n  }\n\n  private usePrebuiltRange(basicRangeRequest: IRangeValue) {\n    return map(this.rangeValuesForGraphToUse, value => {\n      return {\n        start: value.start,\n        end: value.end,\n        endInclusive: basicRangeRequest.endInclusive,\n        label: basicRangeRequest.label\n      };\n    });\n  }\n\n  private buildRange(basicRangeRequest: IRangeValue) {\n    const start = this.facet.options.start;\n    const oneStep = (this.facet.options.end - this.facet.options.start) / this.facet.options.graph.steps;\n    return map(range(0, this.facet.options.graph.steps, 1), step => {\n      let newStart = start + step * oneStep;\n      let newEnd = start + (step + 1) * oneStep;\n      if (this.facet.options.dateField) {\n        newStart = this.getISOFormat(newStart);\n        newEnd = this.getISOFormat(newEnd);\n      }\n      return {\n        endInclusive: basicRangeRequest.endInclusive,\n        label: basicRangeRequest.label,\n        start: newStart,\n        end: newEnd\n      };\n    });\n  }\n\n  private getFormattedStartAndEnd() {\n    let start = this.facet.options.start;\n    let end = this.facet.options.end;\n    if (this.facet.options.dateField) {\n      start = this.getISOFormat(start);\n      end = this.getISOFormat(end);\n    }\n    return {\n      start,\n      end\n    };\n  }\n\n  private getISOFormat(value: any) {\n    if (value) {\n      if (!isNaN(value)) {\n        value = Number(value);\n      }\n      let date = new Date(value);\n      if (!DateUtils.isValid(date)) {\n        date = new Date(this.getBrowserCompatibleFormat(value));\n        if (!DateUtils.isValid(date)) {\n          // If we get here, we'll probably get an error further down the line when querying the index anyway ...\n          this.facet.logger.error('Cannot parse this date format.', value, new Date(value));\n          return undefined;\n        }\n      }\n      return date.toISOString();\n    } else {\n      return undefined;\n    }\n  }\n\n  private getFilterDateFormat(rawValue: any) {\n    if (rawValue) {\n      return this.getISOFormat(rawValue).replace('T', '@').replace('.000Z', '').replace(/-/g, '/');\n    } else {\n      return undefined;\n    }\n  }\n\n  private getBrowserCompatibleFormat(value: string) {\n    return value.replace('@', 'T').replace(/\\//g, '-');\n  }\n\n  private putGroupByForFullRangeSliderIntoQueryBuilder(queryBuilder: QueryBuilder, basicGroupByRequest: IGroupByRequest) {\n    // We need a group by request for the \"full range\" that does not take into account the current query (query override)\n    // The goal is to obtain a query wich return the whole range of results without taking into account what the users typed in the search box,\n    // so that the X range of the slider is static between each queries.\n\n    this.lastGroupByRequestForFullRangeIndex = queryBuilder.groupByRequests.length;\n    const groupByRequestForFullRange = clone(basicGroupByRequest);\n\n    // This removes the \"basic\" query override. ie: user input\n    delete groupByRequestForFullRange.queryOverride;\n    // This removes any current filter in the facet caused by a selection\n    delete groupByRequestForFullRange.advancedQueryOverride;\n    // We keep the \"constantQueryOverride\", since it normally contains static filter always applied no matter what.\n\n    if (this.facet.options.queryOverride) {\n      groupByRequestForFullRange.advancedQueryOverride = this.facet.options.queryOverride;\n    }\n\n    this.addExpressionToExcludeInvalidDates(groupByRequestForFullRange);\n\n    // If, after the above treatment, * all * parts of the group by request override are still empty,\n    // we need to add at least one override for it to be able to actually \"disregard\" the current filters of the interface, and retrieve the full range from the index.\n    // If all query override parts stays empty, we end up with a useless query that is affected by any other filters in the interface\n    if (\n      groupByRequestForFullRange.queryOverride === undefined &&\n      groupByRequestForFullRange.advancedQueryOverride === undefined &&\n      groupByRequestForFullRange.constantQueryOverride === undefined\n    ) {\n      groupByRequestForFullRange.advancedQueryOverride = '@uri';\n    }\n\n    queryBuilder.groupByRequests.push(groupByRequestForFullRange);\n  }\n\n  private putGroupByBasicSliderIntoQueryBuilder(queryBuilder: QueryBuilder): IGroupByRequest {\n    let maximumNumberOfValues = 1;\n\n    if (this.facet.hasAGraph()) {\n      maximumNumberOfValues = this.facet.options.graph.steps;\n    }\n\n    let rangeValues: IRangeValue[];\n    if (this.facet.isSimpleSliderConfig) {\n      rangeValues = [\n        {\n          ...this.getFormattedStartAndEnd(),\n          label: 'slider',\n          endInclusive: false\n        }\n      ];\n    }\n\n    // A basic group by request that takes into account the current query\n    // This one will determine if the facet is empty for the current query\n    const basicGroupByRequestForSlider = this.createBasicGroupByRequest();\n    basicGroupByRequestForSlider.maximumNumberOfValues = maximumNumberOfValues;\n    basicGroupByRequestForSlider.sortCriteria = 'nosort';\n    basicGroupByRequestForSlider.generateAutomaticRanges = !this.facet.isSimpleSliderConfig;\n    basicGroupByRequestForSlider.rangeValues = rangeValues;\n    const filter = this.computeOurFilterExpression(this.facet.getSliderBoundaryForQuery());\n    this.processQueryOverride(filter, basicGroupByRequestForSlider, queryBuilder);\n    this.addExpressionToExcludeInvalidDates(basicGroupByRequestForSlider);\n\n    queryBuilder.groupByRequests.push(basicGroupByRequestForSlider);\n\n    return basicGroupByRequestForSlider;\n  }\n\n  private addExpressionToExcludeInvalidDates(groupByRequest: IGroupByRequest) {\n    if (this.facet.options.dateField) {\n      // When a connector sets an invalid or un-existing date,\n      // the Coveo index will automatically set its value to 1400/01/01 (the \"minimum\" value in the Boost C++ library).\n      // Here, we try to always force those values out,\n      // by putting a filter on dates above Unix epoch, otherwise all kinds of weird stuff will happen for the end users\n      // For example :\n      // - We'll get extremely huge range of dates, all with no values\n      //   (because it turns out not many document were actually produced in the medieval ages).\n      // - Graphs might get all out of bound, with very tiny slices.\n      // - Moment js will incorrectly evaluate the date.\n      // - You cannot actually query for those invalid document using date queries anyway,\n      //   meaning playing with the slider will always return \"no results\" if you try and filter on those invalid documents.\n      // Instead of taking the approach of garbage in/garbage out, this tries to do something a bit more sane for end users ...\n\n      const builderToRemoveInvalidRange = new QueryBuilder();\n      builderToRemoveInvalidRange.expression.addFieldExpression(this.facet.options.field as string, '>', [\n        this.getFilterDateFormat(new Date(0))\n      ]);\n      if (groupByRequest.constantQueryOverride) {\n        groupByRequest.constantQueryOverride += ` ${builderToRemoveInvalidRange.expression.build()}`;\n      } else {\n        groupByRequest.constantQueryOverride = builderToRemoveInvalidRange.expression.build();\n      }\n    }\n  }\n\n  private appendOrSetGroupByOverrideParam(param: string, value: string) {\n    if (Utils.isNullOrUndefined(value)) {\n      return param;\n    }\n\n    if (Utils.isNullOrUndefined(param)) {\n      return value || '';\n    } else {\n      return param + ' ' + (value || '');\n    }\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/controllers/FacetSliderQueryController.ts","import { max as d3max, select as d3select } from 'd3';\nimport { scaleBand, scaleLinear } from 'd3-scale';\nimport * as Globalize from 'globalize';\nimport { each, indexOf, map, min } from 'underscore';\nimport { IGraphValueSelectedArgs, SliderEvents } from '../../events/SliderEvents';\nimport { Logger } from '../../misc/Logger';\nimport { DeviceUtils } from '../../utils/DeviceUtils';\nimport { $$, Win } from '../../utils/Dom';\nimport { Utils } from '../../utils/Utils';\n\nexport interface IStartSlideEventArgs {\n  slider: Slider;\n  button: SliderButton;\n}\n\nexport interface IDuringSlideEventArgs {\n  slider: Slider;\n  button: SliderButton;\n}\n\nexport interface IEndSlideEventArgs {\n  slider: Slider;\n  button: SliderButton;\n}\n\nexport interface ISliderGraphData {\n  start: any;\n  y: number;\n  end: any;\n  isDate?: boolean;\n}\n\nexport interface ISliderOptions {\n  start?: any;\n  end?: any;\n  excludeOuterBounds?: boolean;\n  steps?: number;\n  getSteps?: (start: number, end: number) => number[];\n  rangeSlider?: boolean;\n  displayAsValue?: {\n    enable?: boolean;\n    unitSign?: string;\n    separator?: string;\n  };\n  displayAsPercent?: {\n    enable?: boolean;\n    separator?: string;\n  };\n  valueCaption?: (values: number[]) => string;\n  percentCaption?: (percent: number[]) => string;\n  dateFormat?: string;\n  document?: Document;\n  graph?: {\n    steps?: number;\n    animationDuration?: number;\n    margin?: {\n      top?: number;\n      bottom?: number;\n      left?: number;\n      right?: number;\n    };\n  };\n  dateField?: boolean;\n  rounded?: number;\n}\n\nexport const MAX_NUMBER_OF_STEPS = 100;\n\nexport class Slider {\n  public steps: number[] = [];\n  public currentValues: number[];\n  private sliderButton: SliderButton;\n  private sliderRange: SliderRange;\n  private sliderLine: SliderLine;\n  private sliderCaption: SliderCaption;\n  private sliderGraph: SliderGraph;\n\n  constructor(public element: HTMLElement, public options: ISliderOptions, public root: HTMLElement) {\n    if (this.options.dateField) {\n      this.options.start = new Date(this.options.start).getTime();\n      this.options.end = new Date(this.options.end).getTime();\n    }\n\n    if (this.options.rounded == undefined) {\n      this.options.rounded = 0;\n    }\n\n    if (this.options.steps || this.options.getSteps) {\n      this.buildSteps();\n    }\n\n    if (this.options.graph) {\n      this.sliderGraph = new SliderGraph(this);\n    }\n\n    this.sliderLine = new SliderLine(this);\n    each(this.sliderLine.build(), (e: HTMLElement) => {\n      this.element.appendChild(e);\n    });\n\n    if (this.options.rangeSlider) {\n      this.sliderRange = new SliderRange(this);\n      each(this.sliderRange.build(), (e: HTMLElement) => {\n        this.element.appendChild(e);\n      });\n    } else {\n      this.sliderButton = new SliderButton(this, 1);\n      const btnEl = this.sliderButton.build();\n      $$(btnEl).addClass('coveo-no-range-button');\n      this.element.appendChild(btnEl);\n      this.sliderLine.setActiveWidth(this.sliderButton);\n    }\n\n    this.sliderCaption = new SliderCaption(this);\n    this.element.appendChild(this.sliderCaption.build());\n  }\n\n  public onMoving() {\n    if (this.options.rangeSlider) {\n      this.sliderRange.setBoundary();\n      this.sliderLine.setActiveWidth(this.sliderRange.firstButton, this.sliderRange.secondButton);\n    } else {\n      this.setButtonBoundary();\n      this.sliderLine.setActiveWidth(this.sliderButton);\n    }\n    if (this.options.graph) {\n      this.sliderGraph.draw();\n    }\n    this.displayCaption();\n  }\n\n  public initializeState(values: number[] = [this.options.start, this.options.end]) {\n    this.currentValues = values;\n    if (this.options.rangeSlider) {\n      this.sliderRange.initializeSliderRangeState(values);\n      this.sliderLine.setActiveWidth(this.sliderRange.firstButton, this.sliderRange.secondButton);\n    } else {\n      if (values == undefined) {\n        this.sliderButton.toEnd();\n      } else {\n        this.sliderButton.setValue(values[1]);\n      }\n      this.setButtonBoundary();\n      this.sliderLine.setActiveWidth(this.sliderButton);\n    }\n    this.displayCaption();\n  }\n\n  public getPosition() {\n    if (this.options.rangeSlider) {\n      return this.sliderRange.getPosition();\n    } else {\n      return [0, this.sliderButton.getPosition()];\n    }\n  }\n\n  public getPercentPosition() {\n    if (this.options.rangeSlider) {\n      return this.sliderRange.getPercentPosition();\n    } else {\n      return [0, this.sliderButton.getPercent()];\n    }\n  }\n\n  public getValues() {\n    if (this.currentValues != undefined) {\n      return this.currentValues;\n    } else {\n      if (this.options.rangeSlider) {\n        return this.sliderRange.getValue();\n      } else {\n        return [this.options.start, this.sliderButton.getValue()];\n      }\n    }\n  }\n\n  public getCaptionFromValue(values: number[]) {\n    return this.sliderCaption.getCaptionFromValues(values);\n  }\n\n  public getCaption() {\n    return this.sliderCaption.getCaption();\n  }\n\n  public setValues(values: number[]) {\n    if (values != undefined) {\n      values[0] = Math.max(values[0], this.options.start);\n      values[1] = Math.min(values[1], this.options.end);\n    }\n    this.currentValues = values;\n    if (this.options.rangeSlider) {\n      this.sliderRange.setValue(values);\n      this.sliderLine.setActiveWidth(this.sliderRange.firstButton, this.sliderRange.secondButton);\n    } else {\n      this.sliderButton.setValue(values[1]);\n      this.sliderLine.setActiveWidth(this.sliderButton);\n    }\n    this.displayCaption();\n  }\n\n  public drawGraph(data?: ISliderGraphData[]) {\n    if (this.sliderGraph) {\n      this.sliderGraph.draw(data);\n    }\n  }\n\n  private setButtonBoundary() {\n    this.sliderButton.leftBoundary = 0;\n    this.sliderButton.rightBoundary = this.element.clientWidth;\n  }\n\n  private displayCaption() {\n    if (this.options.valueCaption != undefined) {\n      this.sliderCaption.setFromString(this.options.valueCaption(this.getValues()));\n    } else if (this.options.percentCaption != undefined) {\n      this.sliderCaption.setFromString(this.options.percentCaption(this.getPercentPosition()));\n    } else if (\n      this.options.displayAsPercent != undefined &&\n      this.options.displayAsPercent.separator != undefined &&\n      this.options.displayAsPercent.enable\n    ) {\n      this.sliderCaption.setAsPercent();\n    } else {\n      this.sliderCaption.setAsValue();\n    }\n  }\n\n  private buildSteps() {\n    if (this.options.getSteps) {\n      this.steps = this.options.getSteps(this.options.start, this.options.end);\n    } else {\n      if (this.options.steps > MAX_NUMBER_OF_STEPS) {\n        new Logger(this).warn(`Maximum number of steps for slider is ${MAX_NUMBER_OF_STEPS} for performance reason`);\n        this.options.steps = MAX_NUMBER_OF_STEPS;\n      }\n      const oneStep = (this.options.end - this.options.start) / Math.max(1, this.options.steps);\n      if (oneStep > 0) {\n        let currentStep = this.options.start;\n        let currentNumberOfSteps = 0;\n        while (currentStep <= this.options.end && currentNumberOfSteps <= MAX_NUMBER_OF_STEPS) {\n          this.steps.push(currentStep);\n          currentStep += oneStep;\n          currentNumberOfSteps++;\n        }\n      } else {\n        this.steps.push(this.options.start);\n        this.steps.push(this.options.end);\n      }\n    }\n  }\n}\n\nclass SliderLine {\n  private backGround: HTMLElement;\n  private activePart: HTMLElement;\n\n  constructor(public slider: Slider) {}\n\n  public build(): HTMLElement[] {\n    this.backGround = $$('div', {\n      className: 'coveo-slider-line coveo-background'\n    }).el;\n\n    this.activePart = $$('div', {\n      className: 'coveo-slider-line coveo-active'\n    }).el;\n\n    return [this.backGround, this.activePart];\n  }\n\n  public setActiveWidth(buttonOne: SliderButton, buttonTwo?: SliderButton) {\n    if (this.slider.options.rangeSlider) {\n      const width = (buttonTwo.getPercent() - buttonOne.getPercent()) * 100;\n      this.activePart.style.width = width + '%';\n      this.activePart.style.left = buttonOne.getPercent() * 100 + '%';\n      this.activePart.style.right = buttonTwo.getPercent() * 100 + '%';\n    } else {\n      const width = buttonOne.getPercent() * 100;\n      this.activePart.style.width = width + '%';\n    }\n  }\n}\n\n// This component relies heavily on mouse interaction, really difficult to test inside a UT context.\n// Ignore it\n/* istanbul ignore next */\nexport class SliderButton {\n  public leftBoundary: number;\n  public rightBoundary: number;\n  public element: HTMLElement;\n  private currentPos: number;\n  private startPositionX: number;\n  private isMouseDown: boolean;\n  private lastElementLeft: number;\n  private origUserSelect: string;\n  private origCursor: string;\n  private origZIndex: string;\n\n  private eventMouseDown = DeviceUtils.isMobileDevice() ? 'touchstart' : 'mousedown';\n  private eventMouseMove = DeviceUtils.isMobileDevice() ? 'touchmove' : 'mousemove';\n  private eventMouseUp = DeviceUtils.isMobileDevice() ? 'touchend' : 'mouseup';\n\n  constructor(public slider: Slider, private which: number) {}\n\n  public build() {\n    this.element = $$('div', {\n      className: 'coveo-slider-button'\n    }).el;\n\n    this.bindEvents();\n    this.element['CoveoSliderButton'] = this;\n    return this.element;\n  }\n\n  public toBeginning() {\n    this.element.style.left = '0%';\n  }\n\n  public toEnd() {\n    this.element.style.left = '100%';\n  }\n\n  public setValue(value: number) {\n    const percent = this.fromValueToPercent(value);\n    this.element.style.left = Math.round(percent * 100) + '%';\n  }\n\n  public getPosition() {\n    const left = this.element.style.left;\n    if (left.indexOf('%') != -1) {\n      return (parseFloat(left) / 100) * this.slider.element.clientWidth;\n    } else {\n      return parseFloat(left);\n    }\n  }\n\n  public getPercent(position: number = this.getPosition()) {\n    if (this.slider.element.clientWidth == 0) {\n      return 0;\n    }\n    return +(position / this.slider.element.clientWidth).toFixed(2);\n  }\n\n  public getValue() {\n    const value = this.getPercent() * (this.slider.options.end - this.slider.options.start) + this.slider.options.start;\n    return value;\n  }\n\n  public fromValueToPercent(value: number) {\n    return 1 - (this.slider.options.end - value) / (this.slider.options.end - this.slider.options.start);\n  }\n\n  public fromPositionToValue(position: number) {\n    const percent = this.getPercent(position);\n    return this.slider.options.start + percent * (this.slider.options.end - this.slider.options.start);\n  }\n\n  public fromValueToPosition(value: number) {\n    const percent = this.fromValueToPercent(value);\n    return this.slider.element.clientWidth * percent;\n  }\n\n  private bindEvents() {\n    $$(this.element).on(this.eventMouseDown, (e: MouseEvent) => {\n      this.handleStartSlide(e);\n    });\n    const doc = this.slider.options.document || document;\n    doc.addEventListener(this.eventMouseMove, (e: MouseEvent) => {\n      if (this.eventMouseMove == 'touchmove' && this.isMouseDown) {\n        e.preventDefault();\n      }\n      this.handleMoving(e);\n    });\n\n    doc.addEventListener(this.eventMouseUp, () => {\n      this.handleEndSlide();\n    });\n  }\n\n  private getUserSelect() {\n    if (document.body.style.msUserSelect !== undefined) {\n      return 'msUserSelect';\n    }\n    if (document.body.style.webkitUserSelect !== undefined) {\n      return 'webkitUserSelect';\n    }\n    if (document.body.style['MozUserSelect'] !== undefined) {\n      return 'MozUserSelect';\n    }\n    return 'userSelect';\n  }\n\n  private handleStartSlide(e: MouseEvent) {\n    const position = this.getMousePosition(e);\n    this.isMouseDown = true;\n    this.startPositionX = position.x;\n    this.lastElementLeft = (parseInt(this.element.style.left, 10) / 100) * this.slider.element.clientWidth;\n    this.origUserSelect = document.body.style[this.getUserSelect()];\n    this.origCursor = document.body.style.cursor;\n    document.body.style[this.getUserSelect()] = 'none';\n    document.body.style.cursor = 'pointer';\n    $$(this.element).addClass('coveo-active');\n    $$(this.element).trigger(SliderEvents.startSlide, <IStartSlideEventArgs>{\n      button: this,\n      slider: this.slider\n    });\n    e.stopPropagation();\n  }\n\n  private handleMoving(e: MouseEvent) {\n    if (this.isMouseDown) {\n      this.slider.onMoving();\n      this.updatePosition(e);\n      this.handleButtonNearEnd();\n      $$(this.element).trigger(SliderEvents.duringSlide, <IDuringSlideEventArgs>{\n        button: this,\n        slider: this.slider\n      });\n    }\n  }\n\n  private handleEndSlide() {\n    if (this.isMouseDown) {\n      document.body.style[this.getUserSelect()] = this.origUserSelect;\n      document.body.style.cursor = this.origCursor;\n      $$(this.element).removeClass('coveo-active');\n      $$(this.element).trigger(SliderEvents.endSlide, <IEndSlideEventArgs>{\n        button: this,\n        slider: this.slider\n      });\n    }\n    this.isMouseDown = false;\n  }\n\n  private handleButtonNearEnd() {\n    if (this.which == 0) {\n      if (this.origZIndex == undefined) {\n        this.origZIndex = this.element.style.zIndex || '1';\n      }\n      if (this.currentPos > 90) {\n        this.element.style.zIndex = this.origZIndex + 1;\n      } else {\n        this.element.style.zIndex = this.origZIndex;\n      }\n    }\n  }\n\n  private getMousePosition(e: MouseEvent) {\n    let posx = 0;\n    let posy = 0;\n    if (e['touches'] && e['touches'][0]) {\n      posx = e['touches'][0].pageX;\n      posy = e['touches'][0].pageY;\n    } else if (e.pageX && e.pageY) {\n      posx = e.pageX;\n      posy = e.pageY;\n    } else if (e.clientX && e.clientY) {\n      posx = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft;\n      posy = e.clientY + document.body.scrollTop + document.documentElement.scrollTop;\n    }\n    return { x: posx, y: posy };\n  }\n\n  private updatePosition(e: MouseEvent) {\n    const pos = this.getMousePosition(e);\n    const spanX = pos.x - this.startPositionX;\n    let currentValue;\n    this.currentPos = this.lastElementLeft + spanX;\n    if (this.slider.options.steps || this.slider.options.getSteps) {\n      const snapResult = this.snapToStep(spanX);\n      this.currentPos = snapResult.position;\n      currentValue = snapResult.value;\n    }\n    this.currentPos = Math.max(this.leftBoundary, this.currentPos);\n    this.currentPos = Math.min(this.rightBoundary, this.currentPos);\n    this.currentPos = this.getPercent(this.currentPos) * 100;\n    this.currentPos = Math.min(this.currentPos, 100);\n    this.currentPos = Math.max(this.currentPos, 0);\n    this.element.style.left = Math.round(this.currentPos) + '%';\n    if (this.slider.options.steps || this.slider.options.getSteps) {\n      this.slider.currentValues[this.which] = currentValue;\n    } else {\n      this.slider.currentValues[this.which] = this.getValue();\n    }\n  }\n\n  private snapToStep(spanX: number) {\n    const diffs = map(this.slider.steps, (step, i) => {\n      return Math.abs(this.currentPos - this.fromValueToPosition(this.slider.steps[i]));\n    });\n    const diffsNext = map(this.slider.steps, (step, i) => {\n      return Math.abs(this.rightBoundary - this.fromValueToPosition(this.slider.steps[i]));\n    });\n    const diffsPrev = map(this.slider.steps, (step, i) => {\n      return Math.abs(this.leftBoundary - this.fromValueToPosition(this.slider.steps[i]));\n    });\n    const nearest = min(diffs);\n    const nearestNext = min(diffsNext);\n    const nearestPrevious = min(diffsPrev);\n    let currentStep = this.slider.steps[indexOf(diffs, nearest)];\n    const nextStep = this.slider.steps[indexOf(diffsNext, nearestNext)];\n    const previousStep = this.slider.steps[indexOf(diffsPrev, nearestPrevious)];\n    currentStep = Math.min(currentStep, nextStep);\n    currentStep = Math.max(currentStep, previousStep);\n    return { position: this.fromValueToPosition(currentStep), value: currentStep };\n  }\n}\n\nclass SliderRange {\n  public firstButton: SliderButton;\n  public secondButton: SliderButton;\n\n  constructor(public slider: Slider) {\n    this.firstButton = new SliderButton(slider, 0);\n    this.secondButton = new SliderButton(slider, 1);\n  }\n\n  public build(): HTMLElement[] {\n    const firstElem = this.firstButton.build();\n    const secondElem = this.secondButton.build();\n    $$(secondElem).addClass('coveo-range-button');\n    return [firstElem, secondElem];\n  }\n\n  public initializeSliderRangeState(values?: number[]) {\n    if (values == undefined) {\n      this.firstButton.toBeginning();\n      this.secondButton.toEnd();\n    } else {\n      this.firstButton.setValue(values[0]);\n      this.secondButton.setValue(values[1]);\n    }\n    this.setBoundary();\n  }\n\n  public setValue(values: number[]) {\n    this.firstButton.setValue(values[0]);\n    this.secondButton.setValue(values[1]);\n  }\n\n  public setBoundary() {\n    this.firstButton.leftBoundary = 0;\n    this.firstButton.rightBoundary = this.secondButton.getPosition();\n    this.secondButton.leftBoundary = this.firstButton.getPosition();\n    this.secondButton.rightBoundary = this.slider.element.clientWidth;\n  }\n\n  public getPosition() {\n    return [this.firstButton.getPosition(), this.secondButton.getPosition()];\n  }\n\n  public getPercentPosition() {\n    return [this.firstButton.getPercent(), this.secondButton.getPercent()];\n  }\n\n  public getValue() {\n    return [this.firstButton.getValue(), this.secondButton.getValue()];\n  }\n}\n\nclass SliderCaption {\n  private caption: HTMLElement;\n\n  public unitSign: string;\n  public separator: string;\n\n  constructor(public slider: Slider) {\n    this.separator = '-';\n    this.unitSign = '';\n    if (this.slider.options.displayAsPercent && this.slider.options.displayAsPercent.enable) {\n      this.separator =\n        this.slider.options.displayAsPercent.separator != undefined ? this.slider.options.displayAsPercent.separator : this.separator;\n    } else if (this.slider.options.displayAsValue && this.slider.options.displayAsValue.enable) {\n      this.separator =\n        this.slider.options.displayAsValue.separator != undefined ? this.slider.options.displayAsValue.separator : this.separator;\n      this.unitSign =\n        this.slider.options.displayAsValue.unitSign != undefined ? this.slider.options.displayAsValue.unitSign : this.unitSign;\n    }\n  }\n\n  public build(): HTMLElement {\n    this.caption = $$('div', {\n      className: 'coveo-slider-caption'\n    }).el;\n    return this.caption;\n  }\n\n  public getCaption() {\n    return $$(this.caption).text();\n  }\n\n  public getCaptionFromValues(values: number[]) {\n    return this.getValueCaption(values);\n  }\n\n  public getCaptionFromValuesAsPercent(values: number[]) {\n    return this.getValueCaption(values);\n  }\n\n  public setAsValue() {\n    $$(this.caption).text(this.getValueCaption());\n  }\n\n  public setAsPercent() {\n    const values = this.slider.getPercentPosition();\n    $$(this.caption).text(\n      [\n        (values[0] * 100).toFixed(this.slider.options.rounded),\n        '%',\n        this.separator,\n        (values[1] * 100).toFixed(this.slider.options.rounded),\n        '%'\n      ].join(' ')\n    );\n  }\n\n  public setFromString(str: string) {\n    $$(this.caption).text(str);\n  }\n\n  private getValueCaption(values = this.slider.getValues()) {\n    let first = values[0];\n    let second = values[1];\n\n    if (this.slider.options.dateField) {\n      const firstAsDate = new Date(first);\n      const secondAsDate = new Date(second);\n      firstAsDate.setHours(0, 0, 0, 0);\n      secondAsDate.setHours(0, 0, 0, 0);\n      first = Globalize.format(firstAsDate, this.slider.options.dateFormat || 'MMM dd, yyyy');\n      second = Globalize.format(secondAsDate, this.slider.options.dateFormat || 'MMM dd, yyyy');\n      this.unitSign = '';\n    } else {\n      first = first.toFixed(this.slider.options.rounded);\n      second = second.toFixed(this.slider.options.rounded);\n    }\n    return [first, this.unitSign, this.separator, second, this.unitSign].join(' ');\n  }\n}\n\nclass SliderGraph {\n  private svg: d3.Selection<SVGElement, any, null, undefined>;\n  private x: any;\n  private y: any;\n  private oldData: ISliderGraphData[];\n  private tooltip: HTMLElement;\n  private tooltipArrow: HTMLElement;\n  private tooltipCount: HTMLElement;\n  private tooltipCaption: HTMLElement;\n\n  constructor(public slider: Slider) {\n    this.svg = d3select(slider.element).append('svg').append('g');\n    this.x = scaleBand();\n    this.y = scaleLinear();\n    this.slider.options.graph.margin = Utils.extendDeep(\n      {\n        top: 20,\n        right: 0,\n        left: 0,\n        bottom: 20\n      },\n      this.slider.options.graph.margin || {}\n    );\n    this.slider.options.graph.animationDuration = this.slider.options.graph.animationDuration || 500;\n    this.slider.options.graph.steps = this.slider.options.graph.steps || 10;\n\n    this.buildTooltip();\n  }\n\n  public draw(data: ISliderGraphData[] = this.oldData) {\n    if (data) {\n      if (data != this.oldData) {\n        // only modify the data if it's new\n        data = this.modifyPossibleSinglePointDataIntoValidRange(data);\n      }\n      const sliderOuterWidth = this.slider.element.offsetWidth;\n      const sliderOuterHeight = this.slider.element.offsetHeight;\n      const width = sliderOuterWidth - this.slider.options.graph.margin.left - this.slider.options.graph.margin.right;\n      const height = sliderOuterHeight - this.slider.options.graph.margin.top - this.slider.options.graph.margin.bottom;\n      if (!isNaN(width) && width >= 0 && !isNaN(height) && height >= 0) {\n        this.applyTransformOnSvg(width, height);\n        this.setXAndYRange(width, height);\n        this.setXAndYDomain(data);\n\n        const bars = this.svg.selectAll('.coveo-bar').data(data);\n        const currentSliderValues = this.slider.getValues();\n        this.renderGraphBars(bars, width, height, currentSliderValues);\n        this.setGraphBarsTransition(bars, height, currentSliderValues);\n      }\n\n      this.oldData = data;\n    }\n  }\n\n  private buildTooltip() {\n    this.tooltip = $$('div', {\n      className: 'coveo-slider-tooltip'\n    }).el;\n\n    this.tooltipArrow = $$('div', {\n      className: 'coveo-slider-tooltip-arrow'\n    }).el;\n\n    this.tooltipCaption = $$('span', {\n      className: 'coveo-caption'\n    }).el;\n\n    this.tooltipCount = $$('span', {\n      className: 'coveo-count'\n    }).el;\n\n    $$(this.tooltip).append(this.tooltipArrow);\n    $$(this.tooltip).append(this.tooltipCaption);\n    $$(this.tooltip).append(this.tooltipCount);\n    $$(this.tooltip).hide();\n    $$(this.slider.element).append(this.tooltip);\n  }\n\n  private modifyPossibleSinglePointDataIntoValidRange(data: ISliderGraphData[]) {\n    return map(data, (d: ISliderGraphData) => {\n      // In some rare corner case, the index can return range values where the start of the data is equal to the end of the data\n      // Since it's a \"point\" as opposed to a real range, it's impossible to display this properly on a graph (where the range is the x axis)\n      // An element in a graph with with 0 width on the x axis is illogical and cannot work.\n      // In those case, we must \"widen\" the x range. Instead of adding an arbitrary value (like +1 to end, for example), we need something that won't make the range super small to click on.\n      // We use the total width available, and subtract half a step at the beginning, and add half a step at the end\n      if (d.start == d.end) {\n        const oneStep = (this.slider.options.end - this.slider.options.start) / this.slider.options.graph.steps;\n        d.start = Math.round(d.start - oneStep / 2);\n        d.end = Math.round(d.end + oneStep / 2);\n      }\n      return d;\n    });\n  }\n\n  private setXAndYRange(width: number, height: number) {\n    this.x.range([0, width]);\n    this.x.padding(0.2);\n    this.y.range([height - this.slider.options.graph.margin.top, 0]);\n  }\n\n  private setXAndYDomain(data: ISliderGraphData[]) {\n    this.padGraphWithEmptyData(data);\n    this.x.domain(\n      map(data, d => {\n        return d.start;\n      })\n    );\n    this.y.domain([\n      0,\n      d3max(data, d => {\n        return d.y;\n      })\n    ]);\n  }\n\n  private calculateOneStepOfGraph(data: ISliderGraphData[]) {\n    const oneStep = Math.abs(data[0].end - data[0].start);\n    return oneStep || 1;\n  }\n\n  private padGraphWithEmptyData(data: ISliderGraphData[]) {\n    const oneStepOfGraph = this.calculateOneStepOfGraph(data);\n    this.padBeginningOfGraphWithEmptyData(data, oneStepOfGraph);\n    this.padEndOfGraphWithEmptyData(data, oneStepOfGraph);\n  }\n\n  private padBeginningOfGraphWithEmptyData(data: ISliderGraphData[], oneStepOfGraph: number) {\n    if (data[0].start > this.slider.options.start && data[0].start > oneStepOfGraph) {\n      const difToFillAtStart = data[0].start - this.slider.options.start;\n      const nbOfStepsAtStart = Math.min(MAX_NUMBER_OF_STEPS, Math.round(difToFillAtStart / oneStepOfGraph));\n      let currentStep = data[0].start;\n      for (let i = nbOfStepsAtStart; i > 0; i--) {\n        data.unshift(<ISliderGraphData>{ start: currentStep - oneStepOfGraph, end: currentStep, y: 0 });\n        currentStep -= oneStepOfGraph;\n      }\n    }\n  }\n\n  private padEndOfGraphWithEmptyData(data: ISliderGraphData[], oneStepOfGraph: number) {\n    const lastDataIndex = data.length - 1;\n    if (data[lastDataIndex].end < this.slider.options.end) {\n      const diffToFillAtEnd = this.slider.options.end - data[lastDataIndex].end;\n      const nbOfStepsAtEnd = Math.min(MAX_NUMBER_OF_STEPS, Math.round(diffToFillAtEnd / oneStepOfGraph));\n      let currentStep = data[lastDataIndex].end;\n      for (let i = 0; i < nbOfStepsAtEnd; i++) {\n        data.push(<ISliderGraphData>{ start: currentStep, end: currentStep + oneStepOfGraph, y: 0 });\n        currentStep += oneStepOfGraph;\n      }\n    }\n  }\n\n  private applyTransformOnSvg(width: number, height: number) {\n    const svg = $$(this.slider.element).find('svg');\n    svg.setAttribute('width', width + 'px');\n    svg.setAttribute('height', height + 'px');\n    this.svg.attr('transform', 'translate(' + this.slider.options.graph.margin.left + ',' + this.slider.options.graph.margin.top + ')');\n  }\n\n  private renderGraphBars(\n    bars: d3.Selection<d3.BaseType, ISliderGraphData, SVGElement, any>,\n    width: number,\n    height: number,\n    currentSliderValues: number[]\n  ) {\n    bars\n      .enter()\n      .append('rect')\n      .attr('class', this.getFunctionForClass(currentSliderValues))\n      .attr('width', this.x.bandwidth())\n      .attr('height', this.getFunctionForHeight(height))\n      .attr('x', this.getFunctionForX())\n      .attr('y', this.getFunctionForY())\n      .on('click', this.getFunctionForClick())\n      .on('mouseover', this.getFunctionForMouseOver(height))\n      .on('mouseout', this.getFunctionForMouseOut());\n  }\n\n  private setGraphBarsTransition(\n    bars: d3.Selection<d3.BaseType, ISliderGraphData, SVGElement, any>,\n    height: number,\n    currentSliderValues: number[]\n  ) {\n    bars\n      .transition()\n      .attr('x', this.getFunctionForX())\n      .attr('width', this.x.bandwidth())\n      .attr('class', this.getFunctionForClass(currentSliderValues))\n      .transition()\n      .duration(this.slider.options.graph.animationDuration)\n      .attr('y', this.getFunctionForY())\n      .attr('height', this.getFunctionForHeight(height));\n  }\n\n  private getBarClass(currentSliderValues: number[], d: ISliderGraphData, i: number) {\n    if (d.start >= currentSliderValues[0] && d.end <= currentSliderValues[1]) {\n      return 'coveo-active';\n    } else if (currentSliderValues[0] == this.slider.options.start && i == 0) {\n      return 'coveo-active';\n    } else if (currentSliderValues[1] == this.slider.options.end && i == this.slider.options.graph.steps - 1) {\n      return 'coveo-active';\n    } else {\n      return '';\n    }\n  }\n\n  private setTooltip(d: ISliderGraphData, height: number) {\n    $$(this.tooltipCaption).text(this.slider.getCaptionFromValue([d.start, d.end]));\n    $$(this.tooltipCount).text(d.y.toString());\n    $$(this.tooltip).show();\n\n    // rolled a dice and got those numbers\n    const arbitraryOffsetForTooltip = 50;\n    const arbitraryOffsetForScrollbar = 20;\n    const tooltipArrowSize = 5;\n\n    const leftPositionForCurrentBand = this.x(d.start) - arbitraryOffsetForTooltip;\n    const halfOfBandwidth = this.x.bandwidth() / 2;\n    const tooltipArrowOffset = arbitraryOffsetForTooltip + halfOfBandwidth - tooltipArrowSize;\n\n    this.tooltip.style.left = `${leftPositionForCurrentBand}px`;\n    this.tooltip.style.top = `${this.y(d.y) - height}px`;\n    this.tooltipArrow.style.left = `${tooltipArrowOffset}px`;\n\n    const tooltipRect = this.tooltip.getBoundingClientRect();\n    const windowWidth = new Win(window).width();\n\n    const tooltipOverflowsRightOfWindow = tooltipRect.right > windowWidth - arbitraryOffsetForScrollbar;\n\n    if (tooltipOverflowsRightOfWindow) {\n      const offsetToPreventWindowOverflow = windowWidth - tooltipRect.right - arbitraryOffsetForScrollbar;\n      this.tooltip.style.left = `${leftPositionForCurrentBand + offsetToPreventWindowOverflow}px`;\n      this.tooltipArrow.style.left = `${tooltipArrowOffset - offsetToPreventWindowOverflow}px`;\n    }\n  }\n\n  private getFunctionForX() {\n    return (d: ISliderGraphData) => this.x(d.start);\n  }\n\n  private getFunctionForY() {\n    return (d: ISliderGraphData) => this.y(d.y);\n  }\n\n  private getFunctionForHeight(height: number) {\n    return (d: ISliderGraphData) => height - this.y(d.y);\n  }\n\n  private getFunctionForClass(currentSliderValues: number[]) {\n    return (d, i) => `coveo-bar ${this.getBarClass(currentSliderValues, d, i)}`;\n  }\n\n  private getFunctionForClick() {\n    return (d: ISliderGraphData, i) => {\n      $$(this.slider.element).trigger(SliderEvents.graphValueSelected, <IGraphValueSelectedArgs>{\n        start: d.start,\n        end: d.end,\n        value: d.y\n      });\n    };\n  }\n\n  private getFunctionForMouseOver(height: number) {\n    return (d: ISliderGraphData) => this.setTooltip(d, height);\n  }\n\n  private getFunctionForMouseOut() {\n    return () => $$(this.tooltip).hide();\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Misc/Slider.ts","export var name = \"d3\";\nexport var version = \"5.16.0\";\nexport var description = \"Data-Driven Documents\";\nexport var keywords = [\"dom\",\"visualization\",\"svg\",\"animation\",\"canvas\"];\nexport var homepage = \"https://d3js.org\";\nexport var license = \"BSD-3-Clause\";\nexport var author = {\"name\":\"Mike Bostock\",\"url\":\"https://bost.ocks.org/mike\"};\nexport var main = \"dist/d3.node.js\";\nexport var unpkg = \"dist/d3.min.js\";\nexport var jsdelivr = \"dist/d3.min.js\";\nexport var module = \"index.js\";\nexport var repository = {\"type\":\"git\",\"url\":\"https://github.com/d3/d3.git\"};\nexport var files = [\"dist/**/*.js\",\"index.js\"];\nexport var scripts = {\"pretest\":\"rimraf dist && mkdir dist && json2module package.json > dist/package.js && rollup -c\",\"test\":\"tape 'test/**/*-test.js'\",\"prepublishOnly\":\"yarn test\",\"postpublish\":\"git push && git push --tags && cd ../d3.github.com && git pull && cp ../d3/dist/d3.js d3.v5.js && cp ../d3/dist/d3.min.js d3.v5.min.js && git add d3.v5.js d3.v5.min.js && git commit -m \\\"d3 ${npm_package_version}\\\" && git push && cd - && cd ../d3-bower && git pull && cp ../d3/LICENSE ../d3/README.md ../d3/dist/d3.js ../d3/dist/d3.min.js . && git add -- LICENSE README.md d3.js d3.min.js && git commit -m \\\"${npm_package_version}\\\" && git tag -am \\\"${npm_package_version}\\\" v${npm_package_version} && git push && git push --tags && cd - && zip -j dist/d3.zip -- LICENSE README.md API.md CHANGES.md dist/d3.js dist/d3.min.js\"};\nexport var devDependencies = {\"json2module\":\"0.0\",\"rimraf\":\"2\",\"rollup\":\"1\",\"rollup-plugin-ascii\":\"0.0\",\"rollup-plugin-node-resolve\":\"3\",\"rollup-plugin-terser\":\"5\",\"tape\":\"4\"};\nexport var dependencies = {\"d3-array\":\"1\",\"d3-axis\":\"1\",\"d3-brush\":\"1\",\"d3-chord\":\"1\",\"d3-collection\":\"1\",\"d3-color\":\"1\",\"d3-contour\":\"1\",\"d3-dispatch\":\"1\",\"d3-drag\":\"1\",\"d3-dsv\":\"1\",\"d3-ease\":\"1\",\"d3-fetch\":\"1\",\"d3-force\":\"1\",\"d3-format\":\"1\",\"d3-geo\":\"1\",\"d3-hierarchy\":\"1\",\"d3-interpolate\":\"1\",\"d3-path\":\"1\",\"d3-polygon\":\"1\",\"d3-quadtree\":\"1\",\"d3-random\":\"1\",\"d3-scale\":\"2\",\"d3-scale-chromatic\":\"1\",\"d3-selection\":\"1\",\"d3-shape\":\"1\",\"d3-time\":\"1\",\"d3-time-format\":\"2\",\"d3-timer\":\"1\",\"d3-transition\":\"1\",\"d3-voronoi\":\"1\",\"d3-zoom\":\"1\"};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3/dist/package.js\n// module id = null\n// module chunks = ","export var slice = Array.prototype.slice;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-axis/src/array.js\n// module id = null\n// module chunks = ","export default function(x) {\n  return x;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-axis/src/identity.js\n// module id = null\n// module chunks = ","import {slice} from \"./array\";\nimport identity from \"./identity\";\n\nvar top = 1,\n    right = 2,\n    bottom = 3,\n    left = 4,\n    epsilon = 1e-6;\n\nfunction translateX(x) {\n  return \"translate(\" + (x + 0.5) + \",0)\";\n}\n\nfunction translateY(y) {\n  return \"translate(0,\" + (y + 0.5) + \")\";\n}\n\nfunction number(scale) {\n  return function(d) {\n    return +scale(d);\n  };\n}\n\nfunction center(scale) {\n  var offset = Math.max(0, scale.bandwidth() - 1) / 2; // Adjust for 0.5px offset.\n  if (scale.round()) offset = Math.round(offset);\n  return function(d) {\n    return +scale(d) + offset;\n  };\n}\n\nfunction entering() {\n  return !this.__axis;\n}\n\nfunction axis(orient, scale) {\n  var tickArguments = [],\n      tickValues = null,\n      tickFormat = null,\n      tickSizeInner = 6,\n      tickSizeOuter = 6,\n      tickPadding = 3,\n      k = orient === top || orient === left ? -1 : 1,\n      x = orient === left || orient === right ? \"x\" : \"y\",\n      transform = orient === top || orient === bottom ? translateX : translateY;\n\n  function axis(context) {\n    var values = tickValues == null ? (scale.ticks ? scale.ticks.apply(scale, tickArguments) : scale.domain()) : tickValues,\n        format = tickFormat == null ? (scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments) : identity) : tickFormat,\n        spacing = Math.max(tickSizeInner, 0) + tickPadding,\n        range = scale.range(),\n        range0 = +range[0] + 0.5,\n        range1 = +range[range.length - 1] + 0.5,\n        position = (scale.bandwidth ? center : number)(scale.copy()),\n        selection = context.selection ? context.selection() : context,\n        path = selection.selectAll(\".domain\").data([null]),\n        tick = selection.selectAll(\".tick\").data(values, scale).order(),\n        tickExit = tick.exit(),\n        tickEnter = tick.enter().append(\"g\").attr(\"class\", \"tick\"),\n        line = tick.select(\"line\"),\n        text = tick.select(\"text\");\n\n    path = path.merge(path.enter().insert(\"path\", \".tick\")\n        .attr(\"class\", \"domain\")\n        .attr(\"stroke\", \"currentColor\"));\n\n    tick = tick.merge(tickEnter);\n\n    line = line.merge(tickEnter.append(\"line\")\n        .attr(\"stroke\", \"currentColor\")\n        .attr(x + \"2\", k * tickSizeInner));\n\n    text = text.merge(tickEnter.append(\"text\")\n        .attr(\"fill\", \"currentColor\")\n        .attr(x, k * spacing)\n        .attr(\"dy\", orient === top ? \"0em\" : orient === bottom ? \"0.71em\" : \"0.32em\"));\n\n    if (context !== selection) {\n      path = path.transition(context);\n      tick = tick.transition(context);\n      line = line.transition(context);\n      text = text.transition(context);\n\n      tickExit = tickExit.transition(context)\n          .attr(\"opacity\", epsilon)\n          .attr(\"transform\", function(d) { return isFinite(d = position(d)) ? transform(d) : this.getAttribute(\"transform\"); });\n\n      tickEnter\n          .attr(\"opacity\", epsilon)\n          .attr(\"transform\", function(d) { var p = this.parentNode.__axis; return transform(p && isFinite(p = p(d)) ? p : position(d)); });\n    }\n\n    tickExit.remove();\n\n    path\n        .attr(\"d\", orient === left || orient == right\n            ? (tickSizeOuter ? \"M\" + k * tickSizeOuter + \",\" + range0 + \"H0.5V\" + range1 + \"H\" + k * tickSizeOuter : \"M0.5,\" + range0 + \"V\" + range1)\n            : (tickSizeOuter ? \"M\" + range0 + \",\" + k * tickSizeOuter + \"V0.5H\" + range1 + \"V\" + k * tickSizeOuter : \"M\" + range0 + \",0.5H\" + range1));\n\n    tick\n        .attr(\"opacity\", 1)\n        .attr(\"transform\", function(d) { return transform(position(d)); });\n\n    line\n        .attr(x + \"2\", k * tickSizeInner);\n\n    text\n        .attr(x, k * spacing)\n        .text(format);\n\n    selection.filter(entering)\n        .attr(\"fill\", \"none\")\n        .attr(\"font-size\", 10)\n        .attr(\"font-family\", \"sans-serif\")\n        .attr(\"text-anchor\", orient === right ? \"start\" : orient === left ? \"end\" : \"middle\");\n\n    selection\n        .each(function() { this.__axis = position; });\n  }\n\n  axis.scale = function(_) {\n    return arguments.length ? (scale = _, axis) : scale;\n  };\n\n  axis.ticks = function() {\n    return tickArguments = slice.call(arguments), axis;\n  };\n\n  axis.tickArguments = function(_) {\n    return arguments.length ? (tickArguments = _ == null ? [] : slice.call(_), axis) : tickArguments.slice();\n  };\n\n  axis.tickValues = function(_) {\n    return arguments.length ? (tickValues = _ == null ? null : slice.call(_), axis) : tickValues && tickValues.slice();\n  };\n\n  axis.tickFormat = function(_) {\n    return arguments.length ? (tickFormat = _, axis) : tickFormat;\n  };\n\n  axis.tickSize = function(_) {\n    return arguments.length ? (tickSizeInner = tickSizeOuter = +_, axis) : tickSizeInner;\n  };\n\n  axis.tickSizeInner = function(_) {\n    return arguments.length ? (tickSizeInner = +_, axis) : tickSizeInner;\n  };\n\n  axis.tickSizeOuter = function(_) {\n    return arguments.length ? (tickSizeOuter = +_, axis) : tickSizeOuter;\n  };\n\n  axis.tickPadding = function(_) {\n    return arguments.length ? (tickPadding = +_, axis) : tickPadding;\n  };\n\n  return axis;\n}\n\nexport function axisTop(scale) {\n  return axis(top, scale);\n}\n\nexport function axisRight(scale) {\n  return axis(right, scale);\n}\n\nexport function axisBottom(scale) {\n  return axis(bottom, scale);\n}\n\nexport function axisLeft(scale) {\n  return axis(left, scale);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-axis/src/axis.js\n// module id = null\n// module chunks = ","export {\n  axisTop,\n  axisRight,\n  axisBottom,\n  axisLeft\n} from \"./axis\";\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-axis/src/index.js\n// module id = null\n// module chunks = ","var noop = {value: function() {}};\n\nfunction dispatch() {\n  for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n    if (!(t = arguments[i] + \"\") || (t in _) || /[\\s.]/.test(t)) throw new Error(\"illegal type: \" + t);\n    _[t] = [];\n  }\n  return new Dispatch(_);\n}\n\nfunction Dispatch(_) {\n  this._ = _;\n}\n\nfunction parseTypenames(typenames, types) {\n  return typenames.trim().split(/^|\\s+/).map(function(t) {\n    var name = \"\", i = t.indexOf(\".\");\n    if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n    if (t && !types.hasOwnProperty(t)) throw new Error(\"unknown type: \" + t);\n    return {type: t, name: name};\n  });\n}\n\nDispatch.prototype = dispatch.prototype = {\n  constructor: Dispatch,\n  on: function(typename, callback) {\n    var _ = this._,\n        T = parseTypenames(typename + \"\", _),\n        t,\n        i = -1,\n        n = T.length;\n\n    // If no callback was specified, return the callback of the given type and name.\n    if (arguments.length < 2) {\n      while (++i < n) if ((t = (typename = T[i]).type) && (t = get(_[t], typename.name))) return t;\n      return;\n    }\n\n    // If a type was specified, set the callback for the given type and name.\n    // Otherwise, if a null callback was specified, remove callbacks of the given name.\n    if (callback != null && typeof callback !== \"function\") throw new Error(\"invalid callback: \" + callback);\n    while (++i < n) {\n      if (t = (typename = T[i]).type) _[t] = set(_[t], typename.name, callback);\n      else if (callback == null) for (t in _) _[t] = set(_[t], typename.name, null);\n    }\n\n    return this;\n  },\n  copy: function() {\n    var copy = {}, _ = this._;\n    for (var t in _) copy[t] = _[t].slice();\n    return new Dispatch(copy);\n  },\n  call: function(type, that) {\n    if ((n = arguments.length - 2) > 0) for (var args = new Array(n), i = 0, n, t; i < n; ++i) args[i] = arguments[i + 2];\n    if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n    for (t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n  },\n  apply: function(type, that, args) {\n    if (!this._.hasOwnProperty(type)) throw new Error(\"unknown type: \" + type);\n    for (var t = this._[type], i = 0, n = t.length; i < n; ++i) t[i].value.apply(that, args);\n  }\n};\n\nfunction get(type, name) {\n  for (var i = 0, n = type.length, c; i < n; ++i) {\n    if ((c = type[i]).name === name) {\n      return c.value;\n    }\n  }\n}\n\nfunction set(type, name, callback) {\n  for (var i = 0, n = type.length; i < n; ++i) {\n    if (type[i].name === name) {\n      type[i] = noop, type = type.slice(0, i).concat(type.slice(i + 1));\n      break;\n    }\n  }\n  if (callback != null) type.push({name: name, value: callback});\n  return type;\n}\n\nexport default dispatch;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-dispatch/src/dispatch.js\n// module id = null\n// module chunks = ","export {default as dispatch} from \"./dispatch.js\";\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-dispatch/src/index.js\n// module id = null\n// module chunks = ","export var xhtml = \"http://www.w3.org/1999/xhtml\";\n\nexport default {\n  svg: \"http://www.w3.org/2000/svg\",\n  xhtml: xhtml,\n  xlink: \"http://www.w3.org/1999/xlink\",\n  xml: \"http://www.w3.org/XML/1998/namespace\",\n  xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-selection/src/namespaces.js\n// module id = null\n// module chunks = ","import namespaces from \"./namespaces\";\n\nexport default function(name) {\n  var prefix = name += \"\", i = prefix.indexOf(\":\");\n  if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\") name = name.slice(i + 1);\n  return namespaces.hasOwnProperty(prefix) ? {space: namespaces[prefix], local: name} : name;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-selection/src/namespace.js\n// module id = null\n// module chunks = ","import namespace from \"./namespace\";\nimport {xhtml} from \"./namespaces\";\n\nfunction creatorInherit(name) {\n  return function() {\n    var document = this.ownerDocument,\n        uri = this.namespaceURI;\n    return uri === xhtml && document.documentElement.namespaceURI === xhtml\n        ? document.createElement(name)\n        : document.createElementNS(uri, name);\n  };\n}\n\nfunction creatorFixed(fullname) {\n  return function() {\n    return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n  };\n}\n\nexport default function(name) {\n  var fullname = namespace(name);\n  return (fullname.local\n      ? creatorFixed\n      : creatorInherit)(fullname);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-selection/src/creator.js\n// module id = null\n// module chunks = ","function none() {}\n\nexport default function(selector) {\n  return selector == null ? none : function() {\n    return this.querySelector(selector);\n  };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-selection/src/selector.js\n// module id = null\n// module chunks = ","import {Selection} from \"./index\";\nimport selector from \"../selector\";\n\nexport default function(select) {\n  if (typeof select !== \"function\") select = selector(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n      if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n        if (\"__data__\" in node) subnode.__data__ = node.__data__;\n        subgroup[i] = subnode;\n      }\n    }\n  }\n\n  return new Selection(subgroups, this._parents);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-selection/src/selection/select.js\n// module id = null\n// module chunks = ","function empty() {\n  return [];\n}\n\nexport default function(selector) {\n  return selector == null ? empty : function() {\n    return this.querySelectorAll(selector);\n  };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-selection/src/selectorAll.js\n// module id = null\n// module chunks = ","import {Selection} from \"./index\";\nimport selectorAll from \"../selectorAll\";\n\nexport default function(select) {\n  if (typeof select !== \"function\") select = selectorAll(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        subgroups.push(select.call(node, node.__data__, i, group));\n        parents.push(node);\n      }\n    }\n  }\n\n  return new Selection(subgroups, parents);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-selection/src/selection/selectAll.js\n// module id = null\n// module chunks = ","export default function(selector) {\n  return function() {\n    return this.matches(selector);\n  };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-selection/src/matcher.js\n// module id = null\n// module chunks = ","import {Selection} from \"./index\";\nimport matcher from \"../matcher\";\n\nexport default function(match) {\n  if (typeof match !== \"function\") match = matcher(match);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n      if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n        subgroup.push(node);\n      }\n    }\n  }\n\n  return new Selection(subgroups, this._parents);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-selection/src/selection/filter.js\n// module id = null\n// module chunks = ","export default function(update) {\n  return new Array(update.length);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-selection/src/selection/sparse.js\n// module id = null\n// module chunks = ","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n  return new Selection(this._enter || this._groups.map(sparse), this._parents);\n}\n\nexport function EnterNode(parent, datum) {\n  this.ownerDocument = parent.ownerDocument;\n  this.namespaceURI = parent.namespaceURI;\n  this._next = null;\n  this._parent = parent;\n  this.__data__ = datum;\n}\n\nEnterNode.prototype = {\n  constructor: EnterNode,\n  appendChild: function(child) { return this._parent.insertBefore(child, this._next); },\n  insertBefore: function(child, next) { return this._parent.insertBefore(child, next); },\n  querySelector: function(selector) { return this._parent.querySelector(selector); },\n  querySelectorAll: function(selector) { return this._parent.querySelectorAll(selector); }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-selection/src/selection/enter.js\n// module id = null\n// module chunks = ","export default function(x) {\n  return function() {\n    return x;\n  };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-selection/src/constant.js\n// module id = null\n// module chunks = ","import {Selection} from \"./index\";\nimport {EnterNode} from \"./enter\";\nimport constant from \"../constant\";\n\nvar keyPrefix = \"$\"; // Protect against keys like “__proto__”.\n\nfunction bindIndex(parent, group, enter, update, exit, data) {\n  var i = 0,\n      node,\n      groupLength = group.length,\n      dataLength = data.length;\n\n  // Put any non-null nodes that fit into update.\n  // Put any null nodes into enter.\n  // Put any remaining data into enter.\n  for (; i < dataLength; ++i) {\n    if (node = group[i]) {\n      node.__data__ = data[i];\n      update[i] = node;\n    } else {\n      enter[i] = new EnterNode(parent, data[i]);\n    }\n  }\n\n  // Put any non-null nodes that don’t fit into exit.\n  for (; i < groupLength; ++i) {\n    if (node = group[i]) {\n      exit[i] = node;\n    }\n  }\n}\n\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n  var i,\n      node,\n      nodeByKeyValue = {},\n      groupLength = group.length,\n      dataLength = data.length,\n      keyValues = new Array(groupLength),\n      keyValue;\n\n  // Compute the key for each node.\n  // If multiple nodes have the same key, the duplicates are added to exit.\n  for (i = 0; i < groupLength; ++i) {\n    if (node = group[i]) {\n      keyValues[i] = keyValue = keyPrefix + key.call(node, node.__data__, i, group);\n      if (keyValue in nodeByKeyValue) {\n        exit[i] = node;\n      } else {\n        nodeByKeyValue[keyValue] = node;\n      }\n    }\n  }\n\n  // Compute the key for each datum.\n  // If there a node associated with this key, join and add it to update.\n  // If there is not (or the key is a duplicate), add it to enter.\n  for (i = 0; i < dataLength; ++i) {\n    keyValue = keyPrefix + key.call(parent, data[i], i, data);\n    if (node = nodeByKeyValue[keyValue]) {\n      update[i] = node;\n      node.__data__ = data[i];\n      nodeByKeyValue[keyValue] = null;\n    } else {\n      enter[i] = new EnterNode(parent, data[i]);\n    }\n  }\n\n  // Add any remaining nodes that were not bound to data to exit.\n  for (i = 0; i < groupLength; ++i) {\n    if ((node = group[i]) && (nodeByKeyValue[keyValues[i]] === node)) {\n      exit[i] = node;\n    }\n  }\n}\n\nexport default function(value, key) {\n  if (!value) {\n    data = new Array(this.size()), j = -1;\n    this.each(function(d) { data[++j] = d; });\n    return data;\n  }\n\n  var bind = key ? bindKey : bindIndex,\n      parents = this._parents,\n      groups = this._groups;\n\n  if (typeof value !== \"function\") value = constant(value);\n\n  for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n    var parent = parents[j],\n        group = groups[j],\n        groupLength = group.length,\n        data = value.call(parent, parent && parent.__data__, j, parents),\n        dataLength = data.length,\n        enterGroup = enter[j] = new Array(dataLength),\n        updateGroup = update[j] = new Array(dataLength),\n        exitGroup = exit[j] = new Array(groupLength);\n\n    bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n\n    // Now connect the enter nodes to their following update node, such that\n    // appendChild can insert the materialized enter node before this node,\n    // rather than at the end of the parent node.\n    for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n      if (previous = enterGroup[i0]) {\n        if (i0 >= i1) i1 = i0 + 1;\n        while (!(next = updateGroup[i1]) && ++i1 < dataLength);\n        previous._next = next || null;\n      }\n    }\n  }\n\n  update = new Selection(update, parents);\n  update._enter = enter;\n  update._exit = exit;\n  return update;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-selection/src/selection/data.js\n// module id = null\n// module chunks = ","import sparse from \"./sparse\";\nimport {Selection} from \"./index\";\n\nexport default function() {\n  return new Selection(this._exit || this._groups.map(sparse), this._parents);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-selection/src/selection/exit.js\n// module id = null\n// module chunks = ","export default function(onenter, onupdate, onexit) {\n  var enter = this.enter(), update = this, exit = this.exit();\n  enter = typeof onenter === \"function\" ? onenter(enter) : enter.append(onenter + \"\");\n  if (onupdate != null) update = onupdate(update);\n  if (onexit == null) exit.remove(); else onexit(exit);\n  return enter && update ? enter.merge(update).order() : update;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-selection/src/selection/join.js\n// module id = null\n// module chunks = ","import {Selection} from \"./index\";\n\nexport default function(selection) {\n\n  for (var groups0 = this._groups, groups1 = selection._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n    for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n      if (node = group0[i] || group1[i]) {\n        merge[i] = node;\n      }\n    }\n  }\n\n  for (; j < m0; ++j) {\n    merges[j] = groups0[j];\n  }\n\n  return new Selection(merges, this._parents);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-selection/src/selection/merge.js\n// module id = null\n// module chunks = ","export default function() {\n\n  for (var groups = this._groups, j = -1, m = groups.length; ++j < m;) {\n    for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0;) {\n      if (node = group[i]) {\n        if (next && node.compareDocumentPosition(next) ^ 4) next.parentNode.insertBefore(node, next);\n        next = node;\n      }\n    }\n  }\n\n  return this;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-selection/src/selection/order.js\n// module id = null\n// module chunks = ","import {Selection} from \"./index\";\n\nexport default function(compare) {\n  if (!compare) compare = ascending;\n\n  function compareNode(a, b) {\n    return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n  }\n\n  for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        sortgroup[i] = node;\n      }\n    }\n    sortgroup.sort(compareNode);\n  }\n\n  return new Selection(sortgroups, this._parents).order();\n}\n\nfunction ascending(a, b) {\n  return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-selection/src/selection/sort.js\n// module id = null\n// module chunks = ","export default function() {\n  var callback = arguments[0];\n  arguments[0] = this;\n  callback.apply(null, arguments);\n  return this;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-selection/src/selection/call.js\n// module id = null\n// module chunks = ","export default function() {\n  var nodes = new Array(this.size()), i = -1;\n  this.each(function() { nodes[++i] = this; });\n  return nodes;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-selection/src/selection/nodes.js\n// module id = null\n// module chunks = ","export default function() {\n\n  for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n    for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n      var node = group[i];\n      if (node) return node;\n    }\n  }\n\n  return null;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-selection/src/selection/node.js\n// module id = null\n// module chunks = ","export default function() {\n  var size = 0;\n  this.each(function() { ++size; });\n  return size;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-selection/src/selection/size.js\n// module id = null\n// module chunks = ","export default function() {\n  return !this.node();\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-selection/src/selection/empty.js\n// module id = null\n// module chunks = ","export default function(callback) {\n\n  for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n    for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n      if (node = group[i]) callback.call(node, node.__data__, i, group);\n    }\n  }\n\n  return this;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-selection/src/selection/each.js\n// module id = null\n// module chunks = ","import namespace from \"../namespace\";\n\nfunction attrRemove(name) {\n  return function() {\n    this.removeAttribute(name);\n  };\n}\n\nfunction attrRemoveNS(fullname) {\n  return function() {\n    this.removeAttributeNS(fullname.space, fullname.local);\n  };\n}\n\nfunction attrConstant(name, value) {\n  return function() {\n    this.setAttribute(name, value);\n  };\n}\n\nfunction attrConstantNS(fullname, value) {\n  return function() {\n    this.setAttributeNS(fullname.space, fullname.local, value);\n  };\n}\n\nfunction attrFunction(name, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) this.removeAttribute(name);\n    else this.setAttribute(name, v);\n  };\n}\n\nfunction attrFunctionNS(fullname, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) this.removeAttributeNS(fullname.space, fullname.local);\n    else this.setAttributeNS(fullname.space, fullname.local, v);\n  };\n}\n\nexport default function(name, value) {\n  var fullname = namespace(name);\n\n  if (arguments.length < 2) {\n    var node = this.node();\n    return fullname.local\n        ? node.getAttributeNS(fullname.space, fullname.local)\n        : node.getAttribute(fullname);\n  }\n\n  return this.each((value == null\n      ? (fullname.local ? attrRemoveNS : attrRemove) : (typeof value === \"function\"\n      ? (fullname.local ? attrFunctionNS : attrFunction)\n      : (fullname.local ? attrConstantNS : attrConstant)))(fullname, value));\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-selection/src/selection/attr.js\n// module id = null\n// module chunks = ","export default function(node) {\n  return (node.ownerDocument && node.ownerDocument.defaultView) // node is a Node\n      || (node.document && node) // node is a Window\n      || node.defaultView; // node is a Document\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-selection/src/window.js\n// module id = null\n// module chunks = ","import defaultView from \"../window\";\n\nfunction styleRemove(name) {\n  return function() {\n    this.style.removeProperty(name);\n  };\n}\n\nfunction styleConstant(name, value, priority) {\n  return function() {\n    this.style.setProperty(name, value, priority);\n  };\n}\n\nfunction styleFunction(name, value, priority) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) this.style.removeProperty(name);\n    else this.style.setProperty(name, v, priority);\n  };\n}\n\nexport default function(name, value, priority) {\n  return arguments.length > 1\n      ? this.each((value == null\n            ? styleRemove : typeof value === \"function\"\n            ? styleFunction\n            : styleConstant)(name, value, priority == null ? \"\" : priority))\n      : styleValue(this.node(), name);\n}\n\nexport function styleValue(node, name) {\n  return node.style.getPropertyValue(name)\n      || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-selection/src/selection/style.js\n// module id = null\n// module chunks = ","function propertyRemove(name) {\n  return function() {\n    delete this[name];\n  };\n}\n\nfunction propertyConstant(name, value) {\n  return function() {\n    this[name] = value;\n  };\n}\n\nfunction propertyFunction(name, value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    if (v == null) delete this[name];\n    else this[name] = v;\n  };\n}\n\nexport default function(name, value) {\n  return arguments.length > 1\n      ? this.each((value == null\n          ? propertyRemove : typeof value === \"function\"\n          ? propertyFunction\n          : propertyConstant)(name, value))\n      : this.node()[name];\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-selection/src/selection/property.js\n// module id = null\n// module chunks = ","function classArray(string) {\n  return string.trim().split(/^|\\s+/);\n}\n\nfunction classList(node) {\n  return node.classList || new ClassList(node);\n}\n\nfunction ClassList(node) {\n  this._node = node;\n  this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\n\nClassList.prototype = {\n  add: function(name) {\n    var i = this._names.indexOf(name);\n    if (i < 0) {\n      this._names.push(name);\n      this._node.setAttribute(\"class\", this._names.join(\" \"));\n    }\n  },\n  remove: function(name) {\n    var i = this._names.indexOf(name);\n    if (i >= 0) {\n      this._names.splice(i, 1);\n      this._node.setAttribute(\"class\", this._names.join(\" \"));\n    }\n  },\n  contains: function(name) {\n    return this._names.indexOf(name) >= 0;\n  }\n};\n\nfunction classedAdd(node, names) {\n  var list = classList(node), i = -1, n = names.length;\n  while (++i < n) list.add(names[i]);\n}\n\nfunction classedRemove(node, names) {\n  var list = classList(node), i = -1, n = names.length;\n  while (++i < n) list.remove(names[i]);\n}\n\nfunction classedTrue(names) {\n  return function() {\n    classedAdd(this, names);\n  };\n}\n\nfunction classedFalse(names) {\n  return function() {\n    classedRemove(this, names);\n  };\n}\n\nfunction classedFunction(names, value) {\n  return function() {\n    (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n  };\n}\n\nexport default function(name, value) {\n  var names = classArray(name + \"\");\n\n  if (arguments.length < 2) {\n    var list = classList(this.node()), i = -1, n = names.length;\n    while (++i < n) if (!list.contains(names[i])) return false;\n    return true;\n  }\n\n  return this.each((typeof value === \"function\"\n      ? classedFunction : value\n      ? classedTrue\n      : classedFalse)(names, value));\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-selection/src/selection/classed.js\n// module id = null\n// module chunks = ","function textRemove() {\n  this.textContent = \"\";\n}\n\nfunction textConstant(value) {\n  return function() {\n    this.textContent = value;\n  };\n}\n\nfunction textFunction(value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    this.textContent = v == null ? \"\" : v;\n  };\n}\n\nexport default function(value) {\n  return arguments.length\n      ? this.each(value == null\n          ? textRemove : (typeof value === \"function\"\n          ? textFunction\n          : textConstant)(value))\n      : this.node().textContent;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-selection/src/selection/text.js\n// module id = null\n// module chunks = ","function htmlRemove() {\n  this.innerHTML = \"\";\n}\n\nfunction htmlConstant(value) {\n  return function() {\n    this.innerHTML = value;\n  };\n}\n\nfunction htmlFunction(value) {\n  return function() {\n    var v = value.apply(this, arguments);\n    this.innerHTML = v == null ? \"\" : v;\n  };\n}\n\nexport default function(value) {\n  return arguments.length\n      ? this.each(value == null\n          ? htmlRemove : (typeof value === \"function\"\n          ? htmlFunction\n          : htmlConstant)(value))\n      : this.node().innerHTML;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-selection/src/selection/html.js\n// module id = null\n// module chunks = ","function raise() {\n  if (this.nextSibling) this.parentNode.appendChild(this);\n}\n\nexport default function() {\n  return this.each(raise);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-selection/src/selection/raise.js\n// module id = null\n// module chunks = ","function lower() {\n  if (this.previousSibling) this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\n\nexport default function() {\n  return this.each(lower);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-selection/src/selection/lower.js\n// module id = null\n// module chunks = ","import creator from \"../creator\";\n\nexport default function(name) {\n  var create = typeof name === \"function\" ? name : creator(name);\n  return this.select(function() {\n    return this.appendChild(create.apply(this, arguments));\n  });\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-selection/src/selection/append.js\n// module id = null\n// module chunks = ","import creator from \"../creator\";\nimport selector from \"../selector\";\n\nfunction constantNull() {\n  return null;\n}\n\nexport default function(name, before) {\n  var create = typeof name === \"function\" ? name : creator(name),\n      select = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n  return this.select(function() {\n    return this.insertBefore(create.apply(this, arguments), select.apply(this, arguments) || null);\n  });\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-selection/src/selection/insert.js\n// module id = null\n// module chunks = ","function remove() {\n  var parent = this.parentNode;\n  if (parent) parent.removeChild(this);\n}\n\nexport default function() {\n  return this.each(remove);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-selection/src/selection/remove.js\n// module id = null\n// module chunks = ","function selection_cloneShallow() {\n  var clone = this.cloneNode(false), parent = this.parentNode;\n  return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nfunction selection_cloneDeep() {\n  var clone = this.cloneNode(true), parent = this.parentNode;\n  return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\n\nexport default function(deep) {\n  return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-selection/src/selection/clone.js\n// module id = null\n// module chunks = ","export default function(value) {\n  return arguments.length\n      ? this.property(\"__data__\", value)\n      : this.node().__data__;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-selection/src/selection/datum.js\n// module id = null\n// module chunks = ","var filterEvents = {};\n\nexport var event = null;\n\nif (typeof document !== \"undefined\") {\n  var element = document.documentElement;\n  if (!(\"onmouseenter\" in element)) {\n    filterEvents = {mouseenter: \"mouseover\", mouseleave: \"mouseout\"};\n  }\n}\n\nfunction filterContextListener(listener, index, group) {\n  listener = contextListener(listener, index, group);\n  return function(event) {\n    var related = event.relatedTarget;\n    if (!related || (related !== this && !(related.compareDocumentPosition(this) & 8))) {\n      listener.call(this, event);\n    }\n  };\n}\n\nfunction contextListener(listener, index, group) {\n  return function(event1) {\n    var event0 = event; // Events can be reentrant (e.g., focus).\n    event = event1;\n    try {\n      listener.call(this, this.__data__, index, group);\n    } finally {\n      event = event0;\n    }\n  };\n}\n\nfunction parseTypenames(typenames) {\n  return typenames.trim().split(/^|\\s+/).map(function(t) {\n    var name = \"\", i = t.indexOf(\".\");\n    if (i >= 0) name = t.slice(i + 1), t = t.slice(0, i);\n    return {type: t, name: name};\n  });\n}\n\nfunction onRemove(typename) {\n  return function() {\n    var on = this.__on;\n    if (!on) return;\n    for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n      if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n        this.removeEventListener(o.type, o.listener, o.capture);\n      } else {\n        on[++i] = o;\n      }\n    }\n    if (++i) on.length = i;\n    else delete this.__on;\n  };\n}\n\nfunction onAdd(typename, value, capture) {\n  var wrap = filterEvents.hasOwnProperty(typename.type) ? filterContextListener : contextListener;\n  return function(d, i, group) {\n    var on = this.__on, o, listener = wrap(value, i, group);\n    if (on) for (var j = 0, m = on.length; j < m; ++j) {\n      if ((o = on[j]).type === typename.type && o.name === typename.name) {\n        this.removeEventListener(o.type, o.listener, o.capture);\n        this.addEventListener(o.type, o.listener = listener, o.capture = capture);\n        o.value = value;\n        return;\n      }\n    }\n    this.addEventListener(typename.type, listener, capture);\n    o = {type: typename.type, name: typename.name, value: value, listener: listener, capture: capture};\n    if (!on) this.__on = [o];\n    else on.push(o);\n  };\n}\n\nexport default function(typename, value, capture) {\n  var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n\n  if (arguments.length < 2) {\n    var on = this.node().__on;\n    if (on) for (var j = 0, m = on.length, o; j < m; ++j) {\n      for (i = 0, o = on[j]; i < n; ++i) {\n        if ((t = typenames[i]).type === o.type && t.name === o.name) {\n          return o.value;\n        }\n      }\n    }\n    return;\n  }\n\n  on = value ? onAdd : onRemove;\n  if (capture == null) capture = false;\n  for (i = 0; i < n; ++i) this.each(on(typenames[i], value, capture));\n  return this;\n}\n\nexport function customEvent(event1, listener, that, args) {\n  var event0 = event;\n  event1.sourceEvent = event;\n  event = event1;\n  try {\n    return listener.apply(that, args);\n  } finally {\n    event = event0;\n  }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-selection/src/selection/on.js\n// module id = null\n// module chunks = ","import defaultView from \"../window\";\n\nfunction dispatchEvent(node, type, params) {\n  var window = defaultView(node),\n      event = window.CustomEvent;\n\n  if (typeof event === \"function\") {\n    event = new event(type, params);\n  } else {\n    event = window.document.createEvent(\"Event\");\n    if (params) event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n    else event.initEvent(type, false, false);\n  }\n\n  node.dispatchEvent(event);\n}\n\nfunction dispatchConstant(type, params) {\n  return function() {\n    return dispatchEvent(this, type, params);\n  };\n}\n\nfunction dispatchFunction(type, params) {\n  return function() {\n    return dispatchEvent(this, type, params.apply(this, arguments));\n  };\n}\n\nexport default function(type, params) {\n  return this.each((typeof params === \"function\"\n      ? dispatchFunction\n      : dispatchConstant)(type, params));\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-selection/src/selection/dispatch.js\n// module id = null\n// module chunks = ","import selection_select from \"./select\";\nimport selection_selectAll from \"./selectAll\";\nimport selection_filter from \"./filter\";\nimport selection_data from \"./data\";\nimport selection_enter from \"./enter\";\nimport selection_exit from \"./exit\";\nimport selection_join from \"./join\";\nimport selection_merge from \"./merge\";\nimport selection_order from \"./order\";\nimport selection_sort from \"./sort\";\nimport selection_call from \"./call\";\nimport selection_nodes from \"./nodes\";\nimport selection_node from \"./node\";\nimport selection_size from \"./size\";\nimport selection_empty from \"./empty\";\nimport selection_each from \"./each\";\nimport selection_attr from \"./attr\";\nimport selection_style from \"./style\";\nimport selection_property from \"./property\";\nimport selection_classed from \"./classed\";\nimport selection_text from \"./text\";\nimport selection_html from \"./html\";\nimport selection_raise from \"./raise\";\nimport selection_lower from \"./lower\";\nimport selection_append from \"./append\";\nimport selection_insert from \"./insert\";\nimport selection_remove from \"./remove\";\nimport selection_clone from \"./clone\";\nimport selection_datum from \"./datum\";\nimport selection_on from \"./on\";\nimport selection_dispatch from \"./dispatch\";\n\nexport var root = [null];\n\nexport function Selection(groups, parents) {\n  this._groups = groups;\n  this._parents = parents;\n}\n\nfunction selection() {\n  return new Selection([[document.documentElement]], root);\n}\n\nSelection.prototype = selection.prototype = {\n  constructor: Selection,\n  select: selection_select,\n  selectAll: selection_selectAll,\n  filter: selection_filter,\n  data: selection_data,\n  enter: selection_enter,\n  exit: selection_exit,\n  join: selection_join,\n  merge: selection_merge,\n  order: selection_order,\n  sort: selection_sort,\n  call: selection_call,\n  nodes: selection_nodes,\n  node: selection_node,\n  size: selection_size,\n  empty: selection_empty,\n  each: selection_each,\n  attr: selection_attr,\n  style: selection_style,\n  property: selection_property,\n  classed: selection_classed,\n  text: selection_text,\n  html: selection_html,\n  raise: selection_raise,\n  lower: selection_lower,\n  append: selection_append,\n  insert: selection_insert,\n  remove: selection_remove,\n  clone: selection_clone,\n  datum: selection_datum,\n  on: selection_on,\n  dispatch: selection_dispatch\n};\n\nexport default selection;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-selection/src/selection/index.js\n// module id = null\n// module chunks = ","import {Selection, root} from \"./selection/index\";\n\nexport default function(selector) {\n  return typeof selector === \"string\"\n      ? new Selection([[document.querySelector(selector)]], [document.documentElement])\n      : new Selection([[selector]], root);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-selection/src/select.js\n// module id = null\n// module chunks = ","import creator from \"./creator\";\nimport select from \"./select\";\n\nexport default function(name) {\n  return select(creator(name).call(document.documentElement));\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-selection/src/create.js\n// module id = null\n// module chunks = ","var nextId = 0;\n\nexport default function local() {\n  return new Local;\n}\n\nfunction Local() {\n  this._ = \"@\" + (++nextId).toString(36);\n}\n\nLocal.prototype = local.prototype = {\n  constructor: Local,\n  get: function(node) {\n    var id = this._;\n    while (!(id in node)) if (!(node = node.parentNode)) return;\n    return node[id];\n  },\n  set: function(node, value) {\n    return node[this._] = value;\n  },\n  remove: function(node) {\n    return this._ in node && delete node[this._];\n  },\n  toString: function() {\n    return this._;\n  }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-selection/src/local.js\n// module id = null\n// module chunks = ","import {event} from \"./selection/on\";\n\nexport default function() {\n  var current = event, source;\n  while (source = current.sourceEvent) current = source;\n  return current;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-selection/src/sourceEvent.js\n// module id = null\n// module chunks = ","export default function(node, event) {\n  var svg = node.ownerSVGElement || node;\n\n  if (svg.createSVGPoint) {\n    var point = svg.createSVGPoint();\n    point.x = event.clientX, point.y = event.clientY;\n    point = point.matrixTransform(node.getScreenCTM().inverse());\n    return [point.x, point.y];\n  }\n\n  var rect = node.getBoundingClientRect();\n  return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-selection/src/point.js\n// module id = null\n// module chunks = ","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node) {\n  var event = sourceEvent();\n  if (event.changedTouches) event = event.changedTouches[0];\n  return point(node, event);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-selection/src/mouse.js\n// module id = null\n// module chunks = ","import {Selection, root} from \"./selection/index\";\n\nexport default function(selector) {\n  return typeof selector === \"string\"\n      ? new Selection([document.querySelectorAll(selector)], [document.documentElement])\n      : new Selection([selector == null ? [] : selector], root);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-selection/src/selectAll.js\n// module id = null\n// module chunks = ","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node, touches, identifier) {\n  if (arguments.length < 3) identifier = touches, touches = sourceEvent().changedTouches;\n\n  for (var i = 0, n = touches ? touches.length : 0, touch; i < n; ++i) {\n    if ((touch = touches[i]).identifier === identifier) {\n      return point(node, touch);\n    }\n  }\n\n  return null;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-selection/src/touch.js\n// module id = null\n// module chunks = ","import sourceEvent from \"./sourceEvent\";\nimport point from \"./point\";\n\nexport default function(node, touches) {\n  if (touches == null) touches = sourceEvent().touches;\n\n  for (var i = 0, n = touches ? touches.length : 0, points = new Array(n); i < n; ++i) {\n    points[i] = point(node, touches[i]);\n  }\n\n  return points;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-selection/src/touches.js\n// module id = null\n// module chunks = ","export {default as create} from \"./create\";\nexport {default as creator} from \"./creator\";\nexport {default as local} from \"./local\";\nexport {default as matcher} from \"./matcher\";\nexport {default as mouse} from \"./mouse\";\nexport {default as namespace} from \"./namespace\";\nexport {default as namespaces} from \"./namespaces\";\nexport {default as clientPoint} from \"./point\";\nexport {default as select} from \"./select\";\nexport {default as selectAll} from \"./selectAll\";\nexport {default as selection} from \"./selection/index\";\nexport {default as selector} from \"./selector\";\nexport {default as selectorAll} from \"./selectorAll\";\nexport {styleValue as style} from \"./selection/style\";\nexport {default as touch} from \"./touch\";\nexport {default as touches} from \"./touches\";\nexport {default as window} from \"./window\";\nexport {event, customEvent} from \"./selection/on\";\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-selection/src/index.js\n// module id = null\n// module chunks = ","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n  event.stopImmediatePropagation();\n}\n\nexport default function() {\n  event.preventDefault();\n  event.stopImmediatePropagation();\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-drag/src/noevent.js\n// module id = null\n// module chunks = ","import {select} from \"d3-selection\";\nimport noevent from \"./noevent.js\";\n\nexport default function(view) {\n  var root = view.document.documentElement,\n      selection = select(view).on(\"dragstart.drag\", noevent, true);\n  if (\"onselectstart\" in root) {\n    selection.on(\"selectstart.drag\", noevent, true);\n  } else {\n    root.__noselect = root.style.MozUserSelect;\n    root.style.MozUserSelect = \"none\";\n  }\n}\n\nexport function yesdrag(view, noclick) {\n  var root = view.document.documentElement,\n      selection = select(view).on(\"dragstart.drag\", null);\n  if (noclick) {\n    selection.on(\"click.drag\", noevent, true);\n    setTimeout(function() { selection.on(\"click.drag\", null); }, 0);\n  }\n  if (\"onselectstart\" in root) {\n    selection.on(\"selectstart.drag\", null);\n  } else {\n    root.style.MozUserSelect = root.__noselect;\n    delete root.__noselect;\n  }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-drag/src/nodrag.js\n// module id = null\n// module chunks = ","export default function(x) {\n  return function() {\n    return x;\n  };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-drag/src/constant.js\n// module id = null\n// module chunks = ","export default function DragEvent(target, type, subject, id, active, x, y, dx, dy, dispatch) {\n  this.target = target;\n  this.type = type;\n  this.subject = subject;\n  this.identifier = id;\n  this.active = active;\n  this.x = x;\n  this.y = y;\n  this.dx = dx;\n  this.dy = dy;\n  this._ = dispatch;\n}\n\nDragEvent.prototype.on = function() {\n  var value = this._.on.apply(this._, arguments);\n  return value === this._ ? this : value;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-drag/src/event.js\n// module id = null\n// module chunks = ","import {dispatch} from \"d3-dispatch\";\nimport {event, customEvent, select, mouse, touch} from \"d3-selection\";\nimport nodrag, {yesdrag} from \"./nodrag.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\nimport constant from \"./constant.js\";\nimport DragEvent from \"./event.js\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n  return !event.ctrlKey && !event.button;\n}\n\nfunction defaultContainer() {\n  return this.parentNode;\n}\n\nfunction defaultSubject(d) {\n  return d == null ? {x: event.x, y: event.y} : d;\n}\n\nfunction defaultTouchable() {\n  return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nexport default function() {\n  var filter = defaultFilter,\n      container = defaultContainer,\n      subject = defaultSubject,\n      touchable = defaultTouchable,\n      gestures = {},\n      listeners = dispatch(\"start\", \"drag\", \"end\"),\n      active = 0,\n      mousedownx,\n      mousedowny,\n      mousemoving,\n      touchending,\n      clickDistance2 = 0;\n\n  function drag(selection) {\n    selection\n        .on(\"mousedown.drag\", mousedowned)\n      .filter(touchable)\n        .on(\"touchstart.drag\", touchstarted)\n        .on(\"touchmove.drag\", touchmoved)\n        .on(\"touchend.drag touchcancel.drag\", touchended)\n        .style(\"touch-action\", \"none\")\n        .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n  }\n\n  function mousedowned() {\n    if (touchending || !filter.apply(this, arguments)) return;\n    var gesture = beforestart(\"mouse\", container.apply(this, arguments), mouse, this, arguments);\n    if (!gesture) return;\n    select(event.view).on(\"mousemove.drag\", mousemoved, true).on(\"mouseup.drag\", mouseupped, true);\n    nodrag(event.view);\n    nopropagation();\n    mousemoving = false;\n    mousedownx = event.clientX;\n    mousedowny = event.clientY;\n    gesture(\"start\");\n  }\n\n  function mousemoved() {\n    noevent();\n    if (!mousemoving) {\n      var dx = event.clientX - mousedownx, dy = event.clientY - mousedowny;\n      mousemoving = dx * dx + dy * dy > clickDistance2;\n    }\n    gestures.mouse(\"drag\");\n  }\n\n  function mouseupped() {\n    select(event.view).on(\"mousemove.drag mouseup.drag\", null);\n    yesdrag(event.view, mousemoving);\n    noevent();\n    gestures.mouse(\"end\");\n  }\n\n  function touchstarted() {\n    if (!filter.apply(this, arguments)) return;\n    var touches = event.changedTouches,\n        c = container.apply(this, arguments),\n        n = touches.length, i, gesture;\n\n    for (i = 0; i < n; ++i) {\n      if (gesture = beforestart(touches[i].identifier, c, touch, this, arguments)) {\n        nopropagation();\n        gesture(\"start\");\n      }\n    }\n  }\n\n  function touchmoved() {\n    var touches = event.changedTouches,\n        n = touches.length, i, gesture;\n\n    for (i = 0; i < n; ++i) {\n      if (gesture = gestures[touches[i].identifier]) {\n        noevent();\n        gesture(\"drag\");\n      }\n    }\n  }\n\n  function touchended() {\n    var touches = event.changedTouches,\n        n = touches.length, i, gesture;\n\n    if (touchending) clearTimeout(touchending);\n    touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n    for (i = 0; i < n; ++i) {\n      if (gesture = gestures[touches[i].identifier]) {\n        nopropagation();\n        gesture(\"end\");\n      }\n    }\n  }\n\n  function beforestart(id, container, point, that, args) {\n    var p = point(container, id), s, dx, dy,\n        sublisteners = listeners.copy();\n\n    if (!customEvent(new DragEvent(drag, \"beforestart\", s, id, active, p[0], p[1], 0, 0, sublisteners), function() {\n      if ((event.subject = s = subject.apply(that, args)) == null) return false;\n      dx = s.x - p[0] || 0;\n      dy = s.y - p[1] || 0;\n      return true;\n    })) return;\n\n    return function gesture(type) {\n      var p0 = p, n;\n      switch (type) {\n        case \"start\": gestures[id] = gesture, n = active++; break;\n        case \"end\": delete gestures[id], --active; // nobreak\n        case \"drag\": p = point(container, id), n = active; break;\n      }\n      customEvent(new DragEvent(drag, type, s, id, n, p[0] + dx, p[1] + dy, p[0] - p0[0], p[1] - p0[1], sublisteners), sublisteners.apply, sublisteners, [type, that, args]);\n    };\n  }\n\n  drag.filter = function(_) {\n    return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), drag) : filter;\n  };\n\n  drag.container = function(_) {\n    return arguments.length ? (container = typeof _ === \"function\" ? _ : constant(_), drag) : container;\n  };\n\n  drag.subject = function(_) {\n    return arguments.length ? (subject = typeof _ === \"function\" ? _ : constant(_), drag) : subject;\n  };\n\n  drag.touchable = function(_) {\n    return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), drag) : touchable;\n  };\n\n  drag.on = function() {\n    var value = listeners.on.apply(listeners, arguments);\n    return value === listeners ? drag : value;\n  };\n\n  drag.clickDistance = function(_) {\n    return arguments.length ? (clickDistance2 = (_ = +_) * _, drag) : Math.sqrt(clickDistance2);\n  };\n\n  return drag;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-drag/src/drag.js\n// module id = null\n// module chunks = ","export {default as drag} from \"./drag.js\";\nexport {default as dragDisable, yesdrag as dragEnable} from \"./nodrag.js\";\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-drag/src/index.js\n// module id = null\n// module chunks = ","var frame = 0, // is an animation frame pending?\n    timeout = 0, // is a timeout pending?\n    interval = 0, // are any timers active?\n    pokeDelay = 1000, // how frequently we check for clock skew\n    taskHead,\n    taskTail,\n    clockLast = 0,\n    clockNow = 0,\n    clockSkew = 0,\n    clock = typeof performance === \"object\" && performance.now ? performance : Date,\n    setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) { setTimeout(f, 17); };\n\nexport function now() {\n  return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\n\nfunction clearNow() {\n  clockNow = 0;\n}\n\nexport function Timer() {\n  this._call =\n  this._time =\n  this._next = null;\n}\n\nTimer.prototype = timer.prototype = {\n  constructor: Timer,\n  restart: function(callback, delay, time) {\n    if (typeof callback !== \"function\") throw new TypeError(\"callback is not a function\");\n    time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n    if (!this._next && taskTail !== this) {\n      if (taskTail) taskTail._next = this;\n      else taskHead = this;\n      taskTail = this;\n    }\n    this._call = callback;\n    this._time = time;\n    sleep();\n  },\n  stop: function() {\n    if (this._call) {\n      this._call = null;\n      this._time = Infinity;\n      sleep();\n    }\n  }\n};\n\nexport function timer(callback, delay, time) {\n  var t = new Timer;\n  t.restart(callback, delay, time);\n  return t;\n}\n\nexport function timerFlush() {\n  now(); // Get the current time, if not already set.\n  ++frame; // Pretend we’ve set an alarm, if we haven’t already.\n  var t = taskHead, e;\n  while (t) {\n    if ((e = clockNow - t._time) >= 0) t._call.call(null, e);\n    t = t._next;\n  }\n  --frame;\n}\n\nfunction wake() {\n  clockNow = (clockLast = clock.now()) + clockSkew;\n  frame = timeout = 0;\n  try {\n    timerFlush();\n  } finally {\n    frame = 0;\n    nap();\n    clockNow = 0;\n  }\n}\n\nfunction poke() {\n  var now = clock.now(), delay = now - clockLast;\n  if (delay > pokeDelay) clockSkew -= delay, clockLast = now;\n}\n\nfunction nap() {\n  var t0, t1 = taskHead, t2, time = Infinity;\n  while (t1) {\n    if (t1._call) {\n      if (time > t1._time) time = t1._time;\n      t0 = t1, t1 = t1._next;\n    } else {\n      t2 = t1._next, t1._next = null;\n      t1 = t0 ? t0._next = t2 : taskHead = t2;\n    }\n  }\n  taskTail = t0;\n  sleep(time);\n}\n\nfunction sleep(time) {\n  if (frame) return; // Soonest alarm already set, or will be.\n  if (timeout) timeout = clearTimeout(timeout);\n  var delay = time - clockNow; // Strictly less than if we recomputed clockNow.\n  if (delay > 24) {\n    if (time < Infinity) timeout = setTimeout(wake, time - clock.now() - clockSkew);\n    if (interval) interval = clearInterval(interval);\n  } else {\n    if (!interval) clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n    frame = 1, setFrame(wake);\n  }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-timer/src/timer.js\n// module id = null\n// module chunks = ","import {Timer} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n  var t = new Timer;\n  delay = delay == null ? 0 : +delay;\n  t.restart(function(elapsed) {\n    t.stop();\n    callback(elapsed + delay);\n  }, delay, time);\n  return t;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-timer/src/timeout.js\n// module id = null\n// module chunks = ","import {Timer, now} from \"./timer.js\";\n\nexport default function(callback, delay, time) {\n  var t = new Timer, total = delay;\n  if (delay == null) return t.restart(callback, delay, time), t;\n  delay = +delay, time = time == null ? now() : +time;\n  t.restart(function tick(elapsed) {\n    elapsed += total;\n    t.restart(tick, total += delay, time);\n    callback(elapsed);\n  }, delay, time);\n  return t;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-timer/src/interval.js\n// module id = null\n// module chunks = ","export {\n  now,\n  timer,\n  timerFlush\n} from \"./timer.js\";\n\nexport {\n  default as timeout\n} from \"./timeout.js\";\n\nexport {\n  default as interval\n} from \"./interval.js\";\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-timer/src/index.js\n// module id = null\n// module chunks = ","import {dispatch} from \"d3-dispatch\";\nimport {timer, timeout} from \"d3-timer\";\n\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\n\nexport var CREATED = 0;\nexport var SCHEDULED = 1;\nexport var STARTING = 2;\nexport var STARTED = 3;\nexport var RUNNING = 4;\nexport var ENDING = 5;\nexport var ENDED = 6;\n\nexport default function(node, name, id, index, group, timing) {\n  var schedules = node.__transition;\n  if (!schedules) node.__transition = {};\n  else if (id in schedules) return;\n  create(node, id, {\n    name: name,\n    index: index, // For context during callback.\n    group: group, // For context during callback.\n    on: emptyOn,\n    tween: emptyTween,\n    time: timing.time,\n    delay: timing.delay,\n    duration: timing.duration,\n    ease: timing.ease,\n    timer: null,\n    state: CREATED\n  });\n}\n\nexport function init(node, id) {\n  var schedule = get(node, id);\n  if (schedule.state > CREATED) throw new Error(\"too late; already scheduled\");\n  return schedule;\n}\n\nexport function set(node, id) {\n  var schedule = get(node, id);\n  if (schedule.state > STARTED) throw new Error(\"too late; already running\");\n  return schedule;\n}\n\nexport function get(node, id) {\n  var schedule = node.__transition;\n  if (!schedule || !(schedule = schedule[id])) throw new Error(\"transition not found\");\n  return schedule;\n}\n\nfunction create(node, id, self) {\n  var schedules = node.__transition,\n      tween;\n\n  // Initialize the self timer when the transition is created.\n  // Note the actual delay is not known until the first callback!\n  schedules[id] = self;\n  self.timer = timer(schedule, 0, self.time);\n\n  function schedule(elapsed) {\n    self.state = SCHEDULED;\n    self.timer.restart(start, self.delay, self.time);\n\n    // If the elapsed delay is less than our first sleep, start immediately.\n    if (self.delay <= elapsed) start(elapsed - self.delay);\n  }\n\n  function start(elapsed) {\n    var i, j, n, o;\n\n    // If the state is not SCHEDULED, then we previously errored on start.\n    if (self.state !== SCHEDULED) return stop();\n\n    for (i in schedules) {\n      o = schedules[i];\n      if (o.name !== self.name) continue;\n\n      // While this element already has a starting transition during this frame,\n      // defer starting an interrupting transition until that transition has a\n      // chance to tick (and possibly end); see d3/d3-transition#54!\n      if (o.state === STARTED) return timeout(start);\n\n      // Interrupt the active transition, if any.\n      if (o.state === RUNNING) {\n        o.state = ENDED;\n        o.timer.stop();\n        o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n        delete schedules[i];\n      }\n\n      // Cancel any pre-empted transitions.\n      else if (+i < id) {\n        o.state = ENDED;\n        o.timer.stop();\n        o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n        delete schedules[i];\n      }\n    }\n\n    // Defer the first tick to end of the current frame; see d3/d3#1576.\n    // Note the transition may be canceled after start and before the first tick!\n    // Note this must be scheduled before the start event; see d3/d3-transition#16!\n    // Assuming this is successful, subsequent callbacks go straight to tick.\n    timeout(function() {\n      if (self.state === STARTED) {\n        self.state = RUNNING;\n        self.timer.restart(tick, self.delay, self.time);\n        tick(elapsed);\n      }\n    });\n\n    // Dispatch the start event.\n    // Note this must be done before the tween are initialized.\n    self.state = STARTING;\n    self.on.call(\"start\", node, node.__data__, self.index, self.group);\n    if (self.state !== STARTING) return; // interrupted\n    self.state = STARTED;\n\n    // Initialize the tween, deleting null tween.\n    tween = new Array(n = self.tween.length);\n    for (i = 0, j = -1; i < n; ++i) {\n      if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n        tween[++j] = o;\n      }\n    }\n    tween.length = j + 1;\n  }\n\n  function tick(elapsed) {\n    var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1),\n        i = -1,\n        n = tween.length;\n\n    while (++i < n) {\n      tween[i].call(node, t);\n    }\n\n    // Dispatch the end event.\n    if (self.state === ENDING) {\n      self.on.call(\"end\", node, node.__data__, self.index, self.group);\n      stop();\n    }\n  }\n\n  function stop() {\n    self.state = ENDED;\n    self.timer.stop();\n    delete schedules[id];\n    for (var i in schedules) return; // eslint-disable-line no-unused-vars\n    delete node.__transition;\n  }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-transition/src/transition/schedule.js\n// module id = null\n// module chunks = ","import {STARTING, ENDING, ENDED} from \"./transition/schedule.js\";\n\nexport default function(node, name) {\n  var schedules = node.__transition,\n      schedule,\n      active,\n      empty = true,\n      i;\n\n  if (!schedules) return;\n\n  name = name == null ? null : name + \"\";\n\n  for (i in schedules) {\n    if ((schedule = schedules[i]).name !== name) { empty = false; continue; }\n    active = schedule.state > STARTING && schedule.state < ENDING;\n    schedule.state = ENDED;\n    schedule.timer.stop();\n    schedule.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule.index, schedule.group);\n    delete schedules[i];\n  }\n\n  if (empty) delete node.__transition;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-transition/src/interrupt.js\n// module id = null\n// module chunks = ","import interrupt from \"../interrupt.js\";\n\nexport default function(name) {\n  return this.each(function() {\n    interrupt(this, name);\n  });\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-transition/src/selection/interrupt.js\n// module id = null\n// module chunks = ","import {get, set} from \"./schedule.js\";\n\nfunction tweenRemove(id, name) {\n  var tween0, tween1;\n  return function() {\n    var schedule = set(this, id),\n        tween = schedule.tween;\n\n    // If this node shared tween with the previous node,\n    // just assign the updated shared tween and we’re done!\n    // Otherwise, copy-on-write.\n    if (tween !== tween0) {\n      tween1 = tween0 = tween;\n      for (var i = 0, n = tween1.length; i < n; ++i) {\n        if (tween1[i].name === name) {\n          tween1 = tween1.slice();\n          tween1.splice(i, 1);\n          break;\n        }\n      }\n    }\n\n    schedule.tween = tween1;\n  };\n}\n\nfunction tweenFunction(id, name, value) {\n  var tween0, tween1;\n  if (typeof value !== \"function\") throw new Error;\n  return function() {\n    var schedule = set(this, id),\n        tween = schedule.tween;\n\n    // If this node shared tween with the previous node,\n    // just assign the updated shared tween and we’re done!\n    // Otherwise, copy-on-write.\n    if (tween !== tween0) {\n      tween1 = (tween0 = tween).slice();\n      for (var t = {name: name, value: value}, i = 0, n = tween1.length; i < n; ++i) {\n        if (tween1[i].name === name) {\n          tween1[i] = t;\n          break;\n        }\n      }\n      if (i === n) tween1.push(t);\n    }\n\n    schedule.tween = tween1;\n  };\n}\n\nexport default function(name, value) {\n  var id = this._id;\n\n  name += \"\";\n\n  if (arguments.length < 2) {\n    var tween = get(this.node(), id).tween;\n    for (var i = 0, n = tween.length, t; i < n; ++i) {\n      if ((t = tween[i]).name === name) {\n        return t.value;\n      }\n    }\n    return null;\n  }\n\n  return this.each((value == null ? tweenRemove : tweenFunction)(id, name, value));\n}\n\nexport function tweenValue(transition, name, value) {\n  var id = transition._id;\n\n  transition.each(function() {\n    var schedule = set(this, id);\n    (schedule.value || (schedule.value = {}))[name] = value.apply(this, arguments);\n  });\n\n  return function(node) {\n    return get(node, id).value[name];\n  };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-transition/src/transition/tween.js\n// module id = null\n// module chunks = ","import {color} from \"d3-color\";\nimport {interpolateNumber, interpolateRgb, interpolateString} from \"d3-interpolate\";\n\nexport default function(a, b) {\n  var c;\n  return (typeof b === \"number\" ? interpolateNumber\n      : b instanceof color ? interpolateRgb\n      : (c = color(b)) ? (b = c, interpolateRgb)\n      : interpolateString)(a, b);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-transition/src/transition/interpolate.js\n// module id = null\n// module chunks = ","import {interpolateTransformSvg as interpolateTransform} from \"d3-interpolate\";\nimport {namespace} from \"d3-selection\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction attrRemove(name) {\n  return function() {\n    this.removeAttribute(name);\n  };\n}\n\nfunction attrRemoveNS(fullname) {\n  return function() {\n    this.removeAttributeNS(fullname.space, fullname.local);\n  };\n}\n\nfunction attrConstant(name, interpolate, value1) {\n  var string00,\n      string1 = value1 + \"\",\n      interpolate0;\n  return function() {\n    var string0 = this.getAttribute(name);\n    return string0 === string1 ? null\n        : string0 === string00 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, value1);\n  };\n}\n\nfunction attrConstantNS(fullname, interpolate, value1) {\n  var string00,\n      string1 = value1 + \"\",\n      interpolate0;\n  return function() {\n    var string0 = this.getAttributeNS(fullname.space, fullname.local);\n    return string0 === string1 ? null\n        : string0 === string00 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, value1);\n  };\n}\n\nfunction attrFunction(name, interpolate, value) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0, value1 = value(this), string1;\n    if (value1 == null) return void this.removeAttribute(name);\n    string0 = this.getAttribute(name);\n    string1 = value1 + \"\";\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n  };\n}\n\nfunction attrFunctionNS(fullname, interpolate, value) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0, value1 = value(this), string1;\n    if (value1 == null) return void this.removeAttributeNS(fullname.space, fullname.local);\n    string0 = this.getAttributeNS(fullname.space, fullname.local);\n    string1 = value1 + \"\";\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n  };\n}\n\nexport default function(name, value) {\n  var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransform : interpolate;\n  return this.attrTween(name, typeof value === \"function\"\n      ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value))\n      : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname)\n      : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-transition/src/transition/attr.js\n// module id = null\n// module chunks = ","import {namespace} from \"d3-selection\";\n\nfunction attrInterpolate(name, i) {\n  return function(t) {\n    this.setAttribute(name, i.call(this, t));\n  };\n}\n\nfunction attrInterpolateNS(fullname, i) {\n  return function(t) {\n    this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n  };\n}\n\nfunction attrTweenNS(fullname, value) {\n  var t0, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n    return t0;\n  }\n  tween._value = value;\n  return tween;\n}\n\nfunction attrTween(name, value) {\n  var t0, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t0 = (i0 = i) && attrInterpolate(name, i);\n    return t0;\n  }\n  tween._value = value;\n  return tween;\n}\n\nexport default function(name, value) {\n  var key = \"attr.\" + name;\n  if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n  if (value == null) return this.tween(key, null);\n  if (typeof value !== \"function\") throw new Error;\n  var fullname = namespace(name);\n  return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-transition/src/transition/attrTween.js\n// module id = null\n// module chunks = ","import {get, init} from \"./schedule.js\";\n\nfunction delayFunction(id, value) {\n  return function() {\n    init(this, id).delay = +value.apply(this, arguments);\n  };\n}\n\nfunction delayConstant(id, value) {\n  return value = +value, function() {\n    init(this, id).delay = value;\n  };\n}\n\nexport default function(value) {\n  var id = this._id;\n\n  return arguments.length\n      ? this.each((typeof value === \"function\"\n          ? delayFunction\n          : delayConstant)(id, value))\n      : get(this.node(), id).delay;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-transition/src/transition/delay.js\n// module id = null\n// module chunks = ","import {get, set} from \"./schedule.js\";\n\nfunction durationFunction(id, value) {\n  return function() {\n    set(this, id).duration = +value.apply(this, arguments);\n  };\n}\n\nfunction durationConstant(id, value) {\n  return value = +value, function() {\n    set(this, id).duration = value;\n  };\n}\n\nexport default function(value) {\n  var id = this._id;\n\n  return arguments.length\n      ? this.each((typeof value === \"function\"\n          ? durationFunction\n          : durationConstant)(id, value))\n      : get(this.node(), id).duration;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-transition/src/transition/duration.js\n// module id = null\n// module chunks = ","import {get, set} from \"./schedule.js\";\n\nfunction easeConstant(id, value) {\n  if (typeof value !== \"function\") throw new Error;\n  return function() {\n    set(this, id).ease = value;\n  };\n}\n\nexport default function(value) {\n  var id = this._id;\n\n  return arguments.length\n      ? this.each(easeConstant(id, value))\n      : get(this.node(), id).ease;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-transition/src/transition/ease.js\n// module id = null\n// module chunks = ","import {matcher} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\n\nexport default function(match) {\n  if (typeof match !== \"function\") match = matcher(match);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n      if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n        subgroup.push(node);\n      }\n    }\n  }\n\n  return new Transition(subgroups, this._parents, this._name, this._id);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-transition/src/transition/filter.js\n// module id = null\n// module chunks = ","import {Transition} from \"./index.js\";\n\nexport default function(transition) {\n  if (transition._id !== this._id) throw new Error;\n\n  for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n    for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n      if (node = group0[i] || group1[i]) {\n        merge[i] = node;\n      }\n    }\n  }\n\n  for (; j < m0; ++j) {\n    merges[j] = groups0[j];\n  }\n\n  return new Transition(merges, this._parents, this._name, this._id);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-transition/src/transition/merge.js\n// module id = null\n// module chunks = ","import {get, set, init} from \"./schedule.js\";\n\nfunction start(name) {\n  return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n    var i = t.indexOf(\".\");\n    if (i >= 0) t = t.slice(0, i);\n    return !t || t === \"start\";\n  });\n}\n\nfunction onFunction(id, name, listener) {\n  var on0, on1, sit = start(name) ? init : set;\n  return function() {\n    var schedule = sit(this, id),\n        on = schedule.on;\n\n    // If this node shared a dispatch with the previous node,\n    // just assign the updated shared dispatch and we’re done!\n    // Otherwise, copy-on-write.\n    if (on !== on0) (on1 = (on0 = on).copy()).on(name, listener);\n\n    schedule.on = on1;\n  };\n}\n\nexport default function(name, listener) {\n  var id = this._id;\n\n  return arguments.length < 2\n      ? get(this.node(), id).on.on(name)\n      : this.each(onFunction(id, name, listener));\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-transition/src/transition/on.js\n// module id = null\n// module chunks = ","function removeFunction(id) {\n  return function() {\n    var parent = this.parentNode;\n    for (var i in this.__transition) if (+i !== id) return;\n    if (parent) parent.removeChild(this);\n  };\n}\n\nexport default function() {\n  return this.on(\"end.remove\", removeFunction(this._id));\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-transition/src/transition/remove.js\n// module id = null\n// module chunks = ","import {selector} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n  var name = this._name,\n      id = this._id;\n\n  if (typeof select !== \"function\") select = selector(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n      if ((node = group[i]) && (subnode = select.call(node, node.__data__, i, group))) {\n        if (\"__data__\" in node) subnode.__data__ = node.__data__;\n        subgroup[i] = subnode;\n        schedule(subgroup[i], name, id, i, subgroup, get(node, id));\n      }\n    }\n  }\n\n  return new Transition(subgroups, this._parents, name, id);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-transition/src/transition/select.js\n// module id = null\n// module chunks = ","import {selectorAll} from \"d3-selection\";\nimport {Transition} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function(select) {\n  var name = this._name,\n      id = this._id;\n\n  if (typeof select !== \"function\") select = selectorAll(select);\n\n  for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        for (var children = select.call(node, node.__data__, i, group), child, inherit = get(node, id), k = 0, l = children.length; k < l; ++k) {\n          if (child = children[k]) {\n            schedule(child, name, id, k, children, inherit);\n          }\n        }\n        subgroups.push(children);\n        parents.push(node);\n      }\n    }\n  }\n\n  return new Transition(subgroups, parents, name, id);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-transition/src/transition/selectAll.js\n// module id = null\n// module chunks = ","import {selection} from \"d3-selection\";\n\nvar Selection = selection.prototype.constructor;\n\nexport default function() {\n  return new Selection(this._groups, this._parents);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-transition/src/transition/selection.js\n// module id = null\n// module chunks = ","import {interpolateTransformCss as interpolateTransform} from \"d3-interpolate\";\nimport {style} from \"d3-selection\";\nimport {set} from \"./schedule.js\";\nimport {tweenValue} from \"./tween.js\";\nimport interpolate from \"./interpolate.js\";\n\nfunction styleNull(name, interpolate) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0 = style(this, name),\n        string1 = (this.style.removeProperty(name), style(this, name));\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, string10 = string1);\n  };\n}\n\nfunction styleRemove(name) {\n  return function() {\n    this.style.removeProperty(name);\n  };\n}\n\nfunction styleConstant(name, interpolate, value1) {\n  var string00,\n      string1 = value1 + \"\",\n      interpolate0;\n  return function() {\n    var string0 = style(this, name);\n    return string0 === string1 ? null\n        : string0 === string00 ? interpolate0\n        : interpolate0 = interpolate(string00 = string0, value1);\n  };\n}\n\nfunction styleFunction(name, interpolate, value) {\n  var string00,\n      string10,\n      interpolate0;\n  return function() {\n    var string0 = style(this, name),\n        value1 = value(this),\n        string1 = value1 + \"\";\n    if (value1 == null) string1 = value1 = (this.style.removeProperty(name), style(this, name));\n    return string0 === string1 ? null\n        : string0 === string00 && string1 === string10 ? interpolate0\n        : (string10 = string1, interpolate0 = interpolate(string00 = string0, value1));\n  };\n}\n\nfunction styleMaybeRemove(id, name) {\n  var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove;\n  return function() {\n    var schedule = set(this, id),\n        on = schedule.on,\n        listener = schedule.value[key] == null ? remove || (remove = styleRemove(name)) : undefined;\n\n    // If this node shared a dispatch with the previous node,\n    // just assign the updated shared dispatch and we’re done!\n    // Otherwise, copy-on-write.\n    if (on !== on0 || listener0 !== listener) (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n\n    schedule.on = on1;\n  };\n}\n\nexport default function(name, value, priority) {\n  var i = (name += \"\") === \"transform\" ? interpolateTransform : interpolate;\n  return value == null ? this\n      .styleTween(name, styleNull(name, i))\n      .on(\"end.style.\" + name, styleRemove(name))\n    : typeof value === \"function\" ? this\n      .styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value)))\n      .each(styleMaybeRemove(this._id, name))\n    : this\n      .styleTween(name, styleConstant(name, i, value), priority)\n      .on(\"end.style.\" + name, null);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-transition/src/transition/style.js\n// module id = null\n// module chunks = ","function styleInterpolate(name, i, priority) {\n  return function(t) {\n    this.style.setProperty(name, i.call(this, t), priority);\n  };\n}\n\nfunction styleTween(name, value, priority) {\n  var t, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t = (i0 = i) && styleInterpolate(name, i, priority);\n    return t;\n  }\n  tween._value = value;\n  return tween;\n}\n\nexport default function(name, value, priority) {\n  var key = \"style.\" + (name += \"\");\n  if (arguments.length < 2) return (key = this.tween(key)) && key._value;\n  if (value == null) return this.tween(key, null);\n  if (typeof value !== \"function\") throw new Error;\n  return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-transition/src/transition/styleTween.js\n// module id = null\n// module chunks = ","import {tweenValue} from \"./tween.js\";\n\nfunction textConstant(value) {\n  return function() {\n    this.textContent = value;\n  };\n}\n\nfunction textFunction(value) {\n  return function() {\n    var value1 = value(this);\n    this.textContent = value1 == null ? \"\" : value1;\n  };\n}\n\nexport default function(value) {\n  return this.tween(\"text\", typeof value === \"function\"\n      ? textFunction(tweenValue(this, \"text\", value))\n      : textConstant(value == null ? \"\" : value + \"\"));\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-transition/src/transition/text.js\n// module id = null\n// module chunks = ","function textInterpolate(i) {\n  return function(t) {\n    this.textContent = i.call(this, t);\n  };\n}\n\nfunction textTween(value) {\n  var t0, i0;\n  function tween() {\n    var i = value.apply(this, arguments);\n    if (i !== i0) t0 = (i0 = i) && textInterpolate(i);\n    return t0;\n  }\n  tween._value = value;\n  return tween;\n}\n\nexport default function(value) {\n  var key = \"text\";\n  if (arguments.length < 1) return (key = this.tween(key)) && key._value;\n  if (value == null) return this.tween(key, null);\n  if (typeof value !== \"function\") throw new Error;\n  return this.tween(key, textTween(value));\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-transition/src/transition/textTween.js\n// module id = null\n// module chunks = ","import {Transition, newId} from \"./index.js\";\nimport schedule, {get} from \"./schedule.js\";\n\nexport default function() {\n  var name = this._name,\n      id0 = this._id,\n      id1 = newId();\n\n  for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        var inherit = get(node, id0);\n        schedule(node, name, id1, i, group, {\n          time: inherit.time + inherit.delay + inherit.duration,\n          delay: 0,\n          duration: inherit.duration,\n          ease: inherit.ease\n        });\n      }\n    }\n  }\n\n  return new Transition(groups, this._parents, name, id1);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-transition/src/transition/transition.js\n// module id = null\n// module chunks = ","import {set} from \"./schedule.js\";\n\nexport default function() {\n  var on0, on1, that = this, id = that._id, size = that.size();\n  return new Promise(function(resolve, reject) {\n    var cancel = {value: reject},\n        end = {value: function() { if (--size === 0) resolve(); }};\n\n    that.each(function() {\n      var schedule = set(this, id),\n          on = schedule.on;\n\n      // If this node shared a dispatch with the previous node,\n      // just assign the updated shared dispatch and we’re done!\n      // Otherwise, copy-on-write.\n      if (on !== on0) {\n        on1 = (on0 = on).copy();\n        on1._.cancel.push(cancel);\n        on1._.interrupt.push(cancel);\n        on1._.end.push(end);\n      }\n\n      schedule.on = on1;\n    });\n  });\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-transition/src/transition/end.js\n// module id = null\n// module chunks = ","import {selection} from \"d3-selection\";\nimport transition_attr from \"./attr.js\";\nimport transition_attrTween from \"./attrTween.js\";\nimport transition_delay from \"./delay.js\";\nimport transition_duration from \"./duration.js\";\nimport transition_ease from \"./ease.js\";\nimport transition_filter from \"./filter.js\";\nimport transition_merge from \"./merge.js\";\nimport transition_on from \"./on.js\";\nimport transition_remove from \"./remove.js\";\nimport transition_select from \"./select.js\";\nimport transition_selectAll from \"./selectAll.js\";\nimport transition_selection from \"./selection.js\";\nimport transition_style from \"./style.js\";\nimport transition_styleTween from \"./styleTween.js\";\nimport transition_text from \"./text.js\";\nimport transition_textTween from \"./textTween.js\";\nimport transition_transition from \"./transition.js\";\nimport transition_tween from \"./tween.js\";\nimport transition_end from \"./end.js\";\n\nvar id = 0;\n\nexport function Transition(groups, parents, name, id) {\n  this._groups = groups;\n  this._parents = parents;\n  this._name = name;\n  this._id = id;\n}\n\nexport default function transition(name) {\n  return selection().transition(name);\n}\n\nexport function newId() {\n  return ++id;\n}\n\nvar selection_prototype = selection.prototype;\n\nTransition.prototype = transition.prototype = {\n  constructor: Transition,\n  select: transition_select,\n  selectAll: transition_selectAll,\n  filter: transition_filter,\n  merge: transition_merge,\n  selection: transition_selection,\n  transition: transition_transition,\n  call: selection_prototype.call,\n  nodes: selection_prototype.nodes,\n  node: selection_prototype.node,\n  size: selection_prototype.size,\n  empty: selection_prototype.empty,\n  each: selection_prototype.each,\n  on: transition_on,\n  attr: transition_attr,\n  attrTween: transition_attrTween,\n  style: transition_style,\n  styleTween: transition_styleTween,\n  text: transition_text,\n  textTween: transition_textTween,\n  remove: transition_remove,\n  tween: transition_tween,\n  delay: transition_delay,\n  duration: transition_duration,\n  ease: transition_ease,\n  end: transition_end\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-transition/src/transition/index.js\n// module id = null\n// module chunks = ","export function linear(t) {\n  return +t;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-ease/src/linear.js\n// module id = null\n// module chunks = ","export function quadIn(t) {\n  return t * t;\n}\n\nexport function quadOut(t) {\n  return t * (2 - t);\n}\n\nexport function quadInOut(t) {\n  return ((t *= 2) <= 1 ? t * t : --t * (2 - t) + 1) / 2;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-ease/src/quad.js\n// module id = null\n// module chunks = ","export function cubicIn(t) {\n  return t * t * t;\n}\n\nexport function cubicOut(t) {\n  return --t * t * t + 1;\n}\n\nexport function cubicInOut(t) {\n  return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-ease/src/cubic.js\n// module id = null\n// module chunks = ","var exponent = 3;\n\nexport var polyIn = (function custom(e) {\n  e = +e;\n\n  function polyIn(t) {\n    return Math.pow(t, e);\n  }\n\n  polyIn.exponent = custom;\n\n  return polyIn;\n})(exponent);\n\nexport var polyOut = (function custom(e) {\n  e = +e;\n\n  function polyOut(t) {\n    return 1 - Math.pow(1 - t, e);\n  }\n\n  polyOut.exponent = custom;\n\n  return polyOut;\n})(exponent);\n\nexport var polyInOut = (function custom(e) {\n  e = +e;\n\n  function polyInOut(t) {\n    return ((t *= 2) <= 1 ? Math.pow(t, e) : 2 - Math.pow(2 - t, e)) / 2;\n  }\n\n  polyInOut.exponent = custom;\n\n  return polyInOut;\n})(exponent);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-ease/src/poly.js\n// module id = null\n// module chunks = ","var pi = Math.PI,\n    halfPi = pi / 2;\n\nexport function sinIn(t) {\n  return (+t === 1) ? 1 : 1 - Math.cos(t * halfPi);\n}\n\nexport function sinOut(t) {\n  return Math.sin(t * halfPi);\n}\n\nexport function sinInOut(t) {\n  return (1 - Math.cos(pi * t)) / 2;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-ease/src/sin.js\n// module id = null\n// module chunks = ","// tpmt is two power minus ten times t scaled to [0,1]\nexport function tpmt(x) {\n  return (Math.pow(2, -10 * x) - 0.0009765625) * 1.0009775171065494;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-ease/src/math.js\n// module id = null\n// module chunks = ","import {tpmt} from \"./math.js\";\n\nexport function expIn(t) {\n  return tpmt(1 - +t);\n}\n\nexport function expOut(t) {\n  return 1 - tpmt(t);\n}\n\nexport function expInOut(t) {\n  return ((t *= 2) <= 1 ? tpmt(1 - t) : 2 - tpmt(t - 1)) / 2;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-ease/src/exp.js\n// module id = null\n// module chunks = ","export function circleIn(t) {\n  return 1 - Math.sqrt(1 - t * t);\n}\n\nexport function circleOut(t) {\n  return Math.sqrt(1 - --t * t);\n}\n\nexport function circleInOut(t) {\n  return ((t *= 2) <= 1 ? 1 - Math.sqrt(1 - t * t) : Math.sqrt(1 - (t -= 2) * t) + 1) / 2;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-ease/src/circle.js\n// module id = null\n// module chunks = ","var b1 = 4 / 11,\n    b2 = 6 / 11,\n    b3 = 8 / 11,\n    b4 = 3 / 4,\n    b5 = 9 / 11,\n    b6 = 10 / 11,\n    b7 = 15 / 16,\n    b8 = 21 / 22,\n    b9 = 63 / 64,\n    b0 = 1 / b1 / b1;\n\nexport function bounceIn(t) {\n  return 1 - bounceOut(1 - t);\n}\n\nexport function bounceOut(t) {\n  return (t = +t) < b1 ? b0 * t * t : t < b3 ? b0 * (t -= b2) * t + b4 : t < b6 ? b0 * (t -= b5) * t + b7 : b0 * (t -= b8) * t + b9;\n}\n\nexport function bounceInOut(t) {\n  return ((t *= 2) <= 1 ? 1 - bounceOut(1 - t) : bounceOut(t - 1) + 1) / 2;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-ease/src/bounce.js\n// module id = null\n// module chunks = ","var overshoot = 1.70158;\n\nexport var backIn = (function custom(s) {\n  s = +s;\n\n  function backIn(t) {\n    return (t = +t) * t * (s * (t - 1) + t);\n  }\n\n  backIn.overshoot = custom;\n\n  return backIn;\n})(overshoot);\n\nexport var backOut = (function custom(s) {\n  s = +s;\n\n  function backOut(t) {\n    return --t * t * ((t + 1) * s + t) + 1;\n  }\n\n  backOut.overshoot = custom;\n\n  return backOut;\n})(overshoot);\n\nexport var backInOut = (function custom(s) {\n  s = +s;\n\n  function backInOut(t) {\n    return ((t *= 2) < 1 ? t * t * ((s + 1) * t - s) : (t -= 2) * t * ((s + 1) * t + s) + 2) / 2;\n  }\n\n  backInOut.overshoot = custom;\n\n  return backInOut;\n})(overshoot);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-ease/src/back.js\n// module id = null\n// module chunks = ","import {tpmt} from \"./math.js\";\n\nvar tau = 2 * Math.PI,\n    amplitude = 1,\n    period = 0.3;\n\nexport var elasticIn = (function custom(a, p) {\n  var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n  function elasticIn(t) {\n    return a * tpmt(-(--t)) * Math.sin((s - t) / p);\n  }\n\n  elasticIn.amplitude = function(a) { return custom(a, p * tau); };\n  elasticIn.period = function(p) { return custom(a, p); };\n\n  return elasticIn;\n})(amplitude, period);\n\nexport var elasticOut = (function custom(a, p) {\n  var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n  function elasticOut(t) {\n    return 1 - a * tpmt(t = +t) * Math.sin((t + s) / p);\n  }\n\n  elasticOut.amplitude = function(a) { return custom(a, p * tau); };\n  elasticOut.period = function(p) { return custom(a, p); };\n\n  return elasticOut;\n})(amplitude, period);\n\nexport var elasticInOut = (function custom(a, p) {\n  var s = Math.asin(1 / (a = Math.max(1, a))) * (p /= tau);\n\n  function elasticInOut(t) {\n    return ((t = t * 2 - 1) < 0\n        ? a * tpmt(-t) * Math.sin((s - t) / p)\n        : 2 - a * tpmt(t) * Math.sin((s + t) / p)) / 2;\n  }\n\n  elasticInOut.amplitude = function(a) { return custom(a, p * tau); };\n  elasticInOut.period = function(p) { return custom(a, p); };\n\n  return elasticInOut;\n})(amplitude, period);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-ease/src/elastic.js\n// module id = null\n// module chunks = ","export {\n  linear as easeLinear\n} from \"./linear.js\";\n\nexport {\n  quadInOut as easeQuad,\n  quadIn as easeQuadIn,\n  quadOut as easeQuadOut,\n  quadInOut as easeQuadInOut\n} from \"./quad.js\";\n\nexport {\n  cubicInOut as easeCubic,\n  cubicIn as easeCubicIn,\n  cubicOut as easeCubicOut,\n  cubicInOut as easeCubicInOut\n} from \"./cubic.js\";\n\nexport {\n  polyInOut as easePoly,\n  polyIn as easePolyIn,\n  polyOut as easePolyOut,\n  polyInOut as easePolyInOut\n} from \"./poly.js\";\n\nexport {\n  sinInOut as easeSin,\n  sinIn as easeSinIn,\n  sinOut as easeSinOut,\n  sinInOut as easeSinInOut\n} from \"./sin.js\";\n\nexport {\n  expInOut as easeExp,\n  expIn as easeExpIn,\n  expOut as easeExpOut,\n  expInOut as easeExpInOut\n} from \"./exp.js\";\n\nexport {\n  circleInOut as easeCircle,\n  circleIn as easeCircleIn,\n  circleOut as easeCircleOut,\n  circleInOut as easeCircleInOut\n} from \"./circle.js\";\n\nexport {\n  bounceOut as easeBounce,\n  bounceIn as easeBounceIn,\n  bounceOut as easeBounceOut,\n  bounceInOut as easeBounceInOut\n} from \"./bounce.js\";\n\nexport {\n  backInOut as easeBack,\n  backIn as easeBackIn,\n  backOut as easeBackOut,\n  backInOut as easeBackInOut\n} from \"./back.js\";\n\nexport {\n  elasticOut as easeElastic,\n  elasticIn as easeElasticIn,\n  elasticOut as easeElasticOut,\n  elasticInOut as easeElasticInOut\n} from \"./elastic.js\";\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-ease/src/index.js\n// module id = null\n// module chunks = ","import {Transition, newId} from \"../transition/index.js\";\nimport schedule from \"../transition/schedule.js\";\nimport {easeCubicInOut} from \"d3-ease\";\nimport {now} from \"d3-timer\";\n\nvar defaultTiming = {\n  time: null, // Set on use.\n  delay: 0,\n  duration: 250,\n  ease: easeCubicInOut\n};\n\nfunction inherit(node, id) {\n  var timing;\n  while (!(timing = node.__transition) || !(timing = timing[id])) {\n    if (!(node = node.parentNode)) {\n      return defaultTiming.time = now(), defaultTiming;\n    }\n  }\n  return timing;\n}\n\nexport default function(name) {\n  var id,\n      timing;\n\n  if (name instanceof Transition) {\n    id = name._id, name = name._name;\n  } else {\n    id = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n  }\n\n  for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n    for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n      if (node = group[i]) {\n        schedule(node, name, id, i, group, timing || inherit(node, id));\n      }\n    }\n  }\n\n  return new Transition(groups, this._parents, name, id);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-transition/src/selection/transition.js\n// module id = null\n// module chunks = ","import {selection} from \"d3-selection\";\nimport selection_interrupt from \"./interrupt.js\";\nimport selection_transition from \"./transition.js\";\n\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-transition/src/selection/index.js\n// module id = null\n// module chunks = ","import {Transition} from \"./transition/index.js\";\nimport {SCHEDULED} from \"./transition/schedule.js\";\n\nvar root = [null];\n\nexport default function(node, name) {\n  var schedules = node.__transition,\n      schedule,\n      i;\n\n  if (schedules) {\n    name = name == null ? null : name + \"\";\n    for (i in schedules) {\n      if ((schedule = schedules[i]).state > SCHEDULED && schedule.name === name) {\n        return new Transition([[node]], root, name, +i);\n      }\n    }\n  }\n\n  return null;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-transition/src/active.js\n// module id = null\n// module chunks = ","import \"./selection/index.js\";\nexport {default as transition} from \"./transition/index.js\";\nexport {default as active} from \"./active.js\";\nexport {default as interrupt} from \"./interrupt.js\";\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-transition/src/index.js\n// module id = null\n// module chunks = ","export default function(x) {\n  return function() {\n    return x;\n  };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-brush/src/constant.js\n// module id = null\n// module chunks = ","export default function(target, type, selection) {\n  this.target = target;\n  this.type = type;\n  this.selection = selection;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-brush/src/event.js\n// module id = null\n// module chunks = ","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n  event.stopImmediatePropagation();\n}\n\nexport default function() {\n  event.preventDefault();\n  event.stopImmediatePropagation();\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-brush/src/noevent.js\n// module id = null\n// module chunks = ","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolate} from \"d3-interpolate\";\nimport {customEvent, event, touch, mouse, select} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport BrushEvent from \"./event.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\nvar MODE_DRAG = {name: \"drag\"},\n    MODE_SPACE = {name: \"space\"},\n    MODE_HANDLE = {name: \"handle\"},\n    MODE_CENTER = {name: \"center\"};\n\nfunction number1(e) {\n  return [+e[0], +e[1]];\n}\n\nfunction number2(e) {\n  return [number1(e[0]), number1(e[1])];\n}\n\nfunction toucher(identifier) {\n  return function(target) {\n    return touch(target, event.touches, identifier);\n  };\n}\n\nvar X = {\n  name: \"x\",\n  handles: [\"w\", \"e\"].map(type),\n  input: function(x, e) { return x == null ? null : [[+x[0], e[0][1]], [+x[1], e[1][1]]]; },\n  output: function(xy) { return xy && [xy[0][0], xy[1][0]]; }\n};\n\nvar Y = {\n  name: \"y\",\n  handles: [\"n\", \"s\"].map(type),\n  input: function(y, e) { return y == null ? null : [[e[0][0], +y[0]], [e[1][0], +y[1]]]; },\n  output: function(xy) { return xy && [xy[0][1], xy[1][1]]; }\n};\n\nvar XY = {\n  name: \"xy\",\n  handles: [\"n\", \"w\", \"e\", \"s\", \"nw\", \"ne\", \"sw\", \"se\"].map(type),\n  input: function(xy) { return xy == null ? null : number2(xy); },\n  output: function(xy) { return xy; }\n};\n\nvar cursors = {\n  overlay: \"crosshair\",\n  selection: \"move\",\n  n: \"ns-resize\",\n  e: \"ew-resize\",\n  s: \"ns-resize\",\n  w: \"ew-resize\",\n  nw: \"nwse-resize\",\n  ne: \"nesw-resize\",\n  se: \"nwse-resize\",\n  sw: \"nesw-resize\"\n};\n\nvar flipX = {\n  e: \"w\",\n  w: \"e\",\n  nw: \"ne\",\n  ne: \"nw\",\n  se: \"sw\",\n  sw: \"se\"\n};\n\nvar flipY = {\n  n: \"s\",\n  s: \"n\",\n  nw: \"sw\",\n  ne: \"se\",\n  se: \"ne\",\n  sw: \"nw\"\n};\n\nvar signsX = {\n  overlay: +1,\n  selection: +1,\n  n: null,\n  e: +1,\n  s: null,\n  w: -1,\n  nw: -1,\n  ne: +1,\n  se: +1,\n  sw: -1\n};\n\nvar signsY = {\n  overlay: +1,\n  selection: +1,\n  n: -1,\n  e: null,\n  s: +1,\n  w: null,\n  nw: -1,\n  ne: -1,\n  se: +1,\n  sw: +1\n};\n\nfunction type(t) {\n  return {type: t};\n}\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n  return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n  var svg = this.ownerSVGElement || this;\n  if (svg.hasAttribute(\"viewBox\")) {\n    svg = svg.viewBox.baseVal;\n    return [[svg.x, svg.y], [svg.x + svg.width, svg.y + svg.height]];\n  }\n  return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]];\n}\n\nfunction defaultTouchable() {\n  return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\n// Like d3.local, but with the name “__brush” rather than auto-generated.\nfunction local(node) {\n  while (!node.__brush) if (!(node = node.parentNode)) return;\n  return node.__brush;\n}\n\nfunction empty(extent) {\n  return extent[0][0] === extent[1][0]\n      || extent[0][1] === extent[1][1];\n}\n\nexport function brushSelection(node) {\n  var state = node.__brush;\n  return state ? state.dim.output(state.selection) : null;\n}\n\nexport function brushX() {\n  return brush(X);\n}\n\nexport function brushY() {\n  return brush(Y);\n}\n\nexport default function() {\n  return brush(XY);\n}\n\nfunction brush(dim) {\n  var extent = defaultExtent,\n      filter = defaultFilter,\n      touchable = defaultTouchable,\n      keys = true,\n      listeners = dispatch(\"start\", \"brush\", \"end\"),\n      handleSize = 6,\n      touchending;\n\n  function brush(group) {\n    var overlay = group\n        .property(\"__brush\", initialize)\n      .selectAll(\".overlay\")\n      .data([type(\"overlay\")]);\n\n    overlay.enter().append(\"rect\")\n        .attr(\"class\", \"overlay\")\n        .attr(\"pointer-events\", \"all\")\n        .attr(\"cursor\", cursors.overlay)\n      .merge(overlay)\n        .each(function() {\n          var extent = local(this).extent;\n          select(this)\n              .attr(\"x\", extent[0][0])\n              .attr(\"y\", extent[0][1])\n              .attr(\"width\", extent[1][0] - extent[0][0])\n              .attr(\"height\", extent[1][1] - extent[0][1]);\n        });\n\n    group.selectAll(\".selection\")\n      .data([type(\"selection\")])\n      .enter().append(\"rect\")\n        .attr(\"class\", \"selection\")\n        .attr(\"cursor\", cursors.selection)\n        .attr(\"fill\", \"#777\")\n        .attr(\"fill-opacity\", 0.3)\n        .attr(\"stroke\", \"#fff\")\n        .attr(\"shape-rendering\", \"crispEdges\");\n\n    var handle = group.selectAll(\".handle\")\n      .data(dim.handles, function(d) { return d.type; });\n\n    handle.exit().remove();\n\n    handle.enter().append(\"rect\")\n        .attr(\"class\", function(d) { return \"handle handle--\" + d.type; })\n        .attr(\"cursor\", function(d) { return cursors[d.type]; });\n\n    group\n        .each(redraw)\n        .attr(\"fill\", \"none\")\n        .attr(\"pointer-events\", \"all\")\n        .on(\"mousedown.brush\", started)\n      .filter(touchable)\n        .on(\"touchstart.brush\", started)\n        .on(\"touchmove.brush\", touchmoved)\n        .on(\"touchend.brush touchcancel.brush\", touchended)\n        .style(\"touch-action\", \"none\")\n        .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n  }\n\n  brush.move = function(group, selection) {\n    if (group.selection) {\n      group\n          .on(\"start.brush\", function() { emitter(this, arguments).beforestart().start(); })\n          .on(\"interrupt.brush end.brush\", function() { emitter(this, arguments).end(); })\n          .tween(\"brush\", function() {\n            var that = this,\n                state = that.__brush,\n                emit = emitter(that, arguments),\n                selection0 = state.selection,\n                selection1 = dim.input(typeof selection === \"function\" ? selection.apply(this, arguments) : selection, state.extent),\n                i = interpolate(selection0, selection1);\n\n            function tween(t) {\n              state.selection = t === 1 && selection1 === null ? null : i(t);\n              redraw.call(that);\n              emit.brush();\n            }\n\n            return selection0 !== null && selection1 !== null ? tween : tween(1);\n          });\n    } else {\n      group\n          .each(function() {\n            var that = this,\n                args = arguments,\n                state = that.__brush,\n                selection1 = dim.input(typeof selection === \"function\" ? selection.apply(that, args) : selection, state.extent),\n                emit = emitter(that, args).beforestart();\n\n            interrupt(that);\n            state.selection = selection1 === null ? null : selection1;\n            redraw.call(that);\n            emit.start().brush().end();\n          });\n    }\n  };\n\n  brush.clear = function(group) {\n    brush.move(group, null);\n  };\n\n  function redraw() {\n    var group = select(this),\n        selection = local(this).selection;\n\n    if (selection) {\n      group.selectAll(\".selection\")\n          .style(\"display\", null)\n          .attr(\"x\", selection[0][0])\n          .attr(\"y\", selection[0][1])\n          .attr(\"width\", selection[1][0] - selection[0][0])\n          .attr(\"height\", selection[1][1] - selection[0][1]);\n\n      group.selectAll(\".handle\")\n          .style(\"display\", null)\n          .attr(\"x\", function(d) { return d.type[d.type.length - 1] === \"e\" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; })\n          .attr(\"y\", function(d) { return d.type[0] === \"s\" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; })\n          .attr(\"width\", function(d) { return d.type === \"n\" || d.type === \"s\" ? selection[1][0] - selection[0][0] + handleSize : handleSize; })\n          .attr(\"height\", function(d) { return d.type === \"e\" || d.type === \"w\" ? selection[1][1] - selection[0][1] + handleSize : handleSize; });\n    }\n\n    else {\n      group.selectAll(\".selection,.handle\")\n          .style(\"display\", \"none\")\n          .attr(\"x\", null)\n          .attr(\"y\", null)\n          .attr(\"width\", null)\n          .attr(\"height\", null);\n    }\n  }\n\n  function emitter(that, args, clean) {\n    var emit = that.__brush.emitter;\n    return emit && (!clean || !emit.clean) ? emit : new Emitter(that, args, clean);\n  }\n\n  function Emitter(that, args, clean) {\n    this.that = that;\n    this.args = args;\n    this.state = that.__brush;\n    this.active = 0;\n    this.clean = clean;\n  }\n\n  Emitter.prototype = {\n    beforestart: function() {\n      if (++this.active === 1) this.state.emitter = this, this.starting = true;\n      return this;\n    },\n    start: function() {\n      if (this.starting) this.starting = false, this.emit(\"start\");\n      else this.emit(\"brush\");\n      return this;\n    },\n    brush: function() {\n      this.emit(\"brush\");\n      return this;\n    },\n    end: function() {\n      if (--this.active === 0) delete this.state.emitter, this.emit(\"end\");\n      return this;\n    },\n    emit: function(type) {\n      customEvent(new BrushEvent(brush, type, dim.output(this.state.selection)), listeners.apply, listeners, [type, this.that, this.args]);\n    }\n  };\n\n  function started() {\n    if (touchending && !event.touches) return;\n    if (!filter.apply(this, arguments)) return;\n\n    var that = this,\n        type = event.target.__data__.type,\n        mode = (keys && event.metaKey ? type = \"overlay\" : type) === \"selection\" ? MODE_DRAG : (keys && event.altKey ? MODE_CENTER : MODE_HANDLE),\n        signX = dim === Y ? null : signsX[type],\n        signY = dim === X ? null : signsY[type],\n        state = local(that),\n        extent = state.extent,\n        selection = state.selection,\n        W = extent[0][0], w0, w1,\n        N = extent[0][1], n0, n1,\n        E = extent[1][0], e0, e1,\n        S = extent[1][1], s0, s1,\n        dx = 0,\n        dy = 0,\n        moving,\n        shifting = signX && signY && keys && event.shiftKey,\n        lockX,\n        lockY,\n        pointer = event.touches ? toucher(event.changedTouches[0].identifier) : mouse,\n        point0 = pointer(that),\n        point = point0,\n        emit = emitter(that, arguments, true).beforestart();\n\n    if (type === \"overlay\") {\n      if (selection) moving = true;\n      state.selection = selection = [\n        [w0 = dim === Y ? W : point0[0], n0 = dim === X ? N : point0[1]],\n        [e0 = dim === Y ? E : w0, s0 = dim === X ? S : n0]\n      ];\n    } else {\n      w0 = selection[0][0];\n      n0 = selection[0][1];\n      e0 = selection[1][0];\n      s0 = selection[1][1];\n    }\n\n    w1 = w0;\n    n1 = n0;\n    e1 = e0;\n    s1 = s0;\n\n    var group = select(that)\n        .attr(\"pointer-events\", \"none\");\n\n    var overlay = group.selectAll(\".overlay\")\n        .attr(\"cursor\", cursors[type]);\n\n    if (event.touches) {\n      emit.moved = moved;\n      emit.ended = ended;\n    } else {\n      var view = select(event.view)\n          .on(\"mousemove.brush\", moved, true)\n          .on(\"mouseup.brush\", ended, true);\n      if (keys) view\n          .on(\"keydown.brush\", keydowned, true)\n          .on(\"keyup.brush\", keyupped, true)\n\n      dragDisable(event.view);\n    }\n\n    nopropagation();\n    interrupt(that);\n    redraw.call(that);\n    emit.start();\n\n    function moved() {\n      var point1 = pointer(that);\n      if (shifting && !lockX && !lockY) {\n        if (Math.abs(point1[0] - point[0]) > Math.abs(point1[1] - point[1])) lockY = true;\n        else lockX = true;\n      }\n      point = point1;\n      moving = true;\n      noevent();\n      move();\n    }\n\n    function move() {\n      var t;\n\n      dx = point[0] - point0[0];\n      dy = point[1] - point0[1];\n\n      switch (mode) {\n        case MODE_SPACE:\n        case MODE_DRAG: {\n          if (signX) dx = Math.max(W - w0, Math.min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx;\n          if (signY) dy = Math.max(N - n0, Math.min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy;\n          break;\n        }\n        case MODE_HANDLE: {\n          if (signX < 0) dx = Math.max(W - w0, Math.min(E - w0, dx)), w1 = w0 + dx, e1 = e0;\n          else if (signX > 0) dx = Math.max(W - e0, Math.min(E - e0, dx)), w1 = w0, e1 = e0 + dx;\n          if (signY < 0) dy = Math.max(N - n0, Math.min(S - n0, dy)), n1 = n0 + dy, s1 = s0;\n          else if (signY > 0) dy = Math.max(N - s0, Math.min(S - s0, dy)), n1 = n0, s1 = s0 + dy;\n          break;\n        }\n        case MODE_CENTER: {\n          if (signX) w1 = Math.max(W, Math.min(E, w0 - dx * signX)), e1 = Math.max(W, Math.min(E, e0 + dx * signX));\n          if (signY) n1 = Math.max(N, Math.min(S, n0 - dy * signY)), s1 = Math.max(N, Math.min(S, s0 + dy * signY));\n          break;\n        }\n      }\n\n      if (e1 < w1) {\n        signX *= -1;\n        t = w0, w0 = e0, e0 = t;\n        t = w1, w1 = e1, e1 = t;\n        if (type in flipX) overlay.attr(\"cursor\", cursors[type = flipX[type]]);\n      }\n\n      if (s1 < n1) {\n        signY *= -1;\n        t = n0, n0 = s0, s0 = t;\n        t = n1, n1 = s1, s1 = t;\n        if (type in flipY) overlay.attr(\"cursor\", cursors[type = flipY[type]]);\n      }\n\n      if (state.selection) selection = state.selection; // May be set by brush.move!\n      if (lockX) w1 = selection[0][0], e1 = selection[1][0];\n      if (lockY) n1 = selection[0][1], s1 = selection[1][1];\n\n      if (selection[0][0] !== w1\n          || selection[0][1] !== n1\n          || selection[1][0] !== e1\n          || selection[1][1] !== s1) {\n        state.selection = [[w1, n1], [e1, s1]];\n        redraw.call(that);\n        emit.brush();\n      }\n    }\n\n    function ended() {\n      nopropagation();\n      if (event.touches) {\n        if (event.touches.length) return;\n        if (touchending) clearTimeout(touchending);\n        touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed!\n      } else {\n        dragEnable(event.view, moving);\n        view.on(\"keydown.brush keyup.brush mousemove.brush mouseup.brush\", null);\n      }\n      group.attr(\"pointer-events\", \"all\");\n      overlay.attr(\"cursor\", cursors.overlay);\n      if (state.selection) selection = state.selection; // May be set by brush.move (on start)!\n      if (empty(selection)) state.selection = null, redraw.call(that);\n      emit.end();\n    }\n\n    function keydowned() {\n      switch (event.keyCode) {\n        case 16: { // SHIFT\n          shifting = signX && signY;\n          break;\n        }\n        case 18: { // ALT\n          if (mode === MODE_HANDLE) {\n            if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n            if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n            mode = MODE_CENTER;\n            move();\n          }\n          break;\n        }\n        case 32: { // SPACE; takes priority over ALT\n          if (mode === MODE_HANDLE || mode === MODE_CENTER) {\n            if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx;\n            if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy;\n            mode = MODE_SPACE;\n            overlay.attr(\"cursor\", cursors.selection);\n            move();\n          }\n          break;\n        }\n        default: return;\n      }\n      noevent();\n    }\n\n    function keyupped() {\n      switch (event.keyCode) {\n        case 16: { // SHIFT\n          if (shifting) {\n            lockX = lockY = shifting = false;\n            move();\n          }\n          break;\n        }\n        case 18: { // ALT\n          if (mode === MODE_CENTER) {\n            if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n            if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n            mode = MODE_HANDLE;\n            move();\n          }\n          break;\n        }\n        case 32: { // SPACE\n          if (mode === MODE_SPACE) {\n            if (event.altKey) {\n              if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX;\n              if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY;\n              mode = MODE_CENTER;\n            } else {\n              if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1;\n              if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1;\n              mode = MODE_HANDLE;\n            }\n            overlay.attr(\"cursor\", cursors[type]);\n            move();\n          }\n          break;\n        }\n        default: return;\n      }\n      noevent();\n    }\n  }\n\n  function touchmoved() {\n    emitter(this, arguments).moved();\n  }\n\n  function touchended() {\n    emitter(this, arguments).ended();\n  }\n\n  function initialize() {\n    var state = this.__brush || {selection: null};\n    state.extent = number2(extent.apply(this, arguments));\n    state.dim = dim;\n    return state;\n  }\n\n  brush.extent = function(_) {\n    return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant(number2(_)), brush) : extent;\n  };\n\n  brush.filter = function(_) {\n    return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), brush) : filter;\n  };\n\n  brush.touchable = function(_) {\n    return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), brush) : touchable;\n  };\n\n  brush.handleSize = function(_) {\n    return arguments.length ? (handleSize = +_, brush) : handleSize;\n  };\n\n  brush.keyModifiers = function(_) {\n    return arguments.length ? (keys = !!_, brush) : keys;\n  };\n\n  brush.on = function() {\n    var value = listeners.on.apply(listeners, arguments);\n    return value === listeners ? brush : value;\n  };\n\n  return brush;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-brush/src/brush.js\n// module id = null\n// module chunks = ","export {\n  default as brush,\n  brushX,\n  brushY,\n  brushSelection\n} from \"./brush.js\";\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-brush/src/index.js\n// module id = null\n// module chunks = ","export var cos = Math.cos;\nexport var sin = Math.sin;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = pi * 2;\nexport var max = Math.max;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-chord/src/math.js\n// module id = null\n// module chunks = ","import {range} from \"d3-array\";\nimport {max, tau} from \"./math\";\n\nfunction compareValue(compare) {\n  return function(a, b) {\n    return compare(\n      a.source.value + a.target.value,\n      b.source.value + b.target.value\n    );\n  };\n}\n\nexport default function() {\n  var padAngle = 0,\n      sortGroups = null,\n      sortSubgroups = null,\n      sortChords = null;\n\n  function chord(matrix) {\n    var n = matrix.length,\n        groupSums = [],\n        groupIndex = range(n),\n        subgroupIndex = [],\n        chords = [],\n        groups = chords.groups = new Array(n),\n        subgroups = new Array(n * n),\n        k,\n        x,\n        x0,\n        dx,\n        i,\n        j;\n\n    // Compute the sum.\n    k = 0, i = -1; while (++i < n) {\n      x = 0, j = -1; while (++j < n) {\n        x += matrix[i][j];\n      }\n      groupSums.push(x);\n      subgroupIndex.push(range(n));\n      k += x;\n    }\n\n    // Sort groups…\n    if (sortGroups) groupIndex.sort(function(a, b) {\n      return sortGroups(groupSums[a], groupSums[b]);\n    });\n\n    // Sort subgroups…\n    if (sortSubgroups) subgroupIndex.forEach(function(d, i) {\n      d.sort(function(a, b) {\n        return sortSubgroups(matrix[i][a], matrix[i][b]);\n      });\n    });\n\n    // Convert the sum to scaling factor for [0, 2pi].\n    // TODO Allow start and end angle to be specified?\n    // TODO Allow padding to be specified as percentage?\n    k = max(0, tau - padAngle * n) / k;\n    dx = k ? padAngle : tau / n;\n\n    // Compute the start and end angle for each group and subgroup.\n    // Note: Opera has a bug reordering object literal properties!\n    x = 0, i = -1; while (++i < n) {\n      x0 = x, j = -1; while (++j < n) {\n        var di = groupIndex[i],\n            dj = subgroupIndex[di][j],\n            v = matrix[di][dj],\n            a0 = x,\n            a1 = x += v * k;\n        subgroups[dj * n + di] = {\n          index: di,\n          subindex: dj,\n          startAngle: a0,\n          endAngle: a1,\n          value: v\n        };\n      }\n      groups[di] = {\n        index: di,\n        startAngle: x0,\n        endAngle: x,\n        value: groupSums[di]\n      };\n      x += dx;\n    }\n\n    // Generate chords for each (non-empty) subgroup-subgroup link.\n    i = -1; while (++i < n) {\n      j = i - 1; while (++j < n) {\n        var source = subgroups[j * n + i],\n            target = subgroups[i * n + j];\n        if (source.value || target.value) {\n          chords.push(source.value < target.value\n              ? {source: target, target: source}\n              : {source: source, target: target});\n        }\n      }\n    }\n\n    return sortChords ? chords.sort(sortChords) : chords;\n  }\n\n  chord.padAngle = function(_) {\n    return arguments.length ? (padAngle = max(0, _), chord) : padAngle;\n  };\n\n  chord.sortGroups = function(_) {\n    return arguments.length ? (sortGroups = _, chord) : sortGroups;\n  };\n\n  chord.sortSubgroups = function(_) {\n    return arguments.length ? (sortSubgroups = _, chord) : sortSubgroups;\n  };\n\n  chord.sortChords = function(_) {\n    return arguments.length ? (_ == null ? sortChords = null : (sortChords = compareValue(_))._ = _, chord) : sortChords && sortChords._;\n  };\n\n  return chord;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-chord/src/chord.js\n// module id = null\n// module chunks = ","export var slice = Array.prototype.slice;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-chord/src/array.js\n// module id = null\n// module chunks = ","export default function(x) {\n  return function() {\n    return x;\n  };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-chord/src/constant.js\n// module id = null\n// module chunks = ","var pi = Math.PI,\n    tau = 2 * pi,\n    epsilon = 1e-6,\n    tauEpsilon = tau - epsilon;\n\nfunction Path() {\n  this._x0 = this._y0 = // start of current subpath\n  this._x1 = this._y1 = null; // end of current subpath\n  this._ = \"\";\n}\n\nfunction path() {\n  return new Path;\n}\n\nPath.prototype = path.prototype = {\n  constructor: Path,\n  moveTo: function(x, y) {\n    this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y);\n  },\n  closePath: function() {\n    if (this._x1 !== null) {\n      this._x1 = this._x0, this._y1 = this._y0;\n      this._ += \"Z\";\n    }\n  },\n  lineTo: function(x, y) {\n    this._ += \"L\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n  },\n  quadraticCurveTo: function(x1, y1, x, y) {\n    this._ += \"Q\" + (+x1) + \",\" + (+y1) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n  },\n  bezierCurveTo: function(x1, y1, x2, y2, x, y) {\n    this._ += \"C\" + (+x1) + \",\" + (+y1) + \",\" + (+x2) + \",\" + (+y2) + \",\" + (this._x1 = +x) + \",\" + (this._y1 = +y);\n  },\n  arcTo: function(x1, y1, x2, y2, r) {\n    x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r;\n    var x0 = this._x1,\n        y0 = this._y1,\n        x21 = x2 - x1,\n        y21 = y2 - y1,\n        x01 = x0 - x1,\n        y01 = y0 - y1,\n        l01_2 = x01 * x01 + y01 * y01;\n\n    // Is the radius negative? Error.\n    if (r < 0) throw new Error(\"negative radius: \" + r);\n\n    // Is this path empty? Move to (x1,y1).\n    if (this._x1 === null) {\n      this._ += \"M\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n    }\n\n    // Or, is (x1,y1) coincident with (x0,y0)? Do nothing.\n    else if (!(l01_2 > epsilon));\n\n    // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear?\n    // Equivalently, is (x1,y1) coincident with (x2,y2)?\n    // Or, is the radius zero? Line to (x1,y1).\n    else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) {\n      this._ += \"L\" + (this._x1 = x1) + \",\" + (this._y1 = y1);\n    }\n\n    // Otherwise, draw an arc!\n    else {\n      var x20 = x2 - x0,\n          y20 = y2 - y0,\n          l21_2 = x21 * x21 + y21 * y21,\n          l20_2 = x20 * x20 + y20 * y20,\n          l21 = Math.sqrt(l21_2),\n          l01 = Math.sqrt(l01_2),\n          l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2),\n          t01 = l / l01,\n          t21 = l / l21;\n\n      // If the start tangent is not coincident with (x0,y0), line to.\n      if (Math.abs(t01 - 1) > epsilon) {\n        this._ += \"L\" + (x1 + t01 * x01) + \",\" + (y1 + t01 * y01);\n      }\n\n      this._ += \"A\" + r + \",\" + r + \",0,0,\" + (+(y01 * x20 > x01 * y20)) + \",\" + (this._x1 = x1 + t21 * x21) + \",\" + (this._y1 = y1 + t21 * y21);\n    }\n  },\n  arc: function(x, y, r, a0, a1, ccw) {\n    x = +x, y = +y, r = +r, ccw = !!ccw;\n    var dx = r * Math.cos(a0),\n        dy = r * Math.sin(a0),\n        x0 = x + dx,\n        y0 = y + dy,\n        cw = 1 ^ ccw,\n        da = ccw ? a0 - a1 : a1 - a0;\n\n    // Is the radius negative? Error.\n    if (r < 0) throw new Error(\"negative radius: \" + r);\n\n    // Is this path empty? Move to (x0,y0).\n    if (this._x1 === null) {\n      this._ += \"M\" + x0 + \",\" + y0;\n    }\n\n    // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0).\n    else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) {\n      this._ += \"L\" + x0 + \",\" + y0;\n    }\n\n    // Is this arc empty? We’re done.\n    if (!r) return;\n\n    // Does the angle go the wrong way? Flip the direction.\n    if (da < 0) da = da % tau + tau;\n\n    // Is this a complete circle? Draw two arcs to complete the circle.\n    if (da > tauEpsilon) {\n      this._ += \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (x - dx) + \",\" + (y - dy) + \"A\" + r + \",\" + r + \",0,1,\" + cw + \",\" + (this._x1 = x0) + \",\" + (this._y1 = y0);\n    }\n\n    // Is this arc non-empty? Draw an arc!\n    else if (da > epsilon) {\n      this._ += \"A\" + r + \",\" + r + \",0,\" + (+(da >= pi)) + \",\" + cw + \",\" + (this._x1 = x + r * Math.cos(a1)) + \",\" + (this._y1 = y + r * Math.sin(a1));\n    }\n  },\n  rect: function(x, y, w, h) {\n    this._ += \"M\" + (this._x0 = this._x1 = +x) + \",\" + (this._y0 = this._y1 = +y) + \"h\" + (+w) + \"v\" + (+h) + \"h\" + (-w) + \"Z\";\n  },\n  toString: function() {\n    return this._;\n  }\n};\n\nexport default path;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-path/src/path.js\n// module id = null\n// module chunks = ","export {default as path} from \"./path.js\";\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-path/src/index.js\n// module id = null\n// module chunks = ","import {slice} from \"./array\";\nimport constant from \"./constant\";\nimport {cos, halfPi, sin} from \"./math\";\nimport {path} from \"d3-path\";\n\nfunction defaultSource(d) {\n  return d.source;\n}\n\nfunction defaultTarget(d) {\n  return d.target;\n}\n\nfunction defaultRadius(d) {\n  return d.radius;\n}\n\nfunction defaultStartAngle(d) {\n  return d.startAngle;\n}\n\nfunction defaultEndAngle(d) {\n  return d.endAngle;\n}\n\nexport default function() {\n  var source = defaultSource,\n      target = defaultTarget,\n      radius = defaultRadius,\n      startAngle = defaultStartAngle,\n      endAngle = defaultEndAngle,\n      context = null;\n\n  function ribbon() {\n    var buffer,\n        argv = slice.call(arguments),\n        s = source.apply(this, argv),\n        t = target.apply(this, argv),\n        sr = +radius.apply(this, (argv[0] = s, argv)),\n        sa0 = startAngle.apply(this, argv) - halfPi,\n        sa1 = endAngle.apply(this, argv) - halfPi,\n        sx0 = sr * cos(sa0),\n        sy0 = sr * sin(sa0),\n        tr = +radius.apply(this, (argv[0] = t, argv)),\n        ta0 = startAngle.apply(this, argv) - halfPi,\n        ta1 = endAngle.apply(this, argv) - halfPi;\n\n    if (!context) context = buffer = path();\n\n    context.moveTo(sx0, sy0);\n    context.arc(0, 0, sr, sa0, sa1);\n    if (sa0 !== ta0 || sa1 !== ta1) { // TODO sr !== tr?\n      context.quadraticCurveTo(0, 0, tr * cos(ta0), tr * sin(ta0));\n      context.arc(0, 0, tr, ta0, ta1);\n    }\n    context.quadraticCurveTo(0, 0, sx0, sy0);\n    context.closePath();\n\n    if (buffer) return context = null, buffer + \"\" || null;\n  }\n\n  ribbon.radius = function(_) {\n    return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), ribbon) : radius;\n  };\n\n  ribbon.startAngle = function(_) {\n    return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), ribbon) : startAngle;\n  };\n\n  ribbon.endAngle = function(_) {\n    return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), ribbon) : endAngle;\n  };\n\n  ribbon.source = function(_) {\n    return arguments.length ? (source = _, ribbon) : source;\n  };\n\n  ribbon.target = function(_) {\n    return arguments.length ? (target = _, ribbon) : target;\n  };\n\n  ribbon.context = function(_) {\n    return arguments.length ? ((context = _ == null ? null : _), ribbon) : context;\n  };\n\n  return ribbon;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-chord/src/ribbon.js\n// module id = null\n// module chunks = ","export {default as chord} from \"./chord\";\nexport {default as ribbon} from \"./ribbon\";\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-chord/src/index.js\n// module id = null\n// module chunks = ","var array = Array.prototype;\n\nexport var slice = array.slice;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-contour/src/array.js\n// module id = null\n// module chunks = ","export default function(a, b) {\n  return a - b;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-contour/src/ascending.js\n// module id = null\n// module chunks = ","export default function(ring) {\n  var i = 0, n = ring.length, area = ring[n - 1][1] * ring[0][0] - ring[n - 1][0] * ring[0][1];\n  while (++i < n) area += ring[i - 1][1] * ring[i][0] - ring[i - 1][0] * ring[i][1];\n  return area;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-contour/src/area.js\n// module id = null\n// module chunks = ","export default function(x) {\n  return function() {\n    return x;\n  };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-contour/src/constant.js\n// module id = null\n// module chunks = ","export default function(ring, hole) {\n  var i = -1, n = hole.length, c;\n  while (++i < n) if (c = ringContains(ring, hole[i])) return c;\n  return 0;\n}\n\nfunction ringContains(ring, point) {\n  var x = point[0], y = point[1], contains = -1;\n  for (var i = 0, n = ring.length, j = n - 1; i < n; j = i++) {\n    var pi = ring[i], xi = pi[0], yi = pi[1], pj = ring[j], xj = pj[0], yj = pj[1];\n    if (segmentContains(pi, pj, point)) return 0;\n    if (((yi > y) !== (yj > y)) && ((x < (xj - xi) * (y - yi) / (yj - yi) + xi))) contains = -contains;\n  }\n  return contains;\n}\n\nfunction segmentContains(a, b, c) {\n  var i; return collinear(a, b, c) && within(a[i = +(a[0] === b[0])], c[i], b[i]);\n}\n\nfunction collinear(a, b, c) {\n  return (b[0] - a[0]) * (c[1] - a[1]) === (c[0] - a[0]) * (b[1] - a[1]);\n}\n\nfunction within(p, q, r) {\n  return p <= q && q <= r || r <= q && q <= p;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-contour/src/contains.js\n// module id = null\n// module chunks = ","export default function() {}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-contour/src/noop.js\n// module id = null\n// module chunks = ","import {extent, thresholdSturges, tickStep, range} from \"d3-array\";\nimport {slice} from \"./array\";\nimport ascending from \"./ascending\";\nimport area from \"./area\";\nimport constant from \"./constant\";\nimport contains from \"./contains\";\nimport noop from \"./noop\";\n\nvar cases = [\n  [],\n  [[[1.0, 1.5], [0.5, 1.0]]],\n  [[[1.5, 1.0], [1.0, 1.5]]],\n  [[[1.5, 1.0], [0.5, 1.0]]],\n  [[[1.0, 0.5], [1.5, 1.0]]],\n  [[[1.0, 1.5], [0.5, 1.0]], [[1.0, 0.5], [1.5, 1.0]]],\n  [[[1.0, 0.5], [1.0, 1.5]]],\n  [[[1.0, 0.5], [0.5, 1.0]]],\n  [[[0.5, 1.0], [1.0, 0.5]]],\n  [[[1.0, 1.5], [1.0, 0.5]]],\n  [[[0.5, 1.0], [1.0, 0.5]], [[1.5, 1.0], [1.0, 1.5]]],\n  [[[1.5, 1.0], [1.0, 0.5]]],\n  [[[0.5, 1.0], [1.5, 1.0]]],\n  [[[1.0, 1.5], [1.5, 1.0]]],\n  [[[0.5, 1.0], [1.0, 1.5]]],\n  []\n];\n\nexport default function() {\n  var dx = 1,\n      dy = 1,\n      threshold = thresholdSturges,\n      smooth = smoothLinear;\n\n  function contours(values) {\n    var tz = threshold(values);\n\n    // Convert number of thresholds into uniform thresholds.\n    if (!Array.isArray(tz)) {\n      var domain = extent(values), start = domain[0], stop = domain[1];\n      tz = tickStep(start, stop, tz);\n      tz = range(Math.floor(start / tz) * tz, Math.floor(stop / tz) * tz, tz);\n    } else {\n      tz = tz.slice().sort(ascending);\n    }\n\n    return tz.map(function(value) {\n      return contour(values, value);\n    });\n  }\n\n  // Accumulate, smooth contour rings, assign holes to exterior rings.\n  // Based on https://github.com/mbostock/shapefile/blob/v0.6.2/shp/polygon.js\n  function contour(values, value) {\n    var polygons = [],\n        holes = [];\n\n    isorings(values, value, function(ring) {\n      smooth(ring, values, value);\n      if (area(ring) > 0) polygons.push([ring]);\n      else holes.push(ring);\n    });\n\n    holes.forEach(function(hole) {\n      for (var i = 0, n = polygons.length, polygon; i < n; ++i) {\n        if (contains((polygon = polygons[i])[0], hole) !== -1) {\n          polygon.push(hole);\n          return;\n        }\n      }\n    });\n\n    return {\n      type: \"MultiPolygon\",\n      value: value,\n      coordinates: polygons\n    };\n  }\n\n  // Marching squares with isolines stitched into rings.\n  // Based on https://github.com/topojson/topojson-client/blob/v3.0.0/src/stitch.js\n  function isorings(values, value, callback) {\n    var fragmentByStart = new Array,\n        fragmentByEnd = new Array,\n        x, y, t0, t1, t2, t3;\n\n    // Special case for the first row (y = -1, t2 = t3 = 0).\n    x = y = -1;\n    t1 = values[0] >= value;\n    cases[t1 << 1].forEach(stitch);\n    while (++x < dx - 1) {\n      t0 = t1, t1 = values[x + 1] >= value;\n      cases[t0 | t1 << 1].forEach(stitch);\n    }\n    cases[t1 << 0].forEach(stitch);\n\n    // General case for the intermediate rows.\n    while (++y < dy - 1) {\n      x = -1;\n      t1 = values[y * dx + dx] >= value;\n      t2 = values[y * dx] >= value;\n      cases[t1 << 1 | t2 << 2].forEach(stitch);\n      while (++x < dx - 1) {\n        t0 = t1, t1 = values[y * dx + dx + x + 1] >= value;\n        t3 = t2, t2 = values[y * dx + x + 1] >= value;\n        cases[t0 | t1 << 1 | t2 << 2 | t3 << 3].forEach(stitch);\n      }\n      cases[t1 | t2 << 3].forEach(stitch);\n    }\n\n    // Special case for the last row (y = dy - 1, t0 = t1 = 0).\n    x = -1;\n    t2 = values[y * dx] >= value;\n    cases[t2 << 2].forEach(stitch);\n    while (++x < dx - 1) {\n      t3 = t2, t2 = values[y * dx + x + 1] >= value;\n      cases[t2 << 2 | t3 << 3].forEach(stitch);\n    }\n    cases[t2 << 3].forEach(stitch);\n\n    function stitch(line) {\n      var start = [line[0][0] + x, line[0][1] + y],\n          end = [line[1][0] + x, line[1][1] + y],\n          startIndex = index(start),\n          endIndex = index(end),\n          f, g;\n      if (f = fragmentByEnd[startIndex]) {\n        if (g = fragmentByStart[endIndex]) {\n          delete fragmentByEnd[f.end];\n          delete fragmentByStart[g.start];\n          if (f === g) {\n            f.ring.push(end);\n            callback(f.ring);\n          } else {\n            fragmentByStart[f.start] = fragmentByEnd[g.end] = {start: f.start, end: g.end, ring: f.ring.concat(g.ring)};\n          }\n        } else {\n          delete fragmentByEnd[f.end];\n          f.ring.push(end);\n          fragmentByEnd[f.end = endIndex] = f;\n        }\n      } else if (f = fragmentByStart[endIndex]) {\n        if (g = fragmentByEnd[startIndex]) {\n          delete fragmentByStart[f.start];\n          delete fragmentByEnd[g.end];\n          if (f === g) {\n            f.ring.push(end);\n            callback(f.ring);\n          } else {\n            fragmentByStart[g.start] = fragmentByEnd[f.end] = {start: g.start, end: f.end, ring: g.ring.concat(f.ring)};\n          }\n        } else {\n          delete fragmentByStart[f.start];\n          f.ring.unshift(start);\n          fragmentByStart[f.start = startIndex] = f;\n        }\n      } else {\n        fragmentByStart[startIndex] = fragmentByEnd[endIndex] = {start: startIndex, end: endIndex, ring: [start, end]};\n      }\n    }\n  }\n\n  function index(point) {\n    return point[0] * 2 + point[1] * (dx + 1) * 4;\n  }\n\n  function smoothLinear(ring, values, value) {\n    ring.forEach(function(point) {\n      var x = point[0],\n          y = point[1],\n          xt = x | 0,\n          yt = y | 0,\n          v0,\n          v1 = values[yt * dx + xt];\n      if (x > 0 && x < dx && xt === x) {\n        v0 = values[yt * dx + xt - 1];\n        point[0] = x + (value - v0) / (v1 - v0) - 0.5;\n      }\n      if (y > 0 && y < dy && yt === y) {\n        v0 = values[(yt - 1) * dx + xt];\n        point[1] = y + (value - v0) / (v1 - v0) - 0.5;\n      }\n    });\n  }\n\n  contours.contour = contour;\n\n  contours.size = function(_) {\n    if (!arguments.length) return [dx, dy];\n    var _0 = Math.ceil(_[0]), _1 = Math.ceil(_[1]);\n    if (!(_0 > 0) || !(_1 > 0)) throw new Error(\"invalid size\");\n    return dx = _0, dy = _1, contours;\n  };\n\n  contours.thresholds = function(_) {\n    return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), contours) : threshold;\n  };\n\n  contours.smooth = function(_) {\n    return arguments.length ? (smooth = _ ? smoothLinear : noop, contours) : smooth === smoothLinear;\n  };\n\n  return contours;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-contour/src/contours.js\n// module id = null\n// module chunks = ","// TODO Optimize edge cases.\n// TODO Optimize index calculation.\n// TODO Optimize arguments.\nexport function blurX(source, target, r) {\n  var n = source.width,\n      m = source.height,\n      w = (r << 1) + 1;\n  for (var j = 0; j < m; ++j) {\n    for (var i = 0, sr = 0; i < n + r; ++i) {\n      if (i < n) {\n        sr += source.data[i + j * n];\n      }\n      if (i >= r) {\n        if (i >= w) {\n          sr -= source.data[i - w + j * n];\n        }\n        target.data[i - r + j * n] = sr / Math.min(i + 1, n - 1 + w - i, w);\n      }\n    }\n  }\n}\n\n// TODO Optimize edge cases.\n// TODO Optimize index calculation.\n// TODO Optimize arguments.\nexport function blurY(source, target, r) {\n  var n = source.width,\n      m = source.height,\n      w = (r << 1) + 1;\n  for (var i = 0; i < n; ++i) {\n    for (var j = 0, sr = 0; j < m + r; ++j) {\n      if (j < m) {\n        sr += source.data[i + j * n];\n      }\n      if (j >= r) {\n        if (j >= w) {\n          sr -= source.data[i + (j - w) * n];\n        }\n        target.data[i + (j - r) * n] = sr / Math.min(j + 1, m - 1 + w - j, w);\n      }\n    }\n  }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-contour/src/blur.js\n// module id = null\n// module chunks = ","import {max, range, tickStep} from \"d3-array\";\nimport {slice} from \"./array\";\nimport {blurX, blurY} from \"./blur\";\nimport constant from \"./constant\";\nimport contours from \"./contours\";\n\nfunction defaultX(d) {\n  return d[0];\n}\n\nfunction defaultY(d) {\n  return d[1];\n}\n\nfunction defaultWeight() {\n  return 1;\n}\n\nexport default function() {\n  var x = defaultX,\n      y = defaultY,\n      weight = defaultWeight,\n      dx = 960,\n      dy = 500,\n      r = 20, // blur radius\n      k = 2, // log2(grid cell size)\n      o = r * 3, // grid offset, to pad for blur\n      n = (dx + o * 2) >> k, // grid width\n      m = (dy + o * 2) >> k, // grid height\n      threshold = constant(20);\n\n  function density(data) {\n    var values0 = new Float32Array(n * m),\n        values1 = new Float32Array(n * m);\n\n    data.forEach(function(d, i, data) {\n      var xi = (+x(d, i, data) + o) >> k,\n          yi = (+y(d, i, data) + o) >> k,\n          wi = +weight(d, i, data);\n      if (xi >= 0 && xi < n && yi >= 0 && yi < m) {\n        values0[xi + yi * n] += wi;\n      }\n    });\n\n    // TODO Optimize.\n    blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n    blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n    blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n    blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n    blurX({width: n, height: m, data: values0}, {width: n, height: m, data: values1}, r >> k);\n    blurY({width: n, height: m, data: values1}, {width: n, height: m, data: values0}, r >> k);\n\n    var tz = threshold(values0);\n\n    // Convert number of thresholds into uniform thresholds.\n    if (!Array.isArray(tz)) {\n      var stop = max(values0);\n      tz = tickStep(0, stop, tz);\n      tz = range(0, Math.floor(stop / tz) * tz, tz);\n      tz.shift();\n    }\n\n    return contours()\n        .thresholds(tz)\n        .size([n, m])\n      (values0)\n        .map(transform);\n  }\n\n  function transform(geometry) {\n    geometry.value *= Math.pow(2, -2 * k); // Density in points per square pixel.\n    geometry.coordinates.forEach(transformPolygon);\n    return geometry;\n  }\n\n  function transformPolygon(coordinates) {\n    coordinates.forEach(transformRing);\n  }\n\n  function transformRing(coordinates) {\n    coordinates.forEach(transformPoint);\n  }\n\n  // TODO Optimize.\n  function transformPoint(coordinates) {\n    coordinates[0] = coordinates[0] * Math.pow(2, k) - o;\n    coordinates[1] = coordinates[1] * Math.pow(2, k) - o;\n  }\n\n  function resize() {\n    o = r * 3;\n    n = (dx + o * 2) >> k;\n    m = (dy + o * 2) >> k;\n    return density;\n  }\n\n  density.x = function(_) {\n    return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), density) : x;\n  };\n\n  density.y = function(_) {\n    return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), density) : y;\n  };\n\n  density.weight = function(_) {\n    return arguments.length ? (weight = typeof _ === \"function\" ? _ : constant(+_), density) : weight;\n  };\n\n  density.size = function(_) {\n    if (!arguments.length) return [dx, dy];\n    var _0 = Math.ceil(_[0]), _1 = Math.ceil(_[1]);\n    if (!(_0 >= 0) && !(_0 >= 0)) throw new Error(\"invalid size\");\n    return dx = _0, dy = _1, resize();\n  };\n\n  density.cellSize = function(_) {\n    if (!arguments.length) return 1 << k;\n    if (!((_ = +_) >= 1)) throw new Error(\"invalid cell size\");\n    return k = Math.floor(Math.log(_) / Math.LN2), resize();\n  };\n\n  density.thresholds = function(_) {\n    return arguments.length ? (threshold = typeof _ === \"function\" ? _ : Array.isArray(_) ? constant(slice.call(_)) : constant(_), density) : threshold;\n  };\n\n  density.bandwidth = function(_) {\n    if (!arguments.length) return Math.sqrt(r * (r + 1));\n    if (!((_ = +_) >= 0)) throw new Error(\"invalid bandwidth\");\n    return r = Math.round((Math.sqrt(4 * _ * _ + 1) - 1) / 2), resize();\n  };\n\n  return density;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-contour/src/density.js\n// module id = null\n// module chunks = ","export {default as contours} from \"./contours\";\nexport {default as contourDensity} from \"./density\";\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-contour/src/index.js\n// module id = null\n// module chunks = ","var EOL = {},\n    EOF = {},\n    QUOTE = 34,\n    NEWLINE = 10,\n    RETURN = 13;\n\nfunction objectConverter(columns) {\n  return new Function(\"d\", \"return {\" + columns.map(function(name, i) {\n    return JSON.stringify(name) + \": d[\" + i + \"] || \\\"\\\"\";\n  }).join(\",\") + \"}\");\n}\n\nfunction customConverter(columns, f) {\n  var object = objectConverter(columns);\n  return function(row, i) {\n    return f(object(row), i, columns);\n  };\n}\n\n// Compute unique columns in order of discovery.\nfunction inferColumns(rows) {\n  var columnSet = Object.create(null),\n      columns = [];\n\n  rows.forEach(function(row) {\n    for (var column in row) {\n      if (!(column in columnSet)) {\n        columns.push(columnSet[column] = column);\n      }\n    }\n  });\n\n  return columns;\n}\n\nfunction pad(value, width) {\n  var s = value + \"\", length = s.length;\n  return length < width ? new Array(width - length + 1).join(0) + s : s;\n}\n\nfunction formatYear(year) {\n  return year < 0 ? \"-\" + pad(-year, 6)\n    : year > 9999 ? \"+\" + pad(year, 6)\n    : pad(year, 4);\n}\n\nfunction formatDate(date) {\n  var hours = date.getUTCHours(),\n      minutes = date.getUTCMinutes(),\n      seconds = date.getUTCSeconds(),\n      milliseconds = date.getUTCMilliseconds();\n  return isNaN(date) ? \"Invalid Date\"\n      : formatYear(date.getUTCFullYear(), 4) + \"-\" + pad(date.getUTCMonth() + 1, 2) + \"-\" + pad(date.getUTCDate(), 2)\n      + (milliseconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \".\" + pad(milliseconds, 3) + \"Z\"\n      : seconds ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \":\" + pad(seconds, 2) + \"Z\"\n      : minutes || hours ? \"T\" + pad(hours, 2) + \":\" + pad(minutes, 2) + \"Z\"\n      : \"\");\n}\n\nexport default function(delimiter) {\n  var reFormat = new RegExp(\"[\\\"\" + delimiter + \"\\n\\r]\"),\n      DELIMITER = delimiter.charCodeAt(0);\n\n  function parse(text, f) {\n    var convert, columns, rows = parseRows(text, function(row, i) {\n      if (convert) return convert(row, i - 1);\n      columns = row, convert = f ? customConverter(row, f) : objectConverter(row);\n    });\n    rows.columns = columns || [];\n    return rows;\n  }\n\n  function parseRows(text, f) {\n    var rows = [], // output rows\n        N = text.length,\n        I = 0, // current character index\n        n = 0, // current line number\n        t, // current token\n        eof = N <= 0, // current token followed by EOF?\n        eol = false; // current token followed by EOL?\n\n    // Strip the trailing newline.\n    if (text.charCodeAt(N - 1) === NEWLINE) --N;\n    if (text.charCodeAt(N - 1) === RETURN) --N;\n\n    function token() {\n      if (eof) return EOF;\n      if (eol) return eol = false, EOL;\n\n      // Unescape quotes.\n      var i, j = I, c;\n      if (text.charCodeAt(j) === QUOTE) {\n        while (I++ < N && text.charCodeAt(I) !== QUOTE || text.charCodeAt(++I) === QUOTE);\n        if ((i = I) >= N) eof = true;\n        else if ((c = text.charCodeAt(I++)) === NEWLINE) eol = true;\n        else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n        return text.slice(j + 1, i - 1).replace(/\"\"/g, \"\\\"\");\n      }\n\n      // Find next delimiter or newline.\n      while (I < N) {\n        if ((c = text.charCodeAt(i = I++)) === NEWLINE) eol = true;\n        else if (c === RETURN) { eol = true; if (text.charCodeAt(I) === NEWLINE) ++I; }\n        else if (c !== DELIMITER) continue;\n        return text.slice(j, i);\n      }\n\n      // Return last token before EOF.\n      return eof = true, text.slice(j, N);\n    }\n\n    while ((t = token()) !== EOF) {\n      var row = [];\n      while (t !== EOL && t !== EOF) row.push(t), t = token();\n      if (f && (row = f(row, n++)) == null) continue;\n      rows.push(row);\n    }\n\n    return rows;\n  }\n\n  function preformatBody(rows, columns) {\n    return rows.map(function(row) {\n      return columns.map(function(column) {\n        return formatValue(row[column]);\n      }).join(delimiter);\n    });\n  }\n\n  function format(rows, columns) {\n    if (columns == null) columns = inferColumns(rows);\n    return [columns.map(formatValue).join(delimiter)].concat(preformatBody(rows, columns)).join(\"\\n\");\n  }\n\n  function formatBody(rows, columns) {\n    if (columns == null) columns = inferColumns(rows);\n    return preformatBody(rows, columns).join(\"\\n\");\n  }\n\n  function formatRows(rows) {\n    return rows.map(formatRow).join(\"\\n\");\n  }\n\n  function formatRow(row) {\n    return row.map(formatValue).join(delimiter);\n  }\n\n  function formatValue(value) {\n    return value == null ? \"\"\n        : value instanceof Date ? formatDate(value)\n        : reFormat.test(value += \"\") ? \"\\\"\" + value.replace(/\"/g, \"\\\"\\\"\") + \"\\\"\"\n        : value;\n  }\n\n  return {\n    parse: parse,\n    parseRows: parseRows,\n    format: format,\n    formatBody: formatBody,\n    formatRows: formatRows,\n    formatRow: formatRow,\n    formatValue: formatValue\n  };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-dsv/src/dsv.js\n// module id = null\n// module chunks = ","import dsv from \"./dsv.js\";\n\nvar csv = dsv(\",\");\n\nexport var csvParse = csv.parse;\nexport var csvParseRows = csv.parseRows;\nexport var csvFormat = csv.format;\nexport var csvFormatBody = csv.formatBody;\nexport var csvFormatRows = csv.formatRows;\nexport var csvFormatRow = csv.formatRow;\nexport var csvFormatValue = csv.formatValue;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-dsv/src/csv.js\n// module id = null\n// module chunks = ","import dsv from \"./dsv.js\";\n\nvar tsv = dsv(\"\\t\");\n\nexport var tsvParse = tsv.parse;\nexport var tsvParseRows = tsv.parseRows;\nexport var tsvFormat = tsv.format;\nexport var tsvFormatBody = tsv.formatBody;\nexport var tsvFormatRows = tsv.formatRows;\nexport var tsvFormatRow = tsv.formatRow;\nexport var tsvFormatValue = tsv.formatValue;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-dsv/src/tsv.js\n// module id = null\n// module chunks = ","export default function autoType(object) {\n  for (var key in object) {\n    var value = object[key].trim(), number, m;\n    if (!value) value = null;\n    else if (value === \"true\") value = true;\n    else if (value === \"false\") value = false;\n    else if (value === \"NaN\") value = NaN;\n    else if (!isNaN(number = +value)) value = number;\n    else if (m = value.match(/^([-+]\\d{2})?\\d{4}(-\\d{2}(-\\d{2})?)?(T\\d{2}:\\d{2}(:\\d{2}(\\.\\d{3})?)?(Z|[-+]\\d{2}:\\d{2})?)?$/)) {\n      if (fixtz && !!m[4] && !m[7]) value = value.replace(/-/g, \"/\").replace(/T/, \" \");\n      value = new Date(value);\n    }\n    else continue;\n    object[key] = value;\n  }\n  return object;\n}\n\n// https://github.com/d3/d3-dsv/issues/45\nvar fixtz = new Date(\"2019-01-01T00:00\").getHours() || new Date(\"2019-07-01T00:00\").getHours();\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-dsv/src/autoType.js\n// module id = null\n// module chunks = ","export {default as dsvFormat} from \"./dsv.js\";\nexport {csvParse, csvParseRows, csvFormat, csvFormatBody, csvFormatRows, csvFormatRow, csvFormatValue} from \"./csv.js\";\nexport {tsvParse, tsvParseRows, tsvFormat, tsvFormatBody, tsvFormatRows, tsvFormatRow, tsvFormatValue} from \"./tsv.js\";\nexport {default as autoType} from \"./autoType.js\";\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-dsv/src/index.js\n// module id = null\n// module chunks = ","function responseBlob(response) {\n  if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n  return response.blob();\n}\n\nexport default function(input, init) {\n  return fetch(input, init).then(responseBlob);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-fetch/src/blob.js\n// module id = null\n// module chunks = ","function responseArrayBuffer(response) {\n  if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n  return response.arrayBuffer();\n}\n\nexport default function(input, init) {\n  return fetch(input, init).then(responseArrayBuffer);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-fetch/src/buffer.js\n// module id = null\n// module chunks = ","function responseText(response) {\n  if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n  return response.text();\n}\n\nexport default function(input, init) {\n  return fetch(input, init).then(responseText);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-fetch/src/text.js\n// module id = null\n// module chunks = ","import {csvParse, dsvFormat, tsvParse} from \"d3-dsv\";\nimport text from \"./text.js\";\n\nfunction dsvParse(parse) {\n  return function(input, init, row) {\n    if (arguments.length === 2 && typeof init === \"function\") row = init, init = undefined;\n    return text(input, init).then(function(response) {\n      return parse(response, row);\n    });\n  };\n}\n\nexport default function dsv(delimiter, input, init, row) {\n  if (arguments.length === 3 && typeof init === \"function\") row = init, init = undefined;\n  var format = dsvFormat(delimiter);\n  return text(input, init).then(function(response) {\n    return format.parse(response, row);\n  });\n}\n\nexport var csv = dsvParse(csvParse);\nexport var tsv = dsvParse(tsvParse);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-fetch/src/dsv.js\n// module id = null\n// module chunks = ","export default function(input, init) {\n  return new Promise(function(resolve, reject) {\n    var image = new Image;\n    for (var key in init) image[key] = init[key];\n    image.onerror = reject;\n    image.onload = function() { resolve(image); };\n    image.src = input;\n  });\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-fetch/src/image.js\n// module id = null\n// module chunks = ","function responseJson(response) {\n  if (!response.ok) throw new Error(response.status + \" \" + response.statusText);\n  if (response.status === 204 || response.status === 205) return;\n  return response.json();\n}\n\nexport default function(input, init) {\n  return fetch(input, init).then(responseJson);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-fetch/src/json.js\n// module id = null\n// module chunks = ","import text from \"./text.js\";\n\nfunction parser(type) {\n  return function(input, init)  {\n    return text(input, init).then(function(text) {\n      return (new DOMParser).parseFromString(text, type);\n    });\n  };\n}\n\nexport default parser(\"application/xml\");\n\nexport var html = parser(\"text/html\");\n\nexport var svg = parser(\"image/svg+xml\");\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-fetch/src/xml.js\n// module id = null\n// module chunks = ","export {default as blob} from \"./blob.js\";\nexport {default as buffer} from \"./buffer.js\";\nexport {default as dsv, csv, tsv} from \"./dsv.js\";\nexport {default as image} from \"./image.js\";\nexport {default as json} from \"./json.js\";\nexport {default as text} from \"./text.js\";\nexport {default as xml, html, svg} from \"./xml.js\";\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-fetch/src/index.js\n// module id = null\n// module chunks = ","export default function(x, y) {\n  var nodes;\n\n  if (x == null) x = 0;\n  if (y == null) y = 0;\n\n  function force() {\n    var i,\n        n = nodes.length,\n        node,\n        sx = 0,\n        sy = 0;\n\n    for (i = 0; i < n; ++i) {\n      node = nodes[i], sx += node.x, sy += node.y;\n    }\n\n    for (sx = sx / n - x, sy = sy / n - y, i = 0; i < n; ++i) {\n      node = nodes[i], node.x -= sx, node.y -= sy;\n    }\n  }\n\n  force.initialize = function(_) {\n    nodes = _;\n  };\n\n  force.x = function(_) {\n    return arguments.length ? (x = +_, force) : x;\n  };\n\n  force.y = function(_) {\n    return arguments.length ? (y = +_, force) : y;\n  };\n\n  return force;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-force/src/center.js\n// module id = null\n// module chunks = ","export default function(x) {\n  return function() {\n    return x;\n  };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-force/src/constant.js\n// module id = null\n// module chunks = ","export default function() {\n  return (Math.random() - 0.5) * 1e-6;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-force/src/jiggle.js\n// module id = null\n// module chunks = ","export default function(d) {\n  var x = +this._x.call(null, d),\n      y = +this._y.call(null, d);\n  return add(this.cover(x, y), x, y, d);\n}\n\nfunction add(tree, x, y, d) {\n  if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points\n\n  var parent,\n      node = tree._root,\n      leaf = {data: d},\n      x0 = tree._x0,\n      y0 = tree._y0,\n      x1 = tree._x1,\n      y1 = tree._y1,\n      xm,\n      ym,\n      xp,\n      yp,\n      right,\n      bottom,\n      i,\n      j;\n\n  // If the tree is empty, initialize the root as a leaf.\n  if (!node) return tree._root = leaf, tree;\n\n  // Find the existing leaf for the new point, or add it.\n  while (node.length) {\n    if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n    if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n    if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree;\n  }\n\n  // Is the new point is exactly coincident with the existing point?\n  xp = +tree._x.call(null, node.data);\n  yp = +tree._y.call(null, node.data);\n  if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree;\n\n  // Otherwise, split the leaf node until the old and new point are separated.\n  do {\n    parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4);\n    if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n    if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n  } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm)));\n  return parent[j] = node, parent[i] = leaf, tree;\n}\n\nexport function addAll(data) {\n  var d, i, n = data.length,\n      x,\n      y,\n      xz = new Array(n),\n      yz = new Array(n),\n      x0 = Infinity,\n      y0 = Infinity,\n      x1 = -Infinity,\n      y1 = -Infinity;\n\n  // Compute the points and their extent.\n  for (i = 0; i < n; ++i) {\n    if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue;\n    xz[i] = x;\n    yz[i] = y;\n    if (x < x0) x0 = x;\n    if (x > x1) x1 = x;\n    if (y < y0) y0 = y;\n    if (y > y1) y1 = y;\n  }\n\n  // If there were no (valid) points, abort.\n  if (x0 > x1 || y0 > y1) return this;\n\n  // Expand the tree to cover the new points.\n  this.cover(x0, y0).cover(x1, y1);\n\n  // Add the new points.\n  for (i = 0; i < n; ++i) {\n    add(this, xz[i], yz[i], data[i]);\n  }\n\n  return this;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-quadtree/src/add.js\n// module id = null\n// module chunks = ","export default function(x, y) {\n  if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points\n\n  var x0 = this._x0,\n      y0 = this._y0,\n      x1 = this._x1,\n      y1 = this._y1;\n\n  // If the quadtree has no extent, initialize them.\n  // Integer extent are necessary so that if we later double the extent,\n  // the existing quadrant boundaries don’t change due to floating point error!\n  if (isNaN(x0)) {\n    x1 = (x0 = Math.floor(x)) + 1;\n    y1 = (y0 = Math.floor(y)) + 1;\n  }\n\n  // Otherwise, double repeatedly to cover.\n  else {\n    var z = x1 - x0,\n        node = this._root,\n        parent,\n        i;\n\n    while (x0 > x || x >= x1 || y0 > y || y >= y1) {\n      i = (y < y0) << 1 | (x < x0);\n      parent = new Array(4), parent[i] = node, node = parent, z *= 2;\n      switch (i) {\n        case 0: x1 = x0 + z, y1 = y0 + z; break;\n        case 1: x0 = x1 - z, y1 = y0 + z; break;\n        case 2: x1 = x0 + z, y0 = y1 - z; break;\n        case 3: x0 = x1 - z, y0 = y1 - z; break;\n      }\n    }\n\n    if (this._root && this._root.length) this._root = node;\n  }\n\n  this._x0 = x0;\n  this._y0 = y0;\n  this._x1 = x1;\n  this._y1 = y1;\n  return this;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-quadtree/src/cover.js\n// module id = null\n// module chunks = ","export default function() {\n  var data = [];\n  this.visit(function(node) {\n    if (!node.length) do data.push(node.data); while (node = node.next)\n  });\n  return data;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-quadtree/src/data.js\n// module id = null\n// module chunks = ","export default function(_) {\n  return arguments.length\n      ? this.cover(+_[0][0], +_[0][1]).cover(+_[1][0], +_[1][1])\n      : isNaN(this._x0) ? undefined : [[this._x0, this._y0], [this._x1, this._y1]];\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-quadtree/src/extent.js\n// module id = null\n// module chunks = ","export default function(node, x0, y0, x1, y1) {\n  this.node = node;\n  this.x0 = x0;\n  this.y0 = y0;\n  this.x1 = x1;\n  this.y1 = y1;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-quadtree/src/quad.js\n// module id = null\n// module chunks = ","import Quad from \"./quad.js\";\n\nexport default function(x, y, radius) {\n  var data,\n      x0 = this._x0,\n      y0 = this._y0,\n      x1,\n      y1,\n      x2,\n      y2,\n      x3 = this._x1,\n      y3 = this._y1,\n      quads = [],\n      node = this._root,\n      q,\n      i;\n\n  if (node) quads.push(new Quad(node, x0, y0, x3, y3));\n  if (radius == null) radius = Infinity;\n  else {\n    x0 = x - radius, y0 = y - radius;\n    x3 = x + radius, y3 = y + radius;\n    radius *= radius;\n  }\n\n  while (q = quads.pop()) {\n\n    // Stop searching if this quadrant can’t contain a closer node.\n    if (!(node = q.node)\n        || (x1 = q.x0) > x3\n        || (y1 = q.y0) > y3\n        || (x2 = q.x1) < x0\n        || (y2 = q.y1) < y0) continue;\n\n    // Bisect the current quadrant.\n    if (node.length) {\n      var xm = (x1 + x2) / 2,\n          ym = (y1 + y2) / 2;\n\n      quads.push(\n        new Quad(node[3], xm, ym, x2, y2),\n        new Quad(node[2], x1, ym, xm, y2),\n        new Quad(node[1], xm, y1, x2, ym),\n        new Quad(node[0], x1, y1, xm, ym)\n      );\n\n      // Visit the closest quadrant first.\n      if (i = (y >= ym) << 1 | (x >= xm)) {\n        q = quads[quads.length - 1];\n        quads[quads.length - 1] = quads[quads.length - 1 - i];\n        quads[quads.length - 1 - i] = q;\n      }\n    }\n\n    // Visit this point. (Visiting coincident points isn’t necessary!)\n    else {\n      var dx = x - +this._x.call(null, node.data),\n          dy = y - +this._y.call(null, node.data),\n          d2 = dx * dx + dy * dy;\n      if (d2 < radius) {\n        var d = Math.sqrt(radius = d2);\n        x0 = x - d, y0 = y - d;\n        x3 = x + d, y3 = y + d;\n        data = node.data;\n      }\n    }\n  }\n\n  return data;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-quadtree/src/find.js\n// module id = null\n// module chunks = ","export default function(d) {\n  if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points\n\n  var parent,\n      node = this._root,\n      retainer,\n      previous,\n      next,\n      x0 = this._x0,\n      y0 = this._y0,\n      x1 = this._x1,\n      y1 = this._y1,\n      x,\n      y,\n      xm,\n      ym,\n      right,\n      bottom,\n      i,\n      j;\n\n  // If the tree is empty, initialize the root as a leaf.\n  if (!node) return this;\n\n  // Find the leaf node for the point.\n  // While descending, also retain the deepest parent with a non-removed sibling.\n  if (node.length) while (true) {\n    if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm;\n    if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym;\n    if (!(parent = node, node = node[i = bottom << 1 | right])) return this;\n    if (!node.length) break;\n    if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i;\n  }\n\n  // Find the point to remove.\n  while (node.data !== d) if (!(previous = node, node = node.next)) return this;\n  if (next = node.next) delete node.next;\n\n  // If there are multiple coincident points, remove just the point.\n  if (previous) return (next ? previous.next = next : delete previous.next), this;\n\n  // If this is the root point, remove it.\n  if (!parent) return this._root = next, this;\n\n  // Remove this leaf.\n  next ? parent[i] = next : delete parent[i];\n\n  // If the parent now contains exactly one leaf, collapse superfluous parents.\n  if ((node = parent[0] || parent[1] || parent[2] || parent[3])\n      && node === (parent[3] || parent[2] || parent[1] || parent[0])\n      && !node.length) {\n    if (retainer) retainer[j] = node;\n    else this._root = node;\n  }\n\n  return this;\n}\n\nexport function removeAll(data) {\n  for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]);\n  return this;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-quadtree/src/remove.js\n// module id = null\n// module chunks = ","export default function() {\n  return this._root;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-quadtree/src/root.js\n// module id = null\n// module chunks = ","export default function() {\n  var size = 0;\n  this.visit(function(node) {\n    if (!node.length) do ++size; while (node = node.next)\n  });\n  return size;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-quadtree/src/size.js\n// module id = null\n// module chunks = ","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n  var quads = [], q, node = this._root, child, x0, y0, x1, y1;\n  if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1));\n  while (q = quads.pop()) {\n    if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) {\n      var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n      if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n      if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n      if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n      if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n    }\n  }\n  return this;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-quadtree/src/visit.js\n// module id = null\n// module chunks = ","import Quad from \"./quad.js\";\n\nexport default function(callback) {\n  var quads = [], next = [], q;\n  if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1));\n  while (q = quads.pop()) {\n    var node = q.node;\n    if (node.length) {\n      var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2;\n      if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym));\n      if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym));\n      if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1));\n      if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1));\n    }\n    next.push(q);\n  }\n  while (q = next.pop()) {\n    callback(q.node, q.x0, q.y0, q.x1, q.y1);\n  }\n  return this;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-quadtree/src/visitAfter.js\n// module id = null\n// module chunks = ","export function defaultX(d) {\n  return d[0];\n}\n\nexport default function(_) {\n  return arguments.length ? (this._x = _, this) : this._x;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-quadtree/src/x.js\n// module id = null\n// module chunks = ","export function defaultY(d) {\n  return d[1];\n}\n\nexport default function(_) {\n  return arguments.length ? (this._y = _, this) : this._y;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-quadtree/src/y.js\n// module id = null\n// module chunks = ","import tree_add, {addAll as tree_addAll} from \"./add.js\";\nimport tree_cover from \"./cover.js\";\nimport tree_data from \"./data.js\";\nimport tree_extent from \"./extent.js\";\nimport tree_find from \"./find.js\";\nimport tree_remove, {removeAll as tree_removeAll} from \"./remove.js\";\nimport tree_root from \"./root.js\";\nimport tree_size from \"./size.js\";\nimport tree_visit from \"./visit.js\";\nimport tree_visitAfter from \"./visitAfter.js\";\nimport tree_x, {defaultX} from \"./x.js\";\nimport tree_y, {defaultY} from \"./y.js\";\n\nexport default function quadtree(nodes, x, y) {\n  var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN);\n  return nodes == null ? tree : tree.addAll(nodes);\n}\n\nfunction Quadtree(x, y, x0, y0, x1, y1) {\n  this._x = x;\n  this._y = y;\n  this._x0 = x0;\n  this._y0 = y0;\n  this._x1 = x1;\n  this._y1 = y1;\n  this._root = undefined;\n}\n\nfunction leaf_copy(leaf) {\n  var copy = {data: leaf.data}, next = copy;\n  while (leaf = leaf.next) next = next.next = {data: leaf.data};\n  return copy;\n}\n\nvar treeProto = quadtree.prototype = Quadtree.prototype;\n\ntreeProto.copy = function() {\n  var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1),\n      node = this._root,\n      nodes,\n      child;\n\n  if (!node) return copy;\n\n  if (!node.length) return copy._root = leaf_copy(node), copy;\n\n  nodes = [{source: node, target: copy._root = new Array(4)}];\n  while (node = nodes.pop()) {\n    for (var i = 0; i < 4; ++i) {\n      if (child = node.source[i]) {\n        if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)});\n        else node.target[i] = leaf_copy(child);\n      }\n    }\n  }\n\n  return copy;\n};\n\ntreeProto.add = tree_add;\ntreeProto.addAll = tree_addAll;\ntreeProto.cover = tree_cover;\ntreeProto.data = tree_data;\ntreeProto.extent = tree_extent;\ntreeProto.find = tree_find;\ntreeProto.remove = tree_remove;\ntreeProto.removeAll = tree_removeAll;\ntreeProto.root = tree_root;\ntreeProto.size = tree_size;\ntreeProto.visit = tree_visit;\ntreeProto.visitAfter = tree_visitAfter;\ntreeProto.x = tree_x;\ntreeProto.y = tree_y;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-quadtree/src/quadtree.js\n// module id = null\n// module chunks = ","export {default as quadtree} from \"./quadtree.js\";\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-quadtree/src/index.js\n// module id = null\n// module chunks = ","import constant from \"./constant\";\nimport jiggle from \"./jiggle\";\nimport {quadtree} from \"d3-quadtree\";\n\nfunction x(d) {\n  return d.x + d.vx;\n}\n\nfunction y(d) {\n  return d.y + d.vy;\n}\n\nexport default function(radius) {\n  var nodes,\n      radii,\n      strength = 1,\n      iterations = 1;\n\n  if (typeof radius !== \"function\") radius = constant(radius == null ? 1 : +radius);\n\n  function force() {\n    var i, n = nodes.length,\n        tree,\n        node,\n        xi,\n        yi,\n        ri,\n        ri2;\n\n    for (var k = 0; k < iterations; ++k) {\n      tree = quadtree(nodes, x, y).visitAfter(prepare);\n      for (i = 0; i < n; ++i) {\n        node = nodes[i];\n        ri = radii[node.index], ri2 = ri * ri;\n        xi = node.x + node.vx;\n        yi = node.y + node.vy;\n        tree.visit(apply);\n      }\n    }\n\n    function apply(quad, x0, y0, x1, y1) {\n      var data = quad.data, rj = quad.r, r = ri + rj;\n      if (data) {\n        if (data.index > node.index) {\n          var x = xi - data.x - data.vx,\n              y = yi - data.y - data.vy,\n              l = x * x + y * y;\n          if (l < r * r) {\n            if (x === 0) x = jiggle(), l += x * x;\n            if (y === 0) y = jiggle(), l += y * y;\n            l = (r - (l = Math.sqrt(l))) / l * strength;\n            node.vx += (x *= l) * (r = (rj *= rj) / (ri2 + rj));\n            node.vy += (y *= l) * r;\n            data.vx -= x * (r = 1 - r);\n            data.vy -= y * r;\n          }\n        }\n        return;\n      }\n      return x0 > xi + r || x1 < xi - r || y0 > yi + r || y1 < yi - r;\n    }\n  }\n\n  function prepare(quad) {\n    if (quad.data) return quad.r = radii[quad.data.index];\n    for (var i = quad.r = 0; i < 4; ++i) {\n      if (quad[i] && quad[i].r > quad.r) {\n        quad.r = quad[i].r;\n      }\n    }\n  }\n\n  function initialize() {\n    if (!nodes) return;\n    var i, n = nodes.length, node;\n    radii = new Array(n);\n    for (i = 0; i < n; ++i) node = nodes[i], radii[node.index] = +radius(node, i, nodes);\n  }\n\n  force.initialize = function(_) {\n    nodes = _;\n    initialize();\n  };\n\n  force.iterations = function(_) {\n    return arguments.length ? (iterations = +_, force) : iterations;\n  };\n\n  force.strength = function(_) {\n    return arguments.length ? (strength = +_, force) : strength;\n  };\n\n  force.radius = function(_) {\n    return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n  };\n\n  return force;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-force/src/collide.js\n// module id = null\n// module chunks = ","import constant from \"./constant\";\nimport jiggle from \"./jiggle\";\nimport {map} from \"d3-collection\";\n\nfunction index(d) {\n  return d.index;\n}\n\nfunction find(nodeById, nodeId) {\n  var node = nodeById.get(nodeId);\n  if (!node) throw new Error(\"missing: \" + nodeId);\n  return node;\n}\n\nexport default function(links) {\n  var id = index,\n      strength = defaultStrength,\n      strengths,\n      distance = constant(30),\n      distances,\n      nodes,\n      count,\n      bias,\n      iterations = 1;\n\n  if (links == null) links = [];\n\n  function defaultStrength(link) {\n    return 1 / Math.min(count[link.source.index], count[link.target.index]);\n  }\n\n  function force(alpha) {\n    for (var k = 0, n = links.length; k < iterations; ++k) {\n      for (var i = 0, link, source, target, x, y, l, b; i < n; ++i) {\n        link = links[i], source = link.source, target = link.target;\n        x = target.x + target.vx - source.x - source.vx || jiggle();\n        y = target.y + target.vy - source.y - source.vy || jiggle();\n        l = Math.sqrt(x * x + y * y);\n        l = (l - distances[i]) / l * alpha * strengths[i];\n        x *= l, y *= l;\n        target.vx -= x * (b = bias[i]);\n        target.vy -= y * b;\n        source.vx += x * (b = 1 - b);\n        source.vy += y * b;\n      }\n    }\n  }\n\n  function initialize() {\n    if (!nodes) return;\n\n    var i,\n        n = nodes.length,\n        m = links.length,\n        nodeById = map(nodes, id),\n        link;\n\n    for (i = 0, count = new Array(n); i < m; ++i) {\n      link = links[i], link.index = i;\n      if (typeof link.source !== \"object\") link.source = find(nodeById, link.source);\n      if (typeof link.target !== \"object\") link.target = find(nodeById, link.target);\n      count[link.source.index] = (count[link.source.index] || 0) + 1;\n      count[link.target.index] = (count[link.target.index] || 0) + 1;\n    }\n\n    for (i = 0, bias = new Array(m); i < m; ++i) {\n      link = links[i], bias[i] = count[link.source.index] / (count[link.source.index] + count[link.target.index]);\n    }\n\n    strengths = new Array(m), initializeStrength();\n    distances = new Array(m), initializeDistance();\n  }\n\n  function initializeStrength() {\n    if (!nodes) return;\n\n    for (var i = 0, n = links.length; i < n; ++i) {\n      strengths[i] = +strength(links[i], i, links);\n    }\n  }\n\n  function initializeDistance() {\n    if (!nodes) return;\n\n    for (var i = 0, n = links.length; i < n; ++i) {\n      distances[i] = +distance(links[i], i, links);\n    }\n  }\n\n  force.initialize = function(_) {\n    nodes = _;\n    initialize();\n  };\n\n  force.links = function(_) {\n    return arguments.length ? (links = _, initialize(), force) : links;\n  };\n\n  force.id = function(_) {\n    return arguments.length ? (id = _, force) : id;\n  };\n\n  force.iterations = function(_) {\n    return arguments.length ? (iterations = +_, force) : iterations;\n  };\n\n  force.strength = function(_) {\n    return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initializeStrength(), force) : strength;\n  };\n\n  force.distance = function(_) {\n    return arguments.length ? (distance = typeof _ === \"function\" ? _ : constant(+_), initializeDistance(), force) : distance;\n  };\n\n  return force;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-force/src/link.js\n// module id = null\n// module chunks = ","import {dispatch} from \"d3-dispatch\";\nimport {map} from \"d3-collection\";\nimport {timer} from \"d3-timer\";\n\nexport function x(d) {\n  return d.x;\n}\n\nexport function y(d) {\n  return d.y;\n}\n\nvar initialRadius = 10,\n    initialAngle = Math.PI * (3 - Math.sqrt(5));\n\nexport default function(nodes) {\n  var simulation,\n      alpha = 1,\n      alphaMin = 0.001,\n      alphaDecay = 1 - Math.pow(alphaMin, 1 / 300),\n      alphaTarget = 0,\n      velocityDecay = 0.6,\n      forces = map(),\n      stepper = timer(step),\n      event = dispatch(\"tick\", \"end\");\n\n  if (nodes == null) nodes = [];\n\n  function step() {\n    tick();\n    event.call(\"tick\", simulation);\n    if (alpha < alphaMin) {\n      stepper.stop();\n      event.call(\"end\", simulation);\n    }\n  }\n\n  function tick(iterations) {\n    var i, n = nodes.length, node;\n\n    if (iterations === undefined) iterations = 1;\n\n    for (var k = 0; k < iterations; ++k) {\n      alpha += (alphaTarget - alpha) * alphaDecay;\n\n      forces.each(function (force) {\n        force(alpha);\n      });\n\n      for (i = 0; i < n; ++i) {\n        node = nodes[i];\n        if (node.fx == null) node.x += node.vx *= velocityDecay;\n        else node.x = node.fx, node.vx = 0;\n        if (node.fy == null) node.y += node.vy *= velocityDecay;\n        else node.y = node.fy, node.vy = 0;\n      }\n    }\n\n    return simulation;\n  }\n\n  function initializeNodes() {\n    for (var i = 0, n = nodes.length, node; i < n; ++i) {\n      node = nodes[i], node.index = i;\n      if (node.fx != null) node.x = node.fx;\n      if (node.fy != null) node.y = node.fy;\n      if (isNaN(node.x) || isNaN(node.y)) {\n        var radius = initialRadius * Math.sqrt(i), angle = i * initialAngle;\n        node.x = radius * Math.cos(angle);\n        node.y = radius * Math.sin(angle);\n      }\n      if (isNaN(node.vx) || isNaN(node.vy)) {\n        node.vx = node.vy = 0;\n      }\n    }\n  }\n\n  function initializeForce(force) {\n    if (force.initialize) force.initialize(nodes);\n    return force;\n  }\n\n  initializeNodes();\n\n  return simulation = {\n    tick: tick,\n\n    restart: function() {\n      return stepper.restart(step), simulation;\n    },\n\n    stop: function() {\n      return stepper.stop(), simulation;\n    },\n\n    nodes: function(_) {\n      return arguments.length ? (nodes = _, initializeNodes(), forces.each(initializeForce), simulation) : nodes;\n    },\n\n    alpha: function(_) {\n      return arguments.length ? (alpha = +_, simulation) : alpha;\n    },\n\n    alphaMin: function(_) {\n      return arguments.length ? (alphaMin = +_, simulation) : alphaMin;\n    },\n\n    alphaDecay: function(_) {\n      return arguments.length ? (alphaDecay = +_, simulation) : +alphaDecay;\n    },\n\n    alphaTarget: function(_) {\n      return arguments.length ? (alphaTarget = +_, simulation) : alphaTarget;\n    },\n\n    velocityDecay: function(_) {\n      return arguments.length ? (velocityDecay = 1 - _, simulation) : 1 - velocityDecay;\n    },\n\n    force: function(name, _) {\n      return arguments.length > 1 ? ((_ == null ? forces.remove(name) : forces.set(name, initializeForce(_))), simulation) : forces.get(name);\n    },\n\n    find: function(x, y, radius) {\n      var i = 0,\n          n = nodes.length,\n          dx,\n          dy,\n          d2,\n          node,\n          closest;\n\n      if (radius == null) radius = Infinity;\n      else radius *= radius;\n\n      for (i = 0; i < n; ++i) {\n        node = nodes[i];\n        dx = x - node.x;\n        dy = y - node.y;\n        d2 = dx * dx + dy * dy;\n        if (d2 < radius) closest = node, radius = d2;\n      }\n\n      return closest;\n    },\n\n    on: function(name, _) {\n      return arguments.length > 1 ? (event.on(name, _), simulation) : event.on(name);\n    }\n  };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-force/src/simulation.js\n// module id = null\n// module chunks = ","import constant from \"./constant\";\nimport jiggle from \"./jiggle\";\nimport {quadtree} from \"d3-quadtree\";\nimport {x, y} from \"./simulation\";\n\nexport default function() {\n  var nodes,\n      node,\n      alpha,\n      strength = constant(-30),\n      strengths,\n      distanceMin2 = 1,\n      distanceMax2 = Infinity,\n      theta2 = 0.81;\n\n  function force(_) {\n    var i, n = nodes.length, tree = quadtree(nodes, x, y).visitAfter(accumulate);\n    for (alpha = _, i = 0; i < n; ++i) node = nodes[i], tree.visit(apply);\n  }\n\n  function initialize() {\n    if (!nodes) return;\n    var i, n = nodes.length, node;\n    strengths = new Array(n);\n    for (i = 0; i < n; ++i) node = nodes[i], strengths[node.index] = +strength(node, i, nodes);\n  }\n\n  function accumulate(quad) {\n    var strength = 0, q, c, weight = 0, x, y, i;\n\n    // For internal nodes, accumulate forces from child quadrants.\n    if (quad.length) {\n      for (x = y = i = 0; i < 4; ++i) {\n        if ((q = quad[i]) && (c = Math.abs(q.value))) {\n          strength += q.value, weight += c, x += c * q.x, y += c * q.y;\n        }\n      }\n      quad.x = x / weight;\n      quad.y = y / weight;\n    }\n\n    // For leaf nodes, accumulate forces from coincident quadrants.\n    else {\n      q = quad;\n      q.x = q.data.x;\n      q.y = q.data.y;\n      do strength += strengths[q.data.index];\n      while (q = q.next);\n    }\n\n    quad.value = strength;\n  }\n\n  function apply(quad, x1, _, x2) {\n    if (!quad.value) return true;\n\n    var x = quad.x - node.x,\n        y = quad.y - node.y,\n        w = x2 - x1,\n        l = x * x + y * y;\n\n    // Apply the Barnes-Hut approximation if possible.\n    // Limit forces for very close nodes; randomize direction if coincident.\n    if (w * w / theta2 < l) {\n      if (l < distanceMax2) {\n        if (x === 0) x = jiggle(), l += x * x;\n        if (y === 0) y = jiggle(), l += y * y;\n        if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n        node.vx += x * quad.value * alpha / l;\n        node.vy += y * quad.value * alpha / l;\n      }\n      return true;\n    }\n\n    // Otherwise, process points directly.\n    else if (quad.length || l >= distanceMax2) return;\n\n    // Limit forces for very close nodes; randomize direction if coincident.\n    if (quad.data !== node || quad.next) {\n      if (x === 0) x = jiggle(), l += x * x;\n      if (y === 0) y = jiggle(), l += y * y;\n      if (l < distanceMin2) l = Math.sqrt(distanceMin2 * l);\n    }\n\n    do if (quad.data !== node) {\n      w = strengths[quad.data.index] * alpha / l;\n      node.vx += x * w;\n      node.vy += y * w;\n    } while (quad = quad.next);\n  }\n\n  force.initialize = function(_) {\n    nodes = _;\n    initialize();\n  };\n\n  force.strength = function(_) {\n    return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n  };\n\n  force.distanceMin = function(_) {\n    return arguments.length ? (distanceMin2 = _ * _, force) : Math.sqrt(distanceMin2);\n  };\n\n  force.distanceMax = function(_) {\n    return arguments.length ? (distanceMax2 = _ * _, force) : Math.sqrt(distanceMax2);\n  };\n\n  force.theta = function(_) {\n    return arguments.length ? (theta2 = _ * _, force) : Math.sqrt(theta2);\n  };\n\n  return force;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-force/src/manyBody.js\n// module id = null\n// module chunks = ","import constant from \"./constant\";\n\nexport default function(radius, x, y) {\n  var nodes,\n      strength = constant(0.1),\n      strengths,\n      radiuses;\n\n  if (typeof radius !== \"function\") radius = constant(+radius);\n  if (x == null) x = 0;\n  if (y == null) y = 0;\n\n  function force(alpha) {\n    for (var i = 0, n = nodes.length; i < n; ++i) {\n      var node = nodes[i],\n          dx = node.x - x || 1e-6,\n          dy = node.y - y || 1e-6,\n          r = Math.sqrt(dx * dx + dy * dy),\n          k = (radiuses[i] - r) * strengths[i] * alpha / r;\n      node.vx += dx * k;\n      node.vy += dy * k;\n    }\n  }\n\n  function initialize() {\n    if (!nodes) return;\n    var i, n = nodes.length;\n    strengths = new Array(n);\n    radiuses = new Array(n);\n    for (i = 0; i < n; ++i) {\n      radiuses[i] = +radius(nodes[i], i, nodes);\n      strengths[i] = isNaN(radiuses[i]) ? 0 : +strength(nodes[i], i, nodes);\n    }\n  }\n\n  force.initialize = function(_) {\n    nodes = _, initialize();\n  };\n\n  force.strength = function(_) {\n    return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n  };\n\n  force.radius = function(_) {\n    return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : radius;\n  };\n\n  force.x = function(_) {\n    return arguments.length ? (x = +_, force) : x;\n  };\n\n  force.y = function(_) {\n    return arguments.length ? (y = +_, force) : y;\n  };\n\n  return force;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-force/src/radial.js\n// module id = null\n// module chunks = ","import constant from \"./constant\";\n\nexport default function(x) {\n  var strength = constant(0.1),\n      nodes,\n      strengths,\n      xz;\n\n  if (typeof x !== \"function\") x = constant(x == null ? 0 : +x);\n\n  function force(alpha) {\n    for (var i = 0, n = nodes.length, node; i < n; ++i) {\n      node = nodes[i], node.vx += (xz[i] - node.x) * strengths[i] * alpha;\n    }\n  }\n\n  function initialize() {\n    if (!nodes) return;\n    var i, n = nodes.length;\n    strengths = new Array(n);\n    xz = new Array(n);\n    for (i = 0; i < n; ++i) {\n      strengths[i] = isNaN(xz[i] = +x(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n    }\n  }\n\n  force.initialize = function(_) {\n    nodes = _;\n    initialize();\n  };\n\n  force.strength = function(_) {\n    return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n  };\n\n  force.x = function(_) {\n    return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : x;\n  };\n\n  return force;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-force/src/x.js\n// module id = null\n// module chunks = ","import constant from \"./constant\";\n\nexport default function(y) {\n  var strength = constant(0.1),\n      nodes,\n      strengths,\n      yz;\n\n  if (typeof y !== \"function\") y = constant(y == null ? 0 : +y);\n\n  function force(alpha) {\n    for (var i = 0, n = nodes.length, node; i < n; ++i) {\n      node = nodes[i], node.vy += (yz[i] - node.y) * strengths[i] * alpha;\n    }\n  }\n\n  function initialize() {\n    if (!nodes) return;\n    var i, n = nodes.length;\n    strengths = new Array(n);\n    yz = new Array(n);\n    for (i = 0; i < n; ++i) {\n      strengths[i] = isNaN(yz[i] = +y(nodes[i], i, nodes)) ? 0 : +strength(nodes[i], i, nodes);\n    }\n  }\n\n  force.initialize = function(_) {\n    nodes = _;\n    initialize();\n  };\n\n  force.strength = function(_) {\n    return arguments.length ? (strength = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : strength;\n  };\n\n  force.y = function(_) {\n    return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), initialize(), force) : y;\n  };\n\n  return force;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-force/src/y.js\n// module id = null\n// module chunks = ","export {default as forceCenter} from \"./center\";\nexport {default as forceCollide} from \"./collide\";\nexport {default as forceLink} from \"./link\";\nexport {default as forceManyBody} from \"./manyBody\";\nexport {default as forceRadial} from \"./radial\";\nexport {default as forceSimulation} from \"./simulation\";\nexport {default as forceX} from \"./x\";\nexport {default as forceY} from \"./y\";\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-force/src/index.js\n// module id = null\n// module chunks = ","// Adds floating point numbers with twice the normal precision.\n// Reference: J. R. Shewchuk, Adaptive Precision Floating-Point Arithmetic and\n// Fast Robust Geometric Predicates, Discrete & Computational Geometry 18(3)\n// 305–363 (1997).\n// Code adapted from GeographicLib by Charles F. F. Karney,\n// http://geographiclib.sourceforge.net/\n\nexport default function() {\n  return new Adder;\n}\n\nfunction Adder() {\n  this.reset();\n}\n\nAdder.prototype = {\n  constructor: Adder,\n  reset: function() {\n    this.s = // rounded value\n    this.t = 0; // exact error\n  },\n  add: function(y) {\n    add(temp, y, this.t);\n    add(this, temp.s, this.s);\n    if (this.s) this.t += temp.t;\n    else this.s = temp.t;\n  },\n  valueOf: function() {\n    return this.s;\n  }\n};\n\nvar temp = new Adder;\n\nfunction add(adder, a, b) {\n  var x = adder.s = a + b,\n      bv = x - a,\n      av = x - bv;\n  adder.t = (a - av) + (b - bv);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-geo/src/adder.js\n// module id = null\n// module chunks = ","export var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var quarterPi = pi / 4;\nexport var tau = pi * 2;\n\nexport var degrees = 180 / pi;\nexport var radians = pi / 180;\n\nexport var abs = Math.abs;\nexport var atan = Math.atan;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var ceil = Math.ceil;\nexport var exp = Math.exp;\nexport var floor = Math.floor;\nexport var log = Math.log;\nexport var pow = Math.pow;\nexport var sin = Math.sin;\nexport var sign = Math.sign || function(x) { return x > 0 ? 1 : x < 0 ? -1 : 0; };\nexport var sqrt = Math.sqrt;\nexport var tan = Math.tan;\n\nexport function acos(x) {\n  return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n  return x > 1 ? halfPi : x < -1 ? -halfPi : Math.asin(x);\n}\n\nexport function haversin(x) {\n  return (x = sin(x / 2)) * x;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-geo/src/math.js\n// module id = null\n// module chunks = ","export default function noop() {}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-geo/src/noop.js\n// module id = null\n// module chunks = ","function streamGeometry(geometry, stream) {\n  if (geometry && streamGeometryType.hasOwnProperty(geometry.type)) {\n    streamGeometryType[geometry.type](geometry, stream);\n  }\n}\n\nvar streamObjectType = {\n  Feature: function(object, stream) {\n    streamGeometry(object.geometry, stream);\n  },\n  FeatureCollection: function(object, stream) {\n    var features = object.features, i = -1, n = features.length;\n    while (++i < n) streamGeometry(features[i].geometry, stream);\n  }\n};\n\nvar streamGeometryType = {\n  Sphere: function(object, stream) {\n    stream.sphere();\n  },\n  Point: function(object, stream) {\n    object = object.coordinates;\n    stream.point(object[0], object[1], object[2]);\n  },\n  MultiPoint: function(object, stream) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) object = coordinates[i], stream.point(object[0], object[1], object[2]);\n  },\n  LineString: function(object, stream) {\n    streamLine(object.coordinates, stream, 0);\n  },\n  MultiLineString: function(object, stream) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) streamLine(coordinates[i], stream, 0);\n  },\n  Polygon: function(object, stream) {\n    streamPolygon(object.coordinates, stream);\n  },\n  MultiPolygon: function(object, stream) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) streamPolygon(coordinates[i], stream);\n  },\n  GeometryCollection: function(object, stream) {\n    var geometries = object.geometries, i = -1, n = geometries.length;\n    while (++i < n) streamGeometry(geometries[i], stream);\n  }\n};\n\nfunction streamLine(coordinates, stream, closed) {\n  var i = -1, n = coordinates.length - closed, coordinate;\n  stream.lineStart();\n  while (++i < n) coordinate = coordinates[i], stream.point(coordinate[0], coordinate[1], coordinate[2]);\n  stream.lineEnd();\n}\n\nfunction streamPolygon(coordinates, stream) {\n  var i = -1, n = coordinates.length;\n  stream.polygonStart();\n  while (++i < n) streamLine(coordinates[i], stream, 1);\n  stream.polygonEnd();\n}\n\nexport default function(object, stream) {\n  if (object && streamObjectType.hasOwnProperty(object.type)) {\n    streamObjectType[object.type](object, stream);\n  } else {\n    streamGeometry(object, stream);\n  }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-geo/src/stream.js\n// module id = null\n// module chunks = ","import adder from \"./adder.js\";\nimport {atan2, cos, quarterPi, radians, sin, tau} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nexport var areaRingSum = adder();\n\nvar areaSum = adder(),\n    lambda00,\n    phi00,\n    lambda0,\n    cosPhi0,\n    sinPhi0;\n\nexport var areaStream = {\n  point: noop,\n  lineStart: noop,\n  lineEnd: noop,\n  polygonStart: function() {\n    areaRingSum.reset();\n    areaStream.lineStart = areaRingStart;\n    areaStream.lineEnd = areaRingEnd;\n  },\n  polygonEnd: function() {\n    var areaRing = +areaRingSum;\n    areaSum.add(areaRing < 0 ? tau + areaRing : areaRing);\n    this.lineStart = this.lineEnd = this.point = noop;\n  },\n  sphere: function() {\n    areaSum.add(tau);\n  }\n};\n\nfunction areaRingStart() {\n  areaStream.point = areaPointFirst;\n}\n\nfunction areaRingEnd() {\n  areaPoint(lambda00, phi00);\n}\n\nfunction areaPointFirst(lambda, phi) {\n  areaStream.point = areaPoint;\n  lambda00 = lambda, phi00 = phi;\n  lambda *= radians, phi *= radians;\n  lambda0 = lambda, cosPhi0 = cos(phi = phi / 2 + quarterPi), sinPhi0 = sin(phi);\n}\n\nfunction areaPoint(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  phi = phi / 2 + quarterPi; // half the angular distance from south pole\n\n  // Spherical excess E for a spherical triangle with vertices: south pole,\n  // previous point, current point.  Uses a formula derived from Cagnoli’s\n  // theorem.  See Todhunter, Spherical Trig. (1871), Sec. 103, Eq. (2).\n  var dLambda = lambda - lambda0,\n      sdLambda = dLambda >= 0 ? 1 : -1,\n      adLambda = sdLambda * dLambda,\n      cosPhi = cos(phi),\n      sinPhi = sin(phi),\n      k = sinPhi0 * sinPhi,\n      u = cosPhi0 * cosPhi + k * cos(adLambda),\n      v = k * sdLambda * sin(adLambda);\n  areaRingSum.add(atan2(v, u));\n\n  // Advance the previous points.\n  lambda0 = lambda, cosPhi0 = cosPhi, sinPhi0 = sinPhi;\n}\n\nexport default function(object) {\n  areaSum.reset();\n  stream(object, areaStream);\n  return areaSum * 2;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-geo/src/area.js\n// module id = null\n// module chunks = ","import {asin, atan2, cos, sin, sqrt} from \"./math.js\";\n\nexport function spherical(cartesian) {\n  return [atan2(cartesian[1], cartesian[0]), asin(cartesian[2])];\n}\n\nexport function cartesian(spherical) {\n  var lambda = spherical[0], phi = spherical[1], cosPhi = cos(phi);\n  return [cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi)];\n}\n\nexport function cartesianDot(a, b) {\n  return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];\n}\n\nexport function cartesianCross(a, b) {\n  return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n}\n\n// TODO return a\nexport function cartesianAddInPlace(a, b) {\n  a[0] += b[0], a[1] += b[1], a[2] += b[2];\n}\n\nexport function cartesianScale(vector, k) {\n  return [vector[0] * k, vector[1] * k, vector[2] * k];\n}\n\n// TODO return d\nexport function cartesianNormalizeInPlace(d) {\n  var l = sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);\n  d[0] /= l, d[1] /= l, d[2] /= l;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-geo/src/cartesian.js\n// module id = null\n// module chunks = ","import adder from \"./adder.js\";\nimport {areaStream, areaRingSum} from \"./area.js\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace, spherical} from \"./cartesian.js\";\nimport {abs, degrees, epsilon, radians} from \"./math.js\";\nimport stream from \"./stream.js\";\n\nvar lambda0, phi0, lambda1, phi1, // bounds\n    lambda2, // previous lambda-coordinate\n    lambda00, phi00, // first point\n    p0, // previous 3D point\n    deltaSum = adder(),\n    ranges,\n    range;\n\nvar boundsStream = {\n  point: boundsPoint,\n  lineStart: boundsLineStart,\n  lineEnd: boundsLineEnd,\n  polygonStart: function() {\n    boundsStream.point = boundsRingPoint;\n    boundsStream.lineStart = boundsRingStart;\n    boundsStream.lineEnd = boundsRingEnd;\n    deltaSum.reset();\n    areaStream.polygonStart();\n  },\n  polygonEnd: function() {\n    areaStream.polygonEnd();\n    boundsStream.point = boundsPoint;\n    boundsStream.lineStart = boundsLineStart;\n    boundsStream.lineEnd = boundsLineEnd;\n    if (areaRingSum < 0) lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n    else if (deltaSum > epsilon) phi1 = 90;\n    else if (deltaSum < -epsilon) phi0 = -90;\n    range[0] = lambda0, range[1] = lambda1;\n  },\n  sphere: function() {\n    lambda0 = -(lambda1 = 180), phi0 = -(phi1 = 90);\n  }\n};\n\nfunction boundsPoint(lambda, phi) {\n  ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n  if (phi < phi0) phi0 = phi;\n  if (phi > phi1) phi1 = phi;\n}\n\nfunction linePoint(lambda, phi) {\n  var p = cartesian([lambda * radians, phi * radians]);\n  if (p0) {\n    var normal = cartesianCross(p0, p),\n        equatorial = [normal[1], -normal[0], 0],\n        inflection = cartesianCross(equatorial, normal);\n    cartesianNormalizeInPlace(inflection);\n    inflection = spherical(inflection);\n    var delta = lambda - lambda2,\n        sign = delta > 0 ? 1 : -1,\n        lambdai = inflection[0] * degrees * sign,\n        phii,\n        antimeridian = abs(delta) > 180;\n    if (antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n      phii = inflection[1] * degrees;\n      if (phii > phi1) phi1 = phii;\n    } else if (lambdai = (lambdai + 360) % 360 - 180, antimeridian ^ (sign * lambda2 < lambdai && lambdai < sign * lambda)) {\n      phii = -inflection[1] * degrees;\n      if (phii < phi0) phi0 = phii;\n    } else {\n      if (phi < phi0) phi0 = phi;\n      if (phi > phi1) phi1 = phi;\n    }\n    if (antimeridian) {\n      if (lambda < lambda2) {\n        if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n      } else {\n        if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n      }\n    } else {\n      if (lambda1 >= lambda0) {\n        if (lambda < lambda0) lambda0 = lambda;\n        if (lambda > lambda1) lambda1 = lambda;\n      } else {\n        if (lambda > lambda2) {\n          if (angle(lambda0, lambda) > angle(lambda0, lambda1)) lambda1 = lambda;\n        } else {\n          if (angle(lambda, lambda1) > angle(lambda0, lambda1)) lambda0 = lambda;\n        }\n      }\n    }\n  } else {\n    ranges.push(range = [lambda0 = lambda, lambda1 = lambda]);\n  }\n  if (phi < phi0) phi0 = phi;\n  if (phi > phi1) phi1 = phi;\n  p0 = p, lambda2 = lambda;\n}\n\nfunction boundsLineStart() {\n  boundsStream.point = linePoint;\n}\n\nfunction boundsLineEnd() {\n  range[0] = lambda0, range[1] = lambda1;\n  boundsStream.point = boundsPoint;\n  p0 = null;\n}\n\nfunction boundsRingPoint(lambda, phi) {\n  if (p0) {\n    var delta = lambda - lambda2;\n    deltaSum.add(abs(delta) > 180 ? delta + (delta > 0 ? 360 : -360) : delta);\n  } else {\n    lambda00 = lambda, phi00 = phi;\n  }\n  areaStream.point(lambda, phi);\n  linePoint(lambda, phi);\n}\n\nfunction boundsRingStart() {\n  areaStream.lineStart();\n}\n\nfunction boundsRingEnd() {\n  boundsRingPoint(lambda00, phi00);\n  areaStream.lineEnd();\n  if (abs(deltaSum) > epsilon) lambda0 = -(lambda1 = 180);\n  range[0] = lambda0, range[1] = lambda1;\n  p0 = null;\n}\n\n// Finds the left-right distance between two longitudes.\n// This is almost the same as (lambda1 - lambda0 + 360°) % 360°, except that we want\n// the distance between ±180° to be 360°.\nfunction angle(lambda0, lambda1) {\n  return (lambda1 -= lambda0) < 0 ? lambda1 + 360 : lambda1;\n}\n\nfunction rangeCompare(a, b) {\n  return a[0] - b[0];\n}\n\nfunction rangeContains(range, x) {\n  return range[0] <= range[1] ? range[0] <= x && x <= range[1] : x < range[0] || range[1] < x;\n}\n\nexport default function(feature) {\n  var i, n, a, b, merged, deltaMax, delta;\n\n  phi1 = lambda1 = -(lambda0 = phi0 = Infinity);\n  ranges = [];\n  stream(feature, boundsStream);\n\n  // First, sort ranges by their minimum longitudes.\n  if (n = ranges.length) {\n    ranges.sort(rangeCompare);\n\n    // Then, merge any ranges that overlap.\n    for (i = 1, a = ranges[0], merged = [a]; i < n; ++i) {\n      b = ranges[i];\n      if (rangeContains(a, b[0]) || rangeContains(a, b[1])) {\n        if (angle(a[0], b[1]) > angle(a[0], a[1])) a[1] = b[1];\n        if (angle(b[0], a[1]) > angle(a[0], a[1])) a[0] = b[0];\n      } else {\n        merged.push(a = b);\n      }\n    }\n\n    // Finally, find the largest gap between the merged ranges.\n    // The final bounding box will be the inverse of this gap.\n    for (deltaMax = -Infinity, n = merged.length - 1, i = 0, a = merged[n]; i <= n; a = b, ++i) {\n      b = merged[i];\n      if ((delta = angle(a[1], b[0])) > deltaMax) deltaMax = delta, lambda0 = b[0], lambda1 = a[1];\n    }\n  }\n\n  ranges = range = null;\n\n  return lambda0 === Infinity || phi0 === Infinity\n      ? [[NaN, NaN], [NaN, NaN]]\n      : [[lambda0, phi0], [lambda1, phi1]];\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-geo/src/bounds.js\n// module id = null\n// module chunks = ","import {asin, atan2, cos, degrees, epsilon, epsilon2, radians, sin, sqrt} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nvar W0, W1,\n    X0, Y0, Z0,\n    X1, Y1, Z1,\n    X2, Y2, Z2,\n    lambda00, phi00, // first point\n    x0, y0, z0; // previous point\n\nvar centroidStream = {\n  sphere: noop,\n  point: centroidPoint,\n  lineStart: centroidLineStart,\n  lineEnd: centroidLineEnd,\n  polygonStart: function() {\n    centroidStream.lineStart = centroidRingStart;\n    centroidStream.lineEnd = centroidRingEnd;\n  },\n  polygonEnd: function() {\n    centroidStream.lineStart = centroidLineStart;\n    centroidStream.lineEnd = centroidLineEnd;\n  }\n};\n\n// Arithmetic mean of Cartesian vectors.\nfunction centroidPoint(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  var cosPhi = cos(phi);\n  centroidPointCartesian(cosPhi * cos(lambda), cosPhi * sin(lambda), sin(phi));\n}\n\nfunction centroidPointCartesian(x, y, z) {\n  ++W0;\n  X0 += (x - X0) / W0;\n  Y0 += (y - Y0) / W0;\n  Z0 += (z - Z0) / W0;\n}\n\nfunction centroidLineStart() {\n  centroidStream.point = centroidLinePointFirst;\n}\n\nfunction centroidLinePointFirst(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  var cosPhi = cos(phi);\n  x0 = cosPhi * cos(lambda);\n  y0 = cosPhi * sin(lambda);\n  z0 = sin(phi);\n  centroidStream.point = centroidLinePoint;\n  centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLinePoint(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  var cosPhi = cos(phi),\n      x = cosPhi * cos(lambda),\n      y = cosPhi * sin(lambda),\n      z = sin(phi),\n      w = atan2(sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);\n  W1 += w;\n  X1 += w * (x0 + (x0 = x));\n  Y1 += w * (y0 + (y0 = y));\n  Z1 += w * (z0 + (z0 = z));\n  centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidLineEnd() {\n  centroidStream.point = centroidPoint;\n}\n\n// See J. E. Brock, The Inertia Tensor for a Spherical Triangle,\n// J. Applied Mechanics 42, 239 (1975).\nfunction centroidRingStart() {\n  centroidStream.point = centroidRingPointFirst;\n}\n\nfunction centroidRingEnd() {\n  centroidRingPoint(lambda00, phi00);\n  centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingPointFirst(lambda, phi) {\n  lambda00 = lambda, phi00 = phi;\n  lambda *= radians, phi *= radians;\n  centroidStream.point = centroidRingPoint;\n  var cosPhi = cos(phi);\n  x0 = cosPhi * cos(lambda);\n  y0 = cosPhi * sin(lambda);\n  z0 = sin(phi);\n  centroidPointCartesian(x0, y0, z0);\n}\n\nfunction centroidRingPoint(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  var cosPhi = cos(phi),\n      x = cosPhi * cos(lambda),\n      y = cosPhi * sin(lambda),\n      z = sin(phi),\n      cx = y0 * z - z0 * y,\n      cy = z0 * x - x0 * z,\n      cz = x0 * y - y0 * x,\n      m = sqrt(cx * cx + cy * cy + cz * cz),\n      w = asin(m), // line weight = angle\n      v = m && -w / m; // area weight multiplier\n  X2 += v * cx;\n  Y2 += v * cy;\n  Z2 += v * cz;\n  W1 += w;\n  X1 += w * (x0 + (x0 = x));\n  Y1 += w * (y0 + (y0 = y));\n  Z1 += w * (z0 + (z0 = z));\n  centroidPointCartesian(x0, y0, z0);\n}\n\nexport default function(object) {\n  W0 = W1 =\n  X0 = Y0 = Z0 =\n  X1 = Y1 = Z1 =\n  X2 = Y2 = Z2 = 0;\n  stream(object, centroidStream);\n\n  var x = X2,\n      y = Y2,\n      z = Z2,\n      m = x * x + y * y + z * z;\n\n  // If the area-weighted ccentroid is undefined, fall back to length-weighted ccentroid.\n  if (m < epsilon2) {\n    x = X1, y = Y1, z = Z1;\n    // If the feature has zero length, fall back to arithmetic mean of point vectors.\n    if (W1 < epsilon) x = X0, y = Y0, z = Z0;\n    m = x * x + y * y + z * z;\n    // If the feature still has an undefined ccentroid, then return.\n    if (m < epsilon2) return [NaN, NaN];\n  }\n\n  return [atan2(y, x) * degrees, asin(z / sqrt(m)) * degrees];\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-geo/src/centroid.js\n// module id = null\n// module chunks = ","export default function(x) {\n  return function() {\n    return x;\n  };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-geo/src/constant.js\n// module id = null\n// module chunks = ","export default function(a, b) {\n\n  function compose(x, y) {\n    return x = a(x, y), b(x[0], x[1]);\n  }\n\n  if (a.invert && b.invert) compose.invert = function(x, y) {\n    return x = b.invert(x, y), x && a.invert(x[0], x[1]);\n  };\n\n  return compose;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-geo/src/compose.js\n// module id = null\n// module chunks = ","import compose from \"./compose.js\";\nimport {abs, asin, atan2, cos, degrees, pi, radians, sin, tau} from \"./math.js\";\n\nfunction rotationIdentity(lambda, phi) {\n  return [abs(lambda) > pi ? lambda + Math.round(-lambda / tau) * tau : lambda, phi];\n}\n\nrotationIdentity.invert = rotationIdentity;\n\nexport function rotateRadians(deltaLambda, deltaPhi, deltaGamma) {\n  return (deltaLambda %= tau) ? (deltaPhi || deltaGamma ? compose(rotationLambda(deltaLambda), rotationPhiGamma(deltaPhi, deltaGamma))\n    : rotationLambda(deltaLambda))\n    : (deltaPhi || deltaGamma ? rotationPhiGamma(deltaPhi, deltaGamma)\n    : rotationIdentity);\n}\n\nfunction forwardRotationLambda(deltaLambda) {\n  return function(lambda, phi) {\n    return lambda += deltaLambda, [lambda > pi ? lambda - tau : lambda < -pi ? lambda + tau : lambda, phi];\n  };\n}\n\nfunction rotationLambda(deltaLambda) {\n  var rotation = forwardRotationLambda(deltaLambda);\n  rotation.invert = forwardRotationLambda(-deltaLambda);\n  return rotation;\n}\n\nfunction rotationPhiGamma(deltaPhi, deltaGamma) {\n  var cosDeltaPhi = cos(deltaPhi),\n      sinDeltaPhi = sin(deltaPhi),\n      cosDeltaGamma = cos(deltaGamma),\n      sinDeltaGamma = sin(deltaGamma);\n\n  function rotation(lambda, phi) {\n    var cosPhi = cos(phi),\n        x = cos(lambda) * cosPhi,\n        y = sin(lambda) * cosPhi,\n        z = sin(phi),\n        k = z * cosDeltaPhi + x * sinDeltaPhi;\n    return [\n      atan2(y * cosDeltaGamma - k * sinDeltaGamma, x * cosDeltaPhi - z * sinDeltaPhi),\n      asin(k * cosDeltaGamma + y * sinDeltaGamma)\n    ];\n  }\n\n  rotation.invert = function(lambda, phi) {\n    var cosPhi = cos(phi),\n        x = cos(lambda) * cosPhi,\n        y = sin(lambda) * cosPhi,\n        z = sin(phi),\n        k = z * cosDeltaGamma - y * sinDeltaGamma;\n    return [\n      atan2(y * cosDeltaGamma + z * sinDeltaGamma, x * cosDeltaPhi + k * sinDeltaPhi),\n      asin(k * cosDeltaPhi - x * sinDeltaPhi)\n    ];\n  };\n\n  return rotation;\n}\n\nexport default function(rotate) {\n  rotate = rotateRadians(rotate[0] * radians, rotate[1] * radians, rotate.length > 2 ? rotate[2] * radians : 0);\n\n  function forward(coordinates) {\n    coordinates = rotate(coordinates[0] * radians, coordinates[1] * radians);\n    return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n  }\n\n  forward.invert = function(coordinates) {\n    coordinates = rotate.invert(coordinates[0] * radians, coordinates[1] * radians);\n    return coordinates[0] *= degrees, coordinates[1] *= degrees, coordinates;\n  };\n\n  return forward;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-geo/src/rotation.js\n// module id = null\n// module chunks = ","import {cartesian, cartesianNormalizeInPlace, spherical} from \"./cartesian.js\";\nimport constant from \"./constant.js\";\nimport {acos, cos, degrees, epsilon, radians, sin, tau} from \"./math.js\";\nimport {rotateRadians} from \"./rotation.js\";\n\n// Generates a circle centered at [0°, 0°], with a given radius and precision.\nexport function circleStream(stream, radius, delta, direction, t0, t1) {\n  if (!delta) return;\n  var cosRadius = cos(radius),\n      sinRadius = sin(radius),\n      step = direction * delta;\n  if (t0 == null) {\n    t0 = radius + direction * tau;\n    t1 = radius - step / 2;\n  } else {\n    t0 = circleRadius(cosRadius, t0);\n    t1 = circleRadius(cosRadius, t1);\n    if (direction > 0 ? t0 < t1 : t0 > t1) t0 += direction * tau;\n  }\n  for (var point, t = t0; direction > 0 ? t > t1 : t < t1; t -= step) {\n    point = spherical([cosRadius, -sinRadius * cos(t), -sinRadius * sin(t)]);\n    stream.point(point[0], point[1]);\n  }\n}\n\n// Returns the signed angle of a cartesian point relative to [cosRadius, 0, 0].\nfunction circleRadius(cosRadius, point) {\n  point = cartesian(point), point[0] -= cosRadius;\n  cartesianNormalizeInPlace(point);\n  var radius = acos(-point[1]);\n  return ((-point[2] < 0 ? -radius : radius) + tau - epsilon) % tau;\n}\n\nexport default function() {\n  var center = constant([0, 0]),\n      radius = constant(90),\n      precision = constant(6),\n      ring,\n      rotate,\n      stream = {point: point};\n\n  function point(x, y) {\n    ring.push(x = rotate(x, y));\n    x[0] *= degrees, x[1] *= degrees;\n  }\n\n  function circle() {\n    var c = center.apply(this, arguments),\n        r = radius.apply(this, arguments) * radians,\n        p = precision.apply(this, arguments) * radians;\n    ring = [];\n    rotate = rotateRadians(-c[0] * radians, -c[1] * radians, 0).invert;\n    circleStream(stream, r, p, 1);\n    c = {type: \"Polygon\", coordinates: [ring]};\n    ring = rotate = null;\n    return c;\n  }\n\n  circle.center = function(_) {\n    return arguments.length ? (center = typeof _ === \"function\" ? _ : constant([+_[0], +_[1]]), circle) : center;\n  };\n\n  circle.radius = function(_) {\n    return arguments.length ? (radius = typeof _ === \"function\" ? _ : constant(+_), circle) : radius;\n  };\n\n  circle.precision = function(_) {\n    return arguments.length ? (precision = typeof _ === \"function\" ? _ : constant(+_), circle) : precision;\n  };\n\n  return circle;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-geo/src/circle.js\n// module id = null\n// module chunks = ","import noop from \"../noop.js\";\n\nexport default function() {\n  var lines = [],\n      line;\n  return {\n    point: function(x, y, m) {\n      line.push([x, y, m]);\n    },\n    lineStart: function() {\n      lines.push(line = []);\n    },\n    lineEnd: noop,\n    rejoin: function() {\n      if (lines.length > 1) lines.push(lines.pop().concat(lines.shift()));\n    },\n    result: function() {\n      var result = lines;\n      lines = [];\n      line = null;\n      return result;\n    }\n  };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-geo/src/clip/buffer.js\n// module id = null\n// module chunks = ","import {abs, epsilon} from \"./math.js\";\n\nexport default function(a, b) {\n  return abs(a[0] - b[0]) < epsilon && abs(a[1] - b[1]) < epsilon;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-geo/src/pointEqual.js\n// module id = null\n// module chunks = ","import pointEqual from \"../pointEqual.js\";\nimport {epsilon} from \"../math.js\";\n\nfunction Intersection(point, points, other, entry) {\n  this.x = point;\n  this.z = points;\n  this.o = other; // another intersection\n  this.e = entry; // is an entry?\n  this.v = false; // visited\n  this.n = this.p = null; // next & previous\n}\n\n// A generalized polygon clipping algorithm: given a polygon that has been cut\n// into its visible line segments, and rejoins the segments by interpolating\n// along the clip edge.\nexport default function(segments, compareIntersection, startInside, interpolate, stream) {\n  var subject = [],\n      clip = [],\n      i,\n      n;\n\n  segments.forEach(function(segment) {\n    if ((n = segment.length - 1) <= 0) return;\n    var n, p0 = segment[0], p1 = segment[n], x;\n\n    if (pointEqual(p0, p1)) {\n      if (!p0[2] && !p1[2]) {\n        stream.lineStart();\n        for (i = 0; i < n; ++i) stream.point((p0 = segment[i])[0], p0[1]);\n        stream.lineEnd();\n        return;\n      }\n      // handle degenerate cases by moving the point\n      p1[0] += 2 * epsilon;\n    }\n\n    subject.push(x = new Intersection(p0, segment, null, true));\n    clip.push(x.o = new Intersection(p0, null, x, false));\n    subject.push(x = new Intersection(p1, segment, null, false));\n    clip.push(x.o = new Intersection(p1, null, x, true));\n  });\n\n  if (!subject.length) return;\n\n  clip.sort(compareIntersection);\n  link(subject);\n  link(clip);\n\n  for (i = 0, n = clip.length; i < n; ++i) {\n    clip[i].e = startInside = !startInside;\n  }\n\n  var start = subject[0],\n      points,\n      point;\n\n  while (1) {\n    // Find first unvisited intersection.\n    var current = start,\n        isSubject = true;\n    while (current.v) if ((current = current.n) === start) return;\n    points = current.z;\n    stream.lineStart();\n    do {\n      current.v = current.o.v = true;\n      if (current.e) {\n        if (isSubject) {\n          for (i = 0, n = points.length; i < n; ++i) stream.point((point = points[i])[0], point[1]);\n        } else {\n          interpolate(current.x, current.n.x, 1, stream);\n        }\n        current = current.n;\n      } else {\n        if (isSubject) {\n          points = current.p.z;\n          for (i = points.length - 1; i >= 0; --i) stream.point((point = points[i])[0], point[1]);\n        } else {\n          interpolate(current.x, current.p.x, -1, stream);\n        }\n        current = current.p;\n      }\n      current = current.o;\n      points = current.z;\n      isSubject = !isSubject;\n    } while (!current.v);\n    stream.lineEnd();\n  }\n}\n\nfunction link(array) {\n  if (!(n = array.length)) return;\n  var n,\n      i = 0,\n      a = array[0],\n      b;\n  while (++i < n) {\n    a.n = b = array[i];\n    b.p = a;\n    a = b;\n  }\n  a.n = b = array[0];\n  b.p = a;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-geo/src/clip/rejoin.js\n// module id = null\n// module chunks = ","import adder from \"./adder.js\";\nimport {cartesian, cartesianCross, cartesianNormalizeInPlace} from \"./cartesian.js\";\nimport {abs, asin, atan2, cos, epsilon, halfPi, pi, quarterPi, sign, sin, tau} from \"./math.js\";\n\nvar sum = adder();\n\nfunction longitude(point) {\n  if (abs(point[0]) <= pi)\n    return point[0];\n  else\n    return sign(point[0]) * ((abs(point[0]) + pi) % tau - pi);\n}\n\nexport default function(polygon, point) {\n  var lambda = longitude(point),\n      phi = point[1],\n      sinPhi = sin(phi),\n      normal = [sin(lambda), -cos(lambda), 0],\n      angle = 0,\n      winding = 0;\n\n  sum.reset();\n\n  if (sinPhi === 1) phi = halfPi + epsilon;\n  else if (sinPhi === -1) phi = -halfPi - epsilon;\n\n  for (var i = 0, n = polygon.length; i < n; ++i) {\n    if (!(m = (ring = polygon[i]).length)) continue;\n    var ring,\n        m,\n        point0 = ring[m - 1],\n        lambda0 = longitude(point0),\n        phi0 = point0[1] / 2 + quarterPi,\n        sinPhi0 = sin(phi0),\n        cosPhi0 = cos(phi0);\n\n    for (var j = 0; j < m; ++j, lambda0 = lambda1, sinPhi0 = sinPhi1, cosPhi0 = cosPhi1, point0 = point1) {\n      var point1 = ring[j],\n          lambda1 = longitude(point1),\n          phi1 = point1[1] / 2 + quarterPi,\n          sinPhi1 = sin(phi1),\n          cosPhi1 = cos(phi1),\n          delta = lambda1 - lambda0,\n          sign = delta >= 0 ? 1 : -1,\n          absDelta = sign * delta,\n          antimeridian = absDelta > pi,\n          k = sinPhi0 * sinPhi1;\n\n      sum.add(atan2(k * sign * sin(absDelta), cosPhi0 * cosPhi1 + k * cos(absDelta)));\n      angle += antimeridian ? delta + sign * tau : delta;\n\n      // Are the longitudes either side of the point’s meridian (lambda),\n      // and are the latitudes smaller than the parallel (phi)?\n      if (antimeridian ^ lambda0 >= lambda ^ lambda1 >= lambda) {\n        var arc = cartesianCross(cartesian(point0), cartesian(point1));\n        cartesianNormalizeInPlace(arc);\n        var intersection = cartesianCross(normal, arc);\n        cartesianNormalizeInPlace(intersection);\n        var phiArc = (antimeridian ^ delta >= 0 ? -1 : 1) * asin(intersection[2]);\n        if (phi > phiArc || phi === phiArc && (arc[0] || arc[1])) {\n          winding += antimeridian ^ delta >= 0 ? 1 : -1;\n        }\n      }\n    }\n  }\n\n  // First, determine whether the South pole is inside or outside:\n  //\n  // It is inside if:\n  // * the polygon winds around it in a clockwise direction.\n  // * the polygon does not (cumulatively) wind around it, but has a negative\n  //   (counter-clockwise) area.\n  //\n  // Second, count the (signed) number of times a segment crosses a lambda\n  // from the point to the South pole.  If it is zero, then the point is the\n  // same side as the South pole.\n\n  return (angle < -epsilon || angle < epsilon && sum < -epsilon) ^ (winding & 1);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-geo/src/polygonContains.js\n// module id = null\n// module chunks = ","import clipBuffer from \"./buffer.js\";\nimport clipRejoin from \"./rejoin.js\";\nimport {epsilon, halfPi} from \"../math.js\";\nimport polygonContains from \"../polygonContains.js\";\nimport {merge} from \"d3-array\";\n\nexport default function(pointVisible, clipLine, interpolate, start) {\n  return function(sink) {\n    var line = clipLine(sink),\n        ringBuffer = clipBuffer(),\n        ringSink = clipLine(ringBuffer),\n        polygonStarted = false,\n        polygon,\n        segments,\n        ring;\n\n    var clip = {\n      point: point,\n      lineStart: lineStart,\n      lineEnd: lineEnd,\n      polygonStart: function() {\n        clip.point = pointRing;\n        clip.lineStart = ringStart;\n        clip.lineEnd = ringEnd;\n        segments = [];\n        polygon = [];\n      },\n      polygonEnd: function() {\n        clip.point = point;\n        clip.lineStart = lineStart;\n        clip.lineEnd = lineEnd;\n        segments = merge(segments);\n        var startInside = polygonContains(polygon, start);\n        if (segments.length) {\n          if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n          clipRejoin(segments, compareIntersection, startInside, interpolate, sink);\n        } else if (startInside) {\n          if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n          sink.lineStart();\n          interpolate(null, null, 1, sink);\n          sink.lineEnd();\n        }\n        if (polygonStarted) sink.polygonEnd(), polygonStarted = false;\n        segments = polygon = null;\n      },\n      sphere: function() {\n        sink.polygonStart();\n        sink.lineStart();\n        interpolate(null, null, 1, sink);\n        sink.lineEnd();\n        sink.polygonEnd();\n      }\n    };\n\n    function point(lambda, phi) {\n      if (pointVisible(lambda, phi)) sink.point(lambda, phi);\n    }\n\n    function pointLine(lambda, phi) {\n      line.point(lambda, phi);\n    }\n\n    function lineStart() {\n      clip.point = pointLine;\n      line.lineStart();\n    }\n\n    function lineEnd() {\n      clip.point = point;\n      line.lineEnd();\n    }\n\n    function pointRing(lambda, phi) {\n      ring.push([lambda, phi]);\n      ringSink.point(lambda, phi);\n    }\n\n    function ringStart() {\n      ringSink.lineStart();\n      ring = [];\n    }\n\n    function ringEnd() {\n      pointRing(ring[0][0], ring[0][1]);\n      ringSink.lineEnd();\n\n      var clean = ringSink.clean(),\n          ringSegments = ringBuffer.result(),\n          i, n = ringSegments.length, m,\n          segment,\n          point;\n\n      ring.pop();\n      polygon.push(ring);\n      ring = null;\n\n      if (!n) return;\n\n      // No intersections.\n      if (clean & 1) {\n        segment = ringSegments[0];\n        if ((m = segment.length - 1) > 0) {\n          if (!polygonStarted) sink.polygonStart(), polygonStarted = true;\n          sink.lineStart();\n          for (i = 0; i < m; ++i) sink.point((point = segment[i])[0], point[1]);\n          sink.lineEnd();\n        }\n        return;\n      }\n\n      // Rejoin connected segments.\n      // TODO reuse ringBuffer.rejoin()?\n      if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));\n\n      segments.push(ringSegments.filter(validSegment));\n    }\n\n    return clip;\n  };\n}\n\nfunction validSegment(segment) {\n  return segment.length > 1;\n}\n\n// Intersections are sorted along the clip edge. For both antimeridian cutting\n// and circle clipping, the same comparison is used.\nfunction compareIntersection(a, b) {\n  return ((a = a.x)[0] < 0 ? a[1] - halfPi - epsilon : halfPi - a[1])\n       - ((b = b.x)[0] < 0 ? b[1] - halfPi - epsilon : halfPi - b[1]);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-geo/src/clip/index.js\n// module id = null\n// module chunks = ","import clip from \"./index.js\";\nimport {abs, atan, cos, epsilon, halfPi, pi, sin} from \"../math.js\";\n\nexport default clip(\n  function() { return true; },\n  clipAntimeridianLine,\n  clipAntimeridianInterpolate,\n  [-pi, -halfPi]\n);\n\n// Takes a line and cuts into visible segments. Return values: 0 - there were\n// intersections or the line was empty; 1 - no intersections; 2 - there were\n// intersections, and the first and last segments should be rejoined.\nfunction clipAntimeridianLine(stream) {\n  var lambda0 = NaN,\n      phi0 = NaN,\n      sign0 = NaN,\n      clean; // no intersections\n\n  return {\n    lineStart: function() {\n      stream.lineStart();\n      clean = 1;\n    },\n    point: function(lambda1, phi1) {\n      var sign1 = lambda1 > 0 ? pi : -pi,\n          delta = abs(lambda1 - lambda0);\n      if (abs(delta - pi) < epsilon) { // line crosses a pole\n        stream.point(lambda0, phi0 = (phi0 + phi1) / 2 > 0 ? halfPi : -halfPi);\n        stream.point(sign0, phi0);\n        stream.lineEnd();\n        stream.lineStart();\n        stream.point(sign1, phi0);\n        stream.point(lambda1, phi0);\n        clean = 0;\n      } else if (sign0 !== sign1 && delta >= pi) { // line crosses antimeridian\n        if (abs(lambda0 - sign0) < epsilon) lambda0 -= sign0 * epsilon; // handle degeneracies\n        if (abs(lambda1 - sign1) < epsilon) lambda1 -= sign1 * epsilon;\n        phi0 = clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1);\n        stream.point(sign0, phi0);\n        stream.lineEnd();\n        stream.lineStart();\n        stream.point(sign1, phi0);\n        clean = 0;\n      }\n      stream.point(lambda0 = lambda1, phi0 = phi1);\n      sign0 = sign1;\n    },\n    lineEnd: function() {\n      stream.lineEnd();\n      lambda0 = phi0 = NaN;\n    },\n    clean: function() {\n      return 2 - clean; // if intersections, rejoin first and last segments\n    }\n  };\n}\n\nfunction clipAntimeridianIntersect(lambda0, phi0, lambda1, phi1) {\n  var cosPhi0,\n      cosPhi1,\n      sinLambda0Lambda1 = sin(lambda0 - lambda1);\n  return abs(sinLambda0Lambda1) > epsilon\n      ? atan((sin(phi0) * (cosPhi1 = cos(phi1)) * sin(lambda1)\n          - sin(phi1) * (cosPhi0 = cos(phi0)) * sin(lambda0))\n          / (cosPhi0 * cosPhi1 * sinLambda0Lambda1))\n      : (phi0 + phi1) / 2;\n}\n\nfunction clipAntimeridianInterpolate(from, to, direction, stream) {\n  var phi;\n  if (from == null) {\n    phi = direction * halfPi;\n    stream.point(-pi, phi);\n    stream.point(0, phi);\n    stream.point(pi, phi);\n    stream.point(pi, 0);\n    stream.point(pi, -phi);\n    stream.point(0, -phi);\n    stream.point(-pi, -phi);\n    stream.point(-pi, 0);\n    stream.point(-pi, phi);\n  } else if (abs(from[0] - to[0]) > epsilon) {\n    var lambda = from[0] < to[0] ? pi : -pi;\n    phi = direction * lambda / 2;\n    stream.point(-lambda, phi);\n    stream.point(0, phi);\n    stream.point(lambda, phi);\n  } else {\n    stream.point(to[0], to[1]);\n  }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-geo/src/clip/antimeridian.js\n// module id = null\n// module chunks = ","import {cartesian, cartesianAddInPlace, cartesianCross, cartesianDot, cartesianScale, spherical} from \"../cartesian.js\";\nimport {circleStream} from \"../circle.js\";\nimport {abs, cos, epsilon, pi, radians, sqrt} from \"../math.js\";\nimport pointEqual from \"../pointEqual.js\";\nimport clip from \"./index.js\";\n\nexport default function(radius) {\n  var cr = cos(radius),\n      delta = 6 * radians,\n      smallRadius = cr > 0,\n      notHemisphere = abs(cr) > epsilon; // TODO optimise for this common case\n\n  function interpolate(from, to, direction, stream) {\n    circleStream(stream, radius, delta, direction, from, to);\n  }\n\n  function visible(lambda, phi) {\n    return cos(lambda) * cos(phi) > cr;\n  }\n\n  // Takes a line and cuts into visible segments. Return values used for polygon\n  // clipping: 0 - there were intersections or the line was empty; 1 - no\n  // intersections 2 - there were intersections, and the first and last segments\n  // should be rejoined.\n  function clipLine(stream) {\n    var point0, // previous point\n        c0, // code for previous point\n        v0, // visibility of previous point\n        v00, // visibility of first point\n        clean; // no intersections\n    return {\n      lineStart: function() {\n        v00 = v0 = false;\n        clean = 1;\n      },\n      point: function(lambda, phi) {\n        var point1 = [lambda, phi],\n            point2,\n            v = visible(lambda, phi),\n            c = smallRadius\n              ? v ? 0 : code(lambda, phi)\n              : v ? code(lambda + (lambda < 0 ? pi : -pi), phi) : 0;\n        if (!point0 && (v00 = v0 = v)) stream.lineStart();\n        if (v !== v0) {\n          point2 = intersect(point0, point1);\n          if (!point2 || pointEqual(point0, point2) || pointEqual(point1, point2))\n            point1[2] = 1;\n        }\n        if (v !== v0) {\n          clean = 0;\n          if (v) {\n            // outside going in\n            stream.lineStart();\n            point2 = intersect(point1, point0);\n            stream.point(point2[0], point2[1]);\n          } else {\n            // inside going out\n            point2 = intersect(point0, point1);\n            stream.point(point2[0], point2[1], 2);\n            stream.lineEnd();\n          }\n          point0 = point2;\n        } else if (notHemisphere && point0 && smallRadius ^ v) {\n          var t;\n          // If the codes for two points are different, or are both zero,\n          // and there this segment intersects with the small circle.\n          if (!(c & c0) && (t = intersect(point1, point0, true))) {\n            clean = 0;\n            if (smallRadius) {\n              stream.lineStart();\n              stream.point(t[0][0], t[0][1]);\n              stream.point(t[1][0], t[1][1]);\n              stream.lineEnd();\n            } else {\n              stream.point(t[1][0], t[1][1]);\n              stream.lineEnd();\n              stream.lineStart();\n              stream.point(t[0][0], t[0][1], 3);\n            }\n          }\n        }\n        if (v && (!point0 || !pointEqual(point0, point1))) {\n          stream.point(point1[0], point1[1]);\n        }\n        point0 = point1, v0 = v, c0 = c;\n      },\n      lineEnd: function() {\n        if (v0) stream.lineEnd();\n        point0 = null;\n      },\n      // Rejoin first and last segments if there were intersections and the first\n      // and last points were visible.\n      clean: function() {\n        return clean | ((v00 && v0) << 1);\n      }\n    };\n  }\n\n  // Intersects the great circle between a and b with the clip circle.\n  function intersect(a, b, two) {\n    var pa = cartesian(a),\n        pb = cartesian(b);\n\n    // We have two planes, n1.p = d1 and n2.p = d2.\n    // Find intersection line p(t) = c1 n1 + c2 n2 + t (n1 ⨯ n2).\n    var n1 = [1, 0, 0], // normal\n        n2 = cartesianCross(pa, pb),\n        n2n2 = cartesianDot(n2, n2),\n        n1n2 = n2[0], // cartesianDot(n1, n2),\n        determinant = n2n2 - n1n2 * n1n2;\n\n    // Two polar points.\n    if (!determinant) return !two && a;\n\n    var c1 =  cr * n2n2 / determinant,\n        c2 = -cr * n1n2 / determinant,\n        n1xn2 = cartesianCross(n1, n2),\n        A = cartesianScale(n1, c1),\n        B = cartesianScale(n2, c2);\n    cartesianAddInPlace(A, B);\n\n    // Solve |p(t)|^2 = 1.\n    var u = n1xn2,\n        w = cartesianDot(A, u),\n        uu = cartesianDot(u, u),\n        t2 = w * w - uu * (cartesianDot(A, A) - 1);\n\n    if (t2 < 0) return;\n\n    var t = sqrt(t2),\n        q = cartesianScale(u, (-w - t) / uu);\n    cartesianAddInPlace(q, A);\n    q = spherical(q);\n\n    if (!two) return q;\n\n    // Two intersection points.\n    var lambda0 = a[0],\n        lambda1 = b[0],\n        phi0 = a[1],\n        phi1 = b[1],\n        z;\n\n    if (lambda1 < lambda0) z = lambda0, lambda0 = lambda1, lambda1 = z;\n\n    var delta = lambda1 - lambda0,\n        polar = abs(delta - pi) < epsilon,\n        meridian = polar || delta < epsilon;\n\n    if (!polar && phi1 < phi0) z = phi0, phi0 = phi1, phi1 = z;\n\n    // Check that the first point is between a and b.\n    if (meridian\n        ? polar\n          ? phi0 + phi1 > 0 ^ q[1] < (abs(q[0] - lambda0) < epsilon ? phi0 : phi1)\n          : phi0 <= q[1] && q[1] <= phi1\n        : delta > pi ^ (lambda0 <= q[0] && q[0] <= lambda1)) {\n      var q1 = cartesianScale(u, (-w + t) / uu);\n      cartesianAddInPlace(q1, A);\n      return [q, spherical(q1)];\n    }\n  }\n\n  // Generates a 4-bit vector representing the location of a point relative to\n  // the small circle's bounding box.\n  function code(lambda, phi) {\n    var r = smallRadius ? radius : pi - radius,\n        code = 0;\n    if (lambda < -r) code |= 1; // left\n    else if (lambda > r) code |= 2; // right\n    if (phi < -r) code |= 4; // below\n    else if (phi > r) code |= 8; // above\n    return code;\n  }\n\n  return clip(visible, clipLine, interpolate, smallRadius ? [0, -radius] : [-pi, radius - pi]);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-geo/src/clip/circle.js\n// module id = null\n// module chunks = ","export default function(a, b, x0, y0, x1, y1) {\n  var ax = a[0],\n      ay = a[1],\n      bx = b[0],\n      by = b[1],\n      t0 = 0,\n      t1 = 1,\n      dx = bx - ax,\n      dy = by - ay,\n      r;\n\n  r = x0 - ax;\n  if (!dx && r > 0) return;\n  r /= dx;\n  if (dx < 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  } else if (dx > 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  }\n\n  r = x1 - ax;\n  if (!dx && r < 0) return;\n  r /= dx;\n  if (dx < 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  } else if (dx > 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  }\n\n  r = y0 - ay;\n  if (!dy && r > 0) return;\n  r /= dy;\n  if (dy < 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  } else if (dy > 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  }\n\n  r = y1 - ay;\n  if (!dy && r < 0) return;\n  r /= dy;\n  if (dy < 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  } else if (dy > 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  }\n\n  if (t0 > 0) a[0] = ax + t0 * dx, a[1] = ay + t0 * dy;\n  if (t1 < 1) b[0] = ax + t1 * dx, b[1] = ay + t1 * dy;\n  return true;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-geo/src/clip/line.js\n// module id = null\n// module chunks = ","import {abs, epsilon} from \"../math.js\";\nimport clipBuffer from \"./buffer.js\";\nimport clipLine from \"./line.js\";\nimport clipRejoin from \"./rejoin.js\";\nimport {merge} from \"d3-array\";\n\nvar clipMax = 1e9, clipMin = -clipMax;\n\n// TODO Use d3-polygon’s polygonContains here for the ring check?\n// TODO Eliminate duplicate buffering in clipBuffer and polygon.push?\n\nexport default function clipRectangle(x0, y0, x1, y1) {\n\n  function visible(x, y) {\n    return x0 <= x && x <= x1 && y0 <= y && y <= y1;\n  }\n\n  function interpolate(from, to, direction, stream) {\n    var a = 0, a1 = 0;\n    if (from == null\n        || (a = corner(from, direction)) !== (a1 = corner(to, direction))\n        || comparePoint(from, to) < 0 ^ direction > 0) {\n      do stream.point(a === 0 || a === 3 ? x0 : x1, a > 1 ? y1 : y0);\n      while ((a = (a + direction + 4) % 4) !== a1);\n    } else {\n      stream.point(to[0], to[1]);\n    }\n  }\n\n  function corner(p, direction) {\n    return abs(p[0] - x0) < epsilon ? direction > 0 ? 0 : 3\n        : abs(p[0] - x1) < epsilon ? direction > 0 ? 2 : 1\n        : abs(p[1] - y0) < epsilon ? direction > 0 ? 1 : 0\n        : direction > 0 ? 3 : 2; // abs(p[1] - y1) < epsilon\n  }\n\n  function compareIntersection(a, b) {\n    return comparePoint(a.x, b.x);\n  }\n\n  function comparePoint(a, b) {\n    var ca = corner(a, 1),\n        cb = corner(b, 1);\n    return ca !== cb ? ca - cb\n        : ca === 0 ? b[1] - a[1]\n        : ca === 1 ? a[0] - b[0]\n        : ca === 2 ? a[1] - b[1]\n        : b[0] - a[0];\n  }\n\n  return function(stream) {\n    var activeStream = stream,\n        bufferStream = clipBuffer(),\n        segments,\n        polygon,\n        ring,\n        x__, y__, v__, // first point\n        x_, y_, v_, // previous point\n        first,\n        clean;\n\n    var clipStream = {\n      point: point,\n      lineStart: lineStart,\n      lineEnd: lineEnd,\n      polygonStart: polygonStart,\n      polygonEnd: polygonEnd\n    };\n\n    function point(x, y) {\n      if (visible(x, y)) activeStream.point(x, y);\n    }\n\n    function polygonInside() {\n      var winding = 0;\n\n      for (var i = 0, n = polygon.length; i < n; ++i) {\n        for (var ring = polygon[i], j = 1, m = ring.length, point = ring[0], a0, a1, b0 = point[0], b1 = point[1]; j < m; ++j) {\n          a0 = b0, a1 = b1, point = ring[j], b0 = point[0], b1 = point[1];\n          if (a1 <= y1) { if (b1 > y1 && (b0 - a0) * (y1 - a1) > (b1 - a1) * (x0 - a0)) ++winding; }\n          else { if (b1 <= y1 && (b0 - a0) * (y1 - a1) < (b1 - a1) * (x0 - a0)) --winding; }\n        }\n      }\n\n      return winding;\n    }\n\n    // Buffer geometry within a polygon and then clip it en masse.\n    function polygonStart() {\n      activeStream = bufferStream, segments = [], polygon = [], clean = true;\n    }\n\n    function polygonEnd() {\n      var startInside = polygonInside(),\n          cleanInside = clean && startInside,\n          visible = (segments = merge(segments)).length;\n      if (cleanInside || visible) {\n        stream.polygonStart();\n        if (cleanInside) {\n          stream.lineStart();\n          interpolate(null, null, 1, stream);\n          stream.lineEnd();\n        }\n        if (visible) {\n          clipRejoin(segments, compareIntersection, startInside, interpolate, stream);\n        }\n        stream.polygonEnd();\n      }\n      activeStream = stream, segments = polygon = ring = null;\n    }\n\n    function lineStart() {\n      clipStream.point = linePoint;\n      if (polygon) polygon.push(ring = []);\n      first = true;\n      v_ = false;\n      x_ = y_ = NaN;\n    }\n\n    // TODO rather than special-case polygons, simply handle them separately.\n    // Ideally, coincident intersection points should be jittered to avoid\n    // clipping issues.\n    function lineEnd() {\n      if (segments) {\n        linePoint(x__, y__);\n        if (v__ && v_) bufferStream.rejoin();\n        segments.push(bufferStream.result());\n      }\n      clipStream.point = point;\n      if (v_) activeStream.lineEnd();\n    }\n\n    function linePoint(x, y) {\n      var v = visible(x, y);\n      if (polygon) ring.push([x, y]);\n      if (first) {\n        x__ = x, y__ = y, v__ = v;\n        first = false;\n        if (v) {\n          activeStream.lineStart();\n          activeStream.point(x, y);\n        }\n      } else {\n        if (v && v_) activeStream.point(x, y);\n        else {\n          var a = [x_ = Math.max(clipMin, Math.min(clipMax, x_)), y_ = Math.max(clipMin, Math.min(clipMax, y_))],\n              b = [x = Math.max(clipMin, Math.min(clipMax, x)), y = Math.max(clipMin, Math.min(clipMax, y))];\n          if (clipLine(a, b, x0, y0, x1, y1)) {\n            if (!v_) {\n              activeStream.lineStart();\n              activeStream.point(a[0], a[1]);\n            }\n            activeStream.point(b[0], b[1]);\n            if (!v) activeStream.lineEnd();\n            clean = false;\n          } else if (v) {\n            activeStream.lineStart();\n            activeStream.point(x, y);\n            clean = false;\n          }\n        }\n      }\n      x_ = x, y_ = y, v_ = v;\n    }\n\n    return clipStream;\n  };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-geo/src/clip/rectangle.js\n// module id = null\n// module chunks = ","import clipRectangle from \"./rectangle.js\";\n\nexport default function() {\n  var x0 = 0,\n      y0 = 0,\n      x1 = 960,\n      y1 = 500,\n      cache,\n      cacheStream,\n      clip;\n\n  return clip = {\n    stream: function(stream) {\n      return cache && cacheStream === stream ? cache : cache = clipRectangle(x0, y0, x1, y1)(cacheStream = stream);\n    },\n    extent: function(_) {\n      return arguments.length ? (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1], cache = cacheStream = null, clip) : [[x0, y0], [x1, y1]];\n    }\n  };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-geo/src/clip/extent.js\n// module id = null\n// module chunks = ","import adder from \"./adder.js\";\nimport {abs, atan2, cos, radians, sin, sqrt} from \"./math.js\";\nimport noop from \"./noop.js\";\nimport stream from \"./stream.js\";\n\nvar lengthSum = adder(),\n    lambda0,\n    sinPhi0,\n    cosPhi0;\n\nvar lengthStream = {\n  sphere: noop,\n  point: noop,\n  lineStart: lengthLineStart,\n  lineEnd: noop,\n  polygonStart: noop,\n  polygonEnd: noop\n};\n\nfunction lengthLineStart() {\n  lengthStream.point = lengthPointFirst;\n  lengthStream.lineEnd = lengthLineEnd;\n}\n\nfunction lengthLineEnd() {\n  lengthStream.point = lengthStream.lineEnd = noop;\n}\n\nfunction lengthPointFirst(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  lambda0 = lambda, sinPhi0 = sin(phi), cosPhi0 = cos(phi);\n  lengthStream.point = lengthPoint;\n}\n\nfunction lengthPoint(lambda, phi) {\n  lambda *= radians, phi *= radians;\n  var sinPhi = sin(phi),\n      cosPhi = cos(phi),\n      delta = abs(lambda - lambda0),\n      cosDelta = cos(delta),\n      sinDelta = sin(delta),\n      x = cosPhi * sinDelta,\n      y = cosPhi0 * sinPhi - sinPhi0 * cosPhi * cosDelta,\n      z = sinPhi0 * sinPhi + cosPhi0 * cosPhi * cosDelta;\n  lengthSum.add(atan2(sqrt(x * x + y * y), z));\n  lambda0 = lambda, sinPhi0 = sinPhi, cosPhi0 = cosPhi;\n}\n\nexport default function(object) {\n  lengthSum.reset();\n  stream(object, lengthStream);\n  return +lengthSum;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-geo/src/length.js\n// module id = null\n// module chunks = ","import length from \"./length.js\";\n\nvar coordinates = [null, null],\n    object = {type: \"LineString\", coordinates: coordinates};\n\nexport default function(a, b) {\n  coordinates[0] = a;\n  coordinates[1] = b;\n  return length(object);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-geo/src/distance.js\n// module id = null\n// module chunks = ","import {default as polygonContains} from \"./polygonContains.js\";\nimport {default as distance} from \"./distance.js\";\nimport {epsilon2, radians} from \"./math.js\";\n\nvar containsObjectType = {\n  Feature: function(object, point) {\n    return containsGeometry(object.geometry, point);\n  },\n  FeatureCollection: function(object, point) {\n    var features = object.features, i = -1, n = features.length;\n    while (++i < n) if (containsGeometry(features[i].geometry, point)) return true;\n    return false;\n  }\n};\n\nvar containsGeometryType = {\n  Sphere: function() {\n    return true;\n  },\n  Point: function(object, point) {\n    return containsPoint(object.coordinates, point);\n  },\n  MultiPoint: function(object, point) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) if (containsPoint(coordinates[i], point)) return true;\n    return false;\n  },\n  LineString: function(object, point) {\n    return containsLine(object.coordinates, point);\n  },\n  MultiLineString: function(object, point) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) if (containsLine(coordinates[i], point)) return true;\n    return false;\n  },\n  Polygon: function(object, point) {\n    return containsPolygon(object.coordinates, point);\n  },\n  MultiPolygon: function(object, point) {\n    var coordinates = object.coordinates, i = -1, n = coordinates.length;\n    while (++i < n) if (containsPolygon(coordinates[i], point)) return true;\n    return false;\n  },\n  GeometryCollection: function(object, point) {\n    var geometries = object.geometries, i = -1, n = geometries.length;\n    while (++i < n) if (containsGeometry(geometries[i], point)) return true;\n    return false;\n  }\n};\n\nfunction containsGeometry(geometry, point) {\n  return geometry && containsGeometryType.hasOwnProperty(geometry.type)\n      ? containsGeometryType[geometry.type](geometry, point)\n      : false;\n}\n\nfunction containsPoint(coordinates, point) {\n  return distance(coordinates, point) === 0;\n}\n\nfunction containsLine(coordinates, point) {\n  var ao, bo, ab;\n  for (var i = 0, n = coordinates.length; i < n; i++) {\n    bo = distance(coordinates[i], point);\n    if (bo === 0) return true;\n    if (i > 0) {\n      ab = distance(coordinates[i], coordinates[i - 1]);\n      if (\n        ab > 0 &&\n        ao <= ab &&\n        bo <= ab &&\n        (ao + bo - ab) * (1 - Math.pow((ao - bo) / ab, 2)) < epsilon2 * ab\n      )\n        return true;\n    }\n    ao = bo;\n  }\n  return false;\n}\n\nfunction containsPolygon(coordinates, point) {\n  return !!polygonContains(coordinates.map(ringRadians), pointRadians(point));\n}\n\nfunction ringRadians(ring) {\n  return ring = ring.map(pointRadians), ring.pop(), ring;\n}\n\nfunction pointRadians(point) {\n  return [point[0] * radians, point[1] * radians];\n}\n\nexport default function(object, point) {\n  return (object && containsObjectType.hasOwnProperty(object.type)\n      ? containsObjectType[object.type]\n      : containsGeometry)(object, point);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-geo/src/contains.js\n// module id = null\n// module chunks = ","import {range} from \"d3-array\";\nimport {abs, ceil, epsilon} from \"./math.js\";\n\nfunction graticuleX(y0, y1, dy) {\n  var y = range(y0, y1 - epsilon, dy).concat(y1);\n  return function(x) { return y.map(function(y) { return [x, y]; }); };\n}\n\nfunction graticuleY(x0, x1, dx) {\n  var x = range(x0, x1 - epsilon, dx).concat(x1);\n  return function(y) { return x.map(function(x) { return [x, y]; }); };\n}\n\nexport default function graticule() {\n  var x1, x0, X1, X0,\n      y1, y0, Y1, Y0,\n      dx = 10, dy = dx, DX = 90, DY = 360,\n      x, y, X, Y,\n      precision = 2.5;\n\n  function graticule() {\n    return {type: \"MultiLineString\", coordinates: lines()};\n  }\n\n  function lines() {\n    return range(ceil(X0 / DX) * DX, X1, DX).map(X)\n        .concat(range(ceil(Y0 / DY) * DY, Y1, DY).map(Y))\n        .concat(range(ceil(x0 / dx) * dx, x1, dx).filter(function(x) { return abs(x % DX) > epsilon; }).map(x))\n        .concat(range(ceil(y0 / dy) * dy, y1, dy).filter(function(y) { return abs(y % DY) > epsilon; }).map(y));\n  }\n\n  graticule.lines = function() {\n    return lines().map(function(coordinates) { return {type: \"LineString\", coordinates: coordinates}; });\n  };\n\n  graticule.outline = function() {\n    return {\n      type: \"Polygon\",\n      coordinates: [\n        X(X0).concat(\n        Y(Y1).slice(1),\n        X(X1).reverse().slice(1),\n        Y(Y0).reverse().slice(1))\n      ]\n    };\n  };\n\n  graticule.extent = function(_) {\n    if (!arguments.length) return graticule.extentMinor();\n    return graticule.extentMajor(_).extentMinor(_);\n  };\n\n  graticule.extentMajor = function(_) {\n    if (!arguments.length) return [[X0, Y0], [X1, Y1]];\n    X0 = +_[0][0], X1 = +_[1][0];\n    Y0 = +_[0][1], Y1 = +_[1][1];\n    if (X0 > X1) _ = X0, X0 = X1, X1 = _;\n    if (Y0 > Y1) _ = Y0, Y0 = Y1, Y1 = _;\n    return graticule.precision(precision);\n  };\n\n  graticule.extentMinor = function(_) {\n    if (!arguments.length) return [[x0, y0], [x1, y1]];\n    x0 = +_[0][0], x1 = +_[1][0];\n    y0 = +_[0][1], y1 = +_[1][1];\n    if (x0 > x1) _ = x0, x0 = x1, x1 = _;\n    if (y0 > y1) _ = y0, y0 = y1, y1 = _;\n    return graticule.precision(precision);\n  };\n\n  graticule.step = function(_) {\n    if (!arguments.length) return graticule.stepMinor();\n    return graticule.stepMajor(_).stepMinor(_);\n  };\n\n  graticule.stepMajor = function(_) {\n    if (!arguments.length) return [DX, DY];\n    DX = +_[0], DY = +_[1];\n    return graticule;\n  };\n\n  graticule.stepMinor = function(_) {\n    if (!arguments.length) return [dx, dy];\n    dx = +_[0], dy = +_[1];\n    return graticule;\n  };\n\n  graticule.precision = function(_) {\n    if (!arguments.length) return precision;\n    precision = +_;\n    x = graticuleX(y0, y1, 90);\n    y = graticuleY(x0, x1, precision);\n    X = graticuleX(Y0, Y1, 90);\n    Y = graticuleY(X0, X1, precision);\n    return graticule;\n  };\n\n  return graticule\n      .extentMajor([[-180, -90 + epsilon], [180, 90 - epsilon]])\n      .extentMinor([[-180, -80 - epsilon], [180, 80 + epsilon]]);\n}\n\nexport function graticule10() {\n  return graticule()();\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-geo/src/graticule.js\n// module id = null\n// module chunks = ","import {asin, atan2, cos, degrees, haversin, radians, sin, sqrt} from \"./math.js\";\n\nexport default function(a, b) {\n  var x0 = a[0] * radians,\n      y0 = a[1] * radians,\n      x1 = b[0] * radians,\n      y1 = b[1] * radians,\n      cy0 = cos(y0),\n      sy0 = sin(y0),\n      cy1 = cos(y1),\n      sy1 = sin(y1),\n      kx0 = cy0 * cos(x0),\n      ky0 = cy0 * sin(x0),\n      kx1 = cy1 * cos(x1),\n      ky1 = cy1 * sin(x1),\n      d = 2 * asin(sqrt(haversin(y1 - y0) + cy0 * cy1 * haversin(x1 - x0))),\n      k = sin(d);\n\n  var interpolate = d ? function(t) {\n    var B = sin(t *= d) / k,\n        A = sin(d - t) / k,\n        x = A * kx0 + B * kx1,\n        y = A * ky0 + B * ky1,\n        z = A * sy0 + B * sy1;\n    return [\n      atan2(y, x) * degrees,\n      atan2(z, sqrt(x * x + y * y)) * degrees\n    ];\n  } : function() {\n    return [x0 * degrees, y0 * degrees];\n  };\n\n  interpolate.distance = d;\n\n  return interpolate;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-geo/src/interpolate.js\n// module id = null\n// module chunks = ","export default function(x) {\n  return x;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-geo/src/identity.js\n// module id = null\n// module chunks = ","import adder from \"../adder.js\";\nimport {abs} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar areaSum = adder(),\n    areaRingSum = adder(),\n    x00,\n    y00,\n    x0,\n    y0;\n\nvar areaStream = {\n  point: noop,\n  lineStart: noop,\n  lineEnd: noop,\n  polygonStart: function() {\n    areaStream.lineStart = areaRingStart;\n    areaStream.lineEnd = areaRingEnd;\n  },\n  polygonEnd: function() {\n    areaStream.lineStart = areaStream.lineEnd = areaStream.point = noop;\n    areaSum.add(abs(areaRingSum));\n    areaRingSum.reset();\n  },\n  result: function() {\n    var area = areaSum / 2;\n    areaSum.reset();\n    return area;\n  }\n};\n\nfunction areaRingStart() {\n  areaStream.point = areaPointFirst;\n}\n\nfunction areaPointFirst(x, y) {\n  areaStream.point = areaPoint;\n  x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction areaPoint(x, y) {\n  areaRingSum.add(y0 * x - x0 * y);\n  x0 = x, y0 = y;\n}\n\nfunction areaRingEnd() {\n  areaPoint(x00, y00);\n}\n\nexport default areaStream;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-geo/src/path/area.js\n// module id = null\n// module chunks = ","import noop from \"../noop.js\";\n\nvar x0 = Infinity,\n    y0 = x0,\n    x1 = -x0,\n    y1 = x1;\n\nvar boundsStream = {\n  point: boundsPoint,\n  lineStart: noop,\n  lineEnd: noop,\n  polygonStart: noop,\n  polygonEnd: noop,\n  result: function() {\n    var bounds = [[x0, y0], [x1, y1]];\n    x1 = y1 = -(y0 = x0 = Infinity);\n    return bounds;\n  }\n};\n\nfunction boundsPoint(x, y) {\n  if (x < x0) x0 = x;\n  if (x > x1) x1 = x;\n  if (y < y0) y0 = y;\n  if (y > y1) y1 = y;\n}\n\nexport default boundsStream;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-geo/src/path/bounds.js\n// module id = null\n// module chunks = ","import {sqrt} from \"../math.js\";\n\n// TODO Enforce positive area for exterior, negative area for interior?\n\nvar X0 = 0,\n    Y0 = 0,\n    Z0 = 0,\n    X1 = 0,\n    Y1 = 0,\n    Z1 = 0,\n    X2 = 0,\n    Y2 = 0,\n    Z2 = 0,\n    x00,\n    y00,\n    x0,\n    y0;\n\nvar centroidStream = {\n  point: centroidPoint,\n  lineStart: centroidLineStart,\n  lineEnd: centroidLineEnd,\n  polygonStart: function() {\n    centroidStream.lineStart = centroidRingStart;\n    centroidStream.lineEnd = centroidRingEnd;\n  },\n  polygonEnd: function() {\n    centroidStream.point = centroidPoint;\n    centroidStream.lineStart = centroidLineStart;\n    centroidStream.lineEnd = centroidLineEnd;\n  },\n  result: function() {\n    var centroid = Z2 ? [X2 / Z2, Y2 / Z2]\n        : Z1 ? [X1 / Z1, Y1 / Z1]\n        : Z0 ? [X0 / Z0, Y0 / Z0]\n        : [NaN, NaN];\n    X0 = Y0 = Z0 =\n    X1 = Y1 = Z1 =\n    X2 = Y2 = Z2 = 0;\n    return centroid;\n  }\n};\n\nfunction centroidPoint(x, y) {\n  X0 += x;\n  Y0 += y;\n  ++Z0;\n}\n\nfunction centroidLineStart() {\n  centroidStream.point = centroidPointFirstLine;\n}\n\nfunction centroidPointFirstLine(x, y) {\n  centroidStream.point = centroidPointLine;\n  centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidPointLine(x, y) {\n  var dx = x - x0, dy = y - y0, z = sqrt(dx * dx + dy * dy);\n  X1 += z * (x0 + x) / 2;\n  Y1 += z * (y0 + y) / 2;\n  Z1 += z;\n  centroidPoint(x0 = x, y0 = y);\n}\n\nfunction centroidLineEnd() {\n  centroidStream.point = centroidPoint;\n}\n\nfunction centroidRingStart() {\n  centroidStream.point = centroidPointFirstRing;\n}\n\nfunction centroidRingEnd() {\n  centroidPointRing(x00, y00);\n}\n\nfunction centroidPointFirstRing(x, y) {\n  centroidStream.point = centroidPointRing;\n  centroidPoint(x00 = x0 = x, y00 = y0 = y);\n}\n\nfunction centroidPointRing(x, y) {\n  var dx = x - x0,\n      dy = y - y0,\n      z = sqrt(dx * dx + dy * dy);\n\n  X1 += z * (x0 + x) / 2;\n  Y1 += z * (y0 + y) / 2;\n  Z1 += z;\n\n  z = y0 * x - x0 * y;\n  X2 += z * (x0 + x);\n  Y2 += z * (y0 + y);\n  Z2 += z * 3;\n  centroidPoint(x0 = x, y0 = y);\n}\n\nexport default centroidStream;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-geo/src/path/centroid.js\n// module id = null\n// module chunks = ","import {tau} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nexport default function PathContext(context) {\n  this._context = context;\n}\n\nPathContext.prototype = {\n  _radius: 4.5,\n  pointRadius: function(_) {\n    return this._radius = _, this;\n  },\n  polygonStart: function() {\n    this._line = 0;\n  },\n  polygonEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line === 0) this._context.closePath();\n    this._point = NaN;\n  },\n  point: function(x, y) {\n    switch (this._point) {\n      case 0: {\n        this._context.moveTo(x, y);\n        this._point = 1;\n        break;\n      }\n      case 1: {\n        this._context.lineTo(x, y);\n        break;\n      }\n      default: {\n        this._context.moveTo(x + this._radius, y);\n        this._context.arc(x, y, this._radius, 0, tau);\n        break;\n      }\n    }\n  },\n  result: noop\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-geo/src/path/context.js\n// module id = null\n// module chunks = ","import adder from \"../adder.js\";\nimport {sqrt} from \"../math.js\";\nimport noop from \"../noop.js\";\n\nvar lengthSum = adder(),\n    lengthRing,\n    x00,\n    y00,\n    x0,\n    y0;\n\nvar lengthStream = {\n  point: noop,\n  lineStart: function() {\n    lengthStream.point = lengthPointFirst;\n  },\n  lineEnd: function() {\n    if (lengthRing) lengthPoint(x00, y00);\n    lengthStream.point = noop;\n  },\n  polygonStart: function() {\n    lengthRing = true;\n  },\n  polygonEnd: function() {\n    lengthRing = null;\n  },\n  result: function() {\n    var length = +lengthSum;\n    lengthSum.reset();\n    return length;\n  }\n};\n\nfunction lengthPointFirst(x, y) {\n  lengthStream.point = lengthPoint;\n  x00 = x0 = x, y00 = y0 = y;\n}\n\nfunction lengthPoint(x, y) {\n  x0 -= x, y0 -= y;\n  lengthSum.add(sqrt(x0 * x0 + y0 * y0));\n  x0 = x, y0 = y;\n}\n\nexport default lengthStream;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-geo/src/path/measure.js\n// module id = null\n// module chunks = ","export default function PathString() {\n  this._string = [];\n}\n\nPathString.prototype = {\n  _radius: 4.5,\n  _circle: circle(4.5),\n  pointRadius: function(_) {\n    if ((_ = +_) !== this._radius) this._radius = _, this._circle = null;\n    return this;\n  },\n  polygonStart: function() {\n    this._line = 0;\n  },\n  polygonEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line === 0) this._string.push(\"Z\");\n    this._point = NaN;\n  },\n  point: function(x, y) {\n    switch (this._point) {\n      case 0: {\n        this._string.push(\"M\", x, \",\", y);\n        this._point = 1;\n        break;\n      }\n      case 1: {\n        this._string.push(\"L\", x, \",\", y);\n        break;\n      }\n      default: {\n        if (this._circle == null) this._circle = circle(this._radius);\n        this._string.push(\"M\", x, \",\", y, this._circle);\n        break;\n      }\n    }\n  },\n  result: function() {\n    if (this._string.length) {\n      var result = this._string.join(\"\");\n      this._string = [];\n      return result;\n    } else {\n      return null;\n    }\n  }\n};\n\nfunction circle(radius) {\n  return \"m0,\" + radius\n      + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + -2 * radius\n      + \"a\" + radius + \",\" + radius + \" 0 1,1 0,\" + 2 * radius\n      + \"z\";\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-geo/src/path/string.js\n// module id = null\n// module chunks = ","import identity from \"../identity.js\";\nimport stream from \"../stream.js\";\nimport pathArea from \"./area.js\";\nimport pathBounds from \"./bounds.js\";\nimport pathCentroid from \"./centroid.js\";\nimport PathContext from \"./context.js\";\nimport pathMeasure from \"./measure.js\";\nimport PathString from \"./string.js\";\n\nexport default function(projection, context) {\n  var pointRadius = 4.5,\n      projectionStream,\n      contextStream;\n\n  function path(object) {\n    if (object) {\n      if (typeof pointRadius === \"function\") contextStream.pointRadius(+pointRadius.apply(this, arguments));\n      stream(object, projectionStream(contextStream));\n    }\n    return contextStream.result();\n  }\n\n  path.area = function(object) {\n    stream(object, projectionStream(pathArea));\n    return pathArea.result();\n  };\n\n  path.measure = function(object) {\n    stream(object, projectionStream(pathMeasure));\n    return pathMeasure.result();\n  };\n\n  path.bounds = function(object) {\n    stream(object, projectionStream(pathBounds));\n    return pathBounds.result();\n  };\n\n  path.centroid = function(object) {\n    stream(object, projectionStream(pathCentroid));\n    return pathCentroid.result();\n  };\n\n  path.projection = function(_) {\n    return arguments.length ? (projectionStream = _ == null ? (projection = null, identity) : (projection = _).stream, path) : projection;\n  };\n\n  path.context = function(_) {\n    if (!arguments.length) return context;\n    contextStream = _ == null ? (context = null, new PathString) : new PathContext(context = _);\n    if (typeof pointRadius !== \"function\") contextStream.pointRadius(pointRadius);\n    return path;\n  };\n\n  path.pointRadius = function(_) {\n    if (!arguments.length) return pointRadius;\n    pointRadius = typeof _ === \"function\" ? _ : (contextStream.pointRadius(+_), +_);\n    return path;\n  };\n\n  return path.projection(projection).context(context);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-geo/src/path/index.js\n// module id = null\n// module chunks = ","export default function(methods) {\n  return {\n    stream: transformer(methods)\n  };\n}\n\nexport function transformer(methods) {\n  return function(stream) {\n    var s = new TransformStream;\n    for (var key in methods) s[key] = methods[key];\n    s.stream = stream;\n    return s;\n  };\n}\n\nfunction TransformStream() {}\n\nTransformStream.prototype = {\n  constructor: TransformStream,\n  point: function(x, y) { this.stream.point(x, y); },\n  sphere: function() { this.stream.sphere(); },\n  lineStart: function() { this.stream.lineStart(); },\n  lineEnd: function() { this.stream.lineEnd(); },\n  polygonStart: function() { this.stream.polygonStart(); },\n  polygonEnd: function() { this.stream.polygonEnd(); }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-geo/src/transform.js\n// module id = null\n// module chunks = ","import {default as geoStream} from \"../stream.js\";\nimport boundsStream from \"../path/bounds.js\";\n\nfunction fit(projection, fitBounds, object) {\n  var clip = projection.clipExtent && projection.clipExtent();\n  projection.scale(150).translate([0, 0]);\n  if (clip != null) projection.clipExtent(null);\n  geoStream(object, projection.stream(boundsStream));\n  fitBounds(boundsStream.result());\n  if (clip != null) projection.clipExtent(clip);\n  return projection;\n}\n\nexport function fitExtent(projection, extent, object) {\n  return fit(projection, function(b) {\n    var w = extent[1][0] - extent[0][0],\n        h = extent[1][1] - extent[0][1],\n        k = Math.min(w / (b[1][0] - b[0][0]), h / (b[1][1] - b[0][1])),\n        x = +extent[0][0] + (w - k * (b[1][0] + b[0][0])) / 2,\n        y = +extent[0][1] + (h - k * (b[1][1] + b[0][1])) / 2;\n    projection.scale(150 * k).translate([x, y]);\n  }, object);\n}\n\nexport function fitSize(projection, size, object) {\n  return fitExtent(projection, [[0, 0], size], object);\n}\n\nexport function fitWidth(projection, width, object) {\n  return fit(projection, function(b) {\n    var w = +width,\n        k = w / (b[1][0] - b[0][0]),\n        x = (w - k * (b[1][0] + b[0][0])) / 2,\n        y = -k * b[0][1];\n    projection.scale(150 * k).translate([x, y]);\n  }, object);\n}\n\nexport function fitHeight(projection, height, object) {\n  return fit(projection, function(b) {\n    var h = +height,\n        k = h / (b[1][1] - b[0][1]),\n        x = -k * b[0][0],\n        y = (h - k * (b[1][1] + b[0][1])) / 2;\n    projection.scale(150 * k).translate([x, y]);\n  }, object);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-geo/src/projection/fit.js\n// module id = null\n// module chunks = ","import {cartesian} from \"../cartesian.js\";\nimport {abs, asin, atan2, cos, epsilon, radians, sqrt} from \"../math.js\";\nimport {transformer} from \"../transform.js\";\n\nvar maxDepth = 16, // maximum depth of subdivision\n    cosMinDistance = cos(30 * radians); // cos(minimum angular distance)\n\nexport default function(project, delta2) {\n  return +delta2 ? resample(project, delta2) : resampleNone(project);\n}\n\nfunction resampleNone(project) {\n  return transformer({\n    point: function(x, y) {\n      x = project(x, y);\n      this.stream.point(x[0], x[1]);\n    }\n  });\n}\n\nfunction resample(project, delta2) {\n\n  function resampleLineTo(x0, y0, lambda0, a0, b0, c0, x1, y1, lambda1, a1, b1, c1, depth, stream) {\n    var dx = x1 - x0,\n        dy = y1 - y0,\n        d2 = dx * dx + dy * dy;\n    if (d2 > 4 * delta2 && depth--) {\n      var a = a0 + a1,\n          b = b0 + b1,\n          c = c0 + c1,\n          m = sqrt(a * a + b * b + c * c),\n          phi2 = asin(c /= m),\n          lambda2 = abs(abs(c) - 1) < epsilon || abs(lambda0 - lambda1) < epsilon ? (lambda0 + lambda1) / 2 : atan2(b, a),\n          p = project(lambda2, phi2),\n          x2 = p[0],\n          y2 = p[1],\n          dx2 = x2 - x0,\n          dy2 = y2 - y0,\n          dz = dy * dx2 - dx * dy2;\n      if (dz * dz / d2 > delta2 // perpendicular projected distance\n          || abs((dx * dx2 + dy * dy2) / d2 - 0.5) > 0.3 // midpoint close to an end\n          || a0 * a1 + b0 * b1 + c0 * c1 < cosMinDistance) { // angular distance\n        resampleLineTo(x0, y0, lambda0, a0, b0, c0, x2, y2, lambda2, a /= m, b /= m, c, depth, stream);\n        stream.point(x2, y2);\n        resampleLineTo(x2, y2, lambda2, a, b, c, x1, y1, lambda1, a1, b1, c1, depth, stream);\n      }\n    }\n  }\n  return function(stream) {\n    var lambda00, x00, y00, a00, b00, c00, // first point\n        lambda0, x0, y0, a0, b0, c0; // previous point\n\n    var resampleStream = {\n      point: point,\n      lineStart: lineStart,\n      lineEnd: lineEnd,\n      polygonStart: function() { stream.polygonStart(); resampleStream.lineStart = ringStart; },\n      polygonEnd: function() { stream.polygonEnd(); resampleStream.lineStart = lineStart; }\n    };\n\n    function point(x, y) {\n      x = project(x, y);\n      stream.point(x[0], x[1]);\n    }\n\n    function lineStart() {\n      x0 = NaN;\n      resampleStream.point = linePoint;\n      stream.lineStart();\n    }\n\n    function linePoint(lambda, phi) {\n      var c = cartesian([lambda, phi]), p = project(lambda, phi);\n      resampleLineTo(x0, y0, lambda0, a0, b0, c0, x0 = p[0], y0 = p[1], lambda0 = lambda, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);\n      stream.point(x0, y0);\n    }\n\n    function lineEnd() {\n      resampleStream.point = point;\n      stream.lineEnd();\n    }\n\n    function ringStart() {\n      lineStart();\n      resampleStream.point = ringPoint;\n      resampleStream.lineEnd = ringEnd;\n    }\n\n    function ringPoint(lambda, phi) {\n      linePoint(lambda00 = lambda, phi), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;\n      resampleStream.point = linePoint;\n    }\n\n    function ringEnd() {\n      resampleLineTo(x0, y0, lambda0, a0, b0, c0, x00, y00, lambda00, a00, b00, c00, maxDepth, stream);\n      resampleStream.lineEnd = lineEnd;\n      lineEnd();\n    }\n\n    return resampleStream;\n  };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-geo/src/projection/resample.js\n// module id = null\n// module chunks = ","import clipAntimeridian from \"../clip/antimeridian.js\";\nimport clipCircle from \"../clip/circle.js\";\nimport clipRectangle from \"../clip/rectangle.js\";\nimport compose from \"../compose.js\";\nimport identity from \"../identity.js\";\nimport {cos, degrees, radians, sin, sqrt} from \"../math.js\";\nimport {rotateRadians} from \"../rotation.js\";\nimport {transformer} from \"../transform.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\nimport resample from \"./resample.js\";\n\nvar transformRadians = transformer({\n  point: function(x, y) {\n    this.stream.point(x * radians, y * radians);\n  }\n});\n\nfunction transformRotate(rotate) {\n  return transformer({\n    point: function(x, y) {\n      var r = rotate(x, y);\n      return this.stream.point(r[0], r[1]);\n    }\n  });\n}\n\nfunction scaleTranslate(k, dx, dy, sx, sy) {\n  function transform(x, y) {\n    x *= sx; y *= sy;\n    return [dx + k * x, dy - k * y];\n  }\n  transform.invert = function(x, y) {\n    return [(x - dx) / k * sx, (dy - y) / k * sy];\n  };\n  return transform;\n}\n\nfunction scaleTranslateRotate(k, dx, dy, sx, sy, alpha) {\n  var cosAlpha = cos(alpha),\n      sinAlpha = sin(alpha),\n      a = cosAlpha * k,\n      b = sinAlpha * k,\n      ai = cosAlpha / k,\n      bi = sinAlpha / k,\n      ci = (sinAlpha * dy - cosAlpha * dx) / k,\n      fi = (sinAlpha * dx + cosAlpha * dy) / k;\n  function transform(x, y) {\n    x *= sx; y *= sy;\n    return [a * x - b * y + dx, dy - b * x - a * y];\n  }\n  transform.invert = function(x, y) {\n    return [sx * (ai * x - bi * y + ci), sy * (fi - bi * x - ai * y)];\n  };\n  return transform;\n}\n\nexport default function projection(project) {\n  return projectionMutator(function() { return project; })();\n}\n\nexport function projectionMutator(projectAt) {\n  var project,\n      k = 150, // scale\n      x = 480, y = 250, // translate\n      lambda = 0, phi = 0, // center\n      deltaLambda = 0, deltaPhi = 0, deltaGamma = 0, rotate, // pre-rotate\n      alpha = 0, // post-rotate angle\n      sx = 1, // reflectX\n      sy = 1, // reflectX\n      theta = null, preclip = clipAntimeridian, // pre-clip angle\n      x0 = null, y0, x1, y1, postclip = identity, // post-clip extent\n      delta2 = 0.5, // precision\n      projectResample,\n      projectTransform,\n      projectRotateTransform,\n      cache,\n      cacheStream;\n\n  function projection(point) {\n    return projectRotateTransform(point[0] * radians, point[1] * radians);\n  }\n\n  function invert(point) {\n    point = projectRotateTransform.invert(point[0], point[1]);\n    return point && [point[0] * degrees, point[1] * degrees];\n  }\n\n  projection.stream = function(stream) {\n    return cache && cacheStream === stream ? cache : cache = transformRadians(transformRotate(rotate)(preclip(projectResample(postclip(cacheStream = stream)))));\n  };\n\n  projection.preclip = function(_) {\n    return arguments.length ? (preclip = _, theta = undefined, reset()) : preclip;\n  };\n\n  projection.postclip = function(_) {\n    return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n  };\n\n  projection.clipAngle = function(_) {\n    return arguments.length ? (preclip = +_ ? clipCircle(theta = _ * radians) : (theta = null, clipAntimeridian), reset()) : theta * degrees;\n  };\n\n  projection.clipExtent = function(_) {\n    return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n  };\n\n  projection.scale = function(_) {\n    return arguments.length ? (k = +_, recenter()) : k;\n  };\n\n  projection.translate = function(_) {\n    return arguments.length ? (x = +_[0], y = +_[1], recenter()) : [x, y];\n  };\n\n  projection.center = function(_) {\n    return arguments.length ? (lambda = _[0] % 360 * radians, phi = _[1] % 360 * radians, recenter()) : [lambda * degrees, phi * degrees];\n  };\n\n  projection.rotate = function(_) {\n    return arguments.length ? (deltaLambda = _[0] % 360 * radians, deltaPhi = _[1] % 360 * radians, deltaGamma = _.length > 2 ? _[2] % 360 * radians : 0, recenter()) : [deltaLambda * degrees, deltaPhi * degrees, deltaGamma * degrees];\n  };\n\n  projection.angle = function(_) {\n    return arguments.length ? (alpha = _ % 360 * radians, recenter()) : alpha * degrees;\n  };\n\n  projection.reflectX = function(_) {\n    return arguments.length ? (sx = _ ? -1 : 1, recenter()) : sx < 0;\n  };\n\n  projection.reflectY = function(_) {\n    return arguments.length ? (sy = _ ? -1 : 1, recenter()) : sy < 0;\n  };\n\n  projection.precision = function(_) {\n    return arguments.length ? (projectResample = resample(projectTransform, delta2 = _ * _), reset()) : sqrt(delta2);\n  };\n\n  projection.fitExtent = function(extent, object) {\n    return fitExtent(projection, extent, object);\n  };\n\n  projection.fitSize = function(size, object) {\n    return fitSize(projection, size, object);\n  };\n\n  projection.fitWidth = function(width, object) {\n    return fitWidth(projection, width, object);\n  };\n\n  projection.fitHeight = function(height, object) {\n    return fitHeight(projection, height, object);\n  };\n\n  function recenter() {\n    var center = scaleTranslateRotate(k, 0, 0, sx, sy, alpha).apply(null, project(lambda, phi)),\n        transform = (alpha ? scaleTranslateRotate : scaleTranslate)(k, x - center[0], y - center[1], sx, sy, alpha);\n    rotate = rotateRadians(deltaLambda, deltaPhi, deltaGamma);\n    projectTransform = compose(project, transform);\n    projectRotateTransform = compose(rotate, projectTransform);\n    projectResample = resample(projectTransform, delta2);\n    return reset();\n  }\n\n  function reset() {\n    cache = cacheStream = null;\n    return projection;\n  }\n\n  return function() {\n    project = projectAt.apply(this, arguments);\n    projection.invert = project.invert && invert;\n    return recenter();\n  };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-geo/src/projection/index.js\n// module id = null\n// module chunks = ","import {degrees, pi, radians} from \"../math.js\";\nimport {projectionMutator} from \"./index.js\";\n\nexport function conicProjection(projectAt) {\n  var phi0 = 0,\n      phi1 = pi / 3,\n      m = projectionMutator(projectAt),\n      p = m(phi0, phi1);\n\n  p.parallels = function(_) {\n    return arguments.length ? m(phi0 = _[0] * radians, phi1 = _[1] * radians) : [phi0 * degrees, phi1 * degrees];\n  };\n\n  return p;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-geo/src/projection/conic.js\n// module id = null\n// module chunks = ","import {asin, cos, sin} from \"../math.js\";\n\nexport function cylindricalEqualAreaRaw(phi0) {\n  var cosPhi0 = cos(phi0);\n\n  function forward(lambda, phi) {\n    return [lambda * cosPhi0, sin(phi) / cosPhi0];\n  }\n\n  forward.invert = function(x, y) {\n    return [x / cosPhi0, asin(y * cosPhi0)];\n  };\n\n  return forward;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-geo/src/projection/cylindricalEqualArea.js\n// module id = null\n// module chunks = ","import {abs, asin, atan2, cos, epsilon, pi, sign, sin, sqrt} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {cylindricalEqualAreaRaw} from \"./cylindricalEqualArea.js\";\n\nexport function conicEqualAreaRaw(y0, y1) {\n  var sy0 = sin(y0), n = (sy0 + sin(y1)) / 2;\n\n  // Are the parallels symmetrical around the Equator?\n  if (abs(n) < epsilon) return cylindricalEqualAreaRaw(y0);\n\n  var c = 1 + sy0 * (2 * n - sy0), r0 = sqrt(c) / n;\n\n  function project(x, y) {\n    var r = sqrt(c - 2 * n * sin(y)) / n;\n    return [r * sin(x *= n), r0 - r * cos(x)];\n  }\n\n  project.invert = function(x, y) {\n    var r0y = r0 - y,\n        l = atan2(x, abs(r0y)) * sign(r0y);\n    if (r0y * n < 0)\n      l -= pi * sign(x) * sign(r0y);\n    return [l / n, asin((c - (x * x + r0y * r0y) * n * n) / (2 * n))];\n  };\n\n  return project;\n}\n\nexport default function() {\n  return conicProjection(conicEqualAreaRaw)\n      .scale(155.424)\n      .center([0, 33.6442]);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-geo/src/projection/conicEqualArea.js\n// module id = null\n// module chunks = ","import conicEqualArea from \"./conicEqualArea.js\";\n\nexport default function() {\n  return conicEqualArea()\n      .parallels([29.5, 45.5])\n      .scale(1070)\n      .translate([480, 250])\n      .rotate([96, 0])\n      .center([-0.6, 38.7]);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-geo/src/projection/albers.js\n// module id = null\n// module chunks = ","import {epsilon} from \"../math.js\";\nimport albers from \"./albers.js\";\nimport conicEqualArea from \"./conicEqualArea.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\n\n// The projections must have mutually exclusive clip regions on the sphere,\n// as this will avoid emitting interleaving lines and polygons.\nfunction multiplex(streams) {\n  var n = streams.length;\n  return {\n    point: function(x, y) { var i = -1; while (++i < n) streams[i].point(x, y); },\n    sphere: function() { var i = -1; while (++i < n) streams[i].sphere(); },\n    lineStart: function() { var i = -1; while (++i < n) streams[i].lineStart(); },\n    lineEnd: function() { var i = -1; while (++i < n) streams[i].lineEnd(); },\n    polygonStart: function() { var i = -1; while (++i < n) streams[i].polygonStart(); },\n    polygonEnd: function() { var i = -1; while (++i < n) streams[i].polygonEnd(); }\n  };\n}\n\n// A composite projection for the United States, configured by default for\n// 960×500. The projection also works quite well at 960×600 if you change the\n// scale to 1285 and adjust the translate accordingly. The set of standard\n// parallels for each region comes from USGS, which is published here:\n// http://egsc.usgs.gov/isb/pubs/MapProjections/projections.html#albers\nexport default function() {\n  var cache,\n      cacheStream,\n      lower48 = albers(), lower48Point,\n      alaska = conicEqualArea().rotate([154, 0]).center([-2, 58.5]).parallels([55, 65]), alaskaPoint, // EPSG:3338\n      hawaii = conicEqualArea().rotate([157, 0]).center([-3, 19.9]).parallels([8, 18]), hawaiiPoint, // ESRI:102007\n      point, pointStream = {point: function(x, y) { point = [x, y]; }};\n\n  function albersUsa(coordinates) {\n    var x = coordinates[0], y = coordinates[1];\n    return point = null,\n        (lower48Point.point(x, y), point)\n        || (alaskaPoint.point(x, y), point)\n        || (hawaiiPoint.point(x, y), point);\n  }\n\n  albersUsa.invert = function(coordinates) {\n    var k = lower48.scale(),\n        t = lower48.translate(),\n        x = (coordinates[0] - t[0]) / k,\n        y = (coordinates[1] - t[1]) / k;\n    return (y >= 0.120 && y < 0.234 && x >= -0.425 && x < -0.214 ? alaska\n        : y >= 0.166 && y < 0.234 && x >= -0.214 && x < -0.115 ? hawaii\n        : lower48).invert(coordinates);\n  };\n\n  albersUsa.stream = function(stream) {\n    return cache && cacheStream === stream ? cache : cache = multiplex([lower48.stream(cacheStream = stream), alaska.stream(stream), hawaii.stream(stream)]);\n  };\n\n  albersUsa.precision = function(_) {\n    if (!arguments.length) return lower48.precision();\n    lower48.precision(_), alaska.precision(_), hawaii.precision(_);\n    return reset();\n  };\n\n  albersUsa.scale = function(_) {\n    if (!arguments.length) return lower48.scale();\n    lower48.scale(_), alaska.scale(_ * 0.35), hawaii.scale(_);\n    return albersUsa.translate(lower48.translate());\n  };\n\n  albersUsa.translate = function(_) {\n    if (!arguments.length) return lower48.translate();\n    var k = lower48.scale(), x = +_[0], y = +_[1];\n\n    lower48Point = lower48\n        .translate(_)\n        .clipExtent([[x - 0.455 * k, y - 0.238 * k], [x + 0.455 * k, y + 0.238 * k]])\n        .stream(pointStream);\n\n    alaskaPoint = alaska\n        .translate([x - 0.307 * k, y + 0.201 * k])\n        .clipExtent([[x - 0.425 * k + epsilon, y + 0.120 * k + epsilon], [x - 0.214 * k - epsilon, y + 0.234 * k - epsilon]])\n        .stream(pointStream);\n\n    hawaiiPoint = hawaii\n        .translate([x - 0.205 * k, y + 0.212 * k])\n        .clipExtent([[x - 0.214 * k + epsilon, y + 0.166 * k + epsilon], [x - 0.115 * k - epsilon, y + 0.234 * k - epsilon]])\n        .stream(pointStream);\n\n    return reset();\n  };\n\n  albersUsa.fitExtent = function(extent, object) {\n    return fitExtent(albersUsa, extent, object);\n  };\n\n  albersUsa.fitSize = function(size, object) {\n    return fitSize(albersUsa, size, object);\n  };\n\n  albersUsa.fitWidth = function(width, object) {\n    return fitWidth(albersUsa, width, object);\n  };\n\n  albersUsa.fitHeight = function(height, object) {\n    return fitHeight(albersUsa, height, object);\n  };\n\n  function reset() {\n    cache = cacheStream = null;\n    return albersUsa;\n  }\n\n  return albersUsa.scale(1070);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-geo/src/projection/albersUsa.js\n// module id = null\n// module chunks = ","import {asin, atan2, cos, sin, sqrt} from \"../math.js\";\n\nexport function azimuthalRaw(scale) {\n  return function(x, y) {\n    var cx = cos(x),\n        cy = cos(y),\n        k = scale(cx * cy);\n    return [\n      k * cy * sin(x),\n      k * sin(y)\n    ];\n  }\n}\n\nexport function azimuthalInvert(angle) {\n  return function(x, y) {\n    var z = sqrt(x * x + y * y),\n        c = angle(z),\n        sc = sin(c),\n        cc = cos(c);\n    return [\n      atan2(x * sc, z * cc),\n      asin(z && y * sc / z)\n    ];\n  }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-geo/src/projection/azimuthal.js\n// module id = null\n// module chunks = ","import {asin, sqrt} from \"../math.js\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport var azimuthalEqualAreaRaw = azimuthalRaw(function(cxcy) {\n  return sqrt(2 / (1 + cxcy));\n});\n\nazimuthalEqualAreaRaw.invert = azimuthalInvert(function(z) {\n  return 2 * asin(z / 2);\n});\n\nexport default function() {\n  return projection(azimuthalEqualAreaRaw)\n      .scale(124.75)\n      .clipAngle(180 - 1e-3);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-geo/src/projection/azimuthalEqualArea.js\n// module id = null\n// module chunks = ","import {acos, sin} from \"../math.js\";\nimport {azimuthalRaw, azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport var azimuthalEquidistantRaw = azimuthalRaw(function(c) {\n  return (c = acos(c)) && c / sin(c);\n});\n\nazimuthalEquidistantRaw.invert = azimuthalInvert(function(z) {\n  return z;\n});\n\nexport default function() {\n  return projection(azimuthalEquidistantRaw)\n      .scale(79.4188)\n      .clipAngle(180 - 1e-3);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-geo/src/projection/azimuthalEquidistant.js\n// module id = null\n// module chunks = ","import {atan, exp, halfPi, log, pi, tan, tau} from \"../math.js\";\nimport rotation from \"../rotation.js\";\nimport projection from \"./index.js\";\n\nexport function mercatorRaw(lambda, phi) {\n  return [lambda, log(tan((halfPi + phi) / 2))];\n}\n\nmercatorRaw.invert = function(x, y) {\n  return [x, 2 * atan(exp(y)) - halfPi];\n};\n\nexport default function() {\n  return mercatorProjection(mercatorRaw)\n      .scale(961 / tau);\n}\n\nexport function mercatorProjection(project) {\n  var m = projection(project),\n      center = m.center,\n      scale = m.scale,\n      translate = m.translate,\n      clipExtent = m.clipExtent,\n      x0 = null, y0, x1, y1; // clip extent\n\n  m.scale = function(_) {\n    return arguments.length ? (scale(_), reclip()) : scale();\n  };\n\n  m.translate = function(_) {\n    return arguments.length ? (translate(_), reclip()) : translate();\n  };\n\n  m.center = function(_) {\n    return arguments.length ? (center(_), reclip()) : center();\n  };\n\n  m.clipExtent = function(_) {\n    return arguments.length ? ((_ == null ? x0 = y0 = x1 = y1 = null : (x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1])), reclip()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n  };\n\n  function reclip() {\n    var k = pi * scale(),\n        t = m(rotation(m.rotate()).invert([0, 0]));\n    return clipExtent(x0 == null\n        ? [[t[0] - k, t[1] - k], [t[0] + k, t[1] + k]] : project === mercatorRaw\n        ? [[Math.max(t[0] - k, x0), y0], [Math.min(t[0] + k, x1), y1]]\n        : [[x0, Math.max(t[1] - k, y0)], [x1, Math.min(t[1] + k, y1)]]);\n  }\n\n  return reclip();\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-geo/src/projection/mercator.js\n// module id = null\n// module chunks = ","import {abs, atan, atan2, cos, epsilon, halfPi, log, pi, pow, sign, sin, sqrt, tan} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {mercatorRaw} from \"./mercator.js\";\n\nfunction tany(y) {\n  return tan((halfPi + y) / 2);\n}\n\nexport function conicConformalRaw(y0, y1) {\n  var cy0 = cos(y0),\n      n = y0 === y1 ? sin(y0) : log(cy0 / cos(y1)) / log(tany(y1) / tany(y0)),\n      f = cy0 * pow(tany(y0), n) / n;\n\n  if (!n) return mercatorRaw;\n\n  function project(x, y) {\n    if (f > 0) { if (y < -halfPi + epsilon) y = -halfPi + epsilon; }\n    else { if (y > halfPi - epsilon) y = halfPi - epsilon; }\n    var r = f / pow(tany(y), n);\n    return [r * sin(n * x), f - r * cos(n * x)];\n  }\n\n  project.invert = function(x, y) {\n    var fy = f - y, r = sign(n) * sqrt(x * x + fy * fy),\n      l = atan2(x, abs(fy)) * sign(fy);\n    if (fy * n < 0)\n      l -= pi * sign(x) * sign(fy);\n    return [l / n, 2 * atan(pow(f / r, 1 / n)) - halfPi];\n  };\n\n  return project;\n}\n\nexport default function() {\n  return conicProjection(conicConformalRaw)\n      .scale(109.5)\n      .parallels([30, 30]);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-geo/src/projection/conicConformal.js\n// module id = null\n// module chunks = ","import projection from \"./index.js\";\n\nexport function equirectangularRaw(lambda, phi) {\n  return [lambda, phi];\n}\n\nequirectangularRaw.invert = equirectangularRaw;\n\nexport default function() {\n  return projection(equirectangularRaw)\n      .scale(152.63);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-geo/src/projection/equirectangular.js\n// module id = null\n// module chunks = ","import {abs, atan2, cos, epsilon, pi, sign, sin, sqrt} from \"../math.js\";\nimport {conicProjection} from \"./conic.js\";\nimport {equirectangularRaw} from \"./equirectangular.js\";\n\nexport function conicEquidistantRaw(y0, y1) {\n  var cy0 = cos(y0),\n      n = y0 === y1 ? sin(y0) : (cy0 - cos(y1)) / (y1 - y0),\n      g = cy0 / n + y0;\n\n  if (abs(n) < epsilon) return equirectangularRaw;\n\n  function project(x, y) {\n    var gy = g - y, nx = n * x;\n    return [gy * sin(nx), g - gy * cos(nx)];\n  }\n\n  project.invert = function(x, y) {\n    var gy = g - y,\n        l = atan2(x, abs(gy)) * sign(gy);\n    if (gy * n < 0)\n      l -= pi * sign(x) * sign(gy);\n    return [l / n, g - sign(n) * sqrt(x * x + gy * gy)];\n  };\n\n  return project;\n}\n\nexport default function() {\n  return conicProjection(conicEquidistantRaw)\n      .scale(131.154)\n      .center([0, 13.9389]);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-geo/src/projection/conicEquidistant.js\n// module id = null\n// module chunks = ","import projection from \"./index.js\";\nimport {abs, asin, cos, epsilon2, sin, sqrt} from \"../math.js\";\n\nvar A1 = 1.340264,\n    A2 = -0.081106,\n    A3 = 0.000893,\n    A4 = 0.003796,\n    M = sqrt(3) / 2,\n    iterations = 12;\n\nexport function equalEarthRaw(lambda, phi) {\n  var l = asin(M * sin(phi)), l2 = l * l, l6 = l2 * l2 * l2;\n  return [\n    lambda * cos(l) / (M * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2))),\n    l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2))\n  ];\n}\n\nequalEarthRaw.invert = function(x, y) {\n  var l = y, l2 = l * l, l6 = l2 * l2 * l2;\n  for (var i = 0, delta, fy, fpy; i < iterations; ++i) {\n    fy = l * (A1 + A2 * l2 + l6 * (A3 + A4 * l2)) - y;\n    fpy = A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2);\n    l -= delta = fy / fpy, l2 = l * l, l6 = l2 * l2 * l2;\n    if (abs(delta) < epsilon2) break;\n  }\n  return [\n    M * x * (A1 + 3 * A2 * l2 + l6 * (7 * A3 + 9 * A4 * l2)) / cos(l),\n    asin(sin(l) / M)\n  ];\n};\n\nexport default function() {\n  return projection(equalEarthRaw)\n      .scale(177.158);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-geo/src/projection/equalEarth.js\n// module id = null\n// module chunks = ","import {atan, cos, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function gnomonicRaw(x, y) {\n  var cy = cos(y), k = cos(x) * cy;\n  return [cy * sin(x) / k, sin(y) / k];\n}\n\ngnomonicRaw.invert = azimuthalInvert(atan);\n\nexport default function() {\n  return projection(gnomonicRaw)\n      .scale(144.049)\n      .clipAngle(60);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-geo/src/projection/gnomonic.js\n// module id = null\n// module chunks = ","import clipRectangle from \"../clip/rectangle.js\";\nimport identity from \"../identity.js\";\nimport {transformer} from \"../transform.js\";\nimport {fitExtent, fitSize, fitWidth, fitHeight} from \"./fit.js\";\nimport {cos, degrees, radians, sin} from \"../math.js\";\n\nexport default function() {\n  var k = 1, tx = 0, ty = 0, sx = 1, sy = 1, // scale, translate and reflect\n      alpha = 0, ca, sa, // angle\n      x0 = null, y0, x1, y1, // clip extent\n      kx = 1, ky = 1,\n      transform = transformer({\n        point: function(x, y) {\n          var p = projection([x, y])\n          this.stream.point(p[0], p[1]);\n        }\n      }),\n      postclip = identity,\n      cache,\n      cacheStream;\n\n  function reset() {\n    kx = k * sx;\n    ky = k * sy;\n    cache = cacheStream = null;\n    return projection;\n  }\n\n  function projection (p) {\n    var x = p[0] * kx, y = p[1] * ky;\n    if (alpha) {\n      var t = y * ca - x * sa;\n      x = x * ca + y * sa;\n      y = t;\n    }    \n    return [x + tx, y + ty];\n  }\n  projection.invert = function(p) {\n    var x = p[0] - tx, y = p[1] - ty;\n    if (alpha) {\n      var t = y * ca + x * sa;\n      x = x * ca - y * sa;\n      y = t;\n    }\n    return [x / kx, y / ky];\n  };\n  projection.stream = function(stream) {\n    return cache && cacheStream === stream ? cache : cache = transform(postclip(cacheStream = stream));\n  };\n  projection.postclip = function(_) {\n    return arguments.length ? (postclip = _, x0 = y0 = x1 = y1 = null, reset()) : postclip;\n  };\n  projection.clipExtent = function(_) {\n    return arguments.length ? (postclip = _ == null ? (x0 = y0 = x1 = y1 = null, identity) : clipRectangle(x0 = +_[0][0], y0 = +_[0][1], x1 = +_[1][0], y1 = +_[1][1]), reset()) : x0 == null ? null : [[x0, y0], [x1, y1]];\n  };\n  projection.scale = function(_) {\n    return arguments.length ? (k = +_, reset()) : k;\n  };\n  projection.translate = function(_) {\n    return arguments.length ? (tx = +_[0], ty = +_[1], reset()) : [tx, ty];\n  }\n  projection.angle = function(_) {\n    return arguments.length ? (alpha = _ % 360 * radians, sa = sin(alpha), ca = cos(alpha), reset()) : alpha * degrees;\n  };\n  projection.reflectX = function(_) {\n    return arguments.length ? (sx = _ ? -1 : 1, reset()) : sx < 0;\n  };\n  projection.reflectY = function(_) {\n    return arguments.length ? (sy = _ ? -1 : 1, reset()) : sy < 0;\n  };\n  projection.fitExtent = function(extent, object) {\n    return fitExtent(projection, extent, object);\n  };\n  projection.fitSize = function(size, object) {\n    return fitSize(projection, size, object);\n  };\n  projection.fitWidth = function(width, object) {\n    return fitWidth(projection, width, object);\n  };\n  projection.fitHeight = function(height, object) {\n    return fitHeight(projection, height, object);\n  };\n\n  return projection;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-geo/src/projection/identity.js\n// module id = null\n// module chunks = ","import projection from \"./index.js\";\nimport {abs, epsilon} from \"../math.js\";\n\nexport function naturalEarth1Raw(lambda, phi) {\n  var phi2 = phi * phi, phi4 = phi2 * phi2;\n  return [\n    lambda * (0.8707 - 0.131979 * phi2 + phi4 * (-0.013791 + phi4 * (0.003971 * phi2 - 0.001529 * phi4))),\n    phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4)))\n  ];\n}\n\nnaturalEarth1Raw.invert = function(x, y) {\n  var phi = y, i = 25, delta;\n  do {\n    var phi2 = phi * phi, phi4 = phi2 * phi2;\n    phi -= delta = (phi * (1.007226 + phi2 * (0.015085 + phi4 * (-0.044475 + 0.028874 * phi2 - 0.005916 * phi4))) - y) /\n        (1.007226 + phi2 * (0.015085 * 3 + phi4 * (-0.044475 * 7 + 0.028874 * 9 * phi2 - 0.005916 * 11 * phi4)));\n  } while (abs(delta) > epsilon && --i > 0);\n  return [\n    x / (0.8707 + (phi2 = phi * phi) * (-0.131979 + phi2 * (-0.013791 + phi2 * phi2 * phi2 * (0.003971 - 0.001529 * phi2)))),\n    phi\n  ];\n};\n\nexport default function() {\n  return projection(naturalEarth1Raw)\n      .scale(175.295);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-geo/src/projection/naturalEarth1.js\n// module id = null\n// module chunks = ","import {asin, cos, epsilon, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function orthographicRaw(x, y) {\n  return [cos(y) * sin(x), sin(y)];\n}\n\northographicRaw.invert = azimuthalInvert(asin);\n\nexport default function() {\n  return projection(orthographicRaw)\n      .scale(249.5)\n      .clipAngle(90 + epsilon);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-geo/src/projection/orthographic.js\n// module id = null\n// module chunks = ","import {atan, cos, sin} from \"../math.js\";\nimport {azimuthalInvert} from \"./azimuthal.js\";\nimport projection from \"./index.js\";\n\nexport function stereographicRaw(x, y) {\n  var cy = cos(y), k = 1 + cos(x) * cy;\n  return [cy * sin(x) / k, sin(y) / k];\n}\n\nstereographicRaw.invert = azimuthalInvert(function(z) {\n  return 2 * atan(z);\n});\n\nexport default function() {\n  return projection(stereographicRaw)\n      .scale(250)\n      .clipAngle(142);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-geo/src/projection/stereographic.js\n// module id = null\n// module chunks = ","import {atan, exp, halfPi, log, tan} from \"../math.js\";\nimport {mercatorProjection} from \"./mercator.js\";\n\nexport function transverseMercatorRaw(lambda, phi) {\n  return [log(tan((halfPi + phi) / 2)), -lambda];\n}\n\ntransverseMercatorRaw.invert = function(x, y) {\n  return [-y, 2 * atan(exp(x)) - halfPi];\n};\n\nexport default function() {\n  var m = mercatorProjection(transverseMercatorRaw),\n      center = m.center,\n      rotate = m.rotate;\n\n  m.center = function(_) {\n    return arguments.length ? center([-_[1], _[0]]) : (_ = center(), [_[1], -_[0]]);\n  };\n\n  m.rotate = function(_) {\n    return arguments.length ? rotate([_[0], _[1], _.length > 2 ? _[2] + 90 : 90]) : (_ = rotate(), [_[0], _[1], _[2] - 90]);\n  };\n\n  return rotate([0, 0, 90])\n      .scale(159.155);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-geo/src/projection/transverseMercator.js\n// module id = null\n// module chunks = ","export {default as geoArea} from \"./area.js\";\nexport {default as geoBounds} from \"./bounds.js\";\nexport {default as geoCentroid} from \"./centroid.js\";\nexport {default as geoCircle} from \"./circle.js\";\nexport {default as geoClipAntimeridian} from \"./clip/antimeridian.js\";\nexport {default as geoClipCircle} from \"./clip/circle.js\";\nexport {default as geoClipExtent} from \"./clip/extent.js\"; // DEPRECATED! Use d3.geoIdentity().clipExtent(…).\nexport {default as geoClipRectangle} from \"./clip/rectangle.js\";\nexport {default as geoContains} from \"./contains.js\";\nexport {default as geoDistance} from \"./distance.js\";\nexport {default as geoGraticule, graticule10 as geoGraticule10} from \"./graticule.js\";\nexport {default as geoInterpolate} from \"./interpolate.js\";\nexport {default as geoLength} from \"./length.js\";\nexport {default as geoPath} from \"./path/index.js\";\nexport {default as geoAlbers} from \"./projection/albers.js\";\nexport {default as geoAlbersUsa} from \"./projection/albersUsa.js\";\nexport {default as geoAzimuthalEqualArea, azimuthalEqualAreaRaw as geoAzimuthalEqualAreaRaw} from \"./projection/azimuthalEqualArea.js\";\nexport {default as geoAzimuthalEquidistant, azimuthalEquidistantRaw as geoAzimuthalEquidistantRaw} from \"./projection/azimuthalEquidistant.js\";\nexport {default as geoConicConformal, conicConformalRaw as geoConicConformalRaw} from \"./projection/conicConformal.js\";\nexport {default as geoConicEqualArea, conicEqualAreaRaw as geoConicEqualAreaRaw} from \"./projection/conicEqualArea.js\";\nexport {default as geoConicEquidistant, conicEquidistantRaw as geoConicEquidistantRaw} from \"./projection/conicEquidistant.js\";\nexport {default as geoEqualEarth, equalEarthRaw as geoEqualEarthRaw} from \"./projection/equalEarth.js\";\nexport {default as geoEquirectangular, equirectangularRaw as geoEquirectangularRaw} from \"./projection/equirectangular.js\";\nexport {default as geoGnomonic, gnomonicRaw as geoGnomonicRaw} from \"./projection/gnomonic.js\";\nexport {default as geoIdentity} from \"./projection/identity.js\";\nexport {default as geoProjection, projectionMutator as geoProjectionMutator} from \"./projection/index.js\";\nexport {default as geoMercator, mercatorRaw as geoMercatorRaw} from \"./projection/mercator.js\";\nexport {default as geoNaturalEarth1, naturalEarth1Raw as geoNaturalEarth1Raw} from \"./projection/naturalEarth1.js\";\nexport {default as geoOrthographic, orthographicRaw as geoOrthographicRaw} from \"./projection/orthographic.js\";\nexport {default as geoStereographic, stereographicRaw as geoStereographicRaw} from \"./projection/stereographic.js\";\nexport {default as geoTransverseMercator, transverseMercatorRaw as geoTransverseMercatorRaw} from \"./projection/transverseMercator.js\";\nexport {default as geoRotation} from \"./rotation.js\";\nexport {default as geoStream} from \"./stream.js\";\nexport {default as geoTransform} from \"./transform.js\";\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-geo/src/index.js\n// module id = null\n// module chunks = ","function defaultSeparation(a, b) {\n  return a.parent === b.parent ? 1 : 2;\n}\n\nfunction meanX(children) {\n  return children.reduce(meanXReduce, 0) / children.length;\n}\n\nfunction meanXReduce(x, c) {\n  return x + c.x;\n}\n\nfunction maxY(children) {\n  return 1 + children.reduce(maxYReduce, 0);\n}\n\nfunction maxYReduce(y, c) {\n  return Math.max(y, c.y);\n}\n\nfunction leafLeft(node) {\n  var children;\n  while (children = node.children) node = children[0];\n  return node;\n}\n\nfunction leafRight(node) {\n  var children;\n  while (children = node.children) node = children[children.length - 1];\n  return node;\n}\n\nexport default function() {\n  var separation = defaultSeparation,\n      dx = 1,\n      dy = 1,\n      nodeSize = false;\n\n  function cluster(root) {\n    var previousNode,\n        x = 0;\n\n    // First walk, computing the initial x & y values.\n    root.eachAfter(function(node) {\n      var children = node.children;\n      if (children) {\n        node.x = meanX(children);\n        node.y = maxY(children);\n      } else {\n        node.x = previousNode ? x += separation(node, previousNode) : 0;\n        node.y = 0;\n        previousNode = node;\n      }\n    });\n\n    var left = leafLeft(root),\n        right = leafRight(root),\n        x0 = left.x - separation(left, right) / 2,\n        x1 = right.x + separation(right, left) / 2;\n\n    // Second walk, normalizing x & y to the desired size.\n    return root.eachAfter(nodeSize ? function(node) {\n      node.x = (node.x - root.x) * dx;\n      node.y = (root.y - node.y) * dy;\n    } : function(node) {\n      node.x = (node.x - x0) / (x1 - x0) * dx;\n      node.y = (1 - (root.y ? node.y / root.y : 1)) * dy;\n    });\n  }\n\n  cluster.separation = function(x) {\n    return arguments.length ? (separation = x, cluster) : separation;\n  };\n\n  cluster.size = function(x) {\n    return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? null : [dx, dy]);\n  };\n\n  cluster.nodeSize = function(x) {\n    return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], cluster) : (nodeSize ? [dx, dy] : null);\n  };\n\n  return cluster;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-hierarchy/src/cluster.js\n// module id = null\n// module chunks = ","function count(node) {\n  var sum = 0,\n      children = node.children,\n      i = children && children.length;\n  if (!i) sum = 1;\n  else while (--i >= 0) sum += children[i].value;\n  node.value = sum;\n}\n\nexport default function() {\n  return this.eachAfter(count);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-hierarchy/src/hierarchy/count.js\n// module id = null\n// module chunks = ","export default function(callback) {\n  var node = this, current, next = [node], children, i, n;\n  do {\n    current = next.reverse(), next = [];\n    while (node = current.pop()) {\n      callback(node), children = node.children;\n      if (children) for (i = 0, n = children.length; i < n; ++i) {\n        next.push(children[i]);\n      }\n    }\n  } while (next.length);\n  return this;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-hierarchy/src/hierarchy/each.js\n// module id = null\n// module chunks = ","export default function(callback) {\n  var node = this, nodes = [node], children, i;\n  while (node = nodes.pop()) {\n    callback(node), children = node.children;\n    if (children) for (i = children.length - 1; i >= 0; --i) {\n      nodes.push(children[i]);\n    }\n  }\n  return this;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-hierarchy/src/hierarchy/eachBefore.js\n// module id = null\n// module chunks = ","export default function(callback) {\n  var node = this, nodes = [node], next = [], children, i, n;\n  while (node = nodes.pop()) {\n    next.push(node), children = node.children;\n    if (children) for (i = 0, n = children.length; i < n; ++i) {\n      nodes.push(children[i]);\n    }\n  }\n  while (node = next.pop()) {\n    callback(node);\n  }\n  return this;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-hierarchy/src/hierarchy/eachAfter.js\n// module id = null\n// module chunks = ","export default function(value) {\n  return this.eachAfter(function(node) {\n    var sum = +value(node.data) || 0,\n        children = node.children,\n        i = children && children.length;\n    while (--i >= 0) sum += children[i].value;\n    node.value = sum;\n  });\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-hierarchy/src/hierarchy/sum.js\n// module id = null\n// module chunks = ","export default function(compare) {\n  return this.eachBefore(function(node) {\n    if (node.children) {\n      node.children.sort(compare);\n    }\n  });\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-hierarchy/src/hierarchy/sort.js\n// module id = null\n// module chunks = ","export default function(end) {\n  var start = this,\n      ancestor = leastCommonAncestor(start, end),\n      nodes = [start];\n  while (start !== ancestor) {\n    start = start.parent;\n    nodes.push(start);\n  }\n  var k = nodes.length;\n  while (end !== ancestor) {\n    nodes.splice(k, 0, end);\n    end = end.parent;\n  }\n  return nodes;\n}\n\nfunction leastCommonAncestor(a, b) {\n  if (a === b) return a;\n  var aNodes = a.ancestors(),\n      bNodes = b.ancestors(),\n      c = null;\n  a = aNodes.pop();\n  b = bNodes.pop();\n  while (a === b) {\n    c = a;\n    a = aNodes.pop();\n    b = bNodes.pop();\n  }\n  return c;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-hierarchy/src/hierarchy/path.js\n// module id = null\n// module chunks = ","export default function() {\n  var node = this, nodes = [node];\n  while (node = node.parent) {\n    nodes.push(node);\n  }\n  return nodes;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-hierarchy/src/hierarchy/ancestors.js\n// module id = null\n// module chunks = ","export default function() {\n  var nodes = [];\n  this.each(function(node) {\n    nodes.push(node);\n  });\n  return nodes;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-hierarchy/src/hierarchy/descendants.js\n// module id = null\n// module chunks = ","export default function() {\n  var leaves = [];\n  this.eachBefore(function(node) {\n    if (!node.children) {\n      leaves.push(node);\n    }\n  });\n  return leaves;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-hierarchy/src/hierarchy/leaves.js\n// module id = null\n// module chunks = ","export default function() {\n  var root = this, links = [];\n  root.each(function(node) {\n    if (node !== root) { // Don’t include the root’s parent, if any.\n      links.push({source: node.parent, target: node});\n    }\n  });\n  return links;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-hierarchy/src/hierarchy/links.js\n// module id = null\n// module chunks = ","import node_count from \"./count.js\";\nimport node_each from \"./each.js\";\nimport node_eachBefore from \"./eachBefore.js\";\nimport node_eachAfter from \"./eachAfter.js\";\nimport node_sum from \"./sum.js\";\nimport node_sort from \"./sort.js\";\nimport node_path from \"./path.js\";\nimport node_ancestors from \"./ancestors.js\";\nimport node_descendants from \"./descendants.js\";\nimport node_leaves from \"./leaves.js\";\nimport node_links from \"./links.js\";\n\nexport default function hierarchy(data, children) {\n  var root = new Node(data),\n      valued = +data.value && (root.value = data.value),\n      node,\n      nodes = [root],\n      child,\n      childs,\n      i,\n      n;\n\n  if (children == null) children = defaultChildren;\n\n  while (node = nodes.pop()) {\n    if (valued) node.value = +node.data.value;\n    if ((childs = children(node.data)) && (n = childs.length)) {\n      node.children = new Array(n);\n      for (i = n - 1; i >= 0; --i) {\n        nodes.push(child = node.children[i] = new Node(childs[i]));\n        child.parent = node;\n        child.depth = node.depth + 1;\n      }\n    }\n  }\n\n  return root.eachBefore(computeHeight);\n}\n\nfunction node_copy() {\n  return hierarchy(this).eachBefore(copyData);\n}\n\nfunction defaultChildren(d) {\n  return d.children;\n}\n\nfunction copyData(node) {\n  node.data = node.data.data;\n}\n\nexport function computeHeight(node) {\n  var height = 0;\n  do node.height = height;\n  while ((node = node.parent) && (node.height < ++height));\n}\n\nexport function Node(data) {\n  this.data = data;\n  this.depth =\n  this.height = 0;\n  this.parent = null;\n}\n\nNode.prototype = hierarchy.prototype = {\n  constructor: Node,\n  count: node_count,\n  each: node_each,\n  eachAfter: node_eachAfter,\n  eachBefore: node_eachBefore,\n  sum: node_sum,\n  sort: node_sort,\n  path: node_path,\n  ancestors: node_ancestors,\n  descendants: node_descendants,\n  leaves: node_leaves,\n  links: node_links,\n  copy: node_copy\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-hierarchy/src/hierarchy/index.js\n// module id = null\n// module chunks = ","export var slice = Array.prototype.slice;\n\nexport function shuffle(array) {\n  var m = array.length,\n      t,\n      i;\n\n  while (m) {\n    i = Math.random() * m-- | 0;\n    t = array[m];\n    array[m] = array[i];\n    array[i] = t;\n  }\n\n  return array;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-hierarchy/src/array.js\n// module id = null\n// module chunks = ","import {shuffle, slice} from \"../array.js\";\n\nexport default function(circles) {\n  var i = 0, n = (circles = shuffle(slice.call(circles))).length, B = [], p, e;\n\n  while (i < n) {\n    p = circles[i];\n    if (e && enclosesWeak(e, p)) ++i;\n    else e = encloseBasis(B = extendBasis(B, p)), i = 0;\n  }\n\n  return e;\n}\n\nfunction extendBasis(B, p) {\n  var i, j;\n\n  if (enclosesWeakAll(p, B)) return [p];\n\n  // If we get here then B must have at least one element.\n  for (i = 0; i < B.length; ++i) {\n    if (enclosesNot(p, B[i])\n        && enclosesWeakAll(encloseBasis2(B[i], p), B)) {\n      return [B[i], p];\n    }\n  }\n\n  // If we get here then B must have at least two elements.\n  for (i = 0; i < B.length - 1; ++i) {\n    for (j = i + 1; j < B.length; ++j) {\n      if (enclosesNot(encloseBasis2(B[i], B[j]), p)\n          && enclosesNot(encloseBasis2(B[i], p), B[j])\n          && enclosesNot(encloseBasis2(B[j], p), B[i])\n          && enclosesWeakAll(encloseBasis3(B[i], B[j], p), B)) {\n        return [B[i], B[j], p];\n      }\n    }\n  }\n\n  // If we get here then something is very wrong.\n  throw new Error;\n}\n\nfunction enclosesNot(a, b) {\n  var dr = a.r - b.r, dx = b.x - a.x, dy = b.y - a.y;\n  return dr < 0 || dr * dr < dx * dx + dy * dy;\n}\n\nfunction enclosesWeak(a, b) {\n  var dr = a.r - b.r + 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n  return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction enclosesWeakAll(a, B) {\n  for (var i = 0; i < B.length; ++i) {\n    if (!enclosesWeak(a, B[i])) {\n      return false;\n    }\n  }\n  return true;\n}\n\nfunction encloseBasis(B) {\n  switch (B.length) {\n    case 1: return encloseBasis1(B[0]);\n    case 2: return encloseBasis2(B[0], B[1]);\n    case 3: return encloseBasis3(B[0], B[1], B[2]);\n  }\n}\n\nfunction encloseBasis1(a) {\n  return {\n    x: a.x,\n    y: a.y,\n    r: a.r\n  };\n}\n\nfunction encloseBasis2(a, b) {\n  var x1 = a.x, y1 = a.y, r1 = a.r,\n      x2 = b.x, y2 = b.y, r2 = b.r,\n      x21 = x2 - x1, y21 = y2 - y1, r21 = r2 - r1,\n      l = Math.sqrt(x21 * x21 + y21 * y21);\n  return {\n    x: (x1 + x2 + x21 / l * r21) / 2,\n    y: (y1 + y2 + y21 / l * r21) / 2,\n    r: (l + r1 + r2) / 2\n  };\n}\n\nfunction encloseBasis3(a, b, c) {\n  var x1 = a.x, y1 = a.y, r1 = a.r,\n      x2 = b.x, y2 = b.y, r2 = b.r,\n      x3 = c.x, y3 = c.y, r3 = c.r,\n      a2 = x1 - x2,\n      a3 = x1 - x3,\n      b2 = y1 - y2,\n      b3 = y1 - y3,\n      c2 = r2 - r1,\n      c3 = r3 - r1,\n      d1 = x1 * x1 + y1 * y1 - r1 * r1,\n      d2 = d1 - x2 * x2 - y2 * y2 + r2 * r2,\n      d3 = d1 - x3 * x3 - y3 * y3 + r3 * r3,\n      ab = a3 * b2 - a2 * b3,\n      xa = (b2 * d3 - b3 * d2) / (ab * 2) - x1,\n      xb = (b3 * c2 - b2 * c3) / ab,\n      ya = (a3 * d2 - a2 * d3) / (ab * 2) - y1,\n      yb = (a2 * c3 - a3 * c2) / ab,\n      A = xb * xb + yb * yb - 1,\n      B = 2 * (r1 + xa * xb + ya * yb),\n      C = xa * xa + ya * ya - r1 * r1,\n      r = -(A ? (B + Math.sqrt(B * B - 4 * A * C)) / (2 * A) : C / B);\n  return {\n    x: x1 + xa + xb * r,\n    y: y1 + ya + yb * r,\n    r: r\n  };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-hierarchy/src/pack/enclose.js\n// module id = null\n// module chunks = ","import enclose from \"./enclose.js\";\n\nfunction place(b, a, c) {\n  var dx = b.x - a.x, x, a2,\n      dy = b.y - a.y, y, b2,\n      d2 = dx * dx + dy * dy;\n  if (d2) {\n    a2 = a.r + c.r, a2 *= a2;\n    b2 = b.r + c.r, b2 *= b2;\n    if (a2 > b2) {\n      x = (d2 + b2 - a2) / (2 * d2);\n      y = Math.sqrt(Math.max(0, b2 / d2 - x * x));\n      c.x = b.x - x * dx - y * dy;\n      c.y = b.y - x * dy + y * dx;\n    } else {\n      x = (d2 + a2 - b2) / (2 * d2);\n      y = Math.sqrt(Math.max(0, a2 / d2 - x * x));\n      c.x = a.x + x * dx - y * dy;\n      c.y = a.y + x * dy + y * dx;\n    }\n  } else {\n    c.x = a.x + c.r;\n    c.y = a.y;\n  }\n}\n\nfunction intersects(a, b) {\n  var dr = a.r + b.r - 1e-6, dx = b.x - a.x, dy = b.y - a.y;\n  return dr > 0 && dr * dr > dx * dx + dy * dy;\n}\n\nfunction score(node) {\n  var a = node._,\n      b = node.next._,\n      ab = a.r + b.r,\n      dx = (a.x * b.r + b.x * a.r) / ab,\n      dy = (a.y * b.r + b.y * a.r) / ab;\n  return dx * dx + dy * dy;\n}\n\nfunction Node(circle) {\n  this._ = circle;\n  this.next = null;\n  this.previous = null;\n}\n\nexport function packEnclose(circles) {\n  if (!(n = circles.length)) return 0;\n\n  var a, b, c, n, aa, ca, i, j, k, sj, sk;\n\n  // Place the first circle.\n  a = circles[0], a.x = 0, a.y = 0;\n  if (!(n > 1)) return a.r;\n\n  // Place the second circle.\n  b = circles[1], a.x = -b.r, b.x = a.r, b.y = 0;\n  if (!(n > 2)) return a.r + b.r;\n\n  // Place the third circle.\n  place(b, a, c = circles[2]);\n\n  // Initialize the front-chain using the first three circles a, b and c.\n  a = new Node(a), b = new Node(b), c = new Node(c);\n  a.next = c.previous = b;\n  b.next = a.previous = c;\n  c.next = b.previous = a;\n\n  // Attempt to place each remaining circle…\n  pack: for (i = 3; i < n; ++i) {\n    place(a._, b._, c = circles[i]), c = new Node(c);\n\n    // Find the closest intersecting circle on the front-chain, if any.\n    // “Closeness” is determined by linear distance along the front-chain.\n    // “Ahead” or “behind” is likewise determined by linear distance.\n    j = b.next, k = a.previous, sj = b._.r, sk = a._.r;\n    do {\n      if (sj <= sk) {\n        if (intersects(j._, c._)) {\n          b = j, a.next = b, b.previous = a, --i;\n          continue pack;\n        }\n        sj += j._.r, j = j.next;\n      } else {\n        if (intersects(k._, c._)) {\n          a = k, a.next = b, b.previous = a, --i;\n          continue pack;\n        }\n        sk += k._.r, k = k.previous;\n      }\n    } while (j !== k.next);\n\n    // Success! Insert the new circle c between a and b.\n    c.previous = a, c.next = b, a.next = b.previous = b = c;\n\n    // Compute the new closest circle pair to the centroid.\n    aa = score(a);\n    while ((c = c.next) !== b) {\n      if ((ca = score(c)) < aa) {\n        a = c, aa = ca;\n      }\n    }\n    b = a.next;\n  }\n\n  // Compute the enclosing circle of the front chain.\n  a = [b._], c = b; while ((c = c.next) !== b) a.push(c._); c = enclose(a);\n\n  // Translate the circles to put the enclosing circle around the origin.\n  for (i = 0; i < n; ++i) a = circles[i], a.x -= c.x, a.y -= c.y;\n\n  return c.r;\n}\n\nexport default function(circles) {\n  packEnclose(circles);\n  return circles;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-hierarchy/src/pack/siblings.js\n// module id = null\n// module chunks = ","export function optional(f) {\n  return f == null ? null : required(f);\n}\n\nexport function required(f) {\n  if (typeof f !== \"function\") throw new Error;\n  return f;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-hierarchy/src/accessors.js\n// module id = null\n// module chunks = ","export function constantZero() {\n  return 0;\n}\n\nexport default function(x) {\n  return function() {\n    return x;\n  };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-hierarchy/src/constant.js\n// module id = null\n// module chunks = ","import {packEnclose} from \"./siblings.js\";\nimport {optional} from \"../accessors.js\";\nimport constant, {constantZero} from \"../constant.js\";\n\nfunction defaultRadius(d) {\n  return Math.sqrt(d.value);\n}\n\nexport default function() {\n  var radius = null,\n      dx = 1,\n      dy = 1,\n      padding = constantZero;\n\n  function pack(root) {\n    root.x = dx / 2, root.y = dy / 2;\n    if (radius) {\n      root.eachBefore(radiusLeaf(radius))\n          .eachAfter(packChildren(padding, 0.5))\n          .eachBefore(translateChild(1));\n    } else {\n      root.eachBefore(radiusLeaf(defaultRadius))\n          .eachAfter(packChildren(constantZero, 1))\n          .eachAfter(packChildren(padding, root.r / Math.min(dx, dy)))\n          .eachBefore(translateChild(Math.min(dx, dy) / (2 * root.r)));\n    }\n    return root;\n  }\n\n  pack.radius = function(x) {\n    return arguments.length ? (radius = optional(x), pack) : radius;\n  };\n\n  pack.size = function(x) {\n    return arguments.length ? (dx = +x[0], dy = +x[1], pack) : [dx, dy];\n  };\n\n  pack.padding = function(x) {\n    return arguments.length ? (padding = typeof x === \"function\" ? x : constant(+x), pack) : padding;\n  };\n\n  return pack;\n}\n\nfunction radiusLeaf(radius) {\n  return function(node) {\n    if (!node.children) {\n      node.r = Math.max(0, +radius(node) || 0);\n    }\n  };\n}\n\nfunction packChildren(padding, k) {\n  return function(node) {\n    if (children = node.children) {\n      var children,\n          i,\n          n = children.length,\n          r = padding(node) * k || 0,\n          e;\n\n      if (r) for (i = 0; i < n; ++i) children[i].r += r;\n      e = packEnclose(children);\n      if (r) for (i = 0; i < n; ++i) children[i].r -= r;\n      node.r = e + r;\n    }\n  };\n}\n\nfunction translateChild(k) {\n  return function(node) {\n    var parent = node.parent;\n    node.r *= k;\n    if (parent) {\n      node.x = parent.x + k * node.x;\n      node.y = parent.y + k * node.y;\n    }\n  };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-hierarchy/src/pack/index.js\n// module id = null\n// module chunks = ","export default function(node) {\n  node.x0 = Math.round(node.x0);\n  node.y0 = Math.round(node.y0);\n  node.x1 = Math.round(node.x1);\n  node.y1 = Math.round(node.y1);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-hierarchy/src/treemap/round.js\n// module id = null\n// module chunks = ","export default function(parent, x0, y0, x1, y1) {\n  var nodes = parent.children,\n      node,\n      i = -1,\n      n = nodes.length,\n      k = parent.value && (x1 - x0) / parent.value;\n\n  while (++i < n) {\n    node = nodes[i], node.y0 = y0, node.y1 = y1;\n    node.x0 = x0, node.x1 = x0 += node.value * k;\n  }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-hierarchy/src/treemap/dice.js\n// module id = null\n// module chunks = ","import roundNode from \"./treemap/round.js\";\nimport treemapDice from \"./treemap/dice.js\";\n\nexport default function() {\n  var dx = 1,\n      dy = 1,\n      padding = 0,\n      round = false;\n\n  function partition(root) {\n    var n = root.height + 1;\n    root.x0 =\n    root.y0 = padding;\n    root.x1 = dx;\n    root.y1 = dy / n;\n    root.eachBefore(positionNode(dy, n));\n    if (round) root.eachBefore(roundNode);\n    return root;\n  }\n\n  function positionNode(dy, n) {\n    return function(node) {\n      if (node.children) {\n        treemapDice(node, node.x0, dy * (node.depth + 1) / n, node.x1, dy * (node.depth + 2) / n);\n      }\n      var x0 = node.x0,\n          y0 = node.y0,\n          x1 = node.x1 - padding,\n          y1 = node.y1 - padding;\n      if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n      if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n      node.x0 = x0;\n      node.y0 = y0;\n      node.x1 = x1;\n      node.y1 = y1;\n    };\n  }\n\n  partition.round = function(x) {\n    return arguments.length ? (round = !!x, partition) : round;\n  };\n\n  partition.size = function(x) {\n    return arguments.length ? (dx = +x[0], dy = +x[1], partition) : [dx, dy];\n  };\n\n  partition.padding = function(x) {\n    return arguments.length ? (padding = +x, partition) : padding;\n  };\n\n  return partition;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-hierarchy/src/partition.js\n// module id = null\n// module chunks = ","import {required} from \"./accessors.js\";\nimport {Node, computeHeight} from \"./hierarchy/index.js\";\n\nvar keyPrefix = \"$\", // Protect against keys like “__proto__”.\n    preroot = {depth: -1},\n    ambiguous = {};\n\nfunction defaultId(d) {\n  return d.id;\n}\n\nfunction defaultParentId(d) {\n  return d.parentId;\n}\n\nexport default function() {\n  var id = defaultId,\n      parentId = defaultParentId;\n\n  function stratify(data) {\n    var d,\n        i,\n        n = data.length,\n        root,\n        parent,\n        node,\n        nodes = new Array(n),\n        nodeId,\n        nodeKey,\n        nodeByKey = {};\n\n    for (i = 0; i < n; ++i) {\n      d = data[i], node = nodes[i] = new Node(d);\n      if ((nodeId = id(d, i, data)) != null && (nodeId += \"\")) {\n        nodeKey = keyPrefix + (node.id = nodeId);\n        nodeByKey[nodeKey] = nodeKey in nodeByKey ? ambiguous : node;\n      }\n    }\n\n    for (i = 0; i < n; ++i) {\n      node = nodes[i], nodeId = parentId(data[i], i, data);\n      if (nodeId == null || !(nodeId += \"\")) {\n        if (root) throw new Error(\"multiple roots\");\n        root = node;\n      } else {\n        parent = nodeByKey[keyPrefix + nodeId];\n        if (!parent) throw new Error(\"missing: \" + nodeId);\n        if (parent === ambiguous) throw new Error(\"ambiguous: \" + nodeId);\n        if (parent.children) parent.children.push(node);\n        else parent.children = [node];\n        node.parent = parent;\n      }\n    }\n\n    if (!root) throw new Error(\"no root\");\n    root.parent = preroot;\n    root.eachBefore(function(node) { node.depth = node.parent.depth + 1; --n; }).eachBefore(computeHeight);\n    root.parent = null;\n    if (n > 0) throw new Error(\"cycle\");\n\n    return root;\n  }\n\n  stratify.id = function(x) {\n    return arguments.length ? (id = required(x), stratify) : id;\n  };\n\n  stratify.parentId = function(x) {\n    return arguments.length ? (parentId = required(x), stratify) : parentId;\n  };\n\n  return stratify;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-hierarchy/src/stratify.js\n// module id = null\n// module chunks = ","import {Node} from \"./hierarchy/index.js\";\n\nfunction defaultSeparation(a, b) {\n  return a.parent === b.parent ? 1 : 2;\n}\n\n// function radialSeparation(a, b) {\n//   return (a.parent === b.parent ? 1 : 2) / a.depth;\n// }\n\n// This function is used to traverse the left contour of a subtree (or\n// subforest). It returns the successor of v on this contour. This successor is\n// either given by the leftmost child of v or by the thread of v. The function\n// returns null if and only if v is on the highest level of its subtree.\nfunction nextLeft(v) {\n  var children = v.children;\n  return children ? children[0] : v.t;\n}\n\n// This function works analogously to nextLeft.\nfunction nextRight(v) {\n  var children = v.children;\n  return children ? children[children.length - 1] : v.t;\n}\n\n// Shifts the current subtree rooted at w+. This is done by increasing\n// prelim(w+) and mod(w+) by shift.\nfunction moveSubtree(wm, wp, shift) {\n  var change = shift / (wp.i - wm.i);\n  wp.c -= change;\n  wp.s += shift;\n  wm.c += change;\n  wp.z += shift;\n  wp.m += shift;\n}\n\n// All other shifts, applied to the smaller subtrees between w- and w+, are\n// performed by this function. To prepare the shifts, we have to adjust\n// change(w+), shift(w+), and change(w-).\nfunction executeShifts(v) {\n  var shift = 0,\n      change = 0,\n      children = v.children,\n      i = children.length,\n      w;\n  while (--i >= 0) {\n    w = children[i];\n    w.z += shift;\n    w.m += shift;\n    shift += w.s + (change += w.c);\n  }\n}\n\n// If vi-’s ancestor is a sibling of v, returns vi-’s ancestor. Otherwise,\n// returns the specified (default) ancestor.\nfunction nextAncestor(vim, v, ancestor) {\n  return vim.a.parent === v.parent ? vim.a : ancestor;\n}\n\nfunction TreeNode(node, i) {\n  this._ = node;\n  this.parent = null;\n  this.children = null;\n  this.A = null; // default ancestor\n  this.a = this; // ancestor\n  this.z = 0; // prelim\n  this.m = 0; // mod\n  this.c = 0; // change\n  this.s = 0; // shift\n  this.t = null; // thread\n  this.i = i; // number\n}\n\nTreeNode.prototype = Object.create(Node.prototype);\n\nfunction treeRoot(root) {\n  var tree = new TreeNode(root, 0),\n      node,\n      nodes = [tree],\n      child,\n      children,\n      i,\n      n;\n\n  while (node = nodes.pop()) {\n    if (children = node._.children) {\n      node.children = new Array(n = children.length);\n      for (i = n - 1; i >= 0; --i) {\n        nodes.push(child = node.children[i] = new TreeNode(children[i], i));\n        child.parent = node;\n      }\n    }\n  }\n\n  (tree.parent = new TreeNode(null, 0)).children = [tree];\n  return tree;\n}\n\n// Node-link tree diagram using the Reingold-Tilford \"tidy\" algorithm\nexport default function() {\n  var separation = defaultSeparation,\n      dx = 1,\n      dy = 1,\n      nodeSize = null;\n\n  function tree(root) {\n    var t = treeRoot(root);\n\n    // Compute the layout using Buchheim et al.’s algorithm.\n    t.eachAfter(firstWalk), t.parent.m = -t.z;\n    t.eachBefore(secondWalk);\n\n    // If a fixed node size is specified, scale x and y.\n    if (nodeSize) root.eachBefore(sizeNode);\n\n    // If a fixed tree size is specified, scale x and y based on the extent.\n    // Compute the left-most, right-most, and depth-most nodes for extents.\n    else {\n      var left = root,\n          right = root,\n          bottom = root;\n      root.eachBefore(function(node) {\n        if (node.x < left.x) left = node;\n        if (node.x > right.x) right = node;\n        if (node.depth > bottom.depth) bottom = node;\n      });\n      var s = left === right ? 1 : separation(left, right) / 2,\n          tx = s - left.x,\n          kx = dx / (right.x + s + tx),\n          ky = dy / (bottom.depth || 1);\n      root.eachBefore(function(node) {\n        node.x = (node.x + tx) * kx;\n        node.y = node.depth * ky;\n      });\n    }\n\n    return root;\n  }\n\n  // Computes a preliminary x-coordinate for v. Before that, FIRST WALK is\n  // applied recursively to the children of v, as well as the function\n  // APPORTION. After spacing out the children by calling EXECUTE SHIFTS, the\n  // node v is placed to the midpoint of its outermost children.\n  function firstWalk(v) {\n    var children = v.children,\n        siblings = v.parent.children,\n        w = v.i ? siblings[v.i - 1] : null;\n    if (children) {\n      executeShifts(v);\n      var midpoint = (children[0].z + children[children.length - 1].z) / 2;\n      if (w) {\n        v.z = w.z + separation(v._, w._);\n        v.m = v.z - midpoint;\n      } else {\n        v.z = midpoint;\n      }\n    } else if (w) {\n      v.z = w.z + separation(v._, w._);\n    }\n    v.parent.A = apportion(v, w, v.parent.A || siblings[0]);\n  }\n\n  // Computes all real x-coordinates by summing up the modifiers recursively.\n  function secondWalk(v) {\n    v._.x = v.z + v.parent.m;\n    v.m += v.parent.m;\n  }\n\n  // The core of the algorithm. Here, a new subtree is combined with the\n  // previous subtrees. Threads are used to traverse the inside and outside\n  // contours of the left and right subtree up to the highest common level. The\n  // vertices used for the traversals are vi+, vi-, vo-, and vo+, where the\n  // superscript o means outside and i means inside, the subscript - means left\n  // subtree and + means right subtree. For summing up the modifiers along the\n  // contour, we use respective variables si+, si-, so-, and so+. Whenever two\n  // nodes of the inside contours conflict, we compute the left one of the\n  // greatest uncommon ancestors using the function ANCESTOR and call MOVE\n  // SUBTREE to shift the subtree and prepare the shifts of smaller subtrees.\n  // Finally, we add a new thread (if necessary).\n  function apportion(v, w, ancestor) {\n    if (w) {\n      var vip = v,\n          vop = v,\n          vim = w,\n          vom = vip.parent.children[0],\n          sip = vip.m,\n          sop = vop.m,\n          sim = vim.m,\n          som = vom.m,\n          shift;\n      while (vim = nextRight(vim), vip = nextLeft(vip), vim && vip) {\n        vom = nextLeft(vom);\n        vop = nextRight(vop);\n        vop.a = v;\n        shift = vim.z + sim - vip.z - sip + separation(vim._, vip._);\n        if (shift > 0) {\n          moveSubtree(nextAncestor(vim, v, ancestor), v, shift);\n          sip += shift;\n          sop += shift;\n        }\n        sim += vim.m;\n        sip += vip.m;\n        som += vom.m;\n        sop += vop.m;\n      }\n      if (vim && !nextRight(vop)) {\n        vop.t = vim;\n        vop.m += sim - sop;\n      }\n      if (vip && !nextLeft(vom)) {\n        vom.t = vip;\n        vom.m += sip - som;\n        ancestor = v;\n      }\n    }\n    return ancestor;\n  }\n\n  function sizeNode(node) {\n    node.x *= dx;\n    node.y = node.depth * dy;\n  }\n\n  tree.separation = function(x) {\n    return arguments.length ? (separation = x, tree) : separation;\n  };\n\n  tree.size = function(x) {\n    return arguments.length ? (nodeSize = false, dx = +x[0], dy = +x[1], tree) : (nodeSize ? null : [dx, dy]);\n  };\n\n  tree.nodeSize = function(x) {\n    return arguments.length ? (nodeSize = true, dx = +x[0], dy = +x[1], tree) : (nodeSize ? [dx, dy] : null);\n  };\n\n  return tree;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-hierarchy/src/tree.js\n// module id = null\n// module chunks = ","export default function(parent, x0, y0, x1, y1) {\n  var nodes = parent.children,\n      node,\n      i = -1,\n      n = nodes.length,\n      k = parent.value && (y1 - y0) / parent.value;\n\n  while (++i < n) {\n    node = nodes[i], node.x0 = x0, node.x1 = x1;\n    node.y0 = y0, node.y1 = y0 += node.value * k;\n  }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-hierarchy/src/treemap/slice.js\n// module id = null\n// module chunks = ","import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\n\nexport var phi = (1 + Math.sqrt(5)) / 2;\n\nexport function squarifyRatio(ratio, parent, x0, y0, x1, y1) {\n  var rows = [],\n      nodes = parent.children,\n      row,\n      nodeValue,\n      i0 = 0,\n      i1 = 0,\n      n = nodes.length,\n      dx, dy,\n      value = parent.value,\n      sumValue,\n      minValue,\n      maxValue,\n      newRatio,\n      minRatio,\n      alpha,\n      beta;\n\n  while (i0 < n) {\n    dx = x1 - x0, dy = y1 - y0;\n\n    // Find the next non-empty node.\n    do sumValue = nodes[i1++].value; while (!sumValue && i1 < n);\n    minValue = maxValue = sumValue;\n    alpha = Math.max(dy / dx, dx / dy) / (value * ratio);\n    beta = sumValue * sumValue * alpha;\n    minRatio = Math.max(maxValue / beta, beta / minValue);\n\n    // Keep adding nodes while the aspect ratio maintains or improves.\n    for (; i1 < n; ++i1) {\n      sumValue += nodeValue = nodes[i1].value;\n      if (nodeValue < minValue) minValue = nodeValue;\n      if (nodeValue > maxValue) maxValue = nodeValue;\n      beta = sumValue * sumValue * alpha;\n      newRatio = Math.max(maxValue / beta, beta / minValue);\n      if (newRatio > minRatio) { sumValue -= nodeValue; break; }\n      minRatio = newRatio;\n    }\n\n    // Position and record the row orientation.\n    rows.push(row = {value: sumValue, dice: dx < dy, children: nodes.slice(i0, i1)});\n    if (row.dice) treemapDice(row, x0, y0, x1, value ? y0 += dy * sumValue / value : y1);\n    else treemapSlice(row, x0, y0, value ? x0 += dx * sumValue / value : x1, y1);\n    value -= sumValue, i0 = i1;\n  }\n\n  return rows;\n}\n\nexport default (function custom(ratio) {\n\n  function squarify(parent, x0, y0, x1, y1) {\n    squarifyRatio(ratio, parent, x0, y0, x1, y1);\n  }\n\n  squarify.ratio = function(x) {\n    return custom((x = +x) > 1 ? x : 1);\n  };\n\n  return squarify;\n})(phi);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-hierarchy/src/treemap/squarify.js\n// module id = null\n// module chunks = ","import roundNode from \"./round.js\";\nimport squarify from \"./squarify.js\";\nimport {required} from \"../accessors.js\";\nimport constant, {constantZero} from \"../constant.js\";\n\nexport default function() {\n  var tile = squarify,\n      round = false,\n      dx = 1,\n      dy = 1,\n      paddingStack = [0],\n      paddingInner = constantZero,\n      paddingTop = constantZero,\n      paddingRight = constantZero,\n      paddingBottom = constantZero,\n      paddingLeft = constantZero;\n\n  function treemap(root) {\n    root.x0 =\n    root.y0 = 0;\n    root.x1 = dx;\n    root.y1 = dy;\n    root.eachBefore(positionNode);\n    paddingStack = [0];\n    if (round) root.eachBefore(roundNode);\n    return root;\n  }\n\n  function positionNode(node) {\n    var p = paddingStack[node.depth],\n        x0 = node.x0 + p,\n        y0 = node.y0 + p,\n        x1 = node.x1 - p,\n        y1 = node.y1 - p;\n    if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n    if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n    node.x0 = x0;\n    node.y0 = y0;\n    node.x1 = x1;\n    node.y1 = y1;\n    if (node.children) {\n      p = paddingStack[node.depth + 1] = paddingInner(node) / 2;\n      x0 += paddingLeft(node) - p;\n      y0 += paddingTop(node) - p;\n      x1 -= paddingRight(node) - p;\n      y1 -= paddingBottom(node) - p;\n      if (x1 < x0) x0 = x1 = (x0 + x1) / 2;\n      if (y1 < y0) y0 = y1 = (y0 + y1) / 2;\n      tile(node, x0, y0, x1, y1);\n    }\n  }\n\n  treemap.round = function(x) {\n    return arguments.length ? (round = !!x, treemap) : round;\n  };\n\n  treemap.size = function(x) {\n    return arguments.length ? (dx = +x[0], dy = +x[1], treemap) : [dx, dy];\n  };\n\n  treemap.tile = function(x) {\n    return arguments.length ? (tile = required(x), treemap) : tile;\n  };\n\n  treemap.padding = function(x) {\n    return arguments.length ? treemap.paddingInner(x).paddingOuter(x) : treemap.paddingInner();\n  };\n\n  treemap.paddingInner = function(x) {\n    return arguments.length ? (paddingInner = typeof x === \"function\" ? x : constant(+x), treemap) : paddingInner;\n  };\n\n  treemap.paddingOuter = function(x) {\n    return arguments.length ? treemap.paddingTop(x).paddingRight(x).paddingBottom(x).paddingLeft(x) : treemap.paddingTop();\n  };\n\n  treemap.paddingTop = function(x) {\n    return arguments.length ? (paddingTop = typeof x === \"function\" ? x : constant(+x), treemap) : paddingTop;\n  };\n\n  treemap.paddingRight = function(x) {\n    return arguments.length ? (paddingRight = typeof x === \"function\" ? x : constant(+x), treemap) : paddingRight;\n  };\n\n  treemap.paddingBottom = function(x) {\n    return arguments.length ? (paddingBottom = typeof x === \"function\" ? x : constant(+x), treemap) : paddingBottom;\n  };\n\n  treemap.paddingLeft = function(x) {\n    return arguments.length ? (paddingLeft = typeof x === \"function\" ? x : constant(+x), treemap) : paddingLeft;\n  };\n\n  return treemap;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-hierarchy/src/treemap/index.js\n// module id = null\n// module chunks = ","export default function(parent, x0, y0, x1, y1) {\n  var nodes = parent.children,\n      i, n = nodes.length,\n      sum, sums = new Array(n + 1);\n\n  for (sums[0] = sum = i = 0; i < n; ++i) {\n    sums[i + 1] = sum += nodes[i].value;\n  }\n\n  partition(0, n, parent.value, x0, y0, x1, y1);\n\n  function partition(i, j, value, x0, y0, x1, y1) {\n    if (i >= j - 1) {\n      var node = nodes[i];\n      node.x0 = x0, node.y0 = y0;\n      node.x1 = x1, node.y1 = y1;\n      return;\n    }\n\n    var valueOffset = sums[i],\n        valueTarget = (value / 2) + valueOffset,\n        k = i + 1,\n        hi = j - 1;\n\n    while (k < hi) {\n      var mid = k + hi >>> 1;\n      if (sums[mid] < valueTarget) k = mid + 1;\n      else hi = mid;\n    }\n\n    if ((valueTarget - sums[k - 1]) < (sums[k] - valueTarget) && i + 1 < k) --k;\n\n    var valueLeft = sums[k] - valueOffset,\n        valueRight = value - valueLeft;\n\n    if ((x1 - x0) > (y1 - y0)) {\n      var xk = (x0 * valueRight + x1 * valueLeft) / value;\n      partition(i, k, valueLeft, x0, y0, xk, y1);\n      partition(k, j, valueRight, xk, y0, x1, y1);\n    } else {\n      var yk = (y0 * valueRight + y1 * valueLeft) / value;\n      partition(i, k, valueLeft, x0, y0, x1, yk);\n      partition(k, j, valueRight, x0, yk, x1, y1);\n    }\n  }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-hierarchy/src/treemap/binary.js\n// module id = null\n// module chunks = ","import dice from \"./dice.js\";\nimport slice from \"./slice.js\";\n\nexport default function(parent, x0, y0, x1, y1) {\n  (parent.depth & 1 ? slice : dice)(parent, x0, y0, x1, y1);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-hierarchy/src/treemap/sliceDice.js\n// module id = null\n// module chunks = ","import treemapDice from \"./dice.js\";\nimport treemapSlice from \"./slice.js\";\nimport {phi, squarifyRatio} from \"./squarify.js\";\n\nexport default (function custom(ratio) {\n\n  function resquarify(parent, x0, y0, x1, y1) {\n    if ((rows = parent._squarify) && (rows.ratio === ratio)) {\n      var rows,\n          row,\n          nodes,\n          i,\n          j = -1,\n          n,\n          m = rows.length,\n          value = parent.value;\n\n      while (++j < m) {\n        row = rows[j], nodes = row.children;\n        for (i = row.value = 0, n = nodes.length; i < n; ++i) row.value += nodes[i].value;\n        if (row.dice) treemapDice(row, x0, y0, x1, y0 += (y1 - y0) * row.value / value);\n        else treemapSlice(row, x0, y0, x0 += (x1 - x0) * row.value / value, y1);\n        value -= row.value;\n      }\n    } else {\n      parent._squarify = rows = squarifyRatio(ratio, parent, x0, y0, x1, y1);\n      rows.ratio = ratio;\n    }\n  }\n\n  resquarify.ratio = function(x) {\n    return custom((x = +x) > 1 ? x : 1);\n  };\n\n  return resquarify;\n})(phi);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-hierarchy/src/treemap/resquarify.js\n// module id = null\n// module chunks = ","export {default as cluster} from \"./cluster.js\";\nexport {default as hierarchy} from \"./hierarchy/index.js\";\nexport {default as pack} from \"./pack/index.js\";\nexport {default as packSiblings} from \"./pack/siblings.js\";\nexport {default as packEnclose} from \"./pack/enclose.js\";\nexport {default as partition} from \"./partition.js\";\nexport {default as stratify} from \"./stratify.js\";\nexport {default as tree} from \"./tree.js\";\nexport {default as treemap} from \"./treemap/index.js\";\nexport {default as treemapBinary} from \"./treemap/binary.js\";\nexport {default as treemapDice} from \"./treemap/dice.js\";\nexport {default as treemapSlice} from \"./treemap/slice.js\";\nexport {default as treemapSliceDice} from \"./treemap/sliceDice.js\";\nexport {default as treemapSquarify} from \"./treemap/squarify.js\";\nexport {default as treemapResquarify} from \"./treemap/resquarify.js\";\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-hierarchy/src/index.js\n// module id = null\n// module chunks = ","export default function(polygon) {\n  var i = -1,\n      n = polygon.length,\n      a,\n      b = polygon[n - 1],\n      area = 0;\n\n  while (++i < n) {\n    a = b;\n    b = polygon[i];\n    area += a[1] * b[0] - a[0] * b[1];\n  }\n\n  return area / 2;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-polygon/src/area.js\n// module id = null\n// module chunks = ","export default function(polygon) {\n  var i = -1,\n      n = polygon.length,\n      x = 0,\n      y = 0,\n      a,\n      b = polygon[n - 1],\n      c,\n      k = 0;\n\n  while (++i < n) {\n    a = b;\n    b = polygon[i];\n    k += c = a[0] * b[1] - b[0] * a[1];\n    x += (a[0] + b[0]) * c;\n    y += (a[1] + b[1]) * c;\n  }\n\n  return k *= 3, [x / k, y / k];\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-polygon/src/centroid.js\n// module id = null\n// module chunks = ","// Returns the 2D cross product of AB and AC vectors, i.e., the z-component of\n// the 3D cross product in a quadrant I Cartesian coordinate system (+x is\n// right, +y is up). Returns a positive value if ABC is counter-clockwise,\n// negative if clockwise, and zero if the points are collinear.\nexport default function(a, b, c) {\n  return (b[0] - a[0]) * (c[1] - a[1]) - (b[1] - a[1]) * (c[0] - a[0]);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-polygon/src/cross.js\n// module id = null\n// module chunks = ","import cross from \"./cross.js\";\n\nfunction lexicographicOrder(a, b) {\n  return a[0] - b[0] || a[1] - b[1];\n}\n\n// Computes the upper convex hull per the monotone chain algorithm.\n// Assumes points.length >= 3, is sorted by x, unique in y.\n// Returns an array of indices into points in left-to-right order.\nfunction computeUpperHullIndexes(points) {\n  var n = points.length,\n      indexes = [0, 1],\n      size = 2;\n\n  for (var i = 2; i < n; ++i) {\n    while (size > 1 && cross(points[indexes[size - 2]], points[indexes[size - 1]], points[i]) <= 0) --size;\n    indexes[size++] = i;\n  }\n\n  return indexes.slice(0, size); // remove popped points\n}\n\nexport default function(points) {\n  if ((n = points.length) < 3) return null;\n\n  var i,\n      n,\n      sortedPoints = new Array(n),\n      flippedPoints = new Array(n);\n\n  for (i = 0; i < n; ++i) sortedPoints[i] = [+points[i][0], +points[i][1], i];\n  sortedPoints.sort(lexicographicOrder);\n  for (i = 0; i < n; ++i) flippedPoints[i] = [sortedPoints[i][0], -sortedPoints[i][1]];\n\n  var upperIndexes = computeUpperHullIndexes(sortedPoints),\n      lowerIndexes = computeUpperHullIndexes(flippedPoints);\n\n  // Construct the hull polygon, removing possible duplicate endpoints.\n  var skipLeft = lowerIndexes[0] === upperIndexes[0],\n      skipRight = lowerIndexes[lowerIndexes.length - 1] === upperIndexes[upperIndexes.length - 1],\n      hull = [];\n\n  // Add upper hull in right-to-l order.\n  // Then add lower hull in left-to-right order.\n  for (i = upperIndexes.length - 1; i >= 0; --i) hull.push(points[sortedPoints[upperIndexes[i]][2]]);\n  for (i = +skipLeft; i < lowerIndexes.length - skipRight; ++i) hull.push(points[sortedPoints[lowerIndexes[i]][2]]);\n\n  return hull;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-polygon/src/hull.js\n// module id = null\n// module chunks = ","export default function(polygon, point) {\n  var n = polygon.length,\n      p = polygon[n - 1],\n      x = point[0], y = point[1],\n      x0 = p[0], y0 = p[1],\n      x1, y1,\n      inside = false;\n\n  for (var i = 0; i < n; ++i) {\n    p = polygon[i], x1 = p[0], y1 = p[1];\n    if (((y1 > y) !== (y0 > y)) && (x < (x0 - x1) * (y - y1) / (y0 - y1) + x1)) inside = !inside;\n    x0 = x1, y0 = y1;\n  }\n\n  return inside;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-polygon/src/contains.js\n// module id = null\n// module chunks = ","export default function(polygon) {\n  var i = -1,\n      n = polygon.length,\n      b = polygon[n - 1],\n      xa,\n      ya,\n      xb = b[0],\n      yb = b[1],\n      perimeter = 0;\n\n  while (++i < n) {\n    xa = xb;\n    ya = yb;\n    b = polygon[i];\n    xb = b[0];\n    yb = b[1];\n    xa -= xb;\n    ya -= yb;\n    perimeter += Math.sqrt(xa * xa + ya * ya);\n  }\n\n  return perimeter;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-polygon/src/length.js\n// module id = null\n// module chunks = ","export {default as polygonArea} from \"./area.js\";\nexport {default as polygonCentroid} from \"./centroid.js\";\nexport {default as polygonHull} from \"./hull.js\";\nexport {default as polygonContains} from \"./contains.js\";\nexport {default as polygonLength} from \"./length.js\";\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-polygon/src/index.js\n// module id = null\n// module chunks = ","export default function() {\n  return Math.random();\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-random/src/defaultSource.js\n// module id = null\n// module chunks = ","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomUniform(source) {\n  function randomUniform(min, max) {\n    min = min == null ? 0 : +min;\n    max = max == null ? 1 : +max;\n    if (arguments.length === 1) max = min, min = 0;\n    else max -= min;\n    return function() {\n      return source() * max + min;\n    };\n  }\n\n  randomUniform.source = sourceRandomUniform;\n\n  return randomUniform;\n})(defaultSource);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-random/src/uniform.js\n// module id = null\n// module chunks = ","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomNormal(source) {\n  function randomNormal(mu, sigma) {\n    var x, r;\n    mu = mu == null ? 0 : +mu;\n    sigma = sigma == null ? 1 : +sigma;\n    return function() {\n      var y;\n\n      // If available, use the second previously-generated uniform random.\n      if (x != null) y = x, x = null;\n\n      // Otherwise, generate a new x and y.\n      else do {\n        x = source() * 2 - 1;\n        y = source() * 2 - 1;\n        r = x * x + y * y;\n      } while (!r || r > 1);\n\n      return mu + sigma * y * Math.sqrt(-2 * Math.log(r) / r);\n    };\n  }\n\n  randomNormal.source = sourceRandomNormal;\n\n  return randomNormal;\n})(defaultSource);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-random/src/normal.js\n// module id = null\n// module chunks = ","import defaultSource from \"./defaultSource\";\nimport normal from \"./normal\";\n\nexport default (function sourceRandomLogNormal(source) {\n  function randomLogNormal() {\n    var randomNormal = normal.source(source).apply(this, arguments);\n    return function() {\n      return Math.exp(randomNormal());\n    };\n  }\n\n  randomLogNormal.source = sourceRandomLogNormal;\n\n  return randomLogNormal;\n})(defaultSource);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-random/src/logNormal.js\n// module id = null\n// module chunks = ","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomIrwinHall(source) {\n  function randomIrwinHall(n) {\n    return function() {\n      for (var sum = 0, i = 0; i < n; ++i) sum += source();\n      return sum;\n    };\n  }\n\n  randomIrwinHall.source = sourceRandomIrwinHall;\n\n  return randomIrwinHall;\n})(defaultSource);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-random/src/irwinHall.js\n// module id = null\n// module chunks = ","import defaultSource from \"./defaultSource\";\nimport irwinHall from \"./irwinHall\";\n\nexport default (function sourceRandomBates(source) {\n  function randomBates(n) {\n    var randomIrwinHall = irwinHall.source(source)(n);\n    return function() {\n      return randomIrwinHall() / n;\n    };\n  }\n\n  randomBates.source = sourceRandomBates;\n\n  return randomBates;\n})(defaultSource);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-random/src/bates.js\n// module id = null\n// module chunks = ","import defaultSource from \"./defaultSource\";\n\nexport default (function sourceRandomExponential(source) {\n  function randomExponential(lambda) {\n    return function() {\n      return -Math.log(1 - source()) / lambda;\n    };\n  }\n\n  randomExponential.source = sourceRandomExponential;\n\n  return randomExponential;\n})(defaultSource);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-random/src/exponential.js\n// module id = null\n// module chunks = ","export {default as randomUniform} from \"./uniform\";\nexport {default as randomNormal} from \"./normal\";\nexport {default as randomLogNormal} from \"./logNormal\";\nexport {default as randomBates} from \"./bates\";\nexport {default as randomIrwinHall} from \"./irwinHall\";\nexport {default as randomExponential} from \"./exponential\";\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-random/src/index.js\n// module id = null\n// module chunks = ","export default function(specifier) {\n  var n = specifier.length / 6 | 0, colors = new Array(n), i = 0;\n  while (i < n) colors[i] = \"#\" + specifier.slice(i * 6, ++i * 6);\n  return colors;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale-chromatic/src/colors.js\n// module id = null\n// module chunks = ","import colors from \"../colors.js\";\n\nexport default colors(\"1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf\");\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale-chromatic/src/categorical/category10.js\n// module id = null\n// module chunks = ","import colors from \"../colors.js\";\n\nexport default colors(\"7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666\");\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale-chromatic/src/categorical/Accent.js\n// module id = null\n// module chunks = ","import colors from \"../colors.js\";\n\nexport default colors(\"1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666\");\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale-chromatic/src/categorical/Dark2.js\n// module id = null\n// module chunks = ","import colors from \"../colors.js\";\n\nexport default colors(\"a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928\");\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale-chromatic/src/categorical/Paired.js\n// module id = null\n// module chunks = ","import colors from \"../colors.js\";\n\nexport default colors(\"fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2\");\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale-chromatic/src/categorical/Pastel1.js\n// module id = null\n// module chunks = ","import colors from \"../colors.js\";\n\nexport default colors(\"b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc\");\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale-chromatic/src/categorical/Pastel2.js\n// module id = null\n// module chunks = ","import colors from \"../colors.js\";\n\nexport default colors(\"e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999\");\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale-chromatic/src/categorical/Set1.js\n// module id = null\n// module chunks = ","import colors from \"../colors.js\";\n\nexport default colors(\"66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3\");\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale-chromatic/src/categorical/Set2.js\n// module id = null\n// module chunks = ","import colors from \"../colors.js\";\n\nexport default colors(\"8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f\");\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale-chromatic/src/categorical/Set3.js\n// module id = null\n// module chunks = ","import colors from \"../colors.js\";\n\nexport default colors(\"4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab\");\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale-chromatic/src/categorical/Tableau10.js\n// module id = null\n// module chunks = ","import {interpolateRgbBasis} from \"d3-interpolate\";\n\nexport default function(scheme) {\n  return interpolateRgbBasis(scheme[scheme.length - 1]);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale-chromatic/src/ramp.js\n// module id = null\n// module chunks = ","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"d8b365f5f5f55ab4ac\",\n  \"a6611adfc27d80cdc1018571\",\n  \"a6611adfc27df5f5f580cdc1018571\",\n  \"8c510ad8b365f6e8c3c7eae55ab4ac01665e\",\n  \"8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e\",\n  \"8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e\",\n  \"8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e\",\n  \"5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30\",\n  \"5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30\"\n).map(colors);\n\nexport default ramp(scheme);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale-chromatic/src/diverging/BrBG.js\n// module id = null\n// module chunks = ","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"af8dc3f7f7f77fbf7b\",\n  \"7b3294c2a5cfa6dba0008837\",\n  \"7b3294c2a5cff7f7f7a6dba0008837\",\n  \"762a83af8dc3e7d4e8d9f0d37fbf7b1b7837\",\n  \"762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837\",\n  \"762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837\",\n  \"762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837\",\n  \"40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b\",\n  \"40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b\"\n).map(colors);\n\nexport default ramp(scheme);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale-chromatic/src/diverging/PRGn.js\n// module id = null\n// module chunks = ","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"e9a3c9f7f7f7a1d76a\",\n  \"d01c8bf1b6dab8e1864dac26\",\n  \"d01c8bf1b6daf7f7f7b8e1864dac26\",\n  \"c51b7de9a3c9fde0efe6f5d0a1d76a4d9221\",\n  \"c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221\",\n  \"c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221\",\n  \"c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221\",\n  \"8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419\",\n  \"8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419\"\n).map(colors);\n\nexport default ramp(scheme);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale-chromatic/src/diverging/PiYG.js\n// module id = null\n// module chunks = ","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"998ec3f7f7f7f1a340\",\n  \"5e3c99b2abd2fdb863e66101\",\n  \"5e3c99b2abd2f7f7f7fdb863e66101\",\n  \"542788998ec3d8daebfee0b6f1a340b35806\",\n  \"542788998ec3d8daebf7f7f7fee0b6f1a340b35806\",\n  \"5427888073acb2abd2d8daebfee0b6fdb863e08214b35806\",\n  \"5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806\",\n  \"2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08\",\n  \"2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08\"\n).map(colors);\n\nexport default ramp(scheme);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale-chromatic/src/diverging/PuOr.js\n// module id = null\n// module chunks = ","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"ef8a62f7f7f767a9cf\",\n  \"ca0020f4a58292c5de0571b0\",\n  \"ca0020f4a582f7f7f792c5de0571b0\",\n  \"b2182bef8a62fddbc7d1e5f067a9cf2166ac\",\n  \"b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac\",\n  \"b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac\",\n  \"b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac\",\n  \"67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061\",\n  \"67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061\"\n).map(colors);\n\nexport default ramp(scheme);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale-chromatic/src/diverging/RdBu.js\n// module id = null\n// module chunks = ","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"ef8a62ffffff999999\",\n  \"ca0020f4a582bababa404040\",\n  \"ca0020f4a582ffffffbababa404040\",\n  \"b2182bef8a62fddbc7e0e0e09999994d4d4d\",\n  \"b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d\",\n  \"b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d\",\n  \"b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d\",\n  \"67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a\",\n  \"67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a\"\n).map(colors);\n\nexport default ramp(scheme);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale-chromatic/src/diverging/RdGy.js\n// module id = null\n// module chunks = ","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"fc8d59ffffbf91bfdb\",\n  \"d7191cfdae61abd9e92c7bb6\",\n  \"d7191cfdae61ffffbfabd9e92c7bb6\",\n  \"d73027fc8d59fee090e0f3f891bfdb4575b4\",\n  \"d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4\",\n  \"d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4\",\n  \"d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4\",\n  \"a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695\",\n  \"a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695\"\n).map(colors);\n\nexport default ramp(scheme);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale-chromatic/src/diverging/RdYlBu.js\n// module id = null\n// module chunks = ","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"fc8d59ffffbf91cf60\",\n  \"d7191cfdae61a6d96a1a9641\",\n  \"d7191cfdae61ffffbfa6d96a1a9641\",\n  \"d73027fc8d59fee08bd9ef8b91cf601a9850\",\n  \"d73027fc8d59fee08bffffbfd9ef8b91cf601a9850\",\n  \"d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850\",\n  \"d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850\",\n  \"a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837\",\n  \"a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837\"\n).map(colors);\n\nexport default ramp(scheme);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale-chromatic/src/diverging/RdYlGn.js\n// module id = null\n// module chunks = ","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"fc8d59ffffbf99d594\",\n  \"d7191cfdae61abdda42b83ba\",\n  \"d7191cfdae61ffffbfabdda42b83ba\",\n  \"d53e4ffc8d59fee08be6f59899d5943288bd\",\n  \"d53e4ffc8d59fee08bffffbfe6f59899d5943288bd\",\n  \"d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd\",\n  \"d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd\",\n  \"9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2\",\n  \"9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2\"\n).map(colors);\n\nexport default ramp(scheme);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale-chromatic/src/diverging/Spectral.js\n// module id = null\n// module chunks = ","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"e5f5f999d8c92ca25f\",\n  \"edf8fbb2e2e266c2a4238b45\",\n  \"edf8fbb2e2e266c2a42ca25f006d2c\",\n  \"edf8fbccece699d8c966c2a42ca25f006d2c\",\n  \"edf8fbccece699d8c966c2a441ae76238b45005824\",\n  \"f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824\",\n  \"f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b\"\n).map(colors);\n\nexport default ramp(scheme);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale-chromatic/src/sequential-multi/BuGn.js\n// module id = null\n// module chunks = ","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"e0ecf49ebcda8856a7\",\n  \"edf8fbb3cde38c96c688419d\",\n  \"edf8fbb3cde38c96c68856a7810f7c\",\n  \"edf8fbbfd3e69ebcda8c96c68856a7810f7c\",\n  \"edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b\",\n  \"f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b\",\n  \"f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b\"\n).map(colors);\n\nexport default ramp(scheme);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale-chromatic/src/sequential-multi/BuPu.js\n// module id = null\n// module chunks = ","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"e0f3dba8ddb543a2ca\",\n  \"f0f9e8bae4bc7bccc42b8cbe\",\n  \"f0f9e8bae4bc7bccc443a2ca0868ac\",\n  \"f0f9e8ccebc5a8ddb57bccc443a2ca0868ac\",\n  \"f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e\",\n  \"f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e\",\n  \"f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081\"\n).map(colors);\n\nexport default ramp(scheme);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale-chromatic/src/sequential-multi/GnBu.js\n// module id = null\n// module chunks = ","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"fee8c8fdbb84e34a33\",\n  \"fef0d9fdcc8afc8d59d7301f\",\n  \"fef0d9fdcc8afc8d59e34a33b30000\",\n  \"fef0d9fdd49efdbb84fc8d59e34a33b30000\",\n  \"fef0d9fdd49efdbb84fc8d59ef6548d7301f990000\",\n  \"fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000\",\n  \"fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000\"\n).map(colors);\n\nexport default ramp(scheme);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale-chromatic/src/sequential-multi/OrRd.js\n// module id = null\n// module chunks = ","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"ece2f0a6bddb1c9099\",\n  \"f6eff7bdc9e167a9cf02818a\",\n  \"f6eff7bdc9e167a9cf1c9099016c59\",\n  \"f6eff7d0d1e6a6bddb67a9cf1c9099016c59\",\n  \"f6eff7d0d1e6a6bddb67a9cf3690c002818a016450\",\n  \"fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450\",\n  \"fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636\"\n).map(colors);\n\nexport default ramp(scheme);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale-chromatic/src/sequential-multi/PuBuGn.js\n// module id = null\n// module chunks = ","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"ece7f2a6bddb2b8cbe\",\n  \"f1eef6bdc9e174a9cf0570b0\",\n  \"f1eef6bdc9e174a9cf2b8cbe045a8d\",\n  \"f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d\",\n  \"f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b\",\n  \"fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b\",\n  \"fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858\"\n).map(colors);\n\nexport default ramp(scheme);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale-chromatic/src/sequential-multi/PuBu.js\n// module id = null\n// module chunks = ","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"e7e1efc994c7dd1c77\",\n  \"f1eef6d7b5d8df65b0ce1256\",\n  \"f1eef6d7b5d8df65b0dd1c77980043\",\n  \"f1eef6d4b9dac994c7df65b0dd1c77980043\",\n  \"f1eef6d4b9dac994c7df65b0e7298ace125691003f\",\n  \"f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f\",\n  \"f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f\"\n).map(colors);\n\nexport default ramp(scheme);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale-chromatic/src/sequential-multi/PuRd.js\n// module id = null\n// module chunks = ","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"fde0ddfa9fb5c51b8a\",\n  \"feebe2fbb4b9f768a1ae017e\",\n  \"feebe2fbb4b9f768a1c51b8a7a0177\",\n  \"feebe2fcc5c0fa9fb5f768a1c51b8a7a0177\",\n  \"feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177\",\n  \"fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177\",\n  \"fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a\"\n).map(colors);\n\nexport default ramp(scheme);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale-chromatic/src/sequential-multi/RdPu.js\n// module id = null\n// module chunks = ","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"edf8b17fcdbb2c7fb8\",\n  \"ffffcca1dab441b6c4225ea8\",\n  \"ffffcca1dab441b6c42c7fb8253494\",\n  \"ffffccc7e9b47fcdbb41b6c42c7fb8253494\",\n  \"ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84\",\n  \"ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84\",\n  \"ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58\"\n).map(colors);\n\nexport default ramp(scheme);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale-chromatic/src/sequential-multi/YlGnBu.js\n// module id = null\n// module chunks = ","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"f7fcb9addd8e31a354\",\n  \"ffffccc2e69978c679238443\",\n  \"ffffccc2e69978c67931a354006837\",\n  \"ffffccd9f0a3addd8e78c67931a354006837\",\n  \"ffffccd9f0a3addd8e78c67941ab5d238443005a32\",\n  \"ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32\",\n  \"ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529\"\n).map(colors);\n\nexport default ramp(scheme);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale-chromatic/src/sequential-multi/YlGn.js\n// module id = null\n// module chunks = ","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"fff7bcfec44fd95f0e\",\n  \"ffffd4fed98efe9929cc4c02\",\n  \"ffffd4fed98efe9929d95f0e993404\",\n  \"ffffd4fee391fec44ffe9929d95f0e993404\",\n  \"ffffd4fee391fec44ffe9929ec7014cc4c028c2d04\",\n  \"ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04\",\n  \"ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506\"\n).map(colors);\n\nexport default ramp(scheme);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale-chromatic/src/sequential-multi/YlOrBr.js\n// module id = null\n// module chunks = ","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"ffeda0feb24cf03b20\",\n  \"ffffb2fecc5cfd8d3ce31a1c\",\n  \"ffffb2fecc5cfd8d3cf03b20bd0026\",\n  \"ffffb2fed976feb24cfd8d3cf03b20bd0026\",\n  \"ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026\",\n  \"ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026\",\n  \"ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026\"\n).map(colors);\n\nexport default ramp(scheme);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale-chromatic/src/sequential-multi/YlOrRd.js\n// module id = null\n// module chunks = ","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"deebf79ecae13182bd\",\n  \"eff3ffbdd7e76baed62171b5\",\n  \"eff3ffbdd7e76baed63182bd08519c\",\n  \"eff3ffc6dbef9ecae16baed63182bd08519c\",\n  \"eff3ffc6dbef9ecae16baed64292c62171b5084594\",\n  \"f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594\",\n  \"f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b\"\n).map(colors);\n\nexport default ramp(scheme);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale-chromatic/src/sequential-single/Blues.js\n// module id = null\n// module chunks = ","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"e5f5e0a1d99b31a354\",\n  \"edf8e9bae4b374c476238b45\",\n  \"edf8e9bae4b374c47631a354006d2c\",\n  \"edf8e9c7e9c0a1d99b74c47631a354006d2c\",\n  \"edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32\",\n  \"f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32\",\n  \"f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b\"\n).map(colors);\n\nexport default ramp(scheme);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale-chromatic/src/sequential-single/Greens.js\n// module id = null\n// module chunks = ","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"f0f0f0bdbdbd636363\",\n  \"f7f7f7cccccc969696525252\",\n  \"f7f7f7cccccc969696636363252525\",\n  \"f7f7f7d9d9d9bdbdbd969696636363252525\",\n  \"f7f7f7d9d9d9bdbdbd969696737373525252252525\",\n  \"fffffff0f0f0d9d9d9bdbdbd969696737373525252252525\",\n  \"fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000\"\n).map(colors);\n\nexport default ramp(scheme);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale-chromatic/src/sequential-single/Greys.js\n// module id = null\n// module chunks = ","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"efedf5bcbddc756bb1\",\n  \"f2f0f7cbc9e29e9ac86a51a3\",\n  \"f2f0f7cbc9e29e9ac8756bb154278f\",\n  \"f2f0f7dadaebbcbddc9e9ac8756bb154278f\",\n  \"f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486\",\n  \"fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486\",\n  \"fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d\"\n).map(colors);\n\nexport default ramp(scheme);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale-chromatic/src/sequential-single/Purples.js\n// module id = null\n// module chunks = ","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"fee0d2fc9272de2d26\",\n  \"fee5d9fcae91fb6a4acb181d\",\n  \"fee5d9fcae91fb6a4ade2d26a50f15\",\n  \"fee5d9fcbba1fc9272fb6a4ade2d26a50f15\",\n  \"fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d\",\n  \"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d\",\n  \"fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d\"\n).map(colors);\n\nexport default ramp(scheme);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale-chromatic/src/sequential-single/Reds.js\n// module id = null\n// module chunks = ","import colors from \"../colors.js\";\nimport ramp from \"../ramp.js\";\n\nexport var scheme = new Array(3).concat(\n  \"fee6cefdae6be6550d\",\n  \"feeddefdbe85fd8d3cd94701\",\n  \"feeddefdbe85fd8d3ce6550da63603\",\n  \"feeddefdd0a2fdae6bfd8d3ce6550da63603\",\n  \"feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04\",\n  \"fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04\",\n  \"fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704\"\n).map(colors);\n\nexport default ramp(scheme);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale-chromatic/src/sequential-single/Oranges.js\n// module id = null\n// module chunks = ","export default function(t) {\n  t = Math.max(0, Math.min(1, t));\n  return \"rgb(\"\n      + Math.max(0, Math.min(255, Math.round(-4.54 - t * (35.34 - t * (2381.73 - t * (6402.7 - t * (7024.72 - t * 2710.57))))))) + \", \"\n      + Math.max(0, Math.min(255, Math.round(32.49 + t * (170.73 + t * (52.82 - t * (131.46 - t * (176.58 - t * 67.37))))))) + \", \"\n      + Math.max(0, Math.min(255, Math.round(81.24 + t * (442.36 - t * (2482.43 - t * (6167.24 - t * (6614.94 - t * 2475.67)))))))\n      + \")\";\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale-chromatic/src/sequential-multi/cividis.js\n// module id = null\n// module chunks = ","import {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport default interpolateCubehelixLong(cubehelix(300, 0.5, 0.0), cubehelix(-240, 0.5, 1.0));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale-chromatic/src/sequential-multi/cubehelix.js\n// module id = null\n// module chunks = ","import {cubehelix} from \"d3-color\";\nimport {interpolateCubehelixLong} from \"d3-interpolate\";\n\nexport var warm = interpolateCubehelixLong(cubehelix(-100, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nexport var cool = interpolateCubehelixLong(cubehelix(260, 0.75, 0.35), cubehelix(80, 1.50, 0.8));\n\nvar c = cubehelix();\n\nexport default function(t) {\n  if (t < 0 || t > 1) t -= Math.floor(t);\n  var ts = Math.abs(t - 0.5);\n  c.h = 360 * t - 100;\n  c.s = 1.5 - 1.5 * ts;\n  c.l = 0.8 - 0.9 * ts;\n  return c + \"\";\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale-chromatic/src/sequential-multi/rainbow.js\n// module id = null\n// module chunks = ","import {rgb} from \"d3-color\";\n\nvar c = rgb(),\n    pi_1_3 = Math.PI / 3,\n    pi_2_3 = Math.PI * 2 / 3;\n\nexport default function(t) {\n  var x;\n  t = (0.5 - t) * Math.PI;\n  c.r = 255 * (x = Math.sin(t)) * x;\n  c.g = 255 * (x = Math.sin(t + pi_1_3)) * x;\n  c.b = 255 * (x = Math.sin(t + pi_2_3)) * x;\n  return c + \"\";\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale-chromatic/src/sequential-multi/sinebow.js\n// module id = null\n// module chunks = ","export default function(t) {\n  t = Math.max(0, Math.min(1, t));\n  return \"rgb(\"\n      + Math.max(0, Math.min(255, Math.round(34.61 + t * (1172.33 - t * (10793.56 - t * (33300.12 - t * (38394.49 - t * 14825.05))))))) + \", \"\n      + Math.max(0, Math.min(255, Math.round(23.31 + t * (557.33 + t * (1225.33 - t * (3574.96 - t * (1073.77 + t * 707.56))))))) + \", \"\n      + Math.max(0, Math.min(255, Math.round(27.2 + t * (3211.1 - t * (15327.97 - t * (27814 - t * (22569.18 - t * 6838.66)))))))\n      + \")\";\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale-chromatic/src/sequential-multi/turbo.js\n// module id = null\n// module chunks = ","import colors from \"../colors.js\";\n\nfunction ramp(range) {\n  var n = range.length;\n  return function(t) {\n    return range[Math.max(0, Math.min(n - 1, Math.floor(t * n)))];\n  };\n}\n\nexport default ramp(colors(\"44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725\"));\n\nexport var magma = ramp(colors(\"00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf\"));\n\nexport var inferno = ramp(colors(\"00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4\"));\n\nexport var plasma = ramp(colors(\"0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921\"));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale-chromatic/src/sequential-multi/viridis.js\n// module id = null\n// module chunks = ","export {default as schemeCategory10} from \"./categorical/category10.js\";\nexport {default as schemeAccent} from \"./categorical/Accent.js\";\nexport {default as schemeDark2} from \"./categorical/Dark2.js\";\nexport {default as schemePaired} from \"./categorical/Paired.js\";\nexport {default as schemePastel1} from \"./categorical/Pastel1.js\";\nexport {default as schemePastel2} from \"./categorical/Pastel2.js\";\nexport {default as schemeSet1} from \"./categorical/Set1.js\";\nexport {default as schemeSet2} from \"./categorical/Set2.js\";\nexport {default as schemeSet3} from \"./categorical/Set3.js\";\nexport {default as schemeTableau10} from \"./categorical/Tableau10.js\";\nexport {default as interpolateBrBG, scheme as schemeBrBG} from \"./diverging/BrBG.js\";\nexport {default as interpolatePRGn, scheme as schemePRGn} from \"./diverging/PRGn.js\";\nexport {default as interpolatePiYG, scheme as schemePiYG} from \"./diverging/PiYG.js\";\nexport {default as interpolatePuOr, scheme as schemePuOr} from \"./diverging/PuOr.js\";\nexport {default as interpolateRdBu, scheme as schemeRdBu} from \"./diverging/RdBu.js\";\nexport {default as interpolateRdGy, scheme as schemeRdGy} from \"./diverging/RdGy.js\";\nexport {default as interpolateRdYlBu, scheme as schemeRdYlBu} from \"./diverging/RdYlBu.js\";\nexport {default as interpolateRdYlGn, scheme as schemeRdYlGn} from \"./diverging/RdYlGn.js\";\nexport {default as interpolateSpectral, scheme as schemeSpectral} from \"./diverging/Spectral.js\";\nexport {default as interpolateBuGn, scheme as schemeBuGn} from \"./sequential-multi/BuGn.js\";\nexport {default as interpolateBuPu, scheme as schemeBuPu} from \"./sequential-multi/BuPu.js\";\nexport {default as interpolateGnBu, scheme as schemeGnBu} from \"./sequential-multi/GnBu.js\";\nexport {default as interpolateOrRd, scheme as schemeOrRd} from \"./sequential-multi/OrRd.js\";\nexport {default as interpolatePuBuGn, scheme as schemePuBuGn} from \"./sequential-multi/PuBuGn.js\";\nexport {default as interpolatePuBu, scheme as schemePuBu} from \"./sequential-multi/PuBu.js\";\nexport {default as interpolatePuRd, scheme as schemePuRd} from \"./sequential-multi/PuRd.js\";\nexport {default as interpolateRdPu, scheme as schemeRdPu} from \"./sequential-multi/RdPu.js\";\nexport {default as interpolateYlGnBu, scheme as schemeYlGnBu} from \"./sequential-multi/YlGnBu.js\";\nexport {default as interpolateYlGn, scheme as schemeYlGn} from \"./sequential-multi/YlGn.js\";\nexport {default as interpolateYlOrBr, scheme as schemeYlOrBr} from \"./sequential-multi/YlOrBr.js\";\nexport {default as interpolateYlOrRd, scheme as schemeYlOrRd} from \"./sequential-multi/YlOrRd.js\";\nexport {default as interpolateBlues, scheme as schemeBlues} from \"./sequential-single/Blues.js\";\nexport {default as interpolateGreens, scheme as schemeGreens} from \"./sequential-single/Greens.js\";\nexport {default as interpolateGreys, scheme as schemeGreys} from \"./sequential-single/Greys.js\";\nexport {default as interpolatePurples, scheme as schemePurples} from \"./sequential-single/Purples.js\";\nexport {default as interpolateReds, scheme as schemeReds} from \"./sequential-single/Reds.js\";\nexport {default as interpolateOranges, scheme as schemeOranges} from \"./sequential-single/Oranges.js\";\nexport {default as interpolateCividis} from \"./sequential-multi/cividis.js\";\nexport {default as interpolateCubehelixDefault} from \"./sequential-multi/cubehelix.js\";\nexport {default as interpolateRainbow, warm as interpolateWarm, cool as interpolateCool} from \"./sequential-multi/rainbow.js\";\nexport {default as interpolateSinebow} from \"./sequential-multi/sinebow.js\";\nexport {default as interpolateTurbo} from \"./sequential-multi/turbo.js\";\nexport {default as interpolateViridis, magma as interpolateMagma, inferno as interpolateInferno, plasma as interpolatePlasma} from \"./sequential-multi/viridis.js\";\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-scale-chromatic/src/index.js\n// module id = null\n// module chunks = ","export default function(x) {\n  return function constant() {\n    return x;\n  };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-shape/src/constant.js\n// module id = null\n// module chunks = ","export var abs = Math.abs;\nexport var atan2 = Math.atan2;\nexport var cos = Math.cos;\nexport var max = Math.max;\nexport var min = Math.min;\nexport var sin = Math.sin;\nexport var sqrt = Math.sqrt;\n\nexport var epsilon = 1e-12;\nexport var pi = Math.PI;\nexport var halfPi = pi / 2;\nexport var tau = 2 * pi;\n\nexport function acos(x) {\n  return x > 1 ? 0 : x < -1 ? pi : Math.acos(x);\n}\n\nexport function asin(x) {\n  return x >= 1 ? halfPi : x <= -1 ? -halfPi : Math.asin(x);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-shape/src/math.js\n// module id = null\n// module chunks = ","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport {abs, acos, asin, atan2, cos, epsilon, halfPi, max, min, pi, sin, sqrt, tau} from \"./math.js\";\n\nfunction arcInnerRadius(d) {\n  return d.innerRadius;\n}\n\nfunction arcOuterRadius(d) {\n  return d.outerRadius;\n}\n\nfunction arcStartAngle(d) {\n  return d.startAngle;\n}\n\nfunction arcEndAngle(d) {\n  return d.endAngle;\n}\n\nfunction arcPadAngle(d) {\n  return d && d.padAngle; // Note: optional!\n}\n\nfunction intersect(x0, y0, x1, y1, x2, y2, x3, y3) {\n  var x10 = x1 - x0, y10 = y1 - y0,\n      x32 = x3 - x2, y32 = y3 - y2,\n      t = y32 * x10 - x32 * y10;\n  if (t * t < epsilon) return;\n  t = (x32 * (y0 - y2) - y32 * (x0 - x2)) / t;\n  return [x0 + t * x10, y0 + t * y10];\n}\n\n// Compute perpendicular offset line of length rc.\n// http://mathworld.wolfram.com/Circle-LineIntersection.html\nfunction cornerTangents(x0, y0, x1, y1, r1, rc, cw) {\n  var x01 = x0 - x1,\n      y01 = y0 - y1,\n      lo = (cw ? rc : -rc) / sqrt(x01 * x01 + y01 * y01),\n      ox = lo * y01,\n      oy = -lo * x01,\n      x11 = x0 + ox,\n      y11 = y0 + oy,\n      x10 = x1 + ox,\n      y10 = y1 + oy,\n      x00 = (x11 + x10) / 2,\n      y00 = (y11 + y10) / 2,\n      dx = x10 - x11,\n      dy = y10 - y11,\n      d2 = dx * dx + dy * dy,\n      r = r1 - rc,\n      D = x11 * y10 - x10 * y11,\n      d = (dy < 0 ? -1 : 1) * sqrt(max(0, r * r * d2 - D * D)),\n      cx0 = (D * dy - dx * d) / d2,\n      cy0 = (-D * dx - dy * d) / d2,\n      cx1 = (D * dy + dx * d) / d2,\n      cy1 = (-D * dx + dy * d) / d2,\n      dx0 = cx0 - x00,\n      dy0 = cy0 - y00,\n      dx1 = cx1 - x00,\n      dy1 = cy1 - y00;\n\n  // Pick the closer of the two intersection points.\n  // TODO Is there a faster way to determine which intersection to use?\n  if (dx0 * dx0 + dy0 * dy0 > dx1 * dx1 + dy1 * dy1) cx0 = cx1, cy0 = cy1;\n\n  return {\n    cx: cx0,\n    cy: cy0,\n    x01: -ox,\n    y01: -oy,\n    x11: cx0 * (r1 / r - 1),\n    y11: cy0 * (r1 / r - 1)\n  };\n}\n\nexport default function() {\n  var innerRadius = arcInnerRadius,\n      outerRadius = arcOuterRadius,\n      cornerRadius = constant(0),\n      padRadius = null,\n      startAngle = arcStartAngle,\n      endAngle = arcEndAngle,\n      padAngle = arcPadAngle,\n      context = null;\n\n  function arc() {\n    var buffer,\n        r,\n        r0 = +innerRadius.apply(this, arguments),\n        r1 = +outerRadius.apply(this, arguments),\n        a0 = startAngle.apply(this, arguments) - halfPi,\n        a1 = endAngle.apply(this, arguments) - halfPi,\n        da = abs(a1 - a0),\n        cw = a1 > a0;\n\n    if (!context) context = buffer = path();\n\n    // Ensure that the outer radius is always larger than the inner radius.\n    if (r1 < r0) r = r1, r1 = r0, r0 = r;\n\n    // Is it a point?\n    if (!(r1 > epsilon)) context.moveTo(0, 0);\n\n    // Or is it a circle or annulus?\n    else if (da > tau - epsilon) {\n      context.moveTo(r1 * cos(a0), r1 * sin(a0));\n      context.arc(0, 0, r1, a0, a1, !cw);\n      if (r0 > epsilon) {\n        context.moveTo(r0 * cos(a1), r0 * sin(a1));\n        context.arc(0, 0, r0, a1, a0, cw);\n      }\n    }\n\n    // Or is it a circular or annular sector?\n    else {\n      var a01 = a0,\n          a11 = a1,\n          a00 = a0,\n          a10 = a1,\n          da0 = da,\n          da1 = da,\n          ap = padAngle.apply(this, arguments) / 2,\n          rp = (ap > epsilon) && (padRadius ? +padRadius.apply(this, arguments) : sqrt(r0 * r0 + r1 * r1)),\n          rc = min(abs(r1 - r0) / 2, +cornerRadius.apply(this, arguments)),\n          rc0 = rc,\n          rc1 = rc,\n          t0,\n          t1;\n\n      // Apply padding? Note that since r1 ≥ r0, da1 ≥ da0.\n      if (rp > epsilon) {\n        var p0 = asin(rp / r0 * sin(ap)),\n            p1 = asin(rp / r1 * sin(ap));\n        if ((da0 -= p0 * 2) > epsilon) p0 *= (cw ? 1 : -1), a00 += p0, a10 -= p0;\n        else da0 = 0, a00 = a10 = (a0 + a1) / 2;\n        if ((da1 -= p1 * 2) > epsilon) p1 *= (cw ? 1 : -1), a01 += p1, a11 -= p1;\n        else da1 = 0, a01 = a11 = (a0 + a1) / 2;\n      }\n\n      var x01 = r1 * cos(a01),\n          y01 = r1 * sin(a01),\n          x10 = r0 * cos(a10),\n          y10 = r0 * sin(a10);\n\n      // Apply rounded corners?\n      if (rc > epsilon) {\n        var x11 = r1 * cos(a11),\n            y11 = r1 * sin(a11),\n            x00 = r0 * cos(a00),\n            y00 = r0 * sin(a00),\n            oc;\n\n        // Restrict the corner radius according to the sector angle.\n        if (da < pi && (oc = intersect(x01, y01, x00, y00, x11, y11, x10, y10))) {\n          var ax = x01 - oc[0],\n              ay = y01 - oc[1],\n              bx = x11 - oc[0],\n              by = y11 - oc[1],\n              kc = 1 / sin(acos((ax * bx + ay * by) / (sqrt(ax * ax + ay * ay) * sqrt(bx * bx + by * by))) / 2),\n              lc = sqrt(oc[0] * oc[0] + oc[1] * oc[1]);\n          rc0 = min(rc, (r0 - lc) / (kc - 1));\n          rc1 = min(rc, (r1 - lc) / (kc + 1));\n        }\n      }\n\n      // Is the sector collapsed to a line?\n      if (!(da1 > epsilon)) context.moveTo(x01, y01);\n\n      // Does the sector’s outer ring have rounded corners?\n      else if (rc1 > epsilon) {\n        t0 = cornerTangents(x00, y00, x01, y01, r1, rc1, cw);\n        t1 = cornerTangents(x11, y11, x10, y10, r1, rc1, cw);\n\n        context.moveTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n        // Have the corners merged?\n        if (rc1 < rc) context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n        // Otherwise, draw the two corners and the ring.\n        else {\n          context.arc(t0.cx, t0.cy, rc1, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n          context.arc(0, 0, r1, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), !cw);\n          context.arc(t1.cx, t1.cy, rc1, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n        }\n      }\n\n      // Or is the outer ring just a circular arc?\n      else context.moveTo(x01, y01), context.arc(0, 0, r1, a01, a11, !cw);\n\n      // Is there no inner ring, and it’s a circular sector?\n      // Or perhaps it’s an annular sector collapsed due to padding?\n      if (!(r0 > epsilon) || !(da0 > epsilon)) context.lineTo(x10, y10);\n\n      // Does the sector’s inner ring (or point) have rounded corners?\n      else if (rc0 > epsilon) {\n        t0 = cornerTangents(x10, y10, x11, y11, r0, -rc0, cw);\n        t1 = cornerTangents(x01, y01, x00, y00, r0, -rc0, cw);\n\n        context.lineTo(t0.cx + t0.x01, t0.cy + t0.y01);\n\n        // Have the corners merged?\n        if (rc0 < rc) context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t1.y01, t1.x01), !cw);\n\n        // Otherwise, draw the two corners and the ring.\n        else {\n          context.arc(t0.cx, t0.cy, rc0, atan2(t0.y01, t0.x01), atan2(t0.y11, t0.x11), !cw);\n          context.arc(0, 0, r0, atan2(t0.cy + t0.y11, t0.cx + t0.x11), atan2(t1.cy + t1.y11, t1.cx + t1.x11), cw);\n          context.arc(t1.cx, t1.cy, rc0, atan2(t1.y11, t1.x11), atan2(t1.y01, t1.x01), !cw);\n        }\n      }\n\n      // Or is the inner ring just a circular arc?\n      else context.arc(0, 0, r0, a10, a00, cw);\n    }\n\n    context.closePath();\n\n    if (buffer) return context = null, buffer + \"\" || null;\n  }\n\n  arc.centroid = function() {\n    var r = (+innerRadius.apply(this, arguments) + +outerRadius.apply(this, arguments)) / 2,\n        a = (+startAngle.apply(this, arguments) + +endAngle.apply(this, arguments)) / 2 - pi / 2;\n    return [cos(a) * r, sin(a) * r];\n  };\n\n  arc.innerRadius = function(_) {\n    return arguments.length ? (innerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : innerRadius;\n  };\n\n  arc.outerRadius = function(_) {\n    return arguments.length ? (outerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : outerRadius;\n  };\n\n  arc.cornerRadius = function(_) {\n    return arguments.length ? (cornerRadius = typeof _ === \"function\" ? _ : constant(+_), arc) : cornerRadius;\n  };\n\n  arc.padRadius = function(_) {\n    return arguments.length ? (padRadius = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), arc) : padRadius;\n  };\n\n  arc.startAngle = function(_) {\n    return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : startAngle;\n  };\n\n  arc.endAngle = function(_) {\n    return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : endAngle;\n  };\n\n  arc.padAngle = function(_) {\n    return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), arc) : padAngle;\n  };\n\n  arc.context = function(_) {\n    return arguments.length ? ((context = _ == null ? null : _), arc) : context;\n  };\n\n  return arc;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-shape/src/arc.js\n// module id = null\n// module chunks = ","function Linear(context) {\n  this._context = context;\n}\n\nLinear.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; // proceed\n      default: this._context.lineTo(x, y); break;\n    }\n  }\n};\n\nexport default function(context) {\n  return new Linear(context);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-shape/src/curve/linear.js\n// module id = null\n// module chunks = ","export function x(p) {\n  return p[0];\n}\n\nexport function y(p) {\n  return p[1];\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-shape/src/point.js\n// module id = null\n// module chunks = ","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function() {\n  var x = pointX,\n      y = pointY,\n      defined = constant(true),\n      context = null,\n      curve = curveLinear,\n      output = null;\n\n  function line(data) {\n    var i,\n        n = data.length,\n        d,\n        defined0 = false,\n        buffer;\n\n    if (context == null) output = curve(buffer = path());\n\n    for (i = 0; i <= n; ++i) {\n      if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n        if (defined0 = !defined0) output.lineStart();\n        else output.lineEnd();\n      }\n      if (defined0) output.point(+x(d, i, data), +y(d, i, data));\n    }\n\n    if (buffer) return output = null, buffer + \"\" || null;\n  }\n\n  line.x = function(_) {\n    return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), line) : x;\n  };\n\n  line.y = function(_) {\n    return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), line) : y;\n  };\n\n  line.defined = function(_) {\n    return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), line) : defined;\n  };\n\n  line.curve = function(_) {\n    return arguments.length ? (curve = _, context != null && (output = curve(context)), line) : curve;\n  };\n\n  line.context = function(_) {\n    return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), line) : context;\n  };\n\n  return line;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-shape/src/line.js\n// module id = null\n// module chunks = ","import {path} from \"d3-path\";\nimport constant from \"./constant.js\";\nimport curveLinear from \"./curve/linear.js\";\nimport line from \"./line.js\";\nimport {x as pointX, y as pointY} from \"./point.js\";\n\nexport default function() {\n  var x0 = pointX,\n      x1 = null,\n      y0 = constant(0),\n      y1 = pointY,\n      defined = constant(true),\n      context = null,\n      curve = curveLinear,\n      output = null;\n\n  function area(data) {\n    var i,\n        j,\n        k,\n        n = data.length,\n        d,\n        defined0 = false,\n        buffer,\n        x0z = new Array(n),\n        y0z = new Array(n);\n\n    if (context == null) output = curve(buffer = path());\n\n    for (i = 0; i <= n; ++i) {\n      if (!(i < n && defined(d = data[i], i, data)) === defined0) {\n        if (defined0 = !defined0) {\n          j = i;\n          output.areaStart();\n          output.lineStart();\n        } else {\n          output.lineEnd();\n          output.lineStart();\n          for (k = i - 1; k >= j; --k) {\n            output.point(x0z[k], y0z[k]);\n          }\n          output.lineEnd();\n          output.areaEnd();\n        }\n      }\n      if (defined0) {\n        x0z[i] = +x0(d, i, data), y0z[i] = +y0(d, i, data);\n        output.point(x1 ? +x1(d, i, data) : x0z[i], y1 ? +y1(d, i, data) : y0z[i]);\n      }\n    }\n\n    if (buffer) return output = null, buffer + \"\" || null;\n  }\n\n  function arealine() {\n    return line().defined(defined).curve(curve).context(context);\n  }\n\n  area.x = function(_) {\n    return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), x1 = null, area) : x0;\n  };\n\n  area.x0 = function(_) {\n    return arguments.length ? (x0 = typeof _ === \"function\" ? _ : constant(+_), area) : x0;\n  };\n\n  area.x1 = function(_) {\n    return arguments.length ? (x1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : x1;\n  };\n\n  area.y = function(_) {\n    return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), y1 = null, area) : y0;\n  };\n\n  area.y0 = function(_) {\n    return arguments.length ? (y0 = typeof _ === \"function\" ? _ : constant(+_), area) : y0;\n  };\n\n  area.y1 = function(_) {\n    return arguments.length ? (y1 = _ == null ? null : typeof _ === \"function\" ? _ : constant(+_), area) : y1;\n  };\n\n  area.lineX0 =\n  area.lineY0 = function() {\n    return arealine().x(x0).y(y0);\n  };\n\n  area.lineY1 = function() {\n    return arealine().x(x0).y(y1);\n  };\n\n  area.lineX1 = function() {\n    return arealine().x(x1).y(y0);\n  };\n\n  area.defined = function(_) {\n    return arguments.length ? (defined = typeof _ === \"function\" ? _ : constant(!!_), area) : defined;\n  };\n\n  area.curve = function(_) {\n    return arguments.length ? (curve = _, context != null && (output = curve(context)), area) : curve;\n  };\n\n  area.context = function(_) {\n    return arguments.length ? (_ == null ? context = output = null : output = curve(context = _), area) : context;\n  };\n\n  return area;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-shape/src/area.js\n// module id = null\n// module chunks = ","export default function(a, b) {\n  return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-shape/src/descending.js\n// module id = null\n// module chunks = ","export default function(d) {\n  return d;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-shape/src/identity.js\n// module id = null\n// module chunks = ","import constant from \"./constant.js\";\nimport descending from \"./descending.js\";\nimport identity from \"./identity.js\";\nimport {tau} from \"./math.js\";\n\nexport default function() {\n  var value = identity,\n      sortValues = descending,\n      sort = null,\n      startAngle = constant(0),\n      endAngle = constant(tau),\n      padAngle = constant(0);\n\n  function pie(data) {\n    var i,\n        n = data.length,\n        j,\n        k,\n        sum = 0,\n        index = new Array(n),\n        arcs = new Array(n),\n        a0 = +startAngle.apply(this, arguments),\n        da = Math.min(tau, Math.max(-tau, endAngle.apply(this, arguments) - a0)),\n        a1,\n        p = Math.min(Math.abs(da) / n, padAngle.apply(this, arguments)),\n        pa = p * (da < 0 ? -1 : 1),\n        v;\n\n    for (i = 0; i < n; ++i) {\n      if ((v = arcs[index[i] = i] = +value(data[i], i, data)) > 0) {\n        sum += v;\n      }\n    }\n\n    // Optionally sort the arcs by previously-computed values or by data.\n    if (sortValues != null) index.sort(function(i, j) { return sortValues(arcs[i], arcs[j]); });\n    else if (sort != null) index.sort(function(i, j) { return sort(data[i], data[j]); });\n\n    // Compute the arcs! They are stored in the original data's order.\n    for (i = 0, k = sum ? (da - n * pa) / sum : 0; i < n; ++i, a0 = a1) {\n      j = index[i], v = arcs[j], a1 = a0 + (v > 0 ? v * k : 0) + pa, arcs[j] = {\n        data: data[j],\n        index: i,\n        value: v,\n        startAngle: a0,\n        endAngle: a1,\n        padAngle: p\n      };\n    }\n\n    return arcs;\n  }\n\n  pie.value = function(_) {\n    return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), pie) : value;\n  };\n\n  pie.sortValues = function(_) {\n    return arguments.length ? (sortValues = _, sort = null, pie) : sortValues;\n  };\n\n  pie.sort = function(_) {\n    return arguments.length ? (sort = _, sortValues = null, pie) : sort;\n  };\n\n  pie.startAngle = function(_) {\n    return arguments.length ? (startAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : startAngle;\n  };\n\n  pie.endAngle = function(_) {\n    return arguments.length ? (endAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : endAngle;\n  };\n\n  pie.padAngle = function(_) {\n    return arguments.length ? (padAngle = typeof _ === \"function\" ? _ : constant(+_), pie) : padAngle;\n  };\n\n  return pie;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-shape/src/pie.js\n// module id = null\n// module chunks = ","import curveLinear from \"./linear.js\";\n\nexport var curveRadialLinear = curveRadial(curveLinear);\n\nfunction Radial(curve) {\n  this._curve = curve;\n}\n\nRadial.prototype = {\n  areaStart: function() {\n    this._curve.areaStart();\n  },\n  areaEnd: function() {\n    this._curve.areaEnd();\n  },\n  lineStart: function() {\n    this._curve.lineStart();\n  },\n  lineEnd: function() {\n    this._curve.lineEnd();\n  },\n  point: function(a, r) {\n    this._curve.point(r * Math.sin(a), r * -Math.cos(a));\n  }\n};\n\nexport default function curveRadial(curve) {\n\n  function radial(context) {\n    return new Radial(curve(context));\n  }\n\n  radial._curve = curve;\n\n  return radial;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-shape/src/curve/radial.js\n// module id = null\n// module chunks = ","import curveRadial, {curveRadialLinear} from \"./curve/radial.js\";\nimport line from \"./line.js\";\n\nexport function lineRadial(l) {\n  var c = l.curve;\n\n  l.angle = l.x, delete l.x;\n  l.radius = l.y, delete l.y;\n\n  l.curve = function(_) {\n    return arguments.length ? c(curveRadial(_)) : c()._curve;\n  };\n\n  return l;\n}\n\nexport default function() {\n  return lineRadial(line().curve(curveRadialLinear));\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-shape/src/lineRadial.js\n// module id = null\n// module chunks = ","import curveRadial, {curveRadialLinear} from \"./curve/radial.js\";\nimport area from \"./area.js\";\nimport {lineRadial} from \"./lineRadial.js\";\n\nexport default function() {\n  var a = area().curve(curveRadialLinear),\n      c = a.curve,\n      x0 = a.lineX0,\n      x1 = a.lineX1,\n      y0 = a.lineY0,\n      y1 = a.lineY1;\n\n  a.angle = a.x, delete a.x;\n  a.startAngle = a.x0, delete a.x0;\n  a.endAngle = a.x1, delete a.x1;\n  a.radius = a.y, delete a.y;\n  a.innerRadius = a.y0, delete a.y0;\n  a.outerRadius = a.y1, delete a.y1;\n  a.lineStartAngle = function() { return lineRadial(x0()); }, delete a.lineX0;\n  a.lineEndAngle = function() { return lineRadial(x1()); }, delete a.lineX1;\n  a.lineInnerRadius = function() { return lineRadial(y0()); }, delete a.lineY0;\n  a.lineOuterRadius = function() { return lineRadial(y1()); }, delete a.lineY1;\n\n  a.curve = function(_) {\n    return arguments.length ? c(curveRadial(_)) : c()._curve;\n  };\n\n  return a;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-shape/src/areaRadial.js\n// module id = null\n// module chunks = ","export default function(x, y) {\n  return [(y = +y) * Math.cos(x -= Math.PI / 2), y * Math.sin(x)];\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-shape/src/pointRadial.js\n// module id = null\n// module chunks = ","export var slice = Array.prototype.slice;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-shape/src/array.js\n// module id = null\n// module chunks = ","import {path} from \"d3-path\";\nimport {slice} from \"../array.js\";\nimport constant from \"../constant.js\";\nimport {x as pointX, y as pointY} from \"../point.js\";\nimport pointRadial from \"../pointRadial.js\";\n\nfunction linkSource(d) {\n  return d.source;\n}\n\nfunction linkTarget(d) {\n  return d.target;\n}\n\nfunction link(curve) {\n  var source = linkSource,\n      target = linkTarget,\n      x = pointX,\n      y = pointY,\n      context = null;\n\n  function link() {\n    var buffer, argv = slice.call(arguments), s = source.apply(this, argv), t = target.apply(this, argv);\n    if (!context) context = buffer = path();\n    curve(context, +x.apply(this, (argv[0] = s, argv)), +y.apply(this, argv), +x.apply(this, (argv[0] = t, argv)), +y.apply(this, argv));\n    if (buffer) return context = null, buffer + \"\" || null;\n  }\n\n  link.source = function(_) {\n    return arguments.length ? (source = _, link) : source;\n  };\n\n  link.target = function(_) {\n    return arguments.length ? (target = _, link) : target;\n  };\n\n  link.x = function(_) {\n    return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), link) : x;\n  };\n\n  link.y = function(_) {\n    return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), link) : y;\n  };\n\n  link.context = function(_) {\n    return arguments.length ? ((context = _ == null ? null : _), link) : context;\n  };\n\n  return link;\n}\n\nfunction curveHorizontal(context, x0, y0, x1, y1) {\n  context.moveTo(x0, y0);\n  context.bezierCurveTo(x0 = (x0 + x1) / 2, y0, x0, y1, x1, y1);\n}\n\nfunction curveVertical(context, x0, y0, x1, y1) {\n  context.moveTo(x0, y0);\n  context.bezierCurveTo(x0, y0 = (y0 + y1) / 2, x1, y0, x1, y1);\n}\n\nfunction curveRadial(context, x0, y0, x1, y1) {\n  var p0 = pointRadial(x0, y0),\n      p1 = pointRadial(x0, y0 = (y0 + y1) / 2),\n      p2 = pointRadial(x1, y0),\n      p3 = pointRadial(x1, y1);\n  context.moveTo(p0[0], p0[1]);\n  context.bezierCurveTo(p1[0], p1[1], p2[0], p2[1], p3[0], p3[1]);\n}\n\nexport function linkHorizontal() {\n  return link(curveHorizontal);\n}\n\nexport function linkVertical() {\n  return link(curveVertical);\n}\n\nexport function linkRadial() {\n  var l = link(curveRadial);\n  l.angle = l.x, delete l.x;\n  l.radius = l.y, delete l.y;\n  return l;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-shape/src/link/index.js\n// module id = null\n// module chunks = ","import {pi, tau} from \"../math.js\";\n\nexport default {\n  draw: function(context, size) {\n    var r = Math.sqrt(size / pi);\n    context.moveTo(r, 0);\n    context.arc(0, 0, r, 0, tau);\n  }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-shape/src/symbol/circle.js\n// module id = null\n// module chunks = ","export default {\n  draw: function(context, size) {\n    var r = Math.sqrt(size / 5) / 2;\n    context.moveTo(-3 * r, -r);\n    context.lineTo(-r, -r);\n    context.lineTo(-r, -3 * r);\n    context.lineTo(r, -3 * r);\n    context.lineTo(r, -r);\n    context.lineTo(3 * r, -r);\n    context.lineTo(3 * r, r);\n    context.lineTo(r, r);\n    context.lineTo(r, 3 * r);\n    context.lineTo(-r, 3 * r);\n    context.lineTo(-r, r);\n    context.lineTo(-3 * r, r);\n    context.closePath();\n  }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-shape/src/symbol/cross.js\n// module id = null\n// module chunks = ","var tan30 = Math.sqrt(1 / 3),\n    tan30_2 = tan30 * 2;\n\nexport default {\n  draw: function(context, size) {\n    var y = Math.sqrt(size / tan30_2),\n        x = y * tan30;\n    context.moveTo(0, -y);\n    context.lineTo(x, 0);\n    context.lineTo(0, y);\n    context.lineTo(-x, 0);\n    context.closePath();\n  }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-shape/src/symbol/diamond.js\n// module id = null\n// module chunks = ","import {pi, tau} from \"../math.js\";\n\nvar ka = 0.89081309152928522810,\n    kr = Math.sin(pi / 10) / Math.sin(7 * pi / 10),\n    kx = Math.sin(tau / 10) * kr,\n    ky = -Math.cos(tau / 10) * kr;\n\nexport default {\n  draw: function(context, size) {\n    var r = Math.sqrt(size * ka),\n        x = kx * r,\n        y = ky * r;\n    context.moveTo(0, -r);\n    context.lineTo(x, y);\n    for (var i = 1; i < 5; ++i) {\n      var a = tau * i / 5,\n          c = Math.cos(a),\n          s = Math.sin(a);\n      context.lineTo(s * r, -c * r);\n      context.lineTo(c * x - s * y, s * x + c * y);\n    }\n    context.closePath();\n  }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-shape/src/symbol/star.js\n// module id = null\n// module chunks = ","export default {\n  draw: function(context, size) {\n    var w = Math.sqrt(size),\n        x = -w / 2;\n    context.rect(x, x, w, w);\n  }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-shape/src/symbol/square.js\n// module id = null\n// module chunks = ","var sqrt3 = Math.sqrt(3);\n\nexport default {\n  draw: function(context, size) {\n    var y = -Math.sqrt(size / (sqrt3 * 3));\n    context.moveTo(0, y * 2);\n    context.lineTo(-sqrt3 * y, -y);\n    context.lineTo(sqrt3 * y, -y);\n    context.closePath();\n  }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-shape/src/symbol/triangle.js\n// module id = null\n// module chunks = ","var c = -0.5,\n    s = Math.sqrt(3) / 2,\n    k = 1 / Math.sqrt(12),\n    a = (k / 2 + 1) * 3;\n\nexport default {\n  draw: function(context, size) {\n    var r = Math.sqrt(size / a),\n        x0 = r / 2,\n        y0 = r * k,\n        x1 = x0,\n        y1 = r * k + r,\n        x2 = -x1,\n        y2 = y1;\n    context.moveTo(x0, y0);\n    context.lineTo(x1, y1);\n    context.lineTo(x2, y2);\n    context.lineTo(c * x0 - s * y0, s * x0 + c * y0);\n    context.lineTo(c * x1 - s * y1, s * x1 + c * y1);\n    context.lineTo(c * x2 - s * y2, s * x2 + c * y2);\n    context.lineTo(c * x0 + s * y0, c * y0 - s * x0);\n    context.lineTo(c * x1 + s * y1, c * y1 - s * x1);\n    context.lineTo(c * x2 + s * y2, c * y2 - s * x2);\n    context.closePath();\n  }\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-shape/src/symbol/wye.js\n// module id = null\n// module chunks = ","import {path} from \"d3-path\";\nimport circle from \"./symbol/circle.js\";\nimport cross from \"./symbol/cross.js\";\nimport diamond from \"./symbol/diamond.js\";\nimport star from \"./symbol/star.js\";\nimport square from \"./symbol/square.js\";\nimport triangle from \"./symbol/triangle.js\";\nimport wye from \"./symbol/wye.js\";\nimport constant from \"./constant.js\";\n\nexport var symbols = [\n  circle,\n  cross,\n  diamond,\n  square,\n  star,\n  triangle,\n  wye\n];\n\nexport default function() {\n  var type = constant(circle),\n      size = constant(64),\n      context = null;\n\n  function symbol() {\n    var buffer;\n    if (!context) context = buffer = path();\n    type.apply(this, arguments).draw(context, +size.apply(this, arguments));\n    if (buffer) return context = null, buffer + \"\" || null;\n  }\n\n  symbol.type = function(_) {\n    return arguments.length ? (type = typeof _ === \"function\" ? _ : constant(_), symbol) : type;\n  };\n\n  symbol.size = function(_) {\n    return arguments.length ? (size = typeof _ === \"function\" ? _ : constant(+_), symbol) : size;\n  };\n\n  symbol.context = function(_) {\n    return arguments.length ? (context = _ == null ? null : _, symbol) : context;\n  };\n\n  return symbol;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-shape/src/symbol.js\n// module id = null\n// module chunks = ","export default function() {}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-shape/src/noop.js\n// module id = null\n// module chunks = ","export function point(that, x, y) {\n  that._context.bezierCurveTo(\n    (2 * that._x0 + that._x1) / 3,\n    (2 * that._y0 + that._y1) / 3,\n    (that._x0 + 2 * that._x1) / 3,\n    (that._y0 + 2 * that._y1) / 3,\n    (that._x0 + 4 * that._x1 + x) / 6,\n    (that._y0 + 4 * that._y1 + y) / 6\n  );\n}\n\nexport function Basis(context) {\n  this._context = context;\n}\n\nBasis.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 =\n    this._y0 = this._y1 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 3: point(this, this._x1, this._y1); // proceed\n      case 2: this._context.lineTo(this._x1, this._y1); break;\n    }\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; this._context.lineTo((5 * this._x0 + this._x1) / 6, (5 * this._y0 + this._y1) / 6); // proceed\n      default: point(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = x;\n    this._y0 = this._y1, this._y1 = y;\n  }\n};\n\nexport default function(context) {\n  return new Basis(context);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-shape/src/curve/basis.js\n// module id = null\n// module chunks = ","import noop from \"../noop.js\";\nimport {point} from \"./basis.js\";\n\nfunction BasisClosed(context) {\n  this._context = context;\n}\n\nBasisClosed.prototype = {\n  areaStart: noop,\n  areaEnd: noop,\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 = this._x3 = this._x4 =\n    this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 1: {\n        this._context.moveTo(this._x2, this._y2);\n        this._context.closePath();\n        break;\n      }\n      case 2: {\n        this._context.moveTo((this._x2 + 2 * this._x3) / 3, (this._y2 + 2 * this._y3) / 3);\n        this._context.lineTo((this._x3 + 2 * this._x2) / 3, (this._y3 + 2 * this._y2) / 3);\n        this._context.closePath();\n        break;\n      }\n      case 3: {\n        this.point(this._x2, this._y2);\n        this.point(this._x3, this._y3);\n        this.point(this._x4, this._y4);\n        break;\n      }\n    }\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._x2 = x, this._y2 = y; break;\n      case 1: this._point = 2; this._x3 = x, this._y3 = y; break;\n      case 2: this._point = 3; this._x4 = x, this._y4 = y; this._context.moveTo((this._x0 + 4 * this._x1 + x) / 6, (this._y0 + 4 * this._y1 + y) / 6); break;\n      default: point(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = x;\n    this._y0 = this._y1, this._y1 = y;\n  }\n};\n\nexport default function(context) {\n  return new BasisClosed(context);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-shape/src/curve/basisClosed.js\n// module id = null\n// module chunks = ","import {point} from \"./basis.js\";\n\nfunction BasisOpen(context) {\n  this._context = context;\n}\n\nBasisOpen.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 =\n    this._y0 = this._y1 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; var x0 = (this._x0 + 4 * this._x1 + x) / 6, y0 = (this._y0 + 4 * this._y1 + y) / 6; this._line ? this._context.lineTo(x0, y0) : this._context.moveTo(x0, y0); break;\n      case 3: this._point = 4; // proceed\n      default: point(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = x;\n    this._y0 = this._y1, this._y1 = y;\n  }\n};\n\nexport default function(context) {\n  return new BasisOpen(context);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-shape/src/curve/basisOpen.js\n// module id = null\n// module chunks = ","import {Basis} from \"./basis.js\";\n\nfunction Bundle(context, beta) {\n  this._basis = new Basis(context);\n  this._beta = beta;\n}\n\nBundle.prototype = {\n  lineStart: function() {\n    this._x = [];\n    this._y = [];\n    this._basis.lineStart();\n  },\n  lineEnd: function() {\n    var x = this._x,\n        y = this._y,\n        j = x.length - 1;\n\n    if (j > 0) {\n      var x0 = x[0],\n          y0 = y[0],\n          dx = x[j] - x0,\n          dy = y[j] - y0,\n          i = -1,\n          t;\n\n      while (++i <= j) {\n        t = i / j;\n        this._basis.point(\n          this._beta * x[i] + (1 - this._beta) * (x0 + t * dx),\n          this._beta * y[i] + (1 - this._beta) * (y0 + t * dy)\n        );\n      }\n    }\n\n    this._x = this._y = null;\n    this._basis.lineEnd();\n  },\n  point: function(x, y) {\n    this._x.push(+x);\n    this._y.push(+y);\n  }\n};\n\nexport default (function custom(beta) {\n\n  function bundle(context) {\n    return beta === 1 ? new Basis(context) : new Bundle(context, beta);\n  }\n\n  bundle.beta = function(beta) {\n    return custom(+beta);\n  };\n\n  return bundle;\n})(0.85);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-shape/src/curve/bundle.js\n// module id = null\n// module chunks = ","export function point(that, x, y) {\n  that._context.bezierCurveTo(\n    that._x1 + that._k * (that._x2 - that._x0),\n    that._y1 + that._k * (that._y2 - that._y0),\n    that._x2 + that._k * (that._x1 - x),\n    that._y2 + that._k * (that._y1 - y),\n    that._x2,\n    that._y2\n  );\n}\n\nexport function Cardinal(context, tension) {\n  this._context = context;\n  this._k = (1 - tension) / 6;\n}\n\nCardinal.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 =\n    this._y0 = this._y1 = this._y2 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 2: this._context.lineTo(this._x2, this._y2); break;\n      case 3: point(this, this._x1, this._y1); break;\n    }\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; this._x1 = x, this._y1 = y; break;\n      case 2: this._point = 3; // proceed\n      default: point(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\nexport default (function custom(tension) {\n\n  function cardinal(context) {\n    return new Cardinal(context, tension);\n  }\n\n  cardinal.tension = function(tension) {\n    return custom(+tension);\n  };\n\n  return cardinal;\n})(0);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-shape/src/curve/cardinal.js\n// module id = null\n// module chunks = ","import noop from \"../noop.js\";\nimport {point} from \"./cardinal.js\";\n\nexport function CardinalClosed(context, tension) {\n  this._context = context;\n  this._k = (1 - tension) / 6;\n}\n\nCardinalClosed.prototype = {\n  areaStart: noop,\n  areaEnd: noop,\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n    this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 1: {\n        this._context.moveTo(this._x3, this._y3);\n        this._context.closePath();\n        break;\n      }\n      case 2: {\n        this._context.lineTo(this._x3, this._y3);\n        this._context.closePath();\n        break;\n      }\n      case 3: {\n        this.point(this._x3, this._y3);\n        this.point(this._x4, this._y4);\n        this.point(this._x5, this._y5);\n        break;\n      }\n    }\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n      case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n      case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n      default: point(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\nexport default (function custom(tension) {\n\n  function cardinal(context) {\n    return new CardinalClosed(context, tension);\n  }\n\n  cardinal.tension = function(tension) {\n    return custom(+tension);\n  };\n\n  return cardinal;\n})(0);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-shape/src/curve/cardinalClosed.js\n// module id = null\n// module chunks = ","import {point} from \"./cardinal.js\";\n\nexport function CardinalOpen(context, tension) {\n  this._context = context;\n  this._k = (1 - tension) / 6;\n}\n\nCardinalOpen.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 =\n    this._y0 = this._y1 = this._y2 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n      case 3: this._point = 4; // proceed\n      default: point(this, x, y); break;\n    }\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\nexport default (function custom(tension) {\n\n  function cardinal(context) {\n    return new CardinalOpen(context, tension);\n  }\n\n  cardinal.tension = function(tension) {\n    return custom(+tension);\n  };\n\n  return cardinal;\n})(0);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-shape/src/curve/cardinalOpen.js\n// module id = null\n// module chunks = ","import {epsilon} from \"../math.js\";\nimport {Cardinal} from \"./cardinal.js\";\n\nexport function point(that, x, y) {\n  var x1 = that._x1,\n      y1 = that._y1,\n      x2 = that._x2,\n      y2 = that._y2;\n\n  if (that._l01_a > epsilon) {\n    var a = 2 * that._l01_2a + 3 * that._l01_a * that._l12_a + that._l12_2a,\n        n = 3 * that._l01_a * (that._l01_a + that._l12_a);\n    x1 = (x1 * a - that._x0 * that._l12_2a + that._x2 * that._l01_2a) / n;\n    y1 = (y1 * a - that._y0 * that._l12_2a + that._y2 * that._l01_2a) / n;\n  }\n\n  if (that._l23_a > epsilon) {\n    var b = 2 * that._l23_2a + 3 * that._l23_a * that._l12_a + that._l12_2a,\n        m = 3 * that._l23_a * (that._l23_a + that._l12_a);\n    x2 = (x2 * b + that._x1 * that._l23_2a - x * that._l12_2a) / m;\n    y2 = (y2 * b + that._y1 * that._l23_2a - y * that._l12_2a) / m;\n  }\n\n  that._context.bezierCurveTo(x1, y1, x2, y2, that._x2, that._y2);\n}\n\nfunction CatmullRom(context, alpha) {\n  this._context = context;\n  this._alpha = alpha;\n}\n\nCatmullRom.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 =\n    this._y0 = this._y1 = this._y2 = NaN;\n    this._l01_a = this._l12_a = this._l23_a =\n    this._l01_2a = this._l12_2a = this._l23_2a =\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 2: this._context.lineTo(this._x2, this._y2); break;\n      case 3: this.point(this._x2, this._y2); break;\n    }\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n\n    if (this._point) {\n      var x23 = this._x2 - x,\n          y23 = this._y2 - y;\n      this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n    }\n\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; // proceed\n      default: point(this, x, y); break;\n    }\n\n    this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n    this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\nexport default (function custom(alpha) {\n\n  function catmullRom(context) {\n    return alpha ? new CatmullRom(context, alpha) : new Cardinal(context, 0);\n  }\n\n  catmullRom.alpha = function(alpha) {\n    return custom(+alpha);\n  };\n\n  return catmullRom;\n})(0.5);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-shape/src/curve/catmullRom.js\n// module id = null\n// module chunks = ","import {CardinalClosed} from \"./cardinalClosed.js\";\nimport noop from \"../noop.js\";\nimport {point} from \"./catmullRom.js\";\n\nfunction CatmullRomClosed(context, alpha) {\n  this._context = context;\n  this._alpha = alpha;\n}\n\nCatmullRomClosed.prototype = {\n  areaStart: noop,\n  areaEnd: noop,\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 = this._x3 = this._x4 = this._x5 =\n    this._y0 = this._y1 = this._y2 = this._y3 = this._y4 = this._y5 = NaN;\n    this._l01_a = this._l12_a = this._l23_a =\n    this._l01_2a = this._l12_2a = this._l23_2a =\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 1: {\n        this._context.moveTo(this._x3, this._y3);\n        this._context.closePath();\n        break;\n      }\n      case 2: {\n        this._context.lineTo(this._x3, this._y3);\n        this._context.closePath();\n        break;\n      }\n      case 3: {\n        this.point(this._x3, this._y3);\n        this.point(this._x4, this._y4);\n        this.point(this._x5, this._y5);\n        break;\n      }\n    }\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n\n    if (this._point) {\n      var x23 = this._x2 - x,\n          y23 = this._y2 - y;\n      this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n    }\n\n    switch (this._point) {\n      case 0: this._point = 1; this._x3 = x, this._y3 = y; break;\n      case 1: this._point = 2; this._context.moveTo(this._x4 = x, this._y4 = y); break;\n      case 2: this._point = 3; this._x5 = x, this._y5 = y; break;\n      default: point(this, x, y); break;\n    }\n\n    this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n    this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\nexport default (function custom(alpha) {\n\n  function catmullRom(context) {\n    return alpha ? new CatmullRomClosed(context, alpha) : new CardinalClosed(context, 0);\n  }\n\n  catmullRom.alpha = function(alpha) {\n    return custom(+alpha);\n  };\n\n  return catmullRom;\n})(0.5);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-shape/src/curve/catmullRomClosed.js\n// module id = null\n// module chunks = ","import {CardinalOpen} from \"./cardinalOpen.js\";\nimport {point} from \"./catmullRom.js\";\n\nfunction CatmullRomOpen(context, alpha) {\n  this._context = context;\n  this._alpha = alpha;\n}\n\nCatmullRomOpen.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 = this._x2 =\n    this._y0 = this._y1 = this._y2 = NaN;\n    this._l01_a = this._l12_a = this._l23_a =\n    this._l01_2a = this._l12_2a = this._l23_2a =\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._line || (this._line !== 0 && this._point === 3)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n\n    if (this._point) {\n      var x23 = this._x2 - x,\n          y23 = this._y2 - y;\n      this._l23_a = Math.sqrt(this._l23_2a = Math.pow(x23 * x23 + y23 * y23, this._alpha));\n    }\n\n    switch (this._point) {\n      case 0: this._point = 1; break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; this._line ? this._context.lineTo(this._x2, this._y2) : this._context.moveTo(this._x2, this._y2); break;\n      case 3: this._point = 4; // proceed\n      default: point(this, x, y); break;\n    }\n\n    this._l01_a = this._l12_a, this._l12_a = this._l23_a;\n    this._l01_2a = this._l12_2a, this._l12_2a = this._l23_2a;\n    this._x0 = this._x1, this._x1 = this._x2, this._x2 = x;\n    this._y0 = this._y1, this._y1 = this._y2, this._y2 = y;\n  }\n};\n\nexport default (function custom(alpha) {\n\n  function catmullRom(context) {\n    return alpha ? new CatmullRomOpen(context, alpha) : new CardinalOpen(context, 0);\n  }\n\n  catmullRom.alpha = function(alpha) {\n    return custom(+alpha);\n  };\n\n  return catmullRom;\n})(0.5);\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-shape/src/curve/catmullRomOpen.js\n// module id = null\n// module chunks = ","import noop from \"../noop.js\";\n\nfunction LinearClosed(context) {\n  this._context = context;\n}\n\nLinearClosed.prototype = {\n  areaStart: noop,\n  areaEnd: noop,\n  lineStart: function() {\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (this._point) this._context.closePath();\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    if (this._point) this._context.lineTo(x, y);\n    else this._point = 1, this._context.moveTo(x, y);\n  }\n};\n\nexport default function(context) {\n  return new LinearClosed(context);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-shape/src/curve/linearClosed.js\n// module id = null\n// module chunks = ","function sign(x) {\n  return x < 0 ? -1 : 1;\n}\n\n// Calculate the slopes of the tangents (Hermite-type interpolation) based on\n// the following paper: Steffen, M. 1990. A Simple Method for Monotonic\n// Interpolation in One Dimension. Astronomy and Astrophysics, Vol. 239, NO.\n// NOV(II), P. 443, 1990.\nfunction slope3(that, x2, y2) {\n  var h0 = that._x1 - that._x0,\n      h1 = x2 - that._x1,\n      s0 = (that._y1 - that._y0) / (h0 || h1 < 0 && -0),\n      s1 = (y2 - that._y1) / (h1 || h0 < 0 && -0),\n      p = (s0 * h1 + s1 * h0) / (h0 + h1);\n  return (sign(s0) + sign(s1)) * Math.min(Math.abs(s0), Math.abs(s1), 0.5 * Math.abs(p)) || 0;\n}\n\n// Calculate a one-sided slope.\nfunction slope2(that, t) {\n  var h = that._x1 - that._x0;\n  return h ? (3 * (that._y1 - that._y0) / h - t) / 2 : t;\n}\n\n// According to https://en.wikipedia.org/wiki/Cubic_Hermite_spline#Representations\n// \"you can express cubic Hermite interpolation in terms of cubic Bézier curves\n// with respect to the four values p0, p0 + m0 / 3, p1 - m1 / 3, p1\".\nfunction point(that, t0, t1) {\n  var x0 = that._x0,\n      y0 = that._y0,\n      x1 = that._x1,\n      y1 = that._y1,\n      dx = (x1 - x0) / 3;\n  that._context.bezierCurveTo(x0 + dx, y0 + dx * t0, x1 - dx, y1 - dx * t1, x1, y1);\n}\n\nfunction MonotoneX(context) {\n  this._context = context;\n}\n\nMonotoneX.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x0 = this._x1 =\n    this._y0 = this._y1 =\n    this._t0 = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    switch (this._point) {\n      case 2: this._context.lineTo(this._x1, this._y1); break;\n      case 3: point(this, this._t0, slope2(this, this._t0)); break;\n    }\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    var t1 = NaN;\n\n    x = +x, y = +y;\n    if (x === this._x1 && y === this._y1) return; // Ignore coincident points.\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; break;\n      case 2: this._point = 3; point(this, slope2(this, t1 = slope3(this, x, y)), t1); break;\n      default: point(this, this._t0, t1 = slope3(this, x, y)); break;\n    }\n\n    this._x0 = this._x1, this._x1 = x;\n    this._y0 = this._y1, this._y1 = y;\n    this._t0 = t1;\n  }\n}\n\nfunction MonotoneY(context) {\n  this._context = new ReflectContext(context);\n}\n\n(MonotoneY.prototype = Object.create(MonotoneX.prototype)).point = function(x, y) {\n  MonotoneX.prototype.point.call(this, y, x);\n};\n\nfunction ReflectContext(context) {\n  this._context = context;\n}\n\nReflectContext.prototype = {\n  moveTo: function(x, y) { this._context.moveTo(y, x); },\n  closePath: function() { this._context.closePath(); },\n  lineTo: function(x, y) { this._context.lineTo(y, x); },\n  bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._context.bezierCurveTo(y1, x1, y2, x2, y, x); }\n};\n\nexport function monotoneX(context) {\n  return new MonotoneX(context);\n}\n\nexport function monotoneY(context) {\n  return new MonotoneY(context);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-shape/src/curve/monotone.js\n// module id = null\n// module chunks = ","function Natural(context) {\n  this._context = context;\n}\n\nNatural.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x = [];\n    this._y = [];\n  },\n  lineEnd: function() {\n    var x = this._x,\n        y = this._y,\n        n = x.length;\n\n    if (n) {\n      this._line ? this._context.lineTo(x[0], y[0]) : this._context.moveTo(x[0], y[0]);\n      if (n === 2) {\n        this._context.lineTo(x[1], y[1]);\n      } else {\n        var px = controlPoints(x),\n            py = controlPoints(y);\n        for (var i0 = 0, i1 = 1; i1 < n; ++i0, ++i1) {\n          this._context.bezierCurveTo(px[0][i0], py[0][i0], px[1][i0], py[1][i0], x[i1], y[i1]);\n        }\n      }\n    }\n\n    if (this._line || (this._line !== 0 && n === 1)) this._context.closePath();\n    this._line = 1 - this._line;\n    this._x = this._y = null;\n  },\n  point: function(x, y) {\n    this._x.push(+x);\n    this._y.push(+y);\n  }\n};\n\n// See https://www.particleincell.com/2012/bezier-splines/ for derivation.\nfunction controlPoints(x) {\n  var i,\n      n = x.length - 1,\n      m,\n      a = new Array(n),\n      b = new Array(n),\n      r = new Array(n);\n  a[0] = 0, b[0] = 2, r[0] = x[0] + 2 * x[1];\n  for (i = 1; i < n - 1; ++i) a[i] = 1, b[i] = 4, r[i] = 4 * x[i] + 2 * x[i + 1];\n  a[n - 1] = 2, b[n - 1] = 7, r[n - 1] = 8 * x[n - 1] + x[n];\n  for (i = 1; i < n; ++i) m = a[i] / b[i - 1], b[i] -= m, r[i] -= m * r[i - 1];\n  a[n - 1] = r[n - 1] / b[n - 1];\n  for (i = n - 2; i >= 0; --i) a[i] = (r[i] - a[i + 1]) / b[i];\n  b[n - 1] = (x[n] + a[n - 1]) / 2;\n  for (i = 0; i < n - 1; ++i) b[i] = 2 * x[i + 1] - a[i + 1];\n  return [a, b];\n}\n\nexport default function(context) {\n  return new Natural(context);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-shape/src/curve/natural.js\n// module id = null\n// module chunks = ","function Step(context, t) {\n  this._context = context;\n  this._t = t;\n}\n\nStep.prototype = {\n  areaStart: function() {\n    this._line = 0;\n  },\n  areaEnd: function() {\n    this._line = NaN;\n  },\n  lineStart: function() {\n    this._x = this._y = NaN;\n    this._point = 0;\n  },\n  lineEnd: function() {\n    if (0 < this._t && this._t < 1 && this._point === 2) this._context.lineTo(this._x, this._y);\n    if (this._line || (this._line !== 0 && this._point === 1)) this._context.closePath();\n    if (this._line >= 0) this._t = 1 - this._t, this._line = 1 - this._line;\n  },\n  point: function(x, y) {\n    x = +x, y = +y;\n    switch (this._point) {\n      case 0: this._point = 1; this._line ? this._context.lineTo(x, y) : this._context.moveTo(x, y); break;\n      case 1: this._point = 2; // proceed\n      default: {\n        if (this._t <= 0) {\n          this._context.lineTo(this._x, y);\n          this._context.lineTo(x, y);\n        } else {\n          var x1 = this._x * (1 - this._t) + x * this._t;\n          this._context.lineTo(x1, this._y);\n          this._context.lineTo(x1, y);\n        }\n        break;\n      }\n    }\n    this._x = x, this._y = y;\n  }\n};\n\nexport default function(context) {\n  return new Step(context, 0.5);\n}\n\nexport function stepBefore(context) {\n  return new Step(context, 0);\n}\n\nexport function stepAfter(context) {\n  return new Step(context, 1);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-shape/src/curve/step.js\n// module id = null\n// module chunks = ","export default function(series, order) {\n  if (!((n = series.length) > 1)) return;\n  for (var i = 1, j, s0, s1 = series[order[0]], n, m = s1.length; i < n; ++i) {\n    s0 = s1, s1 = series[order[i]];\n    for (j = 0; j < m; ++j) {\n      s1[j][1] += s1[j][0] = isNaN(s0[j][1]) ? s0[j][0] : s0[j][1];\n    }\n  }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-shape/src/offset/none.js\n// module id = null\n// module chunks = ","export default function(series) {\n  var n = series.length, o = new Array(n);\n  while (--n >= 0) o[n] = n;\n  return o;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-shape/src/order/none.js\n// module id = null\n// module chunks = ","import {slice} from \"./array.js\";\nimport constant from \"./constant.js\";\nimport offsetNone from \"./offset/none.js\";\nimport orderNone from \"./order/none.js\";\n\nfunction stackValue(d, key) {\n  return d[key];\n}\n\nexport default function() {\n  var keys = constant([]),\n      order = orderNone,\n      offset = offsetNone,\n      value = stackValue;\n\n  function stack(data) {\n    var kz = keys.apply(this, arguments),\n        i,\n        m = data.length,\n        n = kz.length,\n        sz = new Array(n),\n        oz;\n\n    for (i = 0; i < n; ++i) {\n      for (var ki = kz[i], si = sz[i] = new Array(m), j = 0, sij; j < m; ++j) {\n        si[j] = sij = [0, +value(data[j], ki, j, data)];\n        sij.data = data[j];\n      }\n      si.key = ki;\n    }\n\n    for (i = 0, oz = order(sz); i < n; ++i) {\n      sz[oz[i]].index = i;\n    }\n\n    offset(sz, oz);\n    return sz;\n  }\n\n  stack.keys = function(_) {\n    return arguments.length ? (keys = typeof _ === \"function\" ? _ : constant(slice.call(_)), stack) : keys;\n  };\n\n  stack.value = function(_) {\n    return arguments.length ? (value = typeof _ === \"function\" ? _ : constant(+_), stack) : value;\n  };\n\n  stack.order = function(_) {\n    return arguments.length ? (order = _ == null ? orderNone : typeof _ === \"function\" ? _ : constant(slice.call(_)), stack) : order;\n  };\n\n  stack.offset = function(_) {\n    return arguments.length ? (offset = _ == null ? offsetNone : _, stack) : offset;\n  };\n\n  return stack;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-shape/src/stack.js\n// module id = null\n// module chunks = ","import none from \"./none.js\";\n\nexport default function(series, order) {\n  if (!((n = series.length) > 0)) return;\n  for (var i, n, j = 0, m = series[0].length, y; j < m; ++j) {\n    for (y = i = 0; i < n; ++i) y += series[i][j][1] || 0;\n    if (y) for (i = 0; i < n; ++i) series[i][j][1] /= y;\n  }\n  none(series, order);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-shape/src/offset/expand.js\n// module id = null\n// module chunks = ","export default function(series, order) {\n  if (!((n = series.length) > 0)) return;\n  for (var i, j = 0, d, dy, yp, yn, n, m = series[order[0]].length; j < m; ++j) {\n    for (yp = yn = 0, i = 0; i < n; ++i) {\n      if ((dy = (d = series[order[i]][j])[1] - d[0]) > 0) {\n        d[0] = yp, d[1] = yp += dy;\n      } else if (dy < 0) {\n        d[1] = yn, d[0] = yn += dy;\n      } else {\n        d[0] = 0, d[1] = dy;\n      }\n    }\n  }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-shape/src/offset/diverging.js\n// module id = null\n// module chunks = ","import none from \"./none.js\";\n\nexport default function(series, order) {\n  if (!((n = series.length) > 0)) return;\n  for (var j = 0, s0 = series[order[0]], n, m = s0.length; j < m; ++j) {\n    for (var i = 0, y = 0; i < n; ++i) y += series[i][j][1] || 0;\n    s0[j][1] += s0[j][0] = -y / 2;\n  }\n  none(series, order);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-shape/src/offset/silhouette.js\n// module id = null\n// module chunks = ","import none from \"./none.js\";\n\nexport default function(series, order) {\n  if (!((n = series.length) > 0) || !((m = (s0 = series[order[0]]).length) > 0)) return;\n  for (var y = 0, j = 1, s0, m, n; j < m; ++j) {\n    for (var i = 0, s1 = 0, s2 = 0; i < n; ++i) {\n      var si = series[order[i]],\n          sij0 = si[j][1] || 0,\n          sij1 = si[j - 1][1] || 0,\n          s3 = (sij0 - sij1) / 2;\n      for (var k = 0; k < i; ++k) {\n        var sk = series[order[k]],\n            skj0 = sk[j][1] || 0,\n            skj1 = sk[j - 1][1] || 0;\n        s3 += skj0 - skj1;\n      }\n      s1 += sij0, s2 += s3 * sij0;\n    }\n    s0[j - 1][1] += s0[j - 1][0] = y;\n    if (s1) y -= s2 / s1;\n  }\n  s0[j - 1][1] += s0[j - 1][0] = y;\n  none(series, order);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-shape/src/offset/wiggle.js\n// module id = null\n// module chunks = ","import none from \"./none.js\";\n\nexport default function(series) {\n  var peaks = series.map(peak);\n  return none(series).sort(function(a, b) { return peaks[a] - peaks[b]; });\n}\n\nfunction peak(series) {\n  var i = -1, j = 0, n = series.length, vi, vj = -Infinity;\n  while (++i < n) if ((vi = +series[i][1]) > vj) vj = vi, j = i;\n  return j;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-shape/src/order/appearance.js\n// module id = null\n// module chunks = ","import none from \"./none.js\";\n\nexport default function(series) {\n  var sums = series.map(sum);\n  return none(series).sort(function(a, b) { return sums[a] - sums[b]; });\n}\n\nexport function sum(series) {\n  var s = 0, i = -1, n = series.length, v;\n  while (++i < n) if (v = +series[i][1]) s += v;\n  return s;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-shape/src/order/ascending.js\n// module id = null\n// module chunks = ","import ascending from \"./ascending.js\";\n\nexport default function(series) {\n  return ascending(series).reverse();\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-shape/src/order/descending.js\n// module id = null\n// module chunks = ","import appearance from \"./appearance.js\";\nimport {sum} from \"./ascending.js\";\n\nexport default function(series) {\n  var n = series.length,\n      i,\n      j,\n      sums = series.map(sum),\n      order = appearance(series),\n      top = 0,\n      bottom = 0,\n      tops = [],\n      bottoms = [];\n\n  for (i = 0; i < n; ++i) {\n    j = order[i];\n    if (top < bottom) {\n      top += sums[j];\n      tops.push(j);\n    } else {\n      bottom += sums[j];\n      bottoms.push(j);\n    }\n  }\n\n  return bottoms.reverse().concat(tops);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-shape/src/order/insideOut.js\n// module id = null\n// module chunks = ","import none from \"./none.js\";\n\nexport default function(series) {\n  return none(series).reverse();\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-shape/src/order/reverse.js\n// module id = null\n// module chunks = ","export {default as arc} from \"./arc.js\";\nexport {default as area} from \"./area.js\";\nexport {default as line} from \"./line.js\";\nexport {default as pie} from \"./pie.js\";\nexport {default as areaRadial, default as radialArea} from \"./areaRadial.js\"; // Note: radialArea is deprecated!\nexport {default as lineRadial, default as radialLine} from \"./lineRadial.js\"; // Note: radialLine is deprecated!\nexport {default as pointRadial} from \"./pointRadial.js\";\nexport {linkHorizontal, linkVertical, linkRadial} from \"./link/index.js\";\n\nexport {default as symbol, symbols} from \"./symbol.js\";\nexport {default as symbolCircle} from \"./symbol/circle.js\";\nexport {default as symbolCross} from \"./symbol/cross.js\";\nexport {default as symbolDiamond} from \"./symbol/diamond.js\";\nexport {default as symbolSquare} from \"./symbol/square.js\";\nexport {default as symbolStar} from \"./symbol/star.js\";\nexport {default as symbolTriangle} from \"./symbol/triangle.js\";\nexport {default as symbolWye} from \"./symbol/wye.js\";\n\nexport {default as curveBasisClosed} from \"./curve/basisClosed.js\";\nexport {default as curveBasisOpen} from \"./curve/basisOpen.js\";\nexport {default as curveBasis} from \"./curve/basis.js\";\nexport {default as curveBundle} from \"./curve/bundle.js\";\nexport {default as curveCardinalClosed} from \"./curve/cardinalClosed.js\";\nexport {default as curveCardinalOpen} from \"./curve/cardinalOpen.js\";\nexport {default as curveCardinal} from \"./curve/cardinal.js\";\nexport {default as curveCatmullRomClosed} from \"./curve/catmullRomClosed.js\";\nexport {default as curveCatmullRomOpen} from \"./curve/catmullRomOpen.js\";\nexport {default as curveCatmullRom} from \"./curve/catmullRom.js\";\nexport {default as curveLinearClosed} from \"./curve/linearClosed.js\";\nexport {default as curveLinear} from \"./curve/linear.js\";\nexport {monotoneX as curveMonotoneX, monotoneY as curveMonotoneY} from \"./curve/monotone.js\";\nexport {default as curveNatural} from \"./curve/natural.js\";\nexport {default as curveStep, stepAfter as curveStepAfter, stepBefore as curveStepBefore} from \"./curve/step.js\";\n\nexport {default as stack} from \"./stack.js\";\nexport {default as stackOffsetExpand} from \"./offset/expand.js\";\nexport {default as stackOffsetDiverging} from \"./offset/diverging.js\";\nexport {default as stackOffsetNone} from \"./offset/none.js\";\nexport {default as stackOffsetSilhouette} from \"./offset/silhouette.js\";\nexport {default as stackOffsetWiggle} from \"./offset/wiggle.js\";\nexport {default as stackOrderAppearance} from \"./order/appearance.js\";\nexport {default as stackOrderAscending} from \"./order/ascending.js\";\nexport {default as stackOrderDescending} from \"./order/descending.js\";\nexport {default as stackOrderInsideOut} from \"./order/insideOut.js\";\nexport {default as stackOrderNone} from \"./order/none.js\";\nexport {default as stackOrderReverse} from \"./order/reverse.js\";\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-shape/src/index.js\n// module id = null\n// module chunks = ","export default function(x) {\n  return function() {\n    return x;\n  };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-voronoi/src/constant.js\n// module id = null\n// module chunks = ","export function x(d) {\n  return d[0];\n}\n\nexport function y(d) {\n  return d[1];\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-voronoi/src/point.js\n// module id = null\n// module chunks = ","function RedBlackTree() {\n  this._ = null; // root node\n}\n\nexport function RedBlackNode(node) {\n  node.U = // parent node\n  node.C = // color - true for red, false for black\n  node.L = // left node\n  node.R = // right node\n  node.P = // previous node\n  node.N = null; // next node\n}\n\nRedBlackTree.prototype = {\n  constructor: RedBlackTree,\n\n  insert: function(after, node) {\n    var parent, grandpa, uncle;\n\n    if (after) {\n      node.P = after;\n      node.N = after.N;\n      if (after.N) after.N.P = node;\n      after.N = node;\n      if (after.R) {\n        after = after.R;\n        while (after.L) after = after.L;\n        after.L = node;\n      } else {\n        after.R = node;\n      }\n      parent = after;\n    } else if (this._) {\n      after = RedBlackFirst(this._);\n      node.P = null;\n      node.N = after;\n      after.P = after.L = node;\n      parent = after;\n    } else {\n      node.P = node.N = null;\n      this._ = node;\n      parent = null;\n    }\n    node.L = node.R = null;\n    node.U = parent;\n    node.C = true;\n\n    after = node;\n    while (parent && parent.C) {\n      grandpa = parent.U;\n      if (parent === grandpa.L) {\n        uncle = grandpa.R;\n        if (uncle && uncle.C) {\n          parent.C = uncle.C = false;\n          grandpa.C = true;\n          after = grandpa;\n        } else {\n          if (after === parent.R) {\n            RedBlackRotateLeft(this, parent);\n            after = parent;\n            parent = after.U;\n          }\n          parent.C = false;\n          grandpa.C = true;\n          RedBlackRotateRight(this, grandpa);\n        }\n      } else {\n        uncle = grandpa.L;\n        if (uncle && uncle.C) {\n          parent.C = uncle.C = false;\n          grandpa.C = true;\n          after = grandpa;\n        } else {\n          if (after === parent.L) {\n            RedBlackRotateRight(this, parent);\n            after = parent;\n            parent = after.U;\n          }\n          parent.C = false;\n          grandpa.C = true;\n          RedBlackRotateLeft(this, grandpa);\n        }\n      }\n      parent = after.U;\n    }\n    this._.C = false;\n  },\n\n  remove: function(node) {\n    if (node.N) node.N.P = node.P;\n    if (node.P) node.P.N = node.N;\n    node.N = node.P = null;\n\n    var parent = node.U,\n        sibling,\n        left = node.L,\n        right = node.R,\n        next,\n        red;\n\n    if (!left) next = right;\n    else if (!right) next = left;\n    else next = RedBlackFirst(right);\n\n    if (parent) {\n      if (parent.L === node) parent.L = next;\n      else parent.R = next;\n    } else {\n      this._ = next;\n    }\n\n    if (left && right) {\n      red = next.C;\n      next.C = node.C;\n      next.L = left;\n      left.U = next;\n      if (next !== right) {\n        parent = next.U;\n        next.U = node.U;\n        node = next.R;\n        parent.L = node;\n        next.R = right;\n        right.U = next;\n      } else {\n        next.U = parent;\n        parent = next;\n        node = next.R;\n      }\n    } else {\n      red = node.C;\n      node = next;\n    }\n\n    if (node) node.U = parent;\n    if (red) return;\n    if (node && node.C) { node.C = false; return; }\n\n    do {\n      if (node === this._) break;\n      if (node === parent.L) {\n        sibling = parent.R;\n        if (sibling.C) {\n          sibling.C = false;\n          parent.C = true;\n          RedBlackRotateLeft(this, parent);\n          sibling = parent.R;\n        }\n        if ((sibling.L && sibling.L.C)\n            || (sibling.R && sibling.R.C)) {\n          if (!sibling.R || !sibling.R.C) {\n            sibling.L.C = false;\n            sibling.C = true;\n            RedBlackRotateRight(this, sibling);\n            sibling = parent.R;\n          }\n          sibling.C = parent.C;\n          parent.C = sibling.R.C = false;\n          RedBlackRotateLeft(this, parent);\n          node = this._;\n          break;\n        }\n      } else {\n        sibling = parent.L;\n        if (sibling.C) {\n          sibling.C = false;\n          parent.C = true;\n          RedBlackRotateRight(this, parent);\n          sibling = parent.L;\n        }\n        if ((sibling.L && sibling.L.C)\n          || (sibling.R && sibling.R.C)) {\n          if (!sibling.L || !sibling.L.C) {\n            sibling.R.C = false;\n            sibling.C = true;\n            RedBlackRotateLeft(this, sibling);\n            sibling = parent.L;\n          }\n          sibling.C = parent.C;\n          parent.C = sibling.L.C = false;\n          RedBlackRotateRight(this, parent);\n          node = this._;\n          break;\n        }\n      }\n      sibling.C = true;\n      node = parent;\n      parent = parent.U;\n    } while (!node.C);\n\n    if (node) node.C = false;\n  }\n};\n\nfunction RedBlackRotateLeft(tree, node) {\n  var p = node,\n      q = node.R,\n      parent = p.U;\n\n  if (parent) {\n    if (parent.L === p) parent.L = q;\n    else parent.R = q;\n  } else {\n    tree._ = q;\n  }\n\n  q.U = parent;\n  p.U = q;\n  p.R = q.L;\n  if (p.R) p.R.U = p;\n  q.L = p;\n}\n\nfunction RedBlackRotateRight(tree, node) {\n  var p = node,\n      q = node.L,\n      parent = p.U;\n\n  if (parent) {\n    if (parent.L === p) parent.L = q;\n    else parent.R = q;\n  } else {\n    tree._ = q;\n  }\n\n  q.U = parent;\n  p.U = q;\n  p.L = q.R;\n  if (p.L) p.L.U = p;\n  q.R = p;\n}\n\nfunction RedBlackFirst(node) {\n  while (node.L) node = node.L;\n  return node;\n}\n\nexport default RedBlackTree;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-voronoi/src/RedBlackTree.js\n// module id = null\n// module chunks = ","import {cells, edges, epsilon} from \"./Diagram\";\n\nexport function createEdge(left, right, v0, v1) {\n  var edge = [null, null],\n      index = edges.push(edge) - 1;\n  edge.left = left;\n  edge.right = right;\n  if (v0) setEdgeEnd(edge, left, right, v0);\n  if (v1) setEdgeEnd(edge, right, left, v1);\n  cells[left.index].halfedges.push(index);\n  cells[right.index].halfedges.push(index);\n  return edge;\n}\n\nexport function createBorderEdge(left, v0, v1) {\n  var edge = [v0, v1];\n  edge.left = left;\n  return edge;\n}\n\nexport function setEdgeEnd(edge, left, right, vertex) {\n  if (!edge[0] && !edge[1]) {\n    edge[0] = vertex;\n    edge.left = left;\n    edge.right = right;\n  } else if (edge.left === right) {\n    edge[1] = vertex;\n  } else {\n    edge[0] = vertex;\n  }\n}\n\n// Liang–Barsky line clipping.\nfunction clipEdge(edge, x0, y0, x1, y1) {\n  var a = edge[0],\n      b = edge[1],\n      ax = a[0],\n      ay = a[1],\n      bx = b[0],\n      by = b[1],\n      t0 = 0,\n      t1 = 1,\n      dx = bx - ax,\n      dy = by - ay,\n      r;\n\n  r = x0 - ax;\n  if (!dx && r > 0) return;\n  r /= dx;\n  if (dx < 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  } else if (dx > 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  }\n\n  r = x1 - ax;\n  if (!dx && r < 0) return;\n  r /= dx;\n  if (dx < 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  } else if (dx > 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  }\n\n  r = y0 - ay;\n  if (!dy && r > 0) return;\n  r /= dy;\n  if (dy < 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  } else if (dy > 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  }\n\n  r = y1 - ay;\n  if (!dy && r < 0) return;\n  r /= dy;\n  if (dy < 0) {\n    if (r > t1) return;\n    if (r > t0) t0 = r;\n  } else if (dy > 0) {\n    if (r < t0) return;\n    if (r < t1) t1 = r;\n  }\n\n  if (!(t0 > 0) && !(t1 < 1)) return true; // TODO Better check?\n\n  if (t0 > 0) edge[0] = [ax + t0 * dx, ay + t0 * dy];\n  if (t1 < 1) edge[1] = [ax + t1 * dx, ay + t1 * dy];\n  return true;\n}\n\nfunction connectEdge(edge, x0, y0, x1, y1) {\n  var v1 = edge[1];\n  if (v1) return true;\n\n  var v0 = edge[0],\n      left = edge.left,\n      right = edge.right,\n      lx = left[0],\n      ly = left[1],\n      rx = right[0],\n      ry = right[1],\n      fx = (lx + rx) / 2,\n      fy = (ly + ry) / 2,\n      fm,\n      fb;\n\n  if (ry === ly) {\n    if (fx < x0 || fx >= x1) return;\n    if (lx > rx) {\n      if (!v0) v0 = [fx, y0];\n      else if (v0[1] >= y1) return;\n      v1 = [fx, y1];\n    } else {\n      if (!v0) v0 = [fx, y1];\n      else if (v0[1] < y0) return;\n      v1 = [fx, y0];\n    }\n  } else {\n    fm = (lx - rx) / (ry - ly);\n    fb = fy - fm * fx;\n    if (fm < -1 || fm > 1) {\n      if (lx > rx) {\n        if (!v0) v0 = [(y0 - fb) / fm, y0];\n        else if (v0[1] >= y1) return;\n        v1 = [(y1 - fb) / fm, y1];\n      } else {\n        if (!v0) v0 = [(y1 - fb) / fm, y1];\n        else if (v0[1] < y0) return;\n        v1 = [(y0 - fb) / fm, y0];\n      }\n    } else {\n      if (ly < ry) {\n        if (!v0) v0 = [x0, fm * x0 + fb];\n        else if (v0[0] >= x1) return;\n        v1 = [x1, fm * x1 + fb];\n      } else {\n        if (!v0) v0 = [x1, fm * x1 + fb];\n        else if (v0[0] < x0) return;\n        v1 = [x0, fm * x0 + fb];\n      }\n    }\n  }\n\n  edge[0] = v0;\n  edge[1] = v1;\n  return true;\n}\n\nexport function clipEdges(x0, y0, x1, y1) {\n  var i = edges.length,\n      edge;\n\n  while (i--) {\n    if (!connectEdge(edge = edges[i], x0, y0, x1, y1)\n        || !clipEdge(edge, x0, y0, x1, y1)\n        || !(Math.abs(edge[0][0] - edge[1][0]) > epsilon\n            || Math.abs(edge[0][1] - edge[1][1]) > epsilon)) {\n      delete edges[i];\n    }\n  }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-voronoi/src/Edge.js\n// module id = null\n// module chunks = ","import {createBorderEdge} from \"./Edge\";\nimport {cells, edges, epsilon} from \"./Diagram\";\n\nexport function createCell(site) {\n  return cells[site.index] = {\n    site: site,\n    halfedges: []\n  };\n}\n\nfunction cellHalfedgeAngle(cell, edge) {\n  var site = cell.site,\n      va = edge.left,\n      vb = edge.right;\n  if (site === vb) vb = va, va = site;\n  if (vb) return Math.atan2(vb[1] - va[1], vb[0] - va[0]);\n  if (site === va) va = edge[1], vb = edge[0];\n  else va = edge[0], vb = edge[1];\n  return Math.atan2(va[0] - vb[0], vb[1] - va[1]);\n}\n\nexport function cellHalfedgeStart(cell, edge) {\n  return edge[+(edge.left !== cell.site)];\n}\n\nexport function cellHalfedgeEnd(cell, edge) {\n  return edge[+(edge.left === cell.site)];\n}\n\nexport function sortCellHalfedges() {\n  for (var i = 0, n = cells.length, cell, halfedges, j, m; i < n; ++i) {\n    if ((cell = cells[i]) && (m = (halfedges = cell.halfedges).length)) {\n      var index = new Array(m),\n          array = new Array(m);\n      for (j = 0; j < m; ++j) index[j] = j, array[j] = cellHalfedgeAngle(cell, edges[halfedges[j]]);\n      index.sort(function(i, j) { return array[j] - array[i]; });\n      for (j = 0; j < m; ++j) array[j] = halfedges[index[j]];\n      for (j = 0; j < m; ++j) halfedges[j] = array[j];\n    }\n  }\n}\n\nexport function clipCells(x0, y0, x1, y1) {\n  var nCells = cells.length,\n      iCell,\n      cell,\n      site,\n      iHalfedge,\n      halfedges,\n      nHalfedges,\n      start,\n      startX,\n      startY,\n      end,\n      endX,\n      endY,\n      cover = true;\n\n  for (iCell = 0; iCell < nCells; ++iCell) {\n    if (cell = cells[iCell]) {\n      site = cell.site;\n      halfedges = cell.halfedges;\n      iHalfedge = halfedges.length;\n\n      // Remove any dangling clipped edges.\n      while (iHalfedge--) {\n        if (!edges[halfedges[iHalfedge]]) {\n          halfedges.splice(iHalfedge, 1);\n        }\n      }\n\n      // Insert any border edges as necessary.\n      iHalfedge = 0, nHalfedges = halfedges.length;\n      while (iHalfedge < nHalfedges) {\n        end = cellHalfedgeEnd(cell, edges[halfedges[iHalfedge]]), endX = end[0], endY = end[1];\n        start = cellHalfedgeStart(cell, edges[halfedges[++iHalfedge % nHalfedges]]), startX = start[0], startY = start[1];\n        if (Math.abs(endX - startX) > epsilon || Math.abs(endY - startY) > epsilon) {\n          halfedges.splice(iHalfedge, 0, edges.push(createBorderEdge(site, end,\n              Math.abs(endX - x0) < epsilon && y1 - endY > epsilon ? [x0, Math.abs(startX - x0) < epsilon ? startY : y1]\n              : Math.abs(endY - y1) < epsilon && x1 - endX > epsilon ? [Math.abs(startY - y1) < epsilon ? startX : x1, y1]\n              : Math.abs(endX - x1) < epsilon && endY - y0 > epsilon ? [x1, Math.abs(startX - x1) < epsilon ? startY : y0]\n              : Math.abs(endY - y0) < epsilon && endX - x0 > epsilon ? [Math.abs(startY - y0) < epsilon ? startX : x0, y0]\n              : null)) - 1);\n          ++nHalfedges;\n        }\n      }\n\n      if (nHalfedges) cover = false;\n    }\n  }\n\n  // If there weren’t any edges, have the closest site cover the extent.\n  // It doesn’t matter which corner of the extent we measure!\n  if (cover) {\n    var dx, dy, d2, dc = Infinity;\n\n    for (iCell = 0, cover = null; iCell < nCells; ++iCell) {\n      if (cell = cells[iCell]) {\n        site = cell.site;\n        dx = site[0] - x0;\n        dy = site[1] - y0;\n        d2 = dx * dx + dy * dy;\n        if (d2 < dc) dc = d2, cover = cell;\n      }\n    }\n\n    if (cover) {\n      var v00 = [x0, y0], v01 = [x0, y1], v11 = [x1, y1], v10 = [x1, y0];\n      cover.halfedges.push(\n        edges.push(createBorderEdge(site = cover.site, v00, v01)) - 1,\n        edges.push(createBorderEdge(site, v01, v11)) - 1,\n        edges.push(createBorderEdge(site, v11, v10)) - 1,\n        edges.push(createBorderEdge(site, v10, v00)) - 1\n      );\n    }\n  }\n\n  // Lastly delete any cells with no edges; these were entirely clipped.\n  for (iCell = 0; iCell < nCells; ++iCell) {\n    if (cell = cells[iCell]) {\n      if (!cell.halfedges.length) {\n        delete cells[iCell];\n      }\n    }\n  }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-voronoi/src/Cell.js\n// module id = null\n// module chunks = ","import {RedBlackNode} from \"./RedBlackTree\";\nimport {circles, epsilon2} from \"./Diagram\";\n\nvar circlePool = [];\n\nexport var firstCircle;\n\nfunction Circle() {\n  RedBlackNode(this);\n  this.x =\n  this.y =\n  this.arc =\n  this.site =\n  this.cy = null;\n}\n\nexport function attachCircle(arc) {\n  var lArc = arc.P,\n      rArc = arc.N;\n\n  if (!lArc || !rArc) return;\n\n  var lSite = lArc.site,\n      cSite = arc.site,\n      rSite = rArc.site;\n\n  if (lSite === rSite) return;\n\n  var bx = cSite[0],\n      by = cSite[1],\n      ax = lSite[0] - bx,\n      ay = lSite[1] - by,\n      cx = rSite[0] - bx,\n      cy = rSite[1] - by;\n\n  var d = 2 * (ax * cy - ay * cx);\n  if (d >= -epsilon2) return;\n\n  var ha = ax * ax + ay * ay,\n      hc = cx * cx + cy * cy,\n      x = (cy * ha - ay * hc) / d,\n      y = (ax * hc - cx * ha) / d;\n\n  var circle = circlePool.pop() || new Circle;\n  circle.arc = arc;\n  circle.site = cSite;\n  circle.x = x + bx;\n  circle.y = (circle.cy = y + by) + Math.sqrt(x * x + y * y); // y bottom\n\n  arc.circle = circle;\n\n  var before = null,\n      node = circles._;\n\n  while (node) {\n    if (circle.y < node.y || (circle.y === node.y && circle.x <= node.x)) {\n      if (node.L) node = node.L;\n      else { before = node.P; break; }\n    } else {\n      if (node.R) node = node.R;\n      else { before = node; break; }\n    }\n  }\n\n  circles.insert(before, circle);\n  if (!before) firstCircle = circle;\n}\n\nexport function detachCircle(arc) {\n  var circle = arc.circle;\n  if (circle) {\n    if (!circle.P) firstCircle = circle.N;\n    circles.remove(circle);\n    circlePool.push(circle);\n    RedBlackNode(circle);\n    arc.circle = null;\n  }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-voronoi/src/Circle.js\n// module id = null\n// module chunks = ","import {RedBlackNode} from \"./RedBlackTree\";\nimport {createCell} from \"./Cell\";\nimport {attachCircle, detachCircle} from \"./Circle\";\nimport {createEdge, setEdgeEnd} from \"./Edge\";\nimport {beaches, epsilon} from \"./Diagram\";\n\nvar beachPool = [];\n\nfunction Beach() {\n  RedBlackNode(this);\n  this.edge =\n  this.site =\n  this.circle = null;\n}\n\nfunction createBeach(site) {\n  var beach = beachPool.pop() || new Beach;\n  beach.site = site;\n  return beach;\n}\n\nfunction detachBeach(beach) {\n  detachCircle(beach);\n  beaches.remove(beach);\n  beachPool.push(beach);\n  RedBlackNode(beach);\n}\n\nexport function removeBeach(beach) {\n  var circle = beach.circle,\n      x = circle.x,\n      y = circle.cy,\n      vertex = [x, y],\n      previous = beach.P,\n      next = beach.N,\n      disappearing = [beach];\n\n  detachBeach(beach);\n\n  var lArc = previous;\n  while (lArc.circle\n      && Math.abs(x - lArc.circle.x) < epsilon\n      && Math.abs(y - lArc.circle.cy) < epsilon) {\n    previous = lArc.P;\n    disappearing.unshift(lArc);\n    detachBeach(lArc);\n    lArc = previous;\n  }\n\n  disappearing.unshift(lArc);\n  detachCircle(lArc);\n\n  var rArc = next;\n  while (rArc.circle\n      && Math.abs(x - rArc.circle.x) < epsilon\n      && Math.abs(y - rArc.circle.cy) < epsilon) {\n    next = rArc.N;\n    disappearing.push(rArc);\n    detachBeach(rArc);\n    rArc = next;\n  }\n\n  disappearing.push(rArc);\n  detachCircle(rArc);\n\n  var nArcs = disappearing.length,\n      iArc;\n  for (iArc = 1; iArc < nArcs; ++iArc) {\n    rArc = disappearing[iArc];\n    lArc = disappearing[iArc - 1];\n    setEdgeEnd(rArc.edge, lArc.site, rArc.site, vertex);\n  }\n\n  lArc = disappearing[0];\n  rArc = disappearing[nArcs - 1];\n  rArc.edge = createEdge(lArc.site, rArc.site, null, vertex);\n\n  attachCircle(lArc);\n  attachCircle(rArc);\n}\n\nexport function addBeach(site) {\n  var x = site[0],\n      directrix = site[1],\n      lArc,\n      rArc,\n      dxl,\n      dxr,\n      node = beaches._;\n\n  while (node) {\n    dxl = leftBreakPoint(node, directrix) - x;\n    if (dxl > epsilon) node = node.L; else {\n      dxr = x - rightBreakPoint(node, directrix);\n      if (dxr > epsilon) {\n        if (!node.R) {\n          lArc = node;\n          break;\n        }\n        node = node.R;\n      } else {\n        if (dxl > -epsilon) {\n          lArc = node.P;\n          rArc = node;\n        } else if (dxr > -epsilon) {\n          lArc = node;\n          rArc = node.N;\n        } else {\n          lArc = rArc = node;\n        }\n        break;\n      }\n    }\n  }\n\n  createCell(site);\n  var newArc = createBeach(site);\n  beaches.insert(lArc, newArc);\n\n  if (!lArc && !rArc) return;\n\n  if (lArc === rArc) {\n    detachCircle(lArc);\n    rArc = createBeach(lArc.site);\n    beaches.insert(newArc, rArc);\n    newArc.edge = rArc.edge = createEdge(lArc.site, newArc.site);\n    attachCircle(lArc);\n    attachCircle(rArc);\n    return;\n  }\n\n  if (!rArc) { // && lArc\n    newArc.edge = createEdge(lArc.site, newArc.site);\n    return;\n  }\n\n  // else lArc !== rArc\n  detachCircle(lArc);\n  detachCircle(rArc);\n\n  var lSite = lArc.site,\n      ax = lSite[0],\n      ay = lSite[1],\n      bx = site[0] - ax,\n      by = site[1] - ay,\n      rSite = rArc.site,\n      cx = rSite[0] - ax,\n      cy = rSite[1] - ay,\n      d = 2 * (bx * cy - by * cx),\n      hb = bx * bx + by * by,\n      hc = cx * cx + cy * cy,\n      vertex = [(cy * hb - by * hc) / d + ax, (bx * hc - cx * hb) / d + ay];\n\n  setEdgeEnd(rArc.edge, lSite, rSite, vertex);\n  newArc.edge = createEdge(lSite, site, null, vertex);\n  rArc.edge = createEdge(site, rSite, null, vertex);\n  attachCircle(lArc);\n  attachCircle(rArc);\n}\n\nfunction leftBreakPoint(arc, directrix) {\n  var site = arc.site,\n      rfocx = site[0],\n      rfocy = site[1],\n      pby2 = rfocy - directrix;\n\n  if (!pby2) return rfocx;\n\n  var lArc = arc.P;\n  if (!lArc) return -Infinity;\n\n  site = lArc.site;\n  var lfocx = site[0],\n      lfocy = site[1],\n      plby2 = lfocy - directrix;\n\n  if (!plby2) return lfocx;\n\n  var hl = lfocx - rfocx,\n      aby2 = 1 / pby2 - 1 / plby2,\n      b = hl / plby2;\n\n  if (aby2) return (-b + Math.sqrt(b * b - 2 * aby2 * (hl * hl / (-2 * plby2) - lfocy + plby2 / 2 + rfocy - pby2 / 2))) / aby2 + rfocx;\n\n  return (rfocx + lfocx) / 2;\n}\n\nfunction rightBreakPoint(arc, directrix) {\n  var rArc = arc.N;\n  if (rArc) return leftBreakPoint(rArc, directrix);\n  var site = arc.site;\n  return site[1] === directrix ? site[0] : Infinity;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-voronoi/src/Beach.js\n// module id = null\n// module chunks = ","import {addBeach, removeBeach} from \"./Beach\";\nimport {sortCellHalfedges, cellHalfedgeStart, clipCells} from \"./Cell\";\nimport {firstCircle} from \"./Circle\";\nimport {clipEdges} from \"./Edge\";\nimport RedBlackTree from \"./RedBlackTree\";\n\nexport var epsilon = 1e-6;\nexport var epsilon2 = 1e-12;\nexport var beaches;\nexport var cells;\nexport var circles;\nexport var edges;\n\nfunction triangleArea(a, b, c) {\n  return (a[0] - c[0]) * (b[1] - a[1]) - (a[0] - b[0]) * (c[1] - a[1]);\n}\n\nfunction lexicographic(a, b) {\n  return b[1] - a[1]\n      || b[0] - a[0];\n}\n\nexport default function Diagram(sites, extent) {\n  var site = sites.sort(lexicographic).pop(),\n      x,\n      y,\n      circle;\n\n  edges = [];\n  cells = new Array(sites.length);\n  beaches = new RedBlackTree;\n  circles = new RedBlackTree;\n\n  while (true) {\n    circle = firstCircle;\n    if (site && (!circle || site[1] < circle.y || (site[1] === circle.y && site[0] < circle.x))) {\n      if (site[0] !== x || site[1] !== y) {\n        addBeach(site);\n        x = site[0], y = site[1];\n      }\n      site = sites.pop();\n    } else if (circle) {\n      removeBeach(circle.arc);\n    } else {\n      break;\n    }\n  }\n\n  sortCellHalfedges();\n\n  if (extent) {\n    var x0 = +extent[0][0],\n        y0 = +extent[0][1],\n        x1 = +extent[1][0],\n        y1 = +extent[1][1];\n    clipEdges(x0, y0, x1, y1);\n    clipCells(x0, y0, x1, y1);\n  }\n\n  this.edges = edges;\n  this.cells = cells;\n\n  beaches =\n  circles =\n  edges =\n  cells = null;\n}\n\nDiagram.prototype = {\n  constructor: Diagram,\n\n  polygons: function() {\n    var edges = this.edges;\n\n    return this.cells.map(function(cell) {\n      var polygon = cell.halfedges.map(function(i) { return cellHalfedgeStart(cell, edges[i]); });\n      polygon.data = cell.site.data;\n      return polygon;\n    });\n  },\n\n  triangles: function() {\n    var triangles = [],\n        edges = this.edges;\n\n    this.cells.forEach(function(cell, i) {\n      if (!(m = (halfedges = cell.halfedges).length)) return;\n      var site = cell.site,\n          halfedges,\n          j = -1,\n          m,\n          s0,\n          e1 = edges[halfedges[m - 1]],\n          s1 = e1.left === site ? e1.right : e1.left;\n\n      while (++j < m) {\n        s0 = s1;\n        e1 = edges[halfedges[j]];\n        s1 = e1.left === site ? e1.right : e1.left;\n        if (s0 && s1 && i < s0.index && i < s1.index && triangleArea(site, s0, s1) < 0) {\n          triangles.push([site.data, s0.data, s1.data]);\n        }\n      }\n    });\n\n    return triangles;\n  },\n\n  links: function() {\n    return this.edges.filter(function(edge) {\n      return edge.right;\n    }).map(function(edge) {\n      return {\n        source: edge.left.data,\n        target: edge.right.data\n      };\n    });\n  },\n\n  find: function(x, y, radius) {\n    var that = this, i0, i1 = that._found || 0, n = that.cells.length, cell;\n\n    // Use the previously-found cell, or start with an arbitrary one.\n    while (!(cell = that.cells[i1])) if (++i1 >= n) return null;\n    var dx = x - cell.site[0], dy = y - cell.site[1], d2 = dx * dx + dy * dy;\n\n    // Traverse the half-edges to find a closer cell, if any.\n    do {\n      cell = that.cells[i0 = i1], i1 = null;\n      cell.halfedges.forEach(function(e) {\n        var edge = that.edges[e], v = edge.left;\n        if ((v === cell.site || !v) && !(v = edge.right)) return;\n        var vx = x - v[0], vy = y - v[1], v2 = vx * vx + vy * vy;\n        if (v2 < d2) d2 = v2, i1 = v.index;\n      });\n    } while (i1 !== null);\n\n    that._found = i0;\n\n    return radius == null || d2 <= radius * radius ? cell.site : null;\n  }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-voronoi/src/Diagram.js\n// module id = null\n// module chunks = ","import constant from \"./constant\";\nimport {x as pointX, y as pointY} from \"./point\";\nimport Diagram, {epsilon} from \"./Diagram\";\n\nexport default function() {\n  var x = pointX,\n      y = pointY,\n      extent = null;\n\n  function voronoi(data) {\n    return new Diagram(data.map(function(d, i) {\n      var s = [Math.round(x(d, i, data) / epsilon) * epsilon, Math.round(y(d, i, data) / epsilon) * epsilon];\n      s.index = i;\n      s.data = d;\n      return s;\n    }), extent);\n  }\n\n  voronoi.polygons = function(data) {\n    return voronoi(data).polygons();\n  };\n\n  voronoi.links = function(data) {\n    return voronoi(data).links();\n  };\n\n  voronoi.triangles = function(data) {\n    return voronoi(data).triangles();\n  };\n\n  voronoi.x = function(_) {\n    return arguments.length ? (x = typeof _ === \"function\" ? _ : constant(+_), voronoi) : x;\n  };\n\n  voronoi.y = function(_) {\n    return arguments.length ? (y = typeof _ === \"function\" ? _ : constant(+_), voronoi) : y;\n  };\n\n  voronoi.extent = function(_) {\n    return arguments.length ? (extent = _ == null ? null : [[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]], voronoi) : extent && [[extent[0][0], extent[0][1]], [extent[1][0], extent[1][1]]];\n  };\n\n  voronoi.size = function(_) {\n    return arguments.length ? (extent = _ == null ? null : [[0, 0], [+_[0], +_[1]]], voronoi) : extent && [extent[1][0] - extent[0][0], extent[1][1] - extent[0][1]];\n  };\n\n  return voronoi;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-voronoi/src/voronoi.js\n// module id = null\n// module chunks = ","export {default as voronoi} from \"./voronoi\";\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-voronoi/src/index.js\n// module id = null\n// module chunks = ","export default function(x) {\n  return function() {\n    return x;\n  };\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-zoom/src/constant.js\n// module id = null\n// module chunks = ","export default function ZoomEvent(target, type, transform) {\n  this.target = target;\n  this.type = type;\n  this.transform = transform;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-zoom/src/event.js\n// module id = null\n// module chunks = ","export function Transform(k, x, y) {\n  this.k = k;\n  this.x = x;\n  this.y = y;\n}\n\nTransform.prototype = {\n  constructor: Transform,\n  scale: function(k) {\n    return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n  },\n  translate: function(x, y) {\n    return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n  },\n  apply: function(point) {\n    return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n  },\n  applyX: function(x) {\n    return x * this.k + this.x;\n  },\n  applyY: function(y) {\n    return y * this.k + this.y;\n  },\n  invert: function(location) {\n    return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n  },\n  invertX: function(x) {\n    return (x - this.x) / this.k;\n  },\n  invertY: function(y) {\n    return (y - this.y) / this.k;\n  },\n  rescaleX: function(x) {\n    return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n  },\n  rescaleY: function(y) {\n    return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n  },\n  toString: function() {\n    return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n  }\n};\n\nexport var identity = new Transform(1, 0, 0);\n\ntransform.prototype = Transform.prototype;\n\nexport default function transform(node) {\n  while (!node.__zoom) if (!(node = node.parentNode)) return identity;\n  return node.__zoom;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-zoom/src/transform.js\n// module id = null\n// module chunks = ","import {event} from \"d3-selection\";\n\nexport function nopropagation() {\n  event.stopImmediatePropagation();\n}\n\nexport default function() {\n  event.preventDefault();\n  event.stopImmediatePropagation();\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-zoom/src/noevent.js\n// module id = null\n// module chunks = ","import {dispatch} from \"d3-dispatch\";\nimport {dragDisable, dragEnable} from \"d3-drag\";\nimport {interpolateZoom} from \"d3-interpolate\";\nimport {event, customEvent, select, mouse, touch} from \"d3-selection\";\nimport {interrupt} from \"d3-transition\";\nimport constant from \"./constant.js\";\nimport ZoomEvent from \"./event.js\";\nimport {Transform, identity} from \"./transform.js\";\nimport noevent, {nopropagation} from \"./noevent.js\";\n\n// Ignore right-click, since that should open the context menu.\nfunction defaultFilter() {\n  return !event.ctrlKey && !event.button;\n}\n\nfunction defaultExtent() {\n  var e = this;\n  if (e instanceof SVGElement) {\n    e = e.ownerSVGElement || e;\n    if (e.hasAttribute(\"viewBox\")) {\n      e = e.viewBox.baseVal;\n      return [[e.x, e.y], [e.x + e.width, e.y + e.height]];\n    }\n    return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]];\n  }\n  return [[0, 0], [e.clientWidth, e.clientHeight]];\n}\n\nfunction defaultTransform() {\n  return this.__zoom || identity;\n}\n\nfunction defaultWheelDelta() {\n  return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 0.002);\n}\n\nfunction defaultTouchable() {\n  return navigator.maxTouchPoints || (\"ontouchstart\" in this);\n}\n\nfunction defaultConstrain(transform, extent, translateExtent) {\n  var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0],\n      dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0],\n      dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1],\n      dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1];\n  return transform.translate(\n    dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1),\n    dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1)\n  );\n}\n\nexport default function() {\n  var filter = defaultFilter,\n      extent = defaultExtent,\n      constrain = defaultConstrain,\n      wheelDelta = defaultWheelDelta,\n      touchable = defaultTouchable,\n      scaleExtent = [0, Infinity],\n      translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]],\n      duration = 250,\n      interpolate = interpolateZoom,\n      listeners = dispatch(\"start\", \"zoom\", \"end\"),\n      touchstarting,\n      touchending,\n      touchDelay = 500,\n      wheelDelay = 150,\n      clickDistance2 = 0;\n\n  function zoom(selection) {\n    selection\n        .property(\"__zoom\", defaultTransform)\n        .on(\"wheel.zoom\", wheeled)\n        .on(\"mousedown.zoom\", mousedowned)\n        .on(\"dblclick.zoom\", dblclicked)\n      .filter(touchable)\n        .on(\"touchstart.zoom\", touchstarted)\n        .on(\"touchmove.zoom\", touchmoved)\n        .on(\"touchend.zoom touchcancel.zoom\", touchended)\n        .style(\"touch-action\", \"none\")\n        .style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n  }\n\n  zoom.transform = function(collection, transform, point) {\n    var selection = collection.selection ? collection.selection() : collection;\n    selection.property(\"__zoom\", defaultTransform);\n    if (collection !== selection) {\n      schedule(collection, transform, point);\n    } else {\n      selection.interrupt().each(function() {\n        gesture(this, arguments)\n            .start()\n            .zoom(null, typeof transform === \"function\" ? transform.apply(this, arguments) : transform)\n            .end();\n      });\n    }\n  };\n\n  zoom.scaleBy = function(selection, k, p) {\n    zoom.scaleTo(selection, function() {\n      var k0 = this.__zoom.k,\n          k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n      return k0 * k1;\n    }, p);\n  };\n\n  zoom.scaleTo = function(selection, k, p) {\n    zoom.transform(selection, function() {\n      var e = extent.apply(this, arguments),\n          t0 = this.__zoom,\n          p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p,\n          p1 = t0.invert(p0),\n          k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n      return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent);\n    }, p);\n  };\n\n  zoom.translateBy = function(selection, x, y) {\n    zoom.transform(selection, function() {\n      return constrain(this.__zoom.translate(\n        typeof x === \"function\" ? x.apply(this, arguments) : x,\n        typeof y === \"function\" ? y.apply(this, arguments) : y\n      ), extent.apply(this, arguments), translateExtent);\n    });\n  };\n\n  zoom.translateTo = function(selection, x, y, p) {\n    zoom.transform(selection, function() {\n      var e = extent.apply(this, arguments),\n          t = this.__zoom,\n          p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p;\n      return constrain(identity.translate(p0[0], p0[1]).scale(t.k).translate(\n        typeof x === \"function\" ? -x.apply(this, arguments) : -x,\n        typeof y === \"function\" ? -y.apply(this, arguments) : -y\n      ), e, translateExtent);\n    }, p);\n  };\n\n  function scale(transform, k) {\n    k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));\n    return k === transform.k ? transform : new Transform(k, transform.x, transform.y);\n  }\n\n  function translate(transform, p0, p1) {\n    var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k;\n    return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y);\n  }\n\n  function centroid(extent) {\n    return [(+extent[0][0] + +extent[1][0]) / 2, (+extent[0][1] + +extent[1][1]) / 2];\n  }\n\n  function schedule(transition, transform, point) {\n    transition\n        .on(\"start.zoom\", function() { gesture(this, arguments).start(); })\n        .on(\"interrupt.zoom end.zoom\", function() { gesture(this, arguments).end(); })\n        .tween(\"zoom\", function() {\n          var that = this,\n              args = arguments,\n              g = gesture(that, args),\n              e = extent.apply(that, args),\n              p = point == null ? centroid(e) : typeof point === \"function\" ? point.apply(that, args) : point,\n              w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]),\n              a = that.__zoom,\n              b = typeof transform === \"function\" ? transform.apply(that, args) : transform,\n              i = interpolate(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));\n          return function(t) {\n            if (t === 1) t = b; // Avoid rounding error on end.\n            else { var l = i(t), k = w / l[2]; t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k); }\n            g.zoom(null, t);\n          };\n        });\n  }\n\n  function gesture(that, args, clean) {\n    return (!clean && that.__zooming) || new Gesture(that, args);\n  }\n\n  function Gesture(that, args) {\n    this.that = that;\n    this.args = args;\n    this.active = 0;\n    this.extent = extent.apply(that, args);\n    this.taps = 0;\n  }\n\n  Gesture.prototype = {\n    start: function() {\n      if (++this.active === 1) {\n        this.that.__zooming = this;\n        this.emit(\"start\");\n      }\n      return this;\n    },\n    zoom: function(key, transform) {\n      if (this.mouse && key !== \"mouse\") this.mouse[1] = transform.invert(this.mouse[0]);\n      if (this.touch0 && key !== \"touch\") this.touch0[1] = transform.invert(this.touch0[0]);\n      if (this.touch1 && key !== \"touch\") this.touch1[1] = transform.invert(this.touch1[0]);\n      this.that.__zoom = transform;\n      this.emit(\"zoom\");\n      return this;\n    },\n    end: function() {\n      if (--this.active === 0) {\n        delete this.that.__zooming;\n        this.emit(\"end\");\n      }\n      return this;\n    },\n    emit: function(type) {\n      customEvent(new ZoomEvent(zoom, type, this.that.__zoom), listeners.apply, listeners, [type, this.that, this.args]);\n    }\n  };\n\n  function wheeled() {\n    if (!filter.apply(this, arguments)) return;\n    var g = gesture(this, arguments),\n        t = this.__zoom,\n        k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))),\n        p = mouse(this);\n\n    // If the mouse is in the same location as before, reuse it.\n    // If there were recent wheel events, reset the wheel idle timeout.\n    if (g.wheel) {\n      if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {\n        g.mouse[1] = t.invert(g.mouse[0] = p);\n      }\n      clearTimeout(g.wheel);\n    }\n\n    // If this wheel event won’t trigger a transform change, ignore it.\n    else if (t.k === k) return;\n\n    // Otherwise, capture the mouse point and location at the start.\n    else {\n      g.mouse = [p, t.invert(p)];\n      interrupt(this);\n      g.start();\n    }\n\n    noevent();\n    g.wheel = setTimeout(wheelidled, wheelDelay);\n    g.zoom(\"mouse\", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));\n\n    function wheelidled() {\n      g.wheel = null;\n      g.end();\n    }\n  }\n\n  function mousedowned() {\n    if (touchending || !filter.apply(this, arguments)) return;\n    var g = gesture(this, arguments, true),\n        v = select(event.view).on(\"mousemove.zoom\", mousemoved, true).on(\"mouseup.zoom\", mouseupped, true),\n        p = mouse(this),\n        x0 = event.clientX,\n        y0 = event.clientY;\n\n    dragDisable(event.view);\n    nopropagation();\n    g.mouse = [p, this.__zoom.invert(p)];\n    interrupt(this);\n    g.start();\n\n    function mousemoved() {\n      noevent();\n      if (!g.moved) {\n        var dx = event.clientX - x0, dy = event.clientY - y0;\n        g.moved = dx * dx + dy * dy > clickDistance2;\n      }\n      g.zoom(\"mouse\", constrain(translate(g.that.__zoom, g.mouse[0] = mouse(g.that), g.mouse[1]), g.extent, translateExtent));\n    }\n\n    function mouseupped() {\n      v.on(\"mousemove.zoom mouseup.zoom\", null);\n      dragEnable(event.view, g.moved);\n      noevent();\n      g.end();\n    }\n  }\n\n  function dblclicked() {\n    if (!filter.apply(this, arguments)) return;\n    var t0 = this.__zoom,\n        p0 = mouse(this),\n        p1 = t0.invert(p0),\n        k1 = t0.k * (event.shiftKey ? 0.5 : 2),\n        t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, arguments), translateExtent);\n\n    noevent();\n    if (duration > 0) select(this).transition().duration(duration).call(schedule, t1, p0);\n    else select(this).call(zoom.transform, t1);\n  }\n\n  function touchstarted() {\n    if (!filter.apply(this, arguments)) return;\n    var touches = event.touches,\n        n = touches.length,\n        g = gesture(this, arguments, event.changedTouches.length === n),\n        started, i, t, p;\n\n    nopropagation();\n    for (i = 0; i < n; ++i) {\n      t = touches[i], p = touch(this, touches, t.identifier);\n      p = [p, this.__zoom.invert(p), t.identifier];\n      if (!g.touch0) g.touch0 = p, started = true, g.taps = 1 + !!touchstarting;\n      else if (!g.touch1 && g.touch0[2] !== p[2]) g.touch1 = p, g.taps = 0;\n    }\n\n    if (touchstarting) touchstarting = clearTimeout(touchstarting);\n\n    if (started) {\n      if (g.taps < 2) touchstarting = setTimeout(function() { touchstarting = null; }, touchDelay);\n      interrupt(this);\n      g.start();\n    }\n  }\n\n  function touchmoved() {\n    if (!this.__zooming) return;\n    var g = gesture(this, arguments),\n        touches = event.changedTouches,\n        n = touches.length, i, t, p, l;\n\n    noevent();\n    if (touchstarting) touchstarting = clearTimeout(touchstarting);\n    g.taps = 0;\n    for (i = 0; i < n; ++i) {\n      t = touches[i], p = touch(this, touches, t.identifier);\n      if (g.touch0 && g.touch0[2] === t.identifier) g.touch0[0] = p;\n      else if (g.touch1 && g.touch1[2] === t.identifier) g.touch1[0] = p;\n    }\n    t = g.that.__zoom;\n    if (g.touch1) {\n      var p0 = g.touch0[0], l0 = g.touch0[1],\n          p1 = g.touch1[0], l1 = g.touch1[1],\n          dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp,\n          dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;\n      t = scale(t, Math.sqrt(dp / dl));\n      p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];\n      l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];\n    }\n    else if (g.touch0) p = g.touch0[0], l = g.touch0[1];\n    else return;\n    g.zoom(\"touch\", constrain(translate(t, p, l), g.extent, translateExtent));\n  }\n\n  function touchended() {\n    if (!this.__zooming) return;\n    var g = gesture(this, arguments),\n        touches = event.changedTouches,\n        n = touches.length, i, t;\n\n    nopropagation();\n    if (touchending) clearTimeout(touchending);\n    touchending = setTimeout(function() { touchending = null; }, touchDelay);\n    for (i = 0; i < n; ++i) {\n      t = touches[i];\n      if (g.touch0 && g.touch0[2] === t.identifier) delete g.touch0;\n      else if (g.touch1 && g.touch1[2] === t.identifier) delete g.touch1;\n    }\n    if (g.touch1 && !g.touch0) g.touch0 = g.touch1, delete g.touch1;\n    if (g.touch0) g.touch0[1] = this.__zoom.invert(g.touch0[0]);\n    else {\n      g.end();\n      // If this was a dbltap, reroute to the (optional) dblclick.zoom handler.\n      if (g.taps === 2) {\n        var p = select(this).on(\"dblclick.zoom\");\n        if (p) p.apply(this, arguments);\n      }\n    }\n  }\n\n  zoom.wheelDelta = function(_) {\n    return arguments.length ? (wheelDelta = typeof _ === \"function\" ? _ : constant(+_), zoom) : wheelDelta;\n  };\n\n  zoom.filter = function(_) {\n    return arguments.length ? (filter = typeof _ === \"function\" ? _ : constant(!!_), zoom) : filter;\n  };\n\n  zoom.touchable = function(_) {\n    return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), zoom) : touchable;\n  };\n\n  zoom.extent = function(_) {\n    return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom) : extent;\n  };\n\n  zoom.scaleExtent = function(_) {\n    return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom) : [scaleExtent[0], scaleExtent[1]];\n  };\n\n  zoom.translateExtent = function(_) {\n    return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];\n  };\n\n  zoom.constrain = function(_) {\n    return arguments.length ? (constrain = _, zoom) : constrain;\n  };\n\n  zoom.duration = function(_) {\n    return arguments.length ? (duration = +_, zoom) : duration;\n  };\n\n  zoom.interpolate = function(_) {\n    return arguments.length ? (interpolate = _, zoom) : interpolate;\n  };\n\n  zoom.on = function() {\n    var value = listeners.on.apply(listeners, arguments);\n    return value === listeners ? zoom : value;\n  };\n\n  zoom.clickDistance = function(_) {\n    return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom) : Math.sqrt(clickDistance2);\n  };\n\n  return zoom;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-zoom/src/zoom.js\n// module id = null\n// module chunks = ","export {default as zoom} from \"./zoom.js\";\nexport {default as zoomTransform, identity as zoomIdentity} from \"./transform.js\";\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3-zoom/src/index.js\n// module id = null\n// module chunks = ","export {version} from \"./dist/package.js\";\nexport * from \"d3-array\";\nexport * from \"d3-axis\";\nexport * from \"d3-brush\";\nexport * from \"d3-chord\";\nexport * from \"d3-collection\";\nexport * from \"d3-color\";\nexport * from \"d3-contour\";\nexport * from \"d3-dispatch\";\nexport * from \"d3-drag\";\nexport * from \"d3-dsv\";\nexport * from \"d3-ease\";\nexport * from \"d3-fetch\";\nexport * from \"d3-force\";\nexport * from \"d3-format\";\nexport * from \"d3-geo\";\nexport * from \"d3-hierarchy\";\nexport * from \"d3-interpolate\";\nexport * from \"d3-path\";\nexport * from \"d3-polygon\";\nexport * from \"d3-quadtree\";\nexport * from \"d3-random\";\nexport * from \"d3-scale\";\nexport * from \"d3-scale-chromatic\";\nexport * from \"d3-selection\";\nexport * from \"d3-shape\";\nexport * from \"d3-time\";\nexport * from \"d3-time-format\";\nexport * from \"d3-timer\";\nexport * from \"d3-transition\";\nexport * from \"d3-voronoi\";\nexport * from \"d3-zoom\";\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/d3/index.js\n// module id = null\n// module chunks = ","import { ResponsiveFacetColumn } from './ResponsiveFacetColumn';\nimport { IResponsiveComponentOptions } from './ResponsiveComponentsManager';\nimport { FacetSlider } from '../FacetSlider/FacetSlider';\nimport { Dom } from '../../utils/Dom';\nimport { ResponsiveDropdown } from './ResponsiveDropdown/ResponsiveDropdown';\nimport { Component } from '../Base/Component';\nimport * as _ from 'underscore';\n\nexport class ResponsiveFacetSlider extends ResponsiveFacetColumn {\n  private facetSliders: FacetSlider[] = [];\n\n  public static init(root: HTMLElement, component, options: IResponsiveComponentOptions) {\n    ResponsiveFacetColumn.init(ResponsiveFacetSlider, root, component, options, FacetSlider.ID);\n  }\n\n  constructor(public coveoRoot: Dom, public ID: string, options: IResponsiveComponentOptions, responsiveDropdown?: ResponsiveDropdown) {\n    super(coveoRoot, ID, options, responsiveDropdown);\n    this.registerOnOpenHandler();\n  }\n\n  public registerComponent(accept: Component) {\n    super.registerComponent(accept);\n    if (accept instanceof FacetSlider) {\n      this.facetSliders.push(accept);\n      return true;\n    }\n    return false;\n  }\n\n  private registerOnOpenHandler() {\n    this.dropdown.registerOnOpenHandler(this.drawFacetSliderGraphs, this);\n  }\n\n  public drawFacetSliderGraphs() {\n    _.each(this.facetSliders, facetSlider => facetSlider.drawDelayedGraphData());\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResponsiveComponents/ResponsiveFacetSlider.ts","import { QueryController } from '../../Core';\nimport { IIndexFieldValue } from '../../rest/FieldValue';\nimport { IListFieldValuesRequest } from '../../rest/ListFieldValuesRequest';\nimport { IFieldOption } from '../Base/IComponentOptions';\nimport { IQuerySuggestionKeyword } from './FacetValueSuggestions';\n\n/**\n * Used to define a row returned by an [`IFacetValueSuggestionsProvider`]{@link IFacetValueSuggestionsProvider}.\n */\nexport interface IFacetValueSuggestionRow {\n  /**\n   * The score computed by the suggestions provider.\n   *\n   * A higher score means the results is more relevant.\n   */\n  score: IFacetValueSuggestionScore;\n\n  /**\n   * The field value returned by the suggestion that should be used to filter the results.\n   */\n  value: string;\n  /**\n   * The number of results matching the value for the given keyword.\n   */\n  numberOfResults: number;\n  /**\n   * The keyword that was used in the query to retrieve results.\n   */\n  keyword: IQuerySuggestionKeyword;\n  /**\n   * The field that was used for the suggestions.\n   */\n  field: IFieldOption;\n}\n\nexport interface IFacetValueSuggestionScore {\n  distanceFromTotalForField: number;\n}\n\ninterface IFacetValueSuggestionsResponse {\n  responses: IFacetValueBatchResponse[];\n  reference: IFacetValueReference;\n}\n\ninterface IFacetValueBatchResponse {\n  values: IIndexFieldValue[];\n  keyword: IQuerySuggestionKeyword;\n}\n\ntype IFacetValueReference = {\n  fieldsTotal: { [value: string]: number };\n  smallestTotal: number;\n};\n\n/**\n * Defines options for the [`FacetValueSuggestions`]{@link FacetValueSuggestions} component.\n */\nexport interface IFacetValueSuggestionsProviderOptions {\n  field: string;\n  expression?: string;\n}\n\n/**\n * Provides suggestions for the [`FacetValueSuggestions`]{@link FacetValueSuggestions} component.\n */\nexport interface IFacetValueSuggestionsProvider {\n  getSuggestions(valuesToSearch: IQuerySuggestionKeyword[]): Promise<IFacetValueSuggestionRow[]>;\n}\n\nexport class FacetValueSuggestionsProvider implements IFacetValueSuggestionsProvider {\n  constructor(private queryController: QueryController, private options: IFacetValueSuggestionsProviderOptions) {}\n\n  public async getSuggestions(valuesToSearch: IQuerySuggestionKeyword[]): Promise<IFacetValueSuggestionRow[]> {\n    const fieldsToQuery = await this.getFieldValuesToQuery(valuesToSearch);\n    return this.getAllSuggestionsRows(fieldsToQuery.responses, fieldsToQuery.reference);\n  }\n\n  private getAllSuggestionsRows(\n    fieldResponses: IFacetValueBatchResponse[],\n    fieldTotalReference: IFacetValueReference\n  ): IFacetValueSuggestionRow[] {\n    return fieldResponses.reduce((allValues, fieldResponse) => {\n      const suggestionRows = fieldResponse.values.map(indexFieldValue => {\n        return <IFacetValueSuggestionRow>{\n          numberOfResults: indexFieldValue.numberOfResults,\n          keyword: fieldResponse.keyword,\n          value: indexFieldValue.value,\n          score: this.computeScoreForSuggestionRow(indexFieldValue, fieldTotalReference),\n          field: this.options.field\n        };\n      });\n      return allValues.concat(suggestionRows);\n    }, []);\n  }\n\n  private async getFieldValuesToQuery(valuesToSearch: IQuerySuggestionKeyword[]): Promise<IFacetValueSuggestionsResponse> {\n    // The reference request will be used to get the maximum number of values for a given facet value.\n    const referenceValuesRequest = this.buildReferenceFieldValueRequest();\n    const queryParts = this.getQueryToExecuteParts();\n\n    if (this.options.expression) {\n      queryParts.push(this.options.expression);\n    }\n\n    const suggestionValuesRequests = valuesToSearch.map(keyword => {\n      const queryToExecute = [...queryParts, keyword.text].join(' ');\n      return this.buildListFieldValueRequest(queryToExecute);\n    });\n\n    const requests = [...suggestionValuesRequests, referenceValuesRequest];\n    const values = await this.queryController.getEndpoint().listFieldValuesBatch({\n      batch: requests\n    });\n\n    const reference = this.computeReferenceFromBatch(values.pop());\n    const responses: IFacetValueBatchResponse[] = values.map((value, i) => {\n      return <IFacetValueBatchResponse>{\n        keyword: valuesToSearch[i],\n        values: value\n      };\n    });\n\n    return <IFacetValueSuggestionsResponse>{\n      responses,\n      reference\n    };\n  }\n\n  private computeScoreForSuggestionRow(fieldValue: IIndexFieldValue, reference: IFacetValueReference): IFacetValueSuggestionScore {\n    const totalNumberForFieldValue = reference.fieldsTotal[fieldValue.value] || reference.smallestTotal;\n    const distanceFromTotalForField: number = (totalNumberForFieldValue - fieldValue.numberOfResults) / totalNumberForFieldValue * 100;\n    return {\n      distanceFromTotalForField\n    };\n  }\n\n  private computeReferenceFromBatch(batch: IIndexFieldValue[]): IFacetValueReference {\n    const fieldsTotal = {};\n    batch.forEach(value => (fieldsTotal[value.value] = value.numberOfResults));\n    return {\n      fieldsTotal: fieldsTotal,\n      smallestTotal: batch[batch.length - 1].numberOfResults\n    };\n  }\n\n  private buildListFieldValueRequest(queryToExecute: string): IListFieldValuesRequest {\n    return {\n      field: <string>this.options.field,\n      ignoreAccents: true,\n      maximumNumberOfValues: 3,\n      queryOverride: queryToExecute\n    };\n  }\n\n  private buildReferenceFieldValueRequest(): IListFieldValuesRequest {\n    return {\n      field: <string>this.options.field\n    };\n  }\n\n  private getQueryToExecuteParts(): string[] {\n    const lastQuery = this.queryController.getLastQuery();\n    const aqWithoutCurrentField =\n      lastQuery && lastQuery.aq ? this.removeFieldExpressionFromExpression(this.options.field.toString(), lastQuery.aq) : '';\n\n    return [aqWithoutCurrentField, lastQuery.cq].filter(part => !!part);\n  }\n\n  private removeFieldExpressionFromExpression(field: string, expression: string): string {\n    const expressionWithParenthesis = '([^)]*)';\n    const expressionAsSingleValue = '[^ ]*';\n    return expression\n      .replace(new RegExp(`${field}==${expressionWithParenthesis}`, 'gi'), '')\n      .replace(new RegExp(`${field}==${expressionAsSingleValue}`, 'gi'), '');\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/FacetValueSuggestions/FacetValueSuggestionsProvider.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_FieldTable.scss\n// module id = 620\n// module chunks = 31 88","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_HiddenQuery.scss\n// module id = 621\n// module chunks = 70 88","/// <reference path=\"HierarchicalFacet.ts\" />\n\nimport { FacetValuesList } from '../Facet/FacetValuesList';\nimport { FacetValue } from '../Facet/FacetValue';\nimport { HierarchicalFacet, IValueHierarchy } from './HierarchicalFacet';\nimport { IFacetValueElementKlass } from '../Facet/FacetValueElement';\nimport * as _ from 'underscore';\n\nexport class HierarchicalFacetValuesList extends FacetValuesList {\n  public hierarchyFacetValues: FacetValue[];\n\n  constructor(public facet: HierarchicalFacet, public facetValueElementKlass: IFacetValueElementKlass) {\n    super(facet, facetValueElementKlass);\n  }\n\n  public sortFacetValues(hierarchyFacetValues = this.hierarchyFacetValues): FacetValue[] {\n    if (!this.facet.shouldReshuffleFacetValuesClientSide) {\n      let sortArray = _.map(hierarchyFacetValues, (hierarchy: FacetValue, idx: number) => {\n        return {\n          hierarchy: hierarchy,\n          idx: idx\n        };\n      });\n\n      // If we exclude the top level, the alpha order is not respected (since it is done by the index, and the first level is omitted by client side code).\n      // Do the ordering client side, in the precise case where its alpha ordering and the starting level is not 0;\n      if (\n        this.facet.options.levelStart != 0 &&\n        this.facet.options.sortCriteria &&\n        this.facet.options.sortCriteria.toLowerCase().indexOf('alpha') != -1\n      ) {\n        let reversed = this.facet.options.sortCriteria.toLowerCase().indexOf('descending') != -1;\n\n        sortArray = sortArray.sort((first, second) => {\n          let firstInTopLevel =\n            _.find(this.facet.topLevelHierarchy, (hierarchy: IValueHierarchy) => {\n              return hierarchy.facetValue.value.toLowerCase() == first.hierarchy.value.toLowerCase();\n            }) != null;\n\n          let secondInTopLevel =\n            _.find(this.facet.topLevelHierarchy, (hierarchy: IValueHierarchy) => {\n              return hierarchy.facetValue.value.toLowerCase() == first.hierarchy.value.toLowerCase();\n            }) != null;\n\n          if (firstInTopLevel && secondInTopLevel) {\n            let firstValue = this.facet.getValueCaption(first.hierarchy);\n            let secondValue = this.facet.getValueCaption(second.hierarchy);\n            let compared = firstValue.localeCompare(secondValue);\n            return reversed ? -1 * compared : compared;\n          }\n          return first.idx - second.idx;\n        });\n      }\n\n      // Normally facet values are sorted by selected first, then inactive, then excluded values.\n      // For hierarchical, we want selected first, then those that have childs selected, then normal sorting.\n      sortArray = sortArray.sort((first, second) => {\n        if (first.hierarchy.selected === second.hierarchy.selected) {\n          let firstFromHierarchy = this.facet.getValueFromHierarchy(first.hierarchy);\n          let secondFromHierarchy = this.facet.getValueFromHierarchy(second.hierarchy);\n          if (firstFromHierarchy.hasChildSelected === secondFromHierarchy.hasChildSelected) {\n            return first.idx - second.idx;\n          } else {\n            return firstFromHierarchy.hasChildSelected ? -1 : 1;\n          }\n        } else {\n          return first.hierarchy.selected ? -1 : 1;\n        }\n      });\n      return _.pluck(sortArray, 'hierarchy');\n    }\n    return hierarchyFacetValues;\n  }\n\n  protected getValuesToBuildWith() {\n    if (this.facet.shouldReshuffleFacetValuesClientSide) {\n      return this.hierarchyFacetValues;\n    } else {\n      return this.sortFacetValues();\n    }\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/HierarchicalFacet/HierarchicalFacetValuesList.ts","/// <reference path=\"../ui/HierarchicalFacet/HierarchicalFacet.ts\" />\n/// <reference path=\"./FacetQueryController.ts\" />\n\nimport { FacetQueryController } from './FacetQueryController';\nimport { HierarchicalFacet, IValueHierarchy } from '../ui/HierarchicalFacet/HierarchicalFacet';\nimport { FacetSearchParameters } from '../ui/Facet/FacetSearchParameters';\nimport { IIndexFieldValue } from '../rest/FieldValue';\nimport { FacetUtils } from '../ui/Facet/FacetUtils';\nimport * as _ from 'underscore';\n\nexport class HierarchicalFacetQueryController extends FacetQueryController {\n  constructor(public facet: HierarchicalFacet) {\n    super(facet);\n  }\n\n  public search(params: FacetSearchParameters, oldLength = params.nbResults): Promise<IIndexFieldValue[]> {\n    // Do a client side search, since HierarchicalFacet should normally have all value client side\n    let regex = FacetUtils.getRegexToUseForFacetSearch(\n      this.facet.facetSearch.getValueInInputForFacetSearch(),\n      this.facet.options.facetSearchIgnoreAccents\n    );\n    return new Promise<IIndexFieldValue[]>(resolve => {\n      const match = _.chain(this.facet.getAllValueHierarchy())\n        .toArray()\n        .filter((v: IValueHierarchy) => {\n          return (\n            this.facet.getValueCaption(v.facetValue).match(regex) != null &&\n            !_.contains(<any>_.map(params.alwaysExclude, toExclude => toExclude.toLowerCase()), v.facetValue.value.toLowerCase())\n          );\n        })\n        .first(this.facet.options.numberOfValuesInFacetSearch)\n        .value();\n\n      const facetValues: IIndexFieldValue[] = _.map(match, (v: IValueHierarchy) => {\n        return <any>v.facetValue;\n      });\n\n      resolve(facetValues);\n    });\n  }\n\n  protected getAllowedValuesFromSelected() {\n    return [];\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/controllers/HierarchicalFacetQueryController.ts","/// <reference path=\"../Facet/Facet.ts\" />\n\nimport { Facet } from '../Facet/Facet';\nimport { FacetSearchValuesList } from '../Facet/FacetSearchValuesList';\nimport { HierarchicalFacetSearchValueElement } from './HierarchicalFacetSearchValueElement';\n\nexport class HierarchicalFacetSearchValuesList extends FacetSearchValuesList {\n  constructor(public facet: Facet) {\n    super(facet, HierarchicalFacetSearchValueElement);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/HierarchicalFacet/HierarchicalFacetSearchValuesList.ts","import { FacetValueElement } from '../Facet/FacetValueElement';\nimport { HierarchicalFacet } from '../HierarchicalFacet/HierarchicalFacet';\nimport { IValueElementEventsBinding } from '../Facet/ValueElement';\nimport { FacetValue } from '../Facet/FacetValue';\n\nexport class HierarchicalFacetSearchValueElement extends FacetValueElement {\n  constructor(public facet: HierarchicalFacet, public facetValue: FacetValue, public keepDisplayedValueNextTime: boolean) {\n    super(facet, facetValue, keepDisplayedValueNextTime);\n  }\n\n  public _handleSelectValue(eventBindings: IValueElementEventsBinding) {\n    this.facet.open(this.facetValue);\n    super.handleSelectValue(eventBindings);\n  }\n\n  public _handleExcludeClick(eventBindings: IValueElementEventsBinding) {\n    this.facet.open(this.facetValue);\n    super.handleExcludeClick(eventBindings);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/HierarchicalFacet/HierarchicalFacetSearchValueElement.ts","/// <reference path=\"HierarchicalFacet.ts\" />\n\nimport { FacetSearch } from '../Facet/FacetSearch';\nimport { HierarchicalFacet, IValueHierarchy } from './HierarchicalFacet';\nimport { IFacetSearchValuesListKlass } from '../Facet/FacetSearchValuesList';\nimport { FacetSearchParameters } from '../Facet/FacetSearchParameters';\nimport { IIndexFieldValue } from '../../rest/FieldValue';\nimport { FacetValue } from '../Facet/FacetValue';\nimport { Utils } from '../../utils/Utils';\nimport { ModalBox } from '../../ExternalModulesShim';\nimport * as _ from 'underscore';\n\nexport class HierarchicalFacetSearch extends FacetSearch {\n  constructor(public facet: HierarchicalFacet, public facetSearchValuesListKlass: IFacetSearchValuesListKlass, root: HTMLElement) {\n    super(facet, facetSearchValuesListKlass, root);\n  }\n\n  protected buildParamsForExcludingCurrentlyDisplayedValues() {\n    var params = super.buildParamsForExcludingCurrentlyDisplayedValues();\n    params.alwaysExclude = this.facet.getDisplayedValues();\n    if (this.facet.facetSearch.currentlyDisplayedResults) {\n      params.alwaysExclude = params.alwaysExclude.concat(this.facet.facetSearch.currentlyDisplayedResults);\n    }\n    return params;\n  }\n\n  protected selectAllValuesMatchingSearch() {\n    this.facet.showWaitingAnimation();\n\n    var searchParameters = new FacetSearchParameters(this.facet);\n    searchParameters.nbResults = this.facet.numberOfValues;\n    searchParameters.alwaysInclude = this.facet.getDisplayedValues();\n    searchParameters.setValueToSearch(this.getValueInInputForFacetSearch());\n    this.facet.facetQueryController.search(searchParameters).then((fieldValues: IIndexFieldValue[]) => {\n      this.dismissSearchResults();\n      ModalBox.close(true);\n      var facetValues = this.getFacetValues(fieldValues);\n      this.facet.processFacetSearchAllResultsSelected(facetValues);\n    });\n    this.dismissSearchResults();\n  }\n\n  private getFacetValues(fieldValues: IIndexFieldValue[]): FacetValue[] {\n    var values = [];\n    _.each(fieldValues, fieldValue => {\n      var hierarchy = this.facet.getValueFromHierarchy(fieldValue.value);\n      values.push(this.createFacetValuesFromHierarchy(hierarchy));\n    });\n    return _.flatten(values);\n  }\n\n  private createFacetValuesFromHierarchy(hierarchy: IValueHierarchy): FacetValue[] {\n    var values = [];\n    var fieldValue = hierarchy.facetValue.value;\n    var facetValue = this.facet.values.get(fieldValue);\n    if (!Utils.exists(facetValue)) {\n      facetValue = FacetValue.create(fieldValue);\n    }\n    facetValue.selected = true;\n    facetValue.excluded = false;\n    values.push(facetValue);\n    var childs = hierarchy.childs;\n    _.each(childs, child => {\n      var childHierarchy = this.facet.getValueFromHierarchy(child.facetValue.value);\n      values.push(this.createFacetValuesFromHierarchy(childHierarchy));\n    });\n    return values;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/HierarchicalFacet/HierarchicalFacetSearch.ts","/// <reference path=\"HierarchicalFacet.ts\" />\n\nimport { BreadcrumbValueList } from '../Facet/BreadcrumbValuesList';\nimport { HierarchicalFacet, IValueHierarchy } from './HierarchicalFacet';\nimport { FacetValue } from '../Facet/FacetValue';\nimport { HierarchicalBreadcrumbValueElement } from './HierarchicalBreadcrumbValueElement';\nimport { $$ } from '../../utils/Dom';\nimport * as _ from 'underscore';\n\nexport interface IHierarchicalBreadcrumbValuesListOptions {\n  headingLevel?: number;\n}\n\nexport class HierarchicalBreadcrumbValuesList extends BreadcrumbValueList {\n  constructor(\n    public facet: HierarchicalFacet,\n    public facetValues: FacetValue[],\n    public valueHierarchy: { [facetValue: string]: IValueHierarchy },\n    options?: IHierarchicalBreadcrumbValuesListOptions\n  ) {\n    super(facet, facetValues, HierarchicalBreadcrumbValueElement, options);\n  }\n\n  public buildAsString() {\n    this.build();\n    if (this.elem) {\n      let joined =\n        `${this.facet.options.title}: ` +\n        _.map($$(this.elem).findAll('.coveo-facet-breadcrumb-value'), (value: HTMLElement) => {\n          _.each($$(value).findAll('.coveo-hierarchical-breadcrumb-separator'), separator => {\n            // small right black triangle\n            $$(separator).text('\\u25B8');\n          });\n          return $$(value).text();\n        }).join(', ');\n      return joined;\n    }\n    return '';\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/HierarchicalFacet/HierarchicalBreadcrumbValuesList.ts","import { BreadcrumbValueElement } from '../Facet/BreadcrumbValueElement';\nimport { FacetValue } from '../Facet/FacetValue';\nimport { HierarchicalFacet } from './HierarchicalFacet';\nimport { Dom } from '../../utils/Dom';\nimport * as _ from 'underscore';\n\nexport class HierarchicalBreadcrumbValueElement extends BreadcrumbValueElement {\n  constructor(public facet: HierarchicalFacet, public facetValue: FacetValue) {\n    super(facet, facetValue);\n  }\n\n  public build(): Dom {\n    var build = super.build();\n    build.addClass('coveo-hierarchical-facet-value');\n    var caption = build.find('.coveo-facet-breadcrumb-caption');\n    var values = this.facetValue.value.split(this.facet.options.delimitingCharacter);\n    values = _.map(values, v => {\n      return _.escape(v);\n    });\n    caption.innerHTML = values.join(\"<span class='coveo-hierarchical-breadcrumb-separator'></span>\");\n    return build;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/HierarchicalFacet/HierarchicalBreadcrumbValueElement.ts","/// <reference path=\"../HierarchicalFacet/HierarchicalFacet.ts\" />\n\nimport { OmniboxValuesList } from '../Facet/OmniboxValuesList';\nimport { FacetValue } from '../Facet/FacetValue';\nimport { HierarchicalFacet } from '../HierarchicalFacet/HierarchicalFacet';\nimport { IPopulateOmniboxObject } from '../Omnibox/OmniboxInterface';\nimport { OmniboxHierarchicalValueElement } from './OmniboxHierarchicalValueElement';\n\nexport class OmniboxHierarchicalValuesList extends OmniboxValuesList {\n  constructor(public facet: HierarchicalFacet, public facetValues: FacetValue[], public omniboxObject: IPopulateOmniboxObject) {\n    super(facet, facetValues, omniboxObject, OmniboxHierarchicalValueElement);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/HierarchicalFacet/OmniboxHierarchicalValuesList.ts","/// <reference path=\"HierarchicalFacet.ts\" />\n\nimport { OmniboxValueElement } from '../Facet/OmniboxValueElement';\nimport { HierarchicalFacet } from './HierarchicalFacet';\nimport { FacetValue } from '../Facet/FacetValue';\nimport { IPopulateOmniboxObject } from '../Omnibox/OmniboxInterface';\nimport { IValueElementEventsBinding } from '../Facet/ValueElement';\n\nexport class OmniboxHierarchicalValueElement extends OmniboxValueElement {\n  constructor(public facet: HierarchicalFacet, public facetValue: FacetValue, public eventArg: IPopulateOmniboxObject) {\n    super(facet, facetValue, eventArg);\n  }\n\n  public _handleSelectValue(eventBindings: IValueElementEventsBinding) {\n    this.facet.open(this.facetValue);\n    super.handleSelectValue(eventBindings);\n  }\n\n  public _handleExcludeClick(eventBindings: IValueElementEventsBinding) {\n    this.facet.open(this.facetValue);\n    super.handleExcludeClick(eventBindings);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/HierarchicalFacet/OmniboxHierarchicalValueElement.ts","/// <reference path=\"HierarchicalFacet.ts\" />\n\nimport { FacetValueElement } from '../Facet/FacetValueElement';\nimport { HierarchicalFacet } from './HierarchicalFacet';\nimport { FacetValue } from '../Facet/FacetValue';\n\nexport class HierarchicalFacetValueElement extends FacetValueElement {\n  constructor(public facet: HierarchicalFacet, public facetValue: FacetValue, public keepDisplayedValueNextTime: boolean) {\n    super(facet, facetValue, keepDisplayedValueNextTime);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/HierarchicalFacet/HierarchicalFacetValueElement.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_HierarchicalFacet.scss\n// module id = 632\n// module chunks = 5 88","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_Matrix.scss\n// module id = 633\n// module chunks = 38 88","import { $$ } from '../../utils/Dom';\nimport * as _ from 'underscore';\n\n/**\n * Represent a single cell of data in the {@link Matrix} component.\n */\nexport class Cell {\n  private value: any;\n  private element: HTMLElement;\n  private previewActive = false;\n\n  constructor(value: any = 0, el?: HTMLElement) {\n    this.element = el;\n    this.value = value;\n  }\n\n  /**\n   * Return the value of the cell.\n   * @returns {any}\n   */\n  public getValue(): any {\n    return this.value;\n  }\n\n  /**\n   * Return the `HTMLElement` for the cell.\n   * @returns {HTMLElement}\n   */\n  public getHTML(): HTMLElement {\n    return this.element;\n  }\n\n  /**\n   * Set the value if the cell.\n   * @param value\n   */\n  public setValue(value: any) {\n    this.value = value;\n  }\n\n  /**\n   * Set the `HTMLElement` for the cell.\n   * @param html\n   */\n  public setHTML(html: HTMLElement) {\n    this.element = html;\n  }\n\n  /**\n   * Show the preview of the cell.\n   * @param minWidth css minWidth property : eg 100px\n   * @param maxWidth css maxWidth property : eg 100px\n   */\n  public addPreview(minWidth: string, maxWidth: string) {\n    this.previewActive = true;\n    let previewContainer = $$('div', {\n      className: 'matrix-results-preview-container'\n    });\n    previewContainer.el.style.minWidth = minWidth;\n    previewContainer.el.style.maxWidth = maxWidth;\n    previewContainer.on('click', (e: MouseEvent) => {\n      e.stopPropagation();\n    });\n    this.element.appendChild(previewContainer.el);\n    let container = $$(this.element).findAll('.matrix-results-preview-container');\n    _.each(container, (c: HTMLElement) => {\n      $$(c).hide();\n    });\n  }\n\n  /**\n   * Remove the preview of the cell\n   */\n  public removePreview() {\n    this.previewActive = false;\n    let container = $$(this.element).find('.matrix-results-preview-container');\n    if (container) {\n      $$(container).detach();\n    }\n  }\n\n  /**\n   * Update the preview with a new template\n   * @param template\n   */\n  public updatePreview(template: string) {\n    if (this.previewActive) {\n      let preview = $$(this.element).find('.matrix-results-preview-container');\n      preview.innerHTML += template;\n      $$(preview).show();\n    }\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Matrix/Cell.ts","import { Template, IInstantiateTemplateOptions } from '../Templates/Template';\nimport { IQueryResult } from '../../rest/QueryResult';\nimport { $$ } from '../../utils/Dom';\nimport * as Globalize from 'globalize';\n\nexport class DefaultMatrixResultPreviewTemplate extends Template {\n  constructor(private computedField: string, private format: string) {\n    super();\n  }\n\n  instantiateToString(object?: IQueryResult, instantiateOptions?: IInstantiateTemplateOptions): string {\n    var preview =\n      \"<div class='coveo-result-frame'>\" +\n      \"<div class='coveo-result-row'>\" +\n      \"<div class='coveo-result-cell' style='width: 40px; padding-right:5px;vertical-align: middle'>\" +\n      \"<a class='CoveoIcon' data-small='true'></a>\" +\n      '</div>' +\n      \"<div class='coveo-result-cell' style='font-size:13px;vertical-align: middle'>\" +\n      \"<a class='CoveoResultLink'></a>\" +\n      '</div>' +\n      \"<div class='coveo-result-cell' style='width:80px; text-align:right; font-size:13px; padding-right: 5px;vertical-align: middle'>\" +\n      Globalize.format(parseInt(object.raw[this.computedField.slice(1)]), this.format) +\n      '</div>' +\n      '</div>' +\n      '</div>';\n    return preview;\n  }\n\n  instantiateToElement(object?: IQueryResult, instantiateOptions?: IInstantiateTemplateOptions): Promise<HTMLElement> {\n    return new Promise((resolve, reject) => {\n      return $$('div', undefined, this.instantiateToString(object)).el;\n    });\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Matrix/DefaultMatrixResultPreviewTemplate.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_OmniboxResultList.scss\n// module id = 636\n// module chunks = 17 88","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_Pager.scss\n// module id = 637\n// module chunks = 16 88","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_PreferencesPanel.scss\n// module id = 638\n// module chunks = 37 88","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_PrintableUri.scss\n// module id = 639\n// module chunks = 30 88","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_QueryDuration.scss\n// module id = 640\n// module chunks = 67 88","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_QuerySummary.scss\n// module id = 641\n// module chunks = 46 88","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_Quickview.scss\n// module id = 642\n// module chunks = 20 88","import { Template } from '../Templates/Template';\nimport { IQueryResult } from '../../rest/QueryResult';\n\nexport class DefaultQuickviewTemplate extends Template {\n  constructor() {\n    super();\n  }\n\n  instantiateToString(queryResult?: IQueryResult): string {\n    return '<div class=\"coveo-quick-view-full-height\"><div class=\"CoveoQuickviewDocument\"></div></div>';\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Quickview/DefaultQuickviewTemplate.ts","import { each } from 'underscore';\nimport { DeviceUtils, l } from '../../Core';\nimport { AjaxError } from '../../rest/AjaxError';\nimport { $$, Dom } from '../../utils/Dom';\n\nexport class QuickviewDocumentIframe {\n  public el: HTMLElement;\n  private iframeElement: HTMLIFrameElement;\n\n  constructor() {\n    this.el = this.buildIFrame().el;\n  }\n\n  public get iframeHTMLElement() {\n    return this.iframeElement;\n  }\n\n  public get document() {\n    return this.iframeElement.contentWindow.document;\n  }\n\n  public get body() {\n    return this.document.body;\n  }\n\n  public get window() {\n    return this.iframeElement.contentWindow;\n  }\n\n  public isNewQuickviewDocument(): boolean {\n    const meta = $$(this.document.head).find(\"meta[name='generator']\");\n    return meta && meta.getAttribute('content') == 'pdf2htmlEX';\n  }\n\n  public render(htmlDocument: HTMLDocument, title: string): Promise<HTMLIFrameElement> {\n    if (this.quickviewIsClosedByEndUser()) {\n      return Promise.reject(null);\n    }\n\n    return new Promise((resolve, reject) => {\n      // Take care to bind the onload function before actually writing to the iframe :\n      // Safari, IE, Edge need this, otherwise the onload function is never called\n      this.iframeElement.onload = () => {\n        resolve(this.iframeElement);\n      };\n\n      this.addClientSideTweaksToIFrameStyling(htmlDocument);\n      this.writeToIFrame(htmlDocument);\n      this.iframeElement.title = title;\n    });\n  }\n\n  public renderError(error: AjaxError): Promise<HTMLIFrameElement> {\n    if (this.quickviewIsClosedByEndUser()) {\n      return Promise.reject(null);\n    }\n\n    return new Promise((resolve, reject) => {\n      let errorMessage = '';\n      switch (error.status) {\n        case 400:\n          errorMessage = l('NoQuickview');\n          break;\n        default:\n          errorMessage = l('OoopsError');\n          break;\n      }\n\n      const errorDocument = document.implementation.createHTMLDocument();\n      errorDocument.body.style.fontFamily = `Arimo, \\'Helvetica Neue\\', Helvetica, Arial, sans-serif`;\n      $$(errorDocument.body).text(errorMessage);\n\n      this.writeToIFrame(errorDocument);\n\n      resolve(this.iframeElement);\n    });\n  }\n\n  private quickviewIsClosedByEndUser() {\n    return this.iframeElement.contentDocument == null;\n  }\n\n  private buildIFrame(): Dom {\n    const iframe = $$('iframe', {\n      sandbox: 'allow-popups allow-same-origin allow-top-navigation',\n      src: 'about:blank'\n    });\n    this.iframeElement = iframe.el as HTMLIFrameElement;\n\n    const iframewrapper = $$('div', {\n      className: 'coveo-iframeWrapper'\n    });\n    iframewrapper.append(iframe.el);\n\n    return iframewrapper;\n  }\n\n  private writeToIFrame(htmlDocument: HTMLDocument) {\n    this.allowDocumentLinkToEscapeSandbox(htmlDocument);\n    this.document.open();\n    this.document.write(htmlDocument.getElementsByTagName('html')[0].outerHTML);\n    this.document.close();\n  }\n\n  private allowDocumentLinkToEscapeSandbox(htmlDocument: HTMLDocument) {\n    // On the iframe, we set the sandbox attribute to \"allow top navigation\".\n    // For this to work, we need to force all link to target _top.\n    // This is especially useful for quickview on web pages.\n    each($$(htmlDocument.body).findAll('a'), link => {\n      link.setAttribute('target', '_top');\n    });\n  }\n\n  private addClientSideTweaksToIFrameStyling(htmlDocument: HTMLDocument) {\n    const style = $$('style', { type: 'text/css' }).el as HTMLStyleElement;\n\n    // Safari on iOS forces resize iframes to fit their content, even if an explicit size\n    // is set on the iframe. Isn't that great? By chance there is a trick around it: by\n    // setting a very small size on the body and instead using min-* to set the size to\n    // 100% we're able to trick Safari from thinking it must expand the iframe. Amazed.\n    // The 'scrolling' part is required otherwise the hack doesn't work.\n    //\n    // https://stackoverflow.com/questions/23083462/how-to-get-an-iframe-to-be-responsive-in-ios-safari\n    const cssHackForIOS = `\n      body, html {\n        height: 1px !important;\n        min-height: 100%;\n        width: 1px !important;\n        min-width: 100%;\n        overflow: scroll;\n        margin: auto\n      }\n      `;\n\n    const cssText = `\n      html pre {\n        white-space: pre-wrap;\n        word-wrap: break-word;\n      }\n      body, html {\n        font-family: Arimo, 'Helvetica Neue', Helvetica, Arial, sans-serif; -webkit-text-size-adjust: none;\n      }\n      ${DeviceUtils.isIos() ? cssHackForIOS : ''}\n      `;\n\n    if (DeviceUtils.isIos()) {\n      $$(this.iframeElement).setAttribute('scrolling', 'no');\n      this.iframeElement.parentElement.style.margin = '0 0 5px 5px';\n    }\n\n    style.appendChild(document.createTextNode(cssText));\n    htmlDocument.head.appendChild(style);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Quickview/QuickviewDocumentIframe.ts","import { $$, Dom } from '../../utils/Dom';\nimport { QuickviewDocumentWordButton } from './QuickviewDocumentWordButton';\n\nexport class QuickviewDocumentHeader {\n  public el: HTMLElement;\n\n  constructor() {\n    this.el = this.buildHeader().el;\n  }\n\n  public addWord(wordButton: QuickviewDocumentWordButton) {\n    this.el.appendChild(wordButton.el);\n  }\n\n  private buildHeader(): Dom {\n    const header = $$('div', {\n      className: 'coveo-quickview-header'\n    });\n    return header;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Quickview/QuickviewDocumentHeader.ts","import { $$ } from '../../utils/Dom';\nimport { each } from 'underscore';\nimport { QuickviewDocumentIframe } from './QuickviewDocumentIframe';\nimport { QuickviewDocumentWord } from './QuickviewDocumentWord';\nimport { HIGHLIGHT_PREFIX } from './QuickviewDocument';\nimport { IQueryResult } from '../../rest/QueryResult';\n\nexport class QuickviewDocumentWords {\n  public words: Record<string, QuickviewDocumentWord> = {};\n\n  constructor(public iframe: QuickviewDocumentIframe, public result: IQueryResult) {\n    this.scanDocument();\n  }\n\n  private scanDocument() {\n    each($$(this.iframe.body).findAll(`[id^=\"${HIGHLIGHT_PREFIX}\"]`), (element: HTMLElement, index: number) => {\n      const quickviewWord = new QuickviewDocumentWord(this.result);\n      quickviewWord.doCompleteInitialScanForKeywordInDocument(element);\n\n      if (!quickviewWord.text) {\n        return;\n      }\n\n      const alreadyScannedKeyword = this.words[quickviewWord.indexIdentifier];\n\n      if (!alreadyScannedKeyword) {\n        this.words[quickviewWord.indexIdentifier] = quickviewWord;\n      } else {\n        alreadyScannedKeyword.addElement(element);\n\n        // Special code needed to workaround invalid HTML returned by the index with embedded keyword\n        if (alreadyScannedKeyword.occurrence == quickviewWord.occurrence) {\n          alreadyScannedKeyword.text += quickviewWord.text;\n        }\n      }\n    });\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Quickview/QuickviewDocumentWords.ts","import { find, first, keys, without } from 'underscore';\nimport { StringUtils } from '../../Core';\nimport { Logger } from '../../misc/Logger';\nimport { IQueryResult } from '../../rest/QueryResult';\nimport { $$ } from '../../utils/Dom';\nimport { HIGHLIGHT_PREFIX } from './QuickviewDocument';\nimport { QuickviewDocumentWordColor } from './QuickviewDocumentWordColor';\n\nexport class QuickviewDocumentWord {\n  public text: string;\n  public count: number = 0;\n  public numberOfEmbeddedWords: number;\n  public occurrence: number;\n  public indexIdentifier: string;\n  public indexTermPart: number;\n  public elements: HTMLElement[] = [];\n  public currentNavigationPosition = -1;\n  public color: QuickviewDocumentWordColor;\n\n  private logger: Logger;\n\n  constructor(public result: IQueryResult) {\n    this.logger = new Logger(this);\n  }\n\n  public addElement(element: HTMLElement) {\n    this.count++;\n    this.elements.push(element);\n  }\n\n  public navigateForward() {\n    this.currentNavigationPosition++;\n    if (this.currentNavigationPosition >= this.elements.length) {\n      this.currentNavigationPosition = 0;\n    }\n    this.highlightNavigation();\n    this.putElementIntoView();\n    return this.elements[this.currentNavigationPosition];\n  }\n\n  public navigateBackward() {\n    this.currentNavigationPosition--;\n    if (this.currentNavigationPosition < 0) {\n      this.currentNavigationPosition = this.elements.length - 1;\n    }\n    this.highlightNavigation();\n    this.putElementIntoView();\n    return this.elements[this.currentNavigationPosition];\n  }\n\n  public navigateTo(position: number): HTMLElement {\n    this.currentNavigationPosition = position;\n    if (this.currentNavigationPosition < 0 || this.currentNavigationPosition >= this.elements.length) {\n      this.currentNavigationPosition = 0;\n      this.logger.warn(`Invalid position in quickview navigation: ${position}`);\n    }\n    this.highlightNavigation();\n    return this.elements[this.currentNavigationPosition];\n  }\n\n  public doCompleteInitialScanForKeywordInDocument(element: HTMLElement) {\n    const parsed = this.parseKeywordIdentifier(element);\n\n    if (parsed) {\n      this.indexIdentifier = parsed.keywordIdentifier;\n      this.occurrence = parsed.keywordOccurrencesInDocument;\n      this.indexTermPart = parsed.keywordTermPart;\n      this.text = this.getText(element);\n      this.color = new QuickviewDocumentWordColor(element.style.backgroundColor);\n\n      this.addElement(element);\n    }\n  }\n\n  public isTaggedWord(element: HTMLElement) {\n    return element.nodeName.toLowerCase() == 'coveotaggedword';\n  }\n\n  private highlightNavigation() {\n    const currentElement = this.elements[this.currentNavigationPosition];\n    const otherElements = without(this.elements, currentElement);\n    currentElement.style.color = this.color.htmlColor;\n    currentElement.style.backgroundColor = this.color.invert();\n    otherElements.forEach(element => {\n      element.style.color = '';\n      element.style.backgroundColor = this.color.htmlColor;\n    });\n  }\n\n  private putElementIntoView() {\n    const element = this.elements[this.currentNavigationPosition];\n    element.scrollIntoView();\n  }\n\n  private getText(element: HTMLElement) {\n    const innerTextOfHTMLElement = this.getHighlightedInnerText(element);\n    return this.resolveOriginalTerm(innerTextOfHTMLElement);\n  }\n\n  private resolveOriginalTerm(highlight: string): string {\n    if (!this.result || !this.result.termsToHighlight) {\n      return highlight;\n    }\n\n    const found = find(keys(this.result.termsToHighlight), (originalTerm: string) => {\n      // The expansions do NOT include the original term (makes sense), so be sure to check\n      // the original term for a match too.\n      const originalTermMatch = StringUtils.equalsCaseInsensitive(originalTerm, highlight);\n      const expansionMatch =\n        find(this.result.termsToHighlight[originalTerm], (expansion: string) => StringUtils.equalsCaseInsensitive(expansion, highlight)) !=\n        undefined;\n      return originalTermMatch || expansionMatch;\n    });\n\n    return found || highlight;\n  }\n\n  private getHighlightedInnerText(element: HTMLElement): string {\n    if (!this.isTaggedWord(element)) {\n      return $$(element).text() || '';\n    }\n\n    const children = $$(element).children();\n    if (children.length >= 1) {\n      return $$(first(children)).text() || '';\n    }\n\n    return '';\n  }\n\n  private parseKeywordIdentifier(element: HTMLElement) {\n    const parts = element.id.substr(HIGHLIGHT_PREFIX.length + 1).match(/^([0-9]+)\\.([0-9]+)\\.([0-9]+)$/);\n\n    if (!parts || parts.length <= 3) {\n      return null;\n    }\n\n    return {\n      keywordIdentifier: parts[1],\n      keywordOccurrencesInDocument: parseInt(parts[2], 10),\n      keywordTermPart: parseInt(parts[3], 10)\n    };\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Quickview/QuickviewDocumentWord.ts","import { ColorUtils } from '../../utils/ColorUtils';\n\nexport class QuickviewDocumentWordColor {\n  public r: number;\n  public g: number;\n  public b: number;\n\n  constructor(public htmlColor: string) {\n    const rgbExtracted = htmlColor.match(/\\d+/g);\n    if (rgbExtracted) {\n      this.r = parseInt(rgbExtracted[0], 10);\n      this.g = parseInt(rgbExtracted[1], 10);\n      this.b = parseInt(rgbExtracted[2], 10);\n    }\n  }\n\n  public invert() {\n    return `rgb(${255 - this.r}, ${255 - this.g}, ${255 - this.b})`;\n  }\n\n  public saturate() {\n    const hsv = ColorUtils.rgbToHsv(this.r, this.g, this.b);\n    hsv[1] *= 2;\n    if (hsv[1] > 1) {\n      hsv[1] = 1;\n    }\n    const rgb = ColorUtils.hsvToRgb(hsv[0], hsv[1], hsv[2]);\n    return `rgb(${rgb[0]}, ${rgb[1]}, ${rgb[2]})`;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Quickview/QuickviewDocumentWordColor.ts","import { QuickviewDocumentIframe } from './QuickviewDocumentIframe';\nimport { $$ } from '../../utils/Dom';\nimport { QuickviewDocumentWord } from './QuickviewDocumentWord';\nimport { QuickviewDocumentPreviewBar } from './QuickviewDocumentPreviewBar';\n\nexport class QuickviewDocumentWordButton {\n  public el: HTMLElement;\n  constructor(public word: QuickviewDocumentWord, public previewBar: QuickviewDocumentPreviewBar, public iframe: QuickviewDocumentIframe) {\n    this.el = this.render();\n  }\n\n  public render() {\n    const wordHtml = $$('span', {\n      className: 'coveo-term-for-quickview'\n    });\n\n    wordHtml.append(this.buildName().el);\n\n    wordHtml.append(this.renderArrow('up').el);\n\n    wordHtml.append(this.renderArrow('down').el);\n\n    wordHtml.el.style.backgroundColor = this.word.color.htmlColor;\n    wordHtml.el.style.borderColor = this.word.color.saturate();\n\n    return wordHtml.el;\n  }\n\n  private buildName() {\n    const name = $$(\n      'span',\n      {\n        className: 'coveo-term-for-quickview-name'\n      },\n      `${this.word.text} (${this.word.count})`\n    );\n\n    name.on('click', () => this.navigate(false));\n    return name;\n  }\n\n  private navigate(backward: boolean) {\n    let element: HTMLElement;\n    if (backward) {\n      element = this.word.navigateBackward();\n      this.previewBar.navigateBackward(this.word);\n    } else {\n      element = this.word.navigateForward();\n      this.previewBar.navigateForward(this.word);\n    }\n\n    // pdf2html docs hide the non-visible frames by default, to speed up browsers.\n    // But this prevents keyword navigation from working so we must force show it. This\n    // is done by adding the 'opened' class to it (defined by pdf2html).\n    if (this.iframe.isNewQuickviewDocument()) {\n      const pdf = $$(element).closest('.pc');\n      $$(pdf).addClass('opened');\n    }\n\n    element.scrollIntoView();\n  }\n\n  private renderArrow(direction: 'up' | 'down') {\n    const arrow = $$('span', {\n      className: `coveo-term-for-quickview-${direction}-arrow`\n    });\n\n    const arrowIcon = $$('span', {\n      className: `coveo-term-for-quickview-${direction}-arrow-icon`\n    });\n\n    arrow.append(arrowIcon.el);\n\n    arrow.on('click', () => this.navigate(direction == 'up'));\n    return arrow;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Quickview/QuickviewDocumentWordButton.ts","import { QuickviewDocumentIframe } from './QuickviewDocumentIframe';\nimport { QuickviewDocumentWords } from './QuickviewDocumentWords';\nimport { Doc, $$ } from '../../utils/Dom';\nimport { each, without, chain } from 'underscore';\nimport { QuickviewDocumentWord } from './QuickviewDocumentWord';\nimport { Logger } from '../../misc/Logger';\n\nexport class QuickviewDocumentPreviewBar {\n  private logger: Logger;\n  public wordIndicators: Map<QuickviewDocumentWord, { indicators: HTMLElement[]; position: number }> = new Map();\n\n  constructor(public iframe: QuickviewDocumentIframe, public words: QuickviewDocumentWords) {\n    this.logger = new Logger(this);\n    this.renderPreviewBar();\n  }\n\n  public navigateForward(word: QuickviewDocumentWord): HTMLElement {\n    const currentWord = this.wordIndicators.get(word);\n    if (!currentWord) {\n      this.logger.warn(`Invalid navigation for given word.`, word);\n      return null;\n    }\n\n    currentWord.position++;\n\n    if (currentWord.position >= currentWord.indicators.length) {\n      currentWord.position = 0;\n    }\n    this.highlightNavigation(word);\n    return currentWord.indicators[currentWord.position];\n  }\n\n  public navigateBackward(word: QuickviewDocumentWord): HTMLElement {\n    const currentWord = this.wordIndicators.get(word);\n    if (!currentWord) {\n      this.logger.warn(`Invalid navigation for the given word.`, word);\n      return null;\n    }\n\n    currentWord.position--;\n\n    if (currentWord.position < 0) {\n      currentWord.position = currentWord.indicators.length - 1;\n    }\n    this.highlightNavigation(word);\n    return currentWord.indicators[currentWord.position];\n  }\n\n  public navigateTo(position: number, word: QuickviewDocumentWord): HTMLElement {\n    const currentWord = this.wordIndicators.get(word);\n    if (!currentWord) {\n      this.logger.warn(`Invalid navigation for the given word`, word);\n      return null;\n    }\n\n    currentWord.position = position;\n\n    if (currentWord.position < 0 || currentWord.position >= currentWord.indicators.length) {\n      this.logger.warn(`Invalid navigation for the given position: ${position}`);\n      currentWord.position = 0;\n    }\n    this.highlightNavigation(word);\n    return currentWord.indicators[currentWord.position];\n  }\n\n  private highlightNavigation(word: QuickviewDocumentWord) {\n    const currentWord = this.wordIndicators.get(word);\n    const currentElement = currentWord.indicators[currentWord.position];\n\n    const otherElements = without(currentWord.indicators, currentElement);\n\n    currentElement.style.backgroundColor = word.color.invert();\n    currentElement.style.border = `1px solid ${word.color.invert()}`;\n\n    otherElements.forEach(element => this.defaultStyleColor(element, word));\n  }\n\n  private renderPreviewBar() {\n    const previewBar = $$('div');\n\n    previewBar.el.style.width = '15px';\n    previewBar.el.style.position = 'fixed';\n    previewBar.el.style.top = '0';\n    previewBar.el.style.right = '0px';\n    previewBar.el.style.height = '100%';\n\n    this.iframe.body.appendChild(previewBar.el);\n\n    each(this.words.words, word => {\n      each(word.elements, element => {\n        const indicator = this.renderWordPositionIndicator(element, word).el;\n\n        if (this.wordIndicators.has(word)) {\n          this.wordIndicators.get(word).indicators.push(indicator);\n        } else {\n          this.wordIndicators.set(word, {\n            indicators: [indicator],\n            position: -1\n          });\n        }\n\n        previewBar.append(indicator);\n      });\n\n      this.handleOverlappingIndicators(word);\n    });\n  }\n\n  private renderWordPositionIndicator(element: HTMLElement, word: QuickviewDocumentWord) {\n    const docHeight = new Doc(this.iframe.document).height();\n    const elementPosition = element.getBoundingClientRect().top;\n\n    const previewUnit = $$('div');\n    previewUnit.el.style.position = 'absolute';\n    previewUnit.el.style.top = `${elementPosition / docHeight * 100}%`;\n    previewUnit.el.style.width = '100%';\n    previewUnit.el.style.height = '1px';\n    this.defaultStyleColor(previewUnit.el, word);\n    return previewUnit;\n  }\n\n  private defaultStyleColor(element: HTMLElement, word: QuickviewDocumentWord) {\n    element.style.border = `1px solid ${word.color.saturate()}`;\n    element.style.backgroundColor = word.color.htmlColor;\n  }\n\n  private handleOverlappingIndicators(word: QuickviewDocumentWord) {\n    const allIndicators = this.wordIndicators.get(word).indicators;\n\n    for (let i = 0; i < allIndicators.length; i++) {\n      const otherIndicatorAtSamePositionInDocument = chain(allIndicators)\n        .without(allIndicators[i])\n        .find(otherIndicator => otherIndicator.style.top == allIndicators[i].style.top)\n        .value();\n\n      if (otherIndicatorAtSamePositionInDocument) {\n        $$(allIndicators[i]).remove();\n        allIndicators[i] = otherIndicatorAtSamePositionInDocument;\n      }\n    }\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Quickview/QuickviewDocumentPreviewBar.ts","import { ResponsiveComponentsManager, IResponsiveComponent, IResponsiveComponentOptions } from './ResponsiveComponentsManager';\nimport { ResponsiveComponentsUtils } from './ResponsiveComponentsUtils';\nimport { SearchInterface } from '../SearchInterface/SearchInterface';\nimport { Utils } from '../../utils/Utils';\nimport { $$, Dom } from '../../utils/Dom';\nimport { Logger } from '../../misc/Logger';\nimport { Recommendation } from '../Recommendation/Recommendation';\nimport { RecommendationDropdownContent } from './ResponsiveDropdown/RecommendationDropdownContent';\nimport { ResponsiveDropdownHeader } from './ResponsiveDropdown/ResponsiveDropdownHeader';\nimport { ResponsiveDropdown } from './ResponsiveDropdown/ResponsiveDropdown';\nimport { l } from '../../strings/Strings';\nimport { Component } from '../Base/Component';\nimport { get } from '../Base/RegisteredNamedMethods';\nimport { QueryEvents, IQuerySuccessEventArgs, INoResultsEventArgs } from '../../events/QueryEvents';\nimport * as _ from 'underscore';\n\nimport 'styling/_ResponsiveRecommendation';\nimport { Defer } from '../../MiscModules';\n\nexport class ResponsiveRecommendation implements IResponsiveComponent {\n  public static DROPDOWN_CONTAINER_CSS_CLASS_NAME: string = 'coveo-recommendation-dropdown-container';\n  public static RESPONSIVE_BREAKPOINT = 1000;\n\n  public recommendationRoot: Dom;\n  private breakpoint: number;\n  private dropdown: ResponsiveDropdown;\n  private dropdownHeaderLabel: string;\n  private searchInterface: SearchInterface;\n\n  public static init(root: HTMLElement, component, options: IResponsiveComponentOptions) {\n    let logger = new Logger('ResponsiveRecommendation');\n    let coveoRoot = this.findParentRootOfRecommendationComponent(root);\n    if (!coveoRoot) {\n      logger.info('Recommendation component has no parent interface. Disabling responsive mode for this component.');\n      return;\n    }\n\n    if (!$$(coveoRoot).find('.coveo-results-column')) {\n      logger.info('Cannot find element with class coveo-results-column. Disabling responsive mode for this component.');\n      return;\n    }\n\n    ResponsiveComponentsManager.register(\n      ResponsiveRecommendation,\n      $$(coveoRoot),\n      Recommendation.ID,\n      component,\n      _.extend({}, options, { initializationEventRoot: $$(root) })\n    );\n  }\n\n  private static findParentRootOfRecommendationComponent(root: HTMLElement): Dom {\n    let coveoRoot = $$(root).parents(Component.computeCssClassName(SearchInterface));\n    if (coveoRoot[0]) {\n      return $$(coveoRoot[0]);\n    }\n    return null;\n  }\n\n  constructor(\n    public coveoRoot: Dom,\n    public ID: string,\n    options: IResponsiveComponentOptions,\n    public responsiveDropdown?: ResponsiveDropdown\n  ) {\n    this.recommendationRoot = this.getRecommendationRoot();\n    this.dropdownHeaderLabel = options.dropdownHeaderLabel;\n    this.breakpoint = this.defineResponsiveBreakpoint(options);\n    this.searchInterface = <SearchInterface>Component.get(this.coveoRoot.el, SearchInterface, false);\n    this.dropdown = this.buildDropdown(responsiveDropdown);\n    this.registerOnOpenHandler();\n    this.registerQueryEvents();\n    this.handleResizeEvent();\n  }\n\n  public handleResizeEvent(): void {\n    if (this.needSmallMode() && !ResponsiveComponentsUtils.isSmallRecommendationActivated(this.coveoRoot)) {\n      this.changeToSmallMode();\n    } else if (!this.needSmallMode() && ResponsiveComponentsUtils.isSmallRecommendationActivated(this.coveoRoot)) {\n      this.changeToLargeMode();\n    }\n\n    if (this.dropdown.isOpened) {\n      this.dropdown.dropdownContent.positionDropdown();\n    }\n  }\n\n  public needDropdownWrapper(): boolean {\n    return this.needSmallMode();\n  }\n\n  private needSmallMode(): boolean {\n    const isWidthSmallerThanBreakpoint = this.coveoRoot.width() <= this.breakpoint;\n    if (!this.searchInterface) {\n      return isWidthSmallerThanBreakpoint;\n    }\n\n    switch (this.searchInterface.responsiveComponents.getResponsiveMode()) {\n      case 'small':\n        return true;\n      case 'auto':\n        return isWidthSmallerThanBreakpoint;\n      default:\n        return false;\n    }\n  }\n\n  private changeToSmallMode() {\n    this.dropdown.close();\n    const header = this.coveoRoot.find(`.${ResponsiveComponentsManager.DROPDOWN_HEADER_WRAPPER_CSS_CLASS}`);\n    if (!header) {\n      // It's possible that recommendation gets initialized before the main interface is completed.\n      // We defer the resize event execution in that case.\n      Defer.defer(() => this.handleResizeEvent());\n    } else {\n      $$(header).append(this.dropdown.dropdownHeader.element.el);\n      this.disableFacetPreservePosition();\n      ResponsiveComponentsUtils.activateSmallRecommendation(this.coveoRoot);\n      ResponsiveComponentsUtils.activateSmallRecommendation(this.recommendationRoot);\n    }\n  }\n\n  private changeToLargeMode() {\n    this.enableFacetPreservePosition();\n    this.dropdown.cleanUp();\n    ResponsiveComponentsUtils.deactivateSmallRecommendation(this.coveoRoot);\n    ResponsiveComponentsUtils.deactivateSmallRecommendation(this.recommendationRoot);\n  }\n\n  private buildDropdown(responsiveDropdown?: ResponsiveDropdown): ResponsiveDropdown {\n    let dropdownContent = this.buildDropdownContent();\n    let dropdownHeader = this.buildDropdownHeader();\n    let dropdown = responsiveDropdown ? responsiveDropdown : new ResponsiveDropdown(dropdownContent, dropdownHeader, this.coveoRoot);\n    dropdown.disablePopupBackground();\n    return dropdown;\n  }\n\n  private buildDropdownHeader(): ResponsiveDropdownHeader {\n    let dropdownHeaderElement = $$('a');\n    let content = $$('p');\n    content.text(l(this.dropdownHeaderLabel));\n    dropdownHeaderElement.el.appendChild(content.el);\n    let dropdownHeader = new ResponsiveDropdownHeader('recommendation', dropdownHeaderElement);\n    return dropdownHeader;\n  }\n\n  private buildDropdownContent(): RecommendationDropdownContent {\n    let dropdownContentElement: Dom;\n    let recommendationColumn = this.coveoRoot.find('.coveo-recommendation-column');\n    if (recommendationColumn) {\n      dropdownContentElement = $$(recommendationColumn);\n    } else {\n      dropdownContentElement = $$(this.coveoRoot.find('.' + Component.computeCssClassName(Recommendation)));\n    }\n\n    let dropdownContent = new RecommendationDropdownContent('recommendation', dropdownContentElement, this.coveoRoot);\n    return dropdownContent;\n  }\n\n  private defineResponsiveBreakpoint(options: IResponsiveComponentOptions): number {\n    let breakpoint;\n    if (Utils.isNullOrUndefined(options.responsiveBreakpoint)) {\n      breakpoint = ResponsiveRecommendation.RESPONSIVE_BREAKPOINT;\n    } else {\n      breakpoint = options.responsiveBreakpoint;\n    }\n    return breakpoint;\n  }\n\n  private getFacetSliders(): any[] {\n    const facetSliders = [];\n    this.coveoRoot.findAll(Component.computeSelectorForType('FacetSlider')).forEach(facetSliderElement => {\n      const facetSlider = Component.get(facetSliderElement);\n      facetSlider && facetSliders.push(facetSlider);\n    });\n    return facetSliders;\n  }\n\n  private getFacets(): any[] {\n    const facets = [];\n    this.coveoRoot.findAll(Component.computeSelectorForType('Facet')).forEach(facetElement => {\n      const facet = Component.get(facetElement);\n      facet && facets.push(facet);\n    });\n    return facets;\n  }\n\n  private enableFacetPreservePosition(): void {\n    this.getFacets().forEach(facet => (facet.options.preservePosition = true));\n  }\n\n  private disableFacetPreservePosition(): void {\n    this.getFacets().forEach(facet => (facet.options.preservePosition = false));\n  }\n\n  private drawFacetSliderGraphs(): void {\n    this.getFacetSliders().forEach(facetSlider => facetSlider.drawDelayedGraphData());\n  }\n\n  private registerOnOpenHandler(): void {\n    this.dropdown.registerOnOpenHandler(this.drawFacetSliderGraphs, this);\n  }\n\n  private getRecommendationRoot(): Dom {\n    return $$(this.coveoRoot.find('.' + Component.computeCssClassName(Recommendation)));\n  }\n\n  private registerQueryEvents() {\n    let recommendationInstance = <Recommendation>get(this.recommendationRoot.el, SearchInterface);\n    if (recommendationInstance && recommendationInstance.options.hideIfNoResults) {\n      this.coveoRoot.on(QueryEvents.querySuccess, (e: Event, data: IQuerySuccessEventArgs) => this.handleRecommnendationQuerySucess(data));\n      this.coveoRoot.on(QueryEvents.noResults, (e: Event, data: INoResultsEventArgs) => this.handleRecommendationNoResults());\n    }\n    this.coveoRoot.on(QueryEvents.queryError, () => this.handleRecommendationQueryError());\n  }\n\n  private handleRecommnendationQuerySucess(data: IQuerySuccessEventArgs) {\n    if (data.results.totalCount === 0) {\n      this.dropdown.close();\n      this.dropdown.dropdownHeader.hide();\n    } else {\n      this.dropdown.dropdownHeader.show();\n    }\n  }\n\n  private handleRecommendationNoResults() {\n    this.dropdown.close();\n    this.dropdown.dropdownHeader.hide();\n  }\n\n  private handleRecommendationQueryError() {\n    this.dropdown.close();\n    this.dropdown.dropdownHeader.hide();\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResponsiveComponents/ResponsiveRecommendation.ts","import { IResponsiveDropdownContent, ResponsiveDropdownContent } from './ResponsiveDropdownContent';\nimport { $$, Dom } from '../../../utils/Dom';\n\nexport class RecommendationDropdownContent implements IResponsiveDropdownContent {\n  public static OPENED_DROPDOWN_CSS_CLASS_NAME = 'coveo-open-dropdown-content';\n\n  private cssClassName: string;\n\n  constructor(componentName: string, public element: Dom, private coveoRoot: Dom) {\n    this.cssClassName = `coveo-${componentName}-dropdown-content`;\n    this.element.addClass(this.cssClassName);\n    this.element.addClass(ResponsiveDropdownContent.DEFAULT_CSS_CLASS_NAME);\n  }\n\n  public positionDropdown() {\n    this.element.el.style.display = '';\n\n    let dropdownContentWrapper = this.coveoRoot.find('.coveo-results-column');\n    $$(dropdownContentWrapper).prepend(this.element.el);\n    this.element.addClass(ResponsiveDropdownContent.DEFAULT_CSS_CLASS_NAME);\n    this.element.addClass(this.cssClassName);\n\n    // forces the browser to reflow the element, so that the transition is applied.\n    window.getComputedStyle(this.element.el).maxHeight;\n\n    this.element.addClass(RecommendationDropdownContent.OPENED_DROPDOWN_CSS_CLASS_NAME);\n  }\n\n  public hideDropdown() {\n    this.element.addClass(ResponsiveDropdownContent.DEFAULT_CSS_CLASS_NAME);\n    this.element.addClass(this.cssClassName);\n\n    this.element.removeClass(RecommendationDropdownContent.OPENED_DROPDOWN_CSS_CLASS_NAME);\n  }\n\n  public cleanUp() {\n    this.element.removeClass(this.cssClassName);\n    this.element.removeClass(ResponsiveDropdownContent.DEFAULT_CSS_CLASS_NAME);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResponsiveComponents/ResponsiveDropdown/RecommendationDropdownContent.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_ResponsiveRecommendation.scss\n// module id = 653\n// module chunks = 22 88","import { Component } from '../Base/Component';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { Utils } from '../../utils/Utils';\nimport { QueryEvents, IBuildingQueryEventArgs } from '../../events/QueryEvents';\nimport { Initialization } from '../Base/Initialization';\nimport { $$ } from '../../utils/Dom';\nimport * as _ from 'underscore';\n\nexport interface IRecommendationQueryOptions {}\n\nexport class RecommendationQuery extends Component {\n  static ID = 'RecommendationQuery';\n\n  /**\n   * The options for the RecommendationQuery component\n   * @componentOptions\n   */\n  static options: IRecommendationQueryOptions = {};\n\n  private content: string;\n\n  constructor(public element: HTMLElement, public options?: IRecommendationQueryOptions, bindings?: IComponentBindings) {\n    super(element, RecommendationQuery.ID, bindings);\n    this.options = ComponentOptions.initComponentOptions(element, RecommendationQuery, options);\n\n    if (this.element.tagName.toLowerCase() === 'script') {\n      try {\n        this.content = Utils.decodeHTMLEntities($$(this.element).text());\n      } catch (e) {\n        return;\n      }\n      if (!_.isUndefined(this.content) && this.content != '') {\n        this.bind.onRootElement(QueryEvents.buildingQuery, this.handleBuildingQuery);\n      }\n    }\n  }\n\n  private handleBuildingQuery(data: IBuildingQueryEventArgs) {\n    data.queryBuilder.advancedExpression.add(this.content);\n  }\n}\n\nInitialization.registerAutoCreateComponent(RecommendationQuery);\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/Recommendation/RecommendationQuery.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_Recommendation.scss\n// module id = 655\n// module chunks = 22 88","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_ResultActionsMenu.scss\n// module id = 656\n// module chunks = 66 88","import { Template } from '../Templates/Template';\nimport { IQueryResult } from '../../rest/QueryResult';\n\nexport class DefaultResultAttachmentTemplate extends Template {\n  constructor() {\n    super();\n  }\n\n  instantiateToString(queryResult?: IQueryResult): string {\n    return '<div><span class=\"CoveoIcon\"></span> <a class=\"CoveoResultLink\"></a> <span class=\"CoveoQuickview\"></span></div>';\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResultAttachments/DefaultResultAttachmentTemplate.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_ResultAttachments.scss\n// module id = 658\n// module chunks = 45 88","import { Template } from '../Templates/Template';\nimport { IQueryResult } from '../../rest/QueryResult';\n\nexport class DefaultFoldingTemplate extends Template {\n  constructor() {\n    super();\n  }\n\n  instantiateToString(queryResult?: IQueryResult): string {\n    return '<div class=\"coveo-child-result\"><span class=\"CoveoIcon\" data-small=\"true\"></span> <a class=\"CoveoResultLink\"></a> <span class=\"CoveoQuickview\"></span></div>';\n  }\n\n  getType() {\n    return 'DefaultFoldingTemplate';\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResultFolding/DefaultFoldingTemplate.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_ResultFolding.scss\n// module id = 660\n// module chunks = 44 88","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_ResultLayoutSelector.scss\n// module id = 661\n// module chunks = 43 88","import { difference, intersection } from 'underscore';\nimport { Logger } from '../../misc/Logger';\nimport { $$, Dom } from '../../utils/Dom';\nimport { Component } from '../Base/Component';\nimport { ResultLayoutSelector } from '../ResultLayoutSelector/ResultLayoutSelector';\nimport { ValidLayout } from '../ResultLayoutSelector/ValidLayout';\nimport { SearchInterface } from '../SearchInterface/SearchInterface';\nimport { IResponsiveComponent, IResponsiveComponentOptions, ResponsiveComponentsManager } from './ResponsiveComponentsManager';\nimport { ResponsiveDropdown } from './ResponsiveDropdown/ResponsiveDropdown';\n\nexport class ResponsiveResultLayout implements IResponsiveComponent {\n  private searchInterface: SearchInterface;\n  private resultLayout: ResultLayoutSelector;\n\n  public static init(root: HTMLElement, component: ResultLayoutSelector, options: IResponsiveComponentOptions) {\n    if (!$$(root).find(`.${Component.computeCssClassName(ResultLayoutSelector)}`)) {\n      let logger = new Logger('ResponsiveResultLayout');\n      logger.trace('No ResultLayout component found : Cannot instantiate ResponsiveResultLayout');\n      return;\n    }\n    ResponsiveComponentsManager.register(ResponsiveResultLayout, $$(root), ResultLayoutSelector.ID, component, options);\n  }\n\n  constructor(public coveoRoot: Dom, public ID: string, options: IResponsiveComponentOptions, responsiveDropdown?: ResponsiveDropdown) {\n    this.searchInterface = <SearchInterface>Component.get(this.coveoRoot.el, SearchInterface, false);\n    coveoRoot.on('state:change:t', () => {\n      this.handleResizeEvent();\n    });\n  }\n\n  public registerComponent(accept: Component) {\n    if (accept instanceof ResultLayoutSelector) {\n      this.resultLayout = accept;\n      return true;\n    }\n    return false;\n  }\n\n  public handleResizeEvent() {\n    if (this.needSmallMode()) {\n      this.enableAndDisableLayouts(<ValidLayout[]>this.resultLayout.options.mobileLayouts);\n    } else if (this.needMediumMode()) {\n      this.enableAndDisableLayouts(<ValidLayout[]>this.resultLayout.options.tabletLayouts);\n    } else {\n      this.enableAndDisableLayouts(<ValidLayout[]>this.resultLayout.options.desktopLayouts);\n    }\n  }\n\n  private enableAndDisableLayouts(validLayouts: ValidLayout[]) {\n    const layoutsToDisable = difference<any>(ResultLayoutSelector.validLayouts, validLayouts);\n    const layoutsToEnable = intersection<any>(ResultLayoutSelector.validLayouts, validLayouts);\n    this.resultLayout.disableLayouts(layoutsToDisable);\n    this.resultLayout.enableLayouts(layoutsToEnable);\n  }\n\n  private needSmallMode(): boolean {\n    switch (this.searchInterface.responsiveComponents.getResponsiveMode()) {\n      case 'small':\n        return true;\n      case 'auto':\n        return this.coveoRoot.width() <= this.searchInterface.responsiveComponents.getSmallScreenWidth();\n      default:\n        return false;\n    }\n  }\n\n  private needMediumMode(): boolean {\n    switch (this.searchInterface.responsiveComponents.getResponsiveMode()) {\n      case 'medium':\n        return true;\n      case 'auto':\n        return this.coveoRoot.width() <= this.searchInterface.responsiveComponents.getMediumScreenWidth();\n      default:\n        return false;\n    }\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResponsiveComponents/ResponsiveResultLayout.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_ResultRating.scss\n// module id = 663\n// module chunks = 65 88","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_StarRating.scss\n// module id = 664\n// module chunks = 61 88","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_ResultsFiltersPreferences.scss\n// module id = 665\n// module chunks = 26 88","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_ResultsPerPage.scss\n// module id = 666\n// module chunks = 15 88","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_ResultsPreferences.scss\n// module id = 667\n// module chunks = 25 88","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_ResultTagging.scss\n// module id = 668\n// module chunks = 64 88","import { Component } from '../Base/Component';\nimport { ComponentOptions } from '../Base/ComponentOptions';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport {\n  SearchAlertsEvents,\n  ISearchAlertsEventArgs,\n  ISearchAlertsFailEventArgs,\n  ISearchAlertsPopulateMessageEventArgs\n} from '../../events/SearchAlertEvents';\nimport { QueryEvents } from '../../events/QueryEvents';\nimport { SUBSCRIPTION_TYPE, ISubscriptionQueryRequest } from '../../rest/Subscription';\nimport { PopupUtils, PopupHorizontalAlignment, PopupVerticalAlignment } from '../../utils/PopupUtils';\nimport { l } from '../../strings/Strings';\nimport { $$, Dom } from '../../utils/Dom';\nimport * as _ from 'underscore';\nimport { ISearchAlertsPopulateMessageText } from '../../events/SearchAlertEvents';\nimport { SVGIcons } from '../../utils/SVGIcons';\nimport { SVGDom } from '../../utils/SVGDom';\n\nexport interface ISearchAlertMessageOptions {\n  closeDelay: number;\n}\n\n/**\n * The SearchAlertsMessage component allows the {@link SearchAlerts} component to display messages.\n *\n * You should not include this component in your page. Instead, use a {@link SearchAlerts} component, and access the\n * {@link SearchAlerts.message} attribute.\n */\nexport class SearchAlertsMessage extends Component {\n  static ID = 'SubscriptionsMessages';\n\n  /**\n   * The options for the SearchAlertsMessage component\n   * @componentOptions\n   */\n  static options: ISearchAlertMessageOptions = {\n    /**\n     * Specifies how long to display the search alerts messages (in milliseconds).\n     *\n     * Default value is `2000`. Minimum value is `0`.\n     */\n    closeDelay: ComponentOptions.buildNumberOption({ defaultValue: 2000, min: 0 })\n  };\n\n  private message: Dom;\n  private closeTimeout: number;\n\n  /**\n   * Creates a new SearchAlertsMessage component\n   * @param element The HTMLElement on which to instantiate the component.\n   * @param options The options for the SearchAlertsMessage component.\n   * @param bindings The bindings that the component requires to function normally. If not set, these will be\n   * automatically resolved (with a slower execution time).\n   */\n  constructor(public element: HTMLElement, public options: ISearchAlertMessageOptions, public bindings?: IComponentBindings) {\n    super(element, SearchAlertsMessage.ID, bindings);\n\n    this.bind.onRootElement(SearchAlertsEvents.searchAlertsCreated, (args: ISearchAlertsEventArgs) => this.handleSubscriptionCreated(args));\n    this.bind.oneRootElement(SearchAlertsEvents.searchAlertsFail, (args: ISearchAlertsEventArgs) => this.handleSearchAlertsFail(args));\n    this.bind.oneRootElement(SearchAlertsEvents.searchAlertsDeleted, () => this.close());\n    this.bind.oneRootElement(QueryEvents.newQuery, () => this.close());\n  }\n\n  public getCssClass(): string {\n    return 'coveo-subscriptions-messages';\n  }\n\n  public getFollowQueryMessage(query?: string, htmlFormatted = false): string {\n    let populateMessageArguments: ISearchAlertsPopulateMessageEventArgs = {\n      text: []\n    };\n\n    let getAdditionalTextFormatted = () => {\n      return _.map(populateMessageArguments.text, text => {\n        text = this.formatMessageArgumentsText(text);\n        return `${htmlFormatted ? '<li>' : '('}${text}${htmlFormatted ? '</li>' : ')'}`;\n      }).join(' ');\n    };\n\n    $$(this.root).trigger(SearchAlertsEvents.searchAlertsPopulateMessage, populateMessageArguments);\n    let additionalMessage = `${htmlFormatted ? '<ul>' : ''}${getAdditionalTextFormatted()}${htmlFormatted ? '</ul>' : ''}`;\n\n    let automaticallyBuiltMessage: string;\n\n    if (query && populateMessageArguments.text.length != 0) {\n      automaticallyBuiltMessage = `${_.escape(query)} ${additionalMessage}`;\n    }\n\n    if (query && populateMessageArguments.text.length == 0) {\n      automaticallyBuiltMessage = `${_.escape(query)}`;\n    }\n\n    if (!query && populateMessageArguments.text.length != 0) {\n      automaticallyBuiltMessage = `${additionalMessage}`;\n    }\n\n    if (!query && populateMessageArguments.text.length == 0) {\n      automaticallyBuiltMessage = htmlFormatted ? l('EmptyQuery') : _.unescape(l('EmptyQuery'));\n    }\n\n    return automaticallyBuiltMessage;\n  }\n\n  /**\n   * Displays a message near the passed dom attribute.\n   * @param dom Specifies where to display the message.\n   * @param message The message.\n   * @param error Specifies whether the message is an error message.\n   */\n  public showMessage(dom: Dom, message: string, error: boolean) {\n    this.message = $$('div', {\n      className: 'coveo-subscriptions-messages'\n    });\n    this.message.el.innerHTML = `\n      <div class='coveo-subscriptions-messages-message'>\n        <div class='coveo-subscriptions-messages-content'><span>${message}</span></div>\n        <div class='coveo-subscriptions-messages-info-close'>${SVGIcons.icons.checkboxHookExclusionMore}</div>\n      </div>`;\n\n    this.message.toggleClass('coveo-subscriptions-messages-error', error);\n    let closeButton = this.message.find('.coveo-subscriptions-messages-info-close');\n    SVGDom.addClassToSVGInContainer(closeButton, 'coveo-subscript-messages-info-close-svg');\n    $$(closeButton).on('click', () => this.close());\n\n    PopupUtils.positionPopup(\n      this.message.el,\n      dom.el,\n      this.root,\n      {\n        horizontal: PopupHorizontalAlignment.INNERLEFT,\n        vertical: PopupVerticalAlignment.BOTTOM,\n        verticalOffset: 12,\n        horizontalClip: true\n      },\n      this.root\n    );\n\n    this.startCloseDelay();\n\n    this.message.on('mouseleave', () => {\n      this.startCloseDelay();\n    });\n    this.message.on('mouseenter', () => {\n      this.stopCloseDelay();\n    });\n  }\n\n  private formatMessageArgumentsText(text: string | ISearchAlertsPopulateMessageText) {\n    if (_.isString(text)) {\n      text = _.escape(text);\n    } else if (text.lineThrough) {\n      text = '<span style=\"text-decoration:line-through\">' + _.escape(text.value) + '</span>';\n    } else {\n      text = _.escape(text.value);\n    }\n    return text;\n  }\n\n  private handleSubscriptionCreated(args: ISearchAlertsEventArgs) {\n    this.close();\n    if (args.dom != null) {\n      if (args.subscription.type == SUBSCRIPTION_TYPE.followQuery) {\n        let typeConfig = <ISubscriptionQueryRequest>args.subscription.typeConfig;\n        this.showMessage($$(args.dom), l('SubscriptionsMessageFollowQuery', this.getFollowQueryMessage(typeConfig.query.q, true)), false);\n      } else {\n        this.showMessage($$(args.dom), l('SubscriptionsMessageFollow'), false);\n      }\n    }\n  }\n\n  private handleSearchAlertsFail(args: ISearchAlertsFailEventArgs) {\n    this.close();\n    if (args.dom != null) {\n      this.showMessage($$(args.dom), l('SearchAlerts_Fail'), true);\n    }\n  }\n\n  private startCloseDelay() {\n    clearTimeout(this.closeTimeout);\n    this.closeTimeout = window.setTimeout(() => {\n      this.close();\n    }, this.options.closeDelay);\n  }\n\n  private stopCloseDelay() {\n    clearTimeout(this.closeTimeout);\n  }\n\n  private close() {\n    if (this.message != null) {\n      clearTimeout(this.closeTimeout);\n      this.message.remove();\n      this.message = null;\n    }\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/SearchAlerts/SearchAlertsMessage.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_Searchbox.scss\n// module id = 670\n// module chunks = 9 88","import { $$ } from './Dom';\n\nexport class SearchBoxResize {\n  public static resize(element: HTMLElement, size: number) {\n    const searchbox = this.getSearchbox(element);\n    const elementToResize: HTMLElement[] = this.getElementsToResize(element);\n    const magicboxInput: HTMLElement = this.getInput(element);\n\n    const searchboxStyle = `height: ${size}px; line-height: ${size}px;`;\n    const inputChangeStyle = `height: ${size}px`;\n\n    //This need to be a little bit smaller because when the height become smaller than 38px or to big, the bottom border of the Searchbox dissapear\n    const magicboxInputStyle = `height: ${size - 2}px;`;\n\n    this.applyStyle(searchbox, searchboxStyle);\n    this.applyStyle(magicboxInput, magicboxInputStyle);\n\n    elementToResize.forEach(HtmlElement => {\n      this.applyStyle(HtmlElement, inputChangeStyle);\n    });\n  }\n\n  private static applyStyle(element: HTMLElement, style: string) {\n    element.style.cssText += style;\n  }\n\n  private static getSearchbox(element: HTMLElement): HTMLElement {\n    return $$(element).find('.CoveoOmnibox') || $$(element).find('.CoveoQuerybox');\n  }\n\n  private static getElementsToResize(element: HTMLElement): HTMLElement[] {\n    return [\n      $$(element).find('.CoveoSearchButton'),\n      $$($$(element).find('.magic-box-input')).find('input'),\n      $$(element).find('.magic-box-icon'),\n      $$(element).find('.magic-box-clear'),\n      $$(element).find('.magic-box-underlay')\n    ];\n  }\n\n  private static getInput(element: HTMLElement): HTMLElement {\n    return $$(element).find('.magic-box-input');\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/SearchBoxResize.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_Settings.scss\n// module id = 672\n// module chunks = 63 88","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_ShareQuery.scss\n// module id = 673\n// module chunks = 62 88","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_Tab.scss\n// module id = 674\n// module chunks = 29 88","import 'styling/_ResponsiveTabs';\nimport { filter, each, last } from 'underscore';\nimport { InitializationEvents } from '../../events/InitializationEvents';\nimport { Logger } from '../../misc/Logger';\nimport { l } from '../../strings/Strings';\nimport { $$, Dom } from '../../utils/Dom';\nimport { EventsUtils } from '../../utils/EventsUtils';\nimport { SVGDom } from '../../utils/SVGDom';\nimport { SVGIcons } from '../../utils/SVGIcons';\nimport { Utils } from '../../utils/Utils';\nimport { Component } from '../Base/Component';\nimport { SearchInterface } from '../SearchInterface/SearchInterface';\nimport { Tab } from '../Tab/Tab';\nimport { ResponsiveComponents } from './ResponsiveComponents';\nimport { IResponsiveComponent, IResponsiveComponentOptions, ResponsiveComponentsManager } from './ResponsiveComponentsManager';\nimport { ResponsiveComponentsUtils } from './ResponsiveComponentsUtils';\nimport { AccessibleButton } from '../../utils/AccessibleButton';\nimport Popper from 'popper.js';\nimport { KeyboardUtils, KEYBOARD } from '../../utils/KeyboardUtils';\n\nexport class ResponsiveTabs implements IResponsiveComponent {\n  private static DROPDOWN_HEADER_LABEL_DEFAULT_VALUE = 'More';\n  private static TAB_IN_DROPDOWN_CSS_CLASS = 'coveo-tab-dropdown';\n  private static TAB_IN_DROPDOWN_HEADER_CSS_CLASS = `${ResponsiveTabs.TAB_IN_DROPDOWN_CSS_CLASS}-header`;\n  private static ACTIVE_DROPDOWN_CSS_CLASS = 'coveo-dropdown-header-active';\n  private static logger: Logger;\n  private dropdownHeader: Dom;\n  private dropdownContent: Dom;\n  private tabSection: Dom;\n  private searchInterface: SearchInterface;\n  private dropdownHeaderLabel: string;\n  private initialTabOrder: HTMLElement[];\n\n  private documentClickListener: EventListener;\n  private dropdownClickListener: EventListener;\n  private ignoreNextDocumentClick = false;\n\n  constructor(private coveoRoot: Dom, public ID: string) {\n    this.dropdownHeaderLabel = this.getDropdownHeaderLabel();\n    this.searchInterface = <SearchInterface>Component.get(this.coveoRoot.el, SearchInterface, false);\n    this.dropdownContent = this.buildDropdownContent();\n    this.dropdownHeader = this.buildDropdownHeader();\n    this.bindDropdownContentEvents();\n    this.bindDropdownHeaderEvents();\n    this.tabSection = $$(<HTMLElement>this.coveoRoot.find('.coveo-tab-section'));\n    this.manageTabSwapping();\n    this.bindNukeEvents();\n    this.initialTabOrder = [...this.tabsInTabSection];\n  }\n\n  public static init(root: HTMLElement, component: Component, options: IResponsiveComponentOptions) {\n    this.logger = new Logger('ResponsiveTabs');\n    if (!$$(root).find('.coveo-tab-section')) {\n      this.logger.info('No element with class coveo-tab-section. Responsive tabs cannot be enabled.');\n      return;\n    }\n    ResponsiveComponentsManager.register(ResponsiveTabs, $$(root), Tab.ID, component, options);\n  }\n\n  public handleResizeEvent(): void {\n    if (this.needSmallMode() && !ResponsiveComponentsUtils.isSmallTabsActivated(this.coveoRoot)) {\n      this.changeToSmallMode();\n    } else if (!this.needSmallMode() && ResponsiveComponentsUtils.isSmallTabsActivated(this.coveoRoot)) {\n      this.changeToLargeMode();\n    }\n\n    if (this.shouldAddTabsToDropdown()) {\n      this.addTabsToDropdown();\n    } else if (this.shouldRemoveTabsFromDropdown()) {\n      this.removeTabsFromDropdown();\n    }\n\n    if (this.isDropdownOpen()) {\n      this.positionPopup();\n    }\n  }\n\n  private needSmallMode(): boolean {\n    // Ignore everything if the responsiveMode is not auto.\n    if (!this.searchInterface) {\n      return this.shouldAutoModeResolveToSmall();\n    }\n    switch (this.searchInterface.responsiveComponents.getResponsiveMode()) {\n      case 'small':\n      case 'medium':\n        return true;\n      case 'auto':\n      default:\n        return this.shouldAutoModeResolveToSmall();\n    }\n  }\n\n  private shouldAutoModeResolveToSmall() {\n    const mediumWidth = this.searchInterface\n      ? this.searchInterface.responsiveComponents.getMediumScreenWidth()\n      : new ResponsiveComponents().getMediumScreenWidth();\n    if (this.coveoRoot.width() <= mediumWidth) {\n      return true;\n    } else if (!ResponsiveComponentsUtils.isSmallTabsActivated(this.coveoRoot)) {\n      return this.isOverflowing(this.tabSection.el);\n    } else {\n      return this.isLargeFormatOverflowing();\n    }\n  }\n\n  private changeToSmallMode(): void {\n    ResponsiveComponentsUtils.activateSmallTabs(this.coveoRoot);\n  }\n\n  private changeToLargeMode(): void {\n    this.emptyDropdown();\n    this.cleanUpDropdown();\n    ResponsiveComponentsUtils.deactivateSmallTabs(this.coveoRoot);\n  }\n\n  private shouldAddTabsToDropdown(): boolean {\n    return (\n      (this.isOverflowing(this.tabSection.el) || this.tabSection.el.clientWidth === 0) &&\n      ResponsiveComponentsUtils.isSmallTabsActivated(this.coveoRoot)\n    );\n  }\n\n  private addTabsToDropdown(): void {\n    let currentTab;\n    if (!this.tabSection.find(`.${ResponsiveTabs.TAB_IN_DROPDOWN_HEADER_CSS_CLASS}`)) {\n      const facetDropdownHeader = this.tabSection.find('.coveo-facet-dropdown-header');\n      if (facetDropdownHeader) {\n        this.dropdownHeader.insertBefore(facetDropdownHeader);\n      } else {\n        this.tabSection.el.appendChild(this.dropdownHeader.el);\n      }\n    }\n    for (let i = this.initialTabOrder.length - 1; i >= 0; i--) {\n      currentTab = this.initialTabOrder[i];\n\n      if (this.tabIsSelected(currentTab) && i > 0) {\n        currentTab = this.initialTabOrder[--i];\n      }\n\n      this.addToDropdownIfNeeded(currentTab);\n\n      if (!this.isOverflowing(this.tabSection.el)) {\n        break;\n      }\n    }\n  }\n\n  private shouldRemoveTabsFromDropdown(): boolean {\n    return (\n      !this.isOverflowing(this.tabSection.el) &&\n      this.tabSection.el.clientWidth !== 0 &&\n      ResponsiveComponentsUtils.isSmallTabsActivated(this.coveoRoot) &&\n      !this.isDropdownEmpty()\n    );\n  }\n\n  private removeTabsFromDropdown() {\n    const dropdownTabs = this.tabsInTabDropdown;\n\n    let current: HTMLElement;\n    while (!this.isOverflowing(this.tabSection.el) && !this.isDropdownEmpty()) {\n      current = dropdownTabs.shift();\n      this.removeFromDropdownIfNeeded(current);\n      this.fromDropdownToTabSection($$(current));\n    }\n\n    if (this.isOverflowing(this.tabSection.el)) {\n      const unselectedTabs = filter(this.tabsInTabSection, tab => !this.tabIsSelected(tab));\n      this.addToDropdownIfNeeded(unselectedTabs.pop());\n    }\n\n    if (this.isDropdownEmpty()) {\n      this.cleanUpDropdown();\n    }\n  }\n\n  private emptyDropdown(): void {\n    if (!this.isDropdownEmpty()) {\n      const dropdownTabs = this.tabsInTabDropdown;\n      while (!this.isDropdownEmpty()) {\n        const current = dropdownTabs.shift();\n        this.removeFromDropdownIfNeeded(current);\n      }\n      this.initialTabOrder.forEach(tab => this.tabSection.append(tab));\n    }\n  }\n\n  private isLargeFormatOverflowing(): boolean {\n    const virtualTabSection = $$(<HTMLElement>this.tabSection.el.cloneNode(true));\n\n    const dropdownHeader = virtualTabSection.find(`.${ResponsiveTabs.TAB_IN_DROPDOWN_HEADER_CSS_CLASS}`);\n    if (dropdownHeader) {\n      virtualTabSection.el.removeChild(dropdownHeader);\n    }\n\n    virtualTabSection.el.style.position = 'absolute';\n    virtualTabSection.el.style.visibility = 'hidden';\n\n    if (!this.isDropdownEmpty()) {\n      each(this.dropdownContent.findAll('.CoveoTab'), tab => {\n        virtualTabSection.el.appendChild(tab.cloneNode(true));\n      });\n    }\n    virtualTabSection.insertBefore(this.tabSection.el);\n\n    ResponsiveComponentsUtils.deactivateSmallTabs(this.coveoRoot);\n    const isOverflowing = this.isOverflowing(this.tabSection.el) || this.isOverflowing(virtualTabSection.el);\n    ResponsiveComponentsUtils.activateSmallTabs(this.coveoRoot);\n\n    virtualTabSection.detach();\n    return isOverflowing;\n  }\n\n  private isOverflowing(el: HTMLElement) {\n    return el.clientWidth < el.scrollWidth;\n  }\n\n  private buildDropdownHeader(): Dom {\n    const dropdownHeader = $$('a', { className: `coveo-dropdown-header ${ResponsiveTabs.TAB_IN_DROPDOWN_HEADER_CSS_CLASS}` });\n    const content = $$('p');\n    content.text(this.dropdownHeaderLabel);\n    const icon = $$('span', { className: 'coveo-more-tabs' }, SVGIcons.icons.arrowDown);\n    SVGDom.addClassToSVGInContainer(icon.el, 'coveo-more-tabs-svg');\n    content.el.appendChild(icon.el);\n    dropdownHeader.el.appendChild(content.el);\n    return dropdownHeader;\n  }\n\n  private bindDropdownHeaderEvents() {\n    const toggle = (event: Event) => {\n      if (this.isDropdownOpen()) {\n        this.closeDropdown();\n      } else {\n        this.openDropdown();\n      }\n\n      if (event.type === 'click') {\n        this.ignoreNextDocumentClick = true;\n      }\n    };\n    new AccessibleButton()\n      .withElement(this.dropdownHeader)\n      .withSelectAction(toggle)\n      .withLabel(this.getDropdownHeaderLabel())\n      .build();\n  }\n\n  private buildDropdownContent() {\n    const dropdownContent = $$('div', {\n      className: 'coveo-tab-list-container ' + SearchInterface.SMALL_INTERFACE_CLASS_NAME\n    });\n    const contentList = $$('ol', { className: 'coveo-tab-list' });\n    dropdownContent.el.appendChild(contentList.el);\n    return dropdownContent;\n  }\n\n  private bindDropdownContentEvents() {\n    this.dropdownClickListener = () => {\n      if (this.isDropdownOpen()) {\n        this.ignoreNextDocumentClick = true;\n      }\n    };\n\n    this.documentClickListener = event => {\n      if (!this.ignoreNextDocumentClick) {\n        this.closeDropdown();\n      }\n      this.ignoreNextDocumentClick = false;\n    };\n    $$(this.dropdownHeader).on('click', this.dropdownClickListener);\n    $$(this.dropdownContent).on('click', this.dropdownClickListener);\n  }\n\n  private isDropdownOpen(): boolean {\n    return this.dropdownHeader.hasClass(ResponsiveTabs.ACTIVE_DROPDOWN_CSS_CLASS);\n  }\n\n  private closeDropdown(): void {\n    $$(document.documentElement).off('click', this.documentClickListener);\n    this.dropdownContent.detach();\n    this.dropdownHeader.removeClass(ResponsiveTabs.ACTIVE_DROPDOWN_CSS_CLASS);\n  }\n\n  private openDropdown(): void {\n    $$(document.documentElement).on('click', this.documentClickListener);\n    this.positionPopup();\n    this.dropdownHeader.addClass(ResponsiveTabs.ACTIVE_DROPDOWN_CSS_CLASS);\n  }\n\n  private addToDropdownIfNeeded(tab: HTMLElement) {\n    if (!this.canAddTabToDropdown(tab)) {\n      return;\n    }\n\n    $$(tab).addClass(ResponsiveTabs.TAB_IN_DROPDOWN_CSS_CLASS);\n    const list = $$(this.dropdownContent.find('ol'));\n    const listElement = $$('li', null, tab);\n    list.prepend(listElement.el);\n  }\n\n  private removeFromDropdownIfNeeded(tab: HTMLElement) {\n    if (!this.canRemoveTabFromDropdown(tab)) {\n      return;\n    }\n\n    $$(tab as HTMLElement).removeClass(ResponsiveTabs.TAB_IN_DROPDOWN_CSS_CLASS);\n    $$(tab.parentElement).detach();\n  }\n\n  private canAddTabToDropdown(tab: HTMLElement) {\n    return tab && !this.tabIsInDropdown(tab) && this.dropdownHeader;\n  }\n\n  private canRemoveTabFromDropdown(tab: HTMLElement) {\n    return tab && this.tabIsInDropdown(tab) && this.dropdownContent;\n  }\n\n  private cleanUpDropdown() {\n    this.dropdownHeader.removeClass(ResponsiveTabs.ACTIVE_DROPDOWN_CSS_CLASS);\n    this.dropdownHeader.detach();\n    this.dropdownContent.detach();\n  }\n\n  private isDropdownEmpty(): boolean {\n    if (this.dropdownContent) {\n      const tabs = this.dropdownContent.findAll('.CoveoTab');\n      return tabs.length == 0;\n    }\n    return false;\n  }\n\n  private manageTabSwapping() {\n    each(this.coveoRoot.findAll('.' + Component.computeCssClassNameForType(this.ID)), tabElement => {\n      const tab = $$(tabElement);\n      const fadeOutFadeIn = event => {\n        const lastTabInSection = this.tabsInTabSection.pop();\n\n        if (event.propertyName == 'opacity') {\n          if (tab.el.style.opacity == '0') {\n            $$(lastTabInSection).addClass(ResponsiveTabs.TAB_IN_DROPDOWN_CSS_CLASS);\n            tab.replaceWith(lastTabInSection);\n            tab.removeClass(ResponsiveTabs.TAB_IN_DROPDOWN_CSS_CLASS);\n\n            this.fromDropdownToTabSection(tab);\n\n            // Because of the DOM manipulation, sometimes the animation will not trigger. Accessing the computed styles makes sure\n            // the animation will happen.\n            window.getComputedStyle(tab.el).opacity;\n            window.getComputedStyle(lastTabInSection).opacity;\n\n            tab.el.style.opacity = lastTabInSection.style.opacity = '1';\n          } else if (tab.el.style.opacity == '1') {\n            this.closeDropdown();\n            EventsUtils.removePrefixedEvent(tab.el, 'TransitionEnd', fadeOutFadeIn);\n            this.handleResizeEvent();\n          }\n        }\n      };\n\n      const swapOnSelect = () => {\n        if (this.tabIsInDropdown(tab)) {\n          let lastTabInSection = this.tabsInTabSection.pop();\n          if (lastTabInSection) {\n            EventsUtils.addPrefixedEvent(tab.el, 'TransitionEnd', fadeOutFadeIn);\n            tab.el.style.opacity = lastTabInSection.style.opacity = '0';\n          }\n        }\n      };\n\n      tab.on('click', () => swapOnSelect());\n      tab.on('keyup', KeyboardUtils.keypressAction(KEYBOARD.ENTER, swapOnSelect));\n      tab.on('blur', (e: FocusEvent) => {\n        if (e.relatedTarget && !this.tabIsInDropdown(e.relatedTarget as HTMLElement)) {\n          this.closeDropdown();\n        }\n      });\n    });\n  }\n\n  private bindNukeEvents() {\n    $$(this.coveoRoot).on(InitializationEvents.nuke, () => {\n      $$(document.documentElement).off('click', this.documentClickListener);\n    });\n  }\n\n  private positionPopup() {\n    this.dropdownContent.insertAfter(this.dropdownHeader.el);\n\n    new Popper(this.dropdownHeader.el, this.dropdownContent.el, {\n      modifiers: {\n        preventOverflow: {\n          boundariesElement: this.coveoRoot.el\n        }\n      }\n    });\n  }\n\n  private fromDropdownToTabSection(tab: Dom) {\n    const lastTabInTabSection = last(this.tabsInTabSection);\n    if (!lastTabInTabSection) {\n      this.tabSection.prepend(tab.el);\n      return;\n    }\n\n    const comesAfterInitialTabOrder = this.initialTabOrder.indexOf(tab.el) > this.initialTabOrder.indexOf(lastTabInTabSection);\n    if (comesAfterInitialTabOrder) {\n      tab.insertAfter(lastTabInTabSection);\n    } else {\n      tab.insertBefore(lastTabInTabSection);\n    }\n  }\n\n  private getDropdownHeaderLabel() {\n    let dropdownHeaderLabel: string;\n    each($$(this.coveoRoot.find('.coveo-tab-section')).findAll('.' + Component.computeCssClassName(Tab)), tabElement => {\n      const tab = <Tab>Component.get(tabElement, Tab);\n      if (!dropdownHeaderLabel && tab && tab.options.dropdownHeaderLabel) {\n        dropdownHeaderLabel = tab.options.dropdownHeaderLabel;\n      }\n    });\n\n    if (!dropdownHeaderLabel) {\n      dropdownHeaderLabel = l(ResponsiveTabs.DROPDOWN_HEADER_LABEL_DEFAULT_VALUE);\n    }\n\n    return dropdownHeaderLabel;\n  }\n\n  private tabIsSelected(tab: Dom | HTMLElement) {\n    return $$(tab as HTMLElement).hasClass('coveo-selected');\n  }\n\n  private tabIsInDropdown(tab: Dom | HTMLElement) {\n    return $$(tab as HTMLElement).hasClass(ResponsiveTabs.TAB_IN_DROPDOWN_CSS_CLASS);\n  }\n\n  private get tabsInTabSection(): HTMLElement[] {\n    const tabsInSection = [];\n    each(this.tabSection.children(), childElement => {\n      if (Utils.isHtmlElement(childElement)) {\n        const child = $$(childElement);\n        const childHasTabCssClassName = child.hasClass(Component.computeCssClassNameForType(this.ID));\n        if (!this.tabIsInDropdown(child) && childHasTabCssClassName) {\n          tabsInSection.push(child.el);\n        }\n      }\n    });\n    return tabsInSection;\n  }\n\n  private get tabsInTabDropdown(): HTMLElement[] {\n    if (!this.dropdownContent) {\n      return [];\n    }\n    return this.dropdownContent.findAll(`.${ResponsiveTabs.TAB_IN_DROPDOWN_CSS_CLASS}`);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/ResponsiveComponents/ResponsiveTabs.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_ResponsiveTabs.scss\n// module id = 676\n// module chunks = 29 88","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_Text.scss\n// module id = 677\n// module chunks = 60 88","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_Triggers.scss\n// module id = 678\n// module chunks = 59 88","import 'styling/_SimpleFilter';\nimport { IDoneBuildingQueryEventArgs, IQuerySuccessEventArgs } from '../../events/QueryEvents';\nimport * as _ from 'underscore';\nimport { QueryBuilder } from '../Base/QueryBuilder';\nimport { SimpleFilter, ISimpleFilterOptions } from './SimpleFilter';\nimport { IGroupByRequest } from '../../rest/GroupByRequest';\n\nexport class SimpleFilterValues {\n  private groupByRequestValues: string[] = [];\n  private position: number;\n\n  constructor(public simpleFilter: SimpleFilter, public options: ISimpleFilterOptions) {}\n\n  public getValuesFromGroupBy(): string[] {\n    return this.groupByRequestValues;\n  }\n\n  public groupBy(data: IQuerySuccessEventArgs) {\n    this.groupByRequestValues = [];\n    const groupByResult = data.results.groupByResults;\n    if (groupByResult.length > 0 && this.position != undefined) {\n      _.each(groupByResult[this.position].values, value => {\n        if (this.groupByRequestValues.indexOf(value.lookupValue) < 0) {\n          this.groupByRequestValues.push(value.lookupValue);\n        }\n      });\n    }\n  }\n\n  public handleDoneBuildingQuery(data: IDoneBuildingQueryEventArgs) {\n    const queryBuilder = data.queryBuilder;\n    this.putGroupByIntoQueryBuilder(queryBuilder);\n  }\n\n  private putGroupByIntoQueryBuilder(queryBuilder: QueryBuilder) {\n    const groupByRequest = this.createBasicGroupByRequest();\n    queryBuilder.groupByRequests.push(groupByRequest);\n    this.position = queryBuilder.groupByRequests.length - 1;\n  }\n\n  private createBasicGroupByRequest(): IGroupByRequest {\n    let groupByRequest: IGroupByRequest = {\n      field: <string>this.options.field,\n      maximumNumberOfValues: this.options.maximumNumberOfValues,\n      injectionDepth: 1000,\n      sortCriteria: this.simpleFilter.options.sortCriteria\n    };\n    return groupByRequest;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/SimpleFilter/SimpleFilterValues.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_PromotedResultsBadge.scss\n// module id = 680\n// module chunks = 68 88","import { Assert } from '../misc/Assert';\nimport { QueryBuilder } from '../ui/Base/QueryBuilder';\nimport { IFacetRequest, IFacetRequestValue } from '../rest/Facet/FacetRequest';\nimport { QueryEvents } from '../events/QueryEvents';\nimport { FacetValueState } from '../rest/Facet/FacetValueState';\nimport { IQueryResults } from '../rest/QueryResults';\nimport { findIndex } from 'underscore';\nimport { IDynamicHierarchicalFacet, IDynamicHierarchicalFacetValue } from '../ui/DynamicHierarchicalFacet/IDynamicHierarchicalFacet';\nimport { DynamicFacetRequestBuilder } from './DynamicFacetRequestBuilder';\nimport { FacetSortCriteria } from '../rest/Facet/FacetSortCriteria';\n\nexport class DynamicHierarchicalFacetQueryController {\n  private requestBuilder: DynamicFacetRequestBuilder;\n  private numberOfValuesToRequest: number;\n  private freezeFacetOrder = false;\n  private preventAutoSelection = false;\n\n  constructor(private facet: IDynamicHierarchicalFacet) {\n    this.requestBuilder = new DynamicFacetRequestBuilder({\n      facetId: this.facet.options.id,\n      field: this.facet.fieldName,\n      type: this.facet.facetType,\n      sortCriteria: <FacetSortCriteria>this.facet.options.sortCriteria,\n      injectionDepth: this.facet.options.injectionDepth,\n      delimitingCharacter: this.facet.options.delimitingCharacter,\n      filterFacetCount: this.facet.options.filterFacetCount,\n      basePath: this.facet.options.basePath,\n      // TODO: add configurable option when API has fixed the facet value issue\n      filterByBasePath: false\n    });\n    this.resetNumberOfValuesToRequest();\n    this.resetFlagsDuringQuery();\n  }\n\n  private resetFlagsDuringQuery() {\n    this.facet.bind.onRootElement(QueryEvents.duringQuery, () => {\n      this.freezeFacetOrder = false;\n      this.preventAutoSelection = false;\n    });\n  }\n\n  public increaseNumberOfValuesToRequest(additionalNumberOfValues: number) {\n    this.numberOfValuesToRequest += additionalNumberOfValues;\n  }\n\n  public resetNumberOfValuesToRequest() {\n    this.numberOfValuesToRequest = this.facet.options.numberOfValues;\n  }\n\n  public enableFreezeFacetOrderFlag() {\n    this.freezeFacetOrder = true;\n  }\n\n  public enablePreventAutoSelectionFlag() {\n    this.preventAutoSelection = true;\n  }\n\n  public putFacetIntoQueryBuilder(queryBuilder: QueryBuilder) {\n    Assert.exists(queryBuilder);\n\n    queryBuilder.facetRequests.push(this.buildFacetRequest());\n    if (this.freezeFacetOrder) {\n      queryBuilder.facetOptions.freezeFacetOrder = this.freezeFacetOrder;\n    }\n  }\n\n  public buildFacetRequest(): IFacetRequest {\n    return {\n      ...this.requestBuilder.buildBaseRequestForQuery(),\n      currentValues: this.currentValues,\n      preventAutoSelect: this.preventAutoSelection,\n      numberOfValues: this.facet.values.hasSelectedValue ? 1 : this.numberOfValuesToRequest,\n      isFieldExpanded: this.numberOfValuesToRequest > this.facet.options.numberOfValues\n    };\n  }\n\n  public getQueryResults(): Promise<IQueryResults> {\n    const query = this.facet.queryController.getLastQuery();\n    // Specifying a numberOfResults of 0 will not log the query as a full fledged query in the API\n    // it will also alleviate the load on the index\n    query.numberOfResults = 0;\n\n    const previousFacetRequestIndex = findIndex(query.facets, { facetId: this.facet.options.id });\n    if (previousFacetRequestIndex !== -1) {\n      query.facets[previousFacetRequestIndex] = this.buildFacetRequest();\n    } else if (query.facets) {\n      query.facets.push(this.buildFacetRequest());\n    } else {\n      query.facets = [this.buildFacetRequest()];\n    }\n\n    return this.facet.queryController.getEndpoint().search(query);\n  }\n\n  private get currentValues(): IFacetRequestValue[] {\n    return this.facet.values.hasSelectedValue\n      ? this.facet.values.allFacetValues.map(requestValue => this.buildRequestValue(requestValue))\n      : [];\n  }\n\n  private buildRequestValue(facetValue: IDynamicHierarchicalFacetValue): IFacetRequestValue {\n    return {\n      value: facetValue.value,\n      state: facetValue.state,\n      children: this.childrenForFacetValue(facetValue),\n      retrieveChildren: this.shouldRetrieveChildren(facetValue),\n      retrieveCount: facetValue.retrieveCount\n    };\n  }\n\n  private childrenForFacetValue(facetValue: IDynamicHierarchicalFacetValue) {\n    return this.shouldRetrieveChildren(facetValue) ? [] : facetValue.children.map(requestValue => this.buildRequestValue(requestValue));\n  }\n\n  private shouldRetrieveChildren(facetValue: IDynamicHierarchicalFacetValue) {\n    return facetValue.state === FacetValueState.selected;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/controllers/DynamicHierarchicalFacetQueryController.ts","import 'styling/DynamicFacet/_DynamicFacetBreadcrumbs';\nimport { $$ } from '../../utils/Dom';\nimport { SVGIcons } from '../../utils/SVGIcons';\nimport { IDynamicHierarchicalFacet } from './IDynamicHierarchicalFacet';\nimport { l } from '../../strings/Strings';\nimport { analyticsActionCauseList } from '../Analytics/AnalyticsActionListMeta';\nimport { getHeadingTag } from '../../utils/AccessibilityUtils';\n\nexport interface IDynamicHierarchicalFacetBreadcrumbsOptions {\n  headingLevel?: number;\n}\n\nexport class DynamicHierarchicalFacetBreadcrumb {\n  public element: HTMLElement;\n\n  constructor(private facet: IDynamicHierarchicalFacet, private readonly options?: IDynamicHierarchicalFacetBreadcrumbsOptions) {\n    this.create();\n  }\n\n  private create() {\n    this.element = $$('div', { className: 'coveo-dynamic-facet-breadcrumb coveo-breadcrumb-item' }).el;\n\n    const pathToRender = this.facet.values.selectedPath;\n    const captionLabel = pathToRender.map(pathPart => this.facet.getCaption(pathPart)).join(' / ');\n\n    this.createAndAppendTitle();\n    this.createAndAppendCaption(captionLabel);\n  }\n\n  private createAndAppendTitle() {\n    const titleElement = $$(\n      getHeadingTag(this.options && this.options.headingLevel, 'h3'),\n      { className: 'coveo-dynamic-facet-breadcrumb-title' },\n      `${this.facet.options.title}:`\n    ).el;\n    this.element.appendChild(titleElement);\n  }\n\n  private createAndAppendCaption(caption: string) {\n    const valueElement = $$(\n      'button',\n      {\n        type: 'button',\n        className: 'coveo-dynamic-facet-breadcrumb-value',\n        ariaLabel: l('RemoveFilterOn', caption)\n      },\n      caption\n    ).el;\n    const clearElement = $$('span', { className: 'coveo-dynamic-facet-breadcrumb-value-clear' }, SVGIcons.icons.mainClear).el;\n    valueElement.appendChild(clearElement);\n\n    $$(valueElement).on('click', () => this.valueSelectAction());\n\n    this.element.appendChild(valueElement);\n  }\n\n  private valueSelectAction() {\n    this.facet.reset();\n    this.facet.triggerNewQuery(() => this.facet.logAnalyticsEvent(analyticsActionCauseList.breadcrumbFacet));\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/DynamicHierarchicalFacet/DynamicHierarchicalFacetBreadcrumb.ts","import 'styling/DynamicHierarchicalFacet/_DynamicHierarchicalFacetValues';\nimport { IFacetResponse, IFacetResponseValue } from '../../../rest/Facet/FacetResponse';\nimport { DynamicHierarchicalFacetValue } from './DynamicHierarchicalFacetValue';\nimport { FacetUtils } from '../../Facet/FacetUtils';\nimport { $$ } from '../../../utils/Dom';\nimport { find } from 'underscore';\nimport { FacetValueState } from '../../../rest/Facet/FacetValueState';\nimport { Utils } from '../../../utils/Utils';\nimport { l } from '../../../strings/Strings';\nimport { DynamicFacetValueShowMoreLessButton } from '../../DynamicFacet/DynamicFacetValues/DynamicFacetValueMoreLessButton';\nimport { IDynamicHierarchicalFacetValues, IDynamicHierarchicalFacet, IDynamicHierarchicalFacetValue } from '../IDynamicHierarchicalFacet';\nimport { SVGIcons } from '../../../utils/SVGIcons';\nimport { HashUtils } from '../../../utils/HashUtils';\nimport { getDynamicFacetHeaderId } from '../../DynamicFacet/DynamicFacetHeader/DynamicFacetHeader';\n\nexport class DynamicHierarchicalFacetValues implements IDynamicHierarchicalFacetValues {\n  private facetValues: IDynamicHierarchicalFacetValue[] = [];\n  private _selectedPath: string[] = [];\n  private list = $$('ul', {\n    className: 'coveo-dynamic-hierarchical-facet-values',\n    'aria-labelledby': getDynamicFacetHeaderId(this.facet.options.id),\n    role: 'group'\n  }).el;\n\n  constructor(private facet: IDynamicHierarchicalFacet) {}\n\n  private formatDisplayValue(value: string) {\n    let returnValue = FacetUtils.tryToGetTranslatedCaption(<string>this.facet.options.field, value);\n    return this.facet.options.valueCaption[value] || returnValue;\n  }\n\n  public createFromResponse(response: IFacetResponse) {\n    this.clearPath();\n    this.facetValues = response.values.map(responseValue => this.createFacetValueFromResponse(responseValue));\n  }\n\n  public reorderValues(pathsOrder: string[][]) {\n    const order = pathsOrder.map(path => HashUtils.encodeArray(path));\n    if (!this.hasSelectedValue) {\n      this.facetValues = Utils.reorderValuesByKeys(this.facetValues, order, value => HashUtils.encodeArray(value.path));\n    } else {\n      const parentFacetValue = this.findValueWithPath(this.selectedPath);\n      parentFacetValue.children = Utils.reorderValuesByKeys(parentFacetValue.children, order, value => HashUtils.encodeArray(value.path));\n    }\n  }\n\n  private createFacetValueFromResponse(responseValue: IFacetResponseValue, path: string[] = []): IDynamicHierarchicalFacetValue {\n    const newPath = [...path, responseValue.value];\n    const displayValue = FacetUtils.getDisplayValueFromValueCaption(\n      responseValue.value,\n      this.facet.options.field as string,\n      this.facet.options.valueCaption\n    );\n    const children = responseValue.children\n      ? responseValue.children.map(responseValue => this.createFacetValueFromResponse(responseValue, newPath))\n      : [];\n\n    if (responseValue.state === FacetValueState.selected) {\n      this._selectedPath = newPath;\n    }\n\n    return new DynamicHierarchicalFacetValue(\n      {\n        value: responseValue.value,\n        numberOfResults: responseValue.numberOfResults,\n        state: responseValue.state,\n        moreValuesAvailable: responseValue.moreValuesAvailable,\n        path: newPath,\n        isLeafValue: responseValue.isLeafValue,\n        displayValue,\n        children\n      },\n      this.facet\n    );\n  }\n\n  public get allFacetValues() {\n    return this.facetValues;\n  }\n\n  public get hasSelectedValue() {\n    return !!this._selectedPath.length;\n  }\n\n  public get selectedPath() {\n    return [...this._selectedPath];\n  }\n\n  public resetValues() {\n    this.facetValues = [];\n    this.clearPath();\n  }\n\n  public clearPath() {\n    this._selectedPath = [];\n  }\n\n  private findValueWithPath(path: string[]) {\n    let facetValues = this.facetValues;\n    let facetValue: IDynamicHierarchicalFacetValue;\n    let remainingPath = [...path];\n\n    do {\n      const value = remainingPath.shift();\n      facetValue = find(facetValues, facetValue => facetValue.value === value);\n\n      if (!facetValue) {\n        return null;\n      }\n      facetValues = facetValue.children;\n    } while (remainingPath.length);\n\n    return facetValue;\n  }\n\n  private createFacetValueWithPath(path: string[], children: IDynamicHierarchicalFacetValue[] = []): IDynamicHierarchicalFacetValue {\n    const value = path[path.length - 1];\n    return new DynamicHierarchicalFacetValue(\n      {\n        value,\n        path,\n        displayValue: this.formatDisplayValue(value),\n        numberOfResults: 0,\n        state: FacetValueState.idle,\n        isLeafValue: !children.length,\n        moreValuesAvailable: false,\n        children\n      },\n      this.facet\n    );\n  }\n\n  private getOrCreateFacetValueWithPath(path: string[]) {\n    const existingFacetValue = this.findValueWithPath(path);\n    if (existingFacetValue) {\n      return existingFacetValue;\n    }\n\n    const newFacetValue = this.createFacetValueWithPath(path);\n    const siblingValues = path.length === 1 ? this.facetValues : this.getOrCreateFacetValueWithPath(path.slice(0, -1)).children;\n\n    siblingValues.push(newFacetValue);\n    return newFacetValue;\n  }\n\n  private filterHierarchyAtPathLevel(facetValues: IDynamicHierarchicalFacetValue[], path: string[], level = 1) {\n    const filteredFacetValues = facetValues.filter(facetValue => {\n      const targetPath = path.slice(0, level);\n      return Utils.arrayEqual(targetPath, facetValue.path);\n    });\n\n    filteredFacetValues.forEach(facetValue => {\n      facetValue.state = FacetValueState.idle;\n      facetValue.children = this.filterHierarchyAtPathLevel(facetValue.children, path, level + 1);\n    });\n\n    return filteredFacetValues;\n  }\n\n  private filterHierarchyWithPath(path: string[]) {\n    this.facetValues = this.filterHierarchyAtPathLevel(this.facetValues, path);\n  }\n\n  public selectPath(path: string[]) {\n    this.filterHierarchyWithPath(path);\n    this.getOrCreateFacetValueWithPath(path).select();\n    this._selectedPath = [...path];\n  }\n\n  private prependAllCategories() {\n    const clearButton = $$(\n      'button',\n      {\n        className: 'coveo-dynamic-hierarchical-facet-all',\n        type: 'button',\n        title: this.facet.options.clearLabel\n      },\n      this.facet.options.clearLabel\n    );\n    clearButton.toggleClass('coveo-show-when-collapsed', this.facet.values.selectedPath.length === 1);\n\n    const arrowIcon = $$('div', { className: 'coveo-dynamic-hierarchical-facet-value-arrow-left' }, SVGIcons.icons.arrowDown);\n    clearButton.prepend(arrowIcon.el);\n\n    const clear = $$('li', { role: 'none' }, clearButton);\n    clear.on('click', () => this.facet.header.options.clear());\n    $$(this.list).prepend(clear.el);\n  }\n\n  private buildShowLess() {\n    const showLess = new DynamicFacetValueShowMoreLessButton({\n      className: 'coveo-dynamic-hierarchical-facet-show-less',\n      ariaLabel: l('ShowLessFacetResults', this.facet.options.title),\n      label: l('ShowLess'),\n      action: () => {\n        this.facet.enableFreezeFacetOrderFlag();\n        this.facet.showLessValues();\n      }\n    });\n\n    return showLess.element;\n  }\n\n  private buildShowMore() {\n    const showMore = new DynamicFacetValueShowMoreLessButton({\n      className: 'coveo-dynamic-hierarchical-facet-show-more',\n      ariaLabel: l('ShowMoreFacetResults', this.facet.options.title),\n      label: l('ShowMore'),\n      action: () => {\n        this.facet.enableFreezeFacetOrderFlag();\n        this.facet.showMoreValues();\n      }\n    });\n\n    return showMore.element;\n  }\n\n  private get shouldEnableShowLess() {\n    return this.facetValues.length > this.facet.options.numberOfValues;\n  }\n\n  private get shouldEnableShowMore() {\n    return this.facet.moreValuesAvailable && !this.hasSelectedValue;\n  }\n\n  private appendShowMoreLess(fragment: DocumentFragment) {\n    if (!this.facet.options.enableMoreLess) {\n      return;\n    }\n\n    if (this.shouldEnableShowLess) {\n      fragment.appendChild(this.buildShowLess());\n    }\n\n    if (this.shouldEnableShowMore) {\n      fragment.appendChild(this.buildShowMore());\n    }\n  }\n\n  public render() {\n    const fragment = document.createDocumentFragment();\n    $$(this.list).empty();\n\n    this.facetValues.forEach(facetValue => {\n      facetValue.render(fragment);\n    });\n\n    $$(this.list).toggleClass('coveo-with-space', !!this._selectedPath.length);\n    this._selectedPath.length && this.prependAllCategories();\n\n    this.appendShowMoreLess(fragment);\n\n    this.list.appendChild(fragment);\n    return this.list;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/DynamicHierarchicalFacet/DynamicHierarchicalFacetValues/DynamicHierarchicalFacetValues.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/DynamicHierarchicalFacet/_DynamicHierarchicalFacetValues.scss\n// module id = 684\n// module chunks = 4 88","import * as Globalize from 'globalize';\nimport { FacetValueState } from '../../../rest/Facet/FacetValueState';\nimport { DynamicHierarchicalFacetValueRenderer } from './DynamicHierarchicalFacetValueRenderer';\nimport { l } from '../../../strings/Strings';\nimport { DynamicFacetValueShowMoreLessButton } from '../../DynamicFacet/DynamicFacetValues/DynamicFacetValueMoreLessButton';\nimport {\n  IDynamicHierarchicalFacetValue,\n  IDynamicHierarchicalFacet,\n  IDynamicHierarchicalFacetValueProperties\n} from '../IDynamicHierarchicalFacet';\nimport { analyticsActionCauseList } from '../../Analytics/AnalyticsActionListMeta';\n\nexport class DynamicHierarchicalFacetValue implements IDynamicHierarchicalFacetValue {\n  private renderer: DynamicHierarchicalFacetValueRenderer;\n  private element: HTMLElement = null;\n  public retrieveCount: number;\n\n  constructor(private facetValue: IDynamicHierarchicalFacetValueProperties, private facet: IDynamicHierarchicalFacet) {\n    this.renderer = new DynamicHierarchicalFacetValueRenderer(this, this.facet);\n    this.retrieveCount = Math.max(this.facet.options.numberOfValues, this.facetValue.children.length);\n  }\n\n  public get value() {\n    return this.facetValue.value;\n  }\n\n  public get path() {\n    return this.facetValue.path;\n  }\n\n  public get state() {\n    return this.facetValue.state;\n  }\n\n  public set state(state: FacetValueState) {\n    this.facetValue.state = state;\n  }\n\n  public get moreValuesAvailable() {\n    return this.facetValue.moreValuesAvailable;\n  }\n\n  public get numberOfResults() {\n    return this.facetValue.numberOfResults;\n  }\n\n  public get displayValue() {\n    return this.facetValue.displayValue;\n  }\n\n  public get children() {\n    return this.facetValue.children;\n  }\n\n  public set children(children: IDynamicHierarchicalFacetValue[]) {\n    this.facetValue.children = children;\n  }\n\n  public get isLeafValue() {\n    return this.facetValue.isLeafValue;\n  }\n\n  public get isIdle() {\n    return this.state === FacetValueState.idle;\n  }\n\n  public get isSelected() {\n    return this.state === FacetValueState.selected;\n  }\n\n  public select() {\n    this.state = FacetValueState.selected;\n  }\n\n  public get selectAriaLabel() {\n    const resultCount = l('ResultCount', this.formattedCount, this.numberOfResults);\n    return `${this.displayValue} ${resultCount}`;\n  }\n\n  public get formattedCount(): string {\n    return Globalize.format(this.numberOfResults, 'n0');\n  }\n\n  private buildShowLess() {\n    const showLess = new DynamicFacetValueShowMoreLessButton({\n      className: 'coveo-dynamic-hierarchical-facet-show-less coveo-with-space',\n      ariaLabel: l('ShowLessHierarchicalResults', this.displayValue),\n      label: l('ShowLess'),\n      action: () => {\n        this.facet.enableFreezeFacetOrderFlag();\n        this.retrieveCount = this.facet.options.numberOfValues;\n        this.facet.triggerNewIsolatedQuery();\n      }\n    });\n\n    return showLess.element;\n  }\n\n  private buildShowMore() {\n    const showMore = new DynamicFacetValueShowMoreLessButton({\n      className: 'coveo-dynamic-hierarchical-facet-show-more coveo-with-space',\n      ariaLabel: l('ShowMoreHierarchicalResults', this.displayValue),\n      label: l('ShowMore'),\n      action: () => {\n        this.facet.enableFreezeFacetOrderFlag();\n        this.retrieveCount += this.facet.options.numberOfValues;\n        this.facet.triggerNewIsolatedQuery();\n      }\n    });\n\n    return showMore.element;\n  }\n\n  private get shouldEnableShowLess() {\n    return this.children.length > this.facet.options.numberOfValues;\n  }\n\n  private get shouldEnableShowMore() {\n    return this.moreValuesAvailable;\n  }\n\n  private appendShowMoreLess(fragment: DocumentFragment) {\n    if (!this.facet.options.enableMoreLess) {\n      return;\n    }\n\n    if (this.shouldEnableShowLess) {\n      fragment.appendChild(this.buildShowLess());\n    }\n\n    if (this.shouldEnableShowMore) {\n      fragment.appendChild(this.buildShowMore());\n    }\n  }\n\n  public render(fragment: DocumentFragment) {\n    this.element = this.renderer.render();\n    fragment.appendChild(this.element);\n\n    this.children.forEach(facetValue => facetValue.render(fragment));\n    this.appendShowMoreLess(fragment);\n\n    return this.element;\n  }\n\n  public logSelectActionToAnalytics() {\n    this.facet.logAnalyticsEvent(analyticsActionCauseList.dynamicFacetSelect);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/DynamicHierarchicalFacet/DynamicHierarchicalFacetValues/DynamicHierarchicalFacetValue.ts","import { $$, Dom } from '../../../utils/Dom';\nimport { SVGIcons } from '../../../utils/SVGIcons';\nimport { IDynamicHierarchicalFacetValue, IDynamicHierarchicalFacet } from '../IDynamicHierarchicalFacet';\nimport { Utils } from '../../../utils/Utils';\n\nexport class DynamicHierarchicalFacetValueRenderer {\n  private button: Dom;\n\n  constructor(private facetValue: IDynamicHierarchicalFacetValue, private facet: IDynamicHierarchicalFacet) {}\n\n  public render() {\n    this.button = $$('button', {\n      className: 'coveo-dynamic-hierarchical-facet-value',\n      type: 'button',\n      ariaLabel: this.facetValue.selectAriaLabel\n    });\n    this.button.on('click', () => this.selectAction());\n\n    this.renderLabel();\n    this.renderCount();\n    this.toggleButtonStates();\n\n    return $$('li', { role: 'none', dataValue: this.facetValue.value }, this.button).el;\n  }\n\n  private renderLabel() {\n    const label = $$('span', { className: 'coveo-dynamic-hierarchical-facet-value-label', title: this.facetValue.displayValue });\n    label.text(this.facetValue.displayValue);\n    this.button.append(label.el);\n  }\n\n  private renderCount() {\n    const count = $$('span', { className: 'coveo-dynamic-hierarchical-facet-value-count' }, `(${this.facetValue.formattedCount})`);\n    this.button.append(count.el);\n  }\n\n  private toggleButtonStates() {\n    this.button.toggleClass('coveo-selected', this.facetValue.isSelected);\n    this.button.toggleClass('coveo-with-space', this.shouldHaveMargin);\n    this.button.toggleClass('coveo-show-when-collapsed', this.shouldShowWhenCollapsed);\n    this.facetValue.isSelected && this.button.setAttribute('disabled', 'true');\n    this.shouldHaveBackArrow && this.prependBackArrow();\n    this.shouldHaveForwardArrow && this.appendForwardArrow();\n  }\n\n  private prependBackArrow() {\n    const arrowIcon = $$('div', { className: 'coveo-dynamic-hierarchical-facet-value-arrow-left' }, SVGIcons.icons.arrowDown);\n    this.button.prepend(arrowIcon.el);\n  }\n\n  private appendForwardArrow() {\n    const arrowIcon = $$('div', { className: 'coveo-dynamic-hierarchical-facet-value-arrow-right' }, SVGIcons.icons.arrowDown);\n    this.button.append(arrowIcon.el);\n  }\n\n  private get shouldHaveMargin() {\n    return !this.facetValue.isSelected && this.facetValue.path.length > 1 && !this.facetValue.children.length;\n  }\n\n  private get shouldHaveBackArrow() {\n    return this.facet.values.hasSelectedValue && !this.facetValue.isSelected && !!this.facetValue.children.length;\n  }\n\n  private get shouldHaveForwardArrow() {\n    return !this.facetValue.isLeafValue && !this.facetValue.isSelected && !this.facetValue.children.length;\n  }\n\n  private get shouldShowWhenCollapsed() {\n    const isParentOfTheSelectedValue = Utils.arrayEqual(this.facetValue.path, this.facet.values.selectedPath.slice(0, -1));\n    return this.facetValue.isSelected || isParentOfTheSelectedValue;\n  }\n\n  private selectAction() {\n    this.facet.selectPath(this.facetValue.path);\n    this.facet.enableFreezeFacetOrderFlag();\n    this.facet.enablePreventAutoSelectionFlag();\n    this.facet.scrollToTop();\n    this.facet.triggerNewQuery(() => this.facetValue.logSelectActionToAnalytics());\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/DynamicHierarchicalFacet/DynamicHierarchicalFacetValues/DynamicHierarchicalFacetValueRenderer.ts","import { IDynamicHierarchicalFacet } from '../DynamicHierarchicalFacet/IDynamicHierarchicalFacet';\nimport { HierarchicalFacetSearchController } from '../../controllers/HierarchicalFacetSearchController';\nimport { Combobox } from '../Combobox/Combobox';\nimport { l } from '../../strings/Strings';\nimport { IFacetSearchResponse } from '../../rest/Facet/FacetSearchResponse';\nimport { IComboboxValue } from '../Combobox/ICombobox';\nimport { DynamicHierarchicalFacetSearchValue } from './DynamicHierarchicalFacetSearchValue';\nimport { DynamicHierarchicalFacetSearchValueRenderer } from './DynamicHierarchicalFacetSearchValueRenderer';\nimport 'styling/DynamicFacetSearch/_DynamicFacetSearch';\nimport 'styling/DynamicHierarchicalFacetSearch/_DynamicHierarchicalFacetSearch';\n\nexport class DynamicHierarchicalFacetSearch {\n  public element: HTMLElement;\n  private combobox: Combobox;\n  private hierarchicalFacetSearchController: HierarchicalFacetSearchController;\n\n  constructor(private facet: IDynamicHierarchicalFacet) {\n    this.hierarchicalFacetSearchController = new HierarchicalFacetSearchController(facet);\n\n    this.element = this.build();\n  }\n\n  private build(): HTMLElement {\n    this.combobox = new Combobox({\n      label: l('SearchFacetResults', this.facet.options.title),\n      ariaLive: this.facet.searchInterface.ariaLive,\n      requestValues: terms => this.hierarchicalFacetSearchController.search(terms),\n      createValuesFromResponse: (response: IFacetSearchResponse) => this.createValuesFromResponse(response),\n      onSelectValue: this.onSelectValue,\n      placeholderText: l('Search'),\n      wrapperClassName: 'coveo-dynamic-facet-search',\n      clearOnBlur: true,\n      scrollable: {\n        requestMoreValues: () => this.hierarchicalFacetSearchController.fetchMoreResults(),\n        areMoreValuesAvailable: () => this.hierarchicalFacetSearchController.moreValuesAvailable,\n        maxDropdownHeight: 250\n      },\n      highlightValueClassName: 'coveo-dynamic-hierarchical-facet-search-value-label'\n    });\n\n    return this.combobox.element;\n  }\n\n  private getDisplayValue(value: string) {\n    return this.facet.options.valueCaption[value] || value;\n  }\n\n  private createValuesFromResponse(response: IFacetSearchResponse): IComboboxValue[] {\n    return response.values.map(value => {\n      const facetValue = new DynamicHierarchicalFacetSearchValue(\n        {\n          fullPath: [...value.path, value.rawValue],\n          // TODO: remove when https://coveord.atlassian.net/browse/SEARCHAPI-4958 is fixed\n          displayValue: this.getDisplayValue(value.displayValue),\n          numberOfResults: value.count\n        },\n        this.facet\n      );\n      return {\n        value: facetValue,\n        element: facetValue.renderedElement\n      };\n    });\n  }\n\n  private onSelectValue({ value }: IComboboxValue) {\n    (<DynamicHierarchicalFacetSearchValueRenderer>value.renderer).selectAction();\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/DynamicHierarchicalFacetSearch/DynamicHierarchicalFacetSearch.ts","import { IDynamicHierarchicalFacet } from '../ui/DynamicHierarchicalFacet/IDynamicHierarchicalFacet';\nimport { FacetSearchType, IFacetSearchRequest } from '../rest/Facet/FacetSearchRequest';\nimport { flatten } from 'underscore';\nimport { IFacetSearchResponse } from '../rest/Facet/FacetSearchResponse';\nimport { determineFilterFacetCount } from './DynamicFacetRequestBuilder';\n\nexport class HierarchicalFacetSearchController {\n  private terms = '';\n  private pageCount = 1;\n  private numberOfValuesMultiplier = 2;\n\n  public moreValuesAvailable = true;\n\n  constructor(private facet: IDynamicHierarchicalFacet) {}\n\n  private get ignoredPaths() {\n    return [flatten(this.facet.values.selectedPath, true)];\n  }\n\n  private get numberOfValues() {\n    return this.facet.options.numberOfValues * this.numberOfValuesMultiplier * this.pageCount;\n  }\n\n  private get request(): IFacetSearchRequest {\n    return {\n      field: this.facet.fieldName,\n      filterFacetCount: determineFilterFacetCount(this.facet.options),\n      type: FacetSearchType.hierarchical,\n      numberOfValues: this.numberOfValues,\n      ignorePaths: this.ignoredPaths,\n      basePath: this.facet.options.basePath,\n      captions: this.facet.options.valueCaption,\n      searchContext: this.facet.queryController.getLastQuery(),\n      delimitingCharacter: this.facet.options.delimitingCharacter,\n      query: this.terms.length ? `*${this.terms}*` : '*'\n    };\n  }\n\n  private async triggerRequest() {\n    const response = await this.facet.queryController.getEndpoint().facetSearch(this.request);\n    this.moreValuesAvailable = response.moreValuesAvailable;\n    return response;\n  }\n\n  public search(terms: string): Promise<IFacetSearchResponse> {\n    this.terms = terms;\n    this.pageCount = 1;\n    return this.triggerRequest();\n  }\n\n  public fetchMoreResults(): Promise<IFacetSearchResponse> {\n    this.pageCount++;\n    return this.triggerRequest();\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/controllers/HierarchicalFacetSearchController.ts","import { IQuery } from '../Query';\n\n/**\n * The facet types against which facet search is allowed.\n */\nexport enum FacetSearchType {\n  /**\n   * Search among specific (i.e., scalar) facet values (e.g., Alice Smith, Bob Jones, etc.).\n   */\n  specific = 'specific',\n  /**\n   * Search among hierarchical facet values (e.g., Electronics|Entertainment|Gaming Consoles;, Electronics|Computers|Laptops;, etc.).\n   */\n  hierarchical = 'hierarchical'\n}\n\n/**\n * A Search API facet search request.\n */\nexport interface IFacetSearchRequest {\n  /**\n   * The name of the field against which to execute the facet search request.\n   */\n  field: string;\n  /**\n   * Whether to exclude folded result parents when estimating result counts for facet values.\n   *\n   * **Note:** The target folding field must be a facet field with the **Use cache for nested queries** options enabled (see [Add or Edit a Field](https://docs.coveo.com/en/1982)).\n   *\n   * See also the [`Folding`]{@link Folding} and [`FoldingForThread`]{@link FoldingForThread} components.\n   *\n   * **Default:** `true`.\n   *\n   * @availablesince [March 2020 Release (v2.8521)](https://docs.coveo.com/en/3203/)\n   */\n  filterFacetCount: boolean;\n  /**\n   * The kind of facet values against which the search request is being made.\n   *\n   * **Default:** `specific`\n   */\n  type?: FacetSearchType;\n  /**\n   * A list of index field values to filter out from the facet search results.\n   *\n   * **Example:** `[\"blue\", \"green\"]`\n   */\n  ignoreValues?: String[];\n  /**\n   * A list of paths to filter out from the hierarchical facet search results.\n   *\n   * **Example:** `[[\"Electronics\", \"Entertainment\", \"Gaming Consoles\"],[\"Appliances\", \"Kitchen\"]]`\n   */\n  ignorePaths?: String[][];\n  /**\n   * The maximum number of facet values to fetch.\n   *\n   * **Default (Search API):** `10`\n   */\n  numberOfValues?: number;\n  /**\n   * The string to match.\n   *\n   * Typically, the text entered by the end-user in the facet search box, to which one or more wildcard characters (`*`) may be added.\n   *\n   * **Example:** `\"*oran*\"`\n   */\n  query?: string;\n  /**\n   * A dictionary that maps index field values to facet value display names.\n   *\n   * **Example**\n   * > `{\"acme_productA\": \"ACME Product A\", \"acme_productB\": \"ACME Product B\"}`\n   */\n  captions?: Record<string, string>;\n  /**\n   * The query parameters representing the current state of the search interface.\n   *\n   * See the [query]{@link IQuery} documentation.\n   */\n  searchContext?: IQuery;\n  /**\n   * The character to use to split field values into a hierarchical sequence.\n   *\n   * **Example:**\n   *\n   * For a multi-value field containing the following values:\n   * ```\n   * c; c>folder2; c>folder2>folder3;\n   * ```\n   * The delimiting character is `>`.\n   *\n   * For a hierarchical field containing the following values:\n   * ```\n   * c;folder2;folder3;\n   * ```\n   * The delimiting character is `;`.\n   *\n   * **Default:** `;`\n   */\n  delimitingCharacter?: string;\n  /**\n   * The base path shared by all values for the facet.\n   *\n   * **Note:** This parameter has no effect unless the facet `type` is `hierarchical`.\n   */\n  basePath?: string[];\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/rest/Facet/FacetSearchRequest.ts","import {\n  IDynamicHierarchicalFacetSearchValueProperties,\n  IDynamicHierarchicalFacet\n} from '../DynamicHierarchicalFacet/IDynamicHierarchicalFacet';\nimport { DynamicHierarchicalFacetSearchValueRenderer } from './DynamicHierarchicalFacetSearchValueRenderer';\nimport { analyticsActionCauseList } from '../Analytics/AnalyticsActionListMeta';\n\nexport class DynamicHierarchicalFacetSearchValue implements IDynamicHierarchicalFacetSearchValueProperties {\n  public renderer: DynamicHierarchicalFacetSearchValueRenderer;\n  private element: HTMLElement;\n\n  constructor(private facetValue: IDynamicHierarchicalFacetSearchValueProperties, private facet: IDynamicHierarchicalFacet) {\n    this.renderer = new DynamicHierarchicalFacetSearchValueRenderer(this, facet);\n  }\n\n  public get fullPath() {\n    return this.facetValue.fullPath;\n  }\n\n  public get displayValue() {\n    return this.facetValue.displayValue;\n  }\n\n  public get numberOfResults() {\n    return this.facetValue.numberOfResults;\n  }\n\n  public get renderedElement() {\n    if (this.element) {\n      return this.element;\n    }\n\n    return this.render();\n  }\n\n  public logSelectActionToAnalytics() {\n    this.facet.logAnalyticsEvent(analyticsActionCauseList.dynamicFacetSelect);\n  }\n\n  private render() {\n    this.element = this.renderer.render();\n    return this.element;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/DynamicHierarchicalFacetSearch/DynamicHierarchicalFacetSearchValue.ts","import { IDynamicHierarchicalFacet } from '../DynamicHierarchicalFacet/IDynamicHierarchicalFacet';\nimport { DynamicHierarchicalFacetSearchValue } from './DynamicHierarchicalFacetSearchValue';\nimport { $$ } from '../../utils/Dom';\nimport { l } from '../../strings/Strings';\n\nconst PATH_START_LENGTH = 1;\nconst PATH_END_LENGTH = 2;\nconst PATH_SEPARATOR = '/';\n\nconst VALUE_CLASSNAME = 'coveo-dynamic-hierarchical-facet-search-value';\nconst HEADER_CLASSNAME = `${VALUE_CLASSNAME}-header`;\nconst LABEL_CLASSNAME = `${VALUE_CLASSNAME}-label`;\nconst COUNT_CLASSNAME = `${VALUE_CLASSNAME}-results-count`;\nconst PATH_CLASSNAME = `${VALUE_CLASSNAME}-path`;\nconst PATH_ELLIPSIS_CLASSNAME = `${PATH_CLASSNAME}-ellipsis`;\nconst PATH_PREFIX_CLASSNAME = `${PATH_CLASSNAME}-prefix`;\nconst PATH_PART_CLASSNAME = `${PATH_CLASSNAME}-part`;\nconst PATH_SEPARATOR_CLASSNAME = `${PATH_CLASSNAME}-separator`;\n\nexport const DynamicHierarchicalFacetSearchValueRendererClassNames = {\n  VALUE_CLASSNAME,\n  HEADER_CLASSNAME,\n  LABEL_CLASSNAME,\n  COUNT_CLASSNAME,\n  PATH_CLASSNAME,\n  PATH_ELLIPSIS_CLASSNAME,\n  PATH_PREFIX_CLASSNAME,\n  PATH_PART_CLASSNAME,\n  PATH_SEPARATOR_CLASSNAME\n};\n\nexport class DynamicHierarchicalFacetSearchValueRenderer {\n  constructor(private facetValue: DynamicHierarchicalFacetSearchValue, private facet: IDynamicHierarchicalFacet) {}\n\n  private get pathToRender(): { start: string[]; end?: string[] } {\n    const parentPath = this.facetValue.fullPath.slice(0, -1);\n    if (!parentPath.length) {\n      return { start: [l('AllCategories')] };\n    }\n    if (parentPath.length > PATH_START_LENGTH + PATH_END_LENGTH) {\n      return { start: parentPath.slice(0, PATH_START_LENGTH), end: parentPath.slice(-PATH_END_LENGTH) };\n    }\n    return { start: parentPath };\n  }\n\n  private get label() {\n    const { start, end } = this.pathToRender;\n    const resultCount = l('ResultCount', this.facetValue.numberOfResults, this.facetValue.numberOfResults);\n    return l(\n      'HierarchicalFacetValueIndentedUnder',\n      `${this.facetValue.displayValue} ${resultCount}`,\n      [...start, ...(end || [])].join(', ')\n    );\n  }\n\n  public render() {\n    const element = $$('div', { className: VALUE_CLASSNAME, ariaLabel: this.label }, this.renderHeader(), this.renderPath());\n\n    return element.el;\n  }\n\n  public selectAction() {\n    this.facet.selectPath(this.facetValue.fullPath);\n    this.facet.enableFreezeFacetOrderFlag();\n    this.facet.enablePreventAutoSelectionFlag();\n    this.facet.scrollToTop();\n    this.facet.triggerNewQuery(() => this.facetValue.logSelectActionToAnalytics());\n  }\n\n  private renderHeader() {\n    return $$('header', { className: HEADER_CLASSNAME, ariaHidden: true }, this.renderLabel(), this.renderResultsCount());\n  }\n\n  private renderLabel() {\n    return $$('span', { className: LABEL_CLASSNAME }, this.facetValue.displayValue);\n  }\n\n  private renderResultsCount() {\n    const element = $$('span', { className: COUNT_CLASSNAME });\n    element.text(`(${this.facetValue.numberOfResults})`);\n    return element;\n  }\n\n  private renderPath() {\n    const element = $$(\n      'ul',\n      {\n        className: PATH_CLASSNAME,\n        ariaHidden: true\n      },\n      this.renderPathPrefix()\n    );\n    const { start, end } = this.pathToRender;\n    start.forEach((part, index) => {\n      if (index > 0) {\n        element.append(this.renderPathSeparator().el);\n      }\n      element.append(this.renderPathPart(part).el);\n    });\n    if (end) {\n      element.append(this.renderPathSeparator().el);\n      element.append(this.renderEllipsis().el);\n      end.forEach(part => {\n        element.append(this.renderPathSeparator().el);\n        element.append(this.renderPathPart(part).el);\n      });\n    }\n    return element;\n  }\n\n  private renderPathPrefix() {\n    const element = $$('li', { className: PATH_PREFIX_CLASSNAME });\n    element.text(`${l('HierarchicalFacetValuePathPrefix')} `);\n    return element;\n  }\n\n  private renderEllipsis() {\n    return $$('li', { className: PATH_ELLIPSIS_CLASSNAME }, '...');\n  }\n\n  private renderPathPart(part: string) {\n    const element = $$('li', { className: PATH_PART_CLASSNAME });\n    element.text(part);\n    return element;\n  }\n\n  private renderPathSeparator() {\n    return $$('span', { className: PATH_SEPARATOR_CLASSNAME, role: 'separator' }, PATH_SEPARATOR);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/DynamicHierarchicalFacetSearch/DynamicHierarchicalFacetSearchValueRenderer.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/DynamicHierarchicalFacetSearch/_DynamicHierarchicalFacetSearch.scss\n// module id = 692\n// module chunks = 4 88","import { IFacetResponseValue } from '../../../rest/Facet/FacetResponse';\nimport { DynamicFacetValue } from './DynamicFacetValue';\nimport { IRangeValue } from '../../../rest/RangeValue';\nimport { FacetValueState } from '../../../rest/Facet/FacetValueState';\nimport { DynamicFacetRangeValueParser } from './DynamicFacetRangeValueParser';\nimport { IValueCreator } from '../IDynamicFacet';\nimport { IDynamicFacetRange } from '../IDynamicFacetRange';\nimport { DynamicFacetValueRenderer } from './DynamicFacetValueRenderer';\n\nexport class DynamicFacetRangeValueCreator implements IValueCreator {\n  private parser: DynamicFacetRangeValueParser;\n\n  constructor(private facet: IDynamicFacetRange) {\n    this.parser = new DynamicFacetRangeValueParser(this.facet);\n  }\n\n  public getDefaultValues() {\n    const ranges = this.facet.options.ranges;\n    return ranges.map((range, index) => this.createFromRange(range, index)).filter(facetValue => !!facetValue);\n  }\n\n  private createFromRange(unvalidatedRange: IRangeValue, index: number) {\n    const range = this.parser.validate(unvalidatedRange);\n    if (!range) {\n      this.facet.logger.error(`Unvalid range for ${this.facet.options.valueFormat} format`, unvalidatedRange);\n      return null;\n    }\n\n    const displayValue = range.label ? range.label : this.parser.formatDisplayValue(range);\n\n    return new DynamicFacetValue(\n      {\n        displayValue,\n        value: this.parser.formatValue(range),\n        start: range.start,\n        end: range.end,\n        endInclusive: !!range.endInclusive,\n        numberOfResults: 0,\n        state: FacetValueState.idle,\n        position: index + 1\n      },\n      this.facet,\n      DynamicFacetValueRenderer\n    );\n  }\n\n  public createFromResponse(responseValue: IFacetResponseValue, index: number) {\n    const value = this.parser.formatValue(responseValue);\n    // SEARCHAPI-3887 will return displayValue in the response\n    const { displayValue } = this.facet.values.get(value);\n\n    return new DynamicFacetValue(\n      {\n        state: responseValue.state,\n        numberOfResults: responseValue.numberOfResults,\n        start: responseValue.start,\n        end: responseValue.end,\n        endInclusive: responseValue.endInclusive,\n        value,\n        displayValue,\n        position: index + 1\n      },\n      this.facet,\n      DynamicFacetValueRenderer\n    );\n  }\n\n  public createFromValue(value: string) {\n    const range = this.parser.parse(value);\n    if (!range) {\n      this.facet.logger.error('Facet range value invalid', value);\n      return null;\n    }\n\n    return this.createFromRange(range, this.facet.values.allFacetValues.length);\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/DynamicFacet/DynamicFacetValues/DynamicFacetRangeValueCreator.ts","import * as Globalize from 'globalize';\nimport { RangeType, IRangeValue, RangeEndScope } from '../../../rest/RangeValue';\nimport { NumberUtils } from '../../../utils/NumberUtils';\nimport { isNull } from 'util';\nimport { DateUtils } from '../../../utils/DateUtils';\nimport { IDynamicFacetRange, DynamicFacetRangeValueFormat } from '../IDynamicFacetRange';\nimport { Logger } from '../../../misc/Logger';\nimport { CurrencyUtils } from '../../../Core';\nimport { isUndefined } from 'underscore';\n\nexport class DynamicFacetRangeValueParser {\n  constructor(private facet: IDynamicFacetRange) {}\n\n  private get valueFormat() {\n    return this.facet.options.valueFormat;\n  }\n\n  private get valueSeparator() {\n    return this.facet.options.valueSeparator;\n  }\n\n  private parseDateFromRangeType(value: RangeType) {\n    const parsedDate = DateUtils.convertToStandardDate(value);\n    if (!DateUtils.isValid(parsedDate)) {\n      new Logger(this).warn('Date value is not valid', value);\n      return null;\n    }\n\n    return parsedDate;\n  }\n\n  private formatDisplayValueFromLimit(value: RangeType) {\n    switch (this.valueFormat) {\n      case DynamicFacetRangeValueFormat.number:\n        const numberOfDecimals = isUndefined(this.facet.options.numberOfDecimals)\n          ? NumberUtils.countDecimals(`${value}`)\n          : this.facet.options.numberOfDecimals;\n        return Globalize.format(value, `n${numberOfDecimals}`);\n\n      case DynamicFacetRangeValueFormat.currency:\n        return CurrencyUtils.currencyToString(parseFloat(`${value}`), {\n          symbol: this.facet.options.currencySymbol,\n          decimals: NumberUtils.countDecimals(`${value}`) ? 2 : 0\n        });\n\n      case DynamicFacetRangeValueFormat.date:\n        return DateUtils.dateToString(this.parseDateFromRangeType(value), {\n          alwaysIncludeTime: false,\n          includeTimeIfThisWeek: false,\n          includeTimeIfToday: false,\n          omitYearIfCurrentOne: false,\n          useTodayYesterdayAndTomorrow: false,\n          useWeekdayIfThisWeek: false\n        });\n\n      default:\n        return `${value}`;\n    }\n  }\n\n  public formatDisplayValue(range: IRangeValue) {\n    const formattedStart = this.formatDisplayValueFromLimit(range.start);\n    const formattedEnd = this.formatDisplayValueFromLimit(range.end);\n\n    return `${formattedStart} ${this.valueSeparator} ${formattedEnd}`;\n  }\n\n  private validateRangeLimit(value: RangeType) {\n    switch (this.valueFormat) {\n      case DynamicFacetRangeValueFormat.number:\n      case DynamicFacetRangeValueFormat.currency:\n        return this.validateNumberValue(value);\n      case DynamicFacetRangeValueFormat.date:\n        return this.validateDateValue(value);\n      default:\n        return `${value}`;\n    }\n  }\n\n  private validateNumberValue(value: RangeType) {\n    const number = parseFloat(`${value}`);\n    return isNaN(number) ? null : number;\n  }\n\n  private validateDateValue(value: RangeType) {\n    const parsedValue = DateUtils.dateTimeForQuery(this.parseDateFromRangeType(value));\n    return parsedValue === 'Invalid date' ? null : parsedValue;\n  }\n\n  public validate(unvalidatedRange: IRangeValue): IRangeValue {\n    const start = this.validateRangeLimit(unvalidatedRange.start);\n    const end = this.validateRangeLimit(unvalidatedRange.end);\n\n    if (isNull(start) || isNull(end)) {\n      return null;\n    }\n\n    return {\n      ...unvalidatedRange,\n      start,\n      end\n    };\n  }\n\n  public formatValue(range: IRangeValue) {\n    const scope = range.endInclusive ? RangeEndScope.Inclusive : RangeEndScope.Exclusive;\n    return `${range.start}..${range.end}${scope}`;\n  }\n\n  public parse(value: string): IRangeValue {\n    const valueRegex = new RegExp(`^(.+)\\\\.\\\\.(.+)(${RangeEndScope.Inclusive}|${RangeEndScope.Exclusive})$`);\n    const startAndEnd = valueRegex.exec(value);\n    if (!startAndEnd) {\n      return null;\n    }\n\n    const start = this.validateRangeLimit(startAndEnd[1]);\n    const end = this.validateRangeLimit(startAndEnd[2]);\n    if (isNull(start) || isNull(end)) {\n      return null;\n    }\n\n    return {\n      start,\n      end,\n      endInclusive: startAndEnd[3] === RangeEndScope.Inclusive\n    };\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/DynamicFacet/DynamicFacetValues/DynamicFacetRangeValueParser.ts","export enum RangeEndScope {\n  Inclusive = 'inc',\n  Exclusive = 'exc'\n}\n\nexport type RangeType = string | number | Date;\n\n/**\n * Describes a single range value in a [group by request]{@link IGroupByRequest} or [facet request]{@link IFacetRequest}.\n */\nexport interface IRangeValue {\n  /**\n   * The value to start the range at.\n   *\n   * **Examples:**\n   * > - `0`\n   * > - `2018-01-01T00:00:00.000Z`\n   */\n  start?: RangeType;\n\n  /**\n   * The value to end the range at.\n   *\n   * **Examples:**\n   * > - `500`\n   * > - `2018-12-31T23:59:59.999Z`\n   */\n  end?: RangeType;\n\n  /**\n   * The label to associate with the range value.\n   *\n   * **Examples:**\n   * > - `0 - 500`\n   * > - `In 2018`\n   */\n  label?: string;\n\n  /**\n   * Whether to include the [`end`]{@link IRangeValue.end} value in the range.\n   */\n  endInclusive?: boolean;\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/rest/RangeValue.ts","import { isNull } from 'util';\n\nexport interface INumberFormatOptions {\n  format: string;\n}\n\nexport class NumberUtils {\n  static countDecimals(value: number | String) {\n    const decimalsMatch = /^\\d+\\.?([\\d]*)$/.exec(`${value}`);\n    return isNull(decimalsMatch) ? 0 : decimalsMatch[1].length;\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/utils/NumberUtils.ts","module.exports = function isBuffer(arg) {\n  return arg && typeof arg === 'object'\n    && typeof arg.copy === 'function'\n    && typeof arg.fill === 'function'\n    && typeof arg.readUInt8 === 'function';\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/node-libs-browser/node_modules/util/support/isBufferBrowser.js\n// module id = 697\n// module chunks = 8 88","if (typeof Object.create === 'function') {\n  // implementation from standard node.js 'util' module\n  module.exports = function inherits(ctor, superCtor) {\n    ctor.super_ = 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} else {\n  // old school shim for old browsers\n  module.exports = function inherits(ctor, superCtor) {\n    ctor.super_ = superCtor\n    var TempCtor = function () {}\n    TempCtor.prototype = superCtor.prototype\n    ctor.prototype = new TempCtor()\n    ctor.prototype.constructor = ctor\n  }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/node-libs-browser/node_modules/inherits/inherits_browser.js\n// module id = 698\n// module chunks = 8 88","import { DynamicFacetQueryController } from './DynamicFacetQueryController';\nimport { IFacetRequest, IFacetRequestValue } from '../rest/Facet/FacetRequest';\nimport { IDynamicFacetRange } from '../ui/DynamicFacet/IDynamicFacetRange';\n\nexport class DynamicFacetRangeQueryController extends DynamicFacetQueryController {\n  protected facet: IDynamicFacetRange;\n\n  public buildFacetRequest(): IFacetRequest {\n    return {\n      ...this.requestBuilder.buildBaseRequestForQuery(),\n      currentValues: this.currentValues,\n      numberOfValues: this.numberOfValues,\n      freezeCurrentValues: false,\n      sortCriteria: this.facet.options.sortOrder,\n      generateAutomaticRanges: !this.manualRangesAreDefined\n    };\n  }\n\n  protected get numberOfValues() {\n    return this.manualRangesAreDefined ? this.facet.options.ranges.length : this.facet.options.numberOfValues;\n  }\n\n  private get manualRangesAreDefined() {\n    return !!this.facet.options.ranges.length;\n  }\n\n  protected get currentValues(): IFacetRequestValue[] {\n    if (!this.manualRangesAreDefined && !this.facet.hasActiveValues) {\n      return [];\n    }\n\n    return this.facet.values.allFacetValues.map(({ start, end, endInclusive, state }) => ({\n      start,\n      end,\n      endInclusive,\n      state\n    }));\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/controllers/DynamicFacetRangeQueryController.ts","export enum FacetRangeSortOrder {\n  /**\n   * Sort facet values in ascending order.\n   */\n  ascending = 'ascending',\n  /**\n   * Sort facet values in ascending order.\n   */\n  descending = 'descending'\n}\n\nexport function isFacetRangeSortOrder(sortOrder: string) {\n  return !!FacetRangeSortOrder[sortOrder];\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/rest/Facet/FacetRangeSortOrder.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_MissingTerms.scss\n// module id = 701\n// module chunks = 69 88","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_QuerySuggestPreview.scss\n// module id = 702\n// module chunks = 12 88","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_SortDropdown.scss\n// module id = 703\n// module chunks = 24 88","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_SmartSnippet.scss\n// module id = 704\n// module chunks = 18 88","import { $$ } from '../../utils/Dom';\nimport { l } from '../../strings/Strings';\nimport { SVGIcons } from '../../utils/SVGIcons';\nimport { uniqueId } from 'underscore';\n\nconst ROOT_CLASSNAME = 'coveo-user-feedback-banner';\nconst CONTAINER_CLASSNAME = `${ROOT_CLASSNAME}-container`;\nconst LABEL_CLASSNAME = `${ROOT_CLASSNAME}-label`;\nconst BUTTONS_CONTAINER_CLASSNAME = `${ROOT_CLASSNAME}-buttons`;\nconst YES_BUTTON_CLASSNAME = `${ROOT_CLASSNAME}-yes-button`;\nconst NO_BUTTON_CLASSNAME = `${ROOT_CLASSNAME}-no-button`;\nconst BUTTON_ACTIVE_CLASSNAME = `${ROOT_CLASSNAME}-button-active`;\nconst THANK_YOU_BANNER_CLASSNAME = `${ROOT_CLASSNAME}-thanks`;\nconst THANK_YOU_BANNER_ACTIVE_CLASSNAME = `${THANK_YOU_BANNER_CLASSNAME}-active`;\nconst ICON_CLASSNAME = `${THANK_YOU_BANNER_CLASSNAME}-icon`;\nconst EXPLAIN_WHY_CLASSNAME = `${ROOT_CLASSNAME}-explain-why`;\nconst EXPLAIN_WHY_ACTIVE_CLASSNAME = `${EXPLAIN_WHY_CLASSNAME}-active`;\n\nenum UsefulState {\n  Unknown,\n  Yes,\n  No\n}\n\ninterface IButtonOptions {\n  text: string;\n  className: string;\n  action: Function;\n  icon?: {\n    content: string;\n    className: string;\n  };\n  attributes?: any;\n}\n\nexport const UserFeedbackBannerClassNames = {\n  ROOT_CLASSNAME,\n  CONTAINER_CLASSNAME,\n  LABEL_CLASSNAME,\n  BUTTONS_CONTAINER_CLASSNAME,\n  YES_BUTTON_CLASSNAME,\n  NO_BUTTON_CLASSNAME,\n  BUTTON_ACTIVE_CLASSNAME,\n  THANK_YOU_BANNER_CLASSNAME,\n  THANK_YOU_BANNER_ACTIVE_CLASSNAME,\n  ICON_CLASSNAME,\n  EXPLAIN_WHY_CLASSNAME,\n  EXPLAIN_WHY_ACTIVE_CLASSNAME\n};\n\nexport class UserFeedbackBanner {\n  public explainWhy: HTMLElement;\n  private isUseful = UsefulState.Unknown;\n  private yesButton: HTMLElement;\n  private noButton: HTMLElement;\n  private thankYouBanner: HTMLElement;\n  private labelId: string;\n\n  constructor(private readonly sendUsefulnessAnalytics: (isUseful: boolean) => void, private readonly onExplainWhyPressed: () => void) {\n    this.labelId = uniqueId(LABEL_CLASSNAME);\n  }\n\n  public build() {\n    return $$(\n      'div',\n      {\n        className: ROOT_CLASSNAME,\n        ariaLive: 'polite'\n      },\n      this.buildContainer(),\n      this.buildThankYouBanner()\n    ).el;\n  }\n\n  public reset() {\n    this.isUseful = UsefulState.Unknown;\n    $$(this.yesButton).removeClass(BUTTON_ACTIVE_CLASSNAME);\n    $$(this.yesButton).setAttribute('aria-pressed', 'false');\n    $$(this.noButton).removeClass(BUTTON_ACTIVE_CLASSNAME);\n    $$(this.noButton).setAttribute('aria-pressed', 'false');\n    $$(this.thankYouBanner).removeClass(THANK_YOU_BANNER_ACTIVE_CLASSNAME);\n    $$(this.explainWhy).removeClass(EXPLAIN_WHY_ACTIVE_CLASSNAME);\n  }\n\n  private buildContainer() {\n    return $$(\n      'div',\n      {\n        className: CONTAINER_CLASSNAME,\n        ariaLabelledby: this.labelId\n      },\n      this.buildLabel(),\n      this.buildButtons()\n    ).el;\n  }\n\n  private buildLabel() {\n    return $$('span', { className: LABEL_CLASSNAME, id: this.labelId }, l('UsefulnessFeedbackRequest')).el;\n  }\n\n  private buildThankYouBanner() {\n    this.thankYouBanner = $$('div', { className: THANK_YOU_BANNER_CLASSNAME }).el;\n\n    const text = $$('span', {}, l('UsefulnessFeedbackThankYou')).el;\n    this.thankYouBanner.appendChild(text);\n\n    this.explainWhy = this.buildButton({\n      text: l('UsefulnessFeedbackExplainWhy'),\n      className: EXPLAIN_WHY_CLASSNAME,\n      action: () => this.requestExplaination()\n    });\n    this.thankYouBanner.appendChild(this.explainWhy);\n\n    return this.thankYouBanner;\n  }\n\n  private buildButtons() {\n    const buttonsContainer = $$('div', { className: BUTTONS_CONTAINER_CLASSNAME }).el;\n\n    this.yesButton = this.buildButton({\n      text: l('Yes'),\n      className: YES_BUTTON_CLASSNAME,\n      action: () => this.showThankYouBanner(true),\n      icon: {\n        className: ICON_CLASSNAME,\n        content: SVGIcons.icons.checkYes\n      },\n      attributes: {\n        ariaPressed: false,\n        ariaDescribedby: this.labelId\n      }\n    });\n    this.yesButton.setAttribute('aria-pressed', 'false');\n    buttonsContainer.appendChild(this.yesButton);\n\n    this.noButton = this.buildButton({\n      text: l('No'),\n      className: NO_BUTTON_CLASSNAME,\n      action: () => this.showThankYouBanner(false),\n      icon: {\n        className: ICON_CLASSNAME,\n        content: SVGIcons.icons.clearSmall\n      },\n      attributes: {\n        ariaPressed: false,\n        ariaDescribedby: this.labelId\n      }\n    });\n    buttonsContainer.appendChild(this.noButton);\n\n    return buttonsContainer;\n  }\n\n  private buildButton(options: IButtonOptions) {\n    const button = $$('button', { ...(options.attributes || {}), className: options.className, type: 'button' }).el;\n\n    if (options.icon) {\n      const icon = $$('span', { className: options.icon.className }, options.icon.content).el;\n      button.appendChild(icon);\n      const text = $$('span', {}, options.text).el;\n      button.appendChild(text);\n    } else {\n      button.innerText = options.text;\n    }\n\n    button.addEventListener('click', () => options.action());\n\n    return button;\n  }\n\n  private showThankYouBanner(isUseful: boolean) {\n    if (this.isUseful !== UsefulState.Unknown && isUseful === (this.isUseful === UsefulState.Yes)) {\n      return;\n    }\n    this.isUseful = isUseful ? UsefulState.Yes : UsefulState.No;\n    $$(this.yesButton).toggleClass(BUTTON_ACTIVE_CLASSNAME, isUseful);\n    $$(this.yesButton).setAttribute('aria-pressed', `${isUseful}`);\n    $$(this.noButton).toggleClass(BUTTON_ACTIVE_CLASSNAME, !isUseful);\n    $$(this.noButton).setAttribute('aria-pressed', `${!isUseful}`);\n    $$(this.thankYouBanner).addClass(THANK_YOU_BANNER_ACTIVE_CLASSNAME);\n    $$(this.explainWhy).toggleClass(EXPLAIN_WHY_ACTIVE_CLASSNAME, !isUseful);\n    this.sendUsefulnessAnalytics(isUseful);\n  }\n\n  private requestExplaination() {\n    this.onExplainWhyPressed();\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/SmartSnippet/UserFeedbackBanner.ts","import { $$ } from '../../utils/Dom';\nimport { SVGIcons } from '../../utils/SVGIcons';\nimport { l } from '../../strings/Strings';\n\nconst BASE_CLASSNAME = 'coveo-height-limiter';\nconst CONTAINER_ACTIVE_CLASSNAME = `${BASE_CLASSNAME}-container-active`;\nconst CONTAINER_EXPANDED_CLASSNAME = `${BASE_CLASSNAME}-container-expanded`;\nconst BUTTON_CLASSNAME = `${BASE_CLASSNAME}-button`;\nconst BUTTON_LABEL_CLASSNAME = `${BUTTON_CLASSNAME}-label`;\nconst BUTTON_ICON_CLASSNAME = `${BUTTON_CLASSNAME}-icon`;\nconst BUTTON_ACTIVE_CLASSNAME = `${BUTTON_CLASSNAME}-active`;\n\nexport const HeightLimiterClassNames = {\n  CONTAINER_ACTIVE_CLASSNAME,\n  CONTAINER_EXPANDED_CLASSNAME,\n  BUTTON_CLASSNAME,\n  BUTTON_LABEL_CLASSNAME,\n  BUTTON_ICON_CLASSNAME,\n  BUTTON_ACTIVE_CLASSNAME\n};\n\nexport class HeightLimiter {\n  private isExpanded = false;\n  private button: HTMLElement;\n  private buttonLabel: HTMLElement;\n  private buttonIcon: HTMLElement;\n\n  public get toggleButton() {\n    return this.button;\n  }\n\n  private set height(height: number) {\n    this.containerElement.style.height = `${height}px`;\n  }\n\n  private get contentHeight() {\n    return this.contentElement.clientHeight;\n  }\n\n  constructor(\n    private containerElement: HTMLElement,\n    private contentElement: HTMLElement,\n    private heightLimit: number,\n    private onToggle?: (isExpanded: boolean) => void\n  ) {\n    this.buildButton();\n    this.updateActiveAppearance();\n  }\n\n  public onContentHeightChanged() {\n    this.updateActiveAppearance();\n  }\n\n  private buildButton() {\n    this.button = $$(\n      'button',\n      { className: BUTTON_CLASSNAME, type: 'button', ariaLabel: l('ShowMore'), ariaPressed: 'false', ariaHidden: 'true' },\n      (this.buttonLabel = $$('span', { className: BUTTON_LABEL_CLASSNAME }).el),\n      (this.buttonIcon = $$('span', { className: BUTTON_ICON_CLASSNAME }).el)\n    ).el;\n    this.button.addEventListener('click', () => this.toggle());\n    this.updateButton();\n    return this.button;\n  }\n\n  private updateActiveAppearance() {\n    const shouldBeActive = this.contentHeight > this.heightLimit;\n    $$(this.containerElement).toggleClass(CONTAINER_ACTIVE_CLASSNAME, shouldBeActive);\n    $$(this.button).toggleClass(BUTTON_ACTIVE_CLASSNAME, shouldBeActive);\n    if (shouldBeActive) {\n      this.updateExpandedAppearance();\n    } else {\n      this.isExpanded = false;\n      this.updateExpandedAppearance();\n      this.containerElement.style.height = '';\n    }\n  }\n\n  private updateButton() {\n    this.buttonLabel.innerText = this.isExpanded ? l('ShowLess') : l('ShowMore');\n    this.button.setAttribute('aria-pressed', `${this.isExpanded}`);\n    this.buttonIcon.innerHTML = this.isExpanded ? SVGIcons.icons.arrowUp : SVGIcons.icons.arrowDown;\n  }\n\n  private updateExpandedAppearance() {\n    this.updateButton();\n    $$(this.containerElement).toggleClass(CONTAINER_EXPANDED_CLASSNAME, this.isExpanded);\n    this.height = this.isExpanded ? this.contentHeight : this.heightLimit;\n  }\n\n  private toggle() {\n    this.isExpanded = !this.isExpanded;\n    this.updateExpandedAppearance();\n    if (this.onToggle) {\n      this.onToggle(this.isExpanded);\n    }\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/SmartSnippet/HeightLimiter.ts","import { AccessibleModal } from '../../utils/AccessibleModal';\nimport { l } from '../../strings/Strings';\nimport { $$, Dom } from '../../utils/Dom';\nimport { RadioButton } from '../FormWidgets/RadioButton';\nimport 'styling/_ExplanationModal';\n\nexport interface IReason {\n  label: string;\n  id: string;\n  onSelect: () => void;\n  hasDetails?: boolean;\n}\n\nexport interface IExplanationModalOptions {\n  ownerElement: HTMLElement;\n  reasons: IReason[];\n  onClosed: () => void;\n  modalBoxModule?: Coveo.ModalBox.ModalBox;\n}\n\nconst ROOT_CLASSNAME = 'coveo-user-explanation-modal';\nconst CONTENT_CLASSNAME = `${ROOT_CLASSNAME}-content`;\nconst EXPLANATION_SECTION_CLASSNAME = `${ROOT_CLASSNAME}-explanation-section`;\nconst REASONS_CLASSNAME = `${ROOT_CLASSNAME}-explanations`;\nconst REASONS_LABEL_CLASSNAME = `${REASONS_CLASSNAME}-label`;\nconst DETAILS_SECTION_CLASSNAME = `${ROOT_CLASSNAME}-details`;\nconst DETAILS_TEXTAREA_CLASSNAME = `${DETAILS_SECTION_CLASSNAME}-textarea`;\nconst DETAILS_LABEL_CLASSNAME = `${DETAILS_SECTION_CLASSNAME}-label`;\nconst BUTTONS_SECTION_CLASSNAME = `${ROOT_CLASSNAME}-buttons-section`;\nconst SEND_BUTTON_CLASSNAME = `${ROOT_CLASSNAME}-send-button`;\nconst CANCEL_BUTTON_CLASSNAME = `${ROOT_CLASSNAME}-cancel-button`;\nconst DETAILS_ID = DETAILS_SECTION_CLASSNAME;\n\nexport const ExplanationModalClassNames = {\n  ROOT_CLASSNAME,\n  CONTENT_CLASSNAME,\n  EXPLANATION_SECTION_CLASSNAME,\n  REASONS_CLASSNAME,\n  REASONS_LABEL_CLASSNAME,\n  DETAILS_SECTION_CLASSNAME,\n  DETAILS_TEXTAREA_CLASSNAME,\n  DETAILS_LABEL_CLASSNAME,\n  BUTTONS_SECTION_CLASSNAME,\n  SEND_BUTTON_CLASSNAME,\n  CANCEL_BUTTON_CLASSNAME\n};\n\nexport class ExplanationModal {\n  private modal: AccessibleModal;\n  private reasons: RadioButton[];\n  private selectedReason: IReason;\n  private detailsSection: Dom;\n  private detailsTextArea: HTMLTextAreaElement;\n  private shouldCallCloseEvent = false;\n\n  constructor(public options: IExplanationModalOptions) {\n    this.modal = new AccessibleModal(ROOT_CLASSNAME, this.options.ownerElement, this.options.modalBoxModule, {\n      focusOnOpen: () => this.sendButton()\n    });\n  }\n\n  private sendButton(): HTMLElement {\n    return this.modal.element.querySelector(`.${REASONS_CLASSNAME} input`);\n  }\n\n  public get details() {\n    if (!this.selectedReason || !this.selectedReason.hasDetails) {\n      return null;\n    }\n    return this.detailsTextArea.value;\n  }\n\n  public open(origin: HTMLElement) {\n    this.modal.open({\n      origin,\n      title: $$('span', {}, l('UsefulnessFeedbackExplainWhyImperative')).el,\n      content: this.buildContent(),\n      validation: () => {\n        if (this.shouldCallCloseEvent) {\n          this.options.onClosed();\n          this.shouldCallCloseEvent = false;\n        }\n        return true;\n      }\n    });\n    this.shouldCallCloseEvent = true;\n  }\n\n  private buildContent() {\n    return $$(\n      'div',\n      {\n        className: CONTENT_CLASSNAME\n      },\n      this.buildExplanationSection(),\n      this.buildButtonsSection()\n    ).el;\n  }\n\n  private buildExplanationSection() {\n    const detailsSection = this.buildDetailsSection();\n    return $$(\n      'div',\n      {\n        className: EXPLANATION_SECTION_CLASSNAME\n      },\n      this.buildReasons(),\n      detailsSection\n    ).el;\n  }\n\n  private buildButtonsSection() {\n    return $$(\n      'div',\n      {\n        className: BUTTONS_SECTION_CLASSNAME\n      },\n      this.buildSendButton(),\n      this.buildCancelButton()\n    );\n  }\n\n  private buildReasons() {\n    const reasonsContainer = $$('fieldset', { className: REASONS_CLASSNAME }, this.buildReasonsLabel()).el;\n    this.reasons = this.options.reasons.map(reason => this.buildReasonRadioButton(reason));\n    this.reasons[0].select();\n    this.reasons.forEach(radioButton => reasonsContainer.appendChild(radioButton.getElement()));\n    return reasonsContainer;\n  }\n\n  private buildReasonsLabel() {\n    return $$('legend', { className: REASONS_LABEL_CLASSNAME }, l('UsefulnessFeedbackReason')).el;\n  }\n\n  private buildDetailsSection() {\n    return (this.detailsSection = $$(\n      'div',\n      { className: `coveo-hidden ${DETAILS_SECTION_CLASSNAME}` },\n      $$('label', { className: DETAILS_LABEL_CLASSNAME, for: DETAILS_ID }, l('Details')).el,\n      (this.detailsTextArea = $$('textarea', { className: DETAILS_TEXTAREA_CLASSNAME, id: DETAILS_ID, disabled: true })\n        .el as HTMLTextAreaElement)\n    ));\n  }\n\n  private buildSendButton() {\n    const button = $$('button', { className: SEND_BUTTON_CLASSNAME, type: 'button' }, l('Send'));\n    button.on('click', () => {\n      this.selectedReason.onSelect();\n      this.shouldCallCloseEvent = false;\n      this.modal.close();\n    });\n    return button.el;\n  }\n\n  private buildCancelButton() {\n    const button = $$('button', { className: CANCEL_BUTTON_CLASSNAME, type: 'button' }, l('Cancel'));\n    button.on('click', () => this.modal.close());\n    return button.el;\n  }\n\n  private buildReasonRadioButton(reason: IReason) {\n    return new RadioButton(\n      radioButton => {\n        if (!radioButton.isSelected()) {\n          return;\n        }\n        this.detailsSection.toggleClass('coveo-hidden', !reason.hasDetails);\n        this.detailsTextArea.disabled = !reason.hasDetails;\n        this.selectedReason = reason;\n      },\n      reason.label,\n      'reason',\n      `coveo-reason-${reason.id}`\n    );\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/SmartSnippet/ExplanationModal.ts","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_ExplanationModal.scss\n// module id = 708\n// module chunks = 18 88","// removed by extract-text-webpack-plugin\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./sass/_SmartSnippetSuggestions.scss\n// module id = 709\n// module chunks = 21 88","import { IRelatedQuestionAnswerResponse } from '../../rest/QuestionAnswerResponse';\nimport { uniqueId } from 'underscore';\nimport { AccessibleButton } from '../../utils/AccessibleButton';\nimport { SVGIcons } from '../../utils/SVGIcons';\nimport { attachShadow } from '../../misc/AttachShadowPolyfill';\nimport { $$, Dom } from '../../utils/Dom';\nimport { l } from '../../strings/Strings';\nimport { IQueryResult } from '../../rest/QueryResult';\nimport {\n  analyticsActionCauseList,\n  IAnalyticsSmartSnippetSuggestionMeta,\n  IAnalyticsSmartSnippetSuggestionOpenSnippetInlineLinkMeta,\n  IAnalyticsSmartSnippetSuggestionOpenSourceMeta\n} from '../Analytics/AnalyticsActionListMeta';\nimport { ResultLink } from '../ResultLink/ResultLink';\nimport { IComponentBindings } from '../Base/ComponentBindings';\nimport { Utils } from '../../utils/Utils';\nimport { IFieldOption } from '../Base/IComponentOptions';\nimport { getSanitizedAnswerSnippet, transformSnippetLinks } from './SmartSnippetCommon';\n\nconst QUESTION_CLASSNAME = `coveo-smart-snippet-suggestions-question`;\nconst QUESTION_TITLE_CLASSNAME = `${QUESTION_CLASSNAME}-title`;\nconst QUESTION_TITLE_LABEL_CLASSNAME = `${QUESTION_TITLE_CLASSNAME}-label`;\nconst QUESTION_TITLE_CHECKBOX_CLASSNAME = `${QUESTION_TITLE_CLASSNAME}-checkbox`;\nconst QUESTION_SNIPPET_CLASSNAME = `${QUESTION_CLASSNAME}-snippet`;\nconst QUESTION_SNIPPET_CONTAINER_CLASSNAME = `${QUESTION_SNIPPET_CLASSNAME}-container`;\nconst QUESTION_SNIPPET_HIDDEN_CLASSNAME = `${QUESTION_SNIPPET_CLASSNAME}-hidden`;\nconst SHADOW_CLASSNAME = `${QUESTION_SNIPPET_CLASSNAME}-content`;\nconst RAW_CONTENT_CLASSNAME = `${SHADOW_CLASSNAME}-raw`;\nconst SOURCE_CLASSNAME = `${QUESTION_CLASSNAME}-source`;\nconst SOURCE_TITLE_CLASSNAME = `${SOURCE_CLASSNAME}-title`;\nconst SOURCE_URL_CLASSNAME = `${SOURCE_CLASSNAME}-url`;\n\nexport const SmartSnippetCollapsibleSuggestionClassNames = {\n  QUESTION_CLASSNAME,\n  QUESTION_TITLE_CLASSNAME,\n  QUESTION_TITLE_LABEL_CLASSNAME,\n  QUESTION_TITLE_CHECKBOX_CLASSNAME,\n  QUESTION_SNIPPET_CLASSNAME,\n  QUESTION_SNIPPET_CONTAINER_CLASSNAME,\n  QUESTION_SNIPPET_HIDDEN_CLASSNAME,\n  SHADOW_CLASSNAME,\n  RAW_CONTENT_CLASSNAME,\n  SOURCE_CLASSNAME,\n  SOURCE_TITLE_CLASSNAME,\n  SOURCE_URL_CLASSNAME\n};\n\nexport class SmartSnippetCollapsibleSuggestion {\n  private readonly labelId = uniqueId(QUESTION_TITLE_LABEL_CLASSNAME);\n  private readonly snippetId = uniqueId(QUESTION_SNIPPET_CLASSNAME);\n  private readonly checkboxId = uniqueId(QUESTION_TITLE_CHECKBOX_CLASSNAME);\n  private contentLoaded: Promise<void>;\n  private snippetAndSourceContainer: Dom;\n  private collapsibleContainer: Dom;\n  private checkbox: Dom;\n  private expanded = false;\n\n  constructor(\n    private readonly options: {\n      readonly questionAnswer: IRelatedQuestionAnswerResponse;\n      readonly bindings: IComponentBindings;\n      readonly innerCSS: string;\n      readonly searchUid: string;\n      readonly titleField: IFieldOption;\n      readonly hrefTemplate?: string;\n      readonly alwaysOpenInNewWindow?: boolean;\n      readonly source?: IQueryResult;\n      readonly useIFrame?: boolean;\n    }\n  ) {}\n\n  public get loading() {\n    return this.contentLoaded;\n  }\n\n  public build() {\n    const collapsibleContainer = this.buildCollapsibleContainer(this.options.questionAnswer, this.buildStyle(this.options.innerCSS));\n    const title = this.buildTitle(this.options.questionAnswer.question);\n    this.updateExpanded();\n    return $$(\n      'li',\n      {\n        className: QUESTION_CLASSNAME,\n        ariaLabelledby: this.labelId\n      },\n      title,\n      collapsibleContainer\n    ).el as HTMLLIElement;\n  }\n\n  private buildStyle(innerCSS: string) {\n    const styleTag = document.createElement('style');\n    styleTag.innerHTML = innerCSS;\n    return styleTag;\n  }\n\n  private buildTitle(question: string) {\n    const checkbox = this.buildCheckbox(question);\n    const label = $$('span', { className: QUESTION_TITLE_LABEL_CLASSNAME, id: this.labelId });\n    label.text(question);\n    const title = $$('span', { className: QUESTION_TITLE_CLASSNAME }, label, checkbox);\n    title.on('click', () => this.toggle());\n    return title;\n  }\n\n  private buildCheckbox(question: string) {\n    this.checkbox = $$('div', {\n      role: 'button',\n      tabindex: 0,\n      ariaControls: this.snippetId,\n      className: QUESTION_TITLE_CHECKBOX_CLASSNAME,\n      id: this.checkboxId\n    });\n    new AccessibleButton()\n      .withElement(this.checkbox)\n      .withLabel(l('ExpandQuestionAnswer', question))\n      .withEnterKeyboardAction(() => this.toggle())\n      .build();\n    return this.checkbox;\n  }\n\n  private buildCollapsibleContainer(questionAnswer: IRelatedQuestionAnswerResponse, style: HTMLStyleElement) {\n    const shadowContainer = $$('div', { className: SHADOW_CLASSNAME });\n    this.snippetAndSourceContainer = $$('div', { className: QUESTION_SNIPPET_CONTAINER_CLASSNAME }, shadowContainer);\n    this.collapsibleContainer = $$('div', { className: QUESTION_SNIPPET_CLASSNAME, id: this.snippetId }, this.snippetAndSourceContainer);\n    this.contentLoaded = attachShadow(shadowContainer.el, {\n      mode: 'open',\n      title: l('AnswerSpecificSnippet', questionAnswer.question),\n      useIFrame: this.options.useIFrame\n    }).then(shadowRoot => {\n      shadowRoot.appendChild(this.buildAnswerSnippetContent(questionAnswer, style).el);\n    });\n    if (this.options.source) {\n      this.snippetAndSourceContainer.append(this.buildSourceUrl().el);\n      this.snippetAndSourceContainer.append(this.buildSourceTitle().el);\n    }\n    return this.collapsibleContainer;\n  }\n\n  private buildAnswerSnippetContent(questionAnswer: IRelatedQuestionAnswerResponse, style: HTMLStyleElement) {\n    const snippet = $$('div', { className: RAW_CONTENT_CLASSNAME }, getSanitizedAnswerSnippet(questionAnswer));\n    transformSnippetLinks(snippet.el, this.options.alwaysOpenInNewWindow, link => this.sendOpenSnippetLinkAnalytics(link));\n    const container = $$('div', {}, snippet);\n    container.append(style);\n    return container;\n  }\n\n  private buildSourceTitle() {\n    const link = this.buildLink(SOURCE_TITLE_CLASSNAME);\n    link.text(Utils.getFieldValue(this.options.source!, <string>this.options.titleField));\n    return link;\n  }\n\n  private buildSourceUrl() {\n    const link = this.buildLink(SOURCE_URL_CLASSNAME);\n    link.text((link.el as HTMLAnchorElement).href);\n    return link;\n  }\n\n  private buildLink(className: string) {\n    const element = $$('a', { className: `CoveoResultLink ${className}` });\n    new ResultLink(\n      element.el,\n      {\n        hrefTemplate: this.options.hrefTemplate,\n        logAnalytics: href => this.sendOpenSourceAnalytics(element.el, href),\n        alwaysOpenInNewWindow: this.options.alwaysOpenInNewWindow\n      },\n      { ...this.options.bindings, resultElement: this.collapsibleContainer.el },\n      this.options.source\n    );\n    return element;\n  }\n\n  private toggle() {\n    this.expanded = !this.expanded;\n    this.updateExpanded();\n    if (this.expanded) {\n      this.sendExpandAnalytics();\n    } else {\n      this.sendCollapseAnalytics();\n    }\n  }\n\n  private updateIFrameExpanded() {\n    const iframe = this.snippetAndSourceContainer.find('iframe');\n    if (!iframe) {\n      return;\n    }\n    this.expanded ? iframe.removeAttribute('tabindex') : iframe.setAttribute('tabindex', '-1');\n  }\n\n  private updateExpanded() {\n    this.checkbox.setAttribute('aria-expanded', this.expanded.toString());\n    this.checkbox.setHtml(this.expanded ? SVGIcons.icons.arrowUp : SVGIcons.icons.arrowDown);\n    this.collapsibleContainer.setAttribute('aria-hidden', (!this.expanded).toString());\n    this.collapsibleContainer.toggleClass(QUESTION_SNIPPET_HIDDEN_CLASSNAME, !this.expanded);\n    this.collapsibleContainer.el.style.height = this.expanded ? `${this.snippetAndSourceContainer.el.clientHeight}px` : '0px';\n    this.updateIFrameExpanded();\n  }\n\n  private sendExpandAnalytics() {\n    return this.options.bindings.usageAnalytics.logCustomEvent<IAnalyticsSmartSnippetSuggestionMeta>(\n      analyticsActionCauseList.expandSmartSnippetSuggestion,\n      {\n        searchQueryUid: this.options.searchUid,\n        documentId: this.options.questionAnswer.documentId\n      },\n      this.checkbox.el\n    );\n  }\n\n  private sendCollapseAnalytics() {\n    return this.options.bindings.usageAnalytics.logCustomEvent<IAnalyticsSmartSnippetSuggestionMeta>(\n      analyticsActionCauseList.collapseSmartSnippetSuggestion,\n      {\n        searchQueryUid: this.options.searchUid,\n        documentId: this.options.questionAnswer.documentId\n      },\n      this.checkbox.el\n    );\n  }\n\n  private sendOpenSourceAnalytics(element: HTMLElement, href: string) {\n    return this.options.bindings.usageAnalytics.logClickEvent<IAnalyticsSmartSnippetSuggestionOpenSourceMeta>(\n      analyticsActionCauseList.openSmartSnippetSuggestionSource,\n      {\n        searchQueryUid: this.options.searchUid,\n        documentTitle: this.options.source.title,\n        author: Utils.getFieldValue(this.options.source, 'author'),\n        documentURL: href,\n        documentId: this.options.questionAnswer.documentId\n      },\n      this.options.source,\n      element\n    );\n  }\n\n  private sendOpenSnippetLinkAnalytics(link: HTMLAnchorElement) {\n    return this.options.bindings.usageAnalytics.logClickEvent<IAnalyticsSmartSnippetSuggestionOpenSnippetInlineLinkMeta>(\n      analyticsActionCauseList.openSmartSnippetSuggestionInlineLink,\n      {\n        searchQueryUid: this.options.searchUid,\n        linkText: link.innerText,\n        linkURL: link.href,\n        documentId: this.options.questionAnswer.documentId\n      },\n      this.options.source,\n      link\n    );\n  }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/ui/SmartSnippet/SmartSnippetCollapsibleSuggestion.ts","/*\r\n\tMIT License http://www.opensource.org/licenses/mit-license.php\r\n\tAuthor Tobias Koppers @sokra\r\n*/\r\n// css base code, injected by the css-loader\r\nmodule.exports = function() {\r\n\tvar list = [];\r\n\r\n\t// return the list of modules as css string\r\n\tlist.toString = function toString() {\r\n\t\tvar result = [];\r\n\t\tfor(var i = 0; i < this.length; i++) {\r\n\t\t\tvar item = this[i];\r\n\t\t\tif(item[2]) {\r\n\t\t\t\tresult.push(\"@media \" + item[2] + \"{\" + item[1] + \"}\");\r\n\t\t\t} else {\r\n\t\t\t\tresult.push(item[1]);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn result.join(\"\");\r\n\t};\r\n\r\n\t// import a list of modules into the list\r\n\tlist.i = function(modules, mediaQuery) {\r\n\t\tif(typeof modules === \"string\")\r\n\t\t\tmodules = [[null, modules, \"\"]];\r\n\t\tvar alreadyImportedModules = {};\r\n\t\tfor(var i = 0; i < this.length; i++) {\r\n\t\t\tvar id = this[i][0];\r\n\t\t\tif(typeof id === \"number\")\r\n\t\t\t\talreadyImportedModules[id] = true;\r\n\t\t}\r\n\t\tfor(i = 0; i < modules.length; i++) {\r\n\t\t\tvar item = modules[i];\r\n\t\t\t// skip already imported module\r\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\r\n\t\t\t//  when a module is imported multiple times with different media queries.\r\n\t\t\t//  I hope this will never occur (Hey this way we have smaller bundles)\r\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\r\n\t\t\t\tif(mediaQuery && !item[2]) {\r\n\t\t\t\t\titem[2] = mediaQuery;\r\n\t\t\t\t} else if(mediaQuery) {\r\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\r\n\t\t\t\t}\r\n\t\t\t\tlist.push(item);\r\n\t\t\t}\r\n\t\t}\r\n\t};\r\n\treturn list;\r\n};\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/css-loader/lib/css-base.js\n// module id = 711\n// module chunks = 88 89","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n\nvar stylesInDom = {};\n\nvar\tmemoize = function (fn) {\n\tvar memo;\n\n\treturn function () {\n\t\tif (typeof memo === \"undefined\") memo = fn.apply(this, arguments);\n\t\treturn memo;\n\t};\n};\n\nvar isOldIE = memoize(function () {\n\t// Test for IE <= 9 as proposed by Browserhacks\n\t// @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805\n\t// Tests for existence of standard globals is to allow style-loader\n\t// to operate correctly into non-standard environments\n\t// @see https://github.com/webpack-contrib/style-loader/issues/177\n\treturn window && document && document.all && !window.atob;\n});\n\nvar getElement = (function (fn) {\n\tvar memo = {};\n\n\treturn function(selector) {\n\t\tif (typeof memo[selector] === \"undefined\") {\n\t\t\tvar styleTarget = fn.call(this, selector);\n\t\t\t// Special case to return head of iframe instead of iframe itself\n\t\t\tif (styleTarget instanceof window.HTMLIFrameElement) {\n\t\t\t\ttry {\n\t\t\t\t\t// This will throw an exception if access to iframe is blocked\n\t\t\t\t\t// due to cross-origin restrictions\n\t\t\t\t\tstyleTarget = styleTarget.contentDocument.head;\n\t\t\t\t} catch(e) {\n\t\t\t\t\tstyleTarget = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\tmemo[selector] = styleTarget;\n\t\t}\n\t\treturn memo[selector]\n\t};\n})(function (target) {\n\treturn document.querySelector(target)\n});\n\nvar singleton = null;\nvar\tsingletonCounter = 0;\nvar\tstylesInsertedAtTop = [];\n\nvar\tfixUrls = require(\"./urls\");\n\nmodule.exports = function(list, options) {\n\tif (typeof DEBUG !== \"undefined\" && DEBUG) {\n\t\tif (typeof document !== \"object\") throw new Error(\"The style-loader cannot be used in a non-browser environment\");\n\t}\n\n\toptions = options || {};\n\n\toptions.attrs = typeof options.attrs === \"object\" ? options.attrs : {};\n\n\t// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n\t// tags it will allow on a page\n\tif (!options.singleton && typeof options.singleton !== \"boolean\") options.singleton = isOldIE();\n\n\t// By default, add <style> tags to the <head> element\n\tif (!options.insertInto) options.insertInto = \"head\";\n\n\t// By default, add <style> tags to the bottom of the target\n\tif (!options.insertAt) options.insertAt = \"bottom\";\n\n\tvar styles = listToStyles(list, options);\n\n\taddStylesToDom(styles, options);\n\n\treturn function update (newList) {\n\t\tvar mayRemove = [];\n\n\t\tfor (var i = 0; i < styles.length; i++) {\n\t\t\tvar item = styles[i];\n\t\t\tvar domStyle = stylesInDom[item.id];\n\n\t\t\tdomStyle.refs--;\n\t\t\tmayRemove.push(domStyle);\n\t\t}\n\n\t\tif(newList) {\n\t\t\tvar newStyles = listToStyles(newList, options);\n\t\t\taddStylesToDom(newStyles, options);\n\t\t}\n\n\t\tfor (var i = 0; i < mayRemove.length; i++) {\n\t\t\tvar domStyle = mayRemove[i];\n\n\t\t\tif(domStyle.refs === 0) {\n\t\t\t\tfor (var j = 0; j < domStyle.parts.length; j++) domStyle.parts[j]();\n\n\t\t\t\tdelete stylesInDom[domStyle.id];\n\t\t\t}\n\t\t}\n\t};\n};\n\nfunction addStylesToDom (styles, options) {\n\tfor (var i = 0; i < styles.length; i++) {\n\t\tvar item = styles[i];\n\t\tvar domStyle = stylesInDom[item.id];\n\n\t\tif(domStyle) {\n\t\t\tdomStyle.refs++;\n\n\t\t\tfor(var j = 0; j < domStyle.parts.length; j++) {\n\t\t\t\tdomStyle.parts[j](item.parts[j]);\n\t\t\t}\n\n\t\t\tfor(; j < item.parts.length; j++) {\n\t\t\t\tdomStyle.parts.push(addStyle(item.parts[j], options));\n\t\t\t}\n\t\t} else {\n\t\t\tvar parts = [];\n\n\t\t\tfor(var j = 0; j < item.parts.length; j++) {\n\t\t\t\tparts.push(addStyle(item.parts[j], options));\n\t\t\t}\n\n\t\t\tstylesInDom[item.id] = {id: item.id, refs: 1, parts: parts};\n\t\t}\n\t}\n}\n\nfunction listToStyles (list, options) {\n\tvar styles = [];\n\tvar newStyles = {};\n\n\tfor (var i = 0; i < list.length; i++) {\n\t\tvar item = list[i];\n\t\tvar id = options.base ? item[0] + options.base : item[0];\n\t\tvar css = item[1];\n\t\tvar media = item[2];\n\t\tvar sourceMap = item[3];\n\t\tvar part = {css: css, media: media, sourceMap: sourceMap};\n\n\t\tif(!newStyles[id]) styles.push(newStyles[id] = {id: id, parts: [part]});\n\t\telse newStyles[id].parts.push(part);\n\t}\n\n\treturn styles;\n}\n\nfunction insertStyleElement (options, style) {\n\tvar target = getElement(options.insertInto)\n\n\tif (!target) {\n\t\tthrow new Error(\"Couldn't find a style target. This probably means that the value for the 'insertInto' parameter is invalid.\");\n\t}\n\n\tvar lastStyleElementInsertedAtTop = stylesInsertedAtTop[stylesInsertedAtTop.length - 1];\n\n\tif (options.insertAt === \"top\") {\n\t\tif (!lastStyleElementInsertedAtTop) {\n\t\t\ttarget.insertBefore(style, target.firstChild);\n\t\t} else if (lastStyleElementInsertedAtTop.nextSibling) {\n\t\t\ttarget.insertBefore(style, lastStyleElementInsertedAtTop.nextSibling);\n\t\t} else {\n\t\t\ttarget.appendChild(style);\n\t\t}\n\t\tstylesInsertedAtTop.push(style);\n\t} else if (options.insertAt === \"bottom\") {\n\t\ttarget.appendChild(style);\n\t} else if (typeof options.insertAt === \"object\" && options.insertAt.before) {\n\t\tvar nextSibling = getElement(options.insertInto + \" \" + options.insertAt.before);\n\t\ttarget.insertBefore(style, nextSibling);\n\t} else {\n\t\tthrow new Error(\"[Style Loader]\\n\\n Invalid value for parameter 'insertAt' ('options.insertAt') found.\\n Must be 'top', 'bottom', or Object.\\n (https://github.com/webpack-contrib/style-loader#insertat)\\n\");\n\t}\n}\n\nfunction removeStyleElement (style) {\n\tif (style.parentNode === null) return false;\n\tstyle.parentNode.removeChild(style);\n\n\tvar idx = stylesInsertedAtTop.indexOf(style);\n\tif(idx >= 0) {\n\t\tstylesInsertedAtTop.splice(idx, 1);\n\t}\n}\n\nfunction createStyleElement (options) {\n\tvar style = document.createElement(\"style\");\n\n\toptions.attrs.type = \"text/css\";\n\n\taddAttrs(style, options.attrs);\n\tinsertStyleElement(options, style);\n\n\treturn style;\n}\n\nfunction createLinkElement (options) {\n\tvar link = document.createElement(\"link\");\n\n\toptions.attrs.type = \"text/css\";\n\toptions.attrs.rel = \"stylesheet\";\n\n\taddAttrs(link, options.attrs);\n\tinsertStyleElement(options, link);\n\n\treturn link;\n}\n\nfunction addAttrs (el, attrs) {\n\tObject.keys(attrs).forEach(function (key) {\n\t\tel.setAttribute(key, attrs[key]);\n\t});\n}\n\nfunction addStyle (obj, options) {\n\tvar style, update, remove, result;\n\n\t// If a transform function was defined, run it on the css\n\tif (options.transform && obj.css) {\n\t    result = options.transform(obj.css);\n\n\t    if (result) {\n\t    \t// If transform returns a value, use that instead of the original css.\n\t    \t// This allows running runtime transformations on the css.\n\t    \tobj.css = result;\n\t    } else {\n\t    \t// If the transform function returns a falsy value, don't add this css.\n\t    \t// This allows conditional loading of css\n\t    \treturn function() {\n\t    \t\t// noop\n\t    \t};\n\t    }\n\t}\n\n\tif (options.singleton) {\n\t\tvar styleIndex = singletonCounter++;\n\n\t\tstyle = singleton || (singleton = createStyleElement(options));\n\n\t\tupdate = applyToSingletonTag.bind(null, style, styleIndex, false);\n\t\tremove = applyToSingletonTag.bind(null, style, styleIndex, true);\n\n\t} else if (\n\t\tobj.sourceMap &&\n\t\ttypeof URL === \"function\" &&\n\t\ttypeof URL.createObjectURL === \"function\" &&\n\t\ttypeof URL.revokeObjectURL === \"function\" &&\n\t\ttypeof Blob === \"function\" &&\n\t\ttypeof btoa === \"function\"\n\t) {\n\t\tstyle = createLinkElement(options);\n\t\tupdate = updateLink.bind(null, style, options);\n\t\tremove = function () {\n\t\t\tremoveStyleElement(style);\n\n\t\t\tif(style.href) URL.revokeObjectURL(style.href);\n\t\t};\n\t} else {\n\t\tstyle = createStyleElement(options);\n\t\tupdate = applyToTag.bind(null, style);\n\t\tremove = function () {\n\t\t\tremoveStyleElement(style);\n\t\t};\n\t}\n\n\tupdate(obj);\n\n\treturn function updateStyle (newObj) {\n\t\tif (newObj) {\n\t\t\tif (\n\t\t\t\tnewObj.css === obj.css &&\n\t\t\t\tnewObj.media === obj.media &&\n\t\t\t\tnewObj.sourceMap === obj.sourceMap\n\t\t\t) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tupdate(obj = newObj);\n\t\t} else {\n\t\t\tremove();\n\t\t}\n\t};\n}\n\nvar replaceText = (function () {\n\tvar textStore = [];\n\n\treturn function (index, replacement) {\n\t\ttextStore[index] = replacement;\n\n\t\treturn textStore.filter(Boolean).join('\\n');\n\t};\n})();\n\nfunction applyToSingletonTag (style, index, remove, obj) {\n\tvar css = remove ? \"\" : obj.css;\n\n\tif (style.styleSheet) {\n\t\tstyle.styleSheet.cssText = replaceText(index, css);\n\t} else {\n\t\tvar cssNode = document.createTextNode(css);\n\t\tvar childNodes = style.childNodes;\n\n\t\tif (childNodes[index]) style.removeChild(childNodes[index]);\n\n\t\tif (childNodes.length) {\n\t\t\tstyle.insertBefore(cssNode, childNodes[index]);\n\t\t} else {\n\t\t\tstyle.appendChild(cssNode);\n\t\t}\n\t}\n}\n\nfunction applyToTag (style, obj) {\n\tvar css = obj.css;\n\tvar media = obj.media;\n\n\tif(media) {\n\t\tstyle.setAttribute(\"media\", media)\n\t}\n\n\tif(style.styleSheet) {\n\t\tstyle.styleSheet.cssText = css;\n\t} else {\n\t\twhile(style.firstChild) {\n\t\t\tstyle.removeChild(style.firstChild);\n\t\t}\n\n\t\tstyle.appendChild(document.createTextNode(css));\n\t}\n}\n\nfunction updateLink (link, options, obj) {\n\tvar css = obj.css;\n\tvar sourceMap = obj.sourceMap;\n\n\t/*\n\t\tIf convertToAbsoluteUrls isn't defined, but sourcemaps are enabled\n\t\tand there is no publicPath defined then lets turn convertToAbsoluteUrls\n\t\ton by default.  Otherwise default to the convertToAbsoluteUrls option\n\t\tdirectly\n\t*/\n\tvar autoFixUrls = options.convertToAbsoluteUrls === undefined && sourceMap;\n\n\tif (options.convertToAbsoluteUrls || autoFixUrls) {\n\t\tcss = fixUrls(css);\n\t}\n\n\tif (sourceMap) {\n\t\t// http://stackoverflow.com/a/26603875\n\t\tcss += \"\\n/*# sourceMappingURL=data:application/json;base64,\" + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + \" */\";\n\t}\n\n\tvar blob = new Blob([css], { type: \"text/css\" });\n\n\tvar oldSrc = link.href;\n\n\tlink.href = URL.createObjectURL(blob);\n\n\tif(oldSrc) URL.revokeObjectURL(oldSrc);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./node_modules/style-loader/lib/addStyles.js\n// module id = 712\n// module chunks = 88 89","export * from './Core';\n\nexport { CoreHelpers } from './ui/Templates/CoreHelpers';\nexport { SearchInterface, StandaloneSearchInterface } from './ui/SearchInterface/SearchInterface';\nexport { jQueryInstance as $ } from './ui/Base/CoveoJQuery';\nexport { underscoreInstance as _ } from './ui/Base/CoveoUnderscore';\nexport { AnalyticsUtils } from './utils/AnalyticsUtils';\nexport { HashUtils } from './utils/HashUtils';\nexport { DeviceUtils } from './utils/DeviceUtils';\nexport { ColorUtils } from './utils/ColorUtils';\nexport { Cookie } from './utils/CookieUtils';\nexport { CurrencyUtils } from './utils/CurrencyUtils';\nexport { DateUtils } from './utils/DateUtils';\nexport { analyticsActionCauseList } from './ui/Analytics/AnalyticsActionListMeta';\n\nimport { Initialization, EagerInitialization } from './ui/Base/Initialization';\nInitialization.componentsFactory = EagerInitialization.componentsFactory;\n\nimport { AdvancedSearch } from './ui/AdvancedSearch/AdvancedSearch';\nAdvancedSearch.doExport();\nexport { AdvancedSearch };\n\nimport { Aggregate } from './ui/Aggregate/Aggregate';\nAggregate.doExport();\nexport { Aggregate };\n\nimport { Analytics } from './ui/Analytics/Analytics';\nAnalytics.doExport();\n\nimport { AnalyticsSuggestions } from './ui/AnalyticsSuggestions/AnalyticsSuggestions';\nAnalyticsSuggestions.doExport();\nexport { AnalyticsSuggestions };\n\nimport { ComponentEvents } from './ui/Base/Component';\nComponentEvents.doExport();\nexport { ComponentEvents };\n\nimport { AuthenticationProvider } from './ui/AuthenticationProvider/AuthenticationProvider';\nAuthenticationProvider.doExport();\nexport { AuthenticationProvider };\n\nimport { Backdrop } from './ui/Backdrop/Backdrop';\nBackdrop.doExport();\nexport { Backdrop };\n\nimport { Badge } from './ui/Badge/Badge';\nBadge.doExport();\nexport { Badge };\n\nimport { Breadcrumb } from './ui/Breadcrumb/Breadcrumb';\nBreadcrumb.doExport();\nexport { Breadcrumb };\n\nimport { CardActionBar } from './ui/CardActionBar/CardActionBar';\nCardActionBar.doExport();\nexport { CardActionBar };\n\nimport { CardOverlay } from './ui/CardOverlay/CardOverlay';\nCardOverlay.doExport();\nexport { CardOverlay };\n\nimport { ChatterLikedBy } from './ui/ChatterLikedBy/ChatterLikedBy';\nChatterLikedBy.doExport();\nexport { ChatterLikedBy };\nimport { registerFields as chatterLikedByRegisterFields } from './ui/ChatterLikedBy/ChatterLikedByFields';\nchatterLikedByRegisterFields();\n\nimport { ChatterPostAttachment } from './ui/ChatterPostAttachment/ChatterPostAttachment';\nChatterPostAttachment.doExport();\nexport { ChatterPostAttachment };\nimport { registerFields as chatterPostAttachmentRegisterFields } from './ui/ChatterPostAttachment/ChatterPostAttachmentFields';\nchatterPostAttachmentRegisterFields();\n\nimport { ChatterPostedBy } from './ui/ChatterPostedBy/ChatterPostedBy';\nChatterPostedBy.doExport();\nexport { ChatterPostedBy };\nimport { registerFields as chatterPostedByRegisterFields } from './ui/ChatterPostedBy/ChatterPostedByFields';\nchatterPostedByRegisterFields();\n\nimport { ChatterTopic } from './ui/ChatterTopic/ChatterTopic';\nChatterTopic.doExport();\nexport { ChatterTopic };\nimport { registerFields as chatterTopicRegisterFields } from './ui/ChatterTopic/ChatterTopicFields';\nchatterTopicRegisterFields();\n\nimport { DidYouMean } from './ui/DidYouMean/DidYouMean';\nDidYouMean.doExport();\nexport { DidYouMean };\n\nimport { DistanceResources } from './ui/Distance/DistanceResources';\nDistanceResources.doExport();\nexport { DistanceResources };\n\nimport { ErrorReport } from './ui/ErrorReport/ErrorReport';\nErrorReport.doExport();\nexport { ErrorReport };\n\nimport { Excerpt } from './ui/Excerpt/Excerpt';\nExcerpt.doExport();\nexport { Excerpt };\n\nimport { ExportToExcel } from './ui/ExportToExcel/ExportToExcel';\nExportToExcel.doExport();\nexport { ExportToExcel };\n\nimport { Facet } from './ui/Facet/Facet';\nFacet.doExport();\nexport { Facet };\n\nimport { FacetRange } from './ui/FacetRange/FacetRange';\nFacetRange.doExport();\nexport { FacetRange };\n\nimport { FacetSlider } from './ui/FacetSlider/FacetSlider';\nFacetSlider.doExport();\nexport { FacetSlider };\n\nimport { FieldSuggestions } from './ui/FieldSuggestions/FieldSuggestions';\nFieldSuggestions.doExport();\nexport { FieldSuggestions };\n\nimport { FacetValueSuggestions } from './ui/FacetValueSuggestions/FacetValueSuggestions';\nFacetValueSuggestions.doExport();\nexport { FacetValueSuggestions };\n\nimport { FieldTable } from './ui/FieldTable/FieldTable';\nFieldTable.doExport();\nexport { FieldTable };\n\nimport { FieldValue } from './ui/FieldValue/FieldValue';\nFieldValue.doExport();\nexport { FieldValue };\n\nimport { Folding } from './ui/Folding/Folding';\nFolding.doExport();\nexport { Folding };\n\nimport { FoldingForThread } from './ui/FoldingForThread/FoldingForThread';\nFoldingForThread.doExport();\nexport { FoldingForThread };\n\nimport { FollowItem } from './ui/FollowItem/FollowItem';\nFollowItem.doExport();\nexport { FollowItem };\nimport { registerFields as followItemRegisterFields } from './ui/FollowItem/FollowItemFields';\nfollowItemRegisterFields();\n\nimport { HiddenQuery } from './ui/HiddenQuery/HiddenQuery';\nHiddenQuery.doExport();\nexport { HiddenQuery };\n\nimport { HierarchicalFacet } from './ui/HierarchicalFacet/HierarchicalFacet';\nHierarchicalFacet.doExport();\nexport { HierarchicalFacet };\n\nimport { Icon } from './ui/Icon/Icon';\nIcon.doExport();\nexport { Icon };\nimport { registerFields as iconRegisterFields } from './ui/Icon/IconFields';\niconRegisterFields();\n\nimport { Logo } from './ui/Logo/Logo';\nLogo.doExport();\nexport { Logo };\n\nimport { Matrix } from './ui/Matrix/Matrix';\nMatrix.doExport();\nexport { Matrix };\n\nimport { Omnibox } from './ui/Omnibox/Omnibox';\nOmnibox.doExport();\nexport { Omnibox };\n\nimport { OmniboxResultList } from './ui/OmniboxResultList/OmniboxResultList';\nOmniboxResultList.doExport();\nexport { OmniboxResultList };\n\nimport { Pager } from './ui/Pager/Pager';\nPager.doExport();\nexport { Pager };\n\nimport { PipelineContext } from './ui/PipelineContext/PipelineContext';\nPipelineContext.doExport();\nexport { PipelineContext };\n\nimport { PreferencesPanel } from './ui/PreferencesPanel/PreferencesPanel';\nPreferencesPanel.doExport();\nexport { PreferencesPanel };\n\nimport { PrintableUri } from './ui/PrintableUri/PrintableUri';\nPrintableUri.doExport();\nexport { PrintableUri };\nimport { registerFields as registerFieldsPrintableUri } from './ui/PrintableUri/PrintableUriFields';\nregisterFieldsPrintableUri();\n\nimport { Querybox } from './ui/Querybox/Querybox';\nQuerybox.doExport();\nexport { Querybox };\n\nimport { QueryDuration } from './ui/QueryDuration/QueryDuration';\nQueryDuration.doExport();\nexport { QueryDuration };\n\nimport { QuerySummary } from './ui/QuerySummary/QuerySummary';\nQuerySummary.doExport();\nexport { QuerySummary };\n\nimport { Quickview } from './ui/Quickview/Quickview';\nQuickview.doExport();\nexport { Quickview };\nimport { registerFields as quickviewRegisterFields } from './ui/Quickview/QuickviewFields';\nquickviewRegisterFields();\n\nimport { Recommendation } from './ui/Recommendation/Recommendation';\nRecommendation.doExport();\nexport { Recommendation };\n\nimport { ResultAttachments } from './ui/ResultAttachments/ResultAttachments';\nResultAttachments.doExport();\nexport { ResultAttachments };\n\nimport { ResultActionsMenu } from './ui/ResultActions/ResultActionsMenu';\nResultActionsMenu.doExport();\nexport { ResultActionsMenu };\n\nimport { ResultFolding } from './ui/ResultFolding/ResultFolding';\nResultFolding.doExport();\nexport { ResultFolding };\n\nimport { ResultLayoutSelector } from './ui/ResultLayoutSelector/ResultLayoutSelector';\nResultLayoutSelector.doExport();\nexport { ResultLayoutSelector };\n\nimport { ResultLink } from './ui/ResultLink/ResultLink';\nResultLink.doExport();\nexport { ResultLink };\nimport { registerFields as resultLinkRegisterFields } from './ui/ResultLink/ResultLinkFields';\nresultLinkRegisterFields();\n\nimport { ResultList } from './ui/ResultList/ResultList';\nResultList.doExport();\nexport { ResultList };\n\nimport { ResultRating } from './ui/ResultRating/ResultRating';\nResultRating.doExport();\nexport { ResultRating };\n\nimport { ResultsFiltersPreferences } from './ui/ResultsFiltersPreferences/ResultsFiltersPreferences';\nResultsFiltersPreferences.doExport();\nexport { ResultsFiltersPreferences };\n\nimport { ResultsPerPage } from './ui/ResultsPerPage/ResultsPerPage';\nResultsPerPage.doExport();\nexport { ResultsPerPage };\n\nimport { ResultsPreferences } from './ui/ResultsPreferences/ResultsPreferences';\nResultsPreferences.doExport();\nexport { ResultsPreferences };\n\nimport { ResultTagging } from './ui/ResultTagging/ResultTagging';\nResultTagging.doExport();\nexport { ResultTagging };\n\nimport { SearchAlerts } from './ui/SearchAlerts/SearchAlerts';\nSearchAlerts.doExport();\nexport { SearchAlerts };\n\nimport { Searchbox } from './ui/Searchbox/Searchbox';\nSearchbox.doExport();\nexport { Searchbox };\n\nimport { SearchButton } from './ui/SearchButton/SearchButton';\nSearchButton.doExport();\nexport { SearchButton };\n\nimport { Settings } from './ui/Settings/Settings';\nSettings.doExport();\nexport { Settings };\n\nimport { ShareQuery } from './ui/ShareQuery/ShareQuery';\nShareQuery.doExport();\nexport { ShareQuery };\n\nimport { Sort } from './ui/Sort/Sort';\nSort.doExport();\nexport { Sort };\n\nimport { StarRating } from './ui/StarRating/StarRating';\nStarRating.doExport();\nexport { StarRating };\n\nimport { Tab } from './ui/Tab/Tab';\nTab.doExport();\nexport { Tab };\n\nimport { TemplateLoader } from './ui/TemplateLoader/TemplateLoader';\nTemplateLoader.doExport();\nexport { TemplateLoader };\n\nimport { Text } from './ui/Text/Text';\nText.doExport();\nexport { Text };\n\nimport { Thumbnail } from './ui/Thumbnail/Thumbnail';\nThumbnail.doExport();\nexport { Thumbnail };\nimport { registerFields as thumbnailRegisterFields } from './ui/Thumbnail/ThumbnailFields';\nthumbnailRegisterFields();\n\nimport { Triggers } from './ui/Triggers/Triggers';\nTriggers.doExport();\nexport { Triggers };\n\nimport { YouTubeThumbnail } from './ui/YouTube/YouTubeThumbnail';\nYouTubeThumbnail.doExport();\nexport { YouTubeThumbnail };\nimport { registerFields as youtubeThumbnailRegisterFields } from './ui/YouTube/YouTubeThumbnailFields';\nyoutubeThumbnailRegisterFields();\n\nexport { Template } from './ui/Templates/Template';\n\nimport { Checkbox } from './ui/FormWidgets/Checkbox';\nCheckbox.doExport();\nexport { Checkbox };\n\nimport { DatePicker } from './ui/FormWidgets/DatePicker';\nDatePicker.doExport();\nexport { DatePicker };\n\nimport { Dropdown } from './ui/FormWidgets/Dropdown';\nDropdown.doExport();\nexport { Dropdown };\n\nimport { FormGroup } from './ui/FormWidgets/FormGroup';\nFormGroup.doExport();\nexport { FormGroup };\n\nimport { MultiSelect } from './ui/FormWidgets/MultiSelect';\nMultiSelect.doExport();\nexport { MultiSelect };\n\nimport { NumericSpinner } from './ui/FormWidgets/NumericSpinner';\nNumericSpinner.doExport();\nexport { NumericSpinner };\n\nimport { RadioButton } from './ui/FormWidgets/RadioButton';\nRadioButton.doExport();\nexport { RadioButton };\n\nimport { TextInput } from './ui/FormWidgets/TextInput';\nTextInput.doExport();\nexport { TextInput };\n\nimport { SimpleFilter } from './ui/SimpleFilter/SimpleFilter';\nSimpleFilter.doExport();\nexport { SimpleFilter };\n\nimport { TimespanFacet } from './ui/TimespanFacet/TimespanFacet';\nTimespanFacet.doExport();\nexport { TimespanFacet };\n\nimport { DynamicFacet } from './ui/DynamicFacet/DynamicFacet';\nDynamicFacet.doExport();\nexport { DynamicFacet };\n\nimport { DynamicFacetRange } from './ui/DynamicFacet/DynamicFacetRange';\nDynamicFacetRange.doExport();\nexport { DynamicFacetRange };\n\nimport { DynamicFacetManager } from './ui/DynamicFacetManager/DynamicFacetManager';\nDynamicFacetManager.doExport();\nexport { DynamicFacetManager };\n\nimport { PromotedResultsBadge } from './ui/PromotedResultsBadge/PromotedResultsBadge';\nPromotedResultsBadge.doExport();\nexport { PromotedResultsBadge };\n\nimport { CategoryFacet } from './ui/CategoryFacet/CategoryFacet';\nCategoryFacet.doExport();\nexport { CategoryFacet };\n\nimport { DynamicHierarchicalFacet } from './ui/DynamicHierarchicalFacet/DynamicHierarchicalFacet';\nDynamicHierarchicalFacet.doExport();\nexport { DynamicHierarchicalFacet };\n\nimport { MissingTerms } from './ui/MissingTerm/MissingTerms';\nMissingTerms.doExport();\nexport { MissingTerms };\n\nimport { QuerySuggestPreview } from './ui/QuerySuggestPreview/QuerySuggestPreview';\nQuerySuggestPreview.doExport();\nexport { QuerySuggestPreview };\n\nimport { swapVar } from './SwapVar';\nswapVar(this);\n\nimport { ImageFieldValue } from './ui/FieldImage/ImageFieldValue';\nImageFieldValue.doExport();\nexport { ImageFieldValue };\n\nimport { CommerceQuery } from './ui/CommerceQuery/CommerceQuery';\nCommerceQuery.doExport();\nexport { CommerceQuery };\n\nimport { SortDropdown } from './ui/SortDropdown/SortDropdown';\nSortDropdown.doExport();\nexport { SortDropdown };\n\nimport { SmartSnippet } from './ui/SmartSnippet/SmartSnippet';\nSmartSnippet.doExport();\nexport { SmartSnippet };\n\nimport { SmartSnippetSuggestions } from './ui/SmartSnippet/SmartSnippetSuggestions';\nSmartSnippetSuggestions.doExport();\nexport { SmartSnippetSuggestions };\n\nimport { FacetsMobileMode } from './ui/FacetsMobileMode/FacetsMobileMode';\nFacetsMobileMode.doExport();\nexport { FacetsMobileMode };\n\nexport { Analytics } from './ui/Analytics/Analytics';\n\n\n\n// WEBPACK FOOTER //\n// ./src/Eager.ts"],"sourceRoot":""}